@ibiz-template/vue3-components 0.7.27 → 0.7.28-alpha.0

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 (121) hide show
  1. package/dist/{index-0TO7mjm5.js → index-HNRMy1_g.js} +1 -1
  2. package/dist/index-QB7iGpIB.js +4 -0
  3. package/dist/{index-g6o3vQXo.js → index-xa8K5AHD.js} +1 -1
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/wang-editor-YqnK5uQU.js +1 -0
  7. package/dist/{xlsx-util-qdXxbg2A.js → xlsx-util-nADTbeWP.js} +1 -1
  8. package/es/control/dashboard/custom-dashboard-container/custom-dashboard-container.d.ts +0 -1
  9. package/es/control/dashboard/dashboard-design/dashboard-design.mjs +3 -3
  10. package/es/control/drtab/drtab-control.util.mjs +1 -1
  11. package/es/control/grid/grid/grid-control.util.d.ts +0 -2
  12. package/es/control/grid/grid/grid-control.util.mjs +9 -72
  13. package/es/control/grid/grid/grid.css +1 -1
  14. package/es/control/grid/grid/grid.d.ts +0 -2
  15. package/es/control/grid/grid/grid.mjs +1 -7
  16. package/es/control/grid/grid/index.d.ts +0 -2
  17. package/es/control/report-panel/report-panel.mjs +5 -0
  18. package/es/control/toolbar/toolbar.css +1 -1
  19. package/es/control/toolbar/toolbar.mjs +144 -8
  20. package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.d.ts +1 -1
  21. package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.mjs +2 -9
  22. package/es/editor/html/html-editor.controller.d.ts +88 -0
  23. package/es/editor/html/html-editor.controller.mjs +169 -6
  24. package/es/editor/html/wang-editor/component/emoji/emoji.css +1 -0
  25. package/es/editor/html/wang-editor/component/emoji/emoji.d.ts +17 -0
  26. package/es/editor/html/wang-editor/component/emoji/emoji.mjs +42 -0
  27. package/es/editor/html/wang-editor/component/index.d.ts +1 -0
  28. package/es/editor/html/wang-editor/component/index.mjs +3 -0
  29. package/es/editor/html/wang-editor/element/emoji.d.ts +7 -0
  30. package/es/editor/html/wang-editor/element/emoji.mjs +22 -0
  31. package/es/editor/html/wang-editor/element/index.d.ts +1 -0
  32. package/es/editor/html/wang-editor/element/index.mjs +3 -0
  33. package/es/editor/html/wang-editor/index.d.ts +4 -0
  34. package/es/editor/html/wang-editor/index.mjs +11 -0
  35. package/es/editor/html/wang-editor/module/ai-module.d.ts +67 -0
  36. package/es/editor/html/wang-editor/module/ai-module.mjs +76 -0
  37. package/es/editor/html/wang-editor/module/emoji-module.d.ts +7 -0
  38. package/es/editor/html/wang-editor/module/emoji-module.mjs +125 -0
  39. package/es/editor/html/wang-editor/module/index.d.ts +2 -0
  40. package/es/editor/html/wang-editor/module/index.mjs +4 -0
  41. package/es/editor/html/wang-editor/plugin/index.d.ts +1 -0
  42. package/es/editor/html/wang-editor/plugin/index.mjs +3 -0
  43. package/es/editor/html/wang-editor/plugin/plugin.d.ts +7 -0
  44. package/es/editor/html/wang-editor/plugin/plugin.mjs +23 -0
  45. package/es/editor/html/wang-editor/wang-editor.css +1 -1
  46. package/es/editor/html/wang-editor/wang-editor.mjs +7 -7
  47. package/es/editor/span/span/span.mjs +2 -2
  48. package/es/editor/text-box/input/input.mjs +2 -2
  49. package/es/locale/en/index.d.ts +1 -0
  50. package/es/locale/en/index.mjs +2 -1
  51. package/es/locale/zh-CN/index.d.ts +1 -0
  52. package/es/locale/zh-CN/index.mjs +2 -1
  53. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/h.mjs +89 -0
  54. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/helpers/attachto.mjs +47 -0
  55. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/hooks.mjs +1 -0
  56. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/htmldomapi.mjs +115 -0
  57. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/index.mjs +18 -0
  58. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/init.mjs +376 -0
  59. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/is.mjs +9 -0
  60. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/jsx.mjs +64 -0
  61. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/attributes.mjs +59 -0
  62. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/class.mjs +28 -0
  63. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/dataset.mjs +42 -0
  64. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/eventlisteners.mjs +85 -0
  65. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/props.mjs +24 -0
  66. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/style.mjs +115 -0
  67. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/thunk.mjs +52 -0
  68. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/tovnode.mjs +62 -0
  69. package/es/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/vnode.mjs +6 -0
  70. package/lib/control/dashboard/dashboard-design/dashboard-design.cjs +3 -3
  71. package/lib/control/drtab/drtab-control.util.cjs +1 -1
  72. package/lib/control/grid/grid/grid-control.util.cjs +9 -72
  73. package/lib/control/grid/grid/grid.cjs +1 -7
  74. package/lib/control/grid/grid/grid.css +1 -1
  75. package/lib/control/report-panel/report-panel.cjs +5 -0
  76. package/lib/control/toolbar/toolbar.cjs +144 -8
  77. package/lib/control/toolbar/toolbar.css +1 -1
  78. package/lib/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.cjs +1 -8
  79. package/lib/editor/html/html-editor.controller.cjs +169 -6
  80. package/lib/editor/html/wang-editor/component/emoji/emoji.cjs +44 -0
  81. package/lib/editor/html/wang-editor/component/emoji/emoji.css +1 -0
  82. package/lib/editor/html/wang-editor/component/index.cjs +7 -0
  83. package/lib/editor/html/wang-editor/element/emoji.cjs +24 -0
  84. package/lib/editor/html/wang-editor/element/index.cjs +7 -0
  85. package/lib/editor/html/wang-editor/index.cjs +19 -0
  86. package/lib/editor/html/wang-editor/module/ai-module.cjs +78 -0
  87. package/lib/editor/html/wang-editor/module/emoji-module.cjs +127 -0
  88. package/lib/editor/html/wang-editor/module/index.cjs +9 -0
  89. package/lib/editor/html/wang-editor/plugin/index.cjs +7 -0
  90. package/lib/editor/html/wang-editor/plugin/plugin.cjs +25 -0
  91. package/lib/editor/html/wang-editor/wang-editor.cjs +7 -7
  92. package/lib/editor/html/wang-editor/wang-editor.css +1 -1
  93. package/lib/editor/span/span/span.cjs +1 -1
  94. package/lib/editor/text-box/input/input.cjs +1 -1
  95. package/lib/locale/en/index.cjs +2 -1
  96. package/lib/locale/zh-CN/index.cjs +2 -1
  97. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/h.cjs +93 -0
  98. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/helpers/attachto.cjs +49 -0
  99. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/hooks.cjs +2 -0
  100. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/htmldomapi.cjs +117 -0
  101. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/index.cjs +42 -0
  102. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/init.cjs +378 -0
  103. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/is.cjs +12 -0
  104. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/jsx.cjs +67 -0
  105. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/attributes.cjs +61 -0
  106. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/class.cjs +30 -0
  107. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/dataset.cjs +44 -0
  108. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/eventlisteners.cjs +87 -0
  109. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/props.cjs +26 -0
  110. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/modules/style.cjs +117 -0
  111. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/thunk.cjs +54 -0
  112. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/tovnode.cjs +64 -0
  113. package/lib/node_modules/.pnpm/snabbdom@3.5.1/node_modules/snabbdom/build/vnode.cjs +8 -0
  114. package/package.json +6 -5
  115. package/dist/index-Dq21zXhV.js +0 -4
  116. package/dist/wang-editor-XpJH4SXt.js +0 -1
  117. package/es/editor/html/wang-editor/ai/ai-modules.d.ts +0 -10
  118. package/es/editor/html/wang-editor/ai/ai-modules.mjs +0 -32
  119. package/lib/editor/html/wang-editor/ai/ai-modules.cjs +0 -34
  120. /package/es/node_modules/.pnpm/{@ibiz-template_core@0.7.27_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.28-alpha.0_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs +0 -0
  121. /package/lib/node_modules/.pnpm/{@ibiz-template_core@0.7.27_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.28-alpha.0_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs +0 -0
@@ -60,11 +60,20 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
60
60
  var _a;
61
61
  const c = vue3Util.useControlController((...args) => new runtime.ToolbarController(...args));
62
62
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
63
+ const ns2 = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase(), "-actions"));
63
64
  const btnSize = vue.ref("default");
64
65
  const toolbarStyle = (_a = c.model.toolbarStyle) == null ? void 0 : _a.toLowerCase();
65
66
  const handleClick = async (item, event, params) => {
66
67
  await c.onItemClick(item, event, params);
67
68
  };
69
+ const handleActionClick = async (item, event, params) => {
70
+ const tempItem = {};
71
+ Object.assign(tempItem, {
72
+ ...item,
73
+ itemType: item.detailType
74
+ });
75
+ await handleClick(tempItem, event, params);
76
+ };
68
77
  const renderExtraButtons = (extraButtons) => {
69
78
  return extraButtons.map((button) => {
70
79
  let _slot;
@@ -184,8 +193,128 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
184
193
  }
185
194
  });
186
195
  };
196
+ const renderActionButton = (detail) => {
197
+ if (c.state.buttonsState[detail.id].visible) {
198
+ let _slot4;
199
+ return [vue.createVNode(vue.resolveComponent("el-button"), {
200
+ "title": ibiz.env.enableTitle ? detail.caption : void 0,
201
+ "size": btnSize.value,
202
+ "class": [calcCssName(detail)],
203
+ "loading": c.state.buttonsState[detail.id].loading,
204
+ "disabled": c.state.buttonsState[detail.id].disabled,
205
+ "onClick": (e) => handleActionClick(detail, e)
206
+ }, _isSlot(_slot4 = btnContent(detail)) ? _slot4 : {
207
+ default: () => [_slot4]
208
+ })];
209
+ }
210
+ return null;
211
+ };
212
+ const renderDropdownItem = (detail) => {
213
+ if (c.state.buttonsState[detail.id].visible) {
214
+ let _slot5;
215
+ const disabled = c.state.buttonsState[detail.id].disabled;
216
+ return vue.createVNode(vue.resolveComponent("el-dropdown-item"), {
217
+ "class": [ns2.be("dropdown-popper", "dropdown-item"), ns2.is("disabled", disabled)]
218
+ }, _isSlot(_slot5 = renderActionButton(detail)) ? _slot5 : {
219
+ default: () => [_slot5]
220
+ });
221
+ }
222
+ return null;
223
+ };
224
+ const renderActionGroupItems = (item) => {
225
+ const {
226
+ uiactionGroup
227
+ } = item;
228
+ if (uiactionGroup && uiactionGroup.uiactionGroupDetails) {
229
+ const {
230
+ uiactionGroupDetails
231
+ } = uiactionGroup;
232
+ const enableDropdown = uiactionGroupDetails.length > 0;
233
+ const groupButtonStyle = item.buttonStyle || "";
234
+ return vue.createVNode(vue.resolveComponent("el-dropdown"), {
235
+ "popper-class": [ns2.b("dropdown-popper"), ns2.bm("dropdown-popper", toolbarStyle), ns2.em("dropdown-popper", groupButtonStyle.toLowerCase()), ns2.bm("dropdown-popper", calcCssName(item))]
236
+ }, {
237
+ default: () => renderActionButton(item),
238
+ dropdown: () => {
239
+ let _slot6;
240
+ return enableDropdown && vue.createVNode(vue.resolveComponent("el-dropdown-menu"), null, _isSlot(_slot6 = uiactionGroupDetails.map((detail) => renderDropdownItem(detail))) ? _slot6 : {
241
+ default: () => [_slot6]
242
+ });
243
+ }
244
+ });
245
+ }
246
+ return null;
247
+ };
248
+ const getFirstIndex = (details, index) => {
249
+ const firstItem = details.slice(index, 1);
250
+ if (firstItem[0]) {
251
+ if (c.state.buttonsState[firstItem[0].id].visible) {
252
+ return index;
253
+ }
254
+ return getFirstIndex(details, index + 1);
255
+ }
256
+ return -1;
257
+ };
258
+ const renderActionGroupItemx = (item) => {
259
+ const {
260
+ uiactionGroup
261
+ } = item;
262
+ if (uiactionGroup && uiactionGroup.uiactionGroupDetails) {
263
+ const {
264
+ uiactionGroupDetails
265
+ } = uiactionGroup;
266
+ const firstIndex = getFirstIndex(uiactionGroupDetails, 0);
267
+ if (firstIndex !== -1) {
268
+ const firstItem = uiactionGroupDetails.slice(firstIndex, 1);
269
+ const remainders = uiactionGroupDetails.slice(firstIndex + 1);
270
+ const enableDropdown = remainders.length > 0;
271
+ const groupButtonStyle = item.buttonStyle || "";
272
+ return vue.createVNode(vue.resolveComponent("el-dropdown"), {
273
+ "split-button": enableDropdown,
274
+ "popper-class": [ns2.b("dropdown-popper"), ns2.bm("dropdown-popper", toolbarStyle), ns2.em("dropdown-popper", groupButtonStyle.toLowerCase()), ns2.bm("dropdown-popper", calcCssName(item))]
275
+ }, {
276
+ default: () => renderActionButton(firstItem[0]),
277
+ dropdown: () => {
278
+ let _slot7;
279
+ return enableDropdown && vue.createVNode(vue.resolveComponent("el-dropdown-menu"), null, _isSlot(_slot7 = remainders.map((detail) => renderDropdownItem(detail))) ? _slot7 : {
280
+ default: () => [_slot7]
281
+ });
282
+ }
283
+ });
284
+ }
285
+ }
286
+ return null;
287
+ };
288
+ const renderActionGroupItem = (item) => {
289
+ const {
290
+ uiactionGroup
291
+ } = item;
292
+ if (uiactionGroup && uiactionGroup.uiactionGroupDetails) {
293
+ const {
294
+ uiactionGroupDetails
295
+ } = uiactionGroup;
296
+ return uiactionGroupDetails.map((detail) => vue.createVNode("div", {
297
+ "class": ns2.e("item-deuiaction")
298
+ }, [renderActionButton(detail)]));
299
+ }
300
+ return null;
301
+ };
302
+ const renderActionGroup = (item) => {
303
+ const {
304
+ groupExtractMode
305
+ } = item;
306
+ switch (groupExtractMode) {
307
+ case "ITEMS":
308
+ return renderActionGroupItems(item);
309
+ case "ITEMX":
310
+ return renderActionGroupItemx(item);
311
+ case "ITEM":
312
+ default:
313
+ return renderActionGroupItem(item);
314
+ }
315
+ };
187
316
  const renderToolbarItem = (item) => {
188
- var _a2, _b;
317
+ var _a2, _b, _c;
189
318
  const itemId = item.id;
190
319
  const visible = (_a2 = c.state.buttonsState[itemId]) == null ? void 0 : _a2.visible;
191
320
  const provider = c.itemProviders[itemId];
@@ -216,7 +345,7 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
216
345
  }, null)]);
217
346
  }
218
347
  if (item.itemType === "DEUIACTION") {
219
- let _slot4;
348
+ let _slot8;
220
349
  const actionId = item.uiactionId;
221
350
  const buttonType = (_b = item.buttonStyle) == null ? void 0 : _b.toLowerCase();
222
351
  if (actionId === "exportexcel") {
@@ -252,20 +381,27 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
252
381
  "loading": c.state.buttonsState[itemId].loading,
253
382
  "disabled": c.state.buttonsState[itemId].disabled,
254
383
  "onClick": (e) => handleClick(item, e)
255
- }, _isSlot(_slot4 = btnContent(item)) ? _slot4 : {
256
- default: () => [_slot4]
384
+ }, _isSlot(_slot8 = btnContent(item)) ? _slot8 : {
385
+ default: () => [_slot8]
257
386
  })]);
258
387
  }
259
388
  if (item.itemType === "ITEMS") {
260
- let _slot5;
261
- const groupButtonStyle = item.buttonStyle || "";
389
+ let _slot9;
390
+ const groupItem = item;
391
+ const groupButtonStyle = groupItem.buttonStyle || "";
392
+ if (groupItem.groupExtractMode && groupItem.uiactionGroup) {
393
+ const extractName = "extract-mode-".concat(((_c = groupItem.groupExtractMode) == null ? void 0 : _c.toLowerCase()) || "item");
394
+ return vue.createVNode("div", {
395
+ "class": [ns2.b(), ns2.e(extractName), ns2.em("item", groupButtonStyle.toLowerCase()), calcCssName(item)]
396
+ }, [renderActionGroup(item)]);
397
+ }
262
398
  return vue.createVNode(vue.resolveComponent("el-menu"), {
263
399
  "mode": "horizontal",
264
400
  "class": [ns.e("menu"), ns.em("menu", groupButtonStyle.toLowerCase()), calcCssName(item)],
265
401
  "ellipsis": false,
266
402
  "menu-trigger": "hover"
267
- }, _isSlot(_slot5 = renderSubmenu(item)) ? _slot5 : {
268
- default: () => [_slot5]
403
+ }, _isSlot(_slot9 = renderSubmenu(item)) ? _slot9 : {
404
+ default: () => [_slot9]
269
405
  });
270
406
  }
271
407
  return null;
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-control-toolbar{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;--ibiz-control-toolbar-text-margin:0 0 0 var(--ibiz-spacing-extra-tight);display:flex;align-items:center}.ibiz-control-toolbar__item{display:flex;align-items:center;margin:var(--ibiz-control-toolbar-item-margin);overflow:hidden}.ibiz-control-toolbar__item .el-button{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-control-toolbar-item-padding)}.ibiz-control-toolbar__item .el-button>span{display:flex;align-items:center;justify-content:center;pointer-events:none;font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar__item.is-loading .el-button .ibiz-icon{display:none}.ibiz-control-toolbar__item-separator{color:var(--ibiz-control-toolbar-separator-color)}.ibiz-control-toolbar__item-separator+.ibiz-control-toolbar__item-separator,.ibiz-control-toolbar__item-separator:first-child{display:none}.ibiz-control-toolbar__menu.el-menu{height:var(--ibiz-control-toolbar-menu-height);margin:var(--ibiz-control-toolbar-item-margin);border:none}.ibiz-control-toolbar__menu .el-sub-menu.is-disabled .el-sub-menu__title{opacity:1}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title{display:flex;align-items:center;justify-content:center;padding:0;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary);border-bottom:none;border-radius:var(--ibiz-border-radius-small)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span{display:flex;align-items:center;justify-content:center;font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span{display:flex;align-items:center;justify-content:center;line-height:1}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;--ibiz-control-toolbar-text-margin:0 0 0 var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .el-sub-menu.is-disabled .el-sub-menu__title{opacity:1}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title{padding:0 10px;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu-rawitem{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item{font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item.is-active{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .el-button{justify-content:flex-start;width:100%;padding:0;--el-button-active-bg-color:transparent;--el-button-hover-bg-color:transparent;--el-button-bg-color:transparent;--el-mask-color-extra-light:transparent}
1
+ @charset "UTF-8";.ibiz-control-toolbar{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;--ibiz-control-toolbar-text-margin:0 0 0 var(--ibiz-spacing-extra-tight);display:flex;align-items:center}.ibiz-control-toolbar__item{display:flex;align-items:center;margin:var(--ibiz-control-toolbar-item-margin);overflow:hidden}.ibiz-control-toolbar__item .el-button{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-control-toolbar-item-padding)}.ibiz-control-toolbar__item .el-button>span{display:flex;align-items:center;justify-content:center;pointer-events:none;font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar__item .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar__item.is-loading .el-button .ibiz-icon{display:none}.ibiz-control-toolbar__item-separator{color:var(--ibiz-control-toolbar-separator-color)}.ibiz-control-toolbar__item-separator+.ibiz-control-toolbar__item-separator,.ibiz-control-toolbar__item-separator:first-child{display:none}.ibiz-control-toolbar__menu.el-menu{height:var(--ibiz-control-toolbar-menu-height);margin:var(--ibiz-control-toolbar-item-margin);border:none}.ibiz-control-toolbar__menu .el-sub-menu.is-disabled .el-sub-menu__title{opacity:1}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title{display:flex;align-items:center;justify-content:center;padding:0;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary);border-bottom:none;border-radius:var(--ibiz-border-radius-small)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span{display:flex;align-items:center;justify-content:center;font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span{display:flex;align-items:center;justify-content:center;line-height:1}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;--ibiz-control-toolbar-text-margin:0 0 0 var(--ibiz-spacing-extra-tight);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .el-sub-menu.is-disabled .el-sub-menu__title{opacity:1}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title{padding:0 10px;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu-rawitem{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item{font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item.is-active{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .el-button{justify-content:flex-start;width:100%;padding:0;--el-button-active-bg-color:transparent;--el-button-hover-bg-color:transparent;--el-button-bg-color:transparent;--el-mask-color-extra-light:transparent}.ibiz-control-toolbar-actions{display:flex;margin:var(--ibiz-control-toolbar-item-margin);white-space:normal;visibility:visible}.ibiz-control-toolbar-actions__extract-mode-itemx .el-button-group{display:flex;white-space:normal}.ibiz-control-toolbar-actions__extract-mode-itemx .el-button-group>.el-button{padding:var(--ibiz-spacing-none)}.ibiz-control-toolbar-actions__extract-mode-itemx .el-button-group>.el-button:nth-child(2):focus-visible{outline:0;outline-offset:0}.ibiz-control-toolbar-actions__item-deuiaction{display:flex;align-items:center;margin:var(--ibiz-control-toolbar-item-margin);overflow:hidden}.ibiz-control-toolbar-actions__item-deuiaction:first-child{margin-left:0}.ibiz-control-toolbar-actions__item-deuiaction:last-child{margin-right:0}.ibiz-control-toolbar-actions .el-button>span{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar-actions .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar-actions .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar-actions .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar-actions .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar-actions .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}.ibiz-control-toolbar-actions-dropdown-popper{--el-popover-padding:var(--ibiz-spacing-none);min-width:200px;--ibiz-control-toolbar-actions-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-control-toolbar-actions-dropdown-item-height:36px}.ibiz-control-toolbar-actions-dropdown-popper__dropdown-item{height:var(--ibiz-control-toolbar-actions-dropdown-item-height)}.ibiz-control-toolbar-actions-dropdown-popper.is-disabled{display:none}.ibiz-control-toolbar-actions-dropdown-popper.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list .el-dropdown-menu__item{padding:var(--ibiz-spacing-none)}.ibiz-control-toolbar-actions-dropdown-popper.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list .el-dropdown-menu__item.is-disabled{background-color:transparent;opacity:.25}.ibiz-control-toolbar-actions-dropdown-popper .el-button{--el-button-active-bg-color:transparent;--el-button-hover-bg-color:transparent;--el-button-bg-color:transparent;--el-mask-color-extra-light:transparent;display:block;width:100%;padding:var(--ibiz-control-toolbar-actions-popover-button-padding);margin:var(--ibiz-spacing-none);color:var(--ibiz-color-primary-text);text-align:left;background-color:transparent;border-radius:0}.ibiz-control-toolbar-actions-dropdown-popper .el-button:hover{color:var(--ibiz-color-primary-text);background-color:transparent}.ibiz-control-toolbar-actions-dropdown-popper .el-button>span{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar-actions-dropdown-popper .el-button>span .ibiz-toolbar-item-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height)}.ibiz-control-toolbar-actions-dropdown-popper .el-button>span .ibiz-toolbar-item-icon .ibiz-icon{display:flex;align-items:center;justify-content:center}.ibiz-control-toolbar-actions-dropdown-popper .el-button>span .ibiz-toolbar-item-icon i{font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar-actions-dropdown-popper .el-button>span .ibiz-toolbar-item-icon img{display:inline-block;width:100%;height:100%}.ibiz-control-toolbar-actions-dropdown-popper .el-button>span .ibiz-toolbar-item-icon+.ibiz-toolbar-item-text{margin:var(--ibiz-control-toolbar-text-margin)}
@@ -35,7 +35,6 @@ const IBizEmojiPicker = /* @__PURE__ */ vue.defineComponent({
35
35
  emoji.value = "";
36
36
  visible.value = false;
37
37
  emit("change", "");
38
- console.log("emojiRef", emojiRef.value);
39
38
  emojiRef.value.click();
40
39
  };
41
40
  const onSelect = (val) => {
@@ -45,13 +44,7 @@ const IBizEmojiPicker = /* @__PURE__ */ vue.defineComponent({
45
44
  };
46
45
  vue.watch(() => props.value, (newVal, oldVal) => {
47
46
  if (newVal !== oldVal) {
48
- if (!newVal) {
49
- emoji.value = "";
50
- } else if (Number.isNaN(Number(newVal)) && core.isBase64("".concat(newVal))) {
51
- emoji.value = core.base64ToStr("".concat(newVal));
52
- } else {
53
- emoji.value = newVal.toString();
54
- }
47
+ emoji.value = newVal && core.isEmoji("".concat(newVal)) ? core.base64ToStr(newVal) : newVal;
55
48
  }
56
49
  }, {
57
50
  immediate: true
@@ -1,8 +1,15 @@
1
1
  'use strict';
2
2
 
3
+ var vue = require('vue');
3
4
  var runtime = require('@ibiz-template/runtime');
5
+ var core = require('@ibiz-template/core');
4
6
  var editor = require('@wangeditor/editor');
5
- var aiModules = require('./wang-editor/ai/ai-modules.cjs');
7
+ require('./wang-editor/index.cjs');
8
+ var aiModule = require('./wang-editor/module/ai-module.cjs');
9
+ var emoji = require('./wang-editor/element/emoji.cjs');
10
+ var emojiModule = require('./wang-editor/module/emoji-module.cjs');
11
+ var plugin = require('./wang-editor/plugin/plugin.cjs');
12
+ var emoji$1 = require('./wang-editor/component/emoji/emoji.cjs');
6
13
 
7
14
  "use strict";
8
15
  var __defProp = Object.defineProperty;
@@ -45,9 +52,55 @@ class HtmlEditorController extends runtime.EditorController {
45
52
  * @type {boolean}
46
53
  */
47
54
  __publicField(this, "chatCompletion", false);
55
+ /**
56
+ * wangEditor 实例
57
+ *
58
+ * @private
59
+ * @type {IDomEditor}
60
+ * @memberof HtmlEditorController
61
+ */
62
+ __publicField(this, "wangEditor");
63
+ /**
64
+ * 气泡容器
65
+ *
66
+ * @type {(IOverlayPopoverContainer | null)}
67
+ * @memberof HtmlEditorController
68
+ */
69
+ __publicField(this, "overlay", null);
70
+ /**
71
+ * 清除回调
72
+ *
73
+ * @private
74
+ * @memberof HtmlEditorController
75
+ */
76
+ __publicField(this, "cleanup", core.NOOP);
77
+ /**
78
+ * 预定义阻止捕获事件code
79
+ *
80
+ * @private
81
+ * @type {number[]}
82
+ * @memberof HtmlEditorController
83
+ */
84
+ __publicField(this, "presetPreventEvents", [13, 38, 40]);
85
+ /**
86
+ * 预定义阻止冒泡事件code
87
+ *
88
+ * @private
89
+ * @type {number[]}
90
+ * @memberof HtmlEditorController
91
+ */
92
+ __publicField(this, "presetPreventPropEvents", [27]);
48
93
  }
94
+ /**
95
+ * 初始化
96
+ *
97
+ * @protected
98
+ * @return {*} {Promise<void>}
99
+ * @memberof HtmlEditorController
100
+ */
49
101
  async onInit() {
50
102
  await super.onInit();
103
+ this.customRegister();
51
104
  if (this.editorParams) {
52
105
  const { uploadParams, exportParams } = this.editorParams;
53
106
  if (uploadParams) {
@@ -87,14 +140,124 @@ class HtmlEditorController extends runtime.EditorController {
87
140
  }
88
141
  }
89
142
  }
143
+ }
144
+ /**
145
+ * 自定义注册
146
+ *
147
+ * @private
148
+ * @memberof HtmlEditorController
149
+ */
150
+ customRegister() {
90
151
  if (!window.aichartRegister) {
91
- editor.Boot.registerMenu({
92
- key: "aichart",
93
- factory() {
94
- return new aiModules.AIMenu();
152
+ editor.Boot.registerMenu(aiModule.AIMenu);
153
+ window.aichartRegister = true;
154
+ }
155
+ if (!window.customElements.get("emoji-elem")) {
156
+ window.customElements.define("emoji-elem", emoji.EmojiElem);
157
+ }
158
+ if (!window.emojiIsRegiter) {
159
+ editor.Boot.registerModule(emojiModule.EmojiModule);
160
+ window.emojiIsRegiter = true;
161
+ }
162
+ if (!window.wangEditorPlugin) {
163
+ editor.Boot.registerPlugin(plugin.Plugin);
164
+ window.wangEditorPlugin = true;
165
+ }
166
+ }
167
+ /**
168
+ * wangEditor 创建完成
169
+ *
170
+ * @private
171
+ * @param {IDomEditor} editor
172
+ * @memberof HtmlEditorController
173
+ */
174
+ onCreated(editor) {
175
+ this.wangEditor = editor;
176
+ this.listenEvent();
177
+ }
178
+ /**
179
+ * 监听事件
180
+ *
181
+ * @private
182
+ * @memberof HtmlEditorController
183
+ */
184
+ listenEvent() {
185
+ const container = this.wangEditor.getEditableContainer();
186
+ this.wangEditor.on("openEmojiSelect", () => this.openEmojiSelect());
187
+ this.cleanup = core.listenJSEvent(container, "keydown", (event) => {
188
+ var _a;
189
+ if (this.overlay && this.presetPreventEvents.includes(event.keyCode)) {
190
+ event.preventDefault();
191
+ }
192
+ if (this.overlay && this.presetPreventPropEvents.includes(event.keyCode)) {
193
+ event.stopPropagation();
194
+ (_a = this.overlay) == null ? void 0 : _a.dismiss();
195
+ }
196
+ });
197
+ }
198
+ /**
199
+ * 打开表情选择
200
+ *
201
+ * @memberof HtmlEditorController
202
+ */
203
+ async openEmojiSelect() {
204
+ const domSelection = document.getSelection();
205
+ const { focusNode } = domSelection;
206
+ if (focusNode) {
207
+ this.overlay = ibiz.overlay.createPopover(
208
+ (modal) => {
209
+ return vue.h(emoji$1.Emoji, {
210
+ modal
211
+ });
212
+ },
213
+ void 0,
214
+ {
215
+ width: "auto",
216
+ noArrow: true,
217
+ autoClose: true,
218
+ placement: "bottom-start"
95
219
  }
220
+ );
221
+ await this.overlay.present(focusNode.parentNode);
222
+ this.overlay.onWillDismiss().then((result) => {
223
+ var _a;
224
+ const _result = result;
225
+ const item = (_a = _result.data) == null ? void 0 : _a[0];
226
+ if (_result.ok && item) {
227
+ this.addEmojiNode(item);
228
+ }
229
+ this.overlay = null;
96
230
  });
97
- window.aichartRegister = true;
231
+ }
232
+ }
233
+ /**
234
+ * 添加表情
235
+ *
236
+ * @param {string} data
237
+ * @memberof HtmlEditorController
238
+ */
239
+ addEmojiNode(data) {
240
+ const emojiNode = {
241
+ data,
242
+ type: "emoji",
243
+ children: [{ text: "" }]
244
+ };
245
+ this.wangEditor.restoreSelection();
246
+ this.wangEditor.insertNode(emojiNode);
247
+ this.wangEditor.move(1);
248
+ }
249
+ /**
250
+ * 销毁
251
+ *
252
+ * @private
253
+ * @memberof HtmlEditorController
254
+ */
255
+ onDestroyed() {
256
+ if (this.cleanup !== core.NOOP) {
257
+ this.cleanup();
258
+ }
259
+ if (this.overlay) {
260
+ this.overlay.dismiss();
98
261
  }
99
262
  }
100
263
  }
@@ -0,0 +1,44 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var core = require('@ibiz-template/core');
5
+ var vue3Util = require('@ibiz-template/vue3-util');
6
+ require('./emoji.css');
7
+
8
+ "use strict";
9
+ const Emoji = /* @__PURE__ */ vue.defineComponent({
10
+ name: "IBizHtmlEmoji",
11
+ props: {
12
+ modal: {
13
+ type: Object,
14
+ required: true
15
+ }
16
+ },
17
+ setup(props) {
18
+ const ns = vue3Util.useNamespace("html-emoji");
19
+ const onSelect = (val) => {
20
+ const modalData = {
21
+ ok: true,
22
+ data: [{
23
+ emoji: core.strToBase64(val.data)
24
+ }]
25
+ };
26
+ props.modal.dismiss(modalData);
27
+ };
28
+ return {
29
+ ns,
30
+ onSelect
31
+ };
32
+ },
33
+ render() {
34
+ return vue.createVNode("div", {
35
+ "class": this.ns.b()
36
+ }, [vue.createVNode(vue.resolveComponent("iBizEmojiSelect"), {
37
+ "dark": true,
38
+ "continuousList": true,
39
+ "onSelect": this.onSelect
40
+ }, null)]);
41
+ }
42
+ });
43
+
44
+ exports.Emoji = Emoji;
@@ -0,0 +1 @@
1
+ .ibiz-html-emoji{width:auto;height:auto}
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var emoji = require('./emoji/emoji.cjs');
4
+
5
+ "use strict";
6
+
7
+ exports.Emoji = emoji.Emoji;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ "use strict";
4
+ class EmojiElem extends HTMLElement {
5
+ // 监听的 attr
6
+ static get observedAttributes() {
7
+ return ["data-value"];
8
+ }
9
+ attributeChangedCallback(tag, oldValue, newValue) {
10
+ if (tag === "data-value") {
11
+ if (newValue && oldValue === newValue)
12
+ return;
13
+ const shadow = this.attachShadow({ mode: "open" });
14
+ const document = shadow.ownerDocument;
15
+ const box = document.createElement("span");
16
+ box.innerHTML = newValue;
17
+ box.part.add("box");
18
+ box.classList.add("emoji-elem_box");
19
+ shadow.appendChild(box);
20
+ }
21
+ }
22
+ }
23
+
24
+ exports.EmojiElem = EmojiElem;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var emoji = require('./emoji.cjs');
4
+
5
+ "use strict";
6
+
7
+ exports.EmojiElem = emoji.EmojiElem;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ require('./module/index.cjs');
4
+ require('./element/index.cjs');
5
+ require('./plugin/index.cjs');
6
+ require('./component/index.cjs');
7
+ var aiModule = require('./module/ai-module.cjs');
8
+ var emojiModule = require('./module/emoji-module.cjs');
9
+ var emoji = require('./element/emoji.cjs');
10
+ var plugin = require('./plugin/plugin.cjs');
11
+ var emoji$1 = require('./component/emoji/emoji.cjs');
12
+
13
+ "use strict";
14
+
15
+ exports.AIMenu = aiModule.AIMenu;
16
+ exports.EmojiModule = emojiModule.EmojiModule;
17
+ exports.EmojiElem = emoji.EmojiElem;
18
+ exports.Plugin = plugin.Plugin;
19
+ exports.Emoji = emoji$1.Emoji;
@@ -0,0 +1,78 @@
1
+ 'use strict';
2
+
3
+ "use strict";
4
+ var __defProp = Object.defineProperty;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __publicField = (obj, key, value) => {
7
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
+ return value;
9
+ };
10
+ class AIButtonMenu {
11
+ constructor() {
12
+ /**
13
+ *
14
+ *
15
+ * @type {string}
16
+ * @memberof AIButtonMenu
17
+ */
18
+ __publicField(this, "title", "AI");
19
+ /**
20
+ *
21
+ *
22
+ * @type {string}
23
+ * @memberof AIButtonMenu
24
+ */
25
+ __publicField(this, "iconSvg", '<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <text x="0" y="13" font-size="16" fill="black">AI</text></svg>');
26
+ /**
27
+ *
28
+ *
29
+ * @type {string}
30
+ * @memberof AIButtonMenu
31
+ */
32
+ __publicField(this, "tag", "button");
33
+ }
34
+ /**
35
+ * 菜单是否需要激活(如选中加粗文本,“加粗”菜单会激活),用不到则返回 false
36
+ *
37
+ * @return {*} {boolean}
38
+ * @memberof AIButtonMenu
39
+ */
40
+ isActive() {
41
+ return false;
42
+ }
43
+ /**
44
+ * 获取菜单执行时的 value ,用不到则返回空 字符串或 false
45
+ *
46
+ * @return {*} {(string | boolean)}
47
+ * @memberof AIButtonMenu
48
+ */
49
+ getValue() {
50
+ return "aichart";
51
+ }
52
+ /**
53
+ * 菜单是否需要禁用(如选中 H1 ,“引用”菜单被禁用),用不到则返回 false
54
+ *
55
+ * @return {*} {boolean}
56
+ * @memberof AIButtonMenu
57
+ */
58
+ isDisabled() {
59
+ return false;
60
+ }
61
+ /**
62
+ * 点击菜单时触发的函数
63
+ *
64
+ * @param {IDomEditor} editor
65
+ * @memberof AIButtonMenu
66
+ */
67
+ exec(editor) {
68
+ editor.emit("aiClick");
69
+ }
70
+ }
71
+ const AIMenu = {
72
+ key: "aichart",
73
+ factory() {
74
+ return new AIButtonMenu();
75
+ }
76
+ };
77
+
78
+ exports.AIMenu = AIMenu;