platypush/platypush/backend/http/webapp/dist/static/js/5795.e22f5747.js.map

1 line
22 KiB
Plaintext

{"version":3,"file":"static/js/5795.e22f5747.js","mappings":"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","sources":["webpack://platypush/./src/components/elements/ToggleSwitch.vue","webpack://platypush/./src/components/elements/ToggleSwitch.vue?94aa","webpack://platypush/./src/components/panels/Entities/Assistant.vue","webpack://platypush/./src/components/elements/TextPrompt.vue","webpack://platypush/./src/components/elements/TextPrompt.vue?dee2","webpack://platypush/./src/components/panels/Entities/Assistant.vue?6751"],"sourcesContent":["<template>\n <div class=\"power-switch\" :class=\"{disabled: disabled}\" @click.stop=\"onInput\">\n <!--suppress HtmlFormInputWithoutLabel -->\n <input type=\"checkbox\" :checked=\"value\" :id=\"id\">\n <label>\n <!--suppress HtmlUnknownTag -->\n <div class=\"switch\">\n <div class=\"dot\" />\n </div>\n <span class=\"label\">\n <slot />\n </span>\n </label>\n </div>\n</template>\n\n<script>\nexport default {\n name: \"ToggleSwitch\",\n emits: ['input'],\n props: {\n id: {\n type: String,\n },\n\n value: {\n type: Boolean,\n default: false,\n },\n\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n methods: {\n onInput(event) {\n if (this.disabled)\n return false\n\n this.$emit('input', event)\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.power-switch {\n position: relative;\n transition: transform .3s;\n transform: scale(var(--scale, 1)) translateZ(0);\n\n &:active {\n --scale: .96;\n }\n\n &.disabled {\n opacity: 0.6;\n }\n\n input {\n display: none;\n & + label {\n border-radius: 1em;\n display: inline-flex;\n cursor: pointer;\n position: relative;\n transition: box-shadow .4s;\n\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n border-radius: inherit;\n background: none;\n opacity: var(--gradient, 0);\n transition: opacity .4s;\n }\n\n .switch {\n position: relative;\n display: inline-block;\n vertical-align: top;\n height: 1.4em;\n width: 2.5em;\n border-radius: 1em;\n background: $slider-bg;\n box-shadow: inset 1px 0px 3px 0 $slider-track-shadow;\n\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n border-radius: inherit;\n background: $slider-progress-bg;\n opacity: var(--gradient, 0);\n transition: opacity .4s;\n }\n\n .dot {\n background: $toggle-dot-bg;\n position: absolute;\n width: 1.5em;\n height: 1.5em;\n border-radius: 50%;\n box-shadow: 1px 0px 3.5px 0 $slider-thumb-shadow;\n left: -0.25em;\n top: -0.05em;\n transform: translateX(var(--offset, 0));\n transition: transform .4s, box-shadow .4s;\n\n &:before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n border-radius: inherit;\n background: $toggle-selected-dot-bg;\n opacity: var(--gradient, 0);\n transition: opacity .4s;\n }\n }\n }\n\n span {\n line-height: 2em;\n font-size: 1.2em;\n color: var(--text, #646B8C);\n font-weight: 500;\n display: inline-block;\n vertical-align: top;\n position: relative;\n margin-left: 0.5em;\n transition: color .4s;\n }\n\n & + span {\n text-align: center;\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n opacity: 0;\n font-size: 1em;\n font-weight: 500;\n color: $slider-bg;\n transform: translateY(0.2em);\n transition: opacity .4s, transform .4s;\n }\n }\n\n &:not(:checked) {\n & + label {\n pointer-events: none;\n & + span {\n opacity: 1;\n transform: translateY(0.6em);\n }\n }\n }\n\n &:checked {\n & + label {\n --offset: 1.5em;\n --text: $slider-progress-bg;\n --gradient: 1;\n --shadow: rgba(0, 39, 6, .1);\n }\n }\n }\n}\n</style>\n","import { render } from \"./ToggleSwitch.vue?vue&type=template&id=eff375b6&scoped=true\"\nimport script from \"./ToggleSwitch.vue?vue&type=script&lang=js\"\nexport * from \"./ToggleSwitch.vue?vue&type=script&lang=js\"\n\nimport \"./ToggleSwitch.vue?vue&type=style&index=0&id=eff375b6&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-eff375b6\"]])\n\nexport default __exports__","<template>\n <div class=\"entity assistant-container\">\n <TextPrompt ref=\"prompt\">\n Enter a text query to send to the assistant.\n </TextPrompt>\n\n <div class=\"head\" @click=\"onHeadClick\">\n <div class=\"col-1 icon entity-icon\" ref=\"icon\">\n <EntityIcon\n :entity=\"value\"\n :class=\"{active: value.conversation_running}\"\n :loading=\"loading\"\n :error=\"error\" />\n </div>\n\n <div class=\"label\">\n <div class=\"name\" ref=\"name\" v-text=\"value.name\" />\n </div>\n\n <div class=\"value-container\">\n <button @click.stop=\"collapsed = !collapsed\">\n <i class=\"fas\"\n :class=\"{'fa-angle-up': !collapsed, 'fa-angle-down': collapsed}\" />\n </button>\n </div>\n </div>\n\n <div class=\"body\" ref=\"body\" v-if=\"!collapsed\" @click.stop=\"prevent\">\n <div class=\"row\" @click.stop=\"stopConversation\" v-if=\"value.conversation_running\">\n <div class=\"icon\">\n <i class=\"fas fa-comment-slash\" />\n </div>\n <div class=\"label\">\n <div class=\"name\">Stop Conversation</div>\n </div>\n <div class=\"value\">\n <ToggleSwitch\n @click.stop=\"stopConversation\"\n :value=\"false\"\n :disabled=\"loading\" />\n </div>\n </div>\n\n <div class=\"row\" @click.stop=\"startConversation\" v-else>\n <div class=\"icon\">\n <i class=\"fas fa-comment\" />\n </div>\n <div class=\"label\">\n <div class=\"name\">Start Conversation</div>\n </div>\n <div class=\"value\">\n <ToggleSwitch\n @click.stop=\"startConversation\"\n :value=\"false\"\n :disabled=\"loading\" />\n </div>\n </div>\n\n <div class=\"row\" @click.stop=\"toggleMute\">\n <div class=\"icon\">\n <i class=\"fas fa-microphone-lines-slash\" />\n </div>\n <div class=\"label\">\n <div class=\"name\">Muted</div>\n </div>\n <div class=\"value\">\n <ToggleSwitch\n @click.stop=\"toggleMute\"\n :value=\"value.is_muted\"\n :disabled=\"loading\" />\n </div>\n </div>\n\n <div class=\"row\" @click.stop=\"showPrompt\">\n <div class=\"icon\">\n <i class=\"fas fa-keyboard\" />\n </div>\n <div class=\"label\">\n <div class=\"name\">Send query from text prompt</div>\n </div>\n <div class=\"value\">\n <ToggleSwitch\n @click.stop=\"showPrompt\"\n :value=\"false\"\n :disabled=\"loading\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport TextPrompt from \"@/components/elements/TextPrompt\"\nimport ToggleSwitch from \"@/components/elements/ToggleSwitch\"\nimport EntityIcon from \"./EntityIcon\"\nimport EntityMixin from \"./EntityMixin\"\n\nexport default {\n name: 'Assistant',\n mixins: [EntityMixin],\n components: {\n EntityIcon,\n TextPrompt,\n ToggleSwitch,\n },\n\n data() {\n return {\n collapsed: true,\n showTextQueryPrompt: false,\n modalId: 'assistant-text-prompt-modal',\n }\n },\n\n methods: {\n hidePrompt() {\n document.body.querySelector(`#${this.modalId}`)?.remove()\n },\n\n showPrompt() {\n const modalElement = this.$refs.prompt.$el\n this.hidePrompt()\n\n modalElement.id = this.modalId\n modalElement.classList.remove('hidden')\n\n const input = modalElement.querySelector('input[type=\"text\"]')\n const form = modalElement.querySelector('form')\n if (form) {\n form.addEventListener('submit', (event) => {\n event.stopPropagation()\n this.onTextPrompt(input?.value)\n })\n }\n\n const cancelBtn = modalElement.querySelector('.cancel-btn')\n if (cancelBtn) {\n cancelBtn.onclick = (event) => {\n this.hidePrompt()\n event.stopPropagation()\n }\n }\n\n modalElement.onclick = (event) => {\n const modalContent = modalElement.querySelector('.modal')\n if (modalContent?.contains(event.target)) {\n event.stopPropagation()\n return false\n }\n\n this.hidePrompt()\n }\n\n document.body.appendChild(modalElement)\n this.$nextTick(() => {\n modalElement.querySelector('input[type=\"text\"]').focus()\n })\n },\n\n onHeadClick(event) {\n if (\n this.$refs.name.contains(event.target) ||\n this.$refs.icon.contains(event.target)\n ) {\n // Propagate the event upwards and let it open the entity modal\n return true\n }\n\n // Toggle the collapse state if the click is outside of the entity\n // name/icon\n this.collapsed = !this.collapsed\n event.stopPropagation()\n },\n\n async toggleMute() {\n await this.request('entities.execute', {\n id: this.value.id,\n action: 'toggle_mute',\n })\n },\n\n async startConversation() {\n await this.request('entities.execute', {\n id: this.value.id,\n action: 'start_conversation',\n })\n },\n\n async stopConversation() {\n await this.request('entities.execute', {\n id: this.value.id,\n action: 'stop_conversation',\n })\n },\n\n async onTextPrompt(query) {\n await this.request('entities.execute', {\n id: this.value.id,\n action: 'send_text_query',\n query: query,\n })\n\n this.hidePrompt()\n },\n }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import \"common\";\n\n$icon-size: 2em;\n\n.assistant-container {\n .body {\n padding: 0;\n }\n\n .row {\n margin: 0;\n padding: 1em 0.5em;\n display: flex;\n\n &:hover {\n background: $hover-bg;\n }\n\n &:not(:last-child) {\n border-bottom: 1px solid $border-color-1;\n }\n\n .icon {\n flex: 0 0 $icon-size;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .label {\n width: calc(100% - $icon-size);\n }\n }\n\n :deep(.entity-icon) {\n .active {\n color: $selected-fg;\n }\n }\n}\n</style>\n","<template>\n <Modal ref=\"modal\" :title=\"title\">\n <form @submit.prevent=\"onConfirm\">\n <div class=\"dialog-content\">\n <slot />\n <input type=\"text\" ref=\"input\" />\n </div>\n\n <div class=\"buttons\">\n <button type=\"submit\" class=\"ok-btn\" @click=\"onConfirm\" @touch=\"onConfirm\">\n <i class=\"fas fa-check\" /> &nbsp; {{ confirmText }}\n </button>\n <button type=\"button\" class=\"cancel-btn\" @click=\"close\" @touch=\"close\">\n <i class=\"fas fa-xmark\" /> &nbsp; {{ cancelText }}\n </button>\n </div>\n </form>\n </Modal>\n</template>\n\n<script>\nimport Modal from \"@/components/Modal\";\n\nexport default {\n emits: ['input'],\n components: {Modal},\n props: {\n title: {\n type: String,\n },\n\n confirmText: {\n type: String,\n default: \"OK\",\n },\n\n cancelText: {\n type: String,\n default: \"Cancel\",\n },\n },\n\n methods: {\n onConfirm() {\n this.$emit('input', this.$refs.input.value)\n this.close()\n },\n\n show() {\n this.$refs.modal.show()\n },\n\n close() {\n this.$refs.modal.hide()\n },\n },\n\n mounted() {\n this.$nextTick(() => {\n this.$refs.input.value = \"\"\n this.$refs.input.focus()\n })\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.modal) {\n .dialog-content {\n padding: 1em;\n }\n\n .body {\n padding: 1.5em;\n }\n\n .buttons {\n display: flex;\n flex-direction: row;\n justify-content: right;\n margin-bottom: 1em;\n border: 0;\n border-radius: 0;\n\n button {\n margin-right: 1em;\n padding: 0.5em 1em;\n border: 1px solid $border-color-2;\n border-radius: 1em;\n\n &:hover {\n background: $hover-bg;\n }\n }\n }\n}\n\nform {\n display: flex;\n flex-direction: column !important;\n\n .buttons {\n flex-direction: row !important;\n }\n}\n\n</style>\n","import { render } from \"./TextPrompt.vue?vue&type=template&id=23564003&scoped=true\"\nimport script from \"./TextPrompt.vue?vue&type=script&lang=js\"\nexport * from \"./TextPrompt.vue?vue&type=script&lang=js\"\n\nimport \"./TextPrompt.vue?vue&type=style&index=0&id=23564003&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-23564003\"]])\n\nexport default __exports__","import { render } from \"./Assistant.vue?vue&type=template&id=d7bb5c5e&scoped=true\"\nimport script from \"./Assistant.vue?vue&type=script&lang=js\"\nexport * from \"./Assistant.vue?vue&type=script&lang=js\"\n\nimport \"./Assistant.vue?vue&type=style&index=0&id=d7bb5c5e&lang=scss&scoped=true\"\n\nimport exportComponent from \"../../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d7bb5c5e\"]])\n\nexport default __exports__"],"names":["_createElementVNode","class","_createElementBlock","_normalizeClass","disabled","$props","onClick","_cache","_withModifiers","args","$options","onInput","type","checked","value","id","_hoisted_2","_hoisted_3","_renderSlot","_ctx","$slots","undefined","name","emits","props","String","Boolean","default","methods","event","this","$emit","__exports__","render","ref","_hoisted_1","_createVNode","_component_TextPrompt","onHeadClick","_component_EntityIcon","entity","active","conversation_running","loading","error","_toDisplayString","_hoisted_5","$event","$data","collapsed","prevent","stopConversation","_hoisted_6","_hoisted_7","_hoisted_8","_component_ToggleSwitch","startConversation","_hoisted_9","_hoisted_10","_hoisted_11","toggleMute","_hoisted_12","_hoisted_13","_hoisted_14","is_muted","showPrompt","_hoisted_15","_hoisted_16","_hoisted_17","_createBlock","_component_Modal","title","onSubmit","onConfirm","onTouch","_hoisted_4","confirmText","close","cancelText","components","Modal","$refs","input","show","modal","hide","mounted","$nextTick","focus","mixins","EntityMixin","EntityIcon","TextPrompt","ToggleSwitch","data","showTextQueryPrompt","modalId","hidePrompt","document","body","querySelector","remove","modalElement","prompt","$el","classList","form","addEventListener","stopPropagation","onTextPrompt","cancelBtn","onclick","modalContent","contains","target","appendChild","icon","request","action","query"],"sourceRoot":""}