summaryrefslogtreecommitdiffstats
path: root/dist/settings-vue-settings-admin-ai.js.map
blob: 12de422c6fe337d58bdba92e45c54667ccac54e8 (plain)
1
{"version":3,"file":"settings-vue-settings-admin-ai.js?v=4e882c8c4c2cd526a8de","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/settings/src/components/AdminAI.vue","webpack:///nextcloud/apps/settings/src/components/AdminAI.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/settings/src/components/AdminAI.vue?ea86","webpack://nextcloud/./apps/settings/src/components/AdminAI.vue?91ad","webpack://nextcloud/./apps/settings/src/components/AdminAI.vue?cf22","webpack:///nextcloud/apps/settings/src/main-admin-ai.js","webpack:///nextcloud/apps/settings/src/components/AdminAI.vue?vue&type=style&index=0&id=4a254e0d&prod&scoped=true&lang=css&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","<template>\n\t<div>\n\t\t<NcSettingsSection :title=\"t('settings', 'Machine translation')\"\n\t\t\t:description=\"t('settings', 'Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment.')\">\n\t\t\t<draggable v-model=\"settings['ai.translation_provider_preferences']\" @change=\"saveChanges\">\n\t\t\t\t<div v-for=\"(providerClass, i) in settings['ai.translation_provider_preferences']\" :key=\"providerClass\" class=\"draggable__item\">\n\t\t\t\t\t<DragVerticalIcon /> <span class=\"draggable__number\">{{ i + 1 }}</span> {{ translationProviders.find(p => p.class === providerClass)?.name }}\n\t\t\t\t\t<NcButton aria-label=\"Move up\" type=\"tertiary\" @click=\"moveUp(i)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ArrowUpIcon />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t\t<NcButton aria-label=\"Move down\" type=\"tertiary\" @click=\"moveDown(i)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ArrowDownIcon />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcButton>\n\t\t\t\t</div>\n\t\t\t</draggable>\n\t\t</NcSettingsSection>\n\t\t<NcSettingsSection :title=\"t('settings', 'Speech-To-Text')\"\n\t\t\t:description=\"t('settings', 'Speech-To-Text can be implemented by different apps. Here you can set which app should be used.')\">\n\t\t\t<template v-for=\"provider in sttProviders\">\n\t\t\t\t<NcCheckboxRadioSwitch :key=\"provider.class\"\n\t\t\t\t\t:checked.sync=\"settings['ai.stt_provider']\"\n\t\t\t\t\t:value=\"provider.class\"\n\t\t\t\t\tname=\"stt_provider\"\n\t\t\t\t\ttype=\"radio\"\n\t\t\t\t\t@update:checked=\"saveChanges\">\n\t\t\t\t\t{{ provider.name }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</template>\n\t\t\t<template v-if=\"!hasStt\">\n\t\t\t\t<NcCheckboxRadioSwitch disabled type=\"radio\">\n\t\t\t\t\t{{ t('settings', 'None of your currently installed apps provide Speech-To-Text functionality') }}\n\t\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t</template>\n\t\t</NcSettingsSection>\n\t\t<NcSettingsSection :title=\"t('settings', 'Text processing')\"\n\t\t\t:description=\"t('settings', 'Text processing tasks can be implemented by different apps. Here you can set which app should be used for which task.')\">\n\t\t\t<template v-for=\"type in Object.keys(settings['ai.textprocessing_provider_preferences'])\">\n\t\t\t\t<div :key=\"type\">\n\t\t\t\t\t<h3>{{ t('settings', 'Task:') }} {{ getTaskType(type).name }}</h3>\n\t\t\t\t\t<p>{{ getTaskType(type).description }}</p>\n\t\t\t\t\t<p>&nbsp;</p>\n\t\t\t\t\t<NcSelect v-model=\"settings['ai.textprocessing_provider_preferences'][type]\"\n\t\t\t\t\t\t:clearable=\"false\"\n\t\t\t\t\t\t:options=\"textProcessingProviders.filter(p => p.taskType === type).map(p => p.class)\"\n\t\t\t\t\t\t@input=\"saveChanges\">\n\t\t\t\t\t\t<template #option=\"{label}\">\n\t\t\t\t\t\t\t{{ textProcessingProviders.find(p => p.class === label)?.name }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<template #selected-option=\"{label}\">\n\t\t\t\t\t\t\t{{ textProcessingProviders.find(p => p.class === label)?.name }}\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</NcSelect>\n\t\t\t\t\t<p>&nbsp;</p>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<template v-if=\"!hasTextProcessing\">\n\t\t\t\t<p>{{ t('settings', 'None of your currently installed apps provide Text processing functionality') }}</p>\n\t\t\t</template>\n\t\t</NcSettingsSection>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport draggable from 'vuedraggable'\nimport DragVerticalIcon from 'vue-material-design-icons/DragVertical.vue'\nimport ArrowDownIcon from 'vue-material-design-icons/ArrowDown.vue'\nimport ArrowUpIcon from 'vue-material-design-icons/ArrowUp.vue'\nimport { loadState } from '@nextcloud/initial-state'\n\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AdminAI',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tNcSelect,\n\t\tdraggable,\n\t\tDragVerticalIcon,\n\t\tArrowDownIcon,\n\t\tArrowUpIcon,\n\t\tNcButton\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tdirty: false,\n\t\t\tgroups: [],\n\t\t\tloadingGroups: false,\n\t\t\tsttProviders: loadState('settings', 'ai-stt-providers'),\n\t\t\ttranslationProviders: loadState('settings', 'ai-translation-providers'),\n\t\t\ttextProcessingProviders: loadState('settings', 'ai-text-processing-providers'),\n\t\t\ttextProcessingTaskTypes: loadState('settings', 'ai-text-processing-task-types'),\n\t\t\tsettings: loadState('settings', 'ai-settings'),\n\t\t}\n\t},\n\tcomputed: {\n\t\thasStt() {\n\t\t\treturn this.sttProviders.length > 0\n\t\t},\n\t\thasTextProcessing() {\n\t\t\treturn Object.keys(this.settings['ai.textprocessing_provider_preferences']).length > 0 && Array.isArray(this.textProcessingTaskTypes)\n\t\t},\n\t},\n\tmethods: {\n\t  moveUp(i) {\n\t\t\tthis.settings['ai.translation_provider_preferences'].splice(\n\t\t\t  Math.min(i - 1, 0),\n\t\t\t\t0,\n\t\t\t\t...this.settings['ai.translation_provider_preferences'].splice(i, 1)\n\t\t\t)\n\t\t\tthis.saveChanges()\n\t\t},\n\t\tmoveDown(i) {\n\t\t\tthis.settings['ai.translation_provider_preferences'].splice(\n\t\t\t\ti + 1,\n\t\t\t\t0,\n\t\t\t\t...this.settings['ai.translation_provider_preferences'].splice(i, 1)\n\t\t\t)\n\t\t\tthis.saveChanges()\n\t\t},\n\t\tasync saveChanges() {\n\t\t\tthis.loading = true\n\t\t\tconst data = { settings: this.settings }\n\t\t\ttry {\n\t\t\t\tawait axios.put(generateUrl('/settings/api/admin/ai'), data)\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error('could not save changes', err)\n\t\t\t}\n\t\t\tthis.loading = false\n\t\t},\n\t\tgetTaskType(type) {\n\t\t  if (!Array.isArray(this.textProcessingTaskTypes)) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn this.textProcessingTaskTypes.find(taskType => taskType.class === type)\n\t\t},\n\t},\n}\n</script>\n<style scoped>\n.draggable__item {\n\tmargin-bottom: 5px;\n  display: flex;\n  align-items: center;\n}\n\n.draggable__item,\n.draggable__item * {\n  cursor: grab;\n}\n\n.draggable__number {\n\tborder-radius: 20px;\n\tborder: 2px solid var(--color-primary-default);\n\tcolor: var(--color-primary-default);\n  padding: 0px 7px;\n\tmargin-right: 3px;\n}\n\n.drag-vertical-icon {\n  float: left;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminAI.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminAI.vue?vue&type=script&lang=js&\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminAI.vue?vue&type=style&index=0&id=4a254e0d&prod&scoped=true&lang=css&\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n      options.insert = insertFn.bind(null, \"head\");\n    \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminAI.vue?vue&type=style&index=0&id=4a254e0d&prod&scoped=true&lang=css&\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminAI.vue?vue&type=template&id=4a254e0d&scoped=true&\"\nimport script from \"./AdminAI.vue?vue&type=script&lang=js&\"\nexport * from \"./AdminAI.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AdminAI.vue?vue&type=style&index=0&id=4a254e0d&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"4a254e0d\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('NcSettingsSection',{attrs:{\"title\":_vm.t('settings', 'Machine translation'),\"description\":_vm.t('settings', 'Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment.')}},[_c('draggable',{on:{\"change\":_vm.saveChanges},model:{value:(_vm.settings['ai.translation_provider_preferences']),callback:function ($$v) {_vm.$set(_vm.settings, 'ai.translation_provider_preferences', $$v)},expression:\"settings['ai.translation_provider_preferences']\"}},_vm._l((_vm.settings['ai.translation_provider_preferences']),function(providerClass,i){return _c('div',{key:providerClass,staticClass:\"draggable__item\"},[_c('DragVerticalIcon'),_vm._v(\" \"),_c('span',{staticClass:\"draggable__number\"},[_vm._v(_vm._s(i + 1))]),_vm._v(\" \"+_vm._s(_vm.translationProviders.find(p => p.class === providerClass)?.name)+\"\\n\\t\\t\\t\\t\"),_c('NcButton',{attrs:{\"aria-label\":\"Move up\",\"type\":\"tertiary\"},on:{\"click\":function($event){return _vm.moveUp(i)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowUpIcon')]},proxy:true}],null,true)}),_vm._v(\" \"),_c('NcButton',{attrs:{\"aria-label\":\"Move down\",\"type\":\"tertiary\"},on:{\"click\":function($event){return _vm.moveDown(i)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowDownIcon')]},proxy:true}],null,true)})],1)}),0)],1),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('settings', 'Speech-To-Text'),\"description\":_vm.t('settings', 'Speech-To-Text can be implemented by different apps. Here you can set which app should be used.')}},[_vm._l((_vm.sttProviders),function(provider){return [_c('NcCheckboxRadioSwitch',{key:provider.class,attrs:{\"checked\":_vm.settings['ai.stt_provider'],\"value\":provider.class,\"name\":\"stt_provider\",\"type\":\"radio\"},on:{\"update:checked\":[function($event){return _vm.$set(_vm.settings, 'ai.stt_provider', $event)},_vm.saveChanges]}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(provider.name)+\"\\n\\t\\t\\t\")])]}),_vm._v(\" \"),(!_vm.hasStt)?[_c('NcCheckboxRadioSwitch',{attrs:{\"disabled\":\"\",\"type\":\"radio\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('settings', 'None of your currently installed apps provide Speech-To-Text functionality'))+\"\\n\\t\\t\\t\")])]:_vm._e()],2),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('settings', 'Text processing'),\"description\":_vm.t('settings', 'Text processing tasks can be implemented by different apps. Here you can set which app should be used for which task.')}},[_vm._l((Object.keys(_vm.settings['ai.textprocessing_provider_preferences'])),function(type){return [_c('div',{key:type},[_c('h3',[_vm._v(_vm._s(_vm.t('settings', 'Task:'))+\" \"+_vm._s(_vm.getTaskType(type).name))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.getTaskType(type).description))]),_vm._v(\" \"),_c('p',[_vm._v(\" \")]),_vm._v(\" \"),_c('NcSelect',{attrs:{\"clearable\":false,\"options\":_vm.textProcessingProviders.filter(p => p.taskType === type).map(p => p.class)},on:{\"input\":_vm.saveChanges},scopedSlots:_vm._u([{key:\"option\",fn:function({label}){return [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.textProcessingProviders.find(p => p.class === label)?.name)+\"\\n\\t\\t\\t\\t\\t\")]}},{key:\"selected-option\",fn:function({label}){return [_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.textProcessingProviders.find(p => p.class === label)?.name)+\"\\n\\t\\t\\t\\t\\t\")]}}],null,true),model:{value:(_vm.settings['ai.textprocessing_provider_preferences'][type]),callback:function ($$v) {_vm.$set(_vm.settings['ai.textprocessing_provider_preferences'], type, $$v)},expression:\"settings['ai.textprocessing_provider_preferences'][type]\"}}),_vm._v(\" \"),_c('p',[_vm._v(\" \")])],1)]}),_vm._v(\" \"),(!_vm.hasTextProcessing)?[_c('p',[_vm._v(_vm._s(_vm.t('settings', 'None of your currently installed apps provide Text processing functionality')))])]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2016 Christoph Wurst <christoph@winzerhof-wurst.at>\n *\n * @author Christoph Wurst <christoph@winzerhof-wurst.at>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n * @author Roeland Jago Douma <roeland@famdouma.nl>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nimport ArtificialIntelligence from './components/AdminAI.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(OC.requestToken)\n\nVue.prototype.t = t\n\n// Not used here but required for legacy templates\nwindow.OC = window.OC || {}\nwindow.OC.Settings = window.OC.Settings || {}\n\nconst View = Vue.extend(ArtificialIntelligence)\nnew View().$mount('#ai-settings')\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.draggable__item[data-v-4a254e0d] {\\n\\tmargin-bottom: 5px;\\n  display: flex;\\n  align-items: center;\\n}\\n.draggable__item[data-v-4a254e0d],\\n.draggable__item *[data-v-4a254e0d] {\\n  cursor: grab;\\n}\\n.draggable__number[data-v-4a254e0d] {\\n\\tborder-radius: 20px;\\n\\tborder: 2px solid var(--color-primary-default);\\n\\tcolor: var(--color-primary-default);\\n  padding: 0px 7px;\\n\\tmargin-right: 3px;\\n}\\n.drag-vertical-icon[data-v-4a254e0d] {\\n  float: left;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/components/AdminAI.vue\"],\"names\":[],\"mappings\":\";AAsJA;CACA,kBAAA;EACA,aAAA;EACA,mBAAA;AACA;AAEA;;EAEA,YAAA;AACA;AAEA;CACA,mBAAA;CACA,8CAAA;CACA,mCAAA;EACA,gBAAA;CACA,iBAAA;AACA;AAEA;EACA,WAAA;AACA\",\"sourcesContent\":[\"<template>\\n\\t<div>\\n\\t\\t<NcSettingsSection :title=\\\"t('settings', 'Machine translation')\\\"\\n\\t\\t\\t:description=\\\"t('settings', 'Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment.')\\\">\\n\\t\\t\\t<draggable v-model=\\\"settings['ai.translation_provider_preferences']\\\" @change=\\\"saveChanges\\\">\\n\\t\\t\\t\\t<div v-for=\\\"(providerClass, i) in settings['ai.translation_provider_preferences']\\\" :key=\\\"providerClass\\\" class=\\\"draggable__item\\\">\\n\\t\\t\\t\\t\\t<DragVerticalIcon /> <span class=\\\"draggable__number\\\">{{ i + 1 }}</span> {{ translationProviders.find(p => p.class === providerClass)?.name }}\\n\\t\\t\\t\\t\\t<NcButton aria-label=\\\"Move up\\\" type=\\\"tertiary\\\" @click=\\\"moveUp(i)\\\">\\n\\t\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t\\t<ArrowUpIcon />\\n\\t\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t</NcButton>\\n\\t\\t\\t\\t\\t<NcButton aria-label=\\\"Move down\\\" type=\\\"tertiary\\\" @click=\\\"moveDown(i)\\\">\\n\\t\\t\\t\\t\\t\\t<template #icon>\\n\\t\\t\\t\\t\\t\\t\\t<ArrowDownIcon />\\n\\t\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t</NcButton>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</draggable>\\n\\t\\t</NcSettingsSection>\\n\\t\\t<NcSettingsSection :title=\\\"t('settings', 'Speech-To-Text')\\\"\\n\\t\\t\\t:description=\\\"t('settings', 'Speech-To-Text can be implemented by different apps. Here you can set which app should be used.')\\\">\\n\\t\\t\\t<template v-for=\\\"provider in sttProviders\\\">\\n\\t\\t\\t\\t<NcCheckboxRadioSwitch :key=\\\"provider.class\\\"\\n\\t\\t\\t\\t\\t:checked.sync=\\\"settings['ai.stt_provider']\\\"\\n\\t\\t\\t\\t\\t:value=\\\"provider.class\\\"\\n\\t\\t\\t\\t\\tname=\\\"stt_provider\\\"\\n\\t\\t\\t\\t\\ttype=\\\"radio\\\"\\n\\t\\t\\t\\t\\t@update:checked=\\\"saveChanges\\\">\\n\\t\\t\\t\\t\\t{{ provider.name }}\\n\\t\\t\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template v-if=\\\"!hasStt\\\">\\n\\t\\t\\t\\t<NcCheckboxRadioSwitch disabled type=\\\"radio\\\">\\n\\t\\t\\t\\t\\t{{ t('settings', 'None of your currently installed apps provide Speech-To-Text functionality') }}\\n\\t\\t\\t\\t</NcCheckboxRadioSwitch>\\n\\t\\t\\t</template>\\n\\t\\t</NcSettingsSection>\\n\\t\\t<NcSettingsSection :title=\\\"t('settings', 'Text processing')\\\"\\n\\t\\t\\t:description=\\\"t('settings', 'Text processing tasks can be implemented by different apps. Here you can set which app should be used for which task.')\\\">\\n\\t\\t\\t<template v-for=\\\"type in Object.keys(settings['ai.textprocessing_provider_preferences'])\\\">\\n\\t\\t\\t\\t<div :key=\\\"type\\\">\\n\\t\\t\\t\\t\\t<h3>{{ t('settings', 'Task:') }} {{ getTaskType(type).name }}</h3>\\n\\t\\t\\t\\t\\t<p>{{ getTaskType(type).description }}</p>\\n\\t\\t\\t\\t\\t<p>&nbsp;</p>\\n\\t\\t\\t\\t\\t<NcSelect v-model=\\\"settings['ai.textprocessing_provider_preferences'][type]\\\"\\n\\t\\t\\t\\t\\t\\t:clearable=\\\"false\\\"\\n\\t\\t\\t\\t\\t\\t:options=\\\"textProcessingProviders.filter(p => p.taskType === type).map(p => p.class)\\\"\\n\\t\\t\\t\\t\\t\\t@input=\\\"saveChanges\\\">\\n\\t\\t\\t\\t\\t\\t<template #option=\\\"{label}\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ textProcessingProviders.find(p => p.class === label)?.name }}\\n\\t\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t\\t<template #selected-option=\\\"{label}\\\">\\n\\t\\t\\t\\t\\t\\t\\t{{ textProcessingProviders.find(p => p.class === label)?.name }}\\n\\t\\t\\t\\t\\t\\t</template>\\n\\t\\t\\t\\t\\t</NcSelect>\\n\\t\\t\\t\\t\\t<p>&nbsp;</p>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</template>\\n\\t\\t\\t<template v-if=\\\"!hasTextProcessing\\\">\\n\\t\\t\\t\\t<p>{{ t('settings', 'None of your currently installed apps provide Text processing functionality') }}</p>\\n\\t\\t\\t</template>\\n\\t\\t</NcSettingsSection>\\n\\t</div>\\n</template>\\n\\n<script>\\nimport axios from '@nextcloud/axios'\\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\\nimport draggable from 'vuedraggable'\\nimport DragVerticalIcon from 'vue-material-design-icons/DragVertical.vue'\\nimport ArrowDownIcon from 'vue-material-design-icons/ArrowDown.vue'\\nimport ArrowUpIcon from 'vue-material-design-icons/ArrowUp.vue'\\nimport { loadState } from '@nextcloud/initial-state'\\n\\nimport { generateUrl } from '@nextcloud/router'\\n\\nexport default {\\n\\tname: 'AdminAI',\\n\\tcomponents: {\\n\\t\\tNcCheckboxRadioSwitch,\\n\\t\\tNcSettingsSection,\\n\\t\\tNcSelect,\\n\\t\\tdraggable,\\n\\t\\tDragVerticalIcon,\\n\\t\\tArrowDownIcon,\\n\\t\\tArrowUpIcon,\\n\\t\\tNcButton\\n\\t},\\n\\tdata() {\\n\\t\\treturn {\\n\\t\\t\\tloading: false,\\n\\t\\t\\tdirty: false,\\n\\t\\t\\tgroups: [],\\n\\t\\t\\tloadingGroups: false,\\n\\t\\t\\tsttProviders: loadState('settings', 'ai-stt-providers'),\\n\\t\\t\\ttranslationProviders: loadState('settings', 'ai-translation-providers'),\\n\\t\\t\\ttextProcessingProviders: loadState('settings', 'ai-text-processing-providers'),\\n\\t\\t\\ttextProcessingTaskTypes: loadState('settings', 'ai-text-processing-task-types'),\\n\\t\\t\\tsettings: loadState('settings', 'ai-settings'),\\n\\t\\t}\\n\\t},\\n\\tcomputed: {\\n\\t\\thasStt() {\\n\\t\\t\\treturn this.sttProviders.length > 0\\n\\t\\t},\\n\\t\\thasTextProcessing() {\\n\\t\\t\\treturn Object.keys(this.settings['ai.textprocessing_provider_preferences']).length > 0 && Array.isArray(this.textProcessingTaskTypes)\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t  moveUp(i) {\\n\\t\\t\\tthis.settings['ai.translation_provider_preferences'].splice(\\n\\t\\t\\t  Math.min(i - 1, 0),\\n\\t\\t\\t\\t0,\\n\\t\\t\\t\\t...this.settings['ai.translation_provider_preferences'].splice(i, 1)\\n\\t\\t\\t)\\n\\t\\t\\tthis.saveChanges()\\n\\t\\t},\\n\\t\\tmoveDown(i) {\\n\\t\\t\\tthis.settings['ai.translation_provider_preferences'].splice(\\n\\t\\t\\t\\ti + 1,\\n\\t\\t\\t\\t0,\\n\\t\\t\\t\\t...this.settings['ai.translation_provider_preferences'].splice(i, 1)\\n\\t\\t\\t)\\n\\t\\t\\tthis.saveChanges()\\n\\t\\t},\\n\\t\\tasync saveChanges() {\\n\\t\\t\\tthis.loading = true\\n\\t\\t\\tconst data = { settings: this.settings }\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tawait axios.put(generateUrl('/settings/api/admin/ai'), data)\\n\\t\\t\\t} catch (err) {\\n\\t\\t\\t\\tconsole.error('could not save changes', err)\\n\\t\\t\\t}\\n\\t\\t\\tthis.loading = false\\n\\t\\t},\\n\\t\\tgetTaskType(type) {\\n\\t\\t  if (!Array.isArray(this.textProcessingTaskTypes)) {\\n\\t\\t\\t\\treturn null\\n\\t\\t\\t}\\n\\t\\t\\treturn this.textProcessingTaskTypes.find(taskType => taskType.class === type)\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n<style scoped>\\n.draggable__item {\\n\\tmargin-bottom: 5px;\\n  display: flex;\\n  align-items: center;\\n}\\n\\n.draggable__item,\\n.draggable__item * {\\n  cursor: grab;\\n}\\n\\n.draggable__number {\\n\\tborder-radius: 20px;\\n\\tborder: 2px solid var(--color-primary-default);\\n\\tcolor: var(--color-primary-default);\\n  padding: 0px 7px;\\n\\tmargin-right: 3px;\\n}\\n\\n.drag-vertical-icon {\\n  float: left;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1104;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1104: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], () => (__webpack_require__(11975)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","name","components","NcCheckboxRadioSwitch","NcSettingsSection","NcSelect","draggable","DragVerticalIcon","ArrowDownIcon","ArrowUpIcon","NcButton","data","loading","dirty","groups","loadingGroups","sttProviders","loadState","translationProviders","textProcessingProviders","textProcessingTaskTypes","settings","computed","hasStt","length","hasTextProcessing","Object","keys","Array","isArray","methods","moveUp","i","splice","Math","min","saveChanges","moveDown","axios","generateUrl","err","console","error","getTaskType","type","find","taskType","class","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_c","_self","attrs","t","on","model","value","callback","$$v","$set","expression","_l","providerClass","_vm$translationProvid","key","staticClass","_v","_s","p","$event","scopedSlots","_u","fn","proxy","provider","_e","description","filter","map","_ref","_vm$textProcessingPro","label","_ref2","_vm$textProcessingPro2","__webpack_nonce__","btoa","OC","requestToken","Vue","window","Settings","ArtificialIntelligence","$mount","___CSS_LOADER_EXPORT___","push","module","id","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","e","Promise","resolve","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","forEach","bind","nc","__webpack_exports__"],"sourceRoot":""}