@ibiz-template/vue3-components 0.4.4 → 0.4.5

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 (59) hide show
  1. package/dist/chart-ImL2qyp9.js +0 -1
  2. package/dist/ibiz-markdown-editor-BQsiQfa2.js +0 -1
  3. package/dist/index-UNZ1dtt_.js +0 -1
  4. package/dist/index-Ul84JXar.js +0 -1
  5. package/dist/index-zzHHP33g.js +13 -0
  6. package/dist/index.min.css +1 -1
  7. package/dist/index.system.min.js +1 -2
  8. package/dist/map-chart-7nfIdU3w.js +0 -1
  9. package/dist/wang-editor-f4440Xvw.js +0 -1
  10. package/dist/{xlsx-util-5UOUTynl.js → xlsx-util-FO177Hj_.js} +1 -2
  11. package/es/common/data-import2/data-import2.d.ts +29 -6
  12. package/es/common/data-import2/data-import2.mjs +19 -13
  13. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.mjs +2 -2
  14. package/es/control/tree/tree.mjs +22 -10
  15. package/es/index.mjs +0 -1
  16. package/es/panel-component/index.d.ts +0 -1
  17. package/es/panel-component/index.mjs +2 -4
  18. package/lib/common/data-import2/data-import2.cjs +19 -13
  19. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.cjs +1 -1
  20. package/lib/control/tree/tree.cjs +21 -9
  21. package/lib/index.cjs +15 -17
  22. package/lib/panel-component/index.cjs +29 -32
  23. package/package.json +7 -7
  24. package/dist/chart-ImL2qyp9.js.map +0 -1
  25. package/dist/ibiz-markdown-editor-BQsiQfa2.js.map +0 -1
  26. package/dist/index-ErDi07y2.js +0 -14
  27. package/dist/index-ErDi07y2.js.map +0 -1
  28. package/dist/index-UNZ1dtt_.js.map +0 -1
  29. package/dist/index-Ul84JXar.js.map +0 -1
  30. package/dist/index.system.min.js.map +0 -1
  31. package/dist/map-chart-7nfIdU3w.js.map +0 -1
  32. package/dist/wang-editor-f4440Xvw.js.map +0 -1
  33. package/dist/xlsx-util-5UOUTynl.js.map +0 -1
  34. package/es/panel-component/panel-container-group/index.d.ts +0 -28
  35. package/es/panel-component/panel-container-group/index.mjs +0 -20
  36. package/es/panel-component/panel-container-group/panel-container-group.controller.d.ts +0 -31
  37. package/es/panel-component/panel-container-group/panel-container-group.controller.mjs +0 -35
  38. package/es/panel-component/panel-container-group/panel-container-group.css +0 -1
  39. package/es/panel-component/panel-container-group/panel-container-group.d.ts +0 -28
  40. package/es/panel-component/panel-container-group/panel-container-group.mjs +0 -107
  41. package/es/panel-component/panel-container-group/panel-container-group.provider.d.ts +0 -15
  42. package/es/panel-component/panel-container-group/panel-container-group.provider.mjs +0 -21
  43. package/es/panel-component/panel-container-group/panel-container-group.state.d.ts +0 -12
  44. package/es/panel-component/panel-container-group/panel-container-group.state.mjs +0 -7
  45. package/es/panel-component/panel-tab-page/index.d.ts +0 -23
  46. package/es/panel-component/panel-tab-page/index.mjs +0 -12
  47. package/es/panel-component/panel-tab-page/panel-tab-page.d.ts +0 -25
  48. package/es/panel-component/panel-tab-page/panel-tab-page.mjs +0 -62
  49. package/es/panel-component/panel-tab-page/panel-tab-page.provider.d.ts +0 -13
  50. package/es/panel-component/panel-tab-page/panel-tab-page.provider.mjs +0 -21
  51. package/lib/panel-component/panel-container-group/index.cjs +0 -27
  52. package/lib/panel-component/panel-container-group/panel-container-group.cjs +0 -109
  53. package/lib/panel-component/panel-container-group/panel-container-group.controller.cjs +0 -37
  54. package/lib/panel-component/panel-container-group/panel-container-group.css +0 -1
  55. package/lib/panel-component/panel-container-group/panel-container-group.provider.cjs +0 -23
  56. package/lib/panel-component/panel-container-group/panel-container-group.state.cjs +0 -9
  57. package/lib/panel-component/panel-tab-page/index.cjs +0 -17
  58. package/lib/panel-component/panel-tab-page/panel-tab-page.cjs +0 -64
  59. package/lib/panel-component/panel-tab-page/panel-tab-page.provider.cjs +0 -23
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-UNZ1dtt_.js","sources":["../src/locale/en/index.ts"],"sourcesContent":["export default {\n name: 'zhangsan',\n};\n"],"names":["index","exports"],"mappings":"sEACe,IAAAA,EAAAC,EAAA,UAAA,CACb,KAAM,UACR,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Ul84JXar.js","sources":["../src/locale/zh-CN/index.ts"],"sourcesContent":["export default {\n name: '张三',\n};\n"],"names":["index","exports"],"mappings":"sEACe,IAAAA,EAAAC,EAAA,UAAA,CACb,KAAM,cACR,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.system.min.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"map-chart-7nfIdU3w.js","sources":["../src/common/map-chart/map-chart.util.ts","../src/common/map-chart/map-json.ts","../src/common/map-chart/map-manager.ts","../src/common/map-chart/map-chart.tsx"],"sourcesContent":["/** 渐变颜色集合 */\nexport const GradientColors = ['#90d1e7', '#fff600', '#ff5200'];\n\nexport const defaultOpts = {\n /** true地图code标识使用字符串,false使用数字 */\n strAreaCode: false,\n /** 热力图配置 */\n visualMap: {\n /** 两端的文本,如 ['高', '低'] */\n text: ['高', '低'],\n /** 底部代表的值 */\n min: 0,\n /** 顶部代表的值 */\n max: 100,\n /** 热力图渐变颜色数组 */\n rangeColor: GradientColors,\n },\n /** 区块颜色 */\n areaColor: '#87cefa',\n /** 区块边界颜色 */\n areaBorderColor: '#FFF',\n /** 悬浮时区块颜色 */\n hoverAreaColor: '#fbdb2f',\n /** 点图标 */\n pointSymbol: 'pin',\n /** 地图json数据基础路径 */\n jsonBaseUrl: './assets/json/map',\n /** 默认打开的区域编码 */\n defaultAreaCode: 100000 as string | number,\n};\n\nexport type MapOptions = typeof defaultOpts;\n","export async function getJsonUrl(\n baseUrl: string,\n code: string | number,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<any> {\n const res = await ibiz.net.axios({\n url: `${baseUrl}/${code}.json`,\n });\n return res.data;\n}\n","/* eslint-disable no-unused-vars */\nimport { registerMap as register, EChartsType, init } from 'echarts';\nimport { ComputedRef, onMounted, ref } from 'vue';\nimport { MapOptions } from './map-chart.util';\nimport { getJsonUrl } from './map-json';\n\n/**\n * 使用echarts地图\n * @author lxm\n * @date 2023-04-06 12:00:07\n * @export\n * @param {(name: string) => IData} calcEchartsOpts 计算echarts的Options\n * @param {(name: string, e: IData) => void} emit 事件回调\n * @return {*}\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function useMapManager(\n opts: ComputedRef<MapOptions>,\n calcEchartsOpts: (name: string) => IData,\n emit: (name: string, e: IData) => void,\n) {\n const mapInfos = new Map<string, IData>();\n\n const currentName = ref<string>('');\n\n const historyNames = ref<string[]>([]);\n\n let chart: EChartsType;\n const chartRef = ref();\n\n const parseJson = (json: IData) => {\n const info: IData = {\n cityNames: {},\n noChild: json.features.length === 1,\n };\n json.features.forEach((item: IData) => {\n const { adcode, name } = item.properties;\n info.cityNames[adcode] = name;\n });\n return info;\n };\n\n const registerMap = async (name: string) => {\n if (mapInfos.has(name)) {\n return;\n }\n const json = await getJsonUrl(opts.value.jsonBaseUrl, name);\n mapInfos.set(name, parseJson(json));\n register(name, json);\n };\n\n const getCityName = (mapName: string | number) => {\n const info = mapInfos.get(currentName.value);\n if (info) {\n return info.cityNames[mapName];\n }\n };\n\n const refresh = () => {\n if (currentName.value) {\n const options = calcEchartsOpts(currentName.value);\n chart.setOption(options);\n chart.resize();\n }\n };\n\n const changeMap = async (name: string | number, isInit: boolean = false) => {\n if (!isInit) {\n emit('mapChange', {\n areaCode: opts.value.strAreaCode ? `${name}` : Number(name),\n });\n }\n const strName = `${name}`;\n\n if (!mapInfos.has(strName)) {\n await registerMap(strName);\n }\n currentName.value = strName;\n historyNames.value.push(strName);\n refresh();\n };\n\n const goBack = () => {\n // 一个时只有当前的name,不能后退。\n if (historyNames.value.length > 1) {\n historyNames.value.pop(); // 先删除当前地图的name\n const name = historyNames.value.pop(); // 获取上一个地图的name\n changeMap(name!);\n }\n };\n\n onMounted(() => {\n chart = init(chartRef.value);\n\n window.addEventListener('resize', () => {\n chart?.resize();\n });\n\n chart.on('click', params => {\n // 散点点击事件\n if (params.componentType === 'series') {\n if (params.seriesType === 'scatter') {\n emit('pointClick', params.data as IData);\n return;\n }\n if (params.seriesType === 'map') {\n if (params.data) {\n emit('areaClick', params.data as IData);\n }\n // 禁止切换同一个地图,到最下级的时候会出现这种情况\n if (params.name !== currentName.value) {\n changeMap(params.name);\n }\n }\n }\n });\n\n // 散点悬浮size变大\n chart.on('mouseover', function (params) {\n if (params.componentType === 'series') {\n if (params.seriesType === 'scatter') {\n const dataIndex = params.dataIndex;\n const option: IData = chart.getOption();\n const seriesData = option.series[params.seriesIndex!].data;\n const originSize = option.series[params.seriesIndex!].symbolSize;\n // 修改悬浮的数据点大小\n seriesData[dataIndex].symbolSize = originSize + 10;\n\n // 刷新图表\n chart.setOption(option);\n }\n }\n });\n chart.on('mouseout', function (params) {\n if (params.componentType === 'series') {\n if (params.seriesType === 'scatter') {\n const dataIndex = params.dataIndex;\n const option: IData = chart.getOption();\n const seriesData = option.series[params.seriesIndex!].data;\n\n // 恢复原始的数据点大小\n delete seriesData[dataIndex].symbolSize;\n\n // 刷新图表\n chart.setOption(option);\n }\n }\n });\n });\n\n return {\n chartRef,\n historyNames,\n currentName,\n changeMap,\n getCityName,\n goBack,\n refresh,\n };\n}\n","/* eslint-disable eqeqeq */\nimport {\n defineComponent,\n onMounted,\n PropType,\n computed,\n toRefs,\n watch,\n} from 'vue';\nimport { isNil, mergeDeepWithKey } from 'ramda';\nimport { useNamespace } from '@ibiz-template/vue3-util';\nimport { IMapData } from '@ibiz-template/runtime';\nimport { defaultOpts, MapOptions } from './map-chart.util';\nimport { useMapManager } from './map-manager';\nimport './map-chart.scss';\n\nexport const IBizMapChart = defineComponent({\n name: 'IBizMapChart',\n props: {\n areaData: {\n type: Array<IMapData>,\n },\n pointData: {\n type: Array<IMapData>,\n },\n options: {\n type: Object as PropType<Partial<MapOptions>>,\n default: () => ({}),\n },\n },\n setup(props, { emit }) {\n const ns = useNamespace('map-chart');\n const options = computed<MapOptions>(() => {\n // 后一个的undefined不覆盖\n return mergeDeepWithKey(\n (_key, x, z) => {\n return isNil(z) ? x : z;\n },\n defaultOpts,\n props.options,\n );\n });\n\n const findData = (id: string, type: 'area' | 'point') => {\n if (type === 'area' && props.areaData) {\n return props.areaData.find(item => item._id === id);\n }\n if (type === 'point' && props.pointData) {\n return props.pointData.find(item => item._id === id);\n }\n };\n\n const { chartRef, historyNames, changeMap, getCityName, goBack, refresh } =\n useMapManager(\n options,\n mapName => {\n const {\n visualMap,\n pointSymbol,\n areaColor,\n hoverAreaColor,\n areaBorderColor,\n } = options.value;\n const areaData = props.areaData || [];\n const pointData = props.pointData || [];\n\n const result: IData = {\n geo: {\n map: mapName,\n },\n tooltip: {\n trigger: 'item',\n // 全局的tooltip样式\n textStyle: {\n color: '#fff',\n fontSize: 12,\n },\n backgroundColor: 'rgba(0, 0, 0, 0.47)',\n borderWidth: 0,\n extraCssText: 'backdrop-filter: blur(3px);',\n },\n visualMap: {\n min: visualMap.min,\n max: visualMap.max,\n text: visualMap.text,\n realtime: false,\n hoverLink: false,\n inRange: {\n color: visualMap.rangeColor,\n },\n },\n series: [\n // 地图区块序列\n {\n type: 'map',\n map: mapName,\n // 地图JSON里和name匹配的属性名称\n nameProperty: 'adcodeStr',\n itemStyle: {\n // 默认区域颜色\n areaColor,\n borderColor: areaBorderColor,\n borderWidth: 2,\n },\n // 悬浮样式\n emphasis: {\n itemStyle: {\n areaColor: hoverAreaColor,\n },\n },\n tooltip: {\n formatter: (params: IData) => {\n if (!params.data) {\n // 没有数据的时候不显示tooltip\n return;\n }\n const find = findData(params.data._id, 'area')!;\n if (!find) {\n return;\n }\n return find._tooltip;\n },\n },\n label: {\n // 区块文字固定显示\n show: true,\n // 字体样式\n color: '#000000',\n fontSize: 14,\n formatter: (params: IData) => {\n return getCityName(params.name);\n },\n },\n select: {\n disabled: true,\n },\n data: areaData.map(item => ({\n name: `${item._areaCode}`,\n value: item._value,\n _id: item._id,\n })),\n },\n // 地图散点序列\n {\n type: 'scatter',\n coordinateSystem: 'geo',\n symbol: pointSymbol,\n symbolSize: 20,\n visualMap: false,\n itemStyle: {\n color: '#FF1D00',\n },\n label: {\n show: true,\n // 字体样式\n color: '#000000',\n fontSize: 14,\n textShadowBlur: 0,\n formatter: (params: IData) => {\n const find = findData(params.data._id, 'point')!;\n return find?._text;\n },\n // 偏移\n position: 'left',\n offset: [10, -15],\n },\n tooltip: {\n formatter: (params: IData) => {\n const find = findData(params.data._id, 'point')!;\n return find?._tooltip;\n },\n },\n data: pointData.map(item => {\n return {\n _id: item._id,\n symbol: item._symbol\n ? `image://${item._symbol}`\n : undefined,\n value: [Number(item._longitude), Number(item._latitude)],\n // 每个点逃离visualMap\n visualMap: false,\n };\n }),\n },\n ],\n };\n return result;\n },\n (name, e) => {\n switch (name) {\n case 'mapChange':\n emit('mapChange', e);\n break;\n case 'pointClick':\n emit('pointClick', { data: findData(e._id, 'point') });\n break;\n case 'areaClick':\n emit('areaClick', { data: findData(e._id, 'area') });\n break;\n default:\n break;\n }\n },\n );\n\n onMounted(() => {\n changeMap(options.value.defaultAreaCode, true);\n });\n\n const { areaData, pointData } = toRefs(props);\n watch([areaData, pointData], () => {\n refresh();\n });\n\n return { ns, chartRef, historyNames, goBack };\n },\n render() {\n return (\n <div class={this.ns.b()}>\n <div class={this.ns.e('chart')} ref='chartRef'></div>\n {this.historyNames.length > 1 && (\n <div\n class={this.ns.e('goback')}\n onClick={() => {\n this.goBack();\n }}\n >\n 返回\n </div>\n )}\n </div>\n );\n },\n});\n\nexport default IBizMapChart;\n"],"names":["defaultOpts","getJsonUrl","baseUrl","code","useMapManager","opts","calcEchartsOpts","emit","mapInfos","currentName","ref","historyNames","chart","chartRef","parseJson","json","info","item","adcode","name","registerMap","register","getCityName","mapName","refresh","options","changeMap","isInit","strName","goBack","onMounted","init","params","dataIndex","option","seriesData","originSize","IBizMapChart","defineComponent","props","areaData","type","Array","pointData","Object","default","setup","ns","useNamespace","computed","mergeDeepWithKey","_key","x","z","findData","id","visualMap","pointSymbol","areaColor","hoverAreaColor","areaBorderColor","areaData2","geo","map","tooltip","textStyle","color","fontSize","backgroundColor","borderWidth","extraCssText","min","max","text","realtime","hoverLink","inRange","nameProperty","borderColor","emphasis","itemStyle","find","label","show","select","disabled","coordinateSystem","symbol","symbolSize","textShadowBlur","position","offset","pointData2","_id","value","e","data","watch","toRefs","render","_createVNode","_createTextVNode","exports"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"wang-editor-f4440Xvw.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 { isNil } from 'ramda';\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 editor.setHtml(valueHtml.value);\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 if (\n emitValue === props.value ||\n (emitValue === '' && isNil(props.value))\n ) {\n return;\n }\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 emit('focus');\n };\n // 编辑器 blur 时的回调函数。\n const handleBlur = (_editor: IDomEditor) => {\n // console.log('blur', _editor);\n emit('blur');\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":["name","IBizHtml","exports","defineComponent","props","emits","getEditorEmits","setup","emit","c","useNamespace","editorRef","shallowRef","getCookie","CoreConst","downloadUrl","ref","watch","headers","newVal","Authorization","urls","customCheckLinkFn","text","url","uploadUrl","customParseLinkUrl","toolbarConfig","editorConfig","file","progress","res","uploadImage","err","fieldName","insertFn","alt","maxNumberOfFiles","allowedFileTypes","onBeforeUnmount","onProgress","editor","onSuccess","valueHtml","onFailed","html","emitValue","onError","isNil","handleDestroyed","_editor","handleFocus","handleBlur","insertLink","checkLink","info","type","customPaste","event","callback","editLink","str","printHtml","disable","value","onMounted","oldVal","handleChange","getHtml","enable","ns","alert","customAlert","insertText","_createVNode","console","Editor","$event"],"mappings":"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"}