@wavemaker-ai/react-codegen 1.0.0-next.27766

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