@ibiz-template/mob-vue3-components 0.7.41-alpha.20 → 0.7.41-alpha.22

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 (397) hide show
  1. package/dist/ibiz-markdown-editor-COU_MxNu.js +2 -0
  2. package/dist/ibiz-markdown-editor-COU_MxNu.js.map +1 -0
  3. package/dist/index-Bn7VkqJp.js +76 -0
  4. package/dist/index-Bn7VkqJp.js.map +1 -0
  5. package/dist/index-ChdHGLJI.js +2 -0
  6. package/dist/index-ChdHGLJI.js.map +1 -0
  7. package/dist/index-Dd7yiMzY.js +2 -0
  8. package/dist/index-Dd7yiMzY.js.map +1 -0
  9. package/dist/index.es-D0mZvSDS.js +14 -0
  10. package/dist/index.es-D0mZvSDS.js.map +1 -0
  11. package/dist/index.min.css +2 -2
  12. package/dist/index.system.min.js +1 -1
  13. package/dist/{quill-COWm2ioZ.js → quill-BOA7ZLOz.js} +2 -2
  14. package/dist/{quill-COWm2ioZ.js.map → quill-BOA7ZLOz.js.map} +1 -1
  15. package/dist/{quill-editor-BwfQqajZ.js → quill-editor-DcZd_lqh.js} +2 -2
  16. package/dist/{quill-editor-BwfQqajZ.js.map → quill-editor-DcZd_lqh.js.map} +1 -1
  17. package/dist/quill-editor-preview-DghpeKpg.js +2 -0
  18. package/dist/quill-editor-preview-DghpeKpg.js.map +1 -0
  19. package/dist/{tree-CgxZzCGY.js → tree-BTa0bMPr.js} +2 -2
  20. package/dist/{tree-CgxZzCGY.js.map → tree-BTa0bMPr.js.map} +1 -1
  21. package/dist/xlsx-util-CQaOn5OK.js +105 -0
  22. package/dist/xlsx-util-CQaOn5OK.js.map +1 -0
  23. package/es/_virtual/FileSaver.min.mjs +3 -0
  24. package/es/_virtual/index12.mjs +2 -2
  25. package/es/_virtual/index14.mjs +2 -2
  26. package/es/common/action-group/action-group.css +1 -1
  27. package/es/common/action-toolbar/action-toolbar.css +1 -1
  28. package/es/common/add-btn/add-btn.css +1 -1
  29. package/es/common/button-list/button-list.css +1 -1
  30. package/es/common/cropping/cropping.css +1 -1
  31. package/es/common/date-range-picker/components/range-picker/range-picker.css +1 -1
  32. package/es/common/date-range-picker/components/single-picker/single-picker.css +1 -1
  33. package/es/common/date-range-picker/date-range-picker.css +1 -1
  34. package/es/common/emoji-select/components/categories/categories.css +1 -1
  35. package/es/common/emoji-select/components/category-label/category-label.css +1 -1
  36. package/es/common/emoji-select/components/emoji-item/emoji-item.css +1 -1
  37. package/es/common/emoji-select/components/emoji-list/emoji-list.css +1 -1
  38. package/es/common/emoji-select/emoji-select.css +1 -1
  39. package/es/common/fullscreen-header/fullscreen-header.css +1 -1
  40. package/es/common/md-advaned-searchform/md-advaned-searchform.css +1 -1
  41. package/es/common/md-sort-setting/md-sort-setting.css +1 -1
  42. package/es/common/preset-view-back/preset-view-back.css +1 -1
  43. package/es/common/rawitem/rawitem.css +1 -1
  44. package/es/common/split/split.css +1 -1
  45. package/es/common/split-trigger/split-trigger.css +1 -1
  46. package/es/common/tab-layout/tab-default-layout/tab-default-layout.css +1 -1
  47. package/es/common/tab-layout/tab-default-layout/tab-default-layout.mjs +1 -0
  48. package/es/common/tab-layout/tab-dropdown/tab-dropdown-list-content.css +1 -1
  49. package/es/common/tab-layout/tab-dropdown/tab-dropdown.css +1 -1
  50. package/es/common/tab-layout/tab-flow-layout/tab-flow-layout.css +1 -1
  51. package/es/common/tab-layout/tab-layout.css +1 -1
  52. package/es/common/tab-layout/tab-sidebar-layout/tab-sidebar-layout.css +1 -1
  53. package/es/common/view-message/view-message.mjs +1 -1
  54. package/es/control/app-menu/app-menu.css +1 -1
  55. package/es/control/app-menu/app-menu.mjs +2 -2
  56. package/es/control/app-menu-icon-view/app-menu-icon-view.css +1 -1
  57. package/es/control/app-menu-icon-view/app-menu-icon-view.mjs +2 -2
  58. package/es/control/app-menu-list-view/app-menu-list-view.css +1 -1
  59. package/es/control/calendar/calendar.css +1 -1
  60. package/es/control/calendar/calendar.mjs +1 -1
  61. package/es/control/caption-bar/caption-bar.css +1 -1
  62. package/es/control/dashboard/custom-dashboard-design/custom-dashboard-design.css +1 -1
  63. package/es/control/dashboard/dashboard.css +1 -1
  64. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.css +1 -1
  65. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.mjs +4 -1
  66. package/es/control/data-view/data-view.css +1 -1
  67. package/es/control/drbar/drbar.css +1 -1
  68. package/es/control/drtab/drtab.controller.mjs +1 -1
  69. package/es/control/drtab/drtab.css +1 -1
  70. package/es/control/form/edit-form/edit-form.css +1 -1
  71. package/es/control/form/form/form.css +1 -1
  72. package/es/control/form/form-detail/form-button/form-button.css +1 -1
  73. package/es/control/form/form-detail/form-button-list/form-button-list.css +1 -1
  74. package/es/control/form/form-detail/form-druipart/form-druipart.css +1 -1
  75. package/es/control/form/form-detail/form-group-panel/form-group-panel.css +1 -1
  76. package/es/control/form/form-detail/form-item/form-item-container/form-item-container.css +1 -1
  77. package/es/control/form/form-detail/form-item/form-item-container/form-item-container.mjs +3 -3
  78. package/es/control/form/form-detail/form-item/form-item.css +1 -1
  79. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.css +0 -1
  80. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +2 -19
  81. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.css +1 -1
  82. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.mjs +7 -0
  83. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.css +1 -0
  84. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.mjs +239 -0
  85. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.css +1 -1
  86. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  87. package/es/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.css +1 -1
  88. package/es/control/form/form-detail/form-page/form-page-item/form-page-item.css +1 -1
  89. package/es/control/form/form-detail/form-page/form-page.css +1 -1
  90. package/es/control/form/form-detail/form-tab-panel/form-tab-panel.css +1 -1
  91. package/es/control/list/list/list.css +0 -1
  92. package/es/control/list/list/list.mjs +20 -121
  93. package/es/control/list/md-ctrl/md-ctrl.css +1 -1
  94. package/es/control/search-bar/filter-tree/filter-tree.css +1 -1
  95. package/es/control/search-bar/search-bar.css +1 -1
  96. package/es/control/tab-exp-panel/tab-exp-panel.css +1 -1
  97. package/es/control/toolbar/toolbar-render-util.mjs +4 -0
  98. package/es/control/toolbar/toolbar.css +1 -1
  99. package/es/control/tree/tree.css +1 -1
  100. package/es/control/wizard-panel/wizard-panel.css +1 -1
  101. package/es/editor/array/ibiz-array/ibiz-array.css +1 -1
  102. package/es/editor/cascader/ibiz-cascader/ibiz-cascader.css +1 -1
  103. package/es/editor/check-box/ibiz-checkbox/ibiz-checkbox.css +1 -1
  104. package/es/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.css +1 -1
  105. package/es/editor/color-picker/ibiz-color-picker/ibiz-color-picker.css +1 -1
  106. package/es/editor/common/data-mpicker/ibiz-data-mpicker.css +1 -1
  107. package/es/editor/common/right-icon/right-icon.css +1 -1
  108. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.css +1 -1
  109. package/es/editor/data-picker/ibiz-picker/ibiz-picker.css +1 -1
  110. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +2 -2
  111. package/es/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.css +1 -1
  112. package/es/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.mjs +1 -1
  113. package/es/editor/data-picker/picker-editor.controller.mjs +1 -1
  114. package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.css +1 -1
  115. package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.css +1 -1
  116. package/es/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.css +1 -1
  117. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.css +1 -1
  118. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +18 -9
  119. package/es/editor/dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.css +1 -1
  120. package/es/editor/dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.mjs +8 -1
  121. package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.css +1 -1
  122. package/es/editor/html/quill-editor/quill-editor.css +1 -1
  123. package/es/editor/html/quill-editor-preview/quill-editor-preview.css +1 -1
  124. package/es/editor/html/quill-editor-preview/quill-editor-preview.mjs +4 -3
  125. package/es/editor/map-picker/ibiz-map-picker/ibiz-map-picker.css +1 -1
  126. package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
  127. package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.mjs +3 -1
  128. package/es/editor/not-supported-editor/not-supported-editor.css +1 -1
  129. package/es/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.css +1 -1
  130. package/es/editor/qrcode/ibiz-qrcode/ibiz-qrcode.css +1 -1
  131. package/es/editor/radio-button-list/ibiz-radio/ibiz-radio.css +1 -1
  132. package/es/editor/rate/ibiz-rate/ibiz-rate.css +1 -1
  133. package/es/editor/raw/ibiz-raw/ibiz-raw.css +1 -1
  134. package/es/editor/slider/ibiz-slider/ibiz-slider.css +1 -1
  135. package/es/editor/span/span/span.css +1 -1
  136. package/es/editor/span/span-link/span-link.css +1 -1
  137. package/es/editor/stepper/ibiz-stepper/ibiz-stepper.css +1 -1
  138. package/es/editor/switch/ibiz-switch/ibiz-switch.css +1 -1
  139. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.css +1 -1
  140. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +1 -1
  141. package/es/editor/text-box/input/input.css +1 -1
  142. package/es/editor/text-box/input/input.mjs +33 -2
  143. package/es/editor/text-box/signature/signature.css +1 -1
  144. package/es/editor/text-box/signature/signature.mjs +1 -1
  145. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.css +1 -1
  146. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.mjs +1 -1
  147. package/es/editor/upload/ibiz-image-cropping/ibiz-image-cropping.css +1 -1
  148. package/es/editor/upload/ibiz-image-select/ibiz-image-select.css +1 -1
  149. package/es/editor/upload/ibiz-image-upload/ibiz-image-upload.css +1 -1
  150. package/es/ibiz-vue3.mjs +1 -0
  151. package/es/index.mjs +3 -0
  152. package/es/locale/en/index.mjs +32 -0
  153. package/es/locale/zh-CN/index.mjs +35 -1
  154. package/es/mob-app/components/modal-router-shell/modal-router-shell.mjs +2 -2
  155. package/es/mob-app/guard/auth-guard/auth-guard.mjs +206 -194
  156. package/es/mob-app/guard/auth-guard/dyna-auth-guard.mjs +65 -0
  157. package/es/mob-app/guard/index.mjs +1 -0
  158. package/es/mob-app/index.mjs +1 -0
  159. package/es/mob-app/main.mjs +14 -1
  160. package/es/mob-app/router/index.mjs +6 -4
  161. package/es/node_modules/.pnpm/@amap_amap-jsapi-loader@1.0.1_patch_hash_73bpcwbs2m5ip4qppmz6a7epsa/node_modules/@amap/amap-jsapi-loader/dist/index.mjs +1 -1
  162. package/es/node_modules/.pnpm/@ibiz-template-plugin_ibiz-mob-ai-chat@0.0.1_cherry-markdown@0.8.58_interactjs@1.10.27_qx-uti_xgmgjpxet4ghyc7txs4jkjxilq/node_modules/@ibiz-template-plugin/ibiz-mob-ai-chat/dist/index.es.mjs +4425 -0
  163. package/es/node_modules/.pnpm/dingtalk-jsapi@3.2.0/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.mjs +1 -1
  164. package/es/node_modules/.pnpm/file-saver@2.0.5/node_modules/file-saver/dist/FileSaver.min.mjs +15 -0
  165. package/es/node_modules/.pnpm/xlsx@0.18.5/node_modules/xlsx/xlsx.mjs +24580 -0
  166. package/es/panel-component/async-action/async-action/async-action.css +1 -1
  167. package/es/panel-component/async-action/async-action-preview/async-action-preview.css +1 -1
  168. package/es/panel-component/async-action/async-action-tab/async-action-tab.css +1 -1
  169. package/es/panel-component/async-action/mob-async-action.css +1 -1
  170. package/es/panel-component/auth-sso/auth-sso.css +1 -1
  171. package/es/panel-component/auth-userinfo/auth-userinfo.css +1 -1
  172. package/es/panel-component/index.mjs +2 -0
  173. package/es/panel-component/panel-app-title/panel-app-title.css +1 -1
  174. package/es/panel-component/panel-button/panel-button.css +1 -1
  175. package/es/panel-component/panel-tab-panel/panel-tab-panel.css +1 -1
  176. package/es/panel-component/setting-container/setting-container.css +1 -1
  177. package/es/panel-component/theme-toggling/index.mjs +15 -0
  178. package/es/panel-component/theme-toggling/theme-toggling.controller.mjs +90 -0
  179. package/es/panel-component/theme-toggling/theme-toggling.css +1 -0
  180. package/es/panel-component/theme-toggling/theme-toggling.mjs +72 -0
  181. package/es/panel-component/theme-toggling/theme-toggling.provider.mjs +21 -0
  182. package/es/panel-component/theme-toggling/theme-toggling.state.mjs +22 -0
  183. package/es/panel-component/user-message/common/internal-message-container/internal-message-container.css +1 -1
  184. package/es/panel-component/user-message/common/internal-message-default/internal-message-default.css +1 -1
  185. package/es/panel-component/user-message/internal-message-text/internal-message-text.css +1 -1
  186. package/es/panel-component/user-message/user-message.css +1 -1
  187. package/es/panel-component/view-content-panel-container/view-content-panel-container.css +1 -1
  188. package/es/panel-component/view-content-panel-container/view-content-panel-container.mjs +18 -4
  189. package/es/panel-component/view-header-panel-container/view-header-panel-container.css +1 -1
  190. package/es/panel-component/wf-action-button/wf-action-button.css +1 -1
  191. package/es/panel-component/wf-step-trace/wf-step-trace.css +1 -1
  192. package/es/util/ai-chat-util/ai-chat-util.mjs +932 -0
  193. package/es/util/ai-chat-util/ai-feedback/ai-feedback.css +1 -0
  194. package/es/util/ai-chat-util/ai-feedback/ai-feedback.mjs +140 -0
  195. package/es/util/app-drawer/app-drawer-component.mjs +7 -17
  196. package/es/util/app-modal/app-modal-component.mjs +4 -2
  197. package/es/util/app-util/app-util.mjs +76 -6
  198. package/es/util/index.mjs +2 -0
  199. package/es/util/list-util/list-render-util.mjs +1 -2
  200. package/es/util/user-route-util/user-route-util.mjs +55 -0
  201. package/es/util/xlsx-util/xlsx-util.mjs +163 -0
  202. package/es/view/portal-view/portal-view.mjs +3 -2
  203. package/es/view-engine/mob-calendar-view.engine.mjs +4 -0
  204. package/es/view-engine/mob-pickup-md-view.engine.mjs +1 -0
  205. package/lib/_virtual/FileSaver.min.cjs +5 -0
  206. package/lib/_virtual/index12.cjs +2 -2
  207. package/lib/_virtual/index14.cjs +2 -2
  208. package/lib/common/action-group/action-group.css +1 -1
  209. package/lib/common/action-toolbar/action-toolbar.css +1 -1
  210. package/lib/common/add-btn/add-btn.css +1 -1
  211. package/lib/common/button-list/button-list.css +1 -1
  212. package/lib/common/cropping/cropping.css +1 -1
  213. package/lib/common/date-range-picker/components/range-picker/range-picker.css +1 -1
  214. package/lib/common/date-range-picker/components/single-picker/single-picker.css +1 -1
  215. package/lib/common/date-range-picker/date-range-picker.css +1 -1
  216. package/lib/common/emoji-select/components/categories/categories.css +1 -1
  217. package/lib/common/emoji-select/components/category-label/category-label.css +1 -1
  218. package/lib/common/emoji-select/components/emoji-item/emoji-item.css +1 -1
  219. package/lib/common/emoji-select/components/emoji-list/emoji-list.css +1 -1
  220. package/lib/common/emoji-select/emoji-select.css +1 -1
  221. package/lib/common/fullscreen-header/fullscreen-header.css +1 -1
  222. package/lib/common/md-advaned-searchform/md-advaned-searchform.css +1 -1
  223. package/lib/common/md-sort-setting/md-sort-setting.css +1 -1
  224. package/lib/common/preset-view-back/preset-view-back.css +1 -1
  225. package/lib/common/rawitem/rawitem.css +1 -1
  226. package/lib/common/split/split.css +1 -1
  227. package/lib/common/split-trigger/split-trigger.css +1 -1
  228. package/lib/common/tab-layout/tab-default-layout/tab-default-layout.cjs +1 -0
  229. package/lib/common/tab-layout/tab-default-layout/tab-default-layout.css +1 -1
  230. package/lib/common/tab-layout/tab-dropdown/tab-dropdown-list-content.css +1 -1
  231. package/lib/common/tab-layout/tab-dropdown/tab-dropdown.css +1 -1
  232. package/lib/common/tab-layout/tab-flow-layout/tab-flow-layout.css +1 -1
  233. package/lib/common/tab-layout/tab-layout.css +1 -1
  234. package/lib/common/tab-layout/tab-sidebar-layout/tab-sidebar-layout.css +1 -1
  235. package/lib/common/view-message/view-message.cjs +1 -1
  236. package/lib/control/app-menu/app-menu.cjs +2 -2
  237. package/lib/control/app-menu/app-menu.css +1 -1
  238. package/lib/control/app-menu-icon-view/app-menu-icon-view.cjs +2 -2
  239. package/lib/control/app-menu-icon-view/app-menu-icon-view.css +1 -1
  240. package/lib/control/app-menu-list-view/app-menu-list-view.css +1 -1
  241. package/lib/control/calendar/calendar.cjs +1 -1
  242. package/lib/control/calendar/calendar.css +1 -1
  243. package/lib/control/caption-bar/caption-bar.css +1 -1
  244. package/lib/control/dashboard/custom-dashboard-design/custom-dashboard-design.css +1 -1
  245. package/lib/control/dashboard/dashboard.css +1 -1
  246. package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.cjs +4 -1
  247. package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.css +1 -1
  248. package/lib/control/data-view/data-view.css +1 -1
  249. package/lib/control/drbar/drbar.css +1 -1
  250. package/lib/control/drtab/drtab.controller.cjs +1 -1
  251. package/lib/control/drtab/drtab.css +1 -1
  252. package/lib/control/form/edit-form/edit-form.css +1 -1
  253. package/lib/control/form/form/form.css +1 -1
  254. package/lib/control/form/form-detail/form-button/form-button.css +1 -1
  255. package/lib/control/form/form-detail/form-button-list/form-button-list.css +1 -1
  256. package/lib/control/form/form-detail/form-druipart/form-druipart.css +1 -1
  257. package/lib/control/form/form-detail/form-group-panel/form-group-panel.css +1 -1
  258. package/lib/control/form/form-detail/form-item/form-item-container/form-item-container.cjs +3 -3
  259. package/lib/control/form/form-detail/form-item/form-item-container/form-item-container.css +1 -1
  260. package/lib/control/form/form-detail/form-item/form-item.css +1 -1
  261. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +1 -18
  262. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.css +0 -1
  263. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.css +1 -1
  264. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater.cjs +7 -0
  265. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.cjs +241 -0
  266. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.css +1 -0
  267. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-single-form/repeater-single-form.css +1 -1
  268. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  269. package/lib/control/form/form-detail/form-mdctrl/mdctrl-container/mdctrl-container.css +1 -1
  270. package/lib/control/form/form-detail/form-page/form-page-item/form-page-item.css +1 -1
  271. package/lib/control/form/form-detail/form-page/form-page.css +1 -1
  272. package/lib/control/form/form-detail/form-tab-panel/form-tab-panel.css +1 -1
  273. package/lib/control/list/list/list.cjs +19 -120
  274. package/lib/control/list/list/list.css +0 -1
  275. package/lib/control/list/md-ctrl/md-ctrl.css +1 -1
  276. package/lib/control/search-bar/filter-tree/filter-tree.css +1 -1
  277. package/lib/control/search-bar/search-bar.css +1 -1
  278. package/lib/control/tab-exp-panel/tab-exp-panel.css +1 -1
  279. package/lib/control/toolbar/toolbar-render-util.cjs +4 -0
  280. package/lib/control/toolbar/toolbar.css +1 -1
  281. package/lib/control/tree/tree.css +1 -1
  282. package/lib/control/wizard-panel/wizard-panel.css +1 -1
  283. package/lib/editor/array/ibiz-array/ibiz-array.css +1 -1
  284. package/lib/editor/cascader/ibiz-cascader/ibiz-cascader.css +1 -1
  285. package/lib/editor/check-box/ibiz-checkbox/ibiz-checkbox.css +1 -1
  286. package/lib/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.css +1 -1
  287. package/lib/editor/color-picker/ibiz-color-picker/ibiz-color-picker.css +1 -1
  288. package/lib/editor/common/data-mpicker/ibiz-data-mpicker.css +1 -1
  289. package/lib/editor/common/right-icon/right-icon.css +1 -1
  290. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.css +1 -1
  291. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +2 -2
  292. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.css +1 -1
  293. package/lib/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.cjs +1 -1
  294. package/lib/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.css +1 -1
  295. package/lib/editor/data-picker/picker-editor.controller.cjs +1 -1
  296. package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.css +1 -1
  297. package/lib/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.css +1 -1
  298. package/lib/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.css +1 -1
  299. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +18 -9
  300. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.css +1 -1
  301. package/lib/editor/dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.cjs +8 -1
  302. package/lib/editor/dropdown-list/ibiz-dropdown-list/ibiz-dropdown-list.css +1 -1
  303. package/lib/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.css +1 -1
  304. package/lib/editor/html/quill-editor/quill-editor.css +1 -1
  305. package/lib/editor/html/quill-editor-preview/quill-editor-preview.cjs +4 -3
  306. package/lib/editor/html/quill-editor-preview/quill-editor-preview.css +1 -1
  307. package/lib/editor/map-picker/ibiz-map-picker/ibiz-map-picker.css +1 -1
  308. package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.cjs +3 -1
  309. package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.css +1 -1
  310. package/lib/editor/not-supported-editor/not-supported-editor.css +1 -1
  311. package/lib/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.css +1 -1
  312. package/lib/editor/qrcode/ibiz-qrcode/ibiz-qrcode.css +1 -1
  313. package/lib/editor/radio-button-list/ibiz-radio/ibiz-radio.css +1 -1
  314. package/lib/editor/rate/ibiz-rate/ibiz-rate.css +1 -1
  315. package/lib/editor/raw/ibiz-raw/ibiz-raw.css +1 -1
  316. package/lib/editor/slider/ibiz-slider/ibiz-slider.css +1 -1
  317. package/lib/editor/span/span/span.css +1 -1
  318. package/lib/editor/span/span-link/span-link.css +1 -1
  319. package/lib/editor/stepper/ibiz-stepper/ibiz-stepper.css +1 -1
  320. package/lib/editor/switch/ibiz-switch/ibiz-switch.css +1 -1
  321. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +1 -1
  322. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.css +1 -1
  323. package/lib/editor/text-box/input/input.cjs +32 -1
  324. package/lib/editor/text-box/input/input.css +1 -1
  325. package/lib/editor/text-box/signature/signature.cjs +1 -1
  326. package/lib/editor/text-box/signature/signature.css +1 -1
  327. package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.cjs +1 -1
  328. package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.css +1 -1
  329. package/lib/editor/upload/ibiz-image-cropping/ibiz-image-cropping.css +1 -1
  330. package/lib/editor/upload/ibiz-image-select/ibiz-image-select.css +1 -1
  331. package/lib/editor/upload/ibiz-image-upload/ibiz-image-upload.css +1 -1
  332. package/lib/ibiz-vue3.cjs +1 -0
  333. package/lib/index.cjs +7 -0
  334. package/lib/locale/en/index.cjs +32 -0
  335. package/lib/locale/zh-CN/index.cjs +35 -1
  336. package/lib/mob-app/components/modal-router-shell/modal-router-shell.cjs +2 -2
  337. package/lib/mob-app/guard/auth-guard/auth-guard.cjs +206 -194
  338. package/lib/mob-app/guard/auth-guard/dyna-auth-guard.cjs +67 -0
  339. package/lib/mob-app/guard/index.cjs +2 -0
  340. package/lib/mob-app/index.cjs +2 -0
  341. package/lib/mob-app/main.cjs +14 -1
  342. package/lib/mob-app/router/index.cjs +6 -4
  343. package/lib/node_modules/.pnpm/@amap_amap-jsapi-loader@1.0.1_patch_hash_73bpcwbs2m5ip4qppmz6a7epsa/node_modules/@amap/amap-jsapi-loader/dist/index.cjs +1 -1
  344. package/lib/node_modules/.pnpm/@ibiz-template-plugin_ibiz-mob-ai-chat@0.0.1_cherry-markdown@0.8.58_interactjs@1.10.27_qx-uti_xgmgjpxet4ghyc7txs4jkjxilq/node_modules/@ibiz-template-plugin/ibiz-mob-ai-chat/dist/index.es.cjs +4427 -0
  345. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.2.0/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.cjs +1 -1
  346. package/lib/node_modules/.pnpm/file-saver@2.0.5/node_modules/file-saver/dist/FileSaver.min.cjs +20 -0
  347. package/lib/node_modules/.pnpm/xlsx@0.18.5/node_modules/xlsx/xlsx.cjs +24599 -0
  348. package/lib/panel-component/async-action/async-action/async-action.css +1 -1
  349. package/lib/panel-component/async-action/async-action-preview/async-action-preview.css +1 -1
  350. package/lib/panel-component/async-action/async-action-tab/async-action-tab.css +1 -1
  351. package/lib/panel-component/async-action/mob-async-action.css +1 -1
  352. package/lib/panel-component/auth-sso/auth-sso.css +1 -1
  353. package/lib/panel-component/auth-userinfo/auth-userinfo.css +1 -1
  354. package/lib/panel-component/index.cjs +44 -42
  355. package/lib/panel-component/panel-app-title/panel-app-title.css +1 -1
  356. package/lib/panel-component/panel-button/panel-button.css +1 -1
  357. package/lib/panel-component/panel-tab-panel/panel-tab-panel.css +1 -1
  358. package/lib/panel-component/setting-container/setting-container.css +1 -1
  359. package/lib/panel-component/theme-toggling/index.cjs +20 -0
  360. package/lib/panel-component/theme-toggling/theme-toggling.cjs +74 -0
  361. package/lib/panel-component/theme-toggling/theme-toggling.controller.cjs +92 -0
  362. package/lib/panel-component/theme-toggling/theme-toggling.css +1 -0
  363. package/lib/panel-component/theme-toggling/theme-toggling.provider.cjs +23 -0
  364. package/lib/panel-component/theme-toggling/theme-toggling.state.cjs +24 -0
  365. package/lib/panel-component/user-message/common/internal-message-container/internal-message-container.css +1 -1
  366. package/lib/panel-component/user-message/common/internal-message-default/internal-message-default.css +1 -1
  367. package/lib/panel-component/user-message/internal-message-text/internal-message-text.css +1 -1
  368. package/lib/panel-component/user-message/user-message.css +1 -1
  369. package/lib/panel-component/view-content-panel-container/view-content-panel-container.cjs +18 -4
  370. package/lib/panel-component/view-content-panel-container/view-content-panel-container.css +1 -1
  371. package/lib/panel-component/view-header-panel-container/view-header-panel-container.css +1 -1
  372. package/lib/panel-component/wf-action-button/wf-action-button.css +1 -1
  373. package/lib/panel-component/wf-step-trace/wf-step-trace.css +1 -1
  374. package/lib/util/ai-chat-util/ai-chat-util.cjs +934 -0
  375. package/lib/util/ai-chat-util/ai-feedback/ai-feedback.cjs +142 -0
  376. package/lib/util/ai-chat-util/ai-feedback/ai-feedback.css +1 -0
  377. package/lib/util/app-drawer/app-drawer-component.cjs +7 -17
  378. package/lib/util/app-modal/app-modal-component.cjs +4 -2
  379. package/lib/util/app-util/app-util.cjs +75 -5
  380. package/lib/util/index.cjs +5 -0
  381. package/lib/util/list-util/list-render-util.cjs +1 -2
  382. package/lib/util/user-route-util/user-route-util.cjs +58 -0
  383. package/lib/util/xlsx-util/xlsx-util.cjs +166 -0
  384. package/lib/view/portal-view/portal-view.cjs +3 -2
  385. package/lib/view-engine/mob-calendar-view.engine.cjs +4 -0
  386. package/lib/view-engine/mob-pickup-md-view.engine.cjs +1 -0
  387. package/package.json +12 -9
  388. package/dist/ibiz-markdown-editor-DMe7ZdYW.js +0 -2
  389. package/dist/ibiz-markdown-editor-DMe7ZdYW.js.map +0 -1
  390. package/dist/index-B0eDJ8A4.js +0 -2
  391. package/dist/index-B0eDJ8A4.js.map +0 -1
  392. package/dist/index-FB2X3Nyy.js +0 -76
  393. package/dist/index-FB2X3Nyy.js.map +0 -1
  394. package/dist/index-nqcMxJEO.js +0 -2
  395. package/dist/index-nqcMxJEO.js.map +0 -1
  396. package/dist/quill-editor-preview-Bj3EE5LD.js +0 -2
  397. package/dist/quill-editor-preview-Bj3EE5LD.js.map +0 -1
@@ -1,2 +1,2 @@
1
- System.register(["vue","@ibiz-template/vue3-util","./quill-COWm2ioZ.js","@ibiz-template/core","lodash-es","./index-FB2X3Nyy.js","vant","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(O){"use strict";var C,a,u,s,h,x,y,z,w,T,E,N,U,k;return{setters:[function(t){C=t.defineComponent,a=t.createVNode,u=t.resolveComponent,s=t.ref,h=t.watch,x=t.isVNode,y=t.nextTick},function(t){z=t.getEditorEmits,w=t.getHtmlProps,T=t.useNamespace},function(t){E=t.Q},function(t){N=t.getAppCookie,U=t.CoreConst,k=t.base64ToBlob},null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){function t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!x(e)}const V=O("default",C({name:"IBizQuill",props:w(),emits:z(),setup(e,{emit:d}){const c=T("quill"),i=e.controller,v=s(null),j=ibiz.i18n.getLang();let n=null;const B=s({[`${ibiz.env.tokenHeader}Authorization`]:`${ibiz.env.tokenPrefix}Bearer ${N(U.TOKEN)}`}),H=s(""),P=s(""),p=s(!1),b=s(!1),f=s(""),S=s(!0),q=o=>{const l=o.ops.find(r=>r.insert&&r.insert.image);if(l)return l.insert.image},M=()=>i.valueMode==="text"?n.getText():n.getSemanticHTML(),L=async o=>{const l=k(o),r=await ibiz.util.file.fileUpload(H.value,l,B.value),g=P.value.replace("%fileId%",r.fileid),m=M();f.value=m.replace(o,g)},Q=()=>{if(!v.value)return;const o=i.showToolbar?"snow":"bubble";n=new E(v.value,{theme:o,modules:i.modules,readOnly:e.disabled||e.readonly,placeholder:i.placeHolder}),n.on("text-change",(l,r,g)=>{if(g==="user"){const m=q(l);if(m&&i.imageMode==="file"){L(m);return}f.value=M()}}),i.valueMode==="text"&&n.setText(e.value||"")};return h(()=>[e.disabled,e.readonly],()=>{n&&(e.disabled||e.readonly?n.enable(!1):n.enable())},{immediate:!0}),h(()=>e.data,o=>{if(o){const l={...i.editorParams};l.uploadparams&&(l.uploadParams=JSON.parse(l.uploadparams)),l.exportparams&&(l.exportParams=JSON.parse(l.exportparams));const r=ibiz.util.file.calcFileUpDownUrl(i.context,i.params,o,l);H.value=r.uploadUrl,P.value=r.downloadUrl}},{immediate:!0,deep:!0}),h(()=>e.value,()=>{!n||!e.value||(f.value=e.value,i.valueMode==="text"?n.setText(e.value):(b.value=!0,y(()=>{b.value=!1})))},{immediate:!0}),{ns:c,c:i,lang:j,editing:p,updating:b,editorRef:v,isCollapse:S,handleEdit:()=>{n||Q()},handleCancel:()=>{p.value=!1},handleConfirm:()=>{d("change",f.value),p.value=!1}}},render(){let e,d;return a("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase())]},[!this.updating&&a(u("iBizQuillPreview"),{value:this.value,controller:this.controller,disabled:this.disabled,readonly:this.readonly,showCollapse:this.c.showCollapse,defaultHeight:this.c.defaultHeight,isCollapse:this.isCollapse,onEdit:()=>{this.editing=!0},onCollapse:c=>{this.isCollapse=c}},null),a(u("van-action-sheet"),{show:this.editing,"onUpdate:show":c=>this.editing=c,teleport:"body",class:[this.ns.e("popup"),this.ns.m(this.lang.toLowerCase())],onOpened:this.handleEdit},{default:()=>[a("div",{class:this.ns.e("content")},[a("div",{ref:"editorRef"},[this.controller.valueMode==="html"?a("div",{innerHTML:this.value},null):null])]),a("div",{class:this.ns.e("footer")},[a(u("van-button"),{class:this.ns.e("cancel"),onClick:this.handleCancel},t(e=ibiz.i18n.t("editor.common.cancel"))?e:{default:()=>[e]}),a(u("van-button"),{class:this.ns.e("confirm"),onClick:this.handleConfirm,type:"primary"},t(d=ibiz.i18n.t("editor.common.confirm"))?d:{default:()=>[d]})])]})])}}))}}});
2
- //# sourceMappingURL=quill-editor-BwfQqajZ.js.map
1
+ System.register(["vue","@ibiz-template/vue3-util","./quill-BOA7ZLOz.js","@ibiz-template/core","lodash-es","./index-Bn7VkqJp.js","vant","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(O){"use strict";var C,a,u,s,h,x,y,z,w,T,E,N,U,k;return{setters:[function(t){C=t.defineComponent,a=t.createVNode,u=t.resolveComponent,s=t.ref,h=t.watch,x=t.isVNode,y=t.nextTick},function(t){z=t.getEditorEmits,w=t.getHtmlProps,T=t.useNamespace},function(t){E=t.Q},function(t){N=t.getAppCookie,U=t.CoreConst,k=t.base64ToBlob},null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){function t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!x(e)}const V=O("default",C({name:"IBizQuill",props:w(),emits:z(),setup(e,{emit:d}){const c=T("quill"),i=e.controller,v=s(null),j=ibiz.i18n.getLang();let n=null;const B=s({[`${ibiz.env.tokenHeader}Authorization`]:`${ibiz.env.tokenPrefix}Bearer ${N(U.TOKEN)}`}),H=s(""),P=s(""),p=s(!1),b=s(!1),f=s(""),S=s(!0),q=o=>{const l=o.ops.find(r=>r.insert&&r.insert.image);if(l)return l.insert.image},M=()=>i.valueMode==="text"?n.getText():n.getSemanticHTML(),L=async o=>{const l=k(o),r=await ibiz.util.file.fileUpload(H.value,l,B.value),g=P.value.replace("%fileId%",r.fileid),m=M();f.value=m.replace(o,g)},Q=()=>{if(!v.value)return;const o=i.showToolbar?"snow":"bubble";n=new E(v.value,{theme:o,modules:i.modules,readOnly:e.disabled||e.readonly,placeholder:i.placeHolder}),n.on("text-change",(l,r,g)=>{if(g==="user"){const m=q(l);if(m&&i.imageMode==="file"){L(m);return}f.value=M()}}),i.valueMode==="text"&&n.setText(e.value||"")};return h(()=>[e.disabled,e.readonly],()=>{n&&(e.disabled||e.readonly?n.enable(!1):n.enable())},{immediate:!0}),h(()=>e.data,o=>{if(o){const l={...i.editorParams};l.uploadparams&&(l.uploadParams=JSON.parse(l.uploadparams)),l.exportparams&&(l.exportParams=JSON.parse(l.exportparams));const r=ibiz.util.file.calcFileUpDownUrl(i.context,i.params,o,l);H.value=r.uploadUrl,P.value=r.downloadUrl}},{immediate:!0,deep:!0}),h(()=>e.value,()=>{!n||!e.value||(f.value=e.value,i.valueMode==="text"?n.setText(e.value):(b.value=!0,y(()=>{b.value=!1})))},{immediate:!0}),{ns:c,c:i,lang:j,editing:p,updating:b,editorRef:v,isCollapse:S,handleEdit:()=>{n||Q()},handleCancel:()=>{p.value=!1},handleConfirm:()=>{d("change",f.value),p.value=!1}}},render(){let e,d;return a("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase())]},[!this.updating&&a(u("iBizQuillPreview"),{value:this.value,controller:this.controller,disabled:this.disabled,readonly:this.readonly,showCollapse:this.c.showCollapse,defaultHeight:this.c.defaultHeight,isCollapse:this.isCollapse,onEdit:()=>{this.editing=!0},onCollapse:c=>{this.isCollapse=c}},null),a(u("van-action-sheet"),{show:this.editing,"onUpdate:show":c=>this.editing=c,teleport:"body",class:[this.ns.e("popup"),this.ns.m(this.lang.toLowerCase())],onOpened:this.handleEdit},{default:()=>[a("div",{class:this.ns.e("content")},[a("div",{ref:"editorRef"},[this.controller.valueMode==="html"?a("div",{innerHTML:this.value},null):null])]),a("div",{class:this.ns.e("footer")},[a(u("van-button"),{class:this.ns.e("cancel"),onClick:this.handleCancel},t(e=ibiz.i18n.t("editor.common.cancel"))?e:{default:()=>[e]}),a(u("van-button"),{class:this.ns.e("confirm"),onClick:this.handleConfirm,type:"primary"},t(d=ibiz.i18n.t("editor.common.confirm"))?d:{default:()=>[d]})])]})])}}))}}});
2
+ //# sourceMappingURL=quill-editor-DcZd_lqh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quill-editor-BwfQqajZ.js","sources":["../src/editor/html/quill-editor/quill-editor.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, Ref, ref, watch } from 'vue';\nimport {\n getHtmlProps,\n getEditorEmits,\n useNamespace,\n} from '@ibiz-template/vue3-util';\nimport 'quill/dist/quill.core.css';\nimport 'quill/dist/quill.snow.css';\nimport 'quill/dist/quill.bubble.css';\nimport Quill from 'quill';\nimport { Delta } from 'quill/core';\nimport { base64ToBlob, CoreConst, getAppCookie } from '@ibiz-template/core';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor.scss';\n\n/**\n * 移动端HTML编辑框\n * @primary\n * @description 基于Quill深度定制可扩展的富文本编辑器,集成文件/图片上传、实时预览及样式配置功能,提供完整的富媒体编辑解决方案。支持编辑器类型包含:`移动端HTML编辑框`\n * @editorparams {name:uploadparams,parameterType:string,description:上传参数,图片或文件上传时,用于计算上传路径}\n * @editorparams {name:exportparams,parameterType:string,description:下载参数,图片或文件下载时,用于计算下载路径}\n * @editorparams {name:osscat,parameterType:string,description:用于计算上传和下载路径的OSS参数}\n * @editorparams {name:showtoolbar,parameterType:boolean,defaultvalue:true,description:显示工具栏}\n * @editorparams {name:valuemode,parameterType:'text' | 'html',defaultvalue:html,description:值模式,暂时只支持html模式}\n * @editorparams {name:imagemode,parameterType:'base64' | 'file',defaultvalue:'file',description:图片模式}\n * @editorparams {name:modules,parameterType:string,description:quill配置}\n * @editorparams {name:defaultheight,parameterType:number,defaultvalue:200,description:收缩时的高度}\n * @editorparams {name:showcollapse,parameterType:boolean,defaultvalue:true,description:是否显示伸缩按钮}\n * @editorparams {name:readonly,parameterType:boolean,defaultvalue:false,description:设置编辑器是否为只读态}\n * @ignoreprops autoFocus | overflowMode\n * @ignoreemits blur | focus | infoTextChange | enter\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuill: any = defineComponent({\n name: 'IBizQuill',\n props: getHtmlProps<HtmlEditorController>(),\n emits: getEditorEmits(),\n setup(props, { emit }) {\n const ns = useNamespace('quill');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 请求头\n const headers: Ref<IData> = ref({\n [`${ibiz.env.tokenHeader}Authorization`]: `${\n ibiz.env.tokenPrefix\n }Bearer ${getAppCookie(CoreConst.TOKEN)}`,\n });\n\n // 上传文件路径\n const uploadUrl: Ref<string> = ref('');\n\n // 下载文件路径\n const downloadUrl: Ref<string> = ref('');\n\n // 编辑状态\n const editing: Ref<boolean> = ref(false);\n\n // 更新中\n const updating: Ref<boolean> = ref(false);\n\n // 临时数据\n const tempValue: Ref<string> = ref('');\n\n // 是否完全展开\n const isCollapse: Ref<boolean> = ref(true);\n\n const getImage = (delta: Delta) => {\n const item = delta.ops.find(x => x.insert && (x.insert as IData).image);\n if (item) {\n return (item.insert as IData).image;\n }\n };\n\n const getValue = () => {\n if (c.valueMode === 'text') {\n return quill!.getText();\n }\n return quill!.getSemanticHTML();\n };\n\n // 处理图片上传(文件模式)\n const handleUpload = async (image: string) => {\n const blob = base64ToBlob(image);\n const file = await ibiz.util.file.fileUpload(\n uploadUrl.value,\n blob,\n headers.value,\n );\n const url = downloadUrl.value.replace('%fileId%', file.fileid);\n const value = getValue();\n tempValue.value = value.replace(image, url);\n };\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n const theme = c.showToolbar ? 'snow' : 'bubble';\n quill = new Quill(editorRef.value, {\n theme,\n modules: c.modules,\n readOnly: props.disabled || props.readonly,\n placeholder: c.placeHolder,\n });\n quill.on('text-change', (delta, oldDelta, source) => {\n if (source === 'user') {\n const image = getImage(delta);\n if (image && c.imageMode === 'file') {\n handleUpload(image);\n return;\n }\n tempValue.value = getValue();\n }\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n watch(\n () => [props.disabled, props.readonly],\n () => {\n if (!quill) {\n return;\n }\n if (props.disabled || props.readonly) {\n quill.enable(false);\n } else {\n quill.enable();\n }\n },\n { immediate: true },\n );\n\n // data响应式变更基础路径\n watch(\n () => props.data,\n newVal => {\n if (newVal) {\n const editorParams = { ...c.editorParams };\n if (editorParams.uploadparams) {\n editorParams.uploadParams = JSON.parse(editorParams.uploadparams);\n }\n if (editorParams.exportparams) {\n editorParams.exportParams = JSON.parse(editorParams.exportparams);\n }\n const urls = ibiz.util.file.calcFileUpDownUrl(\n c.context,\n c.params,\n newVal,\n editorParams,\n );\n uploadUrl.value = urls.uploadUrl;\n downloadUrl.value = urls.downloadUrl;\n }\n },\n { immediate: true, deep: true },\n );\n\n watch(\n () => props.value,\n () => {\n if (!quill || !props.value) {\n return;\n }\n tempValue.value = props.value;\n if (c.valueMode === 'text') {\n quill.setText(props.value);\n } else {\n updating.value = true;\n nextTick(() => {\n updating.value = false;\n });\n }\n },\n { immediate: true },\n );\n\n // 展开编辑\n const handleEdit = () => {\n if (!quill) {\n init();\n }\n };\n\n // 取消编辑\n const handleCancel = () => {\n editing.value = false;\n };\n\n // 确认编辑\n const handleConfirm = () => {\n emit('change', tempValue.value);\n editing.value = false;\n };\n\n return {\n ns,\n c,\n lang,\n editing,\n updating,\n editorRef,\n isCollapse,\n handleEdit,\n handleCancel,\n handleConfirm,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n ]}\n >\n {!this.updating && (\n <iBizQuillPreview\n value={this.value}\n controller={this.controller}\n disabled={this.disabled}\n readonly={this.readonly}\n showCollapse={this.c.showCollapse}\n defaultHeight={this.c.defaultHeight}\n isCollapse={this.isCollapse}\n onEdit={() => {\n this.editing = true;\n }}\n onCollapse={(val: boolean) => {\n this.isCollapse = val;\n }}\n />\n )}\n <van-action-sheet\n v-model:show={this.editing}\n teleport='body'\n class={[this.ns.e('popup'), this.ns.m(this.lang.toLowerCase())]}\n onOpened={this.handleEdit}\n >\n <div class={this.ns.e('content')}>\n <div ref='editorRef'>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n </div>\n <div class={this.ns.e('footer')}>\n <van-button class={this.ns.e('cancel')} onClick={this.handleCancel}>\n {ibiz.i18n.t('editor.common.cancel')}\n </van-button>\n <van-button\n class={this.ns.e('confirm')}\n onClick={this.handleConfirm}\n type='primary'\n >\n {ibiz.i18n.t('editor.common.confirm')}\n </van-button>\n </div>\n </van-action-sheet>\n </div>\n );\n },\n});\n\nexport default IBizQuill;\n"],"names":["s","_isVNode","IBizQuill","exports","defineComponent","getHtmlProps","getEditorEmits","props","emit","ns","useNamespace","c","editorRef","ref","lang","quill","headers","getAppCookie","CoreConst","uploadUrl","editing","updating","isCollapse","delta","emits","x","setup","controller","getLang","blob","base64ToBlob","image","downloadUrl","env","value","getValue","Quill","theme","oldDelta","source","tempValue","getImage","item","watch","handleUpload","file","init","newVal","editorParams","readOnly","placeholder","placeHolder","urls","disabled","nextTick","immediate","deep","uploadparams","_slot","_slot2","valueMode","setText","_resolveComponent","val","handleEdit","_createVNode","$event","handleCancel","handleConfirm","render"],"mappings":"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"}
1
+ {"version":3,"file":"quill-editor-DcZd_lqh.js","sources":["../src/editor/html/quill-editor/quill-editor.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, Ref, ref, watch } from 'vue';\nimport {\n getHtmlProps,\n getEditorEmits,\n useNamespace,\n} from '@ibiz-template/vue3-util';\nimport 'quill/dist/quill.core.css';\nimport 'quill/dist/quill.snow.css';\nimport 'quill/dist/quill.bubble.css';\nimport Quill from 'quill';\nimport { Delta } from 'quill/core';\nimport { base64ToBlob, CoreConst, getAppCookie } from '@ibiz-template/core';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor.scss';\n\n/**\n * 移动端HTML编辑框\n * @primary\n * @description 基于Quill深度定制可扩展的富文本编辑器,集成文件/图片上传、实时预览及样式配置功能,提供完整的富媒体编辑解决方案。支持编辑器类型包含:`移动端HTML编辑框`\n * @editorparams {name:uploadparams,parameterType:string,description:上传参数,图片或文件上传时,用于计算上传路径}\n * @editorparams {name:exportparams,parameterType:string,description:下载参数,图片或文件下载时,用于计算下载路径}\n * @editorparams {name:osscat,parameterType:string,description:用于计算上传和下载路径的OSS参数}\n * @editorparams {name:showtoolbar,parameterType:boolean,defaultvalue:true,description:显示工具栏}\n * @editorparams {name:valuemode,parameterType:'text' | 'html',defaultvalue:html,description:值模式,暂时只支持html模式}\n * @editorparams {name:imagemode,parameterType:'base64' | 'file',defaultvalue:'file',description:图片模式}\n * @editorparams {name:modules,parameterType:string,description:quill配置}\n * @editorparams {name:defaultheight,parameterType:number,defaultvalue:200,description:收缩时的高度}\n * @editorparams {name:showcollapse,parameterType:boolean,defaultvalue:true,description:是否显示伸缩按钮}\n * @editorparams {name:readonly,parameterType:boolean,defaultvalue:false,description:设置编辑器是否为只读态}\n * @ignoreprops autoFocus | overflowMode\n * @ignoreemits blur | focus | infoTextChange | enter\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuill: any = defineComponent({\n name: 'IBizQuill',\n props: getHtmlProps<HtmlEditorController>(),\n emits: getEditorEmits(),\n setup(props, { emit }) {\n const ns = useNamespace('quill');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 请求头\n const headers: Ref<IData> = ref({\n [`${ibiz.env.tokenHeader}Authorization`]: `${\n ibiz.env.tokenPrefix\n }Bearer ${getAppCookie(CoreConst.TOKEN)}`,\n });\n\n // 上传文件路径\n const uploadUrl: Ref<string> = ref('');\n\n // 下载文件路径\n const downloadUrl: Ref<string> = ref('');\n\n // 编辑状态\n const editing: Ref<boolean> = ref(false);\n\n // 更新中\n const updating: Ref<boolean> = ref(false);\n\n // 临时数据\n const tempValue: Ref<string> = ref('');\n\n // 是否完全展开\n const isCollapse: Ref<boolean> = ref(true);\n\n const getImage = (delta: Delta) => {\n const item = delta.ops.find(x => x.insert && (x.insert as IData).image);\n if (item) {\n return (item.insert as IData).image;\n }\n };\n\n const getValue = () => {\n if (c.valueMode === 'text') {\n return quill!.getText();\n }\n return quill!.getSemanticHTML();\n };\n\n // 处理图片上传(文件模式)\n const handleUpload = async (image: string) => {\n const blob = base64ToBlob(image);\n const file = await ibiz.util.file.fileUpload(\n uploadUrl.value,\n blob,\n headers.value,\n );\n const url = downloadUrl.value.replace('%fileId%', file.fileid);\n const value = getValue();\n tempValue.value = value.replace(image, url);\n };\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n const theme = c.showToolbar ? 'snow' : 'bubble';\n quill = new Quill(editorRef.value, {\n theme,\n modules: c.modules,\n readOnly: props.disabled || props.readonly,\n placeholder: c.placeHolder,\n });\n quill.on('text-change', (delta, oldDelta, source) => {\n if (source === 'user') {\n const image = getImage(delta);\n if (image && c.imageMode === 'file') {\n handleUpload(image);\n return;\n }\n tempValue.value = getValue();\n }\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n watch(\n () => [props.disabled, props.readonly],\n () => {\n if (!quill) {\n return;\n }\n if (props.disabled || props.readonly) {\n quill.enable(false);\n } else {\n quill.enable();\n }\n },\n { immediate: true },\n );\n\n // data响应式变更基础路径\n watch(\n () => props.data,\n newVal => {\n if (newVal) {\n const editorParams = { ...c.editorParams };\n if (editorParams.uploadparams) {\n editorParams.uploadParams = JSON.parse(editorParams.uploadparams);\n }\n if (editorParams.exportparams) {\n editorParams.exportParams = JSON.parse(editorParams.exportparams);\n }\n const urls = ibiz.util.file.calcFileUpDownUrl(\n c.context,\n c.params,\n newVal,\n editorParams,\n );\n uploadUrl.value = urls.uploadUrl;\n downloadUrl.value = urls.downloadUrl;\n }\n },\n { immediate: true, deep: true },\n );\n\n watch(\n () => props.value,\n () => {\n if (!quill || !props.value) {\n return;\n }\n tempValue.value = props.value;\n if (c.valueMode === 'text') {\n quill.setText(props.value);\n } else {\n updating.value = true;\n nextTick(() => {\n updating.value = false;\n });\n }\n },\n { immediate: true },\n );\n\n // 展开编辑\n const handleEdit = () => {\n if (!quill) {\n init();\n }\n };\n\n // 取消编辑\n const handleCancel = () => {\n editing.value = false;\n };\n\n // 确认编辑\n const handleConfirm = () => {\n emit('change', tempValue.value);\n editing.value = false;\n };\n\n return {\n ns,\n c,\n lang,\n editing,\n updating,\n editorRef,\n isCollapse,\n handleEdit,\n handleCancel,\n handleConfirm,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n ]}\n >\n {!this.updating && (\n <iBizQuillPreview\n value={this.value}\n controller={this.controller}\n disabled={this.disabled}\n readonly={this.readonly}\n showCollapse={this.c.showCollapse}\n defaultHeight={this.c.defaultHeight}\n isCollapse={this.isCollapse}\n onEdit={() => {\n this.editing = true;\n }}\n onCollapse={(val: boolean) => {\n this.isCollapse = val;\n }}\n />\n )}\n <van-action-sheet\n v-model:show={this.editing}\n teleport='body'\n class={[this.ns.e('popup'), this.ns.m(this.lang.toLowerCase())]}\n onOpened={this.handleEdit}\n >\n <div class={this.ns.e('content')}>\n <div ref='editorRef'>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n </div>\n <div class={this.ns.e('footer')}>\n <van-button class={this.ns.e('cancel')} onClick={this.handleCancel}>\n {ibiz.i18n.t('editor.common.cancel')}\n </van-button>\n <van-button\n class={this.ns.e('confirm')}\n onClick={this.handleConfirm}\n type='primary'\n >\n {ibiz.i18n.t('editor.common.confirm')}\n </van-button>\n </div>\n </van-action-sheet>\n </div>\n );\n },\n});\n\nexport default IBizQuill;\n"],"names":["s","_isVNode","IBizQuill","exports","defineComponent","getHtmlProps","getEditorEmits","props","emit","ns","useNamespace","c","editorRef","ref","lang","quill","headers","getAppCookie","CoreConst","uploadUrl","editing","updating","isCollapse","delta","emits","x","setup","controller","getLang","blob","base64ToBlob","image","downloadUrl","env","value","getValue","Quill","theme","oldDelta","source","tempValue","getImage","item","watch","handleUpload","file","init","newVal","editorParams","readOnly","placeholder","placeHolder","urls","disabled","nextTick","immediate","deep","uploadparams","_slot","_slot2","valueMode","setText","_resolveComponent","val","handleEdit","_createVNode","$event","handleCancel","handleConfirm","render"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ System.register(["vue","@ibiz-template/vue3-util","./quill-BOA7ZLOz.js","lodash-es","./index-Bn7VkqJp.js","vant","@ibiz-template/core","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(z){"use strict";var d,t,c,s,v,p,f,m,C,g;return{setters:[function(e){d=e.defineComponent,t=e.createVNode,c=e.resolveComponent,s=e.ref,v=e.onMounted,p=e.nextTick,f=e.watch},function(e){m=e.getHtmlProps,C=e.useNamespace},function(e){g=e.Q},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const e=z("default",d({name:"IBizQuillPreview",props:{...m(),showCollapse:{type:Boolean},defaultHeight:{type:Number,default:200},isCollapse:{type:Boolean,default:!1}},setup(l,{emit:w}){const b=C("quill-preview"),r=l.controller,n=s(null),B=ibiz.i18n.getLang();let H=null;const h=s(""),o=s("auto"),u=s(!1),I=()=>{n.value&&(H=new g(n.value,{theme:"bubble",modules:r.modules,readOnly:!0,placeholder:r.placeHolder}),r.valueMode==="text"&&H.setText(l.value||""))},k=()=>{if(l.isCollapse&&n.value){const i=n.value.offsetHeight;i<l.defaultHeight?(o.value=`${i}px`,u.value=!1):(o.value=`${l.defaultHeight}px`,u.value=!0)}},P=i=>{if(!i)return;const a=i.querySelectorAll("img");let x=0;a.forEach(y=>{y.addEventListener("load",()=>{const T=y.offsetHeight;x+=T,x>l.defaultHeight&&(o.value=`${l.defaultHeight}px`,u.value=!0)})})};v(()=>{I(),p(()=>{k(),P(n.value)})});const q=()=>{w("edit")},M=()=>{h.value=""},N=i=>{const a=i.target;a&&a.tagName==="IMG"&&(h.value=a.src)},L=()=>{w("collapse",!l.isCollapse)},Q=()=>t("div",{class:b.b("collapse-btn"),onClick:L},[t("span",null,[l.isCollapse?ibiz.i18n.t("editor.html.expand"):ibiz.i18n.t("editor.html.collapse")]),l.isCollapse&&t("ion-icon",{name:"caret-down-outline"},null),!l.isCollapse&&t("ion-icon",{name:"caret-up-outline"},null)]);return f(()=>[l.value,l.isCollapse],()=>{k()},{immediate:!0}),{ns:b,lang:B,editorRef:n,previewImage:h,collapseHeight:o,showCollapseBtn:u,handleClick:q,handleContentClick:N,handlePreviewClose:M,renderCollapseBtn:Q}},render(){return t("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase()),this.showCollapse?this.ns.m("show-collapse"):"",this.ns.is("collapse",this.isCollapse)],style:this.ns.cssVarBlock({"height-default":`${this.collapseHeight||""}`})},[t("div",{ref:"editorRef",onClick:this.handleContentClick},[this.controller.valueMode==="html"?t("div",{innerHTML:this.value},null):null]),!this.readonly&&!this.disabled?t("div",{onClick:this.handleClick,class:this.ns.e("edit")},[t("ion-icon",{name:"create-outline"},null)]):null,this.showCollapse&&this.showCollapseBtn&&this.renderCollapseBtn(),t(c("van-popup"),{class:this.ns.e("image-popup"),show:!!this.previewImage,"close-on-popstate":!0,onClose:this.handlePreviewClose},{default:()=>[t(c("iBizPreviewImage"),{url:this.previewImage},null)]})])}}))}}});
2
+ //# sourceMappingURL=quill-editor-preview-DghpeKpg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quill-editor-preview-DghpeKpg.js","sources":["../src/editor/html/quill-editor-preview/quill-editor-preview.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, onMounted, ref, watch } from 'vue';\nimport { getHtmlProps, useNamespace } from '@ibiz-template/vue3-util';\nimport Quill from 'quill';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor-preview.scss';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuillPreview: any = defineComponent({\n name: 'IBizQuillPreview',\n props: {\n ...getHtmlProps<HtmlEditorController>(),\n showCollapse: {\n type: Boolean,\n },\n defaultHeight: {\n type: Number,\n default: 200,\n },\n isCollapse: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { emit }) {\n const ns = useNamespace('quill-preview');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 预览图片路径\n const previewImage = ref('');\n\n // 伸缩内容高度\n const collapseHeight = ref('auto');\n\n // 显示伸缩按钮\n const showCollapseBtn = ref(false);\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n quill = new Quill(editorRef.value, {\n theme: 'bubble',\n modules: c.modules,\n readOnly: true,\n placeholder: c.placeHolder,\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n // 重置伸缩高度\n const resetCollapseHeight = () => {\n if (props.isCollapse && editorRef.value) {\n // 收缩时\n const height = (editorRef.value as HTMLElement).offsetHeight;\n // 内容高度低于设置的默认高度时,拿内容高度作为伸缩高度\n if (height < props.defaultHeight) {\n collapseHeight.value = `${height}px`;\n showCollapseBtn.value = false;\n } else {\n collapseHeight.value = `${props.defaultHeight}px`;\n showCollapseBtn.value = true;\n }\n }\n };\n\n // 监听img加载情况\n const watchHtmlImages = (container: HTMLElement | null) => {\n if (!container) return;\n const images = container.querySelectorAll('img');\n let totalHieght = 0;\n images.forEach(image => {\n image.addEventListener('load', () => {\n const height = image.offsetHeight;\n totalHieght += height;\n if (totalHieght > props.defaultHeight) {\n collapseHeight.value = `${props.defaultHeight}px`;\n showCollapseBtn.value = true;\n }\n });\n });\n };\n\n onMounted(() => {\n init();\n nextTick(() => {\n resetCollapseHeight();\n watchHtmlImages(editorRef.value);\n });\n });\n\n const handleClick = () => {\n emit('edit');\n };\n\n const handlePreviewClose = () => {\n previewImage.value = '';\n };\n\n const handleContentClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (target && target.tagName === 'IMG') {\n previewImage.value = (target as IData).src;\n }\n };\n\n // 点击伸缩按钮\n const onClick = () => {\n // isCollapse.value = !isCollapse.value;\n emit('collapse', !props.isCollapse);\n };\n\n // 绘制伸缩按钮\n const renderCollapseBtn = () => {\n return (\n <div class={ns.b('collapse-btn')} onClick={onClick}>\n <span>\n {props.isCollapse\n ? ibiz.i18n.t('editor.html.expand')\n : ibiz.i18n.t('editor.html.collapse')}\n </span>\n {props.isCollapse && <ion-icon name='caret-down-outline'></ion-icon>}\n {!props.isCollapse && <ion-icon name='caret-up-outline'></ion-icon>}\n </div>\n );\n };\n\n watch(\n () => [props.value, props.isCollapse],\n () => {\n resetCollapseHeight();\n },\n {\n immediate: true,\n },\n );\n\n return {\n ns,\n lang,\n editorRef,\n previewImage,\n collapseHeight,\n showCollapseBtn,\n handleClick,\n handleContentClick,\n handlePreviewClose,\n renderCollapseBtn,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n this.showCollapse ? this.ns.m('show-collapse') : '',\n this.ns.is('collapse', this.isCollapse),\n ]}\n style={this.ns.cssVarBlock({\n 'height-default': `${this.collapseHeight || ''}`,\n })}\n >\n <div ref='editorRef' onClick={this.handleContentClick}>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n {!this.readonly && !this.disabled ? (\n <div onClick={this.handleClick} class={this.ns.e('edit')}>\n <ion-icon name='create-outline'></ion-icon>\n </div>\n ) : null}\n {this.showCollapse && this.showCollapseBtn && this.renderCollapseBtn()}\n <van-popup\n class={this.ns.e('image-popup')}\n show={!!this.previewImage}\n close-on-popstate={true}\n onClose={this.handlePreviewClose}\n >\n <iBizPreviewImage url={this.previewImage}></iBizPreviewImage>\n </van-popup>\n </div>\n );\n },\n});\n\nexport default IBizQuillPreview;\n"],"names":["IBizQuillPreview","name","props","getHtmlProps","showCollapse","type","Boolean","defaultHeight","default","isCollapse","emit","setup","c","ns","useNamespace","controller","quill","editorRef","lang","getLang","showCollapseBtn","ref","collapseHeight","init","value","theme","modules","readOnly","placeholder","placeHolder","resetCollapseHeight","container","images","offsetHeight","totalHieght","height","image","onMounted","watchHtmlImages","nextTick","previewImage","handleContentClick","event","target","handleClick","handlePreviewClose","_createVNode","watch","renderCollapseBtn","immediate","_resolveComponent","render","disabled","m"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- System.register(["vue","@ibiz-template/vue3-util","ramda","@ibiz-template/runtime","lodash-es","qx-util","@ibiz-template-package/vs-tree-ex","./index-FB2X3Nyy.js","vant","@ibiz-template/core","@floating-ui/dom","vue-router","pinia","dayjs","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(Z){"use strict";var B,K,p,g,w,D,m,P,T,k,A,j,V,M,$,q,H,O,x,N,U,F;return{setters:[function(a){B=a.defineComponent,K=a.withDirectives,p=a.createVNode,g=a.resolveComponent,w=a.resolveDirective,D=a.computed,m=a.ref,P=a.onUnmounted,T=a.isVNode,k=a.h,A=a.createApp},function(a){j=a.useControlController,V=a.useNamespace,M=a.IBizControlShell,$=a.IBizIcon},function(a){q=a.isNil},function(a){H=a.TreeController,O=a.getControlPanel},function(a){x=a.debounce},function(a){N=a.createUUID},function(a){U=a.VsTreeComponent},function(a){F=a.c},null,null,null,null,null,null,null,null,null,null],execute:function(){function a(u){return typeof u=="function"||Object.prototype.toString.call(u)==="[object Object]"&&!T(u)}const R=B({name:"IBizTreeControl",components:{"vs-tree":U},props:{modelData:{type:Object,required:!0},context:{type:Object,required:!0},params:{type:Object,default:()=>({})},provider:{type:Object},mdctrlActiveMode:{type:Number,default:2},singleSelect:{type:Boolean,default:!0},navigational:{type:Boolean,default:void 0}},setup(){var u,_;const o=j((...t)=>new H(...t)),f=V(`control-${o.model.controlType.toLowerCase()}`),S=D(()=>o.state.selectedData.map(t=>t._id));let y=[];const h=m(),E=m(N()),ee=m(""),Q=N(),Y=m(!0),C=m(!1),G=o.crumbShowMode==="HEADERSTYLE"||o.state.navigational,te=t=>{const e=k($,t),n=A(e),s=document.createElement("span");return n.mount(s),y.push(n),s},I=t=>t.map(e=>{const n=e?._icon?te({icon:e?._icon}):"";return{_id:e._id,id:e._id,_uuid:e._uuid,_leaf:e._leaf,_text:e._text,icon:n,_disableSelect:e._disableSelect}}),J=D(()=>{if(!o.state.isLoaded)return[];const t=o.model.rootVisible?o.state.rootNodes:o.state.rootNodes.reduce((e,n)=>n._children?e.concat(n._children):e,[]);return I(t)}),ne=t=>{const e=o.getNodeData(t);if(e)return o.getNodeModel(e._nodeId)},oe=t=>{const e=o.getNodeData(t);if(e){const n=o.getNodeModel(e._nodeId),s=n?O(n):void 0;if(s)return{nodeData:e,layoutPanel:s}}},se=()=>{var t;if(h.value){h.value.tree.tree.store.checkedKeys=S.value,h.value.tree.tree.store.setDefaultChecked();const e=((t=h.value.tree.tree.store.breadcrumb)==null?void 0:t.list)||[];C.value=e.length<2}},ae=async(t,e)=>{if(!o.state.isLoaded)return;let n;const s=o.getNodeData(t.data._uuid);if(s&&s._children&&!o.state.query?(ibiz.log.debug("\u8282\u70B9\u5C55\u5F00\u52A0\u8F7D-\u672C\u5730",s),n=s._children):(ibiz.log.debug("\u8282\u70B9\u5C55\u5F00\u52A0\u8F7D-\u8FDC\u7A0B",s),n=await o.loadNodes(s)),n&&o.state.rootNodes.includes(n[0])){e(J.value),o.state.mobExpandedKey="",E.value=N();return}e(I(n)),se()},W=(t,e)=>{if(o.state.singleSelect)return;const{originData:n}=e,{selectedData:s}=o.state,i=o.getNodeData(n._uuid),r=s.filter(l=>l._id!==i._id);r.length===s.length?o.setSelection(s.concat([i])):o.setSelection(r)},X=(t,e)=>{t.stopPropagation();const{originData:n}=e;W(t,e),o.onTreeNodeClick(n,t)},L=t=>{o.state.mobExpandedKey=t._uuid||""},re=(t,e)=>{var n;t.preventDefault(),t.stopPropagation();const s=e?.parent.list,i=s.length-2,r=s[i];if(!r)return;const l=r.store,c=(n=r.store)==null?void 0:n.data;s.splice(i+1),l.update(),L(c)},ie=x(async()=>{var t,e,n,s,i,r,l,c,d;if(h.value){const v=(i=(s=(n=(e=(t=h.value)==null?void 0:t.tree)==null?void 0:e.tree)==null?void 0:n.store)==null?void 0:s.breadcrumb)==null?void 0:i.list,b=v?v[v.length-1]:null;b&&(b.childNodes=[],(d=(c=(l=(r=h.value)==null?void 0:r.tree)==null?void 0:l.tree)==null?void 0:c.store)==null||d.nodesChange([]),b.loaded=!1,b.setExpand(!0))}},500),ce=async t=>{o.state.query=t,await o.load()};o.evt.on("onAfterRefreshParent",()=>{ie()}),o.evt.on("onLoadSuccess",()=>{o.state.mobExpandedKey="",E.value=N()});const le=t=>({id:t._id,name:t._text,children:t._children,isLeaf:t._leaf}),de=t=>{const{originData:e,loadingEl:n}=t;S.value.includes(e._id)&&n&&(n.parentNode.parentNode.classList.add("selected"),t.store.selectedCurrent=t)},ue=(t,e)=>{const{originData:n}=e,s=oe(n._id);if(s){const{nodeData:i,layoutPanel:r}=s,l=k(M,{data:i,modelData:r,context:o.context,params:o.params}),c=F(l);return c.mount(t),y.push(c),t}},he=(t,e)=>{var n;const{loadingEl:s,originData:i}=e,r=ne(i._id);s&&((n=r?.sysCss)!=null&&n.cssName)&&s.parentNode.parentNode.classList.add(`${r.sysCss.cssName}`),o.state.singleSelect&&de(e);const l=[];if(r?.counterId){const c=o.state.counterData[r.counterId];if(!(q(c)||r.counterMode===1&&c===0)){const d=document.createElement("div");d.className=`ibiz-badge tree-counter ${f.is("mob",!0)}`,d.innerText=c>99?"99+":c,l.push(d)}}if(!i._leaf){const c=document.createElement("i");c.className="van-icon van-icon-arrow",l.push(c)}return t("div",{className:`tree-button ${f.b("node-expanded-btn")}`,click:(c,d)=>{i._leaf||(d.store.breadcrumb.list.push(d),d.setExpand(!0),L(i))},children:l})},pe=(t,e)=>{const{checked:n}=e;e.setChecked(!n),X(t,e)},z={maxHeight:"100%",checkInherit:!1,nocheckParent:!0,rootName:(_=(u=o.model.detreeNodes)==null?void 0:u.find(t=>t.rootNode))==null?void 0:_.name,virtual:{showCount:30},renderNode:ue,renderContent:he,customNodeClick:pe};Y.value&&(Object.assign(z,{breadcrumb:{el:`#breadcrumb${Q}`,link:(t,e)=>{var n,s;if((((s=(n=t.store)==null?void 0:n.breadcrumb)==null?void 0:s.list)||[]).length<2)return C.value=!0,null;C.value=!1;const r=document.createElement("span"),l=document.createElement("span");return l.innerText=e.name,e.icon instanceof HTMLElement&&r.appendChild(e.icon.cloneNode(!0)),r.appendChild(l),r.className=`${f.be("header","crumb")} ${f.is("root",e._vsroot)}`,r.onclick=()=>L.bind(this)(e),r},separator:">"}}),G&&Object.assign(z.breadcrumb,{icon:(...t)=>{const e=t[2],n=document.createElement("span"),s=document.createElement("i");return s.className="van-icon van-icon-arrow-left",n.className=`${f.bem("header","crumb","back-btn")}`,n.appendChild(s),n.onclick=i=>re.bind(this)(i,e),n}}));const ve=x(async t=>{const{mobExpandedKey:e}=o.state,n=e||o.state.rootNodes[0]._uuid,s=o.getNodeData(n);if(!s)return;const i=o.getLoadMoreInfoItems(s._id);if(!i)return;const r=i.some(v=>v.curPage<v.totalPage-1),{scrollTop:l,clientHeight:c,scrollHeight:d}=t.target;if(r&&l+c>=d-10){const v=I(await o.loadNodes(s,!0)),b=!o.model.rootVisible&&!e?void 0:e,me=h.value.getNodeById(b);v.forEach(fe=>me.append(fe))}},300,{leading:!0});return P(()=>{y.forEach(t=>{t.unmount()}),y=[]}),{c:o,ns:f,uuid:Q,options:z,treeRef:h,treeData:J,breadcrumb:Y,currentVal:ee,checkedKeys:S,treeRefreshKey:E,hiddenBreadcrumb:C,isHeaderStyle:G,onInput:ce,loadData:ae,onScroll:ve,onNodeCheck:W,onNodeClick:X,treeDataFormat:le}},render(){const u={searchbar:()=>this.c.enableQuickSearch?p(g("van-search"),{modelValue:this.c.state.query,class:this.ns.b("quick-search"),clearable:!0,placeholder:this.c.state.placeHolder,"onUpdate:model-value":this.onInput},null):null},_=this.c.controlPanel?"tree":"default";return u[_]=()=>{const o=[this.breadcrumb&&p("div",{class:[this.ns.be("header","container"),this.ns.is("hidden",this.hiddenBreadcrumb)]},[p(g("van-sticky"),null,{default:()=>[p("div",{id:`breadcrumb${this.uuid}`,class:[this.ns.b("header"),this.ns.is("no-root",!this.treeData.length),this.ns.is("header-style",this.isHeaderStyle)]},null)]})]),this.c.state.isCreated&&this.c.state.isLoaded&&p(g("vs-tree"),{"show-line":!0,ref:"treeRef",lazy:!0,showIcon:!0,strictLeaf:!0,data:this.treeData,options:this.options,highlightCurrent:!0,key:this.treeRefreshKey,class:this.ns.b("content"),checkedKeys:this.checkedKeys,expandKeys:this.c.state.expandedKeys,"show-checkbox":!this.c.state.singleSelect,load:this.loadData,onScroll:this.onScroll,onCheck:this.onNodeCheck,format:this.treeDataFormat},null)];return p("div",{class:this.ns.b("container")},[o])},K(p(g("iBizControlBase"),{controller:this.c},a(u)?u:{default:()=>[u]}),[[w("loading"),this.c.state.isLoading]])}});Z({TreeControl:R,default:R})}}});
2
- //# sourceMappingURL=tree-CgxZzCGY.js.map
1
+ System.register(["vue","@ibiz-template/vue3-util","ramda","@ibiz-template/runtime","lodash-es","qx-util","@ibiz-template-package/vs-tree-ex","./index-Bn7VkqJp.js","vant","@ibiz-template/core","@floating-ui/dom","vue-router","pinia","dayjs","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(Z){"use strict";var B,K,p,g,w,D,m,P,T,k,A,j,V,M,$,q,H,O,x,N,U,F;return{setters:[function(a){B=a.defineComponent,K=a.withDirectives,p=a.createVNode,g=a.resolveComponent,w=a.resolveDirective,D=a.computed,m=a.ref,P=a.onUnmounted,T=a.isVNode,k=a.h,A=a.createApp},function(a){j=a.useControlController,V=a.useNamespace,M=a.IBizControlShell,$=a.IBizIcon},function(a){q=a.isNil},function(a){H=a.TreeController,O=a.getControlPanel},function(a){x=a.debounce},function(a){N=a.createUUID},function(a){U=a.VsTreeComponent},function(a){F=a.c},null,null,null,null,null,null,null,null,null,null],execute:function(){function a(u){return typeof u=="function"||Object.prototype.toString.call(u)==="[object Object]"&&!T(u)}const R=B({name:"IBizTreeControl",components:{"vs-tree":U},props:{modelData:{type:Object,required:!0},context:{type:Object,required:!0},params:{type:Object,default:()=>({})},provider:{type:Object},mdctrlActiveMode:{type:Number,default:2},singleSelect:{type:Boolean,default:!0},navigational:{type:Boolean,default:void 0}},setup(){var u,_;const o=j((...t)=>new H(...t)),f=V(`control-${o.model.controlType.toLowerCase()}`),S=D(()=>o.state.selectedData.map(t=>t._id));let y=[];const h=m(),E=m(N()),ee=m(""),Q=N(),Y=m(!0),C=m(!1),G=o.crumbShowMode==="HEADERSTYLE"||o.state.navigational,te=t=>{const e=k($,t),n=A(e),s=document.createElement("span");return n.mount(s),y.push(n),s},I=t=>t.map(e=>{const n=e?._icon?te({icon:e?._icon}):"";return{_id:e._id,id:e._id,_uuid:e._uuid,_leaf:e._leaf,_text:e._text,icon:n,_disableSelect:e._disableSelect}}),J=D(()=>{if(!o.state.isLoaded)return[];const t=o.model.rootVisible?o.state.rootNodes:o.state.rootNodes.reduce((e,n)=>n._children?e.concat(n._children):e,[]);return I(t)}),ne=t=>{const e=o.getNodeData(t);if(e)return o.getNodeModel(e._nodeId)},oe=t=>{const e=o.getNodeData(t);if(e){const n=o.getNodeModel(e._nodeId),s=n?O(n):void 0;if(s)return{nodeData:e,layoutPanel:s}}},se=()=>{var t;if(h.value){h.value.tree.tree.store.checkedKeys=S.value,h.value.tree.tree.store.setDefaultChecked();const e=((t=h.value.tree.tree.store.breadcrumb)==null?void 0:t.list)||[];C.value=e.length<2}},ae=async(t,e)=>{if(!o.state.isLoaded)return;let n;const s=o.getNodeData(t.data._uuid);if(s&&s._children&&!o.state.query?(ibiz.log.debug("\u8282\u70B9\u5C55\u5F00\u52A0\u8F7D-\u672C\u5730",s),n=s._children):(ibiz.log.debug("\u8282\u70B9\u5C55\u5F00\u52A0\u8F7D-\u8FDC\u7A0B",s),n=await o.loadNodes(s)),n&&o.state.rootNodes.includes(n[0])){e(J.value),o.state.mobExpandedKey="",E.value=N();return}e(I(n)),se()},W=(t,e)=>{if(o.state.singleSelect)return;const{originData:n}=e,{selectedData:s}=o.state,i=o.getNodeData(n._uuid),r=s.filter(l=>l._id!==i._id);r.length===s.length?o.setSelection(s.concat([i])):o.setSelection(r)},X=(t,e)=>{t.stopPropagation();const{originData:n}=e;W(t,e),o.onTreeNodeClick(n,t)},L=t=>{o.state.mobExpandedKey=t._uuid||""},re=(t,e)=>{var n;t.preventDefault(),t.stopPropagation();const s=e?.parent.list,i=s.length-2,r=s[i];if(!r)return;const l=r.store,c=(n=r.store)==null?void 0:n.data;s.splice(i+1),l.update(),L(c)},ie=x(async()=>{var t,e,n,s,i,r,l,c,d;if(h.value){const v=(i=(s=(n=(e=(t=h.value)==null?void 0:t.tree)==null?void 0:e.tree)==null?void 0:n.store)==null?void 0:s.breadcrumb)==null?void 0:i.list,b=v?v[v.length-1]:null;b&&(b.childNodes=[],(d=(c=(l=(r=h.value)==null?void 0:r.tree)==null?void 0:l.tree)==null?void 0:c.store)==null||d.nodesChange([]),b.loaded=!1,b.setExpand(!0))}},500),ce=async t=>{o.state.query=t,await o.load()};o.evt.on("onAfterRefreshParent",()=>{ie()}),o.evt.on("onLoadSuccess",()=>{o.state.mobExpandedKey="",E.value=N()});const le=t=>({id:t._id,name:t._text,children:t._children,isLeaf:t._leaf}),de=t=>{const{originData:e,loadingEl:n}=t;S.value.includes(e._id)&&n&&(n.parentNode.parentNode.classList.add("selected"),t.store.selectedCurrent=t)},ue=(t,e)=>{const{originData:n}=e,s=oe(n._id);if(s){const{nodeData:i,layoutPanel:r}=s,l=k(M,{data:i,modelData:r,context:o.context,params:o.params}),c=F(l);return c.mount(t),y.push(c),t}},he=(t,e)=>{var n;const{loadingEl:s,originData:i}=e,r=ne(i._id);s&&((n=r?.sysCss)!=null&&n.cssName)&&s.parentNode.parentNode.classList.add(`${r.sysCss.cssName}`),o.state.singleSelect&&de(e);const l=[];if(r?.counterId){const c=o.state.counterData[r.counterId];if(!(q(c)||r.counterMode===1&&c===0)){const d=document.createElement("div");d.className=`ibiz-badge tree-counter ${f.is("mob",!0)}`,d.innerText=c>99?"99+":c,l.push(d)}}if(!i._leaf){const c=document.createElement("i");c.className="van-icon van-icon-arrow",l.push(c)}return t("div",{className:`tree-button ${f.b("node-expanded-btn")}`,click:(c,d)=>{i._leaf||(d.store.breadcrumb.list.push(d),d.setExpand(!0),L(i))},children:l})},pe=(t,e)=>{const{checked:n}=e;e.setChecked(!n),X(t,e)},z={maxHeight:"100%",checkInherit:!1,nocheckParent:!0,rootName:(_=(u=o.model.detreeNodes)==null?void 0:u.find(t=>t.rootNode))==null?void 0:_.name,virtual:{showCount:30},renderNode:ue,renderContent:he,customNodeClick:pe};Y.value&&(Object.assign(z,{breadcrumb:{el:`#breadcrumb${Q}`,link:(t,e)=>{var n,s;if((((s=(n=t.store)==null?void 0:n.breadcrumb)==null?void 0:s.list)||[]).length<2)return C.value=!0,null;C.value=!1;const r=document.createElement("span"),l=document.createElement("span");return l.innerText=e.name,e.icon instanceof HTMLElement&&r.appendChild(e.icon.cloneNode(!0)),r.appendChild(l),r.className=`${f.be("header","crumb")} ${f.is("root",e._vsroot)}`,r.onclick=()=>L.bind(this)(e),r},separator:">"}}),G&&Object.assign(z.breadcrumb,{icon:(...t)=>{const e=t[2],n=document.createElement("span"),s=document.createElement("i");return s.className="van-icon van-icon-arrow-left",n.className=`${f.bem("header","crumb","back-btn")}`,n.appendChild(s),n.onclick=i=>re.bind(this)(i,e),n}}));const ve=x(async t=>{const{mobExpandedKey:e}=o.state,n=e||o.state.rootNodes[0]._uuid,s=o.getNodeData(n);if(!s)return;const i=o.getLoadMoreInfoItems(s._id);if(!i)return;const r=i.some(v=>v.curPage<v.totalPage-1),{scrollTop:l,clientHeight:c,scrollHeight:d}=t.target;if(r&&l+c>=d-10){const v=I(await o.loadNodes(s,!0)),b=!o.model.rootVisible&&!e?void 0:e,me=h.value.getNodeById(b);v.forEach(fe=>me.append(fe))}},300,{leading:!0});return P(()=>{y.forEach(t=>{t.unmount()}),y=[]}),{c:o,ns:f,uuid:Q,options:z,treeRef:h,treeData:J,breadcrumb:Y,currentVal:ee,checkedKeys:S,treeRefreshKey:E,hiddenBreadcrumb:C,isHeaderStyle:G,onInput:ce,loadData:ae,onScroll:ve,onNodeCheck:W,onNodeClick:X,treeDataFormat:le}},render(){const u={searchbar:()=>this.c.enableQuickSearch?p(g("van-search"),{modelValue:this.c.state.query,class:this.ns.b("quick-search"),clearable:!0,placeholder:this.c.state.placeHolder,"onUpdate:model-value":this.onInput},null):null},_=this.c.controlPanel?"tree":"default";return u[_]=()=>{const o=[this.breadcrumb&&p("div",{class:[this.ns.be("header","container"),this.ns.is("hidden",this.hiddenBreadcrumb)]},[p(g("van-sticky"),null,{default:()=>[p("div",{id:`breadcrumb${this.uuid}`,class:[this.ns.b("header"),this.ns.is("no-root",!this.treeData.length),this.ns.is("header-style",this.isHeaderStyle)]},null)]})]),this.c.state.isCreated&&this.c.state.isLoaded&&p(g("vs-tree"),{"show-line":!0,ref:"treeRef",lazy:!0,showIcon:!0,strictLeaf:!0,data:this.treeData,options:this.options,highlightCurrent:!0,key:this.treeRefreshKey,class:this.ns.b("content"),checkedKeys:this.checkedKeys,expandKeys:this.c.state.expandedKeys,"show-checkbox":!this.c.state.singleSelect,load:this.loadData,onScroll:this.onScroll,onCheck:this.onNodeCheck,format:this.treeDataFormat},null)];return p("div",{class:this.ns.b("container")},[o])},K(p(g("iBizControlBase"),{controller:this.c},a(u)?u:{default:()=>[u]}),[[w("loading"),this.c.state.isLoading]])}});Z({TreeControl:R,default:R})}}});
2
+ //# sourceMappingURL=tree-BTa0bMPr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree-CgxZzCGY.js","sources":["../src/control/tree/tree.tsx"],"sourcesContent":["import {\n IBizIcon,\n useNamespace,\n IBizControlShell,\n useControlController,\n} from '@ibiz-template/vue3-util';\nimport {\n h,\n App,\n ref,\n VNode,\n computed,\n PropType,\n createApp,\n onUnmounted,\n defineComponent,\n} from 'vue';\nimport { isNil } from 'ramda';\nimport { IDETree, IDETreeNode } from '@ibiz/model-core';\nimport {\n ITreeNodeData,\n TreeController,\n IControlProvider,\n getControlPanel,\n} from '@ibiz-template/runtime';\nimport { debounce } from 'lodash-es';\nimport { createUUID } from 'qx-util';\nimport { VsTreeComponent } from '@ibiz-template-package/vs-tree-ex';\nimport { createVueApp } from '../../mob-app/create-vue-app';\nimport './tree.scss';\n\nexport const TreeControl = defineComponent({\n name: 'IBizTreeControl',\n components: {\n 'vs-tree': VsTreeComponent,\n },\n props: {\n /**\n * @description 树控件模型数据\n */\n modelData: { type: Object as PropType<IDETree>, required: true },\n /**\n * @description 应用上下文对象\n */\n context: { type: Object as PropType<IContext>, required: true },\n /**\n * @description 视图参数对象\n * @default {}\n */\n params: { type: Object as PropType<IParams>, default: () => ({}) },\n /**\n * @description 部件适配器\n */\n provider: { type: Object as PropType<IControlProvider> },\n /**\n * @description 部件激活模式,值为0:无激活,值为1:单击激活,值为2:双击激活\n * @default 2\n */\n mdctrlActiveMode: { type: Number, default: 2 },\n /**\n * @description 是否单选\n * @default true\n */\n singleSelect: { type: Boolean, default: true },\n /**\n * @description 是否是导航内的(即树导航里的树)\n */\n navigational: { type: Boolean, default: undefined },\n },\n setup() {\n const c: TreeController = useControlController<TreeController>(\n (...args) => new TreeController(...args),\n );\n const ns = useNamespace(`control-${c.model.controlType!.toLowerCase()}`);\n // 默认选中项\n const checkedKeys = computed(() => {\n return c.state.selectedData.map(item => item._id);\n });\n\n // 节点创建的app实例,用于组件销毁时销毁所有实例\n let vueApps: App[] = [];\n // 引用的树组件实例\n const treeRef = ref();\n // 用于树强制刷新\n const treeRefreshKey = ref(createUUID());\n\n // 快捷搜索值\n const currentVal = ref('');\n\n const uuid = createUUID();\n\n // 启用面包屑功能\n const breadcrumb = ref(true);\n\n // 隐藏显示面包屑\n const hiddenBreadcrumb = ref(false);\n\n const isHeaderStyle =\n c.crumbShowMode === 'HEADERSTYLE' || c.state.navigational;\n\n // 创建图标节点\n const createIconNode = (customProps: IData) => {\n const iop = h(IBizIcon, customProps);\n const vueApp = createApp(iop);\n const dom = document.createElement('span');\n vueApp.mount(dom);\n vueApps.push(vueApp);\n return dom;\n };\n\n /**\n * 创建新的节点对象,隔离组件数据和controller数据\n * @param {ITreeNodeData[]} nodes\n * @return {*} {IData[]}\n */\n const toElNodes = (nodes: ITreeNodeData[]): IData[] => {\n return nodes.map(node => {\n const iconDom = node?._icon\n ? createIconNode({ icon: node?._icon })\n : '';\n return {\n _id: node._id,\n id: node._id,\n _uuid: node._uuid,\n _leaf: node._leaf,\n _text: node._text,\n icon: iconDom,\n _disableSelect: node._disableSelect,\n };\n });\n };\n\n /** 树展示数据 */\n const treeData = computed(() => {\n if (!c.state.isLoaded) {\n return [];\n }\n const nodes = c.model.rootVisible\n ? c.state.rootNodes\n : c.state.rootNodes.reduce<ITreeNodeData[]>((result, nodeData) => {\n if (nodeData._children) {\n return result.concat(nodeData._children as ITreeNodeData[]);\n }\n return result;\n }, []);\n return toElNodes(nodes as ITreeNodeData[]);\n });\n\n /**\n * @description 查找节点模型\n * @param {string} key\n * @returns {*} {(IDETreeNode | undefined)}\n */\n const findNodeModel = (key: string): IDETreeNode | undefined => {\n const nodeData = c.getNodeData(key);\n if (nodeData) return c.getNodeModel(nodeData._nodeId);\n };\n\n /**\n * @description 查找节点视图布局面板\n * @param {string} key\n * @returns {*}\n */\n const findNodeLayoutPanel = (key: string) => {\n const nodeData = c.getNodeData(key);\n if (nodeData) {\n const nodeModel = c.getNodeModel(nodeData._nodeId);\n const layoutPanel = nodeModel ? getControlPanel(nodeModel) : undefined;\n if (layoutPanel) return { nodeData, layoutPanel };\n }\n };\n\n /**\n * @description 更新vs树,防止树节点数据加载完后选中数据丢失\n */\n const updateUI = () => {\n if (treeRef.value) {\n treeRef.value.tree.tree.store.checkedKeys = checkedKeys.value;\n treeRef.value.tree.tree.store.setDefaultChecked();\n const list = treeRef.value.tree.tree.store.breadcrumb?.list || [];\n hiddenBreadcrumb.value = list.length < 2;\n }\n };\n\n /**\n * 触发节点加载数据\n * @author zk\n * @date 2023-05-29 09:16:07\n * @param {IData} item\n * @param {(nodes: IData[]) => void} callback\n */\n const loadData = async (\n item: IData,\n callback: (nodes: IData[]) => void,\n ) => {\n // 没加载前拦截\n if (!c.state.isLoaded) return;\n // 加载时拦截点击事件\n let nodes: ITreeNodeData[];\n const nodeData = c.getNodeData(item.data._uuid)!;\n // 有搜索值为搜索框搜索,必须请求后台数据过滤\n if (nodeData && nodeData._children && !c.state.query) {\n ibiz.log.debug('节点展开加载-本地', nodeData);\n nodes = nodeData._children;\n } else {\n ibiz.log.debug('节点展开加载-远程', nodeData);\n nodes = await c.loadNodes(nodeData);\n }\n // 根节点搜索时,返回树展示数据,并强制刷新\n if (nodes && c.state.rootNodes.includes(nodes[0])) {\n callback(treeData.value);\n c.state.mobExpandedKey = '';\n treeRefreshKey.value = createUUID();\n return;\n }\n callback(toElNodes(nodes));\n updateUI();\n };\n\n /**\n * 多选时选中节点变更\n *\n * @param {ITreeNodeData} nodeData\n */\n const onNodeCheck = (event: MouseEvent, opts: IData) => {\n if (c.state.singleSelect) return;\n const { originData } = opts;\n // 选中相关处理\n const { selectedData } = c.state;\n const nodeData = c.getNodeData(originData._uuid)!;\n // 选中里没有则添加,有则删除\n const filterArr = selectedData.filter(\n (item: IData) => item._id !== nodeData._id,\n );\n if (filterArr.length === selectedData.length) {\n c.setSelection(selectedData.concat([nodeData]));\n } else {\n c.setSelection(filterArr);\n }\n };\n\n const onNodeClick = (event: MouseEvent, opts: IData) => {\n event.stopPropagation();\n const { originData } = opts;\n onNodeCheck(event, opts);\n c.onTreeNodeClick(originData, event);\n };\n\n // 处理展开节点切换\n const handleExpandedLastKey = (data: IData) => {\n c.state.mobExpandedKey = data._uuid || '';\n };\n\n // 面包屑回退按钮点击事件\n const handleCrumbBack = (_e: MouseEvent, crumbItem?: IData) => {\n _e.preventDefault();\n _e.stopPropagation();\n\n const breads = crumbItem?.parent.list;\n const prevIndex = breads.length - 2;\n const prevNode = breads[prevIndex];\n if (!prevNode) return;\n const store = prevNode.store;\n const _data = prevNode.store?.data;\n breads.splice(prevIndex + 1);\n store.update();\n handleExpandedLastKey(_data);\n };\n\n // 搜索\n const debounceSearch = debounce(async () => {\n if (treeRef.value) {\n // 获取最后展开的节点\n const list = treeRef.value?.tree?.tree?.store?.breadcrumb?.list;\n const breadcrumbListLast = list ? list[list.length - 1] : null;\n if (breadcrumbListLast) {\n breadcrumbListLast.childNodes = [];\n treeRef.value?.tree?.tree?.store?.nodesChange([]);\n breadcrumbListLast.loaded = false;\n breadcrumbListLast.setExpand(true);\n }\n }\n }, 500);\n\n const onInput = async (value: string): Promise<void> => {\n c.state.query = value;\n await c.load();\n };\n\n c.evt.on('onAfterRefreshParent', () => {\n debounceSearch();\n });\n\n c.evt.on('onLoadSuccess', () => {\n c.state.mobExpandedKey = '';\n treeRefreshKey.value = createUUID();\n });\n\n /**\n * 树数据格式化\n *\n * @author zk\n * @date 2023-07-03 11:07:59\n * @param {ITreeNodeData} data\n * @return {*}\n */\n const treeDataFormat = (data: ITreeNodeData) => {\n return {\n id: data._id,\n name: data._text,\n children: data._children,\n isLeaf: data._leaf,\n };\n };\n\n /**\n * 处理单选默认选中样式\n *\n * @author ljx\n * @date 2024-12-12 15:07:59\n * @param {IData} opts\n * @return {*}\n */\n const handleSingleSelect = (opts: IData) => {\n const { originData, loadingEl } = opts;\n if (checkedKeys.value.includes(originData._id) && loadingEl) {\n loadingEl.parentNode.parentNode.classList.add('selected');\n opts.store.selectedCurrent = opts;\n }\n };\n\n /**\n * @description 绘制节点\n * @param {HTMLDivElement} dom 父dom元素\n * @param {IData} opts 配置\n * @returns {*}\n */\n const renderNode = (dom: HTMLDivElement, opts: IData) => {\n const { originData } = opts;\n const nodeLayoutPanel = findNodeLayoutPanel(originData._id);\n if (nodeLayoutPanel) {\n const { nodeData, layoutPanel } = nodeLayoutPanel;\n const nodePanel = h(IBizControlShell, {\n data: nodeData,\n modelData: layoutPanel,\n context: c.context,\n params: c.params,\n });\n const vueApp = createVueApp(nodePanel);\n vueApp.mount(dom);\n vueApps.push(vueApp);\n return dom;\n }\n };\n\n const renderContent = (\n _h: (tag: string, opt: IData) => VNode,\n opts: IData,\n ) => {\n // 添加节点样式表\n const { loadingEl, originData } = opts;\n const nodeModel = findNodeModel(originData._id);\n if (loadingEl && nodeModel?.sysCss?.cssName)\n loadingEl.parentNode.parentNode.classList.add(\n `${nodeModel.sysCss.cssName}`,\n );\n if (c.state.singleSelect) handleSingleSelect(opts);\n\n const children: HTMLElement[] = [];\n\n // 添加计数器\n if (nodeModel?.counterId) {\n const count = c.state.counterData[nodeModel.counterId];\n if (!(isNil(count) || (nodeModel.counterMode === 1 && count === 0))) {\n const child = document.createElement('div');\n child.className = `ibiz-badge tree-counter ${ns.is('mob', true)}`;\n child.innerText = count > 99 ? `${99}+` : count;\n children.push(child);\n }\n }\n\n // 非叶子节点添加展开图标\n if (!originData._leaf) {\n const child = document.createElement('i');\n child.className = 'van-icon van-icon-arrow';\n children.push(child);\n }\n\n // 节点内容区绘制\n return _h('div', {\n className: `tree-button ${ns.b('node-expanded-btn')}`,\n click: (e: Event, _opts: IData) => {\n if (originData._leaf) return;\n _opts.store.breadcrumb.list.push(_opts);\n _opts.setExpand(true);\n handleExpandedLastKey(originData);\n },\n children,\n });\n };\n\n const customNodeClick = (event: MouseEvent, opts: IData) => {\n const { checked } = opts;\n opts.setChecked(!checked);\n onNodeClick(event, opts);\n };\n\n // vs树配置项\n const options = {\n maxHeight: '100%',\n // 继承父状态\n checkInherit: false,\n // 不能选择父节点\n nocheckParent: true,\n rootName: c.model.detreeNodes?.find(item => item.rootNode)?.name,\n virtual: {\n showCount: 30, // 虚拟列表显示数量,太少时会导致虚拟列表无法滚动\n },\n renderNode,\n renderContent,\n customNodeClick,\n } as IParams;\n\n if (breadcrumb.value) {\n Object.assign(options, {\n breadcrumb: {\n el: `#breadcrumb${uuid}`,\n link: (node: IData, data: IData) => {\n const list = node.store?.breadcrumb?.list || [];\n if (list.length < 2) {\n hiddenBreadcrumb.value = true;\n return null;\n }\n hiddenBreadcrumb.value = false;\n const content = document.createElement('span');\n const textDom = document.createElement('span');\n textDom.innerText = data.name;\n if (data.icon instanceof HTMLElement) {\n content.appendChild(data.icon.cloneNode(true));\n }\n content.appendChild(textDom);\n content.className = `${ns.be('header', 'crumb')} ${ns.is(\n 'root',\n data._vsroot,\n )}`;\n content.onclick = () => handleExpandedLastKey.bind(this)(data);\n return content;\n },\n separator: '>',\n },\n });\n\n if (isHeaderStyle) {\n Object.assign(options.breadcrumb, {\n icon: (...args: IParams[]) => {\n const crumbItem = args[2];\n const content = document.createElement('span');\n const iconDom = document.createElement('i');\n iconDom.className = 'van-icon van-icon-arrow-left';\n content.className = `${ns.bem('header', 'crumb', 'back-btn')}`;\n content.appendChild(iconDom);\n content.onclick = (_e: MouseEvent) =>\n handleCrumbBack.bind(this)(_e, crumbItem);\n return content;\n },\n });\n }\n }\n\n /**\n * 滚动事件\n * - 加载更多\n */\n const onScroll = debounce(\n async (event: MouseEvent) => {\n const { mobExpandedKey } = c.state;\n // 当前展开节点默认是根节点\n const expandNodeKey = mobExpandedKey || c.state.rootNodes[0]._uuid;\n const nodeData = c.getNodeData(expandNodeKey);\n if (!nodeData) return;\n const infoItems = c.getLoadMoreInfoItems(nodeData._id);\n if (!infoItems) return;\n const result = infoItems.some(infoItem => {\n return infoItem.curPage < infoItem.totalPage - 1;\n });\n const { scrollTop, clientHeight, scrollHeight } = event.target as IData;\n // 滚动到底部且还有下一页数据时\n if (result && scrollTop + clientHeight >= scrollHeight - 10) {\n const childern = toElNodes(await c.loadNodes(nodeData, true));\n // 如果不显示根节点并且当前展开是根节点时 nodeKey为 undefined\n const nodeKey =\n !c.model.rootVisible && !mobExpandedKey\n ? undefined\n : mobExpandedKey;\n const node = treeRef.value.getNodeById(nodeKey);\n // 在父节点上添加子数据\n childern.forEach(child => node.append(child));\n }\n },\n 300,\n { leading: true },\n );\n\n onUnmounted(() => {\n // 卸载绘制的图标节点\n vueApps.forEach((vueApp: App) => {\n vueApp.unmount();\n });\n vueApps = [];\n });\n\n return {\n c,\n ns,\n uuid,\n options,\n treeRef,\n treeData,\n breadcrumb,\n currentVal,\n checkedKeys,\n treeRefreshKey,\n hiddenBreadcrumb,\n isHeaderStyle,\n onInput,\n loadData,\n onScroll,\n onNodeCheck,\n onNodeClick,\n treeDataFormat,\n };\n },\n render() {\n const slots: IData = {\n searchbar: () => {\n if (!this.c.enableQuickSearch) return null;\n return (\n <van-search\n modelValue={this.c.state.query}\n class={this.ns.b('quick-search')}\n clearable={true}\n placeholder={this.c.state.placeHolder}\n onUpdate:model-value={this.onInput}\n ></van-search>\n );\n },\n };\n const key = this.c.controlPanel ? 'tree' : 'default';\n slots[key] = () => {\n const content = [\n this.breadcrumb && (\n <div\n class={[\n this.ns.be('header', 'container'),\n this.ns.is('hidden', this.hiddenBreadcrumb),\n ]}\n >\n <van-sticky>\n <div\n id={`breadcrumb${this.uuid}`}\n class={[\n this.ns.b('header'),\n this.ns.is('no-root', !this.treeData.length),\n this.ns.is('header-style', this.isHeaderStyle),\n ]}\n ></div>\n </van-sticky>\n </div>\n ),\n this.c.state.isCreated && this.c.state.isLoaded && (\n <vs-tree\n show-line\n ref='treeRef'\n lazy={true}\n showIcon={true}\n strictLeaf={true}\n data={this.treeData}\n options={this.options}\n highlightCurrent={true}\n key={this.treeRefreshKey}\n class={this.ns.b('content')}\n checkedKeys={this.checkedKeys}\n expandKeys={this.c.state.expandedKeys}\n show-checkbox={!this.c.state.singleSelect}\n load={this.loadData}\n onScroll={this.onScroll}\n onCheck={this.onNodeCheck}\n format={this.treeDataFormat}\n ></vs-tree>\n ),\n ];\n return <div class={this.ns.b('container')}>{content}</div>;\n };\n return (\n <iBizControlBase v-loading={this.c.state.isLoading} controller={this.c}>\n {slots}\n </iBizControlBase>\n );\n },\n});\n\nexport default TreeControl;\n"],"names":["_isSlot","s","_isVNode","TreeControl","defineComponent","components","VsTreeComponent","props","type","Object","required","default","Boolean","setup","c","_a","_b","useControlController","args","TreeController","checkedKeys","computed","selectedData","item","vueApps","ref","treeRefreshKey","createUUID","treeRef","uuid","isHeaderStyle","currentVal","customProps","dom","vueApp","breadcrumb","nodes","iconDom","node","createIconNode","document","mount","push","treeData","toElNodes","icon","_icon","result","nodeData","_uuid","_leaf","key","_disableSelect","state","layoutPanel","nodeModel","getControlPanel","updateUI","_a2","list","hiddenBreadcrumb","loadData","getNodeData","findNodeLayoutPanel","_nodeId","callback","onNodeCheck","event","opts","originData","filterArr","onNodeClick","handleExpandedLastKey","data","_children","ibiz","loadNodes","breads","crumbItem","prevIndex","rootNodes","includes","_data","prevNode","_b2","_c","_d","_e","_f","_g","_h","_i","breadcrumbListLast","value","filter","debounceSearch","length","setSelection","stopPropagation","loadingEl","renderNode","store","nodeLayoutPanel","splice","renderContent","findNodeModel","on","evt","mobExpandedKey","count","child","ns","children","treeDataFormat","_text","isLeaf","_opts","customNodeClick","checked","nodePanel","params","content","createVueApp","textDom","handleSingleSelect","counterId","counterData","counterMode","createElement","className","handleCrumbBack","is","innerText","onScroll","debounce","expandNodeKey","infoItems","click","infoItem","scrollTop","scrollHeight","childern","nodeKey","setChecked","onUnmounted","maxHeight","checkInherit","nocheckParent","rootName","virtual","link","slots","onclick","separator","appendChild","bind","_createVNode","_resolveComponent","some","curPage","target","_resolveDirective","exports"],"mappings":"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"}
1
+ {"version":3,"file":"tree-BTa0bMPr.js","sources":["../src/control/tree/tree.tsx"],"sourcesContent":["import {\n IBizIcon,\n useNamespace,\n IBizControlShell,\n useControlController,\n} from '@ibiz-template/vue3-util';\nimport {\n h,\n App,\n ref,\n VNode,\n computed,\n PropType,\n createApp,\n onUnmounted,\n defineComponent,\n} from 'vue';\nimport { isNil } from 'ramda';\nimport { IDETree, IDETreeNode } from '@ibiz/model-core';\nimport {\n ITreeNodeData,\n TreeController,\n IControlProvider,\n getControlPanel,\n} from '@ibiz-template/runtime';\nimport { debounce } from 'lodash-es';\nimport { createUUID } from 'qx-util';\nimport { VsTreeComponent } from '@ibiz-template-package/vs-tree-ex';\nimport { createVueApp } from '../../mob-app/create-vue-app';\nimport './tree.scss';\n\nexport const TreeControl = defineComponent({\n name: 'IBizTreeControl',\n components: {\n 'vs-tree': VsTreeComponent,\n },\n props: {\n /**\n * @description 树控件模型数据\n */\n modelData: { type: Object as PropType<IDETree>, required: true },\n /**\n * @description 应用上下文对象\n */\n context: { type: Object as PropType<IContext>, required: true },\n /**\n * @description 视图参数对象\n * @default {}\n */\n params: { type: Object as PropType<IParams>, default: () => ({}) },\n /**\n * @description 部件适配器\n */\n provider: { type: Object as PropType<IControlProvider> },\n /**\n * @description 部件激活模式,值为0:无激活,值为1:单击激活,值为2:双击激活\n * @default 2\n */\n mdctrlActiveMode: { type: Number, default: 2 },\n /**\n * @description 是否单选\n * @default true\n */\n singleSelect: { type: Boolean, default: true },\n /**\n * @description 是否是导航内的(即树导航里的树)\n */\n navigational: { type: Boolean, default: undefined },\n },\n setup() {\n const c: TreeController = useControlController<TreeController>(\n (...args) => new TreeController(...args),\n );\n const ns = useNamespace(`control-${c.model.controlType!.toLowerCase()}`);\n // 默认选中项\n const checkedKeys = computed(() => {\n return c.state.selectedData.map(item => item._id);\n });\n\n // 节点创建的app实例,用于组件销毁时销毁所有实例\n let vueApps: App[] = [];\n // 引用的树组件实例\n const treeRef = ref();\n // 用于树强制刷新\n const treeRefreshKey = ref(createUUID());\n\n // 快捷搜索值\n const currentVal = ref('');\n\n const uuid = createUUID();\n\n // 启用面包屑功能\n const breadcrumb = ref(true);\n\n // 隐藏显示面包屑\n const hiddenBreadcrumb = ref(false);\n\n const isHeaderStyle =\n c.crumbShowMode === 'HEADERSTYLE' || c.state.navigational;\n\n // 创建图标节点\n const createIconNode = (customProps: IData) => {\n const iop = h(IBizIcon, customProps);\n const vueApp = createApp(iop);\n const dom = document.createElement('span');\n vueApp.mount(dom);\n vueApps.push(vueApp);\n return dom;\n };\n\n /**\n * 创建新的节点对象,隔离组件数据和controller数据\n * @param {ITreeNodeData[]} nodes\n * @return {*} {IData[]}\n */\n const toElNodes = (nodes: ITreeNodeData[]): IData[] => {\n return nodes.map(node => {\n const iconDom = node?._icon\n ? createIconNode({ icon: node?._icon })\n : '';\n return {\n _id: node._id,\n id: node._id,\n _uuid: node._uuid,\n _leaf: node._leaf,\n _text: node._text,\n icon: iconDom,\n _disableSelect: node._disableSelect,\n };\n });\n };\n\n /** 树展示数据 */\n const treeData = computed(() => {\n if (!c.state.isLoaded) {\n return [];\n }\n const nodes = c.model.rootVisible\n ? c.state.rootNodes\n : c.state.rootNodes.reduce<ITreeNodeData[]>((result, nodeData) => {\n if (nodeData._children) {\n return result.concat(nodeData._children as ITreeNodeData[]);\n }\n return result;\n }, []);\n return toElNodes(nodes as ITreeNodeData[]);\n });\n\n /**\n * @description 查找节点模型\n * @param {string} key\n * @returns {*} {(IDETreeNode | undefined)}\n */\n const findNodeModel = (key: string): IDETreeNode | undefined => {\n const nodeData = c.getNodeData(key);\n if (nodeData) return c.getNodeModel(nodeData._nodeId);\n };\n\n /**\n * @description 查找节点视图布局面板\n * @param {string} key\n * @returns {*}\n */\n const findNodeLayoutPanel = (key: string) => {\n const nodeData = c.getNodeData(key);\n if (nodeData) {\n const nodeModel = c.getNodeModel(nodeData._nodeId);\n const layoutPanel = nodeModel ? getControlPanel(nodeModel) : undefined;\n if (layoutPanel) return { nodeData, layoutPanel };\n }\n };\n\n /**\n * @description 更新vs树,防止树节点数据加载完后选中数据丢失\n */\n const updateUI = () => {\n if (treeRef.value) {\n treeRef.value.tree.tree.store.checkedKeys = checkedKeys.value;\n treeRef.value.tree.tree.store.setDefaultChecked();\n const list = treeRef.value.tree.tree.store.breadcrumb?.list || [];\n hiddenBreadcrumb.value = list.length < 2;\n }\n };\n\n /**\n * 触发节点加载数据\n * @author zk\n * @date 2023-05-29 09:16:07\n * @param {IData} item\n * @param {(nodes: IData[]) => void} callback\n */\n const loadData = async (\n item: IData,\n callback: (nodes: IData[]) => void,\n ) => {\n // 没加载前拦截\n if (!c.state.isLoaded) return;\n // 加载时拦截点击事件\n let nodes: ITreeNodeData[];\n const nodeData = c.getNodeData(item.data._uuid)!;\n // 有搜索值为搜索框搜索,必须请求后台数据过滤\n if (nodeData && nodeData._children && !c.state.query) {\n ibiz.log.debug('节点展开加载-本地', nodeData);\n nodes = nodeData._children;\n } else {\n ibiz.log.debug('节点展开加载-远程', nodeData);\n nodes = await c.loadNodes(nodeData);\n }\n // 根节点搜索时,返回树展示数据,并强制刷新\n if (nodes && c.state.rootNodes.includes(nodes[0])) {\n callback(treeData.value);\n c.state.mobExpandedKey = '';\n treeRefreshKey.value = createUUID();\n return;\n }\n callback(toElNodes(nodes));\n updateUI();\n };\n\n /**\n * 多选时选中节点变更\n *\n * @param {ITreeNodeData} nodeData\n */\n const onNodeCheck = (event: MouseEvent, opts: IData) => {\n if (c.state.singleSelect) return;\n const { originData } = opts;\n // 选中相关处理\n const { selectedData } = c.state;\n const nodeData = c.getNodeData(originData._uuid)!;\n // 选中里没有则添加,有则删除\n const filterArr = selectedData.filter(\n (item: IData) => item._id !== nodeData._id,\n );\n if (filterArr.length === selectedData.length) {\n c.setSelection(selectedData.concat([nodeData]));\n } else {\n c.setSelection(filterArr);\n }\n };\n\n const onNodeClick = (event: MouseEvent, opts: IData) => {\n event.stopPropagation();\n const { originData } = opts;\n onNodeCheck(event, opts);\n c.onTreeNodeClick(originData, event);\n };\n\n // 处理展开节点切换\n const handleExpandedLastKey = (data: IData) => {\n c.state.mobExpandedKey = data._uuid || '';\n };\n\n // 面包屑回退按钮点击事件\n const handleCrumbBack = (_e: MouseEvent, crumbItem?: IData) => {\n _e.preventDefault();\n _e.stopPropagation();\n\n const breads = crumbItem?.parent.list;\n const prevIndex = breads.length - 2;\n const prevNode = breads[prevIndex];\n if (!prevNode) return;\n const store = prevNode.store;\n const _data = prevNode.store?.data;\n breads.splice(prevIndex + 1);\n store.update();\n handleExpandedLastKey(_data);\n };\n\n // 搜索\n const debounceSearch = debounce(async () => {\n if (treeRef.value) {\n // 获取最后展开的节点\n const list = treeRef.value?.tree?.tree?.store?.breadcrumb?.list;\n const breadcrumbListLast = list ? list[list.length - 1] : null;\n if (breadcrumbListLast) {\n breadcrumbListLast.childNodes = [];\n treeRef.value?.tree?.tree?.store?.nodesChange([]);\n breadcrumbListLast.loaded = false;\n breadcrumbListLast.setExpand(true);\n }\n }\n }, 500);\n\n const onInput = async (value: string): Promise<void> => {\n c.state.query = value;\n await c.load();\n };\n\n c.evt.on('onAfterRefreshParent', () => {\n debounceSearch();\n });\n\n c.evt.on('onLoadSuccess', () => {\n c.state.mobExpandedKey = '';\n treeRefreshKey.value = createUUID();\n });\n\n /**\n * 树数据格式化\n *\n * @author zk\n * @date 2023-07-03 11:07:59\n * @param {ITreeNodeData} data\n * @return {*}\n */\n const treeDataFormat = (data: ITreeNodeData) => {\n return {\n id: data._id,\n name: data._text,\n children: data._children,\n isLeaf: data._leaf,\n };\n };\n\n /**\n * 处理单选默认选中样式\n *\n * @author ljx\n * @date 2024-12-12 15:07:59\n * @param {IData} opts\n * @return {*}\n */\n const handleSingleSelect = (opts: IData) => {\n const { originData, loadingEl } = opts;\n if (checkedKeys.value.includes(originData._id) && loadingEl) {\n loadingEl.parentNode.parentNode.classList.add('selected');\n opts.store.selectedCurrent = opts;\n }\n };\n\n /**\n * @description 绘制节点\n * @param {HTMLDivElement} dom 父dom元素\n * @param {IData} opts 配置\n * @returns {*}\n */\n const renderNode = (dom: HTMLDivElement, opts: IData) => {\n const { originData } = opts;\n const nodeLayoutPanel = findNodeLayoutPanel(originData._id);\n if (nodeLayoutPanel) {\n const { nodeData, layoutPanel } = nodeLayoutPanel;\n const nodePanel = h(IBizControlShell, {\n data: nodeData,\n modelData: layoutPanel,\n context: c.context,\n params: c.params,\n });\n const vueApp = createVueApp(nodePanel);\n vueApp.mount(dom);\n vueApps.push(vueApp);\n return dom;\n }\n };\n\n const renderContent = (\n _h: (tag: string, opt: IData) => VNode,\n opts: IData,\n ) => {\n // 添加节点样式表\n const { loadingEl, originData } = opts;\n const nodeModel = findNodeModel(originData._id);\n if (loadingEl && nodeModel?.sysCss?.cssName)\n loadingEl.parentNode.parentNode.classList.add(\n `${nodeModel.sysCss.cssName}`,\n );\n if (c.state.singleSelect) handleSingleSelect(opts);\n\n const children: HTMLElement[] = [];\n\n // 添加计数器\n if (nodeModel?.counterId) {\n const count = c.state.counterData[nodeModel.counterId];\n if (!(isNil(count) || (nodeModel.counterMode === 1 && count === 0))) {\n const child = document.createElement('div');\n child.className = `ibiz-badge tree-counter ${ns.is('mob', true)}`;\n child.innerText = count > 99 ? `${99}+` : count;\n children.push(child);\n }\n }\n\n // 非叶子节点添加展开图标\n if (!originData._leaf) {\n const child = document.createElement('i');\n child.className = 'van-icon van-icon-arrow';\n children.push(child);\n }\n\n // 节点内容区绘制\n return _h('div', {\n className: `tree-button ${ns.b('node-expanded-btn')}`,\n click: (e: Event, _opts: IData) => {\n if (originData._leaf) return;\n _opts.store.breadcrumb.list.push(_opts);\n _opts.setExpand(true);\n handleExpandedLastKey(originData);\n },\n children,\n });\n };\n\n const customNodeClick = (event: MouseEvent, opts: IData) => {\n const { checked } = opts;\n opts.setChecked(!checked);\n onNodeClick(event, opts);\n };\n\n // vs树配置项\n const options = {\n maxHeight: '100%',\n // 继承父状态\n checkInherit: false,\n // 不能选择父节点\n nocheckParent: true,\n rootName: c.model.detreeNodes?.find(item => item.rootNode)?.name,\n virtual: {\n showCount: 30, // 虚拟列表显示数量,太少时会导致虚拟列表无法滚动\n },\n renderNode,\n renderContent,\n customNodeClick,\n } as IParams;\n\n if (breadcrumb.value) {\n Object.assign(options, {\n breadcrumb: {\n el: `#breadcrumb${uuid}`,\n link: (node: IData, data: IData) => {\n const list = node.store?.breadcrumb?.list || [];\n if (list.length < 2) {\n hiddenBreadcrumb.value = true;\n return null;\n }\n hiddenBreadcrumb.value = false;\n const content = document.createElement('span');\n const textDom = document.createElement('span');\n textDom.innerText = data.name;\n if (data.icon instanceof HTMLElement) {\n content.appendChild(data.icon.cloneNode(true));\n }\n content.appendChild(textDom);\n content.className = `${ns.be('header', 'crumb')} ${ns.is(\n 'root',\n data._vsroot,\n )}`;\n content.onclick = () => handleExpandedLastKey.bind(this)(data);\n return content;\n },\n separator: '>',\n },\n });\n\n if (isHeaderStyle) {\n Object.assign(options.breadcrumb, {\n icon: (...args: IParams[]) => {\n const crumbItem = args[2];\n const content = document.createElement('span');\n const iconDom = document.createElement('i');\n iconDom.className = 'van-icon van-icon-arrow-left';\n content.className = `${ns.bem('header', 'crumb', 'back-btn')}`;\n content.appendChild(iconDom);\n content.onclick = (_e: MouseEvent) =>\n handleCrumbBack.bind(this)(_e, crumbItem);\n return content;\n },\n });\n }\n }\n\n /**\n * 滚动事件\n * - 加载更多\n */\n const onScroll = debounce(\n async (event: MouseEvent) => {\n const { mobExpandedKey } = c.state;\n // 当前展开节点默认是根节点\n const expandNodeKey = mobExpandedKey || c.state.rootNodes[0]._uuid;\n const nodeData = c.getNodeData(expandNodeKey);\n if (!nodeData) return;\n const infoItems = c.getLoadMoreInfoItems(nodeData._id);\n if (!infoItems) return;\n const result = infoItems.some(infoItem => {\n return infoItem.curPage < infoItem.totalPage - 1;\n });\n const { scrollTop, clientHeight, scrollHeight } = event.target as IData;\n // 滚动到底部且还有下一页数据时\n if (result && scrollTop + clientHeight >= scrollHeight - 10) {\n const childern = toElNodes(await c.loadNodes(nodeData, true));\n // 如果不显示根节点并且当前展开是根节点时 nodeKey为 undefined\n const nodeKey =\n !c.model.rootVisible && !mobExpandedKey\n ? undefined\n : mobExpandedKey;\n const node = treeRef.value.getNodeById(nodeKey);\n // 在父节点上添加子数据\n childern.forEach(child => node.append(child));\n }\n },\n 300,\n { leading: true },\n );\n\n onUnmounted(() => {\n // 卸载绘制的图标节点\n vueApps.forEach((vueApp: App) => {\n vueApp.unmount();\n });\n vueApps = [];\n });\n\n return {\n c,\n ns,\n uuid,\n options,\n treeRef,\n treeData,\n breadcrumb,\n currentVal,\n checkedKeys,\n treeRefreshKey,\n hiddenBreadcrumb,\n isHeaderStyle,\n onInput,\n loadData,\n onScroll,\n onNodeCheck,\n onNodeClick,\n treeDataFormat,\n };\n },\n render() {\n const slots: IData = {\n searchbar: () => {\n if (!this.c.enableQuickSearch) return null;\n return (\n <van-search\n modelValue={this.c.state.query}\n class={this.ns.b('quick-search')}\n clearable={true}\n placeholder={this.c.state.placeHolder}\n onUpdate:model-value={this.onInput}\n ></van-search>\n );\n },\n };\n const key = this.c.controlPanel ? 'tree' : 'default';\n slots[key] = () => {\n const content = [\n this.breadcrumb && (\n <div\n class={[\n this.ns.be('header', 'container'),\n this.ns.is('hidden', this.hiddenBreadcrumb),\n ]}\n >\n <van-sticky>\n <div\n id={`breadcrumb${this.uuid}`}\n class={[\n this.ns.b('header'),\n this.ns.is('no-root', !this.treeData.length),\n this.ns.is('header-style', this.isHeaderStyle),\n ]}\n ></div>\n </van-sticky>\n </div>\n ),\n this.c.state.isCreated && this.c.state.isLoaded && (\n <vs-tree\n show-line\n ref='treeRef'\n lazy={true}\n showIcon={true}\n strictLeaf={true}\n data={this.treeData}\n options={this.options}\n highlightCurrent={true}\n key={this.treeRefreshKey}\n class={this.ns.b('content')}\n checkedKeys={this.checkedKeys}\n expandKeys={this.c.state.expandedKeys}\n show-checkbox={!this.c.state.singleSelect}\n load={this.loadData}\n onScroll={this.onScroll}\n onCheck={this.onNodeCheck}\n format={this.treeDataFormat}\n ></vs-tree>\n ),\n ];\n return <div class={this.ns.b('container')}>{content}</div>;\n };\n return (\n <iBizControlBase v-loading={this.c.state.isLoading} controller={this.c}>\n {slots}\n </iBizControlBase>\n );\n },\n});\n\nexport default TreeControl;\n"],"names":["_isSlot","s","_isVNode","TreeControl","defineComponent","components","VsTreeComponent","props","type","Object","required","default","Boolean","setup","c","_a","_b","useControlController","args","TreeController","checkedKeys","computed","selectedData","item","vueApps","ref","treeRefreshKey","createUUID","treeRef","uuid","isHeaderStyle","currentVal","customProps","dom","vueApp","breadcrumb","nodes","iconDom","node","createIconNode","document","mount","push","treeData","toElNodes","icon","_icon","result","nodeData","_uuid","_leaf","key","_disableSelect","state","layoutPanel","nodeModel","getControlPanel","updateUI","_a2","list","hiddenBreadcrumb","loadData","getNodeData","findNodeLayoutPanel","_nodeId","callback","onNodeCheck","event","opts","originData","filterArr","onNodeClick","handleExpandedLastKey","data","_children","ibiz","loadNodes","breads","crumbItem","prevIndex","rootNodes","includes","_data","prevNode","_b2","_c","_d","_e","_f","_g","_h","_i","breadcrumbListLast","value","filter","debounceSearch","length","setSelection","stopPropagation","loadingEl","renderNode","store","nodeLayoutPanel","splice","renderContent","findNodeModel","on","evt","mobExpandedKey","count","child","ns","children","treeDataFormat","_text","isLeaf","_opts","customNodeClick","checked","nodePanel","params","content","createVueApp","textDom","handleSingleSelect","counterId","counterData","counterMode","createElement","className","handleCrumbBack","is","innerText","onScroll","debounce","expandNodeKey","infoItems","click","infoItem","scrollTop","scrollHeight","childern","nodeKey","setChecked","onUnmounted","maxHeight","checkInherit","nocheckParent","rootName","virtual","link","slots","onclick","separator","appendChild","bind","_createVNode","_resolveComponent","some","curPage","target","_resolveDirective","exports"],"mappings":"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"}