@acorex/platform 18.2.2 → 18.2.4

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 (324) hide show
  1. package/common/lib/app/operators.d.ts +1 -0
  2. package/common/lib/common.module.d.ts +6 -7
  3. package/common/lib/data/filter-middleware.service.d.ts +28 -0
  4. package/common/lib/data/index.d.ts +3 -1
  5. package/common/lib/data/operators.service.d.ts +14 -0
  6. package/common/lib/layout/index.d.ts +0 -2
  7. package/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.d.ts +0 -2
  8. package/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.d.ts +1 -0
  9. package/common/lib/schema/widgets/email/email-widget-edit.component.d.ts +0 -2
  10. package/common/lib/schema/widgets/phone/phone-widget-edit.component.d.ts +0 -2
  11. package/common/lib/schema/widgets/text/text-widget-edit.component.d.ts +0 -2
  12. package/common/lib/settings/setting-definition.provider.d.ts +6 -6
  13. package/common/lib/settings/settings.types.d.ts +18 -9
  14. package/esm2022/common/lib/app/operators.mjs +16 -1
  15. package/esm2022/common/lib/common.module.mjs +23 -12
  16. package/esm2022/common/lib/data/filter-middleware.service.mjs +53 -0
  17. package/esm2022/common/lib/data/index.mjs +4 -2
  18. package/esm2022/common/lib/data/operators.service.mjs +15 -0
  19. package/esm2022/common/lib/layout/index.mjs +1 -3
  20. package/esm2022/common/lib/layout/menu/menu.service.mjs +2 -2
  21. package/esm2022/common/lib/layout/sticky.directive.mjs +15 -11
  22. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.mjs +7 -8
  23. package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +47 -25
  24. package/esm2022/common/lib/schema/widgets/email/email-widget-edit.component.mjs +6 -7
  25. package/esm2022/common/lib/schema/widgets/phone/phone-widget-edit.component.mjs +6 -7
  26. package/esm2022/common/lib/schema/widgets/text/text-widget-edit.component.mjs +6 -7
  27. package/esm2022/common/lib/settings/setting-definition.provider.mjs +141 -187
  28. package/esm2022/common/lib/settings/settings.types.mjs +2 -7
  29. package/esm2022/common/lib/utils/data-generator.mjs +1 -1
  30. package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +2 -1
  31. package/esm2022/layout/builder/lib/builder/widget-column-renderer.mjs +22 -11
  32. package/esm2022/layout/builder/lib/builder/widget.types.mjs +11 -6
  33. package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +2 -7
  34. package/esm2022/layout/designer/lib/designer/components/size-mode/view-size-toolbar.component.mjs +27 -32
  35. package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +8 -6
  36. package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +4 -3
  37. package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +39 -12
  38. package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +4 -3
  39. package/esm2022/layout/entity/lib/entity-master-update.viewmodel.mjs +3 -3
  40. package/esm2022/layout/entity/lib/entity.module.mjs +1 -6
  41. package/esm2022/layout/entity/lib/index.mjs +5 -4
  42. package/esm2022/layout/setting/acorex-platform-layout-setting.mjs +5 -0
  43. package/esm2022/layout/setting/index.mjs +2 -0
  44. package/esm2022/layout/setting/lib/convert-setting-data.mjs +59 -0
  45. package/esm2022/layout/setting/lib/setting.viewmodel.mjs +132 -0
  46. package/esm2022/layouts/lib/admin/admin.module.mjs +17 -5
  47. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.config.mjs +3 -3
  48. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/detail-view.config.mjs +4 -3
  49. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +8 -23
  50. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.mjs +2 -6
  51. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +4 -5
  52. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +4 -8
  53. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.mjs +12 -10
  54. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.mjs +3 -3
  55. package/esm2022/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.mjs +1 -3
  56. package/esm2022/themes/default/index.mjs +2 -1
  57. package/esm2022/themes/default/lib/default.module.mjs +83 -39
  58. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +18 -24
  59. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +21 -24
  60. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +18 -12
  61. package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +6 -8
  62. package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +6 -8
  63. package/esm2022/themes/default/lib/layouts/root-layout/components/menu/root-menu.component.mjs +1 -1
  64. package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +11 -38
  65. package/esm2022/themes/default/lib/layouts/setting-layout/index.mjs +3 -0
  66. package/esm2022/themes/default/lib/layouts/setting-layout/setting-menu/setting-menu.component.mjs +28 -0
  67. package/esm2022/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.mjs +42 -0
  68. package/esm2022/themes/shared/lib/services/theme.service.mjs +183 -19
  69. package/esm2022/widgets/lib/properties/layout.props.mjs +13 -13
  70. package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-column.component.mjs +20 -0
  71. package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-designer.component.mjs +18 -0
  72. package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-edit.component.mjs +24 -0
  73. package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-filter.component.mjs +20 -0
  74. package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-print.component.mjs +19 -0
  75. package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-view.component.mjs +22 -0
  76. package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget.config.mjs +32 -0
  77. package/esm2022/widgets/lib/widgets/advance/cron-job/index.mjs +8 -0
  78. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.mjs +4 -9
  79. package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +2 -9
  80. package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +6 -7
  81. package/esm2022/widgets/lib/widgets.module.mjs +5 -2
  82. package/esm2022/workflow/lib/workflow.service.mjs +1 -1
  83. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-vDhYokEG.mjs → acorex-platform-common-avatar-widget-edit.component-DtC2IaE8.mjs} +3 -4
  84. package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-vDhYokEG.mjs.map → acorex-platform-common-avatar-widget-edit.component-DtC2IaE8.mjs.map} +1 -1
  85. package/fesm2022/{acorex-platform-common-avatar-widget-view.component-Dew3CVLm.mjs → acorex-platform-common-avatar-widget-view.component-BOIV0Be1.mjs} +4 -5
  86. package/fesm2022/acorex-platform-common-avatar-widget-view.component-BOIV0Be1.mjs.map +1 -0
  87. package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-BdE7WOK5.mjs → acorex-platform-common-boolean-widget-filter.component-S4-3SmKA.mjs} +3 -4
  88. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-S4-3SmKA.mjs.map +1 -0
  89. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-Bj5rjEk1.mjs → acorex-platform-common-checkbox-widget-column.component-DOoneR7g.mjs} +4 -5
  90. package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-Bj5rjEk1.mjs.map → acorex-platform-common-checkbox-widget-column.component-DOoneR7g.mjs.map} +1 -1
  91. package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-ChXbJsuG.mjs → acorex-platform-common-checkbox-widget-edit.component-PFRq-XS-.mjs} +4 -5
  92. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-PFRq-XS-.mjs.map +1 -0
  93. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CbQwjE_u.mjs → acorex-platform-common-checkbox-widget-view.component-CKz8XnjT.mjs} +4 -5
  94. package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CbQwjE_u.mjs.map → acorex-platform-common-checkbox-widget-view.component-CKz8XnjT.mjs.map} +1 -1
  95. package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-QUYyDVw8.mjs → acorex-platform-common-dateTime-widget-column.component-DG0leXAo.mjs} +4 -5
  96. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-DG0leXAo.mjs.map +1 -0
  97. package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-CzLb3xnR.mjs → acorex-platform-common-dateTime-widget-edit.component-D8W-XEcx.mjs} +10 -13
  98. package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-D8W-XEcx.mjs.map +1 -0
  99. package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-DZRQ6yVk.mjs → acorex-platform-common-dateTime-widget-filter.component-DngCKwFY.mjs} +49 -28
  100. package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-DngCKwFY.mjs.map +1 -0
  101. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-DxNwm_5m.mjs → acorex-platform-common-dateTime-widget-view.component-KGgJkiKB.mjs} +4 -5
  102. package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-DxNwm_5m.mjs.map → acorex-platform-common-dateTime-widget-view.component-KGgJkiKB.mjs.map} +1 -1
  103. package/fesm2022/{acorex-platform-common-email-widget-column.component-Cm-fhlNZ.mjs → acorex-platform-common-email-widget-column.component-CLNqSuB7.mjs} +4 -5
  104. package/fesm2022/acorex-platform-common-email-widget-column.component-CLNqSuB7.mjs.map +1 -0
  105. package/fesm2022/{acorex-platform-common-email-widget-edit.component-BfXFBLF6.mjs → acorex-platform-common-email-widget-edit.component--0gaRm4s.mjs} +9 -11
  106. package/fesm2022/acorex-platform-common-email-widget-edit.component--0gaRm4s.mjs.map +1 -0
  107. package/fesm2022/{acorex-platform-common-email-widget-view.component-ClRjKVy6.mjs → acorex-platform-common-email-widget-view.component-C3AUr1HO.mjs} +4 -5
  108. package/fesm2022/{acorex-platform-common-email-widget-view.component-ClRjKVy6.mjs.map → acorex-platform-common-email-widget-view.component-C3AUr1HO.mjs.map} +1 -1
  109. package/fesm2022/{acorex-platform-common-file-widget-column.component-B0v2rSWI.mjs → acorex-platform-common-file-widget-column.component-C9AHk2UP.mjs} +4 -5
  110. package/fesm2022/acorex-platform-common-file-widget-column.component-C9AHk2UP.mjs.map +1 -0
  111. package/fesm2022/{acorex-platform-common-file-widget-edit.component-DsIqehpt.mjs → acorex-platform-common-file-widget-edit.component-L7bln9k0.mjs} +4 -5
  112. package/fesm2022/{acorex-platform-common-file-widget-edit.component-DsIqehpt.mjs.map → acorex-platform-common-file-widget-edit.component-L7bln9k0.mjs.map} +1 -1
  113. package/fesm2022/{acorex-platform-common-file-widget-filter.component-C3uBjqF-.mjs → acorex-platform-common-file-widget-filter.component-Ce35mqny.mjs} +4 -5
  114. package/fesm2022/acorex-platform-common-file-widget-filter.component-Ce35mqny.mjs.map +1 -0
  115. package/fesm2022/{acorex-platform-common-file-widget-view.component-DTl_Rehd.mjs → acorex-platform-common-file-widget-view.component-BvMzrs5C.mjs} +4 -5
  116. package/fesm2022/{acorex-platform-common-file-widget-view.component-DTl_Rehd.mjs.map → acorex-platform-common-file-widget-view.component-BvMzrs5C.mjs.map} +1 -1
  117. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DHeFVg5x.mjs → acorex-platform-common-gallery-widget-edit.component-BVuV2Ib8.mjs} +3 -4
  118. package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DHeFVg5x.mjs.map → acorex-platform-common-gallery-widget-edit.component-BVuV2Ib8.mjs.map} +1 -1
  119. package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-Di446i2c.mjs → acorex-platform-common-gallery-widget-filter.component-C8tdM6PX.mjs} +4 -5
  120. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-C8tdM6PX.mjs.map +1 -0
  121. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-CkcRvfv-.mjs → acorex-platform-common-gallery-widget-view.component-D8YmSi9C.mjs} +3 -4
  122. package/fesm2022/{acorex-platform-common-gallery-widget-view.component-CkcRvfv-.mjs.map → acorex-platform-common-gallery-widget-view.component-D8YmSi9C.mjs.map} +1 -1
  123. package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-D89AlBSm.mjs → acorex-platform-common-largetext-widget-edit.component-DGMxpnsr.mjs} +4 -5
  124. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-DGMxpnsr.mjs.map +1 -0
  125. package/fesm2022/{acorex-platform-common-lookup-widget-column.component-CB0ehp_y.mjs → acorex-platform-common-lookup-widget-column.component-B-cEaNjv.mjs} +4 -5
  126. package/fesm2022/acorex-platform-common-lookup-widget-column.component-B-cEaNjv.mjs.map +1 -0
  127. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-B0HQnsb8.mjs → acorex-platform-common-lookup-widget-edit.component-DqB_g9Zz.mjs} +4 -5
  128. package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-B0HQnsb8.mjs.map → acorex-platform-common-lookup-widget-edit.component-DqB_g9Zz.mjs.map} +1 -1
  129. package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-Dxj_XEYV.mjs → acorex-platform-common-lookup-widget-filter.component-0TPWNWSd.mjs} +3 -4
  130. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-0TPWNWSd.mjs.map +1 -0
  131. package/fesm2022/{acorex-platform-common-lookup-widget-view.component-BtO3feA9.mjs → acorex-platform-common-lookup-widget-view.component-DYAg76YH.mjs} +4 -5
  132. package/fesm2022/acorex-platform-common-lookup-widget-view.component-DYAg76YH.mjs.map +1 -0
  133. package/fesm2022/{acorex-platform-common-map-widget-edit.component-hXIZrhzg.mjs → acorex-platform-common-map-widget-edit.component-C3cpsXD5.mjs} +4 -5
  134. package/fesm2022/acorex-platform-common-map-widget-edit.component-C3cpsXD5.mjs.map +1 -0
  135. package/fesm2022/{acorex-platform-common-map-widget-view.component-RgV-r8q6.mjs → acorex-platform-common-map-widget-view.component-C-DCNaJi.mjs} +4 -5
  136. package/fesm2022/acorex-platform-common-map-widget-view.component-C-DCNaJi.mjs.map +1 -0
  137. package/fesm2022/{acorex-platform-common-messenger-widget-column.component-DGWQWuzM.mjs → acorex-platform-common-messenger-widget-column.component-B2A7ZBEP.mjs} +4 -5
  138. package/fesm2022/acorex-platform-common-messenger-widget-column.component-B2A7ZBEP.mjs.map +1 -0
  139. package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-Blv1qL4e.mjs → acorex-platform-common-messenger-widget-edit.component-DC8vQDo0.mjs} +4 -5
  140. package/fesm2022/acorex-platform-common-messenger-widget-edit.component-DC8vQDo0.mjs.map +1 -0
  141. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DEbnPggG.mjs → acorex-platform-common-messenger-widget-view.component-B6FavkmG.mjs} +4 -5
  142. package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DEbnPggG.mjs.map → acorex-platform-common-messenger-widget-view.component-B6FavkmG.mjs.map} +1 -1
  143. package/fesm2022/{acorex-platform-common-number-widget-edit.component-gQCEBhPv.mjs → acorex-platform-common-number-widget-edit.component-Bc5-ZUw4.mjs} +4 -5
  144. package/fesm2022/acorex-platform-common-number-widget-edit.component-Bc5-ZUw4.mjs.map +1 -0
  145. package/fesm2022/{acorex-platform-common-number-widget-filter.component-CvEw3awN.mjs → acorex-platform-common-number-widget-filter.component-DxfJ90n4.mjs} +4 -5
  146. package/fesm2022/acorex-platform-common-number-widget-filter.component-DxfJ90n4.mjs.map +1 -0
  147. package/fesm2022/{acorex-platform-common-number-widget-view.component-ROrdklif.mjs → acorex-platform-common-number-widget-view.component-DGfLSGw1.mjs} +4 -5
  148. package/fesm2022/acorex-platform-common-number-widget-view.component-DGfLSGw1.mjs.map +1 -0
  149. package/fesm2022/{acorex-platform-common-password-widget-column.component-vXdE4UjM.mjs → acorex-platform-common-password-widget-column.component-DEHaVLGK.mjs} +4 -5
  150. package/fesm2022/{acorex-platform-common-password-widget-column.component-vXdE4UjM.mjs.map → acorex-platform-common-password-widget-column.component-DEHaVLGK.mjs.map} +1 -1
  151. package/fesm2022/{acorex-platform-common-password-widget-edit.component-BCOoHtGl.mjs → acorex-platform-common-password-widget-edit.component-DrYyu5v-.mjs} +4 -5
  152. package/fesm2022/acorex-platform-common-password-widget-edit.component-DrYyu5v-.mjs.map +1 -0
  153. package/fesm2022/{acorex-platform-common-password-widget-view.component-rpjAeimk.mjs → acorex-platform-common-password-widget-view.component-B_HU-3J1.mjs} +4 -4
  154. package/fesm2022/{acorex-platform-common-password-widget-view.component-rpjAeimk.mjs.map → acorex-platform-common-password-widget-view.component-B_HU-3J1.mjs.map} +1 -1
  155. package/fesm2022/{acorex-platform-common-phone-widget-column.component-BbuUbPCu.mjs → acorex-platform-common-phone-widget-column.component-D99ncxxJ.mjs} +4 -5
  156. package/fesm2022/{acorex-platform-common-phone-widget-column.component-BbuUbPCu.mjs.map → acorex-platform-common-phone-widget-column.component-D99ncxxJ.mjs.map} +1 -1
  157. package/fesm2022/{acorex-platform-common-phone-widget-edit.component-Bo_aOxfZ.mjs → acorex-platform-common-phone-widget-edit.component-a5EAI9FK.mjs} +8 -10
  158. package/fesm2022/acorex-platform-common-phone-widget-edit.component-a5EAI9FK.mjs.map +1 -0
  159. package/fesm2022/{acorex-platform-common-phone-widget-view.component-DDBCR_QY.mjs → acorex-platform-common-phone-widget-view.component-BlFVuoNN.mjs} +4 -5
  160. package/fesm2022/{acorex-platform-common-phone-widget-view.component-DDBCR_QY.mjs.map → acorex-platform-common-phone-widget-view.component-BlFVuoNN.mjs.map} +1 -1
  161. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BHiq7hdp.mjs → acorex-platform-common-rich-text-widget-column.component-DOdv5I2s.mjs} +4 -5
  162. package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BHiq7hdp.mjs.map → acorex-platform-common-rich-text-widget-column.component-DOdv5I2s.mjs.map} +1 -1
  163. package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-12odUyzb.mjs → acorex-platform-common-rich-text-widget-edit.component-DL5UyAqe.mjs} +4 -5
  164. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-DL5UyAqe.mjs.map +1 -0
  165. package/fesm2022/{acorex-platform-common-rich-text-widget-view.component-Xr0ohz5L.mjs → acorex-platform-common-rich-text-widget-view.component-B9WB-mx9.mjs} +4 -5
  166. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-B9WB-mx9.mjs.map +1 -0
  167. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-C2JikSdw.mjs → acorex-platform-common-selection-list-widget-column.component-CkOuYy0Z.mjs} +4 -5
  168. package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-C2JikSdw.mjs.map → acorex-platform-common-selection-list-widget-column.component-CkOuYy0Z.mjs.map} +1 -1
  169. package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-C1QPfHCm.mjs → acorex-platform-common-selection-list-widget-edit.component-BmbDQ1LH.mjs} +4 -5
  170. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-BmbDQ1LH.mjs.map +1 -0
  171. package/fesm2022/{acorex-platform-common-selection-list-widget-filter.component-DIgxHmqa.mjs → acorex-platform-common-selection-list-widget-filter.component-Dm_1-7eT.mjs} +3 -4
  172. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-Dm_1-7eT.mjs.map +1 -0
  173. package/fesm2022/{acorex-platform-common-selection-list-widget-view.component-D-VQ4JNC.mjs → acorex-platform-common-selection-list-widget-view.component-3hinF85C.mjs} +4 -5
  174. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-3hinF85C.mjs.map +1 -0
  175. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-BimaJ4_d.mjs → acorex-platform-common-signature-pad-widget-edit.component-DmmPbw-A.mjs} +3 -4
  176. package/fesm2022/{acorex-platform-common-signature-pad-widget-edit.component-BimaJ4_d.mjs.map → acorex-platform-common-signature-pad-widget-edit.component-DmmPbw-A.mjs.map} +1 -1
  177. package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-USd0U707.mjs → acorex-platform-common-signature-pad-widget-view.component-DkFaMNk8.mjs} +4 -5
  178. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-DkFaMNk8.mjs.map +1 -0
  179. package/fesm2022/{acorex-platform-common-string-widget-filter.component-wI9D-Ju5.mjs → acorex-platform-common-string-widget-filter.component-DAqR2PUN.mjs} +4 -5
  180. package/fesm2022/acorex-platform-common-string-widget-filter.component-DAqR2PUN.mjs.map +1 -0
  181. package/fesm2022/{acorex-platform-common-text-widget-column.component-Be7Nr0lJ.mjs → acorex-platform-common-text-widget-column.component-DVczwvKA.mjs} +4 -5
  182. package/fesm2022/{acorex-platform-common-text-widget-column.component-Be7Nr0lJ.mjs.map → acorex-platform-common-text-widget-column.component-DVczwvKA.mjs.map} +1 -1
  183. package/fesm2022/{acorex-platform-common-text-widget-edit.component-feJTTnye.mjs → acorex-platform-common-text-widget-edit.component-DC_GnFhe.mjs} +9 -12
  184. package/fesm2022/acorex-platform-common-text-widget-edit.component-DC_GnFhe.mjs.map +1 -0
  185. package/fesm2022/{acorex-platform-common-text-widget-view.component-DsUAJ-md.mjs → acorex-platform-common-text-widget-view.component-BK3HZGgb.mjs} +4 -5
  186. package/fesm2022/{acorex-platform-common-text-widget-view.component-DsUAJ-md.mjs.map → acorex-platform-common-text-widget-view.component-BK3HZGgb.mjs.map} +1 -1
  187. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-BFwzsY4-.mjs → acorex-platform-common-toggle-widget-column.component-Bp1d7SAE.mjs} +4 -5
  188. package/fesm2022/{acorex-platform-common-toggle-widget-column.component-BFwzsY4-.mjs.map → acorex-platform-common-toggle-widget-column.component-Bp1d7SAE.mjs.map} +1 -1
  189. package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-Cuf9_RrU.mjs → acorex-platform-common-toggle-widget-edit.component-D64m4agx.mjs} +4 -5
  190. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-D64m4agx.mjs.map +1 -0
  191. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DYz6VTey.mjs → acorex-platform-common-toggle-widget-view.component-BTaXXZ88.mjs} +4 -5
  192. package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DYz6VTey.mjs.map → acorex-platform-common-toggle-widget-view.component-BTaXXZ88.mjs.map} +1 -1
  193. package/fesm2022/acorex-platform-common.mjs +846 -981
  194. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  195. package/fesm2022/acorex-platform-layout-builder.mjs +28 -11
  196. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  197. package/fesm2022/acorex-platform-layout-designer.mjs +26 -36
  198. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  199. package/fesm2022/acorex-platform-layout-entity.mjs +843 -819
  200. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  201. package/fesm2022/acorex-platform-layout-setting.mjs +197 -0
  202. package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -0
  203. package/fesm2022/acorex-platform-layouts.mjs +37 -46
  204. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  205. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cf5ttvrG.mjs → acorex-platform-themes-default-entity-master-create-view.component-Bs6fn6z2.mjs} +5 -5
  206. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cf5ttvrG.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-Bs6fn6z2.mjs.map} +1 -1
  207. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DPHXeucj.mjs +310 -0
  208. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DPHXeucj.mjs.map +1 -0
  209. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-CCvE7XiE.mjs → acorex-platform-themes-default-entity-master-modify-view.component-CWrpcOC2.mjs} +5 -5
  210. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-CCvE7XiE.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-CWrpcOC2.mjs.map} +1 -1
  211. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-CwrgQFY7.mjs → acorex-platform-themes-default-entity-master-single-view.component-DHfe0Qtu.mjs} +19 -21
  212. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DHfe0Qtu.mjs.map +1 -0
  213. package/fesm2022/acorex-platform-themes-default.mjs +173 -135
  214. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  215. package/fesm2022/acorex-platform-themes-shared.mjs +184 -20
  216. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  217. package/fesm2022/{acorex-platform-widgets-template-widget-edit.component-JlCVB-Aq.mjs → acorex-platform-widgets-template-widget-edit.component-DwPYeF0y.mjs} +2 -1
  218. package/fesm2022/{acorex-platform-widgets-template-widget-edit.component-JlCVB-Aq.mjs.map → acorex-platform-widgets-template-widget-edit.component-DwPYeF0y.mjs.map} +1 -1
  219. package/fesm2022/acorex-platform-widgets.mjs +181 -34
  220. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  221. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  222. package/layout/builder/lib/builder/widget-column-renderer.d.ts +1 -1
  223. package/layout/builder/lib/builder/widget.types.d.ts +1 -2
  224. package/layout/entity/lib/entity-detail-list.viewmodel.d.ts +1 -0
  225. package/layout/entity/lib/entity-master-create.viewmodel.d.ts +2 -2
  226. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +7 -2
  227. package/layout/entity/lib/index.d.ts +4 -3
  228. package/layout/setting/README.md +3 -0
  229. package/layout/setting/index.d.ts +1 -0
  230. package/layout/setting/lib/convert-setting-data.d.ts +21 -0
  231. package/layout/setting/lib/setting.viewmodel.d.ts +39 -0
  232. package/layouts/lib/admin/admin.module.d.ts +6 -3
  233. package/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.d.ts +42 -9
  234. package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.d.ts +0 -2
  235. package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +0 -2
  236. package/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.d.ts +4 -2
  237. package/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.d.ts +0 -1
  238. package/package.json +12 -12
  239. package/themes/default/index.d.ts +1 -0
  240. package/themes/default/lib/default.module.d.ts +3 -4
  241. package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +43 -8
  242. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +42 -4
  243. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +3 -2
  244. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +42 -3
  245. package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +42 -2
  246. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +42 -11
  247. package/themes/default/lib/layouts/setting-layout/index.d.ts +2 -0
  248. package/themes/default/lib/layouts/setting-layout/setting-menu/setting-menu.component.d.ts +12 -0
  249. package/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.d.ts +7 -0
  250. package/themes/shared/lib/components/theme-slot.component.d.ts +31 -5
  251. package/themes/shared/lib/services/theme.service.d.ts +45 -5
  252. package/widgets/lib/widgets/advance/cron-job/cron-job-widget-column.component.d.ts +6 -0
  253. package/widgets/lib/widgets/advance/cron-job/cron-job-widget-designer.component.d.ts +6 -0
  254. package/widgets/lib/widgets/advance/cron-job/cron-job-widget-edit.component.d.ts +7 -0
  255. package/widgets/lib/widgets/advance/cron-job/cron-job-widget-filter.component.d.ts +6 -0
  256. package/widgets/lib/widgets/advance/cron-job/cron-job-widget-print.component.d.ts +6 -0
  257. package/widgets/lib/widgets/advance/cron-job/cron-job-widget-view.component.d.ts +7 -0
  258. package/widgets/lib/widgets/advance/cron-job/cron-job-widget.config.d.ts +7 -0
  259. package/widgets/lib/widgets/advance/cron-job/index.d.ts +7 -0
  260. package/workflow/lib/workflow.service.d.ts +1 -1
  261. package/common/lib/layout/layout.service.d.ts +0 -19
  262. package/common/lib/layout/theme/store/admin-layout.actions.d.ts +0 -7
  263. package/common/lib/layout/theme/store/admin-layout.effects.d.ts +0 -9
  264. package/common/lib/layout/theme/store/admin-layout.reducers.d.ts +0 -19
  265. package/common/lib/layout/theme/store/admin-layout.selectors.d.ts +0 -4
  266. package/common/lib/layout/theme/store/admin-layout.state.d.ts +0 -11
  267. package/common/lib/layout/theme/store/index.d.ts +0 -5
  268. package/esm2022/common/lib/layout/layout.service.mjs +0 -79
  269. package/esm2022/common/lib/layout/theme/store/admin-layout.actions.mjs +0 -11
  270. package/esm2022/common/lib/layout/theme/store/admin-layout.effects.mjs +0 -21
  271. package/esm2022/common/lib/layout/theme/store/admin-layout.reducers.mjs +0 -64
  272. package/esm2022/common/lib/layout/theme/store/admin-layout.selectors.mjs +0 -7
  273. package/esm2022/common/lib/layout/theme/store/admin-layout.state.mjs +0 -13
  274. package/esm2022/common/lib/layout/theme/store/index.mjs +0 -6
  275. package/esm2022/mocks/acorex-platform-mocks.mjs +0 -5
  276. package/esm2022/mocks/index.mjs +0 -7
  277. package/esm2022/mocks/lib/mocks.module.mjs +0 -15
  278. package/esm2022/mocks/lib/services/mocker.service.mjs +0 -114
  279. package/esm2022/mocks/lib/storage/storage.mock.service.mjs +0 -183
  280. package/esm2022/themes/default/lib/layout.routes.mjs +0 -20
  281. package/fesm2022/acorex-platform-common-avatar-widget-view.component-Dew3CVLm.mjs.map +0 -1
  282. package/fesm2022/acorex-platform-common-boolean-widget-filter.component-BdE7WOK5.mjs.map +0 -1
  283. package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-ChXbJsuG.mjs.map +0 -1
  284. package/fesm2022/acorex-platform-common-dateTime-widget-column.component-QUYyDVw8.mjs.map +0 -1
  285. package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-CzLb3xnR.mjs.map +0 -1
  286. package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-DZRQ6yVk.mjs.map +0 -1
  287. package/fesm2022/acorex-platform-common-email-widget-column.component-Cm-fhlNZ.mjs.map +0 -1
  288. package/fesm2022/acorex-platform-common-email-widget-edit.component-BfXFBLF6.mjs.map +0 -1
  289. package/fesm2022/acorex-platform-common-file-widget-column.component-B0v2rSWI.mjs.map +0 -1
  290. package/fesm2022/acorex-platform-common-file-widget-filter.component-C3uBjqF-.mjs.map +0 -1
  291. package/fesm2022/acorex-platform-common-gallery-widget-filter.component-Di446i2c.mjs.map +0 -1
  292. package/fesm2022/acorex-platform-common-largetext-widget-edit.component-D89AlBSm.mjs.map +0 -1
  293. package/fesm2022/acorex-platform-common-lookup-widget-column.component-CB0ehp_y.mjs.map +0 -1
  294. package/fesm2022/acorex-platform-common-lookup-widget-filter.component-Dxj_XEYV.mjs.map +0 -1
  295. package/fesm2022/acorex-platform-common-lookup-widget-view.component-BtO3feA9.mjs.map +0 -1
  296. package/fesm2022/acorex-platform-common-map-widget-edit.component-hXIZrhzg.mjs.map +0 -1
  297. package/fesm2022/acorex-platform-common-map-widget-view.component-RgV-r8q6.mjs.map +0 -1
  298. package/fesm2022/acorex-platform-common-messenger-widget-column.component-DGWQWuzM.mjs.map +0 -1
  299. package/fesm2022/acorex-platform-common-messenger-widget-edit.component-Blv1qL4e.mjs.map +0 -1
  300. package/fesm2022/acorex-platform-common-number-widget-edit.component-gQCEBhPv.mjs.map +0 -1
  301. package/fesm2022/acorex-platform-common-number-widget-filter.component-CvEw3awN.mjs.map +0 -1
  302. package/fesm2022/acorex-platform-common-number-widget-view.component-ROrdklif.mjs.map +0 -1
  303. package/fesm2022/acorex-platform-common-password-widget-edit.component-BCOoHtGl.mjs.map +0 -1
  304. package/fesm2022/acorex-platform-common-phone-widget-edit.component-Bo_aOxfZ.mjs.map +0 -1
  305. package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-12odUyzb.mjs.map +0 -1
  306. package/fesm2022/acorex-platform-common-rich-text-widget-view.component-Xr0ohz5L.mjs.map +0 -1
  307. package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-C1QPfHCm.mjs.map +0 -1
  308. package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DIgxHmqa.mjs.map +0 -1
  309. package/fesm2022/acorex-platform-common-selection-list-widget-view.component-D-VQ4JNC.mjs.map +0 -1
  310. package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-USd0U707.mjs.map +0 -1
  311. package/fesm2022/acorex-platform-common-string-widget-filter.component-wI9D-Ju5.mjs.map +0 -1
  312. package/fesm2022/acorex-platform-common-text-widget-edit.component-feJTTnye.mjs.map +0 -1
  313. package/fesm2022/acorex-platform-common-toggle-widget-edit.component-Cuf9_RrU.mjs.map +0 -1
  314. package/fesm2022/acorex-platform-mocks.mjs +0 -319
  315. package/fesm2022/acorex-platform-mocks.mjs.map +0 -1
  316. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BLb_4pK5.mjs +0 -306
  317. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BLb_4pK5.mjs.map +0 -1
  318. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CwrgQFY7.mjs.map +0 -1
  319. package/mocks/README.md +0 -3
  320. package/mocks/index.d.ts +0 -3
  321. package/mocks/lib/mocks.module.d.ts +0 -7
  322. package/mocks/lib/services/mocker.service.d.ts +0 -29
  323. package/mocks/lib/storage/storage.mock.service.d.ts +0 -25
  324. package/themes/default/lib/layout.routes.d.ts +0 -2
@@ -206,6 +206,7 @@ const AXPWidgetsCatalog = {
206
206
  widgetSelector: 'widget-selector',
207
207
  template: 'template',
208
208
  templateDesigner: 'template-designer',
209
+ cronJob: 'cron-job',
209
210
  };
210
211
 
211
212
  function cloneProperty(property, values) {
@@ -324,9 +325,15 @@ class AXPWidgetComponent extends AXPLayoutElement {
324
325
  return get(this.contextService.context(), path);
325
326
  }
326
327
  setValue(value, init = false) {
327
- const oldValue = this.getValue();
328
- value = isUndefined(value) ? null : value;
329
328
  if (this.fullPath()) {
329
+ const oldValue = this.getValue();
330
+ value = isUndefined(value) ? null : value;
331
+ if (isNil(value) && isNil(oldValue)) {
332
+ return;
333
+ }
334
+ if (isEqual(oldValue, value)) {
335
+ return;
336
+ }
330
337
  this.contextService.setValue(this.fullPath(), value, init);
331
338
  this.onValueChanged(oldValue, value);
332
339
  }
@@ -401,9 +408,8 @@ class AXPDataListWidgetComponent extends AXPWidgetComponent {
401
408
  constructor() {
402
409
  super(...arguments);
403
410
  this.dataService = inject(AXPWidgetDataSourceProviderService);
404
- this.rawDataSource = computed(() => this.options()['dataSource']);
405
411
  this.dataSource = signal(convertArrayToDataSource([]));
406
- this.items = computed(() => this.options()['items'] ?? []);
412
+ //protected items = computed<any[]>(() => this.options()['items'] ?? []);
407
413
  this.textField = computed(() => this.options()['textField'] ?? 'title');
408
414
  this.valueField = computed(() => this.options()['valueField'] ?? 'id');
409
415
  this.rf = effect(() => {
@@ -843,8 +849,9 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
843
849
  const mode = 'column';
844
850
  this.component = await widget?.components[mode]?.component();
845
851
  //
846
- const props = widget?.components[mode]?.properties?.filter(c => c.schema.defaultValue)
847
- .map(c => ({ [c.name]: c.schema.defaultValue }))
852
+ const props = widget?.components[mode]?.properties
853
+ ?.filter((c) => c.schema.defaultValue)
854
+ .map((c) => ({ [c.name]: c.schema.defaultValue }))
848
855
  .reduce((acc, curr) => {
849
856
  return { ...acc, ...curr };
850
857
  }, {});
@@ -852,7 +859,7 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
852
859
  this.mergedOptions.set(merge(props, this.node.options) || {});
853
860
  const tokenValue = {
854
861
  path: this.node.path,
855
- options: this.mergedOptions()
862
+ options: this.mergedOptions(),
856
863
  };
857
864
  this.widgetInjector = Injector.create({
858
865
  parent: this.injector,
@@ -871,11 +878,16 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
871
878
  return { rawValue: get(data, this.node.path) };
872
879
  }
873
880
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
874
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: { caption: "caption", node: "node", footerTemplate: "footerTemplate", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate" }, providers: [AXPLayoutBuilderService, { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent }], viewQueries: [{ propertyName: "_contentFooterTemplate", first: true, predicate: ["footer"], descendants: true }, { propertyName: "_contentCellTemplate", first: true, predicate: ["cell"], descendants: true }, { propertyName: "_contentHeaderTemplate", first: true, predicate: ["header"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
881
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: { caption: "caption", node: "node", footerTemplate: "footerTemplate", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate" }, providers: [
882
+ AXPLayoutBuilderService,
883
+ { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },
884
+ ], viewQueries: [{ propertyName: "_contentFooterTemplate", first: true, predicate: ["footer"], descendants: true }, { propertyName: "_contentCellTemplate", first: true, predicate: ["cell"], descendants: true }, { propertyName: "_contentHeaderTemplate", first: true, predicate: ["header"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
875
885
  <ng-template #header>{{ caption }}</ng-template>
876
886
  <ng-template #cell let-row>
877
887
  @if(component && widgetInjector && row?.data) {
878
- <ng-container *ngComponentOutlet="component; injector: widgetInjector; inputs: getInputs(row.data)"></ng-container>
888
+ <ng-container
889
+ *ngComponentOutlet="component; injector: widgetInjector; inputs: getInputs(row.data)"
890
+ ></ng-container>
879
891
  }
880
892
  </ng-template>
881
893
  <ng-template #footer></ng-template>
@@ -889,12 +901,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
889
901
  <ng-template #header>{{ caption }}</ng-template>
890
902
  <ng-template #cell let-row>
891
903
  @if(component && widgetInjector && row?.data) {
892
- <ng-container *ngComponentOutlet="component; injector: widgetInjector; inputs: getInputs(row.data)"></ng-container>
904
+ <ng-container
905
+ *ngComponentOutlet="component; injector: widgetInjector; inputs: getInputs(row.data)"
906
+ ></ng-container>
893
907
  }
894
908
  </ng-template>
895
909
  <ng-template #footer></ng-template>
896
910
  `,
897
- providers: [AXPLayoutBuilderService, { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent }],
911
+ providers: [
912
+ AXPLayoutBuilderService,
913
+ { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },
914
+ ],
898
915
  changeDetection: ChangeDetectionStrategy.OnPush,
899
916
  inputs: ['caption'],
900
917
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-layout-builder.mjs","sources":["../../../../libs/platform/layout/builder/src/lib/builder/builder.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-registery.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/datasource-provider.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-catalog.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget.types.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-renderer.component.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-container.component.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-column-renderer.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-renderer.component.directive.ts","../../../../libs/platform/layout/builder/src/lib/builder/builder.module.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-groups.ts","../../../../libs/platform/layout/builder/src/acorex-platform-layout-builder.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { clone, get, isEqual, set } from 'lodash-es';\nimport { Subject, Subscription, debounceTime } from 'rxjs';\nimport { AXPLayoutContextEvent } from './widget.types';\n\nexport type AXPLayoutElementAPI = { [name: string]: Subject<any> | Function };\n\nexport abstract class AXPLayoutElement {\n abstract get id(): string | null;\n\n api(): AXPLayoutElementAPI {\n return {};\n }\n}\n\n@Injectable()\nexport class AXPLayoutBuilderService {\n private readonly context$ = signal<any>({});\n private readonly variables$ = signal<any>({});\n private readonly functions$ = signal<{ [key: string]: Function }>({});\n\n public readonly onChanged: Subject<AXPLayoutContextEvent> = new Subject<AXPLayoutContextEvent>();\n public readonly onRefresh: Subject<void> = new Subject<void>();\n\n private debouncers: { [key: string]: Subject<{ path: string; value: any; init: boolean }> } = {};\n private debouncerSubscriptions: { [key: string]: Subscription } = {};\n\n private widgets = new Map<string, AXPLayoutElement>();\n\n public context = this.context$.asReadonly();\n\n get variables() {\n return this.variables$();\n }\n\n get functions(): { [key: string]: Function } {\n return this.functions$();\n }\n\n initial(value: any) {\n this.context$.set(value);\n this.refresh();\n }\n\n refresh() {\n setTimeout(() => {\n this.onRefresh.next();\n }, 0);\n }\n\n setVariables(keysValues: any): void;\n setVariables(key: string, value: any): void;\n setVariables(...args: any[]): void {\n if (args.length == 0) return;\n else if (args.length == 1) this.variables$.set(args[0]);\n else if (args.length == 2) {\n this.variables$.update((v) => set(v, args[0], args[1]));\n }\n }\n\n setFunctions(keysValues: any): void;\n setFunctions(key: string, value: any): void;\n setFunctions(...args: any[]): void {\n if (args.length == 0) return;\n else if (args.length == 1) this.functions$.set(args[0]);\n else if (args.length == 2) {\n this.functions$.update((v) => set(v, args[0], args[1]));\n }\n }\n\n setValue(path: string, value: any, init: boolean = false) {\n const oldValue = get(this.context$(), path);\n if (isEqual(oldValue, value)) {\n return;\n }\n if (!this.debouncers[path]) {\n // Create a new Subject for debouncing if it doesn't exist\n this.debouncers[path] = new Subject<{ path: string; value: any; init: boolean }>();\n\n // Subscribe to the subject with debounceTime\n this.debouncerSubscriptions[path] = this.debouncers[path].pipe(debounceTime(150)).subscribe(({ value, init }) => {\n // Only emit onChanged event after debounce time\n this.onChanged.next({\n oldValue: oldValue,\n newValue: value,\n data: this.context(),\n path,\n init,\n });\n });\n }\n\n // Update context immediately\n this.context$.update((ctx) => set(clone(ctx), path, value));\n // Emit value through the debouncer subject\n this.debouncers[path].next({ path, value, init });\n }\n\n getValue(path: string) {\n return get(this.context(), path);\n }\n\n registerWidget(id: string, widget: AXPLayoutElement) {\n this.widgets.set(id, widget);\n }\n\n getWidget(id: string): AXPLayoutElement | undefined {\n return this.widgets.get(id);\n }\n\n private unsubscribeDebouncers() {\n Object.keys(this.debouncerSubscriptions).forEach((path) => {\n this.debouncerSubscriptions[path].unsubscribe();\n delete this.debouncerSubscriptions[path]; // Clean up the reference\n delete this.debouncers[path]; // Also clean up the debouncer subject\n });\n }\n\n ngOnDestroy(): void {\n this.unsubscribeDebouncers();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPWidgetConfig } from './widget.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPWidgetRegistryService {\n private types: Map<string, AXPWidgetConfig> = new Map();\n\n register(widget: AXPWidgetConfig) {\n this.types.set(widget.name, widget);\n }\n\n extend(parentName: string, widget: AXPWidgetConfig) {\n const parentWidget = this.resolve(parentName);\n const newWidget = merge({}, parentWidget, widget);\n newWidget.name = widget.name;\n this.register(newWidget);\n }\n\n resolve(name: string): AXPWidgetConfig | undefined {\n const widget = this.types.get(name);\n if (!widget) {\n throw new Error(`Widget with name \"${name}\" does not exist.`);\n }\n return widget;\n }\n\n public all(): AXPWidgetConfig[] {\n return Array.from(this.types.values());\n }\n}\n","import { AXDataSource } from '@acorex/components/common';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\n\nexport interface AXPWidgetDataSource {\n name: string;\n title: string;\n columns: {\n name: string;\n title: string;\n // dataType: string;\n // nullable?: boolean;\n // interface?: Partial<AXEntityPropertyWidget>;\n }[];\n samples?: any[];\n source: () => AXDataSource;\n}\n\nexport interface AXPWidgetDataSourceProvider {\n items(): Promise<AXPWidgetDataSource[]>;\n}\n\nexport const AXP_WIDGET_DATASOURCE_PROVIDER = new InjectionToken<AXPWidgetDataSourceProvider[]>(\n 'AXP_WIDGET_DATASOURCE_PROVIDER'\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPWidgetDataSourceProviderService implements AXPWidgetDataSourceProvider {\n private providers = inject(AXP_WIDGET_DATASOURCE_PROVIDER, { optional: true });\n\n async items(): Promise<AXPWidgetDataSource[]> {\n const items: AXPWidgetDataSource[] = [];\n\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n items.push(...(await provider.items()));\n }\n }\n\n return items;\n }\n\n async get(name: string): Promise<AXPWidgetDataSource | undefined> {\n return (await this.items()).find((c) => c.name == name);\n }\n}\n","import { AXPWidgetTypesMap } from './widget.types';\n\nconst AXPWidgetsCatalog: AXPWidgetTypesMap = {\n checkbox: 'checkbox-editor',\n color: 'color-editor',\n contact: 'contact-editor',\n dateTime: 'date-time-editor',\n email: 'email-editor',\n largeText: 'large-text-editor',\n link: 'link-editor',\n number: 'number-editor',\n password: 'password-editor',\n phone: 'phone-editor',\n richText: 'rich-text-editor',\n select: 'select-editor',\n selectionList: 'selection-list-editor',\n text: 'text-editor',\n toggle: 'toggle-editor',\n blockLayout: 'block-layout',\n pageLayout: 'page-layout',\n repeaterLayout: 'repeater-layout',\n textBlockLayout: 'text-block-layout',\n file: 'file',\n map: 'map',\n gallery: 'gallery',\n signature: 'signature',\n buttonAction: 'button-action',\n document: 'document-layout',\n lookup: 'lookup-editor',\n formField: 'form-field',\n qrcode: 'qrcode',\n grid: 'grid-layout',\n gridItem: 'grid-item-layout',\n gridRow: 'grid-row-layout',\n widgetSelector: 'widget-selector',\n template: 'template',\n templateDesigner: 'template-designer',\n};\n\nexport { AXPWidgetsCatalog };\n","import { AXDataSource, AXValueChangedEvent, convertArrayToDataSource } from '@acorex/components/common';\nimport { AXPMetaData, AXPOptionsData, AXPPartialNested, AXPValidationRules } from '@acorex/platform/core';\nimport {\n afterNextRender,\n computed,\n effect,\n ElementRef,\n inject,\n Injectable,\n InjectionToken,\n signal,\n} from '@angular/core';\nimport { cloneDeep, get, isNil, isUndefined, merge } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPLayoutBuilderService, AXPLayoutElement } from './builder.service';\nimport { AXPWidgetDataSourceProviderService } from './datasource-provider.service';\nimport { AXPWidgetsCatalog } from './widget-catalog';\n\nexport type AXPWidgetTrigger = { event: string; action: string; disabled?: boolean };\nexport type AXPWidgetTriggers = AXPWidgetTrigger[];\n\nexport interface AXPWidgetPropertyGroup {\n name: string;\n title: string;\n order: number;\n}\n\nexport interface AXPWidgetGroup {\n name: string;\n title: string;\n order: number;\n}\n\nexport type AXPWidgetDataType = 'string' | 'number' | 'object' | 'boolean' | 'array';\n\nexport interface AXPWidgetProperty {\n name: string;\n title: string;\n description?: string;\n group: AXPWidgetPropertyGroup;\n schema: {\n dataType: AXPWidgetDataType;\n nullable?: boolean;\n defaultValue?: any | string | ((context: any | null) => any);\n interface: Required<Pick<AXPWidgetNode, 'path'>> & Omit<AXPWidgetNode, 'path'>;\n };\n options?: AXPOptionsData;\n validations?: AXPValidationRules;\n visible: boolean;\n}\n\nexport function cloneProperty(\n property: AXPWidgetProperty,\n values: AXPPartialNested<AXPWidgetProperty>\n): AXPWidgetProperty {\n return merge(cloneDeep(property), values);\n}\n\nexport function createStringProperty(ctor: {\n defaultValue?: string;\n name: string;\n title: string;\n path?: string;\n group: AXPWidgetPropertyGroup;\n visible?: boolean;\n}): AXPWidgetProperty {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: ctor.visible ?? true,\n };\n}\n\nexport function createBooleanProperty(ctor: {\n defaultValue?: boolean;\n name: string;\n title: string;\n path?: string;\n group: AXPWidgetPropertyGroup;\n visible?: boolean;\n}): AXPWidgetProperty {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'boolean',\n defaultValue: ctor.defaultValue ?? false,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: ctor.visible ?? true,\n };\n}\n\nexport function createSelectProperty<T = string | { id: string; title: string }>(ctor: {\n defaultValue: T | T[] | any;\n dataSource: T[];\n name: string;\n title: string;\n path?: string;\n group: AXPWidgetPropertyGroup;\n visible?: boolean;\n}): AXPWidgetProperty {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: Array.isArray(ctor.defaultValue)\n ? ctor.defaultValue.map((item) => (typeof item === 'string' ? { id: item } : item))\n : typeof ctor.defaultValue === 'string'\n ? { id: ctor.defaultValue, title: ctor.defaultValue }\n : ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ctor.dataSource.map((item) => (typeof item === 'string' ? { id: item, title: item } : item)),\n },\n },\n },\n visible: ctor.visible ?? true,\n };\n}\n\nexport interface AXPWidgetNode {\n type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n path?: string;\n name?: string;\n defaultValue?: any;\n formula?: string;\n children?: AXPWidgetNode[];\n options?: AXPOptionsData;\n triggers?: AXPWidgetTriggers;\n meta?: AXPMetaData;\n}\n\nexport interface AXPWidgetTypesMap {\n checkbox: 'checkbox-editor';\n color: 'color-editor';\n contact: 'contact-editor';\n dateTime: 'date-time-editor';\n email: 'email-editor';\n largeText: 'large-text-editor';\n link: 'link-editor';\n number: 'number-editor';\n password: 'password-editor';\n phone: 'phone-editor';\n richText: 'rich-text-editor';\n select: 'select-editor';\n selectionList: 'selection-list-editor';\n text: 'text-editor';\n toggle: 'toggle-editor';\n blockLayout: 'block-layout';\n pageLayout: 'page-layout';\n repeaterLayout: 'repeater-layout';\n textBlockLayout: 'text-block-layout';\n file: 'file';\n map: 'map';\n gallery: 'gallery';\n signature: 'signature';\n buttonAction: 'button-action';\n document: 'document-layout';\n lookup: 'lookup-editor';\n formField: 'form-field';\n grid: 'grid-layout';\n gridRow: 'grid-row-layout';\n gridItem: 'grid-item-layout';\n qrcode: 'qrcode';\n widgetSelector: 'widget-selector';\n template: 'template';\n templateDesigner: 'template-designer';\n}\n\nexport interface AXPWidgetNodeToken {\n config: AXPWidgetConfig;\n node: AXPWidgetNode;\n options?: AXPOptionsData;\n}\n\nexport interface AXPWidgetColumnNode {\n type: string;\n path: string;\n options?: AXPOptionsData;\n}\n\nexport interface AXPWidgetColumnNodeToken extends AXPWidgetColumnNode {\n config: AXPWidgetConfig;\n}\n\nexport const AXP_WIDGET_TOKEN = new InjectionToken<AXPWidgetNodeToken>('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken<AXPWidgetColumnNodeToken>('AXP_WIDGET_COLUMN_TOKEN');\n\nexport interface AXPWidgetComponentConfig {\n component: () => Promise<any>;\n properties?: AXPWidgetProperty[];\n}\n\nexport interface AXPWidgetConfigComponents {\n designer?: AXPWidgetComponentConfig;\n view?: AXPWidgetComponentConfig;\n edit?: AXPWidgetComponentConfig;\n print?: AXPWidgetComponentConfig;\n column?: AXPWidgetComponentConfig;\n filter?: AXPWidgetComponentConfig;\n}\n\nexport type AXPWidgetType = 'container' | 'editor' | 'action' | 'view';\n\nexport interface AXPWidgetConfig {\n name: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n title: string;\n icon?: string;\n description?: string;\n group: AXPWidgetGroup;\n properties?: AXPWidgetProperty[];\n components: AXPWidgetConfigComponents;\n meta?: AXPMetaData;\n type: AXPWidgetType;\n visible?: boolean;\n}\n\nexport type AXPWidgetRenderMode = keyof AXPWidgetConfigComponents;\n\nexport interface AXPLayoutContextEvent {\n oldValue: any;\n newValue: any;\n path?: string | null;\n data: any;\n init: boolean;\n}\n\n@Injectable()\nexport abstract class AXPWidgetComponent<T = any | null | void> extends AXPLayoutElement {\n protected readonly token = inject(AXP_WIDGET_TOKEN);\n public readonly host = inject(ElementRef).nativeElement as HTMLDivElement;\n\n protected readonly config = this.token.config;\n\n protected readonly name = this.token.node.name;\n protected readonly path = this.token.node.path;\n protected readonly defaultValue = this.token.node.defaultValue;\n\n protected readonly _children = signal(this.token.node.children ?? []);\n protected children = this._children.asReadonly();\n\n protected _options = signal<any>(this.token.options ?? {});\n protected options = this._options.asReadonly();\n\n private readonly contextService = inject(AXPLayoutBuilderService);\n\n public readonly onReady = new Subject<void>();\n\n private isRendered = false;\n private _isValueWidget = false;\n private isValueWidget = () => this._isValueWidget;\n\n private _id: string | null;\n public get id(): string | null {\n return this._id;\n }\n\n parent: AXPWidgetComponent | null | undefined;\n index: number | null | undefined;\n mode: AXPWidgetRenderMode;\n\n protected fullPath = signal<string | null>(null);\n\n ngOnInit() {\n this.initRender();\n }\n\n private nextRender = afterNextRender(() => {\n //\n if (!this.isRendered) {\n this.detectFullPath();\n //\n this.onReady.next();\n //\n this.isRendered = true;\n }\n });\n\n private initRender() {\n this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;\n if (this.isValueWidget()) {\n this.detectFullPath();\n if (!isNil(this.defaultValue) && isNil(this.getValue())) {\n console.log(this.getValue(), this.defaultValue);\n this.setValue(this.defaultValue, true);\n }\n }\n }\n\n public getValue = computed(() => {\n return this.fullPath() ? this.extractValue(this.fullPath()!) : null;\n });\n\n protected extractValue(path: string): any {\n return get(this.contextService.context(), path);\n }\n\n setValue(value: T | null | undefined, init: boolean = false) {\n const oldValue = this.getValue();\n value = isUndefined(value) ? null : value;\n if (this.fullPath()) {\n this.contextService.setValue(this.fullPath()!, value, init);\n this.onValueChanged(oldValue, value);\n }\n }\n\n setOptions(values: any): void {\n this._options.set({ ...this.options(), ...values });\n }\n\n call(name: string, ...args: any[]): void {\n const fn = get(this, name) as Function;\n if (fn && typeof fn == 'function') {\n fn.bind(this)(...args);\n }\n }\n\n setChildren(children: AXPWidgetNode[]) {\n this._children.set([...children]);\n }\n\n onValueChanged(oldValue: T | null, newValue: T | null) {}\n\n private detectFullPath() {\n let sections = [];\n let ids = [];\n //\n let parent: AXPWidgetComponent | null | undefined = this;\n //\n while (parent) {\n const path = parent.path ?? (parent.isValueWidget() && parent.index == null ? parent.name : null);\n const id = parent.name;\n //\n if (path) {\n sections.push(path);\n }\n if (parent.index != null) {\n sections.push(`[${parent.index}]`);\n }\n if (id) {\n ids.push(id);\n if (parent.index != null) {\n ids.push(`${parent.index}`);\n }\n }\n parent = parent.parent;\n }\n //\n this.fullPath.set(sections.reverse().join('.'));\n this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n if (this._id) {\n this.contextService.registerWidget(this._id, this);\n }\n }\n\n protected handleValueChanged(e: AXValueChangedEvent<T>) {\n if (e.isUserInteraction) {\n this.setValue(e.value!);\n }\n }\n}\n\n@Injectable()\nexport abstract class AXPContainerWidgetComponent<T> extends AXPWidgetComponent<T> {\n public readonly node = this.token.node;\n}\n\nexport type AXPDataSource = string | AXDataSource | any[];\n@Injectable()\nexport abstract class AXPDataListWidgetComponent extends AXPWidgetComponent<any> {\n private dataService = inject(AXPWidgetDataSourceProviderService);\n\n protected rawDataSource = computed<AXPDataSource>(() => this.options()['dataSource'] as AXPDataSource);\n protected dataSource = signal<AXDataSource>(convertArrayToDataSource([]));\n protected items = computed<any[]>(() => this.options()['items'] ?? []);\n protected textField = computed<string>(() => this.options()['textField'] ?? 'title');\n protected valueField = computed<string>(() => (this.options()['valueField'] as string) ?? 'id');\n\n private rf = effect(\n () => {\n const rawValue = this.options()['dataSource'];\n // static datasource class\n if (rawValue instanceof AXDataSource) {\n this.dataSource.set(rawValue);\n } // static array datasource\n else if (Array.isArray(rawValue)) {\n this.dataSource.set(convertArrayToDataSource(rawValue));\n } // resolve data source by name\n else if (rawValue && (typeof rawValue == 'string' || typeof rawValue == 'object')) {\n const name = typeof rawValue == 'object' ? rawValue[this.valueField()] : rawValue;\n this.dataService.get(name).then((c) => {\n if (this.mode == 'designer' && c?.samples?.length) {\n this.dataSource.set(convertArrayToDataSource(c.samples));\n } else {\n const ds = c?.source();\n if (ds) {\n this.dataSource.set(ds);\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n }\n });\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n },\n { allowSignalWrites: true }\n );\n}\n\n@Injectable()\nexport abstract class AXPColumnWidgetComponent<T = any | null | void> {\n private readonly token = inject(AXP_WIDGET_COLUMN_TOKEN);\n\n protected readonly path = this.token.path;\n protected readonly options = this.token.options ?? {};\n protected readonly rawValue: any = null;\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkPortalOutletAttachedRef, ComponentPortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n Injector,\n Input,\n WritableSignal,\n inject,\n signal,\n} from '@angular/core';\nimport { cloneDeep, get, merge, set, sum } from 'lodash-es';\nimport { Observable, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport {\n AXPWidgetComponent,\n AXPWidgetNode,\n AXPWidgetNodeToken,\n AXPWidgetRenderMode,\n AXP_WIDGET_TOKEN,\n} from './widget.types';\n\n@Component({\n selector: 'axp-widget-renderer',\n template: `\n @if(mergedOptions().isVisible!=false) { @if(isLoading()){\n <ax-skeleton [animated]=\"true\" class=\"ax-w-full lg:ax-w-[50%] ax-h-8 ax-rounded\"></ax-skeleton>\n } @else {\n <ng-container *ngTemplateOutlet=\"tt\"></ng-container>\n } }\n <ng-template #tt>\n <ng-template [cdkPortalOutlet]=\"portal\" (attached)=\"handleAttached($event)\"></ng-template>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n})\nexport class AXPWidgetRendererComponent {\n private _node: AXPWidgetNode;\n @Input({ required: true })\n public get node(): AXPWidgetNode {\n return this._node;\n }\n public set node(v: AXPWidgetNode) {\n this._node = v;\n this.loadComponent();\n }\n\n private _mode: AXPWidgetRenderMode = 'edit';\n @Input()\n public get mode(): AXPWidgetRenderMode {\n return this._mode;\n }\n public set mode(v: AXPWidgetRenderMode) {\n this._mode = v;\n }\n\n @Input()\n parentNode: AXPWidgetComponent | null;\n\n @Input()\n index: number | null;\n\n protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n private injector = inject(Injector);\n protected builderService = inject(AXPLayoutBuilderService);\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n protected unsubscriber = inject(AXUnsubscriber);\n\n protected isLoading = signal(true);\n private instance!: AXPWidgetComponent;\n protected portal!: ComponentPortal<any>;\n private expressionCache: Map<string, () => Promise<any>> = new Map();\n private expressionEvaluators: Map<string, () => Promise<any>> = new Map();\n private scope: any = null;\n\n constructor() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (e) => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n if (this.checkFormulaForUpdate(this.node.formula, e.path)) {\n await this.updateValueBasedOnFormula();\n }\n });\n }\n\n private async loadComponent() {\n this.isLoading.set(true);\n const widget = this.widgetRegistery.resolve(this.node.type);\n //\n const props = widget?.components[this.mode]?.properties\n ?.filter((c) => c.schema.defaultValue != null)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n this.preprocessAndInitialOptions(cloneDeep(this.node.options));\n await this.updateOptionsBasedOnContext();\n const tokenValue = {\n node: this.node,\n options: this.mergedOptions(),\n config: widget,\n } as AXPWidgetNodeToken;\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n var com = await widget?.components[this.mode]?.component();\n this.portal = new ComponentPortal(com, null, token);\n this.isLoading.set(false);\n }\n\n protected async handleAttached(portalOutletRef: CdkPortalOutletAttachedRef) {\n portalOutletRef = portalOutletRef as ComponentRef<AXPWidgetComponent>;\n this.instance = portalOutletRef.instance as AXPWidgetComponent;\n this.instance.parent = this.parentNode;\n this.instance.index = this.index;\n this.instance.mode = this.mode;\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n }\n\n private applyOptions() {\n if (!this.instance) return;\n this.instance.setOptions(this.mergedOptions());\n }\n\n private checkFormulaForUpdate(formula: string | undefined, path?: string | null): boolean {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match: any) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n } else return false;\n }\n\n preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n if (!obj) return;\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.includes('{{')) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n } else if (\n typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))\n ) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n } else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n\n async updateOptionsBasedOnContext() {\n const updates: any[] = [];\n for (let [path, evaluator] of this.expressionEvaluators) {\n const newValue = await evaluator();\n updates.push({ path, newValue });\n }\n // Apply updates to mergedOptions\n if (updates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n updates.forEach(({ path, newValue }) => {\n // Set the new value in the updatedOptions object by path\n set(updatedOptions, path, newValue); // Assuming 'set' can handle paths like 'property.subproperty'\n });\n return updatedOptions;\n });\n }\n return updates.length;\n }\n\n async updateValueBasedOnFormula() {\n if (this.node.formula) {\n const value = await this.evaluateExpression(this.node.formula);\n this.instance.setValue(value);\n }\n }\n\n private async evaluateExpression(templateExpression: string): Promise<any> {\n try {\n // Check cache first, but cache the function for evaluation, not the evaluated value\n if (!this.expressionCache.has(templateExpression)) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const evaluationFunction = async () => {\n const sandbox = new Function(\n 'scope',\n `with (scope) { return (async function() { return ${expression}; })(); }`\n );\n return await sandbox(scope);\n };\n\n this.expressionCache.set(templateExpression, evaluationFunction);\n }\n\n // Retrieve the function from the cache and call it to evaluate the expression\n const evaluate = this.expressionCache.get(templateExpression);\n if (evaluate) {\n const result = await evaluate();\n return result;\n } else {\n throw Error(`Failed to retrieve evaluation function for expression: \"${templateExpression}\"`);\n }\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n\n private getGlobalScope() {\n if (this.scope) return this.scope;\n this.scope = {};\n set(this.scope, 'context', this.getContextScope());\n set(this.scope, 'events', this.getEventScope());\n set(this.scope, 'widget', this.getWidgetScope());\n set(this.scope, 'methods', this.getFunctionScope());\n set(this.scope, 'vars', this.getVariablesScope());\n return this.scope;\n }\n\n private getContextScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => this.builderService.getValue(path));\n return scope;\n }\n\n private getEventScope(): any {\n const scope: any = {};\n set(scope, 'context', (path: string) => this.builderService.onChanged.pipe(filter((c) => c.path == path)));\n set(scope, 'from', (event: string) => get(this.instance.api(), event));\n return scope;\n }\n\n private getWidgetScope(): any {\n const scope: any = {};\n set(scope, 'call', (name: string, ...args: any[]) => {\n this.instance.call(name, ...args);\n });\n set(scope, 'find', (id: string) => {\n return this.builderService.getWidget(id)?.api();\n });\n return scope;\n }\n\n private getFunctionScope(): any {\n const scope: any = {};\n set(scope, 'sum', (values: any) => {\n return sum(values);\n });\n Object.entries(this.builderService.functions).forEach((i) => {\n set(scope, i[0], (...args: any[]) => {\n return i[1](...args);\n });\n });\n return scope;\n }\n\n private getVariablesScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => get(this.builderService.variables, path));\n return scope;\n }\n\n private async assignTriggers() {\n this.node.triggers?.forEach((t) => {\n const event = this.evaluateTrigger(t.event);\n event?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.evaluateAction(t.action);\n });\n });\n }\n\n private evaluateTrigger(templateExpression: string): Observable<any> | null {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { return ( function() { return ${expression}; })(); }`);\n return sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return null;\n }\n }\n\n private evaluateAction(templateExpression: string) {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope: any = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { ${expression} }`);\n sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n }\n }\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, effect, inject, model } from '@angular/core';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPLayoutContextEvent } from './widget.types';\n\n@Component({\n selector: 'axp-widgets-container',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: contents;' },\n providers: [AXPLayoutBuilderService, AXUnsubscriber],\n})\nexport class AXPWidgetContainerComponent {\n @Output()\n public readonly onChanged = new EventEmitter<AXPLayoutContextEvent>();\n\n public context = model<any>({});\n\n\n @Input()\n public set variables(v: any) {\n this.builderService.setVariables(v);\n }\n\n @Input()\n public set functions(v: any) {\n this.builderService.setFunctions(v);\n }\n\n private unsubscriber = inject(AXUnsubscriber);\n private builderService = inject(AXPLayoutBuilderService);\n\n private ef = effect(\n () => {\n this.builderService.initial(this.context());\n },\n { allowSignalWrites: true }\n );\n\n ngOnInit() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((e) => {\n this.context.set(e.data);\n this.onChanged.emit(e);\n });\n }\n}\n","import { AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, TemplateRef, ViewChild, inject, signal } from '@angular/core';\nimport { AXPWidgetColumnNode, AXP_WIDGET_COLUMN_TOKEN } from './widget.types';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { get, merge } from 'lodash-es';\n\n@Component({\n selector: 'axp-widget-column-renderer',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n @if(component && widgetInjector && row?.data) {\n <ng-container *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"></ng-container>\n }\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n providers: [AXPLayoutBuilderService, { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['caption'],\n})\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {\n\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n\n private _node: AXPWidgetColumnNode;\n @Input({ required: true })\n public get node(): AXPWidgetColumnNode {\n return this._node;\n }\n public set node(v: AXPWidgetColumnNode) {\n this._node = v;\n }\n\n private mergedOptions = signal<any>({});\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n @Input()\n public cellTemplate: TemplateRef<unknown>;\n\n @ViewChild('cell')\n private _contentCellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n\n @Input()\n public headerTemplate: TemplateRef<unknown>;\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n get renderHeaderTemplate(): TemplateRef<unknown> {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n\n get loadingEnabled(): boolean {\n return true;\n }\n\n get name(): string {\n return `col-${this.node.path}`;\n }\n\n\n private injector = inject(Injector);\n private cdr = inject(ChangeDetectorRef);\n protected widgetInjector!: Injector;\n protected component!: any;\n\n async ngOnInit() {\n const widget = this.widgetRegistery.resolve(this.node.type);\n const mode = 'column'\n this.component = await widget?.components[mode]?.component();\n //\n const props = widget?.components[mode]?.properties?.filter(c => c.schema.defaultValue)\n .map(c => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(\n merge(props, this.node.options) || {}\n );\n\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions()\n };\n this.widgetInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n\n this.width = this.mergedOptions().width ?? '200px';\n this.allowResizing = this.mergedOptions().allowResizing || true;\n this.cdr.detectChanges();\n }\n\n getInputs(data: any): any {\n return { rawValue: get(data, this.node.path!) };\n }\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n ComponentRef,\n Directive,\n Injector,\n SimpleChanges,\n ViewContainerRef,\n WritableSignal,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { cloneDeep, get, merge, set, sum } from 'lodash-es';\nimport { Observable, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport {\n AXPWidgetComponent,\n AXPWidgetNode,\n AXPWidgetNodeToken,\n AXPWidgetRenderMode,\n AXP_WIDGET_TOKEN,\n} from './widget.types';\n\n@Directive({\n selector: '[axp-widget-renderer]',\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n})\nexport class AXPWidgetRendererDirective {\n parentNode = input<AXPWidgetComponent | null>();\n\n index = input<number | null>();\n\n mode = input.required<AXPWidgetRenderMode>();\n node = input.required<AXPWidgetNode>();\n\n protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n private injector = inject(Injector);\n protected builderService = inject(AXPLayoutBuilderService);\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n protected unsubscriber = inject(AXUnsubscriber);\n private viewContainerRef = inject(ViewContainerRef);\n\n protected isLoading = signal(false);\n private instance!: AXPWidgetComponent;\n private expressionCache: Map<string, () => Promise<any>> = new Map();\n private expressionEvaluators: Map<string, () => Promise<any>> = new Map();\n private scope: any = null;\n private componentRef: ComponentRef<any>;\n\n constructor() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (e) => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n if (this.checkFormulaForUpdate(this.node().formula, e.path)) {\n await this.updateValueBasedOnFormula();\n }\n });\n this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n });\n }\n\n // Detect input changes\n ngOnChanges(changes: SimpleChanges) {\n if (changes['mode'] || changes['node']) {\n // Check if either 'mode' or 'node' has changed\n this.rerenderComponent();\n }\n }\n\n private rerenderComponent() {\n this.isLoading.set(false);\n // Call loadComponent to create and render the component\n setTimeout(async () => {\n await this.loadComponent();\n });\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n private async loadComponent() {\n if (this.isLoading()) {\n return;\n }\n this.isLoading.set(true);\n // Destroy the existing component if it exists\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.viewContainerRef.clear();\n //\n const widget = this.widgetRegistery.resolve(this.node().type);\n //\n const props = [...(widget?.properties ?? []), ...(widget?.components[this.mode()]?.properties ?? [])]\n ?.filter((c) => c.schema.defaultValue != null)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n\n //\n this.mergedOptions.set(merge(props, this.node().options) || {});\n\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n await this.updateOptionsBasedOnContext();\n //\n const tokenValue = {\n node: this.node(),\n options: this.mergedOptions(),\n config: widget,\n } as AXPWidgetNodeToken;\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n //\n const com = await widget?.components[this.mode()]?.component();\n this.componentRef = this.viewContainerRef.createComponent<AXPWidgetComponent<any>>(com, { injector: token });\n this.instance = this.componentRef.instance;\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n //\n this.isLoading.set(false);\n }\n\n private applyOptions() {\n if (!this.instance) return;\n this.instance.setOptions(this.mergedOptions());\n }\n\n private checkFormulaForUpdate(formula: string | undefined, path?: string | null): boolean {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match: any) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n } else return false;\n }\n\n preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n if (!obj) {\n return;\n }\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.includes('{{')) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n } else if (\n typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))\n ) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n } else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n\n async updateOptionsBasedOnContext() {\n const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {\n const newValue = await evaluator();\n return { path, newValue };\n });\n // Wait for all evaluators to complete\n const updates = await Promise.all(updatePromises);\n // Apply updates to mergedOptions\n if (updates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n updates.forEach(({ path, newValue }) => {\n // Set the new value in the updatedOptions object by path\n set(updatedOptions, path, newValue); // Assuming 'set' can handle paths like 'property.subproperty'\n });\n return updatedOptions;\n });\n }\n return updates.length;\n }\n\n async updateValueBasedOnFormula() {\n if (this.node().formula) {\n const value = await this.evaluateExpression(this.node().formula!);\n this.instance.setValue(value);\n }\n }\n\n private async evaluateExpression(templateExpression: string): Promise<any> {\n try {\n // Check cache first, but cache the function for evaluation, not the evaluated value\n if (!this.expressionCache.has(templateExpression)) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const evaluationFunction = async () => {\n const sandbox = new Function(\n 'scope',\n `with (scope) { return (async function() { return ${expression}; })(); }`\n );\n return await sandbox(scope);\n };\n\n this.expressionCache.set(templateExpression, evaluationFunction);\n }\n\n // Retrieve the function from the cache and call it to evaluate the expression\n const evaluate = this.expressionCache.get(templateExpression);\n if (evaluate) {\n const result = await evaluate();\n return result;\n } else {\n throw Error(`Failed to retrieve evaluation function for expression: \"${templateExpression}\"`);\n }\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n\n private getGlobalScope() {\n if (this.scope) return this.scope;\n this.scope = {};\n set(this.scope, 'context', this.getContextScope());\n set(this.scope, 'events', this.getEventScope());\n set(this.scope, 'widget', this.getWidgetScope());\n set(this.scope, 'methods', this.getFunctionScope());\n set(this.scope, 'vars', this.getVariablesScope());\n return this.scope;\n }\n\n private getContextScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => this.builderService.getValue(path));\n return scope;\n }\n\n private getEventScope(): any {\n const scope: any = {};\n set(scope, 'context', (path: string) => this.builderService.onChanged.pipe(filter((c) => c.path == path)));\n set(scope, 'from', (event: string) => get(this.instance.api(), event));\n return scope;\n }\n\n private getWidgetScope(): any {\n const scope: any = {};\n set(scope, 'call', (name: string, ...args: any[]) => {\n this.instance.call(name, ...args);\n });\n set(scope, 'find', (id: string) => {\n return this.builderService.getWidget(id)?.api();\n });\n return scope;\n }\n\n private getFunctionScope(): any {\n const scope: any = {};\n set(scope, 'sum', (values: any) => {\n return sum(values);\n });\n Object.entries(this.builderService.functions).forEach((i) => {\n set(scope, i[0], (...args: any[]) => {\n return i[1](...args);\n });\n });\n return scope;\n }\n\n private getVariablesScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => get(this.builderService.variables, path));\n return scope;\n }\n\n private async assignTriggers() {\n this.node().triggers?.forEach((t) => {\n const event = this.evaluateTrigger(t.event);\n event?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.evaluateAction(t.action);\n });\n });\n }\n\n private evaluateTrigger(templateExpression: string): Observable<any> | null {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { return ( function() { return ${expression}; })(); }`);\n return sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return null;\n }\n }\n\n private evaluateAction(templateExpression: string) {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope: any = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { ${expression} }`);\n sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n }\n }\n}\n","import { AXSkeletonModule } from \"@acorex/components/skeleton\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { Inject, ModuleWithProviders, NgModule, Optional } from \"@angular/core\";\nimport { AXPWidgetRendererComponent } from \"./widget-renderer.component\";\nimport { AXPWidgetContainerComponent } from \"./widget-container.component\";\nimport { AXPWidgetRegistryService } from \"./widget-registery.service\";\nimport { AXPWidgetConfig } from \"./widget.types\";\nimport { AXPWidgetColumnRendererComponent } from \"./widget-column-renderer\";\nimport { AXPWidgetRendererDirective } from \"./widget-renderer.component.directive\";\n\nexport interface AXPLayoutBuilderModuleConfigs {\n widgets: AXPWidgetConfig[]\n}\n\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetRendererComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];\n\n@NgModule({\n imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule],\n exports: [...COMPONENTS],\n declarations: [...COMPONENTS],\n})\nexport class AXPLayoutBuilderModule {\n static forRoot(config?: AXPLayoutBuilderModuleConfigs): ModuleWithProviders<AXPLayoutBuilderModule> {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry: AXPWidgetRegistryService) => () => {\n config?.widgets?.forEach(w => registry.register(w));\n },\n deps: [AXPWidgetRegistryService],\n multi: true\n },\n ]\n };\n }\n\n static forChild(config?: AXPLayoutBuilderModuleConfigs): ModuleWithProviders<AXPLayoutBuilderModule> {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry: AXPWidgetRegistryService) => () => {\n config?.widgets?.forEach(w => registry.register(w));\n },\n deps: [AXPWidgetRegistryService],\n multi: true\n }\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXPLayoutBuilderModuleFactory') instances: any[]) {\n instances?.forEach(f => {\n f();\n });\n }\n}\n","import { AXPWidgetGroup } from './widget.types';\n\nexport const AXP_WIDGETS_EDITOR_GROUP: AXPWidgetGroup = {\n name: 'editor',\n order: 2,\n title: 'Editors',\n};\n\nexport const AXP_WIDGETS_ACTION_GROUP: AXPWidgetGroup = {\n name: 'action',\n order: 3,\n title: 'Action',\n};\n\nexport const AXP_WIDGETS_LAYOUT_GROUP: AXPWidgetGroup = {\n name: 'layout',\n order: 1,\n title: 'Layout',\n};\n\nexport const AXP_WIDGETS_ADVANCE_GROUP: AXPWidgetGroup = {\n name: 'advance',\n order: 4,\n title: 'Advance',\n};\n\nexport const AXP_WIDGETS_GROUPS: AXPWidgetGroup[] = [\n AXP_WIDGETS_EDITOR_GROUP,\n AXP_WIDGETS_ACTION_GROUP,\n AXP_WIDGETS_LAYOUT_GROUP,\n AXP_WIDGETS_ADVANCE_GROUP,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-layout-builder.mjs","sources":["../../../../libs/platform/layout/builder/src/lib/builder/builder.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-registery.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/datasource-provider.service.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-catalog.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget.types.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-renderer.component.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-container.component.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-column-renderer.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-renderer.component.directive.ts","../../../../libs/platform/layout/builder/src/lib/builder/builder.module.ts","../../../../libs/platform/layout/builder/src/lib/builder/widget-groups.ts","../../../../libs/platform/layout/builder/src/acorex-platform-layout-builder.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\nimport { clone, get, isEqual, set } from 'lodash-es';\nimport { Subject, Subscription, debounceTime } from 'rxjs';\nimport { AXPLayoutContextEvent } from './widget.types';\n\nexport type AXPLayoutElementAPI = { [name: string]: Subject<any> | Function };\n\nexport abstract class AXPLayoutElement {\n abstract get id(): string | null;\n\n api(): AXPLayoutElementAPI {\n return {};\n }\n}\n\n@Injectable()\nexport class AXPLayoutBuilderService {\n private readonly context$ = signal<any>({});\n private readonly variables$ = signal<any>({});\n private readonly functions$ = signal<{ [key: string]: Function }>({});\n\n public readonly onChanged: Subject<AXPLayoutContextEvent> = new Subject<AXPLayoutContextEvent>();\n public readonly onRefresh: Subject<void> = new Subject<void>();\n\n private debouncers: { [key: string]: Subject<{ path: string; value: any; init: boolean }> } = {};\n private debouncerSubscriptions: { [key: string]: Subscription } = {};\n\n private widgets = new Map<string, AXPLayoutElement>();\n\n public context = this.context$.asReadonly();\n\n get variables() {\n return this.variables$();\n }\n\n get functions(): { [key: string]: Function } {\n return this.functions$();\n }\n\n initial(value: any) {\n this.context$.set(value);\n this.refresh();\n }\n\n refresh() {\n setTimeout(() => {\n this.onRefresh.next();\n }, 0);\n }\n\n setVariables(keysValues: any): void;\n setVariables(key: string, value: any): void;\n setVariables(...args: any[]): void {\n if (args.length == 0) return;\n else if (args.length == 1) this.variables$.set(args[0]);\n else if (args.length == 2) {\n this.variables$.update((v) => set(v, args[0], args[1]));\n }\n }\n\n setFunctions(keysValues: any): void;\n setFunctions(key: string, value: any): void;\n setFunctions(...args: any[]): void {\n if (args.length == 0) return;\n else if (args.length == 1) this.functions$.set(args[0]);\n else if (args.length == 2) {\n this.functions$.update((v) => set(v, args[0], args[1]));\n }\n }\n\n setValue(path: string, value: any, init: boolean = false) {\n const oldValue = get(this.context$(), path);\n if (isEqual(oldValue, value)) {\n return;\n }\n if (!this.debouncers[path]) {\n // Create a new Subject for debouncing if it doesn't exist\n this.debouncers[path] = new Subject<{ path: string; value: any; init: boolean }>();\n\n // Subscribe to the subject with debounceTime\n this.debouncerSubscriptions[path] = this.debouncers[path].pipe(debounceTime(150)).subscribe(({ value, init }) => {\n // Only emit onChanged event after debounce time\n this.onChanged.next({\n oldValue: oldValue,\n newValue: value,\n data: this.context(),\n path,\n init,\n });\n });\n }\n\n // Update context immediately\n this.context$.update((ctx) => set(clone(ctx), path, value));\n // Emit value through the debouncer subject\n this.debouncers[path].next({ path, value, init });\n }\n\n getValue(path: string) {\n return get(this.context(), path);\n }\n\n registerWidget(id: string, widget: AXPLayoutElement) {\n this.widgets.set(id, widget);\n }\n\n getWidget(id: string): AXPLayoutElement | undefined {\n return this.widgets.get(id);\n }\n\n private unsubscribeDebouncers() {\n Object.keys(this.debouncerSubscriptions).forEach((path) => {\n this.debouncerSubscriptions[path].unsubscribe();\n delete this.debouncerSubscriptions[path]; // Clean up the reference\n delete this.debouncers[path]; // Also clean up the debouncer subject\n });\n }\n\n ngOnDestroy(): void {\n this.unsubscribeDebouncers();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPWidgetConfig } from './widget.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXPWidgetRegistryService {\n private types: Map<string, AXPWidgetConfig> = new Map();\n\n register(widget: AXPWidgetConfig) {\n this.types.set(widget.name, widget);\n }\n\n extend(parentName: string, widget: AXPWidgetConfig) {\n const parentWidget = this.resolve(parentName);\n const newWidget = merge({}, parentWidget, widget);\n newWidget.name = widget.name;\n this.register(newWidget);\n }\n\n resolve(name: string): AXPWidgetConfig | undefined {\n const widget = this.types.get(name);\n if (!widget) {\n throw new Error(`Widget with name \"${name}\" does not exist.`);\n }\n return widget;\n }\n\n public all(): AXPWidgetConfig[] {\n return Array.from(this.types.values());\n }\n}\n","import { AXDataSource } from '@acorex/components/common';\nimport { inject, Injectable, InjectionToken } from '@angular/core';\n\nexport interface AXPWidgetDataSource {\n name: string;\n title: string;\n columns: {\n name: string;\n title: string;\n // dataType: string;\n // nullable?: boolean;\n // interface?: Partial<AXEntityPropertyWidget>;\n }[];\n samples?: any[];\n source: () => AXDataSource;\n}\n\nexport interface AXPWidgetDataSourceProvider {\n items(): Promise<AXPWidgetDataSource[]>;\n}\n\nexport const AXP_WIDGET_DATASOURCE_PROVIDER = new InjectionToken<AXPWidgetDataSourceProvider[]>(\n 'AXP_WIDGET_DATASOURCE_PROVIDER'\n);\n\n@Injectable({ providedIn: 'root' })\nexport class AXPWidgetDataSourceProviderService implements AXPWidgetDataSourceProvider {\n private providers = inject(AXP_WIDGET_DATASOURCE_PROVIDER, { optional: true });\n\n async items(): Promise<AXPWidgetDataSource[]> {\n const items: AXPWidgetDataSource[] = [];\n\n if (Array.isArray(this.providers)) {\n for (const provider of this.providers) {\n items.push(...(await provider.items()));\n }\n }\n\n return items;\n }\n\n async get(name: string): Promise<AXPWidgetDataSource | undefined> {\n return (await this.items()).find((c) => c.name == name);\n }\n}\n","import { AXPWidgetTypesMap } from './widget.types';\n\nconst AXPWidgetsCatalog: AXPWidgetTypesMap = {\n checkbox: 'checkbox-editor',\n color: 'color-editor',\n contact: 'contact-editor',\n dateTime: 'date-time-editor',\n email: 'email-editor',\n largeText: 'large-text-editor',\n link: 'link-editor',\n number: 'number-editor',\n password: 'password-editor',\n phone: 'phone-editor',\n richText: 'rich-text-editor',\n select: 'select-editor',\n selectionList: 'selection-list-editor',\n text: 'text-editor',\n toggle: 'toggle-editor',\n blockLayout: 'block-layout',\n pageLayout: 'page-layout',\n repeaterLayout: 'repeater-layout',\n textBlockLayout: 'text-block-layout',\n file: 'file',\n map: 'map',\n gallery: 'gallery',\n signature: 'signature',\n buttonAction: 'button-action',\n document: 'document-layout',\n lookup: 'lookup-editor',\n formField: 'form-field',\n qrcode: 'qrcode',\n grid: 'grid-layout',\n gridItem: 'grid-item-layout',\n gridRow: 'grid-row-layout',\n widgetSelector: 'widget-selector',\n template: 'template',\n templateDesigner: 'template-designer',\n cronJob: 'cron-job',\n};\n\nexport { AXPWidgetsCatalog };\n","import { AXDataSource, AXValueChangedEvent, convertArrayToDataSource } from '@acorex/components/common';\nimport { AXPMetaData, AXPOptionsData, AXPPartialNested, AXPValidationRules } from '@acorex/platform/core';\nimport {\n afterNextRender,\n computed,\n effect,\n ElementRef,\n inject,\n Injectable,\n InjectionToken,\n signal,\n} from '@angular/core';\nimport { cloneDeep, get, isEqual, isNil, isUndefined, merge } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPLayoutBuilderService, AXPLayoutElement } from './builder.service';\nimport { AXPWidgetDataSourceProviderService } from './datasource-provider.service';\nimport { AXPWidgetsCatalog } from './widget-catalog';\n\nexport type AXPWidgetTrigger = { event: string; action: string; disabled?: boolean };\nexport type AXPWidgetTriggers = AXPWidgetTrigger[];\n\nexport interface AXPWidgetPropertyGroup {\n name: string;\n title: string;\n order: number;\n}\n\nexport interface AXPWidgetGroup {\n name: string;\n title: string;\n order: number;\n}\n\nexport type AXPWidgetDataType = 'string' | 'number' | 'object' | 'boolean' | 'array';\n\nexport interface AXPWidgetProperty {\n name: string;\n title: string;\n description?: string;\n group: AXPWidgetPropertyGroup;\n schema: {\n dataType: AXPWidgetDataType;\n nullable?: boolean;\n defaultValue?: any | string | ((context: any | null) => any);\n interface: Required<Pick<AXPWidgetNode, 'path'>> & Omit<AXPWidgetNode, 'path'>;\n };\n options?: AXPOptionsData;\n validations?: AXPValidationRules;\n visible: boolean;\n}\n\nexport function cloneProperty(\n property: AXPWidgetProperty,\n values: AXPPartialNested<AXPWidgetProperty>\n): AXPWidgetProperty {\n return merge(cloneDeep(property), values);\n}\n\nexport function createStringProperty(ctor: {\n defaultValue?: string;\n name: string;\n title: string;\n path?: string;\n group: AXPWidgetPropertyGroup;\n visible?: boolean;\n}): AXPWidgetProperty {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: ctor.visible ?? true,\n };\n}\n\nexport function createBooleanProperty(ctor: {\n defaultValue?: boolean;\n name: string;\n title: string;\n path?: string;\n group: AXPWidgetPropertyGroup;\n visible?: boolean;\n}): AXPWidgetProperty {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'boolean',\n defaultValue: ctor.defaultValue ?? false,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: ctor.visible ?? true,\n };\n}\n\nexport function createSelectProperty<T = string | { id: string; title: string }>(ctor: {\n defaultValue: T | T[] | any;\n dataSource: T[];\n name: string;\n title: string;\n path?: string;\n group: AXPWidgetPropertyGroup;\n visible?: boolean;\n}): AXPWidgetProperty {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: Array.isArray(ctor.defaultValue)\n ? ctor.defaultValue.map((item) => (typeof item === 'string' ? { id: item } : item))\n : typeof ctor.defaultValue === 'string'\n ? { id: ctor.defaultValue, title: ctor.defaultValue }\n : ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ctor.dataSource.map((item) => (typeof item === 'string' ? { id: item, title: item } : item)),\n },\n },\n },\n visible: ctor.visible ?? true,\n };\n}\n\nexport interface AXPWidgetNode {\n type: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n path?: string;\n name?: string;\n defaultValue?: any;\n formula?: string;\n children?: AXPWidgetNode[];\n options?: AXPOptionsData;\n triggers?: AXPWidgetTriggers;\n meta?: AXPMetaData;\n}\n\nexport interface AXPWidgetTypesMap {\n checkbox: 'checkbox-editor';\n color: 'color-editor';\n contact: 'contact-editor';\n dateTime: 'date-time-editor';\n email: 'email-editor';\n largeText: 'large-text-editor';\n link: 'link-editor';\n number: 'number-editor';\n password: 'password-editor';\n phone: 'phone-editor';\n richText: 'rich-text-editor';\n select: 'select-editor';\n selectionList: 'selection-list-editor';\n text: 'text-editor';\n toggle: 'toggle-editor';\n blockLayout: 'block-layout';\n pageLayout: 'page-layout';\n repeaterLayout: 'repeater-layout';\n textBlockLayout: 'text-block-layout';\n file: 'file';\n map: 'map';\n gallery: 'gallery';\n signature: 'signature';\n buttonAction: 'button-action';\n document: 'document-layout';\n lookup: 'lookup-editor';\n formField: 'form-field';\n grid: 'grid-layout';\n gridRow: 'grid-row-layout';\n gridItem: 'grid-item-layout';\n qrcode: 'qrcode';\n widgetSelector: 'widget-selector';\n template: 'template';\n templateDesigner: 'template-designer';\n cronJob: 'cron-job';\n}\n\nexport interface AXPWidgetNodeToken {\n config: AXPWidgetConfig;\n node: AXPWidgetNode;\n options?: AXPOptionsData;\n}\n\nexport interface AXPWidgetColumnNode {\n type: string;\n path: string;\n options?: AXPOptionsData;\n}\n\nexport interface AXPWidgetColumnNodeToken extends AXPWidgetColumnNode {\n config: AXPWidgetConfig;\n}\n\nexport const AXP_WIDGET_TOKEN = new InjectionToken<AXPWidgetNodeToken>('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken<AXPWidgetColumnNodeToken>('AXP_WIDGET_COLUMN_TOKEN');\n\nexport interface AXPWidgetComponentConfig {\n component: () => Promise<any>;\n properties?: AXPWidgetProperty[];\n}\n\nexport interface AXPWidgetConfigComponents {\n designer?: AXPWidgetComponentConfig;\n view?: AXPWidgetComponentConfig;\n edit?: AXPWidgetComponentConfig;\n print?: AXPWidgetComponentConfig;\n column?: AXPWidgetComponentConfig;\n filter?: AXPWidgetComponentConfig;\n}\n\nexport type AXPWidgetType = 'container' | 'editor' | 'action' | 'view';\n\nexport interface AXPWidgetConfig {\n name: AXPWidgetTypesMap[keyof AXPWidgetTypesMap];\n title: string;\n icon?: string;\n description?: string;\n group: AXPWidgetGroup;\n properties?: AXPWidgetProperty[];\n components: AXPWidgetConfigComponents;\n meta?: AXPMetaData;\n type: AXPWidgetType;\n visible?: boolean;\n}\n\nexport type AXPWidgetRenderMode = keyof AXPWidgetConfigComponents;\n\nexport interface AXPLayoutContextEvent {\n oldValue: any;\n newValue: any;\n path?: string | null;\n data: any;\n init: boolean;\n}\n\n@Injectable()\nexport abstract class AXPWidgetComponent<T = any | null | void> extends AXPLayoutElement {\n protected readonly token = inject(AXP_WIDGET_TOKEN);\n public readonly host = inject(ElementRef).nativeElement as HTMLDivElement;\n\n protected readonly config = this.token.config;\n\n protected readonly name = this.token.node.name;\n protected readonly path = this.token.node.path;\n protected readonly defaultValue = this.token.node.defaultValue;\n\n protected readonly _children = signal(this.token.node.children ?? []);\n protected children = this._children.asReadonly();\n\n protected _options = signal<any>(this.token.options ?? {});\n protected options = this._options.asReadonly();\n\n private readonly contextService = inject(AXPLayoutBuilderService);\n\n public readonly onReady = new Subject<void>();\n\n private isRendered = false;\n private _isValueWidget = false;\n private isValueWidget = () => this._isValueWidget;\n\n private _id: string | null;\n public get id(): string | null {\n return this._id;\n }\n\n parent: AXPWidgetComponent | null | undefined;\n index: number | null | undefined;\n mode: AXPWidgetRenderMode;\n\n protected fullPath = signal<string | null>(null);\n\n ngOnInit() {\n this.initRender();\n }\n\n private nextRender = afterNextRender(() => {\n //\n if (!this.isRendered) {\n this.detectFullPath();\n //\n this.onReady.next();\n //\n this.isRendered = true;\n }\n });\n\n private initRender() {\n this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;\n if (this.isValueWidget()) {\n this.detectFullPath();\n if (!isNil(this.defaultValue) && isNil(this.getValue())) {\n console.log(this.getValue(), this.defaultValue);\n this.setValue(this.defaultValue, true);\n }\n }\n }\n\n public getValue = computed(() => {\n return this.fullPath() ? this.extractValue(this.fullPath()!) : null;\n });\n\n protected extractValue(path: string): any {\n return get(this.contextService.context(), path);\n }\n\n setValue(value: T | null | undefined, init: boolean = false) {\n if (this.fullPath()) {\n const oldValue = this.getValue();\n value = isUndefined(value) ? null : value;\n if (isNil(value) && isNil(oldValue)) {\n return;\n }\n if (isEqual(oldValue, value)) {\n return;\n }\n this.contextService.setValue(this.fullPath()!, value, init);\n this.onValueChanged(oldValue, value);\n }\n }\n\n setOptions(values: any): void {\n this._options.set({ ...this.options(), ...values });\n }\n\n call(name: string, ...args: any[]): void {\n const fn = get(this, name) as Function;\n if (fn && typeof fn == 'function') {\n fn.bind(this)(...args);\n }\n }\n\n setChildren(children: AXPWidgetNode[]) {\n this._children.set([...children]);\n }\n\n onValueChanged(oldValue: T | null, newValue: T | null) {}\n\n private detectFullPath() {\n let sections = [];\n let ids = [];\n //\n let parent: AXPWidgetComponent | null | undefined = this;\n //\n while (parent) {\n const path = parent.path ?? (parent.isValueWidget() && parent.index == null ? parent.name : null);\n const id = parent.name;\n //\n if (path) {\n sections.push(path);\n }\n if (parent.index != null) {\n sections.push(`[${parent.index}]`);\n }\n if (id) {\n ids.push(id);\n if (parent.index != null) {\n ids.push(`${parent.index}`);\n }\n }\n parent = parent.parent;\n }\n //\n this.fullPath.set(sections.reverse().join('.'));\n this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n if (this._id) {\n this.contextService.registerWidget(this._id, this);\n }\n }\n\n protected handleValueChanged(e: AXValueChangedEvent<T>) {\n if (e.isUserInteraction) {\n this.setValue(e.value!);\n }\n }\n}\n\n@Injectable()\nexport abstract class AXPContainerWidgetComponent<T> extends AXPWidgetComponent<T> {\n public readonly node = this.token.node;\n}\n\nexport type AXPDataSource = string | AXDataSource | any[];\n@Injectable()\nexport abstract class AXPDataListWidgetComponent extends AXPWidgetComponent<any> {\n private dataService = inject(AXPWidgetDataSourceProviderService);\n\n protected dataSource = signal<AXDataSource>(convertArrayToDataSource([]));\n //protected items = computed<any[]>(() => this.options()['items'] ?? []);\n protected textField = computed<string>(() => this.options()['textField'] ?? 'title');\n protected valueField = computed<string>(() => (this.options()['valueField'] as string) ?? 'id');\n\n private rf = effect(\n () => {\n const rawValue = this.options()['dataSource'];\n // static datasource class\n if (rawValue instanceof AXDataSource) {\n this.dataSource.set(rawValue);\n } // static array datasource\n else if (Array.isArray(rawValue)) {\n this.dataSource.set(convertArrayToDataSource(rawValue));\n } // resolve data source by name\n else if (rawValue && (typeof rawValue == 'string' || typeof rawValue == 'object')) {\n const name = typeof rawValue == 'object' ? rawValue[this.valueField()] : rawValue;\n this.dataService.get(name).then((c) => {\n if (this.mode == 'designer' && c?.samples?.length) {\n this.dataSource.set(convertArrayToDataSource(c.samples));\n } else {\n const ds = c?.source();\n if (ds) {\n this.dataSource.set(ds);\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n }\n });\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n },\n { allowSignalWrites: true }\n );\n}\n\n@Injectable()\nexport abstract class AXPColumnWidgetComponent<T = any | null | void> {\n private readonly token = inject(AXP_WIDGET_COLUMN_TOKEN);\n\n protected readonly path = this.token.path;\n protected readonly options = this.token.options ?? {};\n protected readonly rawValue: any = null;\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { CdkPortalOutletAttachedRef, ComponentPortal } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n Injector,\n Input,\n WritableSignal,\n inject,\n signal,\n} from '@angular/core';\nimport { cloneDeep, get, merge, set, sum } from 'lodash-es';\nimport { Observable, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport {\n AXPWidgetComponent,\n AXPWidgetNode,\n AXPWidgetNodeToken,\n AXPWidgetRenderMode,\n AXP_WIDGET_TOKEN,\n} from './widget.types';\n\n@Component({\n selector: 'axp-widget-renderer',\n template: `\n @if(mergedOptions().isVisible!=false) { @if(isLoading()){\n <ax-skeleton [animated]=\"true\" class=\"ax-w-full lg:ax-w-[50%] ax-h-8 ax-rounded\"></ax-skeleton>\n } @else {\n <ng-container *ngTemplateOutlet=\"tt\"></ng-container>\n } }\n <ng-template #tt>\n <ng-template [cdkPortalOutlet]=\"portal\" (attached)=\"handleAttached($event)\"></ng-template>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n})\nexport class AXPWidgetRendererComponent {\n private _node: AXPWidgetNode;\n @Input({ required: true })\n public get node(): AXPWidgetNode {\n return this._node;\n }\n public set node(v: AXPWidgetNode) {\n this._node = v;\n this.loadComponent();\n }\n\n private _mode: AXPWidgetRenderMode = 'edit';\n @Input()\n public get mode(): AXPWidgetRenderMode {\n return this._mode;\n }\n public set mode(v: AXPWidgetRenderMode) {\n this._mode = v;\n }\n\n @Input()\n parentNode: AXPWidgetComponent | null;\n\n @Input()\n index: number | null;\n\n protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n private injector = inject(Injector);\n protected builderService = inject(AXPLayoutBuilderService);\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n protected unsubscriber = inject(AXUnsubscriber);\n\n protected isLoading = signal(true);\n private instance!: AXPWidgetComponent;\n protected portal!: ComponentPortal<any>;\n private expressionCache: Map<string, () => Promise<any>> = new Map();\n private expressionEvaluators: Map<string, () => Promise<any>> = new Map();\n private scope: any = null;\n\n constructor() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (e) => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n if (this.checkFormulaForUpdate(this.node.formula, e.path)) {\n await this.updateValueBasedOnFormula();\n }\n });\n }\n\n private async loadComponent() {\n this.isLoading.set(true);\n const widget = this.widgetRegistery.resolve(this.node.type);\n //\n const props = widget?.components[this.mode]?.properties\n ?.filter((c) => c.schema.defaultValue != null)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n this.preprocessAndInitialOptions(cloneDeep(this.node.options));\n await this.updateOptionsBasedOnContext();\n const tokenValue = {\n node: this.node,\n options: this.mergedOptions(),\n config: widget,\n } as AXPWidgetNodeToken;\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n var com = await widget?.components[this.mode]?.component();\n this.portal = new ComponentPortal(com, null, token);\n this.isLoading.set(false);\n }\n\n protected async handleAttached(portalOutletRef: CdkPortalOutletAttachedRef) {\n portalOutletRef = portalOutletRef as ComponentRef<AXPWidgetComponent>;\n this.instance = portalOutletRef.instance as AXPWidgetComponent;\n this.instance.parent = this.parentNode;\n this.instance.index = this.index;\n this.instance.mode = this.mode;\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n }\n\n private applyOptions() {\n if (!this.instance) return;\n this.instance.setOptions(this.mergedOptions());\n }\n\n private checkFormulaForUpdate(formula: string | undefined, path?: string | null): boolean {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match: any) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n } else return false;\n }\n\n preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n if (!obj) return;\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.includes('{{')) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n } else if (\n typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))\n ) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n } else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n\n async updateOptionsBasedOnContext() {\n const updates: any[] = [];\n for (let [path, evaluator] of this.expressionEvaluators) {\n const newValue = await evaluator();\n updates.push({ path, newValue });\n }\n // Apply updates to mergedOptions\n if (updates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n updates.forEach(({ path, newValue }) => {\n // Set the new value in the updatedOptions object by path\n set(updatedOptions, path, newValue); // Assuming 'set' can handle paths like 'property.subproperty'\n });\n return updatedOptions;\n });\n }\n return updates.length;\n }\n\n async updateValueBasedOnFormula() {\n if (this.node.formula) {\n const value = await this.evaluateExpression(this.node.formula);\n this.instance.setValue(value);\n }\n }\n\n private async evaluateExpression(templateExpression: string): Promise<any> {\n try {\n // Check cache first, but cache the function for evaluation, not the evaluated value\n if (!this.expressionCache.has(templateExpression)) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const evaluationFunction = async () => {\n const sandbox = new Function(\n 'scope',\n `with (scope) { return (async function() { return ${expression}; })(); }`\n );\n return await sandbox(scope);\n };\n\n this.expressionCache.set(templateExpression, evaluationFunction);\n }\n\n // Retrieve the function from the cache and call it to evaluate the expression\n const evaluate = this.expressionCache.get(templateExpression);\n if (evaluate) {\n const result = await evaluate();\n return result;\n } else {\n throw Error(`Failed to retrieve evaluation function for expression: \"${templateExpression}\"`);\n }\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n\n private getGlobalScope() {\n if (this.scope) return this.scope;\n this.scope = {};\n set(this.scope, 'context', this.getContextScope());\n set(this.scope, 'events', this.getEventScope());\n set(this.scope, 'widget', this.getWidgetScope());\n set(this.scope, 'methods', this.getFunctionScope());\n set(this.scope, 'vars', this.getVariablesScope());\n return this.scope;\n }\n\n private getContextScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => this.builderService.getValue(path));\n return scope;\n }\n\n private getEventScope(): any {\n const scope: any = {};\n set(scope, 'context', (path: string) => this.builderService.onChanged.pipe(filter((c) => c.path == path)));\n set(scope, 'from', (event: string) => get(this.instance.api(), event));\n return scope;\n }\n\n private getWidgetScope(): any {\n const scope: any = {};\n set(scope, 'call', (name: string, ...args: any[]) => {\n this.instance.call(name, ...args);\n });\n set(scope, 'find', (id: string) => {\n return this.builderService.getWidget(id)?.api();\n });\n return scope;\n }\n\n private getFunctionScope(): any {\n const scope: any = {};\n set(scope, 'sum', (values: any) => {\n return sum(values);\n });\n Object.entries(this.builderService.functions).forEach((i) => {\n set(scope, i[0], (...args: any[]) => {\n return i[1](...args);\n });\n });\n return scope;\n }\n\n private getVariablesScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => get(this.builderService.variables, path));\n return scope;\n }\n\n private async assignTriggers() {\n this.node.triggers?.forEach((t) => {\n const event = this.evaluateTrigger(t.event);\n event?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.evaluateAction(t.action);\n });\n });\n }\n\n private evaluateTrigger(templateExpression: string): Observable<any> | null {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { return ( function() { return ${expression}; })(); }`);\n return sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return null;\n }\n }\n\n private evaluateAction(templateExpression: string) {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope: any = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { ${expression} }`);\n sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n }\n }\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, effect, inject, model } from '@angular/core';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPLayoutContextEvent } from './widget.types';\n\n@Component({\n selector: 'axp-widgets-container',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: contents;' },\n providers: [AXPLayoutBuilderService, AXUnsubscriber],\n})\nexport class AXPWidgetContainerComponent {\n @Output()\n public readonly onChanged = new EventEmitter<AXPLayoutContextEvent>();\n\n public context = model<any>({});\n\n\n @Input()\n public set variables(v: any) {\n this.builderService.setVariables(v);\n }\n\n @Input()\n public set functions(v: any) {\n this.builderService.setFunctions(v);\n }\n\n private unsubscriber = inject(AXUnsubscriber);\n private builderService = inject(AXPLayoutBuilderService);\n\n private ef = effect(\n () => {\n this.builderService.initial(this.context());\n },\n { allowSignalWrites: true }\n );\n\n ngOnInit() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe((e) => {\n this.context.set(e.data);\n this.onChanged.emit(e);\n });\n }\n}\n","import { AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Injector,\n Input,\n TemplateRef,\n ViewChild,\n inject,\n signal,\n} from '@angular/core';\nimport { get, merge } from 'lodash-es';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetColumnNode, AXP_WIDGET_COLUMN_TOKEN } from './widget.types';\n\n@Component({\n selector: 'axp-widget-column-renderer',\n template: `\n <ng-template #header>{{ caption }}</ng-template>\n <ng-template #cell let-row>\n @if(component && widgetInjector && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n providers: [\n AXPLayoutBuilderService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['caption'],\n})\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n\n private _node: AXPWidgetColumnNode;\n @Input({ required: true })\n public get node(): AXPWidgetColumnNode {\n return this._node;\n }\n public set node(v: AXPWidgetColumnNode) {\n this._node = v;\n }\n\n private mergedOptions = signal<any>({});\n\n @Input()\n public footerTemplate: TemplateRef<unknown>;\n\n @ViewChild('footer')\n private _contentFooterTemplate: TemplateRef<unknown>;\n\n get renderFooterTemplate(): TemplateRef<unknown> {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n\n @Input()\n public cellTemplate: TemplateRef<unknown>;\n\n @ViewChild('cell')\n private _contentCellTemplate: TemplateRef<unknown>;\n\n get renderCellTemplate(): TemplateRef<unknown> {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n\n @Input()\n public headerTemplate: TemplateRef<unknown>;\n\n @ViewChild('header')\n private _contentHeaderTemplate: TemplateRef<unknown>;\n\n get renderHeaderTemplate(): TemplateRef<unknown> {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n\n get loadingEnabled(): boolean {\n return true;\n }\n\n get name(): string {\n return `col-${this.node.path}`;\n }\n\n private injector = inject(Injector);\n private cdr = inject(ChangeDetectorRef);\n protected widgetInjector!: Injector;\n protected component!: any;\n\n async ngOnInit() {\n const widget = this.widgetRegistery.resolve(this.node.type);\n const mode = 'column';\n this.component = await widget?.components[mode]?.component();\n //\n const props = widget?.components[mode]?.properties\n ?.filter((c) => c.schema.defaultValue)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions(),\n };\n this.widgetInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n\n this.width = this.mergedOptions().width ?? '200px';\n this.allowResizing = this.mergedOptions().allowResizing || true;\n this.cdr.detectChanges();\n }\n\n getInputs(data: any): any {\n return { rawValue: get(data, this.node.path!) };\n }\n}\n","import { AXUnsubscriber } from '@acorex/core/utils';\nimport {\n ComponentRef,\n Directive,\n Injector,\n SimpleChanges,\n ViewContainerRef,\n WritableSignal,\n inject,\n input,\n signal,\n} from '@angular/core';\nimport { cloneDeep, get, merge, set, sum } from 'lodash-es';\nimport { Observable, filter } from 'rxjs';\nimport { AXPLayoutBuilderService } from './builder.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport {\n AXPWidgetComponent,\n AXPWidgetNode,\n AXPWidgetNodeToken,\n AXPWidgetRenderMode,\n AXP_WIDGET_TOKEN,\n} from './widget.types';\n\n@Directive({\n selector: '[axp-widget-renderer]',\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n})\nexport class AXPWidgetRendererDirective {\n parentNode = input<AXPWidgetComponent | null>();\n\n index = input<number | null>();\n\n mode = input.required<AXPWidgetRenderMode>();\n node = input.required<AXPWidgetNode>();\n\n protected mergedOptions: WritableSignal<any> = signal<any>({});\n\n private injector = inject(Injector);\n protected builderService = inject(AXPLayoutBuilderService);\n protected widgetRegistery = inject(AXPWidgetRegistryService);\n protected unsubscriber = inject(AXUnsubscriber);\n private viewContainerRef = inject(ViewContainerRef);\n\n protected isLoading = signal(false);\n private instance!: AXPWidgetComponent;\n private expressionCache: Map<string, () => Promise<any>> = new Map();\n private expressionEvaluators: Map<string, () => Promise<any>> = new Map();\n private scope: any = null;\n private componentRef: ComponentRef<any>;\n\n constructor() {\n this.builderService.onChanged.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async (e) => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n if (this.checkFormulaForUpdate(this.node().formula, e.path)) {\n await this.updateValueBasedOnFormula();\n }\n });\n this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {\n if ((await this.updateOptionsBasedOnContext()) > 0) {\n this.applyOptions();\n }\n });\n }\n\n // Detect input changes\n ngOnChanges(changes: SimpleChanges) {\n if (changes['mode'] || changes['node']) {\n // Check if either 'mode' or 'node' has changed\n this.rerenderComponent();\n }\n }\n\n private rerenderComponent() {\n this.isLoading.set(false);\n // Call loadComponent to create and render the component\n setTimeout(async () => {\n await this.loadComponent();\n });\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n private async loadComponent() {\n if (this.isLoading()) {\n return;\n }\n this.isLoading.set(true);\n // Destroy the existing component if it exists\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.viewContainerRef.clear();\n //\n const widget = this.widgetRegistery.resolve(this.node().type);\n //\n const props = [...(widget?.properties ?? []), ...(widget?.components[this.mode()]?.properties ?? [])]\n ?.filter((c) => c.schema.defaultValue != null)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n\n //\n this.mergedOptions.set(merge(props, this.node().options) || {});\n\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n await this.updateOptionsBasedOnContext();\n //\n const tokenValue = {\n node: this.node(),\n options: this.mergedOptions(),\n config: widget,\n } as AXPWidgetNodeToken;\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n //\n const com = await widget?.components[this.mode()]?.component();\n this.componentRef = this.viewContainerRef.createComponent<AXPWidgetComponent<any>>(com, { injector: token });\n this.instance = this.componentRef.instance;\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n await this.updateValueBasedOnFormula();\n await this.assignTriggers();\n //\n this.isLoading.set(false);\n }\n\n private applyOptions() {\n if (!this.instance) return;\n this.instance.setOptions(this.mergedOptions());\n }\n\n private checkFormulaForUpdate(formula: string | undefined, path?: string | null): boolean {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match: any) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n } else return false;\n }\n\n preprocessAndInitialOptions(obj: any, pathPrefix: string = ''): void {\n if (!obj) {\n return;\n }\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n if (typeof value === 'string' && value.includes('{{')) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n } else if (\n typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))\n ) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n } else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n\n async updateOptionsBasedOnContext() {\n const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {\n const newValue = await evaluator();\n return { path, newValue };\n });\n // Wait for all evaluators to complete\n const updates = await Promise.all(updatePromises);\n // Apply updates to mergedOptions\n if (updates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n updates.forEach(({ path, newValue }) => {\n // Set the new value in the updatedOptions object by path\n set(updatedOptions, path, newValue); // Assuming 'set' can handle paths like 'property.subproperty'\n });\n return updatedOptions;\n });\n }\n return updates.length;\n }\n\n async updateValueBasedOnFormula() {\n if (this.node().formula) {\n const value = await this.evaluateExpression(this.node().formula!);\n this.instance.setValue(value);\n }\n }\n\n private async evaluateExpression(templateExpression: string): Promise<any> {\n try {\n // Check cache first, but cache the function for evaluation, not the evaluated value\n if (!this.expressionCache.has(templateExpression)) {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const evaluationFunction = async () => {\n const sandbox = new Function(\n 'scope',\n `with (scope) { return (async function() { return ${expression}; })(); }`\n );\n return await sandbox(scope);\n };\n\n this.expressionCache.set(templateExpression, evaluationFunction);\n }\n\n // Retrieve the function from the cache and call it to evaluate the expression\n const evaluate = this.expressionCache.get(templateExpression);\n if (evaluate) {\n const result = await evaluate();\n return result;\n } else {\n throw Error(`Failed to retrieve evaluation function for expression: \"${templateExpression}\"`);\n }\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return false;\n }\n }\n\n private getGlobalScope() {\n if (this.scope) return this.scope;\n this.scope = {};\n set(this.scope, 'context', this.getContextScope());\n set(this.scope, 'events', this.getEventScope());\n set(this.scope, 'widget', this.getWidgetScope());\n set(this.scope, 'methods', this.getFunctionScope());\n set(this.scope, 'vars', this.getVariablesScope());\n return this.scope;\n }\n\n private getContextScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => this.builderService.getValue(path));\n return scope;\n }\n\n private getEventScope(): any {\n const scope: any = {};\n set(scope, 'context', (path: string) => this.builderService.onChanged.pipe(filter((c) => c.path == path)));\n set(scope, 'from', (event: string) => get(this.instance.api(), event));\n return scope;\n }\n\n private getWidgetScope(): any {\n const scope: any = {};\n set(scope, 'call', (name: string, ...args: any[]) => {\n this.instance.call(name, ...args);\n });\n set(scope, 'find', (id: string) => {\n return this.builderService.getWidget(id)?.api();\n });\n return scope;\n }\n\n private getFunctionScope(): any {\n const scope: any = {};\n set(scope, 'sum', (values: any) => {\n return sum(values);\n });\n Object.entries(this.builderService.functions).forEach((i) => {\n set(scope, i[0], (...args: any[]) => {\n return i[1](...args);\n });\n });\n return scope;\n }\n\n private getVariablesScope(): any {\n const scope: any = {};\n set(scope, 'eval', (path: string) => get(this.builderService.variables, path));\n return scope;\n }\n\n private async assignTriggers() {\n this.node().triggers?.forEach((t) => {\n const event = this.evaluateTrigger(t.event);\n event?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.evaluateAction(t.action);\n });\n });\n }\n\n private evaluateTrigger(templateExpression: string): Observable<any> | null {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { return ( function() { return ${expression}; })(); }`);\n return sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n return null;\n }\n }\n\n private evaluateAction(templateExpression: string) {\n try {\n const expressionMatch = templateExpression.match(/\\{\\{\\s*(.*?)\\s*\\}\\}/);\n if (!expressionMatch) {\n throw Error(`No valid expression found in \"${templateExpression}\"`);\n }\n const expression = expressionMatch[1];\n\n // Cache the evaluation function instead of the result\n const scope: any = this.getGlobalScope();\n const sandbox = new Function('scope', `with (scope) { ${expression} }`);\n sandbox(scope);\n } catch (error) {\n console.error('Error evaluating expression:', error);\n }\n }\n}\n","import { AXSkeletonModule } from \"@acorex/components/skeleton\";\nimport { PortalModule } from \"@angular/cdk/portal\";\nimport { CommonModule } from \"@angular/common\";\nimport { Inject, ModuleWithProviders, NgModule, Optional } from \"@angular/core\";\nimport { AXPWidgetRendererComponent } from \"./widget-renderer.component\";\nimport { AXPWidgetContainerComponent } from \"./widget-container.component\";\nimport { AXPWidgetRegistryService } from \"./widget-registery.service\";\nimport { AXPWidgetConfig } from \"./widget.types\";\nimport { AXPWidgetColumnRendererComponent } from \"./widget-column-renderer\";\nimport { AXPWidgetRendererDirective } from \"./widget-renderer.component.directive\";\n\nexport interface AXPLayoutBuilderModuleConfigs {\n widgets: AXPWidgetConfig[]\n}\n\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetRendererComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];\n\n@NgModule({\n imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule],\n exports: [...COMPONENTS],\n declarations: [...COMPONENTS],\n})\nexport class AXPLayoutBuilderModule {\n static forRoot(config?: AXPLayoutBuilderModuleConfigs): ModuleWithProviders<AXPLayoutBuilderModule> {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry: AXPWidgetRegistryService) => () => {\n config?.widgets?.forEach(w => registry.register(w));\n },\n deps: [AXPWidgetRegistryService],\n multi: true\n },\n ]\n };\n }\n\n static forChild(config?: AXPLayoutBuilderModuleConfigs): ModuleWithProviders<AXPLayoutBuilderModule> {\n return {\n ngModule: AXPLayoutBuilderModule,\n providers: [\n {\n provide: 'AXPLayoutBuilderModuleFactory',\n useFactory: (registry: AXPWidgetRegistryService) => () => {\n config?.widgets?.forEach(w => registry.register(w));\n },\n deps: [AXPWidgetRegistryService],\n multi: true\n }\n ]\n };\n }\n\n /**\n * @ignore\n */\n constructor(@Optional() @Inject('AXPLayoutBuilderModuleFactory') instances: any[]) {\n instances?.forEach(f => {\n f();\n });\n }\n}\n","import { AXPWidgetGroup } from './widget.types';\n\nexport const AXP_WIDGETS_EDITOR_GROUP: AXPWidgetGroup = {\n name: 'editor',\n order: 2,\n title: 'Editors',\n};\n\nexport const AXP_WIDGETS_ACTION_GROUP: AXPWidgetGroup = {\n name: 'action',\n order: 3,\n title: 'Action',\n};\n\nexport const AXP_WIDGETS_LAYOUT_GROUP: AXPWidgetGroup = {\n name: 'layout',\n order: 1,\n title: 'Layout',\n};\n\nexport const AXP_WIDGETS_ADVANCE_GROUP: AXPWidgetGroup = {\n name: 'advance',\n order: 4,\n title: 'Advance',\n};\n\nexport const AXP_WIDGETS_GROUPS: AXPWidgetGroup[] = [\n AXP_WIDGETS_EDITOR_GROUP,\n AXP_WIDGETS_ACTION_GROUP,\n AXP_WIDGETS_LAYOUT_GROUP,\n AXP_WIDGETS_ADVANCE_GROUP,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}