@wavemaker-ai/react-codegen 1.0.0-rc.309

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 (386) hide show
  1. package/build-react-web.js +149 -0
  2. package/build-react-web.js.map +1 -0
  3. package/command.js +106 -0
  4. package/command.js.map +1 -0
  5. package/dist/transpiler/index.d.mts +62 -0
  6. package/dist/transpiler/index.mjs +47857 -0
  7. package/dist/transpiler/index.mjs.map +1 -0
  8. package/dist/transpiler/wm-styles.css +1502 -0
  9. package/index.js +122 -0
  10. package/index.js.map +1 -0
  11. package/package-lock.json +5243 -0
  12. package/package.json +104 -0
  13. package/src/app.generator.js +1274 -0
  14. package/src/app.generator.js.map +1 -0
  15. package/src/download-packages.js +193 -0
  16. package/src/download-packages.js.map +1 -0
  17. package/src/fomatter.js +20 -0
  18. package/src/fomatter.js.map +1 -0
  19. package/src/gen-app-override-css.js +379 -0
  20. package/src/gen-app-override-css.js.map +1 -0
  21. package/src/genappoverridecssold-file.js +311 -0
  22. package/src/genappoverridecssold-file.js.map +1 -0
  23. package/src/handlebar-helpers.js +51 -0
  24. package/src/handlebar-helpers.js.map +1 -0
  25. package/src/increment-builder.js +85 -0
  26. package/src/increment-builder.js.map +1 -0
  27. package/src/profiles/profile.js +24 -0
  28. package/src/profiles/profile.js.map +1 -0
  29. package/src/profiles/web-preview.profile.js +15 -0
  30. package/src/profiles/web-preview.profile.js.map +1 -0
  31. package/src/project.service.js +314 -0
  32. package/src/project.service.js.map +1 -0
  33. package/src/transpile/bind.ex.transformer.js +232 -0
  34. package/src/transpile/bind.ex.transformer.js.map +1 -0
  35. package/src/transpile/components/advanced/carousel-template.transformer.js +16 -0
  36. package/src/transpile/components/advanced/carousel-template.transformer.js.map +1 -0
  37. package/src/transpile/components/advanced/carousel.transformer.js +54 -0
  38. package/src/transpile/components/advanced/carousel.transformer.js.map +1 -0
  39. package/src/transpile/components/advanced/login.transformer.js +25 -0
  40. package/src/transpile/components/advanced/login.transformer.js.map +1 -0
  41. package/src/transpile/components/advanced/marquee.transformer.js +16 -0
  42. package/src/transpile/components/advanced/marquee.transformer.js.map +1 -0
  43. package/src/transpile/components/basic/anchor.transformer.js +13 -0
  44. package/src/transpile/components/basic/anchor.transformer.js.map +1 -0
  45. package/src/transpile/components/basic/audio.transformer.js +16 -0
  46. package/src/transpile/components/basic/audio.transformer.js.map +1 -0
  47. package/src/transpile/components/basic/html.transformer.js +15 -0
  48. package/src/transpile/components/basic/html.transformer.js.map +1 -0
  49. package/src/transpile/components/basic/icon.transformer.js +16 -0
  50. package/src/transpile/components/basic/icon.transformer.js.map +1 -0
  51. package/src/transpile/components/basic/iframe.transformer.js +16 -0
  52. package/src/transpile/components/basic/iframe.transformer.js.map +1 -0
  53. package/src/transpile/components/basic/label.transformer.js +16 -0
  54. package/src/transpile/components/basic/label.transformer.js.map +1 -0
  55. package/src/transpile/components/basic/message.transformer.js +16 -0
  56. package/src/transpile/components/basic/message.transformer.js.map +1 -0
  57. package/src/transpile/components/basic/picture.transformer.js +22 -0
  58. package/src/transpile/components/basic/picture.transformer.js.map +1 -0
  59. package/src/transpile/components/basic/progress-bar.transformer.js +18 -0
  60. package/src/transpile/components/basic/progress-bar.transformer.js.map +1 -0
  61. package/src/transpile/components/basic/progress-circle.transformer.js +16 -0
  62. package/src/transpile/components/basic/progress-circle.transformer.js.map +1 -0
  63. package/src/transpile/components/basic/richtexteditor.transformer.js +21 -0
  64. package/src/transpile/components/basic/richtexteditor.transformer.js.map +1 -0
  65. package/src/transpile/components/basic/search.transformer.js +68 -0
  66. package/src/transpile/components/basic/search.transformer.js.map +1 -0
  67. package/src/transpile/components/basic/spinner.transformer.js +16 -0
  68. package/src/transpile/components/basic/spinner.transformer.js.map +1 -0
  69. package/src/transpile/components/basic/tree.transformer.js +16 -0
  70. package/src/transpile/components/basic/tree.transformer.js.map +1 -0
  71. package/src/transpile/components/basic/video.transformer.js +16 -0
  72. package/src/transpile/components/basic/video.transformer.js.map +1 -0
  73. package/src/transpile/components/chart/chart.transformer.js +13 -0
  74. package/src/transpile/components/chart/chart.transformer.js.map +1 -0
  75. package/src/transpile/components/container/accordion-pane.transformer.js +44 -0
  76. package/src/transpile/components/container/accordion-pane.transformer.js.map +1 -0
  77. package/src/transpile/components/container/accordion.transformer.js +48 -0
  78. package/src/transpile/components/container/accordion.transformer.js.map +1 -0
  79. package/src/transpile/components/container/container.transformer.js +39 -0
  80. package/src/transpile/components/container/container.transformer.js.map +1 -0
  81. package/src/transpile/components/container/layout-grid/grid-column.transformer.js +16 -0
  82. package/src/transpile/components/container/layout-grid/grid-column.transformer.js.map +1 -0
  83. package/src/transpile/components/container/layout-grid/grid-row.transformer.js +16 -0
  84. package/src/transpile/components/container/layout-grid/grid-row.transformer.js.map +1 -0
  85. package/src/transpile/components/container/layout-grid/grid.transformer.js +16 -0
  86. package/src/transpile/components/container/layout-grid/grid.transformer.js.map +1 -0
  87. package/src/transpile/components/container/linear-layout/linear-layout-item.js +16 -0
  88. package/src/transpile/components/container/linear-layout/linear-layout-item.js.map +1 -0
  89. package/src/transpile/components/container/linear-layout/linear-layout.js +16 -0
  90. package/src/transpile/components/container/linear-layout/linear-layout.js.map +1 -0
  91. package/src/transpile/components/container/panel-content.transformer.js +16 -0
  92. package/src/transpile/components/container/panel-content.transformer.js.map +1 -0
  93. package/src/transpile/components/container/panel-footer.transformer.js +11 -0
  94. package/src/transpile/components/container/panel-footer.transformer.js.map +1 -0
  95. package/src/transpile/components/container/panel.transformer.js +36 -0
  96. package/src/transpile/components/container/panel.transformer.js.map +1 -0
  97. package/src/transpile/components/container/repeat-template.transformer.js +16 -0
  98. package/src/transpile/components/container/repeat-template.transformer.js.map +1 -0
  99. package/src/transpile/components/container/tabheader.transformer.js +13 -0
  100. package/src/transpile/components/container/tabheader.transformer.js.map +1 -0
  101. package/src/transpile/components/container/tabpane.transformer.js +48 -0
  102. package/src/transpile/components/container/tabpane.transformer.js.map +1 -0
  103. package/src/transpile/components/container/tabs.transformer.js +71 -0
  104. package/src/transpile/components/container/tabs.transformer.js.map +1 -0
  105. package/src/transpile/components/container/tile.transformer.js +16 -0
  106. package/src/transpile/components/container/tile.transformer.js.map +1 -0
  107. package/src/transpile/components/container/wizard.transformer.js +80 -0
  108. package/src/transpile/components/container/wizard.transformer.js.map +1 -0
  109. package/src/transpile/components/container/wizardaction.transformer.js +120 -0
  110. package/src/transpile/components/container/wizardaction.transformer.js.map +1 -0
  111. package/src/transpile/components/container/wizardstep.transformer.js +99 -0
  112. package/src/transpile/components/container/wizardstep.transformer.js.map +1 -0
  113. package/src/transpile/components/data/card/card-actions.transformer.js +13 -0
  114. package/src/transpile/components/data/card/card-actions.transformer.js.map +1 -0
  115. package/src/transpile/components/data/card/card-content.transformer.js +33 -0
  116. package/src/transpile/components/data/card/card-content.transformer.js.map +1 -0
  117. package/src/transpile/components/data/card/card-footer.transformer.js +13 -0
  118. package/src/transpile/components/data/card/card-footer.transformer.js.map +1 -0
  119. package/src/transpile/components/data/card/card.transformer.js +13 -0
  120. package/src/transpile/components/data/card/card.transformer.js.map +1 -0
  121. package/src/transpile/components/data/form/dynamic-fields.transformer.js +24 -0
  122. package/src/transpile/components/data/form/dynamic-fields.transformer.js.map +1 -0
  123. package/src/transpile/components/data/form/form-action.transformer.js +145 -0
  124. package/src/transpile/components/data/form/form-action.transformer.js.map +1 -0
  125. package/src/transpile/components/data/form/form-body.transformer.js +16 -0
  126. package/src/transpile/components/data/form/form-body.transformer.js.map +1 -0
  127. package/src/transpile/components/data/form/form-field.transformer.js +442 -0
  128. package/src/transpile/components/data/form/form-field.transformer.js.map +1 -0
  129. package/src/transpile/components/data/form/form-footer.transformer.js +16 -0
  130. package/src/transpile/components/data/form/form-footer.transformer.js.map +1 -0
  131. package/src/transpile/components/data/form/form.transformer.js +166 -0
  132. package/src/transpile/components/data/form/form.transformer.js.map +1 -0
  133. package/src/transpile/components/data/form/util.js +70 -0
  134. package/src/transpile/components/data/form/util.js.map +1 -0
  135. package/src/transpile/components/data/list/list-content.transformer.js +35 -0
  136. package/src/transpile/components/data/list/list-content.transformer.js.map +1 -0
  137. package/src/transpile/components/data/list/list-template-transformer.js +22 -0
  138. package/src/transpile/components/data/list/list-template-transformer.js.map +1 -0
  139. package/src/transpile/components/data/list/list-transformer.js +287 -0
  140. package/src/transpile/components/data/list/list-transformer.js.map +1 -0
  141. package/src/transpile/components/data/live-filter-field.transformer.js +436 -0
  142. package/src/transpile/components/data/live-filter-field.transformer.js.map +1 -0
  143. package/src/transpile/components/data/livefilter.transformer.js +140 -0
  144. package/src/transpile/components/data/livefilter.transformer.js.map +1 -0
  145. package/src/transpile/components/data/liveform.transformer.js +159 -0
  146. package/src/transpile/components/data/liveform.transformer.js.map +1 -0
  147. package/src/transpile/components/data/table/live-table.transformer.js +15 -0
  148. package/src/transpile/components/data/table/live-table.transformer.js.map +1 -0
  149. package/src/transpile/components/data/table/table-action.transformer.js +29 -0
  150. package/src/transpile/components/data/table/table-action.transformer.js.map +1 -0
  151. package/src/transpile/components/data/table/table-column.transformer.js +121 -0
  152. package/src/transpile/components/data/table/table-column.transformer.js.map +1 -0
  153. package/src/transpile/components/data/table/table-group.transformer.js +16 -0
  154. package/src/transpile/components/data/table/table-group.transformer.js.map +1 -0
  155. package/src/transpile/components/data/table/table-row-action.transformer.js +34 -0
  156. package/src/transpile/components/data/table/table-row-action.transformer.js.map +1 -0
  157. package/src/transpile/components/data/table/table-row.transformer.js +46 -0
  158. package/src/transpile/components/data/table/table-row.transformer.js.map +1 -0
  159. package/src/transpile/components/data/table/table.transformer.js +64 -0
  160. package/src/transpile/components/data/table/table.transformer.js.map +1 -0
  161. package/src/transpile/components/data/table/utils.js +89 -0
  162. package/src/transpile/components/data/table/utils.js.map +1 -0
  163. package/src/transpile/components/dialogs/alert-dialog.transformer.js +16 -0
  164. package/src/transpile/components/dialogs/alert-dialog.transformer.js.map +1 -0
  165. package/src/transpile/components/dialogs/confirm-dialog.transformer.js +16 -0
  166. package/src/transpile/components/dialogs/confirm-dialog.transformer.js.map +1 -0
  167. package/src/transpile/components/dialogs/dialog-actions.transformer.js +56 -0
  168. package/src/transpile/components/dialogs/dialog-actions.transformer.js.map +1 -0
  169. package/src/transpile/components/dialogs/dialog-body.transformer.js +13 -0
  170. package/src/transpile/components/dialogs/dialog-body.transformer.js.map +1 -0
  171. package/src/transpile/components/dialogs/dialog.transformer.js +26 -0
  172. package/src/transpile/components/dialogs/dialog.transformer.js.map +1 -0
  173. package/src/transpile/components/dialogs/iframe-dialog.transformer.js +16 -0
  174. package/src/transpile/components/dialogs/iframe-dialog.transformer.js.map +1 -0
  175. package/src/transpile/components/dialogs/login-dialog.transformer.js +44 -0
  176. package/src/transpile/components/dialogs/login-dialog.transformer.js.map +1 -0
  177. package/src/transpile/components/dialogs/page-dialog.transformer.js +16 -0
  178. package/src/transpile/components/dialogs/page-dialog.transformer.js.map +1 -0
  179. package/src/transpile/components/element/html-transformer.js +9 -0
  180. package/src/transpile/components/element/html-transformer.js.map +1 -0
  181. package/src/transpile/components/form/button-group.transformer.js +16 -0
  182. package/src/transpile/components/form/button-group.transformer.js.map +1 -0
  183. package/src/transpile/components/form/button.transformer.js +27 -0
  184. package/src/transpile/components/form/button.transformer.js.map +1 -0
  185. package/src/transpile/components/form/rating.transformer.js +19 -0
  186. package/src/transpile/components/form/rating.transformer.js.map +1 -0
  187. package/src/transpile/components/input/calendar.transformer.js +13 -0
  188. package/src/transpile/components/input/calendar.transformer.js.map +1 -0
  189. package/src/transpile/components/input/checkbox-set.transformer.js +29 -0
  190. package/src/transpile/components/input/checkbox-set.transformer.js.map +1 -0
  191. package/src/transpile/components/input/checkbox.transformer.js +47 -0
  192. package/src/transpile/components/input/checkbox.transformer.js.map +1 -0
  193. package/src/transpile/components/input/chips.transformer.js +22 -0
  194. package/src/transpile/components/input/chips.transformer.js.map +1 -0
  195. package/src/transpile/components/input/color-picker.transformer.js +19 -0
  196. package/src/transpile/components/input/color-picker.transformer.js.map +1 -0
  197. package/src/transpile/components/input/composite.transformer.js +16 -0
  198. package/src/transpile/components/input/composite.transformer.js.map +1 -0
  199. package/src/transpile/components/input/currency.transformer.js +21 -0
  200. package/src/transpile/components/input/currency.transformer.js.map +1 -0
  201. package/src/transpile/components/input/epoch/date.transformer.js +16 -0
  202. package/src/transpile/components/input/epoch/date.transformer.js.map +1 -0
  203. package/src/transpile/components/input/epoch/datetime.transformer.js +16 -0
  204. package/src/transpile/components/input/epoch/datetime.transformer.js.map +1 -0
  205. package/src/transpile/components/input/epoch/time.transformer.js +16 -0
  206. package/src/transpile/components/input/epoch/time.transformer.js.map +1 -0
  207. package/src/transpile/components/input/file-upload.transformer.js +32 -0
  208. package/src/transpile/components/input/file-upload.transformer.js.map +1 -0
  209. package/src/transpile/components/input/number.transformer.js +20 -0
  210. package/src/transpile/components/input/number.transformer.js.map +1 -0
  211. package/src/transpile/components/input/radio-set.transformer.js +25 -0
  212. package/src/transpile/components/input/radio-set.transformer.js.map +1 -0
  213. package/src/transpile/components/input/rating.transformer.js +20 -0
  214. package/src/transpile/components/input/rating.transformer.js.map +1 -0
  215. package/src/transpile/components/input/select.transformer.js +57 -0
  216. package/src/transpile/components/input/select.transformer.js.map +1 -0
  217. package/src/transpile/components/input/slider.transformer.js +28 -0
  218. package/src/transpile/components/input/slider.transformer.js.map +1 -0
  219. package/src/transpile/components/input/switch.transformer.js +21 -0
  220. package/src/transpile/components/input/switch.transformer.js.map +1 -0
  221. package/src/transpile/components/input/text.transformer.js +21 -0
  222. package/src/transpile/components/input/text.transformer.js.map +1 -0
  223. package/src/transpile/components/input/textarea.transformer.js +19 -0
  224. package/src/transpile/components/input/textarea.transformer.js.map +1 -0
  225. package/src/transpile/components/input/upload.transformer.js +19 -0
  226. package/src/transpile/components/input/upload.transformer.js.map +1 -0
  227. package/src/transpile/components/layout/footer.transformer.js +48 -0
  228. package/src/transpile/components/layout/footer.transformer.js.map +1 -0
  229. package/src/transpile/components/layout/header.transformer.js +48 -0
  230. package/src/transpile/components/layout/header.transformer.js.map +1 -0
  231. package/src/transpile/components/layout/leftnav.transformer.js +48 -0
  232. package/src/transpile/components/layout/leftnav.transformer.js.map +1 -0
  233. package/src/transpile/components/layout/rightnav.transformer.js +48 -0
  234. package/src/transpile/components/layout/rightnav.transformer.js.map +1 -0
  235. package/src/transpile/components/layout/topnav.transformer.js +48 -0
  236. package/src/transpile/components/layout/topnav.transformer.js.map +1 -0
  237. package/src/transpile/components/nav/nav-item.transformer.js +24 -0
  238. package/src/transpile/components/nav/nav-item.transformer.js.map +1 -0
  239. package/src/transpile/components/nav/nav.transformer.js +68 -0
  240. package/src/transpile/components/nav/nav.transformer.js.map +1 -0
  241. package/src/transpile/components/nav/navbar.transformer.js +120 -0
  242. package/src/transpile/components/nav/navbar.transformer.js.map +1 -0
  243. package/src/transpile/components/navigation/breadcrumb.transformer.js +16 -0
  244. package/src/transpile/components/navigation/breadcrumb.transformer.js.map +1 -0
  245. package/src/transpile/components/navigation/menu.transformer.js +36 -0
  246. package/src/transpile/components/navigation/menu.transformer.js.map +1 -0
  247. package/src/transpile/components/navigation/popover.transformer.js +39 -0
  248. package/src/transpile/components/navigation/popover.transformer.js.map +1 -0
  249. package/src/transpile/components/page/content.transformer.js +17 -0
  250. package/src/transpile/components/page/content.transformer.js.map +1 -0
  251. package/src/transpile/components/page/page-content.transformer.js +17 -0
  252. package/src/transpile/components/page/page-content.transformer.js.map +1 -0
  253. package/src/transpile/components/page/page.transformer.js +50 -0
  254. package/src/transpile/components/page/page.transformer.js.map +1 -0
  255. package/src/transpile/components/page/partial-container.transformer.js +61 -0
  256. package/src/transpile/components/page/partial-container.transformer.js.map +1 -0
  257. package/src/transpile/components/page/partial.transformer.js +19 -0
  258. package/src/transpile/components/page/partial.transformer.js.map +1 -0
  259. package/src/transpile/components/partial/partial-content.transformer.js +56 -0
  260. package/src/transpile/components/partial/partial-content.transformer.js.map +1 -0
  261. package/src/transpile/components/prefab/prefab-container.transformer.js +32 -0
  262. package/src/transpile/components/prefab/prefab-container.transformer.js.map +1 -0
  263. package/src/transpile/components/prefab/prefab.transformer.js +91 -0
  264. package/src/transpile/components/prefab/prefab.transformer.js.map +1 -0
  265. package/src/transpile/components/transform-register.js +247 -0
  266. package/src/transpile/components/transform-register.js.map +1 -0
  267. package/src/transpile/components/utils.js +371 -0
  268. package/src/transpile/components/utils.js.map +1 -0
  269. package/src/transpile/components/wmx-component/wmx-component.transformer.js +35 -0
  270. package/src/transpile/components/wmx-component/wmx-component.transformer.js.map +1 -0
  271. package/src/transpile/id-generator.js +87 -0
  272. package/src/transpile/id-generator.js.map +1 -0
  273. package/src/transpile/index.js +65 -0
  274. package/src/transpile/index.js.map +1 -0
  275. package/src/transpile/property/base-parser.js +13 -0
  276. package/src/transpile/property/base-parser.js.map +1 -0
  277. package/src/transpile/property/property-parser.js +277 -0
  278. package/src/transpile/property/property-parser.js.map +1 -0
  279. package/src/transpile/property/show-in-device.parser.js +17 -0
  280. package/src/transpile/property/show-in-device.parser.js.map +1 -0
  281. package/src/transpile/serialize-variables.js +322 -0
  282. package/src/transpile/serialize-variables.js.map +1 -0
  283. package/src/transpile/style/background-image.parser.js +20 -0
  284. package/src/transpile/style/background-image.parser.js.map +1 -0
  285. package/src/transpile/style/border-width.parser.js +20 -0
  286. package/src/transpile/style/border-width.parser.js.map +1 -0
  287. package/src/transpile/style/dimension-style.parser.js +70 -0
  288. package/src/transpile/style/dimension-style.parser.js.map +1 -0
  289. package/src/transpile/style/horizontal-align.parser.js +24 -0
  290. package/src/transpile/style/horizontal-align.parser.js.map +1 -0
  291. package/src/transpile/style/margin.parser.js +20 -0
  292. package/src/transpile/style/margin.parser.js.map +1 -0
  293. package/src/transpile/style/multi-dimension-style.parser.js +29 -0
  294. package/src/transpile/style/multi-dimension-style.parser.js.map +1 -0
  295. package/src/transpile/style/numeric-style.parser.js +18 -0
  296. package/src/transpile/style/numeric-style.parser.js.map +1 -0
  297. package/src/transpile/style/padding.parser.js +20 -0
  298. package/src/transpile/style/padding.parser.js.map +1 -0
  299. package/src/transpile/style/split-css-shorthand.js +60 -0
  300. package/src/transpile/style/split-css-shorthand.js.map +1 -0
  301. package/src/transpile/style/style.parser.js +15 -0
  302. package/src/transpile/style/style.parser.js.map +1 -0
  303. package/src/transpile/style.transformer.js +124 -0
  304. package/src/transpile/style.transformer.js.map +1 -0
  305. package/src/transpile/transform-markup.js +283 -0
  306. package/src/transpile/transform-markup.js.map +1 -0
  307. package/src/transpile/transpile-variables.js +35 -0
  308. package/src/transpile/transpile-variables.js.map +1 -0
  309. package/src/transpile/transpile.js +1098 -0
  310. package/src/transpile/transpile.js.map +1 -0
  311. package/src/transpile/transpiler.js +26 -0
  312. package/src/transpile/transpiler.js.map +1 -0
  313. package/src/transpile/variables-template-source.js +6 -0
  314. package/src/transpile/variables-template-source.js.map +1 -0
  315. package/src/transpile/variables-template.js +15 -0
  316. package/src/transpile/variables-template.js.map +1 -0
  317. package/src/transpile/widget-inline-style-constants.js +200 -0
  318. package/src/transpile/widget-inline-style-constants.js.map +1 -0
  319. package/src/transpile/widget-inline-style-processor.js +684 -0
  320. package/src/transpile/widget-inline-style-processor.js.map +1 -0
  321. package/src/types/index.js +6 -0
  322. package/src/types/index.js.map +1 -0
  323. package/src/utils/grouping-util.js +500 -0
  324. package/src/utils/grouping-util.js.map +1 -0
  325. package/src/utils.browser.js +853 -0
  326. package/src/utils.browser.js.map +1 -0
  327. package/src/utils.js +988 -0
  328. package/src/utils.js.map +1 -0
  329. package/src/variables/variable.transformer.js +690 -0
  330. package/src/variables/variable.transformer.js.map +1 -0
  331. package/src/wmx.generator.js +216 -0
  332. package/src/wmx.generator.js.map +1 -0
  333. package/templates/.DS_Store +0 -0
  334. package/templates/app.style.template +3 -0
  335. package/templates/app.variables.template +1 -0
  336. package/templates/component/app.libs.hbs +38 -0
  337. package/templates/component/app.script.hbs +8 -0
  338. package/templates/component/app.template.hbs +47 -0
  339. package/templates/component/component.hbs +79 -0
  340. package/templates/component/component.props.template +1 -0
  341. package/templates/component/formatter.hbs +8 -0
  342. package/templates/component/layout.hbs +32 -0
  343. package/templates/component/page.hbs +16 -0
  344. package/templates/component/partial.hbs +69 -0
  345. package/templates/component/script.template +6 -0
  346. package/templates/component/style-def.template +18 -0
  347. package/templates/component/style.template +1 -0
  348. package/templates/entity-provider.template +21 -0
  349. package/templates/foundation/layout.tsx +30 -0
  350. package/templates/pages-config.template +12 -0
  351. package/templates/partial-config.template +58 -0
  352. package/templates/project/.DS_Store +0 -0
  353. package/templates/project/.env +1 -0
  354. package/templates/project/.gitignore +2 -0
  355. package/templates/project/.prettierrc +8 -0
  356. package/templates/project/README.md +60 -0
  357. package/templates/project/app/autoLayout.css +133 -0
  358. package/templates/project/app/client.layout.tsx +193 -0
  359. package/templates/project/app/components.css +182 -0
  360. package/templates/project/app/error.tsx +27 -0
  361. package/templates/project/app/globals.css +5 -0
  362. package/templates/project/app/layout.tsx +40 -0
  363. package/templates/project/app/loading.tsx +6 -0
  364. package/templates/project/app/page.tsx +3 -0
  365. package/templates/project/app/widgetInlineStylesOverride.css +1027 -0
  366. package/templates/project/app/wm-globals.css +152 -0
  367. package/templates/project/app/wm-styles.css +4 -0
  368. package/templates/project/hooks/usePageEvents.tsx +45 -0
  369. package/templates/project/libs/appConfig.ts +14 -0
  370. package/templates/project/next-env.d.ts +5 -0
  371. package/templates/project/next.config.ts +17 -0
  372. package/templates/project/package-lock.json +5397 -0
  373. package/templates/project/package.json +41 -0
  374. package/templates/project/public/error-fallback.svg +89 -0
  375. package/templates/project/public/file.svg +1 -0
  376. package/templates/project/public/globe.svg +1 -0
  377. package/templates/project/public/next.svg +1 -0
  378. package/templates/project/public/vercel.svg +1 -0
  379. package/templates/project/public/window.svg +1 -0
  380. package/templates/project/scripts/app-custom-server.js +44 -0
  381. package/templates/project/scripts/getlibs.js +53 -0
  382. package/templates/project/tsconfig.json +36 -0
  383. package/templates/project/types/runtime-config.d.ts +9 -0
  384. package/templates/resource.resolver.template +20 -0
  385. package/templates/service.defs.template +3 -0
  386. package/templates/variables.template +252 -0
@@ -0,0 +1,684 @@
1
+ "use strict";
2
+ // Converts static autoLayout and style attributes into Tailwind-like CSS utility classes.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AutolayoutCodegen = void 0;
5
+ const widget_inline_style_constants_1 = require("./widget-inline-style-constants");
6
+ const utils_browser_1 = require("../utils.browser");
7
+ const split_css_shorthand_1 = require("./style/split-css-shorthand");
8
+ const isBind = (v) => !!(v && (v.startsWith("bind:") || v.startsWith("{")));
9
+ const hasValidDir = (v) => v === "row" || v === "column";
10
+ const isAuto = (v) => v === "auto";
11
+ const normalizeGap = (v) => v != null && v !== "" && !isAuto(v) ? v : null;
12
+ const px = (v) => v == null || v === "auto" ? undefined : `${v}px`;
13
+ function getBaseAlignment(key) {
14
+ return widget_inline_style_constants_1.ALIGNMENT_MATRIX[key] || { justifyContent: "flex-start", alignItems: "flex-start" };
15
+ }
16
+ // Swaps justifyContent/alignItems for column direction
17
+ function getDirectionalAlignment(base, isRow) {
18
+ return {
19
+ justifyContent: isRow ? base.justifyContent : base.alignItems,
20
+ alignItems: isRow ? base.alignItems : base.justifyContent,
21
+ };
22
+ }
23
+ // Replaces special characters to produce valid CSS class names
24
+ function sanitizeValue(value) {
25
+ return value
26
+ .replace(/\s+/g, "-")
27
+ .replace(/%/g, "pct")
28
+ .replace(/\./g, "_")
29
+ .replace(/#/g, "h")
30
+ .replace(/\//g, "-")
31
+ .replace(/[^a-zA-Z0-9_-]/g, "");
32
+ }
33
+ function cssToClassName(property, value) {
34
+ const prefix = widget_inline_style_constants_1.CSS_PROP_PREFIX[property] || property.replace(/-/g, "");
35
+ return `${prefix}-${sanitizeValue(value)}`;
36
+ }
37
+ // Strips matching outer parentheses from an expression
38
+ function stripBalancedOuterParens(expr) {
39
+ let e = expr;
40
+ while (e.startsWith("(") && e.endsWith(")")) {
41
+ let depth = 0;
42
+ let balanced = true;
43
+ for (let i = 0; i < e.length - 1; i++) {
44
+ if (e[i] === "(")
45
+ depth++;
46
+ else if (e[i] === ")")
47
+ depth--;
48
+ if (depth === 0) {
49
+ balanced = false;
50
+ break;
51
+ }
52
+ }
53
+ if (balanced)
54
+ e = e.substring(1, e.length - 1).trim();
55
+ else
56
+ break;
57
+ }
58
+ return e;
59
+ }
60
+ // Extracts a string literal or numeric literal from an expression
61
+ function extractStringLiteral(expr) {
62
+ const e = stripBalancedOuterParens(expr.trim());
63
+ if ((e.startsWith('"') && e.endsWith('"')) || (e.startsWith("'") && e.endsWith("'"))) {
64
+ return e.substring(1, e.length - 1);
65
+ }
66
+ const n = Number(e);
67
+ if (!Number.isNaN(n) && e.length > 0)
68
+ return String(n);
69
+ return null;
70
+ }
71
+ // Parses a bind: ternary expression into condition, trueValue, falseValue
72
+ function parseTernaryExpression(rawAttrValue) {
73
+ let expr = rawAttrValue.trim();
74
+ if (expr.startsWith("bind:"))
75
+ expr = expr.substring(5).trim();
76
+ if (expr.startsWith("{") && expr.endsWith("}"))
77
+ expr = expr.substring(1, expr.length - 1).trim();
78
+ expr = stripBalancedOuterParens(expr);
79
+ let questionIdx = -1;
80
+ let colonIdx = -1;
81
+ let depth = 0;
82
+ let inSingle = false;
83
+ let inDouble = false;
84
+ let inTemplate = false;
85
+ for (let i = 0; i < expr.length; i++) {
86
+ const ch = expr[i];
87
+ if (i > 0 && expr[i - 1] === "\\")
88
+ continue;
89
+ if (!inDouble && !inTemplate && ch === "'") {
90
+ inSingle = !inSingle;
91
+ continue;
92
+ }
93
+ if (!inSingle && !inTemplate && ch === '"') {
94
+ inDouble = !inDouble;
95
+ continue;
96
+ }
97
+ if (!inSingle && !inDouble && ch === "`") {
98
+ inTemplate = !inTemplate;
99
+ continue;
100
+ }
101
+ if (inSingle || inDouble || inTemplate)
102
+ continue;
103
+ if (ch === "(" || ch === "[") {
104
+ depth++;
105
+ continue;
106
+ }
107
+ if (ch === ")" || ch === "]") {
108
+ depth--;
109
+ continue;
110
+ }
111
+ if (depth !== 0)
112
+ continue;
113
+ if (ch === "?" && questionIdx < 0) {
114
+ const next = i + 1 < expr.length ? expr[i + 1] : "";
115
+ if (next !== "." && next !== "?")
116
+ questionIdx = i;
117
+ }
118
+ if (ch === ":" && questionIdx >= 0 && colonIdx < 0) {
119
+ colonIdx = i;
120
+ }
121
+ }
122
+ if (questionIdx < 0 || colonIdx < 0)
123
+ return null;
124
+ const condition = expr.substring(0, questionIdx).trim();
125
+ const trueExpr = expr.substring(questionIdx + 1, colonIdx).trim();
126
+ const falseExpr = expr.substring(colonIdx + 1).trim();
127
+ const trueValue = extractStringLiteral(trueExpr);
128
+ const falseValue = extractStringLiteral(falseExpr);
129
+ if (trueValue === null || falseValue === null)
130
+ return null;
131
+ return { condition, trueValue, falseValue };
132
+ }
133
+ // Maps a single layout attr value to its CSS property/value pairs
134
+ function computeCssForSingleAttr(attrName, value) {
135
+ if (!value && value !== "0")
136
+ return [];
137
+ switch (attrName) {
138
+ case "position":
139
+ return value ? [{ property: "position", value }] : [];
140
+ case "positionvalue": {
141
+ if (!value)
142
+ return [];
143
+ const sides = expandInsetToSides(value);
144
+ const result = [];
145
+ if (sides.top && sides.top !== "auto")
146
+ result.push({ property: "top", value: sides.top });
147
+ if (sides.right && sides.right !== "auto")
148
+ result.push({ property: "right", value: sides.right });
149
+ if (sides.bottom && sides.bottom !== "auto")
150
+ result.push({ property: "bottom", value: sides.bottom });
151
+ if (sides.left && sides.left !== "auto")
152
+ result.push({ property: "left", value: sides.left });
153
+ return result;
154
+ }
155
+ case "zindex":
156
+ return value !== "" ? [{ property: "z-index", value: String(value) }] : [];
157
+ case "overflow": {
158
+ const ov = value.toLowerCase();
159
+ if (ov === "vertical")
160
+ return [
161
+ { property: "overflow-x", value: "hidden" },
162
+ { property: "overflow-y", value: "scroll" },
163
+ ];
164
+ if (ov === "horizontal")
165
+ return [
166
+ { property: "overflow-x", value: "scroll" },
167
+ { property: "overflow-y", value: "hidden" },
168
+ ];
169
+ if (ov === "both directions" || ov === "both")
170
+ return [{ property: "overflow", value: "scroll" }];
171
+ if (ov === "none")
172
+ return [{ property: "overflow", value: "hidden" }];
173
+ return [];
174
+ }
175
+ default:
176
+ return [];
177
+ }
178
+ }
179
+ // Parses an inset shorthand value into individual top/right/bottom/left (CSS shorthand rules)
180
+ function expandInsetToSides(value) {
181
+ const parts = (0, split_css_shorthand_1.splitCssShorthandOnSpaces)(value);
182
+ if (parts.length === 1)
183
+ return { top: parts[0], right: parts[0], bottom: parts[0], left: parts[0] };
184
+ if (parts.length === 2)
185
+ return { top: parts[0], right: parts[1], bottom: parts[0], left: parts[1] };
186
+ if (parts.length === 3)
187
+ return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[1] };
188
+ return { top: parts[0], right: parts[1], bottom: parts[2], left: parts[3] };
189
+ }
190
+ // Computes final CSS properties from static layout props (flex, overflow, position)
191
+ function computeLayoutCssProperties(props) {
192
+ var _a;
193
+ const css = {};
194
+ if (hasValidDir(props.direction)) {
195
+ const direction = props.direction;
196
+ const hasAlignment = !!props.alignment;
197
+ const alignment = props.alignment || "top-left";
198
+ const wrap = direction === "column" ? false : ((_a = props.wrap) !== null && _a !== void 0 ? _a : false);
199
+ const base = getBaseAlignment(alignment);
200
+ const isRow = direction === "row";
201
+ const { justifyContent, alignItems } = getDirectionalAlignment(base, isRow);
202
+ const normGap = normalizeGap(props.gap);
203
+ const normCgap = normalizeGap(props.columngap);
204
+ css["display"] = "flex";
205
+ css["flex-direction"] = direction;
206
+ css["flex-wrap"] = wrap ? "wrap" : "nowrap";
207
+ if (!wrap) {
208
+ if (isAuto(props.gap)) {
209
+ if (hasAlignment) {
210
+ css["justify-content"] = base.justifyContent;
211
+ css["align-items"] = base.alignItems;
212
+ }
213
+ }
214
+ else {
215
+ if (hasAlignment) {
216
+ css["justify-content"] = justifyContent;
217
+ css["align-items"] = alignItems;
218
+ }
219
+ if (normGap != null)
220
+ css["gap"] = px(normGap);
221
+ }
222
+ }
223
+ else {
224
+ const gapIsAuto = isAuto(props.gap);
225
+ const columnGapIsAuto = isAuto(props.columngap);
226
+ if (hasAlignment) {
227
+ css["justify-content"] = justifyContent;
228
+ css["align-items"] = alignItems;
229
+ }
230
+ if (columnGapIsAuto && gapIsAuto) {
231
+ if (hasAlignment)
232
+ css["align-content"] = justifyContent;
233
+ }
234
+ else if (columnGapIsAuto && !gapIsAuto) {
235
+ if (hasAlignment)
236
+ css["align-content"] = alignItems;
237
+ }
238
+ else if (gapIsAuto && !columnGapIsAuto) {
239
+ if (hasAlignment)
240
+ css["align-content"] = "space-between";
241
+ }
242
+ else {
243
+ if (hasAlignment)
244
+ css["align-content"] = alignItems;
245
+ }
246
+ if (normGap != null)
247
+ css["row-gap"] = px(normGap);
248
+ if (normCgap != null)
249
+ css["column-gap"] = px(normCgap);
250
+ }
251
+ }
252
+ // Overflow is only applied when clipcontent is true (matches handleClipBehaviour)
253
+ if (props.clipcontent) {
254
+ const overflow = (props.overflow || "").toLowerCase();
255
+ if (overflow === "vertical") {
256
+ css["overflow-x"] = "hidden";
257
+ css["overflow-y"] = "scroll";
258
+ }
259
+ else if (overflow === "horizontal") {
260
+ css["overflow-x"] = "scroll";
261
+ css["overflow-y"] = "hidden";
262
+ }
263
+ else if (overflow === "both directions" || overflow === "both") {
264
+ css["overflow"] = "scroll";
265
+ }
266
+ else if (overflow === "no scrolling" || overflow === "none") {
267
+ css["overflow"] = "hidden";
268
+ }
269
+ }
270
+ if (props.position) {
271
+ css["position"] = props.position;
272
+ }
273
+ const rawInset = props.positionvalue || (props.position === "sticky" ? "0px auto auto 0px" : null);
274
+ if (rawInset) {
275
+ const sides = expandInsetToSides(rawInset);
276
+ if (sides.top && sides.top !== "auto")
277
+ css["top"] = sides.top;
278
+ if (sides.right && sides.right !== "auto")
279
+ css["right"] = sides.right;
280
+ if (sides.bottom && sides.bottom !== "auto")
281
+ css["bottom"] = sides.bottom;
282
+ if (sides.left && sides.left !== "auto")
283
+ css["left"] = sides.left;
284
+ }
285
+ if (props.zindex != null && props.zindex !== "") {
286
+ css["z-index"] = String(props.zindex);
287
+ }
288
+ return css;
289
+ }
290
+ // Parses a raw attribute value into the typed StaticLayoutProps field
291
+ function parseAttrValue(name, raw, props) {
292
+ if (name === "wrap") {
293
+ props.wrap = raw === "true" || raw === "wrap";
294
+ }
295
+ else if (name === "gap" || name === "columngap") {
296
+ const n = Number(raw);
297
+ props[name] = Number.isNaN(n) ? raw : n;
298
+ }
299
+ else if (name === "clipcontent") {
300
+ props.clipcontent = raw === "true";
301
+ }
302
+ else if (name === "zindex") {
303
+ const n = Number(raw);
304
+ props.zindex = Number.isNaN(n) ? raw : n;
305
+ }
306
+ else {
307
+ props[name] = raw;
308
+ }
309
+ }
310
+ // Reads static (non-bind) layout attributes from element, skipping dynamic groups
311
+ function getStaticLayoutPropsFromElement(element, dynamicGroups) {
312
+ const attrs = element.attributes || {};
313
+ const props = {};
314
+ let hasAny = false;
315
+ for (const name of widget_inline_style_constants_1.LAYOUT_ATTR_NAMES) {
316
+ if (dynamicGroups) {
317
+ if (dynamicGroups.flex && widget_inline_style_constants_1.FLEX_ATTR_GROUP.has(name))
318
+ continue;
319
+ if (dynamicGroups.overflow && widget_inline_style_constants_1.OVERFLOW_ATTR_GROUP.has(name))
320
+ continue;
321
+ if (dynamicGroups.position && widget_inline_style_constants_1.POSITION_ATTR_GROUP.has(name))
322
+ continue;
323
+ }
324
+ const raw = attrs[name];
325
+ if (raw == null)
326
+ continue;
327
+ if (isBind(raw))
328
+ continue;
329
+ hasAny = true;
330
+ parseAttrValue(name, raw, props);
331
+ }
332
+ return hasAny ? props : null;
333
+ }
334
+ // Converts a dimension value to its CSS equivalent (auto, hug→fit-content, fill→100%, number→px)
335
+ function parseDimensionValue(value, element) {
336
+ if (value === "auto")
337
+ return "auto";
338
+ if (value === "hug")
339
+ return "fit-content";
340
+ if (value === "fill")
341
+ return "100%";
342
+ if (/(%|vw|vh|em|rem|px|pt|pc|in|cm|mm)$/.test(value))
343
+ return value;
344
+ const n = Number(value);
345
+ if (!Number.isNaN(n))
346
+ return `${n}px`;
347
+ return value;
348
+ }
349
+ // Expands a shorthand value (e.g. "10px 20px") into [top, right, bottom, left]
350
+ function expandShorthand(value) {
351
+ const parts = (0, split_css_shorthand_1.splitCssShorthandOnSpaces)(value).map(v => v !== "unset" ? parseDimensionValue(v) : "unset");
352
+ if (parts.length === 1)
353
+ return [parts[0], parts[0], parts[0], parts[0]];
354
+ if (parts.length === 2)
355
+ return [parts[0], parts[1], parts[0], parts[1]];
356
+ if (parts.length === 3)
357
+ return [parts[0], parts[1], parts[2], parts[1]];
358
+ return [parts[0], parts[1], parts[2], parts[3]];
359
+ }
360
+ // Identifies which layout attribute groups contain dynamic (bind:) values
361
+ function detectDynamicGroups(element) {
362
+ const attrs = element.attributes || {};
363
+ const flags = { flex: false, overflow: false, position: false };
364
+ for (const name of widget_inline_style_constants_1.LAYOUT_ATTR_NAMES) {
365
+ const raw = attrs[name];
366
+ if (raw == null || !isBind(raw))
367
+ continue;
368
+ if (widget_inline_style_constants_1.FLEX_ATTR_GROUP.has(name))
369
+ flags.flex = true;
370
+ else if (widget_inline_style_constants_1.OVERFLOW_ATTR_GROUP.has(name))
371
+ flags.overflow = true;
372
+ else if (widget_inline_style_constants_1.POSITION_ATTR_GROUP.has(name))
373
+ flags.position = true;
374
+ }
375
+ return flags;
376
+ }
377
+ // Encapsulates all autolayout codegen logic: registry, element processing, CSS collection
378
+ class AutolayoutCodegen {
379
+ constructor() {
380
+ this.registry = new Map();
381
+ for (const cls of widget_inline_style_constants_1.PREDEFINED_CLASS_NAMES) {
382
+ this.registry.set(cls, "");
383
+ }
384
+ }
385
+ // Registers a CSS class in the registry and returns the class name
386
+ registerClass(property, value) {
387
+ const className = cssToClassName(property, value);
388
+ if (!this.registry.has(className)) {
389
+ this.registry.set(className, `.${className} {\n ${property}: ${value} !important;\n}`);
390
+ }
391
+ return className;
392
+ }
393
+ // Returns the effective parent flex direction for fill/size calculations.
394
+ // For wm-list, the runtime target (<ul>) sits inside an intermediate Box wrapper
395
+ getEffectiveParentDirection(element) {
396
+ var _a, _b, _c;
397
+ const tagName = (_b = (_a = element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);
398
+ if (tagName === "wm-list")
399
+ return null;
400
+ const parent = element.parentNode;
401
+ const dir = ((_c = parent === null || parent === void 0 ? void 0 : parent.getAttribute) === null || _c === void 0 ? void 0 : _c.call(parent, "direction")) || null;
402
+ return dir && hasValidDir(dir) ? dir : null;
403
+ }
404
+ // Collect flex props for a single dimension, axis-aware to avoid cross-axis conflicts.
405
+ collectSizeFlexProps(element, key, val, flexProps) {
406
+ const parentDirection = this.getEffectiveParentDirection(element);
407
+ if (val === "fill") {
408
+ if (!parentDirection)
409
+ return;
410
+ const isRow = parentDirection === "row";
411
+ const isMainAxis = (key === "width" && isRow) || (key === "height" && !isRow);
412
+ if (isMainAxis) {
413
+ flexProps["flex-grow"] = "1";
414
+ const minKey = key === "width" ? "min-width" : "min-height";
415
+ flexProps[minKey] = "0";
416
+ }
417
+ else {
418
+ flexProps["align-self"] = "stretch";
419
+ }
420
+ return;
421
+ }
422
+ // hug and fixed sizes both prevent shrinking.
423
+ if (parentDirection) {
424
+ const isRow = parentDirection === "row";
425
+ const isMainAxis = (key === "width" && isRow) || (key === "height" && !isRow);
426
+ if (isMainAxis) {
427
+ flexProps["flex-shrink"] = "0";
428
+ }
429
+ }
430
+ else {
431
+ flexProps["flex-shrink"] = "0";
432
+ }
433
+ }
434
+ // Register the size class (w-100pct, h-fit-content, etc.)
435
+ registerSizeClass(element, key, val) {
436
+ const classes = [];
437
+ if (val === "hug") {
438
+ classes.push(this.registerClass(key, "fit-content"));
439
+ }
440
+ else if (val === "fill") {
441
+ const parentDirection = this.getEffectiveParentDirection(element);
442
+ if (!parentDirection) {
443
+ classes.push(this.registerClass(key, "100%"));
444
+ }
445
+ }
446
+ else {
447
+ classes.push(this.registerClass(key, parseDimensionValue(val)));
448
+ }
449
+ return classes;
450
+ }
451
+ normalizeBackgroundImageValue(value) {
452
+ const trimmed = value.trim();
453
+ // CSS gradient functions — already a valid background-image value.
454
+ if (trimmed.startsWith("linear-gradient(") ||
455
+ trimmed.startsWith("radial-gradient(") ||
456
+ trimmed.startsWith("conic-gradient(") ||
457
+ trimmed.startsWith("repeating-")) {
458
+ return trimmed;
459
+ }
460
+ // Strip an existing url() wrapper to get the bare inner path.
461
+ let innerPath = trimmed;
462
+ if (trimmed.startsWith("url(")) {
463
+ const m = trimmed.match(/^url\(\s*(['"]?)(.+?)\1\s*\)$/s);
464
+ if (m)
465
+ innerPath = m[2].trim();
466
+ }
467
+ // Make relative paths absolute using the WaveMaker public-folder convention.
468
+ if (!innerPath.startsWith("/") &&
469
+ !innerPath.startsWith("http://") &&
470
+ !innerPath.startsWith("https://") &&
471
+ !innerPath.startsWith("data:")) {
472
+ innerPath = `/${innerPath}`;
473
+ }
474
+ return `url(${innerPath})`;
475
+ }
476
+ // Converts static style attributes to CSS utility classes and removes them from element
477
+ processStaticStyleProps(element) {
478
+ var _a;
479
+ const classNames = [];
480
+ const bgImageRaw = element.getAttribute("backgroundimage");
481
+ if (bgImageRaw && !isBind(bgImageRaw)) {
482
+ classNames.push(this.registerClass("background-image", this.normalizeBackgroundImageValue(bgImageRaw)));
483
+ element.removeAttribute("backgroundimage");
484
+ }
485
+ const fontUnit = element.getAttribute("fontunit");
486
+ if (fontUnit && !isBind(fontUnit)) {
487
+ element.removeAttribute("fontunit");
488
+ }
489
+ // Process width & height together, simulating sequential override:
490
+ const flexProps = {};
491
+ for (const dimKey of ["width", "height"]) {
492
+ const raw = element.getAttribute(dimKey);
493
+ if (!raw || isBind(raw))
494
+ continue;
495
+ //for manupulating the parent element flex properties in runtime
496
+ // for alligening flexgrow, flexShrink,selfAlign
497
+ if (!this.getEffectiveParentDirection(element) &&
498
+ ((_a = element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === "wm-container") {
499
+ element.setAttribute(dimKey === "width" ? "layoutWidth" : "layoutHeight", raw);
500
+ }
501
+ this.collectSizeFlexProps(element, dimKey, raw, flexProps);
502
+ classNames.push(...this.registerSizeClass(element, dimKey, raw));
503
+ element.removeAttribute(dimKey);
504
+ }
505
+ for (const [prop, value] of Object.entries(flexProps)) {
506
+ classNames.push(this.registerClass(prop, value));
507
+ }
508
+ for (const [attrName, info] of Object.entries(widget_inline_style_constants_1.STYLE_ATTR_MAP)) {
509
+ const raw = element.getAttribute(attrName);
510
+ if (!raw || isBind(raw))
511
+ continue;
512
+ if (attrName === "width" || attrName === "height")
513
+ continue;
514
+ if (info.type === "shorthand-4" && info.shorthandSides) {
515
+ const [top, right, bottom, left] = expandShorthand(raw);
516
+ const sides = info.shorthandSides;
517
+ if (top !== "unset")
518
+ classNames.push(this.registerClass(sides.top, top));
519
+ if (right !== "unset")
520
+ classNames.push(this.registerClass(sides.right, right));
521
+ if (bottom !== "unset")
522
+ classNames.push(this.registerClass(sides.bottom, bottom));
523
+ if (left !== "unset")
524
+ classNames.push(this.registerClass(sides.left, left));
525
+ element.removeAttribute(attrName);
526
+ continue;
527
+ }
528
+ let cssValue;
529
+ if (info.type === "dimension") {
530
+ if (attrName === "fontsize" && fontUnit && !isBind(fontUnit)) {
531
+ const n = Number(raw);
532
+ cssValue = !Number.isNaN(n) ? `${n}${fontUnit}` : parseDimensionValue(raw);
533
+ }
534
+ else {
535
+ cssValue = parseDimensionValue(raw);
536
+ }
537
+ }
538
+ else if (info.type === "number") {
539
+ const match = raw.match(/^[0-9.\-]+/);
540
+ cssValue = match ? match[0] : raw;
541
+ }
542
+ else {
543
+ cssValue = raw;
544
+ }
545
+ classNames.push(this.registerClass(info.cssProperty, cssValue));
546
+ element.removeAttribute(attrName);
547
+ }
548
+ return classNames;
549
+ }
550
+ // Converts dynamic ternary layout attrs to conditional class expressions
551
+ processDynamicTernaryProps(element, removeAttrs = true) {
552
+ const attrs = element.attributes || {};
553
+ const parsed = [];
554
+ for (const name of widget_inline_style_constants_1.LAYOUT_ATTR_NAMES) {
555
+ const raw = attrs[name];
556
+ if (raw == null || !isBind(raw))
557
+ continue;
558
+ if (widget_inline_style_constants_1.FLEX_ATTR_GROUP.has(name))
559
+ continue;
560
+ const ternary = parseTernaryExpression(raw);
561
+ if (!ternary)
562
+ continue;
563
+ const trueCssEntries = computeCssForSingleAttr(name, ternary.trueValue);
564
+ const falseCssEntries = computeCssForSingleAttr(name, ternary.falseValue);
565
+ if (trueCssEntries.length === 0 && falseCssEntries.length === 0)
566
+ continue;
567
+ const trueClasses = trueCssEntries.map(e => this.registerClass(e.property, e.value));
568
+ const falseClasses = falseCssEntries.map(e => this.registerClass(e.property, e.value));
569
+ parsed.push({ attrName: name, condition: ternary.condition, trueClasses, falseClasses });
570
+ if (removeAttrs || name === "styles")
571
+ element.removeAttribute(name);
572
+ }
573
+ if (parsed.length === 0)
574
+ return [];
575
+ // Merge attrs sharing the same condition into a single ternary expression
576
+ const conditionMap = new Map();
577
+ for (const entry of parsed) {
578
+ const existing = conditionMap.get(entry.condition);
579
+ if (existing) {
580
+ existing.trueClasses.push(...entry.trueClasses);
581
+ existing.falseClasses.push(...entry.falseClasses);
582
+ }
583
+ else {
584
+ conditionMap.set(entry.condition, {
585
+ trueClasses: [...entry.trueClasses],
586
+ falseClasses: [...entry.falseClasses],
587
+ });
588
+ }
589
+ }
590
+ return Array.from(conditionMap.entries()).map(([condition, classes]) => ({
591
+ condition,
592
+ trueClasses: classes.trueClasses.join(" "),
593
+ falseClasses: classes.falseClasses.join(" "),
594
+ }));
595
+ }
596
+ // Processes a container/list element — returns static classes + conditional expressions
597
+ // Does NOT modify the element's class attribute; caller is responsible for emitting layoutClassName.
598
+ processElement(element) {
599
+ var _a, _b;
600
+ const tagName = (_b = (_a = element.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase) === null || _b === void 0 ? void 0 : _b.call(_a);
601
+ if (!tagName || !widget_inline_style_constants_1.AUTOLAYOUT_WIDGET_TAGS.has(tagName))
602
+ return null;
603
+ const dynamicGroups = detectDynamicGroups(element);
604
+ const allClasses = [];
605
+ const staticProps = getStaticLayoutPropsFromElement(element, dynamicGroups);
606
+ if (staticProps) {
607
+ const cssProperties = computeLayoutCssProperties(staticProps);
608
+ for (const [prop, value] of Object.entries(cssProperties)) {
609
+ allClasses.push(this.registerClass(prop, value));
610
+ }
611
+ }
612
+ allClasses.push(...this.processStaticStyleProps(element));
613
+ const conditionalExpressions = this.processDynamicTernaryProps(element, false);
614
+ for (const attr of widget_inline_style_constants_1.STYLE_OVERLAPPING_LAYOUT_ATTRS) {
615
+ element.removeAttribute(attr);
616
+ }
617
+ const uniqueClasses = [...new Set(allClasses)];
618
+ if (uniqueClasses.length === 0 && conditionalExpressions.length === 0)
619
+ return null;
620
+ return {
621
+ staticClasses: uniqueClasses.join(" "),
622
+ conditionalExpressions,
623
+ };
624
+ }
625
+ // Processes a list-template element — returns static classes + conditional expressions
626
+ processListTemplate(templateElement) {
627
+ const dynamicGroups = detectDynamicGroups(templateElement);
628
+ const staticClassNames = [];
629
+ const staticProps = getStaticLayoutPropsFromElement(templateElement, dynamicGroups);
630
+ if (staticProps) {
631
+ const cssProperties = computeLayoutCssProperties(staticProps);
632
+ for (const [prop, value] of Object.entries(cssProperties)) {
633
+ staticClassNames.push(this.registerClass(prop, value));
634
+ }
635
+ }
636
+ staticClassNames.push(...this.processStaticStyleProps(templateElement));
637
+ const conditionalExpressions = this.processDynamicTernaryProps(templateElement);
638
+ const uniqueClasses = [...new Set(staticClassNames)];
639
+ if (uniqueClasses.length === 0 && conditionalExpressions.length === 0)
640
+ return null;
641
+ return {
642
+ staticClasses: uniqueClasses.join(" "),
643
+ conditionalExpressions,
644
+ };
645
+ }
646
+ // Builds a standalone layoutClassName attribute value string
647
+ buildLayoutClassNameAttr(result) {
648
+ const { staticClasses, conditionalExpressions } = result;
649
+ if (conditionalExpressions.length === 0) {
650
+ return `'${staticClasses}'`;
651
+ }
652
+ const parts = [];
653
+ if (staticClasses) {
654
+ parts.push(JSON.stringify(staticClasses));
655
+ }
656
+ for (const ce of conditionalExpressions) {
657
+ const cond = (0, utils_browser_1.modifyExpression)(ce.condition);
658
+ parts.push(`(${cond} ? ${JSON.stringify(ce.trueClasses)} : ${JSON.stringify(ce.falseClasses)})`);
659
+ }
660
+ return `{[${parts.join(", ")}].filter(Boolean).join(" ")}`;
661
+ }
662
+ // Builds layoutClassName expression for list template itemAttrs
663
+ buildItemAttrsClassName(result) {
664
+ const { staticClasses, conditionalExpressions } = result;
665
+ if (conditionalExpressions.length === 0) {
666
+ return JSON.stringify(staticClasses);
667
+ }
668
+ const parts = [];
669
+ if (staticClasses) {
670
+ parts.push(JSON.stringify(staticClasses));
671
+ }
672
+ for (const ce of conditionalExpressions) {
673
+ const cond = (0, utils_browser_1.modifyExpression)(ce.condition);
674
+ parts.push(`(${cond} ? ${JSON.stringify(ce.trueClasses)} : ${JSON.stringify(ce.falseClasses)})`);
675
+ }
676
+ return `[${parts.join(", ")}].filter(Boolean).join(" ")`;
677
+ }
678
+ // Returns only dynamically generated CSS rules (predefined entries are filtered out)
679
+ getDynamicCssRules() {
680
+ return Array.from(this.registry.values()).filter(Boolean);
681
+ }
682
+ }
683
+ exports.AutolayoutCodegen = AutolayoutCodegen;
684
+ //# sourceMappingURL=widget-inline-style-processor.js.map