{"version":3,"sources":["webpack:///./src/views/Program/Wording/WordingEdit.vue?a68c","webpack:///./src/views/Program/Wording/WordingEdit.vue?0e6c","webpack:///./src/views/Program/Wording/WordingEdit.vue","webpack:///./src/views/Program/Wording/WordingEdit.vue?ddef"],"names":["_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","id","render","_ctx","_cache","$props","$setup","$data","$options","_component_Breadcrumb","_component_a_button","dataSource","name","onClick","handleCompareWording","default","_","type","handleSaveWording","isFixed","setup","instance","store","init","E","window","wangEditor","params","state","pgmData","programId","sessionStorage","getItem","Object","assign","JSON","parse","then","res","txt","html","String","editable","replaceAll","BtnMenu","editor","$elem","$","clickHandler","this","isEmptySelection","selection","isSelectionEmpty","$selectionElem","getSelectionContainerElem","elems","getSelectionText","document","getElementById","value","cmd","do","collapseRange","restoreSelection","tryChangeActive","active","registerMenu","CustomColorMenu","config","excludeMenus","uploadImgShowBase64","showLinkImg","Hr","create","colorSelector","createElement","setAttribute","querySelector","append","destroy","open","location","origin","message","success","addEventListener","documentElement","scrollTop","__exports__"],"mappings":"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","file":"js/chunk-302c7768.cc2156e8.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/index.js??ref--1-1!./WordingEdit.vue?vue&type=style&index=0&id=156a5c9e&lang=scss\"","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createTextVNode as _createTextVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = { class: \"p-r wording-edit\" }\nconst _hoisted_2 = { class: \"p-a btn-wrap\" }\nconst _hoisted_3 = /*#__PURE__*/_createTextVNode(\"Compare with origin\")\nconst _hoisted_4 = /*#__PURE__*/_createTextVNode(\"Save\")\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"div\", {\n id: \"text-container\",\n class: \"text\"\n}, null, -1)\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n const _component_Breadcrumb = _resolveComponent(\"Breadcrumb\")!\n const _component_a_button = _resolveComponent(\"a-button\")!\n\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [\n _createVNode(_component_Breadcrumb, { dataSource: [{name: 'Wording'}] }),\n _createElementVNode(\"div\", _hoisted_2, [\n _createVNode(_component_a_button, {\n class: \"m-l-10\",\n onClick: _ctx.handleCompareWording\n }, {\n default: _withCtx(() => [\n _hoisted_3\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_a_button, {\n type: \"primary\",\n class: \"m-l-10\",\n onClick: _ctx.handleSaveWording\n }, {\n default: _withCtx(() => [\n _hoisted_4\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _createElementVNode(\"div\", {\n id: \"toolbar-container\",\n class: _normalizeClass({'toolbar-fixed': _ctx.isFixed})\n }, null, 2),\n _hoisted_5\n ]))\n}","\nimport { defineComponent, onMounted, onBeforeUnmount, ref } from 'vue';\nimport axios from 'axios'\n// import WangEditor from 'wangeditor';\nimport { useStore } from 'vuex'\nimport { getEditableContent, saveEditedContent } from '@/API/program'\nimport { message } from \"ant-design-vue\"\nexport default defineComponent({\n name: 'Wording Edit',\n setup() {\n const store = useStore()\n let instance: any;\n const init = () => { \n const E = window.wangEditor\n instance = new window.wangEditor('#toolbar-container', '#text-container')\n const params = {\n 'programId': store.state.pgmData.programId,\n // 'programId': '0b53c2c3-d445-421d-b237-7d915095d385',\n 'type': 'External',\n 'lang': 'en'\n }\n if (sessionStorage.getItem('params') && sessionStorage.getItem('params') !== null) {\n Object.assign(params, JSON.parse(sessionStorage.getItem('params') as string))\n }\n getEditableContent({params: params}).then(res => {\n \n\n instance.txt.html(`
${String(res.editable).replaceAll('
`)\n })\n // instance.config.menus = [\n // 'head', // 标题\n // 'bold', // 粗体\n // 'fontSize', // 字号\n // 'fontName', // 字体\n // 'italic', // 斜体\n // 'underline', // 下划线\n // 'strikeThrough', // 删除线\n // 'foreColor', // 文字颜色\n // 'backColor', // 背景颜色\n // 'link', // 插入链接\n // 'list', // 列表\n // 'justify', // 对齐方式\n // 'quote', // 引用\n // 'emoticon', // 表情\n // 'image', // 插入图片\n // 'table', // 表格\n // 'video', // 插入视频\n // 'code', // 插入代码\n // 'undo', // 撤销\n // 'redo' // 重复\n // ]\n // 隐藏表情,和视频菜单\n const { BtnMenu, DropListMenu, PanelMenu, DropList, Panel, Tooltip } = E\n // 创建 class\n class CustomColorMenu extends BtnMenu {\n constructor(editor: any) {\n const $elem = E.$(\n `
\n \n
`\n \n )\n super($elem, editor)\n }\n // 菜单点击事件\n clickHandler() {\n const editor = this.editor\n const isEmptySelection = editor.selection.isSelectionEmpty()\n const $selectionElem = editor.selection.getSelectionContainerElem()?.elems[0]\n\n if ($selectionElem == null) return\n\n // 获取选区范围的文字\n const $selectionText = editor.selection.getSelectionText()\n // // 如果设置的是 a 标签就特殊处理一下,避免回车换行设置颜色无效的情况\n // // 只处理选中a标签内全部文字的情况,因为选中部分文字不存在换行颜色失效的情况\n // if ($selectionElem.nodeName === 'A' && $selectionElem.textContent === $selectionText) {\n // // 创建一个相当于占位的元素\n // const _payloadElem = $('').getNode()\n // // 添加到a标签之后\n // $selectionElem.appendChild(_payloadElem)\n // }\n debugger\n if(document && (document?.getElementById('color') as HTMLInputElement).value) {\n editor.cmd.do('foreColor', (document?.getElementById('color') as HTMLInputElement).value)\n }\n \n\n if (isEmptySelection) {\n // 需要将选区范围折叠起来\n editor.selection.collapseRange()\n editor.selection.restoreSelection()\n }\n }\n // 菜单激活状态\n tryChangeActive() {\n this.active() // 菜单激活\n // this.unActive() // 菜单不激活\n }\n }\n // 注册菜单 [全局模式注册菜单]\n E.registerMenu('CustomColorMenu', CustomColorMenu)\n\n\n instance.config.excludeMenus = [\n 'emoticon',\n 'video'\n ]\n // 可使用 base64 格式保存图片。即,可选择本地图片,编辑器用 base64 格式显示图片。\n // 上传图服务器\n // instance.config.uploadImgServer = '/upload-img'\n // uploadImgShowBase64(base64 格式)和 uploadImgServer(上传图片到服务器)两者不能同时使用\n instance.config.uploadImgShowBase64 = true\n // 隐藏网络图片\n instance.config.showLinkImg = false\n instance.config.Hr = false\n instance.create()\n const colorSelector = document.createElement('INPUT')\n colorSelector.setAttribute('id', 'color')\n colorSelector.setAttribute('placeholder', '请输入颜色英文')\n const toolBarElem = document?.querySelector('.w-e-toolbar')?.append(colorSelector)\n }\n // 在路由卸载之后,需要清掉编辑器\n onBeforeUnmount(() => {\n instance.destroy()\n instance = null\n })\n // 进入到对比wording页面\n const handleCompareWording = () => {\n window.open(`${window.location.origin}/#/wordingcompare`)\n }\n // 保存编辑后的wording\n const handleSaveWording = () => {\n const params = {\n \"editable\": instance.txt.html(),\n \"programId\": store.state.pgmData.programId\n }\n if (sessionStorage.getItem('params') && sessionStorage.getItem('params') !== null) {\n Object.assign(params, JSON.parse(sessionStorage.getItem('params') as string))\n }\n \n saveEditedContent(params).then(() => {\n message.success('Save successed!')\n })\n }\n\n const isFixed = ref(false)\n onMounted(() => {\n init()\n window.addEventListener('scroll', () => {\n isFixed.value = document.documentElement.scrollTop > 100\n })\n })\n return {\n isFixed,\n handleCompareWording,\n handleSaveWording\n }\n }\n})\n","import { render } from \"./WordingEdit.vue?vue&type=template&id=156a5c9e&ts=true\"\nimport script from \"./WordingEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./WordingEdit.vue?vue&type=script&lang=ts\"\n\nimport \"./WordingEdit.vue?vue&type=style&index=0&id=156a5c9e&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__"],"sourceRoot":""}