@ibiz-template/vue3-components 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist/{chart-efad8ee0.js → chart-0d4e59ff.js} +2 -2
  2. package/dist/chart-0d4e59ff.js.map +1 -0
  3. package/dist/ibiz-markdown-editor-3745dfd5.js.map +1 -1
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +3 -3
  6. package/dist/index.system.min.js.map +1 -1
  7. package/dist/wang-editor-675011c6.js.map +1 -1
  8. package/dist/xlsx-util-fac1c045.js.map +1 -1
  9. package/es/common/icon/icon.d.ts +1 -3
  10. package/es/common/index.d.ts +0 -2
  11. package/es/common/index.mjs +1 -5
  12. package/es/common/router-view/router-view.d.ts +1 -3
  13. package/es/control/app-menu/app-menu.css +1 -1
  14. package/es/control/app-menu-icon-view/app-menu-icon-view.d.ts +3 -3
  15. package/es/control/app-menu-icon-view/index.d.ts +6 -2
  16. package/es/control/chart/generator/chart-options-generator.mjs +1 -1
  17. package/es/control/chart/generator/funnel-series-generator.d.ts +1 -1
  18. package/es/control/chart/generator/pie-series-generator.d.ts +1 -1
  19. package/es/control/dashboard/dashboard.css +1 -0
  20. package/es/control/dashboard/dashboard.d.ts +1 -0
  21. package/es/control/dashboard/dashboard.mjs +1 -0
  22. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.d.ts +1 -0
  23. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.mjs +1 -0
  24. package/es/control/dashboard/portlet/portlet-part/portlet-part.controller.mjs +1 -1
  25. package/es/control/data-view/data-view.controller.mjs +0 -1
  26. package/es/control/data-view/data-view.css +1 -1
  27. package/es/control/drbar/drbar.controller.d.ts +2 -5
  28. package/es/control/drbar/drbar.d.ts +2 -2
  29. package/es/control/drbar/index.d.ts +3 -1
  30. package/es/control/drtab/drtab.controller.d.ts +2 -5
  31. package/es/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.d.ts +8 -0
  32. package/es/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.mjs +22 -9
  33. package/es/control/exp-bar/tree-exp-bar/tree-exp-bar.mjs +2 -1
  34. package/es/control/form/form/form.d.ts +1 -5
  35. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +4 -3
  36. package/es/control/form/form-detail/form-page/form-page.mjs +2 -2
  37. package/es/control/grid/grid/grid-control.util.d.ts +2 -1
  38. package/es/control/grid/grid/grid.controller.d.ts +73 -5
  39. package/es/control/grid/grid/grid.controller.mjs +201 -6
  40. package/es/control/grid/grid/grid.css +1 -1
  41. package/es/control/grid/grid/grid.d.ts +6 -1
  42. package/es/control/grid/grid/grid.mjs +62 -10
  43. package/es/control/grid/grid/index.d.ts +5 -1
  44. package/es/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +11 -2
  45. package/es/control/grid/grid-column/grid-field-column/grid-field-column.controller.mjs +53 -0
  46. package/es/control/grid/grid-column/grid-field-column/grid-field-column.css +1 -1
  47. package/es/control/grid/grid-column/grid-field-edit-column/grid-edit-item/grid-edit-item.css +1 -1
  48. package/es/control/toolbar/index.d.ts +6 -2
  49. package/es/control/toolbar/toolbar.d.ts +3 -3
  50. package/es/control/tree/index.d.ts +7 -1
  51. package/es/control/tree/tree.controller.d.ts +0 -10
  52. package/es/control/tree/tree.controller.mjs +4 -18
  53. package/es/control/tree/tree.d.ts +7 -1
  54. package/es/control/tree/tree.mjs +23 -8
  55. package/es/control/tree/tree.service.d.ts +9 -2
  56. package/es/control/tree/tree.service.mjs +20 -1
  57. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.d.ts +1 -1
  58. package/es/editor/cascader/ibiz-cascader/ibiz-cascader.d.ts +1 -1
  59. package/es/editor/code/code-editor.controller.d.ts +2 -2
  60. package/es/editor/data-picker/ibiz-picker/ibiz-picker.d.ts +1 -1
  61. package/es/editor/html/wang-editor/wang-editor.d.ts +1 -1
  62. package/es/editor/upload/use/use-ibiz-upload.d.ts +2 -2
  63. package/es/editor/upload/use/use-iview-upload.d.ts +2 -2
  64. package/es/index.mjs +0 -1
  65. package/es/panel-component/nav-pos/nav-pos.mjs +6 -4
  66. package/es/panel-component/nav-pos-index/nav-pos-index.controller.mjs +1 -2
  67. package/es/panel-component/nav-pos-index/nav-pos-index.mjs +3 -2
  68. package/es/panel-component/nav-pos-index/nav-pos-index.state.mjs +1 -1
  69. package/es/panel-component/panel-app-title/panel-app-title.css +1 -1
  70. package/es/panel-component/panel-app-title/panel-app-title.mjs +1 -1
  71. package/es/panel-component/panel-field/panel-field.controller.d.ts +1 -1
  72. package/es/view/portal-view/portal-view.mjs +1 -18
  73. package/es/view-engine/grid-view.engine.mjs +1 -1
  74. package/es/view-engine/wf-dyna-action-view.engine.mjs +1 -1
  75. package/es/view-engine/wf-dyna-start-view.engine.mjs +1 -1
  76. package/lib/common/index.cjs +0 -13
  77. package/lib/control/app-menu/app-menu.css +1 -1
  78. package/lib/control/chart/generator/chart-options-generator.cjs +1 -1
  79. package/lib/control/dashboard/dashboard.cjs +1 -0
  80. package/lib/control/dashboard/dashboard.css +1 -0
  81. package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.cjs +1 -0
  82. package/lib/control/dashboard/portlet/portlet-part/portlet-part.controller.cjs +1 -1
  83. package/lib/control/data-view/data-view.controller.cjs +0 -1
  84. package/lib/control/data-view/data-view.css +1 -1
  85. package/lib/control/exp-bar/tree-exp-bar/tree-exp-bar.cjs +2 -1
  86. package/lib/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.cjs +22 -9
  87. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +4 -3
  88. package/lib/control/form/form-detail/form-page/form-page.cjs +2 -2
  89. package/lib/control/grid/grid/grid.cjs +62 -10
  90. package/lib/control/grid/grid/grid.controller.cjs +200 -5
  91. package/lib/control/grid/grid/grid.css +1 -1
  92. package/lib/control/grid/grid-column/grid-field-column/grid-field-column.controller.cjs +53 -0
  93. package/lib/control/grid/grid-column/grid-field-column/grid-field-column.css +1 -1
  94. package/lib/control/grid/grid-column/grid-field-edit-column/grid-edit-item/grid-edit-item.css +1 -1
  95. package/lib/control/tree/tree.cjs +23 -8
  96. package/lib/control/tree/tree.controller.cjs +4 -18
  97. package/lib/control/tree/tree.service.cjs +20 -1
  98. package/lib/index.cjs +0 -11
  99. package/lib/panel-component/nav-pos/nav-pos.cjs +6 -4
  100. package/lib/panel-component/nav-pos-index/nav-pos-index.cjs +3 -2
  101. package/lib/panel-component/nav-pos-index/nav-pos-index.controller.cjs +1 -2
  102. package/lib/panel-component/nav-pos-index/nav-pos-index.state.cjs +1 -1
  103. package/lib/panel-component/panel-app-title/panel-app-title.cjs +1 -1
  104. package/lib/panel-component/panel-app-title/panel-app-title.css +1 -1
  105. package/lib/view/portal-view/portal-view.cjs +1 -18
  106. package/lib/view-engine/grid-view.engine.cjs +1 -1
  107. package/lib/view-engine/wf-dyna-action-view.engine.cjs +1 -1
  108. package/lib/view-engine/wf-dyna-start-view.engine.cjs +1 -1
  109. package/package.json +10 -10
  110. package/dist/chart-efad8ee0.js.map +0 -1
  111. package/es/common/keep-alive/keep-alive.d.ts +0 -45
  112. package/es/common/keep-alive/keep-alive.mjs +0 -293
  113. package/es/common/keep-alive/scheduler.d.ts +0 -41
  114. package/es/common/keep-alive/scheduler.mjs +0 -168
  115. package/lib/common/keep-alive/keep-alive.cjs +0 -304
  116. package/lib/common/keep-alive/scheduler.cjs +0 -178
@@ -1 +1 @@
1
- {"version":3,"file":"wang-editor-675011c6.js","sources":["../src/editor/html/wang-editor/wang-editor.tsx"],"sourcesContent":["import {\n onBeforeUnmount,\n ref,\n shallowRef,\n onMounted,\n watch,\n Ref,\n defineComponent,\n} from 'vue';\nimport { Editor, Toolbar } from '@wangeditor/editor-for-vue';\nimport { IEditorConfig, IToolbarConfig } from '@wangeditor/editor';\nimport type { IDomEditor } from '@wangeditor/editor';\nimport { getCookie } from 'qx-util';\nimport {\n getEditorEmits,\n getHtmlProps,\n useNamespace,\n} from '@ibiz-template/vue3-util';\nimport { CoreConst } from '@ibiz-template/core';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './wang-editor.scss';\n\ntype InsertFnType = (_url: string, _alt: string, _href: string) => void;\n\nconst IBizHtml = defineComponent({\n name: 'IBizHtml',\n props: getHtmlProps<HtmlEditorController>(),\n emits: getEditorEmits(),\n setup(props, { emit }) {\n const ns = useNamespace('html');\n\n const c = props.controller!;\n\n // 编辑器实例,必须用 shallowRef,重要!\n const editorRef = shallowRef();\n\n // 内容 HTML\n const valueHtml = ref('');\n\n // 请求头\n const headers: Ref<IData> = ref({\n Authorization: `Bearer ${getCookie(CoreConst.TOKEN)}`,\n });\n\n // 上传文件路径\n const uploadUrl: Ref<string> = ref('');\n\n // 下载文件路径\n const downloadUrl: Ref<string> = ref('');\n\n // data响应式变更基础路径\n watch(\n () => props.data,\n newVal => {\n if (newVal) {\n const urls = c.calcBaseUrl(newVal);\n uploadUrl.value = urls.uploadUrl;\n downloadUrl.value = urls.downloadUrl;\n }\n },\n { immediate: true, deep: true },\n );\n\n // 自定义校验链接\n const customCheckLinkFn = (\n text: string,\n url: string,\n ): string | boolean | undefined => {\n if (!url) {\n return;\n }\n // if (url.indexOf('http') !== 0) {\n // return '链接必须以 http/https 开头';\n // }\n return true;\n\n // 返回值有三种选择:\n // 1. 返回 true ,说明检查通过,编辑器将正常插入链接\n // 2. 返回一个字符串,说明检查未通过,编辑器会阻止插入。会 alert 出错误信息(即返回的字符串)\n // 3. 返回 undefined(即没有任何返回),说明检查未通过,编辑器会阻止插入。但不会提示任何信息\n };\n\n // 自定义转换链接 url\n const customParseLinkUrl = (url: string): string => {\n // if (url.indexOf('http') !== 0) {\n // return `http://${url}`;\n // }\n return url;\n };\n\n // 工具栏配置\n const toolbarConfig: Partial<IToolbarConfig> = {\n excludeKeys: ['group-video'],\n };\n\n // 编辑器配置\n const editorConfig: Partial<IEditorConfig> = {\n placeholder: c.placeHolder,\n readOnly: props.readonly,\n MENU_CONF: {\n // 图片上传\n uploadImage: {\n // 上传地址\n server: uploadUrl.value,\n\n // form-data fieldName ,默认值 'wangeditor-uploaded-image'\n fieldName: 'file',\n\n // 单个文件的最大体积限制,默认为 2M\n maxFileSize: 10 * 1024 * 1024, // 10M\n\n // 最多可上传几个文件,默认为 100\n maxNumberOfFiles: 10,\n\n // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 []\n allowedFileTypes: [],\n\n // 自定义增加 http header\n headers: headers.value,\n\n // 跨域是否传递 cookie ,默认为 false\n withCredentials: true,\n\n // 上传之前触发\n onBeforeUpload(file: File) {\n // TS 语法\n // onBeforeUpload(file) { // JS 语法\n // file 选中的文件,格式如 { key: file }\n return file;\n\n // 可以 return\n // 1. return file 或者 new 一个 file ,接下来将上传\n // 2. return false ,不上传这个 file\n },\n\n // 上传进度的回调函数\n onProgress(progress: number) {\n console.log('progress', progress);\n },\n\n // 单个文件上传成功之后\n onSuccess(file: File, res: IData) {\n console.log(`${file.name} 上传成功`, res);\n },\n\n // 单个文件上传失败\n onFailed(file: File, res: IData) {\n console.log(`${file.name} 上传失败`, res);\n },\n\n // 上传错误,或者触发 timeout 超时\n onError(file: File, err: IData, res: IData) {\n console.log(`${file.name} 上传出错`, err, res);\n },\n\n // 自定义插入图片\n async customInsert(res: IData, insertFn: InsertFnType) {\n const url = downloadUrl.value.replace('%fileId%', res.id);\n const alt = res.filename;\n // 从 res 中找到 url alt href ,然后插入图片\n insertFn(url, alt, '');\n },\n },\n // 插入链接\n insertLink: {\n checkLink: customCheckLinkFn, // 也支持 async 函数\n parseLinkUrl: customParseLinkUrl, // 也支持 async 函数\n },\n // 更新链接\n editLink: {\n checkLink: customCheckLinkFn, // 也支持 async 函数\n parseLinkUrl: customParseLinkUrl, // 也支持 async 函数\n },\n },\n };\n\n // 组件销毁时,也及时销毁编辑器,重要!\n onBeforeUnmount(() => {\n const editor = editorRef.value;\n if (editor == null) return;\n\n editor.destroy();\n });\n\n // 编辑器回调函数\n // 编辑器创建完毕时的回调函数\n const handleCreated = (editor: IDomEditor) => {\n editorRef.value = editor; // 记录 editor 实例,重要!\n // 配置菜单\n // setTimeout(() => {\n // const toolbar = DomEditor.getToolbar(editor);\n // const curToolbarConfig = toolbar?.getConfig();\n // console.log(curToolbarConfig?.toolbarKeys); // 当前菜单排序和分组\n // }, 3000);\n };\n // 编辑器内容、选区变化时的回调函数\n const handleChange = (editor: IDomEditor) => {\n // console.log('change:', editor.getHtml());\n const html = editor.getHtml();\n // wangEditor初始值抛空字符串给后台\n const emitValue = html === '<p><br></p>' ? '' : html;\n emit('change', emitValue);\n };\n // 编辑器销毁时的回调函数。调用 editor.destroy() 即可销毁编辑器\n const handleDestroyed = (_editor: IDomEditor) => {\n // console.log('destroyed', _editor);\n };\n // 编辑器 focus 时的回调函数\n const handleFocus = (_editor: IDomEditor) => {\n // console.log('focus', _editor);\n };\n // 编辑器 blur 时的回调函数。\n const handleBlur = (_editor: IDomEditor) => {\n // console.log('blur', _editor);\n };\n // 自定义编辑器 alert\n const customAlert = (info: string, type: string) => {\n // eslint-disable-next-line no-alert\n alert(`【自定义提示】${type} - ${info}`);\n };\n // 自定义粘贴。可阻止编辑器的默认粘贴,实现自己的粘贴逻辑\n const customPaste = (\n editor: IDomEditor,\n event: ClipboardEvent,\n callback: Function,\n ) => {\n // 返回值(注意,vue 事件的返回值,不能用 return)\n // callback(false); // 返回 false ,阻止默认粘贴行为\n callback(true); // 返回 true ,继续默认的粘贴行为\n };\n\n // 插入文本\n const insertText = (str: string) => {\n const editor = editorRef.value;\n if (editor == null) return;\n\n editor.insertText(str);\n };\n\n // 获取非格式化的 html\n const printHtml = () => {\n const editor = editorRef.value;\n if (editor == null) return;\n console.log(editor.getHtml());\n };\n\n // 禁用编辑器\n const disable = () => {\n const editor = editorRef.value;\n if (editor == null) return;\n editor.disable();\n };\n\n // 取消禁用编辑器\n const enable = () => {\n const editor = editorRef.value;\n if (editor == null) return;\n editor.enable();\n };\n\n onMounted(() => {\n // 监听值变化赋值\n watch(\n () => props.value,\n (newVal, oldVal) => {\n if (\n newVal !== oldVal &&\n (typeof props.value === 'string' || newVal === null)\n ) {\n if (newVal === null) {\n valueHtml.value = '';\n } else {\n valueHtml.value = newVal as string;\n }\n }\n },\n { immediate: true },\n );\n\n // 监听disabled禁用\n watch(\n () => props.disabled,\n (newVal, oldVal) => {\n if (newVal !== oldVal) {\n if (newVal === true) {\n disable();\n } else {\n enable();\n }\n }\n },\n { immediate: true },\n );\n });\n\n return {\n ns,\n editorRef,\n mode: 'default',\n valueHtml,\n toolbarConfig,\n editorConfig,\n handleCreated,\n handleChange,\n handleDestroyed,\n handleFocus,\n handleBlur,\n customAlert,\n customPaste,\n insertText,\n printHtml,\n disable,\n enable,\n };\n },\n render() {\n return (\n <div class={this.ns.b()}>\n <div style='border: 1px solid #ccc; margin-top: 10px'>\n <Toolbar\n editor={this.editorRef}\n default-config={this.toolbarConfig}\n mode={this.mode}\n style='border-bottom: 1px solid #ccc'\n />\n <Editor\n v-model={this.valueHtml}\n default-config={this.editorConfig}\n mode={this.mode}\n style='height: 400px; overflow-y: hidden'\n onOnCreated={this.handleCreated}\n onOnChange={this.handleChange}\n onOnDestroyed={this.handleDestroyed}\n onOnFocus={this.handleFocus}\n onOnBlur={this.handleBlur}\n oncustomAlert={this.customAlert}\n oncustomPaste={this.customPaste}\n />\n </div>\n </div>\n );\n },\n});\n\nexport default IBizHtml;\n"],"names":["IBizHtml","exports","defineComponent","name","props","getHtmlProps","emits","getEditorEmits","setup","emit","ns","useNamespace","c","controller","valueHtml","ref","editorRef","watch","newVal","headers","Authorization","getCookie","CoreConst","uploadUrl","urls","url","downloadUrl","immediate","deep","customParseLinkUrl","file","toolbarConfig","progress","res","MENU_CONF","uploadImage","server","err","fieldName","maxFileSize","insertFn","alt","maxNumberOfFiles","customCheckLinkFn","withCredentials","editor","onSuccess","handleChange","onFailed","html","onError","console","handleFocus","_editor","handleBlur","customInsert","customAlert","info","type","customPaste","event","callback","insertLink","str","checkLink","printHtml","editLink","disable","onBeforeUnmount","onMounted","handleCreated","value","oldVal","emitValue","enable","editorConfig","alert","handleDestroyed","log","$event"],"mappings":"6dAwBMA,MAAAA,EAAQC,EAAA,UAAGC,EAAgB,CAC/BC,KAAM,WACNC,MAAOC,EAAoC,EAC3CC,MAAOC,EAAgB,EACvBC,MAAMJ,EAAO,CAAEK,KAAAA,CAAK,EAAG,CACrB,MAAMC,EAAKC,EAAa,MAAM,EAExBC,EAAIR,EAAMS,iBAEhBC,EAAAC,EAAA,EAAA,EACMC,EAASD,EAAa,qCAE5B,CAAA,EACMD,EAAYC,EAAI,EAAE,UAExBE,EAAA,IAAAb,EAAA,KAAAc,GAAA,CACMC,GAAAA,EAAsBJ,CAC1BK,MAAAA,EAAgBR,EAASS,YAAAA,CAAUC,EACnCC,EAAA,MAAAC,EAAA,+BAEF,CACA,EAAA,cAEA,KAAA,EACA,CAAA,kBAEA,GAAAC,EAKM,MAAA,EACAF,EACAG,EAAwBD,GAC1BA,EAEAE,EAAe,CAAEC,YAAM,CAAA,aAAA,CAAK,KAGhC,YAAAhB,EAAA,YACA,oBAIE,UAAU,CAEV,YAAA,CAEA,OAAAW,EAAA,MAEA,UAAW,OAEX,YAAA,GAAA,KAAA,KAGA,iBAAA,uBAIIM,QAAAA,EAAAA,MAEJ,gBAAA,GAEA,eAAUC,EAAA,CACX,OAAAA,GAGKC,aAAyC,CAClC,QAAG,IAAa,WAAAC,CAAA,CAC5B,EAED,UAAAF,EAAAG,EAAA,aAC6C,GAAAH,EAAA,IAAA,4BAAAG,CAAA,CAChC,EAEXC,SAAWJ,EAAAG,EAAA,CACT,QAAA,IAAA,GAAAH,EAAA,IAAA,4BAAAG,CAAA,CACAE,EAEEC,QAAQb,EAASc,EAAMJ,EAAA,CAEvB,QAAA,IAAA,GAAAH,EAAA,IAAA,4BAAAO,EAAAJ,CAAA,CACAK,EAGAC,MAAAA,aAAkBN,IAAW,CAAE,MAAAR,EAAAC,EAAA,MAAA,QAAA,WAAAO,EAAA,EAAA,eAE/BO,EAAAf,EAAAgB,EAAA,EAAA,CACAC,CAEA,EAGA,WAAA,CACAvB,UAAgBwB,EAGhBC,aAAAA,GAKE,SAAA,CACA,UAAAD,gBAIA,CACA,UAGF,MAAAE,EAAA7B,EAAA,SAGC,QAAA,CAED,CAAA,EACA8B,MAAAA,EAAsBb,GAAY,GACzB,MAAMY,GAGfE,EAAAF,GAAA,CACAG,MAAAA,EAASlB,EAAYG,YAEpB,SADcgB,IAAY,cAAY,GAAAA,CACtC,CAED,EACAC,EAAgCjB,GAAY,CAC1CkB,EACFC,EAACC,GAAA,CAED,EACAC,EAAkBC,IAChB,EACAC,EAAYvB,CAAGwB,EAASC,IAAA,CACxB,MAAA,6CAAAA,CAAA,MAAAD,CAAA,EAAA,CACAjB,EACFmB,EAAA,CAAAd,EAAAe,EAAAC,IAAA,GACD,EAAA,CACD,EACAC,EAAYC,GAAA,CACVC,MAAAA,EAAWrB,EAAiB,SAE7B,WAAAoB,CAAA,GACDE,EAAA,IAAA,CACAC,MAAAA,EAAUlD,EAAA,MACRgD,iBACY,IAAAnB,YACd,EACFsB,EAAA,IAAA,CACD,MAAAtB,EAAA7B,EAAA,MAGDoD,GAAAA,QAAgB,CACd,EACIvB,EAAU,IAAM,CAEpBA,MAAMA,EAAS7B,EAAC,MAGlB6B,GAAA,OAAA,CACA,EACA,OAAAwB,EAAMC,IAAAA,CACJtD,EAAAA,IAAUuD,EAAQ1B,MAAO,CAAC3B,EAAAsD,IAAA,CAC1BtD,IAAAsD,IAAA,OAAApE,EAAA,OAAA,UAAAc,IAAA,QACAA,IAAA,KACAJ,EAAA,MAAA,GAEAA,EAAA,MAAAI,EAGF,EAAA,CACM6B,UAAAA,EACJ,CAAA,EACA9B,EAAMgC,IAAOJ,EAAAA,SAAe,CAAC3B,EAAAsD,IAAA,CAC7BtD,IAAAsD,IACMC,IAAgB,GACjBN,IAEPO,MAGC,CACD,UAAA,GACMtB,CACJ,CAAA,EACD,CACD,GAAA1C,EACM4C,UAAAA,EACJ,KAAA,UACD,UAAAxC,EACD,cAAAiB,EACA,aAAA4C,EACE,cAAAL,EACAM,aAAAA,EACD,gBAAAC,EACD,YAAAzB,EACMO,WAAAA,EAKJ,YAAAH,EACA,YAAAG,EACAE,WAAAA,EACD,UAAAI,YAED,OAAAS,EAEE,UACI7B,CAEJA,OAAAA,EAAkBkB,MAAI,CACvB,MAAA,KAAA,GAAA,EAAA,aAED,MAAA,4CACME,CAAAA,EAAYA,EAAM,CACtB,OAAY,KAAGjD,UACf,iBAAkB,KAAE,cACpBmC,KAAQ2B,KAAIjC,KACb,MAAA,4CAED,WAAA,KAAA,UACMsB,sBAAgBY,GAAA,KAAA,UAAAA,EACpB,iBAAwB,KAAA,aACxB,KAAIlC,KAAU,KACdA,MAAc,oCACf,YAAA,KAAA,2CAED,cAAA,KAAA,gBACM6B,UAASA,KAAM,YACnB,SAAY,KAAY,WACxB,cAAc,KAAM,YACpB7B,cAAe,KAAA,aAChB,IAAA,CAAA,CAAA,CAAA,CAAA,CAEDwB,CACE,CAAA,CAAA"}
1
+ {"version":3,"file":"wang-editor-675011c6.js","sources":["../src/editor/html/wang-editor/wang-editor.tsx"],"sourcesContent":["import {\n onBeforeUnmount,\n ref,\n shallowRef,\n onMounted,\n watch,\n Ref,\n defineComponent,\n} from 'vue';\nimport { Editor, Toolbar } from '@wangeditor/editor-for-vue';\nimport { IEditorConfig, IToolbarConfig } from '@wangeditor/editor';\nimport type { IDomEditor } from '@wangeditor/editor';\nimport { getCookie } from 'qx-util';\nimport {\n getEditorEmits,\n getHtmlProps,\n useNamespace,\n} from '@ibiz-template/vue3-util';\nimport { CoreConst } from '@ibiz-template/core';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './wang-editor.scss';\n\ntype InsertFnType = (_url: string, _alt: string, _href: string) => void;\n\nconst IBizHtml = defineComponent({\n name: 'IBizHtml',\n props: getHtmlProps<HtmlEditorController>(),\n emits: getEditorEmits(),\n setup(props, { emit }) {\n const ns = useNamespace('html');\n\n const c = props.controller!;\n\n // 编辑器实例,必须用 shallowRef,重要!\n const editorRef = shallowRef();\n\n // 内容 HTML\n const valueHtml = ref('');\n\n // 请求头\n const headers: Ref<IData> = ref({\n Authorization: `Bearer ${getCookie(CoreConst.TOKEN)}`,\n });\n\n // 上传文件路径\n const uploadUrl: Ref<string> = ref('');\n\n // 下载文件路径\n const downloadUrl: Ref<string> = ref('');\n\n // data响应式变更基础路径\n watch(\n () => props.data,\n newVal => {\n if (newVal) {\n const urls = c.calcBaseUrl(newVal);\n uploadUrl.value = urls.uploadUrl;\n downloadUrl.value = urls.downloadUrl;\n }\n },\n { immediate: true, deep: true },\n );\n\n // 自定义校验链接\n const customCheckLinkFn = (\n text: string,\n url: string,\n ): string | boolean | undefined => {\n if (!url) {\n return;\n }\n // if (url.indexOf('http') !== 0) {\n // return '链接必须以 http/https 开头';\n // }\n return true;\n\n // 返回值有三种选择:\n // 1. 返回 true ,说明检查通过,编辑器将正常插入链接\n // 2. 返回一个字符串,说明检查未通过,编辑器会阻止插入。会 alert 出错误信息(即返回的字符串)\n // 3. 返回 undefined(即没有任何返回),说明检查未通过,编辑器会阻止插入。但不会提示任何信息\n };\n\n // 自定义转换链接 url\n const customParseLinkUrl = (url: string): string => {\n // if (url.indexOf('http') !== 0) {\n // return `http://${url}`;\n // }\n return url;\n };\n\n // 工具栏配置\n const toolbarConfig: Partial<IToolbarConfig> = {\n excludeKeys: ['group-video'],\n };\n\n // 编辑器配置\n const editorConfig: Partial<IEditorConfig> = {\n placeholder: c.placeHolder,\n readOnly: props.readonly,\n MENU_CONF: {\n // 图片上传\n uploadImage: {\n // 上传地址\n server: uploadUrl.value,\n\n // form-data fieldName ,默认值 'wangeditor-uploaded-image'\n fieldName: 'file',\n\n // 单个文件的最大体积限制,默认为 2M\n maxFileSize: 10 * 1024 * 1024, // 10M\n\n // 最多可上传几个文件,默认为 100\n maxNumberOfFiles: 10,\n\n // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 []\n allowedFileTypes: [],\n\n // 自定义增加 http header\n headers: headers.value,\n\n // 跨域是否传递 cookie ,默认为 false\n withCredentials: true,\n\n // 上传之前触发\n onBeforeUpload(file: File) {\n // TS 语法\n // onBeforeUpload(file) { // JS 语法\n // file 选中的文件,格式如 { key: file }\n return file;\n\n // 可以 return\n // 1. return file 或者 new 一个 file ,接下来将上传\n // 2. return false ,不上传这个 file\n },\n\n // 上传进度的回调函数\n onProgress(progress: number) {\n console.log('progress', progress);\n },\n\n // 单个文件上传成功之后\n onSuccess(file: File, res: IData) {\n console.log(`${file.name} 上传成功`, res);\n },\n\n // 单个文件上传失败\n onFailed(file: File, res: IData) {\n console.log(`${file.name} 上传失败`, res);\n },\n\n // 上传错误,或者触发 timeout 超时\n onError(file: File, err: IData, res: IData) {\n console.log(`${file.name} 上传出错`, err, res);\n },\n\n // 自定义插入图片\n async customInsert(res: IData, insertFn: InsertFnType) {\n const url = downloadUrl.value.replace('%fileId%', res.id);\n const alt = res.filename;\n // 从 res 中找到 url alt href ,然后插入图片\n insertFn(url, alt, '');\n },\n },\n // 插入链接\n insertLink: {\n checkLink: customCheckLinkFn, // 也支持 async 函数\n parseLinkUrl: customParseLinkUrl, // 也支持 async 函数\n },\n // 更新链接\n editLink: {\n checkLink: customCheckLinkFn, // 也支持 async 函数\n parseLinkUrl: customParseLinkUrl, // 也支持 async 函数\n },\n },\n };\n\n // 组件销毁时,也及时销毁编辑器,重要!\n onBeforeUnmount(() => {\n const editor = editorRef.value;\n if (editor == null) return;\n\n editor.destroy();\n });\n\n // 编辑器回调函数\n // 编辑器创建完毕时的回调函数\n const handleCreated = (editor: IDomEditor) => {\n editorRef.value = editor; // 记录 editor 实例,重要!\n // 配置菜单\n // setTimeout(() => {\n // const toolbar = DomEditor.getToolbar(editor);\n // const curToolbarConfig = toolbar?.getConfig();\n // console.log(curToolbarConfig?.toolbarKeys); // 当前菜单排序和分组\n // }, 3000);\n };\n // 编辑器内容、选区变化时的回调函数\n const handleChange = (editor: IDomEditor) => {\n // console.log('change:', editor.getHtml());\n const html = editor.getHtml();\n // wangEditor初始值抛空字符串给后台\n const emitValue = html === '<p><br></p>' ? '' : html;\n emit('change', emitValue);\n };\n // 编辑器销毁时的回调函数。调用 editor.destroy() 即可销毁编辑器\n const handleDestroyed = (_editor: IDomEditor) => {\n // console.log('destroyed', _editor);\n };\n // 编辑器 focus 时的回调函数\n const handleFocus = (_editor: IDomEditor) => {\n // console.log('focus', _editor);\n };\n // 编辑器 blur 时的回调函数。\n const handleBlur = (_editor: IDomEditor) => {\n // console.log('blur', _editor);\n };\n // 自定义编辑器 alert\n const customAlert = (info: string, type: string) => {\n // eslint-disable-next-line no-alert\n alert(`【自定义提示】${type} - ${info}`);\n };\n // 自定义粘贴。可阻止编辑器的默认粘贴,实现自己的粘贴逻辑\n const customPaste = (\n editor: IDomEditor,\n event: ClipboardEvent,\n callback: (_n: boolean) => void,\n ) => {\n // 返回值(注意,vue 事件的返回值,不能用 return)\n // callback(false); // 返回 false ,阻止默认粘贴行为\n callback(true); // 返回 true ,继续默认的粘贴行为\n };\n\n // 插入文本\n const insertText = (str: string) => {\n const editor = editorRef.value;\n if (editor == null) return;\n\n editor.insertText(str);\n };\n\n // 获取非格式化的 html\n const printHtml = () => {\n const editor = editorRef.value;\n if (editor == null) return;\n console.log(editor.getHtml());\n };\n\n // 禁用编辑器\n const disable = () => {\n const editor = editorRef.value;\n if (editor == null) return;\n editor.disable();\n };\n\n // 取消禁用编辑器\n const enable = () => {\n const editor = editorRef.value;\n if (editor == null) return;\n editor.enable();\n };\n\n onMounted(() => {\n // 监听值变化赋值\n watch(\n () => props.value,\n (newVal, oldVal) => {\n if (\n newVal !== oldVal &&\n (typeof props.value === 'string' || newVal === null)\n ) {\n if (newVal === null) {\n valueHtml.value = '';\n } else {\n valueHtml.value = newVal as string;\n }\n }\n },\n { immediate: true },\n );\n\n // 监听disabled禁用\n watch(\n () => props.disabled,\n (newVal, oldVal) => {\n if (newVal !== oldVal) {\n if (newVal === true) {\n disable();\n } else {\n enable();\n }\n }\n },\n { immediate: true },\n );\n });\n\n return {\n ns,\n editorRef,\n mode: 'default',\n valueHtml,\n toolbarConfig,\n editorConfig,\n handleCreated,\n handleChange,\n handleDestroyed,\n handleFocus,\n handleBlur,\n customAlert,\n customPaste,\n insertText,\n printHtml,\n disable,\n enable,\n };\n },\n render() {\n return (\n <div class={this.ns.b()}>\n <div style='border: 1px solid #ccc; margin-top: 10px'>\n <Toolbar\n editor={this.editorRef}\n default-config={this.toolbarConfig}\n mode={this.mode}\n style='border-bottom: 1px solid #ccc'\n />\n <Editor\n v-model={this.valueHtml}\n default-config={this.editorConfig}\n mode={this.mode}\n style='height: 400px; overflow-y: hidden'\n onOnCreated={this.handleCreated}\n onOnChange={this.handleChange}\n onOnDestroyed={this.handleDestroyed}\n onOnFocus={this.handleFocus}\n onOnBlur={this.handleBlur}\n oncustomAlert={this.customAlert}\n oncustomPaste={this.customPaste}\n />\n </div>\n </div>\n );\n },\n});\n\nexport default IBizHtml;\n"],"names":["IBizHtml","exports","defineComponent","name","props","getHtmlProps","emits","getEditorEmits","setup","emit","ns","useNamespace","c","controller","valueHtml","ref","editorRef","watch","newVal","headers","Authorization","getCookie","CoreConst","uploadUrl","urls","url","downloadUrl","immediate","deep","customParseLinkUrl","file","toolbarConfig","progress","res","MENU_CONF","uploadImage","server","err","fieldName","maxFileSize","insertFn","alt","maxNumberOfFiles","customCheckLinkFn","withCredentials","editor","onSuccess","handleChange","onFailed","html","onError","console","handleFocus","_editor","handleBlur","customInsert","customAlert","info","type","customPaste","event","callback","insertLink","str","checkLink","printHtml","editLink","disable","onBeforeUnmount","onMounted","handleCreated","value","oldVal","emitValue","enable","editorConfig","alert","handleDestroyed","log","$event"],"mappings":"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"}