platypush/platypush/backend/http/webapp/dist/static/js/5795.9204ced6.js.map

1 line
22 KiB
Plaintext

{"version":3,"file":"static/js/5795.9204ced6.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\">\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 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=a6396ae8&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=a6396ae8&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-a6396ae8\"]])\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","_hoisted_2","_hoisted_3","_renderSlot","_ctx","$slots","undefined","name","emits","props","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","String","$refs","input","show","modal","hide","mounted","$nextTick","focus","mixins","EntityMixin","EntityIcon","TextPrompt","ToggleSwitch","data","showTextQueryPrompt","modalId","hidePrompt","document","body","querySelector","remove","modalElement","prompt","$el","id","classList","form","addEventListener","stopPropagation","onTextPrompt","cancelBtn","onclick","modalContent","contains","target","appendChild","icon","request","action","query"],"sourceRoot":""}