@ibiz-template/vue3-components 0.7.41-alpha.49 → 0.7.41-alpha.50

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 (57) hide show
  1. package/dist/index-CXRnZZS2.js +11 -0
  2. package/dist/index.min.css +1 -1
  3. package/dist/index.system.min.js +1 -1
  4. package/dist/{wang-editor-DnumgoHr.js → wang-editor-9WDOiHof.js} +1 -1
  5. package/dist/{xlsx-util-BVE35vSD.js → xlsx-util-CgGjW9-u.js} +1 -1
  6. package/es/control/drtab/drtab-control.util.mjs +1 -1
  7. package/es/control/form/form/form.mjs +2 -1
  8. package/es/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.mjs +1 -2
  9. package/es/control/form/form-detail/form-item/form-item.mjs +1 -2
  10. package/es/control/grid/grid/grid.mjs +2 -1
  11. package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
  12. package/es/index.mjs +1 -0
  13. package/es/util/app-util/app-util.mjs +5 -2
  14. package/es/util/fullscreen/fullscreen-util.mjs +1 -1
  15. package/es/util/index.mjs +1 -0
  16. package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.mjs +6 -3
  17. package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.mjs +3 -0
  18. package/es/util/screen-shot-util/screen-shot/components/screen-shot/screen-shot.css +1 -1
  19. package/es/util/screen-shot-util/screen-shot/components/screen-shot/screen-shot.mjs +23 -2
  20. package/es/util/screen-shot-util/screen-shot/components/screen-shot-toolbar/screen-shot-toolbar.mjs +1 -1
  21. package/es/util/screen-shot-util/screen-shot/constant/index.mjs +9 -3
  22. package/es/util/screen-shot-util/screen-shot/controller/screen-shot.controller.mjs +36 -18
  23. package/es/util/screen-shot-util/screen-shot/controller/screen-shot.store.mjs +6 -0
  24. package/es/util/screen-shot-util/screen-shot/icon/icon.mjs +11 -1
  25. package/es/util/screen-shot-util/screen-shot/icon/index.mjs +1 -1
  26. package/es/util/screen-shot-util/screen-shot/type/index.mjs +1 -0
  27. package/es/util/user-route-util/user-route-util.mjs +55 -0
  28. package/es/web-app/main.mjs +1 -1
  29. package/es/web-app/router/index.mjs +1 -1
  30. package/lib/control/drtab/drtab-control.util.cjs +1 -1
  31. package/lib/control/form/form/form.cjs +2 -1
  32. package/lib/control/form/form-detail/form-item/composite-form-item-ex/composite-form-item-ex.cjs +1 -2
  33. package/lib/control/form/form-detail/form-item/form-item.cjs +1 -2
  34. package/lib/control/grid/grid/grid.cjs +2 -1
  35. package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
  36. package/lib/index.cjs +3 -0
  37. package/lib/util/app-util/app-util.cjs +5 -2
  38. package/lib/util/fullscreen/fullscreen-util.cjs +1 -1
  39. package/lib/util/index.cjs +3 -0
  40. package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.cjs +3 -0
  41. package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.cjs +5 -2
  42. package/lib/util/screen-shot-util/screen-shot/components/screen-shot/screen-shot.cjs +22 -1
  43. package/lib/util/screen-shot-util/screen-shot/components/screen-shot/screen-shot.css +1 -1
  44. package/lib/util/screen-shot-util/screen-shot/components/screen-shot-toolbar/screen-shot-toolbar.cjs +1 -1
  45. package/lib/util/screen-shot-util/screen-shot/constant/index.cjs +8 -2
  46. package/lib/util/screen-shot-util/screen-shot/controller/screen-shot.controller.cjs +36 -18
  47. package/lib/util/screen-shot-util/screen-shot/controller/screen-shot.store.cjs +6 -0
  48. package/lib/util/screen-shot-util/screen-shot/icon/icon.cjs +11 -0
  49. package/lib/util/screen-shot-util/screen-shot/icon/index.cjs +1 -0
  50. package/lib/util/screen-shot-util/screen-shot/type/index.cjs +1 -0
  51. package/lib/util/user-route-util/user-route-util.cjs +58 -0
  52. package/lib/web-app/main.cjs +1 -1
  53. package/lib/web-app/router/index.cjs +1 -1
  54. package/package.json +5 -5
  55. package/dist/index-BUZnRhE6.js +0 -11
  56. /package/es/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.51_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.52_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs +0 -0
  57. /package/lib/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.51_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.52_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs +0 -0
@@ -1,5 +1,5 @@
1
1
  import { ref, watch, watchEffect, onUnmounted } from 'vue';
2
- import { defaultNamespace } from '../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.51_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs';
2
+ import { defaultNamespace } from '../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.52_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs';
3
3
 
4
4
  "use strict";
5
5
  function useAppDRTab(c, controlRef, counterData) {
@@ -52,7 +52,8 @@ const FormControl = /* @__PURE__ */ defineComponent({
52
52
  return renderSlot(slots, detailId, {
53
53
  model: detail,
54
54
  data: c.state.data,
55
- value: c.state.data[detailId]
55
+ value: c.state.data[detailId],
56
+ controller: c.details[detailId]
56
57
  });
57
58
  }
58
59
  const childSlots = {};
@@ -57,7 +57,7 @@ const CompositeFormItemEx = /* @__PURE__ */ defineComponent({
57
57
  };
58
58
  },
59
59
  render() {
60
- var _a, _b, _c, _d, _e, _f, _g, _h;
60
+ var _a, _b, _c, _d, _e, _f, _g;
61
61
  if (!this.c.state.visible || ((_a = this.c.model.editor) == null ? void 0 : _a.editorType) === "HIDDEN") {
62
62
  return null;
63
63
  }
@@ -126,7 +126,6 @@ const CompositeFormItemEx = /* @__PURE__ */ defineComponent({
126
126
  disabled: this.c.state.disabled,
127
127
  readonly: this.c.state.readonly,
128
128
  onChange: this.onValueChange,
129
- extraParams: ((_h = this.c.editor) == null ? void 0 : _h.extraParams) || {},
130
129
  controlParams: editMode ? {
131
130
  ...this.c.form.controlParams,
132
131
  editmode: editMode
@@ -36,7 +36,7 @@ const FormItem = /* @__PURE__ */ defineComponent({
36
36
  };
37
37
  },
38
38
  render() {
39
- var _a, _b, _c, _d, _e, _f;
39
+ var _a, _b, _c, _d, _e;
40
40
  if (!this.c.state.visible || ((_a = this.c.model.editor) == null ? void 0 : _a.editorType) === "HIDDEN") {
41
41
  return null;
42
42
  }
@@ -70,7 +70,6 @@ const FormItem = /* @__PURE__ */ defineComponent({
70
70
  disabled: this.c.state.disabled,
71
71
  readonly: this.c.state.readonly,
72
72
  onChange: this.onValueChange,
73
- extraParams: ((_f = this.c.editor) == null ? void 0 : _f.extraParams) || {},
74
73
  controlParams: editMode ? {
75
74
  ...this.c.form.controlParams,
76
75
  editmode: editMode
@@ -433,7 +433,8 @@ const GridControl = /* @__PURE__ */ defineComponent({
433
433
  if (slots[model.id]) {
434
434
  return renderSlot(slots, model.id, {
435
435
  model,
436
- data: c.state.items
436
+ data: c.state.items,
437
+ controller: c.columns[model.codeName]
437
438
  });
438
439
  }
439
440
  return renderChildColumn(c, model, renderColumns.value, index);
@@ -1 +1 @@
1
- .ibiz-markdown{--ibiz-markdown-width:100%;--ibiz-markdown-color-manual-toolbar-bg-save:var(--ibiz-color-primary);--ibiz-markdown-color-manual-toolbar-text-save:var(--ibiz-color-primary-active-text);--ibiz-markdown-color-manual-toolbar-text-cancel:var(--ibiz-color-text-1);--ibiz-markdown-color-manual-toolbar-text-cancel-hover:var(--ibiz-color-primary);--ibiz-markdown-color-dark-scrollbar-thumb-dark:rgb(var(--ibiz-grey-4));--ibiz-markdown-color-light-scrollbar-thumb-dark:rgb(var(--ibiz-grey-4));--ibiz-markdown-color-scrollbar-thumb-dark-hover:rgba(var(--ibiz-grey-4), 0.5);--ibiz-markdown-color-dark-toc-text:var(--ibiz-color-fill-0);--ibiz-markdown-color-toc-header-text:var(--ibiz-color-text-0);--ibiz-markdown-color-dark-mardown-border:rgb(var(--ibiz-grey-2));--ibiz-markdown-color-fixed-toc-text:var(--ibiz-color-black);--ibiz-markdown-color-fixed-toc-arrow-text:var(--ibiz-color-primary);--ibiz-markdown-spacing-manual-toolbar-height:32px;--ibiz-markdown-spacing-manual-toolbar-gap:var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-item-padding:0 var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-margin:var(--ibiz-spacing-base-tight) var(--ibiz-spacing-tight) 0 0;--ibiz-markdown-spacing-manual-toolbar-fullscreen-height:var(--ibiz-height-control-default);--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding:0 var(--ibiz-spacing-extra-loose);--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header:var(--ibiz-spacing-super-loose);--ibiz-markdown-height-manual-toolbar-height:var(--ibiz-height-control-default);--ibiz-markdown-border-radius-manual-toolbar-item:var(--ibiz-border-radius-small);--ibiz-markdown-border-manual-toolbar-fullscreen-footer:1px solid var(--ibiz-color-border);--ibiz-markdown-img-preview-top:-32px;--ibiz-markdown-img-preview-right:-36px;--ibiz-markdown-img-preview-width:32px;--ibiz-markdown-img-preview-height:32px}.ibiz-markdown__header{display:flex;flex-shrink:0;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height)}.ibiz-markdown__header--edit{cursor:pointer}.ibiz-markdown__header--full{cursor:pointer}.ibiz-markdown__header.is-fullscreen{position:fixed;top:0;right:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color)}.ibiz-markdown__header.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{top:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header))}.ibiz-markdown__footer{display:flex;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height);margin:var(--ibiz-markdown-spacing-manual-toolbar-margin)}.ibiz-markdown__footer--save{height:var(--ibiz-markdown-height-manual-toolbar-height);padding:var(--ibiz-markdown-spacing-manual-toolbar-item-padding);line-height:var(--ibiz-markdown-height-manual-toolbar-height);color:var(--ibiz-markdown-color-manual-toolbar-text-save);text-align:center;cursor:pointer;background-color:var(--ibiz-markdown-color-manual-toolbar-bg-save);border-radius:var(--ibiz-markdown-border-radius-manual-toolbar-item)}.ibiz-markdown__footer--cancel{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel);cursor:pointer}.ibiz-markdown__footer--cancel:hover{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel-hover)}.ibiz-markdown__footer.is-fullscreen{position:fixed;right:0;bottom:0;left:0;z-index:999;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2);padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color);border-top:var(--ibiz-markdown-border-manual-toolbar-fullscreen-footer)}.ibiz-markdown__footer.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2)}.ibiz-markdown__img-preview.el-image{position:absolute;height:0}.ibiz-markdown__img-preview .el-image-viewer__wrapper{width:90%;height:90%;margin:auto}.ibiz-markdown__img-preview .el-image-viewer__mask{position:fixed;width:100vw;height:100vh;cursor:zoom-out;opacity:.7}.ibiz-markdown__img-preview .el-image-viewer__close{top:var(--ibiz-markdown-img-preview-top);right:var(--ibiz-markdown-img-preview-right);width:var(--ibiz-markdown-img-preview-width);height:var(--ibiz-markdown-img-preview-height)}.ibiz-markdown .ibiz-markdown-cherry{width:var(--ibiz-markdown-width);outline:0}.ibiz-markdown .ibiz-markdown-cherry .cherry{width:100%;border:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-toolbar{box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-editor{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer img{cursor:zoom-in}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-sidebar{top:49px;border-left:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown.is-disabled .cherry{min-height:auto}.ibiz-markdown.is-disabled .ibiz-markdown__fullscreen{position:absolute;top:8px;right:12px;z-index:98;font-size:var(--ibiz-font-size-regular);line-height:2.8}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen{color:var(--ibiz-color-text-0)}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen:hover{background-color:var(--ibiz-color-bg-3)}.ibiz-markdown.is-manual{display:flex;flex-direction:column}.ibiz-markdown.is-manual .ibiz-markdown-cherry{flex-grow:1;height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-height))!important}.ibiz-markdown.is-manual.is-editing{flex-direction:column-reverse}.ibiz-markdown.is-manual .ibiz-markdown-menu{display:none}.ibiz-markdown.is-manual.is-editing .ibiz-markdown-menu{display:block}.ibiz-markdown.is-show-editor-switch-menu .ibiz-composite-form-item-ex-menu{--ibiz-composite-form-item-ex-menu-height:47px;--ibiz-composite-form-item-ex-menu-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-tight) 0;max-height:100%}.ibiz-markdown.is-show-editor-switch-menu .cherry-toolbar{padding-right:calc(var(--ibiz-composite-form-item-ex-menu-width) + var(--ibiz-spacing-extra-tight))}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu{position:absolute;top:1px;right:1px;z-index:var(--ibiz-composite-form-item-ex-menu-z-index);display:flex;align-items:center;height:calc(var(--ibiz-markdown-toolbar-height) - 1px);background:var(--ibiz-composite-form-item-ex-menu-bg-color);border-right:1px solid var(--ibiz-color-border);border-left:1px solid var(--ibiz-color-border)}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu.is-fullscreen{position:fixed;z-index:1000}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu .ibiz-composite-form-item-ex-menu{position:relative}.ibiz-markdown .cherry-preview--full{border-left:none}.ibiz-markdown .cherry-flex-toc__fixed{color:var(--ibiz-markdown-color-fixed-toc-text)}.ibiz-markdown .cherry-flex-toc__fixed.cherry-flex-toc__pure .cherry-toc-head{color:var(--ibiz-markdown-color-fixed-toc-arrow-text)}.ibiz-markdown .cherry-flex-toc__fixed:hover{z-index:100}.ibiz-markdown .theme__dark,.ibiz-markdown .theme__light{color:var(--ibiz-form-item-text-color)}.ibiz-markdown .cherry-markdown h1 a::before,.ibiz-markdown .cherry-markdown h2 a::before,.ibiz-markdown .cherry-markdown h3 a::before,.ibiz-markdown .cherry-markdown h4 a::before,.ibiz-markdown .cherry-markdown h5 a::before,.ibiz-markdown .cherry-markdown h6 a::before{display:none}.ibiz-markdown .cherry.fullscreen{z-index:999}.ibiz-markdown--light .theme__green .cherry-toolbar,.ibiz-markdown--light .theme__light .cherry-toolbar,.ibiz-markdown--light .theme__violet .cherry-toolbar{background-color:var(--ibiz-color-bg-0)}.ibiz-markdown--light .theme__dark.cherry .cherry-flex-toc{color:var(--ibiz-markdown-color-toc-header-text)}.ibiz-markdown--light .theme__dark.cherry ::-webkit-scrollbar-thumb{background:var(--ibiz-markdown-color-light-scrollbar-thumb-dark)}.ibiz-markdown--light .theme__dark.cherry ::-webkit-scrollbar-thumb:hover{background:var(--ibiz-markdown-color-scrollbar-thumb-dark-hover)}.ibiz-markdown--dark.ibiz-markdown-cherry .cherry{border:1px solid var(--ibiz-markdown-color-dark-mardown-border)}.ibiz-markdown--dark .theme__green .cherry-toolbar,.ibiz-markdown--dark .theme__light .cherry-toolbar,.ibiz-markdown--dark .theme__violet .cherry-toolbar{background-color:var(--ibiz-color-shadow)}.ibiz-markdown--dark .theme__dark.cherry .cherry-toc-head{color:var(--ibiz-markdown-color-dark-toc-text)}.ibiz-markdown--dark .theme__dark.cherry ::-webkit-scrollbar-thumb{background:var(--ibiz-markdown-color-dark-scrollbar-thumb-dark)}.ibiz-markdown--dark .theme__dark.cherry ::-webkit-scrollbar-thumb:hover{background:var(--ibiz-markdown-color-scrollbar-thumb-dark-hover)}
1
+ .ibiz-markdown{--ibiz-markdown-width:100%;--ibiz-markdown-color-manual-toolbar-bg-save:var(--ibiz-color-primary);--ibiz-markdown-color-manual-toolbar-text-save:var(--ibiz-color-primary-active-text);--ibiz-markdown-color-manual-toolbar-text-cancel:var(--ibiz-color-text-1);--ibiz-markdown-color-manual-toolbar-text-cancel-hover:var(--ibiz-color-primary);--ibiz-markdown-color-dark-scrollbar-thumb-dark:rgb(var(--ibiz-grey-4));--ibiz-markdown-color-light-scrollbar-thumb-dark:rgb(var(--ibiz-grey-4));--ibiz-markdown-color-scrollbar-thumb-dark-hover:rgba(var(--ibiz-grey-4), 0.5);--ibiz-markdown-color-dark-toc-text:var(--ibiz-color-fill-0);--ibiz-markdown-color-toc-header-text:var(--ibiz-color-text-0);--ibiz-markdown-color-dark-mardown-border:rgb(var(--ibiz-grey-2));--ibiz-markdown-color-fixed-toc-text:var(--ibiz-color-black);--ibiz-markdown-color-fixed-toc-arrow-text:var(--ibiz-color-primary);--ibiz-markdown-spacing-manual-toolbar-height:32px;--ibiz-markdown-spacing-manual-toolbar-gap:var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-item-padding:0 var(--ibiz-spacing-base);--ibiz-markdown-spacing-manual-toolbar-margin:var(--ibiz-spacing-base-tight) var(--ibiz-spacing-tight) 0 0;--ibiz-markdown-spacing-manual-toolbar-fullscreen-height:var(--ibiz-height-control-default);--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding:0 var(--ibiz-spacing-extra-loose);--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header:var(--ibiz-spacing-super-loose);--ibiz-markdown-height-manual-toolbar-height:var(--ibiz-height-control-default);--ibiz-markdown-border-radius-manual-toolbar-item:var(--ibiz-border-radius-small);--ibiz-markdown-border-manual-toolbar-fullscreen-footer:1px solid var(--ibiz-color-border);--ibiz-markdown-img-preview-top:-32px;--ibiz-markdown-img-preview-right:-36px;--ibiz-markdown-img-preview-width:32px;--ibiz-markdown-img-preview-height:32px}.ibiz-markdown__header{display:flex;flex-shrink:0;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height)}.ibiz-markdown__header--edit{cursor:pointer}.ibiz-markdown__header--full{cursor:pointer}.ibiz-markdown__header.is-fullscreen{position:fixed;top:0;right:0;left:0;z-index:1000;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color)}.ibiz-markdown__header.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{top:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header));height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header))}.ibiz-markdown__footer{display:flex;gap:var(--ibiz-markdown-spacing-manual-toolbar-gap);align-items:center;justify-content:end;height:var(--ibiz-markdown-spacing-manual-toolbar-height);margin:var(--ibiz-markdown-spacing-manual-toolbar-margin)}.ibiz-markdown__footer--save{height:var(--ibiz-markdown-height-manual-toolbar-height);padding:var(--ibiz-markdown-spacing-manual-toolbar-item-padding);line-height:var(--ibiz-markdown-height-manual-toolbar-height);color:var(--ibiz-markdown-color-manual-toolbar-text-save);text-align:center;cursor:pointer;background-color:var(--ibiz-markdown-color-manual-toolbar-bg-save);border-radius:var(--ibiz-markdown-border-radius-manual-toolbar-item)}.ibiz-markdown__footer--cancel{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel);cursor:pointer}.ibiz-markdown__footer--cancel:hover{color:var(--ibiz-markdown-color-manual-toolbar-text-cancel-hover)}.ibiz-markdown__footer.is-fullscreen{position:fixed;right:0;bottom:0;left:0;z-index:1000;width:100%;height:calc(var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2);padding:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-padding);margin-top:0;background-color:var(--ibiz-view-bg-color);border-top:var(--ibiz-markdown-border-manual-toolbar-fullscreen-footer)}.ibiz-markdown__footer.is-fullscreen+.ibiz-markdown-cherry .cherry.fullscreen{height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2)}.ibiz-markdown__img-preview.el-image{position:absolute;height:0}.ibiz-markdown__img-preview .el-image-viewer__wrapper{width:90%;height:90%;margin:auto}.ibiz-markdown__img-preview .el-image-viewer__mask{position:fixed;width:100vw;height:100vh;cursor:zoom-out;opacity:.7}.ibiz-markdown__img-preview .el-image-viewer__close{top:var(--ibiz-markdown-img-preview-top);right:var(--ibiz-markdown-img-preview-right);width:var(--ibiz-markdown-img-preview-width);height:var(--ibiz-markdown-img-preview-height)}.ibiz-markdown .ibiz-markdown-cherry{width:var(--ibiz-markdown-width);outline:0}.ibiz-markdown .ibiz-markdown-cherry .cherry{width:100%;border:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-toolbar{box-shadow:none}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-editor{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer{border-top:1px solid var(--ibiz-color-border)}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-previewer img{cursor:zoom-in}.ibiz-markdown .ibiz-markdown-cherry .cherry .cherry-sidebar{top:49px;border-left:1px solid var(--ibiz-color-border);box-shadow:none}.ibiz-markdown.is-disabled .cherry{min-height:auto}.ibiz-markdown.is-disabled .ibiz-markdown__fullscreen{position:absolute;top:8px;right:12px;z-index:98;font-size:var(--ibiz-font-size-regular);line-height:2.8}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen{color:var(--ibiz-color-text-0)}.ibiz-markdown.is-disabled .theme__dark .ibiz-markdown__fullscreen:hover{background-color:var(--ibiz-color-bg-3)}.ibiz-markdown.is-manual{display:flex;flex-direction:column}.ibiz-markdown.is-manual .ibiz-markdown-cherry{flex-grow:1;height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-height))!important}.ibiz-markdown.is-manual .cherry.fullscreen .cherry-previewer{padding-top:var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height-header)}.ibiz-markdown.is-manual.is-editing{flex-direction:column-reverse}.ibiz-markdown.is-manual.is-editing .cherry.fullscreen{height:calc(100% - var(--ibiz-markdown-spacing-manual-toolbar-fullscreen-height) * 2)}.ibiz-markdown.is-manual .ibiz-markdown-menu{display:none}.ibiz-markdown.is-manual.is-editing .ibiz-markdown-menu{display:block}.ibiz-markdown.is-show-editor-switch-menu .ibiz-composite-form-item-ex-menu{--ibiz-composite-form-item-ex-menu-height:47px;--ibiz-composite-form-item-ex-menu-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-tight) 0;max-height:100%}.ibiz-markdown.is-show-editor-switch-menu .cherry-toolbar{padding-right:calc(var(--ibiz-composite-form-item-ex-menu-width) + var(--ibiz-spacing-extra-tight))}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu{position:absolute;top:1px;right:1px;z-index:var(--ibiz-composite-form-item-ex-menu-z-index);display:flex;align-items:center;height:calc(var(--ibiz-markdown-toolbar-height) - 1px);background:var(--ibiz-composite-form-item-ex-menu-bg-color);border-right:1px solid var(--ibiz-color-border);border-left:1px solid var(--ibiz-color-border)}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu.is-fullscreen{position:fixed;z-index:1000}.ibiz-markdown.is-show-editor-switch-menu .ibiz-markdown-menu .ibiz-composite-form-item-ex-menu{position:relative}.ibiz-markdown .cherry-preview--full{border-left:none}.ibiz-markdown .cherry-flex-toc__fixed{color:var(--ibiz-markdown-color-fixed-toc-text)}.ibiz-markdown .cherry-flex-toc__fixed.cherry-flex-toc__pure .cherry-toc-head{color:var(--ibiz-markdown-color-fixed-toc-arrow-text)}.ibiz-markdown .cherry-flex-toc__fixed:hover{z-index:100}.ibiz-markdown .theme__dark,.ibiz-markdown .theme__light{color:var(--ibiz-form-item-text-color)}.ibiz-markdown .cherry-markdown h1 a::before,.ibiz-markdown .cherry-markdown h2 a::before,.ibiz-markdown .cherry-markdown h3 a::before,.ibiz-markdown .cherry-markdown h4 a::before,.ibiz-markdown .cherry-markdown h5 a::before,.ibiz-markdown .cherry-markdown h6 a::before{display:none}.ibiz-markdown .cherry.fullscreen{z-index:999}.ibiz-markdown--light .theme__green .cherry-toolbar,.ibiz-markdown--light .theme__light .cherry-toolbar,.ibiz-markdown--light .theme__violet .cherry-toolbar{background-color:var(--ibiz-color-bg-0)}.ibiz-markdown--light .theme__dark.cherry .cherry-flex-toc{color:var(--ibiz-markdown-color-toc-header-text)}.ibiz-markdown--light .theme__dark.cherry ::-webkit-scrollbar-thumb{background:var(--ibiz-markdown-color-light-scrollbar-thumb-dark)}.ibiz-markdown--light .theme__dark.cherry ::-webkit-scrollbar-thumb:hover{background:var(--ibiz-markdown-color-scrollbar-thumb-dark-hover)}.ibiz-markdown--dark.ibiz-markdown-cherry .cherry{border:1px solid var(--ibiz-markdown-color-dark-mardown-border)}.ibiz-markdown--dark .theme__green .cherry-toolbar,.ibiz-markdown--dark .theme__light .cherry-toolbar,.ibiz-markdown--dark .theme__violet .cherry-toolbar{background-color:var(--ibiz-color-shadow)}.ibiz-markdown--dark .theme__dark.cherry .cherry-toc-head{color:var(--ibiz-markdown-color-dark-toc-text)}.ibiz-markdown--dark .theme__dark.cherry ::-webkit-scrollbar-thumb{background:var(--ibiz-markdown-color-dark-scrollbar-thumb-dark)}.ibiz-markdown--dark .theme__dark.cherry ::-webkit-scrollbar-thumb:hover{background:var(--ibiz-markdown-color-scrollbar-thumb-dark-hover)}
package/es/index.mjs CHANGED
@@ -182,6 +182,7 @@ export { convertBtnType } from './util/button-util/button-util.mjs';
182
182
  export { InLineAIUtil } from './util/inline-ai-util/inline-ai-util.mjs';
183
183
  export { AIChatUtil } from './util/ai-chat-util/ai-chat-util.mjs';
184
184
  export { ScreenShotUtil } from './util/screen-shot-util/screen-shot-util.mjs';
185
+ export { splitPathToSegments, validateRouteSegments } from './util/user-route-util/user-route-util.mjs';
185
186
  export { parseHtml } from './util/wang-editor-util/wang-editor-util.mjs';
186
187
  export { ArrowLeftBold, ArrowRightBold } from './util/icon/icon.mjs';
187
188
  export { AuthGuard } from './web-app/guard/auth-guard/auth-guard.mjs';
@@ -272,8 +272,11 @@ class AppUtil {
272
272
  * }}
273
273
  * @memberof AppUtil
274
274
  */
275
- route2routeObject(isRouteModal) {
276
- const routePath = route2routePath(this.router.currentRoute.value);
275
+ route2routeObject(isRouteModal = false) {
276
+ const routePath = route2routePath(
277
+ this.router.currentRoute.value,
278
+ isRouteModal
279
+ );
277
280
  return routePath;
278
281
  }
279
282
  /**
@@ -1,6 +1,6 @@
1
1
  import { createApp } from 'vue';
2
2
  import ElementPlus from 'element-plus';
3
- import { defaultNamespace } from '../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.51_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs';
3
+ import { defaultNamespace } from '../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.52_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs';
4
4
  import { IBizFullscreenToolbar } from '../../common/fullscreen-toolbar/fullscreen-toolbar.mjs';
5
5
 
6
6
  "use strict";
package/es/util/index.mjs CHANGED
@@ -17,5 +17,6 @@ export { ArrowLeftBold, ArrowRightBold } from './icon/icon.mjs';
17
17
  export { InLineAIUtil } from './inline-ai-util/inline-ai-util.mjs';
18
18
  export { AIChatUtil } from './ai-chat-util/ai-chat-util.mjs';
19
19
  export { ScreenShotUtil } from './screen-shot-util/screen-shot-util.mjs';
20
+ export { splitPathToSegments, validateRouteSegments } from './user-route-util/user-route-util.mjs';
20
21
 
21
22
  "use strict";
@@ -1,7 +1,7 @@
1
1
  import qs from 'qs';
2
2
  import { notNilEmpty } from 'qx-util';
3
3
  import { useUIStore } from '@ibiz-template/vue3-util';
4
- import { onMounted, onUnmounted, ref, watch, nextTick } from 'vue';
4
+ import { onMounted, onUnmounted, ref, computed, watch, nextTick } from 'vue';
5
5
  import { calcResPath } from '@ibiz-template/runtime';
6
6
  import { RegenerateIcon, insertTextIcon, ReplaceTextIcon, CopyTextIcon, CancelIcon } from './icon.mjs';
7
7
 
@@ -186,7 +186,7 @@ const useAI = (props, opts) => {
186
186
  try {
187
187
  if (e.data) {
188
188
  const msg = JSON.parse(e.data);
189
- let content = msg.actionresult;
189
+ let content = msg.actionresult || "";
190
190
  if (msg.actionstate === 30 && content)
191
191
  content = (_a = JSON.parse(content).choices) == null ? void 0 : _a[0].content;
192
192
  callBack({ state: msg.actionstate, content });
@@ -295,8 +295,11 @@ const useBase = (props, element, message) => {
295
295
  height: options.height ? "".concat(options.height, "px") : "auto",
296
296
  "max-height": "".concat(options.maxHeight || (options.height && options.height > 300 ? options.height : 300), "px")
297
297
  });
298
+ const toolcalls = computed(() => {
299
+ return message.value.toolcalls || [];
300
+ });
298
301
  watch(
299
- () => message.value.content,
302
+ () => [toolcalls.value.length, message.value.think, message.value.content],
300
303
  () => {
301
304
  nextTick(() => {
302
305
  if (!textareaRef.value)
@@ -115,6 +115,9 @@ const InlineAITextArea = /* @__PURE__ */ defineComponent({
115
115
  const handleAnswer = (answer) => {
116
116
  switch (answer.state) {
117
117
  case 20:
118
+ if (!answerContent) {
119
+ answerContent = "";
120
+ }
118
121
  answerContent += answer.content;
119
122
  Object.assign(message.value, parseContent(answerContent));
120
123
  break;
@@ -1 +1 @@
1
- .ibiz-screen-shot{--ibiz-screen-shot-mask-color-bg:rgba(122, 122, 122, 0.8);--ibiz-screen-shot-color-border:var(--ibiz-color-border);--ibiz-screen-shot-color-disabled:var(--ibiz-color-disabled-text);--ibiz-screen-shot-toolbar-color-0:var(--ibiz-color-text-3);--ibiz-screen-shot-toolbar-color-1:var(--ibiz-color-text-1);--ibiz-screen-shot-toolbar-color-bg:var(--ibiz-color-bg-2);--ibiz-screen-shot-toolbar-color-active:var(--ibiz-color-primary);position:fixed;top:0;left:0;z-index:999999;width:100%;height:100%;background-color:var(--ibiz-screen-shot-mask-color-bg)}.ibiz-screen-shot__toolber{position:absolute;top:40px;left:50%;z-index:1;transform:translateX(-50%)}.ibiz-screen-shot__canvas{position:absolute}.ibiz-screen-shot__text{position:absolute;top:0;left:0;z-index:1;box-sizing:border-box;display:none;min-width:20px;min-height:20px;padding:0;margin:0;font-weight:700;border:none;outline:0}.ibiz-screen-shot__text.is-show{display:block}
1
+ .ibiz-screen-shot{--ibiz-screen-shot-mask-color-bg:rgba(122, 122, 122, 0.8);--ibiz-screen-shot-color-border:var(--ibiz-color-border);--ibiz-screen-shot-color-disabled:var(--ibiz-color-disabled-text);--ibiz-screen-shot-toolbar-color-0:var(--ibiz-color-text-3);--ibiz-screen-shot-toolbar-color-1:var(--ibiz-color-text-1);--ibiz-screen-shot-toolbar-color-bg:var(--ibiz-color-bg-2);--ibiz-screen-shot-toolbar-color-active:var(--ibiz-color-primary);position:fixed;top:0;left:0;z-index:999999;width:100%;height:100%;background-color:var(--ibiz-screen-shot-mask-color-bg)}.ibiz-screen-shot__toolber{position:absolute;top:40px;left:50%;z-index:2;transform:translateX(-50%)}.ibiz-screen-shot__canvas{position:absolute}.ibiz-screen-shot__text{position:absolute;top:0;left:0;z-index:1;box-sizing:border-box;display:none;min-width:20px;min-height:20px;padding:0;margin:0;font-weight:700;border:none;outline:0}.ibiz-screen-shot__text.is-show{display:block}.ibiz-screen-shot.ibiz-screen-shot--arrow .ibiz-screen-shot__canvas,.ibiz-screen-shot.ibiz-screen-shot--brush .ibiz-screen-shot__canvas,.ibiz-screen-shot.ibiz-screen-shot--circle .ibiz-screen-shot__canvas,.ibiz-screen-shot.ibiz-screen-shot--mosaic .ibiz-screen-shot__canvas,.ibiz-screen-shot.ibiz-screen-shot--rect .ibiz-screen-shot__canvas{cursor:crosshair}.ibiz-screen-shot.ibiz-screen-shot--text .ibiz-screen-shot__canvas{cursor:text}
@@ -1,4 +1,4 @@
1
- import { defineComponent, createVNode, onMounted } from 'vue';
1
+ import { defineComponent, createVNode, onMounted, onUnmounted } from 'vue';
2
2
  import { useNamespace } from '@ibiz-template/vue3-util';
3
3
  import '../../controller/index.mjs';
4
4
  import { ToolbarItemType } from '../../type/index.mjs';
@@ -47,16 +47,37 @@ const ScreenShot = /* @__PURE__ */ defineComponent({
47
47
  canvasElement,
48
48
  textInputElement
49
49
  } = c.store;
50
+ const handleClose = () => {
51
+ emit("cancel");
52
+ };
50
53
  const handleToolBarClick = (type, opt) => {
54
+ if (type === ToolbarItemType.CLOSE) {
55
+ handleClose();
56
+ return;
57
+ }
51
58
  c.onToolClick(type, opt);
52
59
  if (type === ToolbarItemType.AI)
53
60
  emit("complete", canvasElement.value.toDataURL("png"));
54
61
  };
62
+ const keydownHandle = (e) => {
63
+ if (e.code === "Escape")
64
+ handleClose();
65
+ if (e.ctrlKey && e.code === "KeyZ") {
66
+ c.goBackToHistory();
67
+ }
68
+ if (e.ctrlKey && e.code === "KeyY") {
69
+ c.goForwardToHistory();
70
+ }
71
+ };
55
72
  onMounted(() => {
56
73
  c.domToCanvas(props.element, {
57
74
  container: props.container,
58
75
  itemClassName: props.itemClassName
59
76
  });
77
+ document.addEventListener("keydown", keydownHandle);
78
+ });
79
+ onUnmounted(() => {
80
+ document.removeEventListener("keydown", keydownHandle);
60
81
  });
61
82
  return {
62
83
  c,
@@ -72,7 +93,7 @@ const ScreenShot = /* @__PURE__ */ defineComponent({
72
93
  },
73
94
  render() {
74
95
  return createVNode("div", {
75
- "class": this.ns.b(),
96
+ "class": [this.ns.b(), this.c.store.toolbarName.value ? this.ns.m(this.c.store.toolbarName.value.toLowerCase()) : ""],
76
97
  "id": "screenShotContainer",
77
98
  "onMouseup": () => this.c.mouseUpEvent()
78
99
  }, [this.isLoading && createVNode("div", {
@@ -75,7 +75,7 @@ const ScreenShotToolbar = /* @__PURE__ */ defineComponent({
75
75
  }, [this.items.map((item) => {
76
76
  var _a2;
77
77
  return createVNode("div", {
78
- "class": [this.ns.e("item"), this.ns.em("item", item.type), this.ns.is("active", item.type !== ToolbarItemType.DRAWDOWN && item.type === ((_a2 = this.activeItem) == null ? void 0 : _a2.type)), this.ns.is("disabled", item.type === ToolbarItemType.DRAWDOWN && !this.history.length)],
78
+ "class": [this.ns.e("item"), this.ns.em("item", item.type), this.ns.is("active", item.type !== ToolbarItemType.DRAWDOWN && item.type === ((_a2 = this.activeItem) == null ? void 0 : _a2.type)), this.ns.is("disabled", item.type === ToolbarItemType.DRAWDOWN && this.history.length <= 1)],
79
79
  "onClick": () => this.handleItemClick(item)
80
80
  }, [createVNode("div", {
81
81
  "class": this.ns.em("item", "icon"),
@@ -1,6 +1,6 @@
1
1
  import '../icon/index.mjs';
2
2
  import { ToolbarItemType } from '../type/index.mjs';
3
- import { BrushIcon, RectIcon, CircleIcon, MosaicIcon, TextIcon, ArrowIcon, DrawdownIcon, AIIcon } from '../icon/icon.mjs';
3
+ import { BrushIcon, RectIcon, CircleIcon, MosaicIcon, TextIcon, ArrowIcon, DrawdownIcon, AIIcon, CloseIcon } from '../icon/icon.mjs';
4
4
 
5
5
  "use strict";
6
6
  function getDefaultToolbarItems() {
@@ -107,12 +107,12 @@ function getDefaultToolbarItems() {
107
107
  text: ibiz.i18n.t("util.screenShotUtil.text"),
108
108
  sizeOpts: [
109
109
  {
110
- value: 14,
110
+ value: 16,
111
111
  type: "small",
112
112
  text: ibiz.i18n.t("util.screenShotUtil.small")
113
113
  },
114
114
  {
115
- value: 18,
115
+ value: 20,
116
116
  type: "medium",
117
117
  text: ibiz.i18n.t("util.screenShotUtil.medium")
118
118
  },
@@ -165,6 +165,12 @@ function getDefaultToolbarItems() {
165
165
  icon: AIIcon,
166
166
  type: ToolbarItemType.AI,
167
167
  text: "AI"
168
+ },
169
+ {
170
+ // 关闭
171
+ icon: CloseIcon,
172
+ type: ToolbarItemType.CLOSE,
173
+ text: ibiz.i18n.t("app.close")
168
174
  }
169
175
  ];
170
176
  }
@@ -29,13 +29,6 @@ class ScreenShotController {
29
29
  * @memberof ScreenShotController
30
30
  */
31
31
  __publicField(this, "store");
32
- /**
33
- * @description 当前工具
34
- * @private
35
- * @type {ToolbarItemType}
36
- * @memberof ScreenShotController
37
- */
38
- __publicField(this, "toolName");
39
32
  /**
40
33
  * @description 画笔配置
41
34
  * @private
@@ -92,6 +85,13 @@ class ScreenShotController {
92
85
  * @memberof ScreenShotController
93
86
  */
94
87
  __publicField(this, "drawArrow", new DrawArrow());
88
+ /**
89
+ * @description 前进历史栈 - 存储被撤销的操作
90
+ * @private
91
+ * @type {Array<{ data: ImageData }>}
92
+ * @memberof ScreenShotController
93
+ */
94
+ __publicField(this, "redoHistory", []);
95
95
  this.store = new ScreenShotStore();
96
96
  }
97
97
  /**
@@ -126,6 +126,7 @@ class ScreenShotController {
126
126
  controller.height
127
127
  )
128
128
  });
129
+ this.redoHistory = [];
129
130
  }
130
131
  /**
131
132
  * @description 回退历史
@@ -134,13 +135,31 @@ class ScreenShotController {
134
135
  */
135
136
  goBackToHistory() {
136
137
  var _a;
137
- if (!this.store.history.value.length)
138
+ if (this.store.history.value.length <= 1)
138
139
  return;
139
- this.store.history.value.pop();
140
+ this.endTextEditing();
141
+ const poppedHistory = this.store.history.value.pop();
142
+ if (poppedHistory) {
143
+ this.redoHistory.push(poppedHistory);
144
+ }
140
145
  const data = (_a = this.store.history.value[this.store.history.value.length - 1]) == null ? void 0 : _a.data;
141
146
  if (this.canvasCtx && data)
142
147
  this.canvasCtx.putImageData(data, 0, 0);
143
148
  }
149
+ /**
150
+ * @description 前进历史(重做)
151
+ * @memberof ScreenShotController
152
+ */
153
+ goForwardToHistory() {
154
+ if (!this.redoHistory.length)
155
+ return;
156
+ this.endTextEditing();
157
+ const forwardHistory = this.redoHistory.pop();
158
+ if (!forwardHistory || !this.canvasCtx)
159
+ return;
160
+ this.store.history.value.push(forwardHistory);
161
+ this.canvasCtx.putImageData(forwardHistory.data, 0, 0);
162
+ }
144
163
  /**
145
164
  * @description 启用文本编辑
146
165
  * @private
@@ -253,7 +272,7 @@ class ScreenShotController {
253
272
  if (toolName === ToolbarItemType.DRAWDOWN)
254
273
  this.goBackToHistory();
255
274
  this.brushOption = opt;
256
- this.toolName = toolName;
275
+ this.store.toolbarName.value = toolName;
257
276
  this.endTextEditing();
258
277
  }
259
278
  /**
@@ -262,7 +281,7 @@ class ScreenShotController {
262
281
  * @memberof ScreenShotController
263
282
  */
264
283
  mouseDownEvent(event) {
265
- if (event.button !== 0 || !this.toolName || this.toolName === ToolbarItemType.DRAWDOWN || !this.canvasCtx)
284
+ if (event.button !== 0 || !this.store.toolbarName.value || this.store.toolbarName.value === ToolbarItemType.DRAWDOWN || !this.canvasCtx)
266
285
  return;
267
286
  this.drawing = true;
268
287
  const { mouseX, mouseY } = getMousePosition(event);
@@ -270,7 +289,7 @@ class ScreenShotController {
270
289
  mouseX,
271
290
  mouseY
272
291
  });
273
- switch (this.toolName) {
292
+ switch (this.store.toolbarName.value) {
274
293
  case ToolbarItemType.BRUSH:
275
294
  initPencil(this.canvasCtx, mouseX, mouseY);
276
295
  break;
@@ -288,13 +307,13 @@ class ScreenShotController {
288
307
  * @memberof ScreenShotController
289
308
  */
290
309
  mouseMoveEvent(event) {
291
- if (!this.toolName || !this.drawing || !this.canvasCtx || !this.brushOption)
310
+ if (!this.store.toolbarName.value || !this.drawing || !this.canvasCtx || !this.brushOption)
292
311
  return;
293
312
  const { mouseX, mouseY } = getMousePosition(event);
294
313
  const { mouseX: startX, mouseY: startY } = this.drawGraphPosition;
295
- if (this.toolName !== ToolbarItemType.MOSAIC)
314
+ if (this.store.toolbarName.value !== ToolbarItemType.MOSAIC)
296
315
  this.showLastHistory();
297
- switch (this.toolName) {
316
+ switch (this.store.toolbarName.value) {
298
317
  case ToolbarItemType.BRUSH:
299
318
  drawPencil(
300
319
  this.canvasCtx,
@@ -356,10 +375,9 @@ class ScreenShotController {
356
375
  */
357
376
  mouseUpEvent() {
358
377
  this.drawing = false;
359
- if (!this.toolName || this.toolName === ToolbarItemType.DRAWDOWN || !this.canvasCtx)
378
+ if (!this.store.toolbarName.value || this.store.toolbarName.value === ToolbarItemType.DRAWDOWN || this.store.toolbarName.value === ToolbarItemType.TEXT || !this.canvasCtx)
360
379
  return;
361
- if (this.toolName !== ToolbarItemType.TEXT)
362
- this.addHistory();
380
+ this.addHistory();
363
381
  }
364
382
  }
365
383
 
@@ -39,6 +39,12 @@ class ScreenShotStore {
39
39
  * @memberof ScreenShotStore
40
40
  */
41
41
  __publicField(this, "toolbarStatus", ref(false));
42
+ /**
43
+ * @description 当前工具名称
44
+ * @type {Ref<boolean>}
45
+ * @memberof ScreenShotStore
46
+ */
47
+ __publicField(this, "toolbarName", ref());
42
48
  /**
43
49
  * @description 历史
44
50
  * @type {Ref<{ data: ImageData }[]>}
@@ -86,5 +86,15 @@ const DrawdownIcon = createVNode("svg", {
86
86
  "d": "M341.333333 298.666667v170.666666L85.333333 256l256-213.333333v170.666666h213.333334a341.333333 341.333333 0 1 1 0 682.666667H170.666667v-85.333333h384a256 256 0 0 0 0-512H341.333333z",
87
87
  "p-id": "80470"
88
88
  }, null)]);
89
+ const CloseIcon = createVNode("svg", {
90
+ "class": "icon",
91
+ "viewBox": "0 0 1024 1024",
92
+ "version": "1.1",
93
+ "xmlns": "http://www.w3.org/2000/svg",
94
+ "p-id": "5023"
95
+ }, [createVNode("path", {
96
+ "d": "M801.645714 170.666667l51.833905 51.590095L565.150476 511.951238l288.353524 289.670095-51.833905 51.614477-288.109714-289.450667L225.426286 853.23581 173.592381 801.621333l288.329143-289.670095L173.592381 222.256762 225.426286 170.666667l288.109714 289.426285L801.645714 170.666667z",
97
+ "p-id": "5024"
98
+ }, null)]);
89
99
 
90
- export { AIIcon, ArrowIcon, BrushIcon, CircleIcon, DrawdownIcon, MarkerIcon, MosaicIcon, RectIcon, TextIcon };
100
+ export { AIIcon, ArrowIcon, BrushIcon, CircleIcon, CloseIcon, DrawdownIcon, MarkerIcon, MosaicIcon, RectIcon, TextIcon };
@@ -1,3 +1,3 @@
1
- export { AIIcon, ArrowIcon, BrushIcon, CircleIcon, DrawdownIcon, MarkerIcon, MosaicIcon, RectIcon, TextIcon } from './icon.mjs';
1
+ export { AIIcon, ArrowIcon, BrushIcon, CircleIcon, CloseIcon, DrawdownIcon, MarkerIcon, MosaicIcon, RectIcon, TextIcon } from './icon.mjs';
2
2
 
3
3
  "use strict";
@@ -10,6 +10,7 @@ var ToolbarItemType = /* @__PURE__ */ ((ToolbarItemType2) => {
10
10
  ToolbarItemType2["AI"] = "ai";
11
11
  ToolbarItemType2["MOSAIC"] = "mosaic";
12
12
  ToolbarItemType2["DRAWDOWN"] = "drawdown";
13
+ ToolbarItemType2["CLOSE"] = "close";
13
14
  return ToolbarItemType2;
14
15
  })(ToolbarItemType || {});
15
16
 
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ const splitPathToSegments = (path) => {
3
+ const segments = [];
4
+ let currentSegment = "";
5
+ let parenCount = 0;
6
+ for (let i = 0; i < path.length; i++) {
7
+ const char = path[i];
8
+ if (char === "/") {
9
+ if (parenCount === 0) {
10
+ if (currentSegment) {
11
+ segments.push(currentSegment);
12
+ currentSegment = "";
13
+ }
14
+ continue;
15
+ } else {
16
+ currentSegment += char;
17
+ }
18
+ } else {
19
+ if (char === "(") {
20
+ parenCount += 1;
21
+ } else if (char === ")") {
22
+ parenCount -= 1;
23
+ }
24
+ currentSegment += char;
25
+ }
26
+ }
27
+ if (currentSegment) {
28
+ segments.push(currentSegment);
29
+ }
30
+ return segments;
31
+ };
32
+ const validateRouteSegments = (segments) => {
33
+ if (segments.length < 3 || segments.length % 2 === 0) {
34
+ return false;
35
+ }
36
+ const paramReg = ":[^()]+\\(\\[\\^/\\]\\+=\\[\\^/\\]\\+\\|".concat(ibiz.env.routePlaceholder, "\\)");
37
+ const viewReg = "[^=/]+";
38
+ for (let i = 0; i < segments.length; i++) {
39
+ const segment = segments[i];
40
+ if (i % 2 === 0) {
41
+ const paramRegex = new RegExp("^".concat(paramReg, "$"));
42
+ if (!paramRegex.test(segment) && segment !== ibiz.env.routePlaceholder) {
43
+ return false;
44
+ }
45
+ } else {
46
+ const viewRegex = new RegExp("^".concat(viewReg, "$"));
47
+ if (!viewRegex.test(segment)) {
48
+ return false;
49
+ }
50
+ }
51
+ }
52
+ return true;
53
+ };
54
+
55
+ export { splitPathToSegments, validateRouteSegments };
@@ -72,7 +72,7 @@ async function runApp(plugins, opts) {
72
72
  AppRouter.setAuthGuard(
73
73
  (context, notLogin) => authGuard.verify(context, notLogin)
74
74
  );
75
- app.use(AppRouter.getRouter());
75
+ app.use(AppRouter.getRouter(opts == null ? void 0 : opts.userRoutes));
76
76
  listenOpenDevTool(AppRouter.getRouter());
77
77
  ibiz.appUtil = new AppUtil(AppRouter.getRouter());
78
78
  ibiz.openView = new OpenViewUtil(AppRouter.getRouter());
@@ -33,7 +33,7 @@ class AppRouter {
33
33
  }
34
34
  return appContext;
35
35
  }
36
- static getRouter() {
36
+ static getRouter(userRoutes) {
37
37
  const placeholder = ibiz.env.routePlaceholder;
38
38
  const paramReg = "[^/]+=[^/]+|".concat(placeholder);
39
39
  const viewReg = "[^=/]+";
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var vue = require('vue');
4
- var namespace = require('../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.51_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs');
4
+ var namespace = require('../../node_modules/.pnpm/@ibiz-template_core@0.7.41-alpha.52_axios@1.12.2_lodash-es@4.17.21_qs@6.14.0_qx-util@0.4.8_ramda@0.29.1/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs');
5
5
 
6
6
  "use strict";
7
7
  function useAppDRTab(c, controlRef, counterData) {
@@ -54,7 +54,8 @@ const FormControl = /* @__PURE__ */ vue.defineComponent({
54
54
  return vue.renderSlot(slots, detailId, {
55
55
  model: detail,
56
56
  data: c.state.data,
57
- value: c.state.data[detailId]
57
+ value: c.state.data[detailId],
58
+ controller: c.details[detailId]
58
59
  });
59
60
  }
60
61
  const childSlots = {};
@@ -61,7 +61,7 @@ const CompositeFormItemEx = /* @__PURE__ */ vue.defineComponent({
61
61
  };
62
62
  },
63
63
  render() {
64
- var _a, _b, _c, _d, _e, _f, _g, _h;
64
+ var _a, _b, _c, _d, _e, _f, _g;
65
65
  if (!this.c.state.visible || ((_a = this.c.model.editor) == null ? void 0 : _a.editorType) === "HIDDEN") {
66
66
  return null;
67
67
  }
@@ -130,7 +130,6 @@ const CompositeFormItemEx = /* @__PURE__ */ vue.defineComponent({
130
130
  disabled: this.c.state.disabled,
131
131
  readonly: this.c.state.readonly,
132
132
  onChange: this.onValueChange,
133
- extraParams: ((_h = this.c.editor) == null ? void 0 : _h.extraParams) || {},
134
133
  controlParams: editMode ? {
135
134
  ...this.c.form.controlParams,
136
135
  editmode: editMode
@@ -40,7 +40,7 @@ const FormItem = /* @__PURE__ */ vue.defineComponent({
40
40
  };
41
41
  },
42
42
  render() {
43
- var _a, _b, _c, _d, _e, _f;
43
+ var _a, _b, _c, _d, _e;
44
44
  if (!this.c.state.visible || ((_a = this.c.model.editor) == null ? void 0 : _a.editorType) === "HIDDEN") {
45
45
  return null;
46
46
  }
@@ -74,7 +74,6 @@ const FormItem = /* @__PURE__ */ vue.defineComponent({
74
74
  disabled: this.c.state.disabled,
75
75
  readonly: this.c.state.readonly,
76
76
  onChange: this.onValueChange,
77
- extraParams: ((_f = this.c.editor) == null ? void 0 : _f.extraParams) || {},
78
77
  controlParams: editMode ? {
79
78
  ...this.c.form.controlParams,
80
79
  editmode: editMode
@@ -435,7 +435,8 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
435
435
  if (slots[model.id]) {
436
436
  return vue.renderSlot(slots, model.id, {
437
437
  model,
438
- data: c.state.items
438
+ data: c.state.items,
439
+ controller: c.columns[model.codeName]
439
440
  });
440
441
  }
441
442
  return renderChildColumn(c, model, renderColumns.value, index);