ngx-axis-appforge 0.0.4 → 0.0.6

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 (580) hide show
  1. package/axis-components/badge/design/index.d.ts +5 -0
  2. package/axis-components/badge/index.d.ts +27 -0
  3. package/axis-components/button/design/index.d.ts +5 -0
  4. package/axis-components/button/index.d.ts +32 -0
  5. package/axis-components/desc/design/index.d.ts +5 -0
  6. package/axis-components/desc/index.d.ts +30 -0
  7. package/axis-components/design/design/index.d.ts +5 -0
  8. package/axis-components/design/index.d.ts +246 -0
  9. package/axis-components/dynamic-container/design/index.d.ts +5 -0
  10. package/axis-components/dynamic-container/index.d.ts +14 -0
  11. package/axis-components/editor/index.d.ts +33 -0
  12. package/axis-components/flex/design/index.d.ts +5 -0
  13. package/axis-components/flex/index.d.ts +20 -0
  14. package/axis-components/form/design/index.d.ts +5 -0
  15. package/axis-components/form/index.d.ts +30 -0
  16. package/axis-components/form-item/design/index.d.ts +5 -0
  17. package/axis-components/form-item/index.d.ts +34 -0
  18. package/axis-components/icon/design/index.d.ts +5 -0
  19. package/axis-components/icon/index.d.ts +16 -0
  20. package/axis-components/image/design/index.d.ts +5 -0
  21. package/axis-components/image/index.d.ts +16 -0
  22. package/axis-components/index.d.ts +5 -0
  23. package/axis-components/input/design/index.d.ts +5 -0
  24. package/axis-components/input/index.d.ts +27 -0
  25. package/axis-components/input-component/design/index.d.ts +5 -0
  26. package/axis-components/input-component/index.d.ts +33 -0
  27. package/axis-components/input-icon/design/index.d.ts +5 -0
  28. package/axis-components/input-icon/index.d.ts +24 -0
  29. package/axis-components/input-json/design/index.d.ts +5 -0
  30. package/axis-components/input-json/index.d.ts +24 -0
  31. package/axis-components/input-number/design/index.d.ts +5 -0
  32. package/axis-components/input-number/index.d.ts +25 -0
  33. package/axis-components/modal/design/index.d.ts +5 -0
  34. package/axis-components/modal/index.d.ts +33 -0
  35. package/axis-components/scope/design/index.d.ts +5 -0
  36. package/axis-components/scope/index.d.ts +24 -0
  37. package/axis-components/single-selector/design/index.d.ts +5 -0
  38. package/axis-components/single-selector/index.d.ts +37 -0
  39. package/axis-components/splitter/design/index.d.ts +5 -0
  40. package/axis-components/splitter/index.d.ts +29 -0
  41. package/axis-components/table/design/index.d.ts +5 -0
  42. package/axis-components/table/index.d.ts +183 -0
  43. package/axis-components/text/design/index.d.ts +5 -0
  44. package/axis-components/text/index.d.ts +24 -0
  45. package/axis-components/textarea/design/index.d.ts +5 -0
  46. package/axis-components/textarea/index.d.ts +25 -0
  47. package/axis-components/tree-selector/design/index.d.ts +5 -0
  48. package/axis-components/tree-selector/index.d.ts +76 -0
  49. package/axis-components/upload/design/index.d.ts +5 -0
  50. package/axis-components/upload/index.d.ts +51 -0
  51. package/core/index.d.ts +773 -0
  52. package/fesm2022/ngx-axis-appforge-axis-components-badge-design.mjs +191 -0
  53. package/fesm2022/ngx-axis-appforge-axis-components-badge-design.mjs.map +1 -0
  54. package/fesm2022/ngx-axis-appforge-axis-components-badge.mjs +39 -0
  55. package/fesm2022/ngx-axis-appforge-axis-components-badge.mjs.map +1 -0
  56. package/fesm2022/ngx-axis-appforge-axis-components-button-design.mjs +116 -0
  57. package/fesm2022/ngx-axis-appforge-axis-components-button-design.mjs.map +1 -0
  58. package/fesm2022/ngx-axis-appforge-axis-components-button.mjs +78 -0
  59. package/fesm2022/ngx-axis-appforge-axis-components-button.mjs.map +1 -0
  60. package/fesm2022/ngx-axis-appforge-axis-components-desc-design.mjs +224 -0
  61. package/fesm2022/ngx-axis-appforge-axis-components-desc-design.mjs.map +1 -0
  62. package/fesm2022/ngx-axis-appforge-axis-components-desc.mjs +51 -0
  63. package/fesm2022/ngx-axis-appforge-axis-components-desc.mjs.map +1 -0
  64. package/fesm2022/ngx-axis-appforge-axis-components-design-design.mjs +69 -0
  65. package/fesm2022/ngx-axis-appforge-axis-components-design-design.mjs.map +1 -0
  66. package/fesm2022/ngx-axis-appforge-axis-components-design.mjs +1746 -0
  67. package/fesm2022/ngx-axis-appforge-axis-components-design.mjs.map +1 -0
  68. package/fesm2022/ngx-axis-appforge-axis-components-dynamic-container-design.mjs +65 -0
  69. package/fesm2022/ngx-axis-appforge-axis-components-dynamic-container-design.mjs.map +1 -0
  70. package/fesm2022/ngx-axis-appforge-axis-components-dynamic-container.mjs +26 -0
  71. package/fesm2022/ngx-axis-appforge-axis-components-dynamic-container.mjs.map +1 -0
  72. package/fesm2022/ngx-axis-appforge-axis-components-editor.mjs +99 -0
  73. package/fesm2022/ngx-axis-appforge-axis-components-editor.mjs.map +1 -0
  74. package/fesm2022/ngx-axis-appforge-axis-components-flex-design.mjs +98 -0
  75. package/fesm2022/ngx-axis-appforge-axis-components-flex-design.mjs.map +1 -0
  76. package/fesm2022/ngx-axis-appforge-axis-components-flex.mjs +31 -0
  77. package/fesm2022/ngx-axis-appforge-axis-components-flex.mjs.map +1 -0
  78. package/fesm2022/ngx-axis-appforge-axis-components-form-design.mjs +108 -0
  79. package/fesm2022/ngx-axis-appforge-axis-components-form-design.mjs.map +1 -0
  80. package/fesm2022/ngx-axis-appforge-axis-components-form-item-design.mjs +242 -0
  81. package/fesm2022/ngx-axis-appforge-axis-components-form-item-design.mjs.map +1 -0
  82. package/fesm2022/ngx-axis-appforge-axis-components-form-item.mjs +144 -0
  83. package/fesm2022/ngx-axis-appforge-axis-components-form-item.mjs.map +1 -0
  84. package/fesm2022/ngx-axis-appforge-axis-components-form.mjs +132 -0
  85. package/fesm2022/ngx-axis-appforge-axis-components-form.mjs.map +1 -0
  86. package/fesm2022/ngx-axis-appforge-axis-components-icon-design.mjs +88 -0
  87. package/fesm2022/ngx-axis-appforge-axis-components-icon-design.mjs.map +1 -0
  88. package/fesm2022/ngx-axis-appforge-axis-components-icon.mjs +28 -0
  89. package/fesm2022/ngx-axis-appforge-axis-components-icon.mjs.map +1 -0
  90. package/fesm2022/ngx-axis-appforge-axis-components-image-design.mjs +75 -0
  91. package/fesm2022/ngx-axis-appforge-axis-components-image-design.mjs.map +1 -0
  92. package/fesm2022/ngx-axis-appforge-axis-components-image.mjs +43 -0
  93. package/fesm2022/ngx-axis-appforge-axis-components-image.mjs.map +1 -0
  94. package/fesm2022/ngx-axis-appforge-axis-components-input-component-design.mjs +70 -0
  95. package/fesm2022/ngx-axis-appforge-axis-components-input-component-design.mjs.map +1 -0
  96. package/fesm2022/ngx-axis-appforge-axis-components-input-component.mjs +61 -0
  97. package/fesm2022/ngx-axis-appforge-axis-components-input-component.mjs.map +1 -0
  98. package/fesm2022/ngx-axis-appforge-axis-components-input-design.mjs +142 -0
  99. package/fesm2022/ngx-axis-appforge-axis-components-input-design.mjs.map +1 -0
  100. package/fesm2022/ngx-axis-appforge-axis-components-input-icon-design.mjs +71 -0
  101. package/fesm2022/ngx-axis-appforge-axis-components-input-icon-design.mjs.map +1 -0
  102. package/fesm2022/ngx-axis-appforge-axis-components-input-icon.mjs +64 -0
  103. package/fesm2022/ngx-axis-appforge-axis-components-input-icon.mjs.map +1 -0
  104. package/fesm2022/ngx-axis-appforge-axis-components-input-json-design.mjs +60 -0
  105. package/fesm2022/ngx-axis-appforge-axis-components-input-json-design.mjs.map +1 -0
  106. package/fesm2022/ngx-axis-appforge-axis-components-input-json.mjs +70 -0
  107. package/fesm2022/ngx-axis-appforge-axis-components-input-json.mjs.map +1 -0
  108. package/fesm2022/ngx-axis-appforge-axis-components-input-number-design.mjs +107 -0
  109. package/fesm2022/ngx-axis-appforge-axis-components-input-number-design.mjs.map +1 -0
  110. package/fesm2022/ngx-axis-appforge-axis-components-input-number.mjs +48 -0
  111. package/fesm2022/ngx-axis-appforge-axis-components-input-number.mjs.map +1 -0
  112. package/fesm2022/ngx-axis-appforge-axis-components-input.mjs +68 -0
  113. package/fesm2022/ngx-axis-appforge-axis-components-input.mjs.map +1 -0
  114. package/fesm2022/ngx-axis-appforge-axis-components-modal-design.mjs +181 -0
  115. package/fesm2022/ngx-axis-appforge-axis-components-modal-design.mjs.map +1 -0
  116. package/fesm2022/ngx-axis-appforge-axis-components-modal.mjs +74 -0
  117. package/fesm2022/ngx-axis-appforge-axis-components-modal.mjs.map +1 -0
  118. package/fesm2022/ngx-axis-appforge-axis-components-scope-design.mjs +330 -0
  119. package/fesm2022/ngx-axis-appforge-axis-components-scope-design.mjs.map +1 -0
  120. package/fesm2022/ngx-axis-appforge-axis-components-scope.mjs +55 -0
  121. package/fesm2022/ngx-axis-appforge-axis-components-scope.mjs.map +1 -0
  122. package/fesm2022/ngx-axis-appforge-axis-components-single-selector-design.mjs +120 -0
  123. package/fesm2022/ngx-axis-appforge-axis-components-single-selector-design.mjs.map +1 -0
  124. package/fesm2022/ngx-axis-appforge-axis-components-single-selector.mjs +102 -0
  125. package/fesm2022/ngx-axis-appforge-axis-components-single-selector.mjs.map +1 -0
  126. package/fesm2022/ngx-axis-appforge-axis-components-splitter-design.mjs +178 -0
  127. package/fesm2022/ngx-axis-appforge-axis-components-splitter-design.mjs.map +1 -0
  128. package/fesm2022/ngx-axis-appforge-axis-components-splitter.mjs +60 -0
  129. package/fesm2022/ngx-axis-appforge-axis-components-splitter.mjs.map +1 -0
  130. package/fesm2022/ngx-axis-appforge-axis-components-table-design.mjs +442 -0
  131. package/fesm2022/ngx-axis-appforge-axis-components-table-design.mjs.map +1 -0
  132. package/fesm2022/ngx-axis-appforge-axis-components-table.mjs +452 -0
  133. package/fesm2022/ngx-axis-appforge-axis-components-table.mjs.map +1 -0
  134. package/fesm2022/ngx-axis-appforge-axis-components-text-design.mjs +95 -0
  135. package/fesm2022/ngx-axis-appforge-axis-components-text-design.mjs.map +1 -0
  136. package/fesm2022/ngx-axis-appforge-axis-components-text.mjs +64 -0
  137. package/fesm2022/ngx-axis-appforge-axis-components-text.mjs.map +1 -0
  138. package/fesm2022/ngx-axis-appforge-axis-components-textarea-design.mjs +94 -0
  139. package/fesm2022/ngx-axis-appforge-axis-components-textarea-design.mjs.map +1 -0
  140. package/fesm2022/ngx-axis-appforge-axis-components-textarea.mjs +64 -0
  141. package/fesm2022/ngx-axis-appforge-axis-components-textarea.mjs.map +1 -0
  142. package/fesm2022/ngx-axis-appforge-axis-components-tree-selector-design.mjs +222 -0
  143. package/fesm2022/ngx-axis-appforge-axis-components-tree-selector-design.mjs.map +1 -0
  144. package/fesm2022/ngx-axis-appforge-axis-components-tree-selector.mjs +295 -0
  145. package/fesm2022/ngx-axis-appforge-axis-components-tree-selector.mjs.map +1 -0
  146. package/fesm2022/ngx-axis-appforge-axis-components-upload-design.mjs +146 -0
  147. package/fesm2022/ngx-axis-appforge-axis-components-upload-design.mjs.map +1 -0
  148. package/fesm2022/ngx-axis-appforge-axis-components-upload.mjs +156 -0
  149. package/fesm2022/ngx-axis-appforge-axis-components-upload.mjs.map +1 -0
  150. package/fesm2022/ngx-axis-appforge-axis-components.mjs +988 -0
  151. package/fesm2022/ngx-axis-appforge-axis-components.mjs.map +1 -0
  152. package/fesm2022/ngx-axis-appforge-core.mjs +3169 -0
  153. package/fesm2022/ngx-axis-appforge-core.mjs.map +1 -0
  154. package/{providers/providers.ts → fesm2022/ngx-axis-appforge-providers.mjs} +16 -8
  155. package/fesm2022/ngx-axis-appforge-providers.mjs.map +1 -0
  156. package/fesm2022/ngx-axis-appforge.mjs +6 -0
  157. package/fesm2022/ngx-axis-appforge.mjs.map +1 -0
  158. package/index.d.ts +2 -0
  159. package/package.json +217 -16
  160. package/providers/index.d.ts +13 -0
  161. package/.editorconfig +0 -17
  162. package/angular.json +0 -40
  163. package/axis-components/badge/badge.css +0 -3
  164. package/axis-components/badge/badge.html +0 -20
  165. package/axis-components/badge/badge.options.ts +0 -23
  166. package/axis-components/badge/badge.ts +0 -17
  167. package/axis-components/badge/design/config.ts +0 -52
  168. package/axis-components/badge/design/ng-package.json +0 -5
  169. package/axis-components/badge/design/setting/setting.css +0 -0
  170. package/axis-components/badge/design/setting/setting.html +0 -181
  171. package/axis-components/badge/design/setting/setting.ts +0 -126
  172. package/axis-components/badge/ng-package.json +0 -5
  173. package/axis-components/button/button.css +0 -3
  174. package/axis-components/button/button.html +0 -13
  175. package/axis-components/button/button.options.ts +0 -17
  176. package/axis-components/button/button.ts +0 -56
  177. package/axis-components/button/design/config.ts +0 -30
  178. package/axis-components/button/design/ng-package.json +0 -5
  179. package/axis-components/button/design/setting/setting.css +0 -0
  180. package/axis-components/button/design/setting/setting.html +0 -151
  181. package/axis-components/button/design/setting/setting.ts +0 -76
  182. package/axis-components/button/ng-package.json +0 -5
  183. package/axis-components/cmp-map.ts +0 -52
  184. package/axis-components/cmplib.ts +0 -9
  185. package/axis-components/desc/desc.css +0 -8
  186. package/axis-components/desc/desc.html +0 -19
  187. package/axis-components/desc/desc.options.ts +0 -24
  188. package/axis-components/desc/desc.ts +0 -29
  189. package/axis-components/desc/design/config.ts +0 -113
  190. package/axis-components/desc/design/desc-item-setting/desc-item-setting.css +0 -0
  191. package/axis-components/desc/design/desc-item-setting/desc-item-setting.html +0 -47
  192. package/axis-components/desc/design/desc-item-setting/desc-item-setting.ts +0 -40
  193. package/axis-components/desc/design/desc-items-menu/desc-items-menu.css +0 -0
  194. package/axis-components/desc/design/desc-items-menu/desc-items-menu.html +0 -9
  195. package/axis-components/desc/design/desc-items-menu/desc-items-menu.ts +0 -23
  196. package/axis-components/desc/design/desc-setting/desc-setting.css +0 -0
  197. package/axis-components/desc/design/desc-setting/desc-setting.html +0 -76
  198. package/axis-components/desc/design/desc-setting/desc-setting.ts +0 -51
  199. package/axis-components/desc/design/ng-package.json +0 -5
  200. package/axis-components/desc/ng-package.json +0 -5
  201. package/axis-components/design/cmplib/cmplib.css +0 -5
  202. package/axis-components/design/cmplib/cmplib.html +0 -52
  203. package/axis-components/design/cmplib/cmplib.ts +0 -96
  204. package/axis-components/design/design/config.ts +0 -29
  205. package/axis-components/design/design/ng-package.json +0 -5
  206. package/axis-components/design/design/setting/setting.css +0 -0
  207. package/axis-components/design/design/setting/setting.html +0 -33
  208. package/axis-components/design/design/setting/setting.ts +0 -33
  209. package/axis-components/design/design.css +0 -15
  210. package/axis-components/design/design.html +0 -51
  211. package/axis-components/design/design.options.ts +0 -9
  212. package/axis-components/design/design.ts +0 -509
  213. package/axis-components/design/ng-package.json +0 -5
  214. package/axis-components/design/preview/drag.service.ts +0 -148
  215. package/axis-components/design/preview/drop-handler.ts +0 -56
  216. package/axis-components/design/preview/preview.css +0 -3
  217. package/axis-components/design/preview/preview.html +0 -1
  218. package/axis-components/design/preview/preview.ts +0 -250
  219. package/axis-components/design/preview/select.service.ts +0 -140
  220. package/axis-components/design/shortcut-key.ts +0 -160
  221. package/axis-components/design/toolbar/toolbar.css +0 -24
  222. package/axis-components/design/toolbar/toolbar.html +0 -96
  223. package/axis-components/design/toolbar/toolbar.ts +0 -65
  224. package/axis-components/design/tree/drag-drop.ts +0 -125
  225. package/axis-components/design/tree/tree.css +0 -30
  226. package/axis-components/design/tree/tree.html +0 -49
  227. package/axis-components/design/tree/tree.ts +0 -292
  228. package/axis-components/dynamic-container/design/config.ts +0 -30
  229. package/axis-components/dynamic-container/design/ng-package.json +0 -5
  230. package/axis-components/dynamic-container/design/setting/setting.css +0 -0
  231. package/axis-components/dynamic-container/design/setting/setting.html +0 -20
  232. package/axis-components/dynamic-container/design/setting/setting.ts +0 -30
  233. package/axis-components/dynamic-container/dynamic-container.css +0 -3
  234. package/axis-components/dynamic-container/dynamic-container.html +0 -2
  235. package/axis-components/dynamic-container/dynamic-container.options.ts +0 -6
  236. package/axis-components/dynamic-container/dynamic-container.ts +0 -17
  237. package/axis-components/dynamic-container/ng-package.json +0 -5
  238. package/axis-components/editor/editor.css +0 -47
  239. package/axis-components/editor/editor.html +0 -10
  240. package/axis-components/editor/editor.options.ts +0 -10
  241. package/axis-components/editor/editor.ts +0 -86
  242. package/axis-components/editor/ng-package.json +0 -5
  243. package/axis-components/examples/examples/badge.ts +0 -17
  244. package/axis-components/examples/examples/button.ts +0 -38
  245. package/axis-components/examples/examples/desc.ts +0 -31
  246. package/axis-components/examples/examples/design.ts +0 -15
  247. package/axis-components/examples/examples/dynamic-container.ts +0 -21
  248. package/axis-components/examples/examples/flex.ts +0 -18
  249. package/axis-components/examples/examples/form-item.ts +0 -39
  250. package/axis-components/examples/examples/form.ts +0 -315
  251. package/axis-components/examples/examples/icon.ts +0 -16
  252. package/axis-components/examples/examples/image.ts +0 -15
  253. package/axis-components/examples/examples/input-component.ts +0 -15
  254. package/axis-components/examples/examples/input-icon.ts +0 -15
  255. package/axis-components/examples/examples/input-json.ts +0 -15
  256. package/axis-components/examples/examples/input-number.ts +0 -15
  257. package/axis-components/examples/examples/input.ts +0 -15
  258. package/axis-components/examples/examples/modal.ts +0 -15
  259. package/axis-components/examples/examples/scope.ts +0 -17
  260. package/axis-components/examples/examples/single-selector.ts +0 -25
  261. package/axis-components/examples/examples/splitter.ts +0 -36
  262. package/axis-components/examples/examples/table.ts +0 -126
  263. package/axis-components/examples/examples/text.ts +0 -15
  264. package/axis-components/examples/examples/textarea.ts +0 -15
  265. package/axis-components/examples/examples/tree-selector.ts +0 -35
  266. package/axis-components/examples/examples/upload.ts +0 -15
  267. package/axis-components/examples/examples.ts +0 -73
  268. package/axis-components/flex/design/config.ts +0 -49
  269. package/axis-components/flex/design/ng-package.json +0 -5
  270. package/axis-components/flex/design/setting/setting.css +0 -0
  271. package/axis-components/flex/design/setting/setting.html +0 -72
  272. package/axis-components/flex/design/setting/setting.ts +0 -43
  273. package/axis-components/flex/flex.css +0 -5
  274. package/axis-components/flex/flex.html +0 -6
  275. package/axis-components/flex/flex.options.ts +0 -12
  276. package/axis-components/flex/flex.ts +0 -15
  277. package/axis-components/flex/ng-package.json +0 -5
  278. package/axis-components/form/design/config.ts +0 -71
  279. package/axis-components/form/design/ng-package.json +0 -5
  280. package/axis-components/form/design/setting/setting.css +0 -0
  281. package/axis-components/form/design/setting/setting.html +0 -21
  282. package/axis-components/form/design/setting/setting.ts +0 -31
  283. package/axis-components/form/form.css +0 -3
  284. package/axis-components/form/form.html +0 -3
  285. package/axis-components/form/form.options.ts +0 -9
  286. package/axis-components/form/form.ts +0 -121
  287. package/axis-components/form/ng-package.json +0 -5
  288. package/axis-components/form-item/design/config.ts +0 -43
  289. package/axis-components/form-item/design/ng-package.json +0 -5
  290. package/axis-components/form-item/design/setting/input-validator/input-validator.css +0 -8
  291. package/axis-components/form-item/design/setting/input-validator/input-validator.html +0 -140
  292. package/axis-components/form-item/design/setting/input-validator/input-validator.ts +0 -158
  293. package/axis-components/form-item/design/setting/setting.css +0 -0
  294. package/axis-components/form-item/design/setting/setting.html +0 -39
  295. package/axis-components/form-item/design/setting/setting.ts +0 -40
  296. package/axis-components/form-item/form-item.css +0 -4
  297. package/axis-components/form-item/form-item.html +0 -16
  298. package/axis-components/form-item/form-item.options.ts +0 -12
  299. package/axis-components/form-item/form-item.ts +0 -128
  300. package/axis-components/form-item/ng-package.json +0 -5
  301. package/axis-components/icon/design/config.ts +0 -29
  302. package/axis-components/icon/design/ng-package.json +0 -5
  303. package/axis-components/icon/design/setting/setting.css +0 -0
  304. package/axis-components/icon/design/setting/setting.html +0 -67
  305. package/axis-components/icon/design/setting/setting.ts +0 -48
  306. package/axis-components/icon/icon.css +0 -0
  307. package/axis-components/icon/icon.html +0 -7
  308. package/axis-components/icon/icon.options.ts +0 -10
  309. package/axis-components/icon/icon.ts +0 -17
  310. package/axis-components/icon/ng-package.json +0 -5
  311. package/axis-components/image/design/config.ts +0 -30
  312. package/axis-components/image/design/ng-package.json +0 -5
  313. package/axis-components/image/design/setting/setting.css +0 -0
  314. package/axis-components/image/design/setting/setting.html +0 -42
  315. package/axis-components/image/design/setting/setting.ts +0 -37
  316. package/axis-components/image/image.css +0 -58
  317. package/axis-components/image/image.html +0 -14
  318. package/axis-components/image/image.options.ts +0 -8
  319. package/axis-components/image/image.ts +0 -29
  320. package/axis-components/image/ng-package.json +0 -5
  321. package/axis-components/input/design/config.ts +0 -80
  322. package/axis-components/input/design/ng-package.json +0 -5
  323. package/axis-components/input/design/setting/setting.css +0 -0
  324. package/axis-components/input/design/setting/setting.html +0 -79
  325. package/axis-components/input/design/setting/setting.ts +0 -51
  326. package/axis-components/input/input.css +0 -4
  327. package/axis-components/input/input.html +0 -32
  328. package/axis-components/input/input.options.ts +0 -14
  329. package/axis-components/input/input.ts +0 -53
  330. package/axis-components/input/ng-package.json +0 -5
  331. package/axis-components/input-component/design/config.ts +0 -30
  332. package/axis-components/input-component/design/ng-package.json +0 -5
  333. package/axis-components/input-component/design/setting/setting.css +0 -0
  334. package/axis-components/input-component/design/setting/setting.html +0 -33
  335. package/axis-components/input-component/design/setting/setting.ts +0 -33
  336. package/axis-components/input-component/input-component.css +0 -4
  337. package/axis-components/input-component/input-component.html +0 -25
  338. package/axis-components/input-component/input-component.options.ts +0 -7
  339. package/axis-components/input-component/input-component.ts +0 -50
  340. package/axis-components/input-component/ng-package.json +0 -5
  341. package/axis-components/input-icon/design/config.ts +0 -30
  342. package/axis-components/input-icon/design/ng-package.json +0 -5
  343. package/axis-components/input-icon/design/setting/setting.css +0 -0
  344. package/axis-components/input-icon/design/setting/setting.html +0 -29
  345. package/axis-components/input-icon/design/setting/setting.ts +0 -33
  346. package/axis-components/input-icon/input-icon.css +0 -4
  347. package/axis-components/input-icon/input-icon.html +0 -70
  348. package/axis-components/input-icon/input-icon.options.ts +0 -7
  349. package/axis-components/input-icon/input-icon.ts +0 -51
  350. package/axis-components/input-icon/ng-package.json +0 -5
  351. package/axis-components/input-json/design/config.ts +0 -29
  352. package/axis-components/input-json/design/ng-package.json +0 -5
  353. package/axis-components/input-json/design/setting/setting.css +0 -0
  354. package/axis-components/input-json/design/setting/setting.html +0 -7
  355. package/axis-components/input-json/design/setting/setting.ts +0 -26
  356. package/axis-components/input-json/input-json.css +0 -4
  357. package/axis-components/input-json/input-json.html +0 -19
  358. package/axis-components/input-json/input-json.ts +0 -67
  359. package/axis-components/input-json/ng-package.json +0 -5
  360. package/axis-components/input-number/design/config.ts +0 -30
  361. package/axis-components/input-number/design/ng-package.json +0 -5
  362. package/axis-components/input-number/design/setting/setting.css +0 -0
  363. package/axis-components/input-number/design/setting/setting.html +0 -118
  364. package/axis-components/input-number/design/setting/setting.ts +0 -66
  365. package/axis-components/input-number/input-number.css +0 -22
  366. package/axis-components/input-number/input-number.html +0 -11
  367. package/axis-components/input-number/input-number.options.ts +0 -17
  368. package/axis-components/input-number/input-number.ts +0 -30
  369. package/axis-components/input-number/ng-package.json +0 -5
  370. package/axis-components/modal/design/config.ts +0 -50
  371. package/axis-components/modal/design/ng-package.json +0 -5
  372. package/axis-components/modal/design/set-modal-visible-handler/set-modal-visible-handler.css +0 -0
  373. package/axis-components/modal/design/set-modal-visible-handler/set-modal-visible-handler.html +0 -15
  374. package/axis-components/modal/design/set-modal-visible-handler/set-modal-visible-handler.ts +0 -34
  375. package/axis-components/modal/design/setting/setting.css +0 -0
  376. package/axis-components/modal/design/setting/setting.html +0 -139
  377. package/axis-components/modal/design/setting/setting.ts +0 -92
  378. package/axis-components/modal/modal.css +0 -0
  379. package/axis-components/modal/modal.html +0 -7
  380. package/axis-components/modal/modal.options.ts +0 -20
  381. package/axis-components/modal/modal.ts +0 -57
  382. package/axis-components/modal/ng-package.json +0 -5
  383. package/axis-components/ng-package.json +0 -5
  384. package/axis-components/scope/design/config.ts +0 -59
  385. package/axis-components/scope/design/ng-package.json +0 -5
  386. package/axis-components/scope/design/setting/datasource-editor/datasource-editor.css +0 -28
  387. package/axis-components/scope/design/setting/datasource-editor/datasource-editor.html +0 -188
  388. package/axis-components/scope/design/setting/datasource-editor/datasource-editor.ts +0 -245
  389. package/axis-components/scope/design/setting/setting.css +0 -0
  390. package/axis-components/scope/design/setting/setting.html +0 -19
  391. package/axis-components/scope/design/setting/setting.ts +0 -30
  392. package/axis-components/scope/ng-package.json +0 -5
  393. package/axis-components/scope/scope.css +0 -6
  394. package/axis-components/scope/scope.html +0 -4
  395. package/axis-components/scope/scope.options.ts +0 -8
  396. package/axis-components/scope/scope.ts +0 -48
  397. package/axis-components/single-selector/design/config.ts +0 -30
  398. package/axis-components/single-selector/design/ng-package.json +0 -5
  399. package/axis-components/single-selector/design/setting/setting.css +0 -0
  400. package/axis-components/single-selector/design/setting/setting.html +0 -164
  401. package/axis-components/single-selector/design/setting/setting.ts +0 -80
  402. package/axis-components/single-selector/ng-package.json +0 -5
  403. package/axis-components/single-selector/single-selector.css +0 -8
  404. package/axis-components/single-selector/single-selector.html +0 -51
  405. package/axis-components/single-selector/single-selector.options.ts +0 -22
  406. package/axis-components/single-selector/single-selector.ts +0 -80
  407. package/axis-components/splitter/design/config.ts +0 -84
  408. package/axis-components/splitter/design/ng-package.json +0 -5
  409. package/axis-components/splitter/design/splitter-menu/splitter-menu.css +0 -0
  410. package/axis-components/splitter/design/splitter-menu/splitter-menu.html +0 -10
  411. package/axis-components/splitter/design/splitter-menu/splitter-menu.ts +0 -22
  412. package/axis-components/splitter/design/splitter-panel-setting/splitter-panel-setting.css +0 -0
  413. package/axis-components/splitter/design/splitter-panel-setting/splitter-panel-setting.html +0 -66
  414. package/axis-components/splitter/design/splitter-panel-setting/splitter-panel-setting.ts +0 -47
  415. package/axis-components/splitter/design/splitter-setting/splitter-setting.css +0 -0
  416. package/axis-components/splitter/design/splitter-setting/splitter-setting.html +0 -28
  417. package/axis-components/splitter/design/splitter-setting/splitter-setting.ts +0 -30
  418. package/axis-components/splitter/ng-package.json +0 -5
  419. package/axis-components/splitter/splitter.css +0 -7
  420. package/axis-components/splitter/splitter.html +0 -12
  421. package/axis-components/splitter/splitter.options.ts +0 -18
  422. package/axis-components/splitter/splitter.ts +0 -40
  423. package/axis-components/table/design/config.ts +0 -147
  424. package/axis-components/table/design/ng-package.json +0 -5
  425. package/axis-components/table/design/table-field-setting/table-field-setting.css +0 -0
  426. package/axis-components/table/design/table-field-setting/table-field-setting.html +0 -259
  427. package/axis-components/table/design/table-field-setting/table-field-setting.ts +0 -105
  428. package/axis-components/table/design/table-fields-menu/table-fields-menu.css +0 -0
  429. package/axis-components/table/design/table-fields-menu/table-fields-menu.html +0 -9
  430. package/axis-components/table/design/table-fields-menu/table-fields-menu.ts +0 -24
  431. package/axis-components/table/design/table-setting/table-setting.css +0 -0
  432. package/axis-components/table/design/table-setting/table-setting.html +0 -417
  433. package/axis-components/table/design/table-setting/table-setting.ts +0 -173
  434. package/axis-components/table/expand.ts +0 -12
  435. package/axis-components/table/ng-package.json +0 -5
  436. package/axis-components/table/select.ts +0 -66
  437. package/axis-components/table/table-setter/table-setter.css +0 -55
  438. package/axis-components/table/table-setter/table-setter.html +0 -38
  439. package/axis-components/table/table-setter/table-setter.ts +0 -121
  440. package/axis-components/table/table.css +0 -5
  441. package/axis-components/table/table.html +0 -191
  442. package/axis-components/table/table.options.ts +0 -72
  443. package/axis-components/table/table.ts +0 -204
  444. package/axis-components/text/design/config.ts +0 -30
  445. package/axis-components/text/design/ng-package.json +0 -5
  446. package/axis-components/text/design/setting/setting.css +0 -0
  447. package/axis-components/text/design/setting/setting.html +0 -84
  448. package/axis-components/text/design/setting/setting.ts +0 -54
  449. package/axis-components/text/ng-package.json +0 -5
  450. package/axis-components/text/text.css +0 -3
  451. package/axis-components/text/text.html +0 -17
  452. package/axis-components/text/text.options.ts +0 -10
  453. package/axis-components/text/text.ts +0 -54
  454. package/axis-components/textarea/design/config.ts +0 -30
  455. package/axis-components/textarea/design/ng-package.json +0 -5
  456. package/axis-components/textarea/design/setting/setting.css +0 -0
  457. package/axis-components/textarea/design/setting/setting.html +0 -76
  458. package/axis-components/textarea/design/setting/setting.ts +0 -55
  459. package/axis-components/textarea/ng-package.json +0 -5
  460. package/axis-components/textarea/textarea.css +0 -4
  461. package/axis-components/textarea/textarea.html +0 -11
  462. package/axis-components/textarea/textarea.options.ts +0 -13
  463. package/axis-components/textarea/textarea.ts +0 -49
  464. package/axis-components/tree-selector/design/config.ts +0 -55
  465. package/axis-components/tree-selector/design/ng-package.json +0 -5
  466. package/axis-components/tree-selector/design/tree-selector-menu/tree-selector-menu.css +0 -0
  467. package/axis-components/tree-selector/design/tree-selector-menu/tree-selector-menu.html +0 -9
  468. package/axis-components/tree-selector/design/tree-selector-menu/tree-selector-menu.ts +0 -26
  469. package/axis-components/tree-selector/design/tree-selector-menu-setting/tree-selector-menu-setting.css +0 -0
  470. package/axis-components/tree-selector/design/tree-selector-menu-setting/tree-selector-menu-setting.html +0 -80
  471. package/axis-components/tree-selector/design/tree-selector-menu-setting/tree-selector-menu-setting.ts +0 -58
  472. package/axis-components/tree-selector/design/tree-selector-setting/tree-selector-setting.css +0 -0
  473. package/axis-components/tree-selector/design/tree-selector-setting/tree-selector-setting.html +0 -235
  474. package/axis-components/tree-selector/design/tree-selector-setting/tree-selector-setting.ts +0 -87
  475. package/axis-components/tree-selector/ng-package.json +0 -5
  476. package/axis-components/tree-selector/tree-selector.css +0 -43
  477. package/axis-components/tree-selector/tree-selector.html +0 -65
  478. package/axis-components/tree-selector/tree-selector.options.ts +0 -50
  479. package/axis-components/tree-selector/tree-selector.ts +0 -252
  480. package/axis-components/upload/design/config.ts +0 -37
  481. package/axis-components/upload/design/ng-package.json +0 -5
  482. package/axis-components/upload/design/setting/setting.css +0 -0
  483. package/axis-components/upload/design/setting/setting.html +0 -288
  484. package/axis-components/upload/design/setting/setting.ts +0 -96
  485. package/axis-components/upload/ng-package.json +0 -5
  486. package/axis-components/upload/upload.css +0 -3
  487. package/axis-components/upload/upload.html +0 -36
  488. package/axis-components/upload/upload.options.ts +0 -29
  489. package/axis-components/upload/upload.ts +0 -130
  490. package/core/base/base-menu.ts +0 -22
  491. package/core/base/base.ts +0 -143
  492. package/core/base/design-builder.ts +0 -8
  493. package/core/base/funfield-base.ts +0 -106
  494. package/core/base/funfield-value-base.ts +0 -53
  495. package/core/base/value-access.ts +0 -70
  496. package/core/directives/dynamic.ts +0 -216
  497. package/core/directives/scope.ts +0 -432
  498. package/core/models/api.options.ts +0 -5
  499. package/core/models/base.options.ts +0 -11
  500. package/core/models/cmplib.ts +0 -7
  501. package/core/models/data-source.options.ts +0 -11
  502. package/core/models/data.options.ts +0 -6
  503. package/core/models/design-build.ts +0 -26
  504. package/core/models/design-config.ts +0 -14
  505. package/core/models/design-tree-node.ts +0 -16
  506. package/core/models/event-desc.ts +0 -28
  507. package/core/models/event-handler.ts +0 -6
  508. package/core/models/event.options.ts +0 -14
  509. package/core/models/examples.ts +0 -21
  510. package/core/models/form-registe.options.ts +0 -12
  511. package/core/models/fun-field.options.ts +0 -6
  512. package/core/models/initobs.ts +0 -8
  513. package/core/models/options-node.ts +0 -149
  514. package/core/models/static-data-source.options.ts +0 -4
  515. package/core/models/trigge-events.options.ts +0 -3
  516. package/core/models/value-access.options.ts +0 -10
  517. package/core/ng-package.json +0 -5
  518. package/core/pipes/how-long.pipe.ts +0 -69
  519. package/core/public-api.ts +0 -39
  520. package/core/share/api-handler/api-handler.css +0 -0
  521. package/core/share/api-handler/api-handler.html +0 -38
  522. package/core/share/api-handler/api-handler.ts +0 -51
  523. package/core/share/array-filter-handler/array-filter-handler.css +0 -0
  524. package/core/share/array-filter-handler/array-filter-handler.html +0 -26
  525. package/core/share/array-filter-handler/array-filter-handler.ts +0 -65
  526. package/core/share/array-filter-handler/input-filter-options/filter-options.css +0 -19
  527. package/core/share/array-filter-handler/input-filter-options/filter-options.html +0 -57
  528. package/core/share/array-filter-handler/input-filter-options/filter-options.ts +0 -100
  529. package/core/share/base-design-setting/base-design-setting.css +0 -0
  530. package/core/share/base-design-setting/base-design-setting.html +0 -50
  531. package/core/share/base-design-setting/base-design-setting.ts +0 -55
  532. package/core/share/base-event-handler-descs.ts +0 -100
  533. package/core/share/common-menu/common-menu.css +0 -0
  534. package/core/share/common-menu/common-menu.html +0 -21
  535. package/core/share/common-menu/common-menu.ts +0 -73
  536. package/core/share/data-handler/data-handler.css +0 -0
  537. package/core/share/data-handler/data-handler.html +0 -13
  538. package/core/share/data-handler/data-handler.ts +0 -39
  539. package/core/share/events-handler.service.ts +0 -185
  540. package/core/share/fun-field/fun-field.css +0 -55
  541. package/core/share/fun-field/fun-field.html +0 -175
  542. package/core/share/fun-field/fun-field.ts +0 -363
  543. package/core/share/input-trigger/input-trigger.css +0 -16
  544. package/core/share/input-trigger/input-trigger.html +0 -114
  545. package/core/share/input-trigger/input-trigger.ts +0 -394
  546. package/core/share/msg-tip-handler/msg-tip-handler.css +0 -0
  547. package/core/share/msg-tip-handler/msg-tip-handler.html +0 -40
  548. package/core/share/msg-tip-handler/msg-tip-handler.ts +0 -46
  549. package/core/share/refresh-data-source-handler/refresh-data-source-handler.css +0 -0
  550. package/core/share/refresh-data-source-handler/refresh-data-source-handler.html +0 -29
  551. package/core/share/refresh-data-source-handler/refresh-data-source-handler.ts +0 -55
  552. package/core/share/route-handler/route-handler.css +0 -0
  553. package/core/share/route-handler/route-handler.html +0 -49
  554. package/core/share/route-handler/route-handler.ts +0 -51
  555. package/core/share/set-data-source-handler/set-data-source-handler.css +0 -0
  556. package/core/share/set-data-source-handler/set-data-source-handler.html +0 -23
  557. package/core/share/set-data-source-handler/set-data-source-handler.ts +0 -44
  558. package/core/share/simple-menu/simple-menu.css +0 -0
  559. package/core/share/simple-menu/simple-menu.html +0 -5
  560. package/core/share/simple-menu/simple-menu.ts +0 -17
  561. package/core/share/tokens.ts +0 -29
  562. package/core/share/value-design-setting/value-design-setting.css +0 -0
  563. package/core/share/value-design-setting/value-design-setting.html +0 -48
  564. package/core/share/value-design-setting/value-design-setting.ts +0 -54
  565. package/core/utils/code-name.utils.ts +0 -19
  566. package/core/utils/components-loader.ts +0 -29
  567. package/core/utils/declaration.utils.ts +0 -38
  568. package/core/utils/dynamic.util.ts +0 -57
  569. package/core/utils/form-validators.ts +0 -160
  570. package/core/utils/form.util.ts +0 -25
  571. package/core/utils/http.utils.ts +0 -8
  572. package/core/utils/object.utils.ts +0 -182
  573. package/core/utils/scripts-loader.ts +0 -25
  574. package/ng-package.json +0 -12
  575. package/providers/ng-package.json +0 -5
  576. package/providers/public-api.ts +0 -1
  577. package/public-api.ts +0 -1
  578. package/tsconfig.json +0 -35
  579. package/tsconfig.lib.json +0 -19
  580. package/tsconfig.lib.prod.json +0 -11
@@ -0,0 +1,1746 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, output, computed, signal, inject, effect, ChangeDetectionStrategy, Component, ViewChild, model, ElementRef, ChangeDetectorRef, Injector, ViewContainerRef, HostListener } from '@angular/core';
3
+ import * as i1$3 from 'ng-zorro-antd/splitter';
4
+ import { NzSplitterModule } from 'ng-zorro-antd/splitter';
5
+ import * as i2$3 from 'ng-zorro-antd/tabs';
6
+ import { NzTabsModule } from 'ng-zorro-antd/tabs';
7
+ import { FlatTreeControl } from '@angular/cdk/tree';
8
+ import * as i1 from '@angular/forms';
9
+ import { FormsModule } from '@angular/forms';
10
+ import { NzHighlightPipe } from 'ng-zorro-antd/core/highlight';
11
+ import * as i3 from 'ng-zorro-antd/icon';
12
+ import { NzIconModule } from 'ng-zorro-antd/icon';
13
+ import * as i2 from 'ng-zorro-antd/input';
14
+ import { NzInputModule } from 'ng-zorro-antd/input';
15
+ import * as i4 from 'ng-zorro-antd/tree-view';
16
+ import { NzTreeFlattener, NzTreeFlatDataSource, NzTreeViewModule } from 'ng-zorro-antd/tree-view';
17
+ import { BehaviorSubject, combineLatest, auditTime, tap, map, filter, take, debounceTime, Subject, switchMap, merge, Observable, NEVER, from, of } from 'rxjs';
18
+ import * as i3$1 from 'ng-zorro-antd/flex';
19
+ import { NzFlexModule } from 'ng-zorro-antd/flex';
20
+ import { SelectionModel } from '@angular/cdk/collections';
21
+ import { FilteredTreeResult, AXIS_COMPONENTS_LOADER_TOKEN, ScopeDirective, DynamicDirective, DesignBuilder, AXIS_INJECT_DATA_TOKEN, AXIS_DESIGN_CMPLIBS_TOKEN, isEquals, ValueAccessOptions, copy, HowLongPipe, ValueAccess, AXIS_INJECT_FUNC_TOKEN, AXIS_DESIGN_SCOPE_INFOS_GETTER_TOKEN, AXIS_DESIGN_COMPONENT_INFO_FOR_SETTING_TOKEN, AXIS_DESIGN_ALL_PERMISSIONS_TOKEN, AXIS_DESIGN_OPTIONS_NODE_FOR_MENU, AXIS_DESIGN_CHOOSE_COMPONENT_FUNC_TOKEN, OptionsNode } from 'ngx-axis-appforge/core';
22
+ import * as i6 from 'ng-zorro-antd/button';
23
+ import { NzButtonModule } from 'ng-zorro-antd/button';
24
+ import * as i9 from 'ng-zorro-antd/tooltip';
25
+ import { NzTooltipModule, NzToolTipModule } from 'ng-zorro-antd/tooltip';
26
+ import * as i10 from 'ng-zorro-antd/empty';
27
+ import { NzEmptyModule } from 'ng-zorro-antd/empty';
28
+ import * as i7 from 'ng-zorro-antd/core/transition-patch';
29
+ import * as i8 from 'ng-zorro-antd/core/wave';
30
+ import { CommonModule } from '@angular/common';
31
+ import * as i1$1 from 'ng-zorro-antd/collapse';
32
+ import { NzCollapseModule } from 'ng-zorro-antd/collapse';
33
+ import * as i2$1 from 'ng-zorro-antd/card';
34
+ import { NzCardModule } from 'ng-zorro-antd/card';
35
+ import * as i3$2 from 'ng-zorro-antd/grid';
36
+ import { NzGridModule } from 'ng-zorro-antd/grid';
37
+ import * as i7$1 from 'ng-zorro-antd/dropdown';
38
+ import { NzDropDownModule } from 'ng-zorro-antd/dropdown';
39
+ import { toSignal, toObservable } from '@angular/core/rxjs-interop';
40
+ import * as i12 from 'ng-zorro-antd/select';
41
+ import { NzSelectModule } from 'ng-zorro-antd/select';
42
+ import * as i6$1 from 'ng-zorro-antd/menu';
43
+ import * as i6$2 from 'ng-zorro-antd/drawer';
44
+ import { NzDrawerModule } from 'ng-zorro-antd/drawer';
45
+ import * as i1$2 from 'ng-zorro-antd/modal';
46
+ import { NzModalModule } from 'ng-zorro-antd/modal';
47
+ import * as i2$2 from 'ng-zorro-antd/table';
48
+ import { NzTableModule } from 'ng-zorro-antd/table';
49
+ import * as i8$1 from 'ng-zorro-antd/popover';
50
+ import { NzPopoverModule } from 'ng-zorro-antd/popover';
51
+ import { ClipboardService } from 'ngx-clipboard';
52
+
53
+ class DragDrop {
54
+ optionsNodes;
55
+ optionIdflatNodes;
56
+ treeControl;
57
+ onChange;
58
+ constructor(optionsNodes, optionIdflatNodes, treeControl, onChange) {
59
+ this.optionsNodes = optionsNodes;
60
+ this.optionIdflatNodes = optionIdflatNodes;
61
+ this.treeControl = treeControl;
62
+ this.onChange = onChange;
63
+ }
64
+ dragNode;
65
+ dropNode;
66
+ targetIndex;
67
+ element;
68
+ pos;
69
+ canDrag(nodeId) {
70
+ const node = this.optionsNodes.get(nodeId);
71
+ return !!node && !node?.isRoot && node?.canDrag;
72
+ }
73
+ onDragStart(e, nodeId) {
74
+ this.dragNode = this.optionsNodes.get(nodeId);
75
+ if (this.dragNode?.children?.length) {
76
+ this.treeControl.collapse(this.optionIdflatNodes.get(nodeId));
77
+ }
78
+ setTimeout(() => {
79
+ e.target.style.display = 'none';
80
+ });
81
+ }
82
+ onDragOver(e, nodeId) {
83
+ const node = this.optionsNodes.get(nodeId);
84
+ const parent = node.parentId ? this.optionsNodes.get(node.parentId) : undefined;
85
+ let canDropIn = this.canDrop(node);
86
+ let canDropSide = !!parent && this.canDrop(parent);
87
+ if (!canDropIn && !canDropSide) {
88
+ e.preventDefault();
89
+ return;
90
+ }
91
+ const pos = this.getPos(e, canDropIn, canDropSide);
92
+ const element = e.currentTarget;
93
+ this.updateElementStyle(element, pos);
94
+ if (pos == 0) {
95
+ this.targetIndex = node?.defaultDropIndex;
96
+ this.dropNode = node;
97
+ this.treeControl.expand(this.optionIdflatNodes.get(node.id));
98
+ }
99
+ else if (pos == -1) {
100
+ this.targetIndex = node.indexOfParentObj;
101
+ this.dropNode = parent;
102
+ }
103
+ else {
104
+ this.targetIndex = node.indexOfParentObj + 1;
105
+ this.dropNode = parent;
106
+ }
107
+ }
108
+ updateElementStyle(element, pos) {
109
+ if (element != this.element || pos != this.pos) {
110
+ this.element?.classList.remove("drop_in", "drop_up", "drop_down");
111
+ if (element) {
112
+ switch (pos) {
113
+ case -1:
114
+ element.classList.add("drop_up");
115
+ break;
116
+ case 0:
117
+ element.classList.add("drop_in");
118
+ break;
119
+ default:
120
+ element.classList.add("drop_down");
121
+ break;
122
+ }
123
+ }
124
+ this.element = element;
125
+ this.pos = pos;
126
+ }
127
+ }
128
+ onDragEnd(e, nodeId) {
129
+ e.target.style.display = 'flex';
130
+ if (this.dropNode) {
131
+ if (this.dropNode.dropObj == this.dragNode.parentObj && this.dragNode.indexOfParentObj == this.targetIndex) {
132
+ this.updateElementStyle();
133
+ return undefined;
134
+ }
135
+ if (this.dropNode.dropObj instanceof Array && this.dropNode.dropObj == this.dragNode.parentObj && this.dragNode.indexOfParentObj < this.targetIndex) {
136
+ this.targetIndex--;
137
+ }
138
+ const dragObj = this.dragNode.options;
139
+ if (!this.dragNode.isRoot) {
140
+ if (this.dragNode?.parentObj instanceof Array) {
141
+ this.dragNode.parentObj.splice(this.dragNode.indexOfParentObj, 1);
142
+ }
143
+ else {
144
+ this.dragNode.parentObj[this.dragNode.indexOfParentObj] = null;
145
+ }
146
+ }
147
+ if (this.dropNode.dropObj instanceof Array) {
148
+ this.dropNode.dropObj.splice(this.targetIndex, 0, dragObj);
149
+ }
150
+ else {
151
+ this.dropNode.dropObj[this.targetIndex] = dragObj;
152
+ }
153
+ this.onChange();
154
+ }
155
+ this.dragNode = undefined;
156
+ this.updateElementStyle();
157
+ }
158
+ canDrop(node) {
159
+ if (node && node.canDrop && node.dropType == this.dragNode.dragType) {
160
+ return !node.dropObj[node.defaultDropIndex];
161
+ }
162
+ return false;
163
+ }
164
+ getPos(e, canDropIn, canDropSide) {
165
+ const element = e.target;
166
+ const rect = element.getBoundingClientRect();
167
+ const clientY = e.clientY - rect.top;
168
+ const height = rect.height;
169
+ if (canDropIn && canDropSide) {
170
+ return 1 - Math.floor(clientY / height * 3);
171
+ }
172
+ else if (canDropSide) {
173
+ return clientY < height / 2 ? -1 : 1;
174
+ }
175
+ else {
176
+ return 0;
177
+ }
178
+ }
179
+ }
180
+
181
+ class Tree {
182
+ cdRef;
183
+ node = input.required(...(ngDevMode ? [{ debugName: "node" }] : []));
184
+ optionsNodes = input.required(...(ngDevMode ? [{ debugName: "optionsNodes" }] : []));
185
+ onChange = output();
186
+ onSelect = output();
187
+ onContextMenu = output();
188
+ dragdrop = computed(() => new DragDrop(this.optionsNodes(), this.optionIdflatNodes, this.treeControl, () => this.onChange.emit(undefined)), ...(ngDevMode ? [{ debugName: "dragdrop" }] : []));
189
+ optionIdflatNodes = new Map();
190
+ flatNodeMap = new Map();
191
+ nestedNodeMap = new Map();
192
+ searchValue = signal('', ...(ngDevMode ? [{ debugName: "searchValue" }] : []));
193
+ originData$ = new BehaviorSubject([]);
194
+ searchValue$ = new BehaviorSubject('');
195
+ selectListSelection = new SelectionModel(true);
196
+ design = inject(Design);
197
+ subs = [];
198
+ transformer = (node, level) => {
199
+ const existingNode = this.nestedNodeMap.get(node.id);
200
+ const currentNode = {
201
+ expandable: !!node.children && node.children.length > 0,
202
+ id: node.id,
203
+ title: node.name ?? "",
204
+ icon: node.icon,
205
+ level
206
+ };
207
+ let flatNode;
208
+ if (existingNode?.id == currentNode.id && existingNode.expandable == currentNode.expandable && existingNode.level == currentNode.level) {
209
+ flatNode = Object.assign(existingNode, currentNode);
210
+ }
211
+ else {
212
+ flatNode = currentNode;
213
+ }
214
+ this.optionIdflatNodes.set(flatNode.id, flatNode);
215
+ this.flatNodeMap.set(flatNode.id, node);
216
+ this.nestedNodeMap.set(node.id, flatNode);
217
+ return flatNode;
218
+ };
219
+ treeControl = new FlatTreeControl(node => node.level, node => node.expandable, {
220
+ trackBy: flatNode => flatNode.id
221
+ });
222
+ treeFlattener = new NzTreeFlattener(this.transformer, node => node.level, node => node.expandable, node => node.children);
223
+ dataSource = new NzTreeFlatDataSource(this.treeControl, this.treeFlattener);
224
+ filteredData$ = combineLatest([
225
+ this.originData$,
226
+ this.searchValue$.pipe(auditTime(300), tap(value => this.searchValue.set(value)))
227
+ ]).pipe(map(([data, value]) => (value ? filterTreeData(data, value) : new FilteredTreeResult(data, this.treeControl.expansionModel.selected.filter(id => this.optionsNodes().has(id))))));
228
+ constructor(cdRef) {
229
+ this.cdRef = cdRef;
230
+ effect(() => {
231
+ if (this.node()) {
232
+ this.originData$.next([this.node()]);
233
+ }
234
+ const oldlength = this.selectListSelection.selected.length;
235
+ this.selectListSelection.deselect(...this.selectListSelection.selected.filter(nodeid => !this.optionsNodes().has(nodeid)));
236
+ this.treeControl.expansionModel.deselect(...this.treeControl.expansionModel.selected.filter(id => !this.optionsNodes().has(id)));
237
+ if (oldlength != this.selectListSelection.selected.length) {
238
+ this.sendSelectEvent();
239
+ }
240
+ });
241
+ this.subs.push(this.filteredData$.subscribe(result => {
242
+ this.dataSource.setData(result.treeData);
243
+ this.treeControl.expansionModel.setSelection(...result.needsToExpanded);
244
+ }));
245
+ this.subs.push(this.filteredData$.pipe(filter(r => r.treeData.length > 0), take(1)).subscribe(result => {
246
+ this.selectOne(result.treeData[0].id, { sendEvent: true });
247
+ }));
248
+ }
249
+ hasChild = (_, node) => node.expandable;
250
+ get hasExpanded() {
251
+ return this.treeControl.expansionModel.selected.length > 0;
252
+ }
253
+ onNodeClick(e, node) {
254
+ if (e.metaKey) {
255
+ this.toggleSelect(node.id, { sendEvent: true });
256
+ }
257
+ else {
258
+ this.selectOne(node.id, { sendEvent: true });
259
+ }
260
+ }
261
+ select(nodeId, opt) {
262
+ this.selectListSelection.select(nodeId);
263
+ if (opt?.sendEvent) {
264
+ this.sendSelectEvent();
265
+ }
266
+ }
267
+ selectOne(nodeId, opt) {
268
+ this.unSelectAll();
269
+ this.selectListSelection.select(nodeId);
270
+ if (opt?.sendEvent) {
271
+ this.sendSelectEvent();
272
+ }
273
+ }
274
+ toggleSelect(nodeId, opt) {
275
+ this.selectListSelection.toggle(nodeId);
276
+ if (opt?.sendEvent) {
277
+ this.sendSelectEvent();
278
+ }
279
+ }
280
+ unSelect(nodeId, opt) {
281
+ this.selectListSelection.deselect(nodeId);
282
+ if (opt?.sendEvent) {
283
+ this.sendSelectEvent();
284
+ }
285
+ }
286
+ unSelectAll(opt) {
287
+ this.selectListSelection.clear();
288
+ if (opt?.sendEvent) {
289
+ this.sendSelectEvent();
290
+ }
291
+ }
292
+ sendSelectEvent() {
293
+ this.onSelect.emit(this.selectListSelection.selected);
294
+ }
295
+ selectByNodeIds(nodeIds) {
296
+ this.unSelectAll();
297
+ for (const nodeId of nodeIds) {
298
+ this.select(nodeId);
299
+ const node = this.optionIdflatNodes.get(nodeId);
300
+ if (node) {
301
+ this.treeControl.expand(node);
302
+ }
303
+ }
304
+ this.cdRef.markForCheck();
305
+ }
306
+ expandByNodeIds(nodeIds) {
307
+ for (const nodeId of nodeIds) {
308
+ const node = this.optionIdflatNodes.get(nodeId);
309
+ if (node) {
310
+ this.treeControl.expand(node);
311
+ }
312
+ }
313
+ }
314
+ toggleExpanded() {
315
+ if (this.hasExpanded) {
316
+ this.treeControl.collapseAll();
317
+ }
318
+ else {
319
+ this.treeControl.expandAll();
320
+ }
321
+ }
322
+ reset() {
323
+ this.optionIdflatNodes.clear();
324
+ this.flatNodeMap.clear();
325
+ }
326
+ contextMenu(e, nodeId) {
327
+ this.onContextMenu.emit({ event: e, nodeId });
328
+ }
329
+ removeSelected() {
330
+ let changed = false;
331
+ let next = undefined;
332
+ for (const nodeId of this.selectListSelection.selected) {
333
+ const node = this.optionsNodes().get(nodeId);
334
+ if (node) {
335
+ changed = true;
336
+ if (node.isRoot) {
337
+ next = null;
338
+ }
339
+ else {
340
+ if (Array.isArray(node.parentObj)) {
341
+ node.parentObj.splice(node.parentObj.indexOf(node.options), 1);
342
+ }
343
+ else {
344
+ node.parentObj[node.indexOfParentObj] = null;
345
+ }
346
+ }
347
+ }
348
+ }
349
+ if (changed) {
350
+ this.onChange.emit(next);
351
+ }
352
+ }
353
+ addNodeForSelected(nodes, deleteSuccess = false) {
354
+ if (nodes.length && this.selectListSelection.selected) {
355
+ for (const nodeId of this.selectListSelection.selected) {
356
+ const parentNode = this.optionsNodes().get(nodeId);
357
+ if (parentNode && parentNode.canDrop && parentNode.dropType == "component") {
358
+ if (Array.isArray(parentNode.dropObj)) {
359
+ parentNode.dropObj.splice(parentNode.dropObj.length, 0, ...nodes.map(n => n.options));
360
+ nodes.forEach(n => this.deleteNode(n));
361
+ }
362
+ else if (!parentNode.dropObj[parentNode.defaultDropIndex]) {
363
+ const n = nodes[nodes.length - 1];
364
+ parentNode.dropObj[parentNode.defaultDropIndex] = n.options;
365
+ if (deleteSuccess) {
366
+ this.deleteNode(n);
367
+ }
368
+ }
369
+ }
370
+ }
371
+ this.onChange.emit(undefined);
372
+ }
373
+ }
374
+ deleteNode(node) {
375
+ if (node.parentObj) {
376
+ if (Array.isArray(node.parentObj)) {
377
+ node.parentObj.splice(node.indexOfParentObj, 1);
378
+ }
379
+ else {
380
+ delete node.parentObj[node.indexOfParentObj];
381
+ }
382
+ }
383
+ }
384
+ addRootComponent() {
385
+ this.design.chooseComponent().subscribe(res => {
386
+ const { options, config } = res;
387
+ if (options && config) {
388
+ this.onChange.emit(options);
389
+ }
390
+ });
391
+ }
392
+ ngOnDestroy() {
393
+ for (let sub of this.subs) {
394
+ sub.unsubscribe();
395
+ }
396
+ }
397
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Tree, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
398
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: Tree, isStandalone: true, selector: "axis-design-tree", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null }, optionsNodes: { classPropertyName: "optionsNodes", publicName: "optionsNodes", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onChange: "onChange", onSelect: "onSelect", onContextMenu: "onContextMenu" }, ngImport: i0, template: "<div nz-flex [nzVertical]=\"true\" style=\"height: 100%;\">\n <div nz-flex style=\"padding-right: 8px;\" nzGap=\"4px\" nzAlign=\"center\">\n <input style=\"flex:1;\" type=\"text\" nz-input placeholder=\"\u641C\u7D22\" nzBorderless ngModel\n (ngModelChange)=\"searchValue$.next($event)\" />\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" (click)=\"toggleExpanded()\">\n <nz-icon [nzType]=\"hasExpanded?'shrink':'arrows-alt'\" nzTheme=\"outline\" />\n </button>\n </div>\n @if (node() === null) {\n <nz-empty [nzNotFoundContent]=\"contentTpl\" [nzNotFoundFooter]=\"footerTpl\">\n <ng-template #contentTpl>\n \u6CA1\u6709\u7EC4\u4EF6\n </ng-template>\n <ng-template #footerTpl>\n <button nz-button nzType=\"dashed\" (click)=\"addRootComponent()\">\n <nz-icon nzType=\"plus\"></nz-icon>\n \u6DFB\u52A0\u7EC4\u4EF6\n </button>\n </ng-template>\n </nz-empty>\n }@else {\n <nz-tree-view nzDirectoryTree [nzTreeControl]=\"treeControl\" [nzDataSource]=\"dataSource\">\n <nz-tree-node *nzTreeNodeDef=\"let node\" nzTreeNodePadding [nzTreeNodePaddingIndent]=\"8\"\n (contextmenu)=\"contextMenu($event, node.id)\" [draggable]=\"dragdrop().canDrag(node.id)\"\n (dragstart)=\"dragdrop().onDragStart($event, node.id)\" (dragover)=\"dragdrop().onDragOver($event, node.id)\"\n (dragend)=\"dragdrop().onDragEnd($event,node.id)\">\n <nz-tree-node-toggle nzTreeNodeNoopToggle></nz-tree-node-toggle>\n <nz-tree-node-option [nzDisabled]=\"node.disabled\" [nzSelected]=\"selectListSelection.isSelected(node.id)\"\n (nzClick)=\"onNodeClick($event,node)\" [nz-tooltip]=\"node.id\" [nzTooltipMouseEnterDelay]=\"0.6\">\n <i nz-icon [nzType]=\"node.icon\" style=\"margin: 4px;\"></i>\n <span [innerHTML]=\"node.title | nzHighlight: searchValue() : 'i' : 'highlight'\"></span>\n </nz-tree-node-option>\n </nz-tree-node>\n <nz-tree-node *nzTreeNodeDef=\"let node; when: hasChild\" nzTreeNodePadding [nzTreeNodePaddingIndent]=\"8\"\n (contextmenu)=\"contextMenu($event, node.id)\" [draggable]=\"dragdrop().canDrag(node.id)\"\n (dragstart)=\"dragdrop().onDragStart($event, node.id)\" (dragover)=\"dragdrop().onDragOver($event, node.id)\"\n (dragend)=\"dragdrop().onDragEnd($event,node.id)\">\n <nz-tree-node-toggle>\n <nz-icon nzType=\"caret-down\" nzTreeNodeToggleRotateIcon />\n </nz-tree-node-toggle>\n <nz-tree-node-option [nzDisabled]=\"node.disabled\" [nzSelected]=\"selectListSelection.isSelected(node.id)\"\n (nzClick)=\"onNodeClick($event,node)\" [nz-tooltip]=\"node.id\" [nzTooltipMouseEnterDelay]=\"0.6\">\n <i nz-icon [nzType]=\"node.icon\" style=\"margin: 4px;\"></i>\n <span [innerHTML]=\"node.title | nzHighlight: searchValue() : 'i' : 'highlight'\"></span>\n </nz-tree-node-option>\n </nz-tree-node>\n </nz-tree-view>\n }\n</div>", styles: ["::ng-deep .highlight{color:#f50}nz-tree-view{overflow:auto;flex:1}.drop_in{outline:1px solid blue}.drop_up:after{content:\"\";position:absolute;top:-1px;width:100%;height:2px;background-color:#00f}.drop_down:after{content:\"\";position:absolute;bottom:-1px;width:100%;height:2px;background-color:#00f}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i2.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzVariant", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzTreeViewModule }, { kind: "component", type: i4.NzTreeViewComponent, selector: "nz-tree-view", exportAs: ["nzTreeView"] }, { kind: "directive", type: i4.NzTreeNodeDefDirective, selector: "[nzTreeNodeDef]", inputs: ["nzTreeNodeDefWhen"] }, { kind: "component", type: i4.NzTreeNodeComponent, selector: "nz-tree-node:not([builtin])", exportAs: ["nzTreeNode"] }, { kind: "directive", type: i4.NzTreeNodeToggleDirective, selector: "nz-tree-node-toggle:not([nzTreeNodeNoopToggle]), [nzTreeNodeToggle]", inputs: ["nzTreeNodeToggleRecursive"] }, { kind: "directive", type: i4.NzTreeNodePaddingDirective, selector: "[nzTreeNodePadding]", inputs: ["nzTreeNodePadding", "nzTreeNodePaddingIndent"] }, { kind: "directive", type: i4.NzTreeNodeToggleRotateIconDirective, selector: "[nzTreeNodeToggleRotateIcon]" }, { kind: "component", type: i4.NzTreeNodeOptionComponent, selector: "nz-tree-node-option", inputs: ["nzSelected", "nzDisabled"], outputs: ["nzClick"] }, { kind: "directive", type: i4.NzTreeNodeNoopToggleDirective, selector: "nz-tree-node-toggle[nzTreeNodeNoopToggle], [nzTreeNodeNoopToggle]" }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$1.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵNzTransitionPatchDirective, selector: "[nz-button], [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "directive", type: i8.NzWaveDirective, selector: "[nz-wave],button[nz-button]:not([nzType=\"link\"]):not([nzType=\"text\"])", inputs: ["nzWaveExtraNode"], exportAs: ["nzWave"] }, { kind: "ngmodule", type: NzTooltipModule }, { kind: "directive", type: i9.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: NzEmptyModule }, { kind: "component", type: i10.NzEmptyComponent, selector: "nz-empty", inputs: ["nzNotFoundImage", "nzNotFoundContent", "nzNotFoundFooter"], exportAs: ["nzEmpty"] }, { kind: "pipe", type: NzHighlightPipe, name: "nzHighlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
399
+ }
400
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Tree, decorators: [{
401
+ type: Component,
402
+ args: [{ selector: 'axis-design-tree', imports: [FormsModule, NzInputModule, NzIconModule, NzTreeViewModule, NzFlexModule, NzHighlightPipe, NzButtonModule, NzTooltipModule, NzEmptyModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div nz-flex [nzVertical]=\"true\" style=\"height: 100%;\">\n <div nz-flex style=\"padding-right: 8px;\" nzGap=\"4px\" nzAlign=\"center\">\n <input style=\"flex:1;\" type=\"text\" nz-input placeholder=\"\u641C\u7D22\" nzBorderless ngModel\n (ngModelChange)=\"searchValue$.next($event)\" />\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" (click)=\"toggleExpanded()\">\n <nz-icon [nzType]=\"hasExpanded?'shrink':'arrows-alt'\" nzTheme=\"outline\" />\n </button>\n </div>\n @if (node() === null) {\n <nz-empty [nzNotFoundContent]=\"contentTpl\" [nzNotFoundFooter]=\"footerTpl\">\n <ng-template #contentTpl>\n \u6CA1\u6709\u7EC4\u4EF6\n </ng-template>\n <ng-template #footerTpl>\n <button nz-button nzType=\"dashed\" (click)=\"addRootComponent()\">\n <nz-icon nzType=\"plus\"></nz-icon>\n \u6DFB\u52A0\u7EC4\u4EF6\n </button>\n </ng-template>\n </nz-empty>\n }@else {\n <nz-tree-view nzDirectoryTree [nzTreeControl]=\"treeControl\" [nzDataSource]=\"dataSource\">\n <nz-tree-node *nzTreeNodeDef=\"let node\" nzTreeNodePadding [nzTreeNodePaddingIndent]=\"8\"\n (contextmenu)=\"contextMenu($event, node.id)\" [draggable]=\"dragdrop().canDrag(node.id)\"\n (dragstart)=\"dragdrop().onDragStart($event, node.id)\" (dragover)=\"dragdrop().onDragOver($event, node.id)\"\n (dragend)=\"dragdrop().onDragEnd($event,node.id)\">\n <nz-tree-node-toggle nzTreeNodeNoopToggle></nz-tree-node-toggle>\n <nz-tree-node-option [nzDisabled]=\"node.disabled\" [nzSelected]=\"selectListSelection.isSelected(node.id)\"\n (nzClick)=\"onNodeClick($event,node)\" [nz-tooltip]=\"node.id\" [nzTooltipMouseEnterDelay]=\"0.6\">\n <i nz-icon [nzType]=\"node.icon\" style=\"margin: 4px;\"></i>\n <span [innerHTML]=\"node.title | nzHighlight: searchValue() : 'i' : 'highlight'\"></span>\n </nz-tree-node-option>\n </nz-tree-node>\n <nz-tree-node *nzTreeNodeDef=\"let node; when: hasChild\" nzTreeNodePadding [nzTreeNodePaddingIndent]=\"8\"\n (contextmenu)=\"contextMenu($event, node.id)\" [draggable]=\"dragdrop().canDrag(node.id)\"\n (dragstart)=\"dragdrop().onDragStart($event, node.id)\" (dragover)=\"dragdrop().onDragOver($event, node.id)\"\n (dragend)=\"dragdrop().onDragEnd($event,node.id)\">\n <nz-tree-node-toggle>\n <nz-icon nzType=\"caret-down\" nzTreeNodeToggleRotateIcon />\n </nz-tree-node-toggle>\n <nz-tree-node-option [nzDisabled]=\"node.disabled\" [nzSelected]=\"selectListSelection.isSelected(node.id)\"\n (nzClick)=\"onNodeClick($event,node)\" [nz-tooltip]=\"node.id\" [nzTooltipMouseEnterDelay]=\"0.6\">\n <i nz-icon [nzType]=\"node.icon\" style=\"margin: 4px;\"></i>\n <span [innerHTML]=\"node.title | nzHighlight: searchValue() : 'i' : 'highlight'\"></span>\n </nz-tree-node-option>\n </nz-tree-node>\n </nz-tree-view>\n }\n</div>", styles: ["::ng-deep .highlight{color:#f50}nz-tree-view{overflow:auto;flex:1}.drop_in{outline:1px solid blue}.drop_up:after{content:\"\";position:absolute;top:-1px;width:100%;height:2px;background-color:#00f}.drop_down:after{content:\"\";position:absolute;bottom:-1px;width:100%;height:2px;background-color:#00f}\n"] }]
403
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });
404
+ function filterTreeData(data, value) {
405
+ const needsToExpanded = new Set();
406
+ const _filter = (node, result) => {
407
+ if (node.name?.search(value) !== -1 || node.id?.search(value) !== -1) {
408
+ result.push(node);
409
+ return result;
410
+ }
411
+ if (Array.isArray(node.children)) {
412
+ const nodes = node.children.reduce((a, b) => _filter(b, a), []);
413
+ if (nodes.length) {
414
+ const parentNode = node.copyWith({ children: nodes });
415
+ needsToExpanded.add(parentNode.id);
416
+ result.push(parentNode);
417
+ }
418
+ }
419
+ return result;
420
+ };
421
+ const treeData = data.reduce((a, b) => _filter(b, a), []);
422
+ return new FilteredTreeResult(treeData, [...needsToExpanded]);
423
+ }
424
+
425
+ class DropHandler {
426
+ dragNode;
427
+ dropNode;
428
+ elementOptionIds;
429
+ isHorizontal;
430
+ placeholder;
431
+ beforeElement;
432
+ constructor(dragNode, dropNode, elementOptionIds, isHorizontal) {
433
+ this.dragNode = dragNode;
434
+ this.dropNode = dropNode;
435
+ this.elementOptionIds = elementOptionIds;
436
+ this.isHorizontal = isHorizontal;
437
+ this.placeholder = dragNode.element.cloneNode(true);
438
+ this.placeholder.style.display = "inline";
439
+ this.placeholder.style.opacity = "0.5";
440
+ }
441
+ onDragEnd() {
442
+ this.placeholder.remove();
443
+ }
444
+ onDragOver(e) {
445
+ const element = this.getBeforeElement(e);
446
+ if (element === this.beforeElement) {
447
+ return;
448
+ }
449
+ this.beforeElement = element;
450
+ if (element) {
451
+ this.dropNode.dropElement.insertBefore(this.placeholder, element);
452
+ }
453
+ else {
454
+ this.dropNode.dropElement.appendChild(this.placeholder);
455
+ }
456
+ }
457
+ close() {
458
+ this.placeholder.remove();
459
+ this.beforeElement = undefined;
460
+ }
461
+ getBeforeElement(e) {
462
+ for (const child of this.dropNode.dropElement.children) {
463
+ if (this.elementOptionIds.has(child)) {
464
+ const rect = child.getBoundingClientRect();
465
+ if (this.isHorizontal) {
466
+ const middle = rect.left + (rect.width / 2);
467
+ if (e.clientX <= middle) {
468
+ return child;
469
+ }
470
+ }
471
+ else {
472
+ const middle = rect.top + (rect.height / 2);
473
+ if (e.clientY <= middle) {
474
+ return child;
475
+ }
476
+ }
477
+ }
478
+ }
479
+ return null;
480
+ }
481
+ }
482
+
483
+ class DragService {
484
+ preview;
485
+ constructor(preview) {
486
+ this.preview = preview;
487
+ }
488
+ canDropNodes = [];
489
+ oriDragDisplay;
490
+ currentDropNodes = new Map();
491
+ dragEn;
492
+ dropHandler;
493
+ initElement(node, en) {
494
+ if (!node.isRoot && node.canDrag) {
495
+ this.bindDragEvent(en);
496
+ }
497
+ if (node.canDrop) {
498
+ this.canDropNodes.push(en);
499
+ }
500
+ }
501
+ getOptionsNode(node) {
502
+ return this.preview.optionsNodes().get(node.id);
503
+ }
504
+ bindDragEvent(node) {
505
+ node.element.setAttribute("draggable", "true");
506
+ node.element.ondragstart = (e) => {
507
+ e.stopPropagation();
508
+ this.dragStart(node);
509
+ this.oriDragDisplay = node.element.style.display;
510
+ setTimeout(() => {
511
+ node.element.style.display = "none";
512
+ });
513
+ };
514
+ node.element.ondragend = (e) => {
515
+ e.preventDefault();
516
+ e.stopPropagation();
517
+ this.dragEnd();
518
+ };
519
+ }
520
+ bindDropEvent(en) {
521
+ this.currentDropNodes.set(en, null);
522
+ setTimeout(() => {
523
+ const { clientWidth, clientHeight } = en.dropElement;
524
+ if (!clientWidth || !clientHeight) {
525
+ const { display, minWidth, minHeight } = en.dropElement.style;
526
+ this.currentDropNodes.set(en, { display, minWidth, minHeight });
527
+ if (!clientWidth) {
528
+ en.dropElement.style.minWidth = "100px";
529
+ }
530
+ if (!clientHeight) {
531
+ en.dropElement.style.minHeight = "50px";
532
+ }
533
+ en.dropElement.style.display = "block";
534
+ }
535
+ });
536
+ en.dropElement.ondragenter = (e) => {
537
+ e?.preventDefault();
538
+ e.stopPropagation();
539
+ if (this.dropHandler?.dropNode == en) {
540
+ return;
541
+ }
542
+ this.dropHandler?.close();
543
+ const node = this.getOptionsNode(en);
544
+ this.dropHandler = new DropHandler(this.dragEn, en, this.preview.elementOptionIds, node.childDirection == "horizontal");
545
+ };
546
+ en.dropElement.ondragover = (e) => {
547
+ e.preventDefault();
548
+ e.stopPropagation();
549
+ this.dropHandler?.onDragOver?.(e);
550
+ };
551
+ }
552
+ dragStart(dragEn) {
553
+ this.dragEn = dragEn;
554
+ this.canDropNodes = this.canDropNodes.filter(en => this.preview.optionsNodes().has(en.id));
555
+ this.canDropNodes
556
+ .filter(dropEn => {
557
+ const dropNode = this.getOptionsNode(dropEn);
558
+ const dragNode = this.getOptionsNode(dragEn);
559
+ return dropNode.dropType == dragNode.dragType && !dropNode.dropObj[dropNode.defaultDropIndex] && dropEn.dropElement;
560
+ })
561
+ .forEach(node => this.bindDropEvent(node));
562
+ this.preview.onDragStart();
563
+ }
564
+ dragEnd() {
565
+ let dragId;
566
+ if (this.dropHandler) {
567
+ const dropEn = this.dropHandler.dropNode;
568
+ const dropNode = this.getOptionsNode(dropEn);
569
+ const dragNode = this.getOptionsNode(this.dragEn);
570
+ let targetIndex = this.dropHandler.beforeElement ? this.preview.getNodeByElement(this.dropHandler.beforeElement)?.indexOfParentObj : dropNode?.defaultDropIndex;
571
+ if (dropNode.dropObj == dragNode.parentObj && dragNode.indexOfParentObj == targetIndex) {
572
+ this.preview.onDragEnd(false);
573
+ }
574
+ else {
575
+ dragId = dragNode?.id;
576
+ if (dropNode.dropObj instanceof Array && dropNode.dropObj == dragNode.parentObj && dragNode.indexOfParentObj < targetIndex) {
577
+ targetIndex--;
578
+ }
579
+ const dragObj = dragNode.options;
580
+ if (!dragNode.isRoot) {
581
+ if (dragNode?.parentObj instanceof Array) {
582
+ dragNode.parentObj.splice(dragNode.indexOfParentObj, 1);
583
+ }
584
+ else {
585
+ dragNode.parentObj[dragNode.indexOfParentObj] = null;
586
+ }
587
+ }
588
+ if (dropNode?.dropObj instanceof Array) {
589
+ dropNode.dropObj.splice(targetIndex, 0, dragObj);
590
+ }
591
+ else {
592
+ dropNode.dropObj[targetIndex] = dragObj;
593
+ }
594
+ this.preview.onDragEnd(true);
595
+ }
596
+ this.dropHandler.onDragEnd();
597
+ this.dropHandler = undefined;
598
+ }
599
+ else {
600
+ this.preview.onDragEnd(false);
601
+ }
602
+ this.dragEn.element.style.display = this.oriDragDisplay;
603
+ this.dragEn = undefined;
604
+ this.oriDragDisplay = undefined;
605
+ this.currentDropNodes.forEach((style, en) => {
606
+ if (style) {
607
+ en.dropElement.style.minWidth = style.minWidth;
608
+ en.dropElement.style.minHeight = style.minHeight;
609
+ en.dropElement.style.display = style.display;
610
+ }
611
+ en.dropElement.ondragenter = null;
612
+ en.dropElement.ondragover = null;
613
+ });
614
+ this.currentDropNodes.clear();
615
+ return dragId;
616
+ }
617
+ reset() {
618
+ this.dropHandler?.close();
619
+ this.dragEn = undefined;
620
+ this.dropHandler = undefined;
621
+ }
622
+ }
623
+
624
+ class SelectService {
625
+ preview;
626
+ hoverElements = [];
627
+ enable = true;
628
+ selectElements = new Set();
629
+ constructor(preview) {
630
+ this.preview = preview;
631
+ }
632
+ initElement(element) {
633
+ element.style.outlineOffset = "1px";
634
+ element.onclick = (e) => {
635
+ e.stopPropagation();
636
+ if (e.altKey) {
637
+ this.toggleSelect(element, { sendEvent: true });
638
+ }
639
+ else {
640
+ this.selectOne(element, { sendEvent: true });
641
+ }
642
+ };
643
+ element.onmouseenter = () => {
644
+ if (this.enable) {
645
+ this.addHoverElement(element);
646
+ }
647
+ };
648
+ element.onmouseleave = () => {
649
+ if (this.enable) {
650
+ this.popHoverElement(element);
651
+ }
652
+ };
653
+ }
654
+ enableHover() {
655
+ this.enable = true;
656
+ }
657
+ disableHover() {
658
+ this.enable = false;
659
+ }
660
+ addHoverElement(element) {
661
+ this.hoverElements.unshift(element);
662
+ this.refreshHoverElements();
663
+ }
664
+ popHoverElement(element) {
665
+ const i = this.hoverElements.lastIndexOf(element);
666
+ if (i != -1) {
667
+ for (const e of this.hoverElements.splice(0, i + 1)) {
668
+ if (!this.selectElements.has(element)) {
669
+ element.style.outline = "none";
670
+ }
671
+ }
672
+ }
673
+ this.refreshHoverElements();
674
+ }
675
+ select(element, opt) {
676
+ this.selectElements.add(element);
677
+ element.style.outline = "2px dashed green";
678
+ if (opt?.sendEvent) {
679
+ this.sendSelectEvent();
680
+ }
681
+ }
682
+ selectOne(element, opt) {
683
+ this.unSelectAll();
684
+ this.selectElements.add(element);
685
+ element.style.outline = "2px dashed green";
686
+ if (opt?.sendEvent) {
687
+ this.sendSelectEvent();
688
+ }
689
+ }
690
+ toggleSelect(element, opt) {
691
+ if (this.selectElements.has(element)) {
692
+ this.unSelect(element);
693
+ }
694
+ else {
695
+ this.select(element);
696
+ }
697
+ if (opt?.sendEvent) {
698
+ this.sendSelectEvent();
699
+ }
700
+ }
701
+ unSelect(element, opt) {
702
+ if (this.selectElements.has(element)) {
703
+ this.selectElements.delete(element);
704
+ element.style.outline = "none";
705
+ if (opt?.sendEvent) {
706
+ this.sendSelectEvent();
707
+ }
708
+ }
709
+ }
710
+ unSelectAll(opt) {
711
+ for (let element of this.selectElements) {
712
+ this.unSelect(element);
713
+ }
714
+ if (opt?.sendEvent) {
715
+ this.sendSelectEvent();
716
+ }
717
+ }
718
+ sendSelectEvent() {
719
+ this.preview.onSelectChange?.(Array.from(this.selectElements));
720
+ }
721
+ refreshHoverElements() {
722
+ this.hoverElements = this.hoverElements.filter(e => this.preview.elementOptionIds.has(e));
723
+ if (this.hoverElements.length && !this.selectElements.has(this.hoverElements[0])) {
724
+ this.hoverElements[0].style.outline = "1.5px dashed rgb(255,0,0)";
725
+ }
726
+ if (this.hoverElements.length > 1 && !this.selectElements.has(this.hoverElements[1])) {
727
+ this.hoverElements[1].style.outline = "1.5px dashed rgba(255,0,0,0.4)";
728
+ }
729
+ if (this.hoverElements.length > 2) {
730
+ this.hoverElements.slice(2).filter(r => !this.selectElements.has(r)).forEach((e) => {
731
+ e.style.outline = "none";
732
+ });
733
+ }
734
+ }
735
+ reset(opt) {
736
+ for (const element of this.hoverElements) {
737
+ element.style.outline = "none";
738
+ }
739
+ for (const element of this.selectElements) {
740
+ element.style.outline = "none";
741
+ }
742
+ this.hoverElements = [];
743
+ this.selectElements.clear();
744
+ if (opt?.sendEvent) {
745
+ this.sendSelectEvent();
746
+ }
747
+ }
748
+ getSelectElements() {
749
+ return [...this.selectElements.values()];
750
+ }
751
+ }
752
+
753
+ class Preview {
754
+ constructor() {
755
+ effect(async () => {
756
+ if (this.loadAndOptions()) {
757
+ await this.loadAndOptions()[0];
758
+ this.refresh();
759
+ }
760
+ });
761
+ }
762
+ loadAndOptions = input.required(...(ngDevMode ? [{ debugName: "loadAndOptions" }] : []));
763
+ optionsNodes = input.required(...(ngDevMode ? [{ debugName: "optionsNodes" }] : []));
764
+ injectData = input.required(...(ngDevMode ? [{ debugName: "injectData" }] : []));
765
+ loader = inject(AXIS_COMPONENTS_LOADER_TOKEN);
766
+ onChange = output();
767
+ onSelect = output();
768
+ onContextMenu = output();
769
+ elementOptionIds = new Map();
770
+ elementComponentRefs = new Map();
771
+ optionIdElements = new Map();
772
+ scopeSubjects = new Map();
773
+ dragService = new DragService(this);
774
+ selectService = new SelectService(this);
775
+ selected = new Map();
776
+ dynamicDirective;
777
+ initScope(scope) {
778
+ this.getAndUpdateScopeSubject(scope.axisScope(), scope);
779
+ }
780
+ async initElement(ref, options) {
781
+ await this.loadAndOptions()[0];
782
+ if (!options?.id || !this.optionsNodes().has(options.id)) {
783
+ return;
784
+ }
785
+ try {
786
+ const element = ref.location.nativeElement;
787
+ ref.onDestroy(() => {
788
+ this.elementComponentRefs.delete(element);
789
+ this.elementOptionIds.delete(element);
790
+ if (this.optionIdElements.has(options.id)) {
791
+ this.optionIdElements.set(options.id, this.optionIdElements.get(options.id).filter(e => e !== element));
792
+ }
793
+ });
794
+ this.elementComponentRefs.set(element, ref);
795
+ const { component } = options;
796
+ const config = await this.loader.loadComponent(`${component}/design`);
797
+ if (config) {
798
+ const binds = config.bindElementsOptionsNode?.(element, options);
799
+ if (binds) {
800
+ for (const en of Object.entries(binds)) {
801
+ const nodeId = en[0];
802
+ const element = en[1].element;
803
+ const node = this.optionsNodes().get(nodeId);
804
+ if (node && element && !this.elementOptionIds.has(element)) {
805
+ if (!this.optionIdElements.has(nodeId)) {
806
+ this.optionIdElements.set(nodeId, []);
807
+ }
808
+ this.optionIdElements.get(nodeId)?.push(element);
809
+ this.elementOptionIds.set(element, nodeId);
810
+ this.selectService.initElement(element);
811
+ if (node.canDrag || node.canDrop) {
812
+ this.dragService.initElement(node, node.toElementNode(en[1]));
813
+ }
814
+ if (node.contextMenu) {
815
+ element.oncontextmenu = (e) => {
816
+ this.onContextMenu.emit({ event: e, nodeId: en[0] });
817
+ };
818
+ }
819
+ if (this.selected.has(nodeId) && this.selected.get(nodeId) == this.optionIdElements.get(nodeId).length - 1) {
820
+ this.selectService.select(element);
821
+ }
822
+ }
823
+ }
824
+ }
825
+ }
826
+ }
827
+ catch (_) {
828
+ }
829
+ }
830
+ getNodeByElement(element) {
831
+ const id = this.elementOptionIds.get(element);
832
+ if (id) {
833
+ return this.optionsNodes().get(id);
834
+ }
835
+ return undefined;
836
+ }
837
+ onSelectChange(elements) {
838
+ this.selected.clear();
839
+ for (const element of elements) {
840
+ const id = this.elementOptionIds.get(element);
841
+ if (id) {
842
+ const elementList = this.optionIdElements.get(id);
843
+ this.selected.set(id, elementList?.indexOf(element) ?? 0);
844
+ }
845
+ }
846
+ this.onSelect.emit(Array.from(this.selected.keys()));
847
+ }
848
+ onDragStart() {
849
+ this.selectService.disableHover();
850
+ }
851
+ onDragEnd(changed) {
852
+ if (changed) {
853
+ this.onChange.emit();
854
+ }
855
+ this.selectService.enableHover();
856
+ }
857
+ forceRender() {
858
+ this.elementOptionIds.clear();
859
+ this.optionIdElements.clear();
860
+ this.dragService.reset();
861
+ this.selectService.reset();
862
+ this.dynamicDirective?.forceRender();
863
+ }
864
+ refresh() {
865
+ Array.from(this.optionIdElements.keys()).forEach(id => {
866
+ if (!this.optionsNodes().has(id)) {
867
+ this.optionIdElements.get(id)?.forEach(element => {
868
+ this.elementOptionIds.delete(element);
869
+ });
870
+ this.optionIdElements.delete(id);
871
+ }
872
+ });
873
+ setTimeout(() => {
874
+ this.selectService.getSelectElements().filter(e => !document.contains(e)).forEach(e => {
875
+ const nodeId = this.elementOptionIds.get(e);
876
+ this.elementComponentRefs.delete(e);
877
+ if (nodeId) {
878
+ const elements = this.optionIdElements.get(nodeId);
879
+ elements?.splice(elements.indexOf(e), 1);
880
+ const res = this.getParentComponentRef(nodeId);
881
+ if (res) {
882
+ this.initElement(res.ref, res.options);
883
+ }
884
+ }
885
+ });
886
+ }, 50);
887
+ }
888
+ getParentComponentRef(nodeId) {
889
+ const node = this.optionsNodes().get(nodeId);
890
+ if (node?.parentId) {
891
+ const parent = this.optionsNodes().get(node.parentId);
892
+ if (parent) {
893
+ const parentElement = this.optionIdElements.get(parent.id);
894
+ if (parentElement?.length) {
895
+ const ref = this.elementComponentRefs.get(parentElement[0]);
896
+ if (ref) {
897
+ return { ref, options: parent.options };
898
+ }
899
+ }
900
+ return this.getParentComponentRef(parent.id);
901
+ }
902
+ }
903
+ return undefined;
904
+ }
905
+ selectByNodeIds(nodeIds) {
906
+ if (nodeIds?.some(id => !this.selected.has(id))) {
907
+ this.selectService.unSelectAll();
908
+ this.selected.clear();
909
+ for (const nodeId of nodeIds) {
910
+ this.selected.set(nodeId, 0);
911
+ const elements = this.optionIdElements.get(nodeId);
912
+ if (elements?.[0]) {
913
+ this.selectService.select(elements[0]);
914
+ }
915
+ }
916
+ }
917
+ }
918
+ getAndUpdateScopeSubject(scopeId, initScope) {
919
+ if (!this.scopeSubjects.has(scopeId)) {
920
+ this.scopeSubjects.set(scopeId, new BehaviorSubject(initScope));
921
+ }
922
+ const subject = this.scopeSubjects.get(scopeId);
923
+ if (initScope && initScope != subject.value) {
924
+ subject.next(initScope);
925
+ }
926
+ return subject;
927
+ }
928
+ updateScopeWithSelectedElement(scopeId) {
929
+ const elements = this.selectService.getSelectElements();
930
+ if (elements.length > 0) {
931
+ const ref = this.elementComponentRefs.get(elements[0]);
932
+ const scope = ref?.injector.get(ScopeDirective, null)?.findScope(scopeId);
933
+ if (scope) {
934
+ this.getAndUpdateScopeSubject(scope.axisScope(), scope);
935
+ }
936
+ }
937
+ }
938
+ dragForOuter(node) {
939
+ this.dragService.dragStart(node);
940
+ }
941
+ dragEndForOuter() {
942
+ return this.dragService.dragEnd();
943
+ }
944
+ ngOnDestroy() {
945
+ for (const s of this.scopeSubjects.values()) {
946
+ s.unsubscribe();
947
+ }
948
+ }
949
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Preview, deps: [], target: i0.ɵɵFactoryTarget.Component });
950
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.2", type: Preview, isStandalone: true, selector: "axis-design-preview", inputs: { loadAndOptions: { classPropertyName: "loadAndOptions", publicName: "loadAndOptions", isSignal: true, isRequired: true, transformFunction: null }, optionsNodes: { classPropertyName: "optionsNodes", publicName: "optionsNodes", isSignal: true, isRequired: true, transformFunction: null }, injectData: { classPropertyName: "injectData", publicName: "injectData", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onChange: "onChange", onSelect: "onSelect", onContextMenu: "onContextMenu" }, providers: [
951
+ {
952
+ provide: DesignBuilder,
953
+ useFactory: (preview) => {
954
+ return new DesignBuilder((ref, options) => preview.initElement(ref, options), (scope) => preview.initScope(scope));
955
+ },
956
+ deps: [Preview]
957
+ }, {
958
+ provide: AXIS_INJECT_DATA_TOKEN,
959
+ useFactory: (preview) => {
960
+ return preview.injectData();
961
+ },
962
+ deps: [Preview]
963
+ }
964
+ ], viewQueries: [{ propertyName: "dynamicDirective", first: true, predicate: ["child"], descendants: true, read: DynamicDirective }], ngImport: i0, template: "<ng-container #child [axisDynamic]=\"loadAndOptions()?.[1]\" [standalone]=\"true\" [isDesign]=\"true\"></ng-container>", styles: [":host{padding:4px}\n"], dependencies: [{ kind: "directive", type: DynamicDirective, selector: "[axisDynamic]", inputs: ["axisDynamic", "standalone", "isDesign"], exportAs: ["axisDynamic"] }, { kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
965
+ }
966
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Preview, decorators: [{
967
+ type: Component,
968
+ args: [{ selector: 'axis-design-preview', imports: [DynamicDirective, CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
969
+ {
970
+ provide: DesignBuilder,
971
+ useFactory: (preview) => {
972
+ return new DesignBuilder((ref, options) => preview.initElement(ref, options), (scope) => preview.initScope(scope));
973
+ },
974
+ deps: [Preview]
975
+ }, {
976
+ provide: AXIS_INJECT_DATA_TOKEN,
977
+ useFactory: (preview) => {
978
+ return preview.injectData();
979
+ },
980
+ deps: [Preview]
981
+ }
982
+ ], template: "<ng-container #child [axisDynamic]=\"loadAndOptions()?.[1]\" [standalone]=\"true\" [isDesign]=\"true\"></ng-container>", styles: [":host{padding:4px}\n"] }]
983
+ }], ctorParameters: () => [], propDecorators: { dynamicDirective: [{
984
+ type: ViewChild,
985
+ args: ["child", { read: DynamicDirective }]
986
+ }] } });
987
+
988
+ class Cmplib {
989
+ constructor() {
990
+ effect(() => {
991
+ this.tags();
992
+ this.cmplib();
993
+ this.searchValue$.next(this.searchValue$.value);
994
+ });
995
+ }
996
+ cmplibs = inject(AXIS_DESIGN_CMPLIBS_TOKEN, { optional: true });
997
+ cmplib = model(...(ngDevMode ? [undefined, { debugName: "cmplib" }] : []));
998
+ dragOptions = signal(undefined, ...(ngDevMode ? [{ debugName: "dragOptions" }] : []));
999
+ selectMode = input.required(...(ngDevMode ? [{ debugName: "selectMode" }] : []));
1000
+ tags = input(...(ngDevMode ? [undefined, { debugName: "tags" }] : []));
1001
+ dragExample;
1002
+ clickExample = output();
1003
+ dragStart = output();
1004
+ dragEnd = output();
1005
+ dragElement;
1006
+ searchValue$ = new BehaviorSubject('');
1007
+ displayCmpLib = toSignal(this.searchValue$.pipe(auditTime(300), map(v => {
1008
+ if (v || this.tags()?.length) {
1009
+ v = v.toLowerCase();
1010
+ return this.cmplib()?.map(group => ({
1011
+ groupName: group.groupName,
1012
+ children: group.children.filter(c => (!v || c.component.includes(v)) && (!this.tags()?.length || c.tags?.some(t => this.tags().includes(t))))
1013
+ })).filter(group => group.children.length);
1014
+ }
1015
+ else {
1016
+ return this.cmplib();
1017
+ }
1018
+ })));
1019
+ ngOnInit() {
1020
+ if (this.cmplibs?.length) {
1021
+ this.cmplib.set(this.cmplibs[0].lib);
1022
+ }
1023
+ }
1024
+ onClick(example) {
1025
+ if (this.selectMode() == "click") {
1026
+ this.clickExample.emit(example);
1027
+ }
1028
+ }
1029
+ preloadDragElement(example) {
1030
+ if (this.selectMode() == "drag") {
1031
+ this.dragOptions.set(example.builder());
1032
+ this.dragExample = example;
1033
+ }
1034
+ }
1035
+ onDragStart(e) {
1036
+ if (this.selectMode() == "drag") {
1037
+ e.stopPropagation();
1038
+ if (e.dataTransfer) {
1039
+ e.dataTransfer.effectAllowed = 'move';
1040
+ }
1041
+ e.dataTransfer?.setDragImage(this.dragElement?.nativeElement, 0, 0);
1042
+ setTimeout(() => {
1043
+ this.dragStart.emit({ example: this.dragExample, element: this.dragElement?.nativeElement });
1044
+ });
1045
+ }
1046
+ }
1047
+ onDragEnd(e) {
1048
+ if (this.selectMode() == "drag") {
1049
+ e.stopPropagation();
1050
+ e.preventDefault();
1051
+ this.dragEnd.emit();
1052
+ }
1053
+ }
1054
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Cmplib, deps: [], target: i0.ɵɵFactoryTarget.Component });
1055
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: Cmplib, isStandalone: true, selector: "axis-cmplib", inputs: { cmplib: { classPropertyName: "cmplib", publicName: "cmplib", isSignal: true, isRequired: false, transformFunction: null }, selectMode: { classPropertyName: "selectMode", publicName: "selectMode", isSignal: true, isRequired: true, transformFunction: null }, tags: { classPropertyName: "tags", publicName: "tags", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cmplib: "cmplibChange", clickExample: "clickExample", dragStart: "dragStart", dragEnd: "dragEnd" }, viewQueries: [{ propertyName: "dragElement", first: true, predicate: ["dragElement"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<div nz-flex nzAlign=\"center\">\n <input style=\"flex:1\" type=\"text\" nz-input placeholder=\"\u641C\u7D22\" nzBorderless ngModel\n (ngModelChange)=\"searchValue$.next($event)\" />\n <nz-select [(ngModel)]=\"cmplib\" nzSize=\"small\" nzBorderless style=\"width: auto;\">\n @for (lib of cmplibs; track $index) {\n <nz-option [nzValue]=\"lib.lib\" [nzLabel]=\"lib.libName\"></nz-option>\n }\n </nz-select>\n</div>\n<nz-collapse nzAccordion>\n @for (group of displayCmpLib(); track group.groupName) {\n <nz-collapse-panel [nzHeader]=\"`${group.groupName}(${group.children.length})`\">\n <div nz-row [nzGutter]=\"[8,8]\">\n @for (item of group.children; track item.component) {\n <div nz-col [nzSpan]=\"item.span\">\n <nz-card nzSize=\"small\" nzHoverable [nzCover]=\"coverTemplate\" [nzTitle]=\"item.component\"\n [nzExtra]=\"item.moreExamples? more:''\" [nzBodyStyle]=\"{padding:0}\" (click)=\"onClick(item.example)\"\n [draggable]=\"selectMode()=='drag'\" (mouseenter)=\"preloadDragElement(item.example)\"\n (dragstart)=\"onDragStart($event)\" (dragend)=\"onDragEnd($event)\">\n </nz-card>\n <ng-template #coverTemplate>\n <img style=\"margin: 4px;object-fit: contain;\" [style.height.px]=\"item.height\"\n [src]=\"item.coverImg\" />\n </ng-template>\n <ng-template #more>\n <a nz-button nzType=\"link\" nzSize=\"small\" nz-dropdown [nzDropdownMenu]=\"examples\">\n <nz-icon nzType=\"ellipsis\"></nz-icon>\n </a>\n <nz-dropdown-menu #examples=\"nzDropdownMenu\">\n <ul nz-menu nzSelectable>\n @for (item of item.moreExamples; track item.name) {\n <li nz-menu-item (click)=\"onClick(item)\" [draggable]=\"selectMode()=='drag'\"\n (mouseenter)=\"preloadDragElement(item)\" (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\">{{item.name}}</li>\n }\n </ul>\n </nz-dropdown-menu>\n </ng-template>\n </div>\n }\n </div>\n </nz-collapse-panel>\n }\n</nz-collapse>\n<div class=\"dragElementContainer\">\n <div #dragElement>\n @if (dragOptions()) {\n <ng-container [axisDynamic]=\"dragOptions()\" [standalone]=\"true\"></ng-container>\n {{dragOptions().type}}\n }\n </div>\n</div>", styles: [".dragElementContainer{position:absolute;z-index:-9999;top:100px}\n"], dependencies: [{ kind: "ngmodule", type: NzCollapseModule }, { kind: "component", type: i1$1.NzCollapsePanelComponent, selector: "nz-collapse-panel", inputs: ["nzActive", "nzDisabled", "nzShowArrow", "nzExtra", "nzHeader", "nzExpandedIcon"], outputs: ["nzActiveChange"], exportAs: ["nzCollapsePanel"] }, { kind: "component", type: i1$1.NzCollapseComponent, selector: "nz-collapse", inputs: ["nzAccordion", "nzBordered", "nzGhost", "nzExpandIconPosition"], exportAs: ["nzCollapse"] }, { kind: "ngmodule", type: NzCardModule }, { kind: "component", type: i2$1.NzCardComponent, selector: "nz-card", inputs: ["nzBordered", "nzLoading", "nzHoverable", "nzBodyStyle", "nzCover", "nzActions", "nzType", "nzSize", "nzTitle", "nzExtra"], exportAs: ["nzCard"] }, { kind: "ngmodule", type: NzGridModule }, { kind: "directive", type: i3$2.NzColDirective, selector: "[nz-col],nz-col,nz-form-control,nz-form-label", inputs: ["nzFlex", "nzSpan", "nzOrder", "nzOffset", "nzPush", "nzPull", "nzXs", "nzSm", "nzMd", "nzLg", "nzXl", "nzXXl"], exportAs: ["nzCol"] }, { kind: "directive", type: i3$2.NzRowDirective, selector: "[nz-row],nz-row,nz-form-item", inputs: ["nzAlign", "nzJustify", "nzGutter"], exportAs: ["nzRow"] }, { kind: "directive", type: DynamicDirective, selector: "[axisDynamic]", inputs: ["axisDynamic", "standalone", "isDesign"], exportAs: ["axisDynamic"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵNzTransitionPatchDirective, selector: "[nz-button], [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: i6$1.NzMenuDirective, selector: "[nz-menu]", inputs: ["nzInlineIndent", "nzTheme", "nzMode", "nzInlineCollapsed", "nzSelectable"], outputs: ["nzClick"], exportAs: ["nzMenu"] }, { kind: "component", type: i6$1.NzMenuItemComponent, selector: "[nz-menu-item]", inputs: ["nzPaddingLeft", "nzDisabled", "nzSelected", "nzDanger", "nzMatchRouterExact", "nzMatchRouter"], exportAs: ["nzMenuItem"] }, { kind: "directive", type: i7$1.NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "directive", type: i7$1.NzDropDownADirective, selector: "a[nz-dropdown]" }, { kind: "component", type: i7$1.NzDropdownMenuComponent, selector: "nz-dropdown-menu", exportAs: ["nzDropdownMenu"] }, { kind: "directive", type: i7$1.NzDropdownButtonDirective, selector: "[nz-button][nz-dropdown]" }, { kind: "ngmodule", type: NzInputModule }, { kind: "directive", type: i2.NzInputDirective, selector: "input[nz-input],textarea[nz-input]", inputs: ["nzBorderless", "nzVariant", "nzSize", "nzStepperless", "nzStatus", "disabled"], exportAs: ["nzInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$1.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzSelectModule }, { kind: "component", type: i12.NzOptionComponent, selector: "nz-option", inputs: ["nzTitle", "nzLabel", "nzValue", "nzKey", "nzDisabled", "nzHide", "nzCustomContent"], exportAs: ["nzOption"] }, { kind: "component", type: i12.NzSelectComponent, selector: "nz-select", inputs: ["nzId", "nzSize", "nzStatus", "nzVariant", "nzOptionHeightPx", "nzOptionOverflowSize", "nzDropdownClassName", "nzDropdownMatchSelectWidth", "nzDropdownStyle", "nzNotFoundContent", "nzPlaceHolder", "nzPlacement", "nzMaxTagCount", "nzDropdownRender", "nzCustomTemplate", "nzSuffixIcon", "nzClearIcon", "nzRemoveIcon", "nzMenuItemSelectedIcon", "nzTokenSeparators", "nzMaxTagPlaceholder", "nzMaxMultipleCount", "nzMode", "nzFilterOption", "compareWith", "nzAllowClear", "nzBorderless", "nzShowSearch", "nzLoading", "nzAutoFocus", "nzAutoClearSearchValue", "nzServerSearch", "nzDisabled", "nzOpen", "nzSelectOnTab", "nzBackdrop", "nzOptions", "nzShowArrow"], outputs: ["nzOnSearch", "nzScrollToBottom", "nzOpenChange", "nzBlur", "nzFocus", "nzOnClear"], exportAs: ["nzSelect"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1056
+ }
1057
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Cmplib, decorators: [{
1058
+ type: Component,
1059
+ args: [{ selector: 'axis-cmplib', imports: [NzCollapseModule, NzCardModule, NzGridModule, DynamicDirective, NzButtonModule, NzDropDownModule, NzInputModule, FormsModule, NzIconModule, NzFlexModule, NzSelectModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div nz-flex nzAlign=\"center\">\n <input style=\"flex:1\" type=\"text\" nz-input placeholder=\"\u641C\u7D22\" nzBorderless ngModel\n (ngModelChange)=\"searchValue$.next($event)\" />\n <nz-select [(ngModel)]=\"cmplib\" nzSize=\"small\" nzBorderless style=\"width: auto;\">\n @for (lib of cmplibs; track $index) {\n <nz-option [nzValue]=\"lib.lib\" [nzLabel]=\"lib.libName\"></nz-option>\n }\n </nz-select>\n</div>\n<nz-collapse nzAccordion>\n @for (group of displayCmpLib(); track group.groupName) {\n <nz-collapse-panel [nzHeader]=\"`${group.groupName}(${group.children.length})`\">\n <div nz-row [nzGutter]=\"[8,8]\">\n @for (item of group.children; track item.component) {\n <div nz-col [nzSpan]=\"item.span\">\n <nz-card nzSize=\"small\" nzHoverable [nzCover]=\"coverTemplate\" [nzTitle]=\"item.component\"\n [nzExtra]=\"item.moreExamples? more:''\" [nzBodyStyle]=\"{padding:0}\" (click)=\"onClick(item.example)\"\n [draggable]=\"selectMode()=='drag'\" (mouseenter)=\"preloadDragElement(item.example)\"\n (dragstart)=\"onDragStart($event)\" (dragend)=\"onDragEnd($event)\">\n </nz-card>\n <ng-template #coverTemplate>\n <img style=\"margin: 4px;object-fit: contain;\" [style.height.px]=\"item.height\"\n [src]=\"item.coverImg\" />\n </ng-template>\n <ng-template #more>\n <a nz-button nzType=\"link\" nzSize=\"small\" nz-dropdown [nzDropdownMenu]=\"examples\">\n <nz-icon nzType=\"ellipsis\"></nz-icon>\n </a>\n <nz-dropdown-menu #examples=\"nzDropdownMenu\">\n <ul nz-menu nzSelectable>\n @for (item of item.moreExamples; track item.name) {\n <li nz-menu-item (click)=\"onClick(item)\" [draggable]=\"selectMode()=='drag'\"\n (mouseenter)=\"preloadDragElement(item)\" (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\">{{item.name}}</li>\n }\n </ul>\n </nz-dropdown-menu>\n </ng-template>\n </div>\n }\n </div>\n </nz-collapse-panel>\n }\n</nz-collapse>\n<div class=\"dragElementContainer\">\n <div #dragElement>\n @if (dragOptions()) {\n <ng-container [axisDynamic]=\"dragOptions()\" [standalone]=\"true\"></ng-container>\n {{dragOptions().type}}\n }\n </div>\n</div>", styles: [".dragElementContainer{position:absolute;z-index:-9999;top:100px}\n"] }]
1060
+ }], ctorParameters: () => [], propDecorators: { dragElement: [{
1061
+ type: ViewChild,
1062
+ args: ["dragElement", { read: ElementRef, static: true }]
1063
+ }] } });
1064
+
1065
+ class ShortcutKey {
1066
+ design;
1067
+ constructor(design) {
1068
+ this.design = design;
1069
+ }
1070
+ cutNodeIds;
1071
+ onKeyPress(e) {
1072
+ const isInput = e.target.matches('input:not([disabled]), textarea:not([disabled])');
1073
+ if (isInput) {
1074
+ return;
1075
+ }
1076
+ let event;
1077
+ if (e.key == "Backspace") {
1078
+ event = "delete";
1079
+ }
1080
+ else if (e.key == "z" && (e.metaKey || e.ctrlKey) && !e.shiftKey) {
1081
+ event = "undo";
1082
+ }
1083
+ else if (e.key.toLowerCase() == "z" && (e.metaKey || e.ctrlKey) && e.shiftKey) {
1084
+ event = "redo";
1085
+ }
1086
+ else if (e.key == "c" && e.metaKey && e.ctrlKey) {
1087
+ event = "onlyPreview";
1088
+ }
1089
+ else if (e.key == "r" && e.metaKey && e.ctrlKey) {
1090
+ event = "forceRender";
1091
+ }
1092
+ else if (e.key == "h" && e.metaKey && e.ctrlKey) {
1093
+ event = "shortcutKeysInfo";
1094
+ }
1095
+ else if (e.key == "c" && (e.metaKey || e.ctrlKey) && !getSelection()?.toString()) {
1096
+ event = "copy";
1097
+ }
1098
+ else if (e.key == "x" && (e.metaKey || e.ctrlKey)) {
1099
+ event = "cut";
1100
+ }
1101
+ else if (e.key == "v" && (e.metaKey || e.ctrlKey)) {
1102
+ event = "paste";
1103
+ }
1104
+ // console.log(event, e.key, "meta", e.metaKey, "ctrl", e.ctrlKey, "shift", e.shiftKey)
1105
+ if (event) {
1106
+ e.preventDefault();
1107
+ e.stopPropagation();
1108
+ this.doEvent(event);
1109
+ }
1110
+ }
1111
+ doEvent(event) {
1112
+ switch (event) {
1113
+ case "delete":
1114
+ this.design.tree.removeSelected();
1115
+ break;
1116
+ case "undo":
1117
+ this.design.tools.undo();
1118
+ break;
1119
+ case "redo":
1120
+ this.design.tools.redo();
1121
+ break;
1122
+ case "onlyPreview":
1123
+ this.onlyPreview();
1124
+ break;
1125
+ case "forceRender":
1126
+ this.forceRender();
1127
+ break;
1128
+ case "shortcutKeysInfo":
1129
+ this.shortcutKeysInfo();
1130
+ break;
1131
+ case "copy":
1132
+ this.copy();
1133
+ break;
1134
+ case "cut":
1135
+ this.cut();
1136
+ break;
1137
+ case "paste":
1138
+ this.paste();
1139
+ break;
1140
+ }
1141
+ }
1142
+ onlyPreview() {
1143
+ this.design.tools.onlyPreview.set(!this.design.tools.onlyPreview());
1144
+ }
1145
+ forceRender() {
1146
+ this.design.preview.forceRender();
1147
+ }
1148
+ shortcutKeysInfo() {
1149
+ this.design.tools.shortcutKeysModal.set(true);
1150
+ }
1151
+ copy() {
1152
+ const { selected } = this.design.tree.selectListSelection;
1153
+ const options = selected.map(nodeId => this.design.optionsNodes.get(nodeId)).map(node => node?.options);
1154
+ this.design.clipboard.copy(JSON.stringify(options, null, 2));
1155
+ }
1156
+ cut() {
1157
+ const { selected } = this.design.tree.selectListSelection;
1158
+ this.cutNodeIds = selected;
1159
+ const options = selected.map(nodeId => this.design.optionsNodes.get(nodeId)).map(node => node?.options);
1160
+ this.design.clipboard.copy(JSON.stringify(options, null, 2));
1161
+ }
1162
+ async paste() {
1163
+ try {
1164
+ const text = await navigator.clipboard.readText();
1165
+ if (text) {
1166
+ const j = JSON.parse(text);
1167
+ let objs;
1168
+ if (Array.isArray(j)) {
1169
+ objs = j.filter(r => this.isComponentObj(r));
1170
+ }
1171
+ else if (this.isComponentObj(j)) {
1172
+ objs = [j];
1173
+ }
1174
+ if (objs?.length && this.design.tree.selectListSelection.selected.length > 0) {
1175
+ if (this.cutNodeIds?.length && isEquals(objs.map(r => r.id), this.cutNodeIds)) {
1176
+ this.design.onNodesMove(this.cutNodeIds);
1177
+ this.cutNodeIds = undefined;
1178
+ }
1179
+ else {
1180
+ const examples = objs.map(r => this.parseToExample(r));
1181
+ this.design.onExamplePaste(examples);
1182
+ }
1183
+ }
1184
+ }
1185
+ }
1186
+ catch (e) {
1187
+ console.error(e);
1188
+ }
1189
+ }
1190
+ isComponentObj(obj) {
1191
+ return obj && obj.hasOwnProperty("id") && obj.hasOwnProperty("component");
1192
+ }
1193
+ parseToExample(obj) {
1194
+ return {
1195
+ builder: componentIdBuilder => {
1196
+ if (componentIdBuilder) {
1197
+ return this.recursionParse(obj, componentIdBuilder);
1198
+ }
1199
+ return obj;
1200
+ }
1201
+ };
1202
+ }
1203
+ recursionParse(obj, idBuilder, components = new Map()) {
1204
+ if (this.isComponentObj(obj)) {
1205
+ const offset = (components.get(obj.component) ?? 0) + 1;
1206
+ components.set(obj.component, offset);
1207
+ obj.id = idBuilder(obj.component, offset);
1208
+ }
1209
+ if (obj) {
1210
+ if (Array.isArray(obj)) {
1211
+ for (let i = 0; i < obj.length; i++) {
1212
+ obj[i] = this.recursionParse(obj[i], idBuilder, components);
1213
+ }
1214
+ }
1215
+ else if (typeof obj == "object") {
1216
+ for (const en of Object.entries(obj)) {
1217
+ obj[en[0]] = this.recursionParse(en[1], idBuilder, components);
1218
+ }
1219
+ }
1220
+ }
1221
+ return obj;
1222
+ }
1223
+ }
1224
+
1225
+ class DesignOptions extends ValueAccessOptions {
1226
+ injectData = signal({}, ...(ngDevMode ? [{ debugName: "injectData" }] : []));
1227
+ allPermissions = signal({}, ...(ngDevMode ? [{ debugName: "allPermissions" }] : []));
1228
+ }
1229
+
1230
+ class Toolbar {
1231
+ design = inject(Design);
1232
+ cdr = inject(ChangeDetectorRef);
1233
+ onlyPreview = signal(false, ...(ngDevMode ? [{ debugName: "onlyPreview" }] : []));
1234
+ shortcutKeysModal = model(false, ...(ngDevMode ? [{ debugName: "shortcutKeysModal" }] : []));
1235
+ history = [];
1236
+ historyIndex = 0;
1237
+ putHistory(options) {
1238
+ if (this.historyIndex > 0) {
1239
+ this.history.splice(0, this.historyIndex);
1240
+ this.historyIndex = 0;
1241
+ }
1242
+ this.history.unshift({ options: copy(options, true), time: new Date() });
1243
+ if (this.history.length > 50) {
1244
+ this.history.pop();
1245
+ }
1246
+ this.cdr.markForCheck();
1247
+ }
1248
+ undo() {
1249
+ if (this.historyIndex < this.history.length - 1) {
1250
+ this.historyIndex++;
1251
+ this.design.onChangeOptionsConfig(copy(this.history[this.historyIndex].options, true), false);
1252
+ this.cdr.markForCheck();
1253
+ }
1254
+ }
1255
+ redo() {
1256
+ if (this.historyIndex > 0) {
1257
+ this.historyIndex--;
1258
+ this.design.onChangeOptionsConfig(copy(this.history[this.historyIndex].options, true), false);
1259
+ this.cdr.markForCheck();
1260
+ }
1261
+ }
1262
+ switchHistory(index) {
1263
+ if (index != this.historyIndex && index > -1 && index < this.history.length) {
1264
+ this.historyIndex = index;
1265
+ this.design.onChangeOptionsConfig(copy(this.history[this.historyIndex].options, true), false);
1266
+ this.cdr.markForCheck();
1267
+ }
1268
+ }
1269
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Toolbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
1270
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: Toolbar, isStandalone: true, selector: "axis-toolbar", inputs: { shortcutKeysModal: { classPropertyName: "shortcutKeysModal", publicName: "shortcutKeysModal", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { shortcutKeysModal: "shortcutKeysModalChange" }, ngImport: i0, template: "<div class=\"tools\" nz-flex nzGap=\"4px\">\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"\u5FEB\u6377\u952E\u8BF4\u660E\"\n (click)=\"shortcutKeysModal.set(true)\">\n <nz-icon nzType=\"exclamation-circle\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"\u7F16\u8F91\u5386\u53F2\" nz-popover\n [nzPopoverTitle]=\"historyTitle\" nzPopoverTrigger=\"click\" [nzPopoverContent]=\"historyTemp\"\n nzPopoverPlacement=\"bottom\" nzPopoverOverlayClassName=\"history-popover\">\n <nz-icon nzType=\"history\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" [nz-tooltip]=\"onlyPreview()?'\u6062\u590D':'\u653E\u5927'\"\n (click)=\"onlyPreview.set(!onlyPreview())\">\n <nz-icon [nzType]=\"onlyPreview()?'fullscreen-exit':'fullscreen'\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"\u91CD\u65B0\u8F7D\u5165\"\n (click)=\"design.preview.forceRender()\">\n <nz-icon nzType=\"reload\" />\n </button>\n</div>\n\n<ng-template #historyTitle>\n <div nz-flex>\n <div style=\"flex:1\">\u7F16\u8F91\u5386\u53F2</div>\n <button nz-button nzSize=\"small\" nzType=\"link\" nzShape=\"circle\" nz-tooltip=\"\u64A4\u9500\" (click)=\"undo()\"\n [disabled]=\"historyIndex==history.length-1\">\n <nz-icon nzType=\"undo\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"link\" nzShape=\"circle\" nz-tooltip=\"\u91CD\u505A\" (click)=\"redo()\"\n [disabled]=\"historyIndex==0\">\n <nz-icon nzType=\"redo\" nzTheme=\"outline\" />\n </button>\n </div>\n</ng-template>\n\n<ng-template #historyTemp>\n <div nz-flex nzVertical>\n @for (item of history; track item.time;let i=$index) {\n <div nz-flex [class.active]=\"i == historyIndex\" class=\"history-item\" (click)=\"switchHistory(i)\">\n <div style=\"width: 20px;\">\n @if (i == historyIndex) {\n <nz-icon nzType=\"aim\" nzTheme=\"outline\" />\n }\n </div>\n <div>#{{history.length-i}} {{item.time | axisHowLong}}</div>\n </div>\n }\n </div>\n</ng-template>\n\n<nz-modal [(nzVisible)]=\"shortcutKeysModal\" nzTitle=\"\u5FEB\u6377\u952E\u8BF4\u660E\" nzDraggable [nzOkText]=\"null\" nzCancelText=\"\u5173\u95ED\"\n (nzOnCancel)=\"shortcutKeysModal.set(false)\">\n <ng-container *nzModalContent>\n <nz-table nzTemplateMode nzSize=\"small\">\n <thead>\n <tr>\n <th>\u529F\u80FD</th>\n <th>\u5FEB\u6377\u952E</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>\u67E5\u770B\u5FEB\u6377\u952E\u8BF4\u660E</td>\n <td>Ctrl Meta H</td>\n </tr>\n <tr>\n <td>\u590D\u5236</td>\n <td>Ctrl C</td>\n </tr>\n <tr>\n <td>\u526A\u5207</td>\n <td>Ctrl X</td>\n </tr>\n <tr>\n <td>\u7C98\u8D34</td>\n <td>Ctrl V</td>\n </tr>\n <tr>\n <td>\u64A4\u9500</td>\n <td>Ctrl Z</td>\n </tr>\n <tr>\n <td>\u91CD\u505A</td>\n <td>Ctrl Shift Z</td>\n </tr>\n <tr>\n <td>\u9884\u89C8\u653E\u5927/\u6062\u590D</td>\n <td>Ctrl Meta C</td>\n </tr>\n <tr>\n <td>\u91CD\u65B0\u8F7D\u5165</td>\n <td>Ctrl Meta R</td>\n </tr>\n </tbody>\n </nz-table>\n </ng-container>\n</nz-modal>", styles: [".tools{position:absolute;right:20px;top:10px}::ng-deep .history-popover .ant-popover-inner-content{width:100%;padding:12px 0}.history-item{padding:0 12px;cursor:pointer}.history-item:hover{background-color:var(--ant-primary-1)}.active{color:var(--ant-primary-color);pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: NzModalModule }, { kind: "component", type: i1$2.NzModalComponent, selector: "nz-modal", inputs: ["nzMask", "nzMaskClosable", "nzCloseOnNavigation", "nzVisible", "nzClosable", "nzOkLoading", "nzOkDisabled", "nzCancelDisabled", "nzCancelLoading", "nzKeyboard", "nzNoAnimation", "nzCentered", "nzDraggable", "nzContent", "nzFooter", "nzZIndex", "nzWidth", "nzWrapClassName", "nzClassName", "nzStyle", "nzTitle", "nzCloseIcon", "nzMaskStyle", "nzBodyStyle", "nzOkText", "nzCancelText", "nzOkType", "nzOkDanger", "nzIconType", "nzModalType", "nzAutofocus", "nzOnOk", "nzOnCancel"], outputs: ["nzOnOk", "nzOnCancel", "nzAfterOpen", "nzAfterClose", "nzVisibleChange"], exportAs: ["nzModal"] }, { kind: "directive", type: i1$2.NzModalContentDirective, selector: "[nzModalContent]", exportAs: ["nzModalContent"] }, { kind: "ngmodule", type: NzTableModule }, { kind: "component", type: i2$2.NzTableComponent, selector: "nz-table", inputs: ["nzTableLayout", "nzShowTotal", "nzItemRender", "nzTitle", "nzFooter", "nzNoResult", "nzPageSizeOptions", "nzVirtualItemSize", "nzVirtualMaxBufferPx", "nzVirtualMinBufferPx", "nzVirtualForTrackBy", "nzLoadingDelay", "nzPageIndex", "nzPageSize", "nzTotal", "nzWidthConfig", "nzData", "nzCustomColumn", "nzPaginationPosition", "nzScroll", "noDataVirtualHeight", "nzPaginationType", "nzFrontPagination", "nzTemplateMode", "nzShowPagination", "nzLoading", "nzOuterBordered", "nzLoadingIndicator", "nzBordered", "nzSize", "nzShowSizeChanger", "nzHideOnSinglePage", "nzShowQuickJumper", "nzSimple"], outputs: ["nzPageSizeChange", "nzPageIndexChange", "nzQueryParams", "nzCurrentPageDataChange", "nzCustomColumnChange"], exportAs: ["nzTable"] }, { kind: "directive", type: i2$2.NzTableCellDirective, selector: "th:not(.nz-disable-th), td:not(.nz-disable-td)" }, { kind: "directive", type: i2$2.NzThMeasureDirective, selector: "th", inputs: ["nzWidth", "colspan", "colSpan", "rowspan", "rowSpan"] }, { kind: "component", type: i2$2.NzTheadComponent, selector: "thead:not(.ant-table-thead)", outputs: ["nzSortOrderChange"] }, { kind: "component", type: i2$2.NzTbodyComponent, selector: "tbody" }, { kind: "directive", type: i2$2.NzTrDirective, selector: "tr:not([nz-table-measure-row]):not([nzExpand]):not([nz-table-fixed-row])" }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$1.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i3.NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i9.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }, { kind: "ngmodule", type: NzButtonModule }, { kind: "component", type: i6.NzButtonComponent, selector: "button[nz-button], a[nz-button]", inputs: ["nzBlock", "nzGhost", "nzSearch", "nzLoading", "nzDanger", "disabled", "tabIndex", "nzType", "nzShape", "nzSize"], exportAs: ["nzButton"] }, { kind: "directive", type: i7.ɵNzTransitionPatchDirective, selector: "[nz-button], [nz-icon], nz-icon, [nz-menu-item], [nz-submenu], nz-select-top-control, nz-select-placeholder, nz-input-group", inputs: ["hidden"] }, { kind: "ngmodule", type: NzPopoverModule }, { kind: "directive", type: i8$1.NzPopoverDirective, selector: "[nz-popover]", inputs: ["nzPopoverArrowPointAtCenter", "nzPopoverTitle", "nzPopoverTitleContext", "nzPopoverContent", "nzPopoverContentContext", "nz-popover", "nzPopoverTrigger", "nzPopoverPlacement", "nzPopoverOrigin", "nzPopoverVisible", "nzPopoverMouseEnterDelay", "nzPopoverMouseLeaveDelay", "nzPopoverOverlayClassName", "nzPopoverOverlayStyle", "nzPopoverOverlayClickable", "nzPopoverBackdrop"], outputs: ["nzPopoverVisibleChange"], exportAs: ["nzPopover"] }, { kind: "pipe", type: HowLongPipe, name: "axisHowLong" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1271
+ }
1272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Toolbar, decorators: [{
1273
+ type: Component,
1274
+ args: [{ selector: 'axis-toolbar', imports: [NzModalModule, NzTableModule, NzFlexModule, NzIconModule, NzToolTipModule, NzButtonModule, NzPopoverModule, HowLongPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tools\" nz-flex nzGap=\"4px\">\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"\u5FEB\u6377\u952E\u8BF4\u660E\"\n (click)=\"shortcutKeysModal.set(true)\">\n <nz-icon nzType=\"exclamation-circle\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"\u7F16\u8F91\u5386\u53F2\" nz-popover\n [nzPopoverTitle]=\"historyTitle\" nzPopoverTrigger=\"click\" [nzPopoverContent]=\"historyTemp\"\n nzPopoverPlacement=\"bottom\" nzPopoverOverlayClassName=\"history-popover\">\n <nz-icon nzType=\"history\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" [nz-tooltip]=\"onlyPreview()?'\u6062\u590D':'\u653E\u5927'\"\n (click)=\"onlyPreview.set(!onlyPreview())\">\n <nz-icon [nzType]=\"onlyPreview()?'fullscreen-exit':'fullscreen'\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"text\" nzShape=\"circle\" nz-tooltip=\"\u91CD\u65B0\u8F7D\u5165\"\n (click)=\"design.preview.forceRender()\">\n <nz-icon nzType=\"reload\" />\n </button>\n</div>\n\n<ng-template #historyTitle>\n <div nz-flex>\n <div style=\"flex:1\">\u7F16\u8F91\u5386\u53F2</div>\n <button nz-button nzSize=\"small\" nzType=\"link\" nzShape=\"circle\" nz-tooltip=\"\u64A4\u9500\" (click)=\"undo()\"\n [disabled]=\"historyIndex==history.length-1\">\n <nz-icon nzType=\"undo\" nzTheme=\"outline\" />\n </button>\n <button nz-button nzSize=\"small\" nzType=\"link\" nzShape=\"circle\" nz-tooltip=\"\u91CD\u505A\" (click)=\"redo()\"\n [disabled]=\"historyIndex==0\">\n <nz-icon nzType=\"redo\" nzTheme=\"outline\" />\n </button>\n </div>\n</ng-template>\n\n<ng-template #historyTemp>\n <div nz-flex nzVertical>\n @for (item of history; track item.time;let i=$index) {\n <div nz-flex [class.active]=\"i == historyIndex\" class=\"history-item\" (click)=\"switchHistory(i)\">\n <div style=\"width: 20px;\">\n @if (i == historyIndex) {\n <nz-icon nzType=\"aim\" nzTheme=\"outline\" />\n }\n </div>\n <div>#{{history.length-i}} {{item.time | axisHowLong}}</div>\n </div>\n }\n </div>\n</ng-template>\n\n<nz-modal [(nzVisible)]=\"shortcutKeysModal\" nzTitle=\"\u5FEB\u6377\u952E\u8BF4\u660E\" nzDraggable [nzOkText]=\"null\" nzCancelText=\"\u5173\u95ED\"\n (nzOnCancel)=\"shortcutKeysModal.set(false)\">\n <ng-container *nzModalContent>\n <nz-table nzTemplateMode nzSize=\"small\">\n <thead>\n <tr>\n <th>\u529F\u80FD</th>\n <th>\u5FEB\u6377\u952E</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>\u67E5\u770B\u5FEB\u6377\u952E\u8BF4\u660E</td>\n <td>Ctrl Meta H</td>\n </tr>\n <tr>\n <td>\u590D\u5236</td>\n <td>Ctrl C</td>\n </tr>\n <tr>\n <td>\u526A\u5207</td>\n <td>Ctrl X</td>\n </tr>\n <tr>\n <td>\u7C98\u8D34</td>\n <td>Ctrl V</td>\n </tr>\n <tr>\n <td>\u64A4\u9500</td>\n <td>Ctrl Z</td>\n </tr>\n <tr>\n <td>\u91CD\u505A</td>\n <td>Ctrl Shift Z</td>\n </tr>\n <tr>\n <td>\u9884\u89C8\u653E\u5927/\u6062\u590D</td>\n <td>Ctrl Meta C</td>\n </tr>\n <tr>\n <td>\u91CD\u65B0\u8F7D\u5165</td>\n <td>Ctrl Meta R</td>\n </tr>\n </tbody>\n </nz-table>\n </ng-container>\n</nz-modal>", styles: [".tools{position:absolute;right:20px;top:10px}::ng-deep .history-popover .ant-popover-inner-content{width:100%;padding:12px 0}.history-item{padding:0 12px;cursor:pointer}.history-item:hover{background-color:var(--ant-primary-1)}.active{color:var(--ant-primary-color);pointer-events:none}\n"] }]
1275
+ }] });
1276
+
1277
+ class Design extends ValueAccess {
1278
+ constructor() {
1279
+ super();
1280
+ this.addSubscribe(this.changeSubject
1281
+ .pipe(debounceTime(300))
1282
+ .subscribe((value) => this.onChangeOptionsConfig(value)));
1283
+ }
1284
+ options = new DesignOptions();
1285
+ clipboard = inject(ClipboardService);
1286
+ loader = inject(AXIS_COMPONENTS_LOADER_TOKEN);
1287
+ injectDataObs = toObservable(this.options.injectData);
1288
+ funcs = inject(AXIS_INJECT_FUNC_TOKEN);
1289
+ treeNode = signal(undefined, ...(ngDevMode ? [{ debugName: "treeNode" }] : []));
1290
+ loadAndOptions = signal(undefined, ...(ngDevMode ? [{ debugName: "loadAndOptions" }] : []));
1291
+ menu;
1292
+ chooseComponentVisible = model(false, ...(ngDevMode ? [{ debugName: "chooseComponentVisible" }] : []));
1293
+ chooseComponentSubject = new Subject();
1294
+ chooseComponentTags = signal([], ...(ngDevMode ? [{ debugName: "chooseComponentTags" }] : []));
1295
+ cacheSized = [300, 300];
1296
+ setting;
1297
+ settingRef;
1298
+ settingOptionsNodeId;
1299
+ settingOptionsStr = model("", ...(ngDevMode ? [{ debugName: "settingOptionsStr" }] : []));
1300
+ preview;
1301
+ tree;
1302
+ codeEditor;
1303
+ tools;
1304
+ shortcutKey = new ShortcutKey(this);
1305
+ onKeyPress(e) {
1306
+ this.shortcutKey.onKeyPress(e);
1307
+ }
1308
+ optionsNodes = new Map();
1309
+ optionsNodeScopes = new Map();
1310
+ scopeInfos = new Map();
1311
+ componentsInfo = new Map;
1312
+ componentsCounter = new Map();
1313
+ scopInfoSubjects = new Map();
1314
+ changeSubject = new Subject();
1315
+ setInitValue(value) {
1316
+ super.setInitValue(value);
1317
+ this.tools.putHistory(value);
1318
+ this.render(value);
1319
+ }
1320
+ writeValue(value) {
1321
+ super.writeValue(value);
1322
+ this.tools.putHistory(value);
1323
+ this.render(value);
1324
+ }
1325
+ async inspect(nextInfo) {
1326
+ if (!nextInfo.currentObject?.component) {
1327
+ return;
1328
+ }
1329
+ const config = await this.loader.loadComponent(`${nextInfo.currentObject.component}/design`);
1330
+ if (!this.componentsInfo.has(nextInfo.currentObject.component)) {
1331
+ this.componentsInfo.set(nextInfo.currentObject.component, { component: nextInfo.currentObject.component, componentName: config.componentName, eventHandlerDescs: config.eventHandlerDescs });
1332
+ }
1333
+ if (!this.componentsCounter.has(nextInfo.currentObject.component)) {
1334
+ this.componentsCounter.set(nextInfo.currentObject.component, 0);
1335
+ }
1336
+ this.componentsCounter.set(nextInfo.currentObject.component, this.componentsCounter.get(nextInfo.currentObject.component) + 1);
1337
+ const res = config.buildOptionsNodes?.(nextInfo);
1338
+ if (res) {
1339
+ let nodes = [res.treeNode];
1340
+ while (nodes.length) {
1341
+ let next = [];
1342
+ for (const node of nodes) {
1343
+ this.optionsNodes.set(node.id, node);
1344
+ if (node.children) {
1345
+ next = next.concat(node.children);
1346
+ }
1347
+ nodes = next;
1348
+ }
1349
+ }
1350
+ if (res.treeNode.scopeId) {
1351
+ if (!this.optionsNodeScopes.has(res.treeNode.scopeId)) {
1352
+ this.optionsNodeScopes.set(res.treeNode.scopeId, []);
1353
+ }
1354
+ this.optionsNodeScopes.get(res.treeNode.scopeId).push(res.treeNode);
1355
+ }
1356
+ if (res.newScopes) {
1357
+ for (const scope of res.newScopes) {
1358
+ this.scopeInfos.set(scope.scopeId, scope);
1359
+ }
1360
+ }
1361
+ if (res.next?.length) {
1362
+ for (const r of res.next) {
1363
+ if (Array.isArray(r.parentObject)) {
1364
+ for (let i = 0; i < r.parentObject.length; i++) {
1365
+ r.indexOfParent = i;
1366
+ r.currentObject = r.parentObject[i];
1367
+ const parent = this.optionsNodes.get(r.parentId);
1368
+ const child = await this.inspect(r);
1369
+ if (child) {
1370
+ parent?.children?.push(child);
1371
+ }
1372
+ }
1373
+ }
1374
+ else if (r.indexOfParent != undefined) {
1375
+ r.currentObject = r.parentObject[r.indexOfParent];
1376
+ const child = await this.inspect(r);
1377
+ if (child) {
1378
+ this.optionsNodes.get(r.parentId)?.children?.push(child);
1379
+ }
1380
+ }
1381
+ }
1382
+ }
1383
+ }
1384
+ return res?.treeNode;
1385
+ }
1386
+ onChangeOptionsConfig(value, putHistory = true) {
1387
+ this.reset();
1388
+ if (value === undefined) {
1389
+ value = this.value();
1390
+ }
1391
+ this.value.set(copy(value, true));
1392
+ this.render(this.value());
1393
+ this.loadAndOptions()?.[0].then(() => {
1394
+ if (!putHistory && this.settingOptionsNodeId) {
1395
+ const node = this.optionsNodes.get(this.settingOptionsNodeId);
1396
+ if (node) {
1397
+ this.settingRef?.instance.writeValue(node.options);
1398
+ }
1399
+ this.syncToCode();
1400
+ }
1401
+ });
1402
+ this.onChange?.(this.value());
1403
+ if (putHistory) {
1404
+ this.tools.putHistory(this.value());
1405
+ }
1406
+ }
1407
+ render(value) {
1408
+ this.loadAndOptions.set([this.inspect({ currentObject: value }).then(v => {
1409
+ this.treeNode.set(v ?? null);
1410
+ return v;
1411
+ }), value]);
1412
+ }
1413
+ onSettingChange(settingValue) {
1414
+ if (this.settingOptionsNodeId) {
1415
+ const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId);
1416
+ if (optionsNode) {
1417
+ if (optionsNode.isRoot) {
1418
+ Object.assign(this.value(), settingValue);
1419
+ }
1420
+ else {
1421
+ optionsNode.updateOptions(settingValue);
1422
+ }
1423
+ this.settingOptionsNodeId = optionsNode.id;
1424
+ this.preview.selectByNodeIds([this.settingOptionsNodeId]);
1425
+ this.tree.selectByNodeIds([this.settingOptionsNodeId]);
1426
+ this.changeSubject.next(undefined);
1427
+ }
1428
+ }
1429
+ }
1430
+ onTreeSelect(nodeIds) {
1431
+ this.preview.selectByNodeIds(nodeIds);
1432
+ if (nodeIds.length == 1) {
1433
+ this.updateScopeWithNodeId(nodeIds[0]);
1434
+ this.loadSetting(nodeIds[0]);
1435
+ }
1436
+ else {
1437
+ this.settingOptionsNodeId = undefined;
1438
+ this.resetSetting();
1439
+ }
1440
+ }
1441
+ onPreviewSelect(nodeIds) {
1442
+ this.menu.clear();
1443
+ this.tree.selectByNodeIds(nodeIds);
1444
+ if (nodeIds.length == 1) {
1445
+ this.updateScopeWithNodeId(nodeIds[0]);
1446
+ this.loadSetting(nodeIds[0]);
1447
+ }
1448
+ else {
1449
+ this.settingOptionsNodeId = undefined;
1450
+ this.resetSetting();
1451
+ }
1452
+ let expandIds = [];
1453
+ for (const nodeid of nodeIds) {
1454
+ expandIds = expandIds.concat(this.getAllParentNodes(nodeid).map(n => n.id));
1455
+ }
1456
+ this.tree.expandByNodeIds(expandIds);
1457
+ }
1458
+ updateScopeWithNodeId(nodeId) {
1459
+ let scopeId = this.optionsNodes.get(nodeId)?.scopeId;
1460
+ while (scopeId && this.scopeInfos.has(scopeId)) {
1461
+ this.preview.updateScopeWithSelectedElement(scopeId);
1462
+ scopeId = this.scopeInfos.get(scopeId)?.parentScopeId;
1463
+ }
1464
+ }
1465
+ loadSetting(nodeId) {
1466
+ if (nodeId && this.optionsNodes.has(nodeId)) {
1467
+ if (this.settingOptionsNodeId == nodeId) {
1468
+ return;
1469
+ }
1470
+ else if (this.settingOptionsNodeId) {
1471
+ const oldNode = this.optionsNodes.get(this.settingOptionsNodeId);
1472
+ const newNode = this.optionsNodes.get(nodeId);
1473
+ if (oldNode.parentId == newNode.parentId && oldNode.settingType == newNode.settingType) {
1474
+ this.settingOptionsNodeId = nodeId;
1475
+ this.settingOptionsStr.set(JSON.stringify(newNode.options, null, " "));
1476
+ this.settingRef?.instance.writeValue(newNode.options);
1477
+ return;
1478
+ }
1479
+ }
1480
+ this.resetSetting();
1481
+ this.settingOptionsNodeId = nodeId;
1482
+ const optionsNode = this.optionsNodes.get(nodeId);
1483
+ this.settingOptionsStr.set(JSON.stringify(optionsNode.options, null, " "));
1484
+ if (optionsNode.settingType) {
1485
+ const injector = Injector.create({
1486
+ providers: [
1487
+ { provide: AXIS_DESIGN_SCOPE_INFOS_GETTER_TOKEN, useValue: this.buildScopeInfosGetter(optionsNode) },
1488
+ { provide: AXIS_DESIGN_COMPONENT_INFO_FOR_SETTING_TOKEN, useValue: this.buildComponentInfoForSetting(optionsNode) },
1489
+ { provide: AXIS_DESIGN_ALL_PERMISSIONS_TOKEN, useValue: this.options.allPermissions() },
1490
+ { provide: AXIS_INJECT_FUNC_TOKEN, useValue: this.funcs }
1491
+ ]
1492
+ });
1493
+ this.settingRef = this.setting.createComponent(optionsNode.settingType, { injector: injector });
1494
+ this.settingRef.instance.onChange = this.onSettingChange.bind(this);
1495
+ this.settingRef.instance.writeValue(optionsNode.options);
1496
+ }
1497
+ }
1498
+ else {
1499
+ this.resetSetting();
1500
+ }
1501
+ }
1502
+ buildScopeInfosGetter(optionsNode) {
1503
+ const _scopeId = optionsNode.scopeId;
1504
+ return (scopeId) => {
1505
+ scopeId ??= _scopeId;
1506
+ if (scopeId) {
1507
+ if (!this.scopInfoSubjects.has(scopeId)) {
1508
+ this.scopInfoSubjects.set(scopeId, this.buildScopeInfoSubject(scopeId));
1509
+ }
1510
+ return this.scopInfoSubjects.get(scopeId);
1511
+ }
1512
+ return new BehaviorSubject([]);
1513
+ };
1514
+ }
1515
+ buildScopeInfoSubject(scopeId) {
1516
+ const scopeObs = [];
1517
+ const scopeInfosOrder = [];
1518
+ while (scopeId && this.scopeInfos.has(scopeId)) {
1519
+ const scopeInfo = this.scopeInfos.get(scopeId);
1520
+ scopeInfosOrder.push(scopeId);
1521
+ const scopeSubject = this.preview.getAndUpdateScopeSubject(scopeId);
1522
+ scopeObs.push(scopeSubject.pipe(filter(s => !!s), switchMap(s => {
1523
+ return merge(new Observable(sub => sub.next(s.getSnapshoptAllWithScopeId(s.axisScope()))), s.getAllWithScopeId(s.axisScope()) ?? NEVER);
1524
+ }), filter(realDs => !!realDs && this.scopeInfos.has(scopeInfo.scopeId)), map(realDs => {
1525
+ const _scopeInfo = this.scopeInfos.get(scopeInfo.scopeId);
1526
+ return {
1527
+ scopeInfo: { ..._scopeInfo, ds: { ..._scopeInfo.ds, ...realDs } },
1528
+ index: scopeInfosOrder.indexOf(scopeInfo.scopeId),
1529
+ };
1530
+ })));
1531
+ scopeId = scopeInfo.parentScopeId;
1532
+ }
1533
+ const subject = new BehaviorSubject([]);
1534
+ const res = [];
1535
+ this.addSubscribe(merge(...scopeObs).pipe(map(row => {
1536
+ res[row.index] = row.scopeInfo;
1537
+ return [...res];
1538
+ })).subscribe(subject));
1539
+ return subject;
1540
+ }
1541
+ buildComponentInfoForSetting(optionsNode) {
1542
+ const componentInfo = new Map();
1543
+ let scopeId = optionsNode.scopeId;
1544
+ while (scopeId) {
1545
+ let nodes = this.optionsNodeScopes.get(scopeId);
1546
+ if (nodes) {
1547
+ for (const node of nodes) {
1548
+ const component = node.options.component;
1549
+ if (!componentInfo.has(component)) {
1550
+ const info = this.componentsInfo.get(component);
1551
+ componentInfo.set(component, { component: info.component, componentName: info.componentName, nodes: [], eventHandlerDescs: info.eventHandlerDescs ?? {} });
1552
+ }
1553
+ componentInfo.get(component).nodes.push(node);
1554
+ }
1555
+ }
1556
+ scopeId = this.scopeInfos.get(scopeId)?.parentScopeId;
1557
+ }
1558
+ return Array.from(componentInfo.values());
1559
+ }
1560
+ onContextMenu(e, nodeId) {
1561
+ const node = this.optionsNodes.get(nodeId);
1562
+ if (node?.contextMenu) {
1563
+ const parent = node.isRoot ? undefined : this.optionsNodes.get(node.parentId);
1564
+ const injector = Injector.create({
1565
+ providers: [
1566
+ { provide: AXIS_DESIGN_OPTIONS_NODE_FOR_MENU, useValue: { current: node, parent } },
1567
+ { provide: AXIS_DESIGN_CHOOSE_COMPONENT_FUNC_TOKEN, useValue: this.chooseComponent.bind(this) },
1568
+ ]
1569
+ });
1570
+ this.menu.clear();
1571
+ const ref = this.menu.createComponent(node.contextMenu, { injector: injector });
1572
+ ref.instance.contextMenu(e);
1573
+ ref.instance.onChange = (value) => {
1574
+ this.onChangeOptionsConfig(value);
1575
+ };
1576
+ }
1577
+ }
1578
+ chooseComponent(...tags) {
1579
+ this.chooseComponentTags.set(tags);
1580
+ this.chooseComponentVisible.set(true);
1581
+ const existsIds = new Set();
1582
+ return this.chooseComponentSubject.asObservable()
1583
+ .pipe(take(1), map((example) => example?.builder((component, offset) => this.genNewComponentId(component, offset, existsIds))), switchMap(options => options ? from(this.loader.loadComponent(`${options.component}/design`)).pipe(map(config => ({ options, config }))) : of({})));
1584
+ }
1585
+ genNewComponentId(component, offset = 1, existsIds) {
1586
+ let id;
1587
+ if (this.componentsCounter.has(component)) {
1588
+ id = `${component}#${this.componentsCounter.get(component) + offset}`;
1589
+ }
1590
+ else {
1591
+ id = `${component}#${offset}`;
1592
+ }
1593
+ if (existsIds?.has(id) || this.optionsNodes.has(id)) {
1594
+ return this.genNewComponentId(component, offset + 1, existsIds);
1595
+ }
1596
+ existsIds?.add(id);
1597
+ return id;
1598
+ }
1599
+ onCmplibDragStart(example, element) {
1600
+ const options = example.builder((component, offset) => this.genNewComponentId(component, offset));
1601
+ const optionsNode = new OptionsNode({
1602
+ canDrag: true,
1603
+ dragType: "component",
1604
+ rootOptions: options
1605
+ });
1606
+ this.optionsNodes.set(optionsNode.id, optionsNode);
1607
+ this.preview.dragForOuter(optionsNode.toElementNode({ element }));
1608
+ }
1609
+ async onCmplibDragEnd() {
1610
+ const nodeId = this.preview.dragEndForOuter();
1611
+ if (nodeId) {
1612
+ await this.loadAndOptions()[0];
1613
+ this.tree.selectByNodeIds([nodeId]);
1614
+ this.preview.selectByNodeIds([nodeId]);
1615
+ this.loadSetting(nodeId);
1616
+ }
1617
+ }
1618
+ onExamplePaste(examples) {
1619
+ const nodes = [];
1620
+ for (const example of examples) {
1621
+ const options = example.builder((component, offset) => this.genNewComponentId(component, offset));
1622
+ const optionsNode = new OptionsNode({
1623
+ canDrag: true,
1624
+ dragType: "component",
1625
+ rootOptions: options
1626
+ });
1627
+ nodes.push(optionsNode);
1628
+ this.optionsNodes.set(optionsNode.id, optionsNode);
1629
+ }
1630
+ this.tree.addNodeForSelected(nodes);
1631
+ }
1632
+ onNodesMove(nodeIds) {
1633
+ if (this.tree.selectListSelection.selected.length == 1) {
1634
+ this.tree.addNodeForSelected(nodeIds.map(id => this.optionsNodes.get(id)), true);
1635
+ }
1636
+ }
1637
+ onEditorChange(optionsStr) {
1638
+ try {
1639
+ const options = JSON.parse(optionsStr);
1640
+ this.onSettingChange(options);
1641
+ }
1642
+ catch (_) { }
1643
+ }
1644
+ syncToSetting() {
1645
+ if (this.settingOptionsNodeId) {
1646
+ const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId);
1647
+ if (optionsNode) {
1648
+ const instance = this.setting.get(0)?.context;
1649
+ instance?.writeValue(optionsNode.options);
1650
+ }
1651
+ }
1652
+ }
1653
+ syncToCode() {
1654
+ if (this.settingOptionsNodeId) {
1655
+ const optionsNode = this.optionsNodes.get(this.settingOptionsNodeId);
1656
+ if (optionsNode) {
1657
+ this.settingOptionsStr.set(JSON.stringify(optionsNode.options, null, " "));
1658
+ }
1659
+ }
1660
+ setTimeout(() => {
1661
+ this.layoutEditor();
1662
+ });
1663
+ }
1664
+ layoutEditor(e) {
1665
+ if (e) {
1666
+ if (e[0] > 0) {
1667
+ this.cacheSized[0] = e[0];
1668
+ }
1669
+ if (e[2] > 0) {
1670
+ this.cacheSized[1] = e[2];
1671
+ }
1672
+ }
1673
+ this.codeEditor?.onEvents?.({
1674
+ target: "component",
1675
+ name: "layout",
1676
+ })?.subscribe();
1677
+ }
1678
+ resetSetting() {
1679
+ this.settingOptionsNodeId = undefined;
1680
+ this.setting.clear();
1681
+ this.settingOptionsStr.set("");
1682
+ }
1683
+ reset() {
1684
+ this.optionsNodes.clear();
1685
+ this.componentsInfo.clear();
1686
+ this.optionsNodeScopes.clear();
1687
+ this.scopeInfos.clear();
1688
+ this.componentsCounter.clear();
1689
+ }
1690
+ getAllParentNodes(node, parentNodes = []) {
1691
+ if (typeof node == "string") {
1692
+ node = this.optionsNodes.get(node);
1693
+ }
1694
+ if (node?.parentId) {
1695
+ const parent = this.optionsNodes.get(node.parentId);
1696
+ if (parent) {
1697
+ parentNodes.push(parent);
1698
+ this.getAllParentNodes(parent, parentNodes);
1699
+ }
1700
+ }
1701
+ return parentNodes;
1702
+ }
1703
+ ngOnDestroy() {
1704
+ super.ngOnDestroy();
1705
+ for (const s of this.scopInfoSubjects.values()) {
1706
+ s.unsubscribe();
1707
+ }
1708
+ }
1709
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Design, deps: [], target: i0.ɵɵFactoryTarget.Component });
1710
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.2", type: Design, isStandalone: true, selector: "axis-design", inputs: { chooseComponentVisible: { classPropertyName: "chooseComponentVisible", publicName: "chooseComponentVisible", isSignal: true, isRequired: false, transformFunction: null }, settingOptionsStr: { classPropertyName: "settingOptionsStr", publicName: "settingOptionsStr", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { chooseComponentVisible: "chooseComponentVisibleChange", settingOptionsStr: "settingOptionsStrChange" }, host: { attributes: { "tabindex": "-1", "autofocus": "true" }, listeners: { "keydown": "onKeyPress($event)" } }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "setting", first: true, predicate: ["setting"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "preview", first: true, predicate: ["preview"], descendants: true, static: true }, { propertyName: "tree", first: true, predicate: ["tree"], descendants: true, static: true }, { propertyName: "codeEditor", first: true, predicate: ["codeEditor"], descendants: true }, { propertyName: "tools", first: true, predicate: ["tools"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<nz-splitter (nzResize)=\"layoutEditor($event)\">\n <nz-splitter-panel [nzCollapsible]=\"!tools.onlyPreview()\" [nzDefaultSize]=\"cacheSized[0]\" nzMin=\"15%\" nzMax=\"40%\"\n [nzSize]=\"tools.onlyPreview()?0:undefined\">\n <nz-tabs nzCentered>\n <nz-tab nzTitle=\"\u7EC4\u4EF6\u6811\">\n <axis-design-tree #tree [node]=\"treeNode()\" [optionsNodes]=\"optionsNodes\"\n (onSelect)=\"onTreeSelect($event)\" (onChange)=\"onChangeOptionsConfig($event)\"\n (onContextMenu)=\"onContextMenu($event.event,$event.nodeId)\"></axis-design-tree>\n </nz-tab>\n <nz-tab nzTitle=\"\u7EC4\u4EF6\u5E93\">\n <axis-cmplib selectMode=\"drag\" (dragStart)=\"onCmplibDragStart($event.example,$event.element)\"\n (dragEnd)=\"onCmplibDragEnd()\"></axis-cmplib>\n </nz-tab>\n </nz-tabs>\n </nz-splitter-panel>\n <nz-splitter-panel>\n <div nz-flex nzVertical style=\"height: 100%;width: 100%;position: relative;\">\n <h2 style=\"text-align: center;margin-top: 4px;\">\u9884\u89C8</h2>\n <axis-toolbar #tools></axis-toolbar>\n <axis-design-preview #preview style=\"flex:1;overflow: auto;\" [loadAndOptions]=\"loadAndOptions()\"\n [optionsNodes]=\"optionsNodes\" [injectData]=\"injectDataObs\" (onChange)=\"onChangeOptionsConfig()\"\n (onSelect)=\"onPreviewSelect($event)\"\n (onContextMenu)=\"onContextMenu($event.event,$event.nodeId)\"></axis-design-preview>\n </div>\n </nz-splitter-panel>\n <nz-splitter-panel [nzCollapsible]=\"!tools.onlyPreview()\" [nzDefaultSize]=\"cacheSized[1]\" nzMin=\"15%\" nzMax=\"40%\"\n [nzSize]=\"tools.onlyPreview()?0:undefined\" style=\"position: relative;\">\n <nz-tabs nzCentered style=\"height: 100%;\">\n <nz-tab nzTitle=\"\u5C5E\u6027\u8BBE\u7F6E\" (nzClick)=\"syncToSetting()\">\n <ng-container #setting></ng-container>\n @if (!settingOptionsStr()){\n <nz-empty style=\"height: 300px;\" nzNotFoundContent=\"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u7EC4\u4EF6\"></nz-empty>\n }\n </nz-tab>\n <nz-tab nzTitle=\"\u4EE3\u7801\" nzForceRender (nzSelect)=\"syncToCode();\">\n <ng-container #codeEditor=\"axisDynamic\"\n [axisDynamic]=\"{component:'axis-components/editor',inuse:true,mode:'json',readonly:!settingOptionsStr(),otherOptions:{tabSize:2}}\"\n [standalone]=\"true\" [(ngModel)]=\"settingOptionsStr\"\n (ngModelChange)=\"onEditorChange($event)\"></ng-container>\n </nz-tab>\n </nz-tabs>\n </nz-splitter-panel>\n</nz-splitter>\n<ng-container #menu></ng-container>\n<nz-drawer [(nzVisible)]=\"chooseComponentVisible\" nzTitle=\"\u9009\u62E9\u7EC4\u4EF6\" [nzBodyStyle]=\"{padding:0}\"\n (nzOnClose)=\"chooseComponentVisible.set(false);chooseComponentSubject.next(undefined)\">\n <ng-container *nzDrawerContent>\n <axis-cmplib selectMode=\"click\" [tags]=\"chooseComponentTags()\"\n (clickExample)=\"chooseComponentVisible.set(false);chooseComponentSubject.next($event)\"></axis-cmplib>\n </ng-container>\n</nz-drawer>", styles: ["nz-tabs,::ng-deep .ant-tabs-content,::ng-deep .ant-tabs-tabpane{height:100%}::ng-deep .ant-tabs-content{overflow:auto}:host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "ngmodule", type: NzSplitterModule }, { kind: "component", type: i1$3.NzSplitterComponent, selector: "nz-splitter", inputs: ["nzLayout", "nzLazy"], outputs: ["nzResizeStart", "nzResize", "nzResizeEnd"], exportAs: ["nzSplitter"] }, { kind: "component", type: i1$3.NzSplitterPanelComponent, selector: "nz-splitter-panel", inputs: ["nzDefaultSize", "nzMin", "nzMax", "nzSize", "nzCollapsible", "nzResizable"], exportAs: ["nzSplitterPanel"] }, { kind: "ngmodule", type: NzTabsModule }, { kind: "component", type: i2$3.NzTabsComponent, selector: "nz-tabs,nz-tabset", inputs: ["nzSelectedIndex", "nzTabPosition", "nzTabBarExtraContent", "nzCanDeactivate", "nzAddIcon", "nzTabBarStyle", "nzType", "nzSize", "nzAnimated", "nzTabBarGutter", "nzHideAdd", "nzCentered", "nzHideAll", "nzLinkRouter", "nzLinkExact", "nzDestroyInactiveTabPane"], outputs: ["nzSelectChange", "nzSelectedIndexChange", "nzTabListScroll", "nzClose", "nzAdd"], exportAs: ["nzTabs"] }, { kind: "component", type: i2$3.NzTabComponent, selector: "nz-tab", inputs: ["nzTitle", "nzClosable", "nzCloseIcon", "nzDisabled", "nzForceRender"], outputs: ["nzSelect", "nzDeselect", "nzClick", "nzContextmenu"], exportAs: ["nzTab"] }, { kind: "component", type: Preview, selector: "axis-design-preview", inputs: ["loadAndOptions", "optionsNodes", "injectData"], outputs: ["onChange", "onSelect", "onContextMenu"] }, { kind: "component", type: Tree, selector: "axis-design-tree", inputs: ["node", "optionsNodes"], outputs: ["onChange", "onSelect", "onContextMenu"] }, { kind: "ngmodule", type: NzFlexModule }, { kind: "directive", type: i3$1.NzFlexDirective, selector: "[nz-flex],nz-flex", inputs: ["nzVertical", "nzJustify", "nzAlign", "nzGap", "nzWrap", "nzFlex"], exportAs: ["nzFlex"] }, { kind: "component", type: Cmplib, selector: "axis-cmplib", inputs: ["cmplib", "selectMode", "tags"], outputs: ["cmplibChange", "clickExample", "dragStart", "dragEnd"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NzEmptyModule }, { kind: "component", type: i10.NzEmptyComponent, selector: "nz-empty", inputs: ["nzNotFoundImage", "nzNotFoundContent", "nzNotFoundFooter"], exportAs: ["nzEmpty"] }, { kind: "directive", type: DynamicDirective, selector: "[axisDynamic]", inputs: ["axisDynamic", "standalone", "isDesign"], exportAs: ["axisDynamic"] }, { kind: "ngmodule", type: NzDrawerModule }, { kind: "component", type: i6$2.NzDrawerComponent, selector: "nz-drawer", inputs: ["nzContent", "nzCloseIcon", "nzClosable", "nzMaskClosable", "nzMask", "nzCloseOnNavigation", "nzNoAnimation", "nzKeyboard", "nzTitle", "nzExtra", "nzFooter", "nzPlacement", "nzSize", "nzMaskStyle", "nzBodyStyle", "nzWrapClassName", "nzWidth", "nzHeight", "nzZIndex", "nzOffsetX", "nzOffsetY", "nzVisible"], outputs: ["nzOnViewInit", "nzOnClose", "nzVisibleChange"], exportAs: ["nzDrawer"] }, { kind: "directive", type: i6$2.NzDrawerContentDirective, selector: "[nzDrawerContent]", exportAs: ["nzDrawerContent"] }, { kind: "component", type: Toolbar, selector: "axis-toolbar", inputs: ["shortcutKeysModal"], outputs: ["shortcutKeysModalChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1711
+ }
1712
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.2", ngImport: i0, type: Design, decorators: [{
1713
+ type: Component,
1714
+ args: [{ selector: 'axis-design', imports: [NzSplitterModule, NzTabsModule, Preview, Tree, NzFlexModule, Cmplib, FormsModule, NzEmptyModule, DynamicDirective, NzDrawerModule, Toolbar], changeDetection: ChangeDetectionStrategy.OnPush, host: {
1715
+ tabindex: "-1",
1716
+ autofocus: "true",
1717
+ }, template: "<nz-splitter (nzResize)=\"layoutEditor($event)\">\n <nz-splitter-panel [nzCollapsible]=\"!tools.onlyPreview()\" [nzDefaultSize]=\"cacheSized[0]\" nzMin=\"15%\" nzMax=\"40%\"\n [nzSize]=\"tools.onlyPreview()?0:undefined\">\n <nz-tabs nzCentered>\n <nz-tab nzTitle=\"\u7EC4\u4EF6\u6811\">\n <axis-design-tree #tree [node]=\"treeNode()\" [optionsNodes]=\"optionsNodes\"\n (onSelect)=\"onTreeSelect($event)\" (onChange)=\"onChangeOptionsConfig($event)\"\n (onContextMenu)=\"onContextMenu($event.event,$event.nodeId)\"></axis-design-tree>\n </nz-tab>\n <nz-tab nzTitle=\"\u7EC4\u4EF6\u5E93\">\n <axis-cmplib selectMode=\"drag\" (dragStart)=\"onCmplibDragStart($event.example,$event.element)\"\n (dragEnd)=\"onCmplibDragEnd()\"></axis-cmplib>\n </nz-tab>\n </nz-tabs>\n </nz-splitter-panel>\n <nz-splitter-panel>\n <div nz-flex nzVertical style=\"height: 100%;width: 100%;position: relative;\">\n <h2 style=\"text-align: center;margin-top: 4px;\">\u9884\u89C8</h2>\n <axis-toolbar #tools></axis-toolbar>\n <axis-design-preview #preview style=\"flex:1;overflow: auto;\" [loadAndOptions]=\"loadAndOptions()\"\n [optionsNodes]=\"optionsNodes\" [injectData]=\"injectDataObs\" (onChange)=\"onChangeOptionsConfig()\"\n (onSelect)=\"onPreviewSelect($event)\"\n (onContextMenu)=\"onContextMenu($event.event,$event.nodeId)\"></axis-design-preview>\n </div>\n </nz-splitter-panel>\n <nz-splitter-panel [nzCollapsible]=\"!tools.onlyPreview()\" [nzDefaultSize]=\"cacheSized[1]\" nzMin=\"15%\" nzMax=\"40%\"\n [nzSize]=\"tools.onlyPreview()?0:undefined\" style=\"position: relative;\">\n <nz-tabs nzCentered style=\"height: 100%;\">\n <nz-tab nzTitle=\"\u5C5E\u6027\u8BBE\u7F6E\" (nzClick)=\"syncToSetting()\">\n <ng-container #setting></ng-container>\n @if (!settingOptionsStr()){\n <nz-empty style=\"height: 300px;\" nzNotFoundContent=\"\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u7EC4\u4EF6\"></nz-empty>\n }\n </nz-tab>\n <nz-tab nzTitle=\"\u4EE3\u7801\" nzForceRender (nzSelect)=\"syncToCode();\">\n <ng-container #codeEditor=\"axisDynamic\"\n [axisDynamic]=\"{component:'axis-components/editor',inuse:true,mode:'json',readonly:!settingOptionsStr(),otherOptions:{tabSize:2}}\"\n [standalone]=\"true\" [(ngModel)]=\"settingOptionsStr\"\n (ngModelChange)=\"onEditorChange($event)\"></ng-container>\n </nz-tab>\n </nz-tabs>\n </nz-splitter-panel>\n</nz-splitter>\n<ng-container #menu></ng-container>\n<nz-drawer [(nzVisible)]=\"chooseComponentVisible\" nzTitle=\"\u9009\u62E9\u7EC4\u4EF6\" [nzBodyStyle]=\"{padding:0}\"\n (nzOnClose)=\"chooseComponentVisible.set(false);chooseComponentSubject.next(undefined)\">\n <ng-container *nzDrawerContent>\n <axis-cmplib selectMode=\"click\" [tags]=\"chooseComponentTags()\"\n (clickExample)=\"chooseComponentVisible.set(false);chooseComponentSubject.next($event)\"></axis-cmplib>\n </ng-container>\n</nz-drawer>", styles: ["nz-tabs,::ng-deep .ant-tabs-content,::ng-deep .ant-tabs-tabpane{height:100%}::ng-deep .ant-tabs-content{overflow:auto}:host{display:block;width:100%;height:100%}\n"] }]
1718
+ }], ctorParameters: () => [], propDecorators: { menu: [{
1719
+ type: ViewChild,
1720
+ args: ["menu", { static: true, read: ViewContainerRef }]
1721
+ }], setting: [{
1722
+ type: ViewChild,
1723
+ args: ["setting", { static: true, read: ViewContainerRef }]
1724
+ }], preview: [{
1725
+ type: ViewChild,
1726
+ args: ["preview", { static: true }]
1727
+ }], tree: [{
1728
+ type: ViewChild,
1729
+ args: ["tree", { static: true }]
1730
+ }], codeEditor: [{
1731
+ type: ViewChild,
1732
+ args: ["codeEditor"]
1733
+ }], tools: [{
1734
+ type: ViewChild,
1735
+ args: ["tools", { static: true }]
1736
+ }], onKeyPress: [{
1737
+ type: HostListener,
1738
+ args: ["keydown", ['$event']]
1739
+ }] } });
1740
+
1741
+ /**
1742
+ * Generated bundle index. Do not edit.
1743
+ */
1744
+
1745
+ export { Design };
1746
+ //# sourceMappingURL=ngx-axis-appforge-axis-components-design.mjs.map