@gxp-dev/mod-ui 2.0.0 → 2.0.1

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 (811) hide show
  1. package/.storybook/preview.ts +7 -0
  2. package/README.md +6 -6
  3. package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
  4. package/dist/_virtual/_plugin-vue_export-helper.js.map +1 -0
  5. package/dist/action.d.ts +4 -0
  6. package/dist/action.d.ts.map +1 -0
  7. package/dist/action.js +9 -0
  8. package/dist/action.js.map +1 -0
  9. package/dist/adapters/fieldTypeMap.d.ts.map +1 -1
  10. package/dist/adapters/fieldTypeMap.js +4 -8
  11. package/dist/adapters/fieldTypeMap.js.map +1 -1
  12. package/dist/adapters/index.d.ts +1 -1
  13. package/dist/boolean.d.ts +5 -0
  14. package/dist/boolean.d.ts.map +1 -0
  15. package/dist/boolean.js +11 -0
  16. package/dist/boolean.js.map +1 -0
  17. package/dist/builder.d.ts +9 -0
  18. package/dist/builder.d.ts.map +1 -0
  19. package/dist/builder.js +19 -0
  20. package/dist/builder.js.map +1 -0
  21. package/dist/cards.d.ts +8 -0
  22. package/dist/cards.d.ts.map +1 -0
  23. package/dist/cards.js +17 -0
  24. package/dist/cards.js.map +1 -0
  25. package/dist/code.d.ts +6 -0
  26. package/dist/code.d.ts.map +1 -0
  27. package/dist/code.js +13 -0
  28. package/dist/code.js.map +1 -0
  29. package/dist/components/compositions/cards/CardListCard.vue.d.ts +30 -0
  30. package/dist/components/compositions/cards/CardListCard.vue.d.ts.map +1 -0
  31. package/dist/components/compositions/cards/CardListCard.vue.js +122 -2
  32. package/dist/components/compositions/cards/CardListCard.vue.js.map +1 -1
  33. package/dist/components/compositions/cards/CardListCard.vue2.js +2 -122
  34. package/dist/components/compositions/cards/CardListCard.vue2.js.map +1 -1
  35. package/dist/components/compositions/cards/DataTableCard.vue.d.ts +58 -0
  36. package/dist/components/compositions/cards/DataTableCard.vue.d.ts.map +1 -0
  37. package/dist/components/compositions/cards/DataTableCard.vue.js +387 -2
  38. package/dist/components/compositions/cards/DataTableCard.vue.js.map +1 -1
  39. package/dist/components/compositions/cards/DataTableCard.vue2.js +2 -387
  40. package/dist/components/compositions/cards/DataTableCard.vue2.js.map +1 -1
  41. package/dist/components/compositions/cards/ElementDisplayCard.vue.d.ts +16 -0
  42. package/dist/components/compositions/cards/ElementDisplayCard.vue.d.ts.map +1 -0
  43. package/dist/components/compositions/cards/ElementDisplayCard.vue.js +64 -2
  44. package/dist/components/compositions/cards/ElementDisplayCard.vue.js.map +1 -1
  45. package/dist/components/compositions/cards/ElementDisplayCard.vue2.js +2 -64
  46. package/dist/components/compositions/cards/ElementDisplayCard.vue2.js.map +1 -1
  47. package/dist/components/compositions/cards/ElementListCard.vue.d.ts +22 -0
  48. package/dist/components/compositions/cards/ElementListCard.vue.d.ts.map +1 -0
  49. package/dist/components/compositions/cards/ElementListCard.vue.js +92 -2
  50. package/dist/components/compositions/cards/ElementListCard.vue.js.map +1 -1
  51. package/dist/components/compositions/cards/ElementListCard.vue2.js +2 -92
  52. package/dist/components/compositions/cards/ElementListCard.vue2.js.map +1 -1
  53. package/dist/components/compositions/cards/GridViewCard.vue.d.ts +35 -0
  54. package/dist/components/compositions/cards/GridViewCard.vue.d.ts.map +1 -0
  55. package/dist/components/compositions/cards/GridViewCard.vue.js +128 -2
  56. package/dist/components/compositions/cards/GridViewCard.vue.js.map +1 -1
  57. package/dist/components/compositions/cards/GridViewCard.vue2.js +2 -128
  58. package/dist/components/compositions/cards/GridViewCard.vue2.js.map +1 -1
  59. package/dist/components/compositions/cards/InfoCard.vue.d.ts +24 -0
  60. package/dist/components/compositions/cards/InfoCard.vue.d.ts.map +1 -0
  61. package/dist/components/compositions/cards/InfoCard.vue.js +183 -2
  62. package/dist/components/compositions/cards/InfoCard.vue.js.map +1 -1
  63. package/dist/components/compositions/cards/InfoCard.vue2.js +2 -183
  64. package/dist/components/compositions/cards/InfoCard.vue2.js.map +1 -1
  65. package/dist/components/compositions/cards/TabListCard.vue.d.ts +36 -0
  66. package/dist/components/compositions/cards/TabListCard.vue.d.ts.map +1 -0
  67. package/dist/components/compositions/cards/TabListCard.vue.js +124 -2
  68. package/dist/components/compositions/cards/TabListCard.vue.js.map +1 -1
  69. package/dist/components/compositions/cards/TabListCard.vue2.js +2 -124
  70. package/dist/components/compositions/cards/TabListCard.vue2.js.map +1 -1
  71. package/dist/components/compositions/elements/action/ButtonAction.vue.d.ts +42 -0
  72. package/dist/components/compositions/elements/action/ButtonAction.vue.d.ts.map +1 -0
  73. package/dist/components/compositions/elements/action/ButtonAction.vue.js +157 -2
  74. package/dist/components/compositions/elements/action/ButtonAction.vue.js.map +1 -1
  75. package/dist/components/compositions/elements/action/ButtonAction.vue2.js +2 -157
  76. package/dist/components/compositions/elements/action/ButtonAction.vue2.js.map +1 -1
  77. package/dist/components/compositions/elements/action/ButtonGroupAction.vue.d.ts +46 -0
  78. package/dist/components/compositions/elements/action/ButtonGroupAction.vue.d.ts.map +1 -0
  79. package/dist/components/compositions/elements/action/ButtonGroupAction.vue.js +66 -2
  80. package/dist/components/compositions/elements/action/ButtonGroupAction.vue.js.map +1 -1
  81. package/dist/components/compositions/elements/action/ButtonGroupAction.vue2.js +2 -66
  82. package/dist/components/compositions/elements/action/ButtonGroupAction.vue2.js.map +1 -1
  83. package/dist/components/compositions/elements/action/LinkAction.vue.d.ts +30 -0
  84. package/dist/components/compositions/elements/action/LinkAction.vue.d.ts.map +1 -0
  85. package/dist/components/compositions/elements/action/LinkAction.vue.js +55 -2
  86. package/dist/components/compositions/elements/action/LinkAction.vue.js.map +1 -1
  87. package/dist/components/compositions/elements/action/LinkAction.vue2.js +2 -55
  88. package/dist/components/compositions/elements/action/LinkAction.vue2.js.map +1 -1
  89. package/dist/components/compositions/elements/boolean/CheckboxBoolean.vue.d.ts +25 -0
  90. package/dist/components/compositions/elements/boolean/CheckboxBoolean.vue.d.ts.map +1 -0
  91. package/dist/components/compositions/elements/boolean/CheckboxBoolean.vue.js +68 -2
  92. package/dist/components/compositions/elements/boolean/CheckboxBoolean.vue.js.map +1 -1
  93. package/dist/components/compositions/elements/boolean/CheckboxBoolean.vue2.js +2 -68
  94. package/dist/components/compositions/elements/boolean/CheckboxBoolean.vue2.js.map +1 -1
  95. package/dist/components/compositions/elements/boolean/IconToggleBoolean.vue.d.ts +29 -0
  96. package/dist/components/compositions/elements/boolean/IconToggleBoolean.vue.d.ts.map +1 -0
  97. package/dist/components/compositions/elements/boolean/IconToggleBoolean.vue.js +75 -2
  98. package/dist/components/compositions/elements/boolean/IconToggleBoolean.vue.js.map +1 -1
  99. package/dist/components/compositions/elements/boolean/IconToggleBoolean.vue2.js +2 -75
  100. package/dist/components/compositions/elements/boolean/IconToggleBoolean.vue2.js.map +1 -1
  101. package/dist/components/compositions/elements/boolean/RadioBoolean.vue.d.ts +33 -0
  102. package/dist/components/compositions/elements/boolean/RadioBoolean.vue.d.ts.map +1 -0
  103. package/dist/components/compositions/elements/boolean/RadioBoolean.vue.js +91 -2
  104. package/dist/components/compositions/elements/boolean/RadioBoolean.vue.js.map +1 -1
  105. package/dist/components/compositions/elements/boolean/RadioBoolean.vue2.js +2 -91
  106. package/dist/components/compositions/elements/boolean/RadioBoolean.vue2.js.map +1 -1
  107. package/dist/components/compositions/elements/boolean/SwitchBoolean.vue.d.ts +29 -0
  108. package/dist/components/compositions/elements/boolean/SwitchBoolean.vue.d.ts.map +1 -0
  109. package/dist/components/compositions/elements/boolean/SwitchBoolean.vue.js +77 -2
  110. package/dist/components/compositions/elements/boolean/SwitchBoolean.vue.js.map +1 -1
  111. package/dist/components/compositions/elements/boolean/SwitchBoolean.vue2.js +2 -77
  112. package/dist/components/compositions/elements/boolean/SwitchBoolean.vue2.js.map +1 -1
  113. package/dist/components/compositions/elements/builder/DependencyListBuilder.vue.d.ts +29 -0
  114. package/dist/components/compositions/elements/builder/DependencyListBuilder.vue.d.ts.map +1 -0
  115. package/dist/components/compositions/elements/builder/DependencyListBuilder.vue.js +666 -2
  116. package/dist/components/compositions/elements/builder/DependencyListBuilder.vue.js.map +1 -1
  117. package/dist/components/compositions/elements/builder/DependencyListBuilder.vue2.js +2 -666
  118. package/dist/components/compositions/elements/builder/DependencyListBuilder.vue2.js.map +1 -1
  119. package/dist/components/compositions/elements/builder/ElementListBuilder.vue.d.ts +29 -0
  120. package/dist/components/compositions/elements/builder/ElementListBuilder.vue.d.ts.map +1 -0
  121. package/dist/components/compositions/elements/builder/ElementListBuilder.vue.js +421 -2
  122. package/dist/components/compositions/elements/builder/ElementListBuilder.vue.js.map +1 -1
  123. package/dist/components/compositions/elements/builder/ElementListBuilder.vue2.js +2 -421
  124. package/dist/components/compositions/elements/builder/ElementListBuilder.vue2.js.map +1 -1
  125. package/dist/components/compositions/elements/builder/FormBuilder.vue.d.ts +30 -0
  126. package/dist/components/compositions/elements/builder/FormBuilder.vue.d.ts.map +1 -0
  127. package/dist/components/compositions/elements/builder/FormBuilder.vue.js +857 -2
  128. package/dist/components/compositions/elements/builder/FormBuilder.vue.js.map +1 -1
  129. package/dist/components/compositions/elements/builder/FormBuilder.vue2.js +2 -857
  130. package/dist/components/compositions/elements/builder/FormBuilder.vue2.js.map +1 -1
  131. package/dist/components/compositions/elements/builder/GridBuilder.vue.d.ts +37 -0
  132. package/dist/components/compositions/elements/builder/GridBuilder.vue.d.ts.map +1 -0
  133. package/dist/components/compositions/elements/builder/GridBuilder.vue.js +452 -2
  134. package/dist/components/compositions/elements/builder/GridBuilder.vue.js.map +1 -1
  135. package/dist/components/compositions/elements/builder/GridBuilder.vue2.js +2 -452
  136. package/dist/components/compositions/elements/builder/GridBuilder.vue2.js.map +1 -1
  137. package/dist/components/compositions/elements/builder/ObjectBuilder.vue.d.ts +33 -0
  138. package/dist/components/compositions/elements/builder/ObjectBuilder.vue.d.ts.map +1 -0
  139. package/dist/components/compositions/elements/builder/ObjectBuilder.vue.js +511 -2
  140. package/dist/components/compositions/elements/builder/ObjectBuilder.vue.js.map +1 -1
  141. package/dist/components/compositions/elements/builder/ObjectBuilder.vue2.js +2 -511
  142. package/dist/components/compositions/elements/builder/ObjectBuilder.vue2.js.map +1 -1
  143. package/dist/components/compositions/elements/builder/PresetBuilder.vue.d.ts +29 -0
  144. package/dist/components/compositions/elements/builder/PresetBuilder.vue.d.ts.map +1 -0
  145. package/dist/components/compositions/elements/builder/PresetBuilder.vue.js +163 -2
  146. package/dist/components/compositions/elements/builder/PresetBuilder.vue.js.map +1 -1
  147. package/dist/components/compositions/elements/builder/PresetBuilder.vue2.js +2 -163
  148. package/dist/components/compositions/elements/builder/PresetBuilder.vue2.js.map +1 -1
  149. package/dist/components/compositions/elements/builder/QuizBuilder.vue.d.ts +34 -0
  150. package/dist/components/compositions/elements/builder/QuizBuilder.vue.d.ts.map +1 -0
  151. package/dist/components/compositions/elements/builder/QuizBuilder.vue.js +591 -2
  152. package/dist/components/compositions/elements/builder/QuizBuilder.vue.js.map +1 -1
  153. package/dist/components/compositions/elements/builder/QuizBuilder.vue2.js +2 -591
  154. package/dist/components/compositions/elements/builder/QuizBuilder.vue2.js.map +1 -1
  155. package/dist/components/compositions/elements/builder/ReactiveCanvasBuilder.vue.d.ts +29 -0
  156. package/dist/components/compositions/elements/builder/ReactiveCanvasBuilder.vue.d.ts.map +1 -0
  157. package/dist/components/compositions/elements/builder/ReactiveCanvasBuilder.vue.js +580 -2
  158. package/dist/components/compositions/elements/builder/ReactiveCanvasBuilder.vue.js.map +1 -1
  159. package/dist/components/compositions/elements/builder/ReactiveCanvasBuilder.vue2.js +2 -580
  160. package/dist/components/compositions/elements/builder/ReactiveCanvasBuilder.vue2.js.map +1 -1
  161. package/dist/components/compositions/elements/card/ListCard.vue.d.ts +21 -0
  162. package/dist/components/compositions/elements/card/ListCard.vue.d.ts.map +1 -0
  163. package/dist/components/compositions/elements/code/BuildStatus.vue.d.ts +43 -0
  164. package/dist/components/compositions/elements/code/BuildStatus.vue.d.ts.map +1 -0
  165. package/dist/components/compositions/elements/code/BuildStatus.vue.js +246 -2
  166. package/dist/components/compositions/elements/code/BuildStatus.vue.js.map +1 -1
  167. package/dist/components/compositions/elements/code/BuildStatus.vue2.js +2 -246
  168. package/dist/components/compositions/elements/code/BuildStatus.vue2.js.map +1 -1
  169. package/dist/components/compositions/elements/code/ChatMessage.vue.d.ts +39 -0
  170. package/dist/components/compositions/elements/code/ChatMessage.vue.d.ts.map +1 -0
  171. package/dist/components/compositions/elements/code/ChatMessage.vue.js +267 -2
  172. package/dist/components/compositions/elements/code/ChatMessage.vue.js.map +1 -1
  173. package/dist/components/compositions/elements/code/ChatMessage.vue2.js +2 -267
  174. package/dist/components/compositions/elements/code/ChatMessage.vue2.js.map +1 -1
  175. package/dist/components/compositions/elements/code/FileTree.vue.d.ts +42 -0
  176. package/dist/components/compositions/elements/code/FileTree.vue.d.ts.map +1 -0
  177. package/dist/components/compositions/elements/code/FileTree.vue.js +251 -2
  178. package/dist/components/compositions/elements/code/FileTree.vue.js.map +1 -1
  179. package/dist/components/compositions/elements/code/FileTree.vue2.js +2 -251
  180. package/dist/components/compositions/elements/code/FileTree.vue2.js.map +1 -1
  181. package/dist/components/compositions/elements/code/GitCodeEditor.vue.d.ts +54 -0
  182. package/dist/components/compositions/elements/code/GitCodeEditor.vue.d.ts.map +1 -0
  183. package/dist/components/compositions/elements/code/GitCodeEditor.vue.js +273 -2
  184. package/dist/components/compositions/elements/code/GitCodeEditor.vue.js.map +1 -1
  185. package/dist/components/compositions/elements/code/GitCodeEditor.vue2.js +2 -273
  186. package/dist/components/compositions/elements/code/GitCodeEditor.vue2.js.map +1 -1
  187. package/dist/components/compositions/elements/code/PullRequestsList.vue.d.ts +46 -0
  188. package/dist/components/compositions/elements/code/PullRequestsList.vue.d.ts.map +1 -0
  189. package/dist/components/compositions/elements/code/PullRequestsList.vue.js +303 -2
  190. package/dist/components/compositions/elements/code/PullRequestsList.vue.js.map +1 -1
  191. package/dist/components/compositions/elements/code/PullRequestsList.vue2.js +2 -303
  192. package/dist/components/compositions/elements/code/PullRequestsList.vue2.js.map +1 -1
  193. package/dist/components/compositions/elements/configuration-block/DialogBlock.vue.d.ts +17 -0
  194. package/dist/components/compositions/elements/configuration-block/DialogBlock.vue.d.ts.map +1 -0
  195. package/dist/components/compositions/elements/configuration-block/DialogBlock.vue.js +101 -2
  196. package/dist/components/compositions/elements/configuration-block/DialogBlock.vue.js.map +1 -1
  197. package/dist/components/compositions/elements/configuration-block/DialogBlock.vue2.js +2 -101
  198. package/dist/components/compositions/elements/configuration-block/DialogBlock.vue2.js.map +1 -1
  199. package/dist/components/compositions/elements/configuration-block/ElementsBlock.vue.d.ts +20 -0
  200. package/dist/components/compositions/elements/configuration-block/ElementsBlock.vue.d.ts.map +1 -0
  201. package/dist/components/compositions/elements/configuration-block/ElementsBlock.vue.js +33 -2
  202. package/dist/components/compositions/elements/configuration-block/ElementsBlock.vue.js.map +1 -1
  203. package/dist/components/compositions/elements/configuration-block/ElementsBlock.vue2.js +2 -33
  204. package/dist/components/compositions/elements/configuration-block/ElementsBlock.vue2.js.map +1 -1
  205. package/dist/components/compositions/elements/configuration-block/ModalBlock.vue.d.ts +17 -0
  206. package/dist/components/compositions/elements/configuration-block/ModalBlock.vue.d.ts.map +1 -0
  207. package/dist/components/compositions/elements/configuration-block/ModalBlock.vue.js +103 -2
  208. package/dist/components/compositions/elements/configuration-block/ModalBlock.vue.js.map +1 -1
  209. package/dist/components/compositions/elements/configuration-block/ModalBlock.vue2.js +2 -103
  210. package/dist/components/compositions/elements/configuration-block/ModalBlock.vue2.js.map +1 -1
  211. package/dist/components/compositions/elements/configuration-block/RepeatableBlock.vue.d.ts +29 -0
  212. package/dist/components/compositions/elements/configuration-block/RepeatableBlock.vue.d.ts.map +1 -0
  213. package/dist/components/compositions/elements/configuration-block/RepeatableBlock.vue.js +172 -2
  214. package/dist/components/compositions/elements/configuration-block/RepeatableBlock.vue.js.map +1 -1
  215. package/dist/components/compositions/elements/configuration-block/RepeatableBlock.vue2.js +2 -140
  216. package/dist/components/compositions/elements/configuration-block/RepeatableBlock.vue2.js.map +1 -1
  217. package/dist/components/compositions/elements/configuration-block/RepeatableRow.vue.d.ts +12 -0
  218. package/dist/components/compositions/elements/configuration-block/RepeatableRow.vue.d.ts.map +1 -0
  219. package/dist/components/compositions/elements/configuration-block/RepeatableRow.vue.js +5 -0
  220. package/dist/components/compositions/elements/configuration-block/RepeatableRow.vue.js.map +1 -0
  221. package/dist/components/compositions/elements/configuration-block/RepeatableRow.vue2.js +25 -0
  222. package/dist/components/compositions/elements/configuration-block/RepeatableRow.vue2.js.map +1 -0
  223. package/dist/components/compositions/elements/display/BannerDisplay.vue.d.ts +13 -0
  224. package/dist/components/compositions/elements/display/BannerDisplay.vue.d.ts.map +1 -0
  225. package/dist/components/compositions/elements/display/BannerDisplay.vue.js +63 -2
  226. package/dist/components/compositions/elements/display/BannerDisplay.vue.js.map +1 -1
  227. package/dist/components/compositions/elements/display/BannerDisplay.vue2.js +2 -63
  228. package/dist/components/compositions/elements/display/BannerDisplay.vue2.js.map +1 -1
  229. package/dist/components/compositions/elements/display/BarcodeDisplay.vue.d.ts +12 -0
  230. package/dist/components/compositions/elements/display/BarcodeDisplay.vue.d.ts.map +1 -0
  231. package/dist/components/compositions/elements/display/BarcodeDisplay.vue.js +52 -2
  232. package/dist/components/compositions/elements/display/BarcodeDisplay.vue.js.map +1 -1
  233. package/dist/components/compositions/elements/display/BarcodeDisplay.vue2.js +2 -52
  234. package/dist/components/compositions/elements/display/BarcodeDisplay.vue2.js.map +1 -1
  235. package/dist/components/compositions/elements/display/CarouselDisplay.vue.d.ts +27 -0
  236. package/dist/components/compositions/elements/display/CarouselDisplay.vue.d.ts.map +1 -0
  237. package/dist/components/compositions/elements/display/CarouselDisplay.vue.js +144 -2
  238. package/dist/components/compositions/elements/display/CarouselDisplay.vue.js.map +1 -1
  239. package/dist/components/compositions/elements/display/CarouselDisplay.vue2.js +2 -144
  240. package/dist/components/compositions/elements/display/CarouselDisplay.vue2.js.map +1 -1
  241. package/dist/components/compositions/elements/display/ChartDisplay.vue.d.ts +17 -0
  242. package/dist/components/compositions/elements/display/ChartDisplay.vue.d.ts.map +1 -0
  243. package/dist/components/compositions/elements/display/ChartDisplay.vue.js +78 -2
  244. package/dist/components/compositions/elements/display/ChartDisplay.vue.js.map +1 -1
  245. package/dist/components/compositions/elements/display/ChartDisplay.vue2.js +2 -78
  246. package/dist/components/compositions/elements/display/ChartDisplay.vue2.js.map +1 -1
  247. package/dist/components/compositions/elements/display/HtmlDisplay.vue.d.ts +7 -0
  248. package/dist/components/compositions/elements/display/HtmlDisplay.vue.d.ts.map +1 -0
  249. package/dist/components/compositions/elements/display/HtmlDisplay.vue.js +20 -2
  250. package/dist/components/compositions/elements/display/HtmlDisplay.vue.js.map +1 -1
  251. package/dist/components/compositions/elements/display/HtmlDisplay.vue2.js +2 -20
  252. package/dist/components/compositions/elements/display/HtmlDisplay.vue2.js.map +1 -1
  253. package/dist/components/compositions/elements/display/IconDisplay.vue.d.ts +10 -0
  254. package/dist/components/compositions/elements/display/IconDisplay.vue.d.ts.map +1 -0
  255. package/dist/components/compositions/elements/display/IconDisplay.vue.js +55 -2
  256. package/dist/components/compositions/elements/display/IconDisplay.vue.js.map +1 -1
  257. package/dist/components/compositions/elements/display/IconDisplay.vue2.js +2 -55
  258. package/dist/components/compositions/elements/display/IconDisplay.vue2.js.map +1 -1
  259. package/dist/components/compositions/elements/display/IframeDisplay.vue.d.ts +11 -0
  260. package/dist/components/compositions/elements/display/IframeDisplay.vue.d.ts.map +1 -0
  261. package/dist/components/compositions/elements/display/IframeDisplay.vue.js +32 -2
  262. package/dist/components/compositions/elements/display/IframeDisplay.vue.js.map +1 -1
  263. package/dist/components/compositions/elements/display/IframeDisplay.vue2.js +2 -32
  264. package/dist/components/compositions/elements/display/IframeDisplay.vue2.js.map +1 -1
  265. package/dist/components/compositions/elements/display/ImageDisplay.vue.d.ts +8 -0
  266. package/dist/components/compositions/elements/display/ImageDisplay.vue.d.ts.map +1 -0
  267. package/dist/components/compositions/elements/display/ImageDisplay.vue.js +35 -2
  268. package/dist/components/compositions/elements/display/ImageDisplay.vue.js.map +1 -1
  269. package/dist/components/compositions/elements/display/ImageDisplay.vue2.js +2 -35
  270. package/dist/components/compositions/elements/display/ImageDisplay.vue2.js.map +1 -1
  271. package/dist/components/compositions/elements/display/MarkdownDisplay.vue.d.ts +7 -0
  272. package/dist/components/compositions/elements/display/MarkdownDisplay.vue.d.ts.map +1 -0
  273. package/dist/components/compositions/elements/display/MarkdownDisplay.vue.js +39 -2
  274. package/dist/components/compositions/elements/display/MarkdownDisplay.vue.js.map +1 -1
  275. package/dist/components/compositions/elements/display/MarkdownDisplay.vue2.js +2 -39
  276. package/dist/components/compositions/elements/display/MarkdownDisplay.vue2.js.map +1 -1
  277. package/dist/components/compositions/elements/display/ProgressBarDisplay.vue.d.ts +11 -0
  278. package/dist/components/compositions/elements/display/ProgressBarDisplay.vue.d.ts.map +1 -0
  279. package/dist/components/compositions/elements/display/ProgressBarDisplay.vue.js +42 -2
  280. package/dist/components/compositions/elements/display/ProgressBarDisplay.vue.js.map +1 -1
  281. package/dist/components/compositions/elements/display/ProgressBarDisplay.vue2.js +2 -42
  282. package/dist/components/compositions/elements/display/ProgressBarDisplay.vue2.js.map +1 -1
  283. package/dist/components/compositions/elements/display/QrCodeDisplay.vue.d.ts +9 -0
  284. package/dist/components/compositions/elements/display/QrCodeDisplay.vue.d.ts.map +1 -0
  285. package/dist/components/compositions/elements/display/QrCodeDisplay.vue.js +46 -2
  286. package/dist/components/compositions/elements/display/QrCodeDisplay.vue.js.map +1 -1
  287. package/dist/components/compositions/elements/display/QrCodeDisplay.vue2.js +2 -46
  288. package/dist/components/compositions/elements/display/QrCodeDisplay.vue2.js.map +1 -1
  289. package/dist/components/compositions/elements/display/ReactiveCanvasDisplay.vue.d.ts +7 -0
  290. package/dist/components/compositions/elements/display/ReactiveCanvasDisplay.vue.d.ts.map +1 -0
  291. package/dist/components/compositions/elements/display/ReactiveCanvasDisplay.vue.js +64 -2
  292. package/dist/components/compositions/elements/display/ReactiveCanvasDisplay.vue.js.map +1 -1
  293. package/dist/components/compositions/elements/display/ReactiveCanvasDisplay.vue2.js +2 -64
  294. package/dist/components/compositions/elements/display/ReactiveCanvasDisplay.vue2.js.map +1 -1
  295. package/dist/components/compositions/elements/display/SpriteDisplay.vue.d.ts +7 -0
  296. package/dist/components/compositions/elements/display/SpriteDisplay.vue.d.ts.map +1 -0
  297. package/dist/components/compositions/elements/display/SpriteDisplay.vue.js +64 -2
  298. package/dist/components/compositions/elements/display/SpriteDisplay.vue.js.map +1 -1
  299. package/dist/components/compositions/elements/display/SpriteDisplay.vue2.js +2 -64
  300. package/dist/components/compositions/elements/display/SpriteDisplay.vue2.js.map +1 -1
  301. package/dist/components/compositions/elements/display/TypeDisplay.vue.d.ts +11 -0
  302. package/dist/components/compositions/elements/display/TypeDisplay.vue.d.ts.map +1 -0
  303. package/dist/components/compositions/elements/display/TypeDisplay.vue.js +42 -2
  304. package/dist/components/compositions/elements/display/TypeDisplay.vue.js.map +1 -1
  305. package/dist/components/compositions/elements/display/TypeDisplay.vue2.js +2 -42
  306. package/dist/components/compositions/elements/display/TypeDisplay.vue2.js.map +1 -1
  307. package/dist/components/compositions/elements/display/VideoPlayerDisplay.vue.d.ts +10 -0
  308. package/dist/components/compositions/elements/display/VideoPlayerDisplay.vue.d.ts.map +1 -0
  309. package/dist/components/compositions/elements/display/VideoPlayerDisplay.vue.js +33 -2
  310. package/dist/components/compositions/elements/display/VideoPlayerDisplay.vue.js.map +1 -1
  311. package/dist/components/compositions/elements/display/VideoPlayerDisplay.vue2.js +2 -33
  312. package/dist/components/compositions/elements/display/VideoPlayerDisplay.vue2.js.map +1 -1
  313. package/dist/components/compositions/elements/editor/CodeEditor.vue.d.ts +33 -0
  314. package/dist/components/compositions/elements/editor/CodeEditor.vue.d.ts.map +1 -0
  315. package/dist/components/compositions/elements/editor/CodeEditor.vue.js +5 -2
  316. package/dist/components/compositions/elements/editor/CodeEditor.vue.js.map +1 -1
  317. package/dist/components/compositions/elements/editor/CodeEditor.vue2.js +211 -53
  318. package/dist/components/compositions/elements/editor/CodeEditor.vue2.js.map +1 -1
  319. package/dist/components/compositions/elements/editor/HtmlEditor.vue.d.ts +24 -0
  320. package/dist/components/compositions/elements/editor/HtmlEditor.vue.d.ts.map +1 -0
  321. package/dist/components/compositions/elements/editor/HtmlEditor.vue.js +5 -2
  322. package/dist/components/compositions/elements/editor/HtmlEditor.vue.js.map +1 -1
  323. package/dist/components/compositions/elements/editor/HtmlEditor.vue2.js +1333 -50
  324. package/dist/components/compositions/elements/editor/HtmlEditor.vue2.js.map +1 -1
  325. package/dist/components/compositions/elements/editor/ImageEditor.vue.d.ts +24 -0
  326. package/dist/components/compositions/elements/editor/ImageEditor.vue.d.ts.map +1 -0
  327. package/dist/components/compositions/elements/editor/ImageEditor.vue.js +67 -2
  328. package/dist/components/compositions/elements/editor/ImageEditor.vue.js.map +1 -1
  329. package/dist/components/compositions/elements/editor/ImageEditor.vue2.js +2 -67
  330. package/dist/components/compositions/elements/editor/ImageEditor.vue2.js.map +1 -1
  331. package/dist/components/compositions/elements/editor/MarkdownEditor.vue.d.ts +28 -0
  332. package/dist/components/compositions/elements/editor/MarkdownEditor.vue.d.ts.map +1 -0
  333. package/dist/components/compositions/elements/editor/MarkdownEditor.vue.js +82 -2
  334. package/dist/components/compositions/elements/editor/MarkdownEditor.vue.js.map +1 -1
  335. package/dist/components/compositions/elements/editor/MarkdownEditor.vue2.js +2 -82
  336. package/dist/components/compositions/elements/editor/MarkdownEditor.vue2.js.map +1 -1
  337. package/dist/components/compositions/elements/editor/RichTextEditor.vue.d.ts +26 -0
  338. package/dist/components/compositions/elements/editor/RichTextEditor.vue.d.ts.map +1 -0
  339. package/dist/components/compositions/elements/editor/RichTextEditor.vue.js +262 -2
  340. package/dist/components/compositions/elements/editor/RichTextEditor.vue.js.map +1 -1
  341. package/dist/components/compositions/elements/editor/RichTextEditor.vue2.js +2 -262
  342. package/dist/components/compositions/elements/editor/RichTextEditor.vue2.js.map +1 -1
  343. package/dist/components/compositions/elements/file/AssetPickerFile.vue.d.ts +47 -0
  344. package/dist/components/compositions/elements/file/AssetPickerFile.vue.d.ts.map +1 -0
  345. package/dist/components/compositions/elements/file/AssetPickerFile.vue.js +293 -2
  346. package/dist/components/compositions/elements/file/AssetPickerFile.vue.js.map +1 -1
  347. package/dist/components/compositions/elements/file/AssetPickerFile.vue2.js +2 -293
  348. package/dist/components/compositions/elements/file/AssetPickerFile.vue2.js.map +1 -1
  349. package/dist/components/compositions/elements/file/DropzoneFile.vue.d.ts +33 -0
  350. package/dist/components/compositions/elements/file/DropzoneFile.vue.d.ts.map +1 -0
  351. package/dist/components/compositions/elements/file/DropzoneFile.vue.js +171 -2
  352. package/dist/components/compositions/elements/file/DropzoneFile.vue.js.map +1 -1
  353. package/dist/components/compositions/elements/file/DropzoneFile.vue2.js +2 -171
  354. package/dist/components/compositions/elements/file/DropzoneFile.vue2.js.map +1 -1
  355. package/dist/components/compositions/elements/file/UploadFile.vue.d.ts +33 -0
  356. package/dist/components/compositions/elements/file/UploadFile.vue.d.ts.map +1 -0
  357. package/dist/components/compositions/elements/file/UploadFile.vue.js +149 -2
  358. package/dist/components/compositions/elements/file/UploadFile.vue.js.map +1 -1
  359. package/dist/components/compositions/elements/file/UploadFile.vue2.js +2 -149
  360. package/dist/components/compositions/elements/file/UploadFile.vue2.js.map +1 -1
  361. package/dist/components/compositions/elements/input/BarcodeScannerInput.vue.d.ts +48 -0
  362. package/dist/components/compositions/elements/input/BarcodeScannerInput.vue.d.ts.map +1 -0
  363. package/dist/components/compositions/elements/input/BarcodeScannerInput.vue.js +166 -2
  364. package/dist/components/compositions/elements/input/BarcodeScannerInput.vue.js.map +1 -1
  365. package/dist/components/compositions/elements/input/BarcodeScannerInput.vue2.js +2 -166
  366. package/dist/components/compositions/elements/input/BarcodeScannerInput.vue2.js.map +1 -1
  367. package/dist/components/compositions/elements/input/EmailInput.vue.d.ts +48 -0
  368. package/dist/components/compositions/elements/input/EmailInput.vue.d.ts.map +1 -0
  369. package/dist/components/compositions/elements/input/EmailInput.vue.js +62 -2
  370. package/dist/components/compositions/elements/input/EmailInput.vue.js.map +1 -1
  371. package/dist/components/compositions/elements/input/EmailInput.vue2.js +2 -62
  372. package/dist/components/compositions/elements/input/EmailInput.vue2.js.map +1 -1
  373. package/dist/components/compositions/elements/input/NumberInput.vue.d.ts +49 -0
  374. package/dist/components/compositions/elements/input/NumberInput.vue.d.ts.map +1 -0
  375. package/dist/components/compositions/elements/input/NumberInput.vue.js +73 -2
  376. package/dist/components/compositions/elements/input/NumberInput.vue.js.map +1 -1
  377. package/dist/components/compositions/elements/input/NumberInput.vue2.js +2 -73
  378. package/dist/components/compositions/elements/input/NumberInput.vue2.js.map +1 -1
  379. package/dist/components/compositions/elements/input/PasswordInput.vue.d.ts +49 -0
  380. package/dist/components/compositions/elements/input/PasswordInput.vue.d.ts.map +1 -0
  381. package/dist/components/compositions/elements/input/PasswordInput.vue.js +98 -2
  382. package/dist/components/compositions/elements/input/PasswordInput.vue.js.map +1 -1
  383. package/dist/components/compositions/elements/input/PasswordInput.vue2.js +2 -98
  384. package/dist/components/compositions/elements/input/PasswordInput.vue2.js.map +1 -1
  385. package/dist/components/compositions/elements/input/RangeSliderInput.vue.d.ts +31 -0
  386. package/dist/components/compositions/elements/input/RangeSliderInput.vue.d.ts.map +1 -0
  387. package/dist/components/compositions/elements/input/RangeSliderInput.vue.js +69 -2
  388. package/dist/components/compositions/elements/input/RangeSliderInput.vue.js.map +1 -1
  389. package/dist/components/compositions/elements/input/RangeSliderInput.vue2.js +2 -69
  390. package/dist/components/compositions/elements/input/RangeSliderInput.vue2.js.map +1 -1
  391. package/dist/components/compositions/elements/input/SearchInput.vue.d.ts +48 -0
  392. package/dist/components/compositions/elements/input/SearchInput.vue.d.ts.map +1 -0
  393. package/dist/components/compositions/elements/input/SearchInput.vue.js +69 -2
  394. package/dist/components/compositions/elements/input/SearchInput.vue.js.map +1 -1
  395. package/dist/components/compositions/elements/input/SearchInput.vue2.js +2 -69
  396. package/dist/components/compositions/elements/input/SearchInput.vue2.js.map +1 -1
  397. package/dist/components/compositions/elements/input/TelInput.vue.d.ts +48 -0
  398. package/dist/components/compositions/elements/input/TelInput.vue.d.ts.map +1 -0
  399. package/dist/components/compositions/elements/input/TelInput.vue.js +62 -2
  400. package/dist/components/compositions/elements/input/TelInput.vue.js.map +1 -1
  401. package/dist/components/compositions/elements/input/TelInput.vue2.js +2 -62
  402. package/dist/components/compositions/elements/input/TelInput.vue2.js.map +1 -1
  403. package/dist/components/compositions/elements/input/TextInput.vue.d.ts +48 -0
  404. package/dist/components/compositions/elements/input/TextInput.vue.d.ts.map +1 -0
  405. package/dist/components/compositions/elements/input/TextInput.vue.js +62 -2
  406. package/dist/components/compositions/elements/input/TextInput.vue.js.map +1 -1
  407. package/dist/components/compositions/elements/input/TextInput.vue2.js +2 -62
  408. package/dist/components/compositions/elements/input/TextInput.vue2.js.map +1 -1
  409. package/dist/components/compositions/elements/input/TextareaInput.vue.d.ts +54 -0
  410. package/dist/components/compositions/elements/input/TextareaInput.vue.d.ts.map +1 -0
  411. package/dist/components/compositions/elements/input/TextareaInput.vue.js +63 -2
  412. package/dist/components/compositions/elements/input/TextareaInput.vue.js.map +1 -1
  413. package/dist/components/compositions/elements/input/TextareaInput.vue2.js +2 -63
  414. package/dist/components/compositions/elements/input/TextareaInput.vue2.js.map +1 -1
  415. package/dist/components/compositions/elements/input/UrlInput.vue.d.ts +48 -0
  416. package/dist/components/compositions/elements/input/UrlInput.vue.d.ts.map +1 -0
  417. package/dist/components/compositions/elements/input/UrlInput.vue.js +62 -2
  418. package/dist/components/compositions/elements/input/UrlInput.vue.js.map +1 -1
  419. package/dist/components/compositions/elements/input/UrlInput.vue2.js +2 -62
  420. package/dist/components/compositions/elements/input/UrlInput.vue2.js.map +1 -1
  421. package/dist/components/compositions/elements/option-select/AsyncSelectOption.vue.d.ts +44 -0
  422. package/dist/components/compositions/elements/option-select/AsyncSelectOption.vue.d.ts.map +1 -0
  423. package/dist/components/compositions/elements/option-select/AsyncSelectOption.vue.js +167 -2
  424. package/dist/components/compositions/elements/option-select/AsyncSelectOption.vue.js.map +1 -1
  425. package/dist/components/compositions/elements/option-select/AsyncSelectOption.vue2.js +2 -167
  426. package/dist/components/compositions/elements/option-select/AsyncSelectOption.vue2.js.map +1 -1
  427. package/dist/components/compositions/elements/option-select/AutoCompleteOption.vue.d.ts +31 -0
  428. package/dist/components/compositions/elements/option-select/AutoCompleteOption.vue.d.ts.map +1 -0
  429. package/dist/components/compositions/elements/option-select/AutoCompleteOption.vue.js +121 -2
  430. package/dist/components/compositions/elements/option-select/AutoCompleteOption.vue.js.map +1 -1
  431. package/dist/components/compositions/elements/option-select/AutoCompleteOption.vue2.js +2 -121
  432. package/dist/components/compositions/elements/option-select/AutoCompleteOption.vue2.js.map +1 -1
  433. package/dist/components/compositions/elements/option-select/CheckboxOption.vue.d.ts +29 -0
  434. package/dist/components/compositions/elements/option-select/CheckboxOption.vue.d.ts.map +1 -0
  435. package/dist/components/compositions/elements/option-select/CheckboxOption.vue.js +87 -2
  436. package/dist/components/compositions/elements/option-select/CheckboxOption.vue.js.map +1 -1
  437. package/dist/components/compositions/elements/option-select/CheckboxOption.vue2.js +2 -87
  438. package/dist/components/compositions/elements/option-select/CheckboxOption.vue2.js.map +1 -1
  439. package/dist/components/compositions/elements/option-select/IntegrationConnectorOption.vue.d.ts +41 -0
  440. package/dist/components/compositions/elements/option-select/IntegrationConnectorOption.vue.d.ts.map +1 -0
  441. package/dist/components/compositions/elements/option-select/IntegrationConnectorOption.vue.js +237 -2
  442. package/dist/components/compositions/elements/option-select/IntegrationConnectorOption.vue.js.map +1 -1
  443. package/dist/components/compositions/elements/option-select/IntegrationConnectorOption.vue2.js +2 -237
  444. package/dist/components/compositions/elements/option-select/IntegrationConnectorOption.vue2.js.map +1 -1
  445. package/dist/components/compositions/elements/option-select/ListOption.vue.d.ts +29 -0
  446. package/dist/components/compositions/elements/option-select/ListOption.vue.d.ts.map +1 -0
  447. package/dist/components/compositions/elements/option-select/ListOption.vue.js +89 -2
  448. package/dist/components/compositions/elements/option-select/ListOption.vue.js.map +1 -1
  449. package/dist/components/compositions/elements/option-select/ListOption.vue2.js +2 -89
  450. package/dist/components/compositions/elements/option-select/ListOption.vue2.js.map +1 -1
  451. package/dist/components/compositions/elements/option-select/PillSelectOption.vue.d.ts +28 -0
  452. package/dist/components/compositions/elements/option-select/PillSelectOption.vue.d.ts.map +1 -0
  453. package/dist/components/compositions/elements/option-select/PillSelectOption.vue.js +85 -2
  454. package/dist/components/compositions/elements/option-select/PillSelectOption.vue.js.map +1 -1
  455. package/dist/components/compositions/elements/option-select/PillSelectOption.vue2.js +2 -85
  456. package/dist/components/compositions/elements/option-select/PillSelectOption.vue2.js.map +1 -1
  457. package/dist/components/compositions/elements/option-select/RadioOption.vue.d.ts +29 -0
  458. package/dist/components/compositions/elements/option-select/RadioOption.vue.d.ts.map +1 -0
  459. package/dist/components/compositions/elements/option-select/RadioOption.vue.js +98 -2
  460. package/dist/components/compositions/elements/option-select/RadioOption.vue.js.map +1 -1
  461. package/dist/components/compositions/elements/option-select/RadioOption.vue2.js +2 -98
  462. package/dist/components/compositions/elements/option-select/RadioOption.vue2.js.map +1 -1
  463. package/dist/components/compositions/elements/option-select/SelectMultipleOption.vue.d.ts +29 -0
  464. package/dist/components/compositions/elements/option-select/SelectMultipleOption.vue.d.ts.map +1 -0
  465. package/dist/components/compositions/elements/option-select/SelectMultipleOption.vue.js +151 -2
  466. package/dist/components/compositions/elements/option-select/SelectMultipleOption.vue.js.map +1 -1
  467. package/dist/components/compositions/elements/option-select/SelectMultipleOption.vue2.js +2 -151
  468. package/dist/components/compositions/elements/option-select/SelectMultipleOption.vue2.js.map +1 -1
  469. package/dist/components/compositions/elements/option-select/SelectOption.vue.d.ts +29 -0
  470. package/dist/components/compositions/elements/option-select/SelectOption.vue.d.ts.map +1 -0
  471. package/dist/components/compositions/elements/option-select/SelectOption.vue.js +116 -2
  472. package/dist/components/compositions/elements/option-select/SelectOption.vue.js.map +1 -1
  473. package/dist/components/compositions/elements/option-select/SelectOption.vue2.js +2 -116
  474. package/dist/components/compositions/elements/option-select/SelectOption.vue2.js.map +1 -1
  475. package/dist/components/compositions/elements/picker/AsyncSelectPicker.vue.d.ts +40 -0
  476. package/dist/components/compositions/elements/picker/AsyncSelectPicker.vue.d.ts.map +1 -0
  477. package/dist/components/compositions/elements/picker/AsyncSelectPicker.vue.js +182 -2
  478. package/dist/components/compositions/elements/picker/AsyncSelectPicker.vue.js.map +1 -1
  479. package/dist/components/compositions/elements/picker/AsyncSelectPicker.vue2.js +2 -182
  480. package/dist/components/compositions/elements/picker/AsyncSelectPicker.vue2.js.map +1 -1
  481. package/dist/components/compositions/elements/picker/ColorPicker.vue.d.ts +29 -0
  482. package/dist/components/compositions/elements/picker/ColorPicker.vue.d.ts.map +1 -0
  483. package/dist/components/compositions/elements/picker/ColorPicker.vue.js +155 -2
  484. package/dist/components/compositions/elements/picker/ColorPicker.vue.js.map +1 -1
  485. package/dist/components/compositions/elements/picker/ColorPicker.vue2.js +2 -155
  486. package/dist/components/compositions/elements/picker/ColorPicker.vue2.js.map +1 -1
  487. package/dist/components/compositions/elements/picker/DataModelPicker.vue.d.ts +29 -0
  488. package/dist/components/compositions/elements/picker/DataModelPicker.vue.d.ts.map +1 -0
  489. package/dist/components/compositions/elements/picker/DataModelPicker.vue.js +104 -2
  490. package/dist/components/compositions/elements/picker/DataModelPicker.vue.js.map +1 -1
  491. package/dist/components/compositions/elements/picker/DataModelPicker.vue2.js +2 -104
  492. package/dist/components/compositions/elements/picker/DataModelPicker.vue2.js.map +1 -1
  493. package/dist/components/compositions/elements/picker/DatePicker.vue.d.ts +32 -0
  494. package/dist/components/compositions/elements/picker/DatePicker.vue.d.ts.map +1 -0
  495. package/dist/components/compositions/elements/picker/DatePicker.vue.js +140 -2
  496. package/dist/components/compositions/elements/picker/DatePicker.vue.js.map +1 -1
  497. package/dist/components/compositions/elements/picker/DatePicker.vue2.js +2 -140
  498. package/dist/components/compositions/elements/picker/DatePicker.vue2.js.map +1 -1
  499. package/dist/components/compositions/elements/picker/DateTimePicker.vue.d.ts +26 -0
  500. package/dist/components/compositions/elements/picker/DateTimePicker.vue.d.ts.map +1 -0
  501. package/dist/components/compositions/elements/picker/DateTimePicker.vue.js +171 -2
  502. package/dist/components/compositions/elements/picker/DateTimePicker.vue.js.map +1 -1
  503. package/dist/components/compositions/elements/picker/DateTimePicker.vue2.js +2 -171
  504. package/dist/components/compositions/elements/picker/DateTimePicker.vue2.js.map +1 -1
  505. package/dist/components/compositions/elements/picker/IconPicker.vue.d.ts +26 -0
  506. package/dist/components/compositions/elements/picker/IconPicker.vue.d.ts.map +1 -0
  507. package/dist/components/compositions/elements/picker/IconPicker.vue.js +190 -2
  508. package/dist/components/compositions/elements/picker/IconPicker.vue.js.map +1 -1
  509. package/dist/components/compositions/elements/picker/IconPicker.vue2.js +2 -190
  510. package/dist/components/compositions/elements/picker/IconPicker.vue2.js.map +1 -1
  511. package/dist/components/compositions/elements/picker/IconPickerInline.vue.d.ts +24 -0
  512. package/dist/components/compositions/elements/picker/IconPickerInline.vue.d.ts.map +1 -0
  513. package/dist/components/compositions/elements/{components/IconPickerInline.vue2.js → picker/IconPickerInline.vue.js} +23 -23
  514. package/dist/components/compositions/elements/picker/IconPickerInline.vue.js.map +1 -0
  515. package/dist/components/compositions/elements/picker/IconPickerInline.vue2.js +5 -0
  516. package/dist/components/compositions/elements/picker/IconPickerInline.vue2.js.map +1 -0
  517. package/dist/components/compositions/elements/picker/IntegrationConnectorPicker.vue.d.ts +41 -0
  518. package/dist/components/compositions/elements/picker/IntegrationConnectorPicker.vue.d.ts.map +1 -0
  519. package/dist/components/compositions/elements/picker/IntegrationConnectorPicker.vue.js +271 -2
  520. package/dist/components/compositions/elements/picker/IntegrationConnectorPicker.vue.js.map +1 -1
  521. package/dist/components/compositions/elements/picker/IntegrationConnectorPicker.vue2.js +2 -271
  522. package/dist/components/compositions/elements/picker/IntegrationConnectorPicker.vue2.js.map +1 -1
  523. package/dist/components/compositions/elements/picker/MapPicker.vue.d.ts +55 -0
  524. package/dist/components/compositions/elements/picker/MapPicker.vue.d.ts.map +1 -0
  525. package/dist/components/compositions/elements/picker/MapPicker.vue.js +118 -2
  526. package/dist/components/compositions/elements/picker/MapPicker.vue.js.map +1 -1
  527. package/dist/components/compositions/elements/picker/MapPicker.vue2.js +2 -118
  528. package/dist/components/compositions/elements/picker/MapPicker.vue2.js.map +1 -1
  529. package/dist/components/compositions/elements/picker/TimePicker.vue.d.ts +26 -0
  530. package/dist/components/compositions/elements/picker/TimePicker.vue.d.ts.map +1 -0
  531. package/dist/components/compositions/elements/picker/TimePicker.vue.js +106 -2
  532. package/dist/components/compositions/elements/picker/TimePicker.vue.js.map +1 -1
  533. package/dist/components/compositions/elements/picker/TimePicker.vue2.js +2 -106
  534. package/dist/components/compositions/elements/picker/TimePicker.vue2.js.map +1 -1
  535. package/dist/components/compositions/elements/picker/TimezonePicker.vue.d.ts +26 -0
  536. package/dist/components/compositions/elements/picker/TimezonePicker.vue.d.ts.map +1 -0
  537. package/dist/components/compositions/elements/picker/TimezonePicker.vue.js +124 -2
  538. package/dist/components/compositions/elements/picker/TimezonePicker.vue.js.map +1 -1
  539. package/dist/components/compositions/elements/picker/TimezonePicker.vue2.js +2 -124
  540. package/dist/components/compositions/elements/picker/TimezonePicker.vue2.js.map +1 -1
  541. package/dist/components/ui/index.d.ts +3 -3
  542. package/dist/components/ui/toast/index.d.ts +1 -1
  543. package/dist/components/ui/toast/index.js.map +1 -1
  544. package/dist/configuration-block.d.ts +5 -0
  545. package/dist/configuration-block.d.ts.map +1 -0
  546. package/dist/configuration-block.js +11 -0
  547. package/dist/configuration-block.js.map +1 -0
  548. package/dist/definitions/elements/PickerElement.d.ts +1 -1
  549. package/dist/definitions/elements/PickerElement.d.ts.map +1 -1
  550. package/dist/definitions/elements/PickerElement.js +3 -2
  551. package/dist/definitions/elements/PickerElement.js.map +1 -1
  552. package/dist/definitions/elements/index.d.ts +1 -155
  553. package/dist/definitions/elements/index.d.ts.map +1 -1
  554. package/dist/definitions/elements/index.js +112 -121
  555. package/dist/definitions/elements/index.js.map +1 -1
  556. package/dist/definitions/index.d.ts +1 -1
  557. package/dist/definitions/shared/base.d.ts +1 -1
  558. package/dist/definitions/shared/base.d.ts.map +1 -1
  559. package/dist/definitions/shared/base.js.map +1 -1
  560. package/dist/display.d.ts +16 -0
  561. package/dist/display.d.ts.map +1 -0
  562. package/dist/display.js +33 -0
  563. package/dist/display.js.map +1 -0
  564. package/dist/editor.d.ts +6 -0
  565. package/dist/editor.d.ts.map +1 -0
  566. package/dist/editor.js +13 -0
  567. package/dist/editor.js.map +1 -0
  568. package/dist/engine/registry.d.ts +0 -2
  569. package/dist/engine/registry.d.ts.map +1 -1
  570. package/dist/engine/registry.js +1 -5
  571. package/dist/engine/registry.js.map +1 -1
  572. package/dist/engine/useCardLoader.js +1 -1
  573. package/dist/engine/useCardLoader.js.map +1 -1
  574. package/dist/engine/useElementLoader.js +1 -1
  575. package/dist/engine/useElementLoader.js.map +1 -1
  576. package/dist/engine/useFormData.d.ts.map +1 -1
  577. package/dist/engine/useFormData.js +13 -13
  578. package/dist/engine/useFormData.js.map +1 -1
  579. package/dist/file.d.ts +4 -0
  580. package/dist/file.d.ts.map +1 -0
  581. package/dist/file.js +9 -0
  582. package/dist/file.js.map +1 -0
  583. package/dist/index.d.ts +3 -3
  584. package/dist/index.js +71 -75
  585. package/dist/index.js.map +1 -1
  586. package/dist/input.d.ts +11 -0
  587. package/dist/input.d.ts.map +1 -0
  588. package/dist/input.js +23 -0
  589. package/dist/input.js.map +1 -0
  590. package/dist/lib/storybook.d.ts +45 -0
  591. package/dist/lib/storybook.d.ts.map +1 -0
  592. package/dist/option-select.d.ts +10 -0
  593. package/dist/option-select.d.ts.map +1 -0
  594. package/dist/option-select.js +21 -0
  595. package/dist/option-select.js.map +1 -0
  596. package/dist/pages/ShowPage.vue.js +1 -1
  597. package/dist/pages/ShowPage.vue.js.map +1 -1
  598. package/dist/picker.d.ts +12 -0
  599. package/dist/picker.d.ts.map +1 -0
  600. package/dist/picker.js +25 -0
  601. package/dist/picker.js.map +1 -0
  602. package/dist/stores/dependencyListBuilderStore.d.ts +1 -1
  603. package/dist/stores/dependencyListBuilderStore.js +5 -5
  604. package/dist/stores/dependencyListBuilderStore.js.map +1 -1
  605. package/dist/stores/elementListBuilderStore.d.ts +1 -1
  606. package/dist/stores/elementListBuilderStore.js +14 -14
  607. package/dist/stores/elementListBuilderStore.js.map +1 -1
  608. package/dist/stores/formBuilderStore.d.ts +1 -1
  609. package/dist/stores/formBuilderStore.js +5 -5
  610. package/dist/stores/formBuilderStore.js.map +1 -1
  611. package/dist/stores/formDataStore.d.ts +1 -1
  612. package/dist/stores/formDataStore.js +2 -2
  613. package/dist/stores/formDataStore.js.map +1 -1
  614. package/dist/stores/gridBuilderStore.d.ts +1 -1
  615. package/dist/stores/gridBuilderStore.js +11 -11
  616. package/dist/stores/gridBuilderStore.js.map +1 -1
  617. package/dist/stores/objectBuilderStore.d.ts +1 -1
  618. package/dist/stores/objectBuilderStore.js +1 -1
  619. package/dist/stores/objectBuilderStore.js.map +1 -1
  620. package/dist/stores/presetBuilderStore.d.ts +1 -1
  621. package/dist/stores/presetBuilderStore.js +12 -12
  622. package/dist/stores/presetBuilderStore.js.map +1 -1
  623. package/dist/stores/quizBuilderStore.d.ts +1 -1
  624. package/dist/stores/quizBuilderStore.js +1 -1
  625. package/dist/stores/quizBuilderStore.js.map +1 -1
  626. package/dist/stores/reactiveCanvasBuilderStore.d.ts +1 -1
  627. package/dist/stores/reactiveCanvasBuilderStore.js +40 -40
  628. package/dist/stores/reactiveCanvasBuilderStore.js.map +1 -1
  629. package/dist/styles/mod-ui.css +1 -0
  630. package/package.json +85 -20
  631. package/src/action.ts +3 -0
  632. package/src/adapters/fieldTypeMap.ts +3 -8
  633. package/src/adapters/index.ts +1 -1
  634. package/src/boolean.ts +4 -0
  635. package/src/builder.ts +8 -0
  636. package/src/cards.ts +7 -0
  637. package/src/code.ts +5 -0
  638. package/src/components/compositions/cards/CardListCard.stories.ts +2 -0
  639. package/src/components/compositions/cards/DataTableCard.stories.ts +2 -0
  640. package/src/components/compositions/cards/ElementDisplayCard.stories.ts +2 -0
  641. package/src/components/compositions/cards/ElementListCard.stories.ts +2 -0
  642. package/src/components/compositions/cards/GridViewCard.stories.ts +2 -0
  643. package/src/components/compositions/cards/InfoCard.stories.ts +2 -0
  644. package/src/components/compositions/cards/TabListCard.stories.ts +2 -0
  645. package/src/components/compositions/elements/action/ButtonAction.stories.ts +3 -1
  646. package/src/components/compositions/elements/action/ButtonGroupAction.stories.ts +3 -1
  647. package/src/components/compositions/elements/action/LinkAction.stories.ts +3 -1
  648. package/src/components/compositions/elements/boolean/CheckboxBoolean.stories.ts +3 -1
  649. package/src/components/compositions/elements/boolean/IconToggleBoolean.stories.ts +3 -1
  650. package/src/components/compositions/elements/boolean/RadioBoolean.stories.ts +3 -1
  651. package/src/components/compositions/elements/boolean/SwitchBoolean.stories.ts +3 -1
  652. package/src/components/compositions/elements/builder/DependencyListBuilder.stories.ts +1 -1
  653. package/src/components/compositions/elements/builder/ElementListBuilder.stories.ts +1 -1
  654. package/src/components/compositions/elements/builder/ElementListBuilder.test.ts +0 -1
  655. package/src/components/compositions/elements/builder/FormBuilder.stories.ts +2 -0
  656. package/src/components/compositions/elements/builder/FormBuilder.test.ts +0 -1
  657. package/src/components/compositions/elements/builder/GridBuilder.stories.ts +2 -0
  658. package/src/components/compositions/elements/builder/ObjectBuilder.stories.ts +1 -1
  659. package/src/components/compositions/elements/builder/PresetBuilder.stories.ts +1 -1
  660. package/src/components/compositions/elements/builder/QuizBuilder.stories.ts +2 -0
  661. package/src/components/compositions/elements/builder/ReactiveCanvasBuilder.stories.ts +1 -1
  662. package/src/components/compositions/elements/code/BuildStatus.stories.ts +3 -1
  663. package/src/components/compositions/elements/code/ChatMessage.stories.ts +1 -1
  664. package/src/components/compositions/elements/code/FileTree.stories.ts +3 -1
  665. package/src/components/compositions/elements/code/GitCodeEditor.stories.ts +3 -1
  666. package/src/components/compositions/elements/code/PullRequestsList.stories.ts +3 -1
  667. package/src/components/compositions/elements/configuration-block/DialogBlock.stories.ts +1 -1
  668. package/src/components/compositions/elements/configuration-block/ElementsBlock.stories.ts +1 -1
  669. package/src/components/compositions/elements/configuration-block/ModalBlock.stories.ts +2 -0
  670. package/src/components/compositions/elements/configuration-block/RepeatableBlock.stories.ts +45 -2
  671. package/src/components/compositions/elements/configuration-block/RepeatableBlock.test.ts +47 -16
  672. package/src/components/compositions/elements/configuration-block/RepeatableBlock.vue +161 -92
  673. package/src/components/compositions/elements/configuration-block/RepeatableRow.vue +36 -0
  674. package/src/components/compositions/elements/display/BannerDisplay.stories.ts +3 -1
  675. package/src/components/compositions/elements/display/BarcodeDisplay.stories.ts +3 -1
  676. package/src/components/compositions/elements/display/CarouselDisplay.stories.ts +3 -1
  677. package/src/components/compositions/elements/display/ChartDisplay.stories.ts +3 -1
  678. package/src/components/compositions/elements/display/HtmlDisplay.stories.ts +3 -1
  679. package/src/components/compositions/elements/display/IconDisplay.stories.ts +3 -1
  680. package/src/components/compositions/elements/display/IframeDisplay.stories.ts +3 -1
  681. package/src/components/compositions/elements/display/ImageDisplay.stories.ts +3 -1
  682. package/src/components/compositions/elements/display/MarkdownDisplay.stories.ts +3 -1
  683. package/src/components/compositions/elements/display/ProgressBarDisplay.stories.ts +3 -1
  684. package/src/components/compositions/elements/display/QrCodeDisplay.stories.ts +3 -1
  685. package/src/components/compositions/elements/display/ReactiveCanvasDisplay.stories.ts +3 -1
  686. package/src/components/compositions/elements/display/SpriteDisplay.stories.ts +3 -1
  687. package/src/components/compositions/elements/display/TypeDisplay.stories.ts +3 -1
  688. package/src/components/compositions/elements/display/VideoPlayerDisplay.stories.ts +3 -1
  689. package/src/components/compositions/elements/editor/CodeEditor.stories.ts +88 -12
  690. package/src/components/compositions/elements/editor/CodeEditor.test.ts +72 -41
  691. package/src/components/compositions/elements/editor/CodeEditor.vue +306 -38
  692. package/src/components/compositions/elements/editor/HtmlEditor.stories.ts +73 -6
  693. package/src/components/compositions/elements/editor/HtmlEditor.test.ts +59 -50
  694. package/src/components/compositions/elements/editor/HtmlEditor.vue +942 -41
  695. package/src/components/compositions/elements/editor/ImageEditor.stories.ts +3 -1
  696. package/src/components/compositions/elements/editor/MarkdownEditor.stories.ts +3 -1
  697. package/src/components/compositions/elements/editor/RichTextEditor.stories.ts +3 -1
  698. package/src/components/compositions/elements/file/AssetPickerFile.stories.ts +3 -1
  699. package/src/components/compositions/elements/file/DropzoneFile.stories.ts +3 -1
  700. package/src/components/compositions/elements/file/UploadFile.stories.ts +3 -1
  701. package/src/components/compositions/elements/input/BarcodeScannerInput.stories.ts +3 -1
  702. package/src/components/compositions/elements/input/EmailInput.stories.ts +3 -1
  703. package/src/components/compositions/elements/input/NumberInput.stories.ts +3 -1
  704. package/src/components/compositions/elements/input/PasswordInput.stories.ts +3 -1
  705. package/src/components/compositions/elements/input/RangeSliderInput.stories.ts +3 -1
  706. package/src/components/compositions/elements/input/SearchInput.stories.ts +3 -1
  707. package/src/components/compositions/elements/input/TelInput.stories.ts +3 -1
  708. package/src/components/compositions/elements/input/TextInput.stories.ts +3 -1
  709. package/src/components/compositions/elements/input/TextareaInput.stories.ts +3 -1
  710. package/src/components/compositions/elements/input/UrlInput.stories.ts +3 -1
  711. package/src/components/compositions/elements/option-select/AsyncSelectOption.stories.ts +3 -1
  712. package/src/components/compositions/elements/option-select/AutoCompleteOption.stories.ts +3 -1
  713. package/src/components/compositions/elements/option-select/CheckboxOption.stories.ts +3 -1
  714. package/src/components/compositions/elements/option-select/IntegrationConnectorOption.stories.ts +3 -1
  715. package/src/components/compositions/elements/option-select/ListOption.stories.ts +3 -1
  716. package/src/components/compositions/elements/option-select/PillSelectOption.stories.ts +3 -1
  717. package/src/components/compositions/elements/option-select/RadioOption.stories.ts +3 -1
  718. package/src/components/compositions/elements/option-select/SelectMultipleOption.stories.ts +3 -1
  719. package/src/components/compositions/elements/option-select/SelectOption.stories.ts +3 -1
  720. package/src/components/compositions/elements/picker/AsyncSelectPicker.stories.ts +3 -1
  721. package/src/components/compositions/elements/picker/ColorPicker.stories.ts +3 -1
  722. package/src/components/compositions/elements/picker/DataModelPicker.stories.ts +3 -1
  723. package/src/components/compositions/elements/picker/DatePicker.stories.ts +3 -1
  724. package/src/components/compositions/elements/picker/DateTimePicker.stories.ts +3 -1
  725. package/src/components/compositions/elements/picker/IconPicker.stories.ts +3 -1
  726. package/src/components/compositions/elements/{components → picker}/IconPickerInline.stories.ts +3 -1
  727. package/src/components/compositions/elements/{components → picker}/IconPickerInline.test.ts +8 -8
  728. package/src/components/compositions/elements/{components → picker}/IconPickerInline.vue +4 -4
  729. package/src/components/compositions/elements/picker/IntegrationConnectorPicker.stories.ts +3 -1
  730. package/src/components/compositions/elements/picker/MapPicker.stories.ts +3 -1
  731. package/src/components/compositions/elements/picker/TimePicker.stories.ts +3 -1
  732. package/src/components/compositions/elements/picker/TimezonePicker.stories.ts +3 -1
  733. package/src/components/ui/accordion/Accordion.stories.ts +2 -0
  734. package/src/components/ui/alert/Alert.stories.ts +2 -0
  735. package/src/components/ui/avatar/Avatar.stories.ts +2 -0
  736. package/src/components/ui/badge/Badge.stories.ts +2 -0
  737. package/src/components/ui/button/Button.stories.ts +5 -0
  738. package/src/components/ui/calendar/Calendar.stories.ts +2 -0
  739. package/src/components/ui/card/Card.stories.ts +2 -0
  740. package/src/components/ui/checkbox/Checkbox.stories.ts +2 -0
  741. package/src/components/ui/combobox/Combobox.stories.ts +2 -0
  742. package/src/components/ui/command/Command.stories.ts +2 -0
  743. package/src/components/ui/dialog/Dialog.stories.ts +2 -0
  744. package/src/components/ui/dropdown-menu/DropdownMenu.stories.ts +2 -0
  745. package/src/components/ui/field-frame/FieldFrame.stories.ts +1 -1
  746. package/src/components/ui/index.ts +3 -3
  747. package/src/components/ui/input/Input.stories.ts +2 -0
  748. package/src/components/ui/label/Label.stories.ts +2 -0
  749. package/src/components/ui/popover/Popover.stories.ts +2 -0
  750. package/src/components/ui/progress/Progress.stories.ts +2 -0
  751. package/src/components/ui/radio-group/RadioGroup.stories.ts +2 -0
  752. package/src/components/ui/select/Select.stories.ts +2 -0
  753. package/src/components/ui/separator/Separator.stories.ts +2 -0
  754. package/src/components/ui/sheet/Sheet.stories.ts +2 -0
  755. package/src/components/ui/skeleton/Skeleton.stories.ts +2 -0
  756. package/src/components/ui/slider/Slider.stories.ts +2 -0
  757. package/src/components/ui/switch/Switch.stories.ts +2 -0
  758. package/src/components/ui/table/Table.stories.ts +2 -0
  759. package/src/components/ui/tabs/Tabs.stories.ts +2 -0
  760. package/src/components/ui/textarea/Textarea.stories.ts +2 -0
  761. package/src/components/ui/toast/Toaster.stories.ts +2 -0
  762. package/src/components/ui/toast/index.ts +1 -1
  763. package/src/components/ui/toggle/Toggle.stories.ts +2 -0
  764. package/src/components/ui/tooltip/Tooltip.stories.ts +2 -0
  765. package/src/configuration-block.ts +4 -0
  766. package/src/definitions/__tests__/schema.test.ts +0 -1
  767. package/src/definitions/elements/PickerElement.ts +2 -0
  768. package/src/definitions/elements/index.ts +0 -18
  769. package/src/definitions/index.ts +1 -1
  770. package/src/definitions/shared/base.ts +0 -1
  771. package/src/display.ts +15 -0
  772. package/src/editor.ts +5 -0
  773. package/src/engine/registry.ts +1 -7
  774. package/src/engine/useFormData.ts +1 -1
  775. package/src/file.ts +3 -0
  776. package/src/index.ts +3 -3
  777. package/src/input.ts +10 -0
  778. package/src/lib/storybook.ts +67 -0
  779. package/src/option-select.ts +9 -0
  780. package/src/pages/IndexPage.stories.ts +2 -1
  781. package/src/pages/ShowPage.stories.ts +2 -1
  782. package/src/pages/ShowPage.vue +1 -1
  783. package/src/picker.ts +11 -0
  784. package/src/stores/dependencyListBuilderStore.ts +1 -1
  785. package/src/stores/elementListBuilderStore.ts +1 -1
  786. package/src/stores/formBuilderStore.ts +1 -1
  787. package/src/stores/formDataStore.ts +1 -1
  788. package/src/stores/gridBuilderStore.ts +1 -1
  789. package/src/stores/objectBuilderStore.ts +1 -1
  790. package/src/stores/presetBuilderStore.ts +1 -1
  791. package/src/stores/quizBuilderStore.ts +1 -1
  792. package/src/stores/reactiveCanvasBuilderStore.ts +1 -1
  793. package/src/styles/themes/dark.css +1 -1
  794. package/src/styles/themes/default.css +1 -1
  795. package/src/styles/themes/kiosk.css +1 -1
  796. package/dist/components/compositions/elements/components/IconBadge.vue.js +0 -5
  797. package/dist/components/compositions/elements/components/IconBadge.vue.js.map +0 -1
  798. package/dist/components/compositions/elements/components/IconBadge.vue2.js +0 -77
  799. package/dist/components/compositions/elements/components/IconBadge.vue2.js.map +0 -1
  800. package/dist/components/compositions/elements/components/IconPickerInline.vue.js +0 -5
  801. package/dist/components/compositions/elements/components/IconPickerInline.vue.js.map +0 -1
  802. package/dist/components/compositions/elements/components/IconPickerInline.vue2.js.map +0 -1
  803. package/dist/definitions/elements/ComponentsElement.d.ts +0 -187
  804. package/dist/definitions/elements/ComponentsElement.d.ts.map +0 -1
  805. package/dist/definitions/elements/ComponentsElement.js +0 -111
  806. package/dist/definitions/elements/ComponentsElement.js.map +0 -1
  807. package/dist/styles/index.css +0 -1
  808. package/src/components/compositions/elements/components/IconBadge.stories.ts +0 -96
  809. package/src/components/compositions/elements/components/IconBadge.test.ts +0 -70
  810. package/src/components/compositions/elements/components/IconBadge.vue +0 -121
  811. package/src/definitions/elements/ComponentsElement.ts +0 -149
@@ -1 +1 @@
1
- {"version":3,"file":"dependencyListBuilderStore.js","sources":["../../src/stores/dependencyListBuilderStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { computed, ref } from \"vue\"\n\n/**\n * State for a single DependencyListBuilder instance. Multiple builders\n * can coexist on a page; each is keyed by `builderId`.\n *\n * A \"dependency list\" is an ordered set of conditional rules — each\n * with a name, conditions (combined via AND / OR), and actions to run\n * when the conditions match.\n */\n\nexport type DependencyOperator =\n | \"equals\"\n | \"not_equals\"\n | \"greater_than\"\n | \"less_than\"\n | \"contains\"\n | \"is_truthy\"\n | \"is_falsy\"\n\nexport type DependencyActionType =\n | \"show\"\n | \"hide\"\n | \"require\"\n | \"set_value\"\n | \"emit_event\"\n\nexport interface DependencyCondition {\n field: string\n operator: DependencyOperator\n value?: unknown\n}\n\nexport interface DependencyAction {\n type: DependencyActionType\n target?: string\n payload?: unknown\n}\n\nexport interface DependencyRule {\n id: string\n name: string\n enabled: boolean\n conditions: DependencyCondition[]\n conditionsLogic: \"AND\" | \"OR\"\n actions: DependencyAction[]\n}\n\nexport interface DependencyListBuilderSchema {\n rules: DependencyRule[]\n}\n\n/** Identifies which rule is currently selected for editing. */\nexport interface DependencyListBuilderSelection {\n id: string | null\n}\n\nlet idCounter = 0\nfunction nextId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${Date.now()}-${idCounter}`\n}\n\n/** Test helper to make ids deterministic. */\nexport function __resetDependencyListBuilderIdCounter(): void {\n idCounter = 0\n}\n\nfunction emptySchema(): DependencyListBuilderSchema {\n return { rules: [] }\n}\n\nfunction defaultCondition(): DependencyCondition {\n return { field: \"\", operator: \"equals\", value: \"\" }\n}\n\nfunction defaultAction(): DependencyAction {\n return { type: \"show\", target: \"\", payload: undefined }\n}\n\n/** Built-in rule templates exposed to the palette. */\nexport type DependencyRuleTemplate =\n | \"blank\"\n | \"show-field\"\n | \"hide-field\"\n | \"set-value\"\n\nexport function buildRuleFromTemplate(\n template: DependencyRuleTemplate,\n id: string,\n): DependencyRule {\n switch (template) {\n case \"show-field\":\n return {\n id,\n name: \"Show field\",\n enabled: true,\n conditions: [defaultCondition()],\n conditionsLogic: \"AND\",\n actions: [{ type: \"show\", target: \"\" }],\n }\n case \"hide-field\":\n return {\n id,\n name: \"Hide field\",\n enabled: true,\n conditions: [defaultCondition()],\n conditionsLogic: \"AND\",\n actions: [{ type: \"hide\", target: \"\" }],\n }\n case \"set-value\":\n return {\n id,\n name: \"Set value\",\n enabled: true,\n conditions: [defaultCondition()],\n conditionsLogic: \"AND\",\n actions: [{ type: \"set_value\", target: \"\", payload: \"\" }],\n }\n case \"blank\":\n default:\n return {\n id,\n name: \"New rule\",\n enabled: true,\n conditions: [],\n conditionsLogic: \"AND\",\n actions: [],\n }\n }\n}\n\nexport const useDependencyListBuilderStore = defineStore(\n \"gxp-adminkit/dependencyListBuilder\",\n () => {\n const builders = ref<Record<string, DependencyListBuilderSchema>>({})\n const selections = ref<Record<string, DependencyListBuilderSelection>>({})\n\n function ensureBuilder(builderId: string): DependencyListBuilderSchema {\n if (!builders.value[builderId]) {\n builders.value[builderId] = emptySchema()\n selections.value[builderId] = { id: null }\n }\n return builders.value[builderId]!\n }\n\n function loadSchema(\n builderId: string,\n schema: DependencyListBuilderSchema,\n ): void {\n builders.value[builderId] = {\n rules: schema.rules.map((rule) => ({\n ...rule,\n conditions: rule.conditions.map((c) => ({ ...c })),\n actions: rule.actions.map((a) => ({ ...a })),\n })),\n }\n selections.value[builderId] = { id: null }\n }\n\n function resetBuilder(builderId: string): void {\n delete builders.value[builderId]\n delete selections.value[builderId]\n }\n\n /** Append a new rule built from `template` and return its id. */\n function addRule(\n builderId: string,\n template: DependencyRuleTemplate = \"blank\",\n ): string {\n const schema = ensureBuilder(builderId)\n const id = nextId(\"rule\")\n const rule = buildRuleFromTemplate(template, id)\n schema.rules = [...schema.rules, rule]\n return id\n }\n\n function removeRule(builderId: string, ruleId: string): void {\n const schema = ensureBuilder(builderId)\n schema.rules = schema.rules.filter((r) => r.id !== ruleId)\n const sel = selections.value[builderId]\n if (sel?.id === ruleId) {\n selections.value[builderId] = { id: null }\n }\n }\n\n function reorderRule(\n builderId: string,\n fromIndex: number,\n toIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const list = schema.rules\n if (\n fromIndex < 0 ||\n fromIndex >= list.length ||\n toIndex < 0 ||\n toIndex >= list.length ||\n fromIndex === toIndex\n ) {\n return\n }\n const next = [...list]\n const [moved] = next.splice(fromIndex, 1)\n if (moved !== undefined) {\n next.splice(toIndex, 0, moved)\n schema.rules = next\n }\n }\n\n function updateRule(\n builderId: string,\n ruleId: string,\n patch: Partial<Omit<DependencyRule, \"id\">>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n const list = [...schema.rules]\n list[idx] = { ...current, ...patch }\n schema.rules = list\n }\n\n function addCondition(builderId: string, ruleId: string): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n const list = [...schema.rules]\n list[idx] = {\n ...current,\n conditions: [...current.conditions, defaultCondition()],\n }\n schema.rules = list\n }\n\n function updateCondition(\n builderId: string,\n ruleId: string,\n conditionIndex: number,\n patch: Partial<DependencyCondition>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n if (conditionIndex < 0 || conditionIndex >= current.conditions.length) {\n return\n }\n const conditions = [...current.conditions]\n conditions[conditionIndex] = {\n ...conditions[conditionIndex]!,\n ...patch,\n }\n const list = [...schema.rules]\n list[idx] = { ...current, conditions }\n schema.rules = list\n }\n\n function removeCondition(\n builderId: string,\n ruleId: string,\n conditionIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n if (conditionIndex < 0 || conditionIndex >= current.conditions.length) {\n return\n }\n const conditions = current.conditions.filter(\n (_, i) => i !== conditionIndex,\n )\n const list = [...schema.rules]\n list[idx] = { ...current, conditions }\n schema.rules = list\n }\n\n function addAction(builderId: string, ruleId: string): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n const list = [...schema.rules]\n list[idx] = {\n ...current,\n actions: [...current.actions, defaultAction()],\n }\n schema.rules = list\n }\n\n function updateAction(\n builderId: string,\n ruleId: string,\n actionIndex: number,\n patch: Partial<DependencyAction>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n if (actionIndex < 0 || actionIndex >= current.actions.length) {\n return\n }\n const actions = [...current.actions]\n actions[actionIndex] = {\n ...actions[actionIndex]!,\n ...patch,\n }\n const list = [...schema.rules]\n list[idx] = { ...current, actions }\n schema.rules = list\n }\n\n function removeAction(\n builderId: string,\n ruleId: string,\n actionIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n if (actionIndex < 0 || actionIndex >= current.actions.length) {\n return\n }\n const actions = current.actions.filter((_, i) => i !== actionIndex)\n const list = [...schema.rules]\n list[idx] = { ...current, actions }\n schema.rules = list\n }\n\n function select(builderId: string, id: string | null): void {\n selections.value[builderId] = { id }\n }\n\n function getSelection(\n builderId: string,\n ): DependencyListBuilderSelection {\n return selections.value[builderId] ?? { id: null }\n }\n\n function getSchema(builderId: string): DependencyListBuilderSchema {\n return ensureBuilder(builderId)\n }\n\n return {\n builders,\n selections,\n ensureBuilder,\n loadSchema,\n resetBuilder,\n addRule,\n removeRule,\n reorderRule,\n updateRule,\n addCondition,\n updateCondition,\n removeCondition,\n addAction,\n updateAction,\n removeAction,\n select,\n getSelection,\n getSchema,\n }\n },\n)\n\n/** Composable wrapper around `useDependencyListBuilderStore`. */\nexport function useDependencyListBuilder(builderId: string) {\n const store = useDependencyListBuilderStore()\n store.ensureBuilder(builderId)\n return {\n schema: computed<DependencyListBuilderSchema>(() =>\n store.getSchema(builderId),\n ),\n selection: computed<DependencyListBuilderSelection>(() =>\n store.getSelection(builderId),\n ),\n addRule: (template?: DependencyRuleTemplate) =>\n store.addRule(builderId, template),\n removeRule: (id: string) => store.removeRule(builderId, id),\n reorderRule: (from: number, to: number) =>\n store.reorderRule(builderId, from, to),\n updateRule: (id: string, patch: Partial<Omit<DependencyRule, \"id\">>) =>\n store.updateRule(builderId, id, patch),\n addCondition: (id: string) => store.addCondition(builderId, id),\n updateCondition: (\n id: string,\n index: number,\n patch: Partial<DependencyCondition>,\n ) => store.updateCondition(builderId, id, index, patch),\n removeCondition: (id: string, index: number) =>\n store.removeCondition(builderId, id, index),\n addAction: (id: string) => store.addAction(builderId, id),\n updateAction: (\n id: string,\n index: number,\n patch: Partial<DependencyAction>,\n ) => store.updateAction(builderId, id, index, patch),\n removeAction: (id: string, index: number) =>\n store.removeAction(builderId, id, index),\n select: (id: string | null) => store.select(builderId, id),\n loadSchema: (schema: DependencyListBuilderSchema) =>\n store.loadSchema(builderId, schema),\n reset: () => store.resetBuilder(builderId),\n }\n}\n"],"names":["idCounter","nextId","prefix","__resetDependencyListBuilderIdCounter","emptySchema","defaultCondition","defaultAction","buildRuleFromTemplate","template","id","useDependencyListBuilderStore","defineStore","builders","ref","selections","ensureBuilder","builderId","loadSchema","schema","rule","c","a","resetBuilder","addRule","removeRule","ruleId","r","sel","reorderRule","fromIndex","toIndex","list","next","moved","updateRule","patch","idx","current","addCondition","updateCondition","conditionIndex","conditions","removeCondition","_","i","addAction","updateAction","actionIndex","actions","removeAction","select","getSelection","getSchema","useDependencyListBuilder","store","computed","from","to","index"],"mappings":"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"}
1
+ {"version":3,"file":"dependencyListBuilderStore.js","sources":["../../src/stores/dependencyListBuilderStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { computed, ref } from \"vue\"\n\n/**\n * State for a single DependencyListBuilder instance. Multiple builders\n * can coexist on a page; each is keyed by `builderId`.\n *\n * A \"dependency list\" is an ordered set of conditional rules — each\n * with a name, conditions (combined via AND / OR), and actions to run\n * when the conditions match.\n */\n\nexport type DependencyOperator =\n | \"equals\"\n | \"not_equals\"\n | \"greater_than\"\n | \"less_than\"\n | \"contains\"\n | \"is_truthy\"\n | \"is_falsy\"\n\nexport type DependencyActionType =\n | \"show\"\n | \"hide\"\n | \"require\"\n | \"set_value\"\n | \"emit_event\"\n\nexport interface DependencyCondition {\n field: string\n operator: DependencyOperator\n value?: unknown\n}\n\nexport interface DependencyAction {\n type: DependencyActionType\n target?: string\n payload?: unknown\n}\n\nexport interface DependencyRule {\n id: string\n name: string\n enabled: boolean\n conditions: DependencyCondition[]\n conditionsLogic: \"AND\" | \"OR\"\n actions: DependencyAction[]\n}\n\nexport interface DependencyListBuilderSchema {\n rules: DependencyRule[]\n}\n\n/** Identifies which rule is currently selected for editing. */\nexport interface DependencyListBuilderSelection {\n id: string | null\n}\n\nlet idCounter = 0\nfunction nextId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${Date.now()}-${idCounter}`\n}\n\n/** Test helper to make ids deterministic. */\nexport function __resetDependencyListBuilderIdCounter(): void {\n idCounter = 0\n}\n\nfunction emptySchema(): DependencyListBuilderSchema {\n return { rules: [] }\n}\n\nfunction defaultCondition(): DependencyCondition {\n return { field: \"\", operator: \"equals\", value: \"\" }\n}\n\nfunction defaultAction(): DependencyAction {\n return { type: \"show\", target: \"\", payload: undefined }\n}\n\n/** Built-in rule templates exposed to the palette. */\nexport type DependencyRuleTemplate =\n | \"blank\"\n | \"show-field\"\n | \"hide-field\"\n | \"set-value\"\n\nexport function buildRuleFromTemplate(\n template: DependencyRuleTemplate,\n id: string,\n): DependencyRule {\n switch (template) {\n case \"show-field\":\n return {\n id,\n name: \"Show field\",\n enabled: true,\n conditions: [defaultCondition()],\n conditionsLogic: \"AND\",\n actions: [{ type: \"show\", target: \"\" }],\n }\n case \"hide-field\":\n return {\n id,\n name: \"Hide field\",\n enabled: true,\n conditions: [defaultCondition()],\n conditionsLogic: \"AND\",\n actions: [{ type: \"hide\", target: \"\" }],\n }\n case \"set-value\":\n return {\n id,\n name: \"Set value\",\n enabled: true,\n conditions: [defaultCondition()],\n conditionsLogic: \"AND\",\n actions: [{ type: \"set_value\", target: \"\", payload: \"\" }],\n }\n case \"blank\":\n default:\n return {\n id,\n name: \"New rule\",\n enabled: true,\n conditions: [],\n conditionsLogic: \"AND\",\n actions: [],\n }\n }\n}\n\nexport const useDependencyListBuilderStore = defineStore(\n \"gx-modui/dependencyListBuilder\",\n () => {\n const builders = ref<Record<string, DependencyListBuilderSchema>>({})\n const selections = ref<Record<string, DependencyListBuilderSelection>>({})\n\n function ensureBuilder(builderId: string): DependencyListBuilderSchema {\n if (!builders.value[builderId]) {\n builders.value[builderId] = emptySchema()\n selections.value[builderId] = { id: null }\n }\n return builders.value[builderId]!\n }\n\n function loadSchema(\n builderId: string,\n schema: DependencyListBuilderSchema,\n ): void {\n builders.value[builderId] = {\n rules: schema.rules.map((rule) => ({\n ...rule,\n conditions: rule.conditions.map((c) => ({ ...c })),\n actions: rule.actions.map((a) => ({ ...a })),\n })),\n }\n selections.value[builderId] = { id: null }\n }\n\n function resetBuilder(builderId: string): void {\n delete builders.value[builderId]\n delete selections.value[builderId]\n }\n\n /** Append a new rule built from `template` and return its id. */\n function addRule(\n builderId: string,\n template: DependencyRuleTemplate = \"blank\",\n ): string {\n const schema = ensureBuilder(builderId)\n const id = nextId(\"rule\")\n const rule = buildRuleFromTemplate(template, id)\n schema.rules = [...schema.rules, rule]\n return id\n }\n\n function removeRule(builderId: string, ruleId: string): void {\n const schema = ensureBuilder(builderId)\n schema.rules = schema.rules.filter((r) => r.id !== ruleId)\n const sel = selections.value[builderId]\n if (sel?.id === ruleId) {\n selections.value[builderId] = { id: null }\n }\n }\n\n function reorderRule(\n builderId: string,\n fromIndex: number,\n toIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const list = schema.rules\n if (\n fromIndex < 0 ||\n fromIndex >= list.length ||\n toIndex < 0 ||\n toIndex >= list.length ||\n fromIndex === toIndex\n ) {\n return\n }\n const next = [...list]\n const [moved] = next.splice(fromIndex, 1)\n if (moved !== undefined) {\n next.splice(toIndex, 0, moved)\n schema.rules = next\n }\n }\n\n function updateRule(\n builderId: string,\n ruleId: string,\n patch: Partial<Omit<DependencyRule, \"id\">>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n const list = [...schema.rules]\n list[idx] = { ...current, ...patch }\n schema.rules = list\n }\n\n function addCondition(builderId: string, ruleId: string): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n const list = [...schema.rules]\n list[idx] = {\n ...current,\n conditions: [...current.conditions, defaultCondition()],\n }\n schema.rules = list\n }\n\n function updateCondition(\n builderId: string,\n ruleId: string,\n conditionIndex: number,\n patch: Partial<DependencyCondition>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n if (conditionIndex < 0 || conditionIndex >= current.conditions.length) {\n return\n }\n const conditions = [...current.conditions]\n conditions[conditionIndex] = {\n ...conditions[conditionIndex]!,\n ...patch,\n }\n const list = [...schema.rules]\n list[idx] = { ...current, conditions }\n schema.rules = list\n }\n\n function removeCondition(\n builderId: string,\n ruleId: string,\n conditionIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n if (conditionIndex < 0 || conditionIndex >= current.conditions.length) {\n return\n }\n const conditions = current.conditions.filter(\n (_, i) => i !== conditionIndex,\n )\n const list = [...schema.rules]\n list[idx] = { ...current, conditions }\n schema.rules = list\n }\n\n function addAction(builderId: string, ruleId: string): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n const list = [...schema.rules]\n list[idx] = {\n ...current,\n actions: [...current.actions, defaultAction()],\n }\n schema.rules = list\n }\n\n function updateAction(\n builderId: string,\n ruleId: string,\n actionIndex: number,\n patch: Partial<DependencyAction>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n if (actionIndex < 0 || actionIndex >= current.actions.length) {\n return\n }\n const actions = [...current.actions]\n actions[actionIndex] = {\n ...actions[actionIndex]!,\n ...patch,\n }\n const list = [...schema.rules]\n list[idx] = { ...current, actions }\n schema.rules = list\n }\n\n function removeAction(\n builderId: string,\n ruleId: string,\n actionIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.rules.findIndex((r) => r.id === ruleId)\n if (idx < 0) {\n return\n }\n const current = schema.rules[idx]!\n if (actionIndex < 0 || actionIndex >= current.actions.length) {\n return\n }\n const actions = current.actions.filter((_, i) => i !== actionIndex)\n const list = [...schema.rules]\n list[idx] = { ...current, actions }\n schema.rules = list\n }\n\n function select(builderId: string, id: string | null): void {\n selections.value[builderId] = { id }\n }\n\n function getSelection(\n builderId: string,\n ): DependencyListBuilderSelection {\n return selections.value[builderId] ?? { id: null }\n }\n\n function getSchema(builderId: string): DependencyListBuilderSchema {\n return ensureBuilder(builderId)\n }\n\n return {\n builders,\n selections,\n ensureBuilder,\n loadSchema,\n resetBuilder,\n addRule,\n removeRule,\n reorderRule,\n updateRule,\n addCondition,\n updateCondition,\n removeCondition,\n addAction,\n updateAction,\n removeAction,\n select,\n getSelection,\n getSchema,\n }\n },\n)\n\n/** Composable wrapper around `useDependencyListBuilderStore`. */\nexport function useDependencyListBuilder(builderId: string) {\n const store = useDependencyListBuilderStore()\n store.ensureBuilder(builderId)\n return {\n schema: computed<DependencyListBuilderSchema>(() =>\n store.getSchema(builderId),\n ),\n selection: computed<DependencyListBuilderSelection>(() =>\n store.getSelection(builderId),\n ),\n addRule: (template?: DependencyRuleTemplate) =>\n store.addRule(builderId, template),\n removeRule: (id: string) => store.removeRule(builderId, id),\n reorderRule: (from: number, to: number) =>\n store.reorderRule(builderId, from, to),\n updateRule: (id: string, patch: Partial<Omit<DependencyRule, \"id\">>) =>\n store.updateRule(builderId, id, patch),\n addCondition: (id: string) => store.addCondition(builderId, id),\n updateCondition: (\n id: string,\n index: number,\n patch: Partial<DependencyCondition>,\n ) => store.updateCondition(builderId, id, index, patch),\n removeCondition: (id: string, index: number) =>\n store.removeCondition(builderId, id, index),\n addAction: (id: string) => store.addAction(builderId, id),\n updateAction: (\n id: string,\n index: number,\n patch: Partial<DependencyAction>,\n ) => store.updateAction(builderId, id, index, patch),\n removeAction: (id: string, index: number) =>\n store.removeAction(builderId, id, index),\n select: (id: string | null) => store.select(builderId, id),\n loadSchema: (schema: DependencyListBuilderSchema) =>\n store.loadSchema(builderId, schema),\n reset: () => store.resetBuilder(builderId),\n }\n}\n"],"names":["idCounter","nextId","prefix","__resetDependencyListBuilderIdCounter","emptySchema","defaultCondition","defaultAction","buildRuleFromTemplate","template","id","useDependencyListBuilderStore","defineStore","builders","ref","selections","ensureBuilder","builderId","loadSchema","schema","rule","c","a","resetBuilder","addRule","removeRule","ruleId","r","sel","reorderRule","fromIndex","toIndex","list","next","moved","updateRule","patch","idx","current","addCondition","updateCondition","conditionIndex","conditions","removeCondition","_","i","addAction","updateAction","actionIndex","actions","removeAction","select","getSelection","getSchema","useDependencyListBuilder","store","computed","from","to","index"],"mappings":"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"}
@@ -14,7 +14,7 @@ export interface ElementListBuilderSelection {
14
14
  }
15
15
  /** Test helper to make ids deterministic. */
16
16
  export declare function __resetElementListBuilderIdCounter(): void;
17
- export declare const useElementListBuilderStore: import('pinia').StoreDefinition<"gxp-adminkit/elementListBuilder", Pick<{
17
+ export declare const useElementListBuilderStore: import('pinia').StoreDefinition<"gx-modui/elementListBuilder", Pick<{
18
18
  builders: import('vue').Ref<Record<string, ElementListBuilderSchema>, Record<string, ElementListBuilderSchema>>;
19
19
  selections: import('vue').Ref<Record<string, ElementListBuilderSelection>, Record<string, ElementListBuilderSelection>>;
20
20
  ensureBuilder: (builderId: string) => ElementListBuilderSchema;
@@ -5,20 +5,20 @@ let a = 0;
5
5
  function D(t) {
6
6
  return a += 1, `${t}-${Date.now()}-${a}`;
7
7
  }
8
- function j() {
8
+ function k() {
9
9
  a = 0;
10
10
  }
11
11
  function _() {
12
12
  return { elements: [] };
13
13
  }
14
- const k = x(
15
- "gxp-adminkit/elementListBuilder",
14
+ const y = x(
15
+ "gx-modui/elementListBuilder",
16
16
  () => {
17
17
  const t = v({}), n = v({});
18
18
  function l(e) {
19
19
  return t.value[e] || (t.value[e] = _(), n.value[e] = { id: null }), t.value[e];
20
20
  }
21
- function u(e, s) {
21
+ function r(e, s) {
22
22
  t.value[e] = {
23
23
  elements: s.elements.map(
24
24
  (o) => ({ ...o })
@@ -29,12 +29,12 @@ const k = x(
29
29
  delete t.value[e], delete n.value[e];
30
30
  }
31
31
  function p(e, s) {
32
- const o = l(e), c = s.includes(".") ? s : `${s}.${C[s] ?? "text"}`, m = D(`el-${c.replace(".", "-")}`), r = {
32
+ const o = l(e), c = s.includes(".") ? s : `${s}.${C[s] ?? "text"}`, m = D(`el-${c.replace(".", "-")}`), u = {
33
33
  id: m,
34
34
  type: c,
35
35
  label: `New ${c}`
36
36
  };
37
- return o.elements = [...o.elements, r], m;
37
+ return o.elements = [...o.elements, u], m;
38
38
  }
39
39
  function S(e, s) {
40
40
  const o = l(e);
@@ -48,8 +48,8 @@ const k = x(
48
48
  const c = l(e), m = c.elements;
49
49
  if (s < 0 || s >= m.length || o < 0 || o >= m.length || s === o)
50
50
  return;
51
- const r = [...m], [i] = r.splice(s, 1);
52
- i !== void 0 && (r.splice(o, 0, i), c.elements = r);
51
+ const u = [...m], [i] = u.splice(s, 1);
52
+ i !== void 0 && (u.splice(o, 0, i), c.elements = u);
53
53
  }
54
54
  function B(e, s, o) {
55
55
  const c = l(e), m = c.elements.findIndex(
@@ -76,7 +76,7 @@ const k = x(
76
76
  builders: t,
77
77
  selections: n,
78
78
  ensureBuilder: l,
79
- loadSchema: u,
79
+ loadSchema: r,
80
80
  resetBuilder: h,
81
81
  addElement: p,
82
82
  removeElement: S,
@@ -89,7 +89,7 @@ const k = x(
89
89
  }
90
90
  );
91
91
  function q(t) {
92
- const n = k();
92
+ const n = y();
93
93
  return n.ensureBuilder(t), {
94
94
  schema: E(
95
95
  () => n.getSchema(t)
@@ -99,16 +99,16 @@ function q(t) {
99
99
  ),
100
100
  addElement: (l) => n.addElement(t, l),
101
101
  removeElement: (l) => n.removeElement(t, l),
102
- reorderElement: (l, u) => n.reorderElement(t, l, u),
103
- updateElement: (l, u) => n.updateElement(t, l, u),
102
+ reorderElement: (l, r) => n.reorderElement(t, l, r),
103
+ updateElement: (l, r) => n.updateElement(t, l, r),
104
104
  select: (l) => n.select(t, l),
105
105
  loadSchema: (l) => n.loadSchema(t, l),
106
106
  reset: () => n.resetBuilder(t)
107
107
  };
108
108
  }
109
109
  export {
110
- j as __resetElementListBuilderIdCounter,
110
+ k as __resetElementListBuilderIdCounter,
111
111
  q as useElementListBuilder,
112
- k as useElementListBuilderStore
112
+ y as useElementListBuilderStore
113
113
  };
114
114
  //# sourceMappingURL=elementListBuilderStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"elementListBuilderStore.js","sources":["../../src/stores/elementListBuilderStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { computed, ref } from \"vue\"\nimport type { CardElement } from \"@/definitions/elements\"\nimport type { ElementCategory, ElementType } from \"@/definitions/shared/base\"\nimport { elementDefaultStyle } from \"@/engine/registry\"\n\n/**\n * State for a single ElementListBuilder instance. Like FormBuilder but\n * without cards / tabs — the schema is just a flat list of\n * CardElements. Useful for forms-as-arrays and list-of-fields configs.\n */\nexport interface ElementListBuilderSchema {\n elements: CardElement[]\n}\n\n/** Identifies which element is currently selected in the inspector. */\nexport interface ElementListBuilderSelection {\n id: string | null\n}\n\nlet idCounter = 0\nfunction nextId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${Date.now()}-${idCounter}`\n}\n\n/** Test helper to make ids deterministic. */\nexport function __resetElementListBuilderIdCounter(): void {\n idCounter = 0\n}\n\nfunction emptySchema(): ElementListBuilderSchema {\n return { elements: [] }\n}\n\nexport const useElementListBuilderStore = defineStore(\n \"gxp-adminkit/elementListBuilder\",\n () => {\n const builders = ref<Record<string, ElementListBuilderSchema>>({})\n const selections = ref<Record<string, ElementListBuilderSelection>>({})\n\n function ensureBuilder(builderId: string): ElementListBuilderSchema {\n if (!builders.value[builderId]) {\n builders.value[builderId] = emptySchema()\n selections.value[builderId] = { id: null }\n }\n return builders.value[builderId]!\n }\n\n function loadSchema(\n builderId: string,\n schema: ElementListBuilderSchema,\n ): void {\n builders.value[builderId] = {\n elements: schema.elements.map(\n (el) =>\n ({ ...(el as unknown as Record<string, unknown>) }) as unknown as CardElement,\n ),\n }\n selections.value[builderId] = { id: null }\n }\n\n function resetBuilder(builderId: string): void {\n delete builders.value[builderId]\n delete selections.value[builderId]\n }\n\n /**\n * Append a fresh element of `type` (dot-notation or category) to\n * the flat list. Returns the new element's id.\n */\n function addElement(\n builderId: string,\n type: ElementType | ElementCategory,\n ): string {\n const schema = ensureBuilder(builderId)\n const dotType: ElementType = type.includes(\".\")\n ? (type as ElementType)\n : (`${type}.${elementDefaultStyle[type as ElementCategory] ?? \"text\"}` as ElementType)\n const id = nextId(`el-${dotType.replace(\".\", \"-\")}`)\n const element = {\n id,\n type: dotType,\n label: `New ${dotType}`,\n } as unknown as CardElement\n schema.elements = [...schema.elements, element]\n return id\n }\n\n /** Remove an element by id. */\n function removeElement(builderId: string, elementId: string): void {\n const schema = ensureBuilder(builderId)\n schema.elements = schema.elements.filter(\n (el) => (el as unknown as { id: string }).id !== elementId,\n )\n const sel = selections.value[builderId]\n if (sel?.id === elementId) {\n selections.value[builderId] = { id: null }\n }\n }\n\n /** Move an element by index within the list. */\n function reorderElement(\n builderId: string,\n fromIndex: number,\n toIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const list = schema.elements\n if (\n fromIndex < 0 ||\n fromIndex >= list.length ||\n toIndex < 0 ||\n toIndex >= list.length ||\n fromIndex === toIndex\n ) {\n return\n }\n const next = [...list]\n const [moved] = next.splice(fromIndex, 1)\n if (moved !== undefined) {\n next.splice(toIndex, 0, moved)\n schema.elements = next\n }\n }\n\n /** Patch an element's properties (used by the Inspector). */\n function updateElement(\n builderId: string,\n elementId: string,\n patch: Partial<CardElement>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.elements.findIndex(\n (el) => (el as unknown as { id: string }).id === elementId,\n )\n if (idx < 0) {\n return\n }\n const current = schema.elements[idx]!\n const next = {\n ...(current as unknown as Record<string, unknown>),\n ...(patch as unknown as Record<string, unknown>),\n } as unknown as CardElement\n const list = [...schema.elements]\n list[idx] = next\n schema.elements = list\n }\n\n function select(builderId: string, id: string | null): void {\n selections.value[builderId] = { id }\n }\n\n function getSelection(builderId: string): ElementListBuilderSelection {\n return selections.value[builderId] ?? { id: null }\n }\n\n function getSchema(builderId: string): ElementListBuilderSchema {\n return ensureBuilder(builderId)\n }\n\n return {\n builders,\n selections,\n ensureBuilder,\n loadSchema,\n resetBuilder,\n addElement,\n removeElement,\n reorderElement,\n updateElement,\n select,\n getSelection,\n getSchema,\n }\n },\n)\n\n/**\n * Composable wrapper around `useElementListBuilderStore` for a single\n * builder instance.\n */\nexport function useElementListBuilder(builderId: string) {\n const store = useElementListBuilderStore()\n store.ensureBuilder(builderId)\n return {\n schema: computed<ElementListBuilderSchema>(() =>\n store.getSchema(builderId),\n ),\n selection: computed<ElementListBuilderSelection>(() =>\n store.getSelection(builderId),\n ),\n addElement: (type: ElementType | ElementCategory) =>\n store.addElement(builderId, type),\n removeElement: (id: string) => store.removeElement(builderId, id),\n reorderElement: (from: number, to: number) =>\n store.reorderElement(builderId, from, to),\n updateElement: (id: string, patch: Partial<CardElement>) =>\n store.updateElement(builderId, id, patch),\n select: (id: string | null) => store.select(builderId, id),\n loadSchema: (schema: ElementListBuilderSchema) =>\n store.loadSchema(builderId, schema),\n reset: () => store.resetBuilder(builderId),\n }\n}\n"],"names":["idCounter","nextId","prefix","__resetElementListBuilderIdCounter","emptySchema","useElementListBuilderStore","defineStore","builders","ref","selections","ensureBuilder","builderId","loadSchema","schema","el","resetBuilder","addElement","type","dotType","elementDefaultStyle","id","element","removeElement","elementId","sel","reorderElement","fromIndex","toIndex","list","next","moved","updateElement","patch","idx","select","getSelection","getSchema","useElementListBuilder","store","computed","from","to"],"mappings":"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"}
1
+ {"version":3,"file":"elementListBuilderStore.js","sources":["../../src/stores/elementListBuilderStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { computed, ref } from \"vue\"\nimport type { CardElement } from \"@/definitions/elements\"\nimport type { ElementCategory, ElementType } from \"@/definitions/shared/base\"\nimport { elementDefaultStyle } from \"@/engine/registry\"\n\n/**\n * State for a single ElementListBuilder instance. Like FormBuilder but\n * without cards / tabs — the schema is just a flat list of\n * CardElements. Useful for forms-as-arrays and list-of-fields configs.\n */\nexport interface ElementListBuilderSchema {\n elements: CardElement[]\n}\n\n/** Identifies which element is currently selected in the inspector. */\nexport interface ElementListBuilderSelection {\n id: string | null\n}\n\nlet idCounter = 0\nfunction nextId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${Date.now()}-${idCounter}`\n}\n\n/** Test helper to make ids deterministic. */\nexport function __resetElementListBuilderIdCounter(): void {\n idCounter = 0\n}\n\nfunction emptySchema(): ElementListBuilderSchema {\n return { elements: [] }\n}\n\nexport const useElementListBuilderStore = defineStore(\n \"gx-modui/elementListBuilder\",\n () => {\n const builders = ref<Record<string, ElementListBuilderSchema>>({})\n const selections = ref<Record<string, ElementListBuilderSelection>>({})\n\n function ensureBuilder(builderId: string): ElementListBuilderSchema {\n if (!builders.value[builderId]) {\n builders.value[builderId] = emptySchema()\n selections.value[builderId] = { id: null }\n }\n return builders.value[builderId]!\n }\n\n function loadSchema(\n builderId: string,\n schema: ElementListBuilderSchema,\n ): void {\n builders.value[builderId] = {\n elements: schema.elements.map(\n (el) =>\n ({ ...(el as unknown as Record<string, unknown>) }) as unknown as CardElement,\n ),\n }\n selections.value[builderId] = { id: null }\n }\n\n function resetBuilder(builderId: string): void {\n delete builders.value[builderId]\n delete selections.value[builderId]\n }\n\n /**\n * Append a fresh element of `type` (dot-notation or category) to\n * the flat list. Returns the new element's id.\n */\n function addElement(\n builderId: string,\n type: ElementType | ElementCategory,\n ): string {\n const schema = ensureBuilder(builderId)\n const dotType: ElementType = type.includes(\".\")\n ? (type as ElementType)\n : (`${type}.${elementDefaultStyle[type as ElementCategory] ?? \"text\"}` as ElementType)\n const id = nextId(`el-${dotType.replace(\".\", \"-\")}`)\n const element = {\n id,\n type: dotType,\n label: `New ${dotType}`,\n } as unknown as CardElement\n schema.elements = [...schema.elements, element]\n return id\n }\n\n /** Remove an element by id. */\n function removeElement(builderId: string, elementId: string): void {\n const schema = ensureBuilder(builderId)\n schema.elements = schema.elements.filter(\n (el) => (el as unknown as { id: string }).id !== elementId,\n )\n const sel = selections.value[builderId]\n if (sel?.id === elementId) {\n selections.value[builderId] = { id: null }\n }\n }\n\n /** Move an element by index within the list. */\n function reorderElement(\n builderId: string,\n fromIndex: number,\n toIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const list = schema.elements\n if (\n fromIndex < 0 ||\n fromIndex >= list.length ||\n toIndex < 0 ||\n toIndex >= list.length ||\n fromIndex === toIndex\n ) {\n return\n }\n const next = [...list]\n const [moved] = next.splice(fromIndex, 1)\n if (moved !== undefined) {\n next.splice(toIndex, 0, moved)\n schema.elements = next\n }\n }\n\n /** Patch an element's properties (used by the Inspector). */\n function updateElement(\n builderId: string,\n elementId: string,\n patch: Partial<CardElement>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.elements.findIndex(\n (el) => (el as unknown as { id: string }).id === elementId,\n )\n if (idx < 0) {\n return\n }\n const current = schema.elements[idx]!\n const next = {\n ...(current as unknown as Record<string, unknown>),\n ...(patch as unknown as Record<string, unknown>),\n } as unknown as CardElement\n const list = [...schema.elements]\n list[idx] = next\n schema.elements = list\n }\n\n function select(builderId: string, id: string | null): void {\n selections.value[builderId] = { id }\n }\n\n function getSelection(builderId: string): ElementListBuilderSelection {\n return selections.value[builderId] ?? { id: null }\n }\n\n function getSchema(builderId: string): ElementListBuilderSchema {\n return ensureBuilder(builderId)\n }\n\n return {\n builders,\n selections,\n ensureBuilder,\n loadSchema,\n resetBuilder,\n addElement,\n removeElement,\n reorderElement,\n updateElement,\n select,\n getSelection,\n getSchema,\n }\n },\n)\n\n/**\n * Composable wrapper around `useElementListBuilderStore` for a single\n * builder instance.\n */\nexport function useElementListBuilder(builderId: string) {\n const store = useElementListBuilderStore()\n store.ensureBuilder(builderId)\n return {\n schema: computed<ElementListBuilderSchema>(() =>\n store.getSchema(builderId),\n ),\n selection: computed<ElementListBuilderSelection>(() =>\n store.getSelection(builderId),\n ),\n addElement: (type: ElementType | ElementCategory) =>\n store.addElement(builderId, type),\n removeElement: (id: string) => store.removeElement(builderId, id),\n reorderElement: (from: number, to: number) =>\n store.reorderElement(builderId, from, to),\n updateElement: (id: string, patch: Partial<CardElement>) =>\n store.updateElement(builderId, id, patch),\n select: (id: string | null) => store.select(builderId, id),\n loadSchema: (schema: ElementListBuilderSchema) =>\n store.loadSchema(builderId, schema),\n reset: () => store.resetBuilder(builderId),\n }\n}\n"],"names":["idCounter","nextId","prefix","__resetElementListBuilderIdCounter","emptySchema","useElementListBuilderStore","defineStore","builders","ref","selections","ensureBuilder","builderId","loadSchema","schema","el","resetBuilder","addElement","type","dotType","elementDefaultStyle","id","element","removeElement","elementId","sel","reorderElement","fromIndex","toIndex","list","next","moved","updateElement","patch","idx","select","getSelection","getSchema","useElementListBuilder","store","computed","from","to"],"mappings":"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"}
@@ -22,7 +22,7 @@ export interface BuilderSelection {
22
22
  }
23
23
  /** Test helper to make ids deterministic. */
24
24
  export declare function __resetFormBuilderIdCounter(): void;
25
- export declare const useFormBuilderStore: import('pinia').StoreDefinition<"gxp-adminkit/formBuilder", Pick<{
25
+ export declare const useFormBuilderStore: import('pinia').StoreDefinition<"gx-modui/formBuilder", Pick<{
26
26
  builders: import('vue').Ref<Record<string, BuilderSchema>, Record<string, BuilderSchema>>;
27
27
  selections: import('vue').Ref<Record<string, BuilderSelection>, Record<string, BuilderSelection>>;
28
28
  ensureBuilder: (builderId: string) => BuilderSchema;
@@ -22,7 +22,7 @@ function R(c) {
22
22
  elements: {}
23
23
  };
24
24
  }
25
- const T = N("gxp-adminkit/formBuilder", () => {
25
+ const T = N("gx-modui/formBuilder", () => {
26
26
  const c = $({}), a = $({});
27
27
  function f(t, e) {
28
28
  const n = t.cards[e];
@@ -90,7 +90,7 @@ const T = N("gxp-adminkit/formBuilder", () => {
90
90
  );
91
91
  return i;
92
92
  }
93
- function k(t, e) {
93
+ function w(t, e) {
94
94
  const n = u(t);
95
95
  if (!n.elements[e])
96
96
  return;
@@ -138,7 +138,7 @@ const T = N("gxp-adminkit/formBuilder", () => {
138
138
  const i = a.value[t];
139
139
  i && i.kind === "card" && i.id === e && (a.value[t] = { kind: null, id: null });
140
140
  }
141
- function w(t, e, n, r) {
141
+ function k(t, e, n, r) {
142
142
  const o = u(t), i = f(o, e);
143
143
  if (!i) return;
144
144
  const s = i.elementList ?? [];
@@ -188,9 +188,9 @@ const T = N("gxp-adminkit/formBuilder", () => {
188
188
  resetBuilder: v,
189
189
  addElement: y,
190
190
  addCard: S,
191
- removeElement: k,
191
+ removeElement: w,
192
192
  removeCard: L,
193
- reorderElement: w,
193
+ reorderElement: k,
194
194
  moveElement: j,
195
195
  updateElement: x,
196
196
  updateCard: F,
@@ -1 +1 @@
1
- {"version":3,"file":"formBuilderStore.js","sources":["../../src/stores/formBuilderStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { computed, ref } from \"vue\"\nimport type { CardElement } from \"@/definitions/elements\"\nimport type { DisplayCard } from \"@/definitions/cards\"\nimport type { ElementCategory, ElementType } from \"@/definitions/shared/base\"\nimport { elementDefaultStyle } from \"@/engine/registry\"\n\n/**\n * State for a single FormBuilder instance. Multiple FormBuilders can\n * coexist on a page; each is keyed by `builderId`.\n *\n * The shape mirrors the v2 page config (a flat elements map, a flat\n * cards map, a root card id) so the builder's output can be passed\n * straight to ShowPage / CardRenderer.\n */\nexport interface BuilderSchema {\n /** Root card id — the top of the tree. */\n rootCardId: string\n cards: Record<string, DisplayCard>\n elements: Record<string, CardElement>\n}\n\n/** Identifies what's currently selected in the inspector. */\nexport interface BuilderSelection {\n kind: \"element\" | \"card\" | null\n id: string | null\n}\n\nlet idCounter = 0\nfunction nextId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${Date.now()}-${idCounter}`\n}\n\n/** Test helper to make ids deterministic. */\nexport function __resetFormBuilderIdCounter(): void {\n idCounter = 0\n}\n\nfunction emptyRoot(rootId: string): BuilderSchema {\n return {\n rootCardId: rootId,\n cards: {\n [rootId]: {\n id: rootId,\n cardType: \"element-list\",\n title: \"\",\n elementList: [],\n } as unknown as DisplayCard,\n },\n elements: {},\n }\n}\n\nexport const useFormBuilderStore = defineStore(\"gxp-adminkit/formBuilder\", () => {\n /**\n * Per-builder state, keyed by `builderId`. Lets multiple builders\n * coexist on the same page without colliding.\n */\n const builders = ref<Record<string, BuilderSchema>>({})\n const selections = ref<Record<string, BuilderSelection>>({})\n\n /**\n * Return the raw mutable bag for a container ID. A container is either a\n * DisplayCard (in schema.cards) or a card-type element (schema.elements\n * with a type starting with \"card.\"). Both carry an `elementList` array.\n */\n function getContainerBag(\n schema: BuilderSchema,\n containerId: string,\n ): Record<string, unknown> | null {\n const card = schema.cards[containerId]\n if (card) return card as unknown as Record<string, unknown>\n const el = schema.elements[containerId]\n if (el) {\n const bag = el as unknown as Record<string, unknown>\n if (typeof bag.type === \"string\" && (bag.type as string).startsWith(\"card.\")) {\n return bag\n }\n }\n return null\n }\n\n function ensureBuilder(builderId: string): BuilderSchema {\n if (!builders.value[builderId]) {\n const rootId = nextId(\"root\")\n builders.value[builderId] = emptyRoot(rootId)\n selections.value[builderId] = { kind: null, id: null }\n }\n return builders.value[builderId]!\n }\n\n function loadSchema(builderId: string, schema: BuilderSchema): void {\n builders.value[builderId] = {\n rootCardId: schema.rootCardId,\n cards: { ...schema.cards },\n elements: { ...schema.elements },\n }\n selections.value[builderId] = { kind: null, id: null }\n }\n\n function resetBuilder(builderId: string): void {\n delete builders.value[builderId]\n delete selections.value[builderId]\n }\n\n /**\n * Append a fresh element of `type` to the given parent card's\n * elementList. `type` is the dot-notation discriminator\n * (e.g. `\"input.text\"`). When only a category is supplied\n * (`\"input\"`), the parent's default style is appended.\n *\n * Returns the new element's id so callers can immediately select it\n * for editing.\n */\n function addElement(\n builderId: string,\n containerId: string,\n type: ElementType | ElementCategory,\n ): string {\n const schema = ensureBuilder(builderId)\n const bag = getContainerBag(schema, containerId)\n if (!bag) {\n throw new Error(\n `addElement: container ${containerId} not found in builder ${builderId}`,\n )\n }\n const dotType: ElementType = type.includes(\".\")\n ? (type as ElementType)\n : (`${type}.${elementDefaultStyle[type as ElementCategory] ?? \"text\"}` as ElementType)\n const id = nextId(`el-${dotType.replace(\".\", \"-\")}`)\n const element = {\n id,\n type: dotType,\n label: `New ${dotType}`,\n } as unknown as CardElement\n schema.elements[id] = element\n const list = (bag.elementList as string[] | undefined) ?? []\n bag.elementList = [...list, id]\n return id\n }\n\n /**\n * Append a fresh card of `cardType` to the given parent's cardList /\n * tabList. Returns the new card's id.\n */\n function addCard(\n builderId: string,\n parentCardId: string,\n cardType: DisplayCard[\"cardType\"],\n ): string {\n const schema = ensureBuilder(builderId)\n const parent = schema.cards[parentCardId]\n if (!parent) {\n throw new Error(`addCard: parent card ${parentCardId} not found`)\n }\n const id = nextId(`card-${cardType}`)\n const card = {\n id,\n cardType,\n title: `New ${cardType}`,\n } as unknown as DisplayCard\n if (cardType === \"element-list\") {\n ;(card as unknown as Record<string, unknown>).elementList = []\n } else if (cardType === \"card-list\") {\n ;(card as unknown as Record<string, unknown>).cardList = []\n } else if (cardType === \"tab-list\") {\n ;(card as unknown as Record<string, unknown>).tabList = []\n }\n schema.cards[id] = card\n\n const parentBag = parent as unknown as Record<string, unknown>\n if (parent.cardType === \"card-list\") {\n const list = (parentBag.cardList as string[]) ?? []\n parentBag.cardList = [...list, id]\n } else if (parent.cardType === \"tab-list\") {\n const list = (parentBag.tabList as string[]) ?? []\n parentBag.tabList = [...list, id]\n } else {\n throw new Error(\n `addCard: parent ${parentCardId} (cardType=${parent.cardType}) does not accept nested cards`,\n )\n }\n return id\n }\n\n /** Remove an element by id from the schema and from its parent's list. */\n function removeElement(builderId: string, elementId: string): void {\n const schema = ensureBuilder(builderId)\n if (!schema.elements[elementId]) {\n return\n }\n // Cascade-delete children when removing a card-type element\n const elBag = schema.elements[elementId] as unknown as Record<string, unknown>\n if (typeof elBag.type === \"string\" && (elBag.type as string).startsWith(\"card.\")) {\n for (const childId of (elBag.elementList as string[] | undefined) ?? []) {\n delete schema.elements[childId]\n }\n }\n delete schema.elements[elementId]\n // Remove from card containers\n for (const card of Object.values(schema.cards)) {\n const bag = card as unknown as Record<string, unknown>\n const list = bag.elementList as string[] | undefined\n if (list?.includes(elementId)) {\n bag.elementList = list.filter((id) => id !== elementId)\n }\n }\n // Remove from element containers (card.* elements)\n for (const el of Object.values(schema.elements)) {\n const bag = el as unknown as Record<string, unknown>\n if (typeof bag.type === \"string\" && (bag.type as string).startsWith(\"card.\")) {\n const list = bag.elementList as string[] | undefined\n if (list?.includes(elementId)) {\n bag.elementList = list.filter((id) => id !== elementId)\n }\n }\n }\n const sel = selections.value[builderId]\n if (sel && sel.kind === \"element\" && sel.id === elementId) {\n selections.value[builderId] = { kind: null, id: null }\n }\n }\n\n /** Remove a card (and its descendants) recursively. */\n function removeCard(builderId: string, cardId: string): void {\n const schema = ensureBuilder(builderId)\n if (cardId === schema.rootCardId) {\n return // never remove the root\n }\n const card = schema.cards[cardId]\n if (!card) {\n return\n }\n const bag = card as unknown as Record<string, unknown>\n for (const elId of (bag.elementList as string[]) ?? []) {\n delete schema.elements[elId]\n }\n for (const childId of (bag.cardList as string[]) ?? []) {\n removeCard(builderId, childId)\n }\n for (const childId of (bag.tabList as string[]) ?? []) {\n removeCard(builderId, childId)\n }\n delete schema.cards[cardId]\n for (const other of Object.values(schema.cards)) {\n const obag = other as unknown as Record<string, unknown>\n for (const key of [\"cardList\", \"tabList\"] as const) {\n const list = obag[key] as string[] | undefined\n if (list?.includes(cardId)) {\n obag[key] = list.filter((id) => id !== cardId)\n }\n }\n }\n const sel = selections.value[builderId]\n if (sel && sel.kind === \"card\" && sel.id === cardId) {\n selections.value[builderId] = { kind: null, id: null }\n }\n }\n\n /** Move an element within a container's elementList (drag-reorder). */\n function reorderElement(\n builderId: string,\n containerId: string,\n fromIndex: number,\n toIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const bag = getContainerBag(schema, containerId)\n if (!bag) return\n const list = (bag.elementList as string[] | undefined) ?? []\n if (\n fromIndex < 0 ||\n fromIndex >= list.length ||\n toIndex < 0 ||\n toIndex >= list.length\n ) {\n return\n }\n const next = [...list]\n const [moved] = next.splice(fromIndex, 1)\n if (moved !== undefined) {\n next.splice(toIndex, 0, moved)\n bag.elementList = next\n }\n }\n\n /** Move an element from one container to another (cross-container drag). */\n function moveElement(\n builderId: string,\n fromContainerId: string,\n toContainerId: string,\n elementId: string,\n toIndex: number,\n ): void {\n if (fromContainerId === toContainerId) return\n const schema = ensureBuilder(builderId)\n const fromBag = getContainerBag(schema, fromContainerId)\n const toBag = getContainerBag(schema, toContainerId)\n if (!fromBag || !toBag) return\n const fromList = (fromBag.elementList as string[] | undefined) ?? []\n if (!fromList.includes(elementId)) return\n fromBag.elementList = fromList.filter((id) => id !== elementId)\n const toList = (toBag.elementList as string[] | undefined) ?? []\n const clamped = Math.max(0, Math.min(toIndex, toList.length))\n const next = [...toList]\n next.splice(clamped, 0, elementId)\n toBag.elementList = next\n }\n\n /** Patch an element's properties (used by the Inspector on every input). */\n function updateElement(\n builderId: string,\n elementId: string,\n patch: Partial<CardElement>,\n ): void {\n const schema = ensureBuilder(builderId)\n const current = schema.elements[elementId]\n if (!current) {\n return\n }\n schema.elements[elementId] = {\n ...current,\n ...(patch as Record<string, unknown>),\n } as CardElement\n }\n\n /** Patch a card's properties. */\n function updateCard(\n builderId: string,\n cardId: string,\n patch: Partial<DisplayCard>,\n ): void {\n const schema = ensureBuilder(builderId)\n const current = schema.cards[cardId]\n if (!current) {\n return\n }\n schema.cards[cardId] = {\n ...current,\n ...(patch as Record<string, unknown>),\n } as DisplayCard\n }\n\n function select(\n builderId: string,\n kind: \"element\" | \"card\" | null,\n id: string | null,\n ): void {\n selections.value[builderId] = { kind, id }\n }\n\n function getSelection(builderId: string): BuilderSelection {\n return selections.value[builderId] ?? { kind: null, id: null }\n }\n\n /** Convenience getter returning the schema for export. */\n function getSchema(builderId: string): BuilderSchema {\n return ensureBuilder(builderId)\n }\n\n return {\n builders,\n selections,\n ensureBuilder,\n loadSchema,\n resetBuilder,\n addElement,\n addCard,\n removeElement,\n removeCard,\n reorderElement,\n moveElement,\n updateElement,\n updateCard,\n select,\n getSelection,\n getSchema,\n }\n})\n\n/** Composable wrapping store access for a single builder instance. */\nexport function useFormBuilder(builderId: string) {\n const store = useFormBuilderStore()\n store.ensureBuilder(builderId)\n return {\n schema: computed<BuilderSchema>(() => store.getSchema(builderId)),\n selection: computed<BuilderSelection>(() => store.getSelection(builderId)),\n addElement: (parentId: string, type: ElementType | ElementCategory) =>\n store.addElement(builderId, parentId, type),\n addCard: (parentId: string, cardType: DisplayCard[\"cardType\"]) =>\n store.addCard(builderId, parentId, cardType),\n removeElement: (id: string) => store.removeElement(builderId, id),\n removeCard: (id: string) => store.removeCard(builderId, id),\n reorderElement: (containerId: string, from: number, to: number) =>\n store.reorderElement(builderId, containerId, from, to),\n moveElement: (fromContainerId: string, toContainerId: string, elementId: string, toIndex: number) =>\n store.moveElement(builderId, fromContainerId, toContainerId, elementId, toIndex),\n updateElement: (id: string, patch: Partial<CardElement>) =>\n store.updateElement(builderId, id, patch),\n updateCard: (id: string, patch: Partial<DisplayCard>) =>\n store.updateCard(builderId, id, patch),\n select: (kind: \"element\" | \"card\" | null, id: string | null) =>\n store.select(builderId, kind, id),\n loadSchema: (schema: BuilderSchema) => store.loadSchema(builderId, schema),\n reset: () => store.resetBuilder(builderId),\n }\n}\n"],"names":["idCounter","nextId","prefix","__resetFormBuilderIdCounter","emptyRoot","rootId","useFormBuilderStore","defineStore","builders","ref","selections","getContainerBag","schema","containerId","card","el","bag","ensureBuilder","builderId","loadSchema","resetBuilder","addElement","type","dotType","elementDefaultStyle","id","element","list","addCard","parentCardId","cardType","parent","parentBag","removeElement","elementId","elBag","childId","sel","removeCard","cardId","elId","other","obag","key","reorderElement","fromIndex","toIndex","next","moved","moveElement","fromContainerId","toContainerId","fromBag","toBag","fromList","toList","clamped","updateElement","patch","current","updateCard","select","kind","getSelection","getSchema","useFormBuilder","store","computed","parentId","from","to"],"mappings":"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"}
1
+ {"version":3,"file":"formBuilderStore.js","sources":["../../src/stores/formBuilderStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { computed, ref } from \"vue\"\nimport type { CardElement } from \"@/definitions/elements\"\nimport type { DisplayCard } from \"@/definitions/cards\"\nimport type { ElementCategory, ElementType } from \"@/definitions/shared/base\"\nimport { elementDefaultStyle } from \"@/engine/registry\"\n\n/**\n * State for a single FormBuilder instance. Multiple FormBuilders can\n * coexist on a page; each is keyed by `builderId`.\n *\n * The shape mirrors the v2 page config (a flat elements map, a flat\n * cards map, a root card id) so the builder's output can be passed\n * straight to ShowPage / CardRenderer.\n */\nexport interface BuilderSchema {\n /** Root card id — the top of the tree. */\n rootCardId: string\n cards: Record<string, DisplayCard>\n elements: Record<string, CardElement>\n}\n\n/** Identifies what's currently selected in the inspector. */\nexport interface BuilderSelection {\n kind: \"element\" | \"card\" | null\n id: string | null\n}\n\nlet idCounter = 0\nfunction nextId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${Date.now()}-${idCounter}`\n}\n\n/** Test helper to make ids deterministic. */\nexport function __resetFormBuilderIdCounter(): void {\n idCounter = 0\n}\n\nfunction emptyRoot(rootId: string): BuilderSchema {\n return {\n rootCardId: rootId,\n cards: {\n [rootId]: {\n id: rootId,\n cardType: \"element-list\",\n title: \"\",\n elementList: [],\n } as unknown as DisplayCard,\n },\n elements: {},\n }\n}\n\nexport const useFormBuilderStore = defineStore(\"gx-modui/formBuilder\", () => {\n /**\n * Per-builder state, keyed by `builderId`. Lets multiple builders\n * coexist on the same page without colliding.\n */\n const builders = ref<Record<string, BuilderSchema>>({})\n const selections = ref<Record<string, BuilderSelection>>({})\n\n /**\n * Return the raw mutable bag for a container ID. A container is either a\n * DisplayCard (in schema.cards) or a card-type element (schema.elements\n * with a type starting with \"card.\"). Both carry an `elementList` array.\n */\n function getContainerBag(\n schema: BuilderSchema,\n containerId: string,\n ): Record<string, unknown> | null {\n const card = schema.cards[containerId]\n if (card) return card as unknown as Record<string, unknown>\n const el = schema.elements[containerId]\n if (el) {\n const bag = el as unknown as Record<string, unknown>\n if (typeof bag.type === \"string\" && (bag.type as string).startsWith(\"card.\")) {\n return bag\n }\n }\n return null\n }\n\n function ensureBuilder(builderId: string): BuilderSchema {\n if (!builders.value[builderId]) {\n const rootId = nextId(\"root\")\n builders.value[builderId] = emptyRoot(rootId)\n selections.value[builderId] = { kind: null, id: null }\n }\n return builders.value[builderId]!\n }\n\n function loadSchema(builderId: string, schema: BuilderSchema): void {\n builders.value[builderId] = {\n rootCardId: schema.rootCardId,\n cards: { ...schema.cards },\n elements: { ...schema.elements },\n }\n selections.value[builderId] = { kind: null, id: null }\n }\n\n function resetBuilder(builderId: string): void {\n delete builders.value[builderId]\n delete selections.value[builderId]\n }\n\n /**\n * Append a fresh element of `type` to the given parent card's\n * elementList. `type` is the dot-notation discriminator\n * (e.g. `\"input.text\"`). When only a category is supplied\n * (`\"input\"`), the parent's default style is appended.\n *\n * Returns the new element's id so callers can immediately select it\n * for editing.\n */\n function addElement(\n builderId: string,\n containerId: string,\n type: ElementType | ElementCategory,\n ): string {\n const schema = ensureBuilder(builderId)\n const bag = getContainerBag(schema, containerId)\n if (!bag) {\n throw new Error(\n `addElement: container ${containerId} not found in builder ${builderId}`,\n )\n }\n const dotType: ElementType = type.includes(\".\")\n ? (type as ElementType)\n : (`${type}.${elementDefaultStyle[type as ElementCategory] ?? \"text\"}` as ElementType)\n const id = nextId(`el-${dotType.replace(\".\", \"-\")}`)\n const element = {\n id,\n type: dotType,\n label: `New ${dotType}`,\n } as unknown as CardElement\n schema.elements[id] = element\n const list = (bag.elementList as string[] | undefined) ?? []\n bag.elementList = [...list, id]\n return id\n }\n\n /**\n * Append a fresh card of `cardType` to the given parent's cardList /\n * tabList. Returns the new card's id.\n */\n function addCard(\n builderId: string,\n parentCardId: string,\n cardType: DisplayCard[\"cardType\"],\n ): string {\n const schema = ensureBuilder(builderId)\n const parent = schema.cards[parentCardId]\n if (!parent) {\n throw new Error(`addCard: parent card ${parentCardId} not found`)\n }\n const id = nextId(`card-${cardType}`)\n const card = {\n id,\n cardType,\n title: `New ${cardType}`,\n } as unknown as DisplayCard\n if (cardType === \"element-list\") {\n ;(card as unknown as Record<string, unknown>).elementList = []\n } else if (cardType === \"card-list\") {\n ;(card as unknown as Record<string, unknown>).cardList = []\n } else if (cardType === \"tab-list\") {\n ;(card as unknown as Record<string, unknown>).tabList = []\n }\n schema.cards[id] = card\n\n const parentBag = parent as unknown as Record<string, unknown>\n if (parent.cardType === \"card-list\") {\n const list = (parentBag.cardList as string[]) ?? []\n parentBag.cardList = [...list, id]\n } else if (parent.cardType === \"tab-list\") {\n const list = (parentBag.tabList as string[]) ?? []\n parentBag.tabList = [...list, id]\n } else {\n throw new Error(\n `addCard: parent ${parentCardId} (cardType=${parent.cardType}) does not accept nested cards`,\n )\n }\n return id\n }\n\n /** Remove an element by id from the schema and from its parent's list. */\n function removeElement(builderId: string, elementId: string): void {\n const schema = ensureBuilder(builderId)\n if (!schema.elements[elementId]) {\n return\n }\n // Cascade-delete children when removing a card-type element\n const elBag = schema.elements[elementId] as unknown as Record<string, unknown>\n if (typeof elBag.type === \"string\" && (elBag.type as string).startsWith(\"card.\")) {\n for (const childId of (elBag.elementList as string[] | undefined) ?? []) {\n delete schema.elements[childId]\n }\n }\n delete schema.elements[elementId]\n // Remove from card containers\n for (const card of Object.values(schema.cards)) {\n const bag = card as unknown as Record<string, unknown>\n const list = bag.elementList as string[] | undefined\n if (list?.includes(elementId)) {\n bag.elementList = list.filter((id) => id !== elementId)\n }\n }\n // Remove from element containers (card.* elements)\n for (const el of Object.values(schema.elements)) {\n const bag = el as unknown as Record<string, unknown>\n if (typeof bag.type === \"string\" && (bag.type as string).startsWith(\"card.\")) {\n const list = bag.elementList as string[] | undefined\n if (list?.includes(elementId)) {\n bag.elementList = list.filter((id) => id !== elementId)\n }\n }\n }\n const sel = selections.value[builderId]\n if (sel && sel.kind === \"element\" && sel.id === elementId) {\n selections.value[builderId] = { kind: null, id: null }\n }\n }\n\n /** Remove a card (and its descendants) recursively. */\n function removeCard(builderId: string, cardId: string): void {\n const schema = ensureBuilder(builderId)\n if (cardId === schema.rootCardId) {\n return // never remove the root\n }\n const card = schema.cards[cardId]\n if (!card) {\n return\n }\n const bag = card as unknown as Record<string, unknown>\n for (const elId of (bag.elementList as string[]) ?? []) {\n delete schema.elements[elId]\n }\n for (const childId of (bag.cardList as string[]) ?? []) {\n removeCard(builderId, childId)\n }\n for (const childId of (bag.tabList as string[]) ?? []) {\n removeCard(builderId, childId)\n }\n delete schema.cards[cardId]\n for (const other of Object.values(schema.cards)) {\n const obag = other as unknown as Record<string, unknown>\n for (const key of [\"cardList\", \"tabList\"] as const) {\n const list = obag[key] as string[] | undefined\n if (list?.includes(cardId)) {\n obag[key] = list.filter((id) => id !== cardId)\n }\n }\n }\n const sel = selections.value[builderId]\n if (sel && sel.kind === \"card\" && sel.id === cardId) {\n selections.value[builderId] = { kind: null, id: null }\n }\n }\n\n /** Move an element within a container's elementList (drag-reorder). */\n function reorderElement(\n builderId: string,\n containerId: string,\n fromIndex: number,\n toIndex: number,\n ): void {\n const schema = ensureBuilder(builderId)\n const bag = getContainerBag(schema, containerId)\n if (!bag) return\n const list = (bag.elementList as string[] | undefined) ?? []\n if (\n fromIndex < 0 ||\n fromIndex >= list.length ||\n toIndex < 0 ||\n toIndex >= list.length\n ) {\n return\n }\n const next = [...list]\n const [moved] = next.splice(fromIndex, 1)\n if (moved !== undefined) {\n next.splice(toIndex, 0, moved)\n bag.elementList = next\n }\n }\n\n /** Move an element from one container to another (cross-container drag). */\n function moveElement(\n builderId: string,\n fromContainerId: string,\n toContainerId: string,\n elementId: string,\n toIndex: number,\n ): void {\n if (fromContainerId === toContainerId) return\n const schema = ensureBuilder(builderId)\n const fromBag = getContainerBag(schema, fromContainerId)\n const toBag = getContainerBag(schema, toContainerId)\n if (!fromBag || !toBag) return\n const fromList = (fromBag.elementList as string[] | undefined) ?? []\n if (!fromList.includes(elementId)) return\n fromBag.elementList = fromList.filter((id) => id !== elementId)\n const toList = (toBag.elementList as string[] | undefined) ?? []\n const clamped = Math.max(0, Math.min(toIndex, toList.length))\n const next = [...toList]\n next.splice(clamped, 0, elementId)\n toBag.elementList = next\n }\n\n /** Patch an element's properties (used by the Inspector on every input). */\n function updateElement(\n builderId: string,\n elementId: string,\n patch: Partial<CardElement>,\n ): void {\n const schema = ensureBuilder(builderId)\n const current = schema.elements[elementId]\n if (!current) {\n return\n }\n schema.elements[elementId] = {\n ...current,\n ...(patch as Record<string, unknown>),\n } as CardElement\n }\n\n /** Patch a card's properties. */\n function updateCard(\n builderId: string,\n cardId: string,\n patch: Partial<DisplayCard>,\n ): void {\n const schema = ensureBuilder(builderId)\n const current = schema.cards[cardId]\n if (!current) {\n return\n }\n schema.cards[cardId] = {\n ...current,\n ...(patch as Record<string, unknown>),\n } as DisplayCard\n }\n\n function select(\n builderId: string,\n kind: \"element\" | \"card\" | null,\n id: string | null,\n ): void {\n selections.value[builderId] = { kind, id }\n }\n\n function getSelection(builderId: string): BuilderSelection {\n return selections.value[builderId] ?? { kind: null, id: null }\n }\n\n /** Convenience getter returning the schema for export. */\n function getSchema(builderId: string): BuilderSchema {\n return ensureBuilder(builderId)\n }\n\n return {\n builders,\n selections,\n ensureBuilder,\n loadSchema,\n resetBuilder,\n addElement,\n addCard,\n removeElement,\n removeCard,\n reorderElement,\n moveElement,\n updateElement,\n updateCard,\n select,\n getSelection,\n getSchema,\n }\n})\n\n/** Composable wrapping store access for a single builder instance. */\nexport function useFormBuilder(builderId: string) {\n const store = useFormBuilderStore()\n store.ensureBuilder(builderId)\n return {\n schema: computed<BuilderSchema>(() => store.getSchema(builderId)),\n selection: computed<BuilderSelection>(() => store.getSelection(builderId)),\n addElement: (parentId: string, type: ElementType | ElementCategory) =>\n store.addElement(builderId, parentId, type),\n addCard: (parentId: string, cardType: DisplayCard[\"cardType\"]) =>\n store.addCard(builderId, parentId, cardType),\n removeElement: (id: string) => store.removeElement(builderId, id),\n removeCard: (id: string) => store.removeCard(builderId, id),\n reorderElement: (containerId: string, from: number, to: number) =>\n store.reorderElement(builderId, containerId, from, to),\n moveElement: (fromContainerId: string, toContainerId: string, elementId: string, toIndex: number) =>\n store.moveElement(builderId, fromContainerId, toContainerId, elementId, toIndex),\n updateElement: (id: string, patch: Partial<CardElement>) =>\n store.updateElement(builderId, id, patch),\n updateCard: (id: string, patch: Partial<DisplayCard>) =>\n store.updateCard(builderId, id, patch),\n select: (kind: \"element\" | \"card\" | null, id: string | null) =>\n store.select(builderId, kind, id),\n loadSchema: (schema: BuilderSchema) => store.loadSchema(builderId, schema),\n reset: () => store.resetBuilder(builderId),\n }\n}\n"],"names":["idCounter","nextId","prefix","__resetFormBuilderIdCounter","emptyRoot","rootId","useFormBuilderStore","defineStore","builders","ref","selections","getContainerBag","schema","containerId","card","el","bag","ensureBuilder","builderId","loadSchema","resetBuilder","addElement","type","dotType","elementDefaultStyle","id","element","list","addCard","parentCardId","cardType","parent","parentBag","removeElement","elementId","elBag","childId","sel","removeCard","cardId","elId","other","obag","key","reorderElement","fromIndex","toIndex","next","moved","moveElement","fromContainerId","toContainerId","fromBag","toBag","fromList","toList","clamped","updateElement","patch","current","updateCard","select","kind","getSelection","getSchema","useFormBuilder","store","computed","parentId","from","to"],"mappings":"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"}
@@ -16,7 +16,7 @@ export interface FormState {
16
16
  touched: Record<string, boolean>;
17
17
  dirty: boolean;
18
18
  }
19
- export declare const useFormDataStore: import('pinia').StoreDefinition<"gxp-adminkit/formData", Pick<{
19
+ export declare const useFormDataStore: import('pinia').StoreDefinition<"gx-modui/formData", Pick<{
20
20
  forms: import('vue').Ref<Record<string, FormState>, Record<string, FormState>>;
21
21
  ensureForm: (formId: string) => FormState;
22
22
  setInitialValues: (formId: string, values: Record<string, unknown>) => void;
@@ -1,6 +1,6 @@
1
1
  import { defineStore as v } from "pinia";
2
2
  import { ref as y } from "vue";
3
- const h = v("gxp-adminkit/formData", () => {
3
+ const p = v("gx-modui/formData", () => {
4
4
  const n = y({});
5
5
  function t(r) {
6
6
  return n.value[r] || (n.value[r] = {
@@ -46,6 +46,6 @@ const h = v("gxp-adminkit/formData", () => {
46
46
  };
47
47
  });
48
48
  export {
49
- h as useFormDataStore
49
+ p as useFormDataStore
50
50
  };
51
51
  //# sourceMappingURL=formDataStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formDataStore.js","sources":["../../src/stores/formDataStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { ref } from \"vue\"\n\n/**\n * Shared form-data state, keyed by `formId` so multiple forms can\n * coexist on a page without colliding. Engine renderers and the\n * FormBuilder all read/write the same shape:\n *\n * {\n * values: { [name]: value },\n * errors: { [name]: string[] },\n * touched: { [name]: boolean },\n * dirty: boolean\n * }\n */\nexport interface FormState {\n values: Record<string, unknown>\n errors: Record<string, string[]>\n touched: Record<string, boolean>\n dirty: boolean\n}\n\nexport const useFormDataStore = defineStore(\"gxp-adminkit/formData\", () => {\n const forms = ref<Record<string, FormState>>({})\n\n function ensureForm(formId: string): FormState {\n if (!forms.value[formId]) {\n forms.value[formId] = {\n values: {},\n errors: {},\n touched: {},\n dirty: false,\n }\n }\n return forms.value[formId]!\n }\n\n function setInitialValues(\n formId: string,\n values: Record<string, unknown>,\n ): void {\n const form = ensureForm(formId)\n form.values = { ...values }\n form.errors = {}\n form.touched = {}\n form.dirty = false\n }\n\n function setValue(formId: string, name: string, value: unknown): void {\n const form = ensureForm(formId)\n form.values[name] = value\n form.touched[name] = true\n form.dirty = true\n }\n\n function setErrors(\n formId: string,\n errors: Record<string, string[] | string>,\n ): void {\n const form = ensureForm(formId)\n const normalised: Record<string, string[]> = {}\n for (const [k, v] of Object.entries(errors)) {\n normalised[k] = Array.isArray(v) ? v : [v]\n }\n form.errors = normalised\n }\n\n function clearErrors(formId: string, name?: string): void {\n const form = ensureForm(formId)\n if (name === undefined) {\n form.errors = {}\n } else {\n delete form.errors[name]\n }\n }\n\n function getForm(formId: string): FormState {\n return ensureForm(formId)\n }\n\n function resetForm(formId: string): void {\n delete forms.value[formId]\n }\n\n return {\n forms,\n ensureForm,\n setInitialValues,\n setValue,\n setErrors,\n clearErrors,\n getForm,\n resetForm,\n }\n})\n"],"names":["useFormDataStore","defineStore","forms","ref","ensureForm","formId","setInitialValues","values","form","setValue","name","value","setErrors","errors","normalised","k","v","clearErrors","getForm","resetForm"],"mappings":";;AAsBO,MAAMA,IAAmBC,EAAY,yBAAyB,MAAM;AACzE,QAAMC,IAAQC,EAA+B,EAAE;AAE/C,WAASC,EAAWC,GAA2B;AAC7C,WAAKH,EAAM,MAAMG,CAAM,MACrBH,EAAM,MAAMG,CAAM,IAAI;AAAA,MACpB,QAAQ,CAAA;AAAA,MACR,QAAQ,CAAA;AAAA,MACR,SAAS,CAAA;AAAA,MACT,OAAO;AAAA,IAAA,IAGJH,EAAM,MAAMG,CAAM;AAAA,EAC3B;AAEA,WAASC,EACPD,GACAE,GACM;AACN,UAAMC,IAAOJ,EAAWC,CAAM;AAC9B,IAAAG,EAAK,SAAS,EAAE,GAAGD,EAAA,GACnBC,EAAK,SAAS,CAAA,GACdA,EAAK,UAAU,CAAA,GACfA,EAAK,QAAQ;AAAA,EACf;AAEA,WAASC,EAASJ,GAAgBK,GAAcC,GAAsB;AACpE,UAAMH,IAAOJ,EAAWC,CAAM;AAC9B,IAAAG,EAAK,OAAOE,CAAI,IAAIC,GACpBH,EAAK,QAAQE,CAAI,IAAI,IACrBF,EAAK,QAAQ;AAAA,EACf;AAEA,WAASI,EACPP,GACAQ,GACM;AACN,UAAML,IAAOJ,EAAWC,CAAM,GACxBS,IAAuC,CAAA;AAC7C,eAAW,CAACC,GAAGC,CAAC,KAAK,OAAO,QAAQH,CAAM;AACxC,MAAAC,EAAWC,CAAC,IAAI,MAAM,QAAQC,CAAC,IAAIA,IAAI,CAACA,CAAC;AAE3C,IAAAR,EAAK,SAASM;AAAA,EAChB;AAEA,WAASG,EAAYZ,GAAgBK,GAAqB;AACxD,UAAMF,IAAOJ,EAAWC,CAAM;AAC9B,IAAIK,MAAS,SACXF,EAAK,SAAS,CAAA,IAEd,OAAOA,EAAK,OAAOE,CAAI;AAAA,EAE3B;AAEA,WAASQ,EAAQb,GAA2B;AAC1C,WAAOD,EAAWC,CAAM;AAAA,EAC1B;AAEA,WAASc,EAAUd,GAAsB;AACvC,WAAOH,EAAM,MAAMG,CAAM;AAAA,EAC3B;AAEA,SAAO;AAAA,IACL,OAAAH;AAAA,IACA,YAAAE;AAAA,IACA,kBAAAE;AAAA,IACA,UAAAG;AAAA,IACA,WAAAG;AAAA,IACA,aAAAK;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,EAAA;AAEJ,CAAC;"}
1
+ {"version":3,"file":"formDataStore.js","sources":["../../src/stores/formDataStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { ref } from \"vue\"\n\n/**\n * Shared form-data state, keyed by `formId` so multiple forms can\n * coexist on a page without colliding. Engine renderers and the\n * FormBuilder all read/write the same shape:\n *\n * {\n * values: { [name]: value },\n * errors: { [name]: string[] },\n * touched: { [name]: boolean },\n * dirty: boolean\n * }\n */\nexport interface FormState {\n values: Record<string, unknown>\n errors: Record<string, string[]>\n touched: Record<string, boolean>\n dirty: boolean\n}\n\nexport const useFormDataStore = defineStore(\"gx-modui/formData\", () => {\n const forms = ref<Record<string, FormState>>({})\n\n function ensureForm(formId: string): FormState {\n if (!forms.value[formId]) {\n forms.value[formId] = {\n values: {},\n errors: {},\n touched: {},\n dirty: false,\n }\n }\n return forms.value[formId]!\n }\n\n function setInitialValues(\n formId: string,\n values: Record<string, unknown>,\n ): void {\n const form = ensureForm(formId)\n form.values = { ...values }\n form.errors = {}\n form.touched = {}\n form.dirty = false\n }\n\n function setValue(formId: string, name: string, value: unknown): void {\n const form = ensureForm(formId)\n form.values[name] = value\n form.touched[name] = true\n form.dirty = true\n }\n\n function setErrors(\n formId: string,\n errors: Record<string, string[] | string>,\n ): void {\n const form = ensureForm(formId)\n const normalised: Record<string, string[]> = {}\n for (const [k, v] of Object.entries(errors)) {\n normalised[k] = Array.isArray(v) ? v : [v]\n }\n form.errors = normalised\n }\n\n function clearErrors(formId: string, name?: string): void {\n const form = ensureForm(formId)\n if (name === undefined) {\n form.errors = {}\n } else {\n delete form.errors[name]\n }\n }\n\n function getForm(formId: string): FormState {\n return ensureForm(formId)\n }\n\n function resetForm(formId: string): void {\n delete forms.value[formId]\n }\n\n return {\n forms,\n ensureForm,\n setInitialValues,\n setValue,\n setErrors,\n clearErrors,\n getForm,\n resetForm,\n }\n})\n"],"names":["useFormDataStore","defineStore","forms","ref","ensureForm","formId","setInitialValues","values","form","setValue","name","value","setErrors","errors","normalised","k","v","clearErrors","getForm","resetForm"],"mappings":";;AAsBO,MAAMA,IAAmBC,EAAY,qBAAqB,MAAM;AACrE,QAAMC,IAAQC,EAA+B,EAAE;AAE/C,WAASC,EAAWC,GAA2B;AAC7C,WAAKH,EAAM,MAAMG,CAAM,MACrBH,EAAM,MAAMG,CAAM,IAAI;AAAA,MACpB,QAAQ,CAAA;AAAA,MACR,QAAQ,CAAA;AAAA,MACR,SAAS,CAAA;AAAA,MACT,OAAO;AAAA,IAAA,IAGJH,EAAM,MAAMG,CAAM;AAAA,EAC3B;AAEA,WAASC,EACPD,GACAE,GACM;AACN,UAAMC,IAAOJ,EAAWC,CAAM;AAC9B,IAAAG,EAAK,SAAS,EAAE,GAAGD,EAAA,GACnBC,EAAK,SAAS,CAAA,GACdA,EAAK,UAAU,CAAA,GACfA,EAAK,QAAQ;AAAA,EACf;AAEA,WAASC,EAASJ,GAAgBK,GAAcC,GAAsB;AACpE,UAAMH,IAAOJ,EAAWC,CAAM;AAC9B,IAAAG,EAAK,OAAOE,CAAI,IAAIC,GACpBH,EAAK,QAAQE,CAAI,IAAI,IACrBF,EAAK,QAAQ;AAAA,EACf;AAEA,WAASI,EACPP,GACAQ,GACM;AACN,UAAML,IAAOJ,EAAWC,CAAM,GACxBS,IAAuC,CAAA;AAC7C,eAAW,CAACC,GAAGC,CAAC,KAAK,OAAO,QAAQH,CAAM;AACxC,MAAAC,EAAWC,CAAC,IAAI,MAAM,QAAQC,CAAC,IAAIA,IAAI,CAACA,CAAC;AAE3C,IAAAR,EAAK,SAASM;AAAA,EAChB;AAEA,WAASG,EAAYZ,GAAgBK,GAAqB;AACxD,UAAMF,IAAOJ,EAAWC,CAAM;AAC9B,IAAIK,MAAS,SACXF,EAAK,SAAS,CAAA,IAEd,OAAOA,EAAK,OAAOE,CAAI;AAAA,EAE3B;AAEA,WAASQ,EAAQb,GAA2B;AAC1C,WAAOD,EAAWC,CAAM;AAAA,EAC1B;AAEA,WAASc,EAAUd,GAAsB;AACvC,WAAOH,EAAM,MAAMG,CAAM;AAAA,EAC3B;AAEA,SAAO;AAAA,IACL,OAAAH;AAAA,IACA,YAAAE;AAAA,IACA,kBAAAE;AAAA,IACA,UAAAG;AAAA,IACA,WAAAG;AAAA,IACA,aAAAK;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,EAAA;AAEJ,CAAC;"}
@@ -32,7 +32,7 @@ export interface GridBuilderSelection {
32
32
  }
33
33
  /** Test helper to make ids deterministic. */
34
34
  export declare function __resetGridBuilderIdCounter(): void;
35
- export declare const useGridBuilderStore: import('pinia').StoreDefinition<"gxp-adminkit/gridBuilder", Pick<{
35
+ export declare const useGridBuilderStore: import('pinia').StoreDefinition<"gx-modui/gridBuilder", Pick<{
36
36
  builders: import('vue').Ref<Record<string, GridBuilderSchema>, Record<string, GridBuilderSchema>>;
37
37
  selections: import('vue').Ref<Record<string, GridBuilderSelection>, Record<string, GridBuilderSelection>>;
38
38
  ensureBuilder: (builderId: string) => GridBuilderSchema;
@@ -4,14 +4,14 @@ let f = 0;
4
4
  function G(t) {
5
5
  return f += 1, `${t}-${Date.now()}-${f}`;
6
6
  }
7
- function j() {
7
+ function k() {
8
8
  f = 0;
9
9
  }
10
10
  function F() {
11
11
  return { cols: 12, rowHeight: 60, items: [] };
12
12
  }
13
13
  const _ = $(
14
- "gxp-adminkit/gridBuilder",
14
+ "gx-modui/gridBuilder",
15
15
  () => {
16
16
  const t = x({}), n = x({});
17
17
  function o(e) {
@@ -28,15 +28,15 @@ const _ = $(
28
28
  delete t.value[e], delete n.value[e];
29
29
  }
30
30
  function w(e, s) {
31
- const c = o(e), i = l((s == null ? void 0 : s.w) ?? 1, c.cols), u = Math.max(1, (s == null ? void 0 : s.h) ?? 1), a = k(c), r = G("gi"), m = {
31
+ const c = o(e), i = l((s == null ? void 0 : s.w) ?? 1, c.cols), u = Math.max(1, (s == null ? void 0 : s.h) ?? 1), m = D(c), r = G("gi"), a = {
32
32
  id: r,
33
33
  label: (s == null ? void 0 : s.label) ?? `Cell ${c.items.length + 1}`,
34
34
  x: 0,
35
- y: a,
35
+ y: m,
36
36
  w: i,
37
37
  h: u
38
38
  };
39
- return c.items = [...c.items, m], r;
39
+ return c.items = [...c.items, a], r;
40
40
  }
41
41
  function M(e, s) {
42
42
  const c = o(e);
@@ -53,14 +53,14 @@ const _ = $(
53
53
  ...c
54
54
  };
55
55
  r.w = l(r.w, i.cols), r.h = Math.max(1, r.h), r.x = Math.max(0, Math.min(r.x, i.cols - r.w)), r.y = Math.max(0, r.y);
56
- const m = [...i.items];
57
- m[u] = r, i.items = m;
56
+ const a = [...i.items];
57
+ a[u] = r, i.items = a;
58
58
  }
59
59
  function S(e, s) {
60
60
  const c = o(e), i = Math.max(1, Math.floor(s));
61
61
  c.cols = i, c.items = c.items.map((u) => {
62
- const a = l(u.w, i), r = Math.max(0, Math.min(u.x, i - a));
63
- return { ...u, w: a, x: r };
62
+ const m = l(u.w, i), r = Math.max(0, Math.min(u.x, i - m));
63
+ return { ...u, w: m, x: r };
64
64
  });
65
65
  }
66
66
  function B(e, s) {
@@ -96,7 +96,7 @@ const _ = $(
96
96
  function l(t, n) {
97
97
  return Number.isFinite(t) ? Math.max(1, Math.min(Math.floor(t), n)) : 1;
98
98
  }
99
- function k(t) {
99
+ function D(t) {
100
100
  return t.items.length === 0 ? 0 : t.items.reduce((n, o) => Math.max(n, o.y + o.h), 0);
101
101
  }
102
102
  function q(t) {
@@ -117,7 +117,7 @@ function q(t) {
117
117
  };
118
118
  }
119
119
  export {
120
- j as __resetGridBuilderIdCounter,
120
+ k as __resetGridBuilderIdCounter,
121
121
  q as useGridBuilder,
122
122
  _ as useGridBuilderStore
123
123
  };
@@ -1 +1 @@
1
- {"version":3,"file":"gridBuilderStore.js","sources":["../../src/stores/gridBuilderStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { computed, ref } from \"vue\"\n\n/**\n * A single cell in the grid layout. The shape mirrors the\n * `GridItem` used by `GridViewCard` but is flattened down to the\n * minimum a designer cares about: a label, a column/row position,\n * and a column/row span.\n */\nexport interface GridBuilderItem {\n id: string\n /** Display label shown in the canvas. */\n label: string\n /** 12-column grid x position (0-indexed). */\n x: number\n /** Row position (0-indexed). */\n y: number\n /** Width in column units (1-12). */\n w: number\n /** Height in row units. */\n h: number\n}\n\n/** Full grid schema produced by the builder. */\nexport interface GridBuilderSchema {\n /** Number of columns in the grid. Default 12. */\n cols: number\n /** Pixel height of a single row. Default 60. */\n rowHeight: number\n /** Ordered list of grid items. */\n items: GridBuilderItem[]\n}\n\n/** Identifies which grid item is currently selected. */\nexport interface GridBuilderSelection {\n id: string | null\n}\n\nlet idCounter = 0\nfunction nextId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${Date.now()}-${idCounter}`\n}\n\n/** Test helper to make ids deterministic. */\nexport function __resetGridBuilderIdCounter(): void {\n idCounter = 0\n}\n\nfunction emptySchema(): GridBuilderSchema {\n return { cols: 12, rowHeight: 60, items: [] }\n}\n\nexport const useGridBuilderStore = defineStore(\n \"gxp-adminkit/gridBuilder\",\n () => {\n /**\n * Per-builder state, keyed by `builderId`. Lets multiple builders\n * coexist on the same page without colliding.\n */\n const builders = ref<Record<string, GridBuilderSchema>>({})\n const selections = ref<Record<string, GridBuilderSelection>>({})\n\n function ensureBuilder(builderId: string): GridBuilderSchema {\n if (!builders.value[builderId]) {\n builders.value[builderId] = emptySchema()\n selections.value[builderId] = { id: null }\n }\n return builders.value[builderId]!\n }\n\n function loadSchema(builderId: string, schema: GridBuilderSchema): void {\n builders.value[builderId] = {\n cols: schema.cols,\n rowHeight: schema.rowHeight,\n items: schema.items.map((it) => ({ ...it })),\n }\n selections.value[builderId] = { id: null }\n }\n\n function resetBuilder(builderId: string): void {\n delete builders.value[builderId]\n delete selections.value[builderId]\n }\n\n /**\n * Append a fresh grid item at the next available row, sized to\n * `template`. Returns the new item's id.\n */\n function addItem(\n builderId: string,\n template?: Partial<Pick<GridBuilderItem, \"w\" | \"h\" | \"label\">>,\n ): string {\n const schema = ensureBuilder(builderId)\n const w = clampColumns(template?.w ?? 1, schema.cols)\n const h = Math.max(1, template?.h ?? 1)\n const y = nextFreeRow(schema)\n const id = nextId(\"gi\")\n const item: GridBuilderItem = {\n id,\n label: template?.label ?? `Cell ${schema.items.length + 1}`,\n x: 0,\n y,\n w,\n h,\n }\n schema.items = [...schema.items, item]\n return id\n }\n\n /** Remove an item by id. */\n function removeItem(builderId: string, itemId: string): void {\n const schema = ensureBuilder(builderId)\n schema.items = schema.items.filter((it) => it.id !== itemId)\n const sel = selections.value[builderId]\n if (sel?.id === itemId) {\n selections.value[builderId] = { id: null }\n }\n }\n\n /** Patch a grid item's properties. */\n function updateItem(\n builderId: string,\n itemId: string,\n patch: Partial<Omit<GridBuilderItem, \"id\">>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.items.findIndex((it) => it.id === itemId)\n if (idx < 0) {\n return\n }\n const current = schema.items[idx]!\n const merged: GridBuilderItem = {\n ...current,\n ...patch,\n }\n // Clamp coordinates to keep the item inside the grid.\n merged.w = clampColumns(merged.w, schema.cols)\n merged.h = Math.max(1, merged.h)\n merged.x = Math.max(0, Math.min(merged.x, schema.cols - merged.w))\n merged.y = Math.max(0, merged.y)\n const next = [...schema.items]\n next[idx] = merged\n schema.items = next\n }\n\n /** Update the grid-level `cols` value. */\n function setCols(builderId: string, cols: number): void {\n const schema = ensureBuilder(builderId)\n const safe = Math.max(1, Math.floor(cols))\n schema.cols = safe\n // Re-clamp every item so nothing overflows the new column count.\n schema.items = schema.items.map((it) => {\n const w = clampColumns(it.w, safe)\n const x = Math.max(0, Math.min(it.x, safe - w))\n return { ...it, w, x }\n })\n }\n\n /** Update the grid-level `rowHeight` value. */\n function setRowHeight(builderId: string, rowHeight: number): void {\n const schema = ensureBuilder(builderId)\n schema.rowHeight = Math.max(1, Math.floor(rowHeight))\n }\n\n function select(builderId: string, id: string | null): void {\n selections.value[builderId] = { id }\n }\n\n function getSelection(builderId: string): GridBuilderSelection {\n return selections.value[builderId] ?? { id: null }\n }\n\n function getSchema(builderId: string): GridBuilderSchema {\n return ensureBuilder(builderId)\n }\n\n return {\n builders,\n selections,\n ensureBuilder,\n loadSchema,\n resetBuilder,\n addItem,\n removeItem,\n updateItem,\n setCols,\n setRowHeight,\n select,\n getSelection,\n getSchema,\n }\n },\n)\n\nfunction clampColumns(w: number, cols: number): number {\n if (!Number.isFinite(w)) {\n return 1\n }\n return Math.max(1, Math.min(Math.floor(w), cols))\n}\n\n/**\n * Returns the first row index where a new full-width item could be\n * placed without overlapping. The MVP only cares about appending —\n * we use the max occupied row + height.\n */\nfunction nextFreeRow(schema: GridBuilderSchema): number {\n if (schema.items.length === 0) {\n return 0\n }\n return schema.items.reduce((max, it) => Math.max(max, it.y + it.h), 0)\n}\n\n/** Composable wrapping store access for a single builder instance. */\nexport function useGridBuilder(builderId: string) {\n const store = useGridBuilderStore()\n store.ensureBuilder(builderId)\n return {\n schema: computed<GridBuilderSchema>(() => store.getSchema(builderId)),\n selection: computed<GridBuilderSelection>(() =>\n store.getSelection(builderId),\n ),\n addItem: (template?: Partial<Pick<GridBuilderItem, \"w\" | \"h\" | \"label\">>) =>\n store.addItem(builderId, template),\n removeItem: (id: string) => store.removeItem(builderId, id),\n updateItem: (id: string, patch: Partial<Omit<GridBuilderItem, \"id\">>) =>\n store.updateItem(builderId, id, patch),\n setCols: (cols: number) => store.setCols(builderId, cols),\n setRowHeight: (rowHeight: number) =>\n store.setRowHeight(builderId, rowHeight),\n select: (id: string | null) => store.select(builderId, id),\n loadSchema: (schema: GridBuilderSchema) =>\n store.loadSchema(builderId, schema),\n reset: () => store.resetBuilder(builderId),\n }\n}\n"],"names":["idCounter","nextId","prefix","__resetGridBuilderIdCounter","emptySchema","useGridBuilderStore","defineStore","builders","ref","selections","ensureBuilder","builderId","loadSchema","schema","it","resetBuilder","addItem","template","w","clampColumns","h","y","nextFreeRow","id","item","removeItem","itemId","sel","updateItem","patch","idx","merged","next","setCols","cols","safe","x","setRowHeight","rowHeight","select","getSelection","getSchema","max","useGridBuilder","store","computed"],"mappings":";;AAsCA,IAAIA,IAAY;AAChB,SAASC,EAAOC,GAAwB;AACtC,SAAAF,KAAa,GACN,GAAGE,CAAM,IAAI,KAAK,KAAK,IAAIF,CAAS;AAC7C;AAGO,SAASG,IAAoC;AAClD,EAAAH,IAAY;AACd;AAEA,SAASI,IAAiC;AACxC,SAAO,EAAE,MAAM,IAAI,WAAW,IAAI,OAAO,GAAC;AAC5C;AAEO,MAAMC,IAAsBC;AAAA,EACjC;AAAA,EACA,MAAM;AAKJ,UAAMC,IAAWC,EAAuC,EAAE,GACpDC,IAAaD,EAA0C,EAAE;AAE/D,aAASE,EAAcC,GAAsC;AAC3D,aAAKJ,EAAS,MAAMI,CAAS,MAC3BJ,EAAS,MAAMI,CAAS,IAAIP,EAAA,GAC5BK,EAAW,MAAME,CAAS,IAAI,EAAE,IAAI,KAAA,IAE/BJ,EAAS,MAAMI,CAAS;AAAA,IACjC;AAEA,aAASC,EAAWD,GAAmBE,GAAiC;AACtE,MAAAN,EAAS,MAAMI,CAAS,IAAI;AAAA,QAC1B,MAAME,EAAO;AAAA,QACb,WAAWA,EAAO;AAAA,QAClB,OAAOA,EAAO,MAAM,IAAI,CAACC,OAAQ,EAAE,GAAGA,IAAK;AAAA,MAAA,GAE7CL,EAAW,MAAME,CAAS,IAAI,EAAE,IAAI,KAAA;AAAA,IACtC;AAEA,aAASI,EAAaJ,GAAyB;AAC7C,aAAOJ,EAAS,MAAMI,CAAS,GAC/B,OAAOF,EAAW,MAAME,CAAS;AAAA,IACnC;AAMA,aAASK,EACPL,GACAM,GACQ;AACR,YAAMJ,IAASH,EAAcC,CAAS,GAChCO,IAAIC,GAAaF,KAAA,gBAAAA,EAAU,MAAK,GAAGJ,EAAO,IAAI,GAC9CO,IAAI,KAAK,IAAI,IAAGH,KAAA,gBAAAA,EAAU,MAAK,CAAC,GAChCI,IAAIC,EAAYT,CAAM,GACtBU,IAAKtB,EAAO,IAAI,GAChBuB,IAAwB;AAAA,QAC5B,IAAAD;AAAA,QACA,QAAON,KAAA,gBAAAA,EAAU,UAAS,QAAQJ,EAAO,MAAM,SAAS,CAAC;AAAA,QACzD,GAAG;AAAA,QACH,GAAAQ;AAAA,QACA,GAAAH;AAAA,QACA,GAAAE;AAAA,MAAA;AAEF,aAAAP,EAAO,QAAQ,CAAC,GAAGA,EAAO,OAAOW,CAAI,GAC9BD;AAAA,IACT;AAGA,aAASE,EAAWd,GAAmBe,GAAsB;AAC3D,YAAMb,IAASH,EAAcC,CAAS;AACtC,MAAAE,EAAO,QAAQA,EAAO,MAAM,OAAO,CAACC,MAAOA,EAAG,OAAOY,CAAM;AAC3D,YAAMC,IAAMlB,EAAW,MAAME,CAAS;AACtC,OAAIgB,KAAA,gBAAAA,EAAK,QAAOD,MACdjB,EAAW,MAAME,CAAS,IAAI,EAAE,IAAI,KAAA;AAAA,IAExC;AAGA,aAASiB,EACPjB,GACAe,GACAG,GACM;AACN,YAAMhB,IAASH,EAAcC,CAAS,GAChCmB,IAAMjB,EAAO,MAAM,UAAU,CAACC,MAAOA,EAAG,OAAOY,CAAM;AAC3D,UAAII,IAAM;AACR;AAGF,YAAMC,IAA0B;AAAA,QAC9B,GAFclB,EAAO,MAAMiB,CAAG;AAAA,QAG9B,GAAGD;AAAA,MAAA;AAGL,MAAAE,EAAO,IAAIZ,EAAaY,EAAO,GAAGlB,EAAO,IAAI,GAC7CkB,EAAO,IAAI,KAAK,IAAI,GAAGA,EAAO,CAAC,GAC/BA,EAAO,IAAI,KAAK,IAAI,GAAG,KAAK,IAAIA,EAAO,GAAGlB,EAAO,OAAOkB,EAAO,CAAC,CAAC,GACjEA,EAAO,IAAI,KAAK,IAAI,GAAGA,EAAO,CAAC;AAC/B,YAAMC,IAAO,CAAC,GAAGnB,EAAO,KAAK;AAC7B,MAAAmB,EAAKF,CAAG,IAAIC,GACZlB,EAAO,QAAQmB;AAAA,IACjB;AAGA,aAASC,EAAQtB,GAAmBuB,GAAoB;AACtD,YAAMrB,IAASH,EAAcC,CAAS,GAChCwB,IAAO,KAAK,IAAI,GAAG,KAAK,MAAMD,CAAI,CAAC;AACzC,MAAArB,EAAO,OAAOsB,GAEdtB,EAAO,QAAQA,EAAO,MAAM,IAAI,CAACC,MAAO;AACtC,cAAMI,IAAIC,EAAaL,EAAG,GAAGqB,CAAI,GAC3BC,IAAI,KAAK,IAAI,GAAG,KAAK,IAAItB,EAAG,GAAGqB,IAAOjB,CAAC,CAAC;AAC9C,eAAO,EAAE,GAAGJ,GAAI,GAAAI,GAAG,GAAAkB,EAAA;AAAA,MACrB,CAAC;AAAA,IACH;AAGA,aAASC,EAAa1B,GAAmB2B,GAAyB;AAChE,YAAMzB,IAASH,EAAcC,CAAS;AACtC,MAAAE,EAAO,YAAY,KAAK,IAAI,GAAG,KAAK,MAAMyB,CAAS,CAAC;AAAA,IACtD;AAEA,aAASC,EAAO5B,GAAmBY,GAAyB;AAC1D,MAAAd,EAAW,MAAME,CAAS,IAAI,EAAE,IAAAY,EAAA;AAAA,IAClC;AAEA,aAASiB,EAAa7B,GAAyC;AAC7D,aAAOF,EAAW,MAAME,CAAS,KAAK,EAAE,IAAI,KAAA;AAAA,IAC9C;AAEA,aAAS8B,EAAU9B,GAAsC;AACvD,aAAOD,EAAcC,CAAS;AAAA,IAChC;AAEA,WAAO;AAAA,MACL,UAAAJ;AAAA,MACA,YAAAE;AAAA,MACA,eAAAC;AAAA,MACA,YAAAE;AAAA,MACA,cAAAG;AAAA,MACA,SAAAC;AAAA,MACA,YAAAS;AAAA,MACA,YAAAG;AAAA,MACA,SAAAK;AAAA,MACA,cAAAI;AAAA,MACA,QAAAE;AAAA,MACA,cAAAC;AAAA,MACA,WAAAC;AAAA,IAAA;AAAA,EAEJ;AACF;AAEA,SAAStB,EAAaD,GAAWgB,GAAsB;AACrD,SAAK,OAAO,SAAShB,CAAC,IAGf,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,MAAMA,CAAC,GAAGgB,CAAI,CAAC,IAFvC;AAGX;AAOA,SAASZ,EAAYT,GAAmC;AACtD,SAAIA,EAAO,MAAM,WAAW,IACnB,IAEFA,EAAO,MAAM,OAAO,CAAC6B,GAAK5B,MAAO,KAAK,IAAI4B,GAAK5B,EAAG,IAAIA,EAAG,CAAC,GAAG,CAAC;AACvE;AAGO,SAAS6B,EAAehC,GAAmB;AAChD,QAAMiC,IAAQvC,EAAA;AACd,SAAAuC,EAAM,cAAcjC,CAAS,GACtB;AAAA,IACL,QAAQkC,EAA4B,MAAMD,EAAM,UAAUjC,CAAS,CAAC;AAAA,IACpE,WAAWkC;AAAA,MAA+B,MACxCD,EAAM,aAAajC,CAAS;AAAA,IAAA;AAAA,IAE9B,SAAS,CAACM,MACR2B,EAAM,QAAQjC,GAAWM,CAAQ;AAAA,IACnC,YAAY,CAACM,MAAeqB,EAAM,WAAWjC,GAAWY,CAAE;AAAA,IAC1D,YAAY,CAACA,GAAYM,MACvBe,EAAM,WAAWjC,GAAWY,GAAIM,CAAK;AAAA,IACvC,SAAS,CAACK,MAAiBU,EAAM,QAAQjC,GAAWuB,CAAI;AAAA,IACxD,cAAc,CAACI,MACbM,EAAM,aAAajC,GAAW2B,CAAS;AAAA,IACzC,QAAQ,CAACf,MAAsBqB,EAAM,OAAOjC,GAAWY,CAAE;AAAA,IACzD,YAAY,CAACV,MACX+B,EAAM,WAAWjC,GAAWE,CAAM;AAAA,IACpC,OAAO,MAAM+B,EAAM,aAAajC,CAAS;AAAA,EAAA;AAE7C;"}
1
+ {"version":3,"file":"gridBuilderStore.js","sources":["../../src/stores/gridBuilderStore.ts"],"sourcesContent":["import { defineStore } from \"pinia\"\nimport { computed, ref } from \"vue\"\n\n/**\n * A single cell in the grid layout. The shape mirrors the\n * `GridItem` used by `GridViewCard` but is flattened down to the\n * minimum a designer cares about: a label, a column/row position,\n * and a column/row span.\n */\nexport interface GridBuilderItem {\n id: string\n /** Display label shown in the canvas. */\n label: string\n /** 12-column grid x position (0-indexed). */\n x: number\n /** Row position (0-indexed). */\n y: number\n /** Width in column units (1-12). */\n w: number\n /** Height in row units. */\n h: number\n}\n\n/** Full grid schema produced by the builder. */\nexport interface GridBuilderSchema {\n /** Number of columns in the grid. Default 12. */\n cols: number\n /** Pixel height of a single row. Default 60. */\n rowHeight: number\n /** Ordered list of grid items. */\n items: GridBuilderItem[]\n}\n\n/** Identifies which grid item is currently selected. */\nexport interface GridBuilderSelection {\n id: string | null\n}\n\nlet idCounter = 0\nfunction nextId(prefix: string): string {\n idCounter += 1\n return `${prefix}-${Date.now()}-${idCounter}`\n}\n\n/** Test helper to make ids deterministic. */\nexport function __resetGridBuilderIdCounter(): void {\n idCounter = 0\n}\n\nfunction emptySchema(): GridBuilderSchema {\n return { cols: 12, rowHeight: 60, items: [] }\n}\n\nexport const useGridBuilderStore = defineStore(\n \"gx-modui/gridBuilder\",\n () => {\n /**\n * Per-builder state, keyed by `builderId`. Lets multiple builders\n * coexist on the same page without colliding.\n */\n const builders = ref<Record<string, GridBuilderSchema>>({})\n const selections = ref<Record<string, GridBuilderSelection>>({})\n\n function ensureBuilder(builderId: string): GridBuilderSchema {\n if (!builders.value[builderId]) {\n builders.value[builderId] = emptySchema()\n selections.value[builderId] = { id: null }\n }\n return builders.value[builderId]!\n }\n\n function loadSchema(builderId: string, schema: GridBuilderSchema): void {\n builders.value[builderId] = {\n cols: schema.cols,\n rowHeight: schema.rowHeight,\n items: schema.items.map((it) => ({ ...it })),\n }\n selections.value[builderId] = { id: null }\n }\n\n function resetBuilder(builderId: string): void {\n delete builders.value[builderId]\n delete selections.value[builderId]\n }\n\n /**\n * Append a fresh grid item at the next available row, sized to\n * `template`. Returns the new item's id.\n */\n function addItem(\n builderId: string,\n template?: Partial<Pick<GridBuilderItem, \"w\" | \"h\" | \"label\">>,\n ): string {\n const schema = ensureBuilder(builderId)\n const w = clampColumns(template?.w ?? 1, schema.cols)\n const h = Math.max(1, template?.h ?? 1)\n const y = nextFreeRow(schema)\n const id = nextId(\"gi\")\n const item: GridBuilderItem = {\n id,\n label: template?.label ?? `Cell ${schema.items.length + 1}`,\n x: 0,\n y,\n w,\n h,\n }\n schema.items = [...schema.items, item]\n return id\n }\n\n /** Remove an item by id. */\n function removeItem(builderId: string, itemId: string): void {\n const schema = ensureBuilder(builderId)\n schema.items = schema.items.filter((it) => it.id !== itemId)\n const sel = selections.value[builderId]\n if (sel?.id === itemId) {\n selections.value[builderId] = { id: null }\n }\n }\n\n /** Patch a grid item's properties. */\n function updateItem(\n builderId: string,\n itemId: string,\n patch: Partial<Omit<GridBuilderItem, \"id\">>,\n ): void {\n const schema = ensureBuilder(builderId)\n const idx = schema.items.findIndex((it) => it.id === itemId)\n if (idx < 0) {\n return\n }\n const current = schema.items[idx]!\n const merged: GridBuilderItem = {\n ...current,\n ...patch,\n }\n // Clamp coordinates to keep the item inside the grid.\n merged.w = clampColumns(merged.w, schema.cols)\n merged.h = Math.max(1, merged.h)\n merged.x = Math.max(0, Math.min(merged.x, schema.cols - merged.w))\n merged.y = Math.max(0, merged.y)\n const next = [...schema.items]\n next[idx] = merged\n schema.items = next\n }\n\n /** Update the grid-level `cols` value. */\n function setCols(builderId: string, cols: number): void {\n const schema = ensureBuilder(builderId)\n const safe = Math.max(1, Math.floor(cols))\n schema.cols = safe\n // Re-clamp every item so nothing overflows the new column count.\n schema.items = schema.items.map((it) => {\n const w = clampColumns(it.w, safe)\n const x = Math.max(0, Math.min(it.x, safe - w))\n return { ...it, w, x }\n })\n }\n\n /** Update the grid-level `rowHeight` value. */\n function setRowHeight(builderId: string, rowHeight: number): void {\n const schema = ensureBuilder(builderId)\n schema.rowHeight = Math.max(1, Math.floor(rowHeight))\n }\n\n function select(builderId: string, id: string | null): void {\n selections.value[builderId] = { id }\n }\n\n function getSelection(builderId: string): GridBuilderSelection {\n return selections.value[builderId] ?? { id: null }\n }\n\n function getSchema(builderId: string): GridBuilderSchema {\n return ensureBuilder(builderId)\n }\n\n return {\n builders,\n selections,\n ensureBuilder,\n loadSchema,\n resetBuilder,\n addItem,\n removeItem,\n updateItem,\n setCols,\n setRowHeight,\n select,\n getSelection,\n getSchema,\n }\n },\n)\n\nfunction clampColumns(w: number, cols: number): number {\n if (!Number.isFinite(w)) {\n return 1\n }\n return Math.max(1, Math.min(Math.floor(w), cols))\n}\n\n/**\n * Returns the first row index where a new full-width item could be\n * placed without overlapping. The MVP only cares about appending —\n * we use the max occupied row + height.\n */\nfunction nextFreeRow(schema: GridBuilderSchema): number {\n if (schema.items.length === 0) {\n return 0\n }\n return schema.items.reduce((max, it) => Math.max(max, it.y + it.h), 0)\n}\n\n/** Composable wrapping store access for a single builder instance. */\nexport function useGridBuilder(builderId: string) {\n const store = useGridBuilderStore()\n store.ensureBuilder(builderId)\n return {\n schema: computed<GridBuilderSchema>(() => store.getSchema(builderId)),\n selection: computed<GridBuilderSelection>(() =>\n store.getSelection(builderId),\n ),\n addItem: (template?: Partial<Pick<GridBuilderItem, \"w\" | \"h\" | \"label\">>) =>\n store.addItem(builderId, template),\n removeItem: (id: string) => store.removeItem(builderId, id),\n updateItem: (id: string, patch: Partial<Omit<GridBuilderItem, \"id\">>) =>\n store.updateItem(builderId, id, patch),\n setCols: (cols: number) => store.setCols(builderId, cols),\n setRowHeight: (rowHeight: number) =>\n store.setRowHeight(builderId, rowHeight),\n select: (id: string | null) => store.select(builderId, id),\n loadSchema: (schema: GridBuilderSchema) =>\n store.loadSchema(builderId, schema),\n reset: () => store.resetBuilder(builderId),\n }\n}\n"],"names":["idCounter","nextId","prefix","__resetGridBuilderIdCounter","emptySchema","useGridBuilderStore","defineStore","builders","ref","selections","ensureBuilder","builderId","loadSchema","schema","it","resetBuilder","addItem","template","w","clampColumns","h","y","nextFreeRow","id","item","removeItem","itemId","sel","updateItem","patch","idx","merged","next","setCols","cols","safe","x","setRowHeight","rowHeight","select","getSelection","getSchema","max","useGridBuilder","store","computed"],"mappings":"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"}