@acorex/platform 18.2.2 → 18.2.3
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.
- package/common/lib/app/operators.d.ts +1 -0
- package/common/lib/common.module.d.ts +6 -7
- package/common/lib/data/filter-middleware.service.d.ts +28 -0
- package/common/lib/data/index.d.ts +3 -1
- package/common/lib/data/operators.service.d.ts +14 -0
- package/common/lib/layout/index.d.ts +0 -2
- package/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.d.ts +0 -2
- package/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.d.ts +1 -0
- package/common/lib/schema/widgets/email/email-widget-edit.component.d.ts +0 -2
- package/common/lib/schema/widgets/phone/phone-widget-edit.component.d.ts +0 -2
- package/common/lib/schema/widgets/text/text-widget-edit.component.d.ts +0 -2
- package/common/lib/settings/setting-definition.provider.d.ts +6 -6
- package/common/lib/settings/settings.types.d.ts +18 -9
- package/esm2022/common/lib/app/operators.mjs +16 -1
- package/esm2022/common/lib/common.module.mjs +23 -12
- package/esm2022/common/lib/data/filter-middleware.service.mjs +53 -0
- package/esm2022/common/lib/data/index.mjs +4 -2
- package/esm2022/common/lib/data/operators.service.mjs +15 -0
- package/esm2022/common/lib/layout/index.mjs +1 -3
- package/esm2022/common/lib/layout/menu/menu.service.mjs +2 -2
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-edit.component.mjs +7 -8
- package/esm2022/common/lib/schema/widgets/dateTime/dateTime-widget-filter.component.mjs +47 -25
- package/esm2022/common/lib/schema/widgets/email/email-widget-edit.component.mjs +6 -7
- package/esm2022/common/lib/schema/widgets/phone/phone-widget-edit.component.mjs +6 -7
- package/esm2022/common/lib/schema/widgets/text/text-widget-edit.component.mjs +6 -7
- package/esm2022/common/lib/settings/setting-definition.provider.mjs +141 -187
- package/esm2022/common/lib/settings/settings.types.mjs +2 -7
- package/esm2022/common/lib/utils/data-generator.mjs +1 -1
- package/esm2022/layout/builder/lib/builder/widget-catalog.mjs +2 -1
- package/esm2022/layout/builder/lib/builder/widget.types.mjs +11 -6
- package/esm2022/layout/designer/lib/designer/components/header-menu/header-menu.component.mjs +2 -7
- package/esm2022/layout/entity/lib/entity-detail-list.viewmodel.mjs +8 -6
- package/esm2022/layout/entity/lib/entity-master-create.viewmodel.mjs +4 -3
- package/esm2022/layout/entity/lib/entity-master-list.viewmodel.mjs +9 -7
- package/esm2022/layout/entity/lib/entity-master-single.viewmodel.mjs +4 -3
- package/esm2022/layout/entity/lib/entity-master-update.viewmodel.mjs +3 -3
- package/esm2022/layout/entity/lib/entity.module.mjs +12 -1
- package/esm2022/layout/setting/acorex-platform-layout-setting.mjs +5 -0
- package/esm2022/layout/setting/index.mjs +2 -0
- package/esm2022/layout/setting/lib/setting.viewmodel.mjs +50 -0
- package/esm2022/layouts/lib/admin/admin.module.mjs +17 -5
- package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.config.mjs +3 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/detail-view.config.mjs +4 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +8 -23
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.mjs +2 -6
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +4 -5
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +4 -8
- package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.mjs +12 -10
- package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.mjs +3 -3
- package/esm2022/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.mjs +1 -3
- package/esm2022/themes/default/index.mjs +2 -1
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.mjs +18 -24
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.mjs +6 -9
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.mjs +2 -6
- package/esm2022/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.mjs +6 -8
- package/esm2022/themes/default/lib/layouts/root-layout/components/header/header.component.mjs +6 -8
- package/esm2022/themes/default/lib/layouts/root-layout/root-layout.component.mjs +11 -38
- package/esm2022/themes/default/lib/layouts/setting-layout/convert-setting-data.mjs +49 -0
- package/esm2022/themes/default/lib/layouts/setting-layout/index.mjs +3 -0
- package/esm2022/themes/default/lib/layouts/setting-layout/setting-preview/setting-preview.component.mjs +104 -0
- package/esm2022/themes/default/lib/layouts/setting-layout/setting-view/setting-menu.component.mjs +44 -0
- package/esm2022/themes/shared/lib/services/theme.service.mjs +183 -19
- package/esm2022/widgets/lib/properties/layout.props.mjs +13 -13
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-column.component.mjs +20 -0
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-designer.component.mjs +18 -0
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-edit.component.mjs +24 -0
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-filter.component.mjs +20 -0
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-print.component.mjs +19 -0
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget-view.component.mjs +22 -0
- package/esm2022/widgets/lib/widgets/advance/cron-job/cron-job-widget.config.mjs +31 -0
- package/esm2022/widgets/lib/widgets/advance/cron-job/index.mjs +8 -0
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-designer.component.mjs +4 -9
- package/esm2022/widgets/lib/widgets/editors/selection-list/selection-list-widget-edit.component.mjs +2 -9
- package/esm2022/widgets/lib/widgets/layout/block/block-widget.config.mjs +6 -7
- package/esm2022/widgets/lib/widgets.module.mjs +5 -2
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-vDhYokEG.mjs → acorex-platform-common-avatar-widget-edit.component-DtC2IaE8.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-avatar-widget-edit.component-vDhYokEG.mjs.map → acorex-platform-common-avatar-widget-edit.component-DtC2IaE8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-avatar-widget-view.component-Dew3CVLm.mjs → acorex-platform-common-avatar-widget-view.component-BOIV0Be1.mjs} +4 -5
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-BOIV0Be1.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-boolean-widget-filter.component-BdE7WOK5.mjs → acorex-platform-common-boolean-widget-filter.component-S4-3SmKA.mjs} +3 -4
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-S4-3SmKA.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-Bj5rjEk1.mjs → acorex-platform-common-checkbox-widget-column.component-DOoneR7g.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-checkbox-widget-column.component-Bj5rjEk1.mjs.map → acorex-platform-common-checkbox-widget-column.component-DOoneR7g.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-checkbox-widget-edit.component-ChXbJsuG.mjs → acorex-platform-common-checkbox-widget-edit.component-PFRq-XS-.mjs} +4 -5
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-PFRq-XS-.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-checkbox-widget-view.component-CbQwjE_u.mjs → acorex-platform-common-checkbox-widget-view.component-CKz8XnjT.mjs} +4 -5
- 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
- package/fesm2022/{acorex-platform-common-dateTime-widget-column.component-QUYyDVw8.mjs → acorex-platform-common-dateTime-widget-column.component-DG0leXAo.mjs} +4 -5
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-DG0leXAo.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-edit.component-CzLb3xnR.mjs → acorex-platform-common-dateTime-widget-edit.component-D8W-XEcx.mjs} +10 -13
- package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-D8W-XEcx.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-filter.component-DZRQ6yVk.mjs → acorex-platform-common-dateTime-widget-filter.component-DngCKwFY.mjs} +49 -28
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-DngCKwFY.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-dateTime-widget-view.component-DxNwm_5m.mjs → acorex-platform-common-dateTime-widget-view.component-KGgJkiKB.mjs} +4 -5
- 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
- package/fesm2022/{acorex-platform-common-email-widget-column.component-Cm-fhlNZ.mjs → acorex-platform-common-email-widget-column.component-CLNqSuB7.mjs} +4 -5
- package/fesm2022/acorex-platform-common-email-widget-column.component-CLNqSuB7.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-edit.component-BfXFBLF6.mjs → acorex-platform-common-email-widget-edit.component--0gaRm4s.mjs} +9 -11
- package/fesm2022/acorex-platform-common-email-widget-edit.component--0gaRm4s.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-email-widget-view.component-ClRjKVy6.mjs → acorex-platform-common-email-widget-view.component-C3AUr1HO.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-email-widget-view.component-ClRjKVy6.mjs.map → acorex-platform-common-email-widget-view.component-C3AUr1HO.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-column.component-B0v2rSWI.mjs → acorex-platform-common-file-widget-column.component-C9AHk2UP.mjs} +4 -5
- package/fesm2022/acorex-platform-common-file-widget-column.component-C9AHk2UP.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-DsIqehpt.mjs → acorex-platform-common-file-widget-edit.component-L7bln9k0.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-file-widget-edit.component-DsIqehpt.mjs.map → acorex-platform-common-file-widget-edit.component-L7bln9k0.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-file-widget-filter.component-C3uBjqF-.mjs → acorex-platform-common-file-widget-filter.component-Ce35mqny.mjs} +4 -5
- package/fesm2022/acorex-platform-common-file-widget-filter.component-Ce35mqny.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-file-widget-view.component-DTl_Rehd.mjs → acorex-platform-common-file-widget-view.component-BvMzrs5C.mjs} +4 -5
- 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
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DHeFVg5x.mjs → acorex-platform-common-gallery-widget-edit.component-BVuV2Ib8.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-gallery-widget-edit.component-DHeFVg5x.mjs.map → acorex-platform-common-gallery-widget-edit.component-BVuV2Ib8.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-gallery-widget-filter.component-Di446i2c.mjs → acorex-platform-common-gallery-widget-filter.component-C8tdM6PX.mjs} +4 -5
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-C8tdM6PX.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-CkcRvfv-.mjs → acorex-platform-common-gallery-widget-view.component-D8YmSi9C.mjs} +3 -4
- package/fesm2022/{acorex-platform-common-gallery-widget-view.component-CkcRvfv-.mjs.map → acorex-platform-common-gallery-widget-view.component-D8YmSi9C.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-largetext-widget-edit.component-D89AlBSm.mjs → acorex-platform-common-largetext-widget-edit.component-DGMxpnsr.mjs} +4 -5
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-DGMxpnsr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-column.component-CB0ehp_y.mjs → acorex-platform-common-lookup-widget-column.component-B-cEaNjv.mjs} +4 -5
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-B-cEaNjv.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-edit.component-B0HQnsb8.mjs → acorex-platform-common-lookup-widget-edit.component-DqB_g9Zz.mjs} +4 -5
- 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
- package/fesm2022/{acorex-platform-common-lookup-widget-filter.component-Dxj_XEYV.mjs → acorex-platform-common-lookup-widget-filter.component-0TPWNWSd.mjs} +3 -4
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-0TPWNWSd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-lookup-widget-view.component-BtO3feA9.mjs → acorex-platform-common-lookup-widget-view.component-DYAg76YH.mjs} +4 -5
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-DYAg76YH.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-edit.component-hXIZrhzg.mjs → acorex-platform-common-map-widget-edit.component-C3cpsXD5.mjs} +4 -5
- package/fesm2022/acorex-platform-common-map-widget-edit.component-C3cpsXD5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-map-widget-view.component-RgV-r8q6.mjs → acorex-platform-common-map-widget-view.component-C-DCNaJi.mjs} +4 -5
- package/fesm2022/acorex-platform-common-map-widget-view.component-C-DCNaJi.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-column.component-DGWQWuzM.mjs → acorex-platform-common-messenger-widget-column.component-B2A7ZBEP.mjs} +4 -5
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-B2A7ZBEP.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-edit.component-Blv1qL4e.mjs → acorex-platform-common-messenger-widget-edit.component-DC8vQDo0.mjs} +4 -5
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-DC8vQDo0.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DEbnPggG.mjs → acorex-platform-common-messenger-widget-view.component-B6FavkmG.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-messenger-widget-view.component-DEbnPggG.mjs.map → acorex-platform-common-messenger-widget-view.component-B6FavkmG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-number-widget-edit.component-gQCEBhPv.mjs → acorex-platform-common-number-widget-edit.component-Bc5-ZUw4.mjs} +4 -5
- package/fesm2022/acorex-platform-common-number-widget-edit.component-Bc5-ZUw4.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-filter.component-CvEw3awN.mjs → acorex-platform-common-number-widget-filter.component-DxfJ90n4.mjs} +4 -5
- package/fesm2022/acorex-platform-common-number-widget-filter.component-DxfJ90n4.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-number-widget-view.component-ROrdklif.mjs → acorex-platform-common-number-widget-view.component-DGfLSGw1.mjs} +4 -5
- package/fesm2022/acorex-platform-common-number-widget-view.component-DGfLSGw1.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-column.component-vXdE4UjM.mjs → acorex-platform-common-password-widget-column.component-DEHaVLGK.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-password-widget-column.component-vXdE4UjM.mjs.map → acorex-platform-common-password-widget-column.component-DEHaVLGK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-password-widget-edit.component-BCOoHtGl.mjs → acorex-platform-common-password-widget-edit.component-DrYyu5v-.mjs} +4 -5
- package/fesm2022/acorex-platform-common-password-widget-edit.component-DrYyu5v-.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-password-widget-view.component-rpjAeimk.mjs → acorex-platform-common-password-widget-view.component-B_HU-3J1.mjs} +4 -4
- 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
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-BbuUbPCu.mjs → acorex-platform-common-phone-widget-column.component-D99ncxxJ.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-phone-widget-column.component-BbuUbPCu.mjs.map → acorex-platform-common-phone-widget-column.component-D99ncxxJ.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-phone-widget-edit.component-Bo_aOxfZ.mjs → acorex-platform-common-phone-widget-edit.component-a5EAI9FK.mjs} +8 -10
- package/fesm2022/acorex-platform-common-phone-widget-edit.component-a5EAI9FK.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-phone-widget-view.component-DDBCR_QY.mjs → acorex-platform-common-phone-widget-view.component-BlFVuoNN.mjs} +4 -5
- 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
- package/fesm2022/{acorex-platform-common-rich-text-widget-column.component-BHiq7hdp.mjs → acorex-platform-common-rich-text-widget-column.component-DOdv5I2s.mjs} +4 -5
- 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
- package/fesm2022/{acorex-platform-common-rich-text-widget-edit.component-12odUyzb.mjs → acorex-platform-common-rich-text-widget-edit.component-DL5UyAqe.mjs} +4 -5
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-DL5UyAqe.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-B9WB-mx9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-selection-list-widget-column.component-C2JikSdw.mjs → acorex-platform-common-selection-list-widget-column.component-CkOuYy0Z.mjs} +4 -5
- 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
- package/fesm2022/{acorex-platform-common-selection-list-widget-edit.component-C1QPfHCm.mjs → acorex-platform-common-selection-list-widget-edit.component-BmbDQ1LH.mjs} +4 -5
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-BmbDQ1LH.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-Dm_1-7eT.mjs.map +1 -0
- 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
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-3hinF85C.mjs.map +1 -0
- 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
- 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
- package/fesm2022/{acorex-platform-common-signature-pad-widget-view.component-USd0U707.mjs → acorex-platform-common-signature-pad-widget-view.component-DkFaMNk8.mjs} +4 -5
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-DkFaMNk8.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-string-widget-filter.component-wI9D-Ju5.mjs → acorex-platform-common-string-widget-filter.component-DAqR2PUN.mjs} +4 -5
- package/fesm2022/acorex-platform-common-string-widget-filter.component-DAqR2PUN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-column.component-Be7Nr0lJ.mjs → acorex-platform-common-text-widget-column.component-DVczwvKA.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-text-widget-column.component-Be7Nr0lJ.mjs.map → acorex-platform-common-text-widget-column.component-DVczwvKA.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-text-widget-edit.component-feJTTnye.mjs → acorex-platform-common-text-widget-edit.component-DC_GnFhe.mjs} +9 -12
- package/fesm2022/acorex-platform-common-text-widget-edit.component-DC_GnFhe.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-text-widget-view.component-DsUAJ-md.mjs → acorex-platform-common-text-widget-view.component-BK3HZGgb.mjs} +4 -5
- 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
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-BFwzsY4-.mjs → acorex-platform-common-toggle-widget-column.component-Bp1d7SAE.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-toggle-widget-column.component-BFwzsY4-.mjs.map → acorex-platform-common-toggle-widget-column.component-Bp1d7SAE.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-common-toggle-widget-edit.component-Cuf9_RrU.mjs → acorex-platform-common-toggle-widget-edit.component-D64m4agx.mjs} +4 -5
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-D64m4agx.mjs.map +1 -0
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DYz6VTey.mjs → acorex-platform-common-toggle-widget-view.component-BTaXXZ88.mjs} +4 -5
- package/fesm2022/{acorex-platform-common-toggle-widget-view.component-DYz6VTey.mjs.map → acorex-platform-common-toggle-widget-view.component-BTaXXZ88.mjs.map} +1 -1
- package/fesm2022/acorex-platform-common.mjs +835 -974
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +10 -4
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +1 -6
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +28 -13
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-setting.mjs +57 -0
- package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -0
- package/fesm2022/acorex-platform-layouts.mjs +37 -46
- package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cf5ttvrG.mjs → acorex-platform-themes-default-entity-master-create-view.component-CJY8R3sa.mjs} +6 -6
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cf5ttvrG.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-CJY8R3sa.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-C6zgLyry.mjs +301 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-C6zgLyry.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-CCvE7XiE.mjs → acorex-platform-themes-default-entity-master-modify-view.component-wPZPhMgy.mjs} +6 -6
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-CCvE7XiE.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-wPZPhMgy.mjs.map} +1 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DNXWb6ij.mjs +148 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DNXWb6ij.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +219 -77
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +184 -20
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/{acorex-platform-widgets-template-widget-edit.component-JlCVB-Aq.mjs → acorex-platform-widgets-template-widget-edit.component-DwPYeF0y.mjs} +2 -1
- 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
- package/fesm2022/acorex-platform-widgets.mjs +180 -34
- package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
- package/layout/builder/lib/builder/widget.types.d.ts +1 -2
- package/layout/entity/lib/entity-detail-list.viewmodel.d.ts +1 -0
- package/layout/entity/lib/entity-master-create.viewmodel.d.ts +2 -2
- package/layout/entity/lib/entity-master-list.viewmodel.d.ts +1 -0
- package/layout/setting/README.md +4 -0
- package/layout/setting/index.d.ts +1 -0
- package/layout/setting/lib/setting.viewmodel.d.ts +13 -0
- package/layouts/lib/admin/admin.module.d.ts +6 -3
- package/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.d.ts +42 -9
- package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.d.ts +0 -2
- package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +0 -2
- package/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.d.ts +4 -2
- package/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.d.ts +0 -1
- package/package.json +18 -18
- package/themes/default/index.d.ts +1 -0
- package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +43 -8
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +42 -4
- package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-columns/list-view-option-columns.component.d.ts +0 -2
- package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +42 -3
- package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +42 -2
- package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +42 -11
- package/themes/default/lib/layouts/setting-layout/convert-setting-data.d.ts +21 -0
- package/themes/default/lib/layouts/setting-layout/index.d.ts +2 -0
- package/themes/default/lib/layouts/setting-layout/setting-preview/setting-preview.component.d.ts +24 -0
- package/themes/default/lib/layouts/setting-layout/setting-view/setting-menu.component.d.ts +20 -0
- package/themes/shared/lib/components/theme-slot.component.d.ts +31 -5
- package/themes/shared/lib/services/theme.service.d.ts +45 -5
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-column.component.d.ts +6 -0
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-designer.component.d.ts +6 -0
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-edit.component.d.ts +8 -0
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-filter.component.d.ts +6 -0
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-print.component.d.ts +6 -0
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget-view.component.d.ts +7 -0
- package/widgets/lib/widgets/advance/cron-job/cron-job-widget.config.d.ts +7 -0
- package/widgets/lib/widgets/advance/cron-job/index.d.ts +7 -0
- package/common/lib/layout/layout.service.d.ts +0 -19
- package/common/lib/layout/theme/store/admin-layout.actions.d.ts +0 -7
- package/common/lib/layout/theme/store/admin-layout.effects.d.ts +0 -9
- package/common/lib/layout/theme/store/admin-layout.reducers.d.ts +0 -19
- package/common/lib/layout/theme/store/admin-layout.selectors.d.ts +0 -4
- package/common/lib/layout/theme/store/admin-layout.state.d.ts +0 -11
- package/common/lib/layout/theme/store/index.d.ts +0 -5
- package/esm2022/common/lib/layout/layout.service.mjs +0 -79
- package/esm2022/common/lib/layout/theme/store/admin-layout.actions.mjs +0 -11
- package/esm2022/common/lib/layout/theme/store/admin-layout.effects.mjs +0 -21
- package/esm2022/common/lib/layout/theme/store/admin-layout.reducers.mjs +0 -64
- package/esm2022/common/lib/layout/theme/store/admin-layout.selectors.mjs +0 -7
- package/esm2022/common/lib/layout/theme/store/admin-layout.state.mjs +0 -13
- package/esm2022/common/lib/layout/theme/store/index.mjs +0 -6
- package/esm2022/mocks/acorex-platform-mocks.mjs +0 -5
- package/esm2022/mocks/index.mjs +0 -7
- package/esm2022/mocks/lib/mocks.module.mjs +0 -15
- package/esm2022/mocks/lib/services/mocker.service.mjs +0 -114
- package/esm2022/mocks/lib/storage/storage.mock.service.mjs +0 -183
- package/fesm2022/acorex-platform-common-avatar-widget-view.component-Dew3CVLm.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-boolean-widget-filter.component-BdE7WOK5.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-checkbox-widget-edit.component-ChXbJsuG.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-column.component-QUYyDVw8.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-edit.component-CzLb3xnR.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-dateTime-widget-filter.component-DZRQ6yVk.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-column.component-Cm-fhlNZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-email-widget-edit.component-BfXFBLF6.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-column.component-B0v2rSWI.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-file-widget-filter.component-C3uBjqF-.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-gallery-widget-filter.component-Di446i2c.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-largetext-widget-edit.component-D89AlBSm.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-column.component-CB0ehp_y.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-filter.component-Dxj_XEYV.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-lookup-widget-view.component-BtO3feA9.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-edit.component-hXIZrhzg.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-map-widget-view.component-RgV-r8q6.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-column.component-DGWQWuzM.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-messenger-widget-edit.component-Blv1qL4e.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-edit.component-gQCEBhPv.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-filter.component-CvEw3awN.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-number-widget-view.component-ROrdklif.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-password-widget-edit.component-BCOoHtGl.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-phone-widget-edit.component-Bo_aOxfZ.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-edit.component-12odUyzb.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-rich-text-widget-view.component-Xr0ohz5L.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-edit.component-C1QPfHCm.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-filter.component-DIgxHmqa.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-selection-list-widget-view.component-D-VQ4JNC.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-signature-pad-widget-view.component-USd0U707.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-string-widget-filter.component-wI9D-Ju5.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-text-widget-edit.component-feJTTnye.mjs.map +0 -1
- package/fesm2022/acorex-platform-common-toggle-widget-edit.component-Cuf9_RrU.mjs.map +0 -1
- package/fesm2022/acorex-platform-mocks.mjs +0 -319
- package/fesm2022/acorex-platform-mocks.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BLb_4pK5.mjs +0 -306
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BLb_4pK5.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CwrgQFY7.mjs +0 -150
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-CwrgQFY7.mjs.map +0 -1
- package/mocks/README.md +0 -3
- package/mocks/index.d.ts +0 -3
- package/mocks/lib/mocks.module.d.ts +0 -7
- package/mocks/lib/services/mocker.service.d.ts +0 -29
- package/mocks/lib/storage/storage.mock.service.d.ts +0 -25
|
@@ -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
|
-
|
|
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(() => {
|
|
@@ -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 { 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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"}
|
|
@@ -1805,7 +1805,6 @@ class AXPDesignerHeaderMenuComponent {
|
|
|
1805
1805
|
this.service = inject(AXPDesignerService);
|
|
1806
1806
|
}
|
|
1807
1807
|
handleKeyboardEvent(event) {
|
|
1808
|
-
debugger;
|
|
1809
1808
|
if (event.code == 'Delete' && this.service.canDelete()) {
|
|
1810
1809
|
event.preventDefault();
|
|
1811
1810
|
this.service.removeWidget();
|
|
@@ -1892,11 +1891,7 @@ class AXPDesignerHeaderMenuComponent {
|
|
|
1892
1891
|
}
|
|
1893
1892
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPDesignerHeaderMenuComponent, decorators: [{
|
|
1894
1893
|
type: Component,
|
|
1895
|
-
args: [{ standalone: true, imports: [
|
|
1896
|
-
CommonModule,
|
|
1897
|
-
AXDecoratorModule,
|
|
1898
|
-
AXMenuModule,
|
|
1899
|
-
], selector: 'axp-designer-header-menu', template: "<ax-menu [openOn]=\"'hover'\" [hasArrow]=\"false\">\n <ax-menu-item>\n <ax-text>File</ax-text>\n <ax-menu-item (onClick)=\"service.new()\">\n <ax-text>New</ax-text>\n <ax-suffix>\n <ax-text> Shift+N </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n @if(service.canSave())\n {\n <ng-container>\n <ax-menu-item (onClick)=\"service.save()\">\n <ax-text>Save</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.saveAs()\">\n <ax-text>Save As...</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+Shift+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n </ng-container>\n }\n <ax-menu-item>\n <ax-text>Export</ax-text>\n <ax-menu-item (onClick)=\"service.downloadJson()\">\n <ax-text>Download JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Import</ax-text>\n <ax-menu-item (onClick)=\"service.importJSon()\">\n <ax-text>Import JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Edit</ax-text>\n <ax-menu-item [disabled]=\"!service.canUndo()\" (onClick)=\"service.undo()\">\n <ax-text>Undo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-left\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Z </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canRedo()\" (onClick)=\"service.redo()\">\n <ax-text>Redo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-right\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Y </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.clone()\">\n <ax-text>Clone</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-clone\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+D </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.cut()\">\n <ax-text>Cut</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-cut\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+X </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.copy()\">\n <ax-text>Copy</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-copy\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+C </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canPaste()\" (onClick)=\"service.paste()\">\n <ax-text>Paste</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-paste\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+V</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canDelete()\" (onClick)=\"service.removeWidget()\">\n <ax-text>Delete</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-trash\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Del</ax-text>\n </ax-suffix>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Run</ax-text>\n <ax-menu-item (onClick)=\"service.openPreviewDialog()\">\n <ax-text>Preview</ax-text>\n <ax-prefix>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.openPreviewWindow()\">\n <ax-text>Preview in seperate window</ax-text>\n <ax-prefix> </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+Shift+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Help</ax-text>\n <ax-menu-item>\n <ax-text>About</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n</ax-menu>" }]
|
|
1894
|
+
args: [{ standalone: true, imports: [CommonModule, AXDecoratorModule, AXMenuModule], selector: 'axp-designer-header-menu', template: "<ax-menu [openOn]=\"'hover'\" [hasArrow]=\"false\">\n <ax-menu-item>\n <ax-text>File</ax-text>\n <ax-menu-item (onClick)=\"service.new()\">\n <ax-text>New</ax-text>\n <ax-suffix>\n <ax-text> Shift+N </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n @if(service.canSave())\n {\n <ng-container>\n <ax-menu-item (onClick)=\"service.save()\">\n <ax-text>Save</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.saveAs()\">\n <ax-text>Save As...</ax-text>\n <ax-suffix>\n <ax-text> Ctrl+Shift+S </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n </ng-container>\n }\n <ax-menu-item>\n <ax-text>Export</ax-text>\n <ax-menu-item (onClick)=\"service.downloadJson()\">\n <ax-text>Download JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Import</ax-text>\n <ax-menu-item (onClick)=\"service.importJSon()\">\n <ax-text>Import JSON</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Edit</ax-text>\n <ax-menu-item [disabled]=\"!service.canUndo()\" (onClick)=\"service.undo()\">\n <ax-text>Undo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-left\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Z </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canRedo()\" (onClick)=\"service.redo()\">\n <ax-text>Redo</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-rotate-right\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+Y </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.clone()\">\n <ax-text>Clone</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-clone\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+D </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.cut()\">\n <ax-text>Cut</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-cut\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+X </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canCutCopy()\" (onClick)=\"service.copy()\">\n <ax-text>Copy</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-copy\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text> Ctrl+C </ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item [disabled]=\"!service.canPaste()\" (onClick)=\"service.paste()\">\n <ax-text>Paste</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-paste\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+V</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-divider></ax-divider>\n <ax-menu-item [disabled]=\"!service.canDelete()\" (onClick)=\"service.removeWidget()\">\n <ax-text>Delete</ax-text>\n <ax-prefix>\n <ax-icon>\n <i class=\"fa-solid fa-trash\"></i>\n </ax-icon>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Del</ax-text>\n </ax-suffix>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Run</ax-text>\n <ax-menu-item (onClick)=\"service.openPreviewDialog()\">\n <ax-text>Preview</ax-text>\n <ax-prefix>\n </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n <ax-menu-item (onClick)=\"service.openPreviewWindow()\">\n <ax-text>Preview in seperate window</ax-text>\n <ax-prefix> </ax-prefix>\n <ax-suffix>\n <ax-text>Ctrl+Shift+R</ax-text>\n </ax-suffix>\n </ax-menu-item>\n </ax-menu-item>\n <ax-menu-item>\n <ax-text>Help</ax-text>\n <ax-menu-item>\n <ax-text>About</ax-text>\n </ax-menu-item>\n </ax-menu-item>\n</ax-menu>" }]
|
|
1900
1895
|
}], propDecorators: { handleKeyboardEvent: [{
|
|
1901
1896
|
type: HostListener,
|
|
1902
1897
|
args: ['document:keydown', ['$event']]
|