@acorex/modules 19.4.15 → 20.0.0-next.0
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/application-management/index.d.ts +161 -13
- package/auth/index.d.ts +76 -4
- package/common/index.d.ts +183 -8
- package/content-management/index.d.ts +97 -8
- package/conversation/index.d.ts +585 -4
- package/dashboard-management/index.d.ts +1142 -5
- package/document-management/index.d.ts +289 -7
- package/fesm2022/{acorex-modules-application-management-module-designer.component-ZKzHxJ0D.mjs → acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs} +7 -7
- package/fesm2022/acorex-modules-application-management-module-designer.component-CvFiEI1a.mjs.map +1 -0
- package/fesm2022/acorex-modules-application-management.mjs +41 -41
- package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Q7plhyha.mjs → acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs} +44 -44
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-B10cRw3M.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs +65 -0
- package/fesm2022/acorex-modules-auth-app-chooser.component-C-HPf2jz.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-blank.layout-C5d42pO1.mjs +18 -0
- package/fesm2022/acorex-modules-auth-blank.layout-C5d42pO1.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-login.module--HO8WVi_.mjs → acorex-modules-auth-login.module-eC1_ukrb.mjs} +8 -8
- package/fesm2022/acorex-modules-auth-login.module-eC1_ukrb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-master.layout-CKfLvnZR.mjs → acorex-modules-auth-master.layout-DpfqRgAl.mjs} +5 -5
- package/fesm2022/acorex-modules-auth-master.layout-DpfqRgAl.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-DAB9dWB8.mjs +59 -0
- package/fesm2022/acorex-modules-auth-password.component-DAB9dWB8.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs +134 -0
- package/fesm2022/acorex-modules-auth-password.component-rE9yrcGW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-routes-Dphs3LyY.mjs → acorex-modules-auth-routes-EGvejNu9.mjs} +2 -2
- package/fesm2022/acorex-modules-auth-routes-EGvejNu9.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-settings.provider-CM-T8nbI.mjs.map +1 -1
- package/fesm2022/{acorex-modules-auth-tenant-chooser.component-S07bx8PP.mjs → acorex-modules-auth-tenant-chooser.component-fmuXNByb.mjs} +4 -4
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-fmuXNByb.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-JYtAQ3qF.mjs +40 -0
- package/fesm2022/acorex-modules-auth-two-factor-code.component-JYtAQ3qF.mjs.map +1 -0
- package/fesm2022/{acorex-modules-auth-two-factor.module-CKp1SEfD.mjs → acorex-modules-auth-two-factor.module-DF3_fgzH.mjs} +7 -7
- package/fesm2022/acorex-modules-auth-two-factor.module-DF3_fgzH.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs +135 -0
- package/fesm2022/acorex-modules-auth-user-sessions.component-BPb-WS4k.mjs.map +1 -0
- package/fesm2022/acorex-modules-auth.mjs +1 -1
- package/fesm2022/{acorex-modules-common-search-popup.component-tUvSQpDP.mjs → acorex-modules-common-search-popup.component-B5JU9uH9.mjs} +4 -4
- package/fesm2022/acorex-modules-common-search-popup.component-B5JU9uH9.mjs.map +1 -0
- package/fesm2022/acorex-modules-common-timeline-version-history-popup.component-DzvUTy5z.mjs +53 -0
- package/fesm2022/acorex-modules-common-timeline-version-history-popup.component-DzvUTy5z.mjs.map +1 -0
- package/fesm2022/acorex-modules-common.mjs +526 -36
- package/fesm2022/acorex-modules-common.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +121 -51
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-conversation.mjs +37 -37
- package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
- package/fesm2022/acorex-modules-dashboard-management.mjs +313 -213
- package/fesm2022/acorex-modules-dashboard-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs → acorex-modules-document-management-acorex-modules-document-management-DFJd7jtw.mjs} +234 -159
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-DFJd7jtw.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs → acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs} +6 -8
- package/fesm2022/acorex-modules-document-management-attachment-widget.component-C3RDX_qe.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs → acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DBb15uBA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-details-view.component-llMxeeFn.mjs → acorex-modules-document-management-details-view.component-DBdPqZC-.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-details-view.component-DBdPqZC-.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs → acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-drive-choose.component-83EwqXIv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-drive.component-BQ2w-PZw.mjs → acorex-modules-document-management-drive.component-B-a1lpDK.mjs} +8 -8
- package/fesm2022/acorex-modules-document-management-drive.component-B-a1lpDK.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs +19 -0
- package/fesm2022/acorex-modules-document-management-large-icons-view.component-CoPSJvbV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs → acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-large-tiles-view.component-BFcFkIBi.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-link-dialog.component-B-BzU_4Y.mjs +68 -0
- package/fesm2022/acorex-modules-document-management-link-dialog.component-B-BzU_4Y.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-list-view.component-ygy8vGy8.mjs +19 -0
- package/fesm2022/acorex-modules-document-management-list-view.component-ygy8vGy8.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-DvZ-vrUE.mjs +51 -0
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-DvZ-vrUE.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs +183 -0
- package/fesm2022/acorex-modules-document-management-meta-choose-popup.component-D7xogLDO.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-column.component-BDhqsc2j.mjs +29 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-column.component-BDhqsc2j.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-designer.component-C4GC0GbF.mjs +38 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-designer.component-C4GC0GbF.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-rlSWRGGl.mjs +32 -0
- package/fesm2022/acorex-modules-document-management-meta-selector-widget-view.component-rlSWRGGl.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs → acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs} +2 -2
- package/fesm2022/acorex-modules-document-management-permission-definition.provider-DzcDUk4h.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs → acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-DEp3gb2P.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-share-dialog.component-Diof2rpe.mjs → acorex-modules-document-management-share-dialog.component-DzuYhAD4.mjs} +6 -7
- package/fesm2022/acorex-modules-document-management-share-dialog.component-DzuYhAD4.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-DNN_3JF2.mjs +54 -0
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-DNN_3JF2.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-small-icons-view.component-B4AnqBZv.mjs +19 -0
- package/fesm2022/acorex-modules-document-management-small-icons-view.component-B4AnqBZv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs → acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs} +5 -5
- package/fesm2022/acorex-modules-document-management-small-tiles-view.component-C1lG9vFR.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-B_TMgAl1.mjs +36 -0
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-B_TMgAl1.mjs.map +1 -0
- package/fesm2022/acorex-modules-document-management.mjs +1 -1
- package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-KTKkPz-B.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-B3o427If.mjs} +58 -59
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-B3o427If.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-category.entity-DxgqHkjI.mjs → acorex-modules-form-template-management-category.entity-B7dGrmoa.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-category.entity-B7dGrmoa.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-designer.page-BmSMzkbb.mjs → acorex-modules-form-template-management-designer.page-DaTGU3w_.mjs} +5 -7
- package/fesm2022/acorex-modules-form-template-management-designer.page-DaTGU3w_.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-permission-definition.provider-6czJEo8f.mjs → acorex-modules-form-template-management-permission-definition.provider-CjjlgO0w.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-CjjlgO0w.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-settings.provider-D3nbUDMw.mjs → acorex-modules-form-template-management-settings.provider-CiSjuHGI.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-settings.provider-CiSjuHGI.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template-picker.component-CcmJfby7.mjs → acorex-modules-form-template-management-template-picker.component-CQZ37yC2.mjs} +5 -5
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-CQZ37yC2.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-BLobMX4C.mjs → acorex-modules-form-template-management-template-widget-edit.component-DUeV0yO8.mjs} +7 -8
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-DUeV0yO8.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-template.entity-Ci6QzE16.mjs → acorex-modules-form-template-management-template.entity-Cps77n3G.mjs} +2 -2
- package/fesm2022/acorex-modules-form-template-management-template.entity-Cps77n3G.mjs.map +1 -0
- package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-DIzlC6tX.mjs → acorex-modules-form-template-management-viewer-popup.component-K2ZznaDw.mjs} +5 -5
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-K2ZznaDw.mjs.map +1 -0
- package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
- package/fesm2022/{acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs → acorex-modules-issue-management-acorex-modules-issue-management-Blyh8QVB.mjs} +34 -27
- package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-Blyh8QVB.mjs.map +1 -0
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-BzUN6Cty.mjs +28 -0
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-BzUN6Cty.mjs.map +1 -0
- package/fesm2022/acorex-modules-issue-management.mjs +1 -1
- package/fesm2022/acorex-modules-log-management.mjs +10 -10
- package/fesm2022/acorex-modules-log-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-notification-management.mjs +39 -41
- package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-add-item.component-CittqJHu.mjs → acorex-modules-organization-management-add-item.component-COUAmxM8.mjs} +4 -4
- package/fesm2022/acorex-modules-organization-management-add-item.component-COUAmxM8.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-branch.entity-Bsgj4Pow.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-chart.entity-UAn44WCP.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-company.entity-D1A1HSkC.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-department.entity-BMojk26d.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-division.entity-BnWpX4US.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-employee.entity-DBuCVYZP.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-employment-type.entity-CWYu9tIg.mjs.map +1 -1
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-DNzhGz5G.mjs → acorex-modules-organization-management-org-chart-configuration.page-DjGUUbel.mjs} +7 -15
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DjGUUbel.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.service-CtA19B8x.mjs → acorex-modules-organization-management-org-chart-configuration.service-DeoDX_ir.mjs} +4 -4
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-DeoDX_ir.mjs.map +1 -0
- package/fesm2022/{acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs → acorex-modules-organization-management-org-chart.page-xlNWhN4W.mjs} +12 -21
- package/fesm2022/acorex-modules-organization-management-org-chart.page-xlNWhN4W.mjs.map +1 -0
- package/fesm2022/acorex-modules-organization-management-position-category.entity-DrZ9Ott4.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-position.entity-CY4TugWR.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-responsibility-category.entity-CmafbyCZ.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-responsibility.entity-DmLeFogS.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-role-category.entity-Cyt1dAKR.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-role.entity-BDErzNv-.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-settings.keys-B3cgSi_S.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-settings.provider-hlbUXugb.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-skill-category.entity-BPgGGVT3.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-skill.entity-D9XojzUV.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management-team.entity-mYPhrc2l.mjs.map +1 -1
- package/fesm2022/acorex-modules-organization-management.mjs +124 -236
- package/fesm2022/acorex-modules-organization-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-platform-management-acorex-modules-platform-management-CGGoHpYi.mjs → acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs} +106 -87
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-DapgAmXT.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-list-version.component-CGxYFnd9.mjs → acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs} +5 -5
- package/fesm2022/acorex-modules-platform-management-list-version.component-Dz_gAU6L.mjs.map +1 -0
- package/fesm2022/{acorex-modules-platform-management-settings.provider-CHAI3QHV.mjs → acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs} +2 -2
- package/fesm2022/acorex-modules-platform-management-settings.provider-C_AP6CfI.mjs.map +1 -0
- package/fesm2022/acorex-modules-platform-management.mjs +1 -1
- package/fesm2022/acorex-modules-project-management.mjs +44 -44
- package/fesm2022/acorex-modules-project-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-scheduler-job-management.mjs +14 -14
- package/fesm2022/acorex-modules-scheduler-job-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-security-management-permissions-editor.component-B2OIvMs7.mjs → acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs} +4 -4
- package/fesm2022/acorex-modules-security-management-permissions-editor.component-B4TdyHtv.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-column.component-P2buwWAw.mjs → acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs} +4 -4
- package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-DTMj6gxb.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-designer.component-CoqOAn_m.mjs → acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs} +5 -6
- package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-BJdbKpRQ.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-edit.component-P3adQ1xt.mjs → acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs} +4 -4
- package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-GTmDlgWW.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-print.component-D4lk67fE.mjs → acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs} +5 -6
- package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-BZ75aI18.mjs.map +1 -0
- package/fesm2022/{acorex-modules-security-management-permissions-widget-view.component-Cz32ewum.mjs → acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs} +5 -6
- package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-CYQqerAX.mjs.map +1 -0
- package/fesm2022/acorex-modules-security-management.mjs +48 -48
- package/fesm2022/acorex-modules-security-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-settings-management-setting-page.component-BgQoPRy_.mjs → acorex-modules-settings-management-setting-page.component-B2CEFpES.mjs} +4 -4
- package/fesm2022/acorex-modules-settings-management-setting-page.component-B2CEFpES.mjs.map +1 -0
- package/fesm2022/{acorex-modules-settings-management-setting-view.component-CX_FKIxI.mjs → acorex-modules-settings-management-setting-view.component-DnD83gFz.mjs} +4 -4
- package/fesm2022/acorex-modules-settings-management-setting-view.component-DnD83gFz.mjs.map +1 -0
- package/fesm2022/acorex-modules-settings-management.mjs +6 -6
- package/fesm2022/acorex-modules-settings-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management-settings.provider-fX0dhWUL.mjs.map +1 -1
- package/fesm2022/acorex-modules-text-template-management.mjs +24 -24
- package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-training-management.mjs +43 -43
- package/fesm2022/acorex-modules-training-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs → acorex-modules-workflow-management-task-board.page-BzLr0QnF.mjs} +8 -8
- package/fesm2022/acorex-modules-workflow-management-task-board.page-BzLr0QnF.mjs.map +1 -0
- package/fesm2022/acorex-modules-workflow-management.mjs +12 -12
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/fesm2022/acorex-modules.mjs.map +1 -1
- package/form-template-management/index.d.ts +144 -5
- package/index.d.ts +2 -2
- package/issue-management/index.d.ts +130 -6
- package/log-management/index.d.ts +94 -7
- package/notification-management/index.d.ts +266 -10
- package/organization-management/index.d.ts +544 -4
- package/package.json +1 -1
- package/platform-management/index.d.ts +350 -4
- package/project-management/index.d.ts +336 -7
- package/scheduler-job-management/index.d.ts +65 -5
- package/security-management/index.d.ts +167 -4
- package/settings-management/index.d.ts +59 -2
- package/text-template-management/index.d.ts +116 -5
- package/training-management/index.d.ts +330 -7
- package/workflow-management/index.d.ts +28 -2
- package/application-management/lib/application-management-mock-data.d.ts +0 -67
- package/application-management/lib/application-management.module.d.ts +0 -14
- package/application-management/lib/application-management.route.d.ts +0 -2
- package/application-management/lib/application-management.service.d.ts +0 -34
- package/application-management/lib/application-management.source.d.ts +0 -8
- package/application-management/lib/application-management.types.d.ts +0 -50
- package/application-management/lib/const.d.ts +0 -5
- package/application-management/lib/entities/application-module.entity.d.ts +0 -3
- package/application-management/lib/entities/applications.entity.d.ts +0 -3
- package/application-management/lib/entities/edition.entity.d.ts +0 -3
- package/application-management/lib/entities/entity.entity.d.ts +0 -3
- package/application-management/lib/entities/feature.entity.d.ts +0 -3
- package/application-management/lib/entities/modules.entity.d.ts +0 -3
- package/application-management/lib/entities/permission.entity.d.ts +0 -3
- package/application-management/lib/entities/property.entity.d.ts +0 -3
- package/application-management/lib/entity.loader.d.ts +0 -9
- package/application-management/lib/layouts/index.d.ts +0 -1
- package/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.d.ts +0 -74
- package/application-management/lib/menu.provider.d.ts +0 -4
- package/application-management/lib/module-designer/module-designer.component.d.ts +0 -34
- package/application-management/lib/module-designer/module-designer.service.d.ts +0 -34
- package/application-management/lib/module-designer/module-designer.type.d.ts +0 -1
- package/application-management/lib/services/application-management.service.d.ts +0 -10
- package/application-management/lib/services/application-module-management.service.d.ts +0 -10
- package/application-management/lib/services/context-menu.service.d.ts +0 -26
- package/application-management/lib/services/edition-management.service.d.ts +0 -10
- package/application-management/lib/services/entity-management.service.d.ts +0 -10
- package/application-management/lib/services/feature-management.service.d.ts +0 -10
- package/application-management/lib/services/module-management.service.d.ts +0 -10
- package/application-management/lib/services/permission-management.service.d.ts +0 -10
- package/application-management/lib/services/property-management.service.d.ts +0 -10
- package/application-management/lib/workflows/create-module-entity.workflow.d.ts +0 -9
- package/application-management/lib/workflows/index.d.ts +0 -2
- package/application-management/lib/workflows/show-module-entity-details.workflow.d.ts +0 -2
- package/auth/lib/auth.config.d.ts +0 -29
- package/auth/lib/auth.module.d.ts +0 -10
- package/auth/lib/auth.routes.d.ts +0 -2
- package/auth/lib/error-handler.d.ts +0 -9
- package/auth/lib/menu.provider.d.ts +0 -5
- package/auth/lib/pages/account/account.module.d.ts +0 -8
- package/auth/lib/pages/account/app-chooser/app-chooser-list.component.d.ts +0 -12
- package/auth/lib/pages/account/app-chooser/app-chooser-slot.component.d.ts +0 -12
- package/auth/lib/pages/account/app-chooser/app-chooser.component.d.ts +0 -13
- package/auth/lib/pages/account/profile/profile-slot.component.d.ts +0 -23
- package/auth/lib/pages/account/tenant-chooser/tenant-chooser-dropdown.component.d.ts +0 -10
- package/auth/lib/pages/account/tenant-chooser/tenant-chooser.component.d.ts +0 -24
- package/auth/lib/pages/account/user-profile-card/user-profile-card.component.d.ts +0 -26
- package/auth/lib/pages/account/user-sessions/user-sessions.component.d.ts +0 -71
- package/auth/lib/pages/account/user-sessions/user-sessions.service.d.ts +0 -22
- package/auth/lib/pages/forgot/password/password.component.d.ts +0 -11
- package/auth/lib/pages/forgot/routes.d.ts +0 -3
- package/auth/lib/pages/login/login.module.d.ts +0 -7
- package/auth/lib/pages/login/password/password.component.d.ts +0 -26
- package/auth/lib/pages/two-factor/two-factor-code/two-factor-code.component.d.ts +0 -8
- package/auth/lib/pages/two-factor/two-factor.module.d.ts +0 -7
- package/auth/lib/settings.provider.d.ts +0 -8
- package/auth/lib/shared/layouts/blank/blank.layout.d.ts +0 -8
- package/auth/lib/shared/layouts/master/master.layout.d.ts +0 -7
- package/auth/lib/shared/services/idle.service.d.ts +0 -17
- package/auth/lib/shared/services/index.d.ts +0 -1
- package/common/lib/common.module.d.ts +0 -8
- package/common/lib/const.d.ts +0 -12
- package/common/lib/entity.provider.d.ts +0 -10
- package/common/lib/features/global-search/index.d.ts +0 -3
- package/common/lib/features/global-search/search-popup.component.d.ts +0 -22
- package/common/lib/features/global-search/search-slot.component.d.ts +0 -9
- package/common/lib/features/global-search/search.config.d.ts +0 -5
- package/common/lib/features/global-search/search.module.d.ts +0 -11
- package/common/lib/features/global-search/search.viewmodel.d.ts +0 -34
- package/common/lib/features/global-search/workflows/search.workflow.d.ts +0 -11
- package/common/lib/menu.provider.d.ts +0 -6
- package/common/lib/permission-definition.provider.d.ts +0 -4
- package/common/lib/search-command.provider.d.ts +0 -4
- package/common/lib/settings.provider.d.ts +0 -4
- package/common/lib/widgets-names-list.d.ts +0 -40
- package/content-management/lib/const.d.ts +0 -19
- package/content-management/lib/content-management.module.d.ts +0 -7
- package/content-management/lib/entities/index.d.ts +0 -1
- package/content-management/lib/entities/promotion/index.d.ts +0 -5
- package/content-management/lib/entities/promotion/promotion.datasource.d.ts +0 -7
- package/content-management/lib/entities/promotion/promotion.entity.d.ts +0 -3
- package/content-management/lib/entities/promotion/promotion.service.d.ts +0 -10
- package/content-management/lib/entities/promotion/promotion.types.d.ts +0 -16
- package/content-management/lib/entity.provider.d.ts +0 -10
- package/content-management/lib/features/index.d.ts +0 -1
- package/content-management/lib/features/promotion/components/index.d.ts +0 -1
- package/content-management/lib/features/promotion/components/promotion-slot/promotion-slot.component.d.ts +0 -13
- package/content-management/lib/features/promotion/index.d.ts +0 -1
- package/content-management/lib/menu.provider.d.ts +0 -5
- package/content-management/lib/permission-definition.provider.d.ts +0 -4
- package/content-management/lib/search-command.provider.d.ts +0 -4
- package/content-management/lib/setting.provider.d.ts +0 -4
- package/conversation/lib/const.d.ts +0 -26
- package/conversation/lib/conversation.module.d.ts +0 -37
- package/conversation/lib/entities/index.d.ts +0 -2
- package/conversation/lib/entities/message/index.d.ts +0 -3
- package/conversation/lib/entities/message/message.entity.d.ts +0 -3
- package/conversation/lib/entities/message/message.service.d.ts +0 -10
- package/conversation/lib/entities/message/message.types.d.ts +0 -20
- package/conversation/lib/entities/room/index.d.ts +0 -3
- package/conversation/lib/entities/room/room.entity.d.ts +0 -3
- package/conversation/lib/entities/room/room.service.d.ts +0 -10
- package/conversation/lib/entities/room/room.types.d.ts +0 -8
- package/conversation/lib/entity.provider.d.ts +0 -12
- package/conversation/lib/features/chat/chat-preview.helper.d.ts +0 -68
- package/conversation/lib/features/chat/chat.component.d.ts +0 -42
- package/conversation/lib/features/chat/chat.service.d.ts +0 -101
- package/conversation/lib/features/chat/chat.type.d.ts +0 -38
- package/conversation/lib/features/chat/components/chat-item/chat-item.component.d.ts +0 -21
- package/conversation/lib/features/chat/components/chat-preview/chat-preview.component.d.ts +0 -33
- package/conversation/lib/features/chat/index.d.ts +0 -5
- package/conversation/lib/features/comment/comment-list-view.component.d.ts +0 -67
- package/conversation/lib/features/comment/comment-lookup-popup.component.d.ts +0 -10
- package/conversation/lib/features/comment/comment.service.d.ts +0 -66
- package/conversation/lib/features/comment/comment.type.d.ts +0 -45
- package/conversation/lib/features/comment/index.d.ts +0 -4
- package/conversation/lib/features/index.d.ts +0 -3
- package/conversation/lib/features/widget/share/comment/comment-widget-view.component.d.ts +0 -66
- package/conversation/lib/features/widget/share/comment/comment-widget.config.d.ts +0 -2
- package/conversation/lib/features/widget/share/comment/index.d.ts +0 -2
- package/dashboard-management/lib/const.d.ts +0 -19
- package/dashboard-management/lib/dashboard-management.module.d.ts +0 -7
- package/dashboard-management/lib/entities/dashboard/dashboard.entity.d.ts +0 -3
- package/dashboard-management/lib/entities/dashboard/dashboard.service.d.ts +0 -10
- package/dashboard-management/lib/entities/dashboard/dashboard.types.d.ts +0 -12
- package/dashboard-management/lib/entities/dashboard/index.d.ts +0 -3
- package/dashboard-management/lib/entities/index.d.ts +0 -1
- package/dashboard-management/lib/entity.provider.d.ts +0 -10
- package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.d.ts +0 -142
- package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.store.d.ts +0 -39
- package/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.type.d.ts +0 -20
- package/dashboard-management/lib/features/home-dashboard/dashboard-home/index.d.ts +0 -3
- package/dashboard-management/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.d.ts +0 -21
- package/dashboard-management/lib/features/home-dashboard/dashboard-popups/configuration-popup.d.ts +0 -14
- package/dashboard-management/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.d.ts +0 -11
- package/dashboard-management/lib/features/home-dashboard/dashboard-popups/index.d.ts +0 -3
- package/dashboard-management/lib/features/home-dashboard/index.d.ts +0 -4
- package/dashboard-management/lib/features/home-dashboard/setrting.keys.d.ts +0 -3
- package/dashboard-management/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.d.ts +0 -20
- package/dashboard-management/lib/features/home-dashboard/widget-wrapper/index.d.ts +0 -1
- package/dashboard-management/lib/features/shared/widgets/analog-clock/analog-clock-widget-view.component.d.ts +0 -9
- package/dashboard-management/lib/features/shared/widgets/analog-clock/analog-clock-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/analog-clock/analog-clock.component.d.ts +0 -28
- package/dashboard-management/lib/features/shared/widgets/analog-clock/index.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.d.ts +0 -18
- package/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/bar-chart/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/chart.type.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.d.ts +0 -39
- package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar.types.d.ts +0 -50
- package/dashboard-management/lib/features/shared/widgets/clock-calendar/index.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget-view.component.d.ts +0 -24
- package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget.config.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.d.ts +0 -18
- package/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/donut-chart/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.d.ts +0 -17
- package/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/gauge-chart/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/index.d.ts +0 -10
- package/dashboard-management/lib/features/shared/widgets/line-chart/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.component.d.ts +0 -18
- package/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/sticky-note/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/sticky-note/sticky-note-widget.component.d.ts +0 -21
- package/dashboard-management/lib/features/shared/widgets/sticky-note/sticky-note-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/tasklist/index.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist-widget.component.d.ts +0 -34
- package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist-widget.config.d.ts +0 -7
- package/dashboard-management/lib/features/shared/widgets/tasklist/tasklist.type.d.ts +0 -36
- package/dashboard-management/lib/features/shared/widgets/weather/advanced-weather/advanced-weather.component.d.ts +0 -32
- package/dashboard-management/lib/features/shared/widgets/weather/advanced-weather/advanced-weather.config.d.ts +0 -14
- package/dashboard-management/lib/features/shared/widgets/weather/advanced-weather/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/weather/index.d.ts +0 -5
- package/dashboard-management/lib/features/shared/widgets/weather/minimal-weather/index.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/weather/minimal-weather/minimal-weather.component.d.ts +0 -22
- package/dashboard-management/lib/features/shared/widgets/weather/minimal-weather/minimal-weather.config.d.ts +0 -14
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/index.d.ts +0 -3
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.abstract.d.ts +0 -193
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.key.d.ts +0 -2
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.mock.service.d.ts +0 -47
- package/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.service.d.ts +0 -48
- package/dashboard-management/lib/features/shared/widgets/weather/weather-widget.component.d.ts +0 -114
- package/dashboard-management/lib/features/shared/widgets/weather/weather-widget.config.d.ts +0 -14
- package/dashboard-management/lib/menu.provider.d.ts +0 -6
- package/dashboard-management/lib/settings.keys.d.ts +0 -3
- package/document-management/lib/badge.provider.d.ts +0 -11
- package/document-management/lib/const.d.ts +0 -49
- package/document-management/lib/document-management.module.d.ts +0 -16
- package/document-management/lib/entities/document/document.entity.d.ts +0 -3
- package/document-management/lib/entities/document/document.module.d.ts +0 -6
- package/document-management/lib/entities/document/document.service.d.ts +0 -15
- package/document-management/lib/entities/document/document.types.d.ts +0 -14
- package/document-management/lib/entities/document/index.d.ts +0 -4
- package/document-management/lib/entities/document-type/document-type.entity.d.ts +0 -3
- package/document-management/lib/entities/document-type/document-type.module.d.ts +0 -6
- package/document-management/lib/entities/document-type/document-type.service.d.ts +0 -10
- package/document-management/lib/entities/document-type/document-type.types.d.ts +0 -21
- package/document-management/lib/entities/document-type/index.d.ts +0 -4
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.entity.d.ts +0 -3
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.module.d.ts +0 -6
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.service.d.ts +0 -10
- package/document-management/lib/entities/document-type-meta-definition/document-type-meta-definition.types.d.ts +0 -5
- package/document-management/lib/entities/document-type-meta-definition/index.d.ts +0 -4
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.entity.d.ts +0 -3
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.module.d.ts +0 -6
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.service.d.ts +0 -10
- package/document-management/lib/entities/document-type-meta-value/document-type-meta-value.types.d.ts +0 -5
- package/document-management/lib/entities/document-type-meta-value/index.d.ts +0 -4
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.entity.d.ts +0 -3
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.module.d.ts +0 -6
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.service.d.ts +0 -10
- package/document-management/lib/entities/document-type-status-definition/document-type-status-definition.types.d.ts +0 -5
- package/document-management/lib/entities/document-type-status-definition/index.d.ts +0 -4
- package/document-management/lib/entities/folder/folder.entity.d.ts +0 -3
- package/document-management/lib/entities/folder/folder.service.d.ts +0 -14
- package/document-management/lib/entities/folder/folder.types.d.ts +0 -42
- package/document-management/lib/entities/folder/index.d.ts +0 -3
- package/document-management/lib/entities/index.d.ts +0 -6
- package/document-management/lib/entity.provider.d.ts +0 -10
- package/document-management/lib/features/document-explorer/components/create-folder-dialog/create-folder-dialog.component.d.ts +0 -27
- package/document-management/lib/features/document-explorer/components/rename-node-dialog/rename-node-dialog.component.d.ts +0 -14
- package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +0 -223
- package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +0 -142
- package/document-management/lib/features/document-explorer/index.d.ts +0 -3
- package/document-management/lib/features/document-explorer/settings.keys.d.ts +0 -5
- package/document-management/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.d.ts +0 -145
- package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +0 -143
- package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +0 -143
- package/document-management/lib/features/drive/drive.component.d.ts +0 -259
- package/document-management/lib/features/drive/index.d.ts +0 -3
- package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +0 -295
- package/document-management/lib/features/drive-choose/drive-choose.module.d.ts +0 -7
- package/document-management/lib/features/drive-choose/slots/file-uploader-widget-extension/file-uploader-widget-extension.component.d.ts +0 -15
- package/document-management/lib/features/file-type/file-type.module.d.ts +0 -6
- package/document-management/lib/features/file-type/index.d.ts +0 -2
- package/document-management/lib/features/file-type/providers/archive.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/audio.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/code.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/document.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/image.file.d.ts +0 -4
- package/document-management/lib/features/file-type/providers/index.d.ts +0 -6
- package/document-management/lib/features/file-type/providers/video.file.d.ts +0 -4
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-column.component.d.ts +0 -6
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-designer.component.d.ts +0 -6
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-edit.component.d.ts +0 -19
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-view.component.d.ts +0 -6
- package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-widget.config.d.ts +0 -7
- package/document-management/lib/features/file-type/widgets/file-type-extension/index.d.ts +0 -5
- package/document-management/lib/features/file-type/widgets/index.d.ts +0 -1
- package/document-management/lib/features/shared/components/document-type-choose-file/document-type-choose-file.component.d.ts +0 -16
- package/document-management/lib/features/shared/components/file-viewer-popup/file-viewer-popup.component.d.ts +0 -13
- package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +0 -204
- package/document-management/lib/features/shared/components/index.d.ts +0 -3
- package/document-management/lib/features/shared/components/link-dialog/link-dialog.component.d.ts +0 -24
- package/document-management/lib/features/shared/components/lock-dialog/lock-dialog.component.d.ts +0 -16
- package/document-management/lib/features/shared/components/share-dialog/share-dialog.component.d.ts +0 -22
- package/document-management/lib/features/shared/components/share-email-dialog/share-email-dialog.component.d.ts +0 -17
- package/document-management/lib/features/shared/components/unlock-dialog/unlock-dialog.component.d.ts +0 -10
- package/document-management/lib/features/shared/document-manager.service.d.ts +0 -378
- package/document-management/lib/features/shared/document-manager.types.d.ts +0 -30
- package/document-management/lib/features/shared/index.d.ts +0 -3
- package/document-management/lib/features/workflow/upload/upload.workflow.d.ts +0 -17
- package/document-management/lib/menu.provider.d.ts +0 -6
- package/document-management/lib/permission-definition.provider.d.ts +0 -8
- package/document-management/lib/permission.keys.d.ts +0 -19
- package/document-management/lib/search-command.provider.d.ts +0 -4
- package/document-management/lib/settings.provider.d.ts +0 -4
- package/fesm2022/acorex-modules-application-management-module-designer.component-ZKzHxJ0D.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-acorex-modules-auth-Q7plhyha.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-app-chooser.component-3RSDJLvi.mjs +0 -65
- package/fesm2022/acorex-modules-auth-app-chooser.component-3RSDJLvi.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-blank.layout-DIttom0K.mjs +0 -18
- package/fesm2022/acorex-modules-auth-blank.layout-DIttom0K.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-login.module--HO8WVi_.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-master.layout-CKfLvnZR.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-D3xMo34u.mjs +0 -59
- package/fesm2022/acorex-modules-auth-password.component-D3xMo34u.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-password.component-DGzkaDZv.mjs +0 -134
- package/fesm2022/acorex-modules-auth-password.component-DGzkaDZv.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-routes-Dphs3LyY.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-tenant-chooser.component-S07bx8PP.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-two-factor-code.component-CK9J4jMb.mjs +0 -40
- package/fesm2022/acorex-modules-auth-two-factor-code.component-CK9J4jMb.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-two-factor.module-CKp1SEfD.mjs.map +0 -1
- package/fesm2022/acorex-modules-auth-user-sessions.component-CT6GqJHq.mjs +0 -135
- package/fesm2022/acorex-modules-auth-user-sessions.component-CT6GqJHq.mjs.map +0 -1
- package/fesm2022/acorex-modules-common-search-popup.component-tUvSQpDP.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-_tXLNsja.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-attachment-widget.component-BVOXu-Jt.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DRj1LyK3.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-details-view.component-llMxeeFn.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive-choose.component-DDepk8Hb.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-drive.component-BQ2w-PZw.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs +0 -20
- package/fesm2022/acorex-modules-document-management-large-icons-view.component-9Q0LX8M-.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-large-tiles-view.component-CyqKSkZY.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-link-dialog.component-DKbO2nX8.mjs +0 -70
- package/fesm2022/acorex-modules-document-management-link-dialog.component-DKbO2nX8.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs +0 -20
- package/fesm2022/acorex-modules-document-management-list-view.component-CpXtdrMZ.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-By36woOc.mjs +0 -52
- package/fesm2022/acorex-modules-document-management-lock-dialog.component-By36woOc.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-permission-definition.provider-DZni4b4s.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-hcrBZ7h2.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-share-dialog.component-Diof2rpe.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-Bj6G6aqt.mjs +0 -55
- package/fesm2022/acorex-modules-document-management-share-email-dialog.component-Bj6G6aqt.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs +0 -20
- package/fesm2022/acorex-modules-document-management-small-icons-view.component-y9M40s9q.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-small-tiles-view.component-Ck8m3hZE.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-CNjFnm2w.mjs +0 -37
- package/fesm2022/acorex-modules-document-management-unlock-dialog.component-CNjFnm2w.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-acorex-modules-form-template-management-KTKkPz-B.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-category.entity-DxgqHkjI.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-designer.page-BmSMzkbb.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-permission-definition.provider-6czJEo8f.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-settings.provider-D3nbUDMw.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-picker.component-CcmJfby7.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template-widget-edit.component-BLobMX4C.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-template.entity-Ci6QzE16.mjs.map +0 -1
- package/fesm2022/acorex-modules-form-template-management-viewer-popup.component-DIzlC6tX.mjs.map +0 -1
- package/fesm2022/acorex-modules-issue-management-acorex-modules-issue-management-DbVfrgVX.mjs.map +0 -1
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs +0 -28
- package/fesm2022/acorex-modules-issue-management-capture-screen.component-_9mwJVkz.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-add-item.component-CittqJHu.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.page-DNzhGz5G.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart-configuration.service-CtA19B8x.mjs.map +0 -1
- package/fesm2022/acorex-modules-organization-management-org-chart.page-CrOUUr4c.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-acorex-modules-platform-management-CGGoHpYi.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-list-version.component-CGxYFnd9.mjs.map +0 -1
- package/fesm2022/acorex-modules-platform-management-settings.provider-CHAI3QHV.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-editor.component-B2OIvMs7.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-column.component-P2buwWAw.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-designer.component-CoqOAn_m.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-edit.component-P3adQ1xt.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-print.component-D4lk67fE.mjs.map +0 -1
- package/fesm2022/acorex-modules-security-management-permissions-widget-view.component-Cz32ewum.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-page.component-BgQoPRy_.mjs.map +0 -1
- package/fesm2022/acorex-modules-settings-management-setting-view.component-CX_FKIxI.mjs.map +0 -1
- package/fesm2022/acorex-modules-workflow-management-task-board.page-3_Tn2GeA.mjs.map +0 -1
- package/form-template-management/lib/const.d.ts +0 -23
- package/form-template-management/lib/entities/category/category.entity.d.ts +0 -3
- package/form-template-management/lib/entities/category/category.module.d.ts +0 -6
- package/form-template-management/lib/entities/category/category.service.d.ts +0 -10
- package/form-template-management/lib/entities/category/category.types.d.ts +0 -6
- package/form-template-management/lib/entities/category/index.d.ts +0 -3
- package/form-template-management/lib/entities/template/index.d.ts +0 -3
- package/form-template-management/lib/entities/template/template.entity.d.ts +0 -3
- package/form-template-management/lib/entities/template/template.module.d.ts +0 -6
- package/form-template-management/lib/entities/template/template.service.d.ts +0 -10
- package/form-template-management/lib/entities/template/template.types.d.ts +0 -52
- package/form-template-management/lib/entity.provider.d.ts +0 -10
- package/form-template-management/lib/features/designer/designer-connector.service.d.ts +0 -12
- package/form-template-management/lib/features/designer/designer.page.d.ts +0 -9
- package/form-template-management/lib/features/designer/index.d.ts +0 -5
- package/form-template-management/lib/features/designer/template.provider.d.ts +0 -7
- package/form-template-management/lib/features/designer/widgets/template/index.d.ts +0 -4
- package/form-template-management/lib/features/designer/widgets/template/template-widget-designer.component.d.ts +0 -25
- package/form-template-management/lib/features/designer/widgets/template/template-widget-edit.component.d.ts +0 -11
- package/form-template-management/lib/features/designer/widgets/template/template-widget-view.component.d.ts +0 -11
- package/form-template-management/lib/features/designer/widgets/template/template-widget.config.d.ts +0 -5
- package/form-template-management/lib/features/designer/widgets/template-designer/index.d.ts +0 -2
- package/form-template-management/lib/features/designer/widgets/template-designer/template-designer-widget-view.component.d.ts +0 -9
- package/form-template-management/lib/features/designer/widgets/template-designer/template-designer-widget.config.d.ts +0 -7
- package/form-template-management/lib/features/designer/widgets/template-picker/template-picker.component.d.ts +0 -40
- package/form-template-management/lib/features/designer/widgets/template-picker/template.provider.d.ts +0 -31
- package/form-template-management/lib/features/designer/workflows/create-template.workflow.d.ts +0 -2
- package/form-template-management/lib/features/designer/workflows/design-template.workflow.d.ts +0 -2
- package/form-template-management/lib/features/designer/workflows/workflow.actions.d.ts +0 -17
- package/form-template-management/lib/features/index.d.ts +0 -1
- package/form-template-management/lib/features/viewer/viewer-connector.service.d.ts +0 -13
- package/form-template-management/lib/features/viewer/viewer-popup.component.d.ts +0 -25
- package/form-template-management/lib/features/viewer/workflows/open-template.workflow.d.ts +0 -9
- package/form-template-management/lib/form-template-management.module.d.ts +0 -11
- package/form-template-management/lib/menu.provider.d.ts +0 -6
- package/form-template-management/lib/permission-definition.provider.d.ts +0 -8
- package/form-template-management/lib/permission.keys.d.ts +0 -19
- package/form-template-management/lib/search-command.provider.d.ts +0 -4
- package/form-template-management/lib/settings.keys.d.ts +0 -6
- package/form-template-management/lib/settings.provider.d.ts +0 -8
- package/issue-management/lib/components/capture-screen/capture-screen.types.d.ts +0 -19
- package/issue-management/lib/components/capture-screen/components/capture-screen-component/capture-screen.component.d.ts +0 -37
- package/issue-management/lib/components/capture-screen/index.d.ts +0 -2
- package/issue-management/lib/components/capture-screen/services/capture-screen.service.d.ts +0 -33
- package/issue-management/lib/const.d.ts +0 -37
- package/issue-management/lib/entities/index.d.ts +0 -3
- package/issue-management/lib/entities/issue-type/index.d.ts +0 -3
- package/issue-management/lib/entities/issue-type/issue-type.entity.d.ts +0 -3
- package/issue-management/lib/entities/issue-type/issue-type.service.d.ts +0 -10
- package/issue-management/lib/entities/issue-type/issue-type.types.d.ts +0 -6
- package/issue-management/lib/entities/my-reported-issues/index.d.ts +0 -3
- package/issue-management/lib/entities/my-reported-issues/my-reported-issues.entity.d.ts +0 -3
- package/issue-management/lib/entities/my-reported-issues/my-reported-issues.service.d.ts +0 -10
- package/issue-management/lib/entities/my-reported-issues/my-reported-issues.types.d.ts +0 -5
- package/issue-management/lib/entities/reported-issues/index.d.ts +0 -3
- package/issue-management/lib/entities/reported-issues/reported-issues.entity.d.ts +0 -3
- package/issue-management/lib/entities/reported-issues/reported-issues.service.d.ts +0 -10
- package/issue-management/lib/entities/reported-issues/reported-issues.types.d.ts +0 -20
- package/issue-management/lib/entity.provider.d.ts +0 -10
- package/issue-management/lib/features/report-issue/components/index.d.ts +0 -1
- package/issue-management/lib/features/report-issue/components/report-new-issue/report-new-issue.component.d.ts +0 -51
- package/issue-management/lib/features/report-issue/index.d.ts +0 -2
- package/issue-management/lib/features/report-issue/report-issue.types.d.ts +0 -24
- package/issue-management/lib/features/report-issue/services/report-new-issue.viewmodel.d.ts +0 -17
- package/issue-management/lib/features/report-issue/workflows/index.d.ts +0 -1
- package/issue-management/lib/features/report-issue/workflows/show-report-issue.workflow.d.ts +0 -10
- package/issue-management/lib/issue-management.module.d.ts +0 -7
- package/issue-management/lib/menu.provider.d.ts +0 -5
- package/issue-management/lib/setting.provider.d.ts +0 -4
- package/log-management/lib/const.d.ts +0 -20
- package/log-management/lib/entities/axp-log/axp-log.entity.d.ts +0 -3
- package/log-management/lib/entities/axp-log/axp-log.service.d.ts +0 -10
- package/log-management/lib/entities/axp-log/axp-log.types.d.ts +0 -23
- package/log-management/lib/entities/axp-log/index.d.ts +0 -3
- package/log-management/lib/entity.provider.d.ts +0 -10
- package/log-management/lib/log-management.module.d.ts +0 -6
- package/log-management/lib/menu.provider.d.ts +0 -5
- package/log-management/lib/permission-definition.provider.d.ts +0 -4
- package/log-management/lib/search-command.provider.d.ts +0 -4
- package/log-management/lib/settings.keys.d.ts +0 -16
- package/log-management/lib/settings.provider.d.ts +0 -12
- package/notification-management/lib/const.d.ts +0 -28
- package/notification-management/lib/entities/channel/channel.entity.d.ts +0 -3
- package/notification-management/lib/entities/channel/channel.service.d.ts +0 -10
- package/notification-management/lib/entities/channel/channel.types.d.ts +0 -21
- package/notification-management/lib/entities/channel/index.d.ts +0 -3
- package/notification-management/lib/entities/index.d.ts +0 -3
- package/notification-management/lib/entities/my-notification.d.ts +0 -3
- package/notification-management/lib/entities/notification/index.d.ts +0 -3
- package/notification-management/lib/entities/notification/notification.entity.d.ts +0 -3
- package/notification-management/lib/entities/notification/notification.service.d.ts +0 -17
- package/notification-management/lib/entities/notification/notification.types.d.ts +0 -5
- package/notification-management/lib/entities/notification-log.entity.d.ts +0 -3
- package/notification-management/lib/entities/template/index.d.ts +0 -4
- package/notification-management/lib/entities/template/template.entity.d.ts +0 -3
- package/notification-management/lib/entities/template/template.module.d.ts +0 -6
- package/notification-management/lib/entities/template/template.service.d.ts +0 -10
- package/notification-management/lib/entities/template/template.types.d.ts +0 -7
- package/notification-management/lib/entity.provider.d.ts +0 -10
- package/notification-management/lib/features/components/admin-notification-item/admin-notification-item.component.d.ts +0 -10
- package/notification-management/lib/features/components/admin-notification-panel/admin-notification-panel.component.d.ts +0 -41
- package/notification-management/lib/features/components/admin-notification-slot/admin-notification-slot.component.d.ts +0 -7
- package/notification-management/lib/features/dashboard/widgets/my-notification/index.d.ts +0 -2
- package/notification-management/lib/features/dashboard/widgets/my-notification/notification-widget.component.d.ts +0 -82
- package/notification-management/lib/features/dashboard/widgets/my-notification/notification-widget.config.d.ts +0 -5
- package/notification-management/lib/features/shared/notification-connector.service.d.ts +0 -57
- package/notification-management/lib/menu.provider.d.ts +0 -6
- package/notification-management/lib/notification-management.module.d.ts +0 -8
- package/notification-management/lib/notification-management.type.d.ts +0 -45
- package/notification-management/lib/settings.keys.d.ts +0 -17
- package/notification-management/lib/settings.provider.d.ts +0 -8
- package/organization-management/lib/const.d.ts +0 -125
- package/organization-management/lib/entities/branch/branch.entity.d.ts +0 -3
- package/organization-management/lib/entities/branch/branch.module.d.ts +0 -6
- package/organization-management/lib/entities/branch/branch.service.d.ts +0 -10
- package/organization-management/lib/entities/branch/branch.types.d.ts +0 -11
- package/organization-management/lib/entities/branch/index.d.ts +0 -3
- package/organization-management/lib/entities/chart/chart.entity.d.ts +0 -3
- package/organization-management/lib/entities/chart/chart.module.d.ts +0 -6
- package/organization-management/lib/entities/chart/chart.service.d.ts +0 -10
- package/organization-management/lib/entities/chart/chart.types.d.ts +0 -21
- package/organization-management/lib/entities/chart/index.d.ts +0 -3
- package/organization-management/lib/entities/company/company.entity.d.ts +0 -3
- package/organization-management/lib/entities/company/company.module.d.ts +0 -6
- package/organization-management/lib/entities/company/company.service.d.ts +0 -10
- package/organization-management/lib/entities/company/company.types.d.ts +0 -4
- package/organization-management/lib/entities/company/index.d.ts +0 -3
- package/organization-management/lib/entities/department/department.entity.d.ts +0 -3
- package/organization-management/lib/entities/department/department.module.d.ts +0 -6
- package/organization-management/lib/entities/department/department.service.d.ts +0 -10
- package/organization-management/lib/entities/department/department.types.d.ts +0 -10
- package/organization-management/lib/entities/department/index.d.ts +0 -3
- package/organization-management/lib/entities/division/division.entity.d.ts +0 -3
- package/organization-management/lib/entities/division/division.module.d.ts +0 -6
- package/organization-management/lib/entities/division/division.service.d.ts +0 -10
- package/organization-management/lib/entities/division/division.types.d.ts +0 -10
- package/organization-management/lib/entities/division/index.d.ts +0 -3
- package/organization-management/lib/entities/employee/employee.entity.d.ts +0 -3
- package/organization-management/lib/entities/employee/employee.module.d.ts +0 -6
- package/organization-management/lib/entities/employee/employee.service.d.ts +0 -10
- package/organization-management/lib/entities/employee/employee.types.d.ts +0 -15
- package/organization-management/lib/entities/employee/index.d.ts +0 -3
- package/organization-management/lib/entities/employment-type/employment-type.entity.d.ts +0 -3
- package/organization-management/lib/entities/employment-type/employment-type.module.d.ts +0 -6
- package/organization-management/lib/entities/employment-type/employment-type.service.d.ts +0 -10
- package/organization-management/lib/entities/employment-type/employment-type.types.d.ts +0 -5
- package/organization-management/lib/entities/employment-type/index.d.ts +0 -3
- package/organization-management/lib/entities/index.d.ts +0 -16
- package/organization-management/lib/entities/position/index.d.ts +0 -3
- package/organization-management/lib/entities/position/position.entity.d.ts +0 -3
- package/organization-management/lib/entities/position/position.module.d.ts +0 -6
- package/organization-management/lib/entities/position/position.service.d.ts +0 -10
- package/organization-management/lib/entities/position/position.types.d.ts +0 -10
- package/organization-management/lib/entities/position-category/index.d.ts +0 -3
- package/organization-management/lib/entities/position-category/position-category.entity.d.ts +0 -3
- package/organization-management/lib/entities/position-category/position-category.module.d.ts +0 -6
- package/organization-management/lib/entities/position-category/position-category.service.d.ts +0 -10
- package/organization-management/lib/entities/position-category/position-category.types.d.ts +0 -7
- package/organization-management/lib/entities/responsibility/index.d.ts +0 -3
- package/organization-management/lib/entities/responsibility/responsibility.entity.d.ts +0 -3
- package/organization-management/lib/entities/responsibility/responsibility.module.d.ts +0 -7
- package/organization-management/lib/entities/responsibility/responsibility.service.d.ts +0 -10
- package/organization-management/lib/entities/responsibility/responsibility.types.d.ts +0 -6
- package/organization-management/lib/entities/responsibility-category/index.d.ts +0 -3
- package/organization-management/lib/entities/responsibility-category/responsibility-category.entity.d.ts +0 -3
- package/organization-management/lib/entities/responsibility-category/responsibility-category.module.d.ts +0 -7
- package/organization-management/lib/entities/responsibility-category/responsibility-category.service.d.ts +0 -10
- package/organization-management/lib/entities/responsibility-category/responsibility-category.types.d.ts +0 -7
- package/organization-management/lib/entities/role/index.d.ts +0 -3
- package/organization-management/lib/entities/role/role.entity.d.ts +0 -3
- package/organization-management/lib/entities/role/role.module.d.ts +0 -6
- package/organization-management/lib/entities/role/role.service.d.ts +0 -10
- package/organization-management/lib/entities/role/role.types.d.ts +0 -8
- package/organization-management/lib/entities/role-category/index.d.ts +0 -3
- package/organization-management/lib/entities/role-category/role-category.entity.d.ts +0 -3
- package/organization-management/lib/entities/role-category/role-category.module.d.ts +0 -6
- package/organization-management/lib/entities/role-category/role-category.service.d.ts +0 -10
- package/organization-management/lib/entities/role-category/role-category.types.d.ts +0 -7
- package/organization-management/lib/entities/skill/index.d.ts +0 -3
- package/organization-management/lib/entities/skill/skill.entity.d.ts +0 -3
- package/organization-management/lib/entities/skill/skill.module.d.ts +0 -6
- package/organization-management/lib/entities/skill/skill.service.d.ts +0 -10
- package/organization-management/lib/entities/skill/skill.types.d.ts +0 -6
- package/organization-management/lib/entities/skill-category/index.d.ts +0 -3
- package/organization-management/lib/entities/skill-category/skill-category.entity.d.ts +0 -3
- package/organization-management/lib/entities/skill-category/skill-category.module.d.ts +0 -6
- package/organization-management/lib/entities/skill-category/skill-category.service.d.ts +0 -10
- package/organization-management/lib/entities/skill-category/skill-category.types.d.ts +0 -7
- package/organization-management/lib/entities/team/index.d.ts +0 -3
- package/organization-management/lib/entities/team/team.entity.d.ts +0 -3
- package/organization-management/lib/entities/team/team.module.d.ts +0 -6
- package/organization-management/lib/entities/team/team.service.d.ts +0 -10
- package/organization-management/lib/entities/team/team.types.d.ts +0 -8
- package/organization-management/lib/entity.provider.d.ts +0 -10
- package/organization-management/lib/features/employee/employee-feature.module.d.ts +0 -9
- package/organization-management/lib/features/index.d.ts +0 -1
- package/organization-management/lib/features/organization-chart/add-item/add-item.component.d.ts +0 -23
- package/organization-management/lib/features/organization-chart/index.d.ts +0 -1
- package/organization-management/lib/features/organization-chart/org-chart-configuration.page.d.ts +0 -145
- package/organization-management/lib/features/organization-chart/org-chart-configuration.service.d.ts +0 -21
- package/organization-management/lib/features/organization-chart/org-chart-print.service.d.ts +0 -45
- package/organization-management/lib/features/organization-chart/org-chart.page.d.ts +0 -239
- package/organization-management/lib/features/organization-chart/org-chart.service.d.ts +0 -66
- package/organization-management/lib/features/organization-chart/org-chart.type.d.ts +0 -46
- package/organization-management/lib/menu.provider.d.ts +0 -6
- package/organization-management/lib/organization-management.module.d.ts +0 -24
- package/organization-management/lib/settings.keys.d.ts +0 -17
- package/organization-management/lib/settings.provider.d.ts +0 -9
- package/platform-management/lib/const.d.ts +0 -61
- package/platform-management/lib/entities/app-term/app-term.entity.d.ts +0 -3
- package/platform-management/lib/entities/app-term/app-term.service.d.ts +0 -10
- package/platform-management/lib/entities/app-term/app-term.types.d.ts +0 -19
- package/platform-management/lib/entities/app-term/index.d.ts +0 -5
- package/platform-management/lib/entities/app-version/app-version.entity.d.ts +0 -3
- package/platform-management/lib/entities/app-version/app-version.service.d.ts +0 -10
- package/platform-management/lib/entities/app-version/app-version.types.d.ts +0 -13
- package/platform-management/lib/entities/app-version/index.d.ts +0 -5
- package/platform-management/lib/entities/data-source/coulmn-def.widget.d.ts +0 -68
- package/platform-management/lib/entities/data-source/data-source.entity.d.ts +0 -3
- package/platform-management/lib/entities/data-source/data-source.service.d.ts +0 -10
- package/platform-management/lib/entities/data-source/data-source.types.d.ts +0 -7
- package/platform-management/lib/entities/data-source/datasource-provider.dynamic.d.ts +0 -10
- package/platform-management/lib/entities/data-source/index.d.ts +0 -3
- package/platform-management/lib/entities/global-variable/global-variable.entity.d.ts +0 -3
- package/platform-management/lib/entities/global-variable/global-variables.service.d.ts +0 -10
- package/platform-management/lib/entities/global-variable/global-variables.types.d.ts +0 -7
- package/platform-management/lib/entities/global-variable/index.d.ts +0 -3
- package/platform-management/lib/entities/glossary/glossary.entity.d.ts +0 -3
- package/platform-management/lib/entities/glossary/glossary.service.d.ts +0 -10
- package/platform-management/lib/entities/glossary/glossary.types.d.ts +0 -4
- package/platform-management/lib/entities/glossary/index.d.ts +0 -3
- package/platform-management/lib/entities/index.d.ts +0 -7
- package/platform-management/lib/entities/meta-data-definition/index.d.ts +0 -3
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.entity.d.ts +0 -3
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.service.d.ts +0 -10
- package/platform-management/lib/entities/meta-data-definition/meta-data-definition.types.d.ts +0 -7
- package/platform-management/lib/entities/meta-data-definition-category/category.entity.d.ts +0 -3
- package/platform-management/lib/entities/meta-data-definition-category/category.service.d.ts +0 -10
- package/platform-management/lib/entities/meta-data-definition-category/category.types.d.ts +0 -7
- package/platform-management/lib/entities/meta-data-definition-category/index.d.ts +0 -3
- package/platform-management/lib/entity.provider.d.ts +0 -10
- package/platform-management/lib/features/app-terms/check-terms.service.d.ts +0 -11
- package/platform-management/lib/features/app-terms/components/notify-app/notify-app.component.d.ts +0 -14
- package/platform-management/lib/features/app-terms/pages/index.d.ts +0 -1
- package/platform-management/lib/features/app-terms/pages/list/list-terms.component.d.ts +0 -17
- package/platform-management/lib/features/app-terms/settings.keys.d.ts +0 -3
- package/platform-management/lib/features/app-terms/workflows/index.d.ts +0 -1
- package/platform-management/lib/features/app-terms/workflows/notify-new-term.workflow.d.ts +0 -15
- package/platform-management/lib/features/app-version/check-version.service.d.ts +0 -10
- package/platform-management/lib/features/app-version/components/index.d.ts +0 -2
- package/platform-management/lib/features/app-version/components/list-versions/list-version.component.d.ts +0 -14
- package/platform-management/lib/features/app-version/components/notify-app/notify-app.component.d.ts +0 -14
- package/platform-management/lib/features/app-version/components/slots/app-version-slot.component.d.ts +0 -12
- package/platform-management/lib/features/app-version/workflows/change-log.workflow.d.ts +0 -23
- package/platform-management/lib/features/app-version/workflows/index.d.ts +0 -1
- package/platform-management/lib/features/app-version/workflows/show-release-notes.workflow.d.ts +0 -9
- package/platform-management/lib/features/common/common.module.d.ts +0 -10
- package/platform-management/lib/features/common/index.d.ts +0 -2
- package/platform-management/lib/features/common/regional/data-source.provider.d.ts +0 -11
- package/platform-management/lib/features/common/regional/index.d.ts +0 -1
- package/platform-management/lib/features/common/regional/language-slot/language-slot.component.d.ts +0 -20
- package/platform-management/lib/features/common/regional/regional-store.service.d.ts +0 -11
- package/platform-management/lib/features/common/regional/settings.keys.d.ts +0 -20
- package/platform-management/lib/features/common/regional/settings.provider.d.ts +0 -10
- package/platform-management/lib/features/release-notes/settings.keys.d.ts +0 -3
- package/platform-management/lib/features/release-notes/settings.provider.d.ts +0 -11
- package/platform-management/lib/features/updater/index.d.ts +0 -2
- package/platform-management/lib/features/updater/updater.module.d.ts +0 -9
- package/platform-management/lib/features/updater/updater.service.d.ts +0 -6
- package/platform-management/lib/menu.provider.d.ts +0 -6
- package/platform-management/lib/platform-management.module.d.ts +0 -16
- package/platform-management/lib/task-board.provider.d.ts +0 -14
- package/project-management/lib/const.d.ts +0 -85
- package/project-management/lib/entities/client/client.entity.d.ts +0 -3
- package/project-management/lib/entities/client/client.service.d.ts +0 -10
- package/project-management/lib/entities/client/client.types.d.ts +0 -7
- package/project-management/lib/entities/client/index.d.ts +0 -3
- package/project-management/lib/entities/index.d.ts +0 -12
- package/project-management/lib/entities/project/index.d.ts +0 -3
- package/project-management/lib/entities/project/project.entity.d.ts +0 -3
- package/project-management/lib/entities/project/project.service.d.ts +0 -10
- package/project-management/lib/entities/project/project.types.d.ts +0 -11
- package/project-management/lib/entities/project-memeber/index.d.ts +0 -3
- package/project-management/lib/entities/project-memeber/project-memeber.entity.d.ts +0 -3
- package/project-management/lib/entities/project-memeber/project-memeber.service.d.ts +0 -10
- package/project-management/lib/entities/project-memeber/project-memeber.types.d.ts +0 -7
- package/project-management/lib/entities/project-role-member/index.d.ts +0 -3
- package/project-management/lib/entities/project-role-member/project-role-member.entity.d.ts +0 -3
- package/project-management/lib/entities/project-role-member/project-role-member.service.d.ts +0 -10
- package/project-management/lib/entities/project-role-member/project-role-member.types.d.ts +0 -5
- package/project-management/lib/entities/project-type/index.d.ts +0 -3
- package/project-management/lib/entities/project-type/project-type.entity.d.ts +0 -3
- package/project-management/lib/entities/project-type/project-type.service.d.ts +0 -10
- package/project-management/lib/entities/project-type/project-type.types.d.ts +0 -4
- package/project-management/lib/entities/sprint/index.d.ts +0 -3
- package/project-management/lib/entities/sprint/sprint.entity.d.ts +0 -3
- package/project-management/lib/entities/sprint/sprint.service.d.ts +0 -10
- package/project-management/lib/entities/sprint/sprint.types.d.ts +0 -8
- package/project-management/lib/entities/sprint-task/index.d.ts +0 -3
- package/project-management/lib/entities/sprint-task/sprint-task.entity.d.ts +0 -3
- package/project-management/lib/entities/sprint-task/sprint-task.service.d.ts +0 -10
- package/project-management/lib/entities/sprint-task/sprint-task.types.d.ts +0 -5
- package/project-management/lib/entities/task/index.d.ts +0 -3
- package/project-management/lib/entities/task/task.entity.d.ts +0 -3
- package/project-management/lib/entities/task/task.service.d.ts +0 -10
- package/project-management/lib/entities/task/task.types.d.ts +0 -19
- package/project-management/lib/entities/task-history/index.d.ts +0 -3
- package/project-management/lib/entities/task-history/task-history.entity.d.ts +0 -3
- package/project-management/lib/entities/task-history/task-history.service.d.ts +0 -10
- package/project-management/lib/entities/task-history/task-history.types.d.ts +0 -8
- package/project-management/lib/entities/task-type/index.d.ts +0 -3
- package/project-management/lib/entities/task-type/task-type.entity.d.ts +0 -3
- package/project-management/lib/entities/task-type/task-type.service.d.ts +0 -10
- package/project-management/lib/entities/task-type/task-type.types.d.ts +0 -6
- package/project-management/lib/entities/time-sheet/index.d.ts +0 -3
- package/project-management/lib/entities/time-sheet/time-sheet.entity.d.ts +0 -3
- package/project-management/lib/entities/time-sheet/time-sheet.service.d.ts +0 -10
- package/project-management/lib/entities/time-sheet/time-sheet.types.d.ts +0 -8
- package/project-management/lib/entities/work-site/index.d.ts +0 -3
- package/project-management/lib/entities/work-site/work-site.entity.d.ts +0 -3
- package/project-management/lib/entities/work-site/work-site.service.d.ts +0 -10
- package/project-management/lib/entities/work-site/work-site.types.d.ts +0 -8
- package/project-management/lib/entity.provider.d.ts +0 -10
- package/project-management/lib/menu.provider.d.ts +0 -5
- package/project-management/lib/project-management.module.d.ts +0 -6
- package/project-management/lib/search-command.provider.d.ts +0 -4
- package/project-management/lib/setting.provider.d.ts +0 -4
- package/project-management/lib/task-board.provider.d.ts +0 -14
- package/scheduler-job-management/lib/const.d.ts +0 -18
- package/scheduler-job-management/lib/entities/index.d.ts +0 -1
- package/scheduler-job-management/lib/entities/scheduler-job/index.d.ts +0 -4
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.entity.d.ts +0 -3
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.module.d.ts +0 -6
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.service.d.ts +0 -10
- package/scheduler-job-management/lib/entities/scheduler-job/scheduler-job.types.d.ts +0 -5
- package/scheduler-job-management/lib/entity.provider.d.ts +0 -9
- package/scheduler-job-management/lib/menu.provider.d.ts +0 -5
- package/scheduler-job-management/lib/scheduler-job-management.module.d.ts +0 -7
- package/security-management/lib/const.d.ts +0 -35
- package/security-management/lib/entities/device-sessions/device-sessions.entity.d.ts +0 -3
- package/security-management/lib/entities/device-sessions/device-sessions.module.d.ts +0 -6
- package/security-management/lib/entities/device-sessions/device-sessions.service.d.ts +0 -12
- package/security-management/lib/entities/device-sessions/device-sessions.types.d.ts +0 -34
- package/security-management/lib/entities/device-sessions/index.d.ts +0 -4
- package/security-management/lib/entities/index.d.ts +0 -5
- package/security-management/lib/entities/profile/index.d.ts +0 -3
- package/security-management/lib/entities/profile/profile.entity.d.ts +0 -3
- package/security-management/lib/entities/profile/profile.module.d.ts +0 -6
- package/security-management/lib/entities/profile/profile.types.d.ts +0 -5
- package/security-management/lib/entities/roles/index.d.ts +0 -4
- package/security-management/lib/entities/roles/roles.entity.d.ts +0 -3
- package/security-management/lib/entities/roles/roles.module.d.ts +0 -6
- package/security-management/lib/entities/roles/roles.service.d.ts +0 -10
- package/security-management/lib/entities/roles/roles.types.d.ts +0 -7
- package/security-management/lib/entities/users/index.d.ts +0 -4
- package/security-management/lib/entities/users/users.entity.d.ts +0 -3
- package/security-management/lib/entities/users/users.module.d.ts +0 -6
- package/security-management/lib/entities/users/users.service.d.ts +0 -10
- package/security-management/lib/entities/users/users.types.d.ts +0 -10
- package/security-management/lib/entity.provider.d.ts +0 -10
- package/security-management/lib/features/permissions/permissions-editor/permissions-editor.component.d.ts +0 -70
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-column.component.d.ts +0 -10
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-designer.component.d.ts +0 -6
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-edit.component.d.ts +0 -8
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-print.component.d.ts +0 -6
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget-view.component.d.ts +0 -6
- package/security-management/lib/features/permissions/permissions-widget/permissions-widget.config.d.ts +0 -2
- package/security-management/lib/features/permissions/permissions.module.d.ts +0 -8
- package/security-management/lib/features/permissions/workflows/assign-permissions.workflow.d.ts +0 -10
- package/security-management/lib/menu.keys.d.ts +0 -6
- package/security-management/lib/menu.provider.d.ts +0 -5
- package/security-management/lib/search-command.provider.d.ts +0 -4
- package/security-management/lib/security-management.module.d.ts +0 -12
- package/security-management/lib/user-avatar.provider.d.ts +0 -5
- package/security-management/lib/workflows/terminate-entity.workflow.d.ts +0 -27
- package/settings-management/lib/features/settings/convert-setting-data.d.ts +0 -2
- package/settings-management/lib/features/settings/search-definition.provider.d.ts +0 -4
- package/settings-management/lib/features/settings/search.provider.d.ts +0 -9
- package/settings-management/lib/features/settings/setting-page/setting-page.component.d.ts +0 -65
- package/settings-management/lib/features/settings/setting-view/setting-view.component.d.ts +0 -135
- package/settings-management/lib/features/settings/settings.viewmodel.d.ts +0 -46
- package/settings-management/lib/settings-management.module.d.ts +0 -9
- package/text-template-management/lib/const.d.ts +0 -29
- package/text-template-management/lib/entities/category/category.entity.d.ts +0 -3
- package/text-template-management/lib/entities/category/category.module.d.ts +0 -6
- package/text-template-management/lib/entities/category/category.service.d.ts +0 -10
- package/text-template-management/lib/entities/category/category.types.d.ts +0 -5
- package/text-template-management/lib/entities/category/index.d.ts +0 -4
- package/text-template-management/lib/entities/index.d.ts +0 -3
- package/text-template-management/lib/entities/tag-template/index.d.ts +0 -3
- package/text-template-management/lib/entities/tag-template/tag-template.entity.d.ts +0 -3
- package/text-template-management/lib/entities/tag-template/tag-template.service.d.ts +0 -10
- package/text-template-management/lib/entities/tag-template/tag-template.types.d.ts +0 -5
- package/text-template-management/lib/entities/template/index.d.ts +0 -4
- package/text-template-management/lib/entities/template/template.entity.d.ts +0 -3
- package/text-template-management/lib/entities/template/template.module.d.ts +0 -6
- package/text-template-management/lib/entities/template/template.service.d.ts +0 -10
- package/text-template-management/lib/entities/template/template.types.d.ts +0 -9
- package/text-template-management/lib/entity.provider.d.ts +0 -10
- package/text-template-management/lib/menu.provider.d.ts +0 -5
- package/text-template-management/lib/settings.provider.d.ts +0 -4
- package/text-template-management/lib/text-template-management.module.d.ts +0 -8
- package/training-management/lib/const.d.ts +0 -85
- package/training-management/lib/entities/certificate/certificate.entity.d.ts +0 -3
- package/training-management/lib/entities/certificate/certificate.service.d.ts +0 -10
- package/training-management/lib/entities/certificate/certificate.types.d.ts +0 -12
- package/training-management/lib/entities/certificate/index.d.ts +0 -3
- package/training-management/lib/entities/course/course.entity.d.ts +0 -3
- package/training-management/lib/entities/course/course.service.d.ts +0 -10
- package/training-management/lib/entities/course/course.types.d.ts +0 -8
- package/training-management/lib/entities/course/index.d.ts +0 -3
- package/training-management/lib/entities/course-location/course-location.entity.d.ts +0 -3
- package/training-management/lib/entities/course-location/course-location.service.d.ts +0 -10
- package/training-management/lib/entities/course-location/course-location.types.d.ts +0 -6
- package/training-management/lib/entities/course-location/index.d.ts +0 -3
- package/training-management/lib/entities/course-period/course-period.entity.d.ts +0 -3
- package/training-management/lib/entities/course-period/course-period.service.d.ts +0 -10
- package/training-management/lib/entities/course-period/course-period.types.d.ts +0 -6
- package/training-management/lib/entities/course-period/index.d.ts +0 -3
- package/training-management/lib/entities/course-type/course-type.entity.d.ts +0 -3
- package/training-management/lib/entities/course-type/course-type.service.d.ts +0 -10
- package/training-management/lib/entities/course-type/course-type.types.d.ts +0 -5
- package/training-management/lib/entities/course-type/index.d.ts +0 -3
- package/training-management/lib/entities/facilitator-type/facilitator-type.entity.d.ts +0 -3
- package/training-management/lib/entities/facilitator-type/facilitator-type.service.d.ts +0 -10
- package/training-management/lib/entities/facilitator-type/facilitator-type.types.d.ts +0 -6
- package/training-management/lib/entities/facilitator-type/index.d.ts +0 -3
- package/training-management/lib/entities/index.d.ts +0 -12
- package/training-management/lib/entities/location/index.d.ts +0 -3
- package/training-management/lib/entities/location/location.entity.d.ts +0 -3
- package/training-management/lib/entities/location/location.service.d.ts +0 -10
- package/training-management/lib/entities/location/location.types.d.ts +0 -7
- package/training-management/lib/entities/period/index.d.ts +0 -3
- package/training-management/lib/entities/period/period.entity.d.ts +0 -3
- package/training-management/lib/entities/period/period.service.d.ts +0 -10
- package/training-management/lib/entities/period/period.types.d.ts +0 -6
- package/training-management/lib/entities/training/index.d.ts +0 -3
- package/training-management/lib/entities/training/training.entity.d.ts +0 -3
- package/training-management/lib/entities/training/training.service.d.ts +0 -10
- package/training-management/lib/entities/training/training.types.d.ts +0 -13
- package/training-management/lib/entities/training-facilitator/index.d.ts +0 -3
- package/training-management/lib/entities/training-facilitator/training-facilitator.entity.d.ts +0 -3
- package/training-management/lib/entities/training-facilitator/training-facilitator.service.d.ts +0 -10
- package/training-management/lib/entities/training-facilitator/training-facilitator.types.d.ts +0 -7
- package/training-management/lib/entities/training-participant/index.d.ts +0 -3
- package/training-management/lib/entities/training-participant/training-participant.entity.d.ts +0 -3
- package/training-management/lib/entities/training-participant/training-participant.service.d.ts +0 -10
- package/training-management/lib/entities/training-participant/training-participant.types.d.ts +0 -7
- package/training-management/lib/entities/training-type/index.d.ts +0 -3
- package/training-management/lib/entities/training-type/training-type.entity.d.ts +0 -3
- package/training-management/lib/entities/training-type/training-type.service.d.ts +0 -10
- package/training-management/lib/entities/training-type/training-type.types.d.ts +0 -7
- package/training-management/lib/entity.provider.d.ts +0 -10
- package/training-management/lib/menu.provider.d.ts +0 -5
- package/training-management/lib/permission-definition.provider.d.ts +0 -4
- package/training-management/lib/search-command.provider.d.ts +0 -4
- package/training-management/lib/setting.provider.d.ts +0 -4
- package/training-management/lib/training-management.module.d.ts +0 -6
- package/workflow-management/lib/const.d.ts +0 -11
- package/workflow-management/lib/features/task-board/index.d.ts +0 -2
- package/workflow-management/lib/features/task-board/settings.keys.d.ts +0 -5
- package/workflow-management/lib/features/task-board/task-board.module.d.ts +0 -6
- package/workflow-management/lib/features/task-board/task-board.page.d.ts +0 -76
- package/workflow-management/lib/features/task-board/task-board.service.d.ts +0 -13
- package/workflow-management/lib/features/task-board/task-board.viewmodel.d.ts +0 -20
- package/workflow-management/lib/features/task-board/views/task-board-calendar-view/task-board-calendar-view.page.d.ts +0 -25
- package/workflow-management/lib/workflow-management.module.d.ts +0 -8
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-modules-dashboard-management.mjs","sources":["../../../../libs/modules/dashboard-management/src/lib/const.ts","../../../../libs/modules/dashboard-management/src/lib/entities/dashboard/dashboard.service.ts","../../../../libs/modules/dashboard-management/src/lib/entities/dashboard/dashboard.entity.ts","../../../../libs/modules/dashboard-management/src/lib/entity.provider.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/analog-clock/analog-clock.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/analog-clock/analog-clock-widget-view.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/analog-clock/analog-clock-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/chart.type.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/bar-chart/bar-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/clock-calendar/clock-calendar.types.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/donut-chart/donut-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/line-chart/line-chart-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/line-chart/line-chart-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/line-chart/line-chart-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/sticky-note/sticky-note-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/sticky-note/sticky-note-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/sticky-note/sticky-note-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/tasklist/tasklist-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/tasklist/tasklist-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/tasklist/tasklist-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-services/weather-api.abstract.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-services/weather-api.mock.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-services/weather-api.key.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-services/weather-api.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/advanced-weather/advanced-weather.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/advanced-weather/advanced-weather.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/minimal-weather/minimal-weather.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/minimal-weather/minimal-weather.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-widget.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-widget.component.html","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/weather/weather-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget-view.component.ts","../../../../libs/modules/dashboard-management/src/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget.config.ts","../../../../libs/modules/dashboard-management/src/lib/menu.provider.ts","../../../../libs/modules/dashboard-management/src/lib/dashboard-management.module.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.html","../../../../libs/modules/dashboard-management/src/lib/settings.keys.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/configuration-popup.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.store.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.ts","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/dashboard-home/home-dashboard.html","../../../../libs/modules/dashboard-management/src/lib/features/home-dashboard/setrting.keys.ts","../../../../libs/modules/dashboard-management/src/acorex-modules-dashboard-management.ts"],"sourcesContent":["const config = {\n i18n: 'dashboard',\n};\nexport const RootConfig = {\n config,\n module: {\n module: 'DashboardManagement',\n name: 'DashboardManagement',\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-regular fa-tachometer-alt',\n },\n entities: {\n dashboard: {\n name: 'Dashboard',\n title: `t(\"dashboard\", { scope: \"dashboard\" })`,\n titlePlural: `t(\"dashboardPlural\", { scope: \"dashboard\" })`,\n icon: 'fa-regular fa-tachometer-alt',\n },\n },\n};\n","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMCommonDashboardEntityModel } from './dashboard.types';\n\nexport abstract class AXMDashboardService extends AXMEntityCrudServiceImpl<string, AXMCommonDashboardEntityModel> {}\n\n@Injectable()\nexport class AXMDashboardServiceImpl extends AXMDashboardService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.dashboard.name}`);\n }\n}\n","import { AXPEntity, AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { Injector } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport { AXMDashboardService } from './dashboard.service';\n\nexport async function dashboardFactory(injector: Injector): Promise<AXPEntity | null> {\n const dataService = injector.get(AXMDashboardService);\n const i18n = RootConfig.config.i18n;\n\n const entityDef: AXPEntity = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dashboard.name,\n source: '',\n title: RootConfig.entities.dashboard.title,\n formats: {\n individual: RootConfig.entities.dashboard.title,\n plural: RootConfig.entities.dashboard.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.dashboard.title,\n },\n ],\n properties: [\n\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: false,\n },\n filter: {\n advance: {\n enabled: false,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n },\n\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n\n {\n name: 'description',\n title: `t(\"description\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: false,\n },\n filter: {\n advance: {\n enabled: false,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n }, ],\n columns: [{ name: 'name' }, { name: 'title' }, { name: 'description' }],\n commands: {\n create: {\n execute: async (data: any) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id: any) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data: any) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id: string) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e: any) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n }, ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n }, ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n }, ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({ \n sorts: [{ name: 'name', dir: 'asc' }]\n }),\n ],\n },\n },\n },\n };\n\n return entityDef;\n}\n","import { AXPEntity } from '@acorex/platform/common';\nimport {\n AXPEntityDefinitionLoader,\n AXPEntityDefinitionPreloader,\n AXPEntityPreloadEntity,\n} from '@acorex/platform/layout/entity';\nimport { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\n\n@Injectable()\nexport class AXMEntityProvider implements AXPEntityDefinitionLoader, AXPEntityDefinitionPreloader {\n private injector = inject(Injector);\n\n public preload(): AXPEntityPreloadEntity[] {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity: any) => ({\n module: module,\n entity: entity.name,\n }));\n }\n\n async get(moduleName: string, entityName: string): Promise<AXPEntity | null> {\n if (moduleName == RootConfig.module.name) {\n switch (entityName) {\n case RootConfig.entities.dashboard.name:\n return (await import('./entities/dashboard/dashboard.entity')).dashboardFactory(this.injector);\n }\n }\n return null;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n input,\n OnDestroy,\n OnInit,\n signal,\n WritableSignal,\n} from '@angular/core';\n\ninterface AXMClockMark {\n transform?: string;\n top?: string;\n left?: string;\n value?: number;\n}\n\n@Component({\n selector: 'axm-analog-clock',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"axm-analog-clock-container\">\n <div class=\"axm-analog-clock-face\">\n <div class=\"axm-analog-clock-marks-container\">\n @for (line of hourLines; track $index) {\n <div class=\"axm-analog-clock-hour-line\" [style.transform]=\"line.transform\">\n <div class=\"axm-analog-clock-hour-line-inner\"></div>\n </div>\n }\n @for (dot of dots; track $index) {\n <div class=\"axm-analog-clock-dot-line\" [style.transform]=\"dot.transform\">\n <div class=\"axm-analog-clock-dot-line-inner\"></div>\n </div>\n }\n </div>\n\n @if (showNumbers()) {\n <div class=\"axm-analog-clock-numbers-container\">\n @for (num of hourNumbers; track num.value) {\n <div class=\"axm-analog-clock-hour-number\" [style.top]=\"num.top\" [style.left]=\"num.left\">\n {{ num.value }}\n </div>\n }\n </div>\n }\n <div class=\"axm-analog-clock-hands\">\n <div class=\"axm-analog-clock-hand axm-analog-clock-hour-hand\" [style.transform]=\"hourHandTransform()\"></div>\n <div\n class=\"axm-analog-clock-hand axm-analog-clock-minute-hand\"\n [style.transform]=\"minuteHandTransform()\"\n ></div>\n <div\n class=\"axm-analog-clock-hand axm-analog-clock-second-hand\"\n [style.transform]=\"secondHandTransform()\"\n ></div>\n <div class=\"axm-analog-clock-center-point\"></div>\n </div>\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n @apply ax-grid ax-place-items-center ax-size-full;\n }\n\n .axm-analog-clock-container {\n @apply ax-relative ax-w-full ax-max-h-full;\n aspect-ratio: 1;\n container-type: inline-size;\n }\n .axm-analog-clock-face {\n @apply ax-w-full ax-h-full ax-relative;\n }\n .axm-analog-clock-marks-container,\n .axm-analog-clock-numbers-container {\n @apply ax-absolute ax-inset-0;\n }\n .axm-analog-clock-hands {\n @apply ax-absolute ax-inset-0;\n }\n .axm-analog-clock-hour-line,\n .axm-analog-clock-dot-line {\n @apply ax-absolute ax-bottom-1/2 ax-left-1/2 ax-h-1/2 ax-origin-bottom;\n }\n .axm-analog-clock-hour-line {\n @apply ax-w-[1.8cqw];\n }\n .axm-analog-clock-dot-line {\n @apply ax-w-[2.4cqw];\n }\n .axm-analog-clock-hour-line-inner {\n @apply ax-absolute ax-top-[6cqw] ax-left-1/2 -ax-translate-x-1/2 ax-w-full ax-h-[5.5cqw] ax-bg-gray-400;\n }\n .axm-analog-clock-dot-line-inner {\n @apply ax-absolute ax-top-[6cqw] ax-left-1/2 -ax-translate-x-1/2 ax-w-full ax-h-[2.4cqw] ax-bg-gray-300 ax-rounded-full;\n }\n .axm-analog-clock-hour-number {\n @apply ax-absolute -ax-translate-x-1/2 -ax-translate-y-1/2 ax-text-[12cqw] ax-font-medium ax-text-gray-700;\n }\n .axm-analog-clock-hand {\n @apply ax-absolute ax-bottom-1/2 ax-left-1/2 ax-origin-bottom ax-rounded-t-lg;\n }\n .axm-analog-clock-hand::after {\n content: '';\n @apply ax-absolute ax-left-0 ax-w-full;\n }\n .axm-analog-clock-hour-hand {\n @apply ax-z-20 ax-w-[2.7cqw] ax-h-1/4 ax-bg-black;\n }\n .axm-analog-clock-hour-hand::after {\n @apply ax-h-[20%] -ax-bottom-[20%] ax-bg-black;\n }\n .axm-analog-clock-minute-hand {\n @apply ax-z-30 ax-w-[2.1cqw] ax-h-[35%] ax-bg-gray-400;\n }\n .axm-analog-clock-minute-hand::after {\n @apply ax-h-[20%] -ax-bottom-[20%] ax-bg-gray-400;\n }\n .axm-analog-clock-second-hand {\n @apply ax-z-40 ax-w-[1.5cqw] ax-h-[42%] ax-bg-red-500;\n }\n .axm-analog-clock-second-hand::after {\n @apply ax-h-[20%] -ax-bottom-[20%] ax-bg-red-500;\n }\n .axm-analog-clock-center-point {\n @apply ax-absolute ax-top-1/2 ax-left-1/2 -ax-translate-x-1/2 -ax-translate-y-1/2 ax-w-[9cqw] ax-h-[9cqw] ax-bg-white ax-border-[1.8cqw] ax-border-black ax-rounded-full ax-z-50;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMAnalogClockComponent implements OnInit, OnDestroy {\n timezone = input<string>();\n showNumbers = input<boolean>(true);\n\n private readonly currentTime: WritableSignal<Date> = signal(new Date());\n private readonly timeParts = signal({ hours: 0, minutes: 0, seconds: 0 });\n\n constructor() {\n effect(() => {\n const now = this.currentTime();\n const tz = this.timezone();\n let hours, minutes, seconds;\n\n if (tz) {\n try {\n const formatter = new Intl.DateTimeFormat('en-US', {\n timeZone: tz,\n hour12: false,\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n });\n const parts = formatter.formatToParts(now);\n hours = parseInt(parts.find((p) => p.type === 'hour')?.value ?? '0', 10);\n minutes = parseInt(parts.find((p) => p.type === 'minute')?.value ?? '0', 10);\n seconds = parseInt(parts.find((p) => p.type === 'second')?.value ?? '0', 10);\n } catch (e) {\n console.error(`Invalid timezone provided: \"${tz}\". Falling back to local time.`);\n hours = now.getHours();\n minutes = now.getMinutes();\n seconds = now.getSeconds();\n }\n } else {\n hours = now.getHours();\n minutes = now.getMinutes();\n seconds = now.getSeconds();\n }\n this.timeParts.set({ hours, minutes, seconds });\n });\n }\n\n readonly hourHandTransform = computed(() => {\n const { hours, minutes } = this.timeParts();\n const hoursAngle = (hours % 12) * 30 + minutes * 0.5;\n return `translateX(-50%) rotate(${hoursAngle}deg)`;\n });\n\n readonly minuteHandTransform = computed(() => {\n const { minutes, seconds } = this.timeParts();\n const minutesAngle = minutes * 6 + seconds * 0.1;\n return `translateX(-50%) rotate(${minutesAngle}deg)`;\n });\n\n readonly secondHandTransform = computed(() => {\n const { seconds } = this.timeParts();\n const secondsAngle = seconds * 6;\n return `translateX(-50%) rotate(${secondsAngle}deg)`;\n });\n\n hourLines: AXMClockMark[] = [];\n hourNumbers: AXMClockMark[] = [];\n dots: AXMClockMark[] = [];\n\n private timerId?: number;\n\n ngOnInit(): void {\n this.createClockMarks();\n this.timerId = window.setInterval(() => {\n this.currentTime.set(new Date());\n }, 1000);\n }\n\n ngOnDestroy(): void {\n if (this.timerId) {\n clearInterval(this.timerId);\n }\n }\n\n private createClockMarks(): void {\n const majorHours = [12, 3, 6, 9];\n\n // Hour Lines\n this.hourLines = [];\n for (let i = 1; i <= 12; i++) {\n this.hourLines.push({\n transform: `translateX(-50%) rotate(${i * 30}deg)`,\n });\n }\n\n // Hour Numbers\n this.hourNumbers = [];\n for (const hour of majorHours) {\n const angleRad = (hour * 30 - 90) * (Math.PI / 180);\n this.hourNumbers.push({\n value: hour,\n top: `calc(50% + ${33 * Math.sin(angleRad)}%)`,\n left: `calc(50% + ${33 * Math.cos(angleRad)}%)`,\n });\n }\n\n // Dots\n this.dots = [];\n for (let i = 1; i <= 60; i++) {\n if (i % 5 !== 0) {\n this.dots.push({\n transform: `translateX(-50%) rotate(${i * 6}deg)`,\n });\n }\n }\n }\n}\n","import { AXPTimeZone } from '@acorex/platform/common';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport { AXMAnalogClockComponent } from './analog-clock.component';\n\n@Component({\n template: `\n <div class=\"ax-size-full ax-p-4\">\n <div class=\"ax-flex ax-items-center ax-justify-center ax-gap-4 ax-w-full ax-flex-wrap\">\n <div class=\"ax-flex-1 ax-max-w-[50%] ax-min-w-[110px] ax-aspect-square\">\n <axm-analog-clock [timezone]=\"timezone()?.iana\"></axm-analog-clock>\n </div>\n @if (timezone()?.abbr) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\n <span class=\"ax-text-xl\">{{ timezone()?.code }}</span>\n <span class=\"ax-text-3xl\">{{ timezone()?.abbr }}</span>\n </div>\n }\n </div>\n\n <div class=\"ax-w-full ax-flex ax-gap-2 ax-items-start ax-justify-center ax-flex-wrap ax-pt-8\">\n @for (clock of others(); track clock.code) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-1\">\n <div class=\"ax-w-full ax-aspect-square\" style=\"min-width: 75px; max-width: 150px;\">\n <axm-analog-clock [timezone]=\"clock.iana\" [showNumbers]=\"false\"></axm-analog-clock>\n </div>\n @if (clock.abbr) {\n <span class=\"ax-text-xl ax-text-center\">{{ clock.abbr }}</span>\n }\n </div>\n }\n </div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n width: 100%;\n height: 100%;\n }\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXMAnalogClockComponent],\n})\nexport class AXMClockWidgetViewComponent extends AXPLayoutWidgetComponent {\n timezone = computed(() => this.options()?.timezone as AXPTimeZone | undefined);\n others = computed(() => (this.options()?.others ?? []) as AXPTimeZone[]);\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/widgets';\n\nexport const AXPAnalogClockWidget: AXPWidgetConfig = {\n name: 'analog-clock',\n title: 'Analog Clock',\n description: '',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n icon: 'fa-solid fa-square',\n properties: [\n {\n name: 'timezone',\n title: '@dashboard:widgets.analog-clock.timezone',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'object',\n interface: {\n name: 'timezone',\n path: 'options.timezone',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: 'timezones',\n textField: 'title',\n valueField: 'code',\n },\n },\n },\n visible: true,\n order: 1,\n },\n {\n name: 'others',\n title: '@dashboard:widgets.analog-clock.other-timezones',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'object',\n interface: {\n name: 'others',\n path: 'options.others',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n dataSource: 'timezones',\n textField: 'title',\n valueField: 'code',\n },\n },\n },\n visible: true,\n order: 2,\n },\n ],\n components: {\n view: {\n component: () => import('./analog-clock-widget-view.component').then((c) => c.AXMClockWidgetViewComponent),\n },\n },\n};\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n analogClock: 'analog-clock';\n }\n}\n","import { AXBarChartComponent, AXBarChartData, AXBarChartOption } from '@acorex/charts/bar-chart';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, Signal } from '@angular/core';\n\n/**\n * Bar Chart Widget Component\n * Renders data as vertical bars with interactive hover effects and animations\n */\n@Component({\n templateUrl: './bar-chart-widget.component.html',\n styleUrls: ['./bar-chart-widget.component.scss'],\n imports: [AXBarChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPBarChartWidgetViewComponent extends AXPValueWidgetComponent {\n barChartData: Signal<AXBarChartData[]> = computed(() => this.getValue());\n barChartOptions: Signal<AXBarChartOption & { title: string }> = computed(() => this.options());\n\n constructor() {\n super();\n this.setOptions({\n ...this.options(),\n showXAxis: true,\n showYAxis: true,\n barWidth: 80,\n cornerRadius: 4,\n showGrid: true,\n showDataLabels: false,\n showTooltip: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n }\n\n handleBarClick(event: any) {\n //console.log(event);\n }\n}\n","<ax-bar-chart [data]=\"barChartData()\" [options]=\"barChartOptions()\" (barClick)=\"handleBarClick($event)\"></ax-bar-chart>\n","import { AXPWidgetCategory } from '@acorex/platform/layout/builder';\n\nexport const AXP_WIDGETS_CHART_CATEGORY: AXPWidgetCategory = {\n name: 'chart',\n order: 6,\n title: 'Charts',\n};\n\nexport const AXP_WIDGETS_UTILITY_CATEGORY: AXPWidgetCategory = {\n name: 'utility',\n order: 7,\n title: 'Utilities',\n};\n\n\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_STYLING_PROPERTY_GROUP,\n} from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\n\nexport const AXPBarChartWidget: AXPWidgetConfig = {\n name: 'bar-chart',\n title: 'Bar Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-bar',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.bar-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== X Axis Settings ======\n {\n name: 'xAxisLabel',\n title: '@dashboard:widgets.bar-chart.x-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'xAxisLabel',\n path: 'options.xAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n // ====== Y Axis Settings ======\n {\n name: 'yAxisLabel',\n title: '@dashboard:widgets.bar-chart.y-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'yAxisLabel',\n path: 'options.yAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.bar-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.bar-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== X Axis Settings ======\n {\n name: 'showXAxis',\n title: '@dashboard:widgets.bar-chart.show-x-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showXAxis',\n path: 'options.showXAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Y Axis Settings ======\n {\n name: 'showYAxis',\n title: '@dashboard:widgets.bar-chart.show-y-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showYAxis',\n path: 'options.showYAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Bar Appearance ======\n {\n name: 'barWidth',\n title: '@dashboard:widgets.bar-chart.bar-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 80,\n dataType: 'number',\n interface: {\n name: 'barWidth',\n path: 'options.barWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.bar-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Grid Settings ======\n {\n name: 'showGrid',\n title: '@dashboard:widgets.bar-chart.show-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showGrid',\n path: 'options.showGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showDataLabels',\n title: '@dashboard:widgets.bar-chart.show-data-labels',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDataLabels',\n path: 'options.showDataLabels',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Tooltip Settings ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.bar-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.bar-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.bar-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./bar-chart-widget.component').then((c) => c.AXPBarChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 5,\n height: 6,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 6,\n maxHeight: 7,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n barChart: 'bar-chart';\n }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTagModule } from '@acorex/components/tag';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n Signal,\n computed,\n inject,\n} from '@angular/core';\nimport { Subscription, interval } from 'rxjs';\nimport { AXPHourNumber } from './clock-calendar.types';\n\n@Component({\n templateUrl: './clock-calendar-widget.component.html',\n styleUrls: ['./clock-calendar-widget.component.scss'],\n standalone: true,\n imports: [CommonModule, AXDateTimeModule, AXFormatModule, AXTagModule, AXDecoratorModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPClockCalendarWidgetViewComponent extends AXPValueWidgetComponent implements OnInit, OnDestroy {\n // Dependencies\n private readonly cdr = inject(ChangeDetectorRef);\n\n // Time state\n protected currentTime = new Date();\n protected currentDate = new Date();\n private clockSubscription: Subscription | null = null;\n\n // Static clock elements\n protected readonly clockHours = Array.from({ length: 12 }, (_, i) => i + 1);\n protected readonly clockHourNumbers: AXPHourNumber[] = Array.from({ length: 12 }, (_, i) => ({\n number: i === 0 ? 12 : i,\n angle: i * 30,\n }));\n\n // Clock hands rotation angles\n protected hourRotation = 0;\n protected minuteRotation = 0;\n protected secondRotation = 0;\n\n // Options with computed properties and defaults\n protected readonly displayLayout: Signal<string> = computed(() => this.options()?.displayLayout?.id ?? 'both');\n\n protected readonly showDigitalClock: Signal<boolean> = computed(() => {\n const layout = this.displayLayout();\n return layout === 'both' || layout === 'digital';\n });\n\n protected readonly showAnalogClock: Signal<boolean> = computed(() => {\n const layout = this.displayLayout();\n return layout === 'both' || layout === 'analog';\n });\n\n protected readonly showDate: Signal<boolean> = computed(() => this.options()?.showDate !== false);\n\n protected readonly showDayOfWeek: Signal<boolean> = computed(() => this.options()?.showDayOfWeek !== false);\n\n protected readonly use24Hour: Signal<boolean> = computed(() => this.options()?.use24Hour === true);\n\n protected readonly showSeconds: Signal<boolean> = computed(() => this.options()?.showSeconds !== false);\n\n protected readonly dateFormat: Signal<string> = computed(() => this.options()?.dateFormat?.id ?? 'DD MMM YYYY');\n\n protected readonly timezone: Signal<string> = computed(() => this.options()?.timezone?.id ?? 'local');\n\n // protected readonly showTimezoneIndicator: Signal<boolean> = computed(() => this.timezone() !== 'local');\n\n protected readonly displayTimezone: Signal<string> = computed(() => {\n const tz = this.timezone();\n if (tz === 'local') return '';\n\n if (tz.startsWith('UTC')) {\n const [match, sign, hours, minutes] = tz.match(/UTC([+-])(\\d+):?(\\d+)?/) ?? [];\n if (match) {\n if (!minutes || minutes === '00') {\n return `UTC${sign}${parseInt(hours)}`;\n }\n return `UTC${sign}${parseInt(hours)}:${minutes}`;\n }\n }\n return tz;\n });\n\n protected readonly timeFormat: Signal<string> = computed(() =>\n this.showSeconds() ? (this.use24Hour() ? 'HH:mm:ss' : 'hh:mm:ss a') : this.use24Hour() ? 'HH:mm' : 'hh:mm a',\n );\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.startClockTimer();\n this.updateTime();\n }\n\n ngOnDestroy(): void {\n this.stopClockTimer();\n }\n\n private startClockTimer(): void {\n this.stopClockTimer();\n this.clockSubscription = interval(1000).subscribe(() => this.updateTime());\n }\n\n private stopClockTimer(): void {\n this.clockSubscription?.unsubscribe();\n this.clockSubscription = null;\n }\n\n private updateTime(): void {\n const now = this.getAdjustedTime();\n this.currentTime = now;\n this.currentDate = now;\n\n this.updateClockHandsRotation(now);\n this.cdr.markForCheck();\n }\n\n private getAdjustedTime(): Date {\n const now = new Date();\n const tz = this.timezone();\n\n if (tz === 'local' || !tz.startsWith('UTC')) {\n return now;\n }\n\n const [match, sign, hours, minutes] = tz.match(/UTC([+-])(\\d+):?(\\d+)?/) ?? [];\n if (!match) {\n return now;\n }\n\n const offsetHours = parseInt(hours) * (sign === '+' ? 1 : -1);\n const offsetMinutes = minutes ? parseInt(minutes) * (sign === '+' ? 1 : -1) : 0;\n\n const utcTime = now.getTime() + now.getTimezoneOffset() * 60000;\n return new Date(utcTime + (offsetHours * 3600000 + offsetMinutes * 60000));\n }\n\n private updateClockHandsRotation(now: Date): void {\n const hours = now.getHours() % 12;\n const minutes = now.getMinutes();\n const seconds = now.getSeconds();\n\n // For analog clocks:\n // - 12 o'clock is 0°\n // - 3 o'clock is 90°\n // - 6 o'clock is 180°\n // - 9 o'clock is 270°\n\n // Hour hand: 30° per hour (360°/12) plus gradual movement from minutes\n this.hourRotation = hours * 30 + minutes / 2 + 180;\n\n // Minute hand: 6° per minute (360°/60)\n this.minuteRotation = minutes * 6 + 180;\n\n // Second hand: 6° per second (360°/60)\n this.secondRotation = seconds * 6 + 180;\n }\n\n protected initializeWidget(): void {\n this.updateTime();\n }\n\n protected updateWidget(): void {\n this.stopClockTimer();\n this.startClockTimer();\n this.updateTime();\n }\n\n protected destroyWidget(): void {\n this.stopClockTimer();\n }\n\n protected getDayOfWeek(): string {\n const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return days[this.currentDate.getDay()];\n }\n}\n","<div class=\"axp-clock-calendar-container\">\n <!-- Timezone indicator (only shown when not local) -->\n <!-- @if (showTimezoneIndicator()) {\n <div class=\"axp-clock-calendar-timezone-badge\"><i class=\"fa-solid fa-globe\"></i> {{ displayTimezone() }}</div>\n } -->\n\n <!-- Day of week display -->\n @if (showDayOfWeek()) {\n <div class=\"axp-clock-calendar-day-label\">{{ getDayOfWeek() }}</div>\n }\n\n <div class=\"axp-clock-calendar-content\">\n <!-- Digital Clock Display -->\n @if (showDigitalClock()) {\n <div class=\"axp-clock-calendar-digital-clock\">\n {{ currentTime | format: 'datetime' : timeFormat() | async }}\n </div>\n }\n\n <!-- Analog Clock Display -->\n @if (showAnalogClock()) {\n <div class=\"axp-clock-calendar-analog-clock\">\n <!-- Hour markers -->\n @for (hour of clockHours; track hour) {\n <div\n class=\"axp-clock-calendar-hour-marker\"\n [style.transform]=\"'rotate(' + hour * 30 + 'deg) translateY(-80px)'\"\n ></div>\n }\n\n <!-- Clock Numbers -->\n <div class=\"axp-clock-calendar-numbers-container\">\n @for (hour of clockHourNumbers; track hour) {\n <div\n class=\"axp-clock-calendar-hour-number\"\n [style.transform]=\"'rotate(' + hour.angle + 'deg) translateY(-82px)'\"\n >\n <span [style.transform]=\"'rotate(' + -hour.angle + 'deg)'\">{{ hour.number }}</span>\n </div>\n }\n </div>\n\n <!-- Clock Hands -->\n <div class=\"axp-clock-calendar-hands-container\">\n <div class=\"axp-clock-calendar-hour-hand\" [style.transform]=\"'rotate(' + hourRotation + 'deg)'\"></div>\n <div class=\"axp-clock-calendar-minute-hand\" [style.transform]=\"'rotate(' + minuteRotation + 'deg)'\"></div>\n @if (showSeconds()) {\n <div class=\"axp-clock-calendar-second-hand\" [style.transform]=\"'rotate(' + secondRotation + 'deg)'\"></div>\n }\n <div class=\"axp-clock-calendar-center-dot\"></div>\n </div>\n </div>\n }\n\n <!-- Date Display -->\n @if (showDate()) {\n <div class=\"axp-clock-calendar-date-display\">\n <i class=\"fa-regular fa-calendar\"></i>\n {{ currentDate | format: 'datetime' : dateFormat() | async }}\n </div>\n }\n </div>\n</div>\n","/**\n * ACoreX Clock Calendar Widget Types\n * Contains all types and interfaces for the Clock Calendar widget\n */\n\n/**\n * Clock layout display options\n */\nexport type AXPClockLayout = 'both' | 'digital' | 'analog';\n\n/**\n * Clock timezone options\n */\nexport interface AXPTimezoneOption {\n id: string;\n title: string;\n}\n\n/**\n * Date format options\n */\nexport interface AXPDateFormatOption {\n id: string;\n title: string;\n}\n\n/**\n * Hour number definition for the analog clock\n */\nexport interface AXPHourNumber {\n number: number;\n angle: number;\n}\n\n/**\n * Widget options for configuring the clock-calendar\n */\nexport interface AXPClockCalendarOptions {\n // Display options\n displayLayout?: AXPClockLayout;\n showDate?: boolean;\n showDayOfWeek?: boolean;\n\n // Clock settings\n use24Hour?: boolean;\n showSeconds?: boolean;\n showHourMarkers?: boolean;\n\n // Date format\n dateFormat?: string;\n\n // Timezone\n timezone?: string;\n}\n\n/**\n * Common timezone options for the widget configuration\n */\nexport const AXP_TIMEZONE_OPTIONS: AXPTimezoneOption[] = [\n { id: 'local', title: 'Local Time' },\n { id: 'UTC+0', title: 'UTC (GMT)' },\n { id: 'UTC+1', title: 'Central European Time (UTC+1)' },\n { id: 'UTC+2', title: 'Eastern European Time (UTC+2)' },\n { id: 'UTC+3', title: 'Moscow Time (UTC+3)' },\n { id: 'UTC+4', title: 'Gulf Time (UTC+4)' },\n { id: 'UTC+5:30', title: 'Indian Time (UTC+5:30)' },\n { id: 'UTC+8', title: 'China Time (UTC+8)' },\n { id: 'UTC+9', title: 'Japan Time (UTC+9)' },\n { id: 'UTC+10', title: 'Australian Eastern Time (UTC+10)' },\n { id: 'UTC-5', title: 'Eastern Time (UTC-5)' },\n { id: 'UTC-6', title: 'Central Time (UTC-6)' },\n { id: 'UTC-7', title: 'Mountain Time (UTC-7)' },\n { id: 'UTC-8', title: 'Pacific Time (UTC-8)' },\n];\n\n/**\n * Common date format options for the widget configuration\n */\nexport const AXP_DATE_FORMAT_OPTIONS: AXPDateFormatOption[] = [\n { id: 'DD MMM YYYY', title: '31 Dec 2023' },\n { id: 'MMM DD, YYYY', title: 'Dec 31, 2023' },\n { id: 'DD/MM/YYYY', title: '31/12/2023' },\n { id: 'MM/DD/YYYY', title: '12/31/2023' },\n];\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nimport { AXP_DATE_FORMAT_OPTIONS, AXP_TIMEZONE_OPTIONS } from './clock-calendar.types';\n\nexport const AXPClockCalendarWidget: AXPWidgetConfig = {\n name: 'clock-calendar',\n title: 'Clock & Calendar',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-clock',\n properties: [\n // ====== Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.clock-calendar.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Display Settings ======\n {\n name: 'displayLayout',\n title: '@dashboard:widgets.clock-calendar.display-layout',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n dataType: 'string',\n defaultValue: 'both',\n interface: {\n name: 'displayLayout',\n path: 'options.displayLayout',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { id: 'both', title: 'Digital & Analog' },\n { id: 'digital', title: 'Digital Only' },\n { id: 'analog', title: 'Analog Only' },\n ],\n },\n },\n },\n visible: true,\n },\n {\n name: 'showDate',\n title: '@dashboard:widgets.clock-calendar.show-date',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDate',\n path: 'options.showDate',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showDayOfWeek',\n title: '@dashboard:widgets.clock-calendar.show-day-of-week',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDayOfWeek',\n path: 'options.showDayOfWeek',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n\n // ====== Time Format Settings ======\n {\n name: 'use24Hour',\n title: '@dashboard:widgets.clock-calendar.use-24-hour',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: false,\n dataType: 'boolean',\n interface: {\n name: 'use24Hour',\n path: 'options.use24Hour',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showSeconds',\n title: '@dashboard:widgets.clock-calendar.show-seconds',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showSeconds',\n path: 'options.showSeconds',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // {\n // name: 'showHourMarkers',\n // title: 'Show Hour Markers',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showHourMarkers',\n // path: 'options.showHourMarkers',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n {\n name: 'dateFormat',\n title: '@dashboard:widgets.clock-calendar.date-format',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 'DD MMM YYYY',\n dataType: 'string',\n interface: {\n name: 'dateFormat',\n path: 'options.dateFormat',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: AXP_DATE_FORMAT_OPTIONS,\n },\n },\n },\n visible: true,\n },\n {\n name: 'timezone',\n title: '@dashboard:widgets.clock-calendar.timezone',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 'local',\n dataType: 'string',\n interface: {\n name: 'timezone',\n path: 'options.timezone',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: AXP_TIMEZONE_OPTIONS,\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./clock-calendar-widget.component').then((m) => m.AXPClockCalendarWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 2,\n height: 5,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 3,\n maxHeight: 6,\n },\n },\n};\n\n// Add to the AXPWidgetTypesMap\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n clockCalendar: 'clock-calendar';\n }\n}\n","import { AXDonutChartComponent, AXDonutChartData, AXDonutChartOption } from '@acorex/charts/donut-chart';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, Signal } from '@angular/core';\n\n/**\n * Donut Chart Widget Component\n * Displays data in a circular donut chart with interactive segments\n */\n@Component({\n templateUrl: './donut-chart-widget.component.html',\n styleUrls: ['./donut-chart-widget.component.scss'],\n imports: [AXDonutChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPDonutChartWidgetViewComponent extends AXPValueWidgetComponent {\n donutChartData: Signal<AXDonutChartData[]> = computed(() => this.getValue());\n donutChartOptions: Signal<AXDonutChartOption & { title: string }> = computed(() => this.options());\n\n constructor() {\n super();\n this.setOptions({\n ...this.options(),\n width: 300,\n height: 300,\n showDataLabels: false,\n donutWidth: 35,\n cornerRadius: 4,\n showTooltip: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n }\n\n handleDonutChartSegmentClick(event: any) {\n //console.log(event);\n }\n}\n","<ax-donut-chart\n [data]=\"donutChartData()\"\n [options]=\"donutChartOptions()\"\n (segmentClick)=\"handleDonutChartSegmentClick($event)\"\n></ax-donut-chart>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_STYLING_PROPERTY_GROUP,\n} from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\n\nexport const AXPDonutChartWidget: AXPWidgetConfig = {\n name: 'donut-chart',\n title: 'Donut Chart Widget',\n categories: AXP_WIDGETS_CHART_CATEGORY,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-donut',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.donut-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Size & Layout ======\n {\n name: 'width',\n title: '@dashboard:widgets.donut-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 200,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.donut-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 200,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== Donut Appearance ======\n {\n name: 'showDataLabels',\n title: '@dashboard:widgets.donut-chart.show-data-labels',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDataLabels',\n path: 'options.showDataLabels',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'donutWidth',\n title: '@dashboard:widgets.donut-chart.donut-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 35,\n dataType: 'number',\n interface: {\n name: 'donutWidth',\n path: 'options.donutWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '10-80',\n minValue: 10,\n maxValue: 80,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.donut-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Legend ======\n // {\n // name: 'showLegend',\n // title: 'Show Legend',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showLegend',\n // path: 'options.showLegend',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'legendPosition',\n // title: 'Legend Position',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: 'right',\n // dataType: 'string',\n // interface: {\n // name: 'legendPosition',\n // path: 'options.legendPosition',\n // type: AXPWidgetsCatalog.select,\n // options: {\n // dataSource: ['right', 'bottom'],\n // },\n // },\n // },\n // visible: true,\n // },\n // ====== Tooltip ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.donut-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.donut-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.donut-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./donut-chart-widget.component').then((c) => c.AXPDonutChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 4,\n height: 4,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 5,\n maxHeight: 6,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n donutChart: 'donut-chart';\n }\n}\n","import { AXGaugeChartComponent, AXGaugeChartOption } from '@acorex/charts/gauge-chart';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, Signal } from '@angular/core';\n/**\n * Gauge Chart Widget Component\n * Renders a semi-circular gauge chart with animated needle and thresholds\n */\n@Component({\n templateUrl: './gauge-chart-widget.component.html',\n styleUrls: ['./gauge-chart-widget.component.scss'],\n imports: [AXGaugeChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPGaugeChartWidgetViewComponent extends AXPValueWidgetComponent {\n gaugeChartValue: Signal<number> = computed(() => this.getValue());\n gaugeChartOptions: Signal<AXGaugeChartOption & { title: string }> = computed(() => this.options());\n\n constructor() {\n super();\n this.setOptions({\n ...this.options(),\n width: null,\n height: 300,\n minValue: 0,\n maxValue: 100,\n showTooltip: true,\n gaugeWidth: 30,\n cornerRadius: 4,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n }\n}\n","<ax-gauge-chart [value]=\"gaugeChartValue()\" [options]=\"gaugeChartOptions()\"></ax-gauge-chart>\n","import { AXPWidgetConfig, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_STYLING_PROPERTY_GROUP,\n} from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\n\nexport const AXPGaugeChartWidget: AXPWidgetConfig = {\n name: 'gauge-chart',\n title: 'Gauge Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n type: 'dashboard',\n icon: 'fa-light fa-gauge',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.gauge-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Label Display ======\n {\n name: 'label',\n title: '@dashboard:widgets.gauge-chart.label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'label',\n path: 'options.label',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.gauge-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-1200',\n minValue: 1,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.gauge-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-800',\n minValue: 1,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== Gauge Configuration ======\n {\n name: 'minValue',\n title: '@dashboard:widgets.gauge-chart.min-value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 0,\n dataType: 'number',\n interface: {\n name: 'minValue',\n path: 'options.minValue',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n {\n name: 'maxValue',\n title: '@dashboard:widgets.gauge-chart.max-value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 100,\n dataType: 'number',\n interface: {\n name: 'maxValue',\n path: 'options.maxValue',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n // ====== Gauge Appearance ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.gauge-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'gaugeWidth',\n title: '@dashboard:widgets.gauge-chart.gauge-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 30,\n dataType: 'number',\n interface: {\n name: 'gaugeWidth',\n path: 'options.gaugeWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.gauge-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.gauge-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.gauge-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./gauge-chart-widget.component').then((c) => c.AXPGaugeChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 4,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 4,\n maxHeight: 5,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n gaugeChart: 'gauge-chart';\n }\n}\n","import {\n AXLineChartComponent,\n AXLineChartData,\n AXLineChartOption,\n AXLineChartPointClickEvent,\n} from '@acorex/charts/line-chart';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { afterNextRender, ChangeDetectionStrategy, Component, computed, Signal } from '@angular/core';\n/**\n * Line Chart Widget Component\n * Renders data as lines with interactive hover effects and animations\n */\n@Component({\n templateUrl: './line-chart-widget.component.html',\n styleUrls: ['./line-chart-widget.component.scss'],\n standalone: true,\n imports: [AXLineChartComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPLineChartWidgetViewComponent extends AXPValueWidgetComponent {\n lineChartData: Signal<AXLineChartData[]> = computed(() => this.getValue());\n lineChartOptions: Signal<AXLineChartOption & { title: string }> = computed(() => this.options());\n\n constructor() {\n super();\n this.setOptions({\n ...this.options(),\n showXAxis: true,\n showYAxis: true,\n yAxisStartsAtZero: true,\n showGrid: true,\n showVerticalGrid: true,\n lineWidth: 2,\n smoothLine: true,\n showPoints: true,\n pointRadius: 4,\n fillOpacity: 80,\n showTooltip: true,\n showCrosshair: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n }\n\n handleLineChartPointClick(event: AXLineChartPointClickEvent) {\n //console.log(event);\n }\n}\n","<ax-line-chart\n (pointClick)=\"handleLineChartPointClick($event)\"\n [data]=\"lineChartData()\"\n [options]=\"lineChartOptions()\"\n></ax-line-chart>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_DATA_PATH_PROPERTY,\n AXP_NAME_PROPERTY,\n AXP_STYLING_PROPERTY_GROUP,\n} from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\n\nexport const AXPLineChartWidget: AXPWidgetConfig = {\n name: 'line-chart',\n title: 'Line Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-line',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.line-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Axis Settings ======\n {\n name: 'xAxisLabel',\n title: '@dashboard:widgets.line-chart.x-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'xAxisLabel',\n path: 'options.xAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'yAxisLabel',\n title: '@dashboard:widgets.line-chart.y-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'yAxisLabel',\n path: 'options.yAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'fillArea',\n title: '@dashboard:widgets.line-chart.fill-area',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: false,\n dataType: 'boolean',\n interface: {\n name: 'fillArea',\n path: 'options.fillArea',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.line-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.line-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n\n // ====== Axis Settings ======\n {\n name: 'showXAxis',\n title: '@dashboard:widgets.line-chart.show-x-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showXAxis',\n path: 'options.showXAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showYAxis',\n title: '@dashboard:widgets.line-chart.show-y-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showYAxis',\n path: 'options.showYAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'yAxisStartsAtZero',\n title: '@dashboard:widgets.line-chart.y-axis-starts-at-zero',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'yAxisStartsAtZero',\n path: 'options.yAxisStartsAtZero',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n\n {\n name: 'showGrid',\n title: '@dashboard:widgets.line-chart.show-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showGrid',\n path: 'options.showGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showVerticalGrid',\n title: '@dashboard:widgets.line-chart.show-vertical-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showVerticalGrid',\n path: 'options.showVerticalGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n\n // ====== Line Appearance ======\n {\n name: 'lineWidth',\n title: '@dashboard:widgets.line-chart.line-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 2,\n dataType: 'number',\n interface: {\n name: 'lineWidth',\n path: 'options.lineWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-10',\n minValue: 1,\n maxValue: 10,\n },\n },\n },\n visible: true,\n },\n {\n name: 'smoothLine',\n title: '@dashboard:widgets.line-chart.smooth-line',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'smoothLine',\n path: 'options.smoothLine',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showPoints',\n title: '@dashboard:widgets.line-chart.show-points',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showPoints',\n path: 'options.showPoints',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'pointRadius',\n title: '@dashboard:widgets.line-chart.point-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'pointRadius',\n path: 'options.pointRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-10',\n minValue: 1,\n maxValue: 10,\n },\n },\n },\n visible: true,\n },\n {\n name: 'fillOpacity',\n title: '@dashboard:widgets.line-chart.fill-opacity',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 80,\n dataType: 'number',\n interface: {\n name: 'fillOpacity',\n path: 'options.fillOpacity',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n\n // ====== Tooltip Settings ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.line-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showCrosshair',\n title: '@dashboard:widgets.line-chart.show-crosshair',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showCrosshair',\n path: 'options.showCrosshair',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.line-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.line-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./line-chart-widget.component').then((c) => c.AXPLineChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 4,\n\n minWidth: 2,\n minHeight: 2,\n\n maxWidth: 6,\n maxHeight: 6,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n lineChart: 'line-chart';\n }\n}\n","import { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXValueChangedEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXGridLayoutWidgetComponent } from '@acorex/components/grid-layout-builder';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXWysiwygContainerComponent, AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n OnInit,\n computed,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\n@Component({\n templateUrl: './sticky-note-widget.component.html',\n styleUrls: ['./sticky-note-widget.component.scss'],\n standalone: true,\n imports: [\n AXWysiwygModule,\n AXDecoratorModule,\n AXToolBarModule,\n FormsModule,\n AXDateTimeModule,\n AXFormatModule,\n AXPopoverModule,\n CommonModule,\n FormsModule,\n AXColorBoxModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: AXGridLayoutWidgetComponent,\n useExisting: AXPStickyNoteWidgetViewComponent,\n },\n ],\n})\nexport class AXPStickyNoteWidgetViewComponent extends AXPValueWidgetComponent<string> implements OnInit {\n protected isEditing = signal(false);\n private wysiwyg = viewChild<AXWysiwygContainerComponent>('wysiwyg');\n protected value = computed(() => this.getValue());\n protected date = computed(() => this.options()?.date ?? new Date());\n protected bgColor = computed(() => this.options()?.backgroundColor ?? '#FFF8B8');\n protected color = signal('#333333');\n\n private el = inject(ElementRef);\n\n // Modern color palette with pastel and vibrant options\n protected colorPresets: string[] = [\n '#FFF8B8', // Soft yellow\n '#FFD8E6', // Soft pink\n '#D1F0FF', // Soft blue\n '#E2FFD1', // Soft green\n '#FFE8D1', // Soft orange\n '#F0D1FF', // Soft purple\n '#FFCDD2', // Soft red\n '#D1FFF0', // Soft teal\n '#F5F5F5', // Light gray\n '#FFFFFF', // White\n ];\n\n // Handle clicks outside the component to cancel editing\n @HostListener('document:click', ['$event'])\n handleClickOutside(event: MouseEvent) {\n const clickedInside = (this.el.nativeElement as HTMLElement).contains(event.target as Node);\n if (!clickedInside && this.isEditing()) {\n this.saveChanges();\n }\n }\n\n // Handle double-click to activate editing\n protected activateEdit() {\n //TODO FOCUS WYSIWYG\n this.wysiwyg()?.focus();\n this.isEditing.set(true);\n }\n\n // Save changes and exit edit mode\n protected saveChanges() {\n this.isEditing.set(false);\n }\n\n protected setColor(color: string) {\n this.setOptions({ backgroundColor: color });\n }\n\n protected valueChange(event: AXValueChangedEvent<any>) {\n if (event.isUserInteraction) {\n this.setValue(event.value);\n }\n }\n}\n","<div\n class=\"sticky-note-container ax-size-full ax-rounded-lg ax-flex ax-flex-col ax-p-4 ax-shadow-md ax-transition-all ax-duration-300 hover:ax-shadow-lg\"\n [style.background-color]=\"bgColor()\"\n [style.color]=\"color()\"\n [class.ax-shadow-lg]=\"isEditing()\"\n [class.ax-scale-[1.02]]=\"isEditing()\"\n (dblclick)=\"activateEdit()\"\n>\n <!-- Header with timestamp -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3\">\n <div class=\"ax-text-xs ax-opacity-70 ax-font-medium ax-flex ax-items-center ax-gap-1\">\n <i class=\"fa-regular fa-clock ax-text-[0.65rem]\"></i>\n {{ date() | format : 'datetime' : 'dd MMM, YY HH:mm' | async }}\n </div>\n </div>\n\n <!-- Content area -->\n <div class=\"ax-flex-1 ax-overflow-auto\">\n <ax-wysiwyg-container\n #wysiwyg\n [class]=\"isEditing() ? 'ax-pointer-events-auto ax-cursor-text' : 'ax-pointer-events-none !ax-cursor-pointer'\"\n class=\"ax-h-full\"\n placeHolder=\"start writing with double click...\"\n look=\"none\"\n (onValueChanged)=\"valueChange($event)\"\n [ngModel]=\"value()\"\n >\n <ax-wysiwyg-view class=\"!ax-size-full ax-border-b-0\"></ax-wysiwyg-view>\n </ax-wysiwyg-container>\n </div>\n\n <!-- Footer with color selector and save button -->\n @if (isEditing()) {\n <div class=\"ax-absolute ax-bottom-2 ax-left-2 ax-right-2 ax-flex ax-flex-wrap ax-gap-1 ax-text-xs\">\n <!-- Color selection bar when in edit mode -->\n <div class=\"ax-flex ax-w-full ax-mt-2 ax-border ax-border-gray-200 ax-overflow-hidden ax-rounded-md\">\n @for (preset of colorPresets; track preset) {\n <div\n class=\"ax-h-6 ax-flex-1 ax-cursor-pointer ax-transition-all ax-duration-200 ax-border-r ax-border-gray-200 last:ax-border-r-0 hover:ax-brightness-95\"\n [style.background-color]=\"preset\"\n [class.ax-ring-inset]=\"bgColor() === preset\"\n [class.ax-ring-2]=\"bgColor() === preset\"\n [class.ax-ring-primary]=\"bgColor() === preset\"\n (click)=\"setColor(preset)\"\n ></div>\n }\n </div>\n </div>\n }\n</div>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY, plainTextDefaultProperty } from '@acorex/platform/widgets';\nimport { AXP_BG_COLOR_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\n\nexport const AXPStickyNoteWidget: AXPWidgetConfig = {\n name: 'sticky-note',\n title: 'Sticky Note Widget',\n categories: AXP_WIDGETS_UTILITY_CATEGORY,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-sticky-note',\n properties: [\n AXP_DATA_PATH_PROPERTY,\n {\n ...AXP_BG_COLOR_PROPERTY,\n title: '@dashboard:widgets.sticky-note.background-color',\n },\n {\n ...plainTextDefaultProperty(),\n title: '@dashboard:widgets.sticky-note.note-text',\n },\n ],\n components: {\n view: {\n component: () => import('./sticky-note-widget.component').then((c) => c.AXPStickyNoteWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 2,\n height: 3,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 4,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n stickyNote: 'sticky-note';\n }\n}\n","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, output } from '@angular/core';\nimport { AXPTaskData, AXPTaskListValue } from './tasklist.type';\n\n/**\n * Task List Widget Component\n * Displays a list of tasks with checkboxes and filtering options\n */\n@Component({\n templateUrl: './tasklist-widget.component.html',\n styleUrls: ['./tasklist-widget.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n AXTabsModule,\n AXDecoratorModule,\n AXButtonModule,\n AXBadgeModule,\n AXAvatarModule,\n AXImageModule,\n AXCheckBoxModule,\n AXLabelModule,\n AXTranslationModule,\n ],\n providers: [DatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPTaskListWidgetViewComponent extends AXPValueWidgetComponent<AXPTaskListValue> {\n // Outputs\n taskClick = output<AXPTaskData>();\n taskCompleted = output<AXPTaskData>();\n\n // Dependencies\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly datePipe = inject(DatePipe);\n\n // Configuration options\n protected readonly maxItems = computed(() => this.options()?.maxItems ?? 10);\n protected readonly showDate = computed(() => this.options()?.showDate ?? true);\n protected readonly showAssignee = computed(() => this.options()?.showAssignee ?? true);\n protected readonly showPriority = computed(() => this.options()?.showPriority ?? true);\n protected readonly allowMarkComplete = computed(() => this.options()?.allowMarkComplete ?? true);\n protected readonly showCategories = computed(() => this.options()?.groupByCategory ?? true);\n\n // Data computed properties\n protected readonly taskItems = computed(() => {\n const value = this.getValue();\n if (!value?.data?.length) return [];\n return value.data.slice(0, this.maxItems());\n });\n\n // Task counting methods\n protected getPendingTaskCount(): number {\n return this.getFilteredTasks((task) => !task.completed).length;\n }\n\n protected getCompletedTaskCount(): number {\n return this.getFilteredTasks((task) => task.completed).length;\n }\n\n // Category-related methods\n protected hasCategories(): boolean {\n return this.taskItems().some((task) => !!task.category);\n }\n\n protected getCategories(): string[] {\n const tasks = this.taskItems();\n const categories = new Set<string>();\n let hasUncategorized = false;\n\n tasks.forEach((task) => {\n if (task.category) {\n categories.add(task.category);\n } else {\n hasUncategorized = true;\n }\n });\n\n const result = Array.from(categories);\n if (hasUncategorized) {\n result.push('Uncategorized');\n }\n\n return result;\n }\n\n protected getTasksByCategory(category: string): AXPTaskData[] {\n const tasks = this.taskItems();\n\n if (category === 'Uncategorized') {\n return tasks.filter((task) => !task.category);\n }\n\n return tasks.filter((task) => task.category === category);\n }\n\n protected getCategoryTaskCount(category: string): number {\n return this.getTasksByCategory(category).filter((task) => !task.completed).length;\n }\n\n // Event handlers\n protected onTaskClick(task: AXPTaskData): void {\n this.taskClick.emit(task);\n }\n\n protected onTaskCompletionChange(task: AXPTaskData, isCompleted: boolean): void {\n const updatedTask = { ...task, completed: isCompleted };\n const value = this.getValue();\n\n if (!value?.data) return;\n\n const updatedTasks = value.data.map((t) => (t.id === task.id ? updatedTask : t));\n this.setValue({ ...value, data: updatedTasks });\n\n this.taskCompleted.emit(updatedTask);\n this.cdr.detectChanges();\n }\n\n // Formatting and utility methods\n protected formatDueDate(date: Date | string | undefined): string {\n if (!date) return '';\n\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n const diffDays = this.getDaysDifference(dateObj);\n\n if (diffDays < 0) return 'Overdue!';\n if (diffDays === 0) return 'Today';\n if (diffDays === 1) return 'Tomorrow';\n if (diffDays < 7) return this.datePipe.transform(dateObj, 'EEE') || '';\n return this.datePipe.transform(dateObj, 'MM/DD/YYYY') || '';\n }\n\n protected getPriorityColor(priority: string | undefined): string {\n if (!priority) return '';\n\n const priorityColors: Record<string, string> = {\n high: 'danger',\n medium: 'warning',\n low: 'success',\n };\n\n return priorityColors[priority] || '';\n }\n\n // Helper methods\n private getFilteredTasks(filterFn: (task: AXPTaskData) => boolean): AXPTaskData[] {\n const value = this.getValue();\n if (!value?.data?.length) return [];\n return value.data.filter(filterFn);\n }\n\n protected getDaysDifference(date: Date): number {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n\n const targetDate = new Date(date);\n targetDate.setHours(0, 0, 0, 0);\n\n const diffMs = targetDate.getTime() - now.getTime();\n return Math.floor(diffMs / (1000 * 60 * 60 * 24));\n }\n}\n","<div class=\"ax-size-full ax-p-4 ax-flex ax-flex-col\">\n <!-- Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <h3 class=\"ax-text-lg ax-font-semibold ax-flex ax-items-center ax-gap-2\">\n <ax-icon class=\"ax-text-primary-500\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n {{ 'tasklist.title' | translate: { scope: 'dashboard' } | async }}\n </h3>\n <div class=\"ax-flex ax-gap-2\">\n @if (getPendingTaskCount() > 0) {\n <ax-badge\n [text]=\"getPendingTaskCount() + ' ' + ('tasklist.pending' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'warning'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n @if (getCompletedTaskCount() > 0) {\n <ax-badge\n [text]=\"getCompletedTaskCount() + ' ' + ('tasklist.completed' | translate: { scope: 'dashboard' } | async)\"\n [color]=\"'success'\"\n size=\"sm\"\n class=\"ax-ml-1\"\n >\n </ax-badge>\n }\n </div>\n </div>\n\n <!-- Task List -->\n <div class=\"ax-space-y-4 ax-my-4 ax-px-1 ax-overflow-auto ax-grow\">\n @if (showCategories() && hasCategories()) {\n <!-- Categorized Tasks -->\n @for (category of getCategories(); track category) {\n <div class=\"ax-mb-5\">\n <!-- Category Header -->\n <div class=\"ax-flex ax-justify-between ax-items-center ax-mb-3 ax-h-5\">\n <h4 class=\"ax-font-medium category-header\">{{ category }}</h4>\n @if (getCategoryTaskCount(category)) {\n <ax-badge\n [text]=\"getCategoryTaskCount(category).toString()\"\n [color]=\"'primary'\"\n size=\"sm\"\n class=\"ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n <!-- Tasks in Category -->\n <div class=\"ax-space-y-2\">\n @for (task of getTasksByCategory(category); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n }\n </div>\n </div>\n }\n } @else {\n <!-- Uncategorized Tasks -->\n <div class=\"ax-space-y-2\">\n @for (task of taskItems(); track task.id) {\n <ng-container\n [ngTemplateOutlet]=\"taskItemTemplateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: task }\"\n ></ng-container>\n } @empty {\n <!-- Empty State -->\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-14 ax-px-4 ax-text-gray-400 empty-state\"\n >\n <ax-icon class=\"ax-text-5xl ax-mb-3 ax-text-gray-300\">\n <i class=\"fa-light fa-clipboard-list-check\"></i>\n </ax-icon>\n <p class=\"ax-text-center ax-font-medium\">\n {{ 'tasklist.noTasks' | translate: { scope: 'dashboard' } | async }}\n </p>\n <p class=\"ax-text-center ax-text-sm ax-mt-2\">\n {{ 'tasklist.addTask' | translate: { scope: 'dashboard' } | async }}\n </p>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n<!-- Task Item Template -->\n<ng-template #taskItemTemplateRef let-task>\n <div\n class=\"ax-flex ax-gap-3 ax-items-start ax-p-3 task-item\"\n [class.priority-high]=\"task.priority === 'high'\"\n [class.priority-medium]=\"task.priority === 'medium'\"\n [class.priority-low]=\"task.priority === 'low'\"\n >\n <!-- Checkbox -->\n <ax-check-box\n class=\"ax-flex-shrink-0 ax-mt-1 task-checkbox\"\n [value]=\"task.completed\"\n [disabled]=\"!allowMarkComplete()\"\n (valueChange)=\"onTaskCompletionChange(task, $event)\"\n >\n </ax-check-box>\n\n <!-- Task Details -->\n <div class=\"ax-overflow-hidden ax-grow ax-text-start\" (click)=\"onTaskClick(task)\">\n <!-- Title and Priority -->\n <div class=\"ax-flex ax-items-center ax-gap-2\">\n <h6 class=\"ax-font-medium ax-truncate ax-pb-1\" [title]=\"task.title\" [class.task-completed]=\"task.completed\">\n {{ task.title }}\n </h6>\n @if (showPriority() && task.priority) {\n <ax-badge\n [color]=\"getPriorityColor(task.priority)\"\n [text]=\"task.priority\"\n size=\"sm\"\n class=\"ax-ml-1 ax-rounded-full\"\n ></ax-badge>\n }\n </div>\n\n <!-- Metadata -->\n <div class=\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-2 ax-text-xs ax-text-gray-500\">\n @if (showDate() && task.dueDate) {\n <span\n class=\"ax-flex ax-items-center ax-gap-1 due-date\"\n [class.ax-text-danger-500]=\"getDaysDifference(task.dueDate) < 0\"\n [class.overdue]=\"getDaysDifference(task.dueDate) < 0\"\n >\n <ax-icon><i class=\"fa-light fa-calendar\"></i></ax-icon>\n {{ formatDueDate(task.dueDate) }}\n </span>\n }\n @if (showAssignee() && task.assignedTo) {\n <span class=\"ax-flex ax-items-center ax-gap-1\">\n @if (task.assignedTo.image) {\n <ax-icon class=\"ax-bg-primary-100 ax-text-primary-500 ax-rounded-full ax-p-1\">\n <i class=\"fa-light fa-user\"></i>\n </ax-icon>\n } @else {\n <ax-icon><i class=\"fa-light fa-user\"></i></ax-icon>\n }\n {{ task.assignedTo.name }}\n </span>\n }\n </div>\n </div>\n </div>\n</ng-template>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\nimport { AXP_APPEARANCE_PROPERTY_GROUP } from '@acorex/platform/widgets';\n\nexport const AXPTaskListWidget: AXPWidgetConfig = {\n name: 'task-list',\n title: 'Task List Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-clipboard-list-check',\n properties: [\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.task-list.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // Display options\n {\n name: 'maxItems',\n title: '@dashboard:widgets.task-list.max-items',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 10,\n dataType: 'number',\n interface: {\n name: 'maxItems',\n path: 'options.maxItems',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 50,\n },\n },\n },\n visible: true,\n },\n {\n name: 'showDate',\n title: '@dashboard:widgets.task-list.show-date',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDate',\n path: 'options.showDate',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showAssignee',\n title: '@dashboard:widgets.task-list.show-assignee',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showAssignee',\n path: 'options.showAssignee',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'groupByCategory',\n title: '@dashboard:widgets.task-list.group-by-category',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'groupByCategory',\n path: 'options.groupByCategory',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showPriority',\n title: '@dashboard:widgets.task-list.show-priority',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showPriority',\n path: 'options.showPriority',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'allowMarkComplete',\n title: '@dashboard:widgets.task-list.allow-complete',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'allowMarkComplete',\n path: 'options.allowMarkComplete',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./tasklist-widget.component').then((c) => c.AXPTaskListWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 7,\n minWidth: 3,\n minHeight: 4,\n maxWidth: 6,\n maxHeight: 8,\n },\n },\n};\n\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n taskList: 'task-list';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * Weather location information\n */\nexport interface AXPWeatherLocation {\n /** City name */\n city: string;\n /** Country name */\n country: string;\n /** Formatted location display name */\n displayName: string;\n}\n\n/**\n * Weather current condition information\n */\nexport interface AXPWeatherCondition {\n /** Condition text */\n condition: string;\n /** Condition code */\n conditionCode: number;\n /** Icon URL */\n iconUrl: string;\n /** Temperature in Celsius */\n tempC: number;\n /** Temperature in Fahrenheit */\n tempF: number;\n /** Feels like temperature in Celsius */\n feelsLikeC: number;\n /** Feels like temperature in Fahrenheit */\n feelsLikeF: number;\n /** Humidity percentage */\n humidity: number;\n /** Wind speed in km/h */\n windKph: number;\n /** Wind speed in mph */\n windMph: number;\n /** Wind direction */\n windDirection: string;\n /** UV index */\n uv: number;\n /** Last updated timestamp */\n lastUpdated: string;\n}\n\n/**\n * Weather forecast data for a single day\n */\nexport interface AXPWeatherForecastDay {\n /** Date string */\n date: string;\n /** Day name (e.g., \"Mon\", \"Tue\") */\n day: string;\n /** Weather condition code */\n condition: string;\n /** Weather icon URL */\n iconUrl: string;\n /** Max temperature in Celsius */\n maxTempC: number;\n /** Max temperature in Fahrenheit */\n maxTempF: number;\n /** Min temperature in Celsius */\n minTempC: number;\n /** Min temperature in Fahrenheit */\n minTempF: number;\n /** Hourly forecast data */\n hour: AXPWeatherHour[];\n}\n\n/**\n * Weather hourly forecast data\n */\nexport interface AXPWeatherHour {\n /** Time string */\n time: string;\n /** Weather condition code */\n condition: string;\n /** Weather icon URL */\n iconUrl: string;\n /** Hourly temperature in Celsius */\n tempC: number;\n /** Hourly temperature in Fahrenheit */\n tempF: number;\n}\n\n/**\n * Complete weather data response\n */\nexport interface AXPWeatherData {\n /** Location information */\n location: AXPWeatherLocation;\n /** Current weather data */\n current: AXPWeatherCondition;\n /** Forecast data */\n forecast: AXPWeatherForecastDay[];\n}\n\n/**\n * Weather API request options\n */\nexport interface AXPWeatherRequestOptions {\n /** Temperature unit */\n tempUnit?: string;\n /** Location query */\n location?: string;\n /** Use mock data */\n useMockData?: boolean;\n}\n\n/**\n * Weather UI condition display info\n */\nexport interface AXPWeatherConditionDisplay {\n /** Condition unique ID */\n id: string;\n /** Display name */\n name: string;\n /** Icon class (Font Awesome) */\n icon: string;\n /** SVG icon name */\n svgIcon: string;\n /** Associated color */\n color: string;\n}\n\n/**\n * Abstract Weather API Service\n * Base class that defines the interface and common functionality\n * for weather data providers\n */\n@Injectable()\nexport abstract class AXPWeatherApiAbstract {\n /** Weather condition definitions mapping */\n protected weatherConditions: Record<string, AXPWeatherConditionDisplay> = {\n sunny: {\n id: 'sunny',\n name: 'Sunny',\n icon: 'fa-solid fa-sun',\n svgIcon: 'day.svg',\n color: '#ff9d00',\n },\n clearNight: {\n id: 'clearNight',\n name: 'Clear Night',\n icon: 'fa-solid fa-moon',\n svgIcon: 'night.svg',\n color: '#5d639e',\n },\n partlyCloudy: {\n id: 'partlyCloudy',\n name: 'Partly Cloudy',\n icon: 'fa-solid fa-cloud-sun',\n svgIcon: 'cloudy-day-3.svg',\n color: '#6ba4e8',\n },\n partlyCloudyNight: {\n id: 'partlyCloudyNight',\n name: 'Partly Cloudy Night',\n icon: 'fa-solid fa-cloud-moon',\n svgIcon: 'cloudy-night-3.svg',\n color: '#5d639e',\n },\n cloudy: {\n id: 'cloudy',\n name: 'Cloudy',\n icon: 'fa-solid fa-cloud',\n svgIcon: 'cloudy.svg',\n color: '#72869d',\n },\n rain: {\n id: 'rain',\n name: 'Rain',\n icon: 'fa-solid fa-cloud-rain',\n svgIcon: 'rainy-6.svg',\n color: '#3a74ad',\n },\n showers: {\n id: 'showers',\n name: 'Showers',\n icon: 'fa-solid fa-cloud-showers-heavy',\n svgIcon: 'rainy-7.svg',\n color: '#2c5d8c',\n },\n thunderstorm: {\n id: 'thunderstorm',\n name: 'Thunderstorm',\n icon: 'fa-solid fa-bolt-lightning',\n svgIcon: 'thunder.svg',\n color: '#8834af',\n },\n snow: {\n id: 'snow',\n name: 'Snow',\n icon: 'fa-solid fa-snowflake',\n svgIcon: 'snowy-6.svg',\n color: '#68a9cd',\n },\n mist: {\n id: 'mist',\n name: 'Mist',\n icon: 'fa-solid fa-smog',\n svgIcon: 'cloudy.svg',\n color: '#94a3b8',\n },\n };\n\n /** Day of week mapping */\n protected readonly dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n /**\n * Get weather condition info by ID\n * @param id Condition ID\n * @returns Weather condition info or default if not found\n */\n public getCondition(id: string): AXPWeatherConditionDisplay {\n // Normalize condition ID by removing spaces and converting to lowercase\n const normalizedId = id.toLowerCase().replace(/\\s+/g, '');\n\n // Direct match first\n if (this.weatherConditions[normalizedId]) {\n return this.weatherConditions[normalizedId];\n }\n\n // Check for partial matches or common variants\n if (normalizedId.includes('partly') && normalizedId.includes('cloud')) {\n return this.weatherConditions['partlyCloudy'];\n }\n\n if (normalizedId.includes('cloud')) {\n return this.weatherConditions['cloudy'];\n }\n\n if (normalizedId.includes('sun')) {\n return this.weatherConditions['sunny'];\n }\n\n if (normalizedId.includes('rain')) {\n return this.weatherConditions['rain'];\n }\n\n if (normalizedId.includes('snow')) {\n return this.weatherConditions['snow'];\n }\n\n // If no match found, return default unknown condition\n return {\n id: 'unknown',\n name: 'Unknown',\n icon: 'fa-solid fa-question',\n svgIcon: 'weather.svg',\n color: '#999999',\n };\n }\n\n /**\n * Get current weather data for given location\n * @param options Weather request options\n * @returns Observable with weather data\n */\n abstract getWeather(options: AXPWeatherRequestOptions): Observable<AXPWeatherData>;\n\n /**\n * Get weather forecast for a location\n * @param options Weather request options with days\n * @returns Observable of weather data with forecast\n */\n abstract getForecast(options: AXPWeatherRequestOptions & { days?: number }): Observable<AXPWeatherData>;\n\n /**\n * Parse location string into city and display components\n * @param location Location query string\n * @returns Parsed location parts\n */\n protected parseLocation(location: string): { city: string; country: string; display: string } {\n if (!location || location.trim() === '') {\n return { city: 'New York', country: 'USA', display: 'New York' };\n }\n\n const city = location.trim();\n return { city, country: '', display: city };\n }\n\n /**\n * Format location name for display\n * @param locationParts Parsed location parts\n * @returns Formatted location name\n */\n protected formatLocationName(locationParts: { city: string; country: string; display: string }): string {\n return locationParts.city || 'Unknown Location';\n }\n\n /**\n * Map API condition text to our internal condition IDs\n * @param conditionText Condition text from API\n * @returns Internal condition ID\n */\n protected mapApiConditionToId(conditionText: string): string {\n const text = conditionText.toLowerCase();\n\n // Match WeatherAPI.com condition text\n // Reference: https://www.weatherapi.com/docs/#weather-icons\n\n if (text.includes('sunny') || text.includes('clear')) {\n return 'sunny';\n }\n\n if (text === 'partly cloudy') {\n return 'partlyCloudy';\n }\n\n if (text.includes('cloudy') || text.includes('overcast')) {\n return 'cloudy';\n }\n\n if (text.includes('rain') || text.includes('drizzle') || text.includes('shower')) {\n return 'rain';\n }\n\n if (text.includes('thunder') || text.includes('lightning')) {\n return 'thunderstorm';\n }\n\n if (text.includes('snow') || text.includes('sleet') || text.includes('blizzard')) {\n return 'snow';\n }\n\n if (text.includes('mist') || text.includes('fog')) {\n return 'mist';\n }\n\n // Default to partly cloudy if we don't have a specific mapping\n return 'partlyCloudy';\n }\n\n /**\n * Generate random integer between min and max (inclusive)\n * Helper method for implementations\n * @param min Minimum value\n * @param max Maximum value\n * @returns Random integer\n */\n protected getRandomInt(min: number, max: number): number {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n\n /**\n * Set the API key for the weather service\n * This is only used by the real API implementation,\n * but is defined in the abstract class for consistency\n * @param key The API key\n */\n abstract setApiKey(key: string): void;\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, catchError, map, throwError } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherData, AXPWeatherRequestOptions } from './weather-api.abstract';\n\n/**\n * Mock Weather API Service\n * Provides simulated weather data for development and testing\n */\n@Injectable()\nexport class AXPWeatherApiMockService extends AXPWeatherApiAbstract {\n // Mock configuration\n private readonly mockDelay = 500;\n\n /**\n * Get current weather data for given location\n * @param options Weather request options\n * @returns Observable with weather data\n */\n override getWeather(options: AXPWeatherRequestOptions): Observable<AXPWeatherData> {\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n\n return this.getMockWeatherData(locationParts.city, options).pipe(\n map((mockData) => ({\n ...mockData,\n location: {\n city: locationParts.city,\n country: '',\n displayName: displayName,\n },\n })),\n );\n }\n\n /**\n * Get weather forecast for a location\n * @param options Weather request options with days\n * @returns Observable of weather data with forecast\n */\n override getForecast(options: AXPWeatherRequestOptions & { days?: number }): Observable<AXPWeatherData> {\n const days = options.days || 5;\n return this.getMockForecast(options.location || '', days, options);\n }\n\n /**\n * Get mock weather data for demo/development\n * @param location Location query\n * @param options Request options\n * @returns Observable of mock weather data\n */\n private getMockWeatherData(location: string, options?: AXPWeatherRequestOptions): Observable<AXPWeatherData> {\n return new Observable<AXPWeatherData>((observer) => {\n setTimeout(() => {\n try {\n const locationParts = this.parseLocation(location);\n const tempUnit = options?.tempUnit || '°C';\n const isCelsius = tempUnit === '°C';\n\n // Generate more realistic weather data based on location and current date\n const now = new Date();\n const month = now.getMonth(); // 0-11\n\n // Seasonally appropriate temperature range\n let minRange = 15;\n let maxRange = 25;\n\n // Northern hemisphere seasonal adjustments\n if (month >= 11 || month <= 1) {\n // Winter\n minRange = -5;\n maxRange = 10;\n } else if (month >= 2 && month <= 4) {\n // Spring\n minRange = 10;\n maxRange = 20;\n } else if (month >= 5 && month <= 7) {\n // Summer\n minRange = 20;\n maxRange = 35;\n } else if (month >= 8 && month <= 10) {\n // Fall/Autumn\n minRange = 10;\n maxRange = 25;\n }\n\n // Generate current temperature - more likely to be in the middle of the range\n const tempC = Math.round(minRange + (this.getRandomInt(4, 8) / 10) * (maxRange - minRange));\n const tempF = Math.round((tempC * 9) / 5 + 32);\n\n const humidity = this.getRandomInt(30, 90);\n const windKph = this.getRandomInt(5, 30);\n const windMph = Math.round(windKph * 0.621371);\n\n // Temperature-based conditions with randomization\n let conditionId = 'partlyCloudy';\n if (tempC > 25) conditionId = 'sunny';\n else if (tempC < 10) conditionId = 'cloudy';\n if (this.getRandomInt(1, 10) > 7) conditionId = 'rain';\n\n observer.next({\n location: {\n city: locationParts.city,\n country: '',\n displayName: this.formatLocationName(locationParts),\n },\n current: {\n condition: conditionId,\n conditionCode: 0,\n iconUrl: '', // Would be set from API\n tempC: tempC,\n tempF: tempF,\n feelsLikeC: tempC + this.getRandomInt(-3, 2),\n feelsLikeF: tempF + this.getRandomInt(-5, 3),\n humidity: humidity,\n windKph: windKph,\n windMph: windMph,\n windDirection: ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'][this.getRandomInt(0, 7)],\n uv: this.getRandomInt(0, 10),\n lastUpdated: new Date().toISOString(),\n },\n forecast: [],\n });\n\n observer.complete();\n } catch (error) {\n observer.error(error);\n }\n }, this.mockDelay);\n }).pipe(catchError((error) => throwError(() => new Error(`Failed to get weather data: ${error.message}`))));\n }\n\n /**\n * Get mock forecast data for demo/development\n * @param location Location query\n * @param days Number of forecast days\n * @param options Request options\n * @returns Observable of mock weather data with forecast\n */\n private getMockForecast(\n location: string,\n days: number = 5,\n options?: AXPWeatherRequestOptions,\n ): Observable<AXPWeatherData> {\n return this.getMockWeatherData(location, options).pipe(\n map((data) => {\n const currentCondition = data.current.condition;\n const currentTemp = data.current.tempC;\n\n // Use the current weather as a base for the forecast trend\n const forecast = Array.from({ length: days }, (_, i) => {\n // Create forecast date for each day (starting from tomorrow)\n const forecastDate = new Date();\n forecastDate.setDate(new Date().getDate() + i + 1);\n\n const dateStr = forecastDate.toISOString().split('T')[0];\n const dayName = this.dayNames[forecastDate.getDay()];\n\n // Generate condition with some continuity from current weather\n // Weather tends to be similar for a few days with gradual changes\n let conditionId: string;\n\n if (i === 0) {\n // Tomorrow's weather has 60% chance of being similar to today\n conditionId =\n this.getRandomInt(1, 10) <= 6\n ? currentCondition\n : ['sunny', 'partlyCloudy', 'cloudy', 'rain', 'snow'][this.getRandomInt(0, 4)];\n } else {\n // Subsequent days have 70% chance of being similar to previous day\n const previousCondition = forecast[i - 1]?.condition || currentCondition;\n conditionId =\n this.getRandomInt(1, 10) <= 7\n ? previousCondition\n : ['sunny', 'partlyCloudy', 'cloudy', 'rain', 'snow'][this.getRandomInt(0, 4)];\n }\n\n // Generate temperatures with realistic variance\n // Max is typically higher than current temperature\n // Min is typically lower than current temperature\n const tempVariance = this.getRandomInt(-3, 3); // Small day-to-day change\n const baseMaxC = currentTemp + this.getRandomInt(0, 5); // Max is higher than current\n const maxTempC = baseMaxC + tempVariance;\n const minTempC = maxTempC - this.getRandomInt(5, 10); // Min is lower than max\n\n const maxTempF = Math.round((maxTempC * 9) / 5 + 32);\n const minTempF = Math.round((minTempC * 9) / 5 + 32);\n\n return {\n date: dateStr,\n day: dayName,\n condition: conditionId,\n iconUrl: '', // Would be set from API\n maxTempC,\n maxTempF,\n minTempC,\n minTempF,\n hour: [],\n };\n });\n\n return { ...data, forecast };\n }),\n );\n }\n\n /**\n * Set the API key for the weather service\n * No-op in the mock implementation\n * @param key The API key\n */\n override setApiKey(key: string): void {\n // No-op for mock service\n console.log('API key setting is ignored in mock weather service');\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const AXP_WEATHER_API_KEY = new InjectionToken<string>('AXP_WEATHER_API_KEY', {\n providedIn: 'root',\n factory: () => {\n return '40281dc1e31749edb6c104828250604';\n },\n});\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { Observable, catchError, map, throwError } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherData, AXPWeatherRequestOptions } from './weather-api.abstract';\nimport { AXP_WEATHER_API_KEY } from './weather-api.key';\n\n/**\n * Real Weather API Service\n * Fetches actual weather data from a weather API service\n */\n@Injectable()\nexport class AXPWeatherApiService extends AXPWeatherApiAbstract {\n private readonly http = inject(HttpClient);\n\n // API configuration\n private readonly baseApiUrl = 'https://api.weatherapi.com/v1';\n private apiKeyToken = inject(AXP_WEATHER_API_KEY, { optional: true });\n\n /**\n * Set the API key for the weather service\n * @param key The API key\n */\n setApiKey(key: string): void {\n if (key && key.trim() !== '') {\n this.apiKeyToken = key;\n }\n }\n\n /**\n * Get current weather data for given location\n * @param options Weather request options\n * @returns Observable with weather data\n */\n override getWeather(options: AXPWeatherRequestOptions): Observable<AXPWeatherData> {\n // If forecast is likely needed, we should fetch it all at once\n if (options.useMockData === false || options.useMockData === undefined) {\n // For real API, use the forecast endpoint which includes current data\n return this.getForecast({\n ...options,\n days: 1, // Request minimal forecast data\n });\n }\n\n // For mock data, we'll continue using separate calls for backward compatibility\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n\n // Use real API with query based on city only\n const query = encodeURIComponent(locationParts.city);\n const url = `${this.baseApiUrl}/current.json?key=${this.apiKeyToken}&q=${query}&aqi=no`;\n\n return this.http.get<any>(url).pipe(\n map((data) => this.transformApiResponse(data, displayName)),\n catchError((error) => {\n console.error('Weather API error:', error);\n // Check for location not found error\n if (error.error?.error?.code === 1006) {\n return throwError(\n () => new Error(`Location \"${locationParts.city}\" not found. Please check the city name and try again.`),\n );\n }\n return throwError(() => new Error(`Failed to fetch weather data: ${error.message}`));\n }),\n );\n }\n\n /**\n * Get weather forecast for a location\n * @param options Weather request options with days\n * @returns Observable of weather data with forecast\n */\n override getForecast(options: AXPWeatherRequestOptions & { days?: number }): Observable<AXPWeatherData> {\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n const days = options.days || 5;\n\n // Build forecast API URL\n const query = encodeURIComponent(locationParts.city);\n const url = `${this.baseApiUrl}/forecast.json?key=${this.apiKeyToken}&q=${query}&days=${days}&aqi=no`;\n\n return this.http.get<any>(url).pipe(\n map((data) => this.transformForecastResponse(data, displayName, days)),\n catchError((error) => {\n console.error('Weather API error:', error);\n // Check for location not found error\n if (error.error?.error?.code === 1006) {\n return throwError(\n () => new Error(`Location \"${locationParts.city}\" not found. Please check the city name and try again.`),\n );\n }\n return throwError(() => new Error(`Failed to fetch forecast data: ${error.message}`));\n }),\n );\n }\n\n /**\n * Transform API response to our internal data model\n * @param apiData Raw API response\n * @param displayName Formatted location name\n * @returns Normalized weather data\n */\n private transformApiResponse(apiData: any, displayName: string): AXPWeatherData {\n // Map API condition text to our condition IDs\n const conditionText = apiData.current?.condition?.text || '';\n const conditionId = this.mapApiConditionToId(conditionText);\n\n return {\n location: {\n city: apiData.location?.name || '',\n country: apiData.location?.country || '',\n displayName: displayName,\n },\n current: {\n condition: conditionId, // Use our mapped condition ID\n conditionCode: apiData.current?.condition?.code || 0,\n iconUrl: apiData.current?.condition?.icon || '',\n tempC: apiData.current?.temp_c || 0,\n tempF: apiData.current?.temp_f || 0,\n feelsLikeC: apiData.current?.feelslike_c || 0,\n feelsLikeF: apiData.current?.feelslike_f || 0,\n humidity: apiData.current?.humidity || 0,\n windKph: apiData.current?.wind_kph || 0,\n windMph: apiData.current?.wind_mph || 0,\n windDirection: apiData.current?.wind_dir || '',\n uv: apiData.current?.uv || 0,\n lastUpdated: apiData.current?.last_updated || new Date().toISOString(),\n },\n forecast: [],\n };\n }\n\n /**\n * Transform forecast API response to our internal data model\n * @param apiData Raw API response with forecast\n * @param displayName Formatted location name\n * @param days Number of forecast days\n * @returns Normalized weather data with forecast\n */\n private transformForecastResponse(apiData: any, displayName: string, days: number): AXPWeatherData {\n // First transform the current weather data using the current field of the forecast response\n const weatherData = this.transformApiResponse(apiData, displayName);\n\n // Then add the forecast data\n const forecastDays = apiData.forecast?.forecastday || [];\n weatherData.forecast = forecastDays.slice(0, days).map((day: any) => {\n // Parse the date for day name\n const date = new Date(day.date);\n const dayName = date.toLocaleDateString('en-US', { weekday: 'short' });\n\n // Map condition to our internal ID\n const conditionText = day.day?.condition?.text || '';\n const conditionId = this.mapApiConditionToId(conditionText);\n\n return {\n date: day.date,\n day: dayName,\n condition: conditionId,\n iconUrl: day.day?.condition?.icon || '',\n maxTempC: day.day?.maxtemp_c || 0,\n maxTempF: day.day?.maxtemp_f || 0,\n minTempC: day.day?.mintemp_c || 0,\n minTempF: day.day?.mintemp_f || 0,\n hour: day.hour.map((hour: any) => ({\n time: hour.time,\n condition: hour.condition.code,\n iconUrl: hour.condition.icon,\n tempC: hour.temp_c,\n tempF: hour.temp_f,\n })),\n };\n });\n\n return weatherData;\n }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { catchError, finalize, of } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherApiService, AXPWeatherData, AXPWeatherHour } from '../weather-services';\n\n@Component({\n template: `\n <div class=\"ax-size-full ax-p-6\">\n @if (weatherData() && !isLoading() && !hasError()) {\n <div class=\"ax-flex ax-h-full ax-flex-col ax-gap-4 ax-justify-around\">\n <div class=\"ax-flex ax-items-start ax-justify-around ax-w-full ax-gap-4\">\n <div class=\"ax-flex ax-items-center ax-shrink-0\">\n <img\n [src]=\"getConditionIcon(weatherData()!.current.condition)\"\n class=\"ax-w-20 ax-h-20 ax-scale-[1.5]\"\n [alt]=\"getConditionName(weatherData()!.current.condition)\"\n loading=\"lazy\"\n />\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-items-start\">\n <span class=\"ax-text-lg ax-font-medium ax-text-muted\">{{\n getConditionName(weatherData()!.current.condition)\n }}</span>\n <span class=\"ax-text-5xl\" style=\"text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)\"\n >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-1 ax-pe-4\">\n <span class=\"ax-text-2xl ax-font-bold ax-capitalize\">{{ city() }}</span>\n <div class=\"ax-flex ax-gap-4 ax-font-semibold ax-text-muted\">\n <span\n >H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n <span\n >L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n </div>\n </div>\n\n <div class=\"ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-overflow-x-auto ax-shrink-0\">\n @for (hour of displayedHourlyForecast(); track hour.time) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-2 ax-cursor-default ax-min-w-16\">\n <span class=\"ax-text-sm ax-font-medium ax-text-muted\">{{ getHourLabel(hour.time) }}</span>\n <img\n [src]=\"getConditionIcon(weatherData()!.forecast[0].condition)\"\n class=\"ax-w-10 ax-h-10\"\n [alt]=\"getConditionName(weatherData()!.forecast[0].condition)\"\n />\n <span class=\"ax-text-lg ax-font-semibold\"\n >{{ getHourTemp(hour) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n }\n </div>\n\n <div class=\"ax-mt-2 ax-w-full\">\n <div\n class=\"ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-2 ax-items-center ax-justify-items-start\"\n >\n @for (day of displayedForecast(); track day.date) {\n <span class=\"ax-font-medium\">{{ getDayName(parseDate(day.date)) }}</span>\n <div class=\"ax-flex ax-items-center ax-justify-center\">\n <img\n [src]=\"getConditionIcon(day.condition)\"\n class=\"ax-w-8 ax-h-8 ax-scale-[2]\"\n [alt]=\"getConditionName(day.condition)\"\n />\n </div>\n <span class=\"ax-font-semibold\"\n >{{ getForecastDayTemp(day) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n <span class=\"ax-text-muted\"\n >{{ day.minTempC | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n } @empty {\n <span class=\"ax-text-muted\">No forecast data available</span>\n }\n </div>\n </div>\n </div>\n } @else {\n <div class=\"ax-flex ax-size-full ax-flex-col ax-gap-6\" [attr.aria-busy]=\"isLoading()\">\n @if (isLoading()) {\n <!-- Current weather skeleton -->\n <div class=\"ax-flex ax-items-start ax-justify-around ax-w-full ax-gap-4\">\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton class=\"ax-w-20 ax-h-20 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <ax-skeleton class=\"ax-w-24 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-32 ax-h-12 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-end ax-gap-2\">\n <ax-skeleton class=\"ax-w-28 ax-h-8 ax-rounded\"></ax-skeleton>\n <div class=\"ax-flex ax-gap-2\">\n <ax-skeleton class=\"ax-w-12 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-12 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n </div>\n\n <!-- Hourly forecast skeleton -->\n <div class=\"ax-flex ax-w-full ax-gap-2 ax-items-center ax-justify-around\">\n @for (i of [1, 2, 3, 4, 5]; track i) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-2 ax-min-w-16\">\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-10 ax-rounded-full ax-my-1\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n }\n </div>\n\n <!-- Daily forecast skeleton -->\n <div class=\"ax-mt-2 ax-w-full\">\n <div class=\"ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-4 ax-items-center\">\n @for (i of [1, 2]; track i) {\n <ax-skeleton class=\"ax-w-20 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8 ax-h-8 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n }\n </div>\n </div>\n } @else if (hasError()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-3\">\n <i class=\"fa-solid fa-cloud-bolt fa-3x ax-text-danger\"></i>\n <span class=\"ax-text-danger ax-text-lg\">{{ errorMessage() }}</span>\n <button\n class=\"ax-btn ax-btn-md ax-btn-outline-primary ax-mt-2\"\n (click)=\"loadWeatherData()\"\n aria-label=\"Retry loading weather data\"\n >\n <i class=\"fa-solid fa-rotate-right ax-me-2\"></i> Retry\n </button>\n </div>\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n @apply ax-size-full;\n }\n\n .ax-text-muted {\n color: gray;\n }\n\n sup {\n @apply ax-font-light;\n position: relative;\n top: -0.3em;\n font-size: 0.6em;\n margin-left: 0.1em;\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDecoratorModule, AXTooltipModule, AXSkeletonModule],\n providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ],\n})\nexport class AXPAdvancedWeatherViewComponent extends AXPValueWidgetComponent {\n private weatherService = inject(AXPWeatherApiAbstract);\n protected weatherData = signal<AXPWeatherData | null>(null);\n\n protected isLoading = signal(true);\n protected hasError = signal(false);\n protected errorMessage = signal('');\n\n protected city = computed(() => this.options()['city'] || 'New York');\n protected temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n protected forecastDays = computed(() => (this.options()['forecastDays'] ?? 2) + 1);\n protected forecastHours = computed(() => this.options()['forecastHours'] ?? 5);\n\n private iconCache = new Map<string, string>();\n\n constructor() {\n super();\n effect(() => {\n if (this.options()) {\n this.loadWeatherData();\n }\n });\n }\n\n protected loadWeatherData(): void {\n if (!this.city()) {\n this.isLoading.set(false);\n return;\n }\n\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n\n const requestOptions = {\n location: this.city(),\n tempUnit: this.temperatureUnit(),\n days: this.forecastDays(),\n };\n\n this.weatherService\n .getForecast(requestOptions)\n .pipe(\n catchError((error) => {\n this.handleError(error);\n return of(null);\n }),\n finalize(() => this.isLoading.set(false)),\n )\n .subscribe((data) => {\n if (data) {\n this.weatherData.set(data);\n }\n });\n }\n\n private handleError(error: any): void {\n console.error('Advanced weather widget error:', error);\n this.hasError.set(true);\n this.errorMessage.set(error.message || 'Failed to load weather data');\n }\n\n protected getConditionIcon(conditionId: string): string {\n if (!conditionId) {\n return '';\n }\n if (this.iconCache.has(conditionId)) {\n return this.iconCache.get(conditionId)!;\n }\n\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n const iconPath = `assets/images/weather/${svgIcon}`;\n this.iconCache.set(conditionId, iconPath);\n return iconPath;\n }\n\n protected getConditionName(conditionId: string): string {\n if (!conditionId) {\n return 'Unknown';\n }\n const condition = this.weatherService.getCondition(conditionId);\n return condition?.name || 'Unknown';\n }\n\n protected getCurrentTemperature(): number {\n if (!this.weatherData()) return 0;\n return this.temperatureUnit() === '°C' ? this.weatherData()!.current.tempC : this.weatherData()!.current.tempF;\n }\n\n protected getMaxTemp(): number {\n if (!this.weatherData()?.forecast?.[0]) return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.forecast[0].maxTempC\n : this.weatherData()!.forecast[0].maxTempF;\n }\n\n protected getMinTemp(): number {\n if (!this.weatherData()?.forecast?.[0]) return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.forecast[0].minTempC\n : this.weatherData()!.forecast[0].minTempF;\n }\n\n protected getForecastDayTemp(day: any): number {\n if (!day) return 0;\n return this.temperatureUnit() === '°C' ? day.maxTempC : day.maxTempF;\n }\n\n protected parseDate(dateStr: string): Date {\n return new Date(dateStr);\n }\n\n protected getDayName(date: Date): string {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n\n const checkDate = new Date(date);\n checkDate.setHours(0, 0, 0, 0);\n\n if (checkDate.getTime() === today.getTime()) {\n return 'Today';\n }\n if (checkDate.getTime() === tomorrow.getTime()) {\n return 'Tomorrow';\n }\n\n const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return days[checkDate.getDay()];\n }\n\n protected displayedForecast = computed(() => {\n this.forecastDays();\n const weatherData = this.weatherData();\n if (!weatherData?.forecast) return [];\n // Skip today's forecast for the bottom row display\n return weatherData.forecast.slice(1, this.forecastDays());\n });\n\n protected displayedHourlyForecast = computed(() => {\n this.forecastHours();\n const weatherData = this.weatherData();\n if (!weatherData?.forecast?.[0]?.hour) return [];\n\n const now = new Date();\n const currentHour = now.getHours();\n const todayHours = weatherData.forecast[0].hour;\n\n // Get hours after current hour for today\n const remainingTodayHours = todayHours.filter((hour) => {\n const hourTime = new Date(hour.time);\n return hourTime.getHours() > currentHour;\n });\n\n // If we need more hours, get from tomorrow\n let result = [...remainingTodayHours];\n if (result.length < this.forecastHours() && weatherData.forecast.length > 1) {\n const tomorrowHours = weatherData.forecast[1].hour;\n const neededFromTomorrow = this.forecastHours() - result.length;\n result = [...result, ...tomorrowHours.slice(0, neededFromTomorrow)];\n }\n\n // Limit to requested number of hours\n return result.slice(0, this.forecastHours());\n });\n\n protected getHourLabel(timeStr: string): string {\n const time = new Date(timeStr);\n return time.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n }\n\n protected getHourTemp(hour: AXPWeatherHour): number {\n return this.temperatureUnit() === '°C' ? hour.tempC : hour.tempF;\n }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\n\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../chart.type';\n\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPAdvancedWeatherWidget: AXPWidgetConfig = {\n name: 'advanced-weather',\n title: 'Advanced Weather Widget',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n\n {\n name: 'forecastHours',\n title: '@dashboard:widgets.weather.forecast-hours',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 5,\n dataType: 'number',\n interface: {\n name: 'forecastHours',\n path: 'options.forecastHours',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 8,\n step: 1,\n },\n },\n },\n visible: true,\n },\n {\n name: 'forecastDays',\n title: '@dashboard:widgets.weather.forecast-days',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 2,\n dataType: 'number',\n interface: {\n name: 'forecastDays',\n path: 'options.forecastDays',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 2,\n step: 1,\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./advanced-weather.component').then((c) => c.AXPAdvancedWeatherViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 5,\n\n minWidth: 3,\n minHeight: 5,\n\n maxWidth: 5,\n maxHeight: 7,\n },\n },\n};\n\n/**\n * Type declaration to register the weather widget type\n */\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n advancedWeather: 'advanced-weather';\n }\n}\n","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { catchError, finalize, of } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherApiService, AXPWeatherData } from '../weather-services';\n\n@Component({\n template: `\n @if (weatherData() && !isLoading() && !hasError()) {\n <div\n class=\"ax-flex ax-size-full ax-flex-col ax-items-start ax-p-2 ax-gap-6 weather-container ax-overflow-hidden\"\n style=\"container-type: inline-size\"\n [attr.aria-label]=\"'Current weather for ' + city()\"\n >\n <div class=\"weather-top ax-flex ax-items-center ax-w-full ax-pt-4\">\n <img\n [src]=\"getConditionIcon()\"\n class=\"ax-h-[180%]\"\n [alt]=\"weatherData()?.current?.condition + ' weather icon'\"\n loading=\"lazy\"\n />\n <span\n class=\"-ax-ms-2 temperature\"\n style=\"font-size: max(20px, calc(32cqw - 25px)); text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)\"\n aria-live=\"polite\"\n >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n <div class=\"ax-text-start ax-ps-6\">\n <div style=\"font-size: max(16px, calc(19cqw - 25px))\" class=\"ax-mt-1\">\n <span class=\"ax-font-bold ax-capitalize\">{{ city() }}</span>\n </div>\n <div style=\"font-size: max(12px, calc(14cqw - 25px))\" class=\"ax-pt-2 ax-flex ax-gap-4 ax-opacity-75\">\n <span aria-label=\"High temperature\">\n H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>\n </span>\n <span aria-label=\"Low temperature\">\n L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>\n </span>\n </div>\n </div>\n </div>\n } @else {\n <div class=\"ax-flex ax-size-full ax-flex-col ax-p-2 ax-gap-4\" [attr.aria-busy]=\"isLoading()\">\n @if (isLoading()) {\n <!-- Weather icon and temperature skeleton -->\n <div class=\"ax-flex ax-items-center ax-w-full ax-pt-4 ax-gap-8\">\n <ax-skeleton class=\"ax-w-16 ax-h-16 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-24 ax-h-12 ax-rounded -ax-ms-2\"></ax-skeleton>\n </div>\n\n <!-- City and temperature range skeleton -->\n <div class=\"ax-text-start ax-ps-6 ax-w-full\">\n <div class=\"ax-mt-1\">\n <ax-skeleton class=\"ax-w-24 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n <div class=\"ax-pt-2 ax-flex ax-gap-4\">\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n } @else if (hasError()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-2\">\n <span class=\"ax-text-danger\">{{ errorMessage() }}</span>\n <button\n class=\"ax-btn ax-btn-sm ax-btn-outline-primary\"\n (click)=\"loadWeatherData()\"\n aria-label=\"Retry loading weather data\"\n >\n <i class=\"fa-solid fa-rotate-right\"></i> Retry\n </button>\n </div>\n }\n </div>\n }\n `,\n styles: [\n `\n :host {\n @apply ax-size-full;\n }\n\n .weather-container {\n container-type: inline-size;\n transition: opacity 0.3s ease-in-out;\n }\n\n .temperature {\n font-feature-settings: 'tnum';\n font-variant-numeric: tabular-nums;\n }\n\n @container (max-width: 130px) {\n .weather-top {\n flex-direction: column !important;\n align-items: center !important;\n text-align: center;\n }\n\n .temperature {\n margin-top: 0.5rem;\n }\n }\n `,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXDecoratorModule, AXTooltipModule, AXSkeletonModule],\n providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ],\n})\nexport class AXPMinimalWeatherViewComponent extends AXPValueWidgetComponent {\n private weatherService = inject(AXPWeatherApiAbstract);\n\n protected weatherData = signal<AXPWeatherData | null>(null);\n protected isLoading = signal(true);\n protected hasError = signal(false);\n protected errorMessage = signal('');\n\n protected city = computed(() => this.options()['city'] || 'New York');\n protected temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n\n private iconCache = new Map<string, string>();\n\n constructor() {\n super();\n effect(() => {\n if (this.options()) {\n this.loadWeatherData();\n }\n });\n }\n\n protected loadWeatherData(): void {\n if (!this.city()) {\n this.isLoading.set(false);\n return;\n }\n\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n\n const requestOptions = {\n location: this.city(),\n tempUnit: this.temperatureUnit(),\n days: 1,\n };\n\n this.weatherService\n .getForecast(requestOptions)\n .pipe(\n catchError((error) => {\n this.handleError(error);\n return of(null);\n }),\n finalize(() => this.isLoading.set(false)),\n )\n .subscribe((data) => {\n if (data) {\n this.weatherData.set(data);\n }\n });\n }\n\n private handleError(error: any): void {\n console.error('Minimal weather widget error:', error);\n this.hasError.set(true);\n this.errorMessage.set(error.message || 'Failed to load weather data');\n }\n\n protected getConditionIcon(): string {\n const conditionId = this.weatherData()?.current.condition || 'unknown';\n\n if (this.iconCache.has(conditionId)) {\n return this.iconCache.get(conditionId)!;\n }\n\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n const iconPath = `assets/images/weather/${svgIcon}`;\n this.iconCache.set(conditionId, iconPath);\n return iconPath;\n }\n\n protected getCurrentTemperature(): number {\n if (!this.weatherData()) return 0;\n return this.temperatureUnit() === '°C' ? this.weatherData()!.current.tempC : this.weatherData()!.current.tempF;\n }\n\n protected getMaxTemp(): number {\n if (!this.weatherData()?.forecast?.[0]) return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.forecast[0].maxTempC\n : this.weatherData()!.forecast[0].maxTempF;\n }\n\n protected getMinTemp(): number {\n if (!this.weatherData()?.forecast?.[0]) return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.forecast[0].minTempC\n : this.weatherData()!.forecast[0].minTempF;\n }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\n\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../chart.type';\n\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPMinimalWeatherWidget: AXPWidgetConfig = {\n name: 'minimal-weather',\n title: 'Minimal Weather Widget',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./minimal-weather.component').then((c) => c.AXPMinimalWeatherViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 2,\n height: 2,\n\n minWidth: 1,\n minHeight: 2,\n\n maxWidth: 4,\n maxHeight: 5,\n },\n },\n};\n\n/**\n * Type declaration to register the weather widget type\n */\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n minimalWeather: 'minimal-weather';\n }\n}\n","import { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n computed,\n effect,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport { Observable, Subscription, interval as rxjsInterval, switchMap } from 'rxjs';\nimport {\n AXPWeatherApiAbstract,\n AXPWeatherApiService,\n AXPWeatherData,\n AXPWeatherRequestOptions,\n} from './weather-services';\n\n/**\n * Weather Widget Component\n * Displays current weather conditions and optional forecast data\n * for a specified location with customizable display options.\n */\n@Component({\n templateUrl: './weather-widget.component.html',\n styleUrls: ['./weather-widget.component.scss'],\n standalone: true,\n imports: [CommonModule, AXDateTimeModule, AXFormatModule, HttpClientModule, AXTranslationModule],\n providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPWeatherWidgetViewComponent extends AXPValueWidgetComponent {\n // Container element reference\n protected containerEl = viewChild.required<ElementRef<HTMLDivElement>>('containerElement');\n\n // Weather API service instance\n private weatherService = inject(AXPWeatherApiAbstract);\n\n // State signals\n protected weatherData = signal<AXPWeatherData | null>(null);\n protected isLoading = signal(true);\n protected hasError = signal(false);\n protected errorMessage = signal('');\n protected isForecastLoading = signal(false);\n\n // Auto-refresh subscription\n private refreshSubscription: Subscription | null = null;\n\n // Option-derived computed properties\n protected city = computed(() => {\n return this.options()['city'] || 'Newyork';\n });\n protected temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n protected windSpeedUnit = computed(() => this.options()['windSpeedUnit']?.id || 'km/h');\n\n // Display option flags\n protected showCurrentCondition = computed(() => this.options()['showCurrentCondition'] !== false);\n protected showTemperature = computed(() => this.options()['showTemperature'] !== false);\n protected showHumidity = computed(() => this.options()['showHumidity'] !== false);\n protected showWind = computed(() => this.options()['showWind'] !== false);\n protected showForecast = computed(() => this.options()['showForecast'] !== false);\n protected forecastDays = computed(() => this.options()['forecastDays'] ?? 5);\n\n // Refresh settings\n protected autoRefresh = computed(() => this.options()['autoRefresh'] !== false);\n protected refreshInterval = computed(() => this.options()['refreshInterval']?.id ?? 15);\n\n // Reactivity effects\n private optionsEffect = effect(() => {\n const opts = this.options();\n this.loadWeatherData();\n this.setupRefreshTimer();\n });\n\n private valueEffect = effect(() => {\n this.city();\n this.loadWeatherData();\n });\n\n protected displayedForecast = computed(() => {\n const weatherData = this.weatherData();\n if (!weatherData?.forecast) return [];\n\n const forecastDays = this.forecastDays();\n return weatherData.forecast.slice(0, forecastDays);\n });\n\n /**\n * Component constructor\n * @param cdr ChangeDetectorRef for triggering view updates\n */\n constructor(protected cdr: ChangeDetectorRef) {\n super();\n // Inject the abstract service which will resolve to either the mock or real implementation\n this.weatherService = inject(AXPWeatherApiAbstract);\n\n setTimeout(() => {\n this.loadWeatherData();\n this.setupRefreshTimer();\n }, 0);\n }\n\n /**\n * Component cleanup on destroy\n */\n ngOnDestroy(): void {\n this.clearRefreshTimer();\n }\n\n /**\n * Loads weather data from the API\n * Sets loading state and handles errors\n */\n private loadWeatherData(): void {\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n\n const locationQuery = this.city();\n const shouldShowForecast = this.showForecast();\n\n // If we need forecast, request it directly to avoid duplicate calls\n // The forecast endpoint also returns current weather\n if (shouldShowForecast) {\n const forecastOptions: AXPWeatherRequestOptions & { days?: number } = {\n location: locationQuery,\n tempUnit: this.temperatureUnit(),\n useMockData: false, // Use real API, signals to use forecast endpoint\n days: this.forecastDays(),\n };\n\n this.isForecastLoading.set(true);\n this.weatherService.getForecast(forecastOptions).subscribe({\n next: (data) => {\n this.weatherData.set(data);\n this.isLoading.set(false);\n this.isForecastLoading.set(false);\n setTimeout(() => this.cdr.detectChanges());\n },\n error: (error) => {\n this.handleError(error);\n this.isLoading.set(false);\n this.isForecastLoading.set(false);\n this.cdr.detectChanges();\n },\n });\n return;\n }\n\n // If we only need current weather, use getWeather\n const requestOptions: AXPWeatherRequestOptions = {\n location: locationQuery,\n tempUnit: this.temperatureUnit(),\n useMockData: false, // Use real API\n };\n\n this.weatherService.getWeather(requestOptions).subscribe({\n next: (data) => {\n this.weatherData.set(data);\n this.isLoading.set(false);\n setTimeout(() => this.cdr.detectChanges());\n },\n error: (error) => {\n this.handleError(error);\n this.isLoading.set(false);\n this.cdr.detectChanges();\n },\n });\n }\n\n /**\n * Sets up the auto-refresh timer based on configuration\n */\n private setupRefreshTimer(): void {\n this.clearRefreshTimer();\n if (!this.autoRefresh()) return;\n\n const minInterval = 5; // 5 minutes minimum\n const intervalValue = Math.max(this.refreshInterval(), minInterval);\n const intervalMs = intervalValue * 60 * 1000;\n\n this.refreshSubscription = rxjsInterval(intervalMs)\n .pipe(\n switchMap(() => {\n // Always use the loadWeatherData method to determine the correct API call\n this.loadWeatherData();\n // Return an empty observable to satisfy the switchMap typing\n return new Observable<AXPWeatherData>((observer) => {\n observer.complete();\n });\n }),\n )\n .subscribe();\n }\n\n /**\n * Clears the refresh timer subscription\n */\n private clearRefreshTimer(): void {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n this.refreshSubscription = null;\n }\n }\n\n /**\n * Manually refreshes the weather data\n */\n protected refreshWeather(): void {\n this.loadWeatherData();\n }\n\n /**\n * Gets the current temperature based on selected unit\n */\n protected getCurrentTemperature(): number {\n if (!this.weatherData()) return 0;\n\n return this.temperatureUnit() === '°C' ? this.weatherData()!.current.tempC : this.weatherData()!.current.tempF;\n }\n\n /**\n * Gets the feels like temperature based on selected unit\n */\n protected getFeelsLikeTemperature(): number {\n if (!this.weatherData()) return 0;\n\n return this.temperatureUnit() === '°C'\n ? this.weatherData()!.current.feelsLikeC\n : this.weatherData()!.current.feelsLikeF;\n }\n\n /**\n * Gets the humidity percentage\n */\n protected getHumidity(): number {\n return this.weatherData()?.current.humidity || 0;\n }\n\n /**\n * Gets the wind speed based on selected unit\n */\n protected getWindSpeed(): number {\n if (!this.weatherData()) return 0;\n\n return this.windSpeedUnit() === 'km/h' ? this.weatherData()!.current.windKph : this.weatherData()!.current.windMph;\n }\n\n /**\n * Gets the current weather condition\n */\n protected getCurrentCondition(): string {\n const conditionId = this.weatherData()?.current.condition || '';\n return this.getConditionName(conditionId);\n }\n\n /**\n * Gets the formatted last updated time\n */\n protected getLastUpdated(): string {\n if (!this.weatherData()?.current.lastUpdated) return '';\n\n return new Date(this.weatherData()!.current.lastUpdated).toLocaleTimeString();\n }\n\n /**\n * Gets the appropriate icon class for a weather condition\n * @param conditionId The ID of the weather condition\n * @returns The Font Awesome icon class string\n */\n protected getConditionIcon(conditionId: string): string {\n if (!conditionId) {\n conditionId = 'unknown';\n }\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n return `assets/images/weather/${svgIcon}`;\n }\n\n /**\n * Gets the display name for a weather condition\n * @param conditionId The ID of the weather condition\n * @returns The translated display name\n */\n protected getConditionName(conditionId: string): string {\n const condition = this.weatherService.getCondition(conditionId);\n if (!condition?.name) return 'weather.conditions.sunny';\n\n // Convert condition name to lowercase and replace spaces with hyphens\n const formattedName = condition.name.toLowerCase().replace(/\\s+/g, '-');\n return `weather.conditions.${formattedName}`;\n }\n\n /**\n * Gets the color for a weather condition\n * @param conditionId Weather condition ID\n * @returns CSS color value\n */\n protected getConditionColor(conditionId: string): string {\n const condition = this.weatherService.getCondition(conditionId);\n return condition?.color || '#999999';\n }\n\n /**\n * Cleans up chart resources\n * Required by AXPChartBaseComponent\n */\n protected cleanupChart(): void {\n this.clearRefreshTimer();\n }\n\n private handleError(error: any): void {\n console.error('Weather widget error:', error);\n this.hasError.set(true);\n\n // Check if it's a network error\n if (error.status === 0) {\n this.errorMessage.set('weather.error.network');\n return;\n }\n\n // Check if it's an API error\n if (error.status >= 400 && error.status < 500) {\n this.errorMessage.set('weather.error.api');\n return;\n }\n\n // Default error message\n this.errorMessage.set('weather.error.general');\n }\n\n protected getTemperatureUnit(): string {\n return this.temperatureUnit() === '°C' ? 'weather.units.celsius' : 'weather.units.fahrenheit';\n }\n\n protected getWindSpeedUnit(): string {\n return this.windSpeedUnit() === 'km/h' ? 'weather.units.kmh' : 'weather.units.mph';\n }\n\n protected getDayName(date: Date): string {\n const today = new Date();\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'weather.days.today';\n }\n if (date.toDateString() === tomorrow.toDateString()) {\n return 'weather.days.tomorrow';\n }\n\n const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n return `weather.days.${days[date.getDay()]}`;\n }\n\n protected parseDate(dateStr: string): Date {\n return new Date(dateStr);\n }\n}\n","<!-- Weather Widget Component Template -->\n<div class=\"axp-weather-container\" #containerElement>\n <!-- Loading indicator -->\n @if (isLoading()) {\n <div class=\"axp-weather-loading-overlay\">\n <div class=\"axp-weather-loading-spinner\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n </div>\n }\n\n <!-- Error message -->\n @if (hasError()) {\n <div class=\"axp-weather-error-overlay\">\n <div class=\"axp-weather-error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n <span>{{ errorMessage() | translate: { scope: 'dashboard' } | async }}</span>\n <button class=\"axp-weather-retry-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.retry' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n }\n\n <!-- Weather content - only show when we have data -->\n @if (weatherData()) {\n <!-- Background decorations based on weather condition -->\n <div class=\"axp-weather-background-decorations\">\n <div class=\"axp-weather-decoration\" [ngClass]=\"weatherData()?.current?.condition?.toLowerCase()\"></div>\n <div class=\"axp-weather-gradient-overlay\"></div>\n </div>\n\n <div class=\"axp-weather-inner\">\n <!-- Location information section -->\n <div class=\"axp-weather-location-info\">\n <div class=\"axp-weather-location-icon\">\n <i class=\"fa-solid fa-location-dot\"></i>\n </div>\n <div class=\"axp-weather-location-text\">\n <h2 class=\"axp-weather-location-name\">{{ city() }}</h2>\n </div>\n </div>\n\n <!-- Current weather conditions section -->\n <div class=\"axp-weather-current-weather\">\n <!-- Weather icon and condition name -->\n @if (showCurrentCondition()) {\n <div class=\"axp-weather-condition\">\n <div class=\"axp-weather-icon-wrapper\">\n <div class=\"axp-weather-icon\">\n <img [src]=\"getConditionIcon(weatherData()?.current?.condition || '')\" />\n </div>\n <div\n class=\"axp-weather-icon-glow\"\n [style.background-color]=\"getConditionColor(weatherData()?.current?.condition || '')\"\n ></div>\n </div>\n <div class=\"axp-weather-condition-name\">\n {{ getCurrentCondition() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n }\n\n <!-- Temperature display -->\n @if (showTemperature()) {\n <div class=\"axp-weather-temperature\">\n <span class=\"axp-weather-temperature-value\">{{ getCurrentTemperature() }}</span>\n <span class=\"axp-weather-temperature-unit\">{{\n getTemperatureUnit() | translate: { scope: 'dashboard' } | async\n }}</span>\n </div>\n }\n </div>\n\n <!-- Weather details section (humidity and wind) -->\n @if (showHumidity() || showWind()) {\n <div class=\"axp-weather-details\">\n <!-- Humidity information -->\n @if (showHumidity()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-droplet\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.humidity' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">{{ getHumidity() }}%</div>\n </div>\n </div>\n }\n\n <!-- Wind speed information -->\n @if (showWind()) {\n <div class=\"axp-weather-detail-item\">\n <div class=\"axp-weather-detail-icon\">\n <i class=\"fa-solid fa-wind\"></i>\n </div>\n <div class=\"axp-weather-detail-info\">\n <div class=\"axp-weather-detail-label\">\n {{ 'weather.wind' | translate: { scope: 'dashboard' } | async }}\n </div>\n <div class=\"axp-weather-detail-value\">\n {{ getWindSpeed() }} {{ getWindSpeedUnit() | translate: { scope: 'dashboard' } | async }}\n </div>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Weather forecast section -->\n @if (showForecast() && weatherData()?.forecast) {\n <div class=\"axp-weather-forecast\">\n <div class=\"axp-weather-forecast-header\">\n <h3 class=\"axp-weather-forecast-title\">\n <i class=\"fa-solid fa-calendar-days\"></i>\n <span class=\"ax-px-1\">{{ 'weather.forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </h3>\n </div>\n <!-- Loading indicator for forecast -->\n <!-- @if (isForecastLoading()) {\n <div class=\"axp-weather-forecast-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>{{ 'weather.loading-forecast' | translate: { scope: 'dashboard' } | async }}</span>\n </div>\n } -->\n <!-- Scrollable forecast days display -->\n <div class=\"axp-weather-forecast-items\">\n @for (day of displayedForecast(); track day.day) {\n <div class=\"axp-weather-forecast-day\">\n <div class=\"axp-weather-forecast-day-name\">\n {{ getDayName(parseDate(day.date)) | translate: { scope: 'dashboard' } | async }}\n </div>\n <div\n class=\"axp-weather-forecast-icon\"\n [title]=\"getConditionName(day.condition) | translate: { scope: 'dashboard' } | async\"\n >\n <img [src]=\"getConditionIcon(day.condition || '')\" />\n </div>\n <div class=\"axp-weather-forecast-temps\">\n <span class=\"axp-weather-forecast-low\">\n {{ temperatureUnit() === '°C' ? day.minTempC : day.minTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n <span class=\"axp-weather-forecast-high\">\n {{ temperatureUnit() === '°C' ? day.maxTempC : day.maxTempF\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Last updated timestamp -->\n <div class=\"axp-weather-last-updated\">\n <span>{{ 'weather.last-updated' | translate: { scope: 'dashboard' } | async }}: {{ getLastUpdated() }}</span>\n </div>\n\n <!-- Manual refresh button -->\n <div class=\"axp-weather-refresh-action\">\n <button\n class=\"axp-weather-refresh-button\"\n (click)=\"refreshWeather()\"\n [attr.aria-label]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n [title]=\"'weather.refresh' | translate: { scope: 'dashboard' } | async\"\n >\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.refresh' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n </div>\n } @else if (!isLoading() && !hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"axp-weather-no-data-state\">\n <i class=\"fa-solid fa-cloud-sun\"></i>\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <button class=\"axp-weather-refresh-button\" (click)=\"refreshWeather()\">\n <i class=\"fa-solid fa-sync-alt\"></i>\n <span>{{ 'weather.load-data' | translate: { scope: 'dashboard' } | async }}</span>\n </button>\n </div>\n }\n</div>\n","import { AXPWidgetConfig, AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\n\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nimport {\n AXP_APPEARANCE_PROPERTY_GROUP,\n AXP_BEHAVIOR_PROPERTY_GROUP,\n AXP_DATA_PROPERTY_GROUP,\n} from '@acorex/platform/widgets';\n\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPWeatherWidget: AXPWidgetConfig = {\n name: 'weather',\n title: 'Weather Widget',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n /* Location Settings */\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n\n /* Display Options */\n // {\n // name: 'showCurrentCondition',\n // title: 'Show Current Condition',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showCurrentCondition',\n // path: 'options.showCurrentCondition',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showTemperature',\n // title: 'Show Temperature',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showTemperature',\n // path: 'options.showTemperature',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showCurrentCondition',\n // title: 'Show Current Condition',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showCurrentCondition',\n // path: 'options.showCurrentCondition',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showTemperature',\n // title: 'Show Temperature',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showTemperature',\n // path: 'options.showTemperature',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n {\n name: 'showHumidity',\n title: '@dashboard:widgets.weather.show-humidity',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showHumidity',\n path: 'options.showHumidity',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showWind',\n title: '@dashboard:widgets.weather.show-wind',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showWind',\n path: 'options.showWind',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showForecast',\n title: '@dashboard:widgets.weather.show-forecast',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showForecast',\n path: 'options.showForecast',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'forecastDays',\n title: '@dashboard:widgets.weather.forecast-days',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 5,\n dataType: 'number',\n interface: {\n name: 'forecastDays',\n path: 'options.forecastDays',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 7,\n step: 1,\n },\n },\n },\n visible: true,\n },\n\n /* Units Settings */\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'windSpeedUnit',\n title: '@dashboard:widgets.weather.wind-speed-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'km/h',\n dataType: 'string',\n interface: {\n name: 'windSpeedUnit',\n path: 'options.windSpeedUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['km/h', 'mph', 'm/s'],\n },\n },\n },\n visible: true,\n },\n\n /* Refresh Settings */\n {\n name: 'autoRefresh',\n title: '@dashboard:widgets.weather.auto-refresh',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'autoRefresh',\n path: 'options.autoRefresh',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'refreshInterval',\n title: '@dashboard:widgets.weather.refresh-interval',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 15,\n dataType: 'number',\n interface: {\n name: 'refreshInterval',\n path: 'options.refreshInterval',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [5, 10, 15, 30, 60],\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./weather-widget.component').then((c) => c.AXPWeatherWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 7,\n\n minWidth: 2,\n minHeight: 4,\n\n maxWidth: 4,\n maxHeight: 8,\n },\n },\n};\n\n/**\n * Type declaration to register the weather widget type\n */\ndeclare module '@acorex/platform/layout/builder' {\n interface AXPWidgetTypesMap {\n weather: 'weather';\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '@acorex/modules/common';\nimport { AXPSearchDisplayResult } from '@acorex/platform/common';\nimport { AXPDataGenerator, AXPExecuteCommand } from '@acorex/platform/core';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject } from '@angular/core';\n\nexport interface AXPShortcutItem {\n name: string;\n title: string;\n description?: string;\n icon: string;\n command: AXPExecuteCommand;\n}\n\n@Component({\n template: `\n @if (item()) {\n <div\n class=\"ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden \"\n (click)=\"executeCommand()\"\n >\n <div class=\"ax-absolute ax-inset-0 ax-bg-black/0 hover:ax-bg-black/10 ax-transition-opacity\"></div>\n <i [class]=\"item().icon + ' ax-text-3xl'\"></i>\n <span class=\"ax-text-xl ax-font-semibold\">{{ item().title | translate | async }}</span>\n @if (item().description) {\n <span class=\"ax-text-sm ax-opacity-90 ax-text-center ax-px-2\">{{\n item().description! | translate | async\n }}</span>\n }\n </div>\n } @else {\n <div\n (click)=\"setCommand()\"\n class=\"ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden\"\n >\n <div class=\"ax-absolute ax-inset-0 ax-bg-black/0 hover:ax-bg-black/5 ax-transition-opacity\"></div>\n <i class=\"fa-light fa-plus ax-text-3xl\"></i>\n <span class=\"ax-text-xl ax-font-semibold\">{{\n '@dashboard:widgets.dashboard-shortcut.add-shortcut' | translate | async\n }}</span>\n </div>\n }\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n})\nexport class AXPDashboardShortcutWidgetViewComponent extends AXPLayoutWidgetComponent {\n private popupService = inject(AXPopupService);\n private workflow = inject(AXPWorkflowService);\n private searchConfig = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);\n\n protected item = computed<AXPShortcutItem>(() => this.options()['item'] as AXPShortcutItem);\n protected color = computed<string>(() => this.options()['color'] as string);\n\n override ngOnInit(): void {\n super.ngOnInit();\n if (!this.color()) {\n this.setOptions({\n color: AXPDataGenerator.color(),\n });\n }\n }\n\n protected async executeCommand() {\n if (this.item()?.command) {\n await this.workflow.execute(this.item().command.name, this.item().command.options);\n }\n }\n\n protected async setCommand() {\n const component = await this.searchConfig.window();\n const popup = await this.popupService.open(component, {\n title: 'Choose command...',\n size: 'fit',\n closeOnBackdropClick: true,\n header: false,\n });\n if (popup.data) {\n const result = popup.data as AXPSearchDisplayResult;\n if (result && result.command) {\n this.setOptions({\n item: {\n name: result.name,\n title: result.title,\n description: result.description,\n icon: result.icon,\n command: result.command,\n } as AXPShortcutItem,\n });\n }\n }\n }\n\n @HostBinding('style')\n private get __style() {\n const cls: any = {};\n cls[`background-color`] = this.color();\n return cls;\n }\n\n @HostBinding('class')\n private get __class() {\n const cls: any = {};\n cls[`ax-flex`] = true;\n cls[`ax-flex-col`] = true;\n cls[`ax-items-center`] = true;\n cls[`ax-justify-center`] = true;\n cls[`ax-w-full`] = true;\n cls[`ax-h-full`] = true;\n cls[`ax-text-center`] = true;\n cls[`ax-overflow-hidden`] = true;\n cls[`ax-cursor-pointer`] = true;\n cls[`ax-text-white`] = true;\n return cls;\n }\n}\n","import { AXPWidgetConfig, AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nimport { AXP_COLOR_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\n\nexport const AXPDashboardShortcutWidget: AXPWidgetConfig = {\n name: 'dashboard-shortcut',\n title: 'Shortcut',\n description: 'Quick access to your key features.',\n type: 'view',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n icon: 'fa-light fa-link',\n properties: [\n {\n ...AXP_COLOR_PROPERTY,\n title: '@dashboard:widgets.dashboard-shortcut.color',\n },\n ],\n meta: {\n dimensions: {\n width: 2,\n height: 2,\n minWidth: 1,\n minHeight: 1,\n maxWidth: 3,\n maxHeight: 2,\n },\n },\n components: {\n view: {\n component: () =>\n import('./dashboard-shortcut-widget-view.component').then((c) => c.AXPDashboardShortcutWidgetViewComponent),\n },\n },\n};\n","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { RootConfig } from './const';\n\nexport class AXMMenuProvider implements AXPMenuProvider {\n private sessionService = inject(AXPSessionService);\n private entityService = inject(AXPEntityService);\n\n async provide(context: AXPMenuProviderContext): Promise<void> {\n const scope = RootConfig.config.i18n;\n const module = RootConfig.module;\n const appName = this.sessionService.application?.name;\n\n context.addItems([\n {\n priority: 9001,\n text: `t('root-menu', {scope: \"${scope}\"})`,\n icon: RootConfig.module.icon,\n data: {\n // requiredPermission: 'demo.admin.settings',\n },\n children: [\n {\n text: `t('dashboards', {scope: \"${scope}\"})`,\n path: `${this.sessionService.application?.name}/dashboard/management`,\n icon: RootConfig.entities.dashboard.icon,\n priority: 1,\n },\n ],\n },\n ]);\n\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n }\n}\n","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_HOME_PAGE_DEFAULT_KEY, AXP_HOME_PAGES, AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\nimport { inject, NgModule } from '@angular/core';\nimport { Route, Routes } from '@angular/router';\nimport { AXMDashboardService, AXMDashboardServiceImpl } from './entities';\nimport { AXMEntityProvider } from './entity.provider';\nimport {\n AXPAdvancedWeatherWidget,\n AXPAnalogClockWidget,\n AXPBarChartWidget,\n AXPClockCalendarWidget,\n AXPDonutChartWidget,\n AXPGaugeChartWidget,\n AXPLineChartWidget,\n AXPMinimalWeatherWidget,\n AXPStickyNoteWidget,\n AXPTaskListWidget,\n AXPWeatherWidget,\n} from './features/shared/widgets';\nimport { AXPDashboardShortcutWidget } from './features/shared/widgets/dashboard-shortcut';\nimport { AXMMenuProvider } from './menu.provider';\n\n// Separate dashboard routes configuration\nconst dashboardRoutes: Routes = [\n {\n path: 'dashboard',\n loadComponent: () =>\n import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n {\n path: 'dashboard/management',\n data: {\n isAdmin: true,\n //roles: ['admin'], // Add roles if needed\n //permissions: ['manage_dashboard'], // Add required permissions if needed\n },\n loadComponent: () =>\n import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n];\n\nfunction createAppRoute(): Route {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n return {\n path: ':app/dashboard',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return config.viewers.root();\n },\n children: [\n {\n path: '',\n loadComponent: () =>\n import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n {\n path: 'management',\n data: {\n isAdmin: true,\n },\n loadComponent: () =>\n import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n ],\n };\n}\n\n@NgModule({\n imports: [\n AXPLayoutBuilderModule.forChild({\n widgets: [\n AXPDashboardShortcutWidget,\n //charts\n AXPDonutChartWidget,\n AXPBarChartWidget,\n AXPLineChartWidget,\n AXPGaugeChartWidget,\n //utility\n AXPStickyNoteWidget,\n AXPClockCalendarWidget,\n AXPWeatherWidget,\n AXPTaskListWidget,\n AXPMinimalWeatherWidget,\n AXPAdvancedWeatherWidget,\n AXPAnalogClockWidget,\n ],\n }),\n ],\n providers: [\n {\n provide: AXMDashboardService,\n useClass: AXMDashboardServiceImpl,\n },\n {\n provide: AXP_HOME_PAGES,\n multi: true,\n useFactory: () => [\n {\n key: 'dashboard',\n title: 'Dashboard',\n route: createAppRoute(),\n },\n ],\n },\n AXPWidgetsModule,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_HOME_PAGE_DEFAULT_KEY,\n useValue: 'dashboard',\n },\n ],\n})\nexport class AXMDashboardManagementModule {}\n","import { AXButtonItemComponent, AXButtonModule } from '@acorex/components/button';\nimport { AXEvent, AXItemClickEvent } from '@acorex/cdk/common';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetRendererDirective } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n input,\n output,\n signal,\n} from '@angular/core';\n\n@Component({\n selector: 'axm-dashboard-widget-wrapper',\n templateUrl: './dashboard-widget-wrapper.html',\n styleUrls: ['./dashboard-widget-wrapper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule, CommonModule],\n standalone: true,\n})\nexport class AXMDashboardWidgetWrapperComponent {\n title = input<string | null>(null);\n\n onDelete = output<void>();\n onConfiguration = output<void>();\n onValueChanged = output<unknown>();\n onOptionsChanged = output<unknown>();\n\n widget = contentChild(AXPWidgetRendererDirective);\n\n #init = afterNextRender(() => {\n this.widget()?.onOptionsChanged.subscribe((c) => {\n this.onOptionsChanged.emit(c.widget.options());\n });\n this.widget()?.onValueChanged.subscribe((c) => {\n this.onValueChanged.emit(c.widget.getValue());\n });\n });\n\n hasConfiguration = input<boolean>(true);\n isLocked = input<boolean>(false);\n isDropdownOpen = signal(false);\n\n handleOnItemClick(event: AXItemClickEvent<AXButtonItemComponent>) {\n switch (event.item.data) {\n case 'delete':\n this.onDelete.emit();\n break;\n case 'configuration':\n this.onConfiguration.emit();\n break;\n default:\n break;\n }\n this.isDropdownOpen.set(false);\n }\n log(event: AXEvent) {\n console.log('Dropdown event:', event);\n }\n}\n","<section class=\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\">\n <!-- Action button - stays absolute -->\n @if(!isLocked()) {\n <div\n class=\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[99] ax-invisible group-hover:ax-visible md:group-hover:ax-visible\"\n [class.!ax-visible]=\"isDropdownOpen()\"\n (touchstart)=\"isDropdownOpen.set(true)\"\n >\n <ax-button class=\"ax-sm ax-main-button\" [look]=\"'blank'\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-ellipsis-vertical\"></ax-icon>\n </ax-prefix>\n <ax-dropdown-panel (onOpened)=\"isDropdownOpen.set(true)\" (onClosed)=\"isDropdownOpen.set(false)\">\n <ng-container *translate=\"let t\">\n <ax-button-item-list (onItemClick)=\"handleOnItemClick($event)\">\n @if(hasConfiguration()){\n <ax-button-item\n [data]=\"'configuration'\"\n [text]=\"(t('configuration', { scope: 'dashboard' }) | async) || 'configuration'\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-cog\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-divider></ax-divider>\n }\n <ax-button-item [data]=\"'delete'\" [text]=\"(t('delete') | async) || 'delete'\" color=\"danger\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ng-container>\n </ax-dropdown-panel>\n </ax-button>\n </div>\n }\n\n <!-- Title section -->\n @if(title()) {\n <div class=\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\">\n <h3 class=\"ax-text-start ax-text-lg ax-font-medium ax-truncate\">{{title()}}</h3>\n </div>\n }\n\n <!-- Content section -->\n <div class=\"ax-overflow-auto ax-h-full\">\n <ng-content></ng-content>\n </div>\n</section>\n","const path = 'home:dashboard:';\nexport enum AXPHomeDashboardSetting {\n CurrentDashboard = `${path}current-dashboard`,\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXMOrganizationManagementRoleEntityService } from '@acorex/modules/organization-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, model, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { AXMDashboardLayout } from '../dashboard-home';\nimport { RootConfig } from '../../../const';\n\n@Component({\n template: `\n <div class=\"ax-card-body ax-p-4\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-pb-4\">\n <p class=\"ax-font-semibold\">{{ 'title' | translate | async }}</p>\n <ax-text-box [(ngModel)]=\"title\" name=\"title\" placeholder=\"{{ 'title' | translate | async }}\"> </ax-text-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'description' | translate | async }}</p>\n <ax-text-box [(ngModel)]=\"description\" name=\"description\" placeholder=\"{{ 'description' | translate | async }}\">\n </ax-text-box>\n </div>\n\n @if (isAdmin()) {\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n <p class=\"ax-font-semibold\">{{ 'roles' | translate: { scope } | async }}</p>\n <ax-select-box\n [(ngModel)]=\"selectedRoleIds\"\n [dataSource]=\"roles\"\n [multiple]=\"true\"\n [textField]=\"'title'\"\n [valueField]=\"'id'\"\n name=\"roles\"\n placeholder=\"{{ 'select-roles' | translate: { scope } | async }}\"\n >\n </ax-select-box>\n </div>\n\n <div class=\"ax-grid grid-cols-2 ax-grid-flow-col ax-gap-8 ax-mt-4\">\n <div class=\"ax-flex ax-flex-row ax-items-center ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'disable' | translate: { scope } | async }}</p>\n <ax-switch [(ngModel)]=\"isDisabled\" name=\"isDisabled\"></ax-switch>\n </div>\n\n <div class=\"ax-flex ax-flex-row ax-items-center ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'lock' | translate: { scope } | async }}</p>\n <ax-switch [(ngModel)]=\"isLocked\" name=\"isLocked\"></ax-switch>\n </div>\n </div>\n }\n </div>\n\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button [text]=\"'cancel' | translate | async\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button\n [text]=\"'save' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"!isValid\"\n (onClick)=\"handleClose()\"\n >\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [\n FormsModule,\n AXButtonModule,\n AXTextBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n CommonModule,\n AXTranslationModule,\n AXSelectBoxModule,\n AXSwitchModule,\n ],\n standalone: true,\n})\nexport class AXMAddDashboardPopup extends AXBasePageComponent implements OnInit {\n protected readonly scope = RootConfig.config.i18n;\n\n private readonly data: Partial<AXMDashboardLayout & { isAdmin: boolean }>;\n\n private readonly roleService = inject(AXMOrganizationManagementRoleEntityService);\n private readonly sessionService = inject(AXPSessionService);\n\n protected title = model<string>('');\n protected description = model<string>('');\n protected selectedRoleIds = model<string[]>([]);\n protected isDisabled = model<boolean>(false);\n protected isLocked = model<boolean>(false);\n protected isAdmin = model<boolean>(false);\n protected roles: any[] = [];\n\n protected get isValid(): boolean {\n return !!this.title()?.trim();\n }\n\n override async ngOnInit(): Promise<void> {\n // Set initial values from input data\n this.title.set(this.data?.title || '');\n this.description.set(this.data?.description || '');\n this.isDisabled.set(this.data?.isDeleted || false);\n this.isLocked.set(this.data?.locked || false);\n this.isAdmin.set(this.data?.isAdmin || false);\n // Load roles if admin\n if (this.isAdmin()) {\n try {\n const result = await this.roleService.query({ skip: 0, take: 100 });\n if (result.items && result.items.length > 0) {\n this.roles = result.items.map((i) => ({\n id: i.id,\n title: i.title,\n }));\n }\n this.selectedRoleIds.set(this.roles.filter((i) => this.data?.roleIds?.includes(i.id)).map((i) => i.id));\n } catch (error) {\n console.error('Error loading roles:', error);\n this.roles = [];\n }\n }\n }\n\n protected async handleClose(isCanceled = false): Promise<void> {\n this.close({\n title: this.title()?.trim(),\n description: this.description()?.trim(),\n roleIds: this.isAdmin() ? this.selectedRoleIds() : undefined,\n isDeleted: this.isAdmin() ? this.isDisabled() : undefined,\n locked: this.isAdmin() ? this.isLocked() : undefined,\n scope: this.isAdmin() ? 'T' : 'U',\n createdBy: this.sessionService.user?.id,\n createdAt: new Date(),\n updatedBy: this.sessionService.user?.id,\n updatedAt: new Date(),\n isCanceled,\n });\n }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPWidgetPropertiesChangedEvent, AXPWidgetPropertyViewerComponent } from '@acorex/platform/layout/designer';\nimport { Component, OnInit, signal } from '@angular/core';\n\n@Component({\n template: `\n @if(widget) {\n <div class=\"ax-px-1\">\n <axp-widget-property-viewer (onChanged)=\"handlePropertyChange($event)\" [widget]=\"widget\">\n </axp-widget-property-viewer>\n </div>\n }\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button text=\"Save\" look=\"solid\" color=\"primary\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [AXButtonModule, AXDecoratorModule, AXPWidgetPropertyViewerComponent],\n})\nexport class AXMConfigurationPopup extends AXBasePageComponent implements OnInit {\n widget!: AXPWidgetNode;\n protected readonly widgetData = signal<AXPWidgetNode | null>(null);\n\n override ngOnInit(): void {\n this.widgetData.set(this.widget);\n }\n\n protected async handleClose(isCanceled = false): Promise<void> {\n this.close({\n isCanceled,\n widget: this.widgetData(),\n });\n }\n\n protected handlePropertyChange(event: AXPWidgetPropertiesChangedEvent): void {\n this.widgetData.set(event.values);\n }\n}\n","import { AXPopupService } from '@acorex/components/popup';\nimport { AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMDashboardLayout } from '../dashboard-home';\nimport { AXMAddDashboardPopup } from './add-dashboard-popup';\nimport { AXMConfigurationPopup } from './configuration-popup';\nimport { AXTranslationService } from '@acorex/core/translation';\n\n@Injectable({ providedIn: 'root' })\nexport class AXMDashboardPopupService {\n private readonly popupService = inject(AXPopupService);\n private readonly translateService = inject(AXTranslationService);\n\n async generateDashboardLayout(\n data: Partial<AXMDashboardLayout>,\n isAdmin: boolean,\n ): Promise<AXMDashboardLayout | void> {\n // Add isAdmin to the data object\n const dashboardData: any = { ...data, isAdmin };\n\n const result = await this.popupService.open(AXMAddDashboardPopup, {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n title: await this.translateService.translateAsync('dashboard-info', { scope: 'dashboard' }),\n data: { data: dashboardData },\n });\n\n if (!result.data) {\n return;\n }\n\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n\n return rest as AXMDashboardLayout;\n }\n\n async handlePopupConfiguration(widget: AXPWidgetNode): Promise<AXPWidgetNode | void> {\n const result = await this.popupService.open(AXMConfigurationPopup, {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n title: await this.translateService.translateAsync('widget-configuration', { scope: 'dashboard' }),\n data: { widget },\n });\n\n if (!result.data) {\n return;\n }\n\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n\n return rest.widget as AXPWidgetNode;\n }\n}\n","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXGridLayoutEvent, AXGridLayoutOptions } from '@acorex/components/grid-layout-builder';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPDataGenerator, AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPWidgetGroupEnum, AXPWidgetNode } from '@acorex/platform/layout/builder';\nimport { AXPWidgetPickerService } from '@acorex/platform/layout/designer';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { computed, effect, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { AXMDashboardService } from '../../../entities/dashboard/dashboard.service';\nimport { AXMCommonDashboardEntityModel } from '../../../entities/dashboard/dashboard.types';\nimport { AXPHomeDashboardSetting } from '../../../settings.keys';\nimport { AXMDashboardPopupService } from '../dashboard-popups/dashboard-popup.service';\nimport { AXMDashboardLayout, AXMDashboardWidgetData } from './home-dashboard.type';\n\n// Types\ninterface DashboardState {\n dashboards: AXMDashboardLayout[];\n allDashboards: AXMDashboardLayout[];\n currentDashboardId: string | null;\n isAdmin: boolean;\n dashboardsOption: AXGridLayoutOptions;\n isLoading: boolean;\n}\n\ninterface WidgetConfig {\n id: string;\n height?: number;\n width?: number;\n minHeight?: number;\n minWidth?: number;\n maxHeight?: number;\n maxWidth?: number;\n}\n\ntype DashboardScope = 'U' | 'T';\n\n// Helper functions\nconst createInitialState = (): DashboardState => ({\n dashboards: [],\n allDashboards: [],\n currentDashboardId: null,\n isAdmin: false,\n dashboardsOption: {\n float: false,\n cellHeight: 75,\n gap: 5,\n minRow: 9,\n column: 12,\n responsiveLayout: [\n { column: 12, width: 2048 },\n { column: 6, width: 768 },\n { column: 1, width: 480 },\n ],\n },\n isLoading: false,\n});\n\nconst modelToDashboardLayout = (model: AXMCommonDashboardEntityModel): AXMDashboardLayout => ({\n id: model.id || '',\n title: model.title,\n description: model.description,\n widgets: model.widgets || [],\n roleIds: model.roleIds,\n isDeleted: model.isDeleted,\n locked: model.locked,\n createdAt: model.createdAt,\n updatedAt: model.updatedAt,\n createdBy: model.createdBy,\n updatedBy: model.updatedBy,\n scope: model.scope,\n});\n\nconst dashboardLayoutToModel = (layout: AXMDashboardLayout): AXMCommonDashboardEntityModel => ({\n id: layout.id,\n name: layout.title,\n title: layout.title,\n description: layout.description || '',\n widgets: layout.widgets,\n roleIds: layout.roleIds,\n isDeleted: layout.isDeleted,\n locked: layout.locked,\n createdAt: layout.createdAt,\n updatedAt: layout.updatedAt,\n createdBy: layout.createdBy,\n updatedBy: layout.updatedBy,\n scope: layout.scope,\n});\n\n// Create the SignalStore\nexport const AXMDashboardStore = signalStore(\n { providedIn: 'root' },\n\n // Initial State Definition\n withState(() => createInitialState()),\n\n // Computed Properties\n withComputed(\n (state, sessionService = inject(AXPSessionService), layoutThemeService = inject(AXPLayoutThemeService)) => ({\n selectedDashboard: computed(\n () => state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId()) || null,\n ),\n isUserAdmin: computed(() => state.isAdmin()),\n availableDashboards: computed(() => state.allDashboards()),\n currentLayoutOptions: computed(() => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n const baseOptions = state.dashboardsOption();\n\n if (!currentDashboard) return baseOptions;\n if (!layoutThemeService.isDesktopDevice()) {\n return { ...baseOptions, disableDrag: true, disableResize: true };\n }\n if (baseOptions.disableDrag !== undefined && baseOptions.disableResize !== undefined) {\n return baseOptions;\n }\n if (currentDashboard.locked === true) {\n return { ...baseOptions, disableDrag: true, disableResize: true };\n }\n if (state.isAdmin()) return baseOptions;\n\n const userRole = sessionService.user ? (sessionService.user as any)['role'] : undefined;\n const hasRoleIds =\n currentDashboard.roleIds && Array.isArray(currentDashboard.roleIds) && currentDashboard.roleIds.length > 0;\n const hasUserRole = userRole && hasRoleIds && currentDashboard.roleIds?.includes(userRole);\n\n if (!state.isAdmin() && hasUserRole && currentDashboard.scope === 'T') {\n return { ...baseOptions, disableDrag: true, disableResize: true };\n }\n\n return baseOptions;\n }),\n canConfigureWidget: computed(() => (widget: AXMDashboardWidgetData) => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n if (!currentDashboard) return true;\n if (state.isAdmin()) return widget.node?.options?.['hasConfiguration'] ?? true;\n if (currentDashboard.locked === true) return false;\n\n const userRole = sessionService.user ? (sessionService.user as any)['role'] : undefined;\n const hasRoleIds =\n currentDashboard.roleIds && Array.isArray(currentDashboard.roleIds) && currentDashboard.roleIds.length > 0;\n const hasUserRole = userRole && hasRoleIds && currentDashboard.roleIds?.includes(userRole);\n\n if (hasUserRole && currentDashboard.scope === 'T') return false;\n return widget.node?.options?.['hasConfiguration'] ?? true;\n }),\n isWidgetLocked: computed(() => (widget: AXMDashboardWidgetData) => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n if (!currentDashboard) return false;\n if (currentDashboard.locked === true) return true;\n if (state.isAdmin()) return false;\n\n const userRole = sessionService.user ? (sessionService.user as any)['role'] : undefined;\n const hasRoleIds =\n currentDashboard.roleIds && Array.isArray(currentDashboard.roleIds) && currentDashboard.roleIds.length > 0;\n const hasUserRole = userRole && hasRoleIds && currentDashboard.roleIds?.includes(userRole);\n\n return hasUserRole && currentDashboard.scope === 'T';\n }),\n }),\n ),\n\n // Methods for State Management\n withMethods(\n (\n store,\n dashboardPopup = inject(AXMDashboardPopupService),\n dialogService = inject(AXDialogService),\n translationService = inject(AXTranslationService),\n widgetPickerService = inject(AXPWidgetPickerService),\n dashboardService = inject(AXMDashboardService),\n settingService = inject(AXPSettingService),\n sessionService = inject(AXPSessionService),\n layoutThemeService = inject(AXPLayoutThemeService),\n ) => {\n // Load dashboards from service - runs on init via effect\n effect(() => {\n loadDashboards();\n });\n\n // Load dashboards from service\n async function loadDashboards(): Promise<void> {\n try {\n patchState(store, { isLoading: true });\n const result = await dashboardService.query({ skip: 0, take: 100 });\n const dashboardModels = result.items || [];\n const dashboards = dashboardModels.map(modelToDashboardLayout);\n const currentDashboardId = await settingService\n .scope(AXPPlatformScope.User)\n .get(AXPHomeDashboardSetting.CurrentDashboard);\n\n let newCurrentDashboardId = null;\n if (dashboards.length > 0) {\n const dashboardExists = currentDashboardId && dashboards.some((d) => d.id === currentDashboardId);\n newCurrentDashboardId = dashboardExists ? (currentDashboardId as string) : dashboards[0].id;\n\n if (!dashboardExists) {\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n\n patchState(store, {\n allDashboards: dashboards,\n dashboards: dashboards,\n isLoading: false,\n currentDashboardId: newCurrentDashboardId,\n });\n } catch (error) {\n console.error('Error loading dashboards:', error);\n patchState(store, { isLoading: false });\n }\n }\n\n return {\n setCurrentDashboard(dashboardId: string): void {\n patchState(store, { currentDashboardId: dashboardId });\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboardId);\n },\n\n async addDashboard(): Promise<void> {\n try {\n const newDashboard = await dashboardPopup.generateDashboardLayout({}, store.isUserAdmin());\n if (!newDashboard) return;\n\n const userId = sessionService.user?.id;\n const now = new Date();\n const dashboardWithMetadata: AXMDashboardLayout = {\n ...newDashboard,\n createdBy: userId,\n createdAt: now,\n updatedBy: userId,\n updatedAt: now,\n scope: store.isUserAdmin() ? 'T' : 'U',\n widgets: [],\n };\n\n const dashboardModel = dashboardLayoutToModel(dashboardWithMetadata);\n const createdDashboardId = await dashboardService.insertOne(dashboardModel);\n dashboardWithMetadata.id = createdDashboardId;\n\n const updatedAllDashboards = [...store.availableDashboards(), dashboardWithMetadata];\n const updatedDashboards = [...store.dashboards(), dashboardWithMetadata];\n\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n currentDashboardId: dashboardWithMetadata.id,\n });\n\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, dashboardWithMetadata.id);\n } catch (error) {\n console.error('Error adding dashboard:', error);\n }\n },\n\n async editDashboard(): Promise<void> {\n const currentDashboard = store.selectedDashboard();\n if (!currentDashboard) return;\n\n try {\n const editedDashboard = await dashboardPopup.generateDashboardLayout(\n {\n title: currentDashboard.title,\n description: currentDashboard.description,\n roleIds: currentDashboard.roleIds,\n scope: currentDashboard.scope,\n locked: currentDashboard.locked,\n isDeleted: currentDashboard.isDeleted,\n },\n store.isUserAdmin(),\n );\n\n if (!editedDashboard) return;\n\n const userId = sessionService.user?.id;\n const now = new Date();\n const updatedDashboard: AXMDashboardLayout = {\n ...currentDashboard,\n ...editedDashboard,\n updatedBy: userId,\n updatedAt: now,\n };\n\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n\n const updatedAllDashboards = store\n .availableDashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n const updatedDashboards = store\n .dashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n\n // If lock state changed, update the dashboard options too\n if (currentDashboard.locked !== updatedDashboard.locked) {\n const baseOptions = { ...store.dashboardsOption() };\n const updatedOptions = {\n ...baseOptions,\n disableDrag: updatedDashboard.locked === true,\n disableResize: updatedDashboard.locked === true,\n };\n\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n dashboardsOption: updatedOptions,\n });\n } else {\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n });\n }\n } catch (error) {\n console.error('Error editing dashboard:', error);\n }\n },\n\n async addWidget(): Promise<void> {\n if (!store.selectedDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n\n try {\n const widgets = await widgetPickerService.showPicker({\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n });\n\n const filteredWidgets = (widgets as any[]).map(({ __meta__, ...rest }) => {\n const widget = rest;\n if (widget.type === 'sticky-note' && !widget.options) {\n widget.options = { hasConfiguration: false };\n }\n const randomId = AXPDataGenerator.uuid();\n widget.name = `${widget.type}-${randomId}`;\n widget.path = `${widget.type}-${randomId}`;\n return widget;\n });\n\n const convertedWidgets: AXMDashboardWidgetData[] = filteredWidgets.map((widget) => ({\n config: {\n height: widget?.meta?.dimensions?.height ?? 2,\n width: widget?.meta?.dimensions?.width ?? 2,\n minHeight: widget?.meta?.dimensions?.minHeight,\n minWidth: widget?.meta?.dimensions?.minWidth,\n maxHeight: widget?.meta?.dimensions?.maxHeight,\n maxWidth: widget?.meta?.dimensions?.maxWidth,\n id: AXPDataGenerator.uuid(),\n },\n node: { ...widget, name: widget.name },\n }));\n\n const currentDashboard = store.selectedDashboard()!;\n const updatedDashboard = {\n ...currentDashboard,\n widgets: [...currentDashboard.widgets, ...convertedWidgets],\n };\n\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error adding widget:', error);\n }\n },\n\n async removeDashboard(id: string): Promise<void> {\n if (!id) {\n console.warn('No dashboard ID provided for removal');\n return;\n }\n\n try {\n const dialogResult = await dialogService.confirm(\n await translationService.translateAsync('workflow.warning'),\n await translationService.translateAsync('workflow.confirm-delete'),\n 'danger',\n 'horizontal',\n );\n\n if (dialogResult.result) {\n await dashboardService.deleteOne(id);\n const updatedAllDashboards = store.availableDashboards().filter((dashboard) => dashboard.id !== id);\n const updatedDashboards = store.dashboards().filter((dashboard) => dashboard.id !== id);\n let newCurrentDashboardId = store.currentDashboardId();\n\n if (id === store.currentDashboardId()) {\n newCurrentDashboardId =\n updatedDashboards.length > 0 ? updatedDashboards[updatedDashboards.length - 1].id : null;\n if (newCurrentDashboardId) {\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n currentDashboardId: newCurrentDashboardId,\n });\n }\n } catch (error) {\n console.error('Error removing dashboard:', error);\n }\n },\n\n async removeWidget(dashboardId: string, widgetId: string): Promise<void> {\n const currentDashboard = store.dashboards().find((d) => d.id === dashboardId);\n if (!currentDashboard) return;\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: currentDashboard.widgets.filter((widget) => widget.config.id !== widgetId),\n };\n\n await dashboardService.updateOne(dashboardId, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === dashboardId ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n },\n\n async handleConfigChange(dashboard: AXMDashboardLayout): Promise<void> {\n await dashboardService.updateOne(dashboard.id, dashboardLayoutToModel(dashboard));\n const updatedDashboards = store.dashboards().map((d) => (d.id === dashboard.id ? dashboard : d));\n\n patchState(store, {\n dashboards: updatedDashboards,\n currentDashboardId: dashboard.id,\n });\n\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboard.id);\n },\n\n async onGridChange(event: AXGridLayoutEvent): Promise<void> {\n if (!layoutThemeService.isDesktopDevice() || !store.selectedDashboard()) return;\n\n const nodes = event.nodes.map(({ element, ...rest }) => rest);\n const currentDashboard = store.selectedDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n const updatedNode = nodes.find((node) => node.id === widget.config.id);\n return updatedNode ? { ...widget, config: updatedNode } : widget;\n });\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n },\n\n async handlePopupConfiguration(widgetNode: AXPWidgetNode): Promise<void> {\n if (!store.selectedDashboard()) return;\n\n try {\n const updatedNode = await dashboardPopup.handlePopupConfiguration(widgetNode);\n if (!updatedNode) return;\n\n const currentDashboard = store.selectedDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) =>\n widget.node?.name === widgetNode.name && widget.node?.path === widgetNode.path\n ? { ...widget, node: updatedNode }\n : widget,\n );\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget configuration:', error);\n }\n },\n\n async handleValueChanged(widgetNode: AXPWidgetNode, data: unknown): Promise<void> {\n if (!store.selectedDashboard()) return;\n\n try {\n const currentDashboard = store.selectedDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) =>\n widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path\n ? { ...widget, node: { ...widget.node, defaultValue: data } }\n : widget,\n );\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget value change:', error);\n }\n },\n\n async handleOptionsChanged(widgetNode: AXPWidgetNode, data: unknown): Promise<void> {\n if (!store.selectedDashboard()) return;\n\n try {\n const currentDashboard = store.selectedDashboard()!;\n const updatedWidgets = currentDashboard.widgets.map((widget) =>\n widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path\n ? {\n ...widget,\n node: {\n ...widget.node,\n options: { ...(widget.node.options || {}), ...(data as object) },\n },\n }\n : widget,\n );\n\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n patchState(store, { dashboards: updatedDashboards });\n } catch (error) {\n console.error('Error handling widget options change:', error);\n }\n },\n\n setIsAdmin(isAdmin: boolean): void {\n patchState(store, { isAdmin });\n },\n\n // Filter dashboards by scope\n filterDashboardsByScope(isAdmin: boolean): void {\n const allDashboards = store.availableDashboards();\n const userId = sessionService.user?.id;\n const userRole = sessionService.user ? (sessionService.user as any)['role'] : undefined;\n\n if (!userId) {\n patchState(store, { dashboards: allDashboards });\n return;\n }\n\n const filteredDashboards = isAdmin\n ? allDashboards.filter((dashboard) => dashboard.scope === 'T')\n : allDashboards.filter((dashboard) => {\n const isUserDashboard = dashboard.scope === 'U' && dashboard.createdBy === userId;\n const hasRoleIds =\n dashboard.roleIds && Array.isArray(dashboard.roleIds) && dashboard.roleIds.length > 0;\n const isTenantDashboard = dashboard.scope === 'T';\n const hasUserRole = userRole && hasRoleIds && dashboard.roleIds?.includes(userRole);\n const isNotDeleted = dashboard.isDeleted !== true;\n const isTenantDashboardWithRole = isTenantDashboard && hasUserRole && isNotDeleted;\n\n return isUserDashboard || isTenantDashboardWithRole;\n });\n\n patchState(store, { dashboards: filteredDashboards });\n\n if (filteredDashboards.length > 0 && !filteredDashboards.some((d) => d.id === store.currentDashboardId())) {\n this.setCurrentDashboard(filteredDashboards[0].id);\n }\n },\n\n async toggleLockDashboard(): Promise<void> {\n const currentDashboard = store.selectedDashboard();\n if (!currentDashboard) return;\n\n try {\n const isAdmin = store.isUserAdmin();\n const userId = sessionService.user?.id;\n const canToggle =\n (!isAdmin && currentDashboard.scope === 'U' && currentDashboard.createdBy === userId) ||\n (isAdmin && currentDashboard.scope === 'T');\n\n if (!canToggle) {\n console.warn('User does not have permission to toggle lock for this dashboard');\n return;\n }\n\n const newLockedState = !currentDashboard.locked;\n const updatedDashboard = {\n ...currentDashboard,\n locked: newLockedState,\n };\n\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n\n const baseOptions = { ...store.dashboardsOption() };\n patchState(store, { dashboards: updatedDashboards });\n\n const updatedOptions = {\n ...baseOptions,\n disableDrag: newLockedState,\n disableResize: newLockedState,\n };\n\n patchState(store, { dashboardsOption: updatedOptions });\n } catch (error) {\n console.error('Error toggling dashboard lock state:', error);\n }\n },\n\n isDashboardLocked(): boolean {\n const currentDashboard = store.selectedDashboard();\n return currentDashboard?.locked === true;\n },\n };\n },\n ),\n);\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, OnInit, signal, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXGridLayoutBuilderModule } from '@acorex/components/grid-layout-builder';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPDesignerService } from '@acorex/platform/layout/designer';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\n\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex/platform/core';\nimport { RootConfig } from '../../../const';\nimport { AXMDashboardWidgetWrapperComponent } from '../widget-wrapper/dashboard-widget-wrapper';\nimport { AXMDashboardStore } from './home-dashboard.store';\n\n@Component({\n selector: 'axm-dashboard-home',\n templateUrl: './home-dashboard.html',\n styleUrls: ['./home-dashboard.scss'],\n standalone: true,\n imports: [\n CommonModule,\n AXLoadingModule,\n AXPLayoutBuilderModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXGridLayoutBuilderModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXBreadcrumbsModule,\n AXMDashboardWidgetWrapperComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXPDesignerService,\n AXMDashboardStore,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDashboardHomeComponent,\n },\n ],\n})\nexport class AXMDashboardHomeComponent extends AXPPageLayoutBaseComponent implements OnInit {\n // Dependencies\n protected readonly rootConfig = RootConfig;\n protected readonly activatedRoute = inject(ActivatedRoute);\n protected readonly dialogService = inject(AXDialogService);\n protected readonly popupService = inject(AXPopupService);\n protected readonly router = inject(Router);\n protected readonly store = inject(AXMDashboardStore);\n protected readonly themeService = inject(AXPLayoutThemeService);\n\n // Component State\n\n protected readonly context = signal({});\n private dashboardsLoaded = signal(false);\n\n // Lifecycle Hooks\n override async ngOnInit(): Promise<void> {\n const childRoute = this.activatedRoute.firstChild || this.activatedRoute;\n childRoute.data.subscribe((data) => {\n const isAdmin = data['isAdmin'] ?? false;\n this.store.setIsAdmin(isAdmin);\n });\n }\n\n // Effects\n #initEffect = effect(() => {\n const allDashboards = this.store.availableDashboards();\n if (allDashboards.length > 0 && !this.dashboardsLoaded()) {\n this.dashboardsLoaded.set(true);\n this.applyDashboardFiltering();\n this.recompute();\n }\n });\n\n // Private Methods\n private applyDashboardFiltering(): void {\n this.store.filterDashboardsByScope(this.store.isUserAdmin());\n }\n\n protected async confirmWidgetDelete(dashboardId: string, widgetId: string): Promise<void> {\n try {\n const dialogResult = await this.dialogService.confirm(\n await this.translateService.translateAsync('workflow.warning'),\n await this.translateService.translateAsync('workflow.confirm-delete'),\n 'danger',\n 'horizontal',\n );\n\n if (dialogResult.result) {\n this.store.removeWidget(dashboardId, widgetId);\n }\n } catch (error) {\n console.error('Error confirming widget deletion:', error);\n }\n }\n\n // Page Interface Implementation\n override getPageTitle(): string {\n return this.store.selectedDashboard()?.title || 'Dashboard';\n }\n\n override async getPageDescription(): Promise<string> {\n return this.store.selectedDashboard()?.description || '';\n }\n\n protected override getTitleActions(): AXPActionMenuItem[] | Promise<AXPActionMenuItem[]> {\n return this.store.dashboards().map((dashboard) => ({\n title: dashboard.title,\n command: { name: dashboard.id, metadata: { isDashboard: true, dashboard } },\n icon: dashboard.id === this.store.currentDashboardId() ? 'fa-solid fa-check' : '',\n }));\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: 't(\"add-item\")',\n icon: 'fa-light fa-square-plus',\n color: 'primary',\n items: [\n {\n title: await this.translateService.translateAsync('dashboard', { scope: 'dashboard' }),\n icon: 'fa-light fa-gauge-high',\n break: true,\n command: { name: 'new-dashboard' },\n },\n {\n title: await this.translateService.translateAsync('widget', { scope: 'dashboard' }),\n icon: 'fa-light fa-window-restore',\n command: { name: 'new-widget' },\n disabled: this.store.dashboards().length < 1,\n },\n ],\n },\n ];\n }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n const items: AXPActionMenuItem[] = [\n {\n title: await this.translateService.translateAsync('edit'),\n icon: 'fa-light fa-pen',\n color: 'primary',\n disabled: this.store.dashboards().length < 1,\n command: { name: 'edit' },\n },\n ];\n\n if (!this.store.isUserAdmin() && this.themeService.isDesktopDevice()) {\n items.push({\n title: await this.translateService.translateAsync(this.store.isDashboardLocked() ? 'unlock' : 'lock', {\n scope: 'dashboard',\n }),\n icon: this.store.isDashboardLocked() ? 'fa-light fa-lock-open' : 'fa-light fa-lock',\n color: 'accent3',\n disabled: this.store.dashboards().length < 1,\n command: { name: 'toggle-lock' },\n });\n }\n\n items.push({\n title: await this.translateService.translateAsync('delete'),\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n disabled: this.store.dashboards().length < 1,\n command: { name: 'delete' },\n });\n\n return items;\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n if (command.metadata?.['isDashboard']) {\n this.store.handleConfigChange(command.metadata?.['dashboard']);\n this.recompute();\n return;\n }\n\n switch (command.name) {\n case 'new-dashboard':\n await this.store.addDashboard();\n this.applyDashboardFiltering();\n this.recompute();\n break;\n case 'new-widget':\n await this.store.addWidget();\n this.recompute();\n break;\n case 'edit':\n await this.store.editDashboard();\n this.recompute();\n break;\n case 'delete':\n await this.store.removeDashboard(this.store.selectedDashboard()?.id!);\n this.applyDashboardFiltering();\n this.recompute();\n break;\n case 'toggle-lock':\n await this.store.toggleLockDashboard();\n this.recompute();\n setTimeout(() => this.recompute(), 50);\n break;\n }\n }\n}\n","<axp-page-layout *translate=\"let t\">\n <!-- Content Section -->\n\n <axp-page-content class=\"ax-relative\">\n <!-- Loading State -->\n @if(store.isLoading()) {\n <div\n class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\"\n >\n <ax-loading></ax-loading>\n <p class=\"ax-mt-3 ax-text-gray-600\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\n </div>\n } @else {\n <axp-widgets-container [context]=\"context()\">\n <ax-grid-layout-container [options]=\"store.currentLayoutOptions()\" (onChange)=\"store.onGridChange($event)\">\n <!-- No Dashboards State -->\n @if(!store.dashboards() || store.dashboards().length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Selected Dashboard State -->\n @else if (!store.selectedDashboard()) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">\n {{ t('no-current-dashboard', { scope: 'dashboard' }) | async }}\n </h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('select-dashboard', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- No Widgets State -->\n @else if (!store.selectedDashboard()?.widgets || store.selectedDashboard()?.widgets?.length === 0) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\">\n <ax-icon icon=\"fa-light fa-shapes\" class=\"ax-text-4xl ax-mb-4\"></ax-icon>\n <h2 class=\"ax-text-xl ax-font-semibold ax-mb-2\">{{ t('no-widgets', { scope: 'dashboard' }) | async }}</h2>\n <p class=\"ax-text-center ax-mb-6\">{{ t('add-first-widget', { scope: 'dashboard' }) | async }}</p>\n </div>\n }\n <!-- Widgets Grid -->\n @else { @for(widget of store.selectedDashboard()?.widgets; track widget.config.id) {\n <ax-grid-layout-widget\n [options]=\"widget.config\"\n class=\"dark:[--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lighter-surface)] [--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lightest-surface)]\"\n >\n <axm-dashboard-widget-wrapper\n [title]=\"widget.node?.options?.['title']\"\n [hasConfiguration]=\"store.canConfigureWidget()(widget)\"\n [isLocked]=\"store.isWidgetLocked()(widget)\"\n (onDelete)=\"confirmWidgetDelete(store.selectedDashboard()?.id!, widget.config.id!)\"\n (onConfiguration)=\"store.handlePopupConfiguration(widget.node!)\"\n (onValueChanged)=\"store.handleValueChanged(widget?.node!,$event)\"\n (onOptionsChanged)=\"store.handleOptionsChanged(widget?.node!,$event)\"\n >\n @if(widget.node) {\n <ng-container axp-widget-renderer [node]=\"widget.node\" [mode]=\"'view'\"></ng-container>\n }\n </axm-dashboard-widget-wrapper>\n </ax-grid-layout-widget>\n } }\n </ax-grid-layout-container>\n </axp-widgets-container>\n }\n </axp-page-content>\n</axp-page-layout>\n","const path = 'home:dashboard:';\nexport enum AXPHomeDashboardSetting {\n CurrentDashboard = `${path}current-dashboard`,\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i3","i5","rxjsInterval","i1","path","AXPHomeDashboardSetting","i4","i6"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-modules-dashboard-management.mjs","sources":["../tmp-esm2022/dashboard-management/lib/const.js","../tmp-esm2022/dashboard-management/lib/entities/dashboard/dashboard.service.js","../tmp-esm2022/dashboard-management/lib/entities/dashboard/dashboard.entity.js","../tmp-esm2022/dashboard-management/lib/entity.provider.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/analog-clock/analog-clock.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/analog-clock/analog-clock-widget-view.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/analog-clock/analog-clock-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/chart.type.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/bar-chart/bar-chart-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar.types.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/clock-calendar/clock-calendar-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/donut-chart/donut-chart-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/gauge-chart/gauge-chart-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/line-chart/line-chart-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/sticky-note/sticky-note-widget.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/sticky-note/sticky-note-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/tasklist/tasklist-widget.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/tasklist/tasklist-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.abstract.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.mock.service.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.key.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/weather-services/weather-api.service.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/advanced-weather/advanced-weather.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/advanced-weather/advanced-weather.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/minimal-weather/minimal-weather.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/minimal-weather/minimal-weather.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/weather-widget.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/weather/weather-widget.config.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget-view.component.js","../tmp-esm2022/dashboard-management/lib/features/shared/widgets/dashboard-shortcut/dashboard-shortcut-widget.config.js","../tmp-esm2022/dashboard-management/lib/menu.provider.js","../tmp-esm2022/dashboard-management/lib/dashboard-management.module.js","../tmp-esm2022/dashboard-management/lib/features/home-dashboard/widget-wrapper/dashboard-widget-wrapper.js","../tmp-esm2022/dashboard-management/lib/settings.keys.js","../tmp-esm2022/dashboard-management/lib/features/home-dashboard/dashboard-popups/add-dashboard-popup.js","../tmp-esm2022/dashboard-management/lib/features/home-dashboard/dashboard-popups/configuration-popup.js","../tmp-esm2022/dashboard-management/lib/features/home-dashboard/dashboard-popups/dashboard-popup.service.js","../tmp-esm2022/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.store.js","../tmp-esm2022/dashboard-management/lib/features/home-dashboard/dashboard-home/home-dashboard.js","../tmp-esm2022/dashboard-management/lib/features/home-dashboard/setrting.keys.js","../tmp-esm2022/dashboard-management/acorex-modules-dashboard-management.js"],"sourcesContent":["const config = {\n i18n: 'dashboard',\n};\nexport const RootConfig = {\n config,\n module: {\n module: 'DashboardManagement',\n name: 'DashboardManagement',\n title: `t('module-name', {scope:\"${config.i18n}\"})`,\n icon: 'fa-regular fa-tachometer-alt',\n },\n entities: {\n dashboard: {\n name: 'Dashboard',\n title: `t(\"dashboard\", { scope: \"dashboard\" })`,\n titlePlural: `t(\"dashboardPlural\", { scope: \"dashboard\" })`,\n icon: 'fa-regular fa-tachometer-alt',\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE1BQU0sR0FBRztJQUNiLElBQUksRUFBRSxXQUFXO0NBQ2xCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTTtJQUNOLE1BQU0sRUFBRTtRQUNOLE1BQU0sRUFBRSxxQkFBcUI7UUFDN0IsSUFBSSxFQUFFLHFCQUFxQjtRQUMzQixLQUFLLEVBQUUsNEJBQTRCLE1BQU0sQ0FBQyxJQUFJLEtBQUs7UUFDbkQsSUFBSSxFQUFFLDhCQUE4QjtLQUNyQztJQUNELFFBQVEsRUFBRTtRQUNSLFNBQVMsRUFBRTtZQUNULElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRSx3Q0FBd0M7WUFDL0MsV0FBVyxFQUFFLDhDQUE4QztZQUMzRCxJQUFJLEVBQUUsOEJBQThCO1NBQ3JDO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29uZmlnID0ge1xuICBpMThuOiAnZGFzaGJvYXJkJyxcbn07XG5leHBvcnQgY29uc3QgUm9vdENvbmZpZyA9IHtcbiAgY29uZmlnLFxuICBtb2R1bGU6IHtcbiAgICBtb2R1bGU6ICdEYXNoYm9hcmRNYW5hZ2VtZW50JyxcbiAgICBuYW1lOiAnRGFzaGJvYXJkTWFuYWdlbWVudCcsXG4gICAgdGl0bGU6IGB0KCdtb2R1bGUtbmFtZScsIHtzY29wZTpcIiR7Y29uZmlnLmkxOG59XCJ9KWAsXG4gICAgaWNvbjogJ2ZhLXJlZ3VsYXIgZmEtdGFjaG9tZXRlci1hbHQnLFxuICB9LFxuICBlbnRpdGllczoge1xuICAgIGRhc2hib2FyZDoge1xuICAgICAgbmFtZTogJ0Rhc2hib2FyZCcsXG4gICAgICB0aXRsZTogYHQoXCJkYXNoYm9hcmRcIiwgeyBzY29wZTogXCJkYXNoYm9hcmRcIiB9KWAsXG4gICAgICB0aXRsZVBsdXJhbDogYHQoXCJkYXNoYm9hcmRQbHVyYWxcIiwgeyBzY29wZTogXCJkYXNoYm9hcmRcIiB9KWAsXG4gICAgICBpY29uOiAnZmEtcmVndWxhciBmYS10YWNob21ldGVyLWFsdCcsXG4gICAgfSxcbiAgfSxcbn07XG4iXX0=","import { AXMEntityCrudServiceImpl } from '@acorex/platform/layout/entity';\nimport { Injectable } from '@angular/core';\nimport { RootConfig } from '../../const';\nimport * as i0 from \"@angular/core\";\nexport class AXMDashboardService extends AXMEntityCrudServiceImpl {\n}\nexport class AXMDashboardServiceImpl extends AXMDashboardService {\n constructor() {\n super(`${RootConfig.module.name}.${RootConfig.entities.dashboard.name}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardServiceImpl }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardServiceImpl, decorators: [{\n type: Injectable\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9lbnRpdGllcy9kYXNoYm9hcmQvZGFzaGJvYXJkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUd6QyxNQUFNLE9BQWdCLG1CQUFvQixTQUFRLHdCQUErRDtDQUFHO0FBR3BILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFDOUQ7UUFDRSxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7OEdBSFUsdUJBQXVCO2tIQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWE1FbnRpdHlDcnVkU2VydmljZUltcGwgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTUNvbW1vbkRhc2hib2FyZEVudGl0eU1vZGVsIH0gZnJvbSAnLi9kYXNoYm9hcmQudHlwZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhNRGFzaGJvYXJkU2VydmljZSBleHRlbmRzIEFYTUVudGl0eUNydWRTZXJ2aWNlSW1wbDxzdHJpbmcsIEFYTUNvbW1vbkRhc2hib2FyZEVudGl0eU1vZGVsPiB7fVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhNRGFzaGJvYXJkU2VydmljZUltcGwgZXh0ZW5kcyBBWE1EYXNoYm9hcmRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoYCR7Um9vdENvbmZpZy5tb2R1bGUubmFtZX0uJHtSb290Q29uZmlnLmVudGl0aWVzLmRhc2hib2FyZC5uYW1lfWApO1xuICB9XG59XG4iXX0=","import { AXPEntityCommandScope, AXPEntityQueryType, createAllQueryView } from '@acorex/platform/common';\nimport { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { RootConfig } from '../../const';\nimport { AXMDashboardService } from './dashboard.service';\nexport async function dashboardFactory(injector) {\n const dataService = injector.get(AXMDashboardService);\n const i18n = RootConfig.config.i18n;\n const entityDef = {\n module: RootConfig.module.name,\n name: RootConfig.entities.dashboard.name,\n source: '',\n title: RootConfig.entities.dashboard.title,\n formats: {\n individual: RootConfig.entities.dashboard.title,\n plural: RootConfig.entities.dashboard.titlePlural,\n searchResult: {\n title: '{{ title }}',\n description: RootConfig.module.title,\n },\n },\n relatedEntities: [],\n groups: [\n {\n id: 'section',\n title: RootConfig.entities.dashboard.title,\n },\n ],\n properties: [\n {\n name: 'name',\n title: `t(\"name\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: false,\n },\n filter: {\n advance: {\n enabled: false,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n },\n {\n name: 'title',\n title: `t(\"title\", { scope: \"common\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: true,\n },\n filter: {\n advance: {\n enabled: true,\n },\n inline: {\n enabled: true,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n validations: [\n {\n rule: 'required',\n },\n ],\n },\n {\n name: 'description',\n title: `t(\"description\", { scope: \"${i18n}\" })`,\n groupId: 'section',\n options: {\n sort: {\n enabled: false,\n },\n filter: {\n advance: {\n enabled: false,\n },\n inline: {\n enabled: false,\n },\n },\n },\n schema: {\n dataType: 'string',\n interface: {\n type: AXPWidgetsCatalog.text,\n },\n },\n },\n ],\n columns: [{ name: 'name' }, { name: 'title' }, { name: 'description' }],\n commands: {\n create: {\n execute: async (data) => {\n const res = await dataService.insertOne(data);\n return { id: res };\n },\n },\n delete: {\n execute: async (id) => {\n return await dataService.deleteOne(id);\n },\n },\n update: {\n execute: async (data) => {\n return await dataService.updateOne(data.id, data);\n },\n },\n },\n queries: {\n byKey: {\n execute: async (id) => {\n return await dataService.getOne(id);\n },\n type: AXPEntityQueryType.Single,\n },\n list: {\n execute: async (e) => {\n return await dataService.query({ skip: e.skip, take: e.take, filter: e.filter });\n },\n type: AXPEntityQueryType.List,\n },\n },\n interfaces: {\n master: {\n create: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n ],\n },\n update: {\n sections: [\n {\n id: 'section',\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n ],\n },\n single: {\n title: '{{title}}',\n sections: [\n {\n id: 'section',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n },\n },\n },\n },\n ],\n properties: [\n {\n name: 'name',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 1,\n },\n },\n },\n },\n {\n name: 'title',\n layout: {\n positions: {\n lg: {\n colSpan: 6,\n order: 2,\n },\n },\n },\n },\n {\n name: 'description',\n layout: {\n positions: {\n lg: {\n colSpan: 12,\n order: 3,\n },\n },\n },\n },\n ],\n actions: [],\n },\n list: {\n actions: [\n {\n title: `t(\"create\", { scope: \"common\" })`,\n command: 'create-entity',\n priority: 'primary',\n type: 'create',\n scope: AXPEntityCommandScope.TypeLevel,\n },\n {\n title: 't(\"deleteItems\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'primary',\n type: 'delete',\n scope: AXPEntityCommandScope.Selected,\n },\n {\n title: 't(\"detail\", { scope: \"common\" })',\n command: 'open-entity',\n priority: 'secondary',\n type: 'view',\n scope: AXPEntityCommandScope.Individual,\n },\n {\n title: 't(\"delete\", { scope: \"common\" })',\n command: 'delete-entity',\n priority: 'secondary',\n type: 'delete',\n scope: AXPEntityCommandScope.Individual,\n },\n ],\n views: [\n createAllQueryView({\n sorts: [{ name: 'name', dir: 'asc' }]\n }),\n ],\n },\n },\n },\n };\n return entityDef;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVudGl0eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2VudGl0aWVzL2Rhc2hib2FyZC9kYXNoYm9hcmQuZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXBFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUQsTUFBTSxDQUFDLEtBQUssVUFBVSxnQkFBZ0IsQ0FBQyxRQUFrQjtJQUN2RCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFFcEMsTUFBTSxTQUFTLEdBQWM7UUFDM0IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSTtRQUM5QixJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSTtRQUN4QyxNQUFNLEVBQUUsRUFBRTtRQUNWLEtBQUssRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1FBQzFDLE9BQU8sRUFBRTtZQUNQLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1lBQy9DLE1BQU0sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxXQUFXO1lBQ2pELFlBQVksRUFBRTtnQkFDWixLQUFLLEVBQUUsYUFBYTtnQkFDcEIsV0FB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RSxrQ0FBa0M7NEJBQ3pDLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixRQUFRLEVBQUUsV0FBVzs0QkFDckIsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsS0FBSyxFQUFFLHFCQUFxQixDQUFDLFVBQVU7eUJBQ3hDO3FCQUNGO29CQUNELEtBQUssRUFBRTt3QkFDTCxrQkFBa0IsQ0FBQzs0QkFDakIsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQzt5QkFDdEMsQ0FBQztxQkFDSDtpQkFDRjthQUNGO1NBQ0Y7S0FDRixDQUFDO0lBRUYsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEVudGl0eSwgQVhQRW50aXR5Q29tbWFuZFNjb3BlLCBBWFBFbnRpdHlRdWVyeVR5cGUsIGNyZWF0ZUFsbFF1ZXJ5VmlldyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTURhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuL2Rhc2hib2FyZC5zZXJ2aWNlJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRhc2hib2FyZEZhY3RvcnkoaW5qZWN0b3I6IEluamVjdG9yKTogUHJvbWlzZTxBWFBFbnRpdHkgfCBudWxsPiB7XG4gIGNvbnN0IGRhdGFTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KEFYTURhc2hib2FyZFNlcnZpY2UpO1xuICBjb25zdCBpMThuID0gUm9vdENvbmZpZy5jb25maWcuaTE4bjtcblxuICBjb25zdCBlbnRpdHlEZWY6IEFYUEVudGl0eSA9IHtcbiAgICBtb2R1bGU6IFJvb3RDb25maWcubW9kdWxlLm5hbWUsXG4gICAgbmFtZTogUm9vdENvbmZpZy5lbnRpdGllcy5kYXNoYm9hcmQubmFtZSxcbiAgICBzb3VyY2U6ICcnLFxuICAgIHRpdGxlOiBSb290Q29uZmlnLmVudGl0aWVzLmRhc2hib2FyZC50aXRsZSxcbiAgICBmb3JtYXRzOiB7XG4gICAgICBpbmRpdmlkdWFsOiBSb290Q29uZmlnLmVudGl0aWVzLmRhc2hib2FyZC50aXRsZSxcbiAgICAgIHBsdXJhbDogUm9vdENvbmZpZy5lbnRpdGllcy5kYXNoYm9hcmQudGl0bGVQbHVyYWwsXG4gICAgICBzZWFyY2hSZXN1bHQ6IHtcbiAgICAgICAgdGl0bGU6ICd7eyB0aXRsZSB9fScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBSb290Q29uZmlnLm1vZHVsZS50aXRsZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICByZWxhdGVkRW50aXRpZXM6IFtdLFxuICAgIGdyb3VwczogW1xuICAgICAge1xuICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICB0aXRsZTogUm9vdENvbmZpZy5lbnRpdGllcy5kYXNoYm9hcmQudGl0bGUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgcHJvcGVydGllczogW1xuXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgdGl0bGU6IGB0KFwibmFtZVwiLCB7IHNjb3BlOiBcImNvbW1vblwiIH0pYCxcbiAgICAgICAgZ3JvdXBJZDogJ3NlY3Rpb24nLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgc29ydDoge1xuICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICBhZHZhbmNlOiB7XG4gICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpbmxpbmU6IHtcbiAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHNjaGVtYToge1xuICAgICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG5cbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgdGl0bGU6IGB0KFwidGl0bGVcIiwgeyBzY29wZTogXCJjb21tb25cIiB9KWAsXG4gICAgICAgIGdyb3VwSWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICAgZmlsdGVyOiB7XG4gICAgICAgICAgICBhZHZhbmNlOiB7XG4gICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlubGluZToge1xuICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHZhbGlkYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcnVsZTogJ3JlcXVpcmVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgICB0aXRsZTogYHQoXCJkZXNjcmlwdGlvblwiLCB7IHNjb3BlOiBcIiR7aTE4bn1cIiB9KWAsXG4gICAgICAgIGdyb3VwSWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHNvcnQ6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgIGZpbHRlcjoge1xuICAgICAgICAgICAgYWR2YW5jZToge1xuICAgICAgICAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaW5saW5lOiB7XG4gICAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBzY2hlbWE6IHtcbiAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LCAgICBdLFxuICAgIGNvbHVtbnM6IFt7IG5hbWU6ICduYW1lJyB9LCB7IG5hbWU6ICd0aXRsZScgfSwgeyBuYW1lOiAnZGVzY3JpcHRpb24nIH1dLFxuICAgIGNvbW1hbmRzOiB7XG4gICAgICBjcmVhdGU6IHtcbiAgICAgICAgZXhlY3V0ZTogYXN5bmMgKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGRhdGFTZXJ2aWNlLmluc2VydE9uZShkYXRhKTtcbiAgICAgICAgICByZXR1cm4geyBpZDogcmVzIH07XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZGVsZXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdXBkYXRlOiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gYXdhaXQgZGF0YVNlcnZpY2UudXBkYXRlT25lKGRhdGEuaWQsIGRhdGEpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHF1ZXJpZXM6IHtcbiAgICAgIGJ5S2V5OiB7XG4gICAgICAgIGV4ZWN1dGU6IGFzeW5jIChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLmdldE9uZShpZCk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5TaW5nbGUsXG4gICAgICB9LFxuICAgICAgbGlzdDoge1xuICAgICAgICBleGVjdXRlOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGF3YWl0IGRhdGFTZXJ2aWNlLnF1ZXJ5KHsgc2tpcDogZS5za2lwLCB0YWtlOiBlLnRha2UsIGZpbHRlcjogZS5maWx0ZXIgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IEFYUEVudGl0eVF1ZXJ5VHlwZS5MaXN0LFxuICAgICAgfSxcbiAgICB9LFxuICAgIGludGVyZmFjZXM6IHtcbiAgICAgIG1hc3Rlcjoge1xuICAgICAgICBjcmVhdGU6IHtcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSwgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgdXBkYXRlOiB7XG4gICAgICAgICAgc2VjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6ICdzZWN0aW9uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiBbXG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDYsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgICBvcmRlcjogMyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHNpbmdsZToge1xuICAgICAgICAgIHRpdGxlOiAne3t0aXRsZX19JyxcbiAgICAgICAgICBzZWN0aW9uczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogJ3NlY3Rpb24nLFxuICAgICAgICAgICAgICBsYXlvdXQ6IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGxnOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbFNwYW46IDEyLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHByb3BlcnRpZXM6IFtcblxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogNixcbiAgICAgICAgICAgICAgICAgICAgb3JkZXI6IDIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6ICdkZXNjcmlwdGlvbicsXG4gICAgICAgICAgICAgIGxheW91dDoge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uczoge1xuICAgICAgICAgICAgICAgICAgbGc6IHtcbiAgICAgICAgICAgICAgICAgICAgY29sU3BhbjogMTIsXG4gICAgICAgICAgICAgICAgICAgIG9yZGVyOiAzLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSwgICAgICAgICAgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXSxcbiAgICAgICAgfSxcbiAgICAgICAgbGlzdDoge1xuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6IGB0KFwiY3JlYXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSlgLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnY3JlYXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdjcmVhdGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlR5cGVMZXZlbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRpdGxlOiAndChcImRlbGV0ZUl0ZW1zXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAncHJpbWFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICdkZWxldGUnLFxuICAgICAgICAgICAgICBzY29wZTogQVhQRW50aXR5Q29tbWFuZFNjb3BlLlNlbGVjdGVkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGV0YWlsXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnb3Blbi1lbnRpdHknLFxuICAgICAgICAgICAgICBwcmlvcml0eTogJ3NlY29uZGFyeScsXG4gICAgICAgICAgICAgIHR5cGU6ICd2aWV3JyxcbiAgICAgICAgICAgICAgc2NvcGU6IEFYUEVudGl0eUNvbW1hbmRTY29wZS5JbmRpdmlkdWFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGl0bGU6ICd0KFwiZGVsZXRlXCIsIHsgc2NvcGU6IFwiY29tbW9uXCIgfSknLFxuICAgICAgICAgICAgICBjb21tYW5kOiAnZGVsZXRlLWVudGl0eScsXG4gICAgICAgICAgICAgIHByaW9yaXR5OiAnc2Vjb25kYXJ5JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAgIHNjb3BlOiBBWFBFbnRpdHlDb21tYW5kU2NvcGUuSW5kaXZpZHVhbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICB2aWV3czogW1xuICAgICAgICAgICAgY3JlYXRlQWxsUXVlcnlWaWV3KHsgXG4gICAgICAgICAgICAgIHNvcnRzOiBbeyBuYW1lOiAnbmFtZScsIGRpcjogJ2FzYycgfV1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG5cbiAgcmV0dXJuIGVudGl0eURlZjtcbn1cbiJdfQ==","import { Injectable, Injector, inject } from '@angular/core';\nimport { RootConfig } from './const';\nimport * as i0 from \"@angular/core\";\nexport class AXMEntityProvider {\n constructor() {\n this.injector = inject(Injector);\n }\n preload() {\n const module = RootConfig.module.name;\n return Array.from(Object.values(RootConfig.entities)).map((entity) => ({\n module: module,\n entity: entity.name,\n }));\n }\n async get(moduleName, entityName) {\n if (moduleName == RootConfig.module.name) {\n switch (entityName) {\n case RootConfig.entities.dashboard.name:\n return (await import('./entities/dashboard/dashboard.entity')).dashboardFactory(this.injector);\n }\n }\n return null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMEntityProvider }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMEntityProvider, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZW50aXR5LnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUdyQyxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRVUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztLQW1CckM7SUFqQlEsT0FBTztRQUNaLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxRSxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSTtTQUNwQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQWtCLEVBQUUsVUFBa0I7UUFDOUMsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QyxRQUFRLFVBQVUsRUFBRSxDQUFDO2dCQUNuQixLQUFLLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUk7b0JBQ3JDLE9BQU8sQ0FBQyxNQUFNLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25HLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQW5CVSxpQkFBaUI7a0hBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUEVudGl0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7XG4gIEFYUEVudGl0eURlZmluaXRpb25Mb2FkZXIsXG4gIEFYUEVudGl0eURlZmluaXRpb25QcmVsb2FkZXIsXG4gIEFYUEVudGl0eVByZWxvYWRFbnRpdHksXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi9jb25zdCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE1FbnRpdHlQcm92aWRlciBpbXBsZW1lbnRzIEFYUEVudGl0eURlZmluaXRpb25Mb2FkZXIsIEFYUEVudGl0eURlZmluaXRpb25QcmVsb2FkZXIge1xuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBwdWJsaWMgcHJlbG9hZCgpOiBBWFBFbnRpdHlQcmVsb2FkRW50aXR5W10ge1xuICAgIGNvbnN0IG1vZHVsZSA9IFJvb3RDb25maWcubW9kdWxlLm5hbWU7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oT2JqZWN0LnZhbHVlcyhSb290Q29uZmlnLmVudGl0aWVzKSkubWFwKChlbnRpdHk6IGFueSkgPT4gKHtcbiAgICAgIG1vZHVsZTogbW9kdWxlLFxuICAgICAgZW50aXR5OiBlbnRpdHkubmFtZSxcbiAgICB9KSk7XG4gIH1cblxuICBhc3luYyBnZXQobW9kdWxlTmFtZTogc3RyaW5nLCBlbnRpdHlOYW1lOiBzdHJpbmcpOiBQcm9taXNlPEFYUEVudGl0eSB8IG51bGw+IHtcbiAgICBpZiAobW9kdWxlTmFtZSA9PSBSb290Q29uZmlnLm1vZHVsZS5uYW1lKSB7XG4gICAgICBzd2l0Y2ggKGVudGl0eU5hbWUpIHtcbiAgICAgICAgY2FzZSBSb290Q29uZmlnLmVudGl0aWVzLmRhc2hib2FyZC5uYW1lOlxuICAgICAgICAgIHJldHVybiAoYXdhaXQgaW1wb3J0KCcuL2VudGl0aWVzL2Rhc2hib2FyZC9kYXNoYm9hcmQuZW50aXR5JykpLmRhc2hib2FyZEZhY3RvcnkodGhpcy5pbmplY3Rvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, computed, effect, input, signal, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXMAnalogClockComponent {\n constructor() {\n this.timezone = input();\n this.classes = input();\n this.showNumbers = input(true);\n this.currentTime = signal(new Date());\n this.timeParts = signal({ hours: 0, minutes: 0, seconds: 0 });\n this.hourHandTransform = computed(() => {\n const { hours, minutes } = this.timeParts();\n const hoursAngle = (hours % 12) * 30 + minutes * 0.5;\n return `translateX(-50%) rotate(${hoursAngle}deg)`;\n });\n this.minuteHandTransform = computed(() => {\n const { minutes, seconds } = this.timeParts();\n const minutesAngle = minutes * 6 + seconds * 0.1;\n return `translateX(-50%) rotate(${minutesAngle}deg)`;\n });\n this.secondHandTransform = computed(() => {\n const { seconds } = this.timeParts();\n const secondsAngle = seconds * 6;\n return `translateX(-50%) rotate(${secondsAngle}deg)`;\n });\n this.hourLines = [];\n this.hourNumbers = [];\n this.dots = [];\n effect(() => {\n const now = this.currentTime();\n const tz = this.timezone();\n let hours, minutes, seconds;\n if (tz) {\n try {\n const formatter = new Intl.DateTimeFormat('en-US', {\n timeZone: tz,\n hour12: false,\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n });\n const parts = formatter.formatToParts(now);\n hours = parseInt(parts.find((p) => p.type === 'hour')?.value ?? '0', 10);\n minutes = parseInt(parts.find((p) => p.type === 'minute')?.value ?? '0', 10);\n seconds = parseInt(parts.find((p) => p.type === 'second')?.value ?? '0', 10);\n }\n catch (e) {\n console.error(`Invalid timezone provided: \"${tz}\". Falling back to local time.`);\n hours = now.getHours();\n minutes = now.getMinutes();\n seconds = now.getSeconds();\n }\n }\n else {\n hours = now.getHours();\n minutes = now.getMinutes();\n seconds = now.getSeconds();\n }\n this.timeParts.set({ hours, minutes, seconds });\n });\n }\n ngOnInit() {\n this.createClockMarks();\n this.timerId = window.setInterval(() => {\n this.currentTime.set(new Date());\n }, 1000);\n }\n ngOnDestroy() {\n if (this.timerId) {\n clearInterval(this.timerId);\n }\n }\n createClockMarks() {\n const majorHours = [12, 3, 6, 9];\n // Hour Lines\n this.hourLines = [];\n for (let i = 1; i <= 12; i++) {\n this.hourLines.push({\n transform: `translateX(-50%) rotate(${i * 30}deg)`,\n });\n }\n // Hour Numbers\n this.hourNumbers = [];\n for (const hour of majorHours) {\n const angleRad = (hour * 30 - 90) * (Math.PI / 180);\n this.hourNumbers.push({\n value: hour,\n top: `calc(50% + ${30 * Math.sin(angleRad)}%)`,\n left: `calc(50% + ${30 * Math.cos(angleRad)}%)`,\n });\n }\n // Dots\n this.dots = [];\n for (let i = 1; i <= 60; i++) {\n if (i % 5 !== 0) {\n this.dots.push({\n transform: `translateX(-50%) rotate(${i * 6}deg)`,\n });\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMAnalogClockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMAnalogClockComponent, isStandalone: true, selector: \"axm-analog-clock\", inputs: { timezone: { classPropertyName: \"timezone\", publicName: \"timezone\", isSignal: true, isRequired: false, transformFunction: null }, classes: { classPropertyName: \"classes\", publicName: \"classes\", isSignal: true, isRequired: false, transformFunction: null }, showNumbers: { classPropertyName: \"showNumbers\", publicName: \"showNumbers\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\n <div class=\"axm-analog-clock-container\">\n <div class=\"axm-analog-clock-face\" [class]=\"classes()\">\n <div class=\"axm-analog-clock-marks-container\">\n @for (line of hourLines; track $index) {\n <div class=\"axm-analog-clock-hour-line\" [style.transform]=\"line.transform\">\n <div class=\"axm-analog-clock-hour-line-inner\"></div>\n </div>\n }\n @for (dot of dots; track $index) {\n <div class=\"axm-analog-clock-dot-line\" [style.transform]=\"dot.transform\">\n <div class=\"axm-analog-clock-dot-line-inner\"></div>\n </div>\n }\n </div>\n\n @if (showNumbers()) {\n <div class=\"axm-analog-clock-numbers-container\">\n @for (num of hourNumbers; track num.value) {\n <div class=\"axm-analog-clock-hour-number\" [style.top]=\"num.top\" [style.left]=\"num.left\">\n {{ num.value }}\n </div>\n }\n </div>\n }\n <div class=\"axm-analog-clock-hands\">\n <div class=\"axm-analog-clock-hand axm-analog-clock-hour-hand\" [style.transform]=\"hourHandTransform()\"></div>\n <div\n class=\"axm-analog-clock-hand axm-analog-clock-minute-hand\"\n [style.transform]=\"minuteHandTransform()\"\n ></div>\n <div\n class=\"axm-analog-clock-hand axm-analog-clock-second-hand\"\n [style.transform]=\"secondHandTransform()\"\n ></div>\n <div class=\"axm-analog-clock-center-point\"></div>\n </div>\n </div>\n </div>\n `, isInline: true, styles: [\":host{display:grid;width:100%;height:100%;place-items:center}.axm-analog-clock-container{position:relative;max-height:100%;width:100%;aspect-ratio:1;container-type:inline-size}.axm-analog-clock-face{position:relative;height:100%;width:100%;border-radius:9999px}.axm-analog-clock-marks-container,.axm-analog-clock-numbers-container,.axm-analog-clock-hands{position:absolute;top:0;right:0;bottom:0;left:0}.axm-analog-clock-hour-line,.axm-analog-clock-dot-line{position:absolute;bottom:50%;left:50%;height:50%;transform-origin:bottom}.axm-analog-clock-hour-line,.axm-analog-clock-dot-line{width:1.8cqw}.axm-analog-clock-hour-line-inner{position:absolute;top:6cqw;left:50%;height:5.5cqw;width:100%;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-line-inner:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.axm-analog-clock-dot-line-inner{position:absolute;top:6cqw;left:50%;height:2cqw;width:1.2cqw;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.axm-analog-clock-dot-line-inner:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-number{position:absolute;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-size:10cqw;font-weight:500;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.axm-analog-clock-hand{position:absolute;bottom:50%;left:50%;transform-origin:bottom;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.axm-analog-clock-hand:after{content:\\\"\\\";position:absolute;left:0;width:100%}.axm-analog-clock-hour-hand{z-index:20;height:25%;width:2.7cqw;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.axm-analog-clock-minute-hand{z-index:30;height:35%;width:2.1cqw;--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-minute-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-second-hand{z-index:40;height:42%;width:1.5cqw;--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.axm-analog-clock-second-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.axm-analog-clock-center-point{position:absolute;top:50%;left:50%;z-index:50;height:9cqw;width:9cqw;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;border-width:1.8cqw;--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMAnalogClockComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-analog-clock', standalone: true, imports: [], template: `\n <div class=\"axm-analog-clock-container\">\n <div class=\"axm-analog-clock-face\" [class]=\"classes()\">\n <div class=\"axm-analog-clock-marks-container\">\n @for (line of hourLines; track $index) {\n <div class=\"axm-analog-clock-hour-line\" [style.transform]=\"line.transform\">\n <div class=\"axm-analog-clock-hour-line-inner\"></div>\n </div>\n }\n @for (dot of dots; track $index) {\n <div class=\"axm-analog-clock-dot-line\" [style.transform]=\"dot.transform\">\n <div class=\"axm-analog-clock-dot-line-inner\"></div>\n </div>\n }\n </div>\n\n @if (showNumbers()) {\n <div class=\"axm-analog-clock-numbers-container\">\n @for (num of hourNumbers; track num.value) {\n <div class=\"axm-analog-clock-hour-number\" [style.top]=\"num.top\" [style.left]=\"num.left\">\n {{ num.value }}\n </div>\n }\n </div>\n }\n <div class=\"axm-analog-clock-hands\">\n <div class=\"axm-analog-clock-hand axm-analog-clock-hour-hand\" [style.transform]=\"hourHandTransform()\"></div>\n <div\n class=\"axm-analog-clock-hand axm-analog-clock-minute-hand\"\n [style.transform]=\"minuteHandTransform()\"\n ></div>\n <div\n class=\"axm-analog-clock-hand axm-analog-clock-second-hand\"\n [style.transform]=\"secondHandTransform()\"\n ></div>\n <div class=\"axm-analog-clock-center-point\"></div>\n </div>\n </div>\n </div>\n `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\":host{display:grid;width:100%;height:100%;place-items:center}.axm-analog-clock-container{position:relative;max-height:100%;width:100%;aspect-ratio:1;container-type:inline-size}.axm-analog-clock-face{position:relative;height:100%;width:100%;border-radius:9999px}.axm-analog-clock-marks-container,.axm-analog-clock-numbers-container,.axm-analog-clock-hands{position:absolute;top:0;right:0;bottom:0;left:0}.axm-analog-clock-hour-line,.axm-analog-clock-dot-line{position:absolute;bottom:50%;left:50%;height:50%;transform-origin:bottom}.axm-analog-clock-hour-line,.axm-analog-clock-dot-line{width:1.8cqw}.axm-analog-clock-hour-line-inner{position:absolute;top:6cqw;left:50%;height:5.5cqw;width:100%;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-line-inner:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.axm-analog-clock-dot-line-inner{position:absolute;top:6cqw;left:50%;height:2cqw;width:1.2cqw;--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.axm-analog-clock-dot-line-inner:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-number{position:absolute;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-size:10cqw;font-weight:500;--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.axm-analog-clock-hand{position:absolute;bottom:50%;left:50%;transform-origin:bottom;border-top-left-radius:.5rem;border-top-right-radius:.5rem}.axm-analog-clock-hand:after{content:\\\"\\\";position:absolute;left:0;width:100%}.axm-analog-clock-hour-hand{z-index:20;height:25%;width:2.7cqw;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.axm-analog-clock-hour-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.axm-analog-clock-minute-hand{z-index:30;height:35%;width:2.1cqw;--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-minute-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.axm-analog-clock-second-hand{z-index:40;height:42%;width:1.5cqw;--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.axm-analog-clock-second-hand:after{bottom:-20%;height:20%;--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.axm-analog-clock-center-point{position:absolute;top:50%;left:50%;z-index:50;height:9cqw;width:9cqw;--tw-translate-x: -50%;--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;border-width:1.8cqw;--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbG9nLWNsb2NrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2FuYWxvZy1jbG9jay9hbmFsb2ctY2xvY2suY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sS0FBSyxFQUdMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQzs7QUErSXZCLE1BQU0sT0FBTyx1QkFBdUI7SUFRbEM7UUFQQSxhQUFRLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDM0IsWUFBTyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQzFCLGdCQUFXLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRWxCLGdCQUFXLEdBQXlCLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsY0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQW9DakUsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN6QyxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUNyRCxPQUFPLDJCQUEyQixVQUFVLE1BQU0sQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUVNLHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0Ms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LElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUk7Z0JBQzlDLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJO2FBQ2hELENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPO1FBQ1AsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDYixTQUFTLEVBQUUsMkJBQTJCLENBQUMsR0FBRyxDQUFDLE1BQU07aUJBQ2xELENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0E5R1UsdUJBQXVCO2tHQUF2Qix1QkFBdUIsaWVBbEl4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNUOzsyRkEyRlUsdUJBQXVCO2tCQXRJbkMsU0FBUzsrQkFDRSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLEVBQUUsWUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNULG1CQXlGZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIFdyaXRhYmxlU2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW50ZXJmYWNlIEFYTUNsb2NrTWFyayB7XG4gIHRyYW5zZm9ybT86IHN0cmluZztcbiAgdG9wPzogc3RyaW5nO1xuICBsZWZ0Pzogc3RyaW5nO1xuICB2YWx1ZT86IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLWFuYWxvZy1jbG9jaycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJheG0tYW5hbG9nLWNsb2NrLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF4bS1hbmFsb2ctY2xvY2stZmFjZVwiIFtjbGFzc109XCJjbGFzc2VzKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4bS1hbmFsb2ctY2xvY2stbWFya3MtY29udGFpbmVyXCI+XG4gICAgICAgICAgQGZvciAobGluZSBvZiBob3VyTGluZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4bS1hbmFsb2ctY2xvY2staG91ci1saW5lXCIgW3N0eWxlLnRyYW5zZm9ybV09XCJsaW5lLnRyYW5zZm9ybVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhtLWFuYWxvZy1jbG9jay1ob3VyLWxpbmUtaW5uZXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgICBAZm9yIChkb3Qgb2YgZG90czsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhtLWFuYWxvZy1jbG9jay1kb3QtbGluZVwiIFtzdHlsZS50cmFuc2Zvcm1dPVwiZG90LnRyYW5zZm9ybVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhtLWFuYWxvZy1jbG9jay1kb3QtbGluZS1pbm5lclwiPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHNob3dOdW1iZXJzKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhtLWFuYWxvZy1jbG9jay1udW1iZXJzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgQGZvciAobnVtIG9mIGhvdXJOdW1iZXJzOyB0cmFjayBudW0udmFsdWUpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4bS1hbmFsb2ctY2xvY2staG91ci1udW1iZXJcIiBbc3R5bGUudG9wXT1cIm51bS50b3BcIiBbc3R5bGUubGVmdF09XCJudW0ubGVmdFwiPlxuICAgICAgICAgICAgICAgIHt7IG51bS52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXhtLWFuYWxvZy1jbG9jay1oYW5kc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheG0tYW5hbG9nLWNsb2NrLWhhbmQgYXhtLWFuYWxvZy1jbG9jay1ob3VyLWhhbmRcIiBbc3R5bGUudHJhbnNmb3JtXT1cImhvdXJIYW5kVHJhbnNmb3JtKClcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF4bS1hbmFsb2ctY2xvY2staGFuZCBheG0tYW5hbG9nLWNsb2NrLW1pbnV0ZS1oYW5kXCJcbiAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwibWludXRlSGFuZFRyYW5zZm9ybSgpXCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheG0tYW5hbG9nLWNsb2NrLWhhbmQgYXhtLWFuYWxvZy1jbG9jay1zZWNvbmQtaGFuZFwiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cInNlY29uZEhhbmRUcmFuc2Zvcm0oKVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheG0tYW5hbG9nLWNsb2NrLWNlbnRlci1wb2ludFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIEBhcHBseSBheC1ncmlkIGF4LXBsYWNlLWl0ZW1zLWNlbnRlciBheC1zaXplLWZ1bGw7XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWNvbnRhaW5lciB7XG4gICAgICAgIEBhcHBseSBheC1yZWxhdGl2ZSBheC13LWZ1bGwgYXgtbWF4LWgtZnVsbDtcbiAgICAgICAgYXNwZWN0LXJhdGlvOiAxO1xuICAgICAgICBjb250YWluZXItdHlwZTogaW5saW5lLXNpemU7XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWZhY2Uge1xuICAgICAgICBAYXBwbHkgYXgtdy1mdWxsIGF4LWgtZnVsbCBheC1yZWxhdGl2ZSBheC1yb3VuZGVkLWZ1bGw7XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLW1hcmtzLWNvbnRhaW5lcixcbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLW51bWJlcnMtY29udGFpbmVyIHtcbiAgICAgICAgQGFwcGx5IGF4LWFic29sdXRlIGF4LWluc2V0LTA7XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWhhbmRzIHtcbiAgICAgICAgQGFwcGx5IGF4LWFic29sdXRlIGF4LWluc2V0LTA7XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWhvdXItbGluZSxcbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWRvdC1saW5lIHtcbiAgICAgICAgQGFwcGx5IGF4LWFic29sdXRlIGF4LWJvdHRvbS0xLzIgYXgtbGVmdC0xLzIgYXgtaC0xLzIgYXgtb3JpZ2luLWJvdHRvbTtcbiAgICAgIH1cblxuICAgICAgLmF4bS1hbmFsb2ctY2xvY2staG91ci1saW5lIHtcbiAgICAgICAgQGFwcGx5IGF4LXctWzEuOGNxd107XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWRvdC1saW5lIHtcbiAgICAgICAgQGFwcGx5IGF4LXctWzEuOGNxd107XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWhvdXItbGluZS1pbm5lciB7XG4gICAgICAgIEBhcHBseSBheC1hYnNvbHV0ZSBheC10b3AtWzZjcXddIGF4LWxlZnQtMS8yIC1heC10cmFuc2xhdGUteC0xLzIgYXgtdy1mdWxsIGF4LWgtWzUuNWNxd10gYXgtYmctZ3JheS00MDAgZGFyazpheC1iZy1ncmF5LTYwMDtcbiAgICAgIH1cblxuICAgICAgLmF4bS1hbmFsb2ctY2xvY2stZG90LWxpbmUtaW5uZXIge1xuICAgICAgICBAYXBwbHkgYXgtYWJzb2x1dGUgYXgtdG9wLVs2Y3F3XSBheC1sZWZ0LTEvMiAtYXgtdHJhbnNsYXRlLXgtMS8yIGF4LXctWzEuMmNxd10gYXgtaC1bMmNxd10gYXgtYmctZ3JheS0zMDAgZGFyazpheC1iZy1ncmF5LTcwMCBheC1yb3VuZGVkLWZ1bGw7XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWhvdXItbnVtYmVyIHtcbiAgICAgICAgQGFwcGx5IGF4LWFic29sdXRlIC1heC10cmFuc2xhdGUteC0xLzIgLWF4LXRyYW5zbGF0ZS15LTEvMiBheC10ZXh0LVsxMGNxd10gYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1ncmF5LTUwMDtcbiAgICAgIH1cblxuICAgICAgLmF4bS1hbmFsb2ctY2xvY2staGFuZCB7XG4gICAgICAgIEBhcHBseSBheC1hYnNvbHV0ZSBheC1ib3R0b20tMS8yIGF4LWxlZnQtMS8yIGF4LW9yaWdpbi1ib3R0b20gYXgtcm91bmRlZC10LWxnO1xuICAgICAgfVxuXG4gICAgICAuYXhtLWFuYWxvZy1jbG9jay1oYW5kOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBAYXBwbHkgYXgtYWJzb2x1dGUgYXgtbGVmdC0wIGF4LXctZnVsbDtcbiAgICAgIH1cblxuICAgICAgLmF4bS1hbmFsb2ctY2xvY2staG91ci1oYW5kIHtcbiAgICAgICAgQGFwcGx5IGF4LXotMjAgYXgtdy1bMi43Y3F3XSBheC1oLTEvNCBheC1iZy1ibGFjaztcbiAgICAgIH1cblxuICAgICAgLmF4bS1hbmFsb2ctY2xvY2staG91ci1oYW5kOjphZnRlciB7XG4gICAgICAgIEBhcHBseSBheC1oLVsyMCVdIC1heC1ib3R0b20tWzIwJV0gYXgtYmctYmxhY2s7XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLW1pbnV0ZS1oYW5kIHtcbiAgICAgICAgQGFwcGx5IGF4LXotMzAgYXgtdy1bMi4xY3F3XSBheC1oLVszNSVdIGF4LWJnLWdyYXktNDAwO1xuICAgICAgfVxuXG4gICAgICAuYXhtLWFuYWxvZy1jbG9jay1taW51dGUtaGFuZDo6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgYXgtaC1bMjAlXSAtYXgtYm90dG9tLVsyMCVdIGF4LWJnLWdyYXktNDAwO1xuICAgICAgfVxuXG4gICAgICAuYXhtLWFuYWxvZy1jbG9jay1zZWNvbmQtaGFuZCB7XG4gICAgICAgIEBhcHBseSBheC16LTQwIGF4LXctWzEuNWNxd10gYXgtaC1bNDIlXSBheC1iZy1yZWQtNTAwO1xuICAgICAgfVxuXG4gICAgICAuYXhtLWFuYWxvZy1jbG9jay1zZWNvbmQtaGFuZDo6YWZ0ZXIge1xuICAgICAgICBAYXBwbHkgYXgtaC1bMjAlXSAtYXgtYm90dG9tLVsyMCVdIGF4LWJnLXJlZC01MDA7XG4gICAgICB9XG5cbiAgICAgIC5heG0tYW5hbG9nLWNsb2NrLWNlbnRlci1wb2ludCB7XG4gICAgICAgIEBhcHBseSBheC1hYnNvbHV0ZSBheC10b3AtMS8yIGF4LWxlZnQtMS8yIC1heC10cmFuc2xhdGUteC0xLzIgLWF4LXRyYW5zbGF0ZS15LTEvMiBheC13LVs5Y3F3XSBheC1oLVs5Y3F3XSBheC1iZy13aGl0ZSBheC1ib3JkZXItWzEuOGNxd10gYXgtYm9yZGVyLWJsYWNrIGF4LXJvdW5kZWQtZnVsbCBheC16LTUwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1BbmFsb2dDbG9ja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgdGltZXpvbmUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGNsYXNzZXMgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHNob3dOdW1iZXJzID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjdXJyZW50VGltZTogV3JpdGFibGVTaWduYWw8RGF0ZT4gPSBzaWduYWwobmV3IERhdGUoKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGltZVBhcnRzID0gc2lnbmFsKHsgaG91cnM6IDAsIG1pbnV0ZXM6IDAsIHNlY29uZHM6IDAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG5vdyA9IHRoaXMuY3VycmVudFRpbWUoKTtcbiAgICAgIGNvbnN0IHR6ID0gdGhpcy50aW1lem9uZSgpO1xuICAgICAgbGV0IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzO1xuXG4gICAgICBpZiAodHopIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCB7XG4gICAgICAgICAgICB0aW1lWm9uZTogdHosXG4gICAgICAgICAgICBob3VyMTI6IGZhbHNlLFxuICAgICAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICBzZWNvbmQ6ICdudW1lcmljJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKG5vdyk7XG4gICAgICAgICAgaG91cnMgPSBwYXJzZUludChwYXJ0cy5maW5kKChwKSA9PiBwLnR5cGUgPT09ICdob3VyJyk/LnZhbHVlID8/ICcwJywgMTApO1xuICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludChwYXJ0cy5maW5kKChwKSA9PiBwLnR5cGUgPT09ICdtaW51dGUnKT8udmFsdWUgPz8gJzAnLCAxMCk7XG4gICAgICAgICAgc2Vjb25kcyA9IHBhcnNlSW50KHBhcnRzLmZpbmQoKHApID0+IHAudHlwZSA9PT0gJ3NlY29uZCcpPy52YWx1ZSA/PyAnMCcsIDEwKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgdGltZXpvbmUgcHJvdmlkZWQ6IFwiJHt0en1cIi4gRmFsbGluZyBiYWNrIHRvIGxvY2FsIHRpbWUuYCk7XG4gICAgICAgICAgaG91cnMgPSBub3cuZ2V0SG91cnMoKTtcbiAgICAgICAgICBtaW51dGVzID0gbm93LmdldE1pbnV0ZXMoKTtcbiAgICAgICAgICBzZWNvbmRzID0gbm93LmdldFNlY29uZHMoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaG91cnMgPSBub3cuZ2V0SG91cnMoKTtcbiAgICAgICAgbWludXRlcyA9IG5vdy5nZXRNaW51dGVzKCk7XG4gICAgICAgIHNlY29uZHMgPSBub3cuZ2V0U2Vjb25kcygpO1xuICAgICAgfVxuICAgICAgdGhpcy50aW1lUGFydHMuc2V0KHsgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgfSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkb25seSBob3VySGFuZFRyYW5zZm9ybSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB7IGhvdXJzLCBtaW51dGVzIH0gPSB0aGlzLnRpbWVQYXJ0cygpO1xuICAgIGNvbnN0IGhvdXJzQW5nbGUgPSAoaG91cnMgJSAxMikgKiAzMCArIG1pbnV0ZXMgKiAwLjU7XG4gICAgcmV0dXJuIGB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSgke2hvdXJzQW5nbGV9ZGVnKWA7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IG1pbnV0ZUhhbmRUcmFuc2Zvcm0gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgeyBtaW51dGVzLCBzZWNvbmRzIH0gPSB0aGlzLnRpbWVQYXJ0cygpO1xuICAgIGNvbnN0IG1pbnV0ZXNBbmdsZSA9IG1pbnV0ZXMgKiA2ICsgc2Vjb25kcyAqIDAuMTtcbiAgICByZXR1cm4gYHRyYW5zbGF0ZVgoLTUwJSkgcm90YXRlKCR7bWludXRlc0FuZ2xlfWRlZylgO1xuICB9KTtcblxuICByZWFkb25seSBzZWNvbmRIYW5kVHJhbnNmb3JtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHsgc2Vjb25kcyB9ID0gdGhpcy50aW1lUGFydHMoKTtcbiAgICBjb25zdCBzZWNvbmRzQW5nbGUgPSBzZWNvbmRzICogNjtcbiAgICByZXR1cm4gYHRyYW5zbGF0ZVgoLTUwJSkgcm90YXRlKCR7c2Vjb25kc0FuZ2xlfWRlZylgO1xuICB9KTtcblxuICBob3VyTGluZXM6IEFYTUNsb2NrTWFya1tdID0gW107XG4gIGhvdXJOdW1iZXJzOiBBWE1DbG9ja01hcmtbXSA9IFtdO1xuICBkb3RzOiBBWE1DbG9ja01hcmtbXSA9IFtdO1xuXG4gIHByaXZhdGUgdGltZXJJZD86IG51bWJlcjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZUNsb2NrTWFya3MoKTtcbiAgICB0aGlzLnRpbWVySWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50VGltZS5zZXQobmV3IERhdGUoKSk7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50aW1lcklkKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMudGltZXJJZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDbG9ja01hcmtzKCk6IHZvaWQge1xuICAgIGNvbnN0IG1ham9ySG91cnMgPSBbMTIsIDMsIDYsIDldO1xuXG4gICAgLy8gSG91ciBMaW5lc1xuICAgIHRoaXMuaG91ckxpbmVzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gMTI7IGkrKykge1xuICAgICAgdGhpcy5ob3VyTGluZXMucHVzaCh7XG4gICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoLTUwJSkgcm90YXRlKCR7aSAqIDMwfWRlZylgLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSG91ciBOdW1iZXJzXG4gICAgdGhpcy5ob3VyTnVtYmVycyA9IFtdO1xuICAgIGZvciAoY29uc3QgaG91ciBvZiBtYWpvckhvdXJzKSB7XG4gICAgICBjb25zdCBhbmdsZVJhZCA9IChob3VyICogMzAgLSA5MCkgKiAoTWF0aC5QSSAvIDE4MCk7XG4gICAgICB0aGlzLmhvdXJOdW1iZXJzLnB1c2goe1xuICAgICAgICB2YWx1ZTogaG91cixcbiAgICAgICAgdG9wOiBgY2FsYyg1MCUgKyAkezMwICogTWF0aC5zaW4oYW5nbGVSYWQpfSUpYCxcbiAgICAgICAgbGVmdDogYGNhbGMoNTAlICsgJHszMCAqIE1hdGguY29zKGFuZ2xlUmFkKX0lKWAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEb3RzXG4gICAgdGhpcy5kb3RzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNjA7IGkrKykge1xuICAgICAgaWYgKGkgJSA1ICE9PSAwKSB7XG4gICAgICAgIHRoaXMuZG90cy5wdXNoKHtcbiAgICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSgke2kgKiA2fWRlZylgLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { AXPRegionalService } from '@acorex/platform/common';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed, inject, signal } from '@angular/core';\nimport { AXMAnalogClockComponent } from './analog-clock.component';\nimport * as i0 from \"@angular/core\";\nexport class AXMClockWidgetViewComponent extends AXPLayoutWidgetComponent {\n constructor() {\n super();\n this.regionalService = inject(AXPRegionalService);\n this.userTimezone = signal(null);\n this.timezone = computed(() => {\n const configuredTimezone = this.options()?.timezone;\n return configuredTimezone || this.userTimezone();\n });\n this.others = computed(() => (this.options()?.others ?? []));\n this.loadUserTimezone();\n }\n async loadUserTimezone() {\n try {\n const timezoneCode = await this.regionalService.getBrowserTimeZoneCode();\n const timezones = await this.regionalService.getTimeZones();\n const timezone = timezones.find((tz) => tz.code === timezoneCode);\n if (timezone) {\n this.userTimezone.set(timezone);\n }\n }\n catch (error) {\n console.error('Failed to load user timezone', error);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMClockWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMClockWidgetViewComponent, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: `\n <div\n class=\"ax-p-2 ax-h-full ax-overflow-hidden ax-flex ax-justify-center ax-items-center\"\n [class.ax-bg-light]=\"others().length > 0\"\n >\n <!-- Main Clock Section -->\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-around ax-gap-2 ax-flex-1 ax-h-full\">\n <div\n class=\"ax-flex ax-items-center ax-justify-center ax-gap-2 ax-w-full ax-flex-wrap\"\n [class.ax-rounded-full]=\"others().length > 0\"\n [class.ax-border]=\"others().length > 0\"\n [class.ax-border-gray-100]=\"others().length > 0\"\n [class.ax-shadow-lg]=\"others().length > 0\"\n [class.ax-bg-lighter]=\"others().length > 0\"\n >\n <div class=\"ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-28 ax-grow\">\n <axm-analog-clock\n [timezone]=\"timezone()?.iana\"\n [classes]=\"others().length > 0 ? 'ax-bg-lightest' : undefined\"\n ></axm-analog-clock>\n </div>\n @if (timezone()?.abbr) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-text-center ax-min-w-[50px] ax-px-2\">\n <span class=\"ax-text-xl ax-font-medium ax-text-gray-500 ax-uppercase ax-tracking-wide\">{{\n timezone()?.code\n }}</span>\n <span class=\"ax-text-2xl ax-font-bold ax-text-gray-800 ax-mt-0\">{{ timezone()?.abbr }}</span>\n </div>\n }\n </div>\n\n <!-- Additional Clocks Section -->\n @if (others().length > 0) {\n <div class=\"ax-w-full ax-max-w-4xl ax-mx-auto\">\n <div class=\"ax-flex ax-justify-evenly ax-gap-2 ax-overflow-auto\">\n @for (clock of others(); track clock.code) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-2 ax-w-full\">\n <div\n class=\"ax-w-full ax-aspect-square ax-flex ax-items-center ax-justify-center\"\n style=\"min-width: 50px; max-width: 80px;\"\n >\n <axm-analog-clock\n [timezone]=\"clock.iana\"\n [showNumbers]=\"false\"\n [classes]=\"'ax-bg-lightest'\"\n ></axm-analog-clock>\n </div>\n @if (clock.abbr) {\n <div class=\"ax-text-center ax-w-full ax-pt-2\">\n <span class=\"ax-text-xs ax-font-medium ax-text-gray-600 ax-truncate ax-block\">{{\n clock.abbr\n }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n `, isInline: true, styles: [\":host{display:block;width:100%;height:100%}.ax-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\\n\"], dependencies: [{ kind: \"component\", type: AXMAnalogClockComponent, selector: \"axm-analog-clock\", inputs: [\"timezone\", \"classes\", \"showNumbers\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMClockWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ template: `\n <div\n class=\"ax-p-2 ax-h-full ax-overflow-hidden ax-flex ax-justify-center ax-items-center\"\n [class.ax-bg-light]=\"others().length > 0\"\n >\n <!-- Main Clock Section -->\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-around ax-gap-2 ax-flex-1 ax-h-full\">\n <div\n class=\"ax-flex ax-items-center ax-justify-center ax-gap-2 ax-w-full ax-flex-wrap\"\n [class.ax-rounded-full]=\"others().length > 0\"\n [class.ax-border]=\"others().length > 0\"\n [class.ax-border-gray-100]=\"others().length > 0\"\n [class.ax-shadow-lg]=\"others().length > 0\"\n [class.ax-bg-lighter]=\"others().length > 0\"\n >\n <div class=\"ax-aspect-square ax-flex ax-items-center ax-justify-center ax-min-w-28 ax-grow\">\n <axm-analog-clock\n [timezone]=\"timezone()?.iana\"\n [classes]=\"others().length > 0 ? 'ax-bg-lightest' : undefined\"\n ></axm-analog-clock>\n </div>\n @if (timezone()?.abbr) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-text-center ax-min-w-[50px] ax-px-2\">\n <span class=\"ax-text-xl ax-font-medium ax-text-gray-500 ax-uppercase ax-tracking-wide\">{{\n timezone()?.code\n }}</span>\n <span class=\"ax-text-2xl ax-font-bold ax-text-gray-800 ax-mt-0\">{{ timezone()?.abbr }}</span>\n </div>\n }\n </div>\n\n <!-- Additional Clocks Section -->\n @if (others().length > 0) {\n <div class=\"ax-w-full ax-max-w-4xl ax-mx-auto\">\n <div class=\"ax-flex ax-justify-evenly ax-gap-2 ax-overflow-auto\">\n @for (clock of others(); track clock.code) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-2 ax-w-full\">\n <div\n class=\"ax-w-full ax-aspect-square ax-flex ax-items-center ax-justify-center\"\n style=\"min-width: 50px; max-width: 80px;\"\n >\n <axm-analog-clock\n [timezone]=\"clock.iana\"\n [showNumbers]=\"false\"\n [classes]=\"'ax-bg-lightest'\"\n ></axm-analog-clock>\n </div>\n @if (clock.abbr) {\n <div class=\"ax-text-center ax-w-full ax-pt-2\">\n <span class=\"ax-text-xs ax-font-medium ax-text-gray-600 ax-truncate ax-block\">{{\n clock.abbr\n }}</span>\n </div>\n }\n </div>\n }\n </div>\n </div>\n }\n </div>\n </div>\n `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXMAnalogClockComponent], styles: [\":host{display:block;width:100%;height:100%}.ax-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbG9nLWNsb2NrLXdpZGdldC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2FuYWxvZy1jbG9jay9hbmFsb2ctY2xvY2std2lkZ2V0LXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBZSxNQUFNLHlCQUF5QixDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBbUZuRSxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsd0JBQXdCO0lBSXZFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFKTyxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RELGlCQUFZLEdBQUcsTUFBTSxDQUFxQixJQUFJLENBQUMsQ0FBQztRQW9CeEQsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBbUMsQ0FBQztZQUMvRSxPQUFPLGtCQUFrQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBa0IsQ0FBQyxDQUFDO1FBckJ2RSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQjtRQUM1QixJQUFJLENBQUM7WUFDSCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUN6RSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQztZQUNsRSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7OEdBcEJVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLCtGQWhGNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2RFQsOExBaUJTLHVCQUF1Qjs7MkZBRXRCLDJCQUEyQjtrQkFqRnZDLFNBQVM7K0JBQ0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2RFQsY0FlVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFJlZ2lvbmFsU2VydmljZSwgQVhQVGltZVpvbmUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhNQW5hbG9nQ2xvY2tDb21wb25lbnQgfSBmcm9tICcuL2FuYWxvZy1jbG9jay5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LXAtMiBheC1oLWZ1bGwgYXgtb3ZlcmZsb3ctaGlkZGVuIGF4LWZsZXggYXgtanVzdGlmeS1jZW50ZXIgYXgtaXRlbXMtY2VudGVyXCJcbiAgICAgIFtjbGFzcy5heC1iZy1saWdodF09XCJvdGhlcnMoKS5sZW5ndGggPiAwXCJcbiAgICA+XG4gICAgICA8IS0tIE1haW4gQ2xvY2sgU2VjdGlvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWFyb3VuZCBheC1nYXAtMiBheC1mbGV4LTEgYXgtaC1mdWxsXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWdhcC0yIGF4LXctZnVsbCBheC1mbGV4LXdyYXBcIlxuICAgICAgICAgIFtjbGFzcy5heC1yb3VuZGVkLWZ1bGxdPVwib3RoZXJzKCkubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW2NsYXNzLmF4LWJvcmRlcl09XCJvdGhlcnMoKS5sZW5ndGggPiAwXCJcbiAgICAgICAgICBbY2xhc3MuYXgtYm9yZGVyLWdyYXktMTAwXT1cIm90aGVycygpLmxlbmd0aCA+IDBcIlxuICAgICAgICAgIFtjbGFzcy5heC1zaGFkb3ctbGddPVwib3RoZXJzKCkubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW2NsYXNzLmF4LWJnLWxpZ2h0ZXJdPVwib3RoZXJzKCkubGVuZ3RoID4gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYXNwZWN0LXNxdWFyZSBheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1taW4tdy0yOCBheC1ncm93XCI+XG4gICAgICAgICAgICA8YXhtLWFuYWxvZy1jbG9ja1xuICAgICAgICAgICAgICBbdGltZXpvbmVdPVwidGltZXpvbmUoKT8uaWFuYVwiXG4gICAgICAgICAgICAgIFtjbGFzc2VzXT1cIm90aGVycygpLmxlbmd0aCA+IDAgPyAnYXgtYmctbGlnaHRlc3QnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgID48L2F4bS1hbmFsb2ctY2xvY2s+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgQGlmICh0aW1lem9uZSgpPy5hYmJyKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtdGV4dC1jZW50ZXIgYXgtbWluLXctWzUwcHhdIGF4LXB4LTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXhsIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtZ3JheS01MDAgYXgtdXBwZXJjYXNlIGF4LXRyYWNraW5nLXdpZGVcIj57e1xuICAgICAgICAgICAgICAgIHRpbWV6b25lKCk/LmNvZGVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC0yeGwgYXgtZm9udC1ib2xkIGF4LXRleHQtZ3JheS04MDAgYXgtbXQtMFwiPnt7IHRpbWV6b25lKCk/LmFiYnIgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQWRkaXRpb25hbCBDbG9ja3MgU2VjdGlvbiAtLT5cbiAgICAgICAgQGlmIChvdGhlcnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctZnVsbCBheC1tYXgtdy00eGwgYXgtbXgtYXV0b1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1ldmVubHkgYXgtZ2FwLTIgYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgICAgICBAZm9yIChjbG9jayBvZiBvdGhlcnMoKTsgdHJhY2sgY2xvY2suY29kZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBheC1wLTIgYXgtdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtdy1mdWxsIGF4LWFzcGVjdC1zcXVhcmUgYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1pbi13aWR0aDogNTBweDsgbWF4LXdpZHRoOiA4MHB4O1wiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxheG0tYW5hbG9nLWNsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgW3RpbWV6b25lXT1cImNsb2NrLmlhbmFcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93TnVtYmVyc109XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2NsYXNzZXNdPVwiJ2F4LWJnLWxpZ2h0ZXN0J1wiXG4gICAgICAgICAgICAgICAgICAgID48L2F4bS1hbmFsb2ctY2xvY2s+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoY2xvY2suYWJicikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtdy1mdWxsIGF4LXB0LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteHMgYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1ncmF5LTYwMCBheC10cnVuY2F0ZSBheC1ibG9ja1wiPnt7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbG9jay5hYmJyXG4gICAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogYFxuICAgIDpob3N0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuXG4gICAgLyogRW5zdXJlIHRleHQgZG9lc24ndCBvdmVyZmxvdyBvbiB2ZXJ5IHNtYWxsIHNjcmVlbnMgKi9cbiAgICAuYXgtdHJ1bmNhdGUge1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQVhNQW5hbG9nQ2xvY2tDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1DbG9ja1dpZGdldFZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWFBMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lvbmFsU2VydmljZSA9IGluamVjdChBWFBSZWdpb25hbFNlcnZpY2UpO1xuICBwcml2YXRlIHVzZXJUaW1lem9uZSA9IHNpZ25hbDxBWFBUaW1lWm9uZSB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sb2FkVXNlclRpbWV6b25lKCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRVc2VyVGltZXpvbmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRpbWV6b25lQ29kZSA9IGF3YWl0IHRoaXMucmVnaW9uYWxTZXJ2aWNlLmdldEJyb3dzZXJUaW1lWm9uZUNvZGUoKTtcbiAgICAgIGNvbnN0IHRpbWV6b25lcyA9IGF3YWl0IHRoaXMucmVnaW9uYWxTZXJ2aWNlLmdldFRpbWVab25lcygpO1xuICAgICAgY29uc3QgdGltZXpvbmUgPSB0aW1lem9uZXMuZmluZCgodHopID0+IHR6LmNvZGUgPT09IHRpbWV6b25lQ29kZSk7XG4gICAgICBpZiAodGltZXpvbmUpIHtcbiAgICAgICAgdGhpcy51c2VyVGltZXpvbmUuc2V0KHRpbWV6b25lKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxvYWQgdXNlciB0aW1lem9uZScsIGVycm9yKTtcbiAgICB9XG4gIH1cblxuICB0aW1lem9uZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb25maWd1cmVkVGltZXpvbmUgPSB0aGlzLm9wdGlvbnMoKT8udGltZXpvbmUgYXMgQVhQVGltZVpvbmUgfCB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGNvbmZpZ3VyZWRUaW1lem9uZSB8fCB0aGlzLnVzZXJUaW1lem9uZSgpO1xuICB9KTtcblxuICBvdGhlcnMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5vcHRpb25zKCk/Lm90aGVycyA/PyBbXSkgYXMgQVhQVGltZVpvbmVbXSk7XG59XG4iXX0=","import { AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/widgets';\nexport const AXPAnalogClockWidget = {\n name: 'analog-clock',\n title: 'Analog Clock',\n description: '',\n type: 'view',\n categories: [],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n icon: 'fa-solid fa-square',\n properties: [\n {\n name: 'timezone',\n title: '@dashboard:widgets.analog-clock.timezone',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'object',\n interface: {\n name: 'timezone',\n path: 'options.timezone',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: 'timezones',\n textField: 'title',\n valueField: 'code',\n },\n },\n },\n visible: true,\n order: 1,\n },\n {\n name: 'others',\n title: '@dashboard:widgets.analog-clock.other-timezones',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n dataType: 'object',\n interface: {\n name: 'others',\n path: 'options.others',\n type: AXPWidgetsCatalog.select,\n options: {\n multiple: true,\n dataSource: 'timezones',\n textField: 'title',\n valueField: 'code',\n },\n },\n },\n visible: true,\n order: 2,\n },\n ],\n components: {\n view: {\n component: () => import('./analog-clock-widget-view.component').then((c) => c.AXMClockWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 2,\n height: 3,\n minWidth: 1,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 6,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbG9nLWNsb2NrLXdpZGdldC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9hbmFsb2ctY2xvY2svYW5hbG9nLWNsb2NrLXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFvQjtJQUNuRCxJQUFJLEVBQUUsY0FBYztJQUNwQixLQUFLLEVBQUUsY0FBYztJQUNyQixXQUFXLEVBQUUsRUFBRTtJQUNmLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLEVBQUU7SUFDZCxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7SUFDNUMsSUFBSSxFQUFFLG9CQUFvQjtJQUMxQixVQUFVLEVBQUU7UUFDVjtZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUssRUFBRSwwQ0FBMEM7WUFDakQsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixNQUFNLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07b0JBQzlCLE9BQU8sRUFBRTt3QkFDUCxVQUFVLEVBQUUsV0FBVzt3QkFDdkIsU0FBUyxFQUFFLE9BQU87d0JBQ2xCLFVBQVUsRUFBRSxNQUFNO3FCQUNuQjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7WUFDYixLQUFLLEVBQUUsQ0FBQztTQUNUO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsUUFBUTtZQUNkLEtBQUssRUFBRSxpREFBaUQ7WUFDeEQsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixNQUFNLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtvQkFDOUIsT0FBTyxFQUFFO3dCQUNQLFFBQVEsRUFBRSxJQUFJO3dCQUNkLFVBQVUsRUFBRSxXQUFXO3dCQUN2QixTQUFTLEVBQUUsT0FBTzt3QkFDbEIsVUFBVSxFQUFFLE1BQU07cUJBQ25CO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxDQUFDO1NBQ1Q7S0FDRjtJQUNELFVBQVUsRUFBRTtRQUNWLElBQUksRUFBRTtZQUNKLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztTQUMzRztLQUNGO0lBQ0QsSUFBSSxFQUFFO1FBQ0osVUFBVSxFQUFFO1lBQ1YsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUVULFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFFWixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1NBQ2I7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSwgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUF9EQVRBX1BST1BFUlRZX0dST1VQIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcblxuZXhwb3J0IGNvbnN0IEFYUEFuYWxvZ0Nsb2NrV2lkZ2V0OiBBWFBXaWRnZXRDb25maWcgPSB7XG4gIG5hbWU6ICdhbmFsb2ctY2xvY2snLFxuICB0aXRsZTogJ0FuYWxvZyBDbG9jaycsXG4gIGRlc2NyaXB0aW9uOiAnJyxcbiAgdHlwZTogJ3ZpZXcnLFxuICBjYXRlZ29yaWVzOiBbXSxcbiAgZ3JvdXBzOiBbQVhQV2lkZ2V0R3JvdXBFbnVtLkRhc2hib2FyZFdpZGdldF0sXG4gIGljb246ICdmYS1zb2xpZCBmYS1zcXVhcmUnLFxuICBwcm9wZXJ0aWVzOiBbXG4gICAge1xuICAgICAgbmFtZTogJ3RpbWV6b25lJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmFuYWxvZy1jbG9jay50aW1lem9uZScsXG4gICAgICBncm91cDogQVhQX0RBVEFfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGF0YVR5cGU6ICdvYmplY3QnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAndGltZXpvbmUnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnRpbWV6b25lJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZGF0YVNvdXJjZTogJ3RpbWV6b25lcycsXG4gICAgICAgICAgICB0ZXh0RmllbGQ6ICd0aXRsZScsXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiAnY29kZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgb3JkZXI6IDEsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnb3RoZXJzJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmFuYWxvZy1jbG9jay5vdGhlci10aW1lem9uZXMnLFxuICAgICAgZ3JvdXA6IEFYUF9EQVRBX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRhdGFUeXBlOiAnb2JqZWN0JyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ290aGVycycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMub3RoZXJzJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICBkYXRhU291cmNlOiAndGltZXpvbmVzJyxcbiAgICAgICAgICAgIHRleHRGaWVsZDogJ3RpdGxlJyxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6ICdjb2RlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICBvcmRlcjogMixcbiAgICB9LFxuICBdLFxuICBjb21wb25lbnRzOiB7XG4gICAgdmlldzoge1xuICAgICAgY29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vYW5hbG9nLWNsb2NrLXdpZGdldC12aWV3LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNQ2xvY2tXaWRnZXRWaWV3Q29tcG9uZW50KSxcbiAgICB9LFxuICB9LFxuICBtZXRhOiB7XG4gICAgZGltZW5zaW9uczoge1xuICAgICAgd2lkdGg6IDIsXG4gICAgICBoZWlnaHQ6IDMsXG5cbiAgICAgIG1pbldpZHRoOiAxLFxuICAgICAgbWluSGVpZ2h0OiAyLFxuXG4gICAgICBtYXhXaWR0aDogNCxcbiAgICAgIG1heEhlaWdodDogNixcbiAgICB9LFxuICB9LFxufTtcbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJyB7XG4gIGludGVyZmFjZSBBWFBXaWRnZXRUeXBlc01hcCB7XG4gICAgYW5hbG9nQ2xvY2s6ICdhbmFsb2ctY2xvY2snO1xuICB9XG59XG4iXX0=","import { AXBarChartComponent } from '@acorex/charts/bar-chart';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Bar Chart Widget Component\n * Renders data as vertical bars with interactive hover effects and animations\n */\nexport class AXPBarChartWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super();\n this.barChartData = computed(() => this.getValue());\n this.barChartOptions = computed(() => this.options());\n this.setOptions({\n ...this.options(),\n showXAxis: true,\n showYAxis: true,\n barWidth: 80,\n cornerRadius: 4,\n showGrid: true,\n showDataLabels: false,\n showTooltip: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n }\n handleBarClick(event) {\n //console.log(event);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPBarChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPBarChartWidgetViewComponent, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: \"<ax-bar-chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\" (barClick)=\\\"handleBarClick($event)\\\"></ax-bar-chart>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"], dependencies: [{ kind: \"component\", type: AXBarChartComponent, selector: \"ax-bar-chart\", inputs: [\"data\", \"options\"], outputs: [\"barClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPBarChartWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ imports: [AXBarChartComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ax-bar-chart [data]=\\\"barChartData()\\\" [options]=\\\"barChartOptions()\\\" (barClick)=\\\"handleBarClick($event)\\\"></ax-bar-chart>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0LXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9iYXItY2hhcnQvYmFyLWNoYXJ0LXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9iYXItY2hhcnQvYmFyLWNoYXJ0LXdpZGdldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQW9DLE1BQU0sMEJBQTBCLENBQUM7QUFDakcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBRXJGOzs7R0FHRztBQU9ILE1BQU0sT0FBTyw4QkFBK0IsU0FBUSx1QkFBdUI7SUFJekU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUpWLGlCQUFZLEdBQTZCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RSxvQkFBZSxHQUFpRCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFJN0YsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNkLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixTQUFTLEVBQUUsSUFBSTtZQUNmLFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLEVBQUU7WUFDWixZQUFZLEVBQUUsQ0FBQztZQUNmLFFBQVEsRUFBRSxJQUFJO1lBQ2QsY0FBYyxFQUFFLEtBQUs7WUFDckIsV0FBVyxFQUFFLElBQUk7WUFDakIsZUFBZSxFQUFFLFdBQVc7WUFDNUIsaUJBQWlCLEVBQUUsR0FBRztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDdkIscUJBQXFCO0lBQ3ZCLENBQUM7OEdBdEJVLDhCQUE4QjtrR0FBOUIsOEJBQThCLCtGQ2QzQyxpSUFDQSx1R0RVWSxtQkFBbUI7OzJGQUdsQiw4QkFBOEI7a0JBTjFDLFNBQVM7OEJBR0MsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFDYix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCYXJDaGFydENvbXBvbmVudCwgQVhCYXJDaGFydERhdGEsIEFYQmFyQ2hhcnRPcHRpb24gfSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9iYXItY2hhcnQnO1xuaW1wb3J0IHsgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBCYXIgQ2hhcnQgV2lkZ2V0IENvbXBvbmVudFxuICogUmVuZGVycyBkYXRhIGFzIHZlcnRpY2FsIGJhcnMgd2l0aCBpbnRlcmFjdGl2ZSBob3ZlciBlZmZlY3RzIGFuZCBhbmltYXRpb25zXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vYmFyLWNoYXJ0LXdpZGdldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jhci1jaGFydC13aWRnZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW0FYQmFyQ2hhcnRDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQQmFyQ2hhcnRXaWRnZXRWaWV3Q29tcG9uZW50IGV4dGVuZHMgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQge1xuICBiYXJDaGFydERhdGE6IFNpZ25hbDxBWEJhckNoYXJ0RGF0YVtdPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2V0VmFsdWUoKSk7XG4gIGJhckNoYXJ0T3B0aW9uczogU2lnbmFsPEFYQmFyQ2hhcnRPcHRpb24gJiB7IHRpdGxlOiBzdHJpbmcgfT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNldE9wdGlvbnMoe1xuICAgICAgLi4udGhpcy5vcHRpb25zKCksXG4gICAgICBzaG93WEF4aXM6IHRydWUsXG4gICAgICBzaG93WUF4aXM6IHRydWUsXG4gICAgICBiYXJXaWR0aDogODAsXG4gICAgICBjb3JuZXJSYWRpdXM6IDQsXG4gICAgICBzaG93R3JpZDogdHJ1ZSxcbiAgICAgIHNob3dEYXRhTGFiZWxzOiBmYWxzZSxcbiAgICAgIHNob3dUb29sdGlwOiB0cnVlLFxuICAgICAgYW5pbWF0aW9uRWFzaW5nOiAnY3ViaWMtb3V0JyxcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiA4MDAsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVCYXJDbGljayhldmVudDogYW55KSB7XG4gICAgLy9jb25zb2xlLmxvZyhldmVudCk7XG4gIH1cbn1cbiIsIjxheC1iYXItY2hhcnQgW2RhdGFdPVwiYmFyQ2hhcnREYXRhKClcIiBbb3B0aW9uc109XCJiYXJDaGFydE9wdGlvbnMoKVwiIChiYXJDbGljayk9XCJoYW5kbGVCYXJDbGljaygkZXZlbnQpXCI+PC9heC1iYXItY2hhcnQ+XG4iXX0=","export const AXP_WIDGETS_CHART_CATEGORY = {\n name: 'chart',\n order: 6,\n title: 'Charts',\n};\nexport const AXP_WIDGETS_UTILITY_CATEGORY = {\n name: 'utility',\n order: 7,\n title: 'Utilities',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2NoYXJ0LnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQXNCO0lBQzNELElBQUksRUFBRSxPQUFPO0lBQ2IsS0FBSyxFQUFFLENBQUM7SUFDUixLQUFLLEVBQUUsUUFBUTtDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQXNCO0lBQzdELElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLENBQUM7SUFDUixLQUFLLEVBQUUsV0FBVztDQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQV2lkZ2V0Q2F0ZWdvcnkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRTX0NIQVJUX0NBVEVHT1JZOiBBWFBXaWRnZXRDYXRlZ29yeSA9IHtcbiAgbmFtZTogJ2NoYXJ0JyxcbiAgb3JkZXI6IDYsXG4gIHRpdGxlOiAnQ2hhcnRzJyxcbn07XG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUU19VVElMSVRZX0NBVEVHT1JZOiBBWFBXaWRnZXRDYXRlZ29yeSA9IHtcbiAgbmFtZTogJ3V0aWxpdHknLFxuICBvcmRlcjogNyxcbiAgdGl0bGU6ICdVdGlsaXRpZXMnLFxufTtcblxuXG4iXX0=","import { AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY, } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\nexport const AXPBarChartWidget = {\n name: 'bar-chart',\n title: 'Bar Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-bar',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.bar-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== X Axis Settings ======\n {\n name: 'xAxisLabel',\n title: '@dashboard:widgets.bar-chart.x-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'xAxisLabel',\n path: 'options.xAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n // ====== Y Axis Settings ======\n {\n name: 'yAxisLabel',\n title: '@dashboard:widgets.bar-chart.y-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'yAxisLabel',\n path: 'options.yAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.bar-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.bar-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== X Axis Settings ======\n {\n name: 'showXAxis',\n title: '@dashboard:widgets.bar-chart.show-x-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showXAxis',\n path: 'options.showXAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Y Axis Settings ======\n {\n name: 'showYAxis',\n title: '@dashboard:widgets.bar-chart.show-y-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showYAxis',\n path: 'options.showYAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Bar Appearance ======\n {\n name: 'barWidth',\n title: '@dashboard:widgets.bar-chart.bar-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 80,\n dataType: 'number',\n interface: {\n name: 'barWidth',\n path: 'options.barWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.bar-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Grid Settings ======\n {\n name: 'showGrid',\n title: '@dashboard:widgets.bar-chart.show-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showGrid',\n path: 'options.showGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showDataLabels',\n title: '@dashboard:widgets.bar-chart.show-data-labels',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDataLabels',\n path: 'options.showDataLabels',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Tooltip Settings ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.bar-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.bar-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.bar-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./bar-chart-widget.component').then((c) => c.AXPBarChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 5,\n height: 6,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 6,\n maxHeight: 7,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyLWNoYXJ0LXdpZGdldC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9iYXItY2hhcnQvYmFyLWNoYXJ0LXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4SCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUN0QixpQkFBaUIsR0FFbEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQW9CO0lBQ2hELElBQUksRUFBRSxXQUFXO0lBQ2pCLEtBQUssRUFBRSxrQkFBa0I7SUFDekIsVUFBVSxFQUFFLENBQUMsMEJBQTBCLENBQUM7SUFDeEMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDO0lBQzVDLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsVUFBVSxFQUFFO1FBQ1YsYUFBYSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BELGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN6RCw0QkFBNEI7UUFDNUI7WUFDRSxJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSwwQ0FBMEM7WUFDakQsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLE9BQU87b0JBQ2IsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUM1QixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxFQUFFLG1CQUFtQjtxQkFDakM7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFDRCxnQ0FBZ0M7UUFDaEM7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUUsMkNBQTJDO1lBQ2xELEtBQUssRUFBRSw2QkFBNkI7WUFDcEMsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxFQUFFO2dCQUNoQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDN0I7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFDRCxnQ0FBZ0M7UUFDaEM7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUUsMkNBQTJDO1lBQ2xELEtBQUssRUFBRSw2QkFBNkI7WUFDcEMsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxFQUFFO2dCQUNoQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDN0I7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFDRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQW1ORTtLQUNIO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO1NBQ3RHO0tBQ0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBRVQsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztZQUVaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7U0FDYjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0R3JvdXBFbnVtLCBBWFBXaWRnZXRzQ2F0YWxvZywgY2xvbmVQcm9wZXJ0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gIEFYUF9EQVRBX1BBVEhfUFJPUEVSVFksXG4gIEFYUF9OQU1FX1BST1BFUlRZLFxuICBBWFBfU1RZTElOR19QUk9QRVJUWV9HUk9VUCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcbmltcG9ydCB7IEFYUF9XSURHRVRTX0NIQVJUX0NBVEVHT1JZIH0gZnJvbSAnLi4vY2hhcnQudHlwZSc7XG5cbmV4cG9ydCBjb25zdCBBWFBCYXJDaGFydFdpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnYmFyLWNoYXJ0JyxcbiAgdGl0bGU6ICdCYXIgQ2hhcnQgV2lkZ2V0JyxcbiAgY2F0ZWdvcmllczogW0FYUF9XSURHRVRTX0NIQVJUX0NBVEVHT1JZXSxcbiAgZ3JvdXBzOiBbQVhQV2lkZ2V0R3JvdXBFbnVtLkRhc2hib2FyZFdpZGdldF0sXG4gIHR5cGU6ICdkYXNoYm9hcmQnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtY2hhcnQtYmFyJyxcbiAgcHJvcGVydGllczogW1xuICAgIGNsb25lUHJvcGVydHkoQVhQX05BTUVfUFJPUEVSVFksIHsgdmlzaWJsZTogZmFsc2UgfSksXG4gICAgY2xvbmVQcm9wZXJ0eShBWFBfREFUQV9QQVRIX1BST1BFUlRZLCB7IHZpc2libGU6IGZhbHNlIH0pLFxuICAgIC8vID09PT09PSBDaGFydCBUaXRsZSA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuYmFyLWNoYXJ0LmNoYXJ0LXRpdGxlJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6ICcnLFxuICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMudGl0bGUnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdFbnRlciBjaGFydCB0aXRsZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gPT09PT09IFggQXhpcyBTZXR0aW5ncyA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAneEF4aXNMYWJlbCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5iYXItY2hhcnQueC1heGlzLWxhYmVsJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6ICcnLFxuICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICd4QXhpc0xhYmVsJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy54QXhpc0xhYmVsJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyA9PT09PT0gWSBBeGlzIFNldHRpbmdzID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICd5QXhpc0xhYmVsJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmJhci1jaGFydC55LWF4aXMtbGFiZWwnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJycsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3lBeGlzTGFiZWwnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnlBeGlzTGFiZWwnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIC8qIENvbW1lbnRlZCBvdXQgcHJvcGVydGllc1xuICAgIC8vID09PT09PSBMYXlvdXQgJiBEaW1lbnNpb25zID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5iYXItY2hhcnQud2lkdGgnLFxuICAgICAgZ3JvdXA6IEFYUF9TVFlMSU5HX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnd2lkdGgnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLndpZHRoJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgbWluVmFsdWU6IDAsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMTIwMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnaGVpZ2h0JyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmJhci1jaGFydC5oZWlnaHQnLFxuICAgICAgZ3JvdXA6IEFYUF9TVFlMSU5HX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMzAwLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmhlaWdodCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIG1pblZhbHVlOiAwLFxuICAgICAgICAgICAgbWF4VmFsdWU6IDgwMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyA9PT09PT0gWCBBeGlzIFNldHRpbmdzID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93WEF4aXMnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuYmFyLWNoYXJ0LnNob3cteC1heGlzJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93WEF4aXMnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dYQXhpcycsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyA9PT09PT0gWSBBeGlzIFNldHRpbmdzID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93WUF4aXMnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuYmFyLWNoYXJ0LnNob3cteS1heGlzJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93WUF4aXMnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dZQXhpcycsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyA9PT09PT0gQmFyIEFwcGVhcmFuY2UgPT09PT09XG4gICAge1xuICAgICAgbmFtZTogJ2JhcldpZHRoJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmJhci1jaGFydC5iYXItd2lkdGgnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogODAsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2JhcldpZHRoJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5iYXJXaWR0aCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMS0xMDAnLFxuICAgICAgICAgICAgbWluVmFsdWU6IDEsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMTAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjb3JuZXJSYWRpdXMnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuYmFyLWNoYXJ0LmNvcm5lci1yYWRpdXMnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogNCxcbiAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnY29ybmVyUmFkaXVzJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5jb3JuZXJSYWRpdXMnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJzAtMjAnLFxuICAgICAgICAgICAgbWluVmFsdWU6IDAsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gPT09PT09IEdyaWQgU2V0dGluZ3MgPT09PT09XG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dHcmlkJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmJhci1jaGFydC5zaG93LWdyaWQnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3Nob3dHcmlkJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93R3JpZCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc2hvd0RhdGFMYWJlbHMnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuYmFyLWNoYXJ0LnNob3ctZGF0YS1sYWJlbHMnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3Nob3dEYXRhTGFiZWxzJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93RGF0YUxhYmVscycsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyA9PT09PT0gVG9vbHRpcCBTZXR0aW5ncyA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAnc2hvd1Rvb2x0aXAnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuYmFyLWNoYXJ0LnNob3ctdG9vbHRpcCcsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnc2hvd1Rvb2x0aXAnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dUb29sdGlwJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIC8vID09PT09PSBBbmltYXRpb24gU2V0dGluZ3MgPT09PT09XG4gICAge1xuICAgICAgbmFtZTogJ2FuaW1hdGlvbkVhc2luZycsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5iYXItY2hhcnQuYW5pbWF0aW9uLWVhc2luZycsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnY3ViaWMtb3V0JyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnYW5pbWF0aW9uRWFzaW5nJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5hbmltYXRpb25FYXNpbmcnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBkYXRhU291cmNlOiBbXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdsaW5lYXInLCB0ZXh0OiAnTGluZWFyJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnZWFzZScsIHRleHQ6ICdFYXNlJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnZWFzZS1pbicsIHRleHQ6ICdFYXNlIEluJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnZWFzZS1vdXQnLCB0ZXh0OiAnRWFzZSBPdXQnIH0sXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdlYXNlLWluLW91dCcsIHRleHQ6ICdFYXNlIEluIE91dCcgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2N1YmljJywgdGV4dDogJ0N1YmljJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnY3ViaWMtaW4nLCB0ZXh0OiAnQ3ViaWMgSW4nIH0sXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdjdWJpYy1vdXQnLCB0ZXh0OiAnQ3ViaWMgT3V0JyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnY3ViaWMtaW4tb3V0JywgdGV4dDogJ0N1YmljIEluIE91dCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB0ZXh0RmllbGQ6ICd0ZXh0JyxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmJhci1jaGFydC5hbmltYXRpb24tZHVyYXRpb24nLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogODAwLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdhbmltYXRpb25EdXJhdGlvbicsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24nLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJzAtMjAwMCcsXG4gICAgICAgICAgICBtaW5WYWx1ZTogMCxcbiAgICAgICAgICAgIG1heFZhbHVlOiAyMDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgICovXG4gIF0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB2aWV3OiB7XG4gICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9iYXItY2hhcnQtd2lkZ2V0LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQQmFyQ2hhcnRXaWRnZXRWaWV3Q29tcG9uZW50KSxcbiAgICB9LFxuICB9LFxuICBtZXRhOiB7XG4gICAgZGltZW5zaW9uczoge1xuICAgICAgd2lkdGg6IDUsXG4gICAgICBoZWlnaHQ6IDYsXG5cbiAgICAgIG1pbldpZHRoOiAyLFxuICAgICAgbWluSGVpZ2h0OiAyLFxuXG4gICAgICBtYXhXaWR0aDogNixcbiAgICAgIG1heEhlaWdodDogNyxcbiAgICB9LFxuICB9LFxufTtcblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInIHtcbiAgaW50ZXJmYWNlIEFYUFdpZGdldFR5cGVzTWFwIHtcbiAgICBiYXJDaGFydDogJ2Jhci1jaGFydCc7XG4gIH1cbn1cbiJdfQ==","import { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXTagModule } from '@acorex/components/tag';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, } from '@angular/core';\nimport { interval } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/format\";\nexport class AXPClockCalendarWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n // Dependencies\n this.cdr = inject(ChangeDetectorRef);\n // Time state\n this.currentTime = new Date();\n this.currentDate = new Date();\n this.clockSubscription = null;\n // Static clock elements\n this.clockHours = Array.from({ length: 12 }, (_, i) => i + 1);\n this.clockHourNumbers = Array.from({ length: 12 }, (_, i) => ({\n number: i === 0 ? 12 : i,\n angle: i * 30,\n }));\n // Clock hands rotation angles\n this.hourRotation = 0;\n this.minuteRotation = 0;\n this.secondRotation = 0;\n // Options with computed properties and defaults\n this.displayLayout = computed(() => this.options()?.displayLayout?.id ?? 'both');\n this.showDigitalClock = computed(() => {\n const layout = this.displayLayout();\n return layout === 'both' || layout === 'digital';\n });\n this.showAnalogClock = computed(() => {\n const layout = this.displayLayout();\n return layout === 'both' || layout === 'analog';\n });\n this.showDate = computed(() => this.options()?.showDate !== false);\n this.showDayOfWeek = computed(() => this.options()?.showDayOfWeek !== false);\n this.use24Hour = computed(() => this.options()?.use24Hour === true);\n this.showSeconds = computed(() => this.options()?.showSeconds !== false);\n this.dateFormat = computed(() => this.options()?.dateFormat?.id ?? 'DD MMM YYYY');\n this.timezone = computed(() => this.options()?.timezone?.id ?? 'local');\n // protected readonly showTimezoneIndicator: Signal<boolean> = computed(() => this.timezone() !== 'local');\n this.displayTimezone = computed(() => {\n const tz = this.timezone();\n if (tz === 'local')\n return '';\n if (tz.startsWith('UTC')) {\n const [match, sign, hours, minutes] = tz.match(/UTC([+-])(\\d+):?(\\d+)?/) ?? [];\n if (match) {\n if (!minutes || minutes === '00') {\n return `UTC${sign}${parseInt(hours)}`;\n }\n return `UTC${sign}${parseInt(hours)}:${minutes}`;\n }\n }\n return tz;\n });\n this.timeFormat = computed(() => this.showSeconds() ? (this.use24Hour() ? 'HH:mm:ss' : 'hh:mm:ss a') : this.use24Hour() ? 'HH:mm' : 'hh:mm a');\n }\n ngOnInit() {\n super.ngOnInit();\n this.startClockTimer();\n this.updateTime();\n }\n ngOnDestroy() {\n this.stopClockTimer();\n }\n startClockTimer() {\n this.stopClockTimer();\n this.clockSubscription = interval(1000).subscribe(() => this.updateTime());\n }\n stopClockTimer() {\n this.clockSubscription?.unsubscribe();\n this.clockSubscription = null;\n }\n updateTime() {\n const now = this.getAdjustedTime();\n this.currentTime = now;\n this.currentDate = now;\n this.updateClockHandsRotation(now);\n this.cdr.markForCheck();\n }\n getAdjustedTime() {\n const now = new Date();\n const tz = this.timezone();\n if (tz === 'local' || !tz.startsWith('UTC')) {\n return now;\n }\n const [match, sign, hours, minutes] = tz.match(/UTC([+-])(\\d+):?(\\d+)?/) ?? [];\n if (!match) {\n return now;\n }\n const offsetHours = parseInt(hours) * (sign === '+' ? 1 : -1);\n const offsetMinutes = minutes ? parseInt(minutes) * (sign === '+' ? 1 : -1) : 0;\n const utcTime = now.getTime() + now.getTimezoneOffset() * 60000;\n return new Date(utcTime + (offsetHours * 3600000 + offsetMinutes * 60000));\n }\n updateClockHandsRotation(now) {\n const hours = now.getHours() % 12;\n const minutes = now.getMinutes();\n const seconds = now.getSeconds();\n // For analog clocks:\n // - 12 o'clock is 0°\n // - 3 o'clock is 90°\n // - 6 o'clock is 180°\n // - 9 o'clock is 270°\n // Hour hand: 30° per hour (360°/12) plus gradual movement from minutes\n this.hourRotation = hours * 30 + minutes / 2 + 180;\n // Minute hand: 6° per minute (360°/60)\n this.minuteRotation = minutes * 6 + 180;\n // Second hand: 6° per second (360°/60)\n this.secondRotation = seconds * 6 + 180;\n }\n initializeWidget() {\n this.updateTime();\n }\n updateWidget() {\n this.stopClockTimer();\n this.startClockTimer();\n this.updateTime();\n }\n destroyWidget() {\n this.stopClockTimer();\n }\n getDayOfWeek() {\n const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return days[this.currentDate.getDay()];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPClockCalendarWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPClockCalendarWidgetViewComponent, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: \"<div class=\\\"axp-clock-calendar-container\\\">\\n <!-- Timezone indicator (only shown when not local) -->\\n <!-- @if (showTimezoneIndicator()) {\\n <div class=\\\"axp-clock-calendar-timezone-badge\\\"><i class=\\\"fa-solid fa-globe\\\"></i> {{ displayTimezone() }}</div>\\n } -->\\n\\n <!-- Day of week display -->\\n @if (showDayOfWeek()) {\\n <div class=\\\"axp-clock-calendar-day-label\\\">{{ getDayOfWeek() }}</div>\\n }\\n\\n <div class=\\\"axp-clock-calendar-content\\\">\\n <!-- Digital Clock Display -->\\n @if (showDigitalClock()) {\\n <div class=\\\"axp-clock-calendar-digital-clock\\\">\\n {{ currentTime | format: 'datetime' : timeFormat() | async }}\\n </div>\\n }\\n\\n <!-- Analog Clock Display -->\\n @if (showAnalogClock()) {\\n <div class=\\\"axp-clock-calendar-analog-clock\\\">\\n <!-- Hour markers -->\\n @for (hour of clockHours; track hour) {\\n <div\\n class=\\\"axp-clock-calendar-hour-marker\\\"\\n [style.transform]=\\\"'rotate(' + hour * 30 + 'deg) translateY(-80px)'\\\"\\n ></div>\\n }\\n\\n <!-- Clock Numbers -->\\n <div class=\\\"axp-clock-calendar-numbers-container\\\">\\n @for (hour of clockHourNumbers; track hour) {\\n <div\\n class=\\\"axp-clock-calendar-hour-number\\\"\\n [style.transform]=\\\"'rotate(' + hour.angle + 'deg) translateY(-82px)'\\\"\\n >\\n <span [style.transform]=\\\"'rotate(' + -hour.angle + 'deg)'\\\">{{ hour.number }}</span>\\n </div>\\n }\\n </div>\\n\\n <!-- Clock Hands -->\\n <div class=\\\"axp-clock-calendar-hands-container\\\">\\n <div class=\\\"axp-clock-calendar-hour-hand\\\" [style.transform]=\\\"'rotate(' + hourRotation + 'deg)'\\\"></div>\\n <div class=\\\"axp-clock-calendar-minute-hand\\\" [style.transform]=\\\"'rotate(' + minuteRotation + 'deg)'\\\"></div>\\n @if (showSeconds()) {\\n <div class=\\\"axp-clock-calendar-second-hand\\\" [style.transform]=\\\"'rotate(' + secondRotation + 'deg)'\\\"></div>\\n }\\n <div class=\\\"axp-clock-calendar-center-dot\\\"></div>\\n </div>\\n </div>\\n }\\n\\n <!-- Date Display -->\\n @if (showDate()) {\\n <div class=\\\"axp-clock-calendar-date-display\\\">\\n <i class=\\\"fa-regular fa-calendar\\\"></i>\\n {{ currentDate | format: 'datetime' : dateFormat() | async }}\\n </div>\\n }\\n </div>\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%}.axp-clock-calendar-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:1rem;position:relative;overflow:hidden;box-shadow:var(--ax-shadow-sm);background-color:var(--ax-surface-color);color:var(--ax-text-color)}.axp-clock-calendar-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;width:100%;height:100%;position:relative}.axp-clock-calendar-timezone-badge{position:absolute;top:.5rem;right:.5rem;font-size:.75rem;padding:.25rem;border-radius:1rem;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-timezone-badge:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-timezone-badge{display:flex;align-items:center;gap:.25rem}.axp-clock-calendar-timezone-badge i{font-size:.75rem}.axp-clock-calendar-day-label{font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.05rem;margin-bottom:.25rem}.axp-clock-calendar-digital-clock{font-size:1.5rem;font-weight:500;letter-spacing:.05rem;font-family:monospace;padding:.5rem .75rem;border-radius:.25rem}.axp-clock-calendar-analog-clock{position:relative;border-radius:50%;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-analog-clock:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-analog-clock{display:flex;align-items:center;justify-content:center;background:var(--ax-surface-color);width:min(180px,100%);height:0;padding-bottom:min(180px,100%);margin:.5rem auto;min-width:120px;min-height:120px;box-shadow:var(--ax-shadow-sm)}.axp-clock-calendar-hands-container,.axp-clock-calendar-numbers-container{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%}.axp-clock-calendar-hour-marker{position:absolute;left:50%;top:50%;width:2px;height:4%;margin-left:-1px;border-radius:1px;background-color:var(--ax-text-muted);transform-origin:50% 0}.axp-clock-calendar-hour-number{position:absolute;left:50%;top:50%;transform-origin:50% 0;font-size:clamp(.7rem,2.5vw,.9rem);font-weight:600;color:var(--ax-text-color)}.axp-clock-calendar-hour-number span{display:block}.axp-clock-calendar-hour-hand{position:absolute;top:50%;left:50%;width:4px;height:25%;margin-left:-2px;background-color:rgba(23,23,23,.75)}.axp-clock-calendar-hour-hand:is(.ax-dark *){background-color:rgba(245,245,245,.75)}.axp-clock-calendar-hour-hand{transform-origin:50% 0;border-radius:3px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-minute-hand{position:absolute;top:50%;left:50%;width:3px;height:38%;margin-left:-1.5px;background-color:rgba(23,23,23,.5)}.axp-clock-calendar-minute-hand:is(.ax-dark *){background-color:rgba(245,245,245,.5)}.axp-clock-calendar-minute-hand{transform-origin:50% 0;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-second-hand{position:absolute;top:50%;left:50%;width:2px;height:42%;margin-left:-1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-400),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand{transform-origin:50% 0;border-radius:1px;box-shadow:0 0 3px rgba(0,0,0,.2)}.axp-clock-calendar-center-dot{position:absolute;top:50%;left:50%;width:10px;height:10px;border-radius:50%;margin-top:-5px;margin-left:-5px;background-color:#d81159;border:2px solid var(--ax-surface-color);box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-date-display{display:flex;align-items:center;gap:.5rem;font-size:.85rem;padding:.25rem .6rem;border-radius:.25rem;background-color:var(--ax-surface-hover);color:var(--ax-text-color)}.axp-clock-calendar-date-display i{font-size:.85rem;opacity:.7}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXDateTimeModule }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"pipe\", type: i2.AXFormatPipe, name: \"format\" }, { kind: \"ngmodule\", type: AXTagModule }, { kind: \"ngmodule\", type: AXDecoratorModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPClockCalendarWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, imports: [CommonModule, AXDateTimeModule, AXFormatModule, AXTagModule, AXDecoratorModule], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"axp-clock-calendar-container\\\">\\n <!-- Timezone indicator (only shown when not local) -->\\n <!-- @if (showTimezoneIndicator()) {\\n <div class=\\\"axp-clock-calendar-timezone-badge\\\"><i class=\\\"fa-solid fa-globe\\\"></i> {{ displayTimezone() }}</div>\\n } -->\\n\\n <!-- Day of week display -->\\n @if (showDayOfWeek()) {\\n <div class=\\\"axp-clock-calendar-day-label\\\">{{ getDayOfWeek() }}</div>\\n }\\n\\n <div class=\\\"axp-clock-calendar-content\\\">\\n <!-- Digital Clock Display -->\\n @if (showDigitalClock()) {\\n <div class=\\\"axp-clock-calendar-digital-clock\\\">\\n {{ currentTime | format: 'datetime' : timeFormat() | async }}\\n </div>\\n }\\n\\n <!-- Analog Clock Display -->\\n @if (showAnalogClock()) {\\n <div class=\\\"axp-clock-calendar-analog-clock\\\">\\n <!-- Hour markers -->\\n @for (hour of clockHours; track hour) {\\n <div\\n class=\\\"axp-clock-calendar-hour-marker\\\"\\n [style.transform]=\\\"'rotate(' + hour * 30 + 'deg) translateY(-80px)'\\\"\\n ></div>\\n }\\n\\n <!-- Clock Numbers -->\\n <div class=\\\"axp-clock-calendar-numbers-container\\\">\\n @for (hour of clockHourNumbers; track hour) {\\n <div\\n class=\\\"axp-clock-calendar-hour-number\\\"\\n [style.transform]=\\\"'rotate(' + hour.angle + 'deg) translateY(-82px)'\\\"\\n >\\n <span [style.transform]=\\\"'rotate(' + -hour.angle + 'deg)'\\\">{{ hour.number }}</span>\\n </div>\\n }\\n </div>\\n\\n <!-- Clock Hands -->\\n <div class=\\\"axp-clock-calendar-hands-container\\\">\\n <div class=\\\"axp-clock-calendar-hour-hand\\\" [style.transform]=\\\"'rotate(' + hourRotation + 'deg)'\\\"></div>\\n <div class=\\\"axp-clock-calendar-minute-hand\\\" [style.transform]=\\\"'rotate(' + minuteRotation + 'deg)'\\\"></div>\\n @if (showSeconds()) {\\n <div class=\\\"axp-clock-calendar-second-hand\\\" [style.transform]=\\\"'rotate(' + secondRotation + 'deg)'\\\"></div>\\n }\\n <div class=\\\"axp-clock-calendar-center-dot\\\"></div>\\n </div>\\n </div>\\n }\\n\\n <!-- Date Display -->\\n @if (showDate()) {\\n <div class=\\\"axp-clock-calendar-date-display\\\">\\n <i class=\\\"fa-regular fa-calendar\\\"></i>\\n {{ currentDate | format: 'datetime' : dateFormat() | async }}\\n </div>\\n }\\n </div>\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%}.axp-clock-calendar-container{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:1rem;position:relative;overflow:hidden;box-shadow:var(--ax-shadow-sm);background-color:var(--ax-surface-color);color:var(--ax-text-color)}.axp-clock-calendar-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;width:100%;height:100%;position:relative}.axp-clock-calendar-timezone-badge{position:absolute;top:.5rem;right:.5rem;font-size:.75rem;padding:.25rem;border-radius:1rem;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-timezone-badge:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-timezone-badge{display:flex;align-items:center;gap:.25rem}.axp-clock-calendar-timezone-badge i{font-size:.75rem}.axp-clock-calendar-day-label{font-size:.9rem;font-weight:600;text-transform:uppercase;letter-spacing:.05rem;margin-bottom:.25rem}.axp-clock-calendar-digital-clock{font-size:1.5rem;font-weight:500;letter-spacing:.05rem;font-family:monospace;padding:.5rem .75rem;border-radius:.25rem}.axp-clock-calendar-analog-clock{position:relative;border-radius:50%;border-width:1px;border-color:rgba(23,23,23,.5)}.axp-clock-calendar-analog-clock:is(.ax-dark *){border-color:rgba(245,245,245,.5)}.axp-clock-calendar-analog-clock{display:flex;align-items:center;justify-content:center;background:var(--ax-surface-color);width:min(180px,100%);height:0;padding-bottom:min(180px,100%);margin:.5rem auto;min-width:120px;min-height:120px;box-shadow:var(--ax-shadow-sm)}.axp-clock-calendar-hands-container,.axp-clock-calendar-numbers-container{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:50%}.axp-clock-calendar-hour-marker{position:absolute;left:50%;top:50%;width:2px;height:4%;margin-left:-1px;border-radius:1px;background-color:var(--ax-text-muted);transform-origin:50% 0}.axp-clock-calendar-hour-number{position:absolute;left:50%;top:50%;transform-origin:50% 0;font-size:clamp(.7rem,2.5vw,.9rem);font-weight:600;color:var(--ax-text-color)}.axp-clock-calendar-hour-number span{display:block}.axp-clock-calendar-hour-hand{position:absolute;top:50%;left:50%;width:4px;height:25%;margin-left:-2px;background-color:rgba(23,23,23,.75)}.axp-clock-calendar-hour-hand:is(.ax-dark *){background-color:rgba(245,245,245,.75)}.axp-clock-calendar-hour-hand{transform-origin:50% 0;border-radius:3px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-minute-hand{position:absolute;top:50%;left:50%;width:3px;height:38%;margin-left:-1.5px;background-color:rgba(23,23,23,.5)}.axp-clock-calendar-minute-hand:is(.ax-dark *){background-color:rgba(245,245,245,.5)}.axp-clock-calendar-minute-hand{transform-origin:50% 0;border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-second-hand{position:absolute;top:50%;left:50%;width:2px;height:42%;margin-left:-1px;--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-500),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand:is(.ax-dark *){--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-danger-400),var(--tw-bg-opacity, 1))}.axp-clock-calendar-second-hand{transform-origin:50% 0;border-radius:1px;box-shadow:0 0 3px rgba(0,0,0,.2)}.axp-clock-calendar-center-dot{position:absolute;top:50%;left:50%;width:10px;height:10px;border-radius:50%;margin-top:-5px;margin-left:-5px;background-color:#d81159;border:2px solid var(--ax-surface-color);box-shadow:0 0 4px rgba(0,0,0,.3)}.axp-clock-calendar-date-display{display:flex;align-items:center;gap:.5rem;font-size:.85rem;padding:.25rem .6rem;border-radius:.25rem;background-color:var(--ax-surface-hover);color:var(--ax-text-color)}.axp-clock-calendar-date-display i{font-size:.85rem;opacity:.7}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2stY2FsZW5kYXItd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2Nsb2NrLWNhbGVuZGFyL2Nsb2NrLWNhbGVuZGFyLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9jbG9jay1jYWxlbmRhci9jbG9jay1jYWxlbmRhci13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUlULFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnQixRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFVOUMsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLHVCQUF1QjtJQVBoRjs7UUFRRSxlQUFlO1FBQ0UsUUFBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpE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RUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFUyxhQUFhO1FBQ3JCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRVMsWUFBWTtRQUNwQixNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQTNKVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQywrRkMxQmhELGczRUErREEsa3dIRHhDWSxZQUFZLG1GQUFFLGdCQUFnQiw4QkFBRSxjQUFjLHVGQUFFLFdBQVcsOEJBQUUsaUJBQWlCOzsyRkFHN0UsbUNBQW1DO2tCQVAvQyxTQUFTO2lDQUdJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLG1CQUN4RSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFRhZ01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90YWcnO1xuaW1wb3J0IHsgQVhEYXRlVGltZU1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9kYXRlLXRpbWUnO1xuaW1wb3J0IHsgQVhGb3JtYXRNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhQSG91ck51bWJlciB9IGZyb20gJy4vY2xvY2stY2FsZW5kYXIudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2Nsb2NrLWNhbGVuZGFyLXdpZGdldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Nsb2NrLWNhbGVuZGFyLXdpZGdldC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWERhdGVUaW1lTW9kdWxlLCBBWEZvcm1hdE1vZHVsZSwgQVhUYWdNb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUENsb2NrQ2FsZW5kYXJXaWRnZXRWaWV3Q29tcG9uZW50IGV4dGVuZHMgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vIERlcGVuZGVuY2llc1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgLy8gVGltZSBzdGF0ZVxuICBwcm90ZWN0ZWQgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpO1xuICBwcm90ZWN0ZWQgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xuICBwcml2YXRlIGNsb2NrU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICAvLyBTdGF0aWMgY2xvY2sgZWxlbWVudHNcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNsb2NrSG91cnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMiB9LCAoXywgaSkgPT4gaSArIDEpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xvY2tIb3VyTnVtYmVyczogQVhQSG91ck51bWJlcltdID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIgfSwgKF8sIGkpID0+ICh7XG4gICAgbnVtYmVyOiBpID09PSAwID8gMTIgOiBpLFxuICAgIGFuZ2xlOiBpICogMzAsXG4gIH0pKTtcblxuICAvLyBDbG9jayBoYW5kcyByb3RhdGlvbiBhbmdsZXNcbiAgcHJvdGVjdGVkIGhvdXJSb3RhdGlvbiA9IDA7XG4gIHByb3RlY3RlZCBtaW51dGVSb3RhdGlvbiA9IDA7XG4gIHByb3RlY3RlZCBzZWNvbmRSb3RhdGlvbiA9IDA7XG5cbiAgLy8gT3B0aW9ucyB3aXRoIGNvbXB1dGVkIHByb3BlcnRpZXMgYW5kIGRlZmF1bHRzXG4gIHByb3RlY3RlZCByZWFkb25seSBkaXNwbGF5TGF5b3V0OiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpPy5kaXNwbGF5TGF5b3V0Py5pZCA/PyAnYm90aCcpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93RGlnaXRhbENsb2NrOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5kaXNwbGF5TGF5b3V0KCk7XG4gICAgcmV0dXJuIGxheW91dCA9PT0gJ2JvdGgnIHx8IGxheW91dCA9PT0gJ2RpZ2l0YWwnO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0FuYWxvZ0Nsb2NrOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5kaXNwbGF5TGF5b3V0KCk7XG4gICAgcmV0dXJuIGxheW91dCA9PT0gJ2JvdGgnIHx8IGxheW91dCA9PT0gJ2FuYWxvZyc7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93RGF0ZTogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LnNob3dEYXRlICE9PSBmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dEYXlPZldlZWs6IFNpZ25hbDxib29sZWFuPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpPy5zaG93RGF5T2ZXZWVrICE9PSBmYWxzZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHVzZTI0SG91cjogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LnVzZTI0SG91ciA9PT0gdHJ1ZSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dTZWNvbmRzOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKT8uc2hvd1NlY29uZHMgIT09IGZhbHNlKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0ZUZvcm1hdDogU2lnbmFsPHN0cmluZz4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKT8uZGF0ZUZvcm1hdD8uaWQgPz8gJ0REIE1NTSBZWVlZJyk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWV6b25lOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpPy50aW1lem9uZT8uaWQgPz8gJ2xvY2FsJyk7XG5cbiAgLy8gcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dUaW1lem9uZUluZGljYXRvcjogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50aW1lem9uZSgpICE9PSAnbG9jYWwnKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlzcGxheVRpbWV6b25lOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB0eiA9IHRoaXMudGltZXpvbmUoKTtcbiAgICBpZiAodHogPT09ICdsb2NhbCcpIHJldHVybiAnJztcblxuICAgIGlmICh0ei5zdGFydHNXaXRoKCdVVEMnKSkge1xuICAgICAgY29uc3QgW21hdGNoLCBzaWduLCBob3VycywgbWludXRlc10gPSB0ei5tYXRjaCgvVVRDKFsrLV0pKFxcZCspOj8oXFxkKyk/LykgPz8gW107XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgaWYgKCFtaW51dGVzIHx8IG1pbnV0ZXMgPT09ICcwMCcpIHtcbiAgICAgICAgICByZXR1cm4gYFVUQyR7c2lnbn0ke3BhcnNlSW50KGhvdXJzKX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgVVRDJHtzaWdufSR7cGFyc2VJbnQoaG91cnMpfToke21pbnV0ZXN9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHR6O1xuICB9KTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGltZUZvcm1hdDogU2lnbmFsPHN0cmluZz4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuc2hvd1NlY29uZHMoKSA/ICh0aGlzLnVzZTI0SG91cigpID8gJ0hIOm1tOnNzJyA6ICdoaDptbTpzcyBhJykgOiB0aGlzLnVzZTI0SG91cigpID8gJ0hIOm1tJyA6ICdoaDptbSBhJyxcbiAgKTtcblxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIHRoaXMuc3RhcnRDbG9ja1RpbWVyKCk7XG4gICAgdGhpcy51cGRhdGVUaW1lKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BDbG9ja1RpbWVyKCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Q2xvY2tUaW1lcigpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BDbG9ja1RpbWVyKCk7XG4gICAgdGhpcy5jbG9ja1N1YnNjcmlwdGlvbiA9IGludGVydmFsKDEwMDApLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVRpbWUoKSk7XG4gIH1cblxuICBwcml2YXRlIHN0b3BDbG9ja1RpbWVyKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvY2tTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jbG9ja1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRpbWUoKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gdGhpcy5nZXRBZGp1c3RlZFRpbWUoKTtcbiAgICB0aGlzLmN1cnJlbnRUaW1lID0gbm93O1xuICAgIHRoaXMuY3VycmVudERhdGUgPSBub3c7XG5cbiAgICB0aGlzLnVwZGF0ZUNsb2NrSGFuZHNSb3RhdGlvbihub3cpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBZGp1c3RlZFRpbWUoKTogRGF0ZSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB0eiA9IHRoaXMudGltZXpvbmUoKTtcblxuICAgIGlmICh0eiA9PT0gJ2xvY2FsJyB8fCAhdHouc3RhcnRzV2l0aCgnVVRDJykpIHtcbiAgICAgIHJldHVybiBub3c7XG4gICAgfVxuXG4gICAgY29uc3QgW21hdGNoLCBzaWduLCBob3VycywgbWludXRlc10gPSB0ei5tYXRjaCgvVVRDKFsrLV0pKFxcZCspOj8oXFxkKyk/LykgPz8gW107XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgcmV0dXJuIG5vdztcbiAgICB9XG5cbiAgICBjb25zdCBvZmZzZXRIb3VycyA9IHBhcnNlSW50KGhvdXJzKSAqIChzaWduID09PSAnKycgPyAxIDogLTEpO1xuICAgIGNvbnN0IG9mZnNldE1pbnV0ZXMgPSBtaW51dGVzID8gcGFyc2VJbnQobWludXRlcykgKiAoc2lnbiA9PT0gJysnID8gMSA6IC0xKSA6IDA7XG5cbiAgICBjb25zdCB1dGNUaW1lID0gbm93LmdldFRpbWUoKSArIG5vdy5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDA7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHV0Y1RpbWUgKyAob2Zmc2V0SG91cnMgKiAzNjAwMDAwICsgb2Zmc2V0TWludXRlcyAqIDYwMDAwKSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNsb2NrSGFuZHNSb3RhdGlvbihub3c6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBob3VycyA9IG5vdy5nZXRIb3VycygpICUgMTI7XG4gICAgY29uc3QgbWludXRlcyA9IG5vdy5nZXRNaW51dGVzKCk7XG4gICAgY29uc3Qgc2Vjb25kcyA9IG5vdy5nZXRTZWNvbmRzKCk7XG5cbiAgICAvLyBGb3IgYW5hbG9nIGNsb2NrczpcbiAgICAvLyAtIDEyIG8nY2xvY2sgaXMgMMKwXG4gICAgLy8gLSAzIG8nY2xvY2sgaXMgOTDCsFxuICAgIC8vIC0gNiBvJ2Nsb2NrIGlzIDE4MMKwXG4gICAgLy8gLSA5IG8nY2xvY2sgaXMgMjcwwrBcblxuICAgIC8vIEhvdXIgaGFuZDogMzDCsCBwZXIgaG91ciAoMzYwwrAvMTIpIHBsdXMgZ3JhZHVhbCBtb3ZlbWVudCBmcm9tIG1pbnV0ZXNcbiAgICB0aGlzLmhvdXJSb3RhdGlvbiA9IGhvdXJzICogMzAgKyBtaW51dGVzIC8gMiArIDE4MDtcblxuICAgIC8vIE1pbnV0ZSBoYW5kOiA2wrAgcGVyIG1pbnV0ZSAoMzYwwrAvNjApXG4gICAgdGhpcy5taW51dGVSb3RhdGlvbiA9IG1pbnV0ZXMgKiA2ICsgMTgwO1xuXG4gICAgLy8gU2Vjb25kIGhhbmQ6IDbCsCBwZXIgc2Vjb25kICgzNjDCsC82MClcbiAgICB0aGlzLnNlY29uZFJvdGF0aW9uID0gc2Vjb25kcyAqIDYgKyAxODA7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZVdpZGdldCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVRpbWUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaWRnZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wQ2xvY2tUaW1lcigpO1xuICAgIHRoaXMuc3RhcnRDbG9ja1RpbWVyKCk7XG4gICAgdGhpcy51cGRhdGVUaW1lKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZGVzdHJveVdpZGdldCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BDbG9ja1RpbWVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF5T2ZXZWVrKCk6IHN0cmluZyB7XG4gICAgY29uc3QgZGF5cyA9IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXTtcbiAgICByZXR1cm4gZGF5c1t0aGlzLmN1cnJlbnREYXRlLmdldERheSgpXTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4cC1jbG9jay1jYWxlbmRhci1jb250YWluZXJcIj5cbiAgPCEtLSBUaW1lem9uZSBpbmRpY2F0b3IgKG9ubHkgc2hvd24gd2hlbiBub3QgbG9jYWwpIC0tPlxuICA8IS0tIEBpZiAoc2hvd1RpbWV6b25lSW5kaWNhdG9yKCkpIHtcbiAgPGRpdiBjbGFzcz1cImF4cC1jbG9jay1jYWxlbmRhci10aW1lem9uZS1iYWRnZVwiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtZ2xvYmVcIj48L2k+IHt7IGRpc3BsYXlUaW1lem9uZSgpIH19PC9kaXY+XG4gIH0gLS0+XG5cbiAgPCEtLSBEYXkgb2Ygd2VlayBkaXNwbGF5IC0tPlxuICBAaWYgKHNob3dEYXlPZldlZWsoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheHAtY2xvY2stY2FsZW5kYXItZGF5LWxhYmVsXCI+e3sgZ2V0RGF5T2ZXZWVrKCkgfX08L2Rpdj5cbiAgfVxuXG4gIDxkaXYgY2xhc3M9XCJheHAtY2xvY2stY2FsZW5kYXItY29udGVudFwiPlxuICAgIDwhLS0gRGlnaXRhbCBDbG9jayBEaXNwbGF5IC0tPlxuICAgIEBpZiAoc2hvd0RpZ2l0YWxDbG9jaygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXhwLWNsb2NrLWNhbGVuZGFyLWRpZ2l0YWwtY2xvY2tcIj5cbiAgICAgICAge3sgY3VycmVudFRpbWUgfCBmb3JtYXQ6ICdkYXRldGltZScgOiB0aW1lRm9ybWF0KCkgfCBhc3luYyB9fVxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPCEtLSBBbmFsb2cgQ2xvY2sgRGlzcGxheSAtLT5cbiAgICBAaWYgKHNob3dBbmFsb2dDbG9jaygpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXhwLWNsb2NrLWNhbGVuZGFyLWFuYWxvZy1jbG9ja1wiPlxuICAgICAgICA8IS0tIEhvdXIgbWFya2VycyAtLT5cbiAgICAgICAgQGZvciAoaG91ciBvZiBjbG9ja0hvdXJzOyB0cmFjayBob3VyKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJheHAtY2xvY2stY2FsZW5kYXItaG91ci1tYXJrZXJcIlxuICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCIncm90YXRlKCcgKyBob3VyICogMzAgKyAnZGVnKSB0cmFuc2xhdGVZKC04MHB4KSdcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQ2xvY2sgTnVtYmVycyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4cC1jbG9jay1jYWxlbmRhci1udW1iZXJzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIEBmb3IgKGhvdXIgb2YgY2xvY2tIb3VyTnVtYmVyczsgdHJhY2sgaG91cikge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImF4cC1jbG9jay1jYWxlbmRhci1ob3VyLW51bWJlclwiXG4gICAgICAgICAgICAgIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgnICsgaG91ci5hbmdsZSArICdkZWcpIHRyYW5zbGF0ZVkoLTgycHgpJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgnICsgLWhvdXIuYW5nbGUgKyAnZGVnKSdcIj57eyBob3VyLm51bWJlciB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDbG9jayBIYW5kcyAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4cC1jbG9jay1jYWxlbmRhci1oYW5kcy1jb250YWluZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLWNsb2NrLWNhbGVuZGFyLWhvdXItaGFuZFwiIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgnICsgaG91clJvdGF0aW9uICsgJ2RlZyknXCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC1jbG9jay1jYWxlbmRhci1taW51dGUtaGFuZFwiIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgnICsgbWludXRlUm90YXRpb24gKyAnZGVnKSdcIj48L2Rpdj5cbiAgICAgICAgICBAaWYgKHNob3dTZWNvbmRzKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheHAtY2xvY2stY2FsZW5kYXItc2Vjb25kLWhhbmRcIiBbc3R5bGUudHJhbnNmb3JtXT1cIidyb3RhdGUoJyArIHNlY29uZFJvdGF0aW9uICsgJ2RlZyknXCI+PC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheHAtY2xvY2stY2FsZW5kYXItY2VudGVyLWRvdFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRGF0ZSBEaXNwbGF5IC0tPlxuICAgIEBpZiAoc2hvd0RhdGUoKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImF4cC1jbG9jay1jYWxlbmRhci1kYXRlLWRpc3BsYXlcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYS1yZWd1bGFyIGZhLWNhbGVuZGFyXCI+PC9pPlxuICAgICAgICB7eyBjdXJyZW50RGF0ZSB8IGZvcm1hdDogJ2RhdGV0aW1lJyA6IGRhdGVGb3JtYXQoKSB8IGFzeW5jIH19XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=","/**\n * ACoreX Clock Calendar Widget Types\n * Contains all types and interfaces for the Clock Calendar widget\n */\n/**\n * Common timezone options for the widget configuration\n */\nexport const AXP_TIMEZONE_OPTIONS = [\n { id: 'local', title: 'Local Time' },\n { id: 'UTC+0', title: 'UTC (GMT)' },\n { id: 'UTC+1', title: 'Central European Time (UTC+1)' },\n { id: 'UTC+2', title: 'Eastern European Time (UTC+2)' },\n { id: 'UTC+3', title: 'Moscow Time (UTC+3)' },\n { id: 'UTC+4', title: 'Gulf Time (UTC+4)' },\n { id: 'UTC+5:30', title: 'Indian Time (UTC+5:30)' },\n { id: 'UTC+8', title: 'China Time (UTC+8)' },\n { id: 'UTC+9', title: 'Japan Time (UTC+9)' },\n { id: 'UTC+10', title: 'Australian Eastern Time (UTC+10)' },\n { id: 'UTC-5', title: 'Eastern Time (UTC-5)' },\n { id: 'UTC-6', title: 'Central Time (UTC-6)' },\n { id: 'UTC-7', title: 'Mountain Time (UTC-7)' },\n { id: 'UTC-8', title: 'Pacific Time (UTC-8)' },\n];\n/**\n * Common date format options for the widget configuration\n */\nexport const AXP_DATE_FORMAT_OPTIONS = [\n { id: 'DD MMM YYYY', title: '31 Dec 2023' },\n { id: 'MMM DD, YYYY', title: 'Dec 31, 2023' },\n { id: 'DD/MM/YYYY', title: '31/12/2023' },\n { id: 'MM/DD/YYYY', title: '12/31/2023' },\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2stY2FsZW5kYXIudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9jbG9jay1jYWxlbmRhci9jbG9jay1jYWxlbmRhci50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFvREg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBd0I7SUFDdkQsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7SUFDcEMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7SUFDbkMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSwrQkFBK0IsRUFBRTtJQUN2RCxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLCtCQUErQixFQUFFO0lBQ3ZELEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUU7SUFDN0MsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtJQUMzQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFO0lBQ25ELEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7SUFDNUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtJQUM1QyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFO0lBQzNELEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7SUFDOUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtJQUM5QyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFO0lBQy9DLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUU7Q0FDL0MsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQTBCO0lBQzVELEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO0lBQzNDLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO0lBQzdDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3pDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO0NBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFDb3JlWCBDbG9jayBDYWxlbmRhciBXaWRnZXQgVHlwZXNcbiAqIENvbnRhaW5zIGFsbCB0eXBlcyBhbmQgaW50ZXJmYWNlcyBmb3IgdGhlIENsb2NrIENhbGVuZGFyIHdpZGdldFxuICovXG5cbi8qKlxuICogQ2xvY2sgbGF5b3V0IGRpc3BsYXkgb3B0aW9uc1xuICovXG5leHBvcnQgdHlwZSBBWFBDbG9ja0xheW91dCA9ICdib3RoJyB8ICdkaWdpdGFsJyB8ICdhbmFsb2cnO1xuXG4vKipcbiAqIENsb2NrIHRpbWV6b25lIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBUaW1lem9uZU9wdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0ZSBmb3JtYXQgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUERhdGVGb3JtYXRPcHRpb24ge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhvdXIgbnVtYmVyIGRlZmluaXRpb24gZm9yIHRoZSBhbmFsb2cgY2xvY2tcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBIb3VyTnVtYmVyIHtcbiAgbnVtYmVyOiBudW1iZXI7XG4gIGFuZ2xlOiBudW1iZXI7XG59XG5cbi8qKlxuICogV2lkZ2V0IG9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBjbG9jay1jYWxlbmRhclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUENsb2NrQ2FsZW5kYXJPcHRpb25zIHtcbiAgLy8gRGlzcGxheSBvcHRpb25zXG4gIGRpc3BsYXlMYXlvdXQ/OiBBWFBDbG9ja0xheW91dDtcbiAgc2hvd0RhdGU/OiBib29sZWFuO1xuICBzaG93RGF5T2ZXZWVrPzogYm9vbGVhbjtcblxuICAvLyBDbG9jayBzZXR0aW5nc1xuICB1c2UyNEhvdXI/OiBib29sZWFuO1xuICBzaG93U2Vjb25kcz86IGJvb2xlYW47XG4gIHNob3dIb3VyTWFya2Vycz86IGJvb2xlYW47XG5cbiAgLy8gRGF0ZSBmb3JtYXRcbiAgZGF0ZUZvcm1hdD86IHN0cmluZztcblxuICAvLyBUaW1lem9uZVxuICB0aW1lem9uZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21tb24gdGltZXpvbmUgb3B0aW9ucyBmb3IgdGhlIHdpZGdldCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfVElNRVpPTkVfT1BUSU9OUzogQVhQVGltZXpvbmVPcHRpb25bXSA9IFtcbiAgeyBpZDogJ2xvY2FsJywgdGl0bGU6ICdMb2NhbCBUaW1lJyB9LFxuICB7IGlkOiAnVVRDKzAnLCB0aXRsZTogJ1VUQyAoR01UKScgfSxcbiAgeyBpZDogJ1VUQysxJywgdGl0bGU6ICdDZW50cmFsIEV1cm9wZWFuIFRpbWUgKFVUQysxKScgfSxcbiAgeyBpZDogJ1VUQysyJywgdGl0bGU6ICdFYXN0ZXJuIEV1cm9wZWFuIFRpbWUgKFVUQysyKScgfSxcbiAgeyBpZDogJ1VUQyszJywgdGl0bGU6ICdNb3Njb3cgVGltZSAoVVRDKzMpJyB9LFxuICB7IGlkOiAnVVRDKzQnLCB0aXRsZTogJ0d1bGYgVGltZSAoVVRDKzQpJyB9LFxuICB7IGlkOiAnVVRDKzU6MzAnLCB0aXRsZTogJ0luZGlhbiBUaW1lIChVVEMrNTozMCknIH0sXG4gIHsgaWQ6ICdVVEMrOCcsIHRpdGxlOiAnQ2hpbmEgVGltZSAoVVRDKzgpJyB9LFxuICB7IGlkOiAnVVRDKzknLCB0aXRsZTogJ0phcGFuIFRpbWUgKFVUQys5KScgfSxcbiAgeyBpZDogJ1VUQysxMCcsIHRpdGxlOiAnQXVzdHJhbGlhbiBFYXN0ZXJuIFRpbWUgKFVUQysxMCknIH0sXG4gIHsgaWQ6ICdVVEMtNScsIHRpdGxlOiAnRWFzdGVybiBUaW1lIChVVEMtNSknIH0sXG4gIHsgaWQ6ICdVVEMtNicsIHRpdGxlOiAnQ2VudHJhbCBUaW1lIChVVEMtNiknIH0sXG4gIHsgaWQ6ICdVVEMtNycsIHRpdGxlOiAnTW91bnRhaW4gVGltZSAoVVRDLTcpJyB9LFxuICB7IGlkOiAnVVRDLTgnLCB0aXRsZTogJ1BhY2lmaWMgVGltZSAoVVRDLTgpJyB9LFxuXTtcblxuLyoqXG4gKiBDb21tb24gZGF0ZSBmb3JtYXQgb3B0aW9ucyBmb3IgdGhlIHdpZGdldCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBBWFBfREFURV9GT1JNQVRfT1BUSU9OUzogQVhQRGF0ZUZvcm1hdE9wdGlvbltdID0gW1xuICB7IGlkOiAnREQgTU1NIFlZWVknLCB0aXRsZTogJzMxIERlYyAyMDIzJyB9LFxuICB7IGlkOiAnTU1NIERELCBZWVlZJywgdGl0bGU6ICdEZWMgMzEsIDIwMjMnIH0sXG4gIHsgaWQ6ICdERC9NTS9ZWVlZJywgdGl0bGU6ICczMS8xMi8yMDIzJyB9LFxuICB7IGlkOiAnTU0vREQvWVlZWScsIHRpdGxlOiAnMTIvMzEvMjAyMycgfSxcbl07XG4iXX0=","import { AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nimport { AXP_DATE_FORMAT_OPTIONS, AXP_TIMEZONE_OPTIONS } from './clock-calendar.types';\nexport const AXPClockCalendarWidget = {\n name: 'clock-calendar',\n title: 'Clock & Calendar',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-clock',\n properties: [\n // ====== Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.clock-calendar.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Display Settings ======\n {\n name: 'displayLayout',\n title: '@dashboard:widgets.clock-calendar.display-layout',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n dataType: 'string',\n defaultValue: 'both',\n interface: {\n name: 'displayLayout',\n path: 'options.displayLayout',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { id: 'both', title: 'Digital & Analog' },\n { id: 'digital', title: 'Digital Only' },\n { id: 'analog', title: 'Analog Only' },\n ],\n },\n },\n },\n visible: true,\n },\n {\n name: 'showDate',\n title: '@dashboard:widgets.clock-calendar.show-date',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDate',\n path: 'options.showDate',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showDayOfWeek',\n title: '@dashboard:widgets.clock-calendar.show-day-of-week',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDayOfWeek',\n path: 'options.showDayOfWeek',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Time Format Settings ======\n {\n name: 'use24Hour',\n title: '@dashboard:widgets.clock-calendar.use-24-hour',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: false,\n dataType: 'boolean',\n interface: {\n name: 'use24Hour',\n path: 'options.use24Hour',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showSeconds',\n title: '@dashboard:widgets.clock-calendar.show-seconds',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showSeconds',\n path: 'options.showSeconds',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // {\n // name: 'showHourMarkers',\n // title: 'Show Hour Markers',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showHourMarkers',\n // path: 'options.showHourMarkers',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n {\n name: 'dateFormat',\n title: '@dashboard:widgets.clock-calendar.date-format',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 'DD MMM YYYY',\n dataType: 'string',\n interface: {\n name: 'dateFormat',\n path: 'options.dateFormat',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: AXP_DATE_FORMAT_OPTIONS,\n },\n },\n },\n visible: true,\n },\n {\n name: 'timezone',\n title: '@dashboard:widgets.clock-calendar.timezone',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 'local',\n dataType: 'string',\n interface: {\n name: 'timezone',\n path: 'options.timezone',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: AXP_TIMEZONE_OPTIONS,\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./clock-calendar-widget.component').then((m) => m.AXPClockCalendarWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 2,\n height: 5,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 3,\n maxHeight: 6,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvY2stY2FsZW5kYXItd2lkZ2V0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2Nsb2NrLWNhbGVuZGFyL2Nsb2NrLWNhbGVuZGFyLXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBb0I7SUFDckQsSUFBSSxFQUFFLGdCQUFnQjtJQUN0QixLQUFLLEVBQUUsa0JBQWtCO0lBQ3pCLFVBQVUsRUFBRSxDQUFDLDRCQUE0QixDQUFDO0lBQzFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQztJQUM1QyxJQUFJLEVBQUUsV0FBVztJQUNqQixJQUFJLEVBQUUsbUJBQW1CO0lBQ3pCLFVBQVUsRUFBRTtRQUNWLHNCQUFzQjtRQUN0QjtZQUNFLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLCtDQUErQztZQUN0RCxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsT0FBTztvQkFDYixJQUFJLEVBQUUsZUFBZTtvQkFDckIsSUFBSSxFQUFFLGlC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QUFFLENBQUM7WUFFWixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1NBQ2I7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSwgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLCBBWFBfQkVIQVZJT1JfUFJPUEVSVFlfR1JPVVAgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dpZGdldHMnO1xuaW1wb3J0IHsgQVhQX1dJREdFVFNfVVRJTElUWV9DQVRFR09SWSB9IGZyb20gJy4uL2NoYXJ0LnR5cGUnO1xuaW1wb3J0IHsgQVhQX0RBVEVfRk9STUFUX09QVElPTlMsIEFYUF9USU1FWk9ORV9PUFRJT05TIH0gZnJvbSAnLi9jbG9jay1jYWxlbmRhci50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBBWFBDbG9ja0NhbGVuZGFyV2lkZ2V0OiBBWFBXaWRnZXRDb25maWcgPSB7XG4gIG5hbWU6ICdjbG9jay1jYWxlbmRhcicsXG4gIHRpdGxlOiAnQ2xvY2sgJiBDYWxlbmRhcicsXG4gIGNhdGVnb3JpZXM6IFtBWFBfV0lER0VUU19VVElMSVRZX0NBVEVHT1JZXSxcbiAgZ3JvdXBzOiBbQVhQV2lkZ2V0R3JvdXBFbnVtLkRhc2hib2FyZFdpZGdldF0sXG4gIHR5cGU6ICdkYXNoYm9hcmQnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtY2xvY2snLFxuICBwcm9wZXJ0aWVzOiBbXG4gICAgLy8gPT09PT09IFRpdGxlID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5jbG9jay1jYWxlbmRhci5jaGFydC10aXRsZScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnJyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnRpdGxlJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgY2hhcnQgdGl0bGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIC8vID09PT09PSBEaXNwbGF5IFNldHRpbmdzID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICdkaXNwbGF5TGF5b3V0JyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmNsb2NrLWNhbGVuZGFyLmRpc3BsYXktbGF5b3V0JyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ2JvdGgnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnZGlzcGxheUxheW91dCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuZGlzcGxheUxheW91dCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFtcbiAgICAgICAgICAgICAgeyBpZDogJ2JvdGgnLCB0aXRsZTogJ0RpZ2l0YWwgJiBBbmFsb2cnIH0sXG4gICAgICAgICAgICAgIHsgaWQ6ICdkaWdpdGFsJywgdGl0bGU6ICdEaWdpdGFsIE9ubHknIH0sXG4gICAgICAgICAgICAgIHsgaWQ6ICdhbmFsb2cnLCB0aXRsZTogJ0FuYWxvZyBPbmx5JyB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc2hvd0RhdGUnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuY2xvY2stY2FsZW5kYXIuc2hvdy1kYXRlJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93RGF0ZScsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd0RhdGUnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dEYXlPZldlZWsnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuY2xvY2stY2FsZW5kYXIuc2hvdy1kYXktb2Ytd2VlaycsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnc2hvd0RheU9mV2VlaycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd0RheU9mV2VlaycsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcblxuICAgIC8vID09PT09PSBUaW1lIEZvcm1hdCBTZXR0aW5ncyA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAndXNlMjRIb3VyJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmNsb2NrLWNhbGVuZGFyLnVzZS0yNC1ob3VyJyxcbiAgICAgIGdyb3VwOiBBWFBfQkVIQVZJT1JfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3VzZTI0SG91cicsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMudXNlMjRIb3VyJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93U2Vjb25kcycsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5jbG9jay1jYWxlbmRhci5zaG93LXNlY29uZHMnLFxuICAgICAgZ3JvdXA6IEFYUF9CRUhBVklPUl9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93U2Vjb25kcycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd1NlY29uZHMnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAgLy8ge1xuICAgIC8vICAgbmFtZTogJ3Nob3dIb3VyTWFya2VycycsXG4gICAgLy8gICB0aXRsZTogJ1Nob3cgSG91ciBNYXJrZXJzJyxcbiAgICAvLyAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAvLyAgIHNjaGVtYToge1xuICAgIC8vICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgLy8gICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgLy8gICAgIGludGVyZmFjZToge1xuICAgIC8vICAgICAgIG5hbWU6ICdzaG93SG91ck1hcmtlcnMnLFxuICAgIC8vICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dIb3VyTWFya2VycycsXG4gICAgLy8gICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgfSxcbiAgICAvLyAgIHZpc2libGU6IHRydWUsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZGF0ZUZvcm1hdCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5jbG9jay1jYWxlbmRhci5kYXRlLWZvcm1hdCcsXG4gICAgICBncm91cDogQVhQX0JFSEFWSU9SX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ0REIE1NTSBZWVlZJyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnZGF0ZUZvcm1hdCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuZGF0ZUZvcm1hdCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IEFYUF9EQVRFX0ZPUk1BVF9PUFRJT05TLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd0aW1lem9uZScsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5jbG9jay1jYWxlbmRhci50aW1lem9uZScsXG4gICAgICBncm91cDogQVhQX0JFSEFWSU9SX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ2xvY2FsJyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAndGltZXpvbmUnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnRpbWV6b25lJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZGF0YVNvdXJjZTogQVhQX1RJTUVaT05FX09QVElPTlMsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB2aWV3OiB7XG4gICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9jbG9jay1jYWxlbmRhci13aWRnZXQuY29tcG9uZW50JykudGhlbigobSkgPT4gbS5BWFBDbG9ja0NhbGVuZGFyV2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbiAgbWV0YToge1xuICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiAyLFxuICAgICAgaGVpZ2h0OiA1LFxuXG4gICAgICBtaW5XaWR0aDogMixcbiAgICAgIG1pbkhlaWdodDogMixcblxuICAgICAgbWF4V2lkdGg6IDMsXG4gICAgICBtYXhIZWlnaHQ6IDYsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8vIEFkZCB0byB0aGUgQVhQV2lkZ2V0VHlwZXNNYXBcbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJyB7XG4gIGludGVyZmFjZSBBWFBXaWRnZXRUeXBlc01hcCB7XG4gICAgY2xvY2tDYWxlbmRhcjogJ2Nsb2NrLWNhbGVuZGFyJztcbiAgfVxufVxuIl19","import { AXDonutChartComponent } from '@acorex/charts/donut-chart';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Donut Chart Widget Component\n * Displays data in a circular donut chart with interactive segments\n */\nexport class AXPDonutChartWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super();\n this.donutChartData = computed(() => this.getValue());\n this.donutChartOptions = computed(() => this.options());\n this.setOptions({\n ...this.options(),\n width: 300,\n height: 300,\n showDataLabels: false,\n donutWidth: 35,\n cornerRadius: 4,\n showTooltip: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n }\n handleDonutChartSegmentClick(event) {\n //console.log(event);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDonutChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPDonutChartWidgetViewComponent, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: \"<ax-donut-chart\\n [data]=\\\"donutChartData()\\\"\\n [options]=\\\"donutChartOptions()\\\"\\n (segmentClick)=\\\"handleDonutChartSegmentClick($event)\\\"\\n></ax-donut-chart>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"], dependencies: [{ kind: \"component\", type: AXDonutChartComponent, selector: \"ax-donut-chart\", inputs: [\"data\", \"options\"], outputs: [\"segmentClick\", \"segmentHover\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDonutChartWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ imports: [AXDonutChartComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ax-donut-chart\\n [data]=\\\"donutChartData()\\\"\\n [options]=\\\"donutChartOptions()\\\"\\n (segmentClick)=\\\"handleDonutChartSegmentClick($event)\\\"\\n></ax-donut-chart>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udXQtY2hhcnQtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2RvbnV0LWNoYXJ0L2RvbnV0LWNoYXJ0LXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9kb251dC1jaGFydC9kb251dC1jaGFydC13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUF3QyxNQUFNLDRCQUE0QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQUVyRjs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsdUJBQXVCO0lBSTNFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFKVixtQkFBYyxHQUErQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0Usc0JBQWlCLEdBQW1ELFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUlqRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2QsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLEtBQUssRUFBRSxHQUFHO1lBQ1YsTUFBTSxFQUFFLEdBQUc7WUFDWCxjQUFjLEVBQUUsS0FBSztZQUNyQixVQUFVLEVBQUUsRUFBRTtZQUNkLFlBQVksRUFBRSxDQUFDO1lBQ2YsV0FBVyxFQUFFLElBQUk7WUFDakIsZUFBZSxFQUFFLFdBQVc7WUFDNUIsaUJBQWlCLEVBQUUsR0FBRztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBVTtRQUNyQyxxQkFBcUI7SUFDdkIsQ0FBQzs4R0FyQlUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MsK0ZDZDdDLHNLQUtBLHVHRE1ZLHFCQUFxQjs7MkZBR3BCLGdDQUFnQztrQkFONUMsU0FBUzs4QkFHQyxDQUFDLHFCQUFxQixDQUFDLG1CQUNmLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERvbnV0Q2hhcnRDb21wb25lbnQsIEFYRG9udXRDaGFydERhdGEsIEFYRG9udXRDaGFydE9wdGlvbiB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2RvbnV0LWNoYXJ0JztcbmltcG9ydCB7IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRG9udXQgQ2hhcnQgV2lkZ2V0IENvbXBvbmVudFxuICogRGlzcGxheXMgZGF0YSBpbiBhIGNpcmN1bGFyIGRvbnV0IGNoYXJ0IHdpdGggaW50ZXJhY3RpdmUgc2VnbWVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9kb251dC1jaGFydC13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb251dC1jaGFydC13aWRnZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW0FYRG9udXRDaGFydENvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBEb251dENoYXJ0V2lkZ2V0Vmlld0NvbXBvbmVudCBleHRlbmRzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IHtcbiAgZG9udXRDaGFydERhdGE6IFNpZ25hbDxBWERvbnV0Q2hhcnREYXRhW10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5nZXRWYWx1ZSgpKTtcbiAgZG9udXRDaGFydE9wdGlvbnM6IFNpZ25hbDxBWERvbnV0Q2hhcnRPcHRpb24gJiB7IHRpdGxlOiBzdHJpbmcgfT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNldE9wdGlvbnMoe1xuICAgICAgLi4udGhpcy5vcHRpb25zKCksXG4gICAgICB3aWR0aDogMzAwLFxuICAgICAgaGVpZ2h0OiAzMDAsXG4gICAgICBzaG93RGF0YUxhYmVsczogZmFsc2UsXG4gICAgICBkb251dFdpZHRoOiAzNSxcbiAgICAgIGNvcm5lclJhZGl1czogNCxcbiAgICAgIHNob3dUb29sdGlwOiB0cnVlLFxuICAgICAgYW5pbWF0aW9uRWFzaW5nOiAnY3ViaWMtb3V0JyxcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiA4MDAsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVEb251dENoYXJ0U2VnbWVudENsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICAvL2NvbnNvbGUubG9nKGV2ZW50KTtcbiAgfVxufVxuIiwiPGF4LWRvbnV0LWNoYXJ0XG4gIFtkYXRhXT1cImRvbnV0Q2hhcnREYXRhKClcIlxuICBbb3B0aW9uc109XCJkb251dENoYXJ0T3B0aW9ucygpXCJcbiAgKHNlZ21lbnRDbGljayk9XCJoYW5kbGVEb251dENoYXJ0U2VnbWVudENsaWNrKCRldmVudClcIlxuPjwvYXgtZG9udXQtY2hhcnQ+XG4iXX0=","import { AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY, } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\nexport const AXPDonutChartWidget = {\n name: 'donut-chart',\n title: 'Donut Chart Widget',\n categories: AXP_WIDGETS_CHART_CATEGORY,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-donut',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.donut-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Size & Layout ======\n {\n name: 'width',\n title: '@dashboard:widgets.donut-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 200,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.donut-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 200,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== Donut Appearance ======\n {\n name: 'showDataLabels',\n title: '@dashboard:widgets.donut-chart.show-data-labels',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDataLabels',\n path: 'options.showDataLabels',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'donutWidth',\n title: '@dashboard:widgets.donut-chart.donut-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 35,\n dataType: 'number',\n interface: {\n name: 'donutWidth',\n path: 'options.donutWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '10-80',\n minValue: 10,\n maxValue: 80,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.donut-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Legend ======\n // {\n // name: 'showLegend',\n // title: 'Show Legend',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showLegend',\n // path: 'options.showLegend',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'legendPosition',\n // title: 'Legend Position',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: 'right',\n // dataType: 'string',\n // interface: {\n // name: 'legendPosition',\n // path: 'options.legendPosition',\n // type: AXPWidgetsCatalog.select,\n // options: {\n // dataSource: ['right', 'bottom'],\n // },\n // },\n // },\n // visible: true,\n // },\n // ====== Tooltip ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.donut-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.donut-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.donut-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./donut-chart-widget.component').then((c) => c.AXPDonutChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 4,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 5,\n maxHeight: 6,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9udXQtY2hhcnQtd2lkZ2V0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2RvbnV0LWNoYXJ0L2RvbnV0LWNoYXJ0LXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4SCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUN0QixpQkFBaUIsR0FFbEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQW9CO0lBQ2xELElBQUksRUFBRSxhQUFhO0lBQ25CLEtBQUssRUFBRSxvQkFBb0I7SUFDM0IsVUFBVSxFQUFFLDBCQUEwQjtJQUN0QyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7SUFDNUMsSUFBSSxFQUFFLFdBQVc7SUFDakIsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixVQUFVLEVBQUU7UUFDVixhQUFhLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDcEQsYUFBYSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pELDRCQUE0QjtRQUM1QjtZQUNFLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLDRDQUE0QztZQUNuRCxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsT0FBTztvQkFDYixJQUFJLEVBQUUsZUFBZTtvQkFDckIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQzVCLE9BQU8sRUFBRTt3QkFDUCxXQUFXLEVBQUUsbUJBQW1CO3FCQUNqQztpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQXFNRTtLQUNIO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO1NBQzFHO0tBQ0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBRVQsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztZQUVaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7U0FDYjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0R3JvdXBFbnVtLCBBWFBXaWRnZXRzQ2F0YWxvZywgY2xvbmVQcm9wZXJ0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gIEFYUF9EQVRBX1BBVEhfUFJPUEVSVFksXG4gIEFYUF9OQU1FX1BST1BFUlRZLFxuICBBWFBfU1RZTElOR19QUk9QRVJUWV9HUk9VUCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcbmltcG9ydCB7IEFYUF9XSURHRVRTX0NIQVJUX0NBVEVHT1JZIH0gZnJvbSAnLi4vY2hhcnQudHlwZSc7XG5cbmV4cG9ydCBjb25zdCBBWFBEb251dENoYXJ0V2lkZ2V0OiBBWFBXaWRnZXRDb25maWcgPSB7XG4gIG5hbWU6ICdkb251dC1jaGFydCcsXG4gIHRpdGxlOiAnRG9udXQgQ2hhcnQgV2lkZ2V0JyxcbiAgY2F0ZWdvcmllczogQVhQX1dJREdFVFNfQ0hBUlRfQ0FURUdPUlksXG4gIGdyb3VwczogW0FYUFdpZGdldEdyb3VwRW51bS5EYXNoYm9hcmRXaWRnZXRdLFxuICB0eXBlOiAnZGFzaGJvYXJkJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWRvbnV0JyxcbiAgcHJvcGVydGllczogW1xuICAgIGNsb25lUHJvcGVydHkoQVhQX05BTUVfUFJPUEVSVFksIHsgdmlzaWJsZTogZmFsc2UgfSksXG4gICAgY2xvbmVQcm9wZXJ0eShBWFBfREFUQV9QQVRIX1BST1BFUlRZLCB7IHZpc2libGU6IGZhbHNlIH0pLFxuICAgIC8vID09PT09PSBDaGFydCBUaXRsZSA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuZG9udXQtY2hhcnQuY2hhcnQtdGl0bGUnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJycsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy50aXRsZScsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIGNoYXJ0IHRpdGxlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvKiBDb21tZW50ZWQgb3V0IHByb3BlcnRpZXNcbiAgICAvLyA9PT09PT0gU2l6ZSAmIExheW91dCA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAnd2lkdGgnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuZG9udXQtY2hhcnQud2lkdGgnLFxuICAgICAgZ3JvdXA6IEFYUF9TVFlMSU5HX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMzAwLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMud2lkdGgnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBtaW5WYWx1ZTogMjAwLFxuICAgICAgICAgICAgbWF4VmFsdWU6IDEyMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2hlaWdodCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5kb251dC1jaGFydC5oZWlnaHQnLFxuICAgICAgZ3JvdXA6IEFYUF9TVFlMSU5HX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMzAwLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmhlaWdodCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIG1pblZhbHVlOiAyMDAsXG4gICAgICAgICAgICBtYXhWYWx1ZTogODAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIC8vID09PT09PSBEb251dCBBcHBlYXJhbmNlID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93RGF0YUxhYmVscycsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5kb251dC1jaGFydC5zaG93LWRhdGEtbGFiZWxzJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93RGF0YUxhYmVscycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd0RhdGFMYWJlbHMnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2RvbnV0V2lkdGgnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuZG9udXQtY2hhcnQuZG9udXQtd2lkdGgnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMzUsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2RvbnV0V2lkdGgnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmRvbnV0V2lkdGgnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJzEwLTgwJyxcbiAgICAgICAgICAgIG1pblZhbHVlOiAxMCxcbiAgICAgICAgICAgIG1heFZhbHVlOiA4MCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnY29ybmVyUmFkaXVzJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmRvbnV0LWNoYXJ0LmNvcm5lci1yYWRpdXMnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogNCxcbiAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnY29ybmVyUmFkaXVzJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5jb3JuZXJSYWRpdXMnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJzAtMjAnLFxuICAgICAgICAgICAgbWluVmFsdWU6IDAsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gPT09PT09IExlZ2VuZCA9PT09PT1cbiAgICAvLyB7XG4gICAgLy8gICBuYW1lOiAnc2hvd0xlZ2VuZCcsXG4gICAgLy8gICB0aXRsZTogJ1Nob3cgTGVnZW5kJyxcbiAgICAvLyAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAvLyAgIHNjaGVtYToge1xuICAgIC8vICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgLy8gICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgLy8gICAgIGludGVyZmFjZToge1xuICAgIC8vICAgICAgIG5hbWU6ICdzaG93TGVnZW5kJyxcbiAgICAvLyAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93TGVnZW5kJyxcbiAgICAvLyAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICB9LFxuICAgIC8vICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAvLyB9LFxuICAgIC8vIHtcbiAgICAvLyAgIG5hbWU6ICdsZWdlbmRQb3NpdGlvbicsXG4gICAgLy8gICB0aXRsZTogJ0xlZ2VuZCBQb3NpdGlvbicsXG4gICAgLy8gICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgLy8gICBzY2hlbWE6IHtcbiAgICAvLyAgICAgZGVmYXVsdFZhbHVlOiAncmlnaHQnLFxuICAgIC8vICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgLy8gICAgIGludGVyZmFjZToge1xuICAgIC8vICAgICAgIG5hbWU6ICdsZWdlbmRQb3NpdGlvbicsXG4gICAgLy8gICAgICAgcGF0aDogJ29wdGlvbnMubGVnZW5kUG9zaXRpb24nLFxuICAgIC8vICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAvLyAgICAgICBvcHRpb25zOiB7XG4gICAgLy8gICAgICAgICBkYXRhU291cmNlOiBbJ3JpZ2h0JywgJ2JvdHRvbSddLFxuICAgIC8vICAgICAgIH0sXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICB9LFxuICAgIC8vICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAvLyB9LFxuICAgIC8vID09PT09PSBUb29sdGlwID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93VG9vbHRpcCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5kb251dC1jaGFydC5zaG93LXRvb2x0aXAnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3Nob3dUb29sdGlwJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93VG9vbHRpcCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyA9PT09PT0gQW5pbWF0aW9uIFNldHRpbmdzID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICdhbmltYXRpb25FYXNpbmcnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuZG9udXQtY2hhcnQuYW5pbWF0aW9uLWVhc2luZycsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnY3ViaWMtb3V0JyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnYW5pbWF0aW9uRWFzaW5nJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5hbmltYXRpb25FYXNpbmcnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBkYXRhU291cmNlOiBbXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdsaW5lYXInLCB0ZXh0OiAnTGluZWFyJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnZWFzZScsIHRleHQ6ICdFYXNlJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnZWFzZS1pbicsIHRleHQ6ICdFYXNlIEluJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnZWFzZS1vdXQnLCB0ZXh0OiAnRWFzZSBPdXQnIH0sXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdlYXNlLWluLW91dCcsIHRleHQ6ICdFYXNlIEluIE91dCcgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2N1YmljJywgdGV4dDogJ0N1YmljJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnY3ViaWMtaW4nLCB0ZXh0OiAnQ3ViaWMgSW4nIH0sXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdjdWJpYy1vdXQnLCB0ZXh0OiAnQ3ViaWMgT3V0JyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnY3ViaWMtaW4tb3V0JywgdGV4dDogJ0N1YmljIEluIE91dCcgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB0ZXh0RmllbGQ6ICd0ZXh0JyxcbiAgICAgICAgICAgIHZhbHVlRmllbGQ6ICd2YWx1ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmRvbnV0LWNoYXJ0LmFuaW1hdGlvbi1kdXJhdGlvbicsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiA4MDAsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvbicsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMC0yMDAwJyxcbiAgICAgICAgICAgIG1pblZhbHVlOiAwLFxuICAgICAgICAgICAgbWF4VmFsdWU6IDIwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAgKi9cbiAgXSxcbiAgY29tcG9uZW50czoge1xuICAgIHZpZXc6IHtcbiAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2RvbnV0LWNoYXJ0LXdpZGdldC5jb21wb25lbnQnKS50aGVuKChjKSA9PiBjLkFYUERvbnV0Q2hhcnRXaWRnZXRWaWV3Q29tcG9uZW50KSxcbiAgICB9LFxuICB9LFxuICBtZXRhOiB7XG4gICAgZGltZW5zaW9uczoge1xuICAgICAgd2lkdGg6IDQsXG4gICAgICBoZWlnaHQ6IDQsXG5cbiAgICAgIG1pbldpZHRoOiAyLFxuICAgICAgbWluSGVpZ2h0OiAyLFxuXG4gICAgICBtYXhXaWR0aDogNSxcbiAgICAgIG1heEhlaWdodDogNixcbiAgICB9LFxuICB9LFxufTtcblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInIHtcbiAgaW50ZXJmYWNlIEFYUFdpZGdldFR5cGVzTWFwIHtcbiAgICBkb251dENoYXJ0OiAnZG9udXQtY2hhcnQnO1xuICB9XG59XG4iXX0=","import { AXGaugeChartComponent } from '@acorex/charts/gauge-chart';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Gauge Chart Widget Component\n * Renders a semi-circular gauge chart with animated needle and thresholds\n */\nexport class AXPGaugeChartWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super();\n this.gaugeChartValue = computed(() => this.getValue());\n this.gaugeChartOptions = computed(() => this.options());\n this.setOptions({\n ...this.options(),\n width: null,\n height: 300,\n minValue: 0,\n maxValue: 100,\n showTooltip: true,\n gaugeWidth: 30,\n cornerRadius: 4,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPGaugeChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPGaugeChartWidgetViewComponent, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: \"<ax-gauge-chart [value]=\\\"gaugeChartValue()\\\" [options]=\\\"gaugeChartOptions()\\\"></ax-gauge-chart>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"], dependencies: [{ kind: \"component\", type: AXGaugeChartComponent, selector: \"ax-gauge-chart\", inputs: [\"value\", \"options\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPGaugeChartWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ imports: [AXGaugeChartComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ax-gauge-chart [value]=\\\"gaugeChartValue()\\\" [options]=\\\"gaugeChartOptions()\\\"></ax-gauge-chart>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F1Z2UtY2hhcnQtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2dhdWdlLWNoYXJ0L2dhdWdlLWNoYXJ0LXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9nYXVnZS1jaGFydC9nYXVnZS1jaGFydC13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFzQixNQUFNLDRCQUE0QixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQUNyRjs7O0dBR0c7QUFPSCxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsdUJBQXVCO0lBSTNFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFKVixvQkFBZSxHQUFtQixRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEUsc0JBQWlCLEdBQW1ELFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUlqRyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQ2QsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pCLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLEdBQUc7WUFDWCxRQUFRLEVBQUUsQ0FBQztZQUNYLFFBQVEsRUFBRSxHQUFHO1lBQ2IsV0FBVyxFQUFFLElBQUk7WUFDakIsVUFBVSxFQUFFLEVBQUU7WUFDZCxZQUFZLEVBQUUsQ0FBQztZQUNmLGVBQWUsRUFBRSxXQUFXO1lBQzVCLGlCQUFpQixFQUFFLEdBQUc7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FsQlUsZ0NBQWdDO2tHQUFoQyxnQ0FBZ0MsK0ZDYjdDLHFHQUNBLHVHRFNZLHFCQUFxQjs7MkZBR3BCLGdDQUFnQztrQkFONUMsU0FBUzs4QkFHQyxDQUFDLHFCQUFxQixDQUFDLG1CQUNmLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEdhdWdlQ2hhcnRDb21wb25lbnQsIEFYR2F1Z2VDaGFydE9wdGlvbiB9IGZyb20gJ0BhY29yZXgvY2hhcnRzL2dhdWdlLWNoYXJ0JztcbmltcG9ydCB7IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vKipcbiAqIEdhdWdlIENoYXJ0IFdpZGdldCBDb21wb25lbnRcbiAqIFJlbmRlcnMgYSBzZW1pLWNpcmN1bGFyIGdhdWdlIGNoYXJ0IHdpdGggYW5pbWF0ZWQgbmVlZGxlIGFuZCB0aHJlc2hvbGRzXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZ2F1Z2UtY2hhcnQtd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2F1Z2UtY2hhcnQtd2lkZ2V0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtBWEdhdWdlQ2hhcnRDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQR2F1Z2VDaGFydFdpZGdldFZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB7XG4gIGdhdWdlQ2hhcnRWYWx1ZTogU2lnbmFsPG51bWJlcj4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmdldFZhbHVlKCkpO1xuICBnYXVnZUNoYXJ0T3B0aW9uczogU2lnbmFsPEFYR2F1Z2VDaGFydE9wdGlvbiAmIHsgdGl0bGU6IHN0cmluZyB9PiA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2V0T3B0aW9ucyh7XG4gICAgICAuLi50aGlzLm9wdGlvbnMoKSxcbiAgICAgIHdpZHRoOiBudWxsLFxuICAgICAgaGVpZ2h0OiAzMDAsXG4gICAgICBtaW5WYWx1ZTogMCxcbiAgICAgIG1heFZhbHVlOiAxMDAsXG4gICAgICBzaG93VG9vbHRpcDogdHJ1ZSxcbiAgICAgIGdhdWdlV2lkdGg6IDMwLFxuICAgICAgY29ybmVyUmFkaXVzOiA0LFxuICAgICAgYW5pbWF0aW9uRWFzaW5nOiAnY3ViaWMtb3V0JyxcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiA4MDAsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxheC1nYXVnZS1jaGFydCBbdmFsdWVdPVwiZ2F1Z2VDaGFydFZhbHVlKClcIiBbb3B0aW9uc109XCJnYXVnZUNoYXJ0T3B0aW9ucygpXCI+PC9heC1nYXVnZS1jaGFydD5cbiJdfQ==","import { AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY, } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\nexport const AXPGaugeChartWidget = {\n name: 'gauge-chart',\n title: 'Gauge Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n type: 'dashboard',\n icon: 'fa-light fa-gauge',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.gauge-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Label Display ======\n {\n name: 'label',\n title: '@dashboard:widgets.gauge-chart.label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'label',\n path: 'options.label',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.gauge-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-1200',\n minValue: 1,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.gauge-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-800',\n minValue: 1,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n // ====== Gauge Configuration ======\n {\n name: 'minValue',\n title: '@dashboard:widgets.gauge-chart.min-value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 0,\n dataType: 'number',\n interface: {\n name: 'minValue',\n path: 'options.minValue',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n {\n name: 'maxValue',\n title: '@dashboard:widgets.gauge-chart.max-value',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 100,\n dataType: 'number',\n interface: {\n name: 'maxValue',\n path: 'options.maxValue',\n type: AXPWidgetsCatalog.number,\n },\n },\n visible: true,\n },\n // ====== Gauge Appearance ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.gauge-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'gaugeWidth',\n title: '@dashboard:widgets.gauge-chart.gauge-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 30,\n dataType: 'number',\n interface: {\n name: 'gaugeWidth',\n path: 'options.gaugeWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n {\n name: 'cornerRadius',\n title: '@dashboard:widgets.gauge-chart.corner-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'cornerRadius',\n path: 'options.cornerRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-20',\n minValue: 0,\n maxValue: 20,\n },\n },\n },\n visible: true,\n },\n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.gauge-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.gauge-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./gauge-chart-widget.component').then((c) => c.AXPGaugeChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 5,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F1Z2UtY2hhcnQtd2lkZ2V0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2dhdWdlLWNoYXJ0L2dhdWdlLWNoYXJ0LXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUN0QixpQkFBaUIsR0FFbEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQW9CO0lBQ2xELElBQUksRUFBRSxhQUFhO0lBQ25CLEtBQUssRUFBRSxvQkFBb0I7SUFDM0IsVUFBVSxFQUFFLENBQUMsMEJBQTBCLENBQUM7SUFDeEMsSUFBSSxFQUFFLFdBQVc7SUFDakIsSUFBSSxFQUFFLG1CQUFtQjtJQUN6QixVQUFVLEVBQUU7UUFDVixhQUFhLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDcEQsYUFBYSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pELDRCQUE0QjtRQUM1QjtZQUNFLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLDRDQUE0QztZQUNuRCxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsT0FBTztvQkFDYixJQUFJLEVBQUUsZUFBZTtvQkFDckIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQzVCLE9BQU8sRUFBRTt3QkFDUCxXQUFXLEVBQUUsbUJBQW1CO3FCQUNqQztpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNELDhCQUE4QjtRQUM5QjtZQUNFLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLHNDQUFzQztZQUM3QyxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsT0FBTztvQkFDYixJQUFJLEVBQUUsZUFBZTtvQkFDckIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQzdCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkO1FBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQW9MRTtLQUNIO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO1NBQzFHO0tBQ0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBRVQsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztZQUVaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7U0FDYjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0c0NhdGFsb2csIGNsb25lUHJvcGVydHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7XG4gIEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICBBWFBfREFUQV9QQVRIX1BST1BFUlRZLFxuICBBWFBfTkFNRV9QUk9QRVJUWSxcbiAgQVhQX1NUWUxJTkdfUFJPUEVSVFlfR1JPVVAsXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XG5pbXBvcnQgeyBBWFBfV0lER0VUU19DSEFSVF9DQVRFR09SWSB9IGZyb20gJy4uL2NoYXJ0LnR5cGUnO1xuXG5leHBvcnQgY29uc3QgQVhQR2F1Z2VDaGFydFdpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnZ2F1Z2UtY2hhcnQnLFxuICB0aXRsZTogJ0dhdWdlIENoYXJ0IFdpZGdldCcsXG4gIGNhdGVnb3JpZXM6IFtBWFBfV0lER0VUU19DSEFSVF9DQVRFR09SWV0sXG4gIHR5cGU6ICdkYXNoYm9hcmQnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtZ2F1Z2UnLFxuICBwcm9wZXJ0aWVzOiBbXG4gICAgY2xvbmVQcm9wZXJ0eShBWFBfTkFNRV9QUk9QRVJUWSwgeyB2aXNpYmxlOiBmYWxzZSB9KSxcbiAgICBjbG9uZVByb3BlcnR5KEFYUF9EQVRBX1BBVEhfUFJPUEVSVFksIHsgdmlzaWJsZTogZmFsc2UgfSksXG4gICAgLy8gPT09PT09IENoYXJ0IFRpdGxlID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5nYXVnZS1jaGFydC5jaGFydC10aXRsZScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnJyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnRpdGxlJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgY2hhcnQgdGl0bGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIC8vID09PT09PSBMYWJlbCBEaXNwbGF5ID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICdsYWJlbCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5nYXVnZS1jaGFydC5sYWJlbCcsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnJyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnbGFiZWwnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmxhYmVsJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvKiBDb21tZW50ZWQgb3V0IHByb3BlcnRpZXNcbiAgICAvLyA9PT09PT0gTGF5b3V0ICYgRGltZW5zaW9ucyA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAnd2lkdGgnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuZ2F1Z2UtY2hhcnQud2lkdGgnLFxuICAgICAgZ3JvdXA6IEFYUF9TVFlMSU5HX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnd2lkdGgnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLndpZHRoJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcxLTEyMDAnLFxuICAgICAgICAgICAgbWluVmFsdWU6IDEsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMTIwMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnaGVpZ2h0JyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmdhdWdlLWNoYXJ0LmhlaWdodCcsXG4gICAgICBncm91cDogQVhQX1NUWUxJTkdfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAzMDAsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2hlaWdodCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuaGVpZ2h0JyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcxLTgwMCcsXG4gICAgICAgICAgICBtaW5WYWx1ZTogMSxcbiAgICAgICAgICAgIG1heFZhbHVlOiA4MDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gPT09PT09IEdhdWdlIENvbmZpZ3VyYXRpb24gPT09PT09XG4gICAge1xuICAgICAgbmFtZTogJ21pblZhbHVlJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmdhdWdlLWNoYXJ0Lm1pbi12YWx1ZScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAwLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdtaW5WYWx1ZScsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMubWluVmFsdWUnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ21heFZhbHVlJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmdhdWdlLWNoYXJ0Lm1heC12YWx1ZScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAxMDAsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ21heFZhbHVlJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5tYXhWYWx1ZScsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyA9PT09PT0gR2F1Z2UgQXBwZWFyYW5jZSA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAnc2hvd1Rvb2x0aXAnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuZ2F1Z2UtY2hhcnQuc2hvdy10b29sdGlwJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93VG9vbHRpcCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd1Rvb2x0aXAnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2dhdWdlV2lkdGgnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuZ2F1Z2UtY2hhcnQuZ2F1Z2Utd2lkdGgnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMzAsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2dhdWdlV2lkdGgnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmdhdWdlV2lkdGgnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJzEtMTAwJyxcbiAgICAgICAgICAgIG1pblZhbHVlOiAxLFxuICAgICAgICAgICAgbWF4VmFsdWU6IDEwMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnY29ybmVyUmFkaXVzJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmdhdWdlLWNoYXJ0LmNvcm5lci1yYWRpdXMnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogNCxcbiAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnY29ybmVyUmFkaXVzJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5jb3JuZXJSYWRpdXMnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJzEtMjAnLFxuICAgICAgICAgICAgbWluVmFsdWU6IDAsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAgLy8gPT09PT09IEFuaW1hdGlvbiBTZXR0aW5ncyA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAnYW5pbWF0aW9uRWFzaW5nJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmdhdWdlLWNoYXJ0LmFuaW1hdGlvbi1lYXNpbmcnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ2N1YmljLW91dCcsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2FuaW1hdGlvbkVhc2luZycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuYW5pbWF0aW9uRWFzaW5nJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZGF0YVNvdXJjZTogW1xuICAgICAgICAgICAgICB7IHZhbHVlOiAnbGluZWFyJywgdGV4dDogJ0xpbmVhcicgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2Vhc2UnLCB0ZXh0OiAnRWFzZScgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2Vhc2UtaW4nLCB0ZXh0OiAnRWFzZSBJbicgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2Vhc2Utb3V0JywgdGV4dDogJ0Vhc2UgT3V0JyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnZWFzZS1pbi1vdXQnLCB0ZXh0OiAnRWFzZSBJbiBPdXQnIH0sXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdjdWJpYycsIHRleHQ6ICdDdWJpYycgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2N1YmljLWluJywgdGV4dDogJ0N1YmljIEluJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnY3ViaWMtb3V0JywgdGV4dDogJ0N1YmljIE91dCcgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2N1YmljLWluLW91dCcsIHRleHQ6ICdDdWJpYyBJbiBPdXQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgdGV4dEZpZWxkOiAndGV4dCcsXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiAndmFsdWUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdhbmltYXRpb25EdXJhdGlvbicsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5nYXVnZS1jaGFydC5hbmltYXRpb24tZHVyYXRpb24nLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogODAwLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdhbmltYXRpb25EdXJhdGlvbicsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuYW5pbWF0aW9uRHVyYXRpb24nLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJzAtMjAwMCcsXG4gICAgICAgICAgICBtaW5WYWx1ZTogMCxcbiAgICAgICAgICAgIG1heFZhbHVlOiAyMDAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgICovXG4gIF0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB2aWV3OiB7XG4gICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9nYXVnZS1jaGFydC13aWRnZXQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWFBHYXVnZUNoYXJ0V2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbiAgbWV0YToge1xuICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiAzLFxuICAgICAgaGVpZ2h0OiA0LFxuXG4gICAgICBtaW5XaWR0aDogMixcbiAgICAgIG1pbkhlaWdodDogMixcblxuICAgICAgbWF4V2lkdGg6IDQsXG4gICAgICBtYXhIZWlnaHQ6IDUsXG4gICAgfSxcbiAgfSxcbn07XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJyB7XG4gIGludGVyZmFjZSBBWFBXaWRnZXRUeXBlc01hcCB7XG4gICAgZ2F1Z2VDaGFydDogJ2dhdWdlLWNoYXJ0JztcbiAgfVxufVxuIl19","import { AXLineChartComponent, } from '@acorex/charts/line-chart';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { ChangeDetectionStrategy, Component, computed } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Line Chart Widget Component\n * Renders data as lines with interactive hover effects and animations\n */\nexport class AXPLineChartWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super();\n this.lineChartData = computed(() => this.getValue());\n this.lineChartOptions = computed(() => this.options());\n this.setOptions({\n ...this.options(),\n showXAxis: true,\n showYAxis: true,\n yAxisStartsAtZero: true,\n showGrid: true,\n showVerticalGrid: true,\n lineWidth: 2,\n smoothLine: true,\n showPoints: true,\n pointRadius: 4,\n fillOpacity: 80,\n showTooltip: true,\n showCrosshair: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n });\n }\n handleLineChartPointClick(event) {\n //console.log(event);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLineChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.0.4\", type: AXPLineChartWidgetViewComponent, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: \"<ax-line-chart\\n (pointClick)=\\\"handleLineChartPointClick($event)\\\"\\n [data]=\\\"lineChartData()\\\"\\n [options]=\\\"lineChartOptions()\\\"\\n></ax-line-chart>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"], dependencies: [{ kind: \"component\", type: AXLineChartComponent, selector: \"ax-line-chart\", inputs: [\"data\", \"options\"], outputs: [\"pointClick\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPLineChartWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, imports: [AXLineChartComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<ax-line-chart\\n (pointClick)=\\\"handleLineChartPointClick($event)\\\"\\n [data]=\\\"lineChartData()\\\"\\n [options]=\\\"lineChartOptions()\\\"\\n></ax-line-chart>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvc2hhcmVkL3dpZGdldHMvbGluZS1jaGFydC9saW5lLWNoYXJ0LXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9saW5lLWNoYXJ0L2xpbmUtY2hhcnQtd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsR0FJckIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQW1CLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBQ3RHOzs7R0FHRztBQVFILE1BQU0sT0FBTywrQkFBZ0MsU0FBUSx1QkFBdUI7SUFJMUU7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUpWLGtCQUFhLEdBQThCLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRSxxQkFBZ0IsR0FBa0QsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBSS9GLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDZCxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsU0FBUyxFQUFFLElBQUk7WUFDZixTQUFTLEVBQUUsSUFBSTtZQUNmLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsUUFBUSxFQUFFLElBQUk7WUFDZCxnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLFNBQVMsRUFBRSxDQUFDO1lBQ1osVUFBVSxFQUFFLElBQUk7WUFDaEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsV0FBVyxFQUFFLENBQUM7WUFDZCxXQUFXLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGVBQWUsRUFBRSxXQUFXO1lBQzVCLGlCQUFpQixFQUFFLEdBQUc7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHlCQUF5QixDQUFDLEtBQWlDO1FBQ3pELHFCQUFxQjtJQUN2QixDQUFDOzhHQTNCVSwrQkFBK0I7a0dBQS9CLCtCQUErQiwrRkNuQjVDLDZKQUtBLHVHRFdZLG9CQUFvQjs7MkZBR25CLCtCQUErQjtrQkFQM0MsU0FBUztpQ0FHSSxJQUFJLFdBQ1AsQ0FBQyxvQkFBb0IsQ0FBQyxtQkFDZCx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhMaW5lQ2hhcnRDb21wb25lbnQsXG4gIEFYTGluZUNoYXJ0RGF0YSxcbiAgQVhMaW5lQ2hhcnRPcHRpb24sXG4gIEFYTGluZUNoYXJ0UG9pbnRDbGlja0V2ZW50LFxufSBmcm9tICdAYWNvcmV4L2NoYXJ0cy9saW5lLWNoYXJ0JztcbmltcG9ydCB7IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8qKlxuICogTGluZSBDaGFydCBXaWRnZXQgQ29tcG9uZW50XG4gKiBSZW5kZXJzIGRhdGEgYXMgbGluZXMgd2l0aCBpbnRlcmFjdGl2ZSBob3ZlciBlZmZlY3RzIGFuZCBhbmltYXRpb25zXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vbGluZS1jaGFydC13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saW5lLWNoYXJ0LXdpZGdldC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQVhMaW5lQ2hhcnRDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQTGluZUNoYXJ0V2lkZ2V0Vmlld0NvbXBvbmVudCBleHRlbmRzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IHtcbiAgbGluZUNoYXJ0RGF0YTogU2lnbmFsPEFYTGluZUNoYXJ0RGF0YVtdPiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2V0VmFsdWUoKSk7XG4gIGxpbmVDaGFydE9wdGlvbnM6IFNpZ25hbDxBWExpbmVDaGFydE9wdGlvbiAmIHsgdGl0bGU6IHN0cmluZyB9PiA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2V0T3B0aW9ucyh7XG4gICAgICAuLi50aGlzLm9wdGlvbnMoKSxcbiAgICAgIHNob3dYQXhpczogdHJ1ZSxcbiAgICAgIHNob3dZQXhpczogdHJ1ZSxcbiAgICAgIHlBeGlzU3RhcnRzQXRaZXJvOiB0cnVlLFxuICAgICAgc2hvd0dyaWQ6IHRydWUsXG4gICAgICBzaG93VmVydGljYWxHcmlkOiB0cnVlLFxuICAgICAgbGluZVdpZHRoOiAyLFxuICAgICAgc21vb3RoTGluZTogdHJ1ZSxcbiAgICAgIHNob3dQb2ludHM6IHRydWUsXG4gICAgICBwb2ludFJhZGl1czogNCxcbiAgICAgIGZpbGxPcGFjaXR5OiA4MCxcbiAgICAgIHNob3dUb29sdGlwOiB0cnVlLFxuICAgICAgc2hvd0Nyb3NzaGFpcjogdHJ1ZSxcbiAgICAgIGFuaW1hdGlvbkVhc2luZzogJ2N1YmljLW91dCcsXG4gICAgICBhbmltYXRpb25EdXJhdGlvbjogODAwLFxuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlTGluZUNoYXJ0UG9pbnRDbGljayhldmVudDogQVhMaW5lQ2hhcnRQb2ludENsaWNrRXZlbnQpIHtcbiAgICAvL2NvbnNvbGUubG9nKGV2ZW50KTtcbiAgfVxufVxuIiwiPGF4LWxpbmUtY2hhcnRcbiAgKHBvaW50Q2xpY2spPVwiaGFuZGxlTGluZUNoYXJ0UG9pbnRDbGljaygkZXZlbnQpXCJcbiAgW2RhdGFdPVwibGluZUNoYXJ0RGF0YSgpXCJcbiAgW29wdGlvbnNdPVwibGluZUNoYXJ0T3B0aW9ucygpXCJcbj48L2F4LWxpbmUtY2hhcnQ+XG4iXX0=","import { AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_DATA_PATH_PROPERTY, AXP_NAME_PROPERTY, } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\nexport const AXPLineChartWidget = {\n name: 'line-chart',\n title: 'Line Chart Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-chart-line',\n properties: [\n cloneProperty(AXP_NAME_PROPERTY, { visible: false }),\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Chart Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.line-chart.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // ====== Axis Settings ======\n {\n name: 'xAxisLabel',\n title: '@dashboard:widgets.line-chart.x-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'xAxisLabel',\n path: 'options.xAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'yAxisLabel',\n title: '@dashboard:widgets.line-chart.y-axis-label',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'yAxisLabel',\n path: 'options.yAxisLabel',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'fillArea',\n title: '@dashboard:widgets.line-chart.fill-area',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: false,\n dataType: 'boolean',\n interface: {\n name: 'fillArea',\n path: 'options.fillArea',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n /* Commented out properties\n // ====== Layout & Dimensions ======\n {\n name: 'width',\n title: '@dashboard:widgets.line-chart.width',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: null,\n dataType: 'number',\n interface: {\n name: 'width',\n path: 'options.width',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 1200,\n },\n },\n },\n visible: true,\n },\n {\n name: 'height',\n title: '@dashboard:widgets.line-chart.height',\n group: AXP_STYLING_PROPERTY_GROUP,\n schema: {\n defaultValue: 300,\n dataType: 'number',\n interface: {\n name: 'height',\n path: 'options.height',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 0,\n maxValue: 800,\n },\n },\n },\n visible: true,\n },\n \n // ====== Axis Settings ======\n {\n name: 'showXAxis',\n title: '@dashboard:widgets.line-chart.show-x-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showXAxis',\n path: 'options.showXAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showYAxis',\n title: '@dashboard:widgets.line-chart.show-y-axis',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showYAxis',\n path: 'options.showYAxis',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'yAxisStartsAtZero',\n title: '@dashboard:widgets.line-chart.y-axis-starts-at-zero',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'yAxisStartsAtZero',\n path: 'options.yAxisStartsAtZero',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n \n {\n name: 'showGrid',\n title: '@dashboard:widgets.line-chart.show-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showGrid',\n path: 'options.showGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showVerticalGrid',\n title: '@dashboard:widgets.line-chart.show-vertical-grid',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showVerticalGrid',\n path: 'options.showVerticalGrid',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n \n // ====== Line Appearance ======\n {\n name: 'lineWidth',\n title: '@dashboard:widgets.line-chart.line-width',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 2,\n dataType: 'number',\n interface: {\n name: 'lineWidth',\n path: 'options.lineWidth',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-10',\n minValue: 1,\n maxValue: 10,\n },\n },\n },\n visible: true,\n },\n {\n name: 'smoothLine',\n title: '@dashboard:widgets.line-chart.smooth-line',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'smoothLine',\n path: 'options.smoothLine',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showPoints',\n title: '@dashboard:widgets.line-chart.show-points',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showPoints',\n path: 'options.showPoints',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'pointRadius',\n title: '@dashboard:widgets.line-chart.point-radius',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 4,\n dataType: 'number',\n interface: {\n name: 'pointRadius',\n path: 'options.pointRadius',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-10',\n minValue: 1,\n maxValue: 10,\n },\n },\n },\n visible: true,\n },\n {\n name: 'fillOpacity',\n title: '@dashboard:widgets.line-chart.fill-opacity',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 80,\n dataType: 'number',\n interface: {\n name: 'fillOpacity',\n path: 'options.fillOpacity',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '1-100',\n minValue: 1,\n maxValue: 100,\n },\n },\n },\n visible: true,\n },\n \n // ====== Tooltip Settings ======\n {\n name: 'showTooltip',\n title: '@dashboard:widgets.line-chart.show-tooltip',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showTooltip',\n path: 'options.showTooltip',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showCrosshair',\n title: '@dashboard:widgets.line-chart.show-crosshair',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showCrosshair',\n path: 'options.showCrosshair',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n \n // ====== Animation Settings ======\n {\n name: 'animationEasing',\n title: '@dashboard:widgets.line-chart.animation-easing',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 'cubic-out',\n dataType: 'string',\n interface: {\n name: 'animationEasing',\n path: 'options.animationEasing',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [\n { value: 'linear', text: 'Linear' },\n { value: 'ease', text: 'Ease' },\n { value: 'ease-in', text: 'Ease In' },\n { value: 'ease-out', text: 'Ease Out' },\n { value: 'ease-in-out', text: 'Ease In Out' },\n { value: 'cubic', text: 'Cubic' },\n { value: 'cubic-in', text: 'Cubic In' },\n { value: 'cubic-out', text: 'Cubic Out' },\n { value: 'cubic-in-out', text: 'Cubic In Out' },\n ],\n textField: 'text',\n valueField: 'value',\n },\n },\n },\n visible: true,\n },\n {\n name: 'animationDuration',\n title: '@dashboard:widgets.line-chart.animation-duration',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 800,\n dataType: 'number',\n interface: {\n name: 'animationDuration',\n path: 'options.animationDuration',\n type: AXPWidgetsCatalog.number,\n options: {\n placeholder: '0-2000',\n minValue: 0,\n maxValue: 2000,\n },\n },\n },\n visible: true,\n },\n */\n ],\n components: {\n view: {\n component: () => import('./line-chart-widget.component').then((c) => c.AXPLineChartWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 4,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 6,\n maxHeight: 6,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jaGFydC13aWRnZXQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvc2hhcmVkL3dpZGdldHMvbGluZS1jaGFydC9saW5lLWNoYXJ0LXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4SCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLHNCQUFzQixFQUN0QixpQkFBaUIsR0FFbEIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0QsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQW9CO0lBQ2pELElBQUksRUFBRSxZQUFZO0lBQ2xCLEtBQUssRUFBRSxtQkFBbUI7SUFDMUIsVUFBVSxFQUFFLENBQUMsMEJBQTBCLENBQUM7SUFDeEMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDO0lBQzVDLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsVUFBVSxFQUFFO1FBQ1YsYUFBYSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BELGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUN6RCw0QkFBNEI7UUFDNUI7WUFDRSxJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUssRUFBRSwyQ0FBMkM7WUFDbEQsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLE9BQU87b0JBQ2IsSUFBSSxFQUFFLGVBQWU7b0JBQ3JCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUM1QixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxFQUFFLG1CQUFtQjtxQkFDakM7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFDRCw4QkFBOEI7UUFDOUI7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUUsNENBQTRDO1lBQ25ELEtBQUssRUFBRSw2QkFBNkI7WUFDcEMsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxFQUFFO2dCQUNoQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsb0JBQW9CO29CQUMxQixJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDN0I7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNFLElBQUksRUFBRSxZQUFZO1lBQ2xCLEtBQUssRUFBRSw0Q0FBNEM7WUFDbkQsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUM3QjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0UsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLHlDQUF5QztZQUNoRCxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsS0FBSztnQkFDbkIsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLGtCQUFrQjtvQkFDeEIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07aUJBQy9CO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkO1FBQ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQXNTRTtLQUNIO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUErQixDQUFDO1NBQ3hHO0tBQ0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBRVQsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztZQUVaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7U0FDYjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0R3JvdXBFbnVtLCBBWFBXaWRnZXRzQ2F0YWxvZywgY2xvbmVQcm9wZXJ0eSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHtcbiAgQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gIEFYUF9EQVRBX1BBVEhfUFJPUEVSVFksXG4gIEFYUF9OQU1FX1BST1BFUlRZLFxuICBBWFBfU1RZTElOR19QUk9QRVJUWV9HUk9VUCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcbmltcG9ydCB7IEFYUF9XSURHRVRTX0NIQVJUX0NBVEVHT1JZIH0gZnJvbSAnLi4vY2hhcnQudHlwZSc7XG5cbmV4cG9ydCBjb25zdCBBWFBMaW5lQ2hhcnRXaWRnZXQ6IEFYUFdpZGdldENvbmZpZyA9IHtcbiAgbmFtZTogJ2xpbmUtY2hhcnQnLFxuICB0aXRsZTogJ0xpbmUgQ2hhcnQgV2lkZ2V0JyxcbiAgY2F0ZWdvcmllczogW0FYUF9XSURHRVRTX0NIQVJUX0NBVEVHT1JZXSxcbiAgZ3JvdXBzOiBbQVhQV2lkZ2V0R3JvdXBFbnVtLkRhc2hib2FyZFdpZGdldF0sXG4gIHR5cGU6ICdkYXNoYm9hcmQnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtY2hhcnQtbGluZScsXG4gIHByb3BlcnRpZXM6IFtcbiAgICBjbG9uZVByb3BlcnR5KEFYUF9OQU1FX1BST1BFUlRZLCB7IHZpc2libGU6IGZhbHNlIH0pLFxuICAgIGNsb25lUHJvcGVydHkoQVhQX0RBVEFfUEFUSF9QUk9QRVJUWSwgeyB2aXNpYmxlOiBmYWxzZSB9KSxcbiAgICAvLyA9PT09PT0gQ2hhcnQgVGl0bGUgPT09PT09XG4gICAge1xuICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmxpbmUtY2hhcnQuY2hhcnQtdGl0bGUnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJycsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy50aXRsZScsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIGNoYXJ0IHRpdGxlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyA9PT09PT0gQXhpcyBTZXR0aW5ncyA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAneEF4aXNMYWJlbCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5saW5lLWNoYXJ0LngtYXhpcy1sYWJlbCcsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnJyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAneEF4aXNMYWJlbCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMueEF4aXNMYWJlbCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3lBeGlzTGFiZWwnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMubGluZS1jaGFydC55LWF4aXMtbGFiZWwnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJycsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3lBeGlzTGFiZWwnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnlBeGlzTGFiZWwnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdmaWxsQXJlYScsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5saW5lLWNoYXJ0LmZpbGwtYXJlYScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2ZpbGxBcmVhJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5maWxsQXJlYScsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvKiBDb21tZW50ZWQgb3V0IHByb3BlcnRpZXNcbiAgICAvLyA9PT09PT0gTGF5b3V0ICYgRGltZW5zaW9ucyA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAnd2lkdGgnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMubGluZS1jaGFydC53aWR0aCcsXG4gICAgICBncm91cDogQVhQX1NUWUxJTkdfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMud2lkdGgnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLm51bWJlcixcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBtaW5WYWx1ZTogMCxcbiAgICAgICAgICAgIG1heFZhbHVlOiAxMjAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMubGluZS1jaGFydC5oZWlnaHQnLFxuICAgICAgZ3JvdXA6IEFYUF9TVFlMSU5HX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogMzAwLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmhlaWdodCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIG1pblZhbHVlOiAwLFxuICAgICAgICAgICAgbWF4VmFsdWU6IDgwMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcblxuICAgIC8vID09PT09PSBBeGlzIFNldHRpbmdzID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93WEF4aXMnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMubGluZS1jaGFydC5zaG93LXgtYXhpcycsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnc2hvd1hBeGlzJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93WEF4aXMnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dZQXhpcycsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5saW5lLWNoYXJ0LnNob3cteS1heGlzJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93WUF4aXMnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dZQXhpcycsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAneUF4aXNTdGFydHNBdFplcm8nLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMubGluZS1jaGFydC55LWF4aXMtc3RhcnRzLWF0LXplcm8nLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3lBeGlzU3RhcnRzQXRaZXJvJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy55QXhpc1N0YXJ0c0F0WmVybycsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93R3JpZCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5saW5lLWNoYXJ0LnNob3ctZ3JpZCcsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnc2hvd0dyaWQnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dHcmlkJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93VmVydGljYWxHcmlkJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmxpbmUtY2hhcnQuc2hvdy12ZXJ0aWNhbC1ncmlkJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93VmVydGljYWxHcmlkJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93VmVydGljYWxHcmlkJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuXG4gICAgLy8gPT09PT09IExpbmUgQXBwZWFyYW5jZSA9PT09PT1cbiAgICB7XG4gICAgICBuYW1lOiAnbGluZVdpZHRoJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmxpbmUtY2hhcnQubGluZS13aWR0aCcsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAyLFxuICAgICAgICBkYXRhVHlwZTogJ251bWJlcicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdsaW5lV2lkdGgnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmxpbmVXaWR0aCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMS0xMCcsXG4gICAgICAgICAgICBtaW5WYWx1ZTogMSxcbiAgICAgICAgICAgIG1heFZhbHVlOiAxMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc21vb3RoTGluZScsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5saW5lLWNoYXJ0LnNtb290aC1saW5lJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzbW9vdGhMaW5lJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zbW9vdGhMaW5lJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdzaG93UG9pbnRzJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmxpbmUtY2hhcnQuc2hvdy1wb2ludHMnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3Nob3dQb2ludHMnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dQb2ludHMnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3BvaW50UmFkaXVzJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmxpbmUtY2hhcnQucG9pbnQtcmFkaXVzJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IDQsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3BvaW50UmFkaXVzJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5wb2ludFJhZGl1cycsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMS0xMCcsXG4gICAgICAgICAgICBtaW5WYWx1ZTogMSxcbiAgICAgICAgICAgIG1heFZhbHVlOiAxMCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZmlsbE9wYWNpdHknLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMubGluZS1jaGFydC5maWxsLW9wYWNpdHknLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogODAsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2ZpbGxPcGFjaXR5JyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5maWxsT3BhY2l0eScsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMS0xMDAnLFxuICAgICAgICAgICAgbWluVmFsdWU6IDEsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMTAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuXG4gICAgLy8gPT09PT09IFRvb2x0aXAgU2V0dGluZ3MgPT09PT09XG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dUb29sdGlwJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLmxpbmUtY2hhcnQuc2hvdy10b29sdGlwJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93VG9vbHRpcCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd1Rvb2x0aXAnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dDcm9zc2hhaXInLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMubGluZS1jaGFydC5zaG93LWNyb3NzaGFpcicsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnc2hvd0Nyb3NzaGFpcicsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd0Nyb3NzaGFpcicsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcblxuICAgIC8vID09PT09PSBBbmltYXRpb24gU2V0dGluZ3MgPT09PT09XG4gICAge1xuICAgICAgbmFtZTogJ2FuaW1hdGlvbkVhc2luZycsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5saW5lLWNoYXJ0LmFuaW1hdGlvbi1lYXNpbmcnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ2N1YmljLW91dCcsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2FuaW1hdGlvbkVhc2luZycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuYW5pbWF0aW9uRWFzaW5nJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZGF0YVNvdXJjZTogW1xuICAgICAgICAgICAgICB7IHZhbHVlOiAnbGluZWFyJywgdGV4dDogJ0xpbmVhcicgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2Vhc2UnLCB0ZXh0OiAnRWFzZScgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2Vhc2UtaW4nLCB0ZXh0OiAnRWFzZSBJbicgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2Vhc2Utb3V0JywgdGV4dDogJ0Vhc2UgT3V0JyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnZWFzZS1pbi1vdXQnLCB0ZXh0OiAnRWFzZSBJbiBPdXQnIH0sXG4gICAgICAgICAgICAgIHsgdmFsdWU6ICdjdWJpYycsIHRleHQ6ICdDdWJpYycgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2N1YmljLWluJywgdGV4dDogJ0N1YmljIEluJyB9LFxuICAgICAgICAgICAgICB7IHZhbHVlOiAnY3ViaWMtb3V0JywgdGV4dDogJ0N1YmljIE91dCcgfSxcbiAgICAgICAgICAgICAgeyB2YWx1ZTogJ2N1YmljLWluLW91dCcsIHRleHQ6ICdDdWJpYyBJbiBPdXQnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgdGV4dEZpZWxkOiAndGV4dCcsXG4gICAgICAgICAgICB2YWx1ZUZpZWxkOiAndmFsdWUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdhbmltYXRpb25EdXJhdGlvbicsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5saW5lLWNoYXJ0LmFuaW1hdGlvbi1kdXJhdGlvbicsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiA4MDAsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2FuaW1hdGlvbkR1cmF0aW9uJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5hbmltYXRpb25EdXJhdGlvbicsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnMC0yMDAwJyxcbiAgICAgICAgICAgIG1pblZhbHVlOiAwLFxuICAgICAgICAgICAgbWF4VmFsdWU6IDIwMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAgKi9cbiAgXSxcbiAgY29tcG9uZW50czoge1xuICAgIHZpZXc6IHtcbiAgICAgIGNvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2xpbmUtY2hhcnQtd2lkZ2V0LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQTGluZUNoYXJ0V2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbiAgbWV0YToge1xuICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiAzLFxuICAgICAgaGVpZ2h0OiA0LFxuXG4gICAgICBtaW5XaWR0aDogMixcbiAgICAgIG1pbkhlaWdodDogMixcblxuICAgICAgbWF4V2lkdGg6IDYsXG4gICAgICBtYXhIZWlnaHQ6IDYsXG4gICAgfSxcbiAgfSxcbn07XG5cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJyB7XG4gIGludGVyZmFjZSBBWFBXaWRnZXRUeXBlc01hcCB7XG4gICAgbGluZUNoYXJ0OiAnbGluZS1jaGFydCc7XG4gIH1cbn1cbiJdfQ==","import { AXColorBoxModule } from '@acorex/components/color-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXGridLayoutWidgetComponent } from '@acorex/components/grid-layout-builder';\nimport { AXPopoverModule } from '@acorex/components/popover';\nimport { AXToolBarModule } from '@acorex/components/toolbar';\nimport { AXWysiwygModule } from '@acorex/components/wysiwyg';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, HostListener, computed, inject, signal, viewChild, } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/wysiwyg\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@acorex/core/format\";\nimport * as i4 from \"@angular/common\";\nexport class AXPStickyNoteWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n this.isEditing = signal(false);\n this.wysiwyg = viewChild('wysiwyg');\n this.value = computed(() => this.getValue());\n this.date = computed(() => this.options()?.date ?? new Date());\n this.bgColor = computed(() => this.options()?.backgroundColor ?? '#FFF8B8');\n this.color = signal('#333333');\n this.el = inject(ElementRef);\n // Modern color palette with pastel and vibrant options\n this.colorPresets = [\n '#FFF8B8', // Soft yellow\n '#FFD8E6', // Soft pink\n '#D1F0FF', // Soft blue\n '#E2FFD1', // Soft green\n '#FFE8D1', // Soft orange\n '#F0D1FF', // Soft purple\n '#FFCDD2', // Soft red\n '#D1FFF0', // Soft teal\n '#F5F5F5', // Light gray\n '#FFFFFF', // White\n ];\n }\n // Handle clicks outside the component to cancel editing\n handleClickOutside(event) {\n const clickedInside = this.el.nativeElement.contains(event.target);\n if (!clickedInside && this.isEditing()) {\n this.saveChanges();\n }\n }\n // Handle double-click to activate editing\n activateEdit() {\n //TODO FOCUS WYSIWYG\n this.wysiwyg()?.focus();\n this.isEditing.set(true);\n }\n // Save changes and exit edit mode\n saveChanges() {\n this.isEditing.set(false);\n }\n setColor(color) {\n this.setOptions({ backgroundColor: color });\n }\n valueChange(event) {\n if (event.isUserInteraction) {\n this.setValue(event.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPStickyNoteWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPStickyNoteWidgetViewComponent, isStandalone: true, selector: \"ng-component\", host: { listeners: { \"document:click\": \"handleClickOutside($event)\" } }, providers: [\n {\n provide: AXGridLayoutWidgetComponent,\n useExisting: AXPStickyNoteWidgetViewComponent,\n },\n ], viewQueries: [{ propertyName: \"wysiwyg\", first: true, predicate: [\"wysiwyg\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<div\\n class=\\\"sticky-note-container ax-size-full ax-rounded-lg ax-flex ax-flex-col ax-p-4 ax-shadow-md ax-transition-all ax-duration-300 hover:ax-shadow-lg\\\"\\n [style.background-color]=\\\"bgColor()\\\"\\n [style.color]=\\\"color()\\\"\\n [class.ax-shadow-lg]=\\\"isEditing()\\\"\\n [class.ax-scale-[1.02]]=\\\"isEditing()\\\"\\n (dblclick)=\\\"activateEdit()\\\"\\n>\\n <!-- Header with timestamp -->\\n <div class=\\\"ax-flex ax-justify-between ax-items-center ax-mb-3\\\">\\n <div class=\\\"ax-text-xs ax-opacity-70 ax-font-medium ax-flex ax-items-center ax-gap-1\\\">\\n <i class=\\\"fa-regular fa-clock ax-text-[0.65rem]\\\"></i>\\n {{ date() | format : 'datetime' : 'dd MMM, YY HH:mm' | async }}\\n </div>\\n </div>\\n\\n <!-- Content area -->\\n <div class=\\\"ax-flex-1 ax-overflow-auto\\\">\\n <ax-wysiwyg-container\\n #wysiwyg\\n [class]=\\\"isEditing() ? 'ax-pointer-events-auto ax-cursor-text' : 'ax-pointer-events-none !ax-cursor-pointer'\\\"\\n class=\\\"ax-h-full\\\"\\n placeHolder=\\\"start writing with double click...\\\"\\n look=\\\"none\\\"\\n (onValueChanged)=\\\"valueChange($event)\\\"\\n [ngModel]=\\\"value()\\\"\\n >\\n <ax-wysiwyg-view class=\\\"!ax-size-full ax-border-b-0\\\"></ax-wysiwyg-view>\\n </ax-wysiwyg-container>\\n </div>\\n\\n <!-- Footer with color selector and save button -->\\n @if (isEditing()) {\\n <div class=\\\"ax-absolute ax-bottom-2 ax-left-2 ax-right-2 ax-flex ax-flex-wrap ax-gap-1 ax-text-xs\\\">\\n <!-- Color selection bar when in edit mode -->\\n <div class=\\\"ax-flex ax-w-full ax-mt-2 ax-border ax-border-gray-200 ax-overflow-hidden ax-rounded-md\\\">\\n @for (preset of colorPresets; track preset) {\\n <div\\n class=\\\"ax-h-6 ax-flex-1 ax-cursor-pointer ax-transition-all ax-duration-200 ax-border-r ax-border-gray-200 last:ax-border-r-0 hover:ax-brightness-95\\\"\\n [style.background-color]=\\\"preset\\\"\\n [class.ax-ring-inset]=\\\"bgColor() === preset\\\"\\n [class.ax-ring-2]=\\\"bgColor() === preset\\\"\\n [class.ax-ring-primary]=\\\"bgColor() === preset\\\"\\n (click)=\\\"setColor(preset)\\\"\\n ></div>\\n }\\n </div>\\n </div>\\n }\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%}:host ::ng-deep ax-wysiwyg-view{color:#2e2e2e!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXWysiwygModule }, { kind: \"component\", type: i1.AXWysiwygContainerComponent, selector: \"ax-wysiwyg-container\", inputs: [\"look\", \"placeHolder\"], outputs: [\"onValueChanged\"] }, { kind: \"component\", type: i1.AXWysiwygViewComponent, selector: \"ax-wysiwyg-view\", inputs: [\"class\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXToolBarModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXDateTimeModule }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"pipe\", type: i3.AXFormatPipe, name: \"format\" }, { kind: \"ngmodule\", type: AXPopoverModule }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i4.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXColorBoxModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPStickyNoteWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, imports: [\n AXWysiwygModule,\n AXDecoratorModule,\n AXToolBarModule,\n FormsModule,\n AXDateTimeModule,\n AXFormatModule,\n AXPopoverModule,\n CommonModule,\n FormsModule,\n AXColorBoxModule,\n ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: AXGridLayoutWidgetComponent,\n useExisting: AXPStickyNoteWidgetViewComponent,\n },\n ], template: \"<div\\n class=\\\"sticky-note-container ax-size-full ax-rounded-lg ax-flex ax-flex-col ax-p-4 ax-shadow-md ax-transition-all ax-duration-300 hover:ax-shadow-lg\\\"\\n [style.background-color]=\\\"bgColor()\\\"\\n [style.color]=\\\"color()\\\"\\n [class.ax-shadow-lg]=\\\"isEditing()\\\"\\n [class.ax-scale-[1.02]]=\\\"isEditing()\\\"\\n (dblclick)=\\\"activateEdit()\\\"\\n>\\n <!-- Header with timestamp -->\\n <div class=\\\"ax-flex ax-justify-between ax-items-center ax-mb-3\\\">\\n <div class=\\\"ax-text-xs ax-opacity-70 ax-font-medium ax-flex ax-items-center ax-gap-1\\\">\\n <i class=\\\"fa-regular fa-clock ax-text-[0.65rem]\\\"></i>\\n {{ date() | format : 'datetime' : 'dd MMM, YY HH:mm' | async }}\\n </div>\\n </div>\\n\\n <!-- Content area -->\\n <div class=\\\"ax-flex-1 ax-overflow-auto\\\">\\n <ax-wysiwyg-container\\n #wysiwyg\\n [class]=\\\"isEditing() ? 'ax-pointer-events-auto ax-cursor-text' : 'ax-pointer-events-none !ax-cursor-pointer'\\\"\\n class=\\\"ax-h-full\\\"\\n placeHolder=\\\"start writing with double click...\\\"\\n look=\\\"none\\\"\\n (onValueChanged)=\\\"valueChange($event)\\\"\\n [ngModel]=\\\"value()\\\"\\n >\\n <ax-wysiwyg-view class=\\\"!ax-size-full ax-border-b-0\\\"></ax-wysiwyg-view>\\n </ax-wysiwyg-container>\\n </div>\\n\\n <!-- Footer with color selector and save button -->\\n @if (isEditing()) {\\n <div class=\\\"ax-absolute ax-bottom-2 ax-left-2 ax-right-2 ax-flex ax-flex-wrap ax-gap-1 ax-text-xs\\\">\\n <!-- Color selection bar when in edit mode -->\\n <div class=\\\"ax-flex ax-w-full ax-mt-2 ax-border ax-border-gray-200 ax-overflow-hidden ax-rounded-md\\\">\\n @for (preset of colorPresets; track preset) {\\n <div\\n class=\\\"ax-h-6 ax-flex-1 ax-cursor-pointer ax-transition-all ax-duration-200 ax-border-r ax-border-gray-200 last:ax-border-r-0 hover:ax-brightness-95\\\"\\n [style.background-color]=\\\"preset\\\"\\n [class.ax-ring-inset]=\\\"bgColor() === preset\\\"\\n [class.ax-ring-2]=\\\"bgColor() === preset\\\"\\n [class.ax-ring-primary]=\\\"bgColor() === preset\\\"\\n (click)=\\\"setColor(preset)\\\"\\n ></div>\\n }\\n </div>\\n </div>\\n }\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%}:host ::ng-deep ax-wysiwyg-view{color:#2e2e2e!important}\\n\"] }]\n }], propDecorators: { handleClickOutside: [{\n type: HostListener,\n args: ['document:click', ['$event']]\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LW5vdGUtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL3N0aWNreS1ub3RlL3N0aWNreS1ub3RlLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9zdGlja3ktbm90ZS9zdGlja3ktbm90ZS13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQStCLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFFWixRQUFRLEVBQ1Is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LGVBQWU7d0JBQ2YsV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZ0JBQWdCO3FCQUNqQixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsMkJBQTJCOzRCQUNwQyxXQUFXLGtDQUFrQzt5QkFDOUM7cUJBQ0Y7OEJBNEJELGtCQUFrQjtzQkFEakIsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29sb3JCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29sb3ItYm94JztcbmltcG9ydCB7IEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWEdyaWRMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZ3JpZC1sYXlvdXQtYnVpbGRlcic7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFRvb2xCYXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQsIEFYV3lzaXd5Z01vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy93eXNpd3lnJztcbmltcG9ydCB7IEFYRGF0ZVRpbWVNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvZGF0ZS10aW1lJztcbmltcG9ydCB7IEFYRm9ybWF0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25Jbml0LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9zdGlja3ktbm90ZS13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdGlja3ktbm90ZS13aWRnZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEFYV3lzaXd5Z01vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBBWFRvb2xCYXJNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQVhEYXRlVGltZU1vZHVsZSxcbiAgICBBWEZvcm1hdE1vZHVsZSxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEFYQ29sb3JCb3hNb2R1bGUsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWEdyaWRMYXlvdXRXaWRnZXRDb21wb25lbnQsXG4gICAgICB1c2VFeGlzdGluZzogQVhQU3RpY2t5Tm90ZVdpZGdldFZpZXdDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQU3RpY2t5Tm90ZVdpZGdldFZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxzdHJpbmc+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIGlzRWRpdGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgd3lzaXd5ZyA9IHZpZXdDaGlsZDxBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQ+KCd3eXNpd3lnJyk7XG4gIHByb3RlY3RlZCB2YWx1ZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZ2V0VmFsdWUoKSk7XG4gIHByb3RlY3RlZCBkYXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LmRhdGUgPz8gbmV3IERhdGUoKSk7XG4gIHByb3RlY3RlZCBiZ0NvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LmJhY2tncm91bmRDb2xvciA/PyAnI0ZGRjhCOCcpO1xuICBwcm90ZWN0ZWQgY29sb3IgPSBzaWduYWwoJyMzMzMzMzMnKTtcblxuICBwcml2YXRlIGVsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIC8vIE1vZGVybiBjb2xvciBwYWxldHRlIHdpdGggcGFzdGVsIGFuZCB2aWJyYW50IG9wdGlvbnNcbiAgcHJvdGVjdGVkIGNvbG9yUHJlc2V0czogc3RyaW5nW10gPSBbXG4gICAgJyNGRkY4QjgnLCAvLyBTb2Z0IHllbGxvd1xuICAgICcjRkZEOEU2JywgLy8gU29mdCBwaW5rXG4gICAgJyNEMUYwRkYnLCAvLyBTb2Z0IGJsdWVcbiAgICAnI0UyRkZEMScsIC8vIFNvZnQgZ3JlZW5cbiAgICAnI0ZGRThEMScsIC8vIFNvZnQgb3JhbmdlXG4gICAgJyNGMEQxRkYnLCAvLyBTb2Z0IHB1cnBsZVxuICAgICcjRkZDREQyJywgLy8gU29mdCByZWRcbiAgICAnI0QxRkZGMCcsIC8vIFNvZnQgdGVhbFxuICAgICcjRjVGNUY1JywgLy8gTGlnaHQgZ3JheVxuICAgICcjRkZGRkZGJywgLy8gV2hpdGVcbiAgXTtcblxuICAvLyBIYW5kbGUgY2xpY2tzIG91dHNpZGUgdGhlIGNvbXBvbmVudCB0byBjYW5jZWwgZWRpdGluZ1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xuICAgIGNvbnN0IGNsaWNrZWRJbnNpZGUgPSAodGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSk7XG4gICAgaWYgKCFjbGlja2VkSW5zaWRlICYmIHRoaXMuaXNFZGl0aW5nKCkpIHtcbiAgICAgIHRoaXMuc2F2ZUNoYW5nZXMoKTtcbiAgICB9XG4gIH1cblxuICAvLyBIYW5kbGUgZG91YmxlLWNsaWNrIHRvIGFjdGl2YXRlIGVkaXRpbmdcbiAgcHJvdGVjdGVkIGFjdGl2YXRlRWRpdCgpIHtcbiAgICAvL1RPRE8gRk9DVVMgV1lTSVdZR1xuICAgIHRoaXMud3lzaXd5ZygpPy5mb2N1cygpO1xuICAgIHRoaXMuaXNFZGl0aW5nLnNldCh0cnVlKTtcbiAgfVxuXG4gIC8vIFNhdmUgY2hhbmdlcyBhbmQgZXhpdCBlZGl0IG1vZGVcbiAgcHJvdGVjdGVkIHNhdmVDaGFuZ2VzKCkge1xuICAgIHRoaXMuaXNFZGl0aW5nLnNldChmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgIHRoaXMuc2V0T3B0aW9ucyh7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsdWVDaGFuZ2UoZXZlbnQ6IEFYVmFsdWVDaGFuZ2VkRXZlbnQ8YW55Pikge1xuICAgIGlmIChldmVudC5pc1VzZXJJbnRlcmFjdGlvbikge1xuICAgICAgdGhpcy5zZXRWYWx1ZShldmVudC52YWx1ZSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic3RpY2t5LW5vdGUtY29udGFpbmVyIGF4LXNpemUtZnVsbCBheC1yb3VuZGVkLWxnIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtcC00IGF4LXNoYWRvdy1tZCBheC10cmFuc2l0aW9uLWFsbCBheC1kdXJhdGlvbi0zMDAgaG92ZXI6YXgtc2hhZG93LWxnXCJcbiAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmdDb2xvcigpXCJcbiAgW3N0eWxlLmNvbG9yXT1cImNvbG9yKClcIlxuICBbY2xhc3MuYXgtc2hhZG93LWxnXT1cImlzRWRpdGluZygpXCJcbiAgW2NsYXNzLmF4LXNjYWxlLVsxLjAyXV09XCJpc0VkaXRpbmcoKVwiXG4gIChkYmxjbGljayk9XCJhY3RpdmF0ZUVkaXQoKVwiXG4+XG4gIDwhLS0gSGVhZGVyIHdpdGggdGltZXN0YW1wIC0tPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtY2VudGVyIGF4LW1iLTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtdGV4dC14cyBheC1vcGFjaXR5LTcwIGF4LWZvbnQtbWVkaXVtIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0xXCI+XG4gICAgICA8aSBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtY2xvY2sgYXgtdGV4dC1bMC42NXJlbV1cIj48L2k+XG4gICAgICB7eyBkYXRlKCkgfCBmb3JtYXQgOiAnZGF0ZXRpbWUnIDogJ2RkIE1NTSwgWVkgSEg6bW0nIHwgYXN5bmMgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBDb250ZW50IGFyZWEgLS0+XG4gIDxkaXYgY2xhc3M9XCJheC1mbGV4LTEgYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgIDxheC13eXNpd3lnLWNvbnRhaW5lclxuICAgICAgI3d5c2l3eWdcbiAgICAgIFtjbGFzc109XCJpc0VkaXRpbmcoKSA/ICdheC1wb2ludGVyLWV2ZW50cy1hdXRvIGF4LWN1cnNvci10ZXh0JyA6ICdheC1wb2ludGVyLWV2ZW50cy1ub25lICFheC1jdXJzb3ItcG9pbnRlcidcIlxuICAgICAgY2xhc3M9XCJheC1oLWZ1bGxcIlxuICAgICAgcGxhY2VIb2xkZXI9XCJzdGFydCB3cml0aW5nIHdpdGggZG91YmxlIGNsaWNrLi4uXCJcbiAgICAgIGxvb2s9XCJub25lXCJcbiAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJ2YWx1ZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtuZ01vZGVsXT1cInZhbHVlKClcIlxuICAgID5cbiAgICAgIDxheC13eXNpd3lnLXZpZXcgY2xhc3M9XCIhYXgtc2l6ZS1mdWxsIGF4LWJvcmRlci1iLTBcIj48L2F4LXd5c2l3eWctdmlldz5cbiAgICA8L2F4LXd5c2l3eWctY29udGFpbmVyPlxuICA8L2Rpdj5cblxuICA8IS0tIEZvb3RlciB3aXRoIGNvbG9yIHNlbGVjdG9yIGFuZCBzYXZlIGJ1dHRvbiAtLT5cbiAgQGlmIChpc0VkaXRpbmcoKSkge1xuICA8ZGl2IGNsYXNzPVwiYXgtYWJzb2x1dGUgYXgtYm90dG9tLTIgYXgtbGVmdC0yIGF4LXJpZ2h0LTIgYXgtZmxleCBheC1mbGV4LXdyYXAgYXgtZ2FwLTEgYXgtdGV4dC14c1wiPlxuICAgIDwhLS0gQ29sb3Igc2VsZWN0aW9uIGJhciB3aGVuIGluIGVkaXQgbW9kZSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC13LWZ1bGwgYXgtbXQtMiBheC1ib3JkZXIgYXgtYm9yZGVyLWdyYXktMjAwIGF4LW92ZXJmbG93LWhpZGRlbiBheC1yb3VuZGVkLW1kXCI+XG4gICAgICBAZm9yIChwcmVzZXQgb2YgY29sb3JQcmVzZXRzOyB0cmFjayBwcmVzZXQpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJheC1oLTYgYXgtZmxleC0xIGF4LWN1cnNvci1wb2ludGVyIGF4LXRyYW5zaXRpb24tYWxsIGF4LWR1cmF0aW9uLTIwMCBheC1ib3JkZXItciBheC1ib3JkZXItZ3JheS0yMDAgbGFzdDpheC1ib3JkZXItci0wIGhvdmVyOmF4LWJyaWdodG5lc3MtOTVcIlxuICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJwcmVzZXRcIlxuICAgICAgICBbY2xhc3MuYXgtcmluZy1pbnNldF09XCJiZ0NvbG9yKCkgPT09IHByZXNldFwiXG4gICAgICAgIFtjbGFzcy5heC1yaW5nLTJdPVwiYmdDb2xvcigpID09PSBwcmVzZXRcIlxuICAgICAgICBbY2xhc3MuYXgtcmluZy1wcmltYXJ5XT1cImJnQ29sb3IoKSA9PT0gcHJlc2V0XCJcbiAgICAgICAgKGNsaWNrKT1cInNldENvbG9yKHByZXNldClcIlxuICAgICAgPjwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=","import { AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY, plainTextDefaultProperty } from '@acorex/platform/widgets';\nimport { AXP_BG_COLOR_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nexport const AXPStickyNoteWidget = {\n name: 'sticky-note',\n title: 'Sticky Note Widget',\n categories: AXP_WIDGETS_UTILITY_CATEGORY,\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-sticky-note',\n properties: [\n AXP_DATA_PATH_PROPERTY,\n {\n ...AXP_BG_COLOR_PROPERTY,\n title: '@dashboard:widgets.sticky-note.background-color',\n },\n {\n ...plainTextDefaultProperty(),\n title: '@dashboard:widgets.sticky-note.note-text',\n },\n ],\n components: {\n view: {\n component: () => import('./sticky-note-widget.component').then((c) => c.AXPStickyNoteWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 2,\n height: 3,\n minWidth: 2,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 4,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LW5vdGUtd2lkZ2V0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL3N0aWNreS1ub3RlL3N0aWNreS1ub3RlLXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBb0I7SUFDbEQsSUFBSSxFQUFFLGFBQWE7SUFDbkIsS0FBSyxFQUFFLG9CQUFvQjtJQUMzQixVQUFVLEVBQUUsNEJBQTRCO0lBQ3hDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQztJQUM1QyxJQUFJLEVBQUUsV0FBVztJQUNqQixJQUFJLEVBQUUseUJBQXlCO0lBQy9CLFVBQVUsRUFBRTtRQUNWLHNCQUFzQjtRQUN0QjtZQUNFLEdBQUcscUJBQXFCO1lBQ3hCLEtBQUssRUFBRSxpREFBaUQ7U0FDekQ7UUFDRDtZQUNFLEdBQUcsd0JBQXdCLEVBQUU7WUFDN0IsS0FBSyxFQUFFLDBDQUEwQztTQUNsRDtLQUNGO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO1NBQzFHO0tBQ0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBQ1QsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztZQUNaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7U0FDYjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0R3JvdXBFbnVtIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBWFBfREFUQV9QQVRIX1BST1BFUlRZLCBwbGFpblRleHREZWZhdWx0UHJvcGVydHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dpZGdldHMnO1xuaW1wb3J0IHsgQVhQX0JHX0NPTE9SX1BST1BFUlRZIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcbmltcG9ydCB7IEFYUF9XSURHRVRTX1VUSUxJVFlfQ0FURUdPUlkgfSBmcm9tICcuLi9jaGFydC50eXBlJztcblxuZXhwb3J0IGNvbnN0IEFYUFN0aWNreU5vdGVXaWRnZXQ6IEFYUFdpZGdldENvbmZpZyA9IHtcbiAgbmFtZTogJ3N0aWNreS1ub3RlJyxcbiAgdGl0bGU6ICdTdGlja3kgTm90ZSBXaWRnZXQnLFxuICBjYXRlZ29yaWVzOiBBWFBfV0lER0VUU19VVElMSVRZX0NBVEVHT1JZLFxuICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRGFzaGJvYXJkV2lkZ2V0XSxcbiAgdHlwZTogJ2Rhc2hib2FyZCcsXG4gIGljb246ICdmYS1saWdodCBmYS1zdGlja3ktbm90ZScsXG4gIHByb3BlcnRpZXM6IFtcbiAgICBBWFBfREFUQV9QQVRIX1BST1BFUlRZLFxuICAgIHtcbiAgICAgIC4uLkFYUF9CR19DT0xPUl9QUk9QRVJUWSxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLnN0aWNreS1ub3RlLmJhY2tncm91bmQtY29sb3InLFxuICAgIH0sXG4gICAge1xuICAgICAgLi4ucGxhaW5UZXh0RGVmYXVsdFByb3BlcnR5KCksXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy5zdGlja3ktbm90ZS5ub3RlLXRleHQnLFxuICAgIH0sXG4gIF0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB2aWV3OiB7XG4gICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9zdGlja3ktbm90ZS13aWRnZXQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWFBTdGlja3lOb3RlV2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbiAgbWV0YToge1xuICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiAyLFxuICAgICAgaGVpZ2h0OiAzLFxuICAgICAgbWluV2lkdGg6IDIsXG4gICAgICBtaW5IZWlnaHQ6IDIsXG4gICAgICBtYXhXaWR0aDogNCxcbiAgICAgIG1heEhlaWdodDogNCxcbiAgICB9LFxuICB9LFxufTtcblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInIHtcbiAgaW50ZXJmYWNlIEFYUFdpZGdldFR5cGVzTWFwIHtcbiAgICBzdGlja3lOb3RlOiAnc3RpY2t5LW5vdGUnO1xuICB9XG59XG4iXX0=","import { AXAvatarModule } from '@acorex/components/avatar';\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXCheckBoxModule } from '@acorex/components/check-box';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXImageModule } from '@acorex/components/image';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXTabsModule } from '@acorex/components/tabs';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule, DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/badge\";\nimport * as i4 from \"@acorex/components/check-box\";\nimport * as i5 from \"@acorex/core/translation\";\n/**\n * Task List Widget Component\n * Displays a list of tasks with checkboxes and filtering options\n */\nexport class AXPTaskListWidgetViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n // Outputs\n this.taskClick = output();\n this.taskCompleted = output();\n // Dependencies\n this.cdr = inject(ChangeDetectorRef);\n this.datePipe = inject(DatePipe);\n // Configuration options\n this.maxItems = computed(() => this.options()?.maxItems ?? 10);\n this.showDate = computed(() => this.options()?.showDate ?? true);\n this.showAssignee = computed(() => this.options()?.showAssignee ?? true);\n this.showPriority = computed(() => this.options()?.showPriority ?? true);\n this.allowMarkComplete = computed(() => this.options()?.allowMarkComplete ?? true);\n this.showCategories = computed(() => this.options()?.groupByCategory ?? true);\n // Data computed properties\n this.taskItems = computed(() => {\n const value = this.getValue();\n if (!value?.data?.length)\n return [];\n return value.data.slice(0, this.maxItems());\n });\n }\n // Task counting methods\n getPendingTaskCount() {\n return this.getFilteredTasks((task) => !task.completed).length;\n }\n getCompletedTaskCount() {\n return this.getFilteredTasks((task) => task.completed).length;\n }\n // Category-related methods\n hasCategories() {\n return this.taskItems().some((task) => !!task.category);\n }\n getCategories() {\n const tasks = this.taskItems();\n const categories = new Set();\n let hasUncategorized = false;\n tasks.forEach((task) => {\n if (task.category) {\n categories.add(task.category);\n }\n else {\n hasUncategorized = true;\n }\n });\n const result = Array.from(categories);\n if (hasUncategorized) {\n result.push('Uncategorized');\n }\n return result;\n }\n getTasksByCategory(category) {\n const tasks = this.taskItems();\n if (category === 'Uncategorized') {\n return tasks.filter((task) => !task.category);\n }\n return tasks.filter((task) => task.category === category);\n }\n getCategoryTaskCount(category) {\n return this.getTasksByCategory(category).filter((task) => !task.completed).length;\n }\n // Event handlers\n onTaskClick(task) {\n this.taskClick.emit(task);\n }\n onTaskCompletionChange(task, isCompleted) {\n const updatedTask = { ...task, completed: isCompleted };\n const value = this.getValue();\n if (!value?.data)\n return;\n const updatedTasks = value.data.map((t) => (t.id === task.id ? updatedTask : t));\n this.setValue({ ...value, data: updatedTasks });\n this.taskCompleted.emit(updatedTask);\n this.cdr.detectChanges();\n }\n // Formatting and utility methods\n formatDueDate(date) {\n if (!date)\n return '';\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n const diffDays = this.getDaysDifference(dateObj);\n if (diffDays < 0)\n return 'Overdue!';\n if (diffDays === 0)\n return 'Today';\n if (diffDays === 1)\n return 'Tomorrow';\n if (diffDays < 7)\n return this.datePipe.transform(dateObj, 'EEE') || '';\n return this.datePipe.transform(dateObj, 'MM/DD/yyyy') || '';\n }\n getPriorityColor(priority) {\n if (!priority)\n return '';\n const priorityColors = {\n high: 'danger',\n medium: 'warning',\n low: 'success',\n };\n return priorityColors[priority] || '';\n }\n // Helper methods\n getFilteredTasks(filterFn) {\n const value = this.getValue();\n if (!value?.data?.length)\n return [];\n return value.data.filter(filterFn);\n }\n getDaysDifference(date) {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n const targetDate = new Date(date);\n targetDate.setHours(0, 0, 0, 0);\n const diffMs = targetDate.getTime() - now.getTime();\n return Math.floor(diffMs / (1000 * 60 * 60 * 24));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPTaskListWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPTaskListWidgetViewComponent, isStandalone: true, selector: \"ng-component\", outputs: { taskClick: \"taskClick\", taskCompleted: \"taskCompleted\" }, providers: [DatePipe], usesInheritance: true, ngImport: i0, template: \"<div class=\\\"ax-size-full ax-p-4 ax-flex ax-flex-col\\\">\\n <!-- Header -->\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <h3 class=\\\"ax-text-lg ax-font-semibold ax-flex ax-items-center ax-gap-2\\\">\\n <ax-icon class=\\\"ax-text-primary-500\\\">\\n <i class=\\\"fa-light fa-clipboard-list-check\\\"></i>\\n </ax-icon>\\n {{ 'tasklist.title' | translate: { scope: 'dashboard' } | async }}\\n </h3>\\n <div class=\\\"ax-flex ax-gap-2\\\">\\n @if (getPendingTaskCount() > 0) {\\n <ax-badge\\n [text]=\\\"getPendingTaskCount() + ' ' + ('tasklist.pending' | translate: { scope: 'dashboard' } | async)\\\"\\n [color]=\\\"'warning'\\\"\\n size=\\\"sm\\\"\\n class=\\\"ax-ml-1\\\"\\n >\\n </ax-badge>\\n }\\n @if (getCompletedTaskCount() > 0) {\\n <ax-badge\\n [text]=\\\"getCompletedTaskCount() + ' ' + ('tasklist.completed' | translate: { scope: 'dashboard' } | async)\\\"\\n [color]=\\\"'success'\\\"\\n size=\\\"sm\\\"\\n class=\\\"ax-ml-1\\\"\\n >\\n </ax-badge>\\n }\\n </div>\\n </div>\\n\\n <!-- Task List -->\\n <div class=\\\"ax-space-y-4 ax-my-4 ax-px-1 ax-overflow-auto ax-grow\\\">\\n @if (showCategories() && hasCategories()) {\\n <!-- Categorized Tasks -->\\n @for (category of getCategories(); track category) {\\n <div class=\\\"ax-mb-5\\\">\\n <!-- Category Header -->\\n <div class=\\\"ax-flex ax-justify-between ax-items-center ax-mb-3 ax-h-5\\\">\\n <h4 class=\\\"ax-font-medium category-header\\\">{{ category }}</h4>\\n @if (getCategoryTaskCount(category)) {\\n <ax-badge\\n [text]=\\\"getCategoryTaskCount(category).toString()\\\"\\n [color]=\\\"'primary'\\\"\\n size=\\\"sm\\\"\\n class=\\\"ax-rounded-full\\\"\\n ></ax-badge>\\n }\\n </div>\\n <!-- Tasks in Category -->\\n <div class=\\\"ax-space-y-2\\\">\\n @for (task of getTasksByCategory(category); track task.id) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"taskItemTemplateRef\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: task }\\\"\\n ></ng-container>\\n }\\n </div>\\n </div>\\n }\\n } @else {\\n <!-- Uncategorized Tasks -->\\n <div class=\\\"ax-space-y-2\\\">\\n @for (task of taskItems(); track task.id) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"taskItemTemplateRef\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: task }\\\"\\n ></ng-container>\\n } @empty {\\n <!-- Empty State -->\\n <div\\n class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-14 ax-px-4 ax-text-gray-400 empty-state\\\"\\n >\\n <ax-icon class=\\\"ax-text-5xl ax-mb-3 ax-text-gray-300\\\">\\n <i class=\\\"fa-light fa-clipboard-list-check\\\"></i>\\n </ax-icon>\\n <p class=\\\"ax-text-center ax-font-medium\\\">\\n {{ 'tasklist.noTasks' | translate: { scope: 'dashboard' } | async }}\\n </p>\\n <p class=\\\"ax-text-center ax-text-sm ax-mt-2\\\">\\n {{ 'tasklist.addTask' | translate: { scope: 'dashboard' } | async }}\\n </p>\\n </div>\\n }\\n </div>\\n }\\n </div>\\n</div>\\n\\n<!-- Task Item Template -->\\n<ng-template #taskItemTemplateRef let-task>\\n <div\\n class=\\\"ax-flex ax-gap-3 ax-items-start ax-p-3 task-item\\\"\\n [class.priority-high]=\\\"task.priority === 'high'\\\"\\n [class.priority-medium]=\\\"task.priority === 'medium'\\\"\\n [class.priority-low]=\\\"task.priority === 'low'\\\"\\n >\\n <!-- Checkbox -->\\n <ax-check-box\\n class=\\\"ax-flex-shrink-0 ax-mt-1 task-checkbox\\\"\\n [value]=\\\"task.completed\\\"\\n [disabled]=\\\"!allowMarkComplete()\\\"\\n (valueChange)=\\\"onTaskCompletionChange(task, $event)\\\"\\n >\\n </ax-check-box>\\n\\n <!-- Task Details -->\\n <div class=\\\"ax-overflow-hidden ax-grow ax-text-start\\\" (click)=\\\"onTaskClick(task)\\\">\\n <!-- Title and Priority -->\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n <h6 class=\\\"ax-font-medium ax-truncate ax-pb-1\\\" [title]=\\\"task.title\\\" [class.task-completed]=\\\"task.completed\\\">\\n {{ task.title }}\\n </h6>\\n @if (showPriority() && task.priority) {\\n <ax-badge\\n [color]=\\\"getPriorityColor(task.priority)\\\"\\n [text]=\\\"task.priority\\\"\\n size=\\\"sm\\\"\\n class=\\\"ax-ml-1 ax-rounded-full\\\"\\n ></ax-badge>\\n }\\n </div>\\n\\n <!-- Metadata -->\\n <div class=\\\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-2 ax-text-xs ax-text-gray-500\\\">\\n @if (showDate() && task.dueDate) {\\n <span\\n class=\\\"ax-flex ax-items-center ax-gap-1 due-date\\\"\\n [class.ax-text-danger-500]=\\\"getDaysDifference(task.dueDate) < 0\\\"\\n [class.overdue]=\\\"getDaysDifference(task.dueDate) < 0\\\"\\n >\\n <ax-icon><i class=\\\"fa-light fa-calendar\\\"></i></ax-icon>\\n {{ formatDueDate(task.dueDate) }}\\n </span>\\n }\\n @if (showAssignee() && task.assignedTo) {\\n <span class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (task.assignedTo.image) {\\n <ax-icon class=\\\"ax-bg-primary-100 ax-text-primary-500 ax-rounded-full ax-p-1\\\">\\n <i class=\\\"fa-light fa-user\\\"></i>\\n </ax-icon>\\n } @else {\\n <ax-icon><i class=\\\"fa-light fa-user\\\"></i></ax-icon>\\n }\\n {{ task.assignedTo.name }}\\n </span>\\n }\\n </div>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\":host{display:block;height:100%;width:100%}.task-item{transition:all .2s ease-in-out;border-left:3px solid transparent}.task-item:hover{background-color:rgba(var(--ax-sys-color-on-surface),.1);transform:translateY(-2px);box-shadow:0 2px 8px rgba(0,0,0,.05)}.task-item.priority-high{border-left-color:rgb(var(--ax-sys-color-danger-500))}.task-item.priority-medium{border-left-color:rgb(var(--ax-sys-color-warning-500))}.task-item.priority-low{border-left-color:rgb(var(--ax-sys-color-success-500))}.task-item:active{transform:translateY(0);box-shadow:0 1px 3px rgba(0,0,0,.05)}.task-completed{text-decoration:line-through;color:var(--ax-text-secondary);opacity:.7;transition:all .3s ease}.category-header{position:relative}.category-header:after{content:\\\"\\\";position:absolute;bottom:-8px;left:0;width:40px;height:3px;background-color:var(--ax-primary-500);border-radius:3px;transition:width .3s ease}.category-header:hover:after{width:60px}.empty-state{animation:fadeIn .5s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.task-checkbox ::ng-deep .ax-checkbox{transition:all .2s ease}.task-checkbox ::ng-deep .ax-checkbox:hover{transform:scale(1.1)}.due-date.overdue{animation:pulse 2s infinite}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}.ax-space-y-2>*{animation:slideInRight .3s ease forwards;opacity:0}.ax-space-y-2>*:nth-child(1){animation-delay:.05s}.ax-space-y-2>*:nth-child(2){animation-delay:.1s}.ax-space-y-2>*:nth-child(3){animation-delay:.15s}.ax-space-y-2>*:nth-child(4){animation-delay:.2s}.ax-space-y-2>*:nth-child(5){animation-delay:.25s}.ax-space-y-2>*:nth-child(6){animation-delay:.3s}.ax-space-y-2>*:nth-child(7){animation-delay:.35s}.ax-space-y-2>*:nth-child(8){animation-delay:.4s}.ax-space-y-2>*:nth-child(9){animation-delay:.45s}.ax-space-y-2>*:nth-child(10){animation-delay:.5s}@keyframes slideInRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXTabsModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"ngmodule\", type: AXBadgeModule }, { kind: \"component\", type: i3.AXBadgeComponent, selector: \"ax-badge\", inputs: [\"color\", \"text\", \"look\"] }, { kind: \"ngmodule\", type: AXAvatarModule }, { kind: \"ngmodule\", type: AXImageModule }, { kind: \"ngmodule\", type: AXCheckBoxModule }, { kind: \"component\", type: i4.AXCheckBoxComponent, selector: \"ax-check-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"color\", \"value\", \"name\", \"id\", \"checked\", \"indeterminate\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i5.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPTaskListWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, imports: [\n CommonModule,\n AXTabsModule,\n AXDecoratorModule,\n AXButtonModule,\n AXBadgeModule,\n AXAvatarModule,\n AXImageModule,\n AXCheckBoxModule,\n AXLabelModule,\n AXTranslationModule,\n ], providers: [DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<div class=\\\"ax-size-full ax-p-4 ax-flex ax-flex-col\\\">\\n <!-- Header -->\\n <div class=\\\"ax-flex ax-justify-between ax-items-center\\\">\\n <h3 class=\\\"ax-text-lg ax-font-semibold ax-flex ax-items-center ax-gap-2\\\">\\n <ax-icon class=\\\"ax-text-primary-500\\\">\\n <i class=\\\"fa-light fa-clipboard-list-check\\\"></i>\\n </ax-icon>\\n {{ 'tasklist.title' | translate: { scope: 'dashboard' } | async }}\\n </h3>\\n <div class=\\\"ax-flex ax-gap-2\\\">\\n @if (getPendingTaskCount() > 0) {\\n <ax-badge\\n [text]=\\\"getPendingTaskCount() + ' ' + ('tasklist.pending' | translate: { scope: 'dashboard' } | async)\\\"\\n [color]=\\\"'warning'\\\"\\n size=\\\"sm\\\"\\n class=\\\"ax-ml-1\\\"\\n >\\n </ax-badge>\\n }\\n @if (getCompletedTaskCount() > 0) {\\n <ax-badge\\n [text]=\\\"getCompletedTaskCount() + ' ' + ('tasklist.completed' | translate: { scope: 'dashboard' } | async)\\\"\\n [color]=\\\"'success'\\\"\\n size=\\\"sm\\\"\\n class=\\\"ax-ml-1\\\"\\n >\\n </ax-badge>\\n }\\n </div>\\n </div>\\n\\n <!-- Task List -->\\n <div class=\\\"ax-space-y-4 ax-my-4 ax-px-1 ax-overflow-auto ax-grow\\\">\\n @if (showCategories() && hasCategories()) {\\n <!-- Categorized Tasks -->\\n @for (category of getCategories(); track category) {\\n <div class=\\\"ax-mb-5\\\">\\n <!-- Category Header -->\\n <div class=\\\"ax-flex ax-justify-between ax-items-center ax-mb-3 ax-h-5\\\">\\n <h4 class=\\\"ax-font-medium category-header\\\">{{ category }}</h4>\\n @if (getCategoryTaskCount(category)) {\\n <ax-badge\\n [text]=\\\"getCategoryTaskCount(category).toString()\\\"\\n [color]=\\\"'primary'\\\"\\n size=\\\"sm\\\"\\n class=\\\"ax-rounded-full\\\"\\n ></ax-badge>\\n }\\n </div>\\n <!-- Tasks in Category -->\\n <div class=\\\"ax-space-y-2\\\">\\n @for (task of getTasksByCategory(category); track task.id) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"taskItemTemplateRef\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: task }\\\"\\n ></ng-container>\\n }\\n </div>\\n </div>\\n }\\n } @else {\\n <!-- Uncategorized Tasks -->\\n <div class=\\\"ax-space-y-2\\\">\\n @for (task of taskItems(); track task.id) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"taskItemTemplateRef\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: task }\\\"\\n ></ng-container>\\n } @empty {\\n <!-- Empty State -->\\n <div\\n class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-py-14 ax-px-4 ax-text-gray-400 empty-state\\\"\\n >\\n <ax-icon class=\\\"ax-text-5xl ax-mb-3 ax-text-gray-300\\\">\\n <i class=\\\"fa-light fa-clipboard-list-check\\\"></i>\\n </ax-icon>\\n <p class=\\\"ax-text-center ax-font-medium\\\">\\n {{ 'tasklist.noTasks' | translate: { scope: 'dashboard' } | async }}\\n </p>\\n <p class=\\\"ax-text-center ax-text-sm ax-mt-2\\\">\\n {{ 'tasklist.addTask' | translate: { scope: 'dashboard' } | async }}\\n </p>\\n </div>\\n }\\n </div>\\n }\\n </div>\\n</div>\\n\\n<!-- Task Item Template -->\\n<ng-template #taskItemTemplateRef let-task>\\n <div\\n class=\\\"ax-flex ax-gap-3 ax-items-start ax-p-3 task-item\\\"\\n [class.priority-high]=\\\"task.priority === 'high'\\\"\\n [class.priority-medium]=\\\"task.priority === 'medium'\\\"\\n [class.priority-low]=\\\"task.priority === 'low'\\\"\\n >\\n <!-- Checkbox -->\\n <ax-check-box\\n class=\\\"ax-flex-shrink-0 ax-mt-1 task-checkbox\\\"\\n [value]=\\\"task.completed\\\"\\n [disabled]=\\\"!allowMarkComplete()\\\"\\n (valueChange)=\\\"onTaskCompletionChange(task, $event)\\\"\\n >\\n </ax-check-box>\\n\\n <!-- Task Details -->\\n <div class=\\\"ax-overflow-hidden ax-grow ax-text-start\\\" (click)=\\\"onTaskClick(task)\\\">\\n <!-- Title and Priority -->\\n <div class=\\\"ax-flex ax-items-center ax-gap-2\\\">\\n <h6 class=\\\"ax-font-medium ax-truncate ax-pb-1\\\" [title]=\\\"task.title\\\" [class.task-completed]=\\\"task.completed\\\">\\n {{ task.title }}\\n </h6>\\n @if (showPriority() && task.priority) {\\n <ax-badge\\n [color]=\\\"getPriorityColor(task.priority)\\\"\\n [text]=\\\"task.priority\\\"\\n size=\\\"sm\\\"\\n class=\\\"ax-ml-1 ax-rounded-full\\\"\\n ></ax-badge>\\n }\\n </div>\\n\\n <!-- Metadata -->\\n <div class=\\\"ax-flex ax-flex-wrap ax-gap-x-3 ax-gap-y-1 ax-mt-2 ax-text-xs ax-text-gray-500\\\">\\n @if (showDate() && task.dueDate) {\\n <span\\n class=\\\"ax-flex ax-items-center ax-gap-1 due-date\\\"\\n [class.ax-text-danger-500]=\\\"getDaysDifference(task.dueDate) < 0\\\"\\n [class.overdue]=\\\"getDaysDifference(task.dueDate) < 0\\\"\\n >\\n <ax-icon><i class=\\\"fa-light fa-calendar\\\"></i></ax-icon>\\n {{ formatDueDate(task.dueDate) }}\\n </span>\\n }\\n @if (showAssignee() && task.assignedTo) {\\n <span class=\\\"ax-flex ax-items-center ax-gap-1\\\">\\n @if (task.assignedTo.image) {\\n <ax-icon class=\\\"ax-bg-primary-100 ax-text-primary-500 ax-rounded-full ax-p-1\\\">\\n <i class=\\\"fa-light fa-user\\\"></i>\\n </ax-icon>\\n } @else {\\n <ax-icon><i class=\\\"fa-light fa-user\\\"></i></ax-icon>\\n }\\n {{ task.assignedTo.name }}\\n </span>\\n }\\n </div>\\n </div>\\n </div>\\n</ng-template>\\n\", styles: [\":host{display:block;height:100%;width:100%}.task-item{transition:all .2s ease-in-out;border-left:3px solid transparent}.task-item:hover{background-color:rgba(var(--ax-sys-color-on-surface),.1);transform:translateY(-2px);box-shadow:0 2px 8px rgba(0,0,0,.05)}.task-item.priority-high{border-left-color:rgb(var(--ax-sys-color-danger-500))}.task-item.priority-medium{border-left-color:rgb(var(--ax-sys-color-warning-500))}.task-item.priority-low{border-left-color:rgb(var(--ax-sys-color-success-500))}.task-item:active{transform:translateY(0);box-shadow:0 1px 3px rgba(0,0,0,.05)}.task-completed{text-decoration:line-through;color:var(--ax-text-secondary);opacity:.7;transition:all .3s ease}.category-header{position:relative}.category-header:after{content:\\\"\\\";position:absolute;bottom:-8px;left:0;width:40px;height:3px;background-color:var(--ax-primary-500);border-radius:3px;transition:width .3s ease}.category-header:hover:after{width:60px}.empty-state{animation:fadeIn .5s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.task-checkbox ::ng-deep .ax-checkbox{transition:all .2s ease}.task-checkbox ::ng-deep .ax-checkbox:hover{transform:scale(1.1)}.due-date.overdue{animation:pulse 2s infinite}@keyframes pulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}.ax-space-y-2>*{animation:slideInRight .3s ease forwards;opacity:0}.ax-space-y-2>*:nth-child(1){animation-delay:.05s}.ax-space-y-2>*:nth-child(2){animation-delay:.1s}.ax-space-y-2>*:nth-child(3){animation-delay:.15s}.ax-space-y-2>*:nth-child(4){animation-delay:.2s}.ax-space-y-2>*:nth-child(5){animation-delay:.25s}.ax-space-y-2>*:nth-child(6){animation-delay:.3s}.ax-space-y-2>*:nth-child(7){animation-delay:.35s}.ax-space-y-2>*:nth-child(8){animation-delay:.4s}.ax-space-y-2>*:nth-child(9){animation-delay:.45s}.ax-space-y-2>*:nth-child(10){animation-delay:.5s}@keyframes slideInRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2xpc3Qtd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL3Rhc2tsaXN0L3Rhc2tsaXN0LXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy90YXNrbGlzdC90YXNrbGlzdC13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlC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QUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDOzhHQXJJVSw4QkFBOEI7a0dBQTlCLDhCQUE4QixnSUFIOUIsQ0FBQyxRQUFRLENBQUMsaURDbEN2QixzbUxBdUpBLDgrRERoSUksWUFBWSwwUEFDWixZQUFZLDhCQUNaLGlCQUFpQiwrSEFDakIsY0FBYyw4QkFDZCxhQUFhLHlJQUNiLGNBQWMsOEJBQ2QsYUFBYSw4QkFDYixnQkFBZ0Isd1JBQ2hCLGFBQWEsOEJBQ2IsbUJBQW1COzsyRkFLViw4QkFBOEI7a0JBbkIxQyxTQUFTO2lDQUdJLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLFlBQVk7d0JBQ1osaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixtQkFBbUI7cUJBQ3BCLGFBQ1UsQ0FBQyxRQUFRLENBQUMsbUJBQ0osdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQXZhdGFyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2F2YXRhcic7XG5pbXBvcnQgeyBBWEJhZGdlTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWENoZWNrQm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NoZWNrLWJveCc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYSW1hZ2VNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvaW1hZ2UnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFRhc2tEYXRhLCBBWFBUYXNrTGlzdFZhbHVlIH0gZnJvbSAnLi90YXNrbGlzdC50eXBlJztcblxuLyoqXG4gKiBUYXNrIExpc3QgV2lkZ2V0IENvbXBvbmVudFxuICogRGlzcGxheXMgYSBsaXN0IG9mIHRhc2tzIHdpdGggY2hlY2tib3hlcyBhbmQgZmlsdGVyaW5nIG9wdGlvbnNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi90YXNrbGlzdC13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YXNrbGlzdC13aWRnZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBBWFRhYnNNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhCYWRnZU1vZHVsZSxcbiAgICBBWEF2YXRhck1vZHVsZSxcbiAgICBBWEltYWdlTW9kdWxlLFxuICAgIEFYQ2hlY2tCb3hNb2R1bGUsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWFRyYW5zbGF0aW9uTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtEYXRlUGlwZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBUYXNrTGlzdFdpZGdldFZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxBWFBUYXNrTGlzdFZhbHVlPiB7XG4gIC8vIE91dHB1dHNcbiAgdGFza0NsaWNrID0gb3V0cHV0PEFYUFRhc2tEYXRhPigpO1xuICB0YXNrQ29tcGxldGVkID0gb3V0cHV0PEFYUFRhc2tEYXRhPigpO1xuXG4gIC8vIERlcGVuZGVuY2llc1xuICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xuXG4gIC8vIENvbmZpZ3VyYXRpb24gb3B0aW9uc1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbWF4SXRlbXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKT8ubWF4SXRlbXMgPz8gMTApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0RhdGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKT8uc2hvd0RhdGUgPz8gdHJ1ZSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaG93QXNzaWduZWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKT8uc2hvd0Fzc2lnbmVlID8/IHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd1ByaW9yaXR5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LnNob3dQcmlvcml0eSA/PyB0cnVlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFsbG93TWFya0NvbXBsZXRlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCk/LmFsbG93TWFya0NvbXBsZXRlID8/IHRydWUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2hvd0NhdGVnb3JpZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKT8uZ3JvdXBCeUNhdGVnb3J5ID8/IHRydWUpO1xuXG4gIC8vIERhdGEgY29tcHV0ZWQgcHJvcGVydGllc1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFza0l0ZW1zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmICghdmFsdWU/LmRhdGE/Lmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB2YWx1ZS5kYXRhLnNsaWNlKDAsIHRoaXMubWF4SXRlbXMoKSk7XG4gIH0pO1xuXG4gIC8vIFRhc2sgY291bnRpbmcgbWV0aG9kc1xuICBwcm90ZWN0ZWQgZ2V0UGVuZGluZ1Rhc2tDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEZpbHRlcmVkVGFza3MoKHRhc2spID0+ICF0YXNrLmNvbXBsZXRlZCkubGVuZ3RoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENvbXBsZXRlZFRhc2tDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEZpbHRlcmVkVGFza3MoKHRhc2spID0+IHRhc2suY29tcGxldGVkKS5sZW5ndGg7XG4gIH1cblxuICAvLyBDYXRlZ29yeS1yZWxhdGVkIG1ldGhvZHNcbiAgcHJvdGVjdGVkIGhhc0NhdGVnb3JpZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGFza0l0ZW1zKCkuc29tZSgodGFzaykgPT4gISF0YXNrLmNhdGVnb3J5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDYXRlZ29yaWVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB0YXNrcyA9IHRoaXMudGFza0l0ZW1zKCk7XG4gICAgY29uc3QgY2F0ZWdvcmllcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGxldCBoYXNVbmNhdGVnb3JpemVkID0gZmFsc2U7XG5cbiAgICB0YXNrcy5mb3JFYWNoKCh0YXNrKSA9PiB7XG4gICAgICBpZiAodGFzay5jYXRlZ29yeSkge1xuICAgICAgICBjYXRlZ29yaWVzLmFkZCh0YXNrLmNhdGVnb3J5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc1VuY2F0ZWdvcml6ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gQXJyYXkuZnJvbShjYXRlZ29yaWVzKTtcbiAgICBpZiAoaGFzVW5jYXRlZ29yaXplZCkge1xuICAgICAgcmVzdWx0LnB1c2goJ1VuY2F0ZWdvcml6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRhc2tzQnlDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogQVhQVGFza0RhdGFbXSB7XG4gICAgY29uc3QgdGFza3MgPSB0aGlzLnRhc2tJdGVtcygpO1xuXG4gICAgaWYgKGNhdGVnb3J5ID09PSAnVW5jYXRlZ29yaXplZCcpIHtcbiAgICAgIHJldHVybiB0YXNrcy5maWx0ZXIoKHRhc2spID0+ICF0YXNrLmNhdGVnb3J5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFza3MuZmlsdGVyKCh0YXNrKSA9PiB0YXNrLmNhdGVnb3J5ID09PSBjYXRlZ29yeSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q2F0ZWdvcnlUYXNrQ291bnQoY2F0ZWdvcnk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGFza3NCeUNhdGVnb3J5KGNhdGVnb3J5KS5maWx0ZXIoKHRhc2spID0+ICF0YXNrLmNvbXBsZXRlZCkubGVuZ3RoO1xuICB9XG5cbiAgLy8gRXZlbnQgaGFuZGxlcnNcbiAgcHJvdGVjdGVkIG9uVGFza0NsaWNrKHRhc2s6IEFYUFRhc2tEYXRhKTogdm9pZCB7XG4gICAgdGhpcy50YXNrQ2xpY2suZW1pdCh0YXNrKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblRhc2tDb21wbGV0aW9uQ2hhbmdlKHRhc2s6IEFYUFRhc2tEYXRhLCBpc0NvbXBsZXRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZWRUYXNrID0geyAuLi50YXNrLCBjb21wbGV0ZWQ6IGlzQ29tcGxldGVkIH07XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoIXZhbHVlPy5kYXRhKSByZXR1cm47XG5cbiAgICBjb25zdCB1cGRhdGVkVGFza3MgPSB2YWx1ZS5kYXRhLm1hcCgodCkgPT4gKHQuaWQgPT09IHRhc2suaWQgPyB1cGRhdGVkVGFzayA6IHQpKTtcbiAgICB0aGlzLnNldFZhbHVlKHsgLi4udmFsdWUsIGRhdGE6IHVwZGF0ZWRUYXNrcyB9KTtcblxuICAgIHRoaXMudGFza0NvbXBsZXRlZC5lbWl0KHVwZGF0ZWRUYXNrKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyBGb3JtYXR0aW5nIGFuZCB1dGlsaXR5IG1ldGhvZHNcbiAgcHJvdGVjdGVkIGZvcm1hdER1ZURhdGUoZGF0ZTogRGF0ZSB8IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRlKSByZXR1cm4gJyc7XG5cbiAgICBjb25zdCBkYXRlT2JqID0gdHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnID8gbmV3IERhdGUoZGF0ZSkgOiBkYXRlO1xuICAgIGNvbnN0IGRpZmZEYXlzID0gdGhpcy5nZXREYXlzRGlmZmVyZW5jZShkYXRlT2JqKTtcblxuICAgIGlmIChkaWZmRGF5cyA8IDApIHJldHVybiAnT3ZlcmR1ZSEnO1xuICAgIGlmIChkaWZmRGF5cyA9PT0gMCkgcmV0dXJuICdUb2RheSc7XG4gICAgaWYgKGRpZmZEYXlzID09PSAxKSByZXR1cm4gJ1RvbW9ycm93JztcbiAgICBpZiAoZGlmZkRheXMgPCA3KSByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZGF0ZU9iaiwgJ0VFRScpIHx8ICcnO1xuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlT2JqLCAnTU0vREQveXl5eScpIHx8ICcnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFByaW9yaXR5Q29sb3IocHJpb3JpdHk6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFwcmlvcml0eSkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgcHJpb3JpdHlDb2xvcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBoaWdoOiAnZGFuZ2VyJyxcbiAgICAgIG1lZGl1bTogJ3dhcm5pbmcnLFxuICAgICAgbG93OiAnc3VjY2VzcycsXG4gICAgfTtcblxuICAgIHJldHVybiBwcmlvcml0eUNvbG9yc1twcmlvcml0eV0gfHwgJyc7XG4gIH1cblxuICAvLyBIZWxwZXIgbWV0aG9kc1xuICBwcml2YXRlIGdldEZpbHRlcmVkVGFza3MoZmlsdGVyRm46ICh0YXNrOiBBWFBUYXNrRGF0YSkgPT4gYm9vbGVhbik6IEFYUFRhc2tEYXRhW10ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGlmICghdmFsdWU/LmRhdGE/Lmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB2YWx1ZS5kYXRhLmZpbHRlcihmaWx0ZXJGbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF5c0RpZmZlcmVuY2UoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBub3cuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICBjb25zdCB0YXJnZXREYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGFyZ2V0RGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgIGNvbnN0IGRpZmZNcyA9IHRhcmdldERhdGUuZ2V0VGltZSgpIC0gbm93LmdldFRpbWUoKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihkaWZmTXMgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXgtc2l6ZS1mdWxsIGF4LXAtNCBheC1mbGV4IGF4LWZsZXgtY29sXCI+XG4gIDwhLS0gSGVhZGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgPGgzIGNsYXNzPVwiYXgtdGV4dC1sZyBheC1mb250LXNlbWlib2xkIGF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0yXCI+XG4gICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LXRleHQtcHJpbWFyeS01MDBcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1jbGlwYm9hcmQtbGlzdC1jaGVja1wiPjwvaT5cbiAgICAgIDwvYXgtaWNvbj5cbiAgICAgIHt7ICd0YXNrbGlzdC50aXRsZScgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0gfCBhc3luYyB9fVxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTJcIj5cbiAgICAgIEBpZiAoZ2V0UGVuZGluZ1Rhc2tDb3VudCgpID4gMCkge1xuICAgICAgICA8YXgtYmFkZ2VcbiAgICAgICAgICBbdGV4dF09XCJnZXRQZW5kaW5nVGFza0NvdW50KCkgKyAnICcgKyAoJ3Rhc2tsaXN0LnBlbmRpbmcnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMpXCJcbiAgICAgICAgICBbY29sb3JdPVwiJ3dhcm5pbmcnXCJcbiAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIGNsYXNzPVwiYXgtbWwtMVwiXG4gICAgICAgID5cbiAgICAgICAgPC9heC1iYWRnZT5cbiAgICAgIH1cbiAgICAgIEBpZiAoZ2V0Q29tcGxldGVkVGFza0NvdW50KCkgPiAwKSB7XG4gICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgIFt0ZXh0XT1cImdldENvbXBsZXRlZFRhc2tDb3VudCgpICsgJyAnICsgKCd0YXNrbGlzdC5jb21wbGV0ZWQnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMpXCJcbiAgICAgICAgICBbY29sb3JdPVwiJ3N1Y2Nlc3MnXCJcbiAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgIGNsYXNzPVwiYXgtbWwtMVwiXG4gICAgICAgID5cbiAgICAgICAgPC9heC1iYWRnZT5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBUYXNrIExpc3QgLS0+XG4gIDxkaXYgY2xhc3M9XCJheC1zcGFjZS15LTQgYXgtbXktNCBheC1weC0xIGF4LW92ZXJmbG93LWF1dG8gYXgtZ3Jvd1wiPlxuICAgIEBpZiAoc2hvd0NhdGVnb3JpZXMoKSAmJiBoYXNDYXRlZ29yaWVzKCkpIHtcbiAgICAgIDwhLS0gQ2F0ZWdvcml6ZWQgVGFza3MgLS0+XG4gICAgICBAZm9yIChjYXRlZ29yeSBvZiBnZXRDYXRlZ29yaWVzKCk7IHRyYWNrIGNhdGVnb3J5KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1tYi01XCI+XG4gICAgICAgICAgPCEtLSBDYXRlZ29yeSBIZWFkZXIgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlciBheC1tYi0zIGF4LWgtNVwiPlxuICAgICAgICAgICAgPGg0IGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gY2F0ZWdvcnktaGVhZGVyXCI+e3sgY2F0ZWdvcnkgfX08L2g0PlxuICAgICAgICAgICAgQGlmIChnZXRDYXRlZ29yeVRhc2tDb3VudChjYXRlZ29yeSkpIHtcbiAgICAgICAgICAgICAgPGF4LWJhZGdlXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiZ2V0Q2F0ZWdvcnlUYXNrQ291bnQoY2F0ZWdvcnkpLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCIncHJpbWFyeSdcIlxuICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1yb3VuZGVkLWZ1bGxcIlxuICAgICAgICAgICAgICA+PC9heC1iYWRnZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIFRhc2tzIGluIENhdGVnb3J5IC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1zcGFjZS15LTJcIj5cbiAgICAgICAgICAgIEBmb3IgKHRhc2sgb2YgZ2V0VGFza3NCeUNhdGVnb3J5KGNhdGVnb3J5KTsgdHJhY2sgdGFzay5pZCkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFza0l0ZW1UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiB0YXNrIH1cIlxuICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgPCEtLSBVbmNhdGVnb3JpemVkIFRhc2tzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LXNwYWNlLXktMlwiPlxuICAgICAgICBAZm9yICh0YXNrIG9mIHRhc2tJdGVtcygpOyB0cmFjayB0YXNrLmlkKSB7XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGFza0l0ZW1UZW1wbGF0ZVJlZlwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHRhc2sgfVwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9IEBlbXB0eSB7XG4gICAgICAgICAgPCEtLSBFbXB0eSBTdGF0ZSAtLT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXB5LTE0IGF4LXB4LTQgYXgtdGV4dC1ncmF5LTQwMCBlbXB0eS1zdGF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJheC10ZXh0LTV4bCBheC1tYi0zIGF4LXRleHQtZ3JheS0zMDBcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1saWdodCBmYS1jbGlwYm9hcmQtbGlzdC1jaGVja1wiPjwvaT5cbiAgICAgICAgICAgIDwvYXgtaWNvbj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtZm9udC1tZWRpdW1cIj5cbiAgICAgICAgICAgICAge3sgJ3Rhc2tsaXN0Lm5vVGFza3MnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtdGV4dC1zbSBheC1tdC0yXCI+XG4gICAgICAgICAgICAgIHt7ICd0YXNrbGlzdC5hZGRUYXNrJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBUYXNrIEl0ZW0gVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI3Rhc2tJdGVtVGVtcGxhdGVSZWYgbGV0LXRhc2s+XG4gIDxkaXZcbiAgICBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTMgYXgtaXRlbXMtc3RhcnQgYXgtcC0zIHRhc2staXRlbVwiXG4gICAgW2NsYXNzLnByaW9yaXR5LWhpZ2hdPVwidGFzay5wcmlvcml0eSA9PT0gJ2hpZ2gnXCJcbiAgICBbY2xhc3MucHJpb3JpdHktbWVkaXVtXT1cInRhc2sucHJpb3JpdHkgPT09ICdtZWRpdW0nXCJcbiAgICBbY2xhc3MucHJpb3JpdHktbG93XT1cInRhc2sucHJpb3JpdHkgPT09ICdsb3cnXCJcbiAgPlxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgPGF4LWNoZWNrLWJveFxuICAgICAgY2xhc3M9XCJheC1mbGV4LXNocmluay0wIGF4LW10LTEgdGFzay1jaGVja2JveFwiXG4gICAgICBbdmFsdWVdPVwidGFzay5jb21wbGV0ZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFhbGxvd01hcmtDb21wbGV0ZSgpXCJcbiAgICAgICh2YWx1ZUNoYW5nZSk9XCJvblRhc2tDb21wbGV0aW9uQ2hhbmdlKHRhc2ssICRldmVudClcIlxuICAgID5cbiAgICA8L2F4LWNoZWNrLWJveD5cblxuICAgIDwhLS0gVGFzayBEZXRhaWxzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1vdmVyZmxvdy1oaWRkZW4gYXgtZ3JvdyBheC10ZXh0LXN0YXJ0XCIgKGNsaWNrKT1cIm9uVGFza0NsaWNrKHRhc2spXCI+XG4gICAgICA8IS0tIFRpdGxlIGFuZCBQcmlvcml0eSAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMlwiPlxuICAgICAgICA8aDYgY2xhc3M9XCJheC1mb250LW1lZGl1bSBheC10cnVuY2F0ZSBheC1wYi0xXCIgW3RpdGxlXT1cInRhc2sudGl0bGVcIiBbY2xhc3MudGFzay1jb21wbGV0ZWRdPVwidGFzay5jb21wbGV0ZWRcIj5cbiAgICAgICAgICB7eyB0YXNrLnRpdGxlIH19XG4gICAgICAgIDwvaDY+XG4gICAgICAgIEBpZiAoc2hvd1ByaW9yaXR5KCkgJiYgdGFzay5wcmlvcml0eSkge1xuICAgICAgICAgIDxheC1iYWRnZVxuICAgICAgICAgICAgW2NvbG9yXT1cImdldFByaW9yaXR5Q29sb3IodGFzay5wcmlvcml0eSlcIlxuICAgICAgICAgICAgW3RleHRdPVwidGFzay5wcmlvcml0eVwiXG4gICAgICAgICAgICBzaXplPVwic21cIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1tbC0xIGF4LXJvdW5kZWQtZnVsbFwiXG4gICAgICAgICAgPjwvYXgtYmFkZ2U+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIE1ldGFkYXRhIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC13cmFwIGF4LWdhcC14LTMgYXgtZ2FwLXktMSBheC1tdC0yIGF4LXRleHQteHMgYXgtdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICBAaWYgKHNob3dEYXRlKCkgJiYgdGFzay5kdWVEYXRlKSB7XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTEgZHVlLWRhdGVcIlxuICAgICAgICAgICAgW2NsYXNzLmF4LXRleHQtZGFuZ2VyLTUwMF09XCJnZXREYXlzRGlmZmVyZW5jZSh0YXNrLmR1ZURhdGUpIDwgMFwiXG4gICAgICAgICAgICBbY2xhc3Mub3ZlcmR1ZV09XCJnZXREYXlzRGlmZmVyZW5jZSh0YXNrLmR1ZURhdGUpIDwgMFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF4LWljb24+PGkgY2xhc3M9XCJmYS1saWdodCBmYS1jYWxlbmRhclwiPjwvaT48L2F4LWljb24+XG4gICAgICAgICAgICB7eyBmb3JtYXREdWVEYXRlKHRhc2suZHVlRGF0ZSkgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChzaG93QXNzaWduZWUoKSAmJiB0YXNrLmFzc2lnbmVkVG8pIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0xXCI+XG4gICAgICAgICAgICBAaWYgKHRhc2suYXNzaWduZWRUby5pbWFnZSkge1xuICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWJnLXByaW1hcnktMTAwIGF4LXRleHQtcHJpbWFyeS01MDAgYXgtcm91bmRlZC1mdWxsIGF4LXAtMVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtdXNlclwiPjwvaT5cbiAgICAgICAgICAgICAgPC9heC1pY29uPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIDxheC1pY29uPjxpIGNsYXNzPVwiZmEtbGlnaHQgZmEtdXNlclwiPjwvaT48L2F4LWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7eyB0YXNrLmFzc2lnbmVkVG8ubmFtZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==","import { AXPWidgetGroupEnum, AXPWidgetsCatalog, cloneProperty } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PATH_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_CHART_CATEGORY } from '../chart.type';\nimport { AXP_APPEARANCE_PROPERTY_GROUP } from '@acorex/platform/widgets';\nexport const AXPTaskListWidget = {\n name: 'task-list',\n title: 'Task List Widget',\n categories: [AXP_WIDGETS_CHART_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-clipboard-list-check',\n properties: [\n cloneProperty(AXP_DATA_PATH_PROPERTY, { visible: false }),\n // ====== Title ======\n {\n name: 'title',\n title: '@dashboard:widgets.task-list.chart-title',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: '',\n dataType: 'string',\n interface: {\n name: 'title',\n path: 'options.title',\n type: AXPWidgetsCatalog.text,\n options: {\n placeholder: 'Enter chart title',\n },\n },\n },\n visible: true,\n },\n // Display options\n {\n name: 'maxItems',\n title: '@dashboard:widgets.task-list.max-items',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 10,\n dataType: 'number',\n interface: {\n name: 'maxItems',\n path: 'options.maxItems',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 50,\n },\n },\n },\n visible: true,\n },\n {\n name: 'showDate',\n title: '@dashboard:widgets.task-list.show-date',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showDate',\n path: 'options.showDate',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showAssignee',\n title: '@dashboard:widgets.task-list.show-assignee',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showAssignee',\n path: 'options.showAssignee',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'groupByCategory',\n title: '@dashboard:widgets.task-list.group-by-category',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'groupByCategory',\n path: 'options.groupByCategory',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showPriority',\n title: '@dashboard:widgets.task-list.show-priority',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showPriority',\n path: 'options.showPriority',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'allowMarkComplete',\n title: '@dashboard:widgets.task-list.allow-complete',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'allowMarkComplete',\n path: 'options.allowMarkComplete',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./tasklist-widget.component').then((c) => c.AXPTaskListWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 7,\n minWidth: 3,\n minHeight: 4,\n maxWidth: 6,\n maxHeight: 8,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2xpc3Qtd2lkZ2V0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL3Rhc2tsaXN0L3Rhc2tsaXN0LXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQW9CO0lBQ2hELElBQUksRUFBRSxXQUFXO0lBQ2pCLEtBQUssRUFBRSxrQkFBa0I7SUFDekIsVUFBVSxFQUFFLENBQUMsMEJBQTBCLENBQUM7SUFDeEMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDO0lBQzVDLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSxrQ0FBa0M7SUFDeEMsVUFBVSxFQUFFO1FBQ1YsYUFBYSxDQUFDLHNCQUFzQixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3pELHNCQUFzQjtRQUN0QjtZQUNFLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLDBDQUEwQztZQUNqRCxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsT0FBTztvQkFDYixJQUFJLEVBQUUsZUFBZTtvQkFDckIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUk7b0JBQzVCLE9BQU8sRUFBRTt3QkFDUCxXQUFXLEVBQUUsbUJBQW1CO3FCQUNqQztpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNELGtCQUFrQjtRQUNsQjtZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUssRUFBRSx3Q0FBd0M7WUFDL0MsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNO29CQUM5QixPQUFPLEVBQUU7d0JBQ1AsUUFBUSxFQUFFLENBQUM7d0JBQ1gsUUFBUSxFQUFFLEVBQUU7cUJBQ2I7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNFLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUssRUFBRSx3Q0FBd0M7WUFDL0MsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLElBQUksRUFBRSxrQkFBa0I7b0JBQ3hCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxNQUFNO2lCQUMvQjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSyxFQUFFLDRDQUE0QztZQUNuRCxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsY0FBYztvQkFDcEIsSUFBSSxFQUFFLHNCQUFzQjtvQkFDNUIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07aUJBQy9CO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLEtBQUssRUFBRSxnREFBZ0Q7WUFDdkQsS0FBSyxFQUFFLDZCQUE2QjtZQUNwQyxNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07aUJBQy9CO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsY0FBYztZQUNwQixLQUFLLEVBQUUsNENBQTRDO1lBQ25ELEtBQUssRUFBRSw2QkFBNkI7WUFDcEMsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxJQUFJO2dCQUNsQixRQUFRLEVBQUUsU0FBUztnQkFDbkIsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsc0JBQXNCO29CQUM1QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtpQkFDL0I7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNFLElBQUksRUFBRSxtQkFBbUI7WUFDekIsS0FBSyxFQUFFLDZDQUE2QztZQUNwRCxLQUFLLEVBQUUsNkJBQTZCO1lBQ3BDLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsbUJBQW1CO29CQUN6QixJQUFJLEVBQUUsMkJBQTJCO29CQUNqQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtpQkFDL0I7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7S0FDRjtJQUNELFVBQVUsRUFBRTtRQUNWLElBQUksRUFBRTtZQUNKLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQztTQUNyRztLQUNGO0lBQ0QsSUFBSSxFQUFFO1FBQ0osVUFBVSxFQUFFO1lBQ1YsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1NBQ2I7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSwgQVhQV2lkZ2V0c0NhdGFsb2csIGNsb25lUHJvcGVydHkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUF9EQVRBX1BBVEhfUFJPUEVSVFkgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dpZGdldHMnO1xuaW1wb3J0IHsgQVhQX1dJREdFVFNfQ0hBUlRfQ0FURUdPUlkgfSBmcm9tICcuLi9jaGFydC50eXBlJztcbmltcG9ydCB7IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcblxuZXhwb3J0IGNvbnN0IEFYUFRhc2tMaXN0V2lkZ2V0OiBBWFBXaWRnZXRDb25maWcgPSB7XG4gIG5hbWU6ICd0YXNrLWxpc3QnLFxuICB0aXRsZTogJ1Rhc2sgTGlzdCBXaWRnZXQnLFxuICBjYXRlZ29yaWVzOiBbQVhQX1dJREdFVFNfQ0hBUlRfQ0FURUdPUlldLFxuICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRGFzaGJvYXJkV2lkZ2V0XSxcbiAgdHlwZTogJ2Rhc2hib2FyZCcsXG4gIGljb246ICdmYS1saWdodCBmYS1jbGlwYm9hcmQtbGlzdC1jaGVjaycsXG4gIHByb3BlcnRpZXM6IFtcbiAgICBjbG9uZVByb3BlcnR5KEFYUF9EQVRBX1BBVEhfUFJPUEVSVFksIHsgdmlzaWJsZTogZmFsc2UgfSksXG4gICAgLy8gPT09PT09IFRpdGxlID09PT09PVxuICAgIHtcbiAgICAgIG5hbWU6ICd0aXRsZScsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy50YXNrLWxpc3QuY2hhcnQtdGl0bGUnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJycsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3RpdGxlJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy50aXRsZScsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0VudGVyIGNoYXJ0IHRpdGxlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICAvLyBEaXNwbGF5IG9wdGlvbnNcbiAgICB7XG4gICAgICBuYW1lOiAnbWF4SXRlbXMnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMudGFzay1saXN0Lm1heC1pdGVtcycsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAxMCxcbiAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnbWF4SXRlbXMnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLm1heEl0ZW1zJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgbWluVmFsdWU6IDEsXG4gICAgICAgICAgICBtYXhWYWx1ZTogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dEYXRlJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLnRhc2stbGlzdC5zaG93LWRhdGUnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3Nob3dEYXRlJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93RGF0ZScsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc2hvd0Fzc2lnbmVlJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLnRhc2stbGlzdC5zaG93LWFzc2lnbmVlJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93QXNzaWduZWUnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dBc3NpZ25lZScsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZ3JvdXBCeUNhdGVnb3J5JyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLnRhc2stbGlzdC5ncm91cC1ieS1jYXRlZ29yeScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnZ3JvdXBCeUNhdGVnb3J5JyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5ncm91cEJ5Q2F0ZWdvcnknLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dQcmlvcml0eScsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy50YXNrLWxpc3Quc2hvdy1wcmlvcml0eScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnc2hvd1ByaW9yaXR5JyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93UHJpb3JpdHknLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FsbG93TWFya0NvbXBsZXRlJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLnRhc2stbGlzdC5hbGxvdy1jb21wbGV0ZScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnYWxsb3dNYXJrQ29tcGxldGUnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmFsbG93TWFya0NvbXBsZXRlJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjb21wb25lbnRzOiB7XG4gICAgdmlldzoge1xuICAgICAgY29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vdGFza2xpc3Qtd2lkZ2V0LmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhQVGFza0xpc3RXaWRnZXRWaWV3Q29tcG9uZW50KSxcbiAgICB9LFxuICB9LFxuICBtZXRhOiB7XG4gICAgZGltZW5zaW9uczoge1xuICAgICAgd2lkdGg6IDMsXG4gICAgICBoZWlnaHQ6IDcsXG4gICAgICBtaW5XaWR0aDogMyxcbiAgICAgIG1pbkhlaWdodDogNCxcbiAgICAgIG1heFdpZHRoOiA2LFxuICAgICAgbWF4SGVpZ2h0OiA4LFxuICAgIH0sXG4gIH0sXG59O1xuXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcicge1xuICBpbnRlcmZhY2UgQVhQV2lkZ2V0VHlwZXNNYXAge1xuICAgIHRhc2tMaXN0OiAndGFzay1saXN0JztcbiAgfVxufVxuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\n/**\n * Abstract Weather API Service\n * Base class that defines the interface and common functionality\n * for weather data providers\n */\nexport class AXPWeatherApiAbstract {\n constructor() {\n /** Weather condition definitions mapping */\n this.weatherConditions = {\n sunny: {\n id: 'sunny',\n name: 'Sunny',\n icon: 'fa-solid fa-sun',\n svgIcon: 'day.svg',\n color: '#ff9d00',\n },\n clearNight: {\n id: 'clearNight',\n name: 'Clear Night',\n icon: 'fa-solid fa-moon',\n svgIcon: 'night.svg',\n color: '#5d639e',\n },\n partlyCloudy: {\n id: 'partlyCloudy',\n name: 'Partly Cloudy',\n icon: 'fa-solid fa-cloud-sun',\n svgIcon: 'cloudy-day-3.svg',\n color: '#6ba4e8',\n },\n partlyCloudyNight: {\n id: 'partlyCloudyNight',\n name: 'Partly Cloudy Night',\n icon: 'fa-solid fa-cloud-moon',\n svgIcon: 'cloudy-night-3.svg',\n color: '#5d639e',\n },\n cloudy: {\n id: 'cloudy',\n name: 'Cloudy',\n icon: 'fa-solid fa-cloud',\n svgIcon: 'cloudy.svg',\n color: '#72869d',\n },\n rain: {\n id: 'rain',\n name: 'Rain',\n icon: 'fa-solid fa-cloud-rain',\n svgIcon: 'rainy-6.svg',\n color: '#3a74ad',\n },\n showers: {\n id: 'showers',\n name: 'Showers',\n icon: 'fa-solid fa-cloud-showers-heavy',\n svgIcon: 'rainy-7.svg',\n color: '#2c5d8c',\n },\n thunderstorm: {\n id: 'thunderstorm',\n name: 'Thunderstorm',\n icon: 'fa-solid fa-bolt-lightning',\n svgIcon: 'thunder.svg',\n color: '#8834af',\n },\n snow: {\n id: 'snow',\n name: 'Snow',\n icon: 'fa-solid fa-snowflake',\n svgIcon: 'snowy-6.svg',\n color: '#68a9cd',\n },\n mist: {\n id: 'mist',\n name: 'Mist',\n icon: 'fa-solid fa-smog',\n svgIcon: 'cloudy.svg',\n color: '#94a3b8',\n },\n };\n /** Day of week mapping */\n this.dayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n }\n /**\n * Get weather condition info by ID\n * @param id Condition ID\n * @returns Weather condition info or default if not found\n */\n getCondition(id) {\n // Normalize condition ID by removing spaces and converting to lowercase\n const normalizedId = id.toLowerCase().replace(/\\s+/g, '');\n // Direct match first\n if (this.weatherConditions[normalizedId]) {\n return this.weatherConditions[normalizedId];\n }\n // Check for partial matches or common variants\n if (normalizedId.includes('partly') && normalizedId.includes('cloud')) {\n return this.weatherConditions['partlyCloudy'];\n }\n if (normalizedId.includes('cloud')) {\n return this.weatherConditions['cloudy'];\n }\n if (normalizedId.includes('sun')) {\n return this.weatherConditions['sunny'];\n }\n if (normalizedId.includes('rain')) {\n return this.weatherConditions['rain'];\n }\n if (normalizedId.includes('snow')) {\n return this.weatherConditions['snow'];\n }\n // If no match found, return default unknown condition\n return {\n id: 'unknown',\n name: 'Unknown',\n icon: 'fa-solid fa-question',\n svgIcon: 'weather.svg',\n color: '#999999',\n };\n }\n /**\n * Parse location string into city and display components\n * @param location Location query string\n * @returns Parsed location parts\n */\n parseLocation(location) {\n if (!location || location.trim() === '') {\n return { city: 'New York', country: 'USA', display: 'New York' };\n }\n const city = location.trim();\n return { city, country: '', display: city };\n }\n /**\n * Format location name for display\n * @param locationParts Parsed location parts\n * @returns Formatted location name\n */\n formatLocationName(locationParts) {\n return locationParts.city || 'Unknown Location';\n }\n /**\n * Map API condition text to our internal condition IDs\n * @param conditionText Condition text from API\n * @returns Internal condition ID\n */\n mapApiConditionToId(conditionText) {\n const text = conditionText.toLowerCase();\n // Match WeatherAPI.com condition text\n // Reference: https://www.weatherapi.com/docs/#weather-icons\n if (text.includes('sunny') || text.includes('clear')) {\n return 'sunny';\n }\n if (text === 'partly cloudy') {\n return 'partlyCloudy';\n }\n if (text.includes('cloudy') || text.includes('overcast')) {\n return 'cloudy';\n }\n if (text.includes('rain') || text.includes('drizzle') || text.includes('shower')) {\n return 'rain';\n }\n if (text.includes('thunder') || text.includes('lightning')) {\n return 'thunderstorm';\n }\n if (text.includes('snow') || text.includes('sleet') || text.includes('blizzard')) {\n return 'snow';\n }\n if (text.includes('mist') || text.includes('fog')) {\n return 'mist';\n }\n // Default to partly cloudy if we don't have a specific mapping\n return 'partlyCloudy';\n }\n /**\n * Generate random integer between min and max (inclusive)\n * Helper method for implementations\n * @param min Minimum value\n * @param max Maximum value\n * @returns Random integer\n */\n getRandomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiAbstract, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiAbstract }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiAbstract, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VhdGhlci1hcGkuYWJzdHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy93ZWF0aGVyL3dlYXRoZXItc2VydmljZXMvd2VhdGhlci1hcGkuYWJzdHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUErSDNDOzs7O0dBSUc7QUFFSCxNQUFNLE9BQWdCLHFCQUFxQjtJQUQzQztRQUVFLDRDQUE0QztRQUNsQyxzQkFBaUIsR0FBK0M7WUFDeEUsS0FBSyxFQUFFO2dCQUNMLEVBQUUsRUFBRSxPQUFPO2dCQUNYLElBQUksRUFBRSxPQUFPO2dCQUNiLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLE9BQU8sRUFBRSxTQUFTO2dCQUNsQixLQUFLLEVBQUUsU0FBUzthQUNqQjtZQUNELFVBQVUsRUFBRTtnQkFDVixFQUFFLEVBQUUsWUFBWTtnQkFDaEIsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixLQUFLLEVBQUUsU0FBUzthQUNqQjtZQUNELFlBQVksRUFBRTtnQkFDWixFQUFFLEVBQUUsY0FBYztnQkFDbEIsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLE9BQU8sRUFBRSxrQkFBa0I7Z0JBQzNCLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0QsaUJBQWlCLEVBQUU7Z0JBQ2pCLEVBQUUsRUFBRSxtQkFBbUI7Z0JBQ3ZCLElBQUksRUFBRSxxQkFBcUI7Z0JBQzNCLElBQUksRUFBRSx3QkFBd0I7Z0JBQzlCLE9BQU8sRUFBRSxvQkFBb0I7Z0JBQzdCLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxRQUFRO2dCQUNaLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxtQkFBbUI7Z0JBQ3pCLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixLQUFLLEVBQUUsU0FBUzthQUNqQjtZQUNELElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsTUFBTTtnQkFDVixJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsS0FBSyxFQUFFLFNBQVM7YUFDakI7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxFQUFFLFNBQVM7Z0JBQ2IsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxFQUFFLGlDQUFpQztnQkFDdkMsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0QsWUFBWSxFQUFFO2dCQUNaLEVBQUUsRUFBRSxjQUFjO2dCQUNsQixJQUFJLEVBQUUsY0FBYztnQkFDcEIsSUFBSSxFQUFFLDRCQUE0QjtnQkFDbEMsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxNQUFNO2dCQUNWLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixLQUFLLEVBQUUsU0FBUzthQUNqQjtZQUNELElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsTUFBTTtnQkFDVixJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsa0JBQWtCO2dCQUN4QixPQUFPLEVBQUUsWUFBWTtnQkFDckIsS0FBSyxFQUFFLFNBQVM7YUFDakI7U0FDRixDQUFDO1FBRUYsMEJBQTBCO1FBQ1AsYUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FpSmpGO0lBL0lDOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsRUFBVTtRQUM1Qix3RUFBd0U7UUFDeEUsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFMUQscUJBQXFCO1FBQ3JCLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDekMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELCtDQUErQztRQUMvQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUM7UUFFRCxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsc0RBQXNEO1FBQ3RELE9BQU87WUFDTCxFQUFFLEVBQUUsU0FBUztZQUNiLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLHNCQUFzQjtZQUM1QixPQUFPLEVBQUUsYUFBYTtZQUN0QixLQUFLLEVBQUUsU0FBUztTQUNqQixDQUFDO0lBQ0osQ0FBQztJQWdCRDs7OztPQUlHO0lBQ08sYUFBYSxDQUFDLFFBQWdCO1FBQ3RDLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ25FLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0IsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLGtCQUFrQixDQUFDLGFBQWlFO1FBQzVGLE9BQU8sYUFBYSxDQUFDLElBQUksSUFBSSxrQkFBa0IsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLG1CQUFtQixDQUFDLGFBQXFCO1FBQ2pELE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV6QyxzQ0FBc0M7UUFDdEMsNERBQTREO1FBRTVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDckQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUVELElBQUksSUFBSSxLQUFLLGVBQWUsRUFBRSxDQUFDO1lBQzdCLE9BQU8sY0FBYyxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3pELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDakYsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDM0QsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqRixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsK0RBQStEO1FBQy9ELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDTyxZQUFZLENBQUMsR0FBVyxFQUFFLEdBQVc7UUFDN0MsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDM0QsQ0FBQzs4R0FwTm1CLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQUQxQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFdlYXRoZXIgbG9jYXRpb24gaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBXZWF0aGVyTG9jYXRpb24ge1xuICAvKiogQ2l0eSBuYW1lICovXG4gIGNpdHk6IHN0cmluZztcbiAgLyoqIENvdW50cnkgbmFtZSAqL1xuICBjb3VudHJ5OiBzdHJpbmc7XG4gIC8qKiBGb3JtYXR0ZWQgbG9jYXRpb24gZGlzcGxheSBuYW1lICovXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogV2VhdGhlciBjdXJyZW50IGNvbmRpdGlvbiBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdlYXRoZXJDb25kaXRpb24ge1xuICAvKiogQ29uZGl0aW9uIHRleHQgKi9cbiAgY29uZGl0aW9uOiBzdHJpbmc7XG4gIC8qKiBDb25kaXRpb24gY29kZSAqL1xuICBjb25kaXRpb25Db2RlOiBudW1iZXI7XG4gIC8qKiBJY29uIFVSTCAqL1xuICBpY29uVXJsOiBzdHJpbmc7XG4gIC8qKiBUZW1wZXJhdHVyZSBpbiBDZWxzaXVzICovXG4gIHRlbXBDOiBudW1iZXI7XG4gIC8qKiBUZW1wZXJhdHVyZSBpbiBGYWhyZW5oZWl0ICovXG4gIHRlbXBGOiBudW1iZXI7XG4gIC8qKiBGZWVscyBsaWtlIHRlbXBlcmF0dXJlIGluIENlbHNpdXMgKi9cbiAgZmVlbHNMaWtlQzogbnVtYmVyO1xuICAvKiogRmVlbHMgbGlrZSB0ZW1wZXJhdHVyZSBpbiBGYWhyZW5oZWl0ICovXG4gIGZlZWxzTGlrZUY6IG51bWJlcjtcbiAgLyoqIEh1bWlkaXR5IHBlcmNlbnRhZ2UgKi9cbiAgaHVtaWRpdHk6IG51bWJlcjtcbiAgLyoqIFdpbmQgc3BlZWQgaW4ga20vaCAqL1xuICB3aW5kS3BoOiBudW1iZXI7XG4gIC8qKiBXaW5kIHNwZWVkIGluIG1waCAqL1xuICB3aW5kTXBoOiBudW1iZXI7XG4gIC8qKiBXaW5kIGRpcmVjdGlvbiAqL1xuICB3aW5kRGlyZWN0aW9uOiBzdHJpbmc7XG4gIC8qKiBVViBpbmRleCAqL1xuICB1djogbnVtYmVyO1xuICAvKiogTGFzdCB1cGRhdGVkIHRpbWVzdGFtcCAqL1xuICBsYXN0VXBkYXRlZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdlYXRoZXIgZm9yZWNhc3QgZGF0YSBmb3IgYSBzaW5nbGUgZGF5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2VhdGhlckZvcmVjYXN0RGF5IHtcbiAgLyoqIERhdGUgc3RyaW5nICovXG4gIGRhdGU6IHN0cmluZztcbiAgLyoqIERheSBuYW1lIChlLmcuLCBcIk1vblwiLCBcIlR1ZVwiKSAqL1xuICBkYXk6IHN0cmluZztcbiAgLyoqIFdlYXRoZXIgY29uZGl0aW9uIGNvZGUgKi9cbiAgY29uZGl0aW9uOiBzdHJpbmc7XG4gIC8qKiBXZWF0aGVyIGljb24gVVJMICovXG4gIGljb25Vcmw6IHN0cmluZztcbiAgLyoqIE1heCB0ZW1wZXJhdHVyZSBpbiBDZWxzaXVzICovXG4gIG1heFRlbXBDOiBudW1iZXI7XG4gIC8qKiBNYXggdGVtcGVyYXR1cmUgaW4gRmFocmVuaGVpdCAqL1xuICBtYXhUZW1wRjogbnVtYmVyO1xuICAvKiogTWluIHRlbXBlcmF0dXJlIGluIENlbHNpdXMgKi9cbiAgbWluVGVtcEM6IG51bWJlcjtcbiAgLyoqIE1pbiB0ZW1wZXJhdHVyZSBpbiBGYWhyZW5oZWl0ICovXG4gIG1pblRlbXBGOiBudW1iZXI7XG4gIC8qKiBIb3VybHkgZm9yZWNhc3QgZGF0YSAqL1xuICBob3VyOiBBWFBXZWF0aGVySG91cltdO1xufVxuXG4vKipcbiAqIFdlYXRoZXIgaG91cmx5IGZvcmVjYXN0IGRhdGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBXZWF0aGVySG91ciB7XG4gIC8qKiBUaW1lIHN0cmluZyAqL1xuICB0aW1lOiBzdHJpbmc7XG4gIC8qKiBXZWF0aGVyIGNvbmRpdGlvbiBjb2RlICovXG4gIGNvbmRpdGlvbjogc3RyaW5nO1xuICAvKiogV2VhdGhlciBpY29uIFVSTCAqL1xuICBpY29uVXJsOiBzdHJpbmc7XG4gIC8qKiBIb3VybHkgdGVtcGVyYXR1cmUgaW4gQ2Vsc2l1cyAqL1xuICB0ZW1wQzogbnVtYmVyO1xuICAvKiogSG91cmx5IHRlbXBlcmF0dXJlIGluIEZhaHJlbmhlaXQgKi9cbiAgdGVtcEY6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb21wbGV0ZSB3ZWF0aGVyIGRhdGEgcmVzcG9uc2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBXZWF0aGVyRGF0YSB7XG4gIC8qKiBMb2NhdGlvbiBpbmZvcm1hdGlvbiAqL1xuICBsb2NhdGlvbjogQVhQV2VhdGhlckxvY2F0aW9uO1xuICAvKiogQ3VycmVudCB3ZWF0aGVyIGRhdGEgKi9cbiAgY3VycmVudDogQVhQV2VhdGhlckNvbmRpdGlvbjtcbiAgLyoqIEZvcmVjYXN0IGRhdGEgKi9cbiAgZm9yZWNhc3Q6IEFYUFdlYXRoZXJGb3JlY2FzdERheVtdO1xufVxuXG4vKipcbiAqIFdlYXRoZXIgQVBJIHJlcXVlc3Qgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdlYXRoZXJSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKiBUZW1wZXJhdHVyZSB1bml0ICovXG4gIHRlbXBVbml0Pzogc3RyaW5nO1xuICAvKiogTG9jYXRpb24gcXVlcnkgKi9cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8qKiBVc2UgbW9jayBkYXRhICovXG4gIHVzZU1vY2tEYXRhPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXZWF0aGVyIFVJIGNvbmRpdGlvbiBkaXNwbGF5IGluZm9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBWFBXZWF0aGVyQ29uZGl0aW9uRGlzcGxheSB7XG4gIC8qKiBDb25kaXRpb24gdW5pcXVlIElEICovXG4gIGlkOiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IG5hbWUgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogSWNvbiBjbGFzcyAoRm9udCBBd2Vzb21lKSAqL1xuICBpY29uOiBzdHJpbmc7XG4gIC8qKiBTVkcgaWNvbiBuYW1lICovXG4gIHN2Z0ljb246IHN0cmluZztcbiAgLyoqIEFzc29jaWF0ZWQgY29sb3IgKi9cbiAgY29sb3I6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBXZWF0aGVyIEFQSSBTZXJ2aWNlXG4gKiBCYXNlIGNsYXNzIHRoYXQgZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGFuZCBjb21tb24gZnVuY3Rpb25hbGl0eVxuICogZm9yIHdlYXRoZXIgZGF0YSBwcm92aWRlcnNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFdlYXRoZXJBcGlBYnN0cmFjdCB7XG4gIC8qKiBXZWF0aGVyIGNvbmRpdGlvbiBkZWZpbml0aW9ucyBtYXBwaW5nICovXG4gIHByb3RlY3RlZCB3ZWF0aGVyQ29uZGl0aW9uczogUmVjb3JkPHN0cmluZywgQVhQV2VhdGhlckNvbmRpdGlvbkRpc3BsYXk+ID0ge1xuICAgIHN1bm55OiB7XG4gICAgICBpZDogJ3N1bm55JyxcbiAgICAgIG5hbWU6ICdTdW5ueScsXG4gICAgICBpY29uOiAnZmEtc29saWQgZmEtc3VuJyxcbiAgICAgIHN2Z0ljb246ICdkYXkuc3ZnJyxcbiAgICAgIGNvbG9yOiAnI2ZmOWQwMCcsXG4gICAgfSxcbiAgICBjbGVhck5pZ2h0OiB7XG4gICAgICBpZDogJ2NsZWFyTmlnaHQnLFxuICAgICAgbmFtZTogJ0NsZWFyIE5pZ2h0JyxcbiAgICAgIGljb246ICdmYS1zb2xpZCBmYS1tb29uJyxcbiAgICAgIHN2Z0ljb246ICduaWdodC5zdmcnLFxuICAgICAgY29sb3I6ICcjNWQ2MzllJyxcbiAgICB9LFxuICAgIHBhcnRseUNsb3VkeToge1xuICAgICAgaWQ6ICdwYXJ0bHlDbG91ZHknLFxuICAgICAgbmFtZTogJ1BhcnRseSBDbG91ZHknLFxuICAgICAgaWNvbjogJ2ZhLXNvbGlkIGZhLWNsb3VkLXN1bicsXG4gICAgICBzdmdJY29uOiAnY2xvdWR5LWRheS0zLnN2ZycsXG4gICAgICBjb2xvcjogJyM2YmE0ZTgnLFxuICAgIH0sXG4gICAgcGFydGx5Q2xvdWR5TmlnaHQ6IHtcbiAgICAgIGlkOiAncGFydGx5Q2xvdWR5TmlnaHQnLFxuICAgICAgbmFtZTogJ1BhcnRseSBDbG91ZHkgTmlnaHQnLFxuICAgICAgaWNvbjogJ2ZhLXNvbGlkIGZhLWNsb3VkLW1vb24nLFxuICAgICAgc3ZnSWNvbjogJ2Nsb3VkeS1uaWdodC0zLnN2ZycsXG4gICAgICBjb2xvcjogJyM1ZDYzOWUnLFxuICAgIH0sXG4gICAgY2xvdWR5OiB7XG4gICAgICBpZDogJ2Nsb3VkeScsXG4gICAgICBuYW1lOiAnQ2xvdWR5JyxcbiAgICAgIGljb246ICdmYS1zb2xpZCBmYS1jbG91ZCcsXG4gICAgICBzdmdJY29uOiAnY2xvdWR5LnN2ZycsXG4gICAgICBjb2xvcjogJyM3Mjg2OWQnLFxuICAgIH0sXG4gICAgcmFpbjoge1xuICAgICAgaWQ6ICdyYWluJyxcbiAgICAgIG5hbWU6ICdSYWluJyxcbiAgICAgIGljb246ICdmYS1zb2xpZCBmYS1jbG91ZC1yYWluJyxcbiAgICAgIHN2Z0ljb246ICdyYWlueS02LnN2ZycsXG4gICAgICBjb2xvcjogJyMzYTc0YWQnLFxuICAgIH0sXG4gICAgc2hvd2Vyczoge1xuICAgICAgaWQ6ICdzaG93ZXJzJyxcbiAgICAgIG5hbWU6ICdTaG93ZXJzJyxcbiAgICAgIGljb246ICdmYS1zb2xpZCBmYS1jbG91ZC1zaG93ZXJzLWhlYXZ5JyxcbiAgICAgIHN2Z0ljb246ICdyYWlueS03LnN2ZycsXG4gICAgICBjb2xvcjogJyMyYzVkOGMnLFxuICAgIH0sXG4gICAgdGh1bmRlcnN0b3JtOiB7XG4gICAgICBpZDogJ3RodW5kZXJzdG9ybScsXG4gICAgICBuYW1lOiAnVGh1bmRlcnN0b3JtJyxcbiAgICAgIGljb246ICdmYS1zb2xpZCBmYS1ib2x0LWxpZ2h0bmluZycsXG4gICAgICBzdmdJY29uOiAndGh1bmRlci5zdmcnLFxuICAgICAgY29sb3I6ICcjODgzNGFmJyxcbiAgICB9LFxuICAgIHNub3c6IHtcbiAgICAgIGlkOiAnc25vdycsXG4gICAgICBuYW1lOiAnU25vdycsXG4gICAgICBpY29uOiAnZmEtc29saWQgZmEtc25vd2ZsYWtlJyxcbiAgICAgIHN2Z0ljb246ICdzbm93eS02LnN2ZycsXG4gICAgICBjb2xvcjogJyM2OGE5Y2QnLFxuICAgIH0sXG4gICAgbWlzdDoge1xuICAgICAgaWQ6ICdtaXN0JyxcbiAgICAgIG5hbWU6ICdNaXN0JyxcbiAgICAgIGljb246ICdmYS1zb2xpZCBmYS1zbW9nJyxcbiAgICAgIHN2Z0ljb246ICdjbG91ZHkuc3ZnJyxcbiAgICAgIGNvbG9yOiAnIzk0YTNiOCcsXG4gICAgfSxcbiAgfTtcblxuICAvKiogRGF5IG9mIHdlZWsgbWFwcGluZyAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF5TmFtZXMgPSBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddO1xuXG4gIC8qKlxuICAgKiBHZXQgd2VhdGhlciBjb25kaXRpb24gaW5mbyBieSBJRFxuICAgKiBAcGFyYW0gaWQgQ29uZGl0aW9uIElEXG4gICAqIEByZXR1cm5zIFdlYXRoZXIgY29uZGl0aW9uIGluZm8gb3IgZGVmYXVsdCBpZiBub3QgZm91bmRcbiAgICovXG4gIHB1YmxpYyBnZXRDb25kaXRpb24oaWQ6IHN0cmluZyk6IEFYUFdlYXRoZXJDb25kaXRpb25EaXNwbGF5IHtcbiAgICAvLyBOb3JtYWxpemUgY29uZGl0aW9uIElEIGJ5IHJlbW92aW5nIHNwYWNlcyBhbmQgY29udmVydGluZyB0byBsb3dlcmNhc2VcbiAgICBjb25zdCBub3JtYWxpemVkSWQgPSBpZC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJycpO1xuXG4gICAgLy8gRGlyZWN0IG1hdGNoIGZpcnN0XG4gICAgaWYgKHRoaXMud2VhdGhlckNvbmRpdGlvbnNbbm9ybWFsaXplZElkXSkge1xuICAgICAgcmV0dXJuIHRoaXMud2VhdGhlckNvbmRpdGlvbnNbbm9ybWFsaXplZElkXTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgcGFydGlhbCBtYXRjaGVzIG9yIGNvbW1vbiB2YXJpYW50c1xuICAgIGlmIChub3JtYWxpemVkSWQuaW5jbHVkZXMoJ3BhcnRseScpICYmIG5vcm1hbGl6ZWRJZC5pbmNsdWRlcygnY2xvdWQnKSkge1xuICAgICAgcmV0dXJuIHRoaXMud2VhdGhlckNvbmRpdGlvbnNbJ3BhcnRseUNsb3VkeSddO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkSWQuaW5jbHVkZXMoJ2Nsb3VkJykpIHtcbiAgICAgIHJldHVybiB0aGlzLndlYXRoZXJDb25kaXRpb25zWydjbG91ZHknXTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZElkLmluY2x1ZGVzKCdzdW4nKSkge1xuICAgICAgcmV0dXJuIHRoaXMud2VhdGhlckNvbmRpdGlvbnNbJ3N1bm55J107XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRJZC5pbmNsdWRlcygncmFpbicpKSB7XG4gICAgICByZXR1cm4gdGhpcy53ZWF0aGVyQ29uZGl0aW9uc1sncmFpbiddO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkSWQuaW5jbHVkZXMoJ3Nub3cnKSkge1xuICAgICAgcmV0dXJuIHRoaXMud2VhdGhlckNvbmRpdGlvbnNbJ3Nub3cnXTtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBtYXRjaCBmb3VuZCwgcmV0dXJuIGRlZmF1bHQgdW5rbm93biBjb25kaXRpb25cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6ICd1bmtub3duJyxcbiAgICAgIG5hbWU6ICdVbmtub3duJyxcbiAgICAgIGljb246ICdmYS1zb2xpZCBmYS1xdWVzdGlvbicsXG4gICAgICBzdmdJY29uOiAnd2VhdGhlci5zdmcnLFxuICAgICAgY29sb3I6ICcjOTk5OTk5JyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHdlYXRoZXIgZGF0YSBmb3IgZ2l2ZW4gbG9jYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgV2VhdGhlciByZXF1ZXN0IG9wdGlvbnNcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIHdlYXRoZXIgZGF0YVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0V2VhdGhlcihvcHRpb25zOiBBWFBXZWF0aGVyUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPEFYUFdlYXRoZXJEYXRhPjtcblxuICAvKipcbiAgICogR2V0IHdlYXRoZXIgZm9yZWNhc3QgZm9yIGEgbG9jYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgV2VhdGhlciByZXF1ZXN0IG9wdGlvbnMgd2l0aCBkYXlzXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2Ygd2VhdGhlciBkYXRhIHdpdGggZm9yZWNhc3RcbiAgICovXG4gIGFic3RyYWN0IGdldEZvcmVjYXN0KG9wdGlvbnM6IEFYUFdlYXRoZXJSZXF1ZXN0T3B0aW9ucyAmIHsgZGF5cz86IG51bWJlciB9KTogT2JzZXJ2YWJsZTxBWFBXZWF0aGVyRGF0YT47XG5cbiAgLyoqXG4gICAqIFBhcnNlIGxvY2F0aW9uIHN0cmluZyBpbnRvIGNpdHkgYW5kIGRpc3BsYXkgY29tcG9uZW50c1xuICAgKiBAcGFyYW0gbG9jYXRpb24gTG9jYXRpb24gcXVlcnkgc3RyaW5nXG4gICAqIEByZXR1cm5zIFBhcnNlZCBsb2NhdGlvbiBwYXJ0c1xuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlTG9jYXRpb24obG9jYXRpb246IHN0cmluZyk6IHsgY2l0eTogc3RyaW5nOyBjb3VudHJ5OiBzdHJpbmc7IGRpc3BsYXk6IHN0cmluZyB9IHtcbiAgICBpZiAoIWxvY2F0aW9uIHx8IGxvY2F0aW9uLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHJldHVybiB7IGNpdHk6ICdOZXcgWW9yaycsIGNvdW50cnk6ICdVU0EnLCBkaXNwbGF5OiAnTmV3IFlvcmsnIH07XG4gICAgfVxuXG4gICAgY29uc3QgY2l0eSA9IGxvY2F0aW9uLnRyaW0oKTtcbiAgICByZXR1cm4geyBjaXR5LCBjb3VudHJ5OiAnJywgZGlzcGxheTogY2l0eSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBsb2NhdGlvbiBuYW1lIGZvciBkaXNwbGF5XG4gICAqIEBwYXJhbSBsb2NhdGlvblBhcnRzIFBhcnNlZCBsb2NhdGlvbiBwYXJ0c1xuICAgKiBAcmV0dXJucyBGb3JtYXR0ZWQgbG9jYXRpb24gbmFtZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdExvY2F0aW9uTmFtZShsb2NhdGlvblBhcnRzOiB7IGNpdHk6IHN0cmluZzsgY291bnRyeTogc3RyaW5nOyBkaXNwbGF5OiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGxvY2F0aW9uUGFydHMuY2l0eSB8fCAnVW5rbm93biBMb2NhdGlvbic7XG4gIH1cblxuICAvKipcbiAgICogTWFwIEFQSSBjb25kaXRpb24gdGV4dCB0byBvdXIgaW50ZXJuYWwgY29uZGl0aW9uIElEc1xuICAgKiBAcGFyYW0gY29uZGl0aW9uVGV4dCBDb25kaXRpb24gdGV4dCBmcm9tIEFQSVxuICAgKiBAcmV0dXJucyBJbnRlcm5hbCBjb25kaXRpb24gSURcbiAgICovXG4gIHByb3RlY3RlZCBtYXBBcGlDb25kaXRpb25Ub0lkKGNvbmRpdGlvblRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdGV4dCA9IGNvbmRpdGlvblRleHQudG9Mb3dlckNhc2UoKTtcblxuICAgIC8vIE1hdGNoIFdlYXRoZXJBUEkuY29tIGNvbmRpdGlvbiB0ZXh0XG4gICAgLy8gUmVmZXJlbmNlOiBodHRwczovL3d3dy53ZWF0aGVyYXBpLmNvbS9kb2NzLyN3ZWF0aGVyLWljb25zXG5cbiAgICBpZiAodGV4dC5pbmNsdWRlcygnc3VubnknKSB8fCB0ZXh0LmluY2x1ZGVzKCdjbGVhcicpKSB7XG4gICAgICByZXR1cm4gJ3N1bm55JztcbiAgICB9XG5cbiAgICBpZiAodGV4dCA9PT0gJ3BhcnRseSBjbG91ZHknKSB7XG4gICAgICByZXR1cm4gJ3BhcnRseUNsb3VkeSc7XG4gICAgfVxuXG4gICAgaWYgKHRleHQuaW5jbHVkZXMoJ2Nsb3VkeScpIHx8IHRleHQuaW5jbHVkZXMoJ292ZXJjYXN0JykpIHtcbiAgICAgIHJldHVybiAnY2xvdWR5JztcbiAgICB9XG5cbiAgICBpZiAodGV4dC5pbmNsdWRlcygncmFpbicpIHx8IHRleHQuaW5jbHVkZXMoJ2RyaXp6bGUnKSB8fCB0ZXh0LmluY2x1ZGVzKCdzaG93ZXInKSkge1xuICAgICAgcmV0dXJuICdyYWluJztcbiAgICB9XG5cbiAgICBpZiAodGV4dC5pbmNsdWRlcygndGh1bmRlcicpIHx8IHRleHQuaW5jbHVkZXMoJ2xpZ2h0bmluZycpKSB7XG4gICAgICByZXR1cm4gJ3RodW5kZXJzdG9ybSc7XG4gICAgfVxuXG4gICAgaWYgKHRleHQuaW5jbHVkZXMoJ3Nub3cnKSB8fCB0ZXh0LmluY2x1ZGVzKCdzbGVldCcpIHx8IHRleHQuaW5jbHVkZXMoJ2JsaXp6YXJkJykpIHtcbiAgICAgIHJldHVybiAnc25vdyc7XG4gICAgfVxuXG4gICAgaWYgKHRleHQuaW5jbHVkZXMoJ21pc3QnKSB8fCB0ZXh0LmluY2x1ZGVzKCdmb2cnKSkge1xuICAgICAgcmV0dXJuICdtaXN0JztcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IHRvIHBhcnRseSBjbG91ZHkgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNwZWNpZmljIG1hcHBpbmdcbiAgICByZXR1cm4gJ3BhcnRseUNsb3VkeSc7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgcmFuZG9tIGludGVnZXIgYmV0d2VlbiBtaW4gYW5kIG1heCAoaW5jbHVzaXZlKVxuICAgKiBIZWxwZXIgbWV0aG9kIGZvciBpbXBsZW1lbnRhdGlvbnNcbiAgICogQHBhcmFtIG1pbiBNaW5pbXVtIHZhbHVlXG4gICAqIEBwYXJhbSBtYXggTWF4aW11bSB2YWx1ZVxuICAgKiBAcmV0dXJucyBSYW5kb20gaW50ZWdlclxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFJhbmRvbUludChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgQVBJIGtleSBmb3IgdGhlIHdlYXRoZXIgc2VydmljZVxuICAgKiBUaGlzIGlzIG9ubHkgdXNlZCBieSB0aGUgcmVhbCBBUEkgaW1wbGVtZW50YXRpb24sXG4gICAqIGJ1dCBpcyBkZWZpbmVkIGluIHRoZSBhYnN0cmFjdCBjbGFzcyBmb3IgY29uc2lzdGVuY3lcbiAgICogQHBhcmFtIGtleSBUaGUgQVBJIGtleVxuICAgKi9cbiAgYWJzdHJhY3Qgc2V0QXBpS2V5KGtleTogc3RyaW5nKTogdm9pZDtcbn1cbiJdfQ==","import { Injectable } from '@angular/core';\nimport { Observable, catchError, map, throwError } from 'rxjs';\nimport { AXPWeatherApiAbstract } from './weather-api.abstract';\nimport * as i0 from \"@angular/core\";\n/**\n * Mock Weather API Service\n * Provides simulated weather data for development and testing\n */\nexport class AXPWeatherApiMockService extends AXPWeatherApiAbstract {\n constructor() {\n super(...arguments);\n // Mock configuration\n this.mockDelay = 500;\n }\n /**\n * Get current weather data for given location\n * @param options Weather request options\n * @returns Observable with weather data\n */\n getWeather(options) {\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n return this.getMockWeatherData(locationParts.city, options).pipe(map((mockData) => ({\n ...mockData,\n location: {\n city: locationParts.city,\n country: '',\n displayName: displayName,\n },\n })));\n }\n /**\n * Get weather forecast for a location\n * @param options Weather request options with days\n * @returns Observable of weather data with forecast\n */\n getForecast(options) {\n const days = options.days || 5;\n return this.getMockForecast(options.location || '', days, options);\n }\n /**\n * Get mock weather data for demo/development\n * @param location Location query\n * @param options Request options\n * @returns Observable of mock weather data\n */\n getMockWeatherData(location, options) {\n return new Observable((observer) => {\n setTimeout(() => {\n try {\n const locationParts = this.parseLocation(location);\n const tempUnit = options?.tempUnit || '°C';\n const isCelsius = tempUnit === '°C';\n // Generate more realistic weather data based on location and current date\n const now = new Date();\n const month = now.getMonth(); // 0-11\n // Seasonally appropriate temperature range\n let minRange = 15;\n let maxRange = 25;\n // Northern hemisphere seasonal adjustments\n if (month >= 11 || month <= 1) {\n // Winter\n minRange = -5;\n maxRange = 10;\n }\n else if (month >= 2 && month <= 4) {\n // Spring\n minRange = 10;\n maxRange = 20;\n }\n else if (month >= 5 && month <= 7) {\n // Summer\n minRange = 20;\n maxRange = 35;\n }\n else if (month >= 8 && month <= 10) {\n // Fall/Autumn\n minRange = 10;\n maxRange = 25;\n }\n // Generate current temperature - more likely to be in the middle of the range\n const tempC = Math.round(minRange + (this.getRandomInt(4, 8) / 10) * (maxRange - minRange));\n const tempF = Math.round((tempC * 9) / 5 + 32);\n const humidity = this.getRandomInt(30, 90);\n const windKph = this.getRandomInt(5, 30);\n const windMph = Math.round(windKph * 0.621371);\n // Temperature-based conditions with randomization\n let conditionId = 'partlyCloudy';\n if (tempC > 25)\n conditionId = 'sunny';\n else if (tempC < 10)\n conditionId = 'cloudy';\n if (this.getRandomInt(1, 10) > 7)\n conditionId = 'rain';\n observer.next({\n location: {\n city: locationParts.city,\n country: '',\n displayName: this.formatLocationName(locationParts),\n },\n current: {\n condition: conditionId,\n conditionCode: 0,\n iconUrl: '', // Would be set from API\n tempC: tempC,\n tempF: tempF,\n feelsLikeC: tempC + this.getRandomInt(-3, 2),\n feelsLikeF: tempF + this.getRandomInt(-5, 3),\n humidity: humidity,\n windKph: windKph,\n windMph: windMph,\n windDirection: ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'][this.getRandomInt(0, 7)],\n uv: this.getRandomInt(0, 10),\n lastUpdated: new Date().toISOString(),\n },\n forecast: [],\n });\n observer.complete();\n }\n catch (error) {\n observer.error(error);\n }\n }, this.mockDelay);\n }).pipe(catchError((error) => throwError(() => new Error(`Failed to get weather data: ${error.message}`))));\n }\n /**\n * Get mock forecast data for demo/development\n * @param location Location query\n * @param days Number of forecast days\n * @param options Request options\n * @returns Observable of mock weather data with forecast\n */\n getMockForecast(location, days = 5, options) {\n return this.getMockWeatherData(location, options).pipe(map((data) => {\n const currentCondition = data.current.condition;\n const currentTemp = data.current.tempC;\n // Use the current weather as a base for the forecast trend\n const forecast = Array.from({ length: days }, (_, i) => {\n // Create forecast date for each day (starting from tomorrow)\n const forecastDate = new Date();\n forecastDate.setDate(new Date().getDate() + i + 1);\n const dateStr = forecastDate.toISOString().split('T')[0];\n const dayName = this.dayNames[forecastDate.getDay()];\n // Generate condition with some continuity from current weather\n // Weather tends to be similar for a few days with gradual changes\n let conditionId;\n if (i === 0) {\n // Tomorrow's weather has 60% chance of being similar to today\n conditionId =\n this.getRandomInt(1, 10) <= 6\n ? currentCondition\n : ['sunny', 'partlyCloudy', 'cloudy', 'rain', 'snow'][this.getRandomInt(0, 4)];\n }\n else {\n // Subsequent days have 70% chance of being similar to previous day\n const previousCondition = forecast[i - 1]?.condition || currentCondition;\n conditionId =\n this.getRandomInt(1, 10) <= 7\n ? previousCondition\n : ['sunny', 'partlyCloudy', 'cloudy', 'rain', 'snow'][this.getRandomInt(0, 4)];\n }\n // Generate temperatures with realistic variance\n // Max is typically higher than current temperature\n // Min is typically lower than current temperature\n const tempVariance = this.getRandomInt(-3, 3); // Small day-to-day change\n const baseMaxC = currentTemp + this.getRandomInt(0, 5); // Max is higher than current\n const maxTempC = baseMaxC + tempVariance;\n const minTempC = maxTempC - this.getRandomInt(5, 10); // Min is lower than max\n const maxTempF = Math.round((maxTempC * 9) / 5 + 32);\n const minTempF = Math.round((minTempC * 9) / 5 + 32);\n return {\n date: dateStr,\n day: dayName,\n condition: conditionId,\n iconUrl: '', // Would be set from API\n maxTempC,\n maxTempF,\n minTempC,\n minTempF,\n hour: [],\n };\n });\n return { ...data, forecast };\n }));\n }\n /**\n * Set the API key for the weather service\n * No-op in the mock implementation\n * @param key The API key\n */\n setApiKey(key) {\n // No-op for mock service\n console.log('API key setting is ignored in mock weather service');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiMockService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiMockService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiMockService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VhdGhlci1hcGkubW9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvc2hhcmVkL3dpZGdldHMvd2VhdGhlci93ZWF0aGVyLXNlcnZpY2VzL3dlYXRoZXItYXBpLm1vY2suc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUE0QyxNQUFNLHdCQUF3QixDQUFDOztBQUV6Rzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEscUJBQXFCO0lBRG5FOztRQUVFLHFCQUFxQjtRQUNKLGNBQVMsR0FBRyxHQUFHLENBQUM7S0EyTWxDO0lBek1DOzs7O09BSUc7SUFDTSxVQUFVLENBQUMsT0FBaUM7UUFDbkQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUzRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDOUQsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2pCLEdBQUcsUUFBUTtZQUNYLFFBQVEsRUFBRTtnQkFDUixJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7Z0JBQ3hCLE9BQU8sRUFBRSxFQUFFO2dCQUNYLFdBQVcsRUFBRSxX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d0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFdlYXRoZXJBcGlBYnN0cmFjdCwgQVhQV2VhdGhlckRhdGEsIEFYUFdlYXRoZXJSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4vd2VhdGhlci1hcGkuYWJzdHJhY3QnO1xuXG4vKipcbiAqIE1vY2sgV2VhdGhlciBBUEkgU2VydmljZVxuICogUHJvdmlkZXMgc2ltdWxhdGVkIHdlYXRoZXIgZGF0YSBmb3IgZGV2ZWxvcG1lbnQgYW5kIHRlc3RpbmdcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYUFdlYXRoZXJBcGlNb2NrU2VydmljZSBleHRlbmRzIEFYUFdlYXRoZXJBcGlBYnN0cmFjdCB7XG4gIC8vIE1vY2sgY29uZmlndXJhdGlvblxuICBwcml2YXRlIHJlYWRvbmx5IG1vY2tEZWxheSA9IDUwMDtcblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgd2VhdGhlciBkYXRhIGZvciBnaXZlbiBsb2NhdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyBXZWF0aGVyIHJlcXVlc3Qgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggd2VhdGhlciBkYXRhXG4gICAqL1xuICBvdmVycmlkZSBnZXRXZWF0aGVyKG9wdGlvbnM6IEFYUFdlYXRoZXJSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8QVhQV2VhdGhlckRhdGE+IHtcbiAgICBjb25zdCBsb2NhdGlvblBhcnRzID0gdGhpcy5wYXJzZUxvY2F0aW9uKG9wdGlvbnMubG9jYXRpb24gfHwgJycpO1xuICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gdGhpcy5mb3JtYXRMb2NhdGlvbk5hbWUobG9jYXRpb25QYXJ0cyk7XG5cbiAgICByZXR1cm4gdGhpcy5nZXRNb2NrV2VhdGhlckRhdGEobG9jYXRpb25QYXJ0cy5jaXR5LCBvcHRpb25zKS5waXBlKFxuICAgICAgbWFwKChtb2NrRGF0YSkgPT4gKHtcbiAgICAgICAgLi4ubW9ja0RhdGEsXG4gICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgY2l0eTogbG9jYXRpb25QYXJ0cy5jaXR5LFxuICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0pKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB3ZWF0aGVyIGZvcmVjYXN0IGZvciBhIGxvY2F0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zIFdlYXRoZXIgcmVxdWVzdCBvcHRpb25zIHdpdGggZGF5c1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIG9mIHdlYXRoZXIgZGF0YSB3aXRoIGZvcmVjYXN0XG4gICAqL1xuICBvdmVycmlkZSBnZXRGb3JlY2FzdChvcHRpb25zOiBBWFBXZWF0aGVyUmVxdWVzdE9wdGlvbnMgJiB7IGRheXM/OiBudW1iZXIgfSk6IE9ic2VydmFibGU8QVhQV2VhdGhlckRhdGE+IHtcbiAgICBjb25zdCBkYXlzID0gb3B0aW9ucy5kYXlzIHx8IDU7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TW9ja0ZvcmVjYXN0KG9wdGlvbnMubG9jYXRpb24gfHwgJycsIGRheXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBtb2NrIHdlYXRoZXIgZGF0YSBmb3IgZGVtby9kZXZlbG9wbWVudFxuICAgKiBAcGFyYW0gbG9jYXRpb24gTG9jYXRpb24gcXVlcnlcbiAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgbW9jayB3ZWF0aGVyIGRhdGFcbiAgICovXG4gIHByaXZhdGUgZ2V0TW9ja1dlYXRoZXJEYXRhKGxvY2F0aW9uOiBzdHJpbmcsIG9wdGlvbnM/OiBBWFBXZWF0aGVyUmVxdWVzdE9wdGlvbnMpOiBPYnNlcnZhYmxlPEFYUFdlYXRoZXJEYXRhPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPEFYUFdlYXRoZXJEYXRhPigob2JzZXJ2ZXIpID0+IHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGxvY2F0aW9uUGFydHMgPSB0aGlzLnBhcnNlTG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgICAgIGNvbnN0IHRlbXBVbml0ID0gb3B0aW9ucz8udGVtcFVuaXQgfHwgJ8KwQyc7XG4gICAgICAgICAgY29uc3QgaXNDZWxzaXVzID0gdGVtcFVuaXQgPT09ICfCsEMnO1xuXG4gICAgICAgICAgLy8gR2VuZXJhdGUgbW9yZSByZWFsaXN0aWMgd2VhdGhlciBkYXRhIGJhc2VkIG9uIGxvY2F0aW9uIGFuZCBjdXJyZW50IGRhdGVcbiAgICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgIGNvbnN0IG1vbnRoID0gbm93LmdldE1vbnRoKCk7IC8vIDAtMTFcblxuICAgICAgICAgIC8vIFNlYXNvbmFsbHkgYXBwcm9wcmlhdGUgdGVtcGVyYXR1cmUgcmFuZ2VcbiAgICAgICAgICBsZXQgbWluUmFuZ2UgPSAxNTtcbiAgICAgICAgICBsZXQgbWF4UmFuZ2UgPSAyNTtcblxuICAgICAgICAgIC8vIE5vcnRoZXJuIGhlbWlzcGhlcmUgc2Vhc29uYWwgYWRqdXN0bWVudHNcbiAgICAgICAgICBpZiAobW9udGggPj0gMTEgfHwgbW9udGggPD0gMSkge1xuICAgICAgICAgICAgLy8gV2ludGVyXG4gICAgICAgICAgICBtaW5SYW5nZSA9IC01O1xuICAgICAgICAgICAgbWF4UmFuZ2UgPSAxMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1vbnRoID49IDIgJiYgbW9udGggPD0gNCkge1xuICAgICAgICAgICAgLy8gU3ByaW5nXG4gICAgICAgICAgICBtaW5SYW5nZSA9IDEwO1xuICAgICAgICAgICAgbWF4UmFuZ2UgPSAyMDtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1vbnRoID49IDUgJiYgbW9udGggPD0gNykge1xuICAgICAgICAgICAgLy8gU3VtbWVyXG4gICAgICAgICAgICBtaW5SYW5nZSA9IDIwO1xuICAgICAgICAgICAgbWF4UmFuZ2UgPSAzNTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1vbnRoID49IDggJiYgbW9udGggPD0gMTApIHtcbiAgICAgICAgICAgIC8vIEZhbGwvQXV0dW1uXG4gICAgICAgICAgICBtaW5SYW5nZSA9IDEwO1xuICAgICAgICAgICAgbWF4UmFuZ2UgPSAyNTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSBjdXJyZW50IHRlbXBlcmF0dXJlIC0gbW9yZSBsaWtlbHkgdG8gYmUgaW4gdGhlIG1pZGRsZSBvZiB0aGUgcmFuZ2VcbiAgICAgICAgICBjb25zdCB0ZW1wQyA9IE1hdGgucm91bmQobWluUmFuZ2UgKyAodGhpcy5nZXRSYW5kb21JbnQoNCwgOCkgLyAxMCkgKiAobWF4UmFuZ2UgLSBtaW5SYW5nZSkpO1xuICAgICAgICAgIGNvbnN0IHRlbXBGID0gTWF0aC5yb3VuZCgodGVtcEMgKiA5KSAvIDUgKyAzMik7XG5cbiAgICAgICAgICBjb25zdCBodW1pZGl0eSA9IHRoaXMuZ2V0UmFuZG9tSW50KDMwLCA5MCk7XG4gICAgICAgICAgY29uc3Qgd2luZEtwaCA9IHRoaXMuZ2V0UmFuZG9tSW50KDUsIDMwKTtcbiAgICAgICAgICBjb25zdCB3aW5kTXBoID0gTWF0aC5yb3VuZCh3aW5kS3BoICogMC42MjEzNzEpO1xuXG4gICAgICAgICAgLy8gVGVtcGVyYXR1cmUtYmFzZWQgY29uZGl0aW9ucyB3aXRoIHJhbmRvbWl6YXRpb25cbiAgICAgICAgICBsZXQgY29uZGl0aW9uSWQgPSAncGFydGx5Q2xvdWR5JztcbiAgICAgICAgICBpZiAodGVtcEMgPiAyNSkgY29uZGl0aW9uSWQgPSAnc3VubnknO1xuICAgICAgICAgIGVsc2UgaWYgKHRlbXBDIDwgMTApIGNvbmRpdGlvbklkID0gJ2Nsb3VkeSc7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0UmFuZG9tSW50KDEsIDEwKSA+IDcpIGNvbmRpdGlvbklkID0gJ3JhaW4nO1xuXG4gICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7XG4gICAgICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgICAgICBjaXR5OiBsb2NhdGlvblBhcnRzLmNpdHksXG4gICAgICAgICAgICAgIGNvdW50cnk6ICcnLFxuICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogdGhpcy5mb3JtYXRMb2NhdGlvbk5hbWUobG9jYXRpb25QYXJ0cyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY3VycmVudDoge1xuICAgICAgICAgICAgICBjb25kaXRpb246IGNvbmRpdGlvbklkLFxuICAgICAgICAgICAgICBjb25kaXRpb25Db2RlOiAwLFxuICAgICAgICAgICAgICBpY29uVXJsOiAnJywgLy8gV291bGQgYmUgc2V0IGZyb20gQVBJXG4gICAgICAgICAgICAgIHRlbXBDOiB0ZW1wQyxcbiAgICAgICAgICAgICAgdGVtcEY6IHRlbXBGLFxuICAgICAgICAgICAgICBmZWVsc0xpa2VDOiB0ZW1wQyArIHRoaXMuZ2V0UmFuZG9tSW50KC0zLCAyKSxcbiAgICAgICAgICAgICAgZmVlbHNMaWtlRjogdGVtcEYgKyB0aGlzLmdldFJhbmRvbUludCgtNSwgMyksXG4gICAgICAgICAgICAgIGh1bWlkaXR5OiBodW1pZGl0eSxcbiAgICAgICAgICAgICAgd2luZEtwaDogd2luZEtwaCxcbiAgICAgICAgICAgICAgd2luZE1waDogd2luZE1waCxcbiAgICAgICAgICAgICAgd2luZERpcmVjdGlvbjogWydOJywgJ05FJywgJ0UnLCAnU0UnLCAnUycsICdTVycsICdXJywgJ05XJ11bdGhpcy5nZXRSYW5kb21JbnQoMCwgNyldLFxuICAgICAgICAgICAgICB1djogdGhpcy5nZXRSYW5kb21JbnQoMCwgMTApLFxuICAgICAgICAgICAgICBsYXN0VXBkYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZvcmVjYXN0OiBbXSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9LCB0aGlzLm1vY2tEZWxheSk7XG4gICAgfSkucGlwZShjYXRjaEVycm9yKChlcnJvcikgPT4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYEZhaWxlZCB0byBnZXQgd2VhdGhlciBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCkpKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG1vY2sgZm9yZWNhc3QgZGF0YSBmb3IgZGVtby9kZXZlbG9wbWVudFxuICAgKiBAcGFyYW0gbG9jYXRpb24gTG9jYXRpb24gcXVlcnlcbiAgICogQHBhcmFtIGRheXMgTnVtYmVyIG9mIGZvcmVjYXN0IGRheXNcbiAgICogQHBhcmFtIG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgb2YgbW9jayB3ZWF0aGVyIGRhdGEgd2l0aCBmb3JlY2FzdFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRNb2NrRm9yZWNhc3QoXG4gICAgbG9jYXRpb246IHN0cmluZyxcbiAgICBkYXlzOiBudW1iZXIgPSA1LFxuICAgIG9wdGlvbnM/OiBBWFBXZWF0aGVyUmVxdWVzdE9wdGlvbnMsXG4gICk6IE9ic2VydmFibGU8QVhQV2VhdGhlckRhdGE+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRNb2NrV2VhdGhlckRhdGEobG9jYXRpb24sIG9wdGlvbnMpLnBpcGUoXG4gICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudENvbmRpdGlvbiA9IGRhdGEuY3VycmVudC5jb25kaXRpb247XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUZW1wID0gZGF0YS5jdXJyZW50LnRlbXBDO1xuXG4gICAgICAgIC8vIFVzZSB0aGUgY3VycmVudCB3ZWF0aGVyIGFzIGEgYmFzZSBmb3IgdGhlIGZvcmVjYXN0IHRyZW5kXG4gICAgICAgIGNvbnN0IGZvcmVjYXN0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogZGF5cyB9LCAoXywgaSkgPT4ge1xuICAgICAgICAgIC8vIENyZWF0ZSBmb3JlY2FzdCBkYXRlIGZvciBlYWNoIGRheSAoc3RhcnRpbmcgZnJvbSB0b21vcnJvdylcbiAgICAgICAgICBjb25zdCBmb3JlY2FzdERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgIGZvcmVjYXN0RGF0ZS5zZXREYXRlKG5ldyBEYXRlKCkuZ2V0RGF0ZSgpICsgaSArIDEpO1xuXG4gICAgICAgICAgY29uc3QgZGF0ZVN0ciA9IGZvcmVjYXN0RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gICAgICAgICAgY29uc3QgZGF5TmFtZSA9IHRoaXMuZGF5TmFtZXNbZm9yZWNhc3REYXRlLmdldERheSgpXTtcblxuICAgICAgICAgIC8vIEdlbmVyYXRlIGNvbmRpdGlvbiB3aXRoIHNvbWUgY29udGludWl0eSBmcm9tIGN1cnJlbnQgd2VhdGhlclxuICAgICAgICAgIC8vIFdlYXRoZXIgdGVuZHMgdG8gYmUgc2ltaWxhciBmb3IgYSBmZXcgZGF5cyB3aXRoIGdyYWR1YWwgY2hhbmdlc1xuICAgICAgICAgIGxldCBjb25kaXRpb25JZDogc3RyaW5nO1xuXG4gICAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICAgIC8vIFRvbW9ycm93J3Mgd2VhdGhlciBoYXMgNjAlIGNoYW5jZSBvZiBiZWluZyBzaW1pbGFyIHRvIHRvZGF5XG4gICAgICAgICAgICBjb25kaXRpb25JZCA9XG4gICAgICAgICAgICAgIHRoaXMuZ2V0UmFuZG9tSW50KDEsIDEwKSA8PSA2XG4gICAgICAgICAgICAgICAgPyBjdXJyZW50Q29uZGl0aW9uXG4gICAgICAgICAgICAgICAgOiBbJ3N1bm55JywgJ3BhcnRseUNsb3VkeScsICdjbG91ZHknLCAncmFpbicsICdzbm93J11bdGhpcy5nZXRSYW5kb21JbnQoMCwgNCldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTdWJzZXF1ZW50IGRheXMgaGF2ZSA3MCUgY2hhbmNlIG9mIGJlaW5nIHNpbWlsYXIgdG8gcHJldmlvdXMgZGF5XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c0NvbmRpdGlvbiA9IGZvcmVjYXN0W2kgLSAxXT8uY29uZGl0aW9uIHx8IGN1cnJlbnRDb25kaXRpb247XG4gICAgICAgICAgICBjb25kaXRpb25JZCA9XG4gICAgICAgICAgICAgIHRoaXMuZ2V0UmFuZG9tSW50KDEsIDEwKSA8PSA3XG4gICAgICAgICAgICAgICAgPyBwcmV2aW91c0NvbmRpdGlvblxuICAgICAgICAgICAgICAgIDogWydzdW5ueScsICdwYXJ0bHlDbG91ZHknLCAnY2xvdWR5JywgJ3JhaW4nLCAnc25vdyddW3RoaXMuZ2V0UmFuZG9tSW50KDAsIDQpXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBHZW5lcmF0ZSB0ZW1wZXJhdHVyZXMgd2l0aCByZWFsaXN0aWMgdmFyaWFuY2VcbiAgICAgICAgICAvLyBNYXggaXMgdHlwaWNhbGx5IGhpZ2hlciB0aGFuIGN1cnJlbnQgdGVtcGVyYXR1cmVcbiAgICAgICAgICAvLyBNaW4gaXMgdHlwaWNhbGx5IGxvd2VyIHRoYW4gY3VycmVudCB0ZW1wZXJhdHVyZVxuICAgICAgICAgIGNvbnN0IHRlbXBWYXJpYW5jZSA9IHRoaXMuZ2V0UmFuZG9tSW50KC0zLCAzKTsgLy8gU21hbGwgZGF5LXRvLWRheSBjaGFuZ2VcbiAgICAgICAgICBjb25zdCBiYXNlTWF4QyA9IGN1cnJlbnRUZW1wICsgdGhpcy5nZXRSYW5kb21JbnQoMCwgNSk7IC8vIE1heCBpcyBoaWdoZXIgdGhhbiBjdXJyZW50XG4gICAgICAgICAgY29uc3QgbWF4VGVtcEMgPSBiYXNlTWF4QyArIHRlbXBWYXJpYW5jZTtcbiAgICAgICAgICBjb25zdCBtaW5UZW1wQyA9IG1heFRlbXBDIC0gdGhpcy5nZXRSYW5kb21JbnQoNSwgMTApOyAvLyBNaW4gaXMgbG93ZXIgdGhhbiBtYXhcblxuICAgICAgICAgIGNvbnN0IG1heFRlbXBGID0gTWF0aC5yb3VuZCgobWF4VGVtcEMgKiA5KSAvIDUgKyAzMik7XG4gICAgICAgICAgY29uc3QgbWluVGVtcEYgPSBNYXRoLnJvdW5kKChtaW5UZW1wQyAqIDkpIC8gNSArIDMyKTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBkYXRlOiBkYXRlU3RyLFxuICAgICAgICAgICAgZGF5OiBkYXlOYW1lLFxuICAgICAgICAgICAgY29uZGl0aW9uOiBjb25kaXRpb25JZCxcbiAgICAgICAgICAgIGljb25Vcmw6ICcnLCAvLyBXb3VsZCBiZSBzZXQgZnJvbSBBUElcbiAgICAgICAgICAgIG1heFRlbXBDLFxuICAgICAgICAgICAgbWF4VGVtcEYsXG4gICAgICAgICAgICBtaW5UZW1wQyxcbiAgICAgICAgICAgIG1pblRlbXBGLFxuICAgICAgICAgICAgaG91cjogW10sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4uZGF0YSwgZm9yZWNhc3QgfTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBBUEkga2V5IGZvciB0aGUgd2VhdGhlciBzZXJ2aWNlXG4gICAqIE5vLW9wIGluIHRoZSBtb2NrIGltcGxlbWVudGF0aW9uXG4gICAqIEBwYXJhbSBrZXkgVGhlIEFQSSBrZXlcbiAgICovXG4gIG92ZXJyaWRlIHNldEFwaUtleShrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIE5vLW9wIGZvciBtb2NrIHNlcnZpY2VcbiAgICBjb25zb2xlLmxvZygnQVBJIGtleSBzZXR0aW5nIGlzIGlnbm9yZWQgaW4gbW9jayB3ZWF0aGVyIHNlcnZpY2UnKTtcbiAgfVxufVxuIl19","import { InjectionToken } from '@angular/core';\nexport const AXP_WEATHER_API_KEY = new InjectionToken('AXP_WEATHER_API_KEY', {\n providedIn: 'root',\n factory: () => {\n return '40281dc1e31749edb6c104828250604';\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VhdGhlci1hcGkua2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvc2hhcmVkL3dpZGdldHMvd2VhdGhlci93ZWF0aGVyLXNlcnZpY2VzL3dlYXRoZXItYXBpLmtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFTLHFCQUFxQixFQUFFO0lBQ25GLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixPQUFPLGlDQUFpQyxDQUFDO0lBQzNDLENBQUM7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgQVhQX1dFQVRIRVJfQVBJX0tFWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdBWFBfV0VBVEhFUl9BUElfS0VZJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IHtcbiAgICByZXR1cm4gJzQwMjgxZGMxZTMxNzQ5ZWRiNmMxMDQ4MjgyNTA2MDQnO1xuICB9LFxufSk7XG4iXX0=","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { catchError, map, throwError } from 'rxjs';\nimport { AXPWeatherApiAbstract } from './weather-api.abstract';\nimport { AXP_WEATHER_API_KEY } from './weather-api.key';\nimport * as i0 from \"@angular/core\";\n/**\n * Real Weather API Service\n * Fetches actual weather data from a weather API service\n */\nexport class AXPWeatherApiService extends AXPWeatherApiAbstract {\n constructor() {\n super(...arguments);\n this.http = inject(HttpClient);\n // API configuration\n this.baseApiUrl = 'https://api.weatherapi.com/v1';\n this.apiKeyToken = inject(AXP_WEATHER_API_KEY, { optional: true });\n }\n /**\n * Set the API key for the weather service\n * @param key The API key\n */\n setApiKey(key) {\n if (key && key.trim() !== '') {\n this.apiKeyToken = key;\n }\n }\n /**\n * Get current weather data for given location\n * @param options Weather request options\n * @returns Observable with weather data\n */\n getWeather(options) {\n // If forecast is likely needed, we should fetch it all at once\n if (options.useMockData === false || options.useMockData === undefined) {\n // For real API, use the forecast endpoint which includes current data\n return this.getForecast({\n ...options,\n days: 1, // Request minimal forecast data\n });\n }\n // For mock data, we'll continue using separate calls for backward compatibility\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n // Use real API with query based on city only\n const query = encodeURIComponent(locationParts.city);\n const url = `${this.baseApiUrl}/current.json?key=${this.apiKeyToken}&q=${query}&aqi=no`;\n return this.http.get(url).pipe(map((data) => this.transformApiResponse(data, displayName)), catchError((error) => {\n console.error('Weather API error:', error);\n // Check for location not found error\n if (error.error?.error?.code === 1006) {\n return throwError(() => new Error(`Location \"${locationParts.city}\" not found. Please check the city name and try again.`));\n }\n return throwError(() => new Error(`Failed to fetch weather data: ${error.message}`));\n }));\n }\n /**\n * Get weather forecast for a location\n * @param options Weather request options with days\n * @returns Observable of weather data with forecast\n */\n getForecast(options) {\n const locationParts = this.parseLocation(options.location || '');\n const displayName = this.formatLocationName(locationParts);\n const days = options.days || 5;\n // Build forecast API URL\n const query = encodeURIComponent(locationParts.city);\n const url = `${this.baseApiUrl}/forecast.json?key=${this.apiKeyToken}&q=${query}&days=${days}&aqi=no`;\n return this.http.get(url).pipe(map((data) => this.transformForecastResponse(data, displayName, days)), catchError((error) => {\n console.error('Weather API error:', error);\n // Check for location not found error\n if (error.error?.error?.code === 1006) {\n return throwError(() => new Error(`Location \"${locationParts.city}\" not found. Please check the city name and try again.`));\n }\n return throwError(() => new Error(`Failed to fetch forecast data: ${error.message}`));\n }));\n }\n /**\n * Transform API response to our internal data model\n * @param apiData Raw API response\n * @param displayName Formatted location name\n * @returns Normalized weather data\n */\n transformApiResponse(apiData, displayName) {\n // Map API condition text to our condition IDs\n const conditionText = apiData.current?.condition?.text || '';\n const conditionId = this.mapApiConditionToId(conditionText);\n return {\n location: {\n city: apiData.location?.name || '',\n country: apiData.location?.country || '',\n displayName: displayName,\n },\n current: {\n condition: conditionId, // Use our mapped condition ID\n conditionCode: apiData.current?.condition?.code || 0,\n iconUrl: apiData.current?.condition?.icon || '',\n tempC: apiData.current?.temp_c || 0,\n tempF: apiData.current?.temp_f || 0,\n feelsLikeC: apiData.current?.feelslike_c || 0,\n feelsLikeF: apiData.current?.feelslike_f || 0,\n humidity: apiData.current?.humidity || 0,\n windKph: apiData.current?.wind_kph || 0,\n windMph: apiData.current?.wind_mph || 0,\n windDirection: apiData.current?.wind_dir || '',\n uv: apiData.current?.uv || 0,\n lastUpdated: apiData.current?.last_updated || new Date().toISOString(),\n },\n forecast: [],\n };\n }\n /**\n * Transform forecast API response to our internal data model\n * @param apiData Raw API response with forecast\n * @param displayName Formatted location name\n * @param days Number of forecast days\n * @returns Normalized weather data with forecast\n */\n transformForecastResponse(apiData, displayName, days) {\n // First transform the current weather data using the current field of the forecast response\n const weatherData = this.transformApiResponse(apiData, displayName);\n // Then add the forecast data\n const forecastDays = apiData.forecast?.forecastday || [];\n weatherData.forecast = forecastDays.slice(0, days).map((day) => {\n // Parse the date for day name\n const date = new Date(day.date);\n const dayName = date.toLocaleDateString('en-US', { weekday: 'short' });\n // Map condition to our internal ID\n const conditionText = day.day?.condition?.text || '';\n const conditionId = this.mapApiConditionToId(conditionText);\n return {\n date: day.date,\n day: dayName,\n condition: conditionId,\n iconUrl: day.day?.condition?.icon || '',\n maxTempC: day.day?.maxtemp_c || 0,\n maxTempF: day.day?.maxtemp_f || 0,\n minTempC: day.day?.mintemp_c || 0,\n minTempF: day.day?.mintemp_f || 0,\n hour: day.hour.map((hour) => ({\n time: hour.time,\n condition: hour.condition.code,\n iconUrl: hour.condition.icon,\n tempC: hour.temp_c,\n tempF: hour.temp_f,\n })),\n };\n });\n return weatherData;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherApiService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VhdGhlci1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL3dlYXRoZXIvd2VhdGhlci1zZXJ2aWNlcy93ZWF0aGVyLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUE0QyxNQUFNLHdCQUF3QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUV4RDs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEscUJBQXFCO0lBRC9EOztRQUVtQixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNDLG9CQUFvQjtRQUNILGVBQVUsR0FBRywrQkFBK0IsQ0FBQztRQUN0RCxnQkFBVyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBOEp2RTtJQTVKQzs7O09BR0c7SUFDSCxTQUFTLENBQUMsR0FBVztRQUNuQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ00sVUFBVSxDQUFDLE9BQWlDO1FBQ25ELCtE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ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjYXRjaEVycm9yLCBtYXAsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFdlYXRoZXJBcGlBYnN0cmFjdCwgQVhQV2VhdGhlckRhdGEsIEFYUFdlYXRoZXJSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4vd2VhdGhlci1hcGkuYWJzdHJhY3QnO1xuaW1wb3J0IHsgQVhQX1dFQVRIRVJfQVBJX0tFWSB9IGZyb20gJy4vd2VhdGhlci1hcGkua2V5JztcblxuLyoqXG4gKiBSZWFsIFdlYXRoZXIgQVBJIFNlcnZpY2VcbiAqIEZldGNoZXMgYWN0dWFsIHdlYXRoZXIgZGF0YSBmcm9tIGEgd2VhdGhlciBBUEkgc2VydmljZVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhQV2VhdGhlckFwaVNlcnZpY2UgZXh0ZW5kcyBBWFBXZWF0aGVyQXBpQWJzdHJhY3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgLy8gQVBJIGNvbmZpZ3VyYXRpb25cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlQXBpVXJsID0gJ2h0dHBzOi8vYXBpLndlYXRoZXJhcGkuY29tL3YxJztcbiAgcHJpdmF0ZSBhcGlLZXlUb2tlbiA9IGluamVjdChBWFBfV0VBVEhFUl9BUElfS0VZLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIEFQSSBrZXkgZm9yIHRoZSB3ZWF0aGVyIHNlcnZpY2VcbiAgICogQHBhcmFtIGtleSBUaGUgQVBJIGtleVxuICAgKi9cbiAgc2V0QXBpS2V5KGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGtleSAmJiBrZXkudHJpbSgpICE9PSAnJykge1xuICAgICAgdGhpcy5hcGlLZXlUb2tlbiA9IGtleTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1cnJlbnQgd2VhdGhlciBkYXRhIGZvciBnaXZlbiBsb2NhdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyBXZWF0aGVyIHJlcXVlc3Qgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggd2VhdGhlciBkYXRhXG4gICAqL1xuICBvdmVycmlkZSBnZXRXZWF0aGVyKG9wdGlvbnM6IEFYUFdlYXRoZXJSZXF1ZXN0T3B0aW9ucyk6IE9ic2VydmFibGU8QVhQV2VhdGhlckRhdGE+IHtcbiAgICAvLyBJZiBmb3JlY2FzdCBpcyBsaWtlbHkgbmVlZGVkLCB3ZSBzaG91bGQgZmV0Y2ggaXQgYWxsIGF0IG9uY2VcbiAgICBpZiAob3B0aW9ucy51c2VNb2NrRGF0YSA9PT0gZmFsc2UgfHwgb3B0aW9ucy51c2VNb2NrRGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBGb3IgcmVhbCBBUEksIHVzZSB0aGUgZm9yZWNhc3QgZW5kcG9pbnQgd2hpY2ggaW5jbHVkZXMgY3VycmVudCBkYXRhXG4gICAgICByZXR1cm4gdGhpcy5nZXRGb3JlY2FzdCh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGRheXM6IDEsIC8vIFJlcXVlc3QgbWluaW1hbCBmb3JlY2FzdCBkYXRhXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBGb3IgbW9jayBkYXRhLCB3ZSdsbCBjb250aW51ZSB1c2luZyBzZXBhcmF0ZSBjYWxscyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgIGNvbnN0IGxvY2F0aW9uUGFydHMgPSB0aGlzLnBhcnNlTG9jYXRpb24ob3B0aW9ucy5sb2NhdGlvbiB8fCAnJyk7XG4gICAgY29uc3QgZGlzcGxheU5hbWUgPSB0aGlzLmZvcm1hdExvY2F0aW9uTmFtZShsb2NhdGlvblBhcnRzKTtcblxuICAgIC8vIFVzZSByZWFsIEFQSSB3aXRoIHF1ZXJ5IGJhc2VkIG9uIGNpdHkgb25seVxuICAgIGNvbnN0IHF1ZXJ5ID0gZW5jb2RlVVJJQ29tcG9uZW50KGxvY2F0aW9uUGFydHMuY2l0eSk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlQXBpVXJsfS9jdXJyZW50Lmpzb24/a2V5PSR7dGhpcy5hcGlLZXlUb2tlbn0mcT0ke3F1ZXJ5fSZhcWk9bm9gO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpLnBpcGUoXG4gICAgICBtYXAoKGRhdGEpID0+IHRoaXMudHJhbnNmb3JtQXBpUmVzcG9uc2UoZGF0YSwgZGlzcGxheU5hbWUpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dlYXRoZXIgQVBJIGVycm9yOicsIGVycm9yKTtcbiAgICAgICAgLy8gQ2hlY2sgZm9yIGxvY2F0aW9uIG5vdCBmb3VuZCBlcnJvclxuICAgICAgICBpZiAoZXJyb3IuZXJyb3I/LmVycm9yPy5jb2RlID09PSAxMDA2KSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXG4gICAgICAgICAgICAoKSA9PiBuZXcgRXJyb3IoYExvY2F0aW9uIFwiJHtsb2NhdGlvblBhcnRzLmNpdHl9XCIgbm90IGZvdW5kLiBQbGVhc2UgY2hlY2sgdGhlIGNpdHkgbmFtZSBhbmQgdHJ5IGFnYWluLmApLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBGYWlsZWQgdG8gZmV0Y2ggd2VhdGhlciBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCkpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgd2VhdGhlciBmb3JlY2FzdCBmb3IgYSBsb2NhdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucyBXZWF0aGVyIHJlcXVlc3Qgb3B0aW9ucyB3aXRoIGRheXNcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBvZiB3ZWF0aGVyIGRhdGEgd2l0aCBmb3JlY2FzdFxuICAgKi9cbiAgb3ZlcnJpZGUgZ2V0Rm9yZWNhc3Qob3B0aW9uczogQVhQV2VhdGhlclJlcXVlc3RPcHRpb25zICYgeyBkYXlzPzogbnVtYmVyIH0pOiBPYnNlcnZhYmxlPEFYUFdlYXRoZXJEYXRhPiB7XG4gICAgY29uc3QgbG9jYXRpb25QYXJ0cyA9IHRoaXMucGFyc2VMb2NhdGlvbihvcHRpb25zLmxvY2F0aW9uIHx8ICcnKTtcbiAgICBjb25zdCBkaXNwbGF5TmFtZSA9IHRoaXMuZm9ybWF0TG9jYXRpb25OYW1lKGxvY2F0aW9uUGFydHMpO1xuICAgIGNvbnN0IGRheXMgPSBvcHRpb25zLmRheXMgfHwgNTtcblxuICAgIC8vIEJ1aWxkIGZvcmVjYXN0IEFQSSBVUkxcbiAgICBjb25zdCBxdWVyeSA9IGVuY29kZVVSSUNvbXBvbmVudChsb2NhdGlvblBhcnRzLmNpdHkpO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZUFwaVVybH0vZm9yZWNhc3QuanNvbj9rZXk9JHt0aGlzLmFwaUtleVRva2VufSZxPSR7cXVlcnl9JmRheXM9JHtkYXlzfSZhcWk9bm9gO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih1cmwpLnBpcGUoXG4gICAgICBtYXAoKGRhdGEpID0+IHRoaXMudHJhbnNmb3JtRm9yZWNhc3RSZXNwb25zZShkYXRhLCBkaXNwbGF5TmFtZSwgZGF5cykpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignV2VhdGhlciBBUEkgZXJyb3I6JywgZXJyb3IpO1xuICAgICAgICAvLyBDaGVjayBmb3IgbG9jYXRpb24gbm90IGZvdW5kIGVycm9yXG4gICAgICAgIGlmIChlcnJvci5lcnJvcj8uZXJyb3I/LmNvZGUgPT09IDEwMDYpIHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihcbiAgICAgICAgICAgICgpID0+IG5ldyBFcnJvcihgTG9jYXRpb24gXCIke2xvY2F0aW9uUGFydHMuY2l0eX1cIiBub3QgZm91bmQuIFBsZWFzZSBjaGVjayB0aGUgY2l0eSBuYW1lIGFuZCB0cnkgYWdhaW4uYCksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoYEZhaWxlZCB0byBmZXRjaCBmb3JlY2FzdCBkYXRhOiAke2Vycm9yLm1lc3NhZ2V9YCkpO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gQVBJIHJlc3BvbnNlIHRvIG91ciBpbnRlcm5hbCBkYXRhIG1vZGVsXG4gICAqIEBwYXJhbSBhcGlEYXRhIFJhdyBBUEkgcmVzcG9uc2VcbiAgICogQHBhcmFtIGRpc3BsYXlOYW1lIEZvcm1hdHRlZCBsb2NhdGlvbiBuYW1lXG4gICAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgd2VhdGhlciBkYXRhXG4gICAqL1xuICBwcml2YXRlIHRyYW5zZm9ybUFwaVJlc3BvbnNlKGFwaURhdGE6IGFueSwgZGlzcGxheU5hbWU6IHN0cmluZyk6IEFYUFdlYXRoZXJEYXRhIHtcbiAgICAvLyBNYXAgQVBJIGNvbmRpdGlvbiB0ZXh0IHRvIG91ciBjb25kaXRpb24gSURzXG4gICAgY29uc3QgY29uZGl0aW9uVGV4dCA9IGFwaURhdGEuY3VycmVudD8uY29uZGl0aW9uPy50ZXh0IHx8ICcnO1xuICAgIGNvbnN0IGNvbmRpdGlvbklkID0gdGhpcy5tYXBBcGlDb25kaXRpb25Ub0lkKGNvbmRpdGlvblRleHQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgIGNpdHk6IGFwaURhdGEubG9jYXRpb24/Lm5hbWUgfHwgJycsXG4gICAgICAgIGNvdW50cnk6IGFwaURhdGEubG9jYXRpb24/LmNvdW50cnkgfHwgJycsXG4gICAgICAgIGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZSxcbiAgICAgIH0sXG4gICAgICBjdXJyZW50OiB7XG4gICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uSWQsIC8vIFVzZSBvdXIgbWFwcGVkIGNvbmRpdGlvbiBJRFxuICAgICAgICBjb25kaXRpb25Db2RlOiBhcGlEYXRhLmN1cnJlbnQ/LmNvbmRpdGlvbj8uY29kZSB8fCAwLFxuICAgICAgICBpY29uVXJsOiBhcGlEYXRhLmN1cnJlbnQ/LmNvbmRpdGlvbj8uaWNvbiB8fCAnJyxcbiAgICAgICAgdGVtcEM6IGFwaURhdGEuY3VycmVudD8udGVtcF9jIHx8IDAsXG4gICAgICAgIHRlbXBGOiBhcGlEYXRhLmN1cnJlbnQ/LnRlbXBfZiB8fCAwLFxuICAgICAgICBmZWVsc0xpa2VDOiBhcGlEYXRhLmN1cnJlbnQ/LmZlZWxzbGlrZV9jIHx8IDAsXG4gICAgICAgIGZlZWxzTGlrZUY6IGFwaURhdGEuY3VycmVudD8uZmVlbHNsaWtlX2YgfHwgMCxcbiAgICAgICAgaHVtaWRpdHk6IGFwaURhdGEuY3VycmVudD8uaHVtaWRpdHkgfHwgMCxcbiAgICAgICAgd2luZEtwaDogYXBpRGF0YS5jdXJyZW50Py53aW5kX2twaCB8fCAwLFxuICAgICAgICB3aW5kTXBoOiBhcGlEYXRhLmN1cnJlbnQ/LndpbmRfbXBoIHx8IDAsXG4gICAgICAgIHdpbmREaXJlY3Rpb246IGFwaURhdGEuY3VycmVudD8ud2luZF9kaXIgfHwgJycsXG4gICAgICAgIHV2OiBhcGlEYXRhLmN1cnJlbnQ/LnV2IHx8IDAsXG4gICAgICAgIGxhc3RVcGRhdGVkOiBhcGlEYXRhLmN1cnJlbnQ/Lmxhc3RfdXBkYXRlZCB8fCBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9LFxuICAgICAgZm9yZWNhc3Q6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIGZvcmVjYXN0IEFQSSByZXNwb25zZSB0byBvdXIgaW50ZXJuYWwgZGF0YSBtb2RlbFxuICAgKiBAcGFyYW0gYXBpRGF0YSBSYXcgQVBJIHJlc3BvbnNlIHdpdGggZm9yZWNhc3RcbiAgICogQHBhcmFtIGRpc3BsYXlOYW1lIEZvcm1hdHRlZCBsb2NhdGlvbiBuYW1lXG4gICAqIEBwYXJhbSBkYXlzIE51bWJlciBvZiBmb3JlY2FzdCBkYXlzXG4gICAqIEByZXR1cm5zIE5vcm1hbGl6ZWQgd2VhdGhlciBkYXRhIHdpdGggZm9yZWNhc3RcbiAgICovXG4gIHByaXZhdGUgdHJhbnNmb3JtRm9yZWNhc3RSZXNwb25zZShhcGlEYXRhOiBhbnksIGRpc3BsYXlOYW1lOiBzdHJpbmcsIGRheXM6IG51bWJlcik6IEFYUFdlYXRoZXJEYXRhIHtcbiAgICAvLyBGaXJzdCB0cmFuc2Zvcm0gdGhlIGN1cnJlbnQgd2VhdGhlciBkYXRhIHVzaW5nIHRoZSBjdXJyZW50IGZpZWxkIG9mIHRoZSBmb3JlY2FzdCByZXNwb25zZVxuICAgIGNvbnN0IHdlYXRoZXJEYXRhID0gdGhpcy50cmFuc2Zvcm1BcGlSZXNwb25zZShhcGlEYXRhLCBkaXNwbGF5TmFtZSk7XG5cbiAgICAvLyBUaGVuIGFkZCB0aGUgZm9yZWNhc3QgZGF0YVxuICAgIGNvbnN0IGZvcmVjYXN0RGF5cyA9IGFwaURhdGEuZm9yZWNhc3Q/LmZvcmVjYXN0ZGF5IHx8IFtdO1xuICAgIHdlYXRoZXJEYXRhLmZvcmVjYXN0ID0gZm9yZWNhc3REYXlzLnNsaWNlKDAsIGRheXMpLm1hcCgoZGF5OiBhbnkpID0+IHtcbiAgICAgIC8vIFBhcnNlIHRoZSBkYXRlIGZvciBkYXkgbmFtZVxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKGRheS5kYXRlKTtcbiAgICAgIGNvbnN0IGRheU5hbWUgPSBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tVVMnLCB7IHdlZWtkYXk6ICdzaG9ydCcgfSk7XG5cbiAgICAgIC8vIE1hcCBjb25kaXRpb24gdG8gb3VyIGludGVybmFsIElEXG4gICAgICBjb25zdCBjb25kaXRpb25UZXh0ID0gZGF5LmRheT8uY29uZGl0aW9uPy50ZXh0IHx8ICcnO1xuICAgICAgY29uc3QgY29uZGl0aW9uSWQgPSB0aGlzLm1hcEFwaUNvbmRpdGlvblRvSWQoY29uZGl0aW9uVGV4dCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGU6IGRheS5kYXRlLFxuICAgICAgICBkYXk6IGRheU5hbWUsXG4gICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uSWQsXG4gICAgICAgIGljb25Vcmw6IGRheS5kYXk/LmNvbmRpdGlvbj8uaWNvbiB8fCAnJyxcbiAgICAgICAgbWF4VGVtcEM6IGRheS5kYXk/Lm1heHRlbXBfYyB8fCAwLFxuICAgICAgICBtYXhUZW1wRjogZGF5LmRheT8ubWF4dGVtcF9mIHx8IDAsXG4gICAgICAgIG1pblRlbXBDOiBkYXkuZGF5Py5taW50ZW1wX2MgfHwgMCxcbiAgICAgICAgbWluVGVtcEY6IGRheS5kYXk/Lm1pbnRlbXBfZiB8fCAwLFxuICAgICAgICBob3VyOiBkYXkuaG91ci5tYXAoKGhvdXI6IGFueSkgPT4gKHtcbiAgICAgICAgICB0aW1lOiBob3VyLnRpbWUsXG4gICAgICAgICAgY29uZGl0aW9uOiBob3VyLmNvbmRpdGlvbi5jb2RlLFxuICAgICAgICAgIGljb25Vcmw6IGhvdXIuY29uZGl0aW9uLmljb24sXG4gICAgICAgICAgdGVtcEM6IGhvdXIudGVtcF9jLFxuICAgICAgICAgIHRlbXBGOiBob3VyLnRlbXBfZixcbiAgICAgICAgfSkpLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB3ZWF0aGVyRGF0YTtcbiAgfVxufVxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { catchError, finalize, of } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherApiService } from '../weather-services';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/skeleton\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@acorex/components/button\";\nexport class AXMAdvancedWeatherViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super();\n this.weatherService = inject(AXPWeatherApiAbstract);\n this.weatherData = signal(null);\n this.isLoading = signal(true);\n this.hasError = signal(false);\n this.errorMessage = signal('');\n this.city = computed(() => this.options()['city'] || 'New York');\n this.temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n this.forecastDays = computed(() => (this.options()['forecastDays'] ?? 2) + 1);\n this.forecastHours = computed(() => this.options()['forecastHours'] ?? 5);\n this.iconCache = new Map();\n this.displayedForecast = computed(() => {\n this.forecastDays();\n const weatherData = this.weatherData();\n if (!weatherData?.forecast)\n return [];\n // Skip today's forecast for the bottom row display\n return weatherData.forecast.slice(1, this.forecastDays());\n });\n this.displayedHourlyForecast = computed(() => {\n this.forecastHours();\n const weatherData = this.weatherData();\n if (!weatherData?.forecast?.[0]?.hour)\n return [];\n const now = new Date();\n const currentHour = now.getHours();\n const todayHours = weatherData.forecast[0].hour;\n // Get hours after current hour for today\n const remainingTodayHours = todayHours.filter((hour) => {\n const hourTime = new Date(hour.time);\n return hourTime.getHours() > currentHour;\n });\n // If we need more hours, get from tomorrow\n let result = [...remainingTodayHours];\n if (result.length < this.forecastHours() && weatherData.forecast.length > 1) {\n const tomorrowHours = weatherData.forecast[1].hour;\n const neededFromTomorrow = this.forecastHours() - result.length;\n result = [...result, ...tomorrowHours.slice(0, neededFromTomorrow)];\n }\n // Limit to requested number of hours\n return result.slice(0, this.forecastHours());\n });\n effect(() => {\n if (this.options()) {\n this.loadWeatherData();\n }\n });\n }\n loadWeatherData() {\n if (!this.city()) {\n this.isLoading.set(false);\n return;\n }\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n const requestOptions = {\n location: this.city(),\n tempUnit: this.temperatureUnit(),\n days: this.forecastDays(),\n };\n this.weatherService\n .getForecast(requestOptions)\n .pipe(catchError((error) => {\n this.handleError(error);\n return of(null);\n }), finalize(() => this.isLoading.set(false)))\n .subscribe((data) => {\n if (data) {\n this.weatherData.set(data);\n }\n });\n }\n handleError(error) {\n console.error('Advanced weather widget error:', error);\n this.hasError.set(true);\n this.errorMessage.set(error.message || 'Failed to load weather data');\n }\n getConditionIcon(conditionId) {\n if (!conditionId) {\n return '';\n }\n if (this.iconCache.has(conditionId)) {\n return this.iconCache.get(conditionId);\n }\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n const iconPath = `assets/images/weather/${svgIcon}`;\n this.iconCache.set(conditionId, iconPath);\n return iconPath;\n }\n getConditionName(conditionId) {\n if (!conditionId) {\n return 'Unknown';\n }\n const condition = this.weatherService.getCondition(conditionId);\n return condition?.name || 'Unknown';\n }\n getCurrentTemperature() {\n if (!this.weatherData())\n return 0;\n return this.temperatureUnit() === '°C' ? this.weatherData().current.tempC : this.weatherData().current.tempF;\n }\n getMaxTemp() {\n if (!this.weatherData()?.forecast?.[0])\n return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData().forecast[0].maxTempC\n : this.weatherData().forecast[0].maxTempF;\n }\n getMinTemp() {\n if (!this.weatherData()?.forecast?.[0])\n return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData().forecast[0].minTempC\n : this.weatherData().forecast[0].minTempF;\n }\n getForecastDayTemp(day) {\n if (!day)\n return 0;\n return this.temperatureUnit() === '°C' ? day.maxTempC : day.maxTempF;\n }\n parseDate(dateStr) {\n return new Date(dateStr);\n }\n getDayName(date) {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n const checkDate = new Date(date);\n checkDate.setHours(0, 0, 0, 0);\n if (checkDate.getTime() === today.getTime()) {\n return 'Today';\n }\n if (checkDate.getTime() === tomorrow.getTime()) {\n return 'Tomorrow';\n }\n const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return days[checkDate.getDay()];\n }\n getHourLabel(timeStr) {\n const time = new Date(timeStr);\n return time.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n }\n getHourTemp(hour) {\n return this.temperatureUnit() === '°C' ? hour.tempC : hour.tempF;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMAdvancedWeatherViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMAdvancedWeatherViewComponent, isStandalone: true, selector: \"ng-component\", providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ], usesInheritance: true, ngImport: i0, template: `\n <div class=\"ax-size-full ax-p-6\">\n @if (weatherData() && !isLoading() && !hasError()) {\n <div class=\"ax-flex ax-h-full ax-flex-col ax-gap-4 ax-justify-around\">\n <div class=\"ax-flex ax-items-center ax-justify-around ax-w-full ax-gap-1 ax-flex-wrap\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-shrink-0\">\n <img\n [src]=\"getConditionIcon(weatherData()!.current.condition)\"\n class=\"ax-size-32 ax-object-cover -ax-m-8\"\n [alt]=\"getConditionName(weatherData()!.current.condition)\"\n loading=\"lazy\"\n />\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-items-start\">\n <span class=\"ax-text-lg ax-font-medium ax-text-muted\">{{\n getConditionName(weatherData()!.current.condition)\n }}</span>\n <span class=\"ax-text-5xl\" style=\"text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)\"\n >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-2\">\n <span class=\"ax-text-2xl ax-font-bold ax-capitalize\">{{ city() }}</span>\n <div class=\"ax-flex ax-gap-4 ax-font-semibold ax-text-muted\">\n <span\n >H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n <span\n >L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n </div>\n </div>\n\n <div class=\"ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-overflow-x-auto ax-shrink-0\">\n @for (hour of displayedHourlyForecast(); track hour.time) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-2 ax-cursor-default ax-min-w-16 ax-gap-2\">\n <span class=\"ax-text-sm ax-font-medium ax-text-muted\">{{ getHourLabel(hour.time) }}</span>\n <img\n [src]=\"getConditionIcon(weatherData()!.forecast[0].condition)\"\n class=\"ax-size-16 ax-object-cover -ax-m-4\"\n [alt]=\"getConditionName(weatherData()!.forecast[0].condition)\"\n />\n <span class=\"ax-text-lg ax-font-semibold\"\n >{{ getHourTemp(hour) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n }\n </div>\n\n <div class=\"ax-mt-2 ax-w-full\">\n <div\n class=\"ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-2 ax-items-center ax-justify-items-start\"\n >\n @for (day of displayedForecast(); track day.date) {\n <span class=\"ax-font-medium\">{{ getDayName(parseDate(day.date)) }}</span>\n <div class=\"ax-flex ax-items-center ax-justify-center\">\n <img\n [src]=\"getConditionIcon(day.condition)\"\n class=\"ax-w-8 ax-h-8 ax-scale-[2]\"\n [alt]=\"getConditionName(day.condition)\"\n />\n </div>\n <span class=\"ax-font-semibold\"\n >{{ getForecastDayTemp(day) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n <span class=\"ax-text-muted\"\n >{{ day.minTempC | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n } @empty {\n <span class=\"ax-text-muted\">No forecast data available</span>\n }\n </div>\n </div>\n </div>\n } @else {\n <div class=\"ax-flex ax-size-full ax-flex-col ax-gap-6\" [attr.aria-busy]=\"isLoading()\">\n @if (isLoading()) {\n <!-- Current weather skeleton -->\n <div class=\"ax-flex ax-items-start ax-justify-around ax-w-full ax-gap-4\">\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton class=\"ax-w-20 ax-h-20 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <ax-skeleton class=\"ax-w-24 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-32 ax-h-12 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-end ax-gap-2\">\n <ax-skeleton class=\"ax-w-28 ax-h-8 ax-rounded\"></ax-skeleton>\n <div class=\"ax-flex ax-gap-2\">\n <ax-skeleton class=\"ax-w-12 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-12 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n </div>\n\n <!-- Hourly forecast skeleton -->\n <div class=\"ax-flex ax-w-full ax-gap-2 ax-items-center ax-justify-around\">\n @for (i of [1, 2, 3, 4, 5]; track i) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-2 ax-min-w-16\">\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-10 ax-rounded-full ax-my-1\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n }\n </div>\n\n <!-- Daily forecast skeleton -->\n <div class=\"ax-mt-2 ax-w-full\">\n <div class=\"ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-4 ax-items-center\">\n @for (i of [1, 2]; track i) {\n <ax-skeleton class=\"ax-w-20 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8 ax-h-8 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n }\n </div>\n </div>\n } @else if (hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"axp-weather-no-data-state\">\n <i class=\"fa-solid fa-cloud-sun\"></i>\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <ax-button\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"'weather.refresh-weather' | translate: { scope: 'dashboard' } | async\"\n (onClick)=\"loadWeatherData()\"\n ></ax-button>\n </div>\n }\n </div>\n }\n </div>\n `, isInline: true, styles: [\":host{display:block;width:100%;height:100%}.ax-text-muted{color:gray}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}sup{font-weight:300;position:relative;top:-.3em;font-size:.6em;margin-left:.1em}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.DecimalPipe, name: \"number\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTooltipModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i2.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i4.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMAdvancedWeatherViewComponent, decorators: [{\n type: Component,\n args: [{ template: `\n <div class=\"ax-size-full ax-p-6\">\n @if (weatherData() && !isLoading() && !hasError()) {\n <div class=\"ax-flex ax-h-full ax-flex-col ax-gap-4 ax-justify-around\">\n <div class=\"ax-flex ax-items-center ax-justify-around ax-w-full ax-gap-1 ax-flex-wrap\">\n <div class=\"ax-flex ax-items-center ax-gap-2 ax-shrink-0\">\n <img\n [src]=\"getConditionIcon(weatherData()!.current.condition)\"\n class=\"ax-size-32 ax-object-cover -ax-m-8\"\n [alt]=\"getConditionName(weatherData()!.current.condition)\"\n loading=\"lazy\"\n />\n <div class=\"ax-flex ax-flex-col ax-gap-1 ax-items-start\">\n <span class=\"ax-text-lg ax-font-medium ax-text-muted\">{{\n getConditionName(weatherData()!.current.condition)\n }}</span>\n <span class=\"ax-text-5xl\" style=\"text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)\"\n >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-2\">\n <span class=\"ax-text-2xl ax-font-bold ax-capitalize\">{{ city() }}</span>\n <div class=\"ax-flex ax-gap-4 ax-font-semibold ax-text-muted\">\n <span\n >H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n <span\n >L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n </div>\n </div>\n\n <div class=\"ax-flex ax-w-full ax-gap-1 ax-items-center ax-justify-around ax-overflow-x-auto ax-shrink-0\">\n @for (hour of displayedHourlyForecast(); track hour.time) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-p-2 ax-cursor-default ax-min-w-16 ax-gap-2\">\n <span class=\"ax-text-sm ax-font-medium ax-text-muted\">{{ getHourLabel(hour.time) }}</span>\n <img\n [src]=\"getConditionIcon(weatherData()!.forecast[0].condition)\"\n class=\"ax-size-16 ax-object-cover -ax-m-4\"\n [alt]=\"getConditionName(weatherData()!.forecast[0].condition)\"\n />\n <span class=\"ax-text-lg ax-font-semibold\"\n >{{ getHourTemp(hour) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n }\n </div>\n\n <div class=\"ax-mt-2 ax-w-full\">\n <div\n class=\"ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-2 ax-items-center ax-justify-items-start\"\n >\n @for (day of displayedForecast(); track day.date) {\n <span class=\"ax-font-medium\">{{ getDayName(parseDate(day.date)) }}</span>\n <div class=\"ax-flex ax-items-center ax-justify-center\">\n <img\n [src]=\"getConditionIcon(day.condition)\"\n class=\"ax-w-8 ax-h-8 ax-scale-[2]\"\n [alt]=\"getConditionName(day.condition)\"\n />\n </div>\n <span class=\"ax-font-semibold\"\n >{{ getForecastDayTemp(day) | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n <span class=\"ax-text-muted\"\n >{{ day.minTempC | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n } @empty {\n <span class=\"ax-text-muted\">No forecast data available</span>\n }\n </div>\n </div>\n </div>\n } @else {\n <div class=\"ax-flex ax-size-full ax-flex-col ax-gap-6\" [attr.aria-busy]=\"isLoading()\">\n @if (isLoading()) {\n <!-- Current weather skeleton -->\n <div class=\"ax-flex ax-items-start ax-justify-around ax-w-full ax-gap-4\">\n <div class=\"ax-flex ax-items-center ax-gap-4\">\n <ax-skeleton class=\"ax-w-20 ax-h-20 ax-rounded-full\"></ax-skeleton>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <ax-skeleton class=\"ax-w-24 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-32 ax-h-12 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n <div class=\"ax-flex ax-flex-col ax-items-end ax-gap-2\">\n <ax-skeleton class=\"ax-w-28 ax-h-8 ax-rounded\"></ax-skeleton>\n <div class=\"ax-flex ax-gap-2\">\n <ax-skeleton class=\"ax-w-12 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-12 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n </div>\n\n <!-- Hourly forecast skeleton -->\n <div class=\"ax-flex ax-w-full ax-gap-2 ax-items-center ax-justify-around\">\n @for (i of [1, 2, 3, 4, 5]; track i) {\n <div class=\"ax-flex ax-flex-col ax-items-center ax-gap-2 ax-min-w-16\">\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-10 ax-rounded-full ax-my-1\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n }\n </div>\n\n <!-- Daily forecast skeleton -->\n <div class=\"ax-mt-2 ax-w-full\">\n <div class=\"ax-grid ax-grid-cols-[1fr_auto_auto_auto] ax-gap-x-4 ax-gap-y-4 ax-items-center\">\n @for (i of [1, 2]; track i) {\n <ax-skeleton class=\"ax-w-20 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-8 ax-h-8 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-10 ax-h-6 ax-rounded\"></ax-skeleton>\n }\n </div>\n </div>\n } @else if (hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"axp-weather-no-data-state\">\n <i class=\"fa-solid fa-cloud-sun\"></i>\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <ax-button\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"'weather.refresh-weather' | translate: { scope: 'dashboard' } | async\"\n (onClick)=\"loadWeatherData()\"\n ></ax-button>\n </div>\n }\n </div>\n }\n </div>\n `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXDecoratorModule, AXTooltipModule, AXSkeletonModule, AXTranslationModule, AXButtonModule], providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ], styles: [\":host{display:block;width:100%;height:100%}.ax-text-muted{color:gray}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}sup{font-weight:300;position:relative;top:-.3em;font-size:.6em;margin-left:.1em}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtd2VhdGhlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy93ZWF0aGVyL2FkdmFuY2VkLXdlYXRoZXIvYWR2YW5jZWQtd2VhdGhlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBa0MsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBMkxsSCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsdUJBQXVCO0lBZTFFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFmRixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzdDLGdCQUFX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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzSVQsbUJBeUNnQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLENBQUMsYUFDdkc7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLG9CQUFvQjt5QkFDL0I7cUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IEFYVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBXZWF0aGVyQXBpQWJzdHJhY3QsIEFYUFdlYXRoZXJBcGlTZXJ2aWNlLCBBWFBXZWF0aGVyRGF0YSwgQVhQV2VhdGhlckhvdXIgfSBmcm9tICcuLi93ZWF0aGVyLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImF4LXNpemUtZnVsbCBheC1wLTZcIj5cbiAgICAgIEBpZiAod2VhdGhlckRhdGEoKSAmJiAhaXNMb2FkaW5nKCkgJiYgIWhhc0Vycm9yKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaC1mdWxsIGF4LWZsZXgtY29sIGF4LWdhcC00IGF4LWp1c3RpZnktYXJvdW5kXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktYXJvdW5kIGF4LXctZnVsbCBheC1nYXAtMSBheC1mbGV4LXdyYXBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMiBheC1zaHJpbmstMFwiPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgW3NyY109XCJnZXRDb25kaXRpb25JY29uKHdlYXRoZXJEYXRhKCkhLmN1cnJlbnQuY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheC1zaXplLTMyIGF4LW9iamVjdC1jb3ZlciAtYXgtbS04XCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImdldENvbmRpdGlvbk5hbWUod2VhdGhlckRhdGEoKSEuY3VycmVudC5jb25kaXRpb24pXCJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPVwibGF6eVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0xIGF4LWl0ZW1zLXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LWxnIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtbXV0ZWRcIj57e1xuICAgICAgICAgICAgICAgICAgZ2V0Q29uZGl0aW9uTmFtZSh3ZWF0aGVyRGF0YSgpIS5jdXJyZW50LmNvbmRpdGlvbilcbiAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtNXhsXCIgc3R5bGU9XCJ0ZXh0LXNoYWRvdzogMXB4IDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpXCJcbiAgICAgICAgICAgICAgICAgID57eyBnZXRDdXJyZW50VGVtcGVyYXR1cmUoKSB8IG51bWJlcjogJzEuMC0wJyB9fTxzdXA+e3sgdGVtcGVyYXR1cmVVbml0KCkgfX08L3N1cD48L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LTJ4bCBheC1mb250LWJvbGQgYXgtY2FwaXRhbGl6ZVwiPnt7IGNpdHkoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTQgYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgID5IOiB7eyBnZXRNYXhUZW1wKCkgfCBudW1iZXI6ICcxLjAtMCcgfX08c3VwPnt7IHRlbXBlcmF0dXJlVW5pdCgpIH19PC9zdXA+PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICA+TDoge3sgZ2V0TWluVGVtcCgpIHwgbnVtYmVyOiAnMS4wLTAnIH19PHN1cD57eyB0ZW1wZXJhdHVyZVVuaXQoKSB9fTwvc3VwPjwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LXctZnVsbCBheC1nYXAtMSBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1hcm91bmQgYXgtb3ZlcmZsb3cteC1hdXRvIGF4LXNocmluay0wXCI+XG4gICAgICAgICAgICBAZm9yIChob3VyIG9mIGRpc3BsYXllZEhvdXJseUZvcmVjYXN0KCk7IHRyYWNrIGhvdXIudGltZSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtcC0yIGF4LWN1cnNvci1kZWZhdWx0IGF4LW1pbi13LTE2IGF4LWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXNtIGF4LWZvbnQtbWVkaXVtIGF4LXRleHQtbXV0ZWRcIj57eyBnZXRIb3VyTGFiZWwoaG91ci50aW1lKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBbc3JjXT1cImdldENvbmRpdGlvbkljb24od2VhdGhlckRhdGEoKSEuZm9yZWNhc3RbMF0uY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LXNpemUtMTYgYXgtb2JqZWN0LWNvdmVyIC1heC1tLTRcIlxuICAgICAgICAgICAgICAgICAgW2FsdF09XCJnZXRDb25kaXRpb25OYW1lKHdlYXRoZXJEYXRhKCkhLmZvcmVjYXN0WzBdLmNvbmRpdGlvbilcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LWxnIGF4LWZvbnQtc2VtaWJvbGRcIlxuICAgICAgICAgICAgICAgICAgPnt7IGdldEhvdXJUZW1wKGhvdXIpIHwgbnVtYmVyOiAnMS4wLTAnIH19PHN1cD57eyB0ZW1wZXJhdHVyZVVuaXQoKSB9fTwvc3VwPjwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbXQtMiBheC13LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJheC1ncmlkIGF4LWdyaWQtY29scy1bMWZyX2F1dG9fYXV0b19hdXRvXSBheC1nYXAteC00IGF4LWdhcC15LTIgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktaXRlbXMtc3RhcnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAZm9yIChkYXkgb2YgZGlzcGxheWVkRm9yZWNhc3QoKTsgdHJhY2sgZGF5LmRhdGUpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LWZvbnQtbWVkaXVtXCI+e3sgZ2V0RGF5TmFtZShwYXJzZURhdGUoZGF5LmRhdGUpKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXRDb25kaXRpb25JY29uKGRheS5jb25kaXRpb24pXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJheC13LTggYXgtaC04IGF4LXNjYWxlLVsyXVwiXG4gICAgICAgICAgICAgICAgICAgIFthbHRdPVwiZ2V0Q29uZGl0aW9uTmFtZShkYXkuY29uZGl0aW9uKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZFwiXG4gICAgICAgICAgICAgICAgICA+e3sgZ2V0Rm9yZWNhc3REYXlUZW1wKGRheSkgfCBudW1iZXI6ICcxLjAtMCcgfX08c3VwPnt7IHRlbXBlcmF0dXJlVW5pdCgpIH19PC9zdXA+PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1tdXRlZFwiXG4gICAgICAgICAgICAgICAgICA+e3sgZGF5Lm1pblRlbXBDIHwgbnVtYmVyOiAnMS4wLTAnIH19PHN1cD57eyB0ZW1wZXJhdHVyZVVuaXQoKSB9fTwvc3VwPjwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgfSBAZW1wdHkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1tdXRlZFwiPk5vIGZvcmVjYXN0IGRhdGEgYXZhaWxhYmxlPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtc2l6ZS1mdWxsIGF4LWZsZXgtY29sIGF4LWdhcC02XCIgW2F0dHIuYXJpYS1idXN5XT1cImlzTG9hZGluZygpXCI+XG4gICAgICAgICAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgICAgICAgICAgPCEtLSBDdXJyZW50IHdlYXRoZXIgc2tlbGV0b24gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1zdGFydCBheC1qdXN0aWZ5LWFyb3VuZCBheC13LWZ1bGwgYXgtZ2FwLTRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC00XCI+XG4gICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy0yMCBheC1oLTIwIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctMjQgYXgtaC02IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy0zMiBheC1oLTEyIGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtZW5kIGF4LWdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy0yOCBheC1oLTggYXgtcm91bmRlZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctMTIgYXgtaC02IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy0xMiBheC1oLTYgYXgtcm91bmRlZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gSG91cmx5IGZvcmVjYXN0IHNrZWxldG9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtdy1mdWxsIGF4LWdhcC0yIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWFyb3VuZFwiPlxuICAgICAgICAgICAgICBAZm9yIChpIG9mIFsxLCAyLCAzLCA0LCA1XTsgdHJhY2sgaSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMiBheC1taW4tdy0xNlwiPlxuICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy0xMiBheC1oLTQgYXgtcm91bmRlZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LTEwIGF4LWgtMTAgYXgtcm91bmRlZC1mdWxsIGF4LW15LTFcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy0xMCBheC1oLTYgYXgtcm91bmRlZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIERhaWx5IGZvcmVjYXN0IHNrZWxldG9uIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LW10LTIgYXgtdy1mdWxsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1ncmlkIGF4LWdyaWQtY29scy1bMWZyX2F1dG9fYXV0b19hdXRvXSBheC1nYXAteC00IGF4LWdhcC15LTQgYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgQGZvciAoaSBvZiBbMSwgMl07IHRyYWNrIGkpIHtcbiAgICAgICAgICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctMjAgYXgtaC02IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy04IGF4LWgtOCBheC1yb3VuZGVkLWZ1bGxcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy0xMCBheC1oLTYgYXgtcm91bmRlZFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LTEwIGF4LWgtNiBheC1yb3VuZGVkXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoaGFzRXJyb3IoKSkge1xuICAgICAgICAgICAgPCEtLSBObyBkYXRhIHN0YXRlIChub3QgbG9hZGluZywgbm8gZXJyb3IpIC0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLW5vLWRhdGEtc3RhdGVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jbG91ZC1zdW5cIj48L2k+XG4gICAgICAgICAgICAgIDxwPnt7ICd3ZWF0aGVyLm5vLWRhdGEnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX08L3A+XG4gICAgICAgICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICAgICAgICBbbG9va109XCInb3V0bGluZSdcIlxuICAgICAgICAgICAgICAgIFtjb2xvcl09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgICAgW3RleHRdPVwiJ3dlYXRoZXIucmVmcmVzaC13ZWF0aGVyJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAob25DbGljayk9XCJsb2FkV2VhdGhlckRhdGEoKVwiXG4gICAgICAgICAgICAgID48L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIEBhcHBseSBheC1zaXplLWZ1bGw7XG4gICAgICB9XG5cbiAgICAgIC5heC10ZXh0LW11dGVkIHtcbiAgICAgICAgY29sb3I6IGdyYXk7XG4gICAgICB9XG5cbiAgICAgIC5heHAtd2VhdGhlci1uby1kYXRhLXN0YXRlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgcGFkZGluZzogMnJlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgICAgIGkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTtcbiAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtO1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN1cCB7XG4gICAgICAgIEBhcHBseSBheC1mb250LWxpZ2h0O1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogLTAuM2VtO1xuICAgICAgICBmb250LXNpemU6IDAuNmVtO1xuICAgICAgICBtYXJnaW4tbGVmdDogMC4xZW07XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlLCBBWFRvb2x0aXBNb2R1bGUsIEFYU2tlbGV0b25Nb2R1bGUsIEFYVHJhbnNsYXRpb25Nb2R1bGUsIEFYQnV0dG9uTW9kdWxlXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQV2VhdGhlckFwaUFic3RyYWN0LFxuICAgICAgdXNlQ2xhc3M6IEFYUFdlYXRoZXJBcGlTZXJ2aWNlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTUFkdmFuY2VkV2VhdGhlclZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB7XG4gIHByaXZhdGUgd2VhdGhlclNlcnZpY2UgPSBpbmplY3QoQVhQV2VhdGhlckFwaUFic3RyYWN0KTtcbiAgcHJvdGVjdGVkIHdlYXRoZXJEYXRhID0gc2lnbmFsPEFYUFdlYXRoZXJEYXRhIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcHJvdGVjdGVkIGhhc0Vycm9yID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIGVycm9yTWVzc2FnZSA9IHNpZ25hbCgnJyk7XG5cbiAgcHJvdGVjdGVkIGNpdHkgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKVsnY2l0eSddIHx8ICdOZXcgWW9yaycpO1xuICBwcm90ZWN0ZWQgdGVtcGVyYXR1cmVVbml0ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKClbJ3RlbXBlcmF0dXJlVW5pdCddPy5pZCB8fCAnwrBDJyk7XG4gIHByb3RlY3RlZCBmb3JlY2FzdERheXMgPSBjb21wdXRlZCgoKSA9PiAodGhpcy5vcHRpb25zKClbJ2ZvcmVjYXN0RGF5cyddID8/IDIpICsgMSk7XG4gIHByb3RlY3RlZCBmb3JlY2FzdEhvdXJzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKClbJ2ZvcmVjYXN0SG91cnMnXSA/PyA1KTtcblxuICBwcml2YXRlIGljb25DYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucygpKSB7XG4gICAgICAgIHRoaXMubG9hZFdlYXRoZXJEYXRhKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbG9hZFdlYXRoZXJEYXRhKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jaXR5KCkpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuaGFzRXJyb3Iuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoJycpO1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnMgPSB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5jaXR5KCksXG4gICAgICB0ZW1wVW5pdDogdGhpcy50ZW1wZXJhdHVyZVVuaXQoKSxcbiAgICAgIGRheXM6IHRoaXMuZm9yZWNhc3REYXlzKCksXG4gICAgfTtcblxuICAgIHRoaXMud2VhdGhlclNlcnZpY2VcbiAgICAgIC5nZXRGb3JlY2FzdChyZXF1ZXN0T3B0aW9ucylcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNMb2FkaW5nLnNldChmYWxzZSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgIHRoaXMud2VhdGhlckRhdGEuc2V0KGRhdGEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0FkdmFuY2VkIHdlYXRoZXIgd2lkZ2V0IGVycm9yOicsIGVycm9yKTtcbiAgICB0aGlzLmhhc0Vycm9yLnNldCh0cnVlKTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoZXJyb3IubWVzc2FnZSB8fCAnRmFpbGVkIHRvIGxvYWQgd2VhdGhlciBkYXRhJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29uZGl0aW9uSWNvbihjb25kaXRpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbmRpdGlvbklkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmICh0aGlzLmljb25DYWNoZS5oYXMoY29uZGl0aW9uSWQpKSB7XG4gICAgICByZXR1cm4gdGhpcy5pY29uQ2FjaGUuZ2V0KGNvbmRpdGlvbklkKSE7XG4gICAgfVxuXG4gICAgY29uc3Qgc3ZnSWNvbiA9IHRoaXMud2VhdGhlclNlcnZpY2UuZ2V0Q29uZGl0aW9uKGNvbmRpdGlvbklkKS5zdmdJY29uO1xuICAgIGNvbnN0IGljb25QYXRoID0gYGFzc2V0cy9pbWFnZXMvd2VhdGhlci8ke3N2Z0ljb259YDtcbiAgICB0aGlzLmljb25DYWNoZS5zZXQoY29uZGl0aW9uSWQsIGljb25QYXRoKTtcbiAgICByZXR1cm4gaWNvblBhdGg7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q29uZGl0aW9uTmFtZShjb25kaXRpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbmRpdGlvbklkKSB7XG4gICAgICByZXR1cm4gJ1Vua25vd24nO1xuICAgIH1cbiAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLndlYXRoZXJTZXJ2aWNlLmdldENvbmRpdGlvbihjb25kaXRpb25JZCk7XG4gICAgcmV0dXJuIGNvbmRpdGlvbj8ubmFtZSB8fCAnVW5rbm93bic7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Q3VycmVudFRlbXBlcmF0dXJlKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLndlYXRoZXJEYXRhKCkpIHJldHVybiAwO1xuICAgIHJldHVybiB0aGlzLnRlbXBlcmF0dXJlVW5pdCgpID09PSAnwrBDJyA/IHRoaXMud2VhdGhlckRhdGEoKSEuY3VycmVudC50ZW1wQyA6IHRoaXMud2VhdGhlckRhdGEoKSEuY3VycmVudC50ZW1wRjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRNYXhUZW1wKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLndlYXRoZXJEYXRhKCk/LmZvcmVjYXN0Py5bMF0pIHJldHVybiAwO1xuICAgIHJldHVybiB0aGlzLnRlbXBlcmF0dXJlVW5pdCgpID09PSAnwrBDJ1xuICAgICAgPyB0aGlzLndlYXRoZXJEYXRhKCkhLmZvcmVjYXN0WzBdLm1heFRlbXBDXG4gICAgICA6IHRoaXMud2VhdGhlckRhdGEoKSEuZm9yZWNhc3RbMF0ubWF4VGVtcEY7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TWluVGVtcCgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy53ZWF0aGVyRGF0YSgpPy5mb3JlY2FzdD8uWzBdKSByZXR1cm4gMDtcbiAgICByZXR1cm4gdGhpcy50ZW1wZXJhdHVyZVVuaXQoKSA9PT0gJ8KwQydcbiAgICAgID8gdGhpcy53ZWF0aGVyRGF0YSgpIS5mb3JlY2FzdFswXS5taW5UZW1wQ1xuICAgICAgOiB0aGlzLndlYXRoZXJEYXRhKCkhLmZvcmVjYXN0WzBdLm1pblRlbXBGO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZvcmVjYXN0RGF5VGVtcChkYXk6IGFueSk6IG51bWJlciB7XG4gICAgaWYgKCFkYXkpIHJldHVybiAwO1xuICAgIHJldHVybiB0aGlzLnRlbXBlcmF0dXJlVW5pdCgpID09PSAnwrBDJyA/IGRheS5tYXhUZW1wQyA6IGRheS5tYXhUZW1wRjtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZURhdGUoZGF0ZVN0cjogc3RyaW5nKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGVTdHIpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERheU5hbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIHRvZGF5LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIGNvbnN0IHRvbW9ycm93ID0gbmV3IERhdGUodG9kYXkpO1xuICAgIHRvbW9ycm93LnNldERhdGUodG9tb3Jyb3cuZ2V0RGF0ZSgpICsgMSk7XG5cbiAgICBjb25zdCBjaGVja0RhdGUgPSBuZXcgRGF0ZShkYXRlKTtcbiAgICBjaGVja0RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICBpZiAoY2hlY2tEYXRlLmdldFRpbWUoKSA9PT0gdG9kYXkuZ2V0VGltZSgpKSB7XG4gICAgICByZXR1cm4gJ1RvZGF5JztcbiAgICB9XG4gICAgaWYgKGNoZWNrRGF0ZS5nZXRUaW1lKCkgPT09IHRvbW9ycm93LmdldFRpbWUoKSkge1xuICAgICAgcmV0dXJuICdUb21vcnJvdyc7XG4gICAgfVxuXG4gICAgY29uc3QgZGF5cyA9IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXTtcbiAgICByZXR1cm4gZGF5c1tjaGVja0RhdGUuZ2V0RGF5KCldO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRpc3BsYXllZEZvcmVjYXN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuZm9yZWNhc3REYXlzKCk7XG4gICAgY29uc3Qgd2VhdGhlckRhdGEgPSB0aGlzLndlYXRoZXJEYXRhKCk7XG4gICAgaWYgKCF3ZWF0aGVyRGF0YT8uZm9yZWNhc3QpIHJldHVybiBbXTtcbiAgICAvLyBTa2lwIHRvZGF5J3MgZm9yZWNhc3QgZm9yIHRoZSBib3R0b20gcm93IGRpc3BsYXlcbiAgICByZXR1cm4gd2VhdGhlckRhdGEuZm9yZWNhc3Quc2xpY2UoMSwgdGhpcy5mb3JlY2FzdERheXMoKSk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRIb3VybHlGb3JlY2FzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICB0aGlzLmZvcmVjYXN0SG91cnMoKTtcbiAgICBjb25zdCB3ZWF0aGVyRGF0YSA9IHRoaXMud2VhdGhlckRhdGEoKTtcbiAgICBpZiAoIXdlYXRoZXJEYXRhPy5mb3JlY2FzdD8uWzBdPy5ob3VyKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGN1cnJlbnRIb3VyID0gbm93LmdldEhvdXJzKCk7XG4gICAgY29uc3QgdG9kYXlIb3VycyA9IHdlYXRoZXJEYXRhLmZvcmVjYXN0WzBdLmhvdXI7XG5cbiAgICAvLyBHZXQgaG91cnMgYWZ0ZXIgY3VycmVudCBob3VyIGZvciB0b2RheVxuICAgIGNvbnN0IHJlbWFpbmluZ1RvZGF5SG91cnMgPSB0b2RheUhvdXJzLmZpbHRlcigoaG91cikgPT4ge1xuICAgICAgY29uc3QgaG91clRpbWUgPSBuZXcgRGF0ZShob3VyLnRpbWUpO1xuICAgICAgcmV0dXJuIGhvdXJUaW1lLmdldEhvdXJzKCkgPiBjdXJyZW50SG91cjtcbiAgICB9KTtcblxuICAgIC8vIElmIHdlIG5lZWQgbW9yZSBob3VycywgZ2V0IGZyb20gdG9tb3Jyb3dcbiAgICBsZXQgcmVzdWx0ID0gWy4uLnJlbWFpbmluZ1RvZGF5SG91cnNdO1xuICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgdGhpcy5mb3JlY2FzdEhvdXJzKCkgJiYgd2VhdGhlckRhdGEuZm9yZWNhc3QubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgdG9tb3Jyb3dIb3VycyA9IHdlYXRoZXJEYXRhLmZvcmVjYXN0WzFdLmhvdXI7XG4gICAgICBjb25zdCBuZWVkZWRGcm9tVG9tb3Jyb3cgPSB0aGlzLmZvcmVjYXN0SG91cnMoKSAtIHJlc3VsdC5sZW5ndGg7XG4gICAgICByZXN1bHQgPSBbLi4ucmVzdWx0LCAuLi50b21vcnJvd0hvdXJzLnNsaWNlKDAsIG5lZWRlZEZyb21Ub21vcnJvdyldO1xuICAgIH1cblxuICAgIC8vIExpbWl0IHRvIHJlcXVlc3RlZCBudW1iZXIgb2YgaG91cnNcbiAgICByZXR1cm4gcmVzdWx0LnNsaWNlKDAsIHRoaXMuZm9yZWNhc3RIb3VycygpKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGdldEhvdXJMYWJlbCh0aW1lU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSh0aW1lU3RyKTtcbiAgICByZXR1cm4gdGltZS50b0xvY2FsZVRpbWVTdHJpbmcoW10sIHsgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JywgaG91cjEyOiBmYWxzZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRIb3VyVGVtcChob3VyOiBBWFBXZWF0aGVySG91cik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGVyYXR1cmVVbml0KCkgPT09ICfCsEMnID8gaG91ci50ZW1wQyA6IGhvdXIudGVtcEY7XG4gIH1cbn1cbiJdfQ==","import { AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../chart.type';\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPAdvancedWeatherWidget = {\n name: 'advanced-weather',\n title: 'Advanced Weather Widget',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n {\n name: 'forecastHours',\n title: '@dashboard:widgets.weather.forecast-hours',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 5,\n dataType: 'number',\n interface: {\n name: 'forecastHours',\n path: 'options.forecastHours',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 8,\n step: 1,\n },\n },\n },\n visible: true,\n },\n {\n name: 'forecastDays',\n title: '@dashboard:widgets.weather.forecast-days',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 2,\n dataType: 'number',\n interface: {\n name: 'forecastDays',\n path: 'options.forecastDays',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 2,\n step: 1,\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./advanced-weather.component').then((c) => c.AXMAdvancedWeatherViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 5,\n minWidth: 3,\n minHeight: 5,\n maxWidth: 5,\n maxHeight: 7,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtd2VhdGhlci5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy93ZWF0aGVyL2FkdmFuY2VkLXdlYXRoZXIvYWR2YW5jZWQtd2VhdGhlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFvQjtJQUN2RCxJQUFJLEVBQUUsa0JBQWtCO0lBQ3hCLEtBQUssRUFBRSx5QkFBeUI7SUFDaEMsVUFBVSxFQUFFLENBQUMsNEJBQTRCLENBQUM7SUFDMUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDO0lBQzVDLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsVUFBVSxFQUFFO1FBQ1Y7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLEtBQUssRUFBRSw2Q0FBNkM7WUFDcEQsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07b0JBQzlCLE9BQU8sRUFBRTt3QkFDUCxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO3FCQUN6QjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0UsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsaUNBQWlDO1lBQ3hDLEtBQUssRUFBRSx1QkFBdUI7WUFDOUIsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxVQUFVO2dCQUN4QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDN0I7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7UUFFRDtZQUNFLElBQUksRUFBRSxlQUFlO1lBQ3JCLEtBQUssRUFBRSwyQ0FBMkM7WUFDbEQsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLENBQUM7Z0JBQ2YsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsZUFBZTtvQkFDckIsSUFBSSxFQUFFLHVCQUF1QjtvQkFDN0IsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07b0JBQzlCLE9BQU8sRUFBRTt3QkFDUCxRQUFRLEVBQUUsQ0FBQzt3QkFDWCxRQUFRLEVBQUUsQ0FBQzt3QkFDWCxJQUFJLEVBQUUsQ0FBQztxQkFDUjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSyxFQUFFLDBDQUEwQztZQUNqRCxLQUFLLEVBQUUsdUJBQXVCO1lBQzlCLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsQ0FBQztnQkFDZixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsc0JBQXNCO29CQUM1QixJQUFJLEVBQUUsaUJBQWlCLENBQUMsTUFBTTtvQkFDOUIsT0FBTyxFQUFFO3dCQUNQLFFBQVEsRUFBRSxDQUFDO3dCQUNYLFFBQVEsRUFBRSxDQUFDO3dCQUNYLElBQUksRUFBRSxDQUFDO3FCQUNSO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkO0tBQ0Y7SUFDRCxVQUFVLEVBQUU7UUFDVixJQUFJLEVBQUU7WUFDSixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUM7U0FDdkc7S0FDRjtJQUNELElBQUksRUFBRTtRQUNKLFVBQVUsRUFBRTtZQUNWLEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxFQUFFLENBQUM7WUFFVCxRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1lBRVosUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztTQUNiO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQV2lkZ2V0Q29uZmlnLCBBWFBXaWRnZXRHcm91cEVudW0sIEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5cbmltcG9ydCB7IEFYUF9EQVRBX1BST1BFUlRZX0dST1VQIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcbmltcG9ydCB7IEFYUF9XSURHRVRTX1VUSUxJVFlfQ0FURUdPUlkgfSBmcm9tICcuLi8uLi9jaGFydC50eXBlJztcblxuLyoqXG4gKiBXZWF0aGVyIFdpZGdldCBDb25maWd1cmF0aW9uXG4gKiBQcm92aWRlcyBjdXN0b21pemF0aW9uIG9wdGlvbnMgZm9yIGRpc3BsYXlpbmcgd2VhdGhlciBkYXRhIGFuZCBmb3JlY2FzdFxuICovXG5leHBvcnQgY29uc3QgQVhQQWR2YW5jZWRXZWF0aGVyV2lkZ2V0OiBBWFBXaWRnZXRDb25maWcgPSB7XG4gIG5hbWU6ICdhZHZhbmNlZC13ZWF0aGVyJyxcbiAgdGl0bGU6ICdBZHZhbmNlZCBXZWF0aGVyIFdpZGdldCcsXG4gIGNhdGVnb3JpZXM6IFtBWFBfV0lER0VUU19VVElMSVRZX0NBVEVHT1JZXSxcbiAgZ3JvdXBzOiBbQVhQV2lkZ2V0R3JvdXBFbnVtLkRhc2hib2FyZFdpZGdldF0sXG4gIHR5cGU6ICdkYXNoYm9hcmQnLFxuICBpY29uOiAnZmEtbGlnaHQgZmEtY2xvdWQtc3VuJyxcbiAgcHJvcGVydGllczogW1xuICAgIHtcbiAgICAgIG5hbWU6ICd0ZW1wZXJhdHVyZVVuaXQnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMud2VhdGhlci50ZW1wZXJhdHVyZS11bml0JyxcbiAgICAgIGdyb3VwOiBBWFBfREFUQV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6ICfCsEMnLFxuICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICd0ZW1wZXJhdHVyZVVuaXQnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnRlbXBlcmF0dXJlVW5pdCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFsnwrBDJywgJ8KwRiddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdjaXR5JyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLndlYXRoZXIuY2l0eScsXG4gICAgICBncm91cDogQVhQX0RBVEFfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnTmV3IFlvcmsnLFxuICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdjaXR5JyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5jaXR5JyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcblxuICAgIHtcbiAgICAgIG5hbWU6ICdmb3JlY2FzdEhvdXJzJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLndlYXRoZXIuZm9yZWNhc3QtaG91cnMnLFxuICAgICAgZ3JvdXA6IEFYUF9EQVRBX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogNSxcbiAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnZm9yZWNhc3RIb3VycycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuZm9yZWNhc3RIb3VycycsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cubnVtYmVyLFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIG1pblZhbHVlOiAxLFxuICAgICAgICAgICAgbWF4VmFsdWU6IDgsXG4gICAgICAgICAgICBzdGVwOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdmb3JlY2FzdERheXMnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMud2VhdGhlci5mb3JlY2FzdC1kYXlzJyxcbiAgICAgIGdyb3VwOiBBWFBfREFUQV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IDIsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2ZvcmVjYXN0RGF5cycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuZm9yZWNhc3REYXlzJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgbWluVmFsdWU6IDEsXG4gICAgICAgICAgICBtYXhWYWx1ZTogMixcbiAgICAgICAgICAgIHN0ZXA6IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB2aWV3OiB7XG4gICAgICBjb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9hZHZhbmNlZC13ZWF0aGVyLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNQWR2YW5jZWRXZWF0aGVyVmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbiAgbWV0YToge1xuICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiAzLFxuICAgICAgaGVpZ2h0OiA1LFxuXG4gICAgICBtaW5XaWR0aDogMyxcbiAgICAgIG1pbkhlaWdodDogNSxcblxuICAgICAgbWF4V2lkdGg6IDUsXG4gICAgICBtYXhIZWlnaHQ6IDcsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogVHlwZSBkZWNsYXJhdGlvbiB0byByZWdpc3RlciB0aGUgd2VhdGhlciB3aWRnZXQgdHlwZVxuICovXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcicge1xuICBpbnRlcmZhY2UgQVhQV2lkZ2V0VHlwZXNNYXAge1xuICAgIGFkdmFuY2VkV2VhdGhlcjogJ2FkdmFuY2VkLXdlYXRoZXInO1xuICB9XG59XG4iXX0=","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTooltipModule } from '@acorex/components/tooltip';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { catchError, finalize, of } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherApiService } from '../weather-services';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/skeleton\";\nimport * as i3 from \"@acorex/core/translation\";\nimport * as i4 from \"@acorex/components/button\";\nexport class AXMMinimalWeatherViewComponent extends AXPValueWidgetComponent {\n constructor() {\n super();\n this.weatherService = inject(AXPWeatherApiAbstract);\n this.weatherData = signal(null);\n this.isLoading = signal(true);\n this.hasError = signal(false);\n this.errorMessage = signal('');\n this.city = computed(() => this.options()['city'] || 'New York');\n this.temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n this.iconCache = new Map();\n effect(() => {\n if (this.options()) {\n this.loadWeatherData();\n }\n });\n }\n loadWeatherData() {\n if (!this.city()) {\n this.isLoading.set(false);\n return;\n }\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n const requestOptions = {\n location: this.city(),\n tempUnit: this.temperatureUnit(),\n days: 1,\n };\n this.weatherService\n .getForecast(requestOptions)\n .pipe(catchError((error) => {\n this.handleError(error);\n return of(null);\n }), finalize(() => this.isLoading.set(false)))\n .subscribe((data) => {\n if (data) {\n this.weatherData.set(data);\n }\n });\n }\n handleError(error) {\n console.error('Minimal weather widget error:', error);\n this.hasError.set(true);\n this.errorMessage.set(error.message || 'Failed to load weather data');\n }\n getConditionIcon() {\n const conditionId = this.weatherData()?.current.condition || 'unknown';\n if (this.iconCache.has(conditionId)) {\n return this.iconCache.get(conditionId);\n }\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n const iconPath = `assets/images/weather/${svgIcon}`;\n this.iconCache.set(conditionId, iconPath);\n return iconPath;\n }\n getCurrentTemperature() {\n if (!this.weatherData())\n return 0;\n return this.temperatureUnit() === '°C' ? this.weatherData().current.tempC : this.weatherData().current.tempF;\n }\n getMaxTemp() {\n if (!this.weatherData()?.forecast?.[0])\n return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData().forecast[0].maxTempC\n : this.weatherData().forecast[0].maxTempF;\n }\n getMinTemp() {\n if (!this.weatherData()?.forecast?.[0])\n return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData().forecast[0].minTempC\n : this.weatherData().forecast[0].minTempF;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMMinimalWeatherViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMMinimalWeatherViewComponent, isStandalone: true, selector: \"ng-component\", providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ], usesInheritance: true, ngImport: i0, template: `\n @if (weatherData() && !isLoading() && !hasError()) {\n <div\n class=\"ax-flex ax-size-full ax-flex-col ax-items-start ax-p-2 ax-gap-2 ax-justify-evenly weather-container ax-overflow-hidden\"\n style=\"container-type: inline-size\"\n [attr.aria-label]=\"'Current weather for ' + city()\"\n >\n <div class=\"weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2\">\n <img\n [src]=\"getConditionIcon()\"\n class=\"ax-h-[180%] -ax-m-2\"\n [alt]=\"weatherData()?.current?.condition + ' weather icon'\"\n loading=\"lazy\"\n />\n <span\n class=\"-ax-ms-2 temperature\"\n style=\"font-size: max(20px, calc(32cqw - 25px)); text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)\"\n aria-live=\"polite\"\n >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n <div class=\"ax-text-start ax-ps-6\">\n <div style=\"font-size: max(16px, calc(19cqw - 25px))\" class=\"ax-mt-1\">\n <span class=\"ax-font-bold ax-capitalize\">{{ city() }}</span>\n </div>\n <div style=\"font-size: max(12px, calc(14cqw - 25px))\" class=\"ax-pt-2 ax-flex ax-gap-4 ax-opacity-75\">\n <span aria-label=\"High temperature\">\n H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>\n </span>\n <span aria-label=\"Low temperature\">\n L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>\n </span>\n </div>\n </div>\n </div>\n } @else {\n <div class=\"ax-flex ax-size-full ax-flex-col ax-p-2 ax-gap-2 ax-justify-center\" [attr.aria-busy]=\"isLoading()\">\n @if (isLoading()) {\n <!-- Weather icon and temperature skeleton -->\n <div class=\"ax-flex ax-items-center ax-w-full ax-pt-2 ax-gap-8\">\n <ax-skeleton class=\"ax-w-16 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-24 ax-h-8 ax-rounded -ax-ms-2\"></ax-skeleton>\n </div>\n\n <!-- City and temperature range skeleton -->\n <div class=\"ax-text-start ax-ps-6 ax-w-full\">\n <div class=\"ax-mt-1\">\n <ax-skeleton class=\"ax-w-24 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n <div class=\"ax-pt-2 ax-flex ax-gap-4\">\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n } @else if (hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-center ax-items-center ax-h-full ax-p-8\">\n <i class=\"ax-text-3xl fa-solid fa-cloud-sun\"></i>\n <p class=\"ax-text-sm\">{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <ax-button\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"'weather.refresh-weather' | translate: { scope: 'dashboard' } | async\"\n (onClick)=\"loadWeatherData()\"\n ></ax-button>\n </div>\n }\n </div>\n }\n `, isInline: true, styles: [\":host{width:100%;height:100%}.weather-container{container-type:inline-size;transition:opacity .3s ease-in-out}.temperature{font-feature-settings:\\\"tnum\\\";font-variant-numeric:tabular-nums}@container (max-width: 130px){.weather-top{flex-direction:column!important;align-items:center!important;text-align:center}.temperature{margin-top:.5rem}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i1.DecimalPipe, name: \"number\" }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"ngmodule\", type: AXTooltipModule }, { kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i2.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i3.AXTranslatorPipe, name: \"translate\" }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i4.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMMinimalWeatherViewComponent, decorators: [{\n type: Component,\n args: [{ template: `\n @if (weatherData() && !isLoading() && !hasError()) {\n <div\n class=\"ax-flex ax-size-full ax-flex-col ax-items-start ax-p-2 ax-gap-2 ax-justify-evenly weather-container ax-overflow-hidden\"\n style=\"container-type: inline-size\"\n [attr.aria-label]=\"'Current weather for ' + city()\"\n >\n <div class=\"weather-top ax-flex ax-justify-around ax-items-center ax-w-full ax-pt-2\">\n <img\n [src]=\"getConditionIcon()\"\n class=\"ax-h-[180%] -ax-m-2\"\n [alt]=\"weatherData()?.current?.condition + ' weather icon'\"\n loading=\"lazy\"\n />\n <span\n class=\"-ax-ms-2 temperature\"\n style=\"font-size: max(20px, calc(32cqw - 25px)); text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3)\"\n aria-live=\"polite\"\n >{{ getCurrentTemperature() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup></span\n >\n </div>\n <div class=\"ax-text-start ax-ps-6\">\n <div style=\"font-size: max(16px, calc(19cqw - 25px))\" class=\"ax-mt-1\">\n <span class=\"ax-font-bold ax-capitalize\">{{ city() }}</span>\n </div>\n <div style=\"font-size: max(12px, calc(14cqw - 25px))\" class=\"ax-pt-2 ax-flex ax-gap-4 ax-opacity-75\">\n <span aria-label=\"High temperature\">\n H: {{ getMaxTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>\n </span>\n <span aria-label=\"Low temperature\">\n L: {{ getMinTemp() | number: '1.0-0' }}<sup>{{ temperatureUnit() }}</sup>\n </span>\n </div>\n </div>\n </div>\n } @else {\n <div class=\"ax-flex ax-size-full ax-flex-col ax-p-2 ax-gap-2 ax-justify-center\" [attr.aria-busy]=\"isLoading()\">\n @if (isLoading()) {\n <!-- Weather icon and temperature skeleton -->\n <div class=\"ax-flex ax-items-center ax-w-full ax-pt-2 ax-gap-8\">\n <ax-skeleton class=\"ax-w-16 ax-h-12 ax-rounded-full\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-24 ax-h-8 ax-rounded -ax-ms-2\"></ax-skeleton>\n </div>\n\n <!-- City and temperature range skeleton -->\n <div class=\"ax-text-start ax-ps-6 ax-w-full\">\n <div class=\"ax-mt-1\">\n <ax-skeleton class=\"ax-w-24 ax-h-6 ax-rounded\"></ax-skeleton>\n </div>\n <div class=\"ax-pt-2 ax-flex ax-gap-4\">\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n <ax-skeleton class=\"ax-w-12 ax-h-4 ax-rounded\"></ax-skeleton>\n </div>\n </div>\n } @else if (hasError()) {\n <!-- No data state (not loading, no error) -->\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-justify-center ax-items-center ax-h-full ax-p-8\">\n <i class=\"ax-text-3xl fa-solid fa-cloud-sun\"></i>\n <p class=\"ax-text-sm\">{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\n <ax-button\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"'weather.refresh-weather' | translate: { scope: 'dashboard' } | async\"\n (onClick)=\"loadWeatherData()\"\n ></ax-button>\n </div>\n }\n </div>\n }\n `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXDecoratorModule, AXTooltipModule, AXSkeletonModule, AXTranslationModule, AXButtonModule], providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ], styles: [\":host{width:100%;height:100%}.weather-container{container-type:inline-size;transition:opacity .3s ease-in-out}.temperature{font-feature-settings:\\\"tnum\\\";font-variant-numeric:tabular-nums}@container (max-width: 130px){.weather-top{flex-direction:column!important;align-items:center!important;text-align:center}.temperature{margin-top:.5rem}}\\n\"] }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW1hbC13ZWF0aGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL3dlYXRoZXIvbWluaW1hbC13ZWF0aGVyL21pbmltYWwtd2VhdGhlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBK0dsRyxNQUFNLE9BQU8sOEJBQStCLFNBQVEsdUJBQXVCO0lBYXpFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFiRixtQkFBYyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRTdDLGdCQUFXLEdBQUcsTUFBTSxDQUF3QixJQUFJLENBQUMsQ0FBQztRQUNsRCxjQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekIsaUJBQVksR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFMUIsU0FBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUM7UUFDNUQsb0JBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBRWxGLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUk1QyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTFCLE1BQU0sY0FBYyxHQUFHO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ2hDLElBQUksRUFBRSxDQUFDO1NBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjO2FBQ2hCLFdBQVcsQ0FBQyxjQUFjLENBQUM7YUFDM0IsSUFBSSxDQUNILFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzFDO2FBQ0EsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sV0FBVyxDQUFDLEtBQVU7UUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLDZCQUE2QixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVTLGdCQUFnQjtRQUN4QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUM7UUFFdkUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUN0RSxNQUFNLFFBQVEsR0FBRyx5QkFBeUIsT0FBTyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxxQkFBcUI7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqSCxDQUFDO0lBRVMsVUFBVTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLElBQUk7WUFDcEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUTtZQUMxQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDL0MsQ0FBQztJQUVTLFVBQVU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsS0FBSyxJQUFJO1lBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDMUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQy9DLENBQUM7OEdBMUZVLDhCQUE4QjtrR0FBOUIsOEJBQThCLDJEQVA5QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsRUFBRSxvQkFBb0I7YUFDL0I7U0FDRixpREExR1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFFVCxnYUErQlMsWUFBWSwySUFBRSxpQkFBaUIsOEJBQUUsZUFBZSw4QkFBRSxnQkFBZ0Isa0lBQUUsbUJBQW1CLDhGQUFFLGNBQWM7OzJGQVF0Ryw4QkFBOEI7a0JBN0cxQyxTQUFTOytCQUNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxRVQsbUJBOEJnQix1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxjQUFjLENBQUMsYUFDdkc7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLG9CQUFvQjt5QkFDL0I7cUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IEFYVG9vbHRpcE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy90b29sdGlwJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBXZWF0aGVyQXBpQWJzdHJhY3QsIEFYUFdlYXRoZXJBcGlTZXJ2aWNlLCBBWFBXZWF0aGVyRGF0YSB9IGZyb20gJy4uL3dlYXRoZXItc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKHdlYXRoZXJEYXRhKCkgJiYgIWlzTG9hZGluZygpICYmICFoYXNFcnJvcigpKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1zaXplLWZ1bGwgYXgtZmxleC1jb2wgYXgtaXRlbXMtc3RhcnQgYXgtcC0yIGF4LWdhcC0yIGF4LWp1c3RpZnktZXZlbmx5IHdlYXRoZXItY29udGFpbmVyIGF4LW92ZXJmbG93LWhpZGRlblwiXG4gICAgICAgIHN0eWxlPVwiY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQ3VycmVudCB3ZWF0aGVyIGZvciAnICsgY2l0eSgpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndlYXRoZXItdG9wIGF4LWZsZXggYXgtanVzdGlmeS1hcm91bmQgYXgtaXRlbXMtY2VudGVyIGF4LXctZnVsbCBheC1wdC0yXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgW3NyY109XCJnZXRDb25kaXRpb25JY29uKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1oLVsxODAlXSAtYXgtbS0yXCJcbiAgICAgICAgICAgIFthbHRdPVwid2VhdGhlckRhdGEoKT8uY3VycmVudD8uY29uZGl0aW9uICsgJyB3ZWF0aGVyIGljb24nXCJcbiAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cIi1heC1tcy0yIHRlbXBlcmF0dXJlXCJcbiAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiBtYXgoMjBweCwgY2FsYygzMmNxdyAtIDI1cHgpKTsgdGV4dC1zaGFkb3c6IDFweCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC4zKVwiXG4gICAgICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgICAgICAgPnt7IGdldEN1cnJlbnRUZW1wZXJhdHVyZSgpIHwgbnVtYmVyOiAnMS4wLTAnIH19PHN1cD57eyB0ZW1wZXJhdHVyZVVuaXQoKSB9fTwvc3VwPjwvc3BhblxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXN0YXJ0IGF4LXBzLTZcIj5cbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiBtYXgoMTZweCwgY2FsYygxOWNxdyAtIDI1cHgpKVwiIGNsYXNzPVwiYXgtbXQtMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1mb250LWJvbGQgYXgtY2FwaXRhbGl6ZVwiPnt7IGNpdHkoKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IHN0eWxlPVwiZm9udC1zaXplOiBtYXgoMTJweCwgY2FsYygxNGNxdyAtIDI1cHgpKVwiIGNsYXNzPVwiYXgtcHQtMiBheC1mbGV4IGF4LWdhcC00IGF4LW9wYWNpdHktNzVcIj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtbGFiZWw9XCJIaWdoIHRlbXBlcmF0dXJlXCI+XG4gICAgICAgICAgICAgIEg6IHt7IGdldE1heFRlbXAoKSB8IG51bWJlcjogJzEuMC0wJyB9fTxzdXA+e3sgdGVtcGVyYXR1cmVVbml0KCkgfX08L3N1cD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGFyaWEtbGFiZWw9XCJMb3cgdGVtcGVyYXR1cmVcIj5cbiAgICAgICAgICAgICAgTDoge3sgZ2V0TWluVGVtcCgpIHwgbnVtYmVyOiAnMS4wLTAnIH19PHN1cD57eyB0ZW1wZXJhdHVyZVVuaXQoKSB9fTwvc3VwPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtc2l6ZS1mdWxsIGF4LWZsZXgtY29sIGF4LXAtMiBheC1nYXAtMiBheC1qdXN0aWZ5LWNlbnRlclwiIFthdHRyLmFyaWEtYnVzeV09XCJpc0xvYWRpbmcoKVwiPlxuICAgICAgICBAaWYgKGlzTG9hZGluZygpKSB7XG4gICAgICAgICAgPCEtLSBXZWF0aGVyIGljb24gYW5kIHRlbXBlcmF0dXJlIHNrZWxldG9uIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC13LWZ1bGwgYXgtcHQtMiBheC1nYXAtOFwiPlxuICAgICAgICAgICAgPGF4LXNrZWxldG9uIGNsYXNzPVwiYXgtdy0xNiBheC1oLTEyIGF4LXJvdW5kZWQtZnVsbFwiPjwvYXgtc2tlbGV0b24+XG4gICAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LTI0IGF4LWgtOCBheC1yb3VuZGVkIC1heC1tcy0yXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gQ2l0eSBhbmQgdGVtcGVyYXR1cmUgcmFuZ2Ugc2tlbGV0b24gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtc3RhcnQgYXgtcHMtNiBheC13LWZ1bGxcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tdC0xXCI+XG4gICAgICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctMjQgYXgtaC02IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcHQtMiBheC1mbGV4IGF4LWdhcC00XCI+XG4gICAgICAgICAgICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctMTIgYXgtaC00IGF4LXJvdW5kZWRcIj48L2F4LXNrZWxldG9uPlxuICAgICAgICAgICAgICA8YXgtc2tlbGV0b24gY2xhc3M9XCJheC13LTEyIGF4LWgtNCBheC1yb3VuZGVkXCI+PC9heC1za2VsZXRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIGlmIChoYXNFcnJvcigpKSB7XG4gICAgICAgICAgPCEtLSBObyBkYXRhIHN0YXRlIChub3QgbG9hZGluZywgbm8gZXJyb3IpIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC0yIGF4LWp1c3RpZnktY2VudGVyIGF4LWl0ZW1zLWNlbnRlciBheC1oLWZ1bGwgYXgtcC04XCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImF4LXRleHQtM3hsIGZhLXNvbGlkIGZhLWNsb3VkLXN1blwiPjwvaT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1zbVwiPnt7ICd3ZWF0aGVyLm5vLWRhdGEnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX08L3A+XG4gICAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICAgIFtsb29rXT1cIidvdXRsaW5lJ1wiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCInc2Vjb25kYXJ5J1wiXG4gICAgICAgICAgICAgIFt0ZXh0XT1cIid3ZWF0aGVyLnJlZnJlc2gtd2VhdGhlcicgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0gfCBhc3luY1wiXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImxvYWRXZWF0aGVyRGF0YSgpXCJcbiAgICAgICAgICAgID48L2F4LWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIEBhcHBseSBheC1zaXplLWZ1bGw7XG4gICAgICB9XG5cbiAgICAgIC53ZWF0aGVyLWNvbnRhaW5lciB7XG4gICAgICAgIGNvbnRhaW5lci10eXBlOiBpbmxpbmUtc2l6ZTtcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2UtaW4tb3V0O1xuICAgICAgfVxuXG4gICAgICAudGVtcGVyYXR1cmUge1xuICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICd0bnVtJztcbiAgICAgICAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcbiAgICAgIH1cblxuICAgICAgQGNvbnRhaW5lciAobWF4LXdpZHRoOiAxMzBweCkge1xuICAgICAgICAud2VhdGhlci10b3Age1xuICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDtcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLnRlbXBlcmF0dXJlIHtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQVhEZWNvcmF0b3JNb2R1bGUsIEFYVG9vbHRpcE1vZHVsZSwgQVhTa2VsZXRvbk1vZHVsZSwgQVhUcmFuc2xhdGlvbk1vZHVsZSwgQVhCdXR0b25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFBXZWF0aGVyQXBpQWJzdHJhY3QsXG4gICAgICB1c2VDbGFzczogQVhQV2VhdGhlckFwaVNlcnZpY2UsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNTWluaW1hbFdlYXRoZXJWaWV3Q29tcG9uZW50IGV4dGVuZHMgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQge1xuICBwcml2YXRlIHdlYXRoZXJTZXJ2aWNlID0gaW5qZWN0KEFYUFdlYXRoZXJBcGlBYnN0cmFjdCk7XG5cbiAgcHJvdGVjdGVkIHdlYXRoZXJEYXRhID0gc2lnbmFsPEFYUFdlYXRoZXJEYXRhIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwodHJ1ZSk7XG4gIHByb3RlY3RlZCBoYXNFcnJvciA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBlcnJvck1lc3NhZ2UgPSBzaWduYWwoJycpO1xuXG4gIHByb3RlY3RlZCBjaXR5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKClbJ2NpdHknXSB8fCAnTmV3IFlvcmsnKTtcbiAgcHJvdGVjdGVkIHRlbXBlcmF0dXJlVW5pdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpWyd0ZW1wZXJhdHVyZVVuaXQnXT8uaWQgfHwgJ8KwQycpO1xuXG4gIHByaXZhdGUgaWNvbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zKCkpIHtcbiAgICAgICAgdGhpcy5sb2FkV2VhdGhlckRhdGEoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsb2FkV2VhdGhlckRhdGEoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNpdHkoKSkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5oYXNFcnJvci5zZXQoZmFsc2UpO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlLnNldCgnJyk7XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9ucyA9IHtcbiAgICAgIGxvY2F0aW9uOiB0aGlzLmNpdHkoKSxcbiAgICAgIHRlbXBVbml0OiB0aGlzLnRlbXBlcmF0dXJlVW5pdCgpLFxuICAgICAgZGF5czogMSxcbiAgICB9O1xuXG4gICAgdGhpcy53ZWF0aGVyU2VydmljZVxuICAgICAgLmdldEZvcmVjYXN0KHJlcXVlc3RPcHRpb25zKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgdGhpcy53ZWF0aGVyRGF0YS5zZXQoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcignTWluaW1hbCB3ZWF0aGVyIHdpZGdldCBlcnJvcjonLCBlcnJvcik7XG4gICAgdGhpcy5oYXNFcnJvci5zZXQodHJ1ZSk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KGVycm9yLm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBsb2FkIHdlYXRoZXIgZGF0YScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldENvbmRpdGlvbkljb24oKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb25kaXRpb25JZCA9IHRoaXMud2VhdGhlckRhdGEoKT8uY3VycmVudC5jb25kaXRpb24gfHwgJ3Vua25vd24nO1xuXG4gICAgaWYgKHRoaXMuaWNvbkNhY2hlLmhhcyhjb25kaXRpb25JZCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmljb25DYWNoZS5nZXQoY29uZGl0aW9uSWQpITtcbiAgICB9XG5cbiAgICBjb25zdCBzdmdJY29uID0gdGhpcy53ZWF0aGVyU2VydmljZS5nZXRDb25kaXRpb24oY29uZGl0aW9uSWQpLnN2Z0ljb247XG4gICAgY29uc3QgaWNvblBhdGggPSBgYXNzZXRzL2ltYWdlcy93ZWF0aGVyLyR7c3ZnSWNvbn1gO1xuICAgIHRoaXMuaWNvbkNhY2hlLnNldChjb25kaXRpb25JZCwgaWNvblBhdGgpO1xuICAgIHJldHVybiBpY29uUGF0aDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDdXJyZW50VGVtcGVyYXR1cmUoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMud2VhdGhlckRhdGEoKSkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHRoaXMudGVtcGVyYXR1cmVVbml0KCkgPT09ICfCsEMnID8gdGhpcy53ZWF0aGVyRGF0YSgpIS5jdXJyZW50LnRlbXBDIDogdGhpcy53ZWF0aGVyRGF0YSgpIS5jdXJyZW50LnRlbXBGO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE1heFRlbXAoKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMud2VhdGhlckRhdGEoKT8uZm9yZWNhc3Q/LlswXSkgcmV0dXJuIDA7XG4gICAgcmV0dXJuIHRoaXMudGVtcGVyYXR1cmVVbml0KCkgPT09ICfCsEMnXG4gICAgICA/IHRoaXMud2VhdGhlckRhdGEoKSEuZm9yZWNhc3RbMF0ubWF4VGVtcENcbiAgICAgIDogdGhpcy53ZWF0aGVyRGF0YSgpIS5mb3JlY2FzdFswXS5tYXhUZW1wRjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRNaW5UZW1wKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLndlYXRoZXJEYXRhKCk/LmZvcmVjYXN0Py5bMF0pIHJldHVybiAwO1xuICAgIHJldHVybiB0aGlzLnRlbXBlcmF0dXJlVW5pdCgpID09PSAnwrBDJ1xuICAgICAgPyB0aGlzLndlYXRoZXJEYXRhKCkhLmZvcmVjYXN0WzBdLm1pblRlbXBDXG4gICAgICA6IHRoaXMud2VhdGhlckRhdGEoKSEuZm9yZWNhc3RbMF0ubWluVGVtcEY7XG4gIH1cbn1cbiJdfQ==","import { AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_DATA_PROPERTY_GROUP } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../../chart.type';\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPMinimalWeatherWidget = {\n name: 'minimal-weather',\n title: 'Minimal Weather Widget',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./minimal-weather.component').then((c) => c.AXMMinimalWeatherViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 2,\n height: 2,\n minWidth: 1,\n minHeight: 2,\n maxWidth: 4,\n maxHeight: 5,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW1hbC13ZWF0aGVyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL3dlYXRoZXIvbWluaW1hbC13ZWF0aGVyL21pbmltYWwtd2VhdGhlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFvQjtJQUN0RCxJQUFJLEVBQUUsaUJBQWlCO0lBQ3ZCLEtBQUssRUFBRSx3QkFBd0I7SUFDL0IsVUFBVSxFQUFFLENBQUMsNEJBQTRCLENBQUM7SUFDMUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDO0lBQzVDLElBQUksRUFBRSxXQUFXO0lBQ2pCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsVUFBVSxFQUFFO1FBQ1Y7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLEtBQUssRUFBRSw2Q0FBNkM7WUFDcEQsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07b0JBQzlCLE9BQU8sRUFBRTt3QkFDUCxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO3FCQUN6QjtpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtRQUNEO1lBQ0UsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsaUNBQWlDO1lBQ3hDLEtBQUssRUFBRSx1QkFBdUI7WUFDOUIsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxVQUFVO2dCQUN4QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDN0I7YUFDRjtZQUNELE9BQU8sRUFBRSxJQUFJO1NBQ2Q7S0FDRjtJQUNELFVBQVUsRUFBRTtRQUNWLElBQUksRUFBRTtZQUNKLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQztTQUNyRztLQUNGO0lBQ0QsSUFBSSxFQUFFO1FBQ0osVUFBVSxFQUFFO1lBQ1YsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUVULFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7WUFFWixRQUFRLEVBQUUsQ0FBQztZQUNYLFNBQVMsRUFBRSxDQUFDO1NBQ2I7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRDb25maWcsIEFYUFdpZGdldEdyb3VwRW51bSwgQVhQV2lkZ2V0c0NhdGFsb2cgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcblxuaW1wb3J0IHsgQVhQX0RBVEFfUFJPUEVSVFlfR1JPVVAgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dpZGdldHMnO1xuaW1wb3J0IHsgQVhQX1dJREdFVFNfVVRJTElUWV9DQVRFR09SWSB9IGZyb20gJy4uLy4uL2NoYXJ0LnR5cGUnO1xuXG4vKipcbiAqIFdlYXRoZXIgV2lkZ2V0IENvbmZpZ3VyYXRpb25cbiAqIFByb3ZpZGVzIGN1c3RvbWl6YXRpb24gb3B0aW9ucyBmb3IgZGlzcGxheWluZyB3ZWF0aGVyIGRhdGEgYW5kIGZvcmVjYXN0XG4gKi9cbmV4cG9ydCBjb25zdCBBWFBNaW5pbWFsV2VhdGhlcldpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnbWluaW1hbC13ZWF0aGVyJyxcbiAgdGl0bGU6ICdNaW5pbWFsIFdlYXRoZXIgV2lkZ2V0JyxcbiAgY2F0ZWdvcmllczogW0FYUF9XSURHRVRTX1VUSUxJVFlfQ0FURUdPUlldLFxuICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRGFzaGJvYXJkV2lkZ2V0XSxcbiAgdHlwZTogJ2Rhc2hib2FyZCcsXG4gIGljb246ICdmYS1saWdodCBmYS1jbG91ZC1zdW4nLFxuICBwcm9wZXJ0aWVzOiBbXG4gICAge1xuICAgICAgbmFtZTogJ3RlbXBlcmF0dXJlVW5pdCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy53ZWF0aGVyLnRlbXBlcmF0dXJlLXVuaXQnLFxuICAgICAgZ3JvdXA6IEFYUF9EQVRBX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogJ8KwQycsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3RlbXBlcmF0dXJlVW5pdCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMudGVtcGVyYXR1cmVVbml0JyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5zZWxlY3QsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgZGF0YVNvdXJjZTogWyfCsEMnLCAnwrBGJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2NpdHknLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMud2VhdGhlci5jaXR5JyxcbiAgICAgIGdyb3VwOiBBWFBfREFUQV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6ICdOZXcgWW9yaycsXG4gICAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2NpdHknLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmNpdHknLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRleHQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjb21wb25lbnRzOiB7XG4gICAgdmlldzoge1xuICAgICAgY29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vbWluaW1hbC13ZWF0aGVyLmNvbXBvbmVudCcpLnRoZW4oKGMpID0+IGMuQVhNTWluaW1hbFdlYXRoZXJWaWV3Q29tcG9uZW50KSxcbiAgICB9LFxuICB9LFxuICBtZXRhOiB7XG4gICAgZGltZW5zaW9uczoge1xuICAgICAgd2lkdGg6IDIsXG4gICAgICBoZWlnaHQ6IDIsXG5cbiAgICAgIG1pbldpZHRoOiAxLFxuICAgICAgbWluSGVpZ2h0OiAyLFxuXG4gICAgICBtYXhXaWR0aDogNCxcbiAgICAgIG1heEhlaWdodDogNSxcbiAgICB9LFxuICB9LFxufTtcblxuLyoqXG4gKiBUeXBlIGRlY2xhcmF0aW9uIHRvIHJlZ2lzdGVyIHRoZSB3ZWF0aGVyIHdpZGdldCB0eXBlXG4gKi9cbmRlY2xhcmUgbW9kdWxlICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJyB7XG4gIGludGVyZmFjZSBBWFBXaWRnZXRUeXBlc01hcCB7XG4gICAgbWluaW1hbFdlYXRoZXI6ICdtaW5pbWFsLXdlYXRoZXInO1xuICB9XG59XG4iXX0=","import { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPValueWidgetComponent } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, effect, inject, signal, viewChild, } from '@angular/core';\nimport { Observable, interval as rxjsInterval, switchMap } from 'rxjs';\nimport { AXPWeatherApiAbstract, AXPWeatherApiService, } from './weather-services';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\n/**\n * Weather Widget Component\n * Displays current weather conditions and optional forecast data\n * for a specified location with customizable display options.\n */\nexport class AXPWeatherWidgetViewComponent extends AXPValueWidgetComponent {\n /**\n * Component constructor\n * @param cdr ChangeDetectorRef for triggering view updates\n */\n constructor(cdr) {\n super();\n this.cdr = cdr;\n // Container element reference\n this.containerEl = viewChild.required('containerElement');\n // Weather API service instance\n this.weatherService = inject(AXPWeatherApiAbstract);\n // State signals\n this.weatherData = signal(null);\n this.isLoading = signal(true);\n this.hasError = signal(false);\n this.errorMessage = signal('');\n this.isForecastLoading = signal(false);\n // Auto-refresh subscription\n this.refreshSubscription = null;\n // Option-derived computed properties\n this.city = computed(() => {\n return this.options()['city'] || 'Newyork';\n });\n this.temperatureUnit = computed(() => this.options()['temperatureUnit']?.id || '°C');\n this.windSpeedUnit = computed(() => this.options()['windSpeedUnit']?.id || 'km/h');\n // Display option flags\n this.showCurrentCondition = computed(() => this.options()['showCurrentCondition'] !== false);\n this.showTemperature = computed(() => this.options()['showTemperature'] !== false);\n this.showHumidity = computed(() => this.options()['showHumidity'] !== false);\n this.showWind = computed(() => this.options()['showWind'] !== false);\n this.showForecast = computed(() => this.options()['showForecast'] !== false);\n this.forecastDays = computed(() => this.options()['forecastDays'] ?? 5);\n // Refresh settings\n this.autoRefresh = computed(() => this.options()['autoRefresh'] !== false);\n this.refreshInterval = computed(() => this.options()['refreshInterval']?.id ?? 15);\n // Reactivity effects\n this.optionsEffect = effect(() => {\n const opts = this.options();\n this.loadWeatherData();\n this.setupRefreshTimer();\n });\n this.valueEffect = effect(() => {\n this.city();\n this.loadWeatherData();\n });\n this.displayedForecast = computed(() => {\n const weatherData = this.weatherData();\n if (!weatherData?.forecast)\n return [];\n const forecastDays = this.forecastDays();\n return weatherData.forecast.slice(0, forecastDays);\n });\n // Inject the abstract service which will resolve to either the mock or real implementation\n this.weatherService = inject(AXPWeatherApiAbstract);\n setTimeout(() => {\n this.loadWeatherData();\n this.setupRefreshTimer();\n }, 0);\n }\n /**\n * Component cleanup on destroy\n */\n ngOnDestroy() {\n this.clearRefreshTimer();\n }\n /**\n * Loads weather data from the API\n * Sets loading state and handles errors\n */\n loadWeatherData() {\n this.isLoading.set(true);\n this.hasError.set(false);\n this.errorMessage.set('');\n const locationQuery = this.city();\n const shouldShowForecast = this.showForecast();\n // If we need forecast, request it directly to avoid duplicate calls\n // The forecast endpoint also returns current weather\n if (shouldShowForecast) {\n const forecastOptions = {\n location: locationQuery,\n tempUnit: this.temperatureUnit(),\n useMockData: false, // Use real API, signals to use forecast endpoint\n days: this.forecastDays(),\n };\n this.isForecastLoading.set(true);\n this.weatherService.getForecast(forecastOptions).subscribe({\n next: (data) => {\n this.weatherData.set(data);\n this.isLoading.set(false);\n this.isForecastLoading.set(false);\n setTimeout(() => this.cdr.detectChanges());\n },\n error: (error) => {\n this.handleError(error);\n this.isLoading.set(false);\n this.isForecastLoading.set(false);\n this.cdr.detectChanges();\n },\n });\n return;\n }\n // If we only need current weather, use getWeather\n const requestOptions = {\n location: locationQuery,\n tempUnit: this.temperatureUnit(),\n useMockData: false, // Use real API\n };\n this.weatherService.getWeather(requestOptions).subscribe({\n next: (data) => {\n this.weatherData.set(data);\n this.isLoading.set(false);\n setTimeout(() => this.cdr.detectChanges());\n },\n error: (error) => {\n this.handleError(error);\n this.isLoading.set(false);\n this.cdr.detectChanges();\n },\n });\n }\n /**\n * Sets up the auto-refresh timer based on configuration\n */\n setupRefreshTimer() {\n this.clearRefreshTimer();\n if (!this.autoRefresh())\n return;\n const minInterval = 5; // 5 minutes minimum\n const intervalValue = Math.max(this.refreshInterval(), minInterval);\n const intervalMs = intervalValue * 60 * 1000;\n this.refreshSubscription = rxjsInterval(intervalMs)\n .pipe(switchMap(() => {\n // Always use the loadWeatherData method to determine the correct API call\n this.loadWeatherData();\n // Return an empty observable to satisfy the switchMap typing\n return new Observable((observer) => {\n observer.complete();\n });\n }))\n .subscribe();\n }\n /**\n * Clears the refresh timer subscription\n */\n clearRefreshTimer() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n this.refreshSubscription = null;\n }\n }\n /**\n * Manually refreshes the weather data\n */\n refreshWeather() {\n this.loadWeatherData();\n }\n /**\n * Gets the current temperature based on selected unit\n */\n getCurrentTemperature() {\n if (!this.weatherData())\n return 0;\n return this.temperatureUnit() === '°C' ? this.weatherData().current.tempC : this.weatherData().current.tempF;\n }\n /**\n * Gets the feels like temperature based on selected unit\n */\n getFeelsLikeTemperature() {\n if (!this.weatherData())\n return 0;\n return this.temperatureUnit() === '°C'\n ? this.weatherData().current.feelsLikeC\n : this.weatherData().current.feelsLikeF;\n }\n /**\n * Gets the humidity percentage\n */\n getHumidity() {\n return this.weatherData()?.current.humidity || 0;\n }\n /**\n * Gets the wind speed based on selected unit\n */\n getWindSpeed() {\n if (!this.weatherData())\n return 0;\n return this.windSpeedUnit() === 'km/h' ? this.weatherData().current.windKph : this.weatherData().current.windMph;\n }\n /**\n * Gets the current weather condition\n */\n getCurrentCondition() {\n const conditionId = this.weatherData()?.current.condition || '';\n return this.getConditionName(conditionId);\n }\n /**\n * Gets the formatted last updated time\n */\n getLastUpdated() {\n if (!this.weatherData()?.current.lastUpdated)\n return '';\n return new Date(this.weatherData().current.lastUpdated).toLocaleTimeString();\n }\n /**\n * Gets the appropriate icon class for a weather condition\n * @param conditionId The ID of the weather condition\n * @returns The Font Awesome icon class string\n */\n getConditionIcon(conditionId) {\n if (!conditionId) {\n conditionId = 'unknown';\n }\n const svgIcon = this.weatherService.getCondition(conditionId).svgIcon;\n return `assets/images/weather/${svgIcon}`;\n }\n /**\n * Gets the display name for a weather condition\n * @param conditionId The ID of the weather condition\n * @returns The translated display name\n */\n getConditionName(conditionId) {\n const condition = this.weatherService.getCondition(conditionId);\n if (!condition?.name)\n return 'weather.conditions.sunny';\n // Convert condition name to lowercase and replace spaces with hyphens\n const formattedName = condition.name.toLowerCase().replace(/\\s+/g, '-');\n return `weather.conditions.${formattedName}`;\n }\n /**\n * Gets the color for a weather condition\n * @param conditionId Weather condition ID\n * @returns CSS color value\n */\n getConditionColor(conditionId) {\n const condition = this.weatherService.getCondition(conditionId);\n return condition?.color || '#999999';\n }\n /**\n * Cleans up chart resources\n * Required by AXPChartBaseComponent\n */\n cleanupChart() {\n this.clearRefreshTimer();\n }\n handleError(error) {\n console.error('Weather widget error:', error);\n this.hasError.set(true);\n // Check if it's a network error\n if (error.status === 0) {\n this.errorMessage.set('weather.error.network');\n return;\n }\n // Check if it's an API error\n if (error.status >= 400 && error.status < 500) {\n this.errorMessage.set('weather.error.api');\n return;\n }\n // Default error message\n this.errorMessage.set('weather.error.general');\n }\n getTemperatureUnit() {\n return this.temperatureUnit() === '°C' ? 'weather.units.celsius' : 'weather.units.fahrenheit';\n }\n getWindSpeedUnit() {\n return this.windSpeedUnit() === 'km/h' ? 'weather.units.kmh' : 'weather.units.mph';\n }\n getDayName(date) {\n const today = new Date();\n const tomorrow = new Date(today);\n tomorrow.setDate(tomorrow.getDate() + 1);\n if (date.toDateString() === today.toDateString()) {\n return 'weather.days.today';\n }\n if (date.toDateString() === tomorrow.toDateString()) {\n return 'weather.days.tomorrow';\n }\n const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\n return `weather.days.${days[date.getDay()]}`;\n }\n parseDate(dateStr) {\n return new Date(dateStr);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherWidgetViewComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPWeatherWidgetViewComponent, isStandalone: true, selector: \"ng-component\", providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ], viewQueries: [{ propertyName: \"containerEl\", first: true, predicate: [\"containerElement\"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: \"<!-- Weather Widget Component Template -->\\n<div class=\\\"axp-weather-container\\\" #containerElement>\\n <!-- Loading indicator -->\\n @if (isLoading()) {\\n <div class=\\\"axp-weather-loading-overlay\\\">\\n <div class=\\\"axp-weather-loading-spinner\\\">\\n <i class=\\\"fa-solid fa-spinner fa-spin\\\"></i>\\n <span>{{ 'weather.loading' | translate: { scope: 'dashboard' } | async }}</span>\\n </div>\\n </div>\\n }\\n\\n <!-- Error message -->\\n @if (hasError()) {\\n <div class=\\\"axp-weather-error-overlay\\\">\\n <div class=\\\"axp-weather-error-message\\\">\\n <i class=\\\"fa-solid fa-exclamation-triangle\\\"></i>\\n <span>{{ errorMessage() | translate: { scope: 'dashboard' } | async }}</span>\\n <button class=\\\"axp-weather-retry-button\\\" (click)=\\\"refreshWeather()\\\">\\n <i class=\\\"fa-solid fa-sync-alt\\\"></i>\\n <span>{{ 'weather.retry' | translate: { scope: 'dashboard' } | async }}</span>\\n </button>\\n </div>\\n </div>\\n }\\n\\n <!-- Weather content - only show when we have data -->\\n @if (weatherData()) {\\n <!-- Background decorations based on weather condition -->\\n <div class=\\\"axp-weather-background-decorations\\\">\\n <div class=\\\"axp-weather-decoration\\\" [ngClass]=\\\"weatherData()?.current?.condition?.toLowerCase()\\\"></div>\\n <div class=\\\"axp-weather-gradient-overlay\\\"></div>\\n </div>\\n\\n <div class=\\\"axp-weather-inner\\\">\\n <!-- Location information section -->\\n <div class=\\\"axp-weather-location-info\\\">\\n <div class=\\\"axp-weather-location-icon\\\">\\n <i class=\\\"fa-solid fa-location-dot\\\"></i>\\n </div>\\n <div class=\\\"axp-weather-location-text\\\">\\n <h2 class=\\\"axp-weather-location-name\\\">{{ city() }}</h2>\\n </div>\\n </div>\\n\\n <!-- Current weather conditions section -->\\n <div class=\\\"axp-weather-current-weather\\\">\\n <!-- Weather icon and condition name -->\\n @if (showCurrentCondition()) {\\n <div class=\\\"axp-weather-condition\\\">\\n <div class=\\\"axp-weather-icon-wrapper\\\">\\n <div class=\\\"axp-weather-icon\\\">\\n <img [src]=\\\"getConditionIcon(weatherData()?.current?.condition || '')\\\" />\\n </div>\\n <div\\n class=\\\"axp-weather-icon-glow\\\"\\n [style.background-color]=\\\"getConditionColor(weatherData()?.current?.condition || '')\\\"\\n ></div>\\n </div>\\n <div class=\\\"axp-weather-condition-name\\\">\\n {{ getCurrentCondition() | translate: { scope: 'dashboard' } | async }}\\n </div>\\n </div>\\n }\\n\\n <!-- Temperature display -->\\n @if (showTemperature()) {\\n <div class=\\\"axp-weather-temperature\\\">\\n <span class=\\\"axp-weather-temperature-value\\\">{{ getCurrentTemperature() }}</span>\\n <span class=\\\"axp-weather-temperature-unit\\\">{{\\n getTemperatureUnit() | translate: { scope: 'dashboard' } | async\\n }}</span>\\n </div>\\n }\\n </div>\\n\\n <!-- Weather details section (humidity and wind) -->\\n @if (showHumidity() || showWind()) {\\n <div class=\\\"axp-weather-details\\\">\\n <!-- Humidity information -->\\n @if (showHumidity()) {\\n <div class=\\\"axp-weather-detail-item\\\">\\n <div class=\\\"axp-weather-detail-icon\\\">\\n <i class=\\\"fa-solid fa-droplet\\\"></i>\\n </div>\\n <div class=\\\"axp-weather-detail-info\\\">\\n <div class=\\\"axp-weather-detail-label\\\">\\n {{ 'weather.humidity' | translate: { scope: 'dashboard' } | async }}\\n </div>\\n <div class=\\\"axp-weather-detail-value\\\">{{ getHumidity() }}%</div>\\n </div>\\n </div>\\n }\\n\\n <!-- Wind speed information -->\\n @if (showWind()) {\\n <div class=\\\"axp-weather-detail-item\\\">\\n <div class=\\\"axp-weather-detail-icon\\\">\\n <i class=\\\"fa-solid fa-wind\\\"></i>\\n </div>\\n <div class=\\\"axp-weather-detail-info\\\">\\n <div class=\\\"axp-weather-detail-label\\\">\\n {{ 'weather.wind' | translate: { scope: 'dashboard' } | async }}\\n </div>\\n <div class=\\\"axp-weather-detail-value\\\">\\n {{ getWindSpeed() }} {{ getWindSpeedUnit() | translate: { scope: 'dashboard' } | async }}\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Weather forecast section -->\\n @if (showForecast() && weatherData()?.forecast) {\\n <div class=\\\"axp-weather-forecast\\\">\\n <div class=\\\"axp-weather-forecast-header\\\">\\n <h3 class=\\\"axp-weather-forecast-title\\\">\\n <i class=\\\"fa-solid fa-calendar-days\\\"></i>\\n <span class=\\\"ax-px-1\\\">{{ 'weather.forecast' | translate: { scope: 'dashboard' } | async }}</span>\\n </h3>\\n </div>\\n <!-- Loading indicator for forecast -->\\n <!-- @if (isForecastLoading()) {\\n <div class=\\\"axp-weather-forecast-loading\\\">\\n <i class=\\\"fa-solid fa-spinner fa-spin\\\"></i>\\n <span>{{ 'weather.loading-forecast' | translate: { scope: 'dashboard' } | async }}</span>\\n </div>\\n } -->\\n <!-- Scrollable forecast days display -->\\n <div class=\\\"axp-weather-forecast-items\\\">\\n @for (day of displayedForecast(); track day.day) {\\n <div class=\\\"axp-weather-forecast-day\\\">\\n <div class=\\\"axp-weather-forecast-day-name\\\">\\n {{ getDayName(parseDate(day.date)) | translate: { scope: 'dashboard' } | async }}\\n </div>\\n <div\\n class=\\\"axp-weather-forecast-icon\\\"\\n [title]=\\\"getConditionName(day.condition) | translate: { scope: 'dashboard' } | async\\\"\\n >\\n <img [src]=\\\"getConditionIcon(day.condition || '')\\\" />\\n </div>\\n <div class=\\\"axp-weather-forecast-temps\\\">\\n <span class=\\\"axp-weather-forecast-low\\\">\\n {{ temperatureUnit() === '\\u00B0C' ? day.minTempC : day.minTempF\\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\\n </span>\\n <span class=\\\"axp-weather-forecast-high\\\">\\n {{ temperatureUnit() === '\\u00B0C' ? day.maxTempC : day.maxTempF\\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\\n </span>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n\\n <!-- Last updated timestamp -->\\n <div class=\\\"axp-weather-last-updated\\\">\\n <span>{{ 'weather.last-updated' | translate: { scope: 'dashboard' } | async }}: {{ getLastUpdated() }}</span>\\n </div>\\n\\n <!-- Manual refresh button -->\\n <div class=\\\"axp-weather-refresh-action\\\">\\n <button\\n class=\\\"axp-weather-refresh-button\\\"\\n (click)=\\\"refreshWeather()\\\"\\n [attr.aria-label]=\\\"'weather.refresh' | translate: { scope: 'dashboard' } | async\\\"\\n [title]=\\\"'weather.refresh' | translate: { scope: 'dashboard' } | async\\\"\\n >\\n <i class=\\\"fa-solid fa-sync-alt\\\"></i>\\n <span>{{ 'weather.refresh' | translate: { scope: 'dashboard' } | async }}</span>\\n </button>\\n </div>\\n </div>\\n } @else if (!isLoading() && !hasError()) {\\n <!-- No data state (not loading, no error) -->\\n <div class=\\\"axp-weather-no-data-state\\\">\\n <i class=\\\"fa-solid fa-cloud-sun\\\"></i>\\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\\n <button class=\\\"axp-weather-refresh-button\\\" (click)=\\\"refreshWeather()\\\">\\n <i class=\\\"fa-solid fa-sync-alt\\\"></i>\\n <span>{{ 'weather.load-data' | translate: { scope: 'dashboard' } | async }}</span>\\n </button>\\n </div>\\n }\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%;--primary-gradient-start: #2196f3;--primary-gradient-end: #1976d2;--shadow-color: rgba(0, 0, 0, .2);--glass-bg: rgba(255, 255, 255, .15);--glass-border: rgba(255, 255, 255, .2);--text-primary: rgba(255, 255, 255, .95);--text-secondary: rgba(255, 255, 255, .75);--transition-speed: .3s}.axp-weather-container{width:100%;height:100%;overflow:hidden;position:relative;box-shadow:0 4px 8px rgba(0,0,0,.1);min-height:300px}.axp-weather-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(44,62,80,.85);display:flex;justify-content:center;align-items:center;z-index:100}.axp-weather-loading-spinner{text-align:center}.axp-weather-loading-spinner i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-loading-spinner span{display:block;color:#fff;font-size:1rem}.axp-weather-error-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(189,54,47,.85);display:flex;justify-content:center;align-items:center}.axp-weather-error-message{text-align:center;padding:1rem}.axp-weather-error-message i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-error-message span{display:block;color:#fff;font-size:1.1rem;margin-bottom:1rem}.axp-weather-error-message .axp-weather-retry-button{color:#bd362f;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-error-message .axp-weather-retry-button:hover{transform:translateY(-1px)}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem;color:rgba(255,255,255,.8)}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}.axp-weather-no-data-state .axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-no-data-state .axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-background-decorations{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.axp-weather-decoration{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center}.axp-weather-gradient-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.axp-weather-inner{position:relative;z-index:2;height:100%;padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between}.axp-weather-location-info{display:flex;align-items:center;margin-bottom:1.5rem}.axp-weather-location-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background-color:rgba(255,255,255,.2);border-radius:50%;margin-right:.75rem}.axp-weather-location-icon i{color:#fff}.axp-weather-location-name{margin:0;font-size:1.5rem;font-weight:500;text-shadow:1px 1px 3px rgba(0,0,0,.2);text-transform:capitalize}.axp-weather-current-weather{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap}.axp-weather-condition{display:flex;flex-direction:column;align-items:center}.axp-weather-icon-wrapper{position:relative;margin-bottom:.5rem}.axp-weather-icon{position:relative;z-index:2;scale:2}.axp-weather-icon i{font-size:2.75rem;filter:drop-shadow(0 0 8px rgba(0,0,0,.3))}.axp-weather-icon-glow{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);width:45px;height:45px;border-radius:50%;filter:blur(15px);opacity:.4}.axp-weather-condition-name{font-size:1.1rem;text-align:center;text-shadow:1px 1px 2px rgba(0,0,0,.2)}.axp-weather-temperature{display:flex;align-items:flex-start;text-shadow:1px 1px 3px rgba(0,0,0,.3)}.axp-weather-temperature-value{font-size:3.5rem;font-weight:500;line-height:1}.axp-weather-temperature-unit{font-size:1.5rem;margin-top:.25rem}.axp-weather-details{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darker-surface),var(--tw-bg-opacity, 1));display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;padding:1rem;border-radius:8px}.axp-weather-detail-item{display:flex;align-items:center;flex:1;min-width:120px}.axp-weather-detail-icon{width:40px;height:40px;border-radius:50%;background-color:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;margin-right:.75rem}.axp-weather-detail-icon i{font-size:1.25rem}.axp-weather-detail-info{display:flex;padding-inline:.25rem;flex-direction:column}.axp-weather-detail-label{font-size:.875rem;margin-bottom:.25rem}.axp-weather-detail-value{font-size:1.125rem;font-weight:500}.axp-weather-forecast{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darker-surface),var(--tw-bg-opacity, 1));margin-bottom:.5rem;border-radius:8px;padding:1rem}.axp-weather-forecast-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.axp-weather-forecast-title{margin:0;font-size:1.125rem;font-weight:500;display:flex;align-items:center}.axp-weather-forecast-title i{margin-right:.5rem;opacity:.8}.axp-weather-scroll-indicator{color:rgba(255,255,255,.6)}.axp-weather-forecast-items{display:flex;overflow-x:auto;gap:.75rem;padding-bottom:.5rem}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3);border-radius:4px}.axp-weather-forecast-items::-webkit-scrollbar-track{background-color:rgba(0,0,0,.1);border-radius:4px}.axp-weather-forecast-day{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));min-width:90px;display:flex;flex-direction:column;align-items:center;padding:.75rem .5rem;border-radius:6px;transition:all .3s ease}.axp-weather-forecast-day:hover{transform:translateY(-2px)}.axp-weather-forecast-day-name{font-size:.875rem;margin-bottom:.5rem;font-weight:500}.axp-weather-forecast-icon{font-size:1.5rem;margin-bottom:.5rem}.axp-weather-forecast-icon i{filter:drop-shadow(0 0 5px rgba(0,0,0,.2))}.axp-weather-forecast-temps{display:flex;flex-direction:row;gap:.75rem;align-items:center;font-size:.775rem}.axp-weather-last-updated{text-align:center;font-size:.75rem;opacity:.7;margin-bottom:.5rem}.axp-weather-refresh-action{text-align:center}.axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-refresh-button i{font-size:.875rem}@media (max-width: 576px){.axp-weather-inner{padding:.8rem;gap:.4rem}.axp-weather-location-name{font-size:1.1rem;padding-inline:.25rem}.axp-weather-temperature{font-size:2.5rem}.axp-weather-temperature-unit{font-size:1.1rem}.axp-weather-weather-details{flex-direction:column;gap:.5rem}.axp-weather-forecast-items{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.5rem;margin:0 -.4rem;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;mask-image:linear-gradient(to right,#000 95%,rgba(0,0,0,0));-webkit-mask-image:linear-gradient(to right,rgb(0,0,0) 95%,rgba(0,0,0,0))}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.2);border-radius:4px}.axp-weather-forecast-day{min-width:60px;flex:0 0 auto;padding:.4rem .6rem}.axp-weather-forecast-day-name{font-size:.7rem}.axp-weather-forecast-icon{padding:.3rem;height:1.6rem}.axp-weather-forecast-temps{font-size:.7rem}.axp-weather-scroll-indicator{display:block}}:host-context(.theme-dark){--glass-bg: rgba(0, 0, 0, .3);--glass-border: rgba(255, 255, 255, .1)}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"directive\", type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXDateTimeModule }, { kind: \"ngmodule\", type: AXFormatModule }, { kind: \"ngmodule\", type: HttpClientModule }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPWeatherWidgetViewComponent, decorators: [{\n type: Component,\n args: [{ standalone: true, imports: [CommonModule, AXDateTimeModule, AXFormatModule, HttpClientModule, AXTranslationModule], providers: [\n {\n provide: AXPWeatherApiAbstract,\n useClass: AXPWeatherApiService,\n },\n ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<!-- Weather Widget Component Template -->\\n<div class=\\\"axp-weather-container\\\" #containerElement>\\n <!-- Loading indicator -->\\n @if (isLoading()) {\\n <div class=\\\"axp-weather-loading-overlay\\\">\\n <div class=\\\"axp-weather-loading-spinner\\\">\\n <i class=\\\"fa-solid fa-spinner fa-spin\\\"></i>\\n <span>{{ 'weather.loading' | translate: { scope: 'dashboard' } | async }}</span>\\n </div>\\n </div>\\n }\\n\\n <!-- Error message -->\\n @if (hasError()) {\\n <div class=\\\"axp-weather-error-overlay\\\">\\n <div class=\\\"axp-weather-error-message\\\">\\n <i class=\\\"fa-solid fa-exclamation-triangle\\\"></i>\\n <span>{{ errorMessage() | translate: { scope: 'dashboard' } | async }}</span>\\n <button class=\\\"axp-weather-retry-button\\\" (click)=\\\"refreshWeather()\\\">\\n <i class=\\\"fa-solid fa-sync-alt\\\"></i>\\n <span>{{ 'weather.retry' | translate: { scope: 'dashboard' } | async }}</span>\\n </button>\\n </div>\\n </div>\\n }\\n\\n <!-- Weather content - only show when we have data -->\\n @if (weatherData()) {\\n <!-- Background decorations based on weather condition -->\\n <div class=\\\"axp-weather-background-decorations\\\">\\n <div class=\\\"axp-weather-decoration\\\" [ngClass]=\\\"weatherData()?.current?.condition?.toLowerCase()\\\"></div>\\n <div class=\\\"axp-weather-gradient-overlay\\\"></div>\\n </div>\\n\\n <div class=\\\"axp-weather-inner\\\">\\n <!-- Location information section -->\\n <div class=\\\"axp-weather-location-info\\\">\\n <div class=\\\"axp-weather-location-icon\\\">\\n <i class=\\\"fa-solid fa-location-dot\\\"></i>\\n </div>\\n <div class=\\\"axp-weather-location-text\\\">\\n <h2 class=\\\"axp-weather-location-name\\\">{{ city() }}</h2>\\n </div>\\n </div>\\n\\n <!-- Current weather conditions section -->\\n <div class=\\\"axp-weather-current-weather\\\">\\n <!-- Weather icon and condition name -->\\n @if (showCurrentCondition()) {\\n <div class=\\\"axp-weather-condition\\\">\\n <div class=\\\"axp-weather-icon-wrapper\\\">\\n <div class=\\\"axp-weather-icon\\\">\\n <img [src]=\\\"getConditionIcon(weatherData()?.current?.condition || '')\\\" />\\n </div>\\n <div\\n class=\\\"axp-weather-icon-glow\\\"\\n [style.background-color]=\\\"getConditionColor(weatherData()?.current?.condition || '')\\\"\\n ></div>\\n </div>\\n <div class=\\\"axp-weather-condition-name\\\">\\n {{ getCurrentCondition() | translate: { scope: 'dashboard' } | async }}\\n </div>\\n </div>\\n }\\n\\n <!-- Temperature display -->\\n @if (showTemperature()) {\\n <div class=\\\"axp-weather-temperature\\\">\\n <span class=\\\"axp-weather-temperature-value\\\">{{ getCurrentTemperature() }}</span>\\n <span class=\\\"axp-weather-temperature-unit\\\">{{\\n getTemperatureUnit() | translate: { scope: 'dashboard' } | async\\n }}</span>\\n </div>\\n }\\n </div>\\n\\n <!-- Weather details section (humidity and wind) -->\\n @if (showHumidity() || showWind()) {\\n <div class=\\\"axp-weather-details\\\">\\n <!-- Humidity information -->\\n @if (showHumidity()) {\\n <div class=\\\"axp-weather-detail-item\\\">\\n <div class=\\\"axp-weather-detail-icon\\\">\\n <i class=\\\"fa-solid fa-droplet\\\"></i>\\n </div>\\n <div class=\\\"axp-weather-detail-info\\\">\\n <div class=\\\"axp-weather-detail-label\\\">\\n {{ 'weather.humidity' | translate: { scope: 'dashboard' } | async }}\\n </div>\\n <div class=\\\"axp-weather-detail-value\\\">{{ getHumidity() }}%</div>\\n </div>\\n </div>\\n }\\n\\n <!-- Wind speed information -->\\n @if (showWind()) {\\n <div class=\\\"axp-weather-detail-item\\\">\\n <div class=\\\"axp-weather-detail-icon\\\">\\n <i class=\\\"fa-solid fa-wind\\\"></i>\\n </div>\\n <div class=\\\"axp-weather-detail-info\\\">\\n <div class=\\\"axp-weather-detail-label\\\">\\n {{ 'weather.wind' | translate: { scope: 'dashboard' } | async }}\\n </div>\\n <div class=\\\"axp-weather-detail-value\\\">\\n {{ getWindSpeed() }} {{ getWindSpeedUnit() | translate: { scope: 'dashboard' } | async }}\\n </div>\\n </div>\\n </div>\\n }\\n </div>\\n }\\n\\n <!-- Weather forecast section -->\\n @if (showForecast() && weatherData()?.forecast) {\\n <div class=\\\"axp-weather-forecast\\\">\\n <div class=\\\"axp-weather-forecast-header\\\">\\n <h3 class=\\\"axp-weather-forecast-title\\\">\\n <i class=\\\"fa-solid fa-calendar-days\\\"></i>\\n <span class=\\\"ax-px-1\\\">{{ 'weather.forecast' | translate: { scope: 'dashboard' } | async }}</span>\\n </h3>\\n </div>\\n <!-- Loading indicator for forecast -->\\n <!-- @if (isForecastLoading()) {\\n <div class=\\\"axp-weather-forecast-loading\\\">\\n <i class=\\\"fa-solid fa-spinner fa-spin\\\"></i>\\n <span>{{ 'weather.loading-forecast' | translate: { scope: 'dashboard' } | async }}</span>\\n </div>\\n } -->\\n <!-- Scrollable forecast days display -->\\n <div class=\\\"axp-weather-forecast-items\\\">\\n @for (day of displayedForecast(); track day.day) {\\n <div class=\\\"axp-weather-forecast-day\\\">\\n <div class=\\\"axp-weather-forecast-day-name\\\">\\n {{ getDayName(parseDate(day.date)) | translate: { scope: 'dashboard' } | async }}\\n </div>\\n <div\\n class=\\\"axp-weather-forecast-icon\\\"\\n [title]=\\\"getConditionName(day.condition) | translate: { scope: 'dashboard' } | async\\\"\\n >\\n <img [src]=\\\"getConditionIcon(day.condition || '')\\\" />\\n </div>\\n <div class=\\\"axp-weather-forecast-temps\\\">\\n <span class=\\\"axp-weather-forecast-low\\\">\\n {{ temperatureUnit() === '\\u00B0C' ? day.minTempC : day.minTempF\\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\\n </span>\\n <span class=\\\"axp-weather-forecast-high\\\">\\n {{ temperatureUnit() === '\\u00B0C' ? day.maxTempC : day.maxTempF\\n }}{{ getTemperatureUnit() | translate: { scope: 'dashboard' } | async }}\\n </span>\\n </div>\\n </div>\\n }\\n </div>\\n </div>\\n }\\n\\n <!-- Last updated timestamp -->\\n <div class=\\\"axp-weather-last-updated\\\">\\n <span>{{ 'weather.last-updated' | translate: { scope: 'dashboard' } | async }}: {{ getLastUpdated() }}</span>\\n </div>\\n\\n <!-- Manual refresh button -->\\n <div class=\\\"axp-weather-refresh-action\\\">\\n <button\\n class=\\\"axp-weather-refresh-button\\\"\\n (click)=\\\"refreshWeather()\\\"\\n [attr.aria-label]=\\\"'weather.refresh' | translate: { scope: 'dashboard' } | async\\\"\\n [title]=\\\"'weather.refresh' | translate: { scope: 'dashboard' } | async\\\"\\n >\\n <i class=\\\"fa-solid fa-sync-alt\\\"></i>\\n <span>{{ 'weather.refresh' | translate: { scope: 'dashboard' } | async }}</span>\\n </button>\\n </div>\\n </div>\\n } @else if (!isLoading() && !hasError()) {\\n <!-- No data state (not loading, no error) -->\\n <div class=\\\"axp-weather-no-data-state\\\">\\n <i class=\\\"fa-solid fa-cloud-sun\\\"></i>\\n <p>{{ 'weather.no-data' | translate: { scope: 'dashboard' } | async }}</p>\\n <button class=\\\"axp-weather-refresh-button\\\" (click)=\\\"refreshWeather()\\\">\\n <i class=\\\"fa-solid fa-sync-alt\\\"></i>\\n <span>{{ 'weather.load-data' | translate: { scope: 'dashboard' } | async }}</span>\\n </button>\\n </div>\\n }\\n</div>\\n\", styles: [\":host{display:block;width:100%;height:100%;--primary-gradient-start: #2196f3;--primary-gradient-end: #1976d2;--shadow-color: rgba(0, 0, 0, .2);--glass-bg: rgba(255, 255, 255, .15);--glass-border: rgba(255, 255, 255, .2);--text-primary: rgba(255, 255, 255, .95);--text-secondary: rgba(255, 255, 255, .75);--transition-speed: .3s}.axp-weather-container{width:100%;height:100%;overflow:hidden;position:relative;box-shadow:0 4px 8px rgba(0,0,0,.1);min-height:300px}.axp-weather-loading-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(44,62,80,.85);display:flex;justify-content:center;align-items:center;z-index:100}.axp-weather-loading-spinner{text-align:center}.axp-weather-loading-spinner i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-loading-spinner span{display:block;color:#fff;font-size:1rem}.axp-weather-error-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(189,54,47,.85);display:flex;justify-content:center;align-items:center}.axp-weather-error-message{text-align:center;padding:1rem}.axp-weather-error-message i{font-size:2.5rem;color:#fff;margin-bottom:.5rem}.axp-weather-error-message span{display:block;color:#fff;font-size:1.1rem;margin-bottom:1rem}.axp-weather-error-message .axp-weather-retry-button{color:#bd362f;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-error-message .axp-weather-retry-button:hover{transform:translateY(-1px)}.axp-weather-no-data-state{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:2rem;text-align:center}.axp-weather-no-data-state i{font-size:3rem;margin-bottom:1rem;color:rgba(255,255,255,.8)}.axp-weather-no-data-state p{margin-bottom:1.5rem;font-size:1.1rem}.axp-weather-no-data-state .axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-no-data-state .axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-background-decorations{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1}.axp-weather-decoration{position:absolute;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center}.axp-weather-gradient-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.axp-weather-inner{position:relative;z-index:2;height:100%;padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between}.axp-weather-location-info{display:flex;align-items:center;margin-bottom:1.5rem}.axp-weather-location-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background-color:rgba(255,255,255,.2);border-radius:50%;margin-right:.75rem}.axp-weather-location-icon i{color:#fff}.axp-weather-location-name{margin:0;font-size:1.5rem;font-weight:500;text-shadow:1px 1px 3px rgba(0,0,0,.2);text-transform:capitalize}.axp-weather-current-weather{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap}.axp-weather-condition{display:flex;flex-direction:column;align-items:center}.axp-weather-icon-wrapper{position:relative;margin-bottom:.5rem}.axp-weather-icon{position:relative;z-index:2;scale:2}.axp-weather-icon i{font-size:2.75rem;filter:drop-shadow(0 0 8px rgba(0,0,0,.3))}.axp-weather-icon-glow{position:absolute;z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);width:45px;height:45px;border-radius:50%;filter:blur(15px);opacity:.4}.axp-weather-condition-name{font-size:1.1rem;text-align:center;text-shadow:1px 1px 2px rgba(0,0,0,.2)}.axp-weather-temperature{display:flex;align-items:flex-start;text-shadow:1px 1px 3px rgba(0,0,0,.3)}.axp-weather-temperature-value{font-size:3.5rem;font-weight:500;line-height:1}.axp-weather-temperature-unit{font-size:1.5rem;margin-top:.25rem}.axp-weather-details{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darker-surface),var(--tw-bg-opacity, 1));display:flex;flex-wrap:wrap;gap:1.5rem;margin-bottom:1rem;padding:1rem;border-radius:8px}.axp-weather-detail-item{display:flex;align-items:center;flex:1;min-width:120px}.axp-weather-detail-icon{width:40px;height:40px;border-radius:50%;background-color:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;margin-right:.75rem}.axp-weather-detail-icon i{font-size:1.25rem}.axp-weather-detail-info{display:flex;padding-inline:.25rem;flex-direction:column}.axp-weather-detail-label{font-size:.875rem;margin-bottom:.25rem}.axp-weather-detail-value{font-size:1.125rem;font-weight:500}.axp-weather-forecast{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-darker-surface),var(--tw-bg-opacity, 1));margin-bottom:.5rem;border-radius:8px;padding:1rem}.axp-weather-forecast-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.axp-weather-forecast-title{margin:0;font-size:1.125rem;font-weight:500;display:flex;align-items:center}.axp-weather-forecast-title i{margin-right:.5rem;opacity:.8}.axp-weather-scroll-indicator{color:rgba(255,255,255,.6)}.axp-weather-forecast-items{display:flex;overflow-x:auto;gap:.75rem;padding-bottom:.5rem}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.3);border-radius:4px}.axp-weather-forecast-items::-webkit-scrollbar-track{background-color:rgba(0,0,0,.1);border-radius:4px}.axp-weather-forecast-day{--tw-bg-opacity: 1;background-color:rgba(var(--ax-sys-color-surface),var(--tw-bg-opacity, 1));min-width:90px;display:flex;flex-direction:column;align-items:center;padding:.75rem .5rem;border-radius:6px;transition:all .3s ease}.axp-weather-forecast-day:hover{transform:translateY(-2px)}.axp-weather-forecast-day-name{font-size:.875rem;margin-bottom:.5rem;font-weight:500}.axp-weather-forecast-icon{font-size:1.5rem;margin-bottom:.5rem}.axp-weather-forecast-icon i{filter:drop-shadow(0 0 5px rgba(0,0,0,.2))}.axp-weather-forecast-temps{display:flex;flex-direction:row;gap:.75rem;align-items:center;font-size:.775rem}.axp-weather-last-updated{text-align:center;font-size:.75rem;opacity:.7;margin-bottom:.5rem}.axp-weather-refresh-action{text-align:center}.axp-weather-refresh-button{background-color:rgba(255,255,255,.2);color:#fff;border:none;border-radius:4px;padding:.5rem 1rem;font-size:.875rem;cursor:pointer;transition:all .3s ease;display:inline-flex;align-items:center;gap:.5rem}.axp-weather-refresh-button:hover{background-color:rgba(255,255,255,.3);transform:translateY(-1px)}.axp-weather-refresh-button i{font-size:.875rem}@media (max-width: 576px){.axp-weather-inner{padding:.8rem;gap:.4rem}.axp-weather-location-name{font-size:1.1rem;padding-inline:.25rem}.axp-weather-temperature{font-size:2.5rem}.axp-weather-temperature-unit{font-size:1.1rem}.axp-weather-weather-details{flex-direction:column;gap:.5rem}.axp-weather-forecast-items{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.5rem;margin:0 -.4rem;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;mask-image:linear-gradient(to right,#000 95%,rgba(0,0,0,0));-webkit-mask-image:linear-gradient(to right,rgb(0,0,0) 95%,rgba(0,0,0,0))}.axp-weather-forecast-items::-webkit-scrollbar{height:4px}.axp-weather-forecast-items::-webkit-scrollbar-thumb{background-color:rgba(255,255,255,.2);border-radius:4px}.axp-weather-forecast-day{min-width:60px;flex:0 0 auto;padding:.4rem .6rem}.axp-weather-forecast-day-name{font-size:.7rem}.axp-weather-forecast-icon{padding:.3rem;height:1.6rem}.axp-weather-forecast-temps{font-size:.7rem}.axp-weather-scroll-indicator{display:block}}:host-context(.theme-dark){--glass-bg: rgba(0, 0, 0, .3);--glass-border: rgba(255, 255, 255, .1)}\\n\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VhdGhlci13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvc2hhcmVkL3dpZGdldHMvd2VhdGhlci93ZWF0aGVyLXdpZGdldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy93ZWF0aGVyL3dlYXRoZXItd2lkZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsUUFBUSxJQUFJLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckYsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsR0FHckIsTUFBTSxvQkFBb0IsQ0FBQzs7OztBQUU1Qjs7OztHQUlH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QU0sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDNUYsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVTLFNBQVMsQ0FBQyxPQUFlO1FBQ2pDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0FyVVUsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsMkRBUjdCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFLG9CQUFvQjthQUMvQjtTQUNGLGtMQ3hDSCw2L1BBNExBLGt5UEQxSlksWUFBWSxpTEFBRSxnQkFBZ0IsOEJBQUUsY0FBYyw4QkFBRSxnQkFBZ0IsOEJBQUUsbUJBQW1COzsyRkFTcEYsNkJBQTZCO2tCQWJ6QyxTQUFTO2lDQUdJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsYUFDckY7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLG9CQUFvQjt5QkFDL0I7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGVUaW1lTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBBWEZvcm1hdE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS9mb3JtYXQnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGludGVydmFsIGFzIHJ4anNJbnRlcnZhbCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBWFBXZWF0aGVyQXBpQWJzdHJhY3QsXG4gIEFYUFdlYXRoZXJBcGlTZXJ2aWNlLFxuICBBWFBXZWF0aGVyRGF0YSxcbiAgQVhQV2VhdGhlclJlcXVlc3RPcHRpb25zLFxufSBmcm9tICcuL3dlYXRoZXItc2VydmljZXMnO1xuXG4vKipcbiAqIFdlYXRoZXIgV2lkZ2V0IENvbXBvbmVudFxuICogRGlzcGxheXMgY3VycmVudCB3ZWF0aGVyIGNvbmRpdGlvbnMgYW5kIG9wdGlvbmFsIGZvcmVjYXN0IGRhdGFcbiAqIGZvciBhIHNwZWNpZmllZCBsb2NhdGlvbiB3aXRoIGN1c3RvbWl6YWJsZSBkaXNwbGF5IG9wdGlvbnMuXG4gKi9cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vd2VhdGhlci13aWRnZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93ZWF0aGVyLXdpZGdldC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWERhdGVUaW1lTW9kdWxlLCBBWEZvcm1hdE1vZHVsZSwgSHR0cENsaWVudE1vZHVsZSwgQVhUcmFuc2xhdGlvbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUFdlYXRoZXJBcGlBYnN0cmFjdCxcbiAgICAgIHVzZUNsYXNzOiBBWFBXZWF0aGVyQXBpU2VydmljZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2VhdGhlcldpZGdldFZpZXdDb21wb25lbnQgZXh0ZW5kcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB7XG4gIC8vIENvbnRhaW5lciBlbGVtZW50IHJlZmVyZW5jZVxuICBwcm90ZWN0ZWQgY29udGFpbmVyRWwgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KCdjb250YWluZXJFbGVtZW50Jyk7XG5cbiAgLy8gV2VhdGhlciBBUEkgc2VydmljZSBpbnN0YW5jZVxuICBwcml2YXRlIHdlYXRoZXJTZXJ2aWNlID0gaW5qZWN0KEFYUFdlYXRoZXJBcGlBYnN0cmFjdCk7XG5cbiAgLy8gU3RhdGUgc2lnbmFsc1xuICBwcm90ZWN0ZWQgd2VhdGhlckRhdGEgPSBzaWduYWw8QVhQV2VhdGhlckRhdGEgfCBudWxsPihudWxsKTtcbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbCh0cnVlKTtcbiAgcHJvdGVjdGVkIGhhc0Vycm9yID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIGVycm9yTWVzc2FnZSA9IHNpZ25hbCgnJyk7XG4gIHByb3RlY3RlZCBpc0ZvcmVjYXN0TG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLy8gQXV0by1yZWZyZXNoIHN1YnNjcmlwdGlvblxuICBwcml2YXRlIHJlZnJlc2hTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIC8vIE9wdGlvbi1kZXJpdmVkIGNvbXB1dGVkIHByb3BlcnRpZXNcbiAgcHJvdGVjdGVkIGNpdHkgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucygpWydjaXR5J10gfHwgJ05ld3lvcmsnO1xuICB9KTtcbiAgcHJvdGVjdGVkIHRlbXBlcmF0dXJlVW5pdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpWyd0ZW1wZXJhdHVyZVVuaXQnXT8uaWQgfHwgJ8KwQycpO1xuICBwcm90ZWN0ZWQgd2luZFNwZWVkVW5pdCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpWyd3aW5kU3BlZWRVbml0J10/LmlkIHx8ICdrbS9oJyk7XG5cbiAgLy8gRGlzcGxheSBvcHRpb24gZmxhZ3NcbiAgcHJvdGVjdGVkIHNob3dDdXJyZW50Q29uZGl0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKClbJ3Nob3dDdXJyZW50Q29uZGl0aW9uJ10gIT09IGZhbHNlKTtcbiAgcHJvdGVjdGVkIHNob3dUZW1wZXJhdHVyZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpWydzaG93VGVtcGVyYXR1cmUnXSAhPT0gZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2hvd0h1bWlkaXR5ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKClbJ3Nob3dIdW1pZGl0eSddICE9PSBmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93V2luZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpWydzaG93V2luZCddICE9PSBmYWxzZSk7XG4gIHByb3RlY3RlZCBzaG93Rm9yZWNhc3QgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKVsnc2hvd0ZvcmVjYXN0J10gIT09IGZhbHNlKTtcbiAgcHJvdGVjdGVkIGZvcmVjYXN0RGF5cyA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpWydmb3JlY2FzdERheXMnXSA/PyA1KTtcblxuICAvLyBSZWZyZXNoIHNldHRpbmdzXG4gIHByb3RlY3RlZCBhdXRvUmVmcmVzaCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpWydhdXRvUmVmcmVzaCddICE9PSBmYWxzZSk7XG4gIHByb3RlY3RlZCByZWZyZXNoSW50ZXJ2YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKVsncmVmcmVzaEludGVydmFsJ10/LmlkID8/IDE1KTtcblxuICAvLyBSZWFjdGl2aXR5IGVmZmVjdHNcbiAgcHJpdmF0ZSBvcHRpb25zRWZmZWN0ID0gZWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcHRzID0gdGhpcy5vcHRpb25zKCk7XG4gICAgdGhpcy5sb2FkV2VhdGhlckRhdGEoKTtcbiAgICB0aGlzLnNldHVwUmVmcmVzaFRpbWVyKCk7XG4gIH0pO1xuXG4gIHByaXZhdGUgdmFsdWVFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIHRoaXMuY2l0eSgpO1xuICAgIHRoaXMubG9hZFdlYXRoZXJEYXRhKCk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBkaXNwbGF5ZWRGb3JlY2FzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB3ZWF0aGVyRGF0YSA9IHRoaXMud2VhdGhlckRhdGEoKTtcbiAgICBpZiAoIXdlYXRoZXJEYXRhPy5mb3JlY2FzdCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgZm9yZWNhc3REYXlzID0gdGhpcy5mb3JlY2FzdERheXMoKTtcbiAgICByZXR1cm4gd2VhdGhlckRhdGEuZm9yZWNhc3Quc2xpY2UoMCwgZm9yZWNhc3REYXlzKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gY2RyIENoYW5nZURldGVjdG9yUmVmIGZvciB0cmlnZ2VyaW5nIHZpZXcgdXBkYXRlc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICAgIC8vIEluamVjdCB0aGUgYWJzdHJhY3Qgc2VydmljZSB3aGljaCB3aWxsIHJlc29sdmUgdG8gZWl0aGVyIHRoZSBtb2NrIG9yIHJlYWwgaW1wbGVtZW50YXRpb25cbiAgICB0aGlzLndlYXRoZXJTZXJ2aWNlID0gaW5qZWN0KEFYUFdlYXRoZXJBcGlBYnN0cmFjdCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubG9hZFdlYXRoZXJEYXRhKCk7XG4gICAgICB0aGlzLnNldHVwUmVmcmVzaFRpbWVyKCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcG9uZW50IGNsZWFudXAgb24gZGVzdHJveVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclJlZnJlc2hUaW1lcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHdlYXRoZXIgZGF0YSBmcm9tIHRoZSBBUElcbiAgICogU2V0cyBsb2FkaW5nIHN0YXRlIGFuZCBoYW5kbGVzIGVycm9yc1xuICAgKi9cbiAgcHJpdmF0ZSBsb2FkV2VhdGhlckRhdGEoKTogdm9pZCB7XG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuaGFzRXJyb3Iuc2V0KGZhbHNlKTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoJycpO1xuXG4gICAgY29uc3QgbG9jYXRpb25RdWVyeSA9IHRoaXMuY2l0eSgpO1xuICAgIGNvbnN0IHNob3VsZFNob3dGb3JlY2FzdCA9IHRoaXMuc2hvd0ZvcmVjYXN0KCk7XG5cbiAgICAvLyBJZiB3ZSBuZWVkIGZvcmVjYXN0LCByZXF1ZXN0IGl0IGRpcmVjdGx5IHRvIGF2b2lkIGR1cGxpY2F0ZSBjYWxsc1xuICAgIC8vIFRoZSBmb3JlY2FzdCBlbmRwb2ludCBhbHNvIHJldHVybnMgY3VycmVudCB3ZWF0aGVyXG4gICAgaWYgKHNob3VsZFNob3dGb3JlY2FzdCkge1xuICAgICAgY29uc3QgZm9yZWNhc3RPcHRpb25zOiBBWFBXZWF0aGVyUmVxdWVzdE9wdGlvbnMgJiB7IGRheXM/OiBudW1iZXIgfSA9IHtcbiAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uUXVlcnksXG4gICAgICAgIHRlbXBVbml0OiB0aGlzLnRlbXBlcmF0dXJlVW5pdCgpLFxuICAgICAgICB1c2VNb2NrRGF0YTogZmFsc2UsIC8vIFVzZSByZWFsIEFQSSwgc2lnbmFscyB0byB1c2UgZm9yZWNhc3QgZW5kcG9pbnRcbiAgICAgICAgZGF5czogdGhpcy5mb3JlY2FzdERheXMoKSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuaXNGb3JlY2FzdExvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgdGhpcy53ZWF0aGVyU2VydmljZS5nZXRGb3JlY2FzdChmb3JlY2FzdE9wdGlvbnMpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy53ZWF0aGVyRGF0YS5zZXQoZGF0YSk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmlzRm9yZWNhc3RMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmlzRm9yZWNhc3RMb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gSWYgd2Ugb25seSBuZWVkIGN1cnJlbnQgd2VhdGhlciwgdXNlIGdldFdlYXRoZXJcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogQVhQV2VhdGhlclJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgbG9jYXRpb246IGxvY2F0aW9uUXVlcnksXG4gICAgICB0ZW1wVW5pdDogdGhpcy50ZW1wZXJhdHVyZVVuaXQoKSxcbiAgICAgIHVzZU1vY2tEYXRhOiBmYWxzZSwgLy8gVXNlIHJlYWwgQVBJXG4gICAgfTtcblxuICAgIHRoaXMud2VhdGhlclNlcnZpY2UuZ2V0V2VhdGhlcihyZXF1ZXN0T3B0aW9ucykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMud2VhdGhlckRhdGEuc2V0KGRhdGEpO1xuICAgICAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoZSBhdXRvLXJlZnJlc2ggdGltZXIgYmFzZWQgb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzZXR1cFJlZnJlc2hUaW1lcigpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyUmVmcmVzaFRpbWVyKCk7XG4gICAgaWYgKCF0aGlzLmF1dG9SZWZyZXNoKCkpIHJldHVybjtcblxuICAgIGNvbnN0IG1pbkludGVydmFsID0gNTsgLy8gNSBtaW51dGVzIG1pbmltdW1cbiAgICBjb25zdCBpbnRlcnZhbFZhbHVlID0gTWF0aC5tYXgodGhpcy5yZWZyZXNoSW50ZXJ2YWwoKSwgbWluSW50ZXJ2YWwpO1xuICAgIGNvbnN0IGludGVydmFsTXMgPSBpbnRlcnZhbFZhbHVlICogNjAgKiAxMDAwO1xuXG4gICAgdGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uID0gcnhqc0ludGVydmFsKGludGVydmFsTXMpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAvLyBBbHdheXMgdXNlIHRoZSBsb2FkV2VhdGhlckRhdGEgbWV0aG9kIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBBUEkgY2FsbFxuICAgICAgICAgIHRoaXMubG9hZFdlYXRoZXJEYXRhKCk7XG4gICAgICAgICAgLy8gUmV0dXJuIGFuIGVtcHR5IG9ic2VydmFibGUgdG8gc2F0aXNmeSB0aGUgc3dpdGNoTWFwIHR5cGluZ1xuICAgICAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxBWFBXZWF0aGVyRGF0YT4oKG9ic2VydmVyKSA9PiB7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIHJlZnJlc2ggdGltZXIgc3Vic2NyaXB0aW9uXG4gICAqL1xuICBwcml2YXRlIGNsZWFyUmVmcmVzaFRpbWVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlZnJlc2hTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucmVmcmVzaFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgcmVmcmVzaGVzIHRoZSB3ZWF0aGVyIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCByZWZyZXNoV2VhdGhlcigpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRXZWF0aGVyRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgdGVtcGVyYXR1cmUgYmFzZWQgb24gc2VsZWN0ZWQgdW5pdFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEN1cnJlbnRUZW1wZXJhdHVyZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy53ZWF0aGVyRGF0YSgpKSByZXR1cm4gMDtcblxuICAgIHJldHVybiB0aGlzLnRlbXBlcmF0dXJlVW5pdCgpID09PSAnwrBDJyA/IHRoaXMud2VhdGhlckRhdGEoKSEuY3VycmVudC50ZW1wQyA6IHRoaXMud2VhdGhlckRhdGEoKSEuY3VycmVudC50ZW1wRjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBmZWVscyBsaWtlIHRlbXBlcmF0dXJlIGJhc2VkIG9uIHNlbGVjdGVkIHVuaXRcbiAgICovXG4gIHByb3RlY3RlZCBnZXRGZWVsc0xpa2VUZW1wZXJhdHVyZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy53ZWF0aGVyRGF0YSgpKSByZXR1cm4gMDtcblxuICAgIHJldHVybiB0aGlzLnRlbXBlcmF0dXJlVW5pdCgpID09PSAnwrBDJ1xuICAgICAgPyB0aGlzLndlYXRoZXJEYXRhKCkhLmN1cnJlbnQuZmVlbHNMaWtlQ1xuICAgICAgOiB0aGlzLndlYXRoZXJEYXRhKCkhLmN1cnJlbnQuZmVlbHNMaWtlRjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBodW1pZGl0eSBwZXJjZW50YWdlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0SHVtaWRpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy53ZWF0aGVyRGF0YSgpPy5jdXJyZW50Lmh1bWlkaXR5IHx8IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgd2luZCBzcGVlZCBiYXNlZCBvbiBzZWxlY3RlZCB1bml0XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0V2luZFNwZWVkKCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLndlYXRoZXJEYXRhKCkpIHJldHVybiAwO1xuXG4gICAgcmV0dXJuIHRoaXMud2luZFNwZWVkVW5pdCgpID09PSAna20vaCcgPyB0aGlzLndlYXRoZXJEYXRhKCkhLmN1cnJlbnQud2luZEtwaCA6IHRoaXMud2VhdGhlckRhdGEoKSEuY3VycmVudC53aW5kTXBoO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGN1cnJlbnQgd2VhdGhlciBjb25kaXRpb25cbiAgICovXG4gIHByb3RlY3RlZCBnZXRDdXJyZW50Q29uZGl0aW9uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29uZGl0aW9uSWQgPSB0aGlzLndlYXRoZXJEYXRhKCk/LmN1cnJlbnQuY29uZGl0aW9uIHx8ICcnO1xuICAgIHJldHVybiB0aGlzLmdldENvbmRpdGlvbk5hbWUoY29uZGl0aW9uSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGZvcm1hdHRlZCBsYXN0IHVwZGF0ZWQgdGltZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldExhc3RVcGRhdGVkKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLndlYXRoZXJEYXRhKCk/LmN1cnJlbnQubGFzdFVwZGF0ZWQpIHJldHVybiAnJztcblxuICAgIHJldHVybiBuZXcgRGF0ZSh0aGlzLndlYXRoZXJEYXRhKCkhLmN1cnJlbnQubGFzdFVwZGF0ZWQpLnRvTG9jYWxlVGltZVN0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGFwcHJvcHJpYXRlIGljb24gY2xhc3MgZm9yIGEgd2VhdGhlciBjb25kaXRpb25cbiAgICogQHBhcmFtIGNvbmRpdGlvbklkIFRoZSBJRCBvZiB0aGUgd2VhdGhlciBjb25kaXRpb25cbiAgICogQHJldHVybnMgVGhlIEZvbnQgQXdlc29tZSBpY29uIGNsYXNzIHN0cmluZ1xuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbmRpdGlvbkljb24oY29uZGl0aW9uSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFjb25kaXRpb25JZCkge1xuICAgICAgY29uZGl0aW9uSWQgPSAndW5rbm93bic7XG4gICAgfVxuICAgIGNvbnN0IHN2Z0ljb24gPSB0aGlzLndlYXRoZXJTZXJ2aWNlLmdldENvbmRpdGlvbihjb25kaXRpb25JZCkuc3ZnSWNvbjtcbiAgICByZXR1cm4gYGFzc2V0cy9pbWFnZXMvd2VhdGhlci8ke3N2Z0ljb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkaXNwbGF5IG5hbWUgZm9yIGEgd2VhdGhlciBjb25kaXRpb25cbiAgICogQHBhcmFtIGNvbmRpdGlvbklkIFRoZSBJRCBvZiB0aGUgd2VhdGhlciBjb25kaXRpb25cbiAgICogQHJldHVybnMgVGhlIHRyYW5zbGF0ZWQgZGlzcGxheSBuYW1lXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q29uZGl0aW9uTmFtZShjb25kaXRpb25JZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb25kaXRpb24gPSB0aGlzLndlYXRoZXJTZXJ2aWNlLmdldENvbmRpdGlvbihjb25kaXRpb25JZCk7XG4gICAgaWYgKCFjb25kaXRpb24/Lm5hbWUpIHJldHVybiAnd2VhdGhlci5jb25kaXRpb25zLnN1bm55JztcblxuICAgIC8vIENvbnZlcnQgY29uZGl0aW9uIG5hbWUgdG8gbG93ZXJjYXNlIGFuZCByZXBsYWNlIHNwYWNlcyB3aXRoIGh5cGhlbnNcbiAgICBjb25zdCBmb3JtYXR0ZWROYW1lID0gY29uZGl0aW9uLm5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICctJyk7XG4gICAgcmV0dXJuIGB3ZWF0aGVyLmNvbmRpdGlvbnMuJHtmb3JtYXR0ZWROYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29sb3IgZm9yIGEgd2VhdGhlciBjb25kaXRpb25cbiAgICogQHBhcmFtIGNvbmRpdGlvbklkIFdlYXRoZXIgY29uZGl0aW9uIElEXG4gICAqIEByZXR1cm5zIENTUyBjb2xvciB2YWx1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldENvbmRpdGlvbkNvbG9yKGNvbmRpdGlvbklkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbmRpdGlvbiA9IHRoaXMud2VhdGhlclNlcnZpY2UuZ2V0Q29uZGl0aW9uKGNvbmRpdGlvbklkKTtcbiAgICByZXR1cm4gY29uZGl0aW9uPy5jb2xvciB8fCAnIzk5OTk5OSc7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW5zIHVwIGNoYXJ0IHJlc291cmNlc1xuICAgKiBSZXF1aXJlZCBieSBBWFBDaGFydEJhc2VDb21wb25lbnRcbiAgICovXG4gIHByb3RlY3RlZCBjbGVhbnVwQ2hhcnQoKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhclJlZnJlc2hUaW1lcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcignV2VhdGhlciB3aWRnZXQgZXJyb3I6JywgZXJyb3IpO1xuICAgIHRoaXMuaGFzRXJyb3Iuc2V0KHRydWUpO1xuXG4gICAgLy8gQ2hlY2sgaWYgaXQncyBhIG5ldHdvcmsgZXJyb3JcbiAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSAwKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoJ3dlYXRoZXIuZXJyb3IubmV0d29yaycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGl0J3MgYW4gQVBJIGVycm9yXG4gICAgaWYgKGVycm9yLnN0YXR1cyA+PSA0MDAgJiYgZXJyb3Iuc3RhdHVzIDwgNTAwKSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZS5zZXQoJ3dlYXRoZXIuZXJyb3IuYXBpJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBlcnJvciBtZXNzYWdlXG4gICAgdGhpcy5lcnJvck1lc3NhZ2Uuc2V0KCd3ZWF0aGVyLmVycm9yLmdlbmVyYWwnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUZW1wZXJhdHVyZVVuaXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50ZW1wZXJhdHVyZVVuaXQoKSA9PT0gJ8KwQycgPyAnd2VhdGhlci51bml0cy5jZWxzaXVzJyA6ICd3ZWF0aGVyLnVuaXRzLmZhaHJlbmhlaXQnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFdpbmRTcGVlZFVuaXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy53aW5kU3BlZWRVbml0KCkgPT09ICdrbS9oJyA/ICd3ZWF0aGVyLnVuaXRzLmttaCcgOiAnd2VhdGhlci51bml0cy5tcGgnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERheU5hbWUoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHRvbW9ycm93ID0gbmV3IERhdGUodG9kYXkpO1xuICAgIHRvbW9ycm93LnNldERhdGUodG9tb3Jyb3cuZ2V0RGF0ZSgpICsgMSk7XG5cbiAgICBpZiAoZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gdG9kYXkudG9EYXRlU3RyaW5nKCkpIHtcbiAgICAgIHJldHVybiAnd2VhdGhlci5kYXlzLnRvZGF5JztcbiAgICB9XG4gICAgaWYgKGRhdGUudG9EYXRlU3RyaW5nKCkgPT09IHRvbW9ycm93LnRvRGF0ZVN0cmluZygpKSB7XG4gICAgICByZXR1cm4gJ3dlYXRoZXIuZGF5cy50b21vcnJvdyc7XG4gICAgfVxuXG4gICAgY29uc3QgZGF5cyA9IFsnc3VuZGF5JywgJ21vbmRheScsICd0dWVzZGF5JywgJ3dlZG5lc2RheScsICd0aHVyc2RheScsICdmcmlkYXknLCAnc2F0dXJkYXknXTtcbiAgICByZXR1cm4gYHdlYXRoZXIuZGF5cy4ke2RheXNbZGF0ZS5nZXREYXkoKV19YDtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZURhdGUoZGF0ZVN0cjogc3RyaW5nKTogRGF0ZSB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGVTdHIpO1xuICB9XG59XG4iLCI8IS0tIFdlYXRoZXIgV2lkZ2V0IENvbXBvbmVudCBUZW1wbGF0ZSAtLT5cbjxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1jb250YWluZXJcIiAjY29udGFpbmVyRWxlbWVudD5cbiAgPCEtLSBMb2FkaW5nIGluZGljYXRvciAtLT5cbiAgQGlmIChpc0xvYWRpbmcoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1sb2FkaW5nLW92ZXJsYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1sb2FkaW5nLXNwaW5uZXJcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+XG4gICAgICAgIDxzcGFuPnt7ICd3ZWF0aGVyLmxvYWRpbmcnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDwhLS0gRXJyb3IgbWVzc2FnZSAtLT5cbiAgQGlmIChoYXNFcnJvcigpKSB7XG4gICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWVycm9yLW92ZXJsYXlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1lcnJvci1tZXNzYWdlXCI+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGVcIj48L2k+XG4gICAgICAgIDxzcGFuPnt7IGVycm9yTWVzc2FnZSgpIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJheHAtd2VhdGhlci1yZXRyeS1idXR0b25cIiAoY2xpY2spPVwicmVmcmVzaFdlYXRoZXIoKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtc3luYy1hbHRcIj48L2k+XG4gICAgICAgICAgPHNwYW4+e3sgJ3dlYXRoZXIucmV0cnknIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8IS0tIFdlYXRoZXIgY29udGVudCAtIG9ubHkgc2hvdyB3aGVuIHdlIGhhdmUgZGF0YSAtLT5cbiAgQGlmICh3ZWF0aGVyRGF0YSgpKSB7XG4gICAgPCEtLSBCYWNrZ3JvdW5kIGRlY29yYXRpb25zIGJhc2VkIG9uIHdlYXRoZXIgY29uZGl0aW9uIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1iYWNrZ3JvdW5kLWRlY29yYXRpb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItZGVjb3JhdGlvblwiIFtuZ0NsYXNzXT1cIndlYXRoZXJEYXRhKCk/LmN1cnJlbnQ/LmNvbmRpdGlvbj8udG9Mb3dlckNhc2UoKVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWdyYWRpZW50LW92ZXJsYXlcIj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1pbm5lclwiPlxuICAgICAgPCEtLSBMb2NhdGlvbiBpbmZvcm1hdGlvbiBzZWN0aW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWxvY2F0aW9uLWluZm9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWxvY2F0aW9uLWljb25cIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWxvY2F0aW9uLWRvdFwiPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1sb2NhdGlvbi10ZXh0XCI+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiYXhwLXdlYXRoZXItbG9jYXRpb24tbmFtZVwiPnt7IGNpdHkoKSB9fTwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gQ3VycmVudCB3ZWF0aGVyIGNvbmRpdGlvbnMgc2VjdGlvbiAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1jdXJyZW50LXdlYXRoZXJcIj5cbiAgICAgICAgPCEtLSBXZWF0aGVyIGljb24gYW5kIGNvbmRpdGlvbiBuYW1lIC0tPlxuICAgICAgICBAaWYgKHNob3dDdXJyZW50Q29uZGl0aW9uKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItY29uZGl0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItaWNvbi13cmFwcGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1pY29uXCI+XG4gICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldENvbmRpdGlvbkljb24od2VhdGhlckRhdGEoKT8uY3VycmVudD8uY29uZGl0aW9uIHx8ICcnKVwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJheHAtd2VhdGhlci1pY29uLWdsb3dcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldENvbmRpdGlvbkNvbG9yKHdlYXRoZXJEYXRhKCk/LmN1cnJlbnQ/LmNvbmRpdGlvbiB8fCAnJylcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1jb25kaXRpb24tbmFtZVwiPlxuICAgICAgICAgICAgICB7eyBnZXRDdXJyZW50Q29uZGl0aW9uKCkgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFRlbXBlcmF0dXJlIGRpc3BsYXkgLS0+XG4gICAgICAgIEBpZiAoc2hvd1RlbXBlcmF0dXJlKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItdGVtcGVyYXR1cmVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXhwLXdlYXRoZXItdGVtcGVyYXR1cmUtdmFsdWVcIj57eyBnZXRDdXJyZW50VGVtcGVyYXR1cmUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXhwLXdlYXRoZXItdGVtcGVyYXR1cmUtdW5pdFwiPnt7XG4gICAgICAgICAgICAgIGdldFRlbXBlcmF0dXJlVW5pdCgpIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmNcbiAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBXZWF0aGVyIGRldGFpbHMgc2VjdGlvbiAoaHVtaWRpdHkgYW5kIHdpbmQpIC0tPlxuICAgICAgQGlmIChzaG93SHVtaWRpdHkoKSB8fCBzaG93V2luZCgpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1kZXRhaWxzXCI+XG4gICAgICAgICAgPCEtLSBIdW1pZGl0eSBpbmZvcm1hdGlvbiAtLT5cbiAgICAgICAgICBAaWYgKHNob3dIdW1pZGl0eSgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItZGV0YWlsLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWRldGFpbC1pY29uXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1kcm9wbGV0XCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWRldGFpbC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWRldGFpbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ3dlYXRoZXIuaHVtaWRpdHknIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItZGV0YWlsLXZhbHVlXCI+e3sgZ2V0SHVtaWRpdHkoKSB9fSU8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIFdpbmQgc3BlZWQgaW5mb3JtYXRpb24gLS0+XG4gICAgICAgICAgQGlmIChzaG93V2luZCgpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItZGV0YWlsLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWRldGFpbC1pY29uXCI+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS13aW5kXCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWRldGFpbC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWRldGFpbC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAge3sgJ3dlYXRoZXIud2luZCcgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1kZXRhaWwtdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldFdpbmRTcGVlZCgpIH19IHt7IGdldFdpbmRTcGVlZFVuaXQoKSB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBXZWF0aGVyIGZvcmVjYXN0IHNlY3Rpb24gLS0+XG4gICAgICBAaWYgKHNob3dGb3JlY2FzdCgpICYmIHdlYXRoZXJEYXRhKCk/LmZvcmVjYXN0KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1mb3JlY2FzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1mb3JlY2FzdC1oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImF4cC13ZWF0aGVyLWZvcmVjYXN0LXRpdGxlXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEtc29saWQgZmEtY2FsZW5kYXItZGF5c1wiPjwvaT5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1weC0xXCI+e3sgJ3dlYXRoZXIuZm9yZWNhc3QnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gTG9hZGluZyBpbmRpY2F0b3IgZm9yIGZvcmVjYXN0IC0tPlxuICAgICAgICAgIDwhLS0gQGlmIChpc0ZvcmVjYXN0TG9hZGluZygpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItZm9yZWNhc3QtbG9hZGluZ1wiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgJ3dlYXRoZXIubG9hZGluZy1mb3JlY2FzdCcgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0gfCBhc3luYyB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH0gLS0+XG4gICAgICAgICAgPCEtLSBTY3JvbGxhYmxlIGZvcmVjYXN0IGRheXMgZGlzcGxheSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItZm9yZWNhc3QtaXRlbXNcIj5cbiAgICAgICAgICAgIEBmb3IgKGRheSBvZiBkaXNwbGF5ZWRGb3JlY2FzdCgpOyB0cmFjayBkYXkuZGF5KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1mb3JlY2FzdC1kYXlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItZm9yZWNhc3QtZGF5LW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGdldERheU5hbWUocGFyc2VEYXRlKGRheS5kYXRlKSkgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXhwLXdlYXRoZXItZm9yZWNhc3QtaWNvblwiXG4gICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiZ2V0Q29uZGl0aW9uTmFtZShkYXkuY29uZGl0aW9uKSB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0Q29uZGl0aW9uSWNvbihkYXkuY29uZGl0aW9uIHx8ICcnKVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLWZvcmVjYXN0LXRlbXBzXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4cC13ZWF0aGVyLWZvcmVjYXN0LWxvd1wiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0ZW1wZXJhdHVyZVVuaXQoKSA9PT0gJ8KwQycgPyBkYXkubWluVGVtcEMgOiBkYXkubWluVGVtcEZcbiAgICAgICAgICAgICAgICAgICAgfX17eyBnZXRUZW1wZXJhdHVyZVVuaXQoKSB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4cC13ZWF0aGVyLWZvcmVjYXN0LWhpZ2hcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdGVtcGVyYXR1cmVVbml0KCkgPT09ICfCsEMnID8gZGF5Lm1heFRlbXBDIDogZGF5Lm1heFRlbXBGXG4gICAgICAgICAgICAgICAgICAgIH19e3sgZ2V0VGVtcGVyYXR1cmVVbml0KCkgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0gfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gTGFzdCB1cGRhdGVkIHRpbWVzdGFtcCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJheHAtd2VhdGhlci1sYXN0LXVwZGF0ZWRcIj5cbiAgICAgICAgPHNwYW4+e3sgJ3dlYXRoZXIubGFzdC11cGRhdGVkJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jIH19OiB7eyBnZXRMYXN0VXBkYXRlZCgpIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gTWFudWFsIHJlZnJlc2ggYnV0dG9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4cC13ZWF0aGVyLXJlZnJlc2gtYWN0aW9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImF4cC13ZWF0aGVyLXJlZnJlc2gtYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaFdlYXRoZXIoKVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInd2VhdGhlci5yZWZyZXNoJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ3dlYXRoZXIucmVmcmVzaCcgfCB0cmFuc2xhdGU6IHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0gfCBhc3luY1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXN5bmMtYWx0XCI+PC9pPlxuICAgICAgICAgIDxzcGFuPnt7ICd3ZWF0aGVyLnJlZnJlc2gnIHwgdHJhbnNsYXRlOiB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9IHwgYXN5bmMgfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2UgaWYgKCFpc0xvYWRpbmcoKSAmJiAhaGFzRXJyb3IoKSkge1xuICAgIDwhLS0gTm8gZGF0YSBzdGF0ZSAobm90IGxvYWRpbmcsIG5vIGVycm9yKSAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiYXhwLXdlYXRoZXItbm8tZGF0YS1zdGF0ZVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jbG91ZC1zdW5cIj48L2k+XG4gICAgICA8cD57eyAnd2VhdGhlci5uby1kYXRhJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jIH19PC9wPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImF4cC13ZWF0aGVyLXJlZnJlc2gtYnV0dG9uXCIgKGNsaWNrKT1cInJlZnJlc2hXZWF0aGVyKClcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1zeW5jLWFsdFwiPjwvaT5cbiAgICAgICAgPHNwYW4+e3sgJ3dlYXRoZXIubG9hZC1kYXRhJyB8IHRyYW5zbGF0ZTogeyBzY29wZTogJ2Rhc2hib2FyZCcgfSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuIl19","import { AXPWidgetGroupEnum, AXPWidgetsCatalog } from '@acorex/platform/layout/builder';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nimport { AXP_APPEARANCE_PROPERTY_GROUP, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_DATA_PROPERTY_GROUP, } from '@acorex/platform/widgets';\n/**\n * Weather Widget Configuration\n * Provides customization options for displaying weather data and forecast\n */\nexport const AXPWeatherWidget = {\n name: 'weather',\n title: 'Weather Widget',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n type: 'dashboard',\n icon: 'fa-light fa-cloud-sun',\n properties: [\n /* Location Settings */\n {\n name: 'city',\n title: '@dashboard:widgets.weather.city',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'New York',\n dataType: 'string',\n interface: {\n name: 'city',\n path: 'options.city',\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: true,\n },\n /* Display Options */\n // {\n // name: 'showCurrentCondition',\n // title: 'Show Current Condition',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showCurrentCondition',\n // path: 'options.showCurrentCondition',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showTemperature',\n // title: 'Show Temperature',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showTemperature',\n // path: 'options.showTemperature',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showCurrentCondition',\n // title: 'Show Current Condition',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showCurrentCondition',\n // path: 'options.showCurrentCondition',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n // {\n // name: 'showTemperature',\n // title: 'Show Temperature',\n // group: AXP_APPEARANCE_PROPERTY_GROUP,\n // schema: {\n // defaultValue: true,\n // dataType: 'boolean',\n // interface: {\n // name: 'showTemperature',\n // path: 'options.showTemperature',\n // type: AXPWidgetsCatalog.toggle,\n // },\n // },\n // visible: true,\n // },\n {\n name: 'showHumidity',\n title: '@dashboard:widgets.weather.show-humidity',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showHumidity',\n path: 'options.showHumidity',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showWind',\n title: '@dashboard:widgets.weather.show-wind',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showWind',\n path: 'options.showWind',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'showForecast',\n title: '@dashboard:widgets.weather.show-forecast',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'showForecast',\n path: 'options.showForecast',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'forecastDays',\n title: '@dashboard:widgets.weather.forecast-days',\n group: AXP_APPEARANCE_PROPERTY_GROUP,\n schema: {\n defaultValue: 5,\n dataType: 'number',\n interface: {\n name: 'forecastDays',\n path: 'options.forecastDays',\n type: AXPWidgetsCatalog.number,\n options: {\n minValue: 1,\n maxValue: 7,\n step: 1,\n },\n },\n },\n visible: true,\n },\n /* Units Settings */\n {\n name: 'temperatureUnit',\n title: '@dashboard:widgets.weather.temperature-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: '°C',\n dataType: 'string',\n interface: {\n name: 'temperatureUnit',\n path: 'options.temperatureUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['°C', '°F'],\n },\n },\n },\n visible: true,\n },\n {\n name: 'windSpeedUnit',\n title: '@dashboard:widgets.weather.wind-speed-unit',\n group: AXP_DATA_PROPERTY_GROUP,\n schema: {\n defaultValue: 'km/h',\n dataType: 'string',\n interface: {\n name: 'windSpeedUnit',\n path: 'options.windSpeedUnit',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ['km/h', 'mph', 'm/s'],\n },\n },\n },\n visible: true,\n },\n /* Refresh Settings */\n {\n name: 'autoRefresh',\n title: '@dashboard:widgets.weather.auto-refresh',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: true,\n dataType: 'boolean',\n interface: {\n name: 'autoRefresh',\n path: 'options.autoRefresh',\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: true,\n },\n {\n name: 'refreshInterval',\n title: '@dashboard:widgets.weather.refresh-interval',\n group: AXP_BEHAVIOR_PROPERTY_GROUP,\n schema: {\n defaultValue: 15,\n dataType: 'number',\n interface: {\n name: 'refreshInterval',\n path: 'options.refreshInterval',\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: [5, 10, 15, 30, 60],\n },\n },\n },\n visible: true,\n },\n ],\n components: {\n view: {\n component: () => import('./weather-widget.component').then((c) => c.AXPWeatherWidgetViewComponent),\n },\n },\n meta: {\n dimensions: {\n width: 3,\n height: 7,\n minWidth: 2,\n minHeight: 4,\n maxWidth: 4,\n maxHeight: 8,\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VhdGhlci13aWRnZXQuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvc2hhcmVkL3dpZGdldHMvd2VhdGhlci93ZWF0aGVyLXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzdCLDJCQUEyQixFQUMzQix1QkFBdUIsR0FDeEIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBb0I7SUFDL0MsSUFBSSxFQUFFLFNBQVM7SUFDZixLQUFLLEVBQUUsZ0JBQWdCO0lBQ3ZCLFVBQVUsRUFBRSxDQUFDLDRCQUE0QixDQUFDO0lBQzFDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQztJQUM1QyxJQUFJLEVBQUUsV0FBVztJQUNqQixJQUFJLEVBQUUsdUJBQXVCO0lBQzdCLFVBQVUsRUFBRTtRQUNWLHVCQUF1QjtRQUN2QjtZQUNFLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLGlDQUFpQztZQUN4QyxLQUFLLEVBQUUsdUJBQXVCO1lBQzlCLE1BQU0sRUFBRTtnQkFDTixZQUFZLEVBQUUsVUFBVTtnQkFDeEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsY0FBYztvQkFDcEIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQzdCO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkO1FB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QVMsRUFBRTtvQkFDVCxJQUFJLEVBQUUsYUFBYTtvQkFDbkIsSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07aUJBQy9CO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsSUFBSTtTQUNkO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLEtBQUssRUFBRSw2Q0FBNkM7WUFDcEQsS0FBSyxFQUFFLDJCQUEyQjtZQUNsQyxNQUFNLEVBQUU7Z0JBQ04sWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixTQUFTLEVBQUU7b0JBQ1QsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsSUFBSSxFQUFFLGlCQUFpQixDQUFDLE1BQU07b0JBQzlCLE9BQU8sRUFBRTt3QkFDUCxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO3FCQUNoQztpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZDtLQUNGO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLDZCQUE2QixDQUFDO1NBQ25HO0tBQ0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBRVQsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztZQUVaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7U0FDYjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldENvbmZpZywgQVhQV2lkZ2V0R3JvdXBFbnVtLCBBWFBXaWRnZXRzQ2F0YWxvZyB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuXG5pbXBvcnQgeyBBWFBfV0lER0VUU19VVElMSVRZX0NBVEVHT1JZIH0gZnJvbSAnLi4vY2hhcnQudHlwZSc7XG5pbXBvcnQge1xuICBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgQVhQX0JFSEFWSU9SX1BST1BFUlRZX0dST1VQLFxuICBBWFBfREFUQV9QUk9QRVJUWV9HUk9VUCxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93aWRnZXRzJztcblxuLyoqXG4gKiBXZWF0aGVyIFdpZGdldCBDb25maWd1cmF0aW9uXG4gKiBQcm92aWRlcyBjdXN0b21pemF0aW9uIG9wdGlvbnMgZm9yIGRpc3BsYXlpbmcgd2VhdGhlciBkYXRhIGFuZCBmb3JlY2FzdFxuICovXG5leHBvcnQgY29uc3QgQVhQV2VhdGhlcldpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnd2VhdGhlcicsXG4gIHRpdGxlOiAnV2VhdGhlciBXaWRnZXQnLFxuICBjYXRlZ29yaWVzOiBbQVhQX1dJREdFVFNfVVRJTElUWV9DQVRFR09SWV0sXG4gIGdyb3VwczogW0FYUFdpZGdldEdyb3VwRW51bS5EYXNoYm9hcmRXaWRnZXRdLFxuICB0eXBlOiAnZGFzaGJvYXJkJyxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWNsb3VkLXN1bicsXG4gIHByb3BlcnRpZXM6IFtcbiAgICAvKiBMb2NhdGlvbiBTZXR0aW5ncyAqL1xuICAgIHtcbiAgICAgIG5hbWU6ICdjaXR5JyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLndlYXRoZXIuY2l0eScsXG4gICAgICBncm91cDogQVhQX0RBVEFfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAnTmV3IFlvcmsnLFxuICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdjaXR5JyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5jaXR5JyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50ZXh0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHZpc2libGU6IHRydWUsXG4gICAgfSxcblxuICAgIC8qIERpc3BsYXkgT3B0aW9ucyAqL1xuICAgIC8vIHtcbiAgICAvLyAgIG5hbWU6ICdzaG93Q3VycmVudENvbmRpdGlvbicsXG4gICAgLy8gICB0aXRsZTogJ1Nob3cgQ3VycmVudCBDb25kaXRpb24nLFxuICAgIC8vICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgIC8vICAgc2NoZW1hOiB7XG4gICAgLy8gICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAvLyAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAvLyAgICAgaW50ZXJmYWNlOiB7XG4gICAgLy8gICAgICAgbmFtZTogJ3Nob3dDdXJyZW50Q29uZGl0aW9uJyxcbiAgICAvLyAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93Q3VycmVudENvbmRpdGlvbicsXG4gICAgLy8gICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgfSxcbiAgICAvLyAgIHZpc2libGU6IHRydWUsXG4gICAgLy8gfSxcbiAgICAvLyB7XG4gICAgLy8gICBuYW1lOiAnc2hvd1RlbXBlcmF0dXJlJyxcbiAgICAvLyAgIHRpdGxlOiAnU2hvdyBUZW1wZXJhdHVyZScsXG4gICAgLy8gICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgLy8gICBzY2hlbWE6IHtcbiAgICAvLyAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgIC8vICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgIC8vICAgICBpbnRlcmZhY2U6IHtcbiAgICAvLyAgICAgICBuYW1lOiAnc2hvd1RlbXBlcmF0dXJlJyxcbiAgICAvLyAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93VGVtcGVyYXR1cmUnLFxuICAgIC8vICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgIH0sXG4gICAgLy8gICB2aXNpYmxlOiB0cnVlLFxuICAgIC8vIH0sXG4gICAgLy8ge1xuICAgIC8vICAgbmFtZTogJ3Nob3dDdXJyZW50Q29uZGl0aW9uJyxcbiAgICAvLyAgIHRpdGxlOiAnU2hvdyBDdXJyZW50IENvbmRpdGlvbicsXG4gICAgLy8gICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgLy8gICBzY2hlbWE6IHtcbiAgICAvLyAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgIC8vICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgIC8vICAgICBpbnRlcmZhY2U6IHtcbiAgICAvLyAgICAgICBuYW1lOiAnc2hvd0N1cnJlbnRDb25kaXRpb24nLFxuICAgIC8vICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dDdXJyZW50Q29uZGl0aW9uJyxcbiAgICAvLyAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgLy8gICAgIH0sXG4gICAgLy8gICB9LFxuICAgIC8vICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAvLyB9LFxuICAgIC8vIHtcbiAgICAvLyAgIG5hbWU6ICdzaG93VGVtcGVyYXR1cmUnLFxuICAgIC8vICAgdGl0bGU6ICdTaG93IFRlbXBlcmF0dXJlJyxcbiAgICAvLyAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAvLyAgIHNjaGVtYToge1xuICAgIC8vICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgLy8gICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgLy8gICAgIGludGVyZmFjZToge1xuICAgIC8vICAgICAgIG5hbWU6ICdzaG93VGVtcGVyYXR1cmUnLFxuICAgIC8vICAgICAgIHBhdGg6ICdvcHRpb25zLnNob3dUZW1wZXJhdHVyZScsXG4gICAgLy8gICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudG9nZ2xlLFxuICAgIC8vICAgICB9LFxuICAgIC8vICAgfSxcbiAgICAvLyAgIHZpc2libGU6IHRydWUsXG4gICAgLy8gfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc2hvd0h1bWlkaXR5JyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLndlYXRoZXIuc2hvdy1odW1pZGl0eScsXG4gICAgICBncm91cDogQVhQX0FQUEVBUkFOQ0VfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnc2hvd0h1bWlkaXR5JyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5zaG93SHVtaWRpdHknLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dXaW5kJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLndlYXRoZXIuc2hvdy13aW5kJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IHRydWUsXG4gICAgICAgIGRhdGFUeXBlOiAnYm9vbGVhbicsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICdzaG93V2luZCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd1dpbmQnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnRvZ2dsZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ3Nob3dGb3JlY2FzdCcsXG4gICAgICB0aXRsZTogJ0BkYXNoYm9hcmQ6d2lkZ2V0cy53ZWF0aGVyLnNob3ctZm9yZWNhc3QnLFxuICAgICAgZ3JvdXA6IEFYUF9BUFBFQVJBTkNFX1BST1BFUlRZX0dST1VQLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ3Nob3dGb3JlY2FzdCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuc2hvd0ZvcmVjYXN0JyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdmb3JlY2FzdERheXMnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMud2VhdGhlci5mb3JlY2FzdC1kYXlzJyxcbiAgICAgIGdyb3VwOiBBWFBfQVBQRUFSQU5DRV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6IDUsXG4gICAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgICAgbmFtZTogJ2ZvcmVjYXN0RGF5cycsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMuZm9yZWNhc3REYXlzJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgbWluVmFsdWU6IDEsXG4gICAgICAgICAgICBtYXhWYWx1ZTogNyxcbiAgICAgICAgICAgIHN0ZXA6IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG5cbiAgICAvKiBVbml0cyBTZXR0aW5ncyAqL1xuICAgIHtcbiAgICAgIG5hbWU6ICd0ZW1wZXJhdHVyZVVuaXQnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMud2VhdGhlci50ZW1wZXJhdHVyZS11bml0JyxcbiAgICAgIGdyb3VwOiBBWFBfREFUQV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6ICfCsEMnLFxuICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICAgIGludGVyZmFjZToge1xuICAgICAgICAgIG5hbWU6ICd0ZW1wZXJhdHVyZVVuaXQnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLnRlbXBlcmF0dXJlVW5pdCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFsnwrBDJywgJ8KwRiddLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd3aW5kU3BlZWRVbml0JyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLndlYXRoZXIud2luZC1zcGVlZC11bml0JyxcbiAgICAgIGdyb3VwOiBBWFBfREFUQV9QUk9QRVJUWV9HUk9VUCxcbiAgICAgIHNjaGVtYToge1xuICAgICAgICBkZWZhdWx0VmFsdWU6ICdrbS9oJyxcbiAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnd2luZFNwZWVkVW5pdCcsXG4gICAgICAgICAgcGF0aDogJ29wdGlvbnMud2luZFNwZWVkVW5pdCcsXG4gICAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cuc2VsZWN0LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIGRhdGFTb3VyY2U6IFsna20vaCcsICdtcGgnLCAnbS9zJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2aXNpYmxlOiB0cnVlLFxuICAgIH0sXG5cbiAgICAvKiBSZWZyZXNoIFNldHRpbmdzICovXG4gICAge1xuICAgICAgbmFtZTogJ2F1dG9SZWZyZXNoJyxcbiAgICAgIHRpdGxlOiAnQGRhc2hib2FyZDp3aWRnZXRzLndlYXRoZXIuYXV0by1yZWZyZXNoJyxcbiAgICAgIGdyb3VwOiBBWFBfQkVIQVZJT1JfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAnYXV0b1JlZnJlc2gnLFxuICAgICAgICAgIHBhdGg6ICdvcHRpb25zLmF1dG9SZWZyZXNoJyxcbiAgICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdyZWZyZXNoSW50ZXJ2YWwnLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMud2VhdGhlci5yZWZyZXNoLWludGVydmFsJyxcbiAgICAgIGdyb3VwOiBBWFBfQkVIQVZJT1JfUFJPUEVSVFlfR1JPVVAsXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZGVmYXVsdFZhbHVlOiAxNSxcbiAgICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxuICAgICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgICBuYW1lOiAncmVmcmVzaEludGVydmFsJyxcbiAgICAgICAgICBwYXRoOiAnb3B0aW9ucy5yZWZyZXNoSW50ZXJ2YWwnLFxuICAgICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICBkYXRhU291cmNlOiBbNSwgMTAsIDE1LCAzMCwgNjBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjb21wb25lbnRzOiB7XG4gICAgdmlldzoge1xuICAgICAgY29tcG9uZW50OiAoKSA9PiBpbXBvcnQoJy4vd2VhdGhlci13aWRnZXQuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWFBXZWF0aGVyV2lkZ2V0Vmlld0NvbXBvbmVudCksXG4gICAgfSxcbiAgfSxcbiAgbWV0YToge1xuICAgIGRpbWVuc2lvbnM6IHtcbiAgICAgIHdpZHRoOiAzLFxuICAgICAgaGVpZ2h0OiA3LFxuXG4gICAgICBtaW5XaWR0aDogMixcbiAgICAgIG1pbkhlaWdodDogNCxcblxuICAgICAgbWF4V2lkdGg6IDQsXG4gICAgICBtYXhIZWlnaHQ6IDgsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogVHlwZSBkZWNsYXJhdGlvbiB0byByZWdpc3RlciB0aGUgd2VhdGhlciB3aWRnZXQgdHlwZVxuICovXG5kZWNsYXJlIG1vZHVsZSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcicge1xuICBpbnRlcmZhY2UgQVhQV2lkZ2V0VHlwZXNNYXAge1xuICAgIHdlYXRoZXI6ICd3ZWF0aGVyJztcbiAgfVxufVxuIl19","import { AXPopupService } from '@acorex/components/popup';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXP_GLOBAL_SEARCH_CONFIG_TOKEN } from '@acorex/modules/common';\nimport { AXPDataGenerator } from '@acorex/platform/core';\nimport { AXPLayoutWidgetComponent } from '@acorex/platform/layout/builder';\nimport { AXPWorkflowService } from '@acorex/platform/workflow';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXPDashboardShortcutWidgetViewComponent extends AXPLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.popupService = inject(AXPopupService);\n this.workflow = inject(AXPWorkflowService);\n this.searchConfig = inject(AXP_GLOBAL_SEARCH_CONFIG_TOKEN);\n this.item = computed(() => this.options()['item']);\n this.color = computed(() => this.options()['color']);\n }\n ngOnInit() {\n super.ngOnInit();\n if (!this.color()) {\n this.setOptions({\n color: AXPDataGenerator.color(),\n });\n }\n }\n async executeCommand() {\n if (this.item()?.command) {\n await this.workflow.execute(this.item().command.name, this.item().command.options);\n }\n }\n async setCommand() {\n const component = await this.searchConfig.window();\n const popup = await this.popupService.open(component, {\n title: 'Choose command...',\n size: 'fit',\n closeOnBackdropClick: true,\n header: false,\n });\n if (popup.data) {\n const result = popup.data;\n if (result && result.command) {\n this.setOptions({\n item: {\n name: result.name,\n title: result.title,\n description: result.description,\n icon: result.icon,\n command: result.command,\n },\n });\n }\n }\n }\n get __style() {\n const cls = {};\n cls[`background-color`] = this.color();\n return cls;\n }\n get __class() {\n const cls = {};\n cls[`ax-flex`] = true;\n cls[`ax-flex-col`] = true;\n cls[`ax-items-center`] = true;\n cls[`ax-justify-center`] = true;\n cls[`ax-w-full`] = true;\n cls[`ax-h-full`] = true;\n cls[`ax-text-center`] = true;\n cls[`ax-overflow-hidden`] = true;\n cls[`ax-cursor-pointer`] = true;\n cls[`ax-text-white`] = true;\n return cls;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDashboardShortcutWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXPDashboardShortcutWidgetViewComponent, isStandalone: true, selector: \"ng-component\", host: { properties: { \"style\": \"this.__style\", \"class\": \"this.__class\" } }, usesInheritance: true, ngImport: i0, template: `\n @if (item()) {\n <div\n class=\"ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden \"\n (click)=\"executeCommand()\"\n >\n <div class=\"ax-absolute ax-inset-0 ax-bg-black/0 hover:ax-bg-black/10 ax-transition-opacity\"></div>\n <i [class]=\"item().icon + ' ax-text-3xl'\"></i>\n <span class=\"ax-text-xl ax-font-semibold\">{{ item().title | translate | async }}</span>\n @if (item().description) {\n <span class=\"ax-text-sm ax-opacity-90 ax-text-center ax-px-2\">{{\n item().description! | translate | async\n }}</span>\n }\n </div>\n } @else {\n <div\n (click)=\"setCommand()\"\n class=\"ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden\"\n >\n <div class=\"ax-absolute ax-inset-0 ax-bg-black/0 hover:ax-bg-black/5 ax-transition-opacity\"></div>\n <i class=\"fa-light fa-plus ax-text-3xl\"></i>\n <span class=\"ax-text-xl ax-font-semibold\">{{\n '@dashboard:widgets.dashboard-shortcut.add-shortcut' | translate | async\n }}</span>\n </div>\n }\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXPDashboardShortcutWidgetViewComponent, decorators: [{\n type: Component,\n args: [{\n template: `\n @if (item()) {\n <div\n class=\"ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden \"\n (click)=\"executeCommand()\"\n >\n <div class=\"ax-absolute ax-inset-0 ax-bg-black/0 hover:ax-bg-black/10 ax-transition-opacity\"></div>\n <i [class]=\"item().icon + ' ax-text-3xl'\"></i>\n <span class=\"ax-text-xl ax-font-semibold\">{{ item().title | translate | async }}</span>\n @if (item().description) {\n <span class=\"ax-text-sm ax-opacity-90 ax-text-center ax-px-2\">{{\n item().description! | translate | async\n }}</span>\n }\n </div>\n } @else {\n <div\n (click)=\"setCommand()\"\n class=\"ax-group ax-flex ax-flex-col ax-items-center ax-justify-center ax-p-3 ax-w-full ax-h-full ax-relative ax-overflow-hidden\"\n >\n <div class=\"ax-absolute ax-inset-0 ax-bg-black/0 hover:ax-bg-black/5 ax-transition-opacity\"></div>\n <i class=\"fa-light fa-plus ax-text-3xl\"></i>\n <span class=\"ax-text-xl ax-font-semibold\">{{\n '@dashboard:widgets.dashboard-shortcut.add-shortcut' | translate | async\n }}</span>\n </div>\n }\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXTranslationModule],\n }]\n }], propDecorators: { __style: [{\n type: HostBinding,\n args: ['style']\n }], __class: [{\n type: HostBinding,\n args: ['class']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXNob3J0Y3V0LXdpZGdldC12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL3NoYXJlZC93aWRnZXRzL2Rhc2hib2FyZC1zaG9ydGN1dC9kYXNoYm9hcmQtc2hvcnRjdXQtd2lkZ2V0LXZpZXcuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQXFCLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUEyQ2xHLE1BQU0sT0FBTyx1Q0FBd0MsU0FBUSx3QkFBd0I7SUFqQ3JGOztRQWtDVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxhQUFRLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEMsaUJBQVksR0FBRyxNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUVwRCxTQUFJLEdBQUcsUUFBUSxDQUFrQixHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFvQixDQUFDLENBQUM7UUFDbEYsVUFBSyxHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFXLENBQUMsQ0FBQztLQStEN0U7SUE3RFUsUUFBUTtRQUNmLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFDZCxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO2FBQ2hDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRVMsS0FBSyxDQUFDLGNBQWM7UUFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JGLENBQUM7SUFDSCxDQUFDO0lBRVMsS0FBSyxDQUFDLFVBQVU7UUFDeEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3BELEtBQUssRUFBRSxtQkFBbUI7WUFDMUIsSUFBSSxFQUFFLEtBQUs7WUFDWCxvQkFBb0IsRUFBRSxJQUFJO1lBQzFCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBOEIsQ0FBQztZQUNwRCxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBQ2QsSUFBSSxFQUFFO3dCQUNKLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTt3QkFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO3dCQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVc7d0JBQy9CLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTt3QkFDakIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO3FCQUNMO2lCQUNyQixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUNZLE9BQU87UUFDakIsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUNZLE9BQU87UUFDakIsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDdEIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMxQixHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDOUIsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEIsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDN0IsR0FBRyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUNoQyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzVCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs4R0FwRVUsdUNBQXVDO2tHQUF2Qyx1Q0FBdUMsMktBaEN4Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJULDJEQUdTLFlBQVksbUZBQUUsbUJBQW1COzsyRkFFaEMsdUNBQXVDO2tCQWpDbkQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJCVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQztpQkFDN0M7OEJBaURhLE9BQU87c0JBRGxCLFdBQVc7dUJBQUMsT0FBTztnQkFRUixPQUFPO3NCQURsQixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7IEFYUF9HTE9CQUxfU0VBUkNIX0NPTkZJR19UT0tFTiB9IGZyb20gJ0BhY29yZXgvbW9kdWxlcy9jb21tb24nO1xuaW1wb3J0IHsgQVhQU2VhcmNoRGlzcGxheVJlc3VsdCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IsIEFYUEV4ZWN1dGVDb21tYW5kIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7IEFYUExheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQV29ya2Zsb3dTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS93b3JrZmxvdyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIEhvc3RCaW5kaW5nLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBTaG9ydGN1dEl0ZW0ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG4gIGNvbW1hbmQ6IEFYUEV4ZWN1dGVDb21tYW5kO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKGl0ZW0oKSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImF4LWdyb3VwIGF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LXAtMyBheC13LWZ1bGwgYXgtaC1mdWxsIGF4LXJlbGF0aXZlIGF4LW92ZXJmbG93LWhpZGRlbiBcIlxuICAgICAgICAoY2xpY2spPVwiZXhlY3V0ZUNvbW1hbmQoKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1hYnNvbHV0ZSBheC1pbnNldC0wIGF4LWJnLWJsYWNrLzAgaG92ZXI6YXgtYmctYmxhY2svMTAgYXgtdHJhbnNpdGlvbi1vcGFjaXR5XCI+PC9kaXY+XG4gICAgICAgIDxpIFtjbGFzc109XCJpdGVtKCkuaWNvbiArICcgYXgtdGV4dC0zeGwnXCI+PC9pPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1zZW1pYm9sZFwiPnt7IGl0ZW0oKS50aXRsZSB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICBAaWYgKGl0ZW0oKS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC1zbSBheC1vcGFjaXR5LTkwIGF4LXRleHQtY2VudGVyIGF4LXB4LTJcIj57e1xuICAgICAgICAgICAgaXRlbSgpLmRlc2NyaXB0aW9uISB8IHRyYW5zbGF0ZSB8IGFzeW5jXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdlxuICAgICAgICAoY2xpY2spPVwic2V0Q29tbWFuZCgpXCJcbiAgICAgICAgY2xhc3M9XCJheC1ncm91cCBheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1wLTMgYXgtdy1mdWxsIGF4LWgtZnVsbCAgYXgtcmVsYXRpdmUgYXgtb3ZlcmZsb3ctaGlkZGVuXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWFic29sdXRlIGF4LWluc2V0LTAgYXgtYmctYmxhY2svMCBob3ZlcjpheC1iZy1ibGFjay81IGF4LXRyYW5zaXRpb24tb3BhY2l0eVwiPjwvZGl2PlxuICAgICAgICA8aSBjbGFzcz1cImZhLWxpZ2h0IGZhLXBsdXMgYXgtdGV4dC0zeGxcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LXNlbWlib2xkXCI+e3tcbiAgICAgICAgICAnQGRhc2hib2FyZDp3aWRnZXRzLmRhc2hib2FyZC1zaG9ydGN1dC5hZGQtc2hvcnRjdXQnIHwgdHJhbnNsYXRlIHwgYXN5bmNcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRGFzaGJvYXJkU2hvcnRjdXRXaWRnZXRWaWV3Q29tcG9uZW50IGV4dGVuZHMgQVhQTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBwb3B1cFNlcnZpY2UgPSBpbmplY3QoQVhQb3B1cFNlcnZpY2UpO1xuICBwcml2YXRlIHdvcmtmbG93ID0gaW5qZWN0KEFYUFdvcmtmbG93U2VydmljZSk7XG4gIHByaXZhdGUgc2VhcmNoQ29uZmlnID0gaW5qZWN0KEFYUF9HTE9CQUxfU0VBUkNIX0NPTkZJR19UT0tFTik7XG5cbiAgcHJvdGVjdGVkIGl0ZW0gPSBjb21wdXRlZDxBWFBTaG9ydGN1dEl0ZW0+KCgpID0+IHRoaXMub3B0aW9ucygpWydpdGVtJ10gYXMgQVhQU2hvcnRjdXRJdGVtKTtcbiAgcHJvdGVjdGVkIGNvbG9yID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKVsnY29sb3InXSBhcyBzdHJpbmcpO1xuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgaWYgKCF0aGlzLmNvbG9yKCkpIHtcbiAgICAgIHRoaXMuc2V0T3B0aW9ucyh7XG4gICAgICAgIGNvbG9yOiBBWFBEYXRhR2VuZXJhdG9yLmNvbG9yKCksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgZXhlY3V0ZUNvbW1hbmQoKSB7XG4gICAgaWYgKHRoaXMuaXRlbSgpPy5jb21tYW5kKSB7XG4gICAgICBhd2FpdCB0aGlzLndvcmtmbG93LmV4ZWN1dGUodGhpcy5pdGVtKCkuY29tbWFuZC5uYW1lLCB0aGlzLml0ZW0oKS5jb21tYW5kLm9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzZXRDb21tYW5kKCkge1xuICAgIGNvbnN0IGNvbXBvbmVudCA9IGF3YWl0IHRoaXMuc2VhcmNoQ29uZmlnLndpbmRvdygpO1xuICAgIGNvbnN0IHBvcHVwID0gYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3Blbihjb21wb25lbnQsIHtcbiAgICAgIHRpdGxlOiAnQ2hvb3NlIGNvbW1hbmQuLi4nLFxuICAgICAgc2l6ZTogJ2ZpdCcsXG4gICAgICBjbG9zZU9uQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGhlYWRlcjogZmFsc2UsXG4gICAgfSk7XG4gICAgaWYgKHBvcHVwLmRhdGEpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBvcHVwLmRhdGEgYXMgQVhQU2VhcmNoRGlzcGxheVJlc3VsdDtcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmNvbW1hbmQpIHtcbiAgICAgICAgdGhpcy5zZXRPcHRpb25zKHtcbiAgICAgICAgICBpdGVtOiB7XG4gICAgICAgICAgICBuYW1lOiByZXN1bHQubmFtZSxcbiAgICAgICAgICAgIHRpdGxlOiByZXN1bHQudGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogcmVzdWx0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaWNvbjogcmVzdWx0Lmljb24sXG4gICAgICAgICAgICBjb21tYW5kOiByZXN1bHQuY29tbWFuZCxcbiAgICAgICAgICB9IGFzIEFYUFNob3J0Y3V0SXRlbSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdzdHlsZScpXG4gIHByaXZhdGUgZ2V0IF9fc3R5bGUoKSB7XG4gICAgY29uc3QgY2xzOiBhbnkgPSB7fTtcbiAgICBjbHNbYGJhY2tncm91bmQtY29sb3JgXSA9IHRoaXMuY29sb3IoKTtcbiAgICByZXR1cm4gY2xzO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IF9fY2xhc3MoKSB7XG4gICAgY29uc3QgY2xzOiBhbnkgPSB7fTtcbiAgICBjbHNbYGF4LWZsZXhgXSA9IHRydWU7XG4gICAgY2xzW2BheC1mbGV4LWNvbGBdID0gdHJ1ZTtcbiAgICBjbHNbYGF4LWl0ZW1zLWNlbnRlcmBdID0gdHJ1ZTtcbiAgICBjbHNbYGF4LWp1c3RpZnktY2VudGVyYF0gPSB0cnVlO1xuICAgIGNsc1tgYXgtdy1mdWxsYF0gPSB0cnVlO1xuICAgIGNsc1tgYXgtaC1mdWxsYF0gPSB0cnVlO1xuICAgIGNsc1tgYXgtdGV4dC1jZW50ZXJgXSA9IHRydWU7XG4gICAgY2xzW2BheC1vdmVyZmxvdy1oaWRkZW5gXSA9IHRydWU7XG4gICAgY2xzW2BheC1jdXJzb3ItcG9pbnRlcmBdID0gdHJ1ZTtcbiAgICBjbHNbYGF4LXRleHQtd2hpdGVgXSA9IHRydWU7XG4gICAgcmV0dXJuIGNscztcbiAgfVxufVxuIl19","import { AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nimport { AXP_COLOR_PROPERTY } from '@acorex/platform/widgets';\nimport { AXP_WIDGETS_UTILITY_CATEGORY } from '../chart.type';\nexport const AXPDashboardShortcutWidget = {\n name: 'dashboard-shortcut',\n title: 'Shortcut',\n description: 'Quick access to your key features.',\n type: 'view',\n categories: [AXP_WIDGETS_UTILITY_CATEGORY],\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n icon: 'fa-light fa-link',\n properties: [\n {\n ...AXP_COLOR_PROPERTY,\n title: '@dashboard:widgets.dashboard-shortcut.color',\n },\n ],\n meta: {\n dimensions: {\n width: 2,\n height: 2,\n minWidth: 1,\n minHeight: 1,\n maxWidth: 3,\n maxHeight: 2,\n },\n },\n components: {\n view: {\n component: () => import('./dashboard-shortcut-widget-view.component').then((c) => c.AXPDashboardShortcutWidgetViewComponent),\n },\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXNob3J0Y3V0LXdpZGdldC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cy9kYXNoYm9hcmQtc2hvcnRjdXQvZGFzaGJvYXJkLXNob3J0Y3V0LXdpZGdldC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBb0I7SUFDekQsSUFBSSxFQUFFLG9CQUFvQjtJQUMxQixLQUFLLEVBQUUsVUFBVTtJQUNqQixXQUFXLEVBQUUsb0NBQW9DO0lBQ2pELElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLENBQUMsNEJBQTRCLENBQUM7SUFDMUMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDO0lBQzVDLElBQUksRUFBRSxrQkFBa0I7SUFDeEIsVUFBVSxFQUFFO1FBQ1Y7WUFDRSxHQUFHLGtCQUFrQjtZQUNyQixLQUFLLEVBQUUsNkNBQTZDO1NBQ3JEO0tBQ0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixVQUFVLEVBQUU7WUFDVixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBQ1QsUUFBUSxFQUFFLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQztZQUNaLFFBQVEsRUFBRSxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUM7U0FDYjtLQUNGO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsSUFBSSxFQUFFO1lBQ0osU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUNkLE1BQU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLHVDQUF1QyxDQUFDO1NBQzlHO0tBQ0Y7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQV2lkZ2V0Q29uZmlnLCBBWFBXaWRnZXRHcm91cEVudW0gfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUF9DT0xPUl9QUk9QRVJUWSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XG5pbXBvcnQgeyBBWFBfV0lER0VUU19VVElMSVRZX0NBVEVHT1JZIH0gZnJvbSAnLi4vY2hhcnQudHlwZSc7XG5cbmV4cG9ydCBjb25zdCBBWFBEYXNoYm9hcmRTaG9ydGN1dFdpZGdldDogQVhQV2lkZ2V0Q29uZmlnID0ge1xuICBuYW1lOiAnZGFzaGJvYXJkLXNob3J0Y3V0JyxcbiAgdGl0bGU6ICdTaG9ydGN1dCcsXG4gIGRlc2NyaXB0aW9uOiAnUXVpY2sgYWNjZXNzIHRvIHlvdXIga2V5IGZlYXR1cmVzLicsXG4gIHR5cGU6ICd2aWV3JyxcbiAgY2F0ZWdvcmllczogW0FYUF9XSURHRVRTX1VUSUxJVFlfQ0FURUdPUlldLFxuICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRGFzaGJvYXJkV2lkZ2V0XSxcbiAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWxpbmsnLFxuICBwcm9wZXJ0aWVzOiBbXG4gICAge1xuICAgICAgLi4uQVhQX0NPTE9SX1BST1BFUlRZLFxuICAgICAgdGl0bGU6ICdAZGFzaGJvYXJkOndpZGdldHMuZGFzaGJvYXJkLXNob3J0Y3V0LmNvbG9yJyxcbiAgICB9LFxuICBdLFxuICBtZXRhOiB7XG4gICAgZGltZW5zaW9uczoge1xuICAgICAgd2lkdGg6IDIsXG4gICAgICBoZWlnaHQ6IDIsXG4gICAgICBtaW5XaWR0aDogMSxcbiAgICAgIG1pbkhlaWdodDogMSxcbiAgICAgIG1heFdpZHRoOiAzLFxuICAgICAgbWF4SGVpZ2h0OiAyLFxuICAgIH0sXG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICB2aWV3OiB7XG4gICAgICBjb21wb25lbnQ6ICgpID0+XG4gICAgICAgIGltcG9ydCgnLi9kYXNoYm9hcmQtc2hvcnRjdXQtd2lkZ2V0LXZpZXcuY29tcG9uZW50JykudGhlbigoYykgPT4gYy5BWFBEYXNoYm9hcmRTaG9ydGN1dFdpZGdldFZpZXdDb21wb25lbnQpLFxuICAgIH0sXG4gIH0sXG59O1xuIl19","import { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPEntityService } from '@acorex/platform/layout/entity';\nimport { inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { RootConfig } from './const';\nexport class AXMMenuProvider {\n constructor() {\n this.sessionService = inject(AXPSessionService);\n this.entityService = inject(AXPEntityService);\n }\n async provide(context) {\n const scope = RootConfig.config.i18n;\n const module = RootConfig.module;\n const appName = this.sessionService.application?.name;\n context.addItems([\n {\n priority: 9001,\n text: `t('root-menu', {scope: \"${scope}\"})`,\n icon: RootConfig.module.icon,\n data: {\n // requiredPermission: 'demo.admin.settings',\n },\n children: [\n {\n text: `t('dashboards', {scope: \"${scope}\"})`,\n path: `${this.sessionService.application?.name}/dashboard/management`,\n icon: RootConfig.entities.dashboard.icon,\n priority: 1,\n },\n ],\n },\n ]);\n const isAuthorized = await firstValueFrom(this.sessionService.isAuthorized$);\n if (!isAuthorized) {\n return;\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL21lbnUucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFckMsTUFBTSxPQUFPLGVBQWU7SUFBNUI7UUFDVSxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzNDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUErQm5ELENBQUM7SUE3QkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUErQjtRQUMzQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNyQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztRQUV0RCxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2Y7Z0JBQ0UsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLDJCQUEyQixLQUFLLEtBQUs7Z0JBQzNDLElBQUksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUk7Z0JBQzVCLElBQUksRUFBRTtnQkFDSiw2Q0FBNkM7aUJBQzlDO2dCQUNELFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxJQUFJLEVBQUUsNEJBQTRCLEtBQUssS0FBSzt3QkFDNUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsSUFBSSx1QkFBdUI7d0JBQ3JFLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJO3dCQUN4QyxRQUFRLEVBQUUsQ0FBQztxQkFDWjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLEdBQUcsTUFBTSxjQUFjLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBNZW51UHJvdmlkZXIsIEFYUE1lbnVQcm92aWRlckNvbnRleHQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvbW1vbic7XG5pbXBvcnQgeyBBWFBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZW50aXR5JztcbmltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJvb3RDb25maWcgfSBmcm9tICcuL2NvbnN0JztcblxuZXhwb3J0IGNsYXNzIEFYTU1lbnVQcm92aWRlciBpbXBsZW1lbnRzIEFYUE1lbnVQcm92aWRlciB7XG4gIHByaXZhdGUgc2Vzc2lvblNlcnZpY2UgPSBpbmplY3QoQVhQU2Vzc2lvblNlcnZpY2UpO1xuICBwcml2YXRlIGVudGl0eVNlcnZpY2UgPSBpbmplY3QoQVhQRW50aXR5U2VydmljZSk7XG5cbiAgYXN5bmMgcHJvdmlkZShjb250ZXh0OiBBWFBNZW51UHJvdmlkZXJDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2NvcGUgPSBSb290Q29uZmlnLmNvbmZpZy5pMThuO1xuICAgIGNvbnN0IG1vZHVsZSA9IFJvb3RDb25maWcubW9kdWxlO1xuICAgIGNvbnN0IGFwcE5hbWUgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmFwcGxpY2F0aW9uPy5uYW1lO1xuXG4gICAgY29udGV4dC5hZGRJdGVtcyhbXG4gICAgICB7XG4gICAgICAgIHByaW9yaXR5OiA5MDAxLFxuICAgICAgICB0ZXh0OiBgdCgncm9vdC1tZW51Jywge3Njb3BlOiBcIiR7c2NvcGV9XCJ9KWAsXG4gICAgICAgIGljb246IFJvb3RDb25maWcubW9kdWxlLmljb24sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAvLyByZXF1aXJlZFBlcm1pc3Npb246ICdkZW1vLmFkbWluLnNldHRpbmdzJyxcbiAgICAgICAgfSxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiBgdCgnZGFzaGJvYXJkcycsIHtzY29wZTogXCIke3Njb3BlfVwifSlgLFxuICAgICAgICAgICAgcGF0aDogYCR7dGhpcy5zZXNzaW9uU2VydmljZS5hcHBsaWNhdGlvbj8ubmFtZX0vZGFzaGJvYXJkL21hbmFnZW1lbnRgLFxuICAgICAgICAgICAgaWNvbjogUm9vdENvbmZpZy5lbnRpdGllcy5kYXNoYm9hcmQuaWNvbixcbiAgICAgICAgICAgIHByaW9yaXR5OiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF0pO1xuXG4gICAgY29uc3QgaXNBdXRob3JpemVkID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZXNzaW9uU2VydmljZS5pc0F1dGhvcml6ZWQkKTtcbiAgICBpZiAoIWlzQXV0aG9yaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuIl19","import { AXPAuthGuard } from '@acorex/platform/auth';\nimport { AXP_HOME_PAGE_DEFAULT_KEY, AXP_HOME_PAGES, AXP_MENU_PROVIDER } from '@acorex/platform/common';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';\nimport { AXPWidgetsModule } from '@acorex/platform/widgets';\nimport { inject, NgModule } from '@angular/core';\nimport { AXMDashboardService, AXMDashboardServiceImpl } from './entities';\nimport { AXMEntityProvider } from './entity.provider';\nimport { AXPAdvancedWeatherWidget, AXPAnalogClockWidget, AXPBarChartWidget, AXPClockCalendarWidget, AXPDonutChartWidget, AXPGaugeChartWidget, AXPLineChartWidget, AXPMinimalWeatherWidget, AXPStickyNoteWidget, AXPTaskListWidget, AXPWeatherWidget, } from './features/shared/widgets';\nimport { AXPDashboardShortcutWidget } from './features/shared/widgets/dashboard-shortcut';\nimport { AXMMenuProvider } from './menu.provider';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/platform/layout/builder\";\n// Separate dashboard routes configuration\nconst dashboardRoutes = [\n {\n path: 'dashboard',\n loadComponent: () => import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n {\n path: 'dashboard/management',\n data: {\n isAdmin: true,\n //roles: ['admin'], // Add roles if needed\n //permissions: ['manage_dashboard'], // Add required permissions if needed\n },\n loadComponent: () => import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n];\nfunction createAppRoute() {\n const config = inject(AXP_ENTITY_CONFIG_TOKEN);\n return {\n path: ':app/dashboard',\n canActivate: [AXPAuthGuard],\n loadComponent: () => {\n return config.viewers.root();\n },\n children: [\n {\n path: '',\n loadComponent: () => import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n {\n path: 'management',\n data: {\n isAdmin: true,\n },\n loadComponent: () => import('./features/home-dashboard/dashboard-home/home-dashboard').then((c) => c.AXMDashboardHomeComponent),\n },\n ],\n };\n}\nexport class AXMDashboardManagementModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardManagementModule, imports: [i1.AXPLayoutBuilderModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardManagementModule, providers: [\n {\n provide: AXMDashboardService,\n useClass: AXMDashboardServiceImpl,\n },\n {\n provide: AXP_HOME_PAGES,\n multi: true,\n useFactory: () => [\n {\n key: 'dashboard',\n title: 'Dashboard',\n route: createAppRoute(),\n },\n ],\n },\n AXPWidgetsModule,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_HOME_PAGE_DEFAULT_KEY,\n useValue: 'dashboard',\n },\n ], imports: [AXPLayoutBuilderModule.forChild({\n widgets: [\n AXPDashboardShortcutWidget,\n //charts\n AXPDonutChartWidget,\n AXPBarChartWidget,\n AXPLineChartWidget,\n AXPGaugeChartWidget,\n //utility\n AXPStickyNoteWidget,\n AXPClockCalendarWidget,\n AXPWeatherWidget,\n AXPTaskListWidget,\n AXPMinimalWeatherWidget,\n AXPAdvancedWeatherWidget,\n AXPAnalogClockWidget,\n ],\n })] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardManagementModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n AXPLayoutBuilderModule.forChild({\n widgets: [\n AXPDashboardShortcutWidget,\n //charts\n AXPDonutChartWidget,\n AXPBarChartWidget,\n AXPLineChartWidget,\n AXPGaugeChartWidget,\n //utility\n AXPStickyNoteWidget,\n AXPClockCalendarWidget,\n AXPWeatherWidget,\n AXPTaskListWidget,\n AXPMinimalWeatherWidget,\n AXPAdvancedWeatherWidget,\n AXPAnalogClockWidget,\n ],\n }),\n ],\n providers: [\n {\n provide: AXMDashboardService,\n useClass: AXMDashboardServiceImpl,\n },\n {\n provide: AXP_HOME_PAGES,\n multi: true,\n useFactory: () => [\n {\n key: 'dashboard',\n title: 'Dashboard',\n route: createAppRoute(),\n },\n ],\n },\n AXPWidgetsModule,\n {\n provide: AXP_MENU_PROVIDER,\n useClass: AXMMenuProvider,\n multi: true,\n },\n {\n provide: AXP_ENTITY_DEFINITION_LOADER,\n useClass: AXMEntityProvider,\n multi: true,\n },\n {\n provide: AXP_HOME_PAGE_DEFAULT_KEY,\n useValue: 'dashboard',\n },\n ],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLW1hbmFnZW1lbnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZGFzaGJvYXJkLW1hbmFnZW1lbnQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3RELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixzQkFBc0IsRUFDdEIsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ2pCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFFbEQsMENBQTBDO0FBQzFDLE1BQU0sZUFBZSxH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RTt3QkFDUCxzQkFBc0IsQ0FBQyxRQUFRLENBQUM7NEJBQzlCLE9BQU8sRUFBRTtnQ0FDUCwwQkFBMEI7Z0NBQzFCLFFBQVE7Z0NBQ1IsbUJBQW1CO2dDQUNuQixpQkFBaUI7Z0NBQ2pCLGtCQUFrQjtnQ0FDbEIsbUJBQW1CO2dDQUNuQixTQUFTO2dDQUNULG1CQUFtQjtnQ0FDbkIsc0JBQXNCO2dDQUN0QixnQkFBZ0I7Z0NBQ2hCLGlCQUFpQjtnQ0FDakIsdUJBQXVCO2dDQUN2Qix3QkFBd0I7Z0NBQ3hCLG9CQUFvQjs2QkFDckI7eUJBQ0YsQ0FBQztxQkFDSDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsUUFBUSxFQUFFLHVCQUF1Qjt5QkFDbEM7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7NEJBQ3ZCLEtBQUssRUFBRSxJQUFJOzRCQUNYLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQztnQ0FDaEI7b0NBQ0UsR0FBRyxFQUFFLFdBQVc7b0NBQ2hCLEtBQUssRUFBRSxXQUFXO29DQUNsQixLQUFLLEVBQUUsY0FBYyxFQUFFO2lDQUN4Qjs2QkFDRjt5QkFDRjt3QkFDRCxnQkFBZ0I7d0JBQ2hCOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRSxlQUFlOzRCQUN6QixLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsNEJBQTRCOzRCQUNyQyxRQUFRLEVBQUUsaUJBQWlCOzRCQUMzQixLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUseUJBQXlCOzRCQUNsQyxRQUFRLEVBQUUsV0FBVzt5QkFDdEI7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBBdXRoR3VhcmQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2F1dGgnO1xuaW1wb3J0IHsgQVhQX0hPTUVfUEFHRV9ERUZBVUxUX0tFWSwgQVhQX0hPTUVfUEFHRVMsIEFYUF9NRU5VX1BST1ZJREVSIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgQVhQX0VOVElUWV9DT05GSUdfVE9LRU4sIEFYUF9FTlRJVFlfREVGSU5JVElPTl9MT0FERVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9lbnRpdHknO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c01vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XG5pbXBvcnQgeyBpbmplY3QsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFYTURhc2hib2FyZFNlcnZpY2UsIEFYTURhc2hib2FyZFNlcnZpY2VJbXBsIH0gZnJvbSAnLi9lbnRpdGllcyc7XG5pbXBvcnQgeyBBWE1FbnRpdHlQcm92aWRlciB9IGZyb20gJy4vZW50aXR5LnByb3ZpZGVyJztcbmltcG9ydCB7XG4gIEFYUEFkdmFuY2VkV2VhdGhlcldpZGdldCxcbiAgQVhQQW5hbG9nQ2xvY2tXaWRnZXQsXG4gIEFYUEJhckNoYXJ0V2lkZ2V0LFxuICBBWFBDbG9ja0NhbGVuZGFyV2lkZ2V0LFxuICBBWFBEb251dENoYXJ0V2lkZ2V0LFxuICBBWFBHYXVnZUNoYXJ0V2lkZ2V0LFxuICBBWFBMaW5lQ2hhcnRXaWRnZXQsXG4gIEFYUE1pbmltYWxXZWF0aGVyV2lkZ2V0LFxuICBBWFBTdGlja3lOb3RlV2lkZ2V0LFxuICBBWFBUYXNrTGlzdFdpZGdldCxcbiAgQVhQV2VhdGhlcldpZGdldCxcbn0gZnJvbSAnLi9mZWF0dXJlcy9zaGFyZWQvd2lkZ2V0cyc7XG5pbXBvcnQgeyBBWFBEYXNoYm9hcmRTaG9ydGN1dFdpZGdldCB9IGZyb20gJy4vZmVhdHVyZXMvc2hhcmVkL3dpZGdldHMvZGFzaGJvYXJkLXNob3J0Y3V0JztcbmltcG9ydCB7IEFYTU1lbnVQcm92aWRlciB9IGZyb20gJy4vbWVudS5wcm92aWRlcic7XG5cbi8vIFNlcGFyYXRlIGRhc2hib2FyZCByb3V0ZXMgY29uZmlndXJhdGlvblxuY29uc3QgZGFzaGJvYXJkUm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnZGFzaGJvYXJkJyxcbiAgICBsb2FkQ29tcG9uZW50OiAoKSA9PlxuICAgICAgaW1wb3J0KCcuL2ZlYXR1cmVzL2hvbWUtZGFzaGJvYXJkL2Rhc2hib2FyZC1ob21lL2hvbWUtZGFzaGJvYXJkJykudGhlbigoYykgPT4gYy5BWE1EYXNoYm9hcmRIb21lQ29tcG9uZW50KSxcbiAgfSxcbiAge1xuICAgIHBhdGg6ICdkYXNoYm9hcmQvbWFuYWdlbWVudCcsXG4gICAgZGF0YToge1xuICAgICAgaXNBZG1pbjogdHJ1ZSxcbiAgICAgIC8vcm9sZXM6IFsnYWRtaW4nXSwgLy8gQWRkIHJvbGVzIGlmIG5lZWRlZFxuICAgICAgLy9wZXJtaXNzaW9uczogWydtYW5hZ2VfZGFzaGJvYXJkJ10sIC8vIEFkZCByZXF1aXJlZCBwZXJtaXNzaW9ucyBpZiBuZWVkZWRcbiAgICB9LFxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+XG4gICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvaG9tZS1kYXNoYm9hcmQvZGFzaGJvYXJkLWhvbWUvaG9tZS1kYXNoYm9hcmQnKS50aGVuKChjKSA9PiBjLkFYTURhc2hib2FyZEhvbWVDb21wb25lbnQpLFxuICB9LFxuXTtcblxuZnVuY3Rpb24gY3JlYXRlQXBwUm91dGUoKTogUm91dGUge1xuICBjb25zdCBjb25maWcgPSBpbmplY3QoQVhQX0VOVElUWV9DT05GSUdfVE9LRU4pO1xuICByZXR1cm4ge1xuICAgIHBhdGg6ICc6YXBwL2Rhc2hib2FyZCcsXG4gICAgY2FuQWN0aXZhdGU6IFtBWFBBdXRoR3VhcmRdLFxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IHtcbiAgICAgIHJldHVybiBjb25maWcudmlld2Vycy5yb290KCk7XG4gICAgfSxcbiAgICBjaGlsZHJlbjogW1xuICAgICAge1xuICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvaG9tZS1kYXNoYm9hcmQvZGFzaGJvYXJkLWhvbWUvaG9tZS1kYXNoYm9hcmQnKS50aGVuKChjKSA9PiBjLkFYTURhc2hib2FyZEhvbWVDb21wb25lbnQpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJ21hbmFnZW1lbnQnLFxuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgaXNBZG1pbjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgbG9hZENvbXBvbmVudDogKCkgPT5cbiAgICAgICAgICBpbXBvcnQoJy4vZmVhdHVyZXMvaG9tZS1kYXNoYm9hcmQvZGFzaGJvYXJkLWhvbWUvaG9tZS1kYXNoYm9hcmQnKS50aGVuKChjKSA9PiBjLkFYTURhc2hib2FyZEhvbWVDb21wb25lbnQpLFxuICAgICAgfSxcbiAgICBdLFxuICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZS5mb3JDaGlsZCh7XG4gICAgICB3aWRnZXRzOiBbXG4gICAgICAgIEFYUERhc2hib2FyZFNob3J0Y3V0V2lkZ2V0LFxuICAgICAgICAvL2NoYXJ0c1xuICAgICAgICBBWFBEb251dENoYXJ0V2lkZ2V0LFxuICAgICAgICBBWFBCYXJDaGFydFdpZGdldCxcbiAgICAgICAgQVhQTGluZUNoYXJ0V2lkZ2V0LFxuICAgICAgICBBWFBHYXVnZUNoYXJ0V2lkZ2V0LFxuICAgICAgICAvL3V0aWxpdHlcbiAgICAgICAgQVhQU3RpY2t5Tm90ZVdpZGdldCxcbiAgICAgICAgQVhQQ2xvY2tDYWxlbmRhcldpZGdldCxcbiAgICAgICAgQVhQV2VhdGhlcldpZGdldCxcbiAgICAgICAgQVhQVGFza0xpc3RXaWRnZXQsXG4gICAgICAgIEFYUE1pbmltYWxXZWF0aGVyV2lkZ2V0LFxuICAgICAgICBBWFBBZHZhbmNlZFdlYXRoZXJXaWRnZXQsXG4gICAgICAgIEFYUEFuYWxvZ0Nsb2NrV2lkZ2V0LFxuICAgICAgXSxcbiAgICB9KSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhNRGFzaGJvYXJkU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBBWE1EYXNoYm9hcmRTZXJ2aWNlSW1wbCxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9IT01FX1BBR0VTLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VGYWN0b3J5OiAoKSA9PiBbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6ICdkYXNoYm9hcmQnLFxuICAgICAgICAgIHRpdGxlOiAnRGFzaGJvYXJkJyxcbiAgICAgICAgICByb3V0ZTogY3JlYXRlQXBwUm91dGUoKSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFYUF9NRU5VX1BST1ZJREVSLFxuICAgICAgdXNlQ2xhc3M6IEFYTU1lbnVQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0VOVElUWV9ERUZJTklUSU9OX0xPQURFUixcbiAgICAgIHVzZUNsYXNzOiBBWE1FbnRpdHlQcm92aWRlcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQX0hPTUVfUEFHRV9ERUZBVUxUX0tFWSxcbiAgICAgIHVzZVZhbHVlOiAnZGFzaGJvYXJkJyxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1EYXNoYm9hcmRNYW5hZ2VtZW50TW9kdWxlIHt9XG4iXX0=","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPWidgetRendererDirective } from '@acorex/platform/layout/builder';\nimport { CommonModule } from '@angular/common';\nimport { afterNextRender, ChangeDetectionStrategy, Component, contentChild, input, output, signal, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nimport * as i3 from \"@acorex/components/dropdown\";\nimport * as i4 from \"@acorex/core/translation\";\nimport * as i5 from \"@angular/common\";\nexport class AXMDashboardWidgetWrapperComponent {\n constructor() {\n this.title = input(null);\n this.onDelete = output();\n this.onConfiguration = output();\n this.onValueChanged = output();\n this.onOptionsChanged = output();\n this.widget = contentChild(AXPWidgetRendererDirective);\n this.#init = afterNextRender(() => {\n this.widget()?.onOptionsChanged.subscribe((c) => {\n this.onOptionsChanged.emit(c.widget.options());\n });\n this.widget()?.onValueChanged.subscribe((c) => {\n this.onValueChanged.emit(c.widget.getValue());\n });\n });\n this.hasConfiguration = input(true);\n this.isLocked = input(false);\n this.isDropdownOpen = signal(false);\n }\n #init;\n handleOnItemClick(event) {\n switch (event.item.data) {\n case 'delete':\n this.onDelete.emit();\n break;\n case 'configuration':\n this.onConfiguration.emit();\n break;\n default:\n break;\n }\n this.isDropdownOpen.set(false);\n }\n log(event) {\n console.log('Dropdown event:', event);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardWidgetWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMDashboardWidgetWrapperComponent, isStandalone: true, selector: \"axm-dashboard-widget-wrapper\", inputs: { title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, hasConfiguration: { classPropertyName: \"hasConfiguration\", publicName: \"hasConfiguration\", isSignal: true, isRequired: false, transformFunction: null }, isLocked: { classPropertyName: \"isLocked\", publicName: \"isLocked\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onDelete: \"onDelete\", onConfiguration: \"onConfiguration\", onValueChanged: \"onValueChanged\", onOptionsChanged: \"onOptionsChanged\" }, queries: [{ propertyName: \"widget\", first: true, predicate: AXPWidgetRendererDirective, descendants: true, isSignal: true }], ngImport: i0, template: \"<section class=\\\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\\\">\\n <!-- Action button - stays absolute -->\\n @if(!isLocked()) {\\n <div\\n class=\\\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[99] ax-invisible group-hover:ax-visible md:group-hover:ax-visible\\\"\\n [class.!ax-visible]=\\\"isDropdownOpen()\\\"\\n (touchstart)=\\\"isDropdownOpen.set(true)\\\"\\n >\\n <ax-button class=\\\"ax-sm ax-main-button\\\" [look]=\\\"'blank'\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-ellipsis-vertical\\\"></ax-icon>\\n </ax-prefix>\\n <ax-dropdown-panel (onOpened)=\\\"isDropdownOpen.set(true)\\\" (onClosed)=\\\"isDropdownOpen.set(false)\\\">\\n <ng-container *translate=\\\"let t\\\">\\n <ax-button-item-list (onItemClick)=\\\"handleOnItemClick($event)\\\">\\n @if(hasConfiguration()){\\n <ax-button-item\\n [data]=\\\"'configuration'\\\"\\n [text]=\\\"(t('configuration', { scope: 'dashboard' }) | async) || 'configuration'\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-cog\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-divider></ax-divider>\\n }\\n <ax-button-item [data]=\\\"'delete'\\\" [text]=\\\"(t('delete') | async) || 'delete'\\\" color=\\\"danger\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ng-container>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n }\\n\\n <!-- Title section -->\\n @if(title()) {\\n <div class=\\\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\\\">\\n <h3 class=\\\"ax-text-start ax-text-lg ax-font-medium ax-truncate\\\">{{title()}}</h3>\\n </div>\\n }\\n\\n <!-- Content section -->\\n <div class=\\\"ax-overflow-auto ax-h-full\\\">\\n <ng-content></ng-content>\\n </div>\\n</section>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"], dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"component\", type: i1.AXButtonItemComponent, selector: \"ax-button-item\", inputs: [\"color\", \"disabled\", \"text\", \"selected\", \"divided\", \"data\", \"name\"], outputs: [\"onClick\", \"onFocus\", \"onBlur\", \"disabledChange\"] }, { kind: \"component\", type: i1.AXButtonItemListComponent, selector: \"ax-button-item-list\", inputs: [\"items\"], outputs: [\"onItemClick\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"component\", type: i3.AXDropdownPanelComponent, selector: \"ax-dropdown-panel\", inputs: [\"isOpen\", \"fitParent\", \"dropdownWidth\", \"position\", \"placement\", \"_target\", \"adaptivityEnabled\"], outputs: [\"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i4.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i5.AsyncPipe, name: \"async\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardWidgetWrapperComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-dashboard-widget-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [AXButtonModule, AXDecoratorModule, AXDropdownModule, AXTranslationModule, CommonModule], standalone: true, template: \"<section class=\\\"ax-relative ax-size-full ax-flex ax-flex-col ax-group ax-overflow-hidden\\\">\\n <!-- Action button - stays absolute -->\\n @if(!isLocked()) {\\n <div\\n class=\\\"ax-p-[0.6125rem] ax-absolute ax-top-0 ax-end-0 ax-z-[99] ax-invisible group-hover:ax-visible md:group-hover:ax-visible\\\"\\n [class.!ax-visible]=\\\"isDropdownOpen()\\\"\\n (touchstart)=\\\"isDropdownOpen.set(true)\\\"\\n >\\n <ax-button class=\\\"ax-sm ax-main-button\\\" [look]=\\\"'blank'\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-light fa-ellipsis-vertical\\\"></ax-icon>\\n </ax-prefix>\\n <ax-dropdown-panel (onOpened)=\\\"isDropdownOpen.set(true)\\\" (onClosed)=\\\"isDropdownOpen.set(false)\\\">\\n <ng-container *translate=\\\"let t\\\">\\n <ax-button-item-list (onItemClick)=\\\"handleOnItemClick($event)\\\">\\n @if(hasConfiguration()){\\n <ax-button-item\\n [data]=\\\"'configuration'\\\"\\n [text]=\\\"(t('configuration', { scope: 'dashboard' }) | async) || 'configuration'\\\"\\n >\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-cog\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n <ax-divider></ax-divider>\\n }\\n <ax-button-item [data]=\\\"'delete'\\\" [text]=\\\"(t('delete') | async) || 'delete'\\\" color=\\\"danger\\\">\\n <ax-prefix>\\n <ax-icon icon=\\\"fa-solid fa-trash-can\\\"></ax-icon>\\n </ax-prefix>\\n </ax-button-item>\\n </ax-button-item-list>\\n </ng-container>\\n </ax-dropdown-panel>\\n </ax-button>\\n </div>\\n }\\n\\n <!-- Title section -->\\n @if(title()) {\\n <div class=\\\"ax-ps-5 ax-pe-8 ax-py-3 ax-border-b\\\">\\n <h3 class=\\\"ax-text-start ax-text-lg ax-font-medium ax-truncate\\\">{{title()}}</h3>\\n </div>\\n }\\n\\n <!-- Content section -->\\n <div class=\\\"ax-overflow-auto ax-h-full\\\">\\n <ng-content></ng-content>\\n </div>\\n</section>\\n\", styles: [\":host{display:block;width:100%;height:100%}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXdpZGdldC13cmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvaG9tZS1kYXNoYm9hcmQvd2lkZ2V0LXdyYXBwZXIvZGFzaGJvYXJkLXdpZGdldC13cmFwcGVyLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9tb2R1bGVzL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZmVhdHVyZXMvaG9tZS1kYXNoYm9hcmQvd2lkZ2V0LXdyYXBwZXIvZGFzaGJvYXJkLXdpZGdldC13cmFwcGVyLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QixjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLGVBQWUsRUFDZix1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVV2QixNQUFNLE9BQU8sa0NBQWtDO0lBUi9DO1FBU0UsVUFBSyxHQUFHLEtBQUssQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFbkMsYUFBUSxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBQzFCLG9CQUFlLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUNuQyxxQkFBZ0IsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUVyQyxXQUFNLEdBQUcsWUFBWSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFbEQsVUFBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgscUJBQWdCLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ3hDLGFBQVEsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakMsbUJBQWMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FrQmhDO0lBN0JDLEtBQUssQ0FPRjtJQU1ILGlCQUFpQixDQUFDLEtBQThDO1FBQzlELFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN4QixLQUFLLFFBQVE7Z0JBQ1gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckIsTUFBTTtZQUNSLEtBQUssZUFBZTtnQkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDNUIsTUFBTTtZQUNSO2dCQUNFLE1BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELEdBQUcsQ0FBQyxLQUFjO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs4R0F0Q1Usa0NBQWtDO2tHQUFsQyxrQ0FBa0MseXFCQVF2QiwwQkFBMEIsZ0VDakNsRCw0NURBa0RBLHNHRDVCWSxjQUFjLG91QkFBRSxpQkFBaUIsc1ZBQUUsZ0JBQWdCLHFRQUFFLG1CQUFtQiw4R0FBRSxZQUFZOzsyRkFHckYsa0NBQWtDO2tCQVI5QyxTQUFTOytCQUNFLDhCQUE4QixtQkFHdkIsdUJBQXVCLENBQUMsTUFBTSxXQUN0QyxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLENBQUMsY0FDckYsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uSXRlbUNvbXBvbmVudCwgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRXZlbnQsIEFYSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2Nkay9jb21tb24nO1xuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBhZnRlck5leHRSZW5kZXIsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbnRlbnRDaGlsZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLWRhc2hib2FyZC13aWRnZXQtd3JhcHBlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtd2lkZ2V0LXdyYXBwZXIuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rhc2hib2FyZC13aWRnZXQtd3JhcHBlci5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbQVhCdXR0b25Nb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlLCBBWERyb3Bkb3duTW9kdWxlLCBBWFRyYW5zbGF0aW9uTW9kdWxlLCBDb21tb25Nb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1EYXNoYm9hcmRXaWRnZXRXcmFwcGVyQ29tcG9uZW50IHtcbiAgdGl0bGUgPSBpbnB1dDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBvbkRlbGV0ZSA9IG91dHB1dDx2b2lkPigpO1xuICBvbkNvbmZpZ3VyYXRpb24gPSBvdXRwdXQ8dm9pZD4oKTtcbiAgb25WYWx1ZUNoYW5nZWQgPSBvdXRwdXQ8dW5rbm93bj4oKTtcbiAgb25PcHRpb25zQ2hhbmdlZCA9IG91dHB1dDx1bmtub3duPigpO1xuXG4gIHdpZGdldCA9IGNvbnRlbnRDaGlsZChBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZSk7XG5cbiAgI2luaXQgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIHRoaXMud2lkZ2V0KCk/Lm9uT3B0aW9uc0NoYW5nZWQuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdChjLndpZGdldC5vcHRpb25zKCkpO1xuICAgIH0pO1xuICAgIHRoaXMud2lkZ2V0KCk/Lm9uVmFsdWVDaGFuZ2VkLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgdGhpcy5vblZhbHVlQ2hhbmdlZC5lbWl0KGMud2lkZ2V0LmdldFZhbHVlKCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBoYXNDb25maWd1cmF0aW9uID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGlzTG9ja2VkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBpc0Ryb3Bkb3duT3BlbiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgaGFuZGxlT25JdGVtQ2xpY2soZXZlbnQ6IEFYSXRlbUNsaWNrRXZlbnQ8QVhCdXR0b25JdGVtQ29tcG9uZW50Pikge1xuICAgIHN3aXRjaCAoZXZlbnQuaXRlbS5kYXRhKSB7XG4gICAgICBjYXNlICdkZWxldGUnOlxuICAgICAgICB0aGlzLm9uRGVsZXRlLmVtaXQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb25maWd1cmF0aW9uJzpcbiAgICAgICAgdGhpcy5vbkNvbmZpZ3VyYXRpb24uZW1pdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmlzRHJvcGRvd25PcGVuLnNldChmYWxzZSk7XG4gIH1cbiAgbG9nKGV2ZW50OiBBWEV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coJ0Ryb3Bkb3duIGV2ZW50OicsIGV2ZW50KTtcbiAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJheC1yZWxhdGl2ZSBheC1zaXplLWZ1bGwgYXgtZmxleCBheC1mbGV4LWNvbCBheC1ncm91cCBheC1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgPCEtLSBBY3Rpb24gYnV0dG9uIC0gc3RheXMgYWJzb2x1dGUgLS0+XG4gIEBpZighaXNMb2NrZWQoKSkge1xuICA8ZGl2XG4gICAgY2xhc3M9XCJheC1wLVswLjYxMjVyZW1dIGF4LWFic29sdXRlIGF4LXRvcC0wIGF4LWVuZC0wIGF4LXotWzk5XSBheC1pbnZpc2libGUgZ3JvdXAtaG92ZXI6YXgtdmlzaWJsZSBtZDpncm91cC1ob3ZlcjpheC12aXNpYmxlXCJcbiAgICBbY2xhc3MuIWF4LXZpc2libGVdPVwiaXNEcm9wZG93bk9wZW4oKVwiXG4gICAgKHRvdWNoc3RhcnQpPVwiaXNEcm9wZG93bk9wZW4uc2V0KHRydWUpXCJcbiAgPlxuICAgIDxheC1idXR0b24gY2xhc3M9XCJheC1zbSBheC1tYWluLWJ1dHRvblwiIFtsb29rXT1cIidibGFuaydcIj5cbiAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1lbGxpcHNpcy12ZXJ0aWNhbFwiPjwvYXgtaWNvbj5cbiAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgPGF4LWRyb3Bkb3duLXBhbmVsIChvbk9wZW5lZCk9XCJpc0Ryb3Bkb3duT3Blbi5zZXQodHJ1ZSlcIiAob25DbG9zZWQpPVwiaXNEcm9wZG93bk9wZW4uc2V0KGZhbHNlKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICp0cmFuc2xhdGU9XCJsZXQgdFwiPlxuICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0IChvbkl0ZW1DbGljayk9XCJoYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICBAaWYoaGFzQ29uZmlndXJhdGlvbigpKXtcbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbVxuICAgICAgICAgICAgICBbZGF0YV09XCInY29uZmlndXJhdGlvbidcIlxuICAgICAgICAgICAgICBbdGV4dF09XCIodCgnY29uZmlndXJhdGlvbicsIHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0pIHwgYXN5bmMpIHx8ICdjb25maWd1cmF0aW9uJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImZhLXNvbGlkIGZhLWNvZ1wiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtPlxuICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGF4LWJ1dHRvbi1pdGVtIFtkYXRhXT1cIidkZWxldGUnXCIgW3RleHRdPVwiKHQoJ2RlbGV0ZScpIHwgYXN5bmMpIHx8ICdkZWxldGUnXCIgY29sb3I9XCJkYW5nZXJcIj5cbiAgICAgICAgICAgICAgPGF4LXByZWZpeD5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICA8L2F4LXByZWZpeD5cbiAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgPC9heC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvYXgtZHJvcGRvd24tcGFuZWw+XG4gICAgPC9heC1idXR0b24+XG4gIDwvZGl2PlxuICB9XG5cbiAgPCEtLSBUaXRsZSBzZWN0aW9uIC0tPlxuICBAaWYodGl0bGUoKSkge1xuICA8ZGl2IGNsYXNzPVwiYXgtcHMtNSBheC1wZS04IGF4LXB5LTMgYXgtYm9yZGVyLWJcIj5cbiAgICA8aDMgY2xhc3M9XCJheC10ZXh0LXN0YXJ0IGF4LXRleHQtbGcgYXgtZm9udC1tZWRpdW0gYXgtdHJ1bmNhdGVcIj57e3RpdGxlKCl9fTwvaDM+XG4gIDwvZGl2PlxuICB9XG5cbiAgPCEtLSBDb250ZW50IHNlY3Rpb24gLS0+XG4gIDxkaXYgY2xhc3M9XCJheC1vdmVyZmxvdy1hdXRvIGF4LWgtZnVsbFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG4iXX0=","const path = 'home:dashboard:';\nexport var AXPHomeDashboardSetting;\n(function (AXPHomeDashboardSetting) {\n AXPHomeDashboardSetting[\"CurrentDashboard\"] = \"home:dashboard:current-dashboard\";\n})(AXPHomeDashboardSetting || (AXPHomeDashboardSetting = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3Mua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL3NldHRpbmdzLmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUM7QUFDL0IsTUFBTSxDQUFOLElBQVksdUJBRVg7QUFGRCxXQUFZLHVCQUF1QjtJQUNqQyxnRkFBNkMsQ0FBQTtBQUMvQyxDQUFDLEVBRlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUVsQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBhdGggPSAnaG9tZTpkYXNoYm9hcmQ6JztcbmV4cG9ydCBlbnVtIEFYUEhvbWVEYXNoYm9hcmRTZXR0aW5nIHtcbiAgQ3VycmVudERhc2hib2FyZCA9IGAke3BhdGh9Y3VycmVudC1kYXNoYm9hcmRgLFxufVxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLabelModule } from '@acorex/components/label';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXSelectBoxModule } from '@acorex/components/select-box';\nimport { AXSwitchModule } from '@acorex/components/switch';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXMOrganizationManagementRoleEntityService } from '@acorex/modules/organization-management';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { CommonModule } from '@angular/common';\nimport { Component, inject, model } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RootConfig } from '../../../const';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@acorex/components/button\";\nimport * as i3 from \"@acorex/components/text-box\";\nimport * as i4 from \"@acorex/components/decorators\";\nimport * as i5 from \"@angular/common\";\nimport * as i6 from \"@acorex/core/translation\";\nimport * as i7 from \"@acorex/components/select-box\";\nimport * as i8 from \"@acorex/components/switch\";\nexport class AXMAddDashboardPopup extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.scope = RootConfig.config.i18n;\n this.roleService = inject(AXMOrganizationManagementRoleEntityService);\n this.sessionService = inject(AXPSessionService);\n this.title = model('');\n this.description = model('');\n this.selectedRoleIds = model([]);\n this.isDisabled = model(false);\n this.isLocked = model(false);\n this.isAdmin = model(false);\n this.roles = [];\n }\n get isValid() {\n return !!this.title()?.trim();\n }\n async ngOnInit() {\n // Set initial values from input data\n this.title.set(this.data?.title || '');\n this.description.set(this.data?.description || '');\n this.isDisabled.set(this.data?.isDeleted || false);\n this.isLocked.set(this.data?.locked || false);\n this.isAdmin.set(this.data?.isAdmin || false);\n // Load roles if admin\n if (this.isAdmin()) {\n try {\n const result = await this.roleService.query({ skip: 0, take: 100 });\n if (result.items && result.items.length > 0) {\n this.roles = result.items.map((i) => ({\n id: i.id,\n title: i.title,\n }));\n }\n this.selectedRoleIds.set(this.roles.filter((i) => this.data?.roleIds?.includes(i.id)).map((i) => i.id));\n }\n catch (error) {\n console.error('Error loading roles:', error);\n this.roles = [];\n }\n }\n }\n async handleClose(isCanceled = false) {\n this.close({\n title: this.title()?.trim(),\n description: this.description()?.trim(),\n roleIds: this.isAdmin() ? this.selectedRoleIds() : undefined,\n isDeleted: this.isAdmin() ? this.isDisabled() : undefined,\n locked: this.isAdmin() ? this.isLocked() : undefined,\n scope: this.isAdmin() ? 'T' : 'U',\n createdBy: this.sessionService.user?.id,\n createdAt: new Date(),\n updatedBy: this.sessionService.user?.id,\n updatedAt: new Date(),\n isCanceled,\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMAddDashboardPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMAddDashboardPopup, isStandalone: true, selector: \"ng-component\", inputs: { title: { classPropertyName: \"title\", publicName: \"title\", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: \"description\", publicName: \"description\", isSignal: true, isRequired: false, transformFunction: null }, selectedRoleIds: { classPropertyName: \"selectedRoleIds\", publicName: \"selectedRoleIds\", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: \"isDisabled\", publicName: \"isDisabled\", isSignal: true, isRequired: false, transformFunction: null }, isLocked: { classPropertyName: \"isLocked\", publicName: \"isLocked\", isSignal: true, isRequired: false, transformFunction: null }, isAdmin: { classPropertyName: \"isAdmin\", publicName: \"isAdmin\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: \"titleChange\", description: \"descriptionChange\", selectedRoleIds: \"selectedRoleIdsChange\", isDisabled: \"isDisabledChange\", isLocked: \"isLockedChange\", isAdmin: \"isAdminChange\" }, usesInheritance: true, ngImport: i0, template: `\n <div class=\"ax-card-body ax-p-4\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-pb-4\">\n <p class=\"ax-font-semibold\">{{ 'title' | translate | async }}</p>\n <ax-text-box [(ngModel)]=\"title\" name=\"title\" placeholder=\"{{ 'title' | translate | async }}\"> </ax-text-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'description' | translate | async }}</p>\n <ax-text-box [(ngModel)]=\"description\" name=\"description\" placeholder=\"{{ 'description' | translate | async }}\">\n </ax-text-box>\n </div>\n\n @if (isAdmin()) {\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n <p class=\"ax-font-semibold\">{{ 'roles' | translate: { scope } | async }}</p>\n <ax-select-box\n [(ngModel)]=\"selectedRoleIds\"\n [dataSource]=\"roles\"\n [multiple]=\"true\"\n [textField]=\"'title'\"\n [valueField]=\"'id'\"\n name=\"roles\"\n placeholder=\"{{ 'select-roles' | translate: { scope } | async }}\"\n >\n </ax-select-box>\n </div>\n\n <div class=\"ax-grid grid-cols-2 ax-grid-flow-col ax-gap-8 ax-mt-4\">\n <div class=\"ax-flex ax-flex-row ax-items-center ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'disable' | translate: { scope } | async }}</p>\n <ax-switch [(ngModel)]=\"isDisabled\" name=\"isDisabled\"></ax-switch>\n </div>\n\n <div class=\"ax-flex ax-flex-row ax-items-center ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'lock' | translate: { scope } | async }}</p>\n <ax-switch [(ngModel)]=\"isLocked\" name=\"isLocked\"></ax-switch>\n </div>\n </div>\n }\n </div>\n\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button [text]=\"'cancel' | translate | async\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button\n [text]=\"'save' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"!isValid\"\n (onClick)=\"handleClose()\"\n >\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i2.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXTextBoxModule }, { kind: \"component\", type: i3.AXTextBoxComponent, selector: \"ax-text-box\", inputs: [\"disabled\", \"tabIndex\", \"readonly\", \"value\", \"state\", \"name\", \"id\", \"placeholder\", \"maxLength\", \"allowNull\", \"type\", \"autoComplete\", \"look\", \"mask-options\", \"class\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"stateChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\", \"onKeyDown\", \"onKeyUp\", \"onKeyPress\"] }, { kind: \"ngmodule\", type: AXLabelModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i4.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i4.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i5.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"pipe\", type: i6.AXTranslatorPipe, name: \"translate\" }, { kind: \"ngmodule\", type: AXSelectBoxModule }, { kind: \"component\", type: i7.AXSelectBoxComponent, selector: \"ax-select-box\", inputs: [\"disabled\", \"readonly\", \"tabIndex\", \"placeholder\", \"minValue\", \"maxValue\", \"value\", \"state\", \"name\", \"id\", \"type\", \"look\", \"multiple\", \"valueField\", \"textField\", \"disabledField\", \"textTemplate\", \"selectedItems\", \"dataSource\", \"minRecordsForSearch\", \"caption\", \"itemTemplate\", \"selectedTemplate\", \"emptyTemplate\", \"loadingTemplate\", \"dropdownWidth\", \"searchBoxAutoFocus\"], outputs: [\"valueChange\", \"stateChange\", \"onValueChanged\", \"onBlur\", \"onFocus\", \"readonlyChange\", \"disabledChange\", \"onOpened\", \"onClosed\"] }, { kind: \"ngmodule\", type: AXSwitchModule }, { kind: \"component\", type: i8.AXSwitchComponent, selector: \"ax-switch\", inputs: [\"disabled\", \"readonly\", \"color\", \"tabIndex\", \"value\", \"name\", \"isLoading\"], outputs: [\"onBlur\", \"onFocus\", \"valueChange\", \"onValueChanged\", \"readonlyChange\", \"disabledChange\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMAddDashboardPopup, decorators: [{\n type: Component,\n args: [{\n template: `\n <div class=\"ax-card-body ax-p-4\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-pb-4\">\n <p class=\"ax-font-semibold\">{{ 'title' | translate | async }}</p>\n <ax-text-box [(ngModel)]=\"title\" name=\"title\" placeholder=\"{{ 'title' | translate | async }}\"> </ax-text-box>\n </div>\n <div class=\"ax-flex ax-flex-col ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'description' | translate | async }}</p>\n <ax-text-box [(ngModel)]=\"description\" name=\"description\" placeholder=\"{{ 'description' | translate | async }}\">\n </ax-text-box>\n </div>\n\n @if (isAdmin()) {\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-mt-4\">\n <p class=\"ax-font-semibold\">{{ 'roles' | translate: { scope } | async }}</p>\n <ax-select-box\n [(ngModel)]=\"selectedRoleIds\"\n [dataSource]=\"roles\"\n [multiple]=\"true\"\n [textField]=\"'title'\"\n [valueField]=\"'id'\"\n name=\"roles\"\n placeholder=\"{{ 'select-roles' | translate: { scope } | async }}\"\n >\n </ax-select-box>\n </div>\n\n <div class=\"ax-grid grid-cols-2 ax-grid-flow-col ax-gap-8 ax-mt-4\">\n <div class=\"ax-flex ax-flex-row ax-items-center ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'disable' | translate: { scope } | async }}</p>\n <ax-switch [(ngModel)]=\"isDisabled\" name=\"isDisabled\"></ax-switch>\n </div>\n\n <div class=\"ax-flex ax-flex-row ax-items-center ax-gap-2\">\n <p class=\"ax-font-semibold\">{{ 'lock' | translate: { scope } | async }}</p>\n <ax-switch [(ngModel)]=\"isLocked\" name=\"isLocked\"></ax-switch>\n </div>\n </div>\n }\n </div>\n\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button [text]=\"'cancel' | translate | async\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button\n [text]=\"'save' | translate | async\"\n look=\"solid\"\n color=\"primary\"\n [disabled]=\"!isValid\"\n (onClick)=\"handleClose()\"\n >\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [\n FormsModule,\n AXButtonModule,\n AXTextBoxModule,\n AXLabelModule,\n AXDecoratorModule,\n CommonModule,\n AXTranslationModule,\n AXSelectBoxModule,\n AXSwitchModule,\n ],\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWRhc2hib2FyZC1wb3B1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2hvbWUtZGFzaGJvYXJkL2Rhc2hib2FyZC1wb3B1cHMvYWRkLWRhc2hib2FyZC1wb3B1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBeUU1QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEs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QWM7OzJGQUlMLG9CQUFvQjtrQkF2RWhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdEVDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixpQkFBaUI7d0JBQ2pCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLGNBQWM7cUJBQ2Y7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhCdXR0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7IEFYRGVjb3JhdG9yTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RlY29yYXRvcnMnO1xuaW1wb3J0IHsgQVhMYWJlbE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9sYWJlbCc7XG5pbXBvcnQgeyBBWEJhc2VQYWdlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3BhZ2UnO1xuaW1wb3J0IHsgQVhTZWxlY3RCb3hNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2VsZWN0LWJveCc7XG5pbXBvcnQgeyBBWFN3aXRjaE1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9zd2l0Y2gnO1xuaW1wb3J0IHsgQVhUZXh0Qm94TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RleHQtYm94JztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhNT3JnYW5pemF0aW9uTWFuYWdlbWVudFJvbGVFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9tb2R1bGVzL29yZ2FuaXphdGlvbi1tYW5hZ2VtZW50JztcbmltcG9ydCB7IEFYUFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9hdXRoJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgbW9kZWwsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBWE1EYXNoYm9hcmRMYXlvdXQgfSBmcm9tICcuLi9kYXNoYm9hcmQtaG9tZSc7XG5pbXBvcnQgeyBSb290Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29uc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXgtY2FyZC1ib2R5IGF4LXAtNFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtcGItNFwiPlxuICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtc2VtaWJvbGRcIj57eyAndGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L3A+XG4gICAgICAgIDxheC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cInRpdGxlXCIgbmFtZT1cInRpdGxlXCIgcGxhY2Vob2xkZXI9XCJ7eyAndGl0bGUnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX1cIj4gPC9heC10ZXh0LWJveD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkXCI+e3sgJ2Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9wPlxuICAgICAgICA8YXgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJkZXNjcmlwdGlvblwiIG5hbWU9XCJkZXNjcmlwdGlvblwiIHBsYWNlaG9sZGVyPVwie3sgJ2Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19XCI+XG4gICAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChpc0FkbWluKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtbXQtNFwiPlxuICAgICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZFwiPnt7ICdyb2xlcycgfCB0cmFuc2xhdGU6IHsgc2NvcGUgfSB8IGFzeW5jIH19PC9wPlxuICAgICAgICAgIDxheC1zZWxlY3QtYm94XG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkUm9sZUlkc1wiXG4gICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJyb2xlc1wiXG4gICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdGV4dEZpZWxkXT1cIid0aXRsZSdcIlxuICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwiJ2lkJ1wiXG4gICAgICAgICAgICBuYW1lPVwicm9sZXNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnc2VsZWN0LXJvbGVzJyB8IHRyYW5zbGF0ZTogeyBzY29wZSB9IHwgYXN5bmMgfX1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2F4LXNlbGVjdC1ib3g+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC1ncmlkIGdyaWQtY29scy0yIGF4LWdyaWQtZmxvdy1jb2wgYXgtZ2FwLTggYXgtbXQtNFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMlwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkXCI+e3sgJ2Rpc2FibGUnIHwgdHJhbnNsYXRlOiB7IHNjb3BlIH0gfCBhc3luYyB9fTwvcD5cbiAgICAgICAgICAgIDxheC1zd2l0Y2ggWyhuZ01vZGVsKV09XCJpc0Rpc2FibGVkXCIgbmFtZT1cImlzRGlzYWJsZWRcIj48L2F4LXN3aXRjaD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtcm93IGF4LWl0ZW1zLWNlbnRlciBheC1nYXAtMlwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJheC1mb250LXNlbWlib2xkXCI+e3sgJ2xvY2snIHwgdHJhbnNsYXRlOiB7IHNjb3BlIH0gfCBhc3luYyB9fTwvcD5cbiAgICAgICAgICAgIDxheC1zd2l0Y2ggWyhuZ01vZGVsKV09XCJpc0xvY2tlZFwiIG5hbWU9XCJpc0xvY2tlZFwiPjwvYXgtc3dpdGNoPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIDxheC1mb290ZXI+XG4gICAgICA8YXgtcHJlZml4PjwvYXgtcHJlZml4PlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCInY2FuY2VsJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgbG9vaz1cInNvbGlkXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2xvc2UodHJ1ZSlcIj4gPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b25cbiAgICAgICAgICBbdGV4dF09XCInc2F2ZScgfCB0cmFuc2xhdGUgfCBhc3luY1wiXG4gICAgICAgICAgbG9vaz1cInNvbGlkXCJcbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNWYWxpZFwiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlQ2xvc2UoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLXNhdmVcIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgPC9heC1zdWZmaXg+XG4gICAgPC9heC1mb290ZXI+XG4gIGAsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWFRleHRCb3hNb2R1bGUsXG4gICAgQVhMYWJlbE1vZHVsZSxcbiAgICBBWERlY29yYXRvck1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFNlbGVjdEJveE1vZHVsZSxcbiAgICBBWFN3aXRjaE1vZHVsZSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhNQWRkRGFzaGJvYXJkUG9wdXAgZXh0ZW5kcyBBWEJhc2VQYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNjb3BlID0gUm9vdENvbmZpZy5jb25maWcuaTE4bjtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRhdGE6IFBhcnRpYWw8QVhNRGFzaGJvYXJkTGF5b3V0ICYgeyBpc0FkbWluOiBib29sZWFuIH0+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcm9sZVNlcnZpY2UgPSBpbmplY3QoQVhNT3JnYW5pemF0aW9uTWFuYWdlbWVudFJvbGVFbnRpdHlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHRpdGxlID0gbW9kZWw8c3RyaW5nPignJyk7XG4gIHByb3RlY3RlZCBkZXNjcmlwdGlvbiA9IG1vZGVsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRSb2xlSWRzID0gbW9kZWw8c3RyaW5nW10+KFtdKTtcbiAgcHJvdGVjdGVkIGlzRGlzYWJsZWQgPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBpc0xvY2tlZCA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJvdGVjdGVkIGlzQWRtaW4gPSBtb2RlbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCByb2xlczogYW55W10gPSBbXTtcblxuICBwcm90ZWN0ZWQgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50aXRsZSgpPy50cmltKCk7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBTZXQgaW5pdGlhbCB2YWx1ZXMgZnJvbSBpbnB1dCBkYXRhXG4gICAgdGhpcy50aXRsZS5zZXQodGhpcy5kYXRhPy50aXRsZSB8fCAnJyk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbi5zZXQodGhpcy5kYXRhPy5kZXNjcmlwdGlvbiB8fCAnJyk7XG4gICAgdGhpcy5pc0Rpc2FibGVkLnNldCh0aGlzLmRhdGE/LmlzRGVsZXRlZCB8fCBmYWxzZSk7XG4gICAgdGhpcy5pc0xvY2tlZC5zZXQodGhpcy5kYXRhPy5sb2NrZWQgfHwgZmFsc2UpO1xuICAgIHRoaXMuaXNBZG1pbi5zZXQodGhpcy5kYXRhPy5pc0FkbWluIHx8IGZhbHNlKTtcbiAgICAvLyBMb2FkIHJvbGVzIGlmIGFkbWluXG4gICAgaWYgKHRoaXMuaXNBZG1pbigpKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJvbGVTZXJ2aWNlLnF1ZXJ5KHsgc2tpcDogMCwgdGFrZTogMTAwIH0pO1xuICAgICAgICBpZiAocmVzdWx0Lml0ZW1zICYmIHJlc3VsdC5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5yb2xlcyA9IHJlc3VsdC5pdGVtcy5tYXAoKGkpID0+ICh7XG4gICAgICAgICAgICBpZDogaS5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBpLnRpdGxlLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGVkUm9sZUlkcy5zZXQodGhpcy5yb2xlcy5maWx0ZXIoKGkpID0+IHRoaXMuZGF0YT8ucm9sZUlkcz8uaW5jbHVkZXMoaS5pZCkpLm1hcCgoaSkgPT4gaS5pZCkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbG9hZGluZyByb2xlczonLCBlcnJvcik7XG4gICAgICAgIHRoaXMucm9sZXMgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQ2xvc2UoaXNDYW5jZWxlZCA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbG9zZSh7XG4gICAgICB0aXRsZTogdGhpcy50aXRsZSgpPy50cmltKCksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbigpPy50cmltKCksXG4gICAgICByb2xlSWRzOiB0aGlzLmlzQWRtaW4oKSA/IHRoaXMuc2VsZWN0ZWRSb2xlSWRzKCkgOiB1bmRlZmluZWQsXG4gICAgICBpc0RlbGV0ZWQ6IHRoaXMuaXNBZG1pbigpID8gdGhpcy5pc0Rpc2FibGVkKCkgOiB1bmRlZmluZWQsXG4gICAgICBsb2NrZWQ6IHRoaXMuaXNBZG1pbigpID8gdGhpcy5pc0xvY2tlZCgpIDogdW5kZWZpbmVkLFxuICAgICAgc2NvcGU6IHRoaXMuaXNBZG1pbigpID8gJ1QnIDogJ1UnLFxuICAgICAgY3JlYXRlZEJ5OiB0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkLFxuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgdXBkYXRlZEJ5OiB0aGlzLnNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkLFxuICAgICAgdXBkYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgaXNDYW5jZWxlZCxcbiAgICB9KTtcbiAgfVxufVxuIl19","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXBasePageComponent } from '@acorex/components/page';\nimport { AXPWidgetPropertyViewerComponent } from '@acorex/platform/layout/designer';\nimport { Component, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/button\";\nimport * as i2 from \"@acorex/components/decorators\";\nexport class AXMConfigurationPopup extends AXBasePageComponent {\n constructor() {\n super(...arguments);\n this.widgetData = signal(null);\n }\n ngOnInit() {\n this.widgetData.set(this.widget);\n }\n async handleClose(isCanceled = false) {\n this.close({\n isCanceled,\n widget: this.widgetData(),\n });\n }\n handlePropertyChange(event) {\n this.widgetData.set(event.values);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConfigurationPopup, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMConfigurationPopup, isStandalone: true, selector: \"ng-component\", usesInheritance: true, ngImport: i0, template: `\n @if(widget) {\n <div class=\"ax-px-1\">\n <axp-widget-property-viewer (onChanged)=\"handlePropertyChange($event)\" [widget]=\"widget\">\n </axp-widget-property-viewer>\n </div>\n }\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button text=\"Save\" look=\"solid\" color=\"primary\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXButtonModule }, { kind: \"component\", type: i1.AXButtonComponent, selector: \"ax-button\", inputs: [\"disabled\", \"size\", \"tabIndex\", \"color\", \"look\", \"text\", \"toggleable\", \"selected\", \"iconOnly\", \"type\", \"loadingText\"], outputs: [\"onBlur\", \"onFocus\", \"onClick\", \"selectedChange\", \"toggleableChange\", \"lookChange\", \"colorChange\", \"disabledChange\", \"loadingTextChange\"] }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i2.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"component\", type: i2.AXDecoratorGenericComponent, selector: \"ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay\" }, { kind: \"component\", type: AXPWidgetPropertyViewerComponent, selector: \"axp-widget-property-viewer\", inputs: [\"widget\", \"mode\"], outputs: [\"onChanged\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMConfigurationPopup, decorators: [{\n type: Component,\n args: [{\n template: `\n @if(widget) {\n <div class=\"ax-px-1\">\n <axp-widget-property-viewer (onChanged)=\"handlePropertyChange($event)\" [widget]=\"widget\">\n </axp-widget-property-viewer>\n </div>\n }\n <ax-footer>\n <ax-prefix></ax-prefix>\n <ax-suffix>\n <ax-button text=\"Cancel\" look=\"solid\" (onClick)=\"handleClose(true)\"> </ax-button>\n <ax-button text=\"Save\" look=\"solid\" color=\"primary\" (onClick)=\"handleClose()\">\n <ax-icon class=\"fa-solid fa-save\"></ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-footer>\n `,\n imports: [AXButtonModule, AXDecoratorModule, AXPWidgetPropertyViewerComponent],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1wb3B1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2hvbWUtZGFzaGJvYXJkL2Rhc2hib2FyZC1wb3B1cHMvY29uZmlndXJhdGlvbi1wb3B1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFtQyxnQ0FBZ0MsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JILE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBc0IxRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsbUJBQW1CO0lBcEI5RDs7UUFzQnFCLGVBQVUsR0FBRyxNQUFNLENBQXVCLElBQUksQ0FBQyxDQUFDO0tBZ0JwRTtJQWRVLFFBQVE7UUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVTLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLEtBQUs7UUFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNULFVBQVU7WUFDVixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsb0JBQW9CLENBQUMsS0FBc0M7UUFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OEdBakJVLHFCQUFxQjtrR0FBckIscUJBQXFCLCtGQW5CdEI7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQsMkRBQ1MsY0FBYyw2WEFBRSxpQkFBaUIsdVZBQUUsZ0NBQWdDOzsyRkFFbEUscUJBQXFCO2tCQXBCakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQlQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLGlCQUFpQixFQUFFLGdDQUFnQyxDQUFDO2lCQUMvRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYQmFzZVBhZ2VDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcGFnZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBWFBXaWRnZXRQcm9wZXJ0aWVzQ2hhbmdlZEV2ZW50LCBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2Rlc2lnbmVyJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiBgXG4gICAgQGlmKHdpZGdldCkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1weC0xXCI+XG4gICAgICA8YXhwLXdpZGdldC1wcm9wZXJ0eS12aWV3ZXIgKG9uQ2hhbmdlZCk9XCJoYW5kbGVQcm9wZXJ0eUNoYW5nZSgkZXZlbnQpXCIgW3dpZGdldF09XCJ3aWRnZXRcIj5cbiAgICAgIDwvYXhwLXdpZGdldC1wcm9wZXJ0eS12aWV3ZXI+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxheC1mb290ZXI+XG4gICAgICA8YXgtcHJlZml4PjwvYXgtcHJlZml4PlxuICAgICAgPGF4LXN1ZmZpeD5cbiAgICAgICAgPGF4LWJ1dHRvbiB0ZXh0PVwiQ2FuY2VsXCIgbG9vaz1cInNvbGlkXCIgKG9uQ2xpY2spPVwiaGFuZGxlQ2xvc2UodHJ1ZSlcIj4gPC9heC1idXR0b24+XG4gICAgICAgIDxheC1idXR0b24gdGV4dD1cIlNhdmVcIiBsb29rPVwic29saWRcIiBjb2xvcj1cInByaW1hcnlcIiAob25DbGljayk9XCJoYW5kbGVDbG9zZSgpXCI+XG4gICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1zYXZlXCI+PC9heC1pY29uPlxuICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgIDwvYXgtc3VmZml4PlxuICAgIDwvYXgtZm9vdGVyPlxuICBgLFxuICBpbXBvcnRzOiBbQVhCdXR0b25Nb2R1bGUsIEFYRGVjb3JhdG9yTW9kdWxlLCBBWFBXaWRnZXRQcm9wZXJ0eVZpZXdlckNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYTUNvbmZpZ3VyYXRpb25Qb3B1cCBleHRlbmRzIEFYQmFzZVBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICB3aWRnZXQhOiBBWFBXaWRnZXROb2RlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2lkZ2V0RGF0YSA9IHNpZ25hbDxBWFBXaWRnZXROb2RlIHwgbnVsbD4obnVsbCk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXREYXRhLnNldCh0aGlzLndpZGdldCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlQ2xvc2UoaXNDYW5jZWxlZCA9IGZhbHNlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5jbG9zZSh7XG4gICAgICBpc0NhbmNlbGVkLFxuICAgICAgd2lkZ2V0OiB0aGlzLndpZGdldERhdGEoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVQcm9wZXJ0eUNoYW5nZShldmVudDogQVhQV2lkZ2V0UHJvcGVydGllc0NoYW5nZWRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMud2lkZ2V0RGF0YS5zZXQoZXZlbnQudmFsdWVzKTtcbiAgfVxufVxuIl19","import { AXPopupService } from '@acorex/components/popup';\nimport { inject, Injectable } from '@angular/core';\nimport { AXMAddDashboardPopup } from './add-dashboard-popup';\nimport { AXMConfigurationPopup } from './configuration-popup';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport * as i0 from \"@angular/core\";\nexport class AXMDashboardPopupService {\n constructor() {\n this.popupService = inject(AXPopupService);\n this.translateService = inject(AXTranslationService);\n }\n async generateDashboardLayout(data, isAdmin) {\n // Add isAdmin to the data object\n const dashboardData = { ...data, isAdmin };\n const result = await this.popupService.open(AXMAddDashboardPopup, {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n title: await this.translateService.translateAsync('dashboard-info', { scope: 'dashboard' }),\n data: { data: dashboardData },\n });\n if (!result.data) {\n return;\n }\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n return rest;\n }\n async handlePopupConfiguration(widget) {\n const result = await this.popupService.open(AXMConfigurationPopup, {\n header: true,\n size: 'sm',\n draggable: true,\n hasBackdrop: true,\n title: await this.translateService.translateAsync('widget-configuration', { scope: 'dashboard' }),\n data: { widget },\n });\n if (!result.data) {\n return;\n }\n const { isCanceled, ...rest } = result.data;\n if (isCanceled) {\n return;\n }\n return rest.widget;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardPopupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardPopupService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardPopupService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLXBvcHVwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9ob21lLWRhc2hib2FyZC9kYXNoYm9hcmQtcG9wdXBzL2Rhc2hib2FyZC1wb3B1cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLHdCQUF3QjtJQURyQztRQUVtQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztLQW1EbEU7SUFqREMsS0FBSyxDQUFDLHVCQUF1QixDQUMzQixJQUFpQyxFQUNqQyxPQUFnQjtRQUVoQixpQ0FBaUM7UUFDakMsTUFBTSxhQUFhLEdBQVEsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQ2hFLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDM0YsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtTQUM5QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxJQUEwQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsTUFBcUI7UUFDbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUNqRSxNQUFNLEVBQUUsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO1lBQ2pHLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRTtTQUNqQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBdUIsQ0FBQztJQUN0QyxDQUFDOzhHQXBEVSx3QkFBd0I7a0hBQXhCLHdCQUF3QixjQURYLE1BQU07OzJGQUNuQix3QkFBd0I7a0JBRHBDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQb3B1cFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wdXAnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Tm9kZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2J1aWxkZXInO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWE1EYXNoYm9hcmRMYXlvdXQgfSBmcm9tICcuLi9kYXNoYm9hcmQtaG9tZSc7XG5pbXBvcnQgeyBBWE1BZGREYXNoYm9hcmRQb3B1cCB9IGZyb20gJy4vYWRkLWRhc2hib2FyZC1wb3B1cCc7XG5pbXBvcnQgeyBBWE1Db25maWd1cmF0aW9uUG9wdXAgfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24tcG9wdXAnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFYTURhc2hib2FyZFBvcHVwU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcblxuICBhc3luYyBnZW5lcmF0ZURhc2hib2FyZExheW91dChcbiAgICBkYXRhOiBQYXJ0aWFsPEFYTURhc2hib2FyZExheW91dD4sXG4gICAgaXNBZG1pbjogYm9vbGVhbixcbiAgKTogUHJvbWlzZTxBWE1EYXNoYm9hcmRMYXlvdXQgfCB2b2lkPiB7XG4gICAgLy8gQWRkIGlzQWRtaW4gdG8gdGhlIGRhdGEgb2JqZWN0XG4gICAgY29uc3QgZGFzaGJvYXJkRGF0YTogYW55ID0geyAuLi5kYXRhLCBpc0FkbWluIH07XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnBvcHVwU2VydmljZS5vcGVuKEFYTUFkZERhc2hib2FyZFBvcHVwLCB7XG4gICAgICBoZWFkZXI6IHRydWUsXG4gICAgICBzaXplOiAnc20nLFxuICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCdkYXNoYm9hcmQtaW5mbycsIHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0pLFxuICAgICAgZGF0YTogeyBkYXRhOiBkYXNoYm9hcmREYXRhIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3VsdC5kYXRhKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBpc0NhbmNlbGVkLCAuLi5yZXN0IH0gPSByZXN1bHQuZGF0YTtcbiAgICBpZiAoaXNDYW5jZWxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiByZXN0IGFzIEFYTURhc2hib2FyZExheW91dDtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVBvcHVwQ29uZmlndXJhdGlvbih3aWRnZXQ6IEFYUFdpZGdldE5vZGUpOiBQcm9taXNlPEFYUFdpZGdldE5vZGUgfCB2b2lkPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wb3B1cFNlcnZpY2Uub3BlbihBWE1Db25maWd1cmF0aW9uUG9wdXAsIHtcbiAgICAgIGhlYWRlcjogdHJ1ZSxcbiAgICAgIHNpemU6ICdzbScsXG4gICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ3dpZGdldC1jb25maWd1cmF0aW9uJywgeyBzY29wZTogJ2Rhc2hib2FyZCcgfSksXG4gICAgICBkYXRhOiB7IHdpZGdldCB9LFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXN1bHQuZGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgaXNDYW5jZWxlZCwgLi4ucmVzdCB9ID0gcmVzdWx0LmRhdGE7XG4gICAgaWYgKGlzQ2FuY2VsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdC53aWRnZXQgYXMgQVhQV2lkZ2V0Tm9kZTtcbiAgfVxufVxuIl19","import { AXDialogService } from '@acorex/components/dialog';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex/platform/auth';\nimport { AXPSettingService } from '@acorex/platform/common';\nimport { AXPDataGenerator, AXPPlatformScope } from '@acorex/platform/core';\nimport { AXPWidgetGroupEnum } from '@acorex/platform/layout/builder';\nimport { AXPWidgetPickerService } from '@acorex/platform/layout/designer';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { computed, effect, inject } from '@angular/core';\nimport { patchState, signalStore, withComputed, withMethods, withState } from '@ngrx/signals';\nimport { AXMDashboardService } from '../../../entities/dashboard/dashboard.service';\nimport { AXPHomeDashboardSetting } from '../../../settings.keys';\nimport { AXMDashboardPopupService } from '../dashboard-popups/dashboard-popup.service';\n// Helper functions\nconst createInitialState = () => ({\n dashboards: [],\n allDashboards: [],\n currentDashboardId: null,\n isAdmin: false,\n dashboardsOption: {\n float: false,\n cellHeight: 75,\n gap: 5,\n minRow: 9,\n column: 12,\n responsiveLayout: [\n { column: 12, width: 2048 },\n { column: 6, width: 768 },\n { column: 1, width: 480 },\n ],\n },\n isLoading: false,\n});\nconst modelToDashboardLayout = (model) => ({\n id: model.id || '',\n title: model.title,\n description: model.description,\n widgets: model.widgets || [],\n roleIds: model.roleIds,\n isDeleted: model.isDeleted,\n locked: model.locked,\n createdAt: model.createdAt,\n updatedAt: model.updatedAt,\n createdBy: model.createdBy,\n updatedBy: model.updatedBy,\n scope: model.scope,\n});\nconst dashboardLayoutToModel = (layout) => ({\n id: layout.id,\n name: layout.title,\n title: layout.title,\n description: layout.description || '',\n widgets: layout.widgets,\n roleIds: layout.roleIds,\n isDeleted: layout.isDeleted,\n locked: layout.locked,\n createdAt: layout.createdAt,\n updatedAt: layout.updatedAt,\n createdBy: layout.createdBy,\n updatedBy: layout.updatedBy,\n scope: layout.scope,\n});\n// Create the SignalStore\nexport const AXMDashboardStore = signalStore({ providedIn: 'root' }, \n// Initial State Definition\nwithState(() => createInitialState()), \n// Computed Properties\nwithComputed((state, sessionService = inject(AXPSessionService), layoutThemeService = inject(AXPLayoutThemeService)) => ({\n selectedDashboard: computed(() => state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId()) || null),\n isUserAdmin: computed(() => state.isAdmin()),\n availableDashboards: computed(() => state.allDashboards()),\n currentLayoutOptions: computed(() => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n const baseOptions = state.dashboardsOption();\n if (!currentDashboard)\n return baseOptions;\n if (!layoutThemeService.isDesktopDevice()) {\n return { ...baseOptions, disableDrag: true, disableResize: true };\n }\n if (baseOptions.disableDrag !== undefined && baseOptions.disableResize !== undefined) {\n return baseOptions;\n }\n if (currentDashboard.locked === true) {\n return { ...baseOptions, disableDrag: true, disableResize: true };\n }\n if (state.isAdmin())\n return baseOptions;\n const userRole = sessionService.user ? sessionService.user['role'] : undefined;\n const hasRoleIds = currentDashboard.roleIds && Array.isArray(currentDashboard.roleIds) && currentDashboard.roleIds.length > 0;\n const hasUserRole = userRole && hasRoleIds && currentDashboard.roleIds?.includes(userRole);\n if (!state.isAdmin() && hasUserRole && currentDashboard.scope === 'T') {\n return { ...baseOptions, disableDrag: true, disableResize: true };\n }\n return baseOptions;\n }),\n canConfigureWidget: computed(() => (widget) => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n if (!currentDashboard)\n return true;\n if (state.isAdmin())\n return widget.node?.options?.['hasConfiguration'] ?? true;\n if (currentDashboard.locked === true)\n return false;\n const userRole = sessionService.user ? sessionService.user['role'] : undefined;\n const hasRoleIds = currentDashboard.roleIds && Array.isArray(currentDashboard.roleIds) && currentDashboard.roleIds.length > 0;\n const hasUserRole = userRole && hasRoleIds && currentDashboard.roleIds?.includes(userRole);\n if (hasUserRole && currentDashboard.scope === 'T')\n return false;\n return widget.node?.options?.['hasConfiguration'] ?? true;\n }),\n isWidgetLocked: computed(() => (widget) => {\n const currentDashboard = state.dashboards().find((dashboard) => dashboard.id === state.currentDashboardId());\n if (!currentDashboard)\n return false;\n if (currentDashboard.locked === true)\n return true;\n if (state.isAdmin())\n return false;\n const userRole = sessionService.user ? sessionService.user['role'] : undefined;\n const hasRoleIds = currentDashboard.roleIds && Array.isArray(currentDashboard.roleIds) && currentDashboard.roleIds.length > 0;\n const hasUserRole = userRole && hasRoleIds && currentDashboard.roleIds?.includes(userRole);\n return hasUserRole && currentDashboard.scope === 'T';\n }),\n})), \n// Methods for State Management\nwithMethods((store, dashboardPopup = inject(AXMDashboardPopupService), dialogService = inject(AXDialogService), translationService = inject(AXTranslationService), widgetPickerService = inject(AXPWidgetPickerService), dashboardService = inject(AXMDashboardService), settingService = inject(AXPSettingService), sessionService = inject(AXPSessionService), layoutThemeService = inject(AXPLayoutThemeService)) => {\n // Load dashboards from service - runs on init via effect\n effect(() => {\n loadDashboards();\n });\n // Load dashboards from service\n async function loadDashboards() {\n try {\n patchState(store, { isLoading: true });\n const result = await dashboardService.query({ skip: 0, take: 100 });\n const dashboardModels = result.items || [];\n const dashboards = dashboardModels.map(modelToDashboardLayout);\n const currentDashboardId = await settingService\n .scope(AXPPlatformScope.User)\n .get(AXPHomeDashboardSetting.CurrentDashboard);\n let newCurrentDashboardId = null;\n if (dashboards.length > 0) {\n const dashboardExists = currentDashboardId && dashboards.some((d) => d.id === currentDashboardId);\n newCurrentDashboardId = dashboardExists ? currentDashboardId : dashboards[0].id;\n if (!dashboardExists) {\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n patchState(store, {\n allDashboards: dashboards,\n dashboards: dashboards,\n isLoading: false,\n currentDashboardId: newCurrentDashboardId,\n });\n }\n catch (error) {\n console.error('Error loading dashboards:', error);\n patchState(store, { isLoading: false });\n }\n }\n return {\n setCurrentDashboard(dashboardId) {\n patchState(store, { currentDashboardId: dashboardId });\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboardId);\n },\n async addDashboard() {\n try {\n const newDashboard = await dashboardPopup.generateDashboardLayout({}, store.isUserAdmin());\n if (!newDashboard)\n return;\n const userId = sessionService.user?.id;\n const now = new Date();\n const dashboardWithMetadata = {\n ...newDashboard,\n createdBy: userId,\n createdAt: now,\n updatedBy: userId,\n updatedAt: now,\n scope: store.isUserAdmin() ? 'T' : 'U',\n widgets: [],\n };\n const dashboardModel = dashboardLayoutToModel(dashboardWithMetadata);\n const createdDashboardId = await dashboardService.insertOne(dashboardModel);\n dashboardWithMetadata.id = createdDashboardId;\n const updatedAllDashboards = [...store.availableDashboards(), dashboardWithMetadata];\n const updatedDashboards = [...store.dashboards(), dashboardWithMetadata];\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n currentDashboardId: dashboardWithMetadata.id,\n });\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, dashboardWithMetadata.id);\n }\n catch (error) {\n console.error('Error adding dashboard:', error);\n }\n },\n async editDashboard() {\n const currentDashboard = store.selectedDashboard();\n if (!currentDashboard)\n return;\n try {\n const editedDashboard = await dashboardPopup.generateDashboardLayout({\n title: currentDashboard.title,\n description: currentDashboard.description,\n roleIds: currentDashboard.roleIds,\n scope: currentDashboard.scope,\n locked: currentDashboard.locked,\n isDeleted: currentDashboard.isDeleted,\n }, store.isUserAdmin());\n if (!editedDashboard)\n return;\n const userId = sessionService.user?.id;\n const now = new Date();\n const updatedDashboard = {\n ...currentDashboard,\n ...editedDashboard,\n updatedBy: userId,\n updatedAt: now,\n };\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedAllDashboards = store\n .availableDashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n const updatedDashboards = store\n .dashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n // If lock state changed, update the dashboard options too\n if (currentDashboard.locked !== updatedDashboard.locked) {\n const baseOptions = { ...store.dashboardsOption() };\n const updatedOptions = {\n ...baseOptions,\n disableDrag: updatedDashboard.locked === true,\n disableResize: updatedDashboard.locked === true,\n };\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n dashboardsOption: updatedOptions,\n });\n }\n else {\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n });\n }\n }\n catch (error) {\n console.error('Error editing dashboard:', error);\n }\n },\n async addWidget() {\n if (!store.selectedDashboard()) {\n console.warn('No current dashboard selected');\n return;\n }\n try {\n const widgets = await widgetPickerService.showPicker({\n groups: [AXPWidgetGroupEnum.DashboardWidget],\n });\n const filteredWidgets = widgets.map(({ __meta__, ...rest }) => {\n const widget = rest;\n if (widget.type === 'sticky-note' && !widget.options) {\n widget.options = { hasConfiguration: false };\n }\n const randomId = AXPDataGenerator.uuid();\n widget.name = `${widget.type}-${randomId}`;\n widget.path = `${widget.type}-${randomId}`;\n return widget;\n });\n const convertedWidgets = filteredWidgets.map((widget) => ({\n config: {\n height: widget?.meta?.dimensions?.height ?? 2,\n width: widget?.meta?.dimensions?.width ?? 2,\n minHeight: widget?.meta?.dimensions?.minHeight,\n minWidth: widget?.meta?.dimensions?.minWidth,\n maxHeight: widget?.meta?.dimensions?.maxHeight,\n maxWidth: widget?.meta?.dimensions?.maxWidth,\n id: AXPDataGenerator.uuid(),\n },\n node: { ...widget, name: widget.name },\n }));\n const currentDashboard = store.selectedDashboard();\n const updatedDashboard = {\n ...currentDashboard,\n widgets: [...currentDashboard.widgets, ...convertedWidgets],\n };\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((d) => (d.id === updatedDashboard.id ? updatedDashboard : d));\n patchState(store, { dashboards: updatedDashboards });\n }\n catch (error) {\n console.error('Error adding widget:', error);\n }\n },\n async removeDashboard(id) {\n if (!id) {\n console.warn('No dashboard ID provided for removal');\n return;\n }\n try {\n const dialogResult = await dialogService.confirm(await translationService.translateAsync('workflow.warning'), await translationService.translateAsync('workflow.confirm-delete'), 'danger', 'horizontal');\n if (dialogResult.result) {\n await dashboardService.deleteOne(id);\n const updatedAllDashboards = store.availableDashboards().filter((dashboard) => dashboard.id !== id);\n const updatedDashboards = store.dashboards().filter((dashboard) => dashboard.id !== id);\n let newCurrentDashboardId = store.currentDashboardId();\n if (id === store.currentDashboardId()) {\n newCurrentDashboardId =\n updatedDashboards.length > 0 ? updatedDashboards[updatedDashboards.length - 1].id : null;\n if (newCurrentDashboardId) {\n settingService\n .scope(AXPPlatformScope.User)\n .set(AXPHomeDashboardSetting.CurrentDashboard, newCurrentDashboardId);\n }\n }\n patchState(store, {\n allDashboards: updatedAllDashboards,\n dashboards: updatedDashboards,\n currentDashboardId: newCurrentDashboardId,\n });\n }\n }\n catch (error) {\n console.error('Error removing dashboard:', error);\n }\n },\n async removeWidget(dashboardId, widgetId) {\n const currentDashboard = store.dashboards().find((d) => d.id === dashboardId);\n if (!currentDashboard)\n return;\n const updatedDashboard = {\n ...currentDashboard,\n widgets: currentDashboard.widgets.filter((widget) => widget.config.id !== widgetId),\n };\n await dashboardService.updateOne(dashboardId, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === dashboardId ? updatedDashboard : dashboard));\n patchState(store, { dashboards: updatedDashboards });\n },\n async handleConfigChange(dashboard) {\n await dashboardService.updateOne(dashboard.id, dashboardLayoutToModel(dashboard));\n const updatedDashboards = store.dashboards().map((d) => (d.id === dashboard.id ? dashboard : d));\n patchState(store, {\n dashboards: updatedDashboards,\n currentDashboardId: dashboard.id,\n });\n settingService.scope(AXPPlatformScope.User).set(AXPHomeDashboardSetting.CurrentDashboard, dashboard.id);\n },\n async onGridChange(event) {\n if (!layoutThemeService.isDesktopDevice() || !store.selectedDashboard())\n return;\n const nodes = event.nodes.map(({ element, ...rest }) => rest);\n const currentDashboard = store.selectedDashboard();\n const updatedWidgets = currentDashboard.widgets.map((widget) => {\n const updatedNode = nodes.find((node) => node.id === widget.config.id);\n return updatedNode ? { ...widget, config: updatedNode } : widget;\n });\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n patchState(store, { dashboards: updatedDashboards });\n },\n async handlePopupConfiguration(widgetNode) {\n if (!store.selectedDashboard())\n return;\n try {\n const updatedNode = await dashboardPopup.handlePopupConfiguration(widgetNode);\n if (!updatedNode)\n return;\n const currentDashboard = store.selectedDashboard();\n const updatedWidgets = currentDashboard.widgets.map((widget) => widget.node?.name === widgetNode.name && widget.node?.path === widgetNode.path\n ? { ...widget, node: updatedNode }\n : widget);\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n patchState(store, { dashboards: updatedDashboards });\n }\n catch (error) {\n console.error('Error handling widget configuration:', error);\n }\n },\n async handleValueChanged(widgetNode, data) {\n if (!store.selectedDashboard())\n return;\n try {\n const currentDashboard = store.selectedDashboard();\n const updatedWidgets = currentDashboard.widgets.map((widget) => widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path\n ? { ...widget, node: { ...widget.node, defaultValue: data } }\n : widget);\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n patchState(store, { dashboards: updatedDashboards });\n }\n catch (error) {\n console.error('Error handling widget value change:', error);\n }\n },\n async handleOptionsChanged(widgetNode, data) {\n if (!store.selectedDashboard())\n return;\n try {\n const currentDashboard = store.selectedDashboard();\n const updatedWidgets = currentDashboard.widgets.map((widget) => widget.node && widget.node.name === widgetNode.name && widget.node.path === widgetNode.path\n ? {\n ...widget,\n node: {\n ...widget.node,\n options: { ...(widget.node.options || {}), ...data },\n },\n }\n : widget);\n const updatedDashboard = {\n ...currentDashboard,\n widgets: updatedWidgets,\n };\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n patchState(store, { dashboards: updatedDashboards });\n }\n catch (error) {\n console.error('Error handling widget options change:', error);\n }\n },\n setIsAdmin(isAdmin) {\n patchState(store, { isAdmin });\n },\n // Filter dashboards by scope\n filterDashboardsByScope(isAdmin) {\n const allDashboards = store.availableDashboards();\n const userId = sessionService.user?.id;\n const userRole = sessionService.user ? sessionService.user['role'] : undefined;\n if (!userId) {\n patchState(store, { dashboards: allDashboards });\n return;\n }\n const filteredDashboards = isAdmin\n ? allDashboards.filter((dashboard) => dashboard.scope === 'T')\n : allDashboards.filter((dashboard) => {\n const isUserDashboard = dashboard.scope === 'U' && dashboard.createdBy === userId;\n const hasRoleIds = dashboard.roleIds && Array.isArray(dashboard.roleIds) && dashboard.roleIds.length > 0;\n const isTenantDashboard = dashboard.scope === 'T';\n const hasUserRole = userRole && hasRoleIds && dashboard.roleIds?.includes(userRole);\n const isNotDeleted = dashboard.isDeleted !== true;\n const isTenantDashboardWithRole = isTenantDashboard && hasUserRole && isNotDeleted;\n return isUserDashboard || isTenantDashboardWithRole;\n });\n patchState(store, { dashboards: filteredDashboards });\n if (filteredDashboards.length > 0 && !filteredDashboards.some((d) => d.id === store.currentDashboardId())) {\n this.setCurrentDashboard(filteredDashboards[0].id);\n }\n },\n async toggleLockDashboard() {\n const currentDashboard = store.selectedDashboard();\n if (!currentDashboard)\n return;\n try {\n const isAdmin = store.isUserAdmin();\n const userId = sessionService.user?.id;\n const canToggle = (!isAdmin && currentDashboard.scope === 'U' && currentDashboard.createdBy === userId) ||\n (isAdmin && currentDashboard.scope === 'T');\n if (!canToggle) {\n console.warn('User does not have permission to toggle lock for this dashboard');\n return;\n }\n const newLockedState = !currentDashboard.locked;\n const updatedDashboard = {\n ...currentDashboard,\n locked: newLockedState,\n };\n await dashboardService.updateOne(updatedDashboard.id, dashboardLayoutToModel(updatedDashboard));\n const updatedDashboards = store\n .dashboards()\n .map((dashboard) => (dashboard.id === updatedDashboard.id ? updatedDashboard : dashboard));\n const baseOptions = { ...store.dashboardsOption() };\n patchState(store, { dashboards: updatedDashboards });\n const updatedOptions = {\n ...baseOptions,\n disableDrag: newLockedState,\n disableResize: newLockedState,\n };\n patchState(store, { dashboardsOption: updatedOptions });\n }\n catch (error) {\n console.error('Error toggling dashboard lock state:', error);\n }\n },\n isDashboardLocked() {\n const currentDashboard = store.selectedDashboard();\n return currentDashboard?.locked === true;\n },\n };\n}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1kYXNoYm9hcmQuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9ob21lLWRhc2hib2FyZC9kYXNoYm9hcmQtaG9tZS9ob21lLWRhc2hib2FyZC5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFpQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQXlCdkYsbUJBQW1CO0FBQ25CLE1BQU0sa0JBQWtCLEdBQUcsR0FBbUIsRUFBRSxDQUFDLENBQUM7SUFDaEQsVUFBVSxFQUFFLEVBQUU7SUFDZCxhQUFhLEVBQUUsRUFBRTtJQUNqQixrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLE9BQU8sRUFBRSxLQUFLO0lBQ2QsZ0JBQWdCLEVBQUU7UUFDaEIsS0FBSyxFQUFFLEtBQUs7UUFDWixVQUFVLEVBQUUsRUFBRTtRQUNkLEdBQUcsRUFBRSxDQUFDO1FBQ04sTUFBTSxFQUFFLENBQUM7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLGdCQUFnQixFQUFFO1lBQ2hCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQzNCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1lBQ3pCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO1NBQzFCO0tBQ0Y7SUFDRCxTQUFTLEVBQUUsS0FBSztDQUNqQixDQUFDLENBQUM7QUFFSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBb0MsRUFBc0IsRUFBRSxDQUFDLENBQUM7SUFDNUYsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRTtJQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7SUFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO0lBQzlCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUU7SUFDNUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO0lBQ3RCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztJQUMxQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07SUFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0lBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztJQUMxQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7SUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO0lBQzFCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztDQUNuQixDQUFDLENBQUM7QUFFSCxNQUFNLHNCQUFzQixHQUFHLENBQUMsTUFBMEIsRUFBaUMsRUFBRSxDQUFDLENBQUM7SUFDN0YsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO0lBQ2IsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLO0lBQ2xCLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztJQUNuQixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFO0lBQ3JDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztJQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87SUFDdkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO0lBQzNCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtJQUNyQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7SUFDM0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO0lBQzNCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztJQUMzQixTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVM7SUFDM0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO0NBQ3BCLENBQUMsQ0FBQztBQUVILHlCQUF5QjtBQUN6QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQzFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtBQUV0QiwyQkFBMkI7QUFDM0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFFckMsc0JBQXNCO0FBQ3RCLFlBQVksQ0FDVixDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUcsaUJBQWlCLEVBQUUsUUFBUSxDQUN6QixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksSUFBSSxDQUNsRztJQUNELFdBQVcsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVDLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDMUQsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRTtRQUNsQyxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUM3RyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU3QyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7WUFDMUMsT0FBTyxFQUFFLEdBQUcsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3BFLENBQUM7UUFDRCxJQUFJLFdBQVcsQ0FBQyxXQUFXLEtBQUssU0FBUyxJQUFJLFdBQVcsQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckYsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxHQUFHLFdBQVcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNwRSxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFFeEMsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUUsY0FBYyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3hGLE1BQU0sVUFBVSxHQUNkLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzdHLE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxVQUFVLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzRixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDdEUsT0FBTyxFQUFFLEdBQUcsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3BFLENBQUM7UUFFRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDLENBQUM7SUFDRixrQkFBa0IsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUE4QixFQUFFLEVBQUU7UUFDcEUsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7UUFDN0csSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ25DLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUFFLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUMvRSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbkQsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUUsY0FBYyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3hGLE1BQU0sVUFBVSxHQUNkLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzdHLE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxVQUFVLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzRixJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssR0FBRztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2hFLE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUM1RCxDQUFDLENBQUM7SUFDRixjQUFjLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBOEIsRUFBRSxFQUFFO1FBQ2hFLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLElBQUksQ0FBQyxnQkFBZ0I7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNwQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbEMsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUUsY0FBYyxDQUFDLElBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3hGLE1BQU0sVUFBVSxHQUNkLGdCQUFnQixDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzdHLE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxVQUFVLElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzRixPQUFPLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDO0lBQ3ZELENBQUMsQ0FBQztDQUNILENBQUMsQ0FDSDtBQUVELCtCQUErQjtBQUMvQixXQUFXLENBQ1QsQ0FDRSxLQUFLLEVBQ0wsY0FBYyxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxFQUNqRCxhQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUN2QyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFDakQsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEVBQ3BELGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxFQUM5QyxjQUFjLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQzFDLGNBQWMsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFDMUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLEVBQ2xELEVBQUU7SUFDRix5REFBeUQ7SUFDekQsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNWLGNBQWMsRUFBRSxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0lBRUgsK0JBQStCO0lBQy9CLEtBQUssVUFBVSxjQUFjO1FBQzNCLElBQUksQ0FBQztZQUNILFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN2QyxNQUFNLE1BQU0sR0FBRyxNQUFNLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDcEUsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0MsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxjQUFjO2lCQUM1QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO2lCQUM1QixHQUFHLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUVqRCxJQUFJLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sZUFBZSxHQUFHLGtCQUFrQixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssa0JBQWtCLENBQUMsQ0FBQztnQkFDbEcscUJBQXFCLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBRSxrQkFBNkIsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFFNUYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNyQixjQUFjO3lCQUNYLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7eUJBQzVCLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2dCQUMxRSxDQUFDO1lBQ0gsQ0FBQztZQUVELFVBQVUsQ0FBQyxLQUFLLEVBQUU7Z0JBQ2hCLGFBQWEsRUFBRSxVQUFVO2dCQUN6QixVQUFVLEVBQUUsVUFBVTtnQkFDdEIsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLGtCQUFrQixFQUFFLHFCQUFxQjthQUMxQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEQsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLG1CQUFtQixDQUFDLFdBQW1CO1lBQ3JDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELGNBQWMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7UUFFRCxLQUFLLENBQUMsWUFBWTtZQUNoQixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxjQUFjLENBQUMsdUJBQXVCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRixJQUFJLENBQUMsWUFBWTtvQkFBRSxPQUFPO2dCQUUxQixNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxxQkFBcUIsR0FBdUI7b0JBQ2hELEdBQUcsWUFBWTtvQkFDZixTQUFTLEVBQUUsTUFBTTtvQkFDakIsU0FBUyxFQUFFLEdBQUc7b0JBQ2QsU0FBUyxFQUFFLE1BQU07b0JBQ2pCLFNBQVMsRUFBRSxHQUFHO29CQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRztvQkFDdEMsT0FBTyxFQUFFLEVBQUU7aUJBQ1osQ0FBQztnQkFFRixNQUFNLGNBQWMsR0FBRyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUM1RSxxQkFBcUIsQ0FBQyxFQUFFLEdBQUcsa0JBQWtCLENBQUM7Z0JBRTlDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLHFCQUFxQixDQUFDLENBQUM7Z0JBQ3JGLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2dCQUV6RSxVQUFVLENBQUMsS0FBSyxFQUFFO29CQUNoQixhQUFhLEVBQUUsb0JBQW9CO29CQUNuQyxVQUFVLEVBQUUsaUJBQWlCO29CQUM3QixrQkFBa0IsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO2lCQUM3QyxDQUFDLENBQUM7Z0JBRUgsY0FBYztxQkFDWCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO3FCQUM1QixHQUFHLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0UsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxDQUFDO1FBQ0gsQ0FBQztRQUVELEtBQUssQ0FBQyxhQUFhO1lBQ2pCLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGdCQUFnQjtnQkFBRSxPQUFPO1lBRTlCLElBQUksQ0FBQztnQkFDSCxNQUFNLGVBQWUsR0FBRyxNQUFNLGNBQWMsQ0FBQyx1QkFBdUIsQ0FDbEU7b0JBQ0UsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7b0JBQzdCLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxXQUFXO29CQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsT0FBTztvQkFDakMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7b0JBQzdCLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNO29CQUMvQixTQUFTLEVBQUUsZ0JBQWdCLENBQUMsU0FBUztpQkFDdEMsRUFDRCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQ3BCLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGVBQWU7b0JBQUUsT0FBTztnQkFFN0IsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sZ0JBQWdCLEdBQXVCO29CQUMzQyxHQUFHLGdCQUFnQjtvQkFDbkIsR0FBRyxlQUFlO29CQUNsQixTQUFTLEVBQUUsTUFBTTtvQkFDakIsU0FBUyxFQUFFLEdBQUc7aUJBQ2YsQ0FBQztnQkFFRixNQUFNLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO2dCQUVoRyxNQUFNLG9CQUFvQixHQUFHLEtBQUs7cUJBQy9CLG1CQUFtQixFQUFFO3FCQUNyQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyRSxNQUFNLGlCQUFpQixHQUFHLEtBQUs7cUJBQzVCLFVBQVUsRUFBRTtxQkFDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUVyRSwwREFBMEQ7Z0JBQzFELElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUN4RCxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztvQkFDcEQsTUFBTSxjQUFjLEdBQUc7d0JBQ3JCLEdBQUcsV0FBVzt3QkFDZCxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLElBQUk7d0JBQzdDLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssSUFBSTtxQkFDaEQsQ0FBQztvQkFFRixVQUFVLENBQUMsS0FBSyxFQUFFO3dCQUNoQixhQUFhLEVBQUUsb0JBQW9CO3dCQUNuQyxVQUFVLEVBQUUsaUJBQWlCO3dCQUM3QixnQkFBZ0IsRUFBRSxjQUFjO3FCQUNqQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFVBQVUsQ0FBQyxLQUFLLEVBQUU7d0JBQ2hCLGFBQWEsRUFBRSxvQkFBb0I7d0JBQ25DLFVBQVUsRUFBRSxpQkFBaUI7cUJBQzlCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQztRQUVELEtBQUssQ0FBQyxTQUFTO1lBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7Z0JBQy9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztnQkFDOUMsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7b0JBQ25ELE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQztpQkFDN0MsQ0FBQyxDQUFDO2dCQUVILE1BQU0sZUFBZSxHQUFJLE9BQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxFQUFFO29CQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ3BCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7d0JBQ3JELE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsQ0FBQztvQkFDL0MsQ0FBQztvQkFDRCxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQzNDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUMzQyxPQUFPLE1BQU0sQ0FBQztnQkFDaEIsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsTUFBTSxnQkFBZ0IsR0FBNkIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDbEYsTUFBTSxFQUFFO3dCQUNOLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQzt3QkFDN0MsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEtBQUssSUFBSSxDQUFDO3dCQUMzQyxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUzt3QkFDOUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFFBQVE7d0JBQzVDLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTO3dCQUM5QyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUTt3QkFDNUMsRUFBRSxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRTtxQkFDNUI7b0JBQ0QsSUFBSSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUU7aUJBQ3ZDLENBQUMsQ0FBQyxDQUFDO2dCQUVKLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFHLENBQUM7Z0JBQ3BELE1BQU0sZ0JBQWdCLEdBQUc7b0JBQ3ZCLEdBQUcsZ0JBQWdCO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLGdCQUFnQixDQUFDO2lCQUM1RCxDQUFDO2dCQUVGLE1BQU0sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hHLE1BQU0saUJBQWlCLEdBQUcsS0FBSztxQkFDNUIsVUFBVSxFQUFFO3FCQUNaLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXJFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLEVBQVU7WUFDOUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLENBQUMsQ0FBQztnQkFDckQsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxhQUFhLENBQUMsT0FBTyxDQUM5QyxNQUFNLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUMzRCxNQUFNLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxFQUNsRSxRQUFRLEVBQ1IsWUFBWSxDQUNiLENBQUM7Z0JBRUYsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3hCLE1BQU0sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDcEcsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUN4RixJQUFJLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUV2RCxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO3dCQUN0QyxxQkFBcUI7NEJBQ25CLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFDM0YsSUFBSSxxQkFBcUIsRUFBRSxDQUFDOzRCQUMxQixjQUFjO2lDQUNYLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7aUNBQzVCLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO3dCQUMxRSxDQUFDO29CQUNILENBQUM7b0JBRUQsVUFBVSxDQUFDLEtBQUssRUFBRTt3QkFDaEIsYUFBYSxFQUFFLG9CQUFvQjt3QkFDbkMsVUFBVSxFQUFFLGlCQUFpQjt3QkFDN0Isa0JBQWtCLEVBQUUscUJBQXFCO3FCQUMxQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7WUFDdEQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFdBQVcsQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxnQkFBZ0I7Z0JBQUUsT0FBTztZQUU5QixNQUFNLGdCQUFnQixHQUFHO2dCQUN2QixHQUFHLGdCQUFnQjtnQkFDbkIsT0FBTyxFQUFFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQzthQUNwRixDQUFDO1lBRUYsTUFBTSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUN4RixNQUFNLGlCQUFpQixHQUFHLEtBQUs7aUJBQzVCLFVBQVUsRUFBRTtpQkFDWixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBRXJGLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsU0FBNkI7WUFDcEQsTUFBTSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqRyxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNoQixVQUFVLEVBQUUsaUJBQWlCO2dCQUM3QixrQkFBa0IsRUFBRSxTQUFTLENBQUMsRUFBRTthQUNqQyxDQUFDLENBQUM7WUFFSCxjQUFjLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUcsQ0FBQztRQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBd0I7WUFDekMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUFFLE9BQU87WUFFaEYsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5RCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRyxDQUFDO1lBQ3BELE1BQU0sY0FBYyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDN0QsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2RSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztZQUVILE1BQU0sZ0JBQWdCLEdBQUc7Z0JBQ3ZCLEdBQUcsZ0JBQWdCO2dCQUNuQixPQUFPLEVBQUUsY0FBYzthQUN4QixDQUFDO1lBRUYsTUFBTSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUNoRyxNQUFNLGlCQUFpQixHQUFHLEtBQUs7aUJBQzVCLFVBQVUsRUFBRTtpQkFDWixHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBRTdGLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxLQUFLLENBQUMsd0JBQXdCLENBQUMsVUFBeUI7WUFDdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtnQkFBRSxPQUFPO1lBRXZDLElBQUksQ0FBQztnQkFDSCxNQUFNLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLFdBQVc7b0JBQUUsT0FBTztnQkFFekIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUcsQ0FBQztnQkFDcEQsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzdELE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUk7b0JBQzVFLENBQUMsQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7b0JBQ2xDLENBQUMsQ0FBQyxNQUFNLENBQ1gsQ0FBQztnQkFFRixNQUFNLGdCQUFnQixHQUFHO29CQUN2QixHQUFHLGdCQUFnQjtvQkFDbkIsT0FBTyxFQUFFLGNBQWM7aUJBQ3hCLENBQUM7Z0JBRUYsTUFBTSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDaEcsTUFBTSxpQkFBaUIsR0FBRyxLQUFLO3FCQUM1QixVQUFVLEVBQUU7cUJBQ1osR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFFN0YsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvRCxDQUFDO1FBQ0gsQ0FBQztRQUVELEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxVQUF5QixFQUFFLElBQWE7WUFDL0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtnQkFBRSxPQUFPO1lBRXZDLElBQUksQ0FBQztnQkFDSCxNQUFNLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsRUFBRyxDQUFDO2dCQUNwRCxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDN0QsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJO29CQUN6RixDQUFDLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUM3RCxDQUFDLENBQUMsTUFBTSxDQUNYLENBQUM7Z0JBRUYsTUFBTSxnQkFBZ0IsR0FBRztvQkFDdkIsR0FBRyxnQkFBZ0I7b0JBQ25CLE9BQU8sRUFBRSxjQUFjO2lCQUN4QixDQUFDO2dCQUVGLE1BQU0sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hHLE1BQU0saUJBQWlCLEdBQUcsS0FBSztxQkFDNUIsVUFBVSxFQUFFO3FCQUNaLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBRTdGLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDOUQsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsb0JBQW9CLENBQUMsVUFBeUIsRUFBRSxJQUFhO1lBQ2pFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUU7Z0JBQUUsT0FBTztZQUV2QyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUcsQ0FBQztnQkFDcEQsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzdELE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSTtvQkFDekYsQ0FBQyxDQUFDO3dCQUNFLEdBQUcsTUFBTTt3QkFDVCxJQUFJLEVBQUU7NEJBQ0osR0FBRyxNQUFNLENBQUMsSUFBSTs0QkFDZCxPQUFPLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBSSxJQUFlLEVBQUU7eUJBQ2pFO3FCQUNGO29CQUNILENBQUMsQ0FBQyxNQUFNLENBQ1gsQ0FBQztnQkFFRixNQUFNLGdCQUFnQixHQUFHO29CQUN2QixHQUFHLGdCQUFnQjtvQkFDbkIsT0FBTyxFQUFFLGNBQWM7aUJBQ3hCLENBQUM7Z0JBRUYsTUFBTSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDaEcsTUFBTSxpQkFBaUIsR0FBRyxLQUFLO3FCQUM1QixVQUFVLEVBQUU7cUJBQ1osR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFFN0YsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNoRSxDQUFDO1FBQ0gsQ0FBQztRQUVELFVBQVUsQ0FBQyxPQUFnQjtZQUN6QixVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsNkJBQTZCO1FBQzdCLHVCQUF1QixDQUFDLE9BQWdCO1lBQ3RDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ2xELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLGNBQWMsQ0FBQyxJQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUV4RixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1osVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxPQUFPO1lBQ1QsQ0FBQztZQUVELE1BQU0sa0JBQWtCLEdBQUcsT0FBTztnQkFDaEMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDO2dCQUM5RCxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUNqQyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsS0FBSyxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQztvQkFDbEYsTUFBTSxVQUFVLEdBQ2QsU0FBUyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBQ3hGLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUM7b0JBQ2xELE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxVQUFVLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3BGLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDO29CQUNsRCxNQUFNLHlCQUF5QixHQUFHLGlCQUFpQixJQUFJLFdBQVcsSUFBSSxZQUFZLENBQUM7b0JBRW5GLE9BQU8sZUFBZSxJQUFJLHlCQUF5QixDQUFDO2dCQUN0RCxDQUFDLENBQUMsQ0FBQztZQUVQLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1lBRXRELElBQUksa0JBQWtCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRCxDQUFDO1FBQ0gsQ0FBQztRQUVELEtBQUssQ0FBQyxtQkFBbUI7WUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsZ0JBQWdCO2dCQUFFLE9BQU87WUFFOUIsSUFBSSxDQUFDO2dCQUNILE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sU0FBUyxHQUNiLENBQUMsQ0FBQyxPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxLQUFLLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDO29CQUNyRixDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBRTlDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDZixPQUFPLENBQUMsSUFBSSxDQUFDLGlFQUFpRSxDQUFDLENBQUM7b0JBQ2hGLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxNQUFNLGNBQWMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztnQkFDaEQsTUFBTSxnQkFBZ0IsR0FBRztvQkFDdkIsR0FBRyxnQkFBZ0I7b0JBQ25CLE1BQU0sRUFBRSxjQUFjO2lCQUN2QixDQUFDO2dCQUVGLE1BQU0sZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hHLE1BQU0saUJBQWlCLEdBQUcsS0FBSztxQkFDNUIsVUFBVSxFQUFFO3FCQUNaLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBRTdGLE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO2dCQUNwRCxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztnQkFFckQsTUFBTSxjQUFjLEdBQUc7b0JBQ3JCLEdBQUcsV0FBVztvQkFDZCxXQUFXLEVBQUUsY0FBYztvQkFDM0IsYUFBYSxFQUFFLGNBQWM7aUJBQzlCLENBQUM7Z0JBRUYsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMvRCxDQUFDO1FBQ0gsQ0FBQztRQUVELGlCQUFpQjtZQUNmLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbkQsT0FBTyxnQkFBZ0IsRUFBRSxNQUFNLEtBQUssSUFBSSxDQUFDO1FBQzNDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUNGLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhHcmlkTGF5b3V0RXZlbnQsIEFYR3JpZExheW91dE9wdGlvbnMgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZ3JpZC1sYXlvdXQtYnVpbGRlcic7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBTZXNzaW9uU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vYXV0aCc7XG5pbXBvcnQgeyBBWFBTZXR0aW5nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUERhdGFHZW5lcmF0b3IsIEFYUFBsYXRmb3JtU2NvcGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0R3JvdXBFbnVtLCBBWFBXaWRnZXROb2RlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBWFBXaWRnZXRQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvZGVzaWduZXInO1xuaW1wb3J0IHsgQVhQTGF5b3V0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS90aGVtZXMvc2hhcmVkJztcbmltcG9ydCB7IGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGF0Y2hTdGF0ZSwgc2lnbmFsU3RvcmUsIHdpdGhDb21wdXRlZCwgd2l0aE1ldGhvZHMsIHdpdGhTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgQVhNRGFzaGJvYXJkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VudGl0aWVzL2Rhc2hib2FyZC9kYXNoYm9hcmQuc2VydmljZSc7XG5pbXBvcnQgeyBBWE1Db21tb25EYXNoYm9hcmRFbnRpdHlNb2RlbCB9IGZyb20gJy4uLy4uLy4uL2VudGl0aWVzL2Rhc2hib2FyZC9kYXNoYm9hcmQudHlwZXMnO1xuaW1wb3J0IHsgQVhQSG9tZURhc2hib2FyZFNldHRpbmcgfSBmcm9tICcuLi8uLi8uLi9zZXR0aW5ncy5rZXlzJztcbmltcG9ydCB7IEFYTURhc2hib2FyZFBvcHVwU2VydmljZSB9IGZyb20gJy4uL2Rhc2hib2FyZC1wb3B1cHMvZGFzaGJvYXJkLXBvcHVwLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhNRGFzaGJvYXJkTGF5b3V0LCBBWE1EYXNoYm9hcmRXaWRnZXREYXRhIH0gZnJvbSAnLi9ob21lLWRhc2hib2FyZC50eXBlJztcblxuLy8gVHlwZXNcbmludGVyZmFjZSBEYXNoYm9hcmRTdGF0ZSB7XG4gIGRhc2hib2FyZHM6IEFYTURhc2hib2FyZExheW91dFtdO1xuICBhbGxEYXNoYm9hcmRzOiBBWE1EYXNoYm9hcmRMYXlvdXRbXTtcbiAgY3VycmVudERhc2hib2FyZElkOiBzdHJpbmcgfCBudWxsO1xuICBpc0FkbWluOiBib29sZWFuO1xuICBkYXNoYm9hcmRzT3B0aW9uOiBBWEdyaWRMYXlvdXRPcHRpb25zO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBXaWRnZXRDb25maWcge1xuICBpZDogc3RyaW5nO1xuICBoZWlnaHQ/OiBudW1iZXI7XG4gIHdpZHRoPzogbnVtYmVyO1xuICBtaW5IZWlnaHQ/OiBudW1iZXI7XG4gIG1pbldpZHRoPzogbnVtYmVyO1xuICBtYXhIZWlnaHQ/OiBudW1iZXI7XG4gIG1heFdpZHRoPzogbnVtYmVyO1xufVxuXG50eXBlIERhc2hib2FyZFNjb3BlID0gJ1UnIHwgJ1QnO1xuXG4vLyBIZWxwZXIgZnVuY3Rpb25zXG5jb25zdCBjcmVhdGVJbml0aWFsU3RhdGUgPSAoKTogRGFzaGJvYXJkU3RhdGUgPT4gKHtcbiAgZGFzaGJvYXJkczogW10sXG4gIGFsbERhc2hib2FyZHM6IFtdLFxuICBjdXJyZW50RGFzaGJvYXJkSWQ6IG51bGwsXG4gIGlzQWRtaW46IGZhbHNlLFxuICBkYXNoYm9hcmRzT3B0aW9uOiB7XG4gICAgZmxvYXQ6IGZhbHNlLFxuICAgIGNlbGxIZWlnaHQ6IDc1LFxuICAgIGdhcDogNSxcbiAgICBtaW5Sb3c6IDksXG4gICAgY29sdW1uOiAxMixcbiAgICByZXNwb25zaXZlTGF5b3V0OiBbXG4gICAgICB7IGNvbHVtbjogMTIsIHdpZHRoOiAyMDQ4IH0sXG4gICAgICB7IGNvbHVtbjogNiwgd2lkdGg6IDc2OCB9LFxuICAgICAgeyBjb2x1bW46IDEsIHdpZHRoOiA0ODAgfSxcbiAgICBdLFxuICB9LFxuICBpc0xvYWRpbmc6IGZhbHNlLFxufSk7XG5cbmNvbnN0IG1vZGVsVG9EYXNoYm9hcmRMYXlvdXQgPSAobW9kZWw6IEFYTUNvbW1vbkRhc2hib2FyZEVudGl0eU1vZGVsKTogQVhNRGFzaGJvYXJkTGF5b3V0ID0+ICh7XG4gIGlkOiBtb2RlbC5pZCB8fCAnJyxcbiAgdGl0bGU6IG1vZGVsLnRpdGxlLFxuICBkZXNjcmlwdGlvbjogbW9kZWwuZGVzY3JpcHRpb24sXG4gIHdpZGdldHM6IG1vZGVsLndpZGdldHMgfHwgW10sXG4gIHJvbGVJZHM6IG1vZGVsLnJvbGVJZHMsXG4gIGlzRGVsZXRlZDogbW9kZWwuaXNEZWxldGVkLFxuICBsb2NrZWQ6IG1vZGVsLmxvY2tlZCxcbiAgY3JlYXRlZEF0OiBtb2RlbC5jcmVhdGVkQXQsXG4gIHVwZGF0ZWRBdDogbW9kZWwudXBkYXRlZEF0LFxuICBjcmVhdGVkQnk6IG1vZGVsLmNyZWF0ZWRCeSxcbiAgdXBkYXRlZEJ5OiBtb2RlbC51cGRhdGVkQnksXG4gIHNjb3BlOiBtb2RlbC5zY29wZSxcbn0pO1xuXG5jb25zdCBkYXNoYm9hcmRMYXlvdXRUb01vZGVsID0gKGxheW91dDogQVhNRGFzaGJvYXJkTGF5b3V0KTogQVhNQ29tbW9uRGFzaGJvYXJkRW50aXR5TW9kZWwgPT4gKHtcbiAgaWQ6IGxheW91dC5pZCxcbiAgbmFtZTogbGF5b3V0LnRpdGxlLFxuICB0aXRsZTogbGF5b3V0LnRpdGxlLFxuICBkZXNjcmlwdGlvbjogbGF5b3V0LmRlc2NyaXB0aW9uIHx8ICcnLFxuICB3aWRnZXRzOiBsYXlvdXQud2lkZ2V0cyxcbiAgcm9sZUlkczogbGF5b3V0LnJvbGVJZHMsXG4gIGlzRGVsZXRlZDogbGF5b3V0LmlzRGVsZXRlZCxcbiAgbG9ja2VkOiBsYXlvdXQubG9ja2VkLFxuICBjcmVhdGVkQXQ6IGxheW91dC5jcmVhdGVkQXQsXG4gIHVwZGF0ZWRBdDogbGF5b3V0LnVwZGF0ZWRBdCxcbiAgY3JlYXRlZEJ5OiBsYXlvdXQuY3JlYXRlZEJ5LFxuICB1cGRhdGVkQnk6IGxheW91dC51cGRhdGVkQnksXG4gIHNjb3BlOiBsYXlvdXQuc2NvcGUsXG59KTtcblxuLy8gQ3JlYXRlIHRoZSBTaWduYWxTdG9yZVxuZXhwb3J0IGNvbnN0IEFYTURhc2hib2FyZFN0b3JlID0gc2lnbmFsU3RvcmUoXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0sXG5cbiAgLy8gSW5pdGlhbCBTdGF0ZSBEZWZpbml0aW9uXG4gIHdpdGhTdGF0ZSgoKSA9PiBjcmVhdGVJbml0aWFsU3RhdGUoKSksXG5cbiAgLy8gQ29tcHV0ZWQgUHJvcGVydGllc1xuICB3aXRoQ29tcHV0ZWQoXG4gICAgKHN0YXRlLCBzZXNzaW9uU2VydmljZSA9IGluamVjdChBWFBTZXNzaW9uU2VydmljZSksIGxheW91dFRoZW1lU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRUaGVtZVNlcnZpY2UpKSA9PiAoe1xuICAgICAgc2VsZWN0ZWREYXNoYm9hcmQ6IGNvbXB1dGVkKFxuICAgICAgICAoKSA9PiBzdGF0ZS5kYXNoYm9hcmRzKCkuZmluZCgoZGFzaGJvYXJkKSA9PiBkYXNoYm9hcmQuaWQgPT09IHN0YXRlLmN1cnJlbnREYXNoYm9hcmRJZCgpKSB8fCBudWxsLFxuICAgICAgKSxcbiAgICAgIGlzVXNlckFkbWluOiBjb21wdXRlZCgoKSA9PiBzdGF0ZS5pc0FkbWluKCkpLFxuICAgICAgYXZhaWxhYmxlRGFzaGJvYXJkczogY29tcHV0ZWQoKCkgPT4gc3RhdGUuYWxsRGFzaGJvYXJkcygpKSxcbiAgICAgIGN1cnJlbnRMYXlvdXRPcHRpb25zOiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXNoYm9hcmQgPSBzdGF0ZS5kYXNoYm9hcmRzKCkuZmluZCgoZGFzaGJvYXJkKSA9PiBkYXNoYm9hcmQuaWQgPT09IHN0YXRlLmN1cnJlbnREYXNoYm9hcmRJZCgpKTtcbiAgICAgICAgY29uc3QgYmFzZU9wdGlvbnMgPSBzdGF0ZS5kYXNoYm9hcmRzT3B0aW9uKCk7XG5cbiAgICAgICAgaWYgKCFjdXJyZW50RGFzaGJvYXJkKSByZXR1cm4gYmFzZU9wdGlvbnM7XG4gICAgICAgIGlmICghbGF5b3V0VGhlbWVTZXJ2aWNlLmlzRGVza3RvcERldmljZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uYmFzZU9wdGlvbnMsIGRpc2FibGVEcmFnOiB0cnVlLCBkaXNhYmxlUmVzaXplOiB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJhc2VPcHRpb25zLmRpc2FibGVEcmFnICE9PSB1bmRlZmluZWQgJiYgYmFzZU9wdGlvbnMuZGlzYWJsZVJlc2l6ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2VPcHRpb25zO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50RGFzaGJvYXJkLmxvY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHJldHVybiB7IC4uLmJhc2VPcHRpb25zLCBkaXNhYmxlRHJhZzogdHJ1ZSwgZGlzYWJsZVJlc2l6ZTogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5pc0FkbWluKCkpIHJldHVybiBiYXNlT3B0aW9ucztcblxuICAgICAgICBjb25zdCB1c2VyUm9sZSA9IHNlc3Npb25TZXJ2aWNlLnVzZXIgPyAoc2Vzc2lvblNlcnZpY2UudXNlciBhcyBhbnkpWydyb2xlJ10gOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGhhc1JvbGVJZHMgPVxuICAgICAgICAgIGN1cnJlbnREYXNoYm9hcmQucm9sZUlkcyAmJiBBcnJheS5pc0FycmF5KGN1cnJlbnREYXNoYm9hcmQucm9sZUlkcykgJiYgY3VycmVudERhc2hib2FyZC5yb2xlSWRzLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IGhhc1VzZXJSb2xlID0gdXNlclJvbGUgJiYgaGFzUm9sZUlkcyAmJiBjdXJyZW50RGFzaGJvYXJkLnJvbGVJZHM/LmluY2x1ZGVzKHVzZXJSb2xlKTtcblxuICAgICAgICBpZiAoIXN0YXRlLmlzQWRtaW4oKSAmJiBoYXNVc2VyUm9sZSAmJiBjdXJyZW50RGFzaGJvYXJkLnNjb3BlID09PSAnVCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5iYXNlT3B0aW9ucywgZGlzYWJsZURyYWc6IHRydWUsIGRpc2FibGVSZXNpemU6IHRydWUgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBiYXNlT3B0aW9ucztcbiAgICAgIH0pLFxuICAgICAgY2FuQ29uZmlndXJlV2lkZ2V0OiBjb21wdXRlZCgoKSA9PiAod2lkZ2V0OiBBWE1EYXNoYm9hcmRXaWRnZXREYXRhKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXNoYm9hcmQgPSBzdGF0ZS5kYXNoYm9hcmRzKCkuZmluZCgoZGFzaGJvYXJkKSA9PiBkYXNoYm9hcmQuaWQgPT09IHN0YXRlLmN1cnJlbnREYXNoYm9hcmRJZCgpKTtcbiAgICAgICAgaWYgKCFjdXJyZW50RGFzaGJvYXJkKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHN0YXRlLmlzQWRtaW4oKSkgcmV0dXJuIHdpZGdldC5ub2RlPy5vcHRpb25zPy5bJ2hhc0NvbmZpZ3VyYXRpb24nXSA/PyB0cnVlO1xuICAgICAgICBpZiAoY3VycmVudERhc2hib2FyZC5sb2NrZWQgPT09IHRydWUpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCB1c2VyUm9sZSA9IHNlc3Npb25TZXJ2aWNlLnVzZXIgPyAoc2Vzc2lvblNlcnZpY2UudXNlciBhcyBhbnkpWydyb2xlJ10gOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGhhc1JvbGVJZHMgPVxuICAgICAgICAgIGN1cnJlbnREYXNoYm9hcmQucm9sZUlkcyAmJiBBcnJheS5pc0FycmF5KGN1cnJlbnREYXNoYm9hcmQucm9sZUlkcykgJiYgY3VycmVudERhc2hib2FyZC5yb2xlSWRzLmxlbmd0aCA+IDA7XG4gICAgICAgIGNvbnN0IGhhc1VzZXJSb2xlID0gdXNlclJvbGUgJiYgaGFzUm9sZUlkcyAmJiBjdXJyZW50RGFzaGJvYXJkLnJvbGVJZHM/LmluY2x1ZGVzKHVzZXJSb2xlKTtcblxuICAgICAgICBpZiAoaGFzVXNlclJvbGUgJiYgY3VycmVudERhc2hib2FyZC5zY29wZSA9PT0gJ1QnKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB3aWRnZXQubm9kZT8ub3B0aW9ucz8uWydoYXNDb25maWd1cmF0aW9uJ10gPz8gdHJ1ZTtcbiAgICAgIH0pLFxuICAgICAgaXNXaWRnZXRMb2NrZWQ6IGNvbXB1dGVkKCgpID0+ICh3aWRnZXQ6IEFYTURhc2hib2FyZFdpZGdldERhdGEpID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudERhc2hib2FyZCA9IHN0YXRlLmRhc2hib2FyZHMoKS5maW5kKChkYXNoYm9hcmQpID0+IGRhc2hib2FyZC5pZCA9PT0gc3RhdGUuY3VycmVudERhc2hib2FyZElkKCkpO1xuICAgICAgICBpZiAoIWN1cnJlbnREYXNoYm9hcmQpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGN1cnJlbnREYXNoYm9hcmQubG9ja2VkID09PSB0cnVlKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHN0YXRlLmlzQWRtaW4oKSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGNvbnN0IHVzZXJSb2xlID0gc2Vzc2lvblNlcnZpY2UudXNlciA/IChzZXNzaW9uU2VydmljZS51c2VyIGFzIGFueSlbJ3JvbGUnXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgaGFzUm9sZUlkcyA9XG4gICAgICAgICAgY3VycmVudERhc2hib2FyZC5yb2xlSWRzICYmIEFycmF5LmlzQXJyYXkoY3VycmVudERhc2hib2FyZC5yb2xlSWRzKSAmJiBjdXJyZW50RGFzaGJvYXJkLnJvbGVJZHMubGVuZ3RoID4gMDtcbiAgICAgICAgY29uc3QgaGFzVXNlclJvbGUgPSB1c2VyUm9sZSAmJiBoYXNSb2xlSWRzICYmIGN1cnJlbnREYXNoYm9hcmQucm9sZUlkcz8uaW5jbHVkZXModXNlclJvbGUpO1xuXG4gICAgICAgIHJldHVybiBoYXNVc2VyUm9sZSAmJiBjdXJyZW50RGFzaGJvYXJkLnNjb3BlID09PSAnVCc7XG4gICAgICB9KSxcbiAgICB9KSxcbiAgKSxcblxuICAvLyBNZXRob2RzIGZvciBTdGF0ZSBNYW5hZ2VtZW50XG4gIHdpdGhNZXRob2RzKFxuICAgIChcbiAgICAgIHN0b3JlLFxuICAgICAgZGFzaGJvYXJkUG9wdXAgPSBpbmplY3QoQVhNRGFzaGJvYXJkUG9wdXBTZXJ2aWNlKSxcbiAgICAgIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoQVhEaWFsb2dTZXJ2aWNlKSxcbiAgICAgIHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSksXG4gICAgICB3aWRnZXRQaWNrZXJTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldFBpY2tlclNlcnZpY2UpLFxuICAgICAgZGFzaGJvYXJkU2VydmljZSA9IGluamVjdChBWE1EYXNoYm9hcmRTZXJ2aWNlKSxcbiAgICAgIHNldHRpbmdTZXJ2aWNlID0gaW5qZWN0KEFYUFNldHRpbmdTZXJ2aWNlKSxcbiAgICAgIHNlc3Npb25TZXJ2aWNlID0gaW5qZWN0KEFYUFNlc3Npb25TZXJ2aWNlKSxcbiAgICAgIGxheW91dFRoZW1lU2VydmljZSA9IGluamVjdChBWFBMYXlvdXRUaGVtZVNlcnZpY2UpLFxuICAgICkgPT4ge1xuICAgICAgLy8gTG9hZCBkYXNoYm9hcmRzIGZyb20gc2VydmljZSAtIHJ1bnMgb24gaW5pdCB2aWEgZWZmZWN0XG4gICAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgICBsb2FkRGFzaGJvYXJkcygpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIExvYWQgZGFzaGJvYXJkcyBmcm9tIHNlcnZpY2VcbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGxvYWREYXNoYm9hcmRzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgaXNMb2FkaW5nOiB0cnVlIH0pO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRhc2hib2FyZFNlcnZpY2UucXVlcnkoeyBza2lwOiAwLCB0YWtlOiAxMDAgfSk7XG4gICAgICAgICAgY29uc3QgZGFzaGJvYXJkTW9kZWxzID0gcmVzdWx0Lml0ZW1zIHx8IFtdO1xuICAgICAgICAgIGNvbnN0IGRhc2hib2FyZHMgPSBkYXNoYm9hcmRNb2RlbHMubWFwKG1vZGVsVG9EYXNoYm9hcmRMYXlvdXQpO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXNoYm9hcmRJZCA9IGF3YWl0IHNldHRpbmdTZXJ2aWNlXG4gICAgICAgICAgICAuc2NvcGUoQVhQUGxhdGZvcm1TY29wZS5Vc2VyKVxuICAgICAgICAgICAgLmdldChBWFBIb21lRGFzaGJvYXJkU2V0dGluZy5DdXJyZW50RGFzaGJvYXJkKTtcblxuICAgICAgICAgIGxldCBuZXdDdXJyZW50RGFzaGJvYXJkSWQgPSBudWxsO1xuICAgICAgICAgIGlmIChkYXNoYm9hcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhc2hib2FyZEV4aXN0cyA9IGN1cnJlbnREYXNoYm9hcmRJZCAmJiBkYXNoYm9hcmRzLnNvbWUoKGQpID0+IGQuaWQgPT09IGN1cnJlbnREYXNoYm9hcmRJZCk7XG4gICAgICAgICAgICBuZXdDdXJyZW50RGFzaGJvYXJkSWQgPSBkYXNoYm9hcmRFeGlzdHMgPyAoY3VycmVudERhc2hib2FyZElkIGFzIHN0cmluZykgOiBkYXNoYm9hcmRzWzBdLmlkO1xuXG4gICAgICAgICAgICBpZiAoIWRhc2hib2FyZEV4aXN0cykge1xuICAgICAgICAgICAgICBzZXR0aW5nU2VydmljZVxuICAgICAgICAgICAgICAgIC5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpXG4gICAgICAgICAgICAgICAgLnNldChBWFBIb21lRGFzaGJvYXJkU2V0dGluZy5DdXJyZW50RGFzaGJvYXJkLCBuZXdDdXJyZW50RGFzaGJvYXJkSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgIGFsbERhc2hib2FyZHM6IGRhc2hib2FyZHMsXG4gICAgICAgICAgICBkYXNoYm9hcmRzOiBkYXNoYm9hcmRzLFxuICAgICAgICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGN1cnJlbnREYXNoYm9hcmRJZDogbmV3Q3VycmVudERhc2hib2FyZElkLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgZGFzaGJvYXJkczonLCBlcnJvcik7XG4gICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBpc0xvYWRpbmc6IGZhbHNlIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNldEN1cnJlbnREYXNoYm9hcmQoZGFzaGJvYXJkSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgY3VycmVudERhc2hib2FyZElkOiBkYXNoYm9hcmRJZCB9KTtcbiAgICAgICAgICBzZXR0aW5nU2VydmljZS5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpLnNldChBWFBIb21lRGFzaGJvYXJkU2V0dGluZy5DdXJyZW50RGFzaGJvYXJkLCBkYXNoYm9hcmRJZCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgYWRkRGFzaGJvYXJkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXNoYm9hcmQgPSBhd2FpdCBkYXNoYm9hcmRQb3B1cC5nZW5lcmF0ZURhc2hib2FyZExheW91dCh7fSwgc3RvcmUuaXNVc2VyQWRtaW4oKSk7XG4gICAgICAgICAgICBpZiAoIW5ld0Rhc2hib2FyZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VySWQgPSBzZXNzaW9uU2VydmljZS51c2VyPy5pZDtcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBjb25zdCBkYXNoYm9hcmRXaXRoTWV0YWRhdGE6IEFYTURhc2hib2FyZExheW91dCA9IHtcbiAgICAgICAgICAgICAgLi4ubmV3RGFzaGJvYXJkLFxuICAgICAgICAgICAgICBjcmVhdGVkQnk6IHVzZXJJZCxcbiAgICAgICAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgICAgICAgIHVwZGF0ZWRCeTogdXNlcklkLFxuICAgICAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgICAgICAgc2NvcGU6IHN0b3JlLmlzVXNlckFkbWluKCkgPyAnVCcgOiAnVScsXG4gICAgICAgICAgICAgIHdpZGdldHM6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3QgZGFzaGJvYXJkTW9kZWwgPSBkYXNoYm9hcmRMYXlvdXRUb01vZGVsKGRhc2hib2FyZFdpdGhNZXRhZGF0YSk7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVkRGFzaGJvYXJkSWQgPSBhd2FpdCBkYXNoYm9hcmRTZXJ2aWNlLmluc2VydE9uZShkYXNoYm9hcmRNb2RlbCk7XG4gICAgICAgICAgICBkYXNoYm9hcmRXaXRoTWV0YWRhdGEuaWQgPSBjcmVhdGVkRGFzaGJvYXJkSWQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRBbGxEYXNoYm9hcmRzID0gWy4uLnN0b3JlLmF2YWlsYWJsZURhc2hib2FyZHMoKSwgZGFzaGJvYXJkV2l0aE1ldGFkYXRhXTtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXNoYm9hcmRzID0gWy4uLnN0b3JlLmRhc2hib2FyZHMoKSwgZGFzaGJvYXJkV2l0aE1ldGFkYXRhXTtcblxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICBhbGxEYXNoYm9hcmRzOiB1cGRhdGVkQWxsRGFzaGJvYXJkcyxcbiAgICAgICAgICAgICAgZGFzaGJvYXJkczogdXBkYXRlZERhc2hib2FyZHMsXG4gICAgICAgICAgICAgIGN1cnJlbnREYXNoYm9hcmRJZDogZGFzaGJvYXJkV2l0aE1ldGFkYXRhLmlkLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHNldHRpbmdTZXJ2aWNlXG4gICAgICAgICAgICAgIC5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpXG4gICAgICAgICAgICAgIC5zZXQoQVhQSG9tZURhc2hib2FyZFNldHRpbmcuQ3VycmVudERhc2hib2FyZCwgZGFzaGJvYXJkV2l0aE1ldGFkYXRhLmlkKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWRkaW5nIGRhc2hib2FyZDonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIGVkaXREYXNoYm9hcmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgY29uc3QgY3VycmVudERhc2hib2FyZCA9IHN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCk7XG4gICAgICAgICAgaWYgKCFjdXJyZW50RGFzaGJvYXJkKSByZXR1cm47XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZWRpdGVkRGFzaGJvYXJkID0gYXdhaXQgZGFzaGJvYXJkUG9wdXAuZ2VuZXJhdGVEYXNoYm9hcmRMYXlvdXQoXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogY3VycmVudERhc2hib2FyZC50aXRsZSxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogY3VycmVudERhc2hib2FyZC5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICByb2xlSWRzOiBjdXJyZW50RGFzaGJvYXJkLnJvbGVJZHMsXG4gICAgICAgICAgICAgICAgc2NvcGU6IGN1cnJlbnREYXNoYm9hcmQuc2NvcGUsXG4gICAgICAgICAgICAgICAgbG9ja2VkOiBjdXJyZW50RGFzaGJvYXJkLmxvY2tlZCxcbiAgICAgICAgICAgICAgICBpc0RlbGV0ZWQ6IGN1cnJlbnREYXNoYm9hcmQuaXNEZWxldGVkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBzdG9yZS5pc1VzZXJBZG1pbigpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKCFlZGl0ZWREYXNoYm9hcmQpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgdXNlcklkID0gc2Vzc2lvblNlcnZpY2UudXNlcj8uaWQ7XG4gICAgICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZDogQVhNRGFzaGJvYXJkTGF5b3V0ID0ge1xuICAgICAgICAgICAgICAuLi5jdXJyZW50RGFzaGJvYXJkLFxuICAgICAgICAgICAgICAuLi5lZGl0ZWREYXNoYm9hcmQsXG4gICAgICAgICAgICAgIHVwZGF0ZWRCeTogdXNlcklkLFxuICAgICAgICAgICAgICB1cGRhdGVkQXQ6IG5vdyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGF3YWl0IGRhc2hib2FyZFNlcnZpY2UudXBkYXRlT25lKHVwZGF0ZWREYXNoYm9hcmQuaWQsIGRhc2hib2FyZExheW91dFRvTW9kZWwodXBkYXRlZERhc2hib2FyZCkpO1xuXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQWxsRGFzaGJvYXJkcyA9IHN0b3JlXG4gICAgICAgICAgICAgIC5hdmFpbGFibGVEYXNoYm9hcmRzKClcbiAgICAgICAgICAgICAgLm1hcCgoZCkgPT4gKGQuaWQgPT09IHVwZGF0ZWREYXNoYm9hcmQuaWQgPyB1cGRhdGVkRGFzaGJvYXJkIDogZCkpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZHMgPSBzdG9yZVxuICAgICAgICAgICAgICAuZGFzaGJvYXJkcygpXG4gICAgICAgICAgICAgIC5tYXAoKGQpID0+IChkLmlkID09PSB1cGRhdGVkRGFzaGJvYXJkLmlkID8gdXBkYXRlZERhc2hib2FyZCA6IGQpKTtcblxuICAgICAgICAgICAgLy8gSWYgbG9jayBzdGF0ZSBjaGFuZ2VkLCB1cGRhdGUgdGhlIGRhc2hib2FyZCBvcHRpb25zIHRvb1xuICAgICAgICAgICAgaWYgKGN1cnJlbnREYXNoYm9hcmQubG9ja2VkICE9PSB1cGRhdGVkRGFzaGJvYXJkLmxvY2tlZCkge1xuICAgICAgICAgICAgICBjb25zdCBiYXNlT3B0aW9ucyA9IHsgLi4uc3RvcmUuZGFzaGJvYXJkc09wdGlvbigpIH07XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIC4uLmJhc2VPcHRpb25zLFxuICAgICAgICAgICAgICAgIGRpc2FibGVEcmFnOiB1cGRhdGVkRGFzaGJvYXJkLmxvY2tlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgICBkaXNhYmxlUmVzaXplOiB1cGRhdGVkRGFzaGJvYXJkLmxvY2tlZCA9PT0gdHJ1ZSxcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgYWxsRGFzaGJvYXJkczogdXBkYXRlZEFsbERhc2hib2FyZHMsXG4gICAgICAgICAgICAgICAgZGFzaGJvYXJkczogdXBkYXRlZERhc2hib2FyZHMsXG4gICAgICAgICAgICAgICAgZGFzaGJvYXJkc09wdGlvbjogdXBkYXRlZE9wdGlvbnMsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIGFsbERhc2hib2FyZHM6IHVwZGF0ZWRBbGxEYXNoYm9hcmRzLFxuICAgICAgICAgICAgICAgIGRhc2hib2FyZHM6IHVwZGF0ZWREYXNoYm9hcmRzLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZWRpdGluZyBkYXNoYm9hcmQ6JywgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBhZGRXaWRnZXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgaWYgKCFzdG9yZS5zZWxlY3RlZERhc2hib2FyZCgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ05vIGN1cnJlbnQgZGFzaGJvYXJkIHNlbGVjdGVkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHdpZGdldHMgPSBhd2FpdCB3aWRnZXRQaWNrZXJTZXJ2aWNlLnNob3dQaWNrZXIoe1xuICAgICAgICAgICAgICBncm91cHM6IFtBWFBXaWRnZXRHcm91cEVudW0uRGFzaGJvYXJkV2lkZ2V0XSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFdpZGdldHMgPSAod2lkZ2V0cyBhcyBhbnlbXSkubWFwKCh7IF9fbWV0YV9fLCAuLi5yZXN0IH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgd2lkZ2V0ID0gcmVzdDtcbiAgICAgICAgICAgICAgaWYgKHdpZGdldC50eXBlID09PSAnc3RpY2t5LW5vdGUnICYmICF3aWRnZXQub3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHdpZGdldC5vcHRpb25zID0geyBoYXNDb25maWd1cmF0aW9uOiBmYWxzZSB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJhbmRvbUlkID0gQVhQRGF0YUdlbmVyYXRvci51dWlkKCk7XG4gICAgICAgICAgICAgIHdpZGdldC5uYW1lID0gYCR7d2lkZ2V0LnR5cGV9LSR7cmFuZG9tSWR9YDtcbiAgICAgICAgICAgICAgd2lkZ2V0LnBhdGggPSBgJHt3aWRnZXQudHlwZX0tJHtyYW5kb21JZH1gO1xuICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZFdpZGdldHM6IEFYTURhc2hib2FyZFdpZGdldERhdGFbXSA9IGZpbHRlcmVkV2lkZ2V0cy5tYXAoKHdpZGdldCkgPT4gKHtcbiAgICAgICAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB3aWRnZXQ/Lm1ldGE/LmRpbWVuc2lvbnM/LmhlaWdodCA/PyAyLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB3aWRnZXQ/Lm1ldGE/LmRpbWVuc2lvbnM/LndpZHRoID8/IDIsXG4gICAgICAgICAgICAgICAgbWluSGVpZ2h0OiB3aWRnZXQ/Lm1ldGE/LmRpbWVuc2lvbnM/Lm1pbkhlaWdodCxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogd2lkZ2V0Py5tZXRhPy5kaW1lbnNpb25zPy5taW5XaWR0aCxcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IHdpZGdldD8ubWV0YT8uZGltZW5zaW9ucz8ubWF4SGVpZ2h0LFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiB3aWRnZXQ/Lm1ldGE/LmRpbWVuc2lvbnM/Lm1heFdpZHRoLFxuICAgICAgICAgICAgICAgIGlkOiBBWFBEYXRhR2VuZXJhdG9yLnV1aWQoKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbm9kZTogeyAuLi53aWRnZXQsIG5hbWU6IHdpZGdldC5uYW1lIH0sXG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXNoYm9hcmQgPSBzdG9yZS5zZWxlY3RlZERhc2hib2FyZCgpITtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXNoYm9hcmQgPSB7XG4gICAgICAgICAgICAgIC4uLmN1cnJlbnREYXNoYm9hcmQsXG4gICAgICAgICAgICAgIHdpZGdldHM6IFsuLi5jdXJyZW50RGFzaGJvYXJkLndpZGdldHMsIC4uLmNvbnZlcnRlZFdpZGdldHNdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgYXdhaXQgZGFzaGJvYXJkU2VydmljZS51cGRhdGVPbmUodXBkYXRlZERhc2hib2FyZC5pZCwgZGFzaGJvYXJkTGF5b3V0VG9Nb2RlbCh1cGRhdGVkRGFzaGJvYXJkKSk7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRGFzaGJvYXJkcyA9IHN0b3JlXG4gICAgICAgICAgICAgIC5kYXNoYm9hcmRzKClcbiAgICAgICAgICAgICAgLm1hcCgoZCkgPT4gKGQuaWQgPT09IHVwZGF0ZWREYXNoYm9hcmQuaWQgPyB1cGRhdGVkRGFzaGJvYXJkIDogZCkpO1xuXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGRhc2hib2FyZHM6IHVwZGF0ZWREYXNoYm9hcmRzIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhZGRpbmcgd2lkZ2V0OicsIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgcmVtb3ZlRGFzaGJvYXJkKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBpZiAoIWlkKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ05vIGRhc2hib2FyZCBJRCBwcm92aWRlZCBmb3IgcmVtb3ZhbCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZXN1bHQgPSBhd2FpdCBkaWFsb2dTZXJ2aWNlLmNvbmZpcm0oXG4gICAgICAgICAgICAgIGF3YWl0IHRyYW5zbGF0aW9uU2VydmljZS50cmFuc2xhdGVBc3luYygnd29ya2Zsb3cud2FybmluZycpLFxuICAgICAgICAgICAgICBhd2FpdCB0cmFuc2xhdGlvblNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ3dvcmtmbG93LmNvbmZpcm0tZGVsZXRlJyksXG4gICAgICAgICAgICAgICdkYW5nZXInLFxuICAgICAgICAgICAgICAnaG9yaXpvbnRhbCcsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoZGlhbG9nUmVzdWx0LnJlc3VsdCkge1xuICAgICAgICAgICAgICBhd2FpdCBkYXNoYm9hcmRTZXJ2aWNlLmRlbGV0ZU9uZShpZCk7XG4gICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWRBbGxEYXNoYm9hcmRzID0gc3RvcmUuYXZhaWxhYmxlRGFzaGJvYXJkcygpLmZpbHRlcigoZGFzaGJvYXJkKSA9PiBkYXNoYm9hcmQuaWQgIT09IGlkKTtcbiAgICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZHMgPSBzdG9yZS5kYXNoYm9hcmRzKCkuZmlsdGVyKChkYXNoYm9hcmQpID0+IGRhc2hib2FyZC5pZCAhPT0gaWQpO1xuICAgICAgICAgICAgICBsZXQgbmV3Q3VycmVudERhc2hib2FyZElkID0gc3RvcmUuY3VycmVudERhc2hib2FyZElkKCk7XG5cbiAgICAgICAgICAgICAgaWYgKGlkID09PSBzdG9yZS5jdXJyZW50RGFzaGJvYXJkSWQoKSkge1xuICAgICAgICAgICAgICAgIG5ld0N1cnJlbnREYXNoYm9hcmRJZCA9XG4gICAgICAgICAgICAgICAgICB1cGRhdGVkRGFzaGJvYXJkcy5sZW5ndGggPiAwID8gdXBkYXRlZERhc2hib2FyZHNbdXBkYXRlZERhc2hib2FyZHMubGVuZ3RoIC0gMV0uaWQgOiBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChuZXdDdXJyZW50RGFzaGJvYXJkSWQpIHtcbiAgICAgICAgICAgICAgICAgIHNldHRpbmdTZXJ2aWNlXG4gICAgICAgICAgICAgICAgICAgIC5zY29wZShBWFBQbGF0Zm9ybVNjb3BlLlVzZXIpXG4gICAgICAgICAgICAgICAgICAgIC5zZXQoQVhQSG9tZURhc2hib2FyZFNldHRpbmcuQ3VycmVudERhc2hib2FyZCwgbmV3Q3VycmVudERhc2hib2FyZElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgYWxsRGFzaGJvYXJkczogdXBkYXRlZEFsbERhc2hib2FyZHMsXG4gICAgICAgICAgICAgICAgZGFzaGJvYXJkczogdXBkYXRlZERhc2hib2FyZHMsXG4gICAgICAgICAgICAgICAgY3VycmVudERhc2hib2FyZElkOiBuZXdDdXJyZW50RGFzaGJvYXJkSWQsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciByZW1vdmluZyBkYXNoYm9hcmQ6JywgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyByZW1vdmVXaWRnZXQoZGFzaGJvYXJkSWQ6IHN0cmluZywgd2lkZ2V0SWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXNoYm9hcmQgPSBzdG9yZS5kYXNoYm9hcmRzKCkuZmluZCgoZCkgPT4gZC5pZCA9PT0gZGFzaGJvYXJkSWQpO1xuICAgICAgICAgIGlmICghY3VycmVudERhc2hib2FyZCkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZCA9IHtcbiAgICAgICAgICAgIC4uLmN1cnJlbnREYXNoYm9hcmQsXG4gICAgICAgICAgICB3aWRnZXRzOiBjdXJyZW50RGFzaGJvYXJkLndpZGdldHMuZmlsdGVyKCh3aWRnZXQpID0+IHdpZGdldC5jb25maWcuaWQgIT09IHdpZGdldElkKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXdhaXQgZGFzaGJvYXJkU2VydmljZS51cGRhdGVPbmUoZGFzaGJvYXJkSWQsIGRhc2hib2FyZExheW91dFRvTW9kZWwodXBkYXRlZERhc2hib2FyZCkpO1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXNoYm9hcmRzID0gc3RvcmVcbiAgICAgICAgICAgIC5kYXNoYm9hcmRzKClcbiAgICAgICAgICAgIC5tYXAoKGRhc2hib2FyZCkgPT4gKGRhc2hib2FyZC5pZCA9PT0gZGFzaGJvYXJkSWQgPyB1cGRhdGVkRGFzaGJvYXJkIDogZGFzaGJvYXJkKSk7XG5cbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGRhc2hib2FyZHM6IHVwZGF0ZWREYXNoYm9hcmRzIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIGhhbmRsZUNvbmZpZ0NoYW5nZShkYXNoYm9hcmQ6IEFYTURhc2hib2FyZExheW91dCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICAgIGF3YWl0IGRhc2hib2FyZFNlcnZpY2UudXBkYXRlT25lKGRhc2hib2FyZC5pZCwgZGFzaGJvYXJkTGF5b3V0VG9Nb2RlbChkYXNoYm9hcmQpKTtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkRGFzaGJvYXJkcyA9IHN0b3JlLmRhc2hib2FyZHMoKS5tYXAoKGQpID0+IChkLmlkID09PSBkYXNoYm9hcmQuaWQgPyBkYXNoYm9hcmQgOiBkKSk7XG5cbiAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICBkYXNoYm9hcmRzOiB1cGRhdGVkRGFzaGJvYXJkcyxcbiAgICAgICAgICAgIGN1cnJlbnREYXNoYm9hcmRJZDogZGFzaGJvYXJkLmlkLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2V0dGluZ1NlcnZpY2Uuc2NvcGUoQVhQUGxhdGZvcm1TY29wZS5Vc2VyKS5zZXQoQVhQSG9tZURhc2hib2FyZFNldHRpbmcuQ3VycmVudERhc2hib2FyZCwgZGFzaGJvYXJkLmlkKTtcbiAgICAgICAgfSxcblxuICAgICAgICBhc3luYyBvbkdyaWRDaGFuZ2UoZXZlbnQ6IEFYR3JpZExheW91dEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgaWYgKCFsYXlvdXRUaGVtZVNlcnZpY2UuaXNEZXNrdG9wRGV2aWNlKCkgfHwgIXN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCkpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IG5vZGVzID0gZXZlbnQubm9kZXMubWFwKCh7IGVsZW1lbnQsIC4uLnJlc3QgfSkgPT4gcmVzdCk7XG4gICAgICAgICAgY29uc3QgY3VycmVudERhc2hib2FyZCA9IHN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCkhO1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRXaWRnZXRzID0gY3VycmVudERhc2hib2FyZC53aWRnZXRzLm1hcCgod2lkZ2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkTm9kZSA9IG5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IHdpZGdldC5jb25maWcuaWQpO1xuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWROb2RlID8geyAuLi53aWRnZXQsIGNvbmZpZzogdXBkYXRlZE5vZGUgfSA6IHdpZGdldDtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXNoYm9hcmQgPSB7XG4gICAgICAgICAgICAuLi5jdXJyZW50RGFzaGJvYXJkLFxuICAgICAgICAgICAgd2lkZ2V0czogdXBkYXRlZFdpZGdldHMsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGF3YWl0IGRhc2hib2FyZFNlcnZpY2UudXBkYXRlT25lKHVwZGF0ZWREYXNoYm9hcmQuaWQsIGRhc2hib2FyZExheW91dFRvTW9kZWwodXBkYXRlZERhc2hib2FyZCkpO1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXNoYm9hcmRzID0gc3RvcmVcbiAgICAgICAgICAgIC5kYXNoYm9hcmRzKClcbiAgICAgICAgICAgIC5tYXAoKGRhc2hib2FyZCkgPT4gKGRhc2hib2FyZC5pZCA9PT0gdXBkYXRlZERhc2hib2FyZC5pZCA/IHVwZGF0ZWREYXNoYm9hcmQgOiBkYXNoYm9hcmQpKTtcblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgZGFzaGJvYXJkczogdXBkYXRlZERhc2hib2FyZHMgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgaGFuZGxlUG9wdXBDb25maWd1cmF0aW9uKHdpZGdldE5vZGU6IEFYUFdpZGdldE5vZGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBpZiAoIXN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCkpIHJldHVybjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkTm9kZSA9IGF3YWl0IGRhc2hib2FyZFBvcHVwLmhhbmRsZVBvcHVwQ29uZmlndXJhdGlvbih3aWRnZXROb2RlKTtcbiAgICAgICAgICAgIGlmICghdXBkYXRlZE5vZGUpIHJldHVybjtcblxuICAgICAgICAgICAgY29uc3QgY3VycmVudERhc2hib2FyZCA9IHN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCkhO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFdpZGdldHMgPSBjdXJyZW50RGFzaGJvYXJkLndpZGdldHMubWFwKCh3aWRnZXQpID0+XG4gICAgICAgICAgICAgIHdpZGdldC5ub2RlPy5uYW1lID09PSB3aWRnZXROb2RlLm5hbWUgJiYgd2lkZ2V0Lm5vZGU/LnBhdGggPT09IHdpZGdldE5vZGUucGF0aFxuICAgICAgICAgICAgICAgID8geyAuLi53aWRnZXQsIG5vZGU6IHVwZGF0ZWROb2RlIH1cbiAgICAgICAgICAgICAgICA6IHdpZGdldCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXNoYm9hcmQgPSB7XG4gICAgICAgICAgICAgIC4uLmN1cnJlbnREYXNoYm9hcmQsXG4gICAgICAgICAgICAgIHdpZGdldHM6IHVwZGF0ZWRXaWRnZXRzLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgYXdhaXQgZGFzaGJvYXJkU2VydmljZS51cGRhdGVPbmUodXBkYXRlZERhc2hib2FyZC5pZCwgZGFzaGJvYXJkTGF5b3V0VG9Nb2RlbCh1cGRhdGVkRGFzaGJvYXJkKSk7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRGFzaGJvYXJkcyA9IHN0b3JlXG4gICAgICAgICAgICAgIC5kYXNoYm9hcmRzKClcbiAgICAgICAgICAgICAgLm1hcCgoZGFzaGJvYXJkKSA9PiAoZGFzaGJvYXJkLmlkID09PSB1cGRhdGVkRGFzaGJvYXJkLmlkID8gdXBkYXRlZERhc2hib2FyZCA6IGRhc2hib2FyZCkpO1xuXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7IGRhc2hib2FyZHM6IHVwZGF0ZWREYXNoYm9hcmRzIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBoYW5kbGluZyB3aWRnZXQgY29uZmlndXJhdGlvbjonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIGhhbmRsZVZhbHVlQ2hhbmdlZCh3aWRnZXROb2RlOiBBWFBXaWRnZXROb2RlLCBkYXRhOiB1bmtub3duKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgICAgaWYgKCFzdG9yZS5zZWxlY3RlZERhc2hib2FyZCgpKSByZXR1cm47XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhc2hib2FyZCA9IHN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCkhO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFdpZGdldHMgPSBjdXJyZW50RGFzaGJvYXJkLndpZGdldHMubWFwKCh3aWRnZXQpID0+XG4gICAgICAgICAgICAgIHdpZGdldC5ub2RlICYmIHdpZGdldC5ub2RlLm5hbWUgPT09IHdpZGdldE5vZGUubmFtZSAmJiB3aWRnZXQubm9kZS5wYXRoID09PSB3aWRnZXROb2RlLnBhdGhcbiAgICAgICAgICAgICAgICA/IHsgLi4ud2lkZ2V0LCBub2RlOiB7IC4uLndpZGdldC5ub2RlLCBkZWZhdWx0VmFsdWU6IGRhdGEgfSB9XG4gICAgICAgICAgICAgICAgOiB3aWRnZXQsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRGFzaGJvYXJkID0ge1xuICAgICAgICAgICAgICAuLi5jdXJyZW50RGFzaGJvYXJkLFxuICAgICAgICAgICAgICB3aWRnZXRzOiB1cGRhdGVkV2lkZ2V0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGF3YWl0IGRhc2hib2FyZFNlcnZpY2UudXBkYXRlT25lKHVwZGF0ZWREYXNoYm9hcmQuaWQsIGRhc2hib2FyZExheW91dFRvTW9kZWwodXBkYXRlZERhc2hib2FyZCkpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZHMgPSBzdG9yZVxuICAgICAgICAgICAgICAuZGFzaGJvYXJkcygpXG4gICAgICAgICAgICAgIC5tYXAoKGRhc2hib2FyZCkgPT4gKGRhc2hib2FyZC5pZCA9PT0gdXBkYXRlZERhc2hib2FyZC5pZCA/IHVwZGF0ZWREYXNoYm9hcmQgOiBkYXNoYm9hcmQpKTtcblxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkYXNoYm9hcmRzOiB1cGRhdGVkRGFzaGJvYXJkcyB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaGFuZGxpbmcgd2lkZ2V0IHZhbHVlIGNoYW5nZTonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIGFzeW5jIGhhbmRsZU9wdGlvbnNDaGFuZ2VkKHdpZGdldE5vZGU6IEFYUFdpZGdldE5vZGUsIGRhdGE6IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBpZiAoIXN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCkpIHJldHVybjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGFzaGJvYXJkID0gc3RvcmUuc2VsZWN0ZWREYXNoYm9hcmQoKSE7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkV2lkZ2V0cyA9IGN1cnJlbnREYXNoYm9hcmQud2lkZ2V0cy5tYXAoKHdpZGdldCkgPT5cbiAgICAgICAgICAgICAgd2lkZ2V0Lm5vZGUgJiYgd2lkZ2V0Lm5vZGUubmFtZSA9PT0gd2lkZ2V0Tm9kZS5uYW1lICYmIHdpZGdldC5ub2RlLnBhdGggPT09IHdpZGdldE5vZGUucGF0aFxuICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAuLi53aWRnZXQsXG4gICAgICAgICAgICAgICAgICAgIG5vZGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi53aWRnZXQubm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IC4uLih3aWRnZXQubm9kZS5vcHRpb25zIHx8IHt9KSwgLi4uKGRhdGEgYXMgb2JqZWN0KSB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogd2lkZ2V0LFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZCA9IHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudERhc2hib2FyZCxcbiAgICAgICAgICAgICAgd2lkZ2V0czogdXBkYXRlZFdpZGdldHMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBhd2FpdCBkYXNoYm9hcmRTZXJ2aWNlLnVwZGF0ZU9uZSh1cGRhdGVkRGFzaGJvYXJkLmlkLCBkYXNoYm9hcmRMYXlvdXRUb01vZGVsKHVwZGF0ZWREYXNoYm9hcmQpKTtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXNoYm9hcmRzID0gc3RvcmVcbiAgICAgICAgICAgICAgLmRhc2hib2FyZHMoKVxuICAgICAgICAgICAgICAubWFwKChkYXNoYm9hcmQpID0+IChkYXNoYm9hcmQuaWQgPT09IHVwZGF0ZWREYXNoYm9hcmQuaWQgPyB1cGRhdGVkRGFzaGJvYXJkIDogZGFzaGJvYXJkKSk7XG5cbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgZGFzaGJvYXJkczogdXBkYXRlZERhc2hib2FyZHMgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGhhbmRsaW5nIHdpZGdldCBvcHRpb25zIGNoYW5nZTonLCBlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIHNldElzQWRtaW4oaXNBZG1pbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgaXNBZG1pbiB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBGaWx0ZXIgZGFzaGJvYXJkcyBieSBzY29wZVxuICAgICAgICBmaWx0ZXJEYXNoYm9hcmRzQnlTY29wZShpc0FkbWluOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgICAgY29uc3QgYWxsRGFzaGJvYXJkcyA9IHN0b3JlLmF2YWlsYWJsZURhc2hib2FyZHMoKTtcbiAgICAgICAgICBjb25zdCB1c2VySWQgPSBzZXNzaW9uU2VydmljZS51c2VyPy5pZDtcbiAgICAgICAgICBjb25zdCB1c2VyUm9sZSA9IHNlc3Npb25TZXJ2aWNlLnVzZXIgPyAoc2Vzc2lvblNlcnZpY2UudXNlciBhcyBhbnkpWydyb2xlJ10gOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBpZiAoIXVzZXJJZCkge1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkYXNoYm9hcmRzOiBhbGxEYXNoYm9hcmRzIH0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkRGFzaGJvYXJkcyA9IGlzQWRtaW5cbiAgICAgICAgICAgID8gYWxsRGFzaGJvYXJkcy5maWx0ZXIoKGRhc2hib2FyZCkgPT4gZGFzaGJvYXJkLnNjb3BlID09PSAnVCcpXG4gICAgICAgICAgICA6IGFsbERhc2hib2FyZHMuZmlsdGVyKChkYXNoYm9hcmQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1VzZXJEYXNoYm9hcmQgPSBkYXNoYm9hcmQuc2NvcGUgPT09ICdVJyAmJiBkYXNoYm9hcmQuY3JlYXRlZEJ5ID09PSB1c2VySWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzUm9sZUlkcyA9XG4gICAgICAgICAgICAgICAgICBkYXNoYm9hcmQucm9sZUlkcyAmJiBBcnJheS5pc0FycmF5KGRhc2hib2FyZC5yb2xlSWRzKSAmJiBkYXNoYm9hcmQucm9sZUlkcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzVGVuYW50RGFzaGJvYXJkID0gZGFzaGJvYXJkLnNjb3BlID09PSAnVCc7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFzVXNlclJvbGUgPSB1c2VyUm9sZSAmJiBoYXNSb2xlSWRzICYmIGRhc2hib2FyZC5yb2xlSWRzPy5pbmNsdWRlcyh1c2VyUm9sZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNOb3REZWxldGVkID0gZGFzaGJvYXJkLmlzRGVsZXRlZCAhPT0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc1RlbmFudERhc2hib2FyZFdpdGhSb2xlID0gaXNUZW5hbnREYXNoYm9hcmQgJiYgaGFzVXNlclJvbGUgJiYgaXNOb3REZWxldGVkO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzVXNlckRhc2hib2FyZCB8fCBpc1RlbmFudERhc2hib2FyZFdpdGhSb2xlO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHsgZGFzaGJvYXJkczogZmlsdGVyZWREYXNoYm9hcmRzIH0pO1xuXG4gICAgICAgICAgaWYgKGZpbHRlcmVkRGFzaGJvYXJkcy5sZW5ndGggPiAwICYmICFmaWx0ZXJlZERhc2hib2FyZHMuc29tZSgoZCkgPT4gZC5pZCA9PT0gc3RvcmUuY3VycmVudERhc2hib2FyZElkKCkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbnREYXNoYm9hcmQoZmlsdGVyZWREYXNoYm9hcmRzWzBdLmlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgYXN5bmMgdG9nZ2xlTG9ja0Rhc2hib2FyZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGFzaGJvYXJkID0gc3RvcmUuc2VsZWN0ZWREYXNoYm9hcmQoKTtcbiAgICAgICAgICBpZiAoIWN1cnJlbnREYXNoYm9hcmQpIHJldHVybjtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBpc0FkbWluID0gc3RvcmUuaXNVc2VyQWRtaW4oKTtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJJZCA9IHNlc3Npb25TZXJ2aWNlLnVzZXI/LmlkO1xuICAgICAgICAgICAgY29uc3QgY2FuVG9nZ2xlID1cbiAgICAgICAgICAgICAgKCFpc0FkbWluICYmIGN1cnJlbnREYXNoYm9hcmQuc2NvcGUgPT09ICdVJyAmJiBjdXJyZW50RGFzaGJvYXJkLmNyZWF0ZWRCeSA9PT0gdXNlcklkKSB8fFxuICAgICAgICAgICAgICAoaXNBZG1pbiAmJiBjdXJyZW50RGFzaGJvYXJkLnNjb3BlID09PSAnVCcpO1xuXG4gICAgICAgICAgICBpZiAoIWNhblRvZ2dsZSkge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1VzZXIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHRvZ2dsZSBsb2NrIGZvciB0aGlzIGRhc2hib2FyZCcpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld0xvY2tlZFN0YXRlID0gIWN1cnJlbnREYXNoYm9hcmQubG9ja2VkO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZCA9IHtcbiAgICAgICAgICAgICAgLi4uY3VycmVudERhc2hib2FyZCxcbiAgICAgICAgICAgICAgbG9ja2VkOiBuZXdMb2NrZWRTdGF0ZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGF3YWl0IGRhc2hib2FyZFNlcnZpY2UudXBkYXRlT25lKHVwZGF0ZWREYXNoYm9hcmQuaWQsIGRhc2hib2FyZExheW91dFRvTW9kZWwodXBkYXRlZERhc2hib2FyZCkpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhc2hib2FyZHMgPSBzdG9yZVxuICAgICAgICAgICAgICAuZGFzaGJvYXJkcygpXG4gICAgICAgICAgICAgIC5tYXAoKGRhc2hib2FyZCkgPT4gKGRhc2hib2FyZC5pZCA9PT0gdXBkYXRlZERhc2hib2FyZC5pZCA/IHVwZGF0ZWREYXNoYm9hcmQgOiBkYXNoYm9hcmQpKTtcblxuICAgICAgICAgICAgY29uc3QgYmFzZU9wdGlvbnMgPSB7IC4uLnN0b3JlLmRhc2hib2FyZHNPcHRpb24oKSB9O1xuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkYXNoYm9hcmRzOiB1cGRhdGVkRGFzaGJvYXJkcyB9KTtcblxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAgIC4uLmJhc2VPcHRpb25zLFxuICAgICAgICAgICAgICBkaXNhYmxlRHJhZzogbmV3TG9ja2VkU3RhdGUsXG4gICAgICAgICAgICAgIGRpc2FibGVSZXNpemU6IG5ld0xvY2tlZFN0YXRlLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwgeyBkYXNoYm9hcmRzT3B0aW9uOiB1cGRhdGVkT3B0aW9ucyB9KTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgdG9nZ2xpbmcgZGFzaGJvYXJkIGxvY2sgc3RhdGU6JywgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICBpc0Rhc2hib2FyZExvY2tlZCgpOiBib29sZWFuIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGFzaGJvYXJkID0gc3RvcmUuc2VsZWN0ZWREYXNoYm9hcmQoKTtcbiAgICAgICAgICByZXR1cm4gY3VycmVudERhc2hib2FyZD8ubG9ja2VkID09PSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICApLFxuKTtcbiJdfQ==","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, inject, signal, ViewEncapsulation } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDialogService } from '@acorex/components/dialog';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXGridLayoutBuilderModule } from '@acorex/components/grid-layout-builder';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';\nimport { AXPDesignerService } from '@acorex/platform/layout/designer';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent, AXPPageLayoutComponent } from '@acorex/platform/layout/views';\nimport { AXPLayoutThemeService } from '@acorex/platform/themes/shared';\nimport { AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXPopupService } from '@acorex/components/popup';\nimport { RootConfig } from '../../../const';\nimport { AXMDashboardWidgetWrapperComponent } from '../widget-wrapper/dashboard-widget-wrapper';\nimport { AXMDashboardStore } from './home-dashboard.store';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/components/loading\";\nimport * as i3 from \"@acorex/platform/layout/builder\";\nimport * as i4 from \"@acorex/components/grid-layout-builder\";\nimport * as i5 from \"@acorex/components/decorators\";\nimport * as i6 from \"@acorex/core/translation\";\nexport class AXMDashboardHomeComponent extends AXPPageLayoutBaseComponent {\n constructor() {\n super(...arguments);\n // Dependencies\n this.rootConfig = RootConfig;\n this.activatedRoute = inject(ActivatedRoute);\n this.dialogService = inject(AXDialogService);\n this.popupService = inject(AXPopupService);\n this.router = inject(Router);\n this.store = inject(AXMDashboardStore);\n this.themeService = inject(AXPLayoutThemeService);\n // Component State\n this.context = signal({});\n this.dashboardsLoaded = signal(false);\n // Effects\n this.#initEffect = effect(() => {\n const allDashboards = this.store.availableDashboards();\n if (allDashboards.length > 0 && !this.dashboardsLoaded()) {\n this.dashboardsLoaded.set(true);\n this.applyDashboardFiltering();\n this.recompute();\n }\n });\n }\n // Lifecycle Hooks\n async ngOnInit() {\n const childRoute = this.activatedRoute.firstChild || this.activatedRoute;\n childRoute.data.subscribe((data) => {\n const isAdmin = data['isAdmin'] ?? false;\n this.store.setIsAdmin(isAdmin);\n });\n }\n // Effects\n #initEffect;\n // Private Methods\n applyDashboardFiltering() {\n this.store.filterDashboardsByScope(this.store.isUserAdmin());\n }\n async confirmWidgetDelete(dashboardId, widgetId) {\n try {\n const dialogResult = await this.dialogService.confirm(await this.translateService.translateAsync('workflow.warning'), await this.translateService.translateAsync('workflow.confirm-delete'), 'danger', 'horizontal');\n if (dialogResult.result) {\n this.store.removeWidget(dashboardId, widgetId);\n }\n }\n catch (error) {\n console.error('Error confirming widget deletion:', error);\n }\n }\n // Page Interface Implementation\n getPageTitle() {\n return this.store.selectedDashboard()?.title || 'Dashboard';\n }\n async getPageDescription() {\n return this.store.selectedDashboard()?.description || '';\n }\n getTitleActions() {\n return this.store.dashboards().map((dashboard) => ({\n title: dashboard.title,\n command: { name: dashboard.id, metadata: { isDashboard: true, dashboard } },\n icon: dashboard.id === this.store.currentDashboardId() ? 'fa-solid fa-check' : '',\n }));\n }\n async getPrimaryMenuItems() {\n return [\n {\n title: 't(\"add-item\")',\n icon: 'fa-light fa-square-plus',\n color: 'primary',\n items: [\n {\n title: await this.translateService.translateAsync('dashboard', { scope: 'dashboard' }),\n icon: 'fa-light fa-gauge-high',\n break: true,\n command: { name: 'new-dashboard' },\n },\n {\n title: await this.translateService.translateAsync('widget', { scope: 'dashboard' }),\n icon: 'fa-light fa-window-restore',\n command: { name: 'new-widget' },\n disabled: this.store.dashboards().length < 1,\n },\n ],\n },\n ];\n }\n async getSecondaryMenuItems() {\n const items = [\n {\n title: await this.translateService.translateAsync('edit'),\n icon: 'fa-light fa-pen',\n color: 'primary',\n disabled: this.store.dashboards().length < 1,\n command: { name: 'edit' },\n },\n ];\n if (!this.store.isUserAdmin() && this.themeService.isDesktopDevice()) {\n items.push({\n title: await this.translateService.translateAsync(this.store.isDashboardLocked() ? 'unlock' : 'lock', {\n scope: 'dashboard',\n }),\n icon: this.store.isDashboardLocked() ? 'fa-light fa-lock-open' : 'fa-light fa-lock',\n color: 'accent3',\n disabled: this.store.dashboards().length < 1,\n command: { name: 'toggle-lock' },\n });\n }\n items.push({\n title: await this.translateService.translateAsync('delete'),\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n disabled: this.store.dashboards().length < 1,\n command: { name: 'delete' },\n });\n return items;\n }\n async execute(command) {\n if (command.metadata?.['isDashboard']) {\n this.store.handleConfigChange(command.metadata?.['dashboard']);\n this.recompute();\n return;\n }\n switch (command.name) {\n case 'new-dashboard':\n await this.store.addDashboard();\n this.applyDashboardFiltering();\n this.recompute();\n break;\n case 'new-widget':\n await this.store.addWidget();\n this.recompute();\n break;\n case 'edit':\n await this.store.editDashboard();\n this.recompute();\n break;\n case 'delete':\n await this.store.removeDashboard(this.store.selectedDashboard()?.id);\n this.applyDashboardFiltering();\n this.recompute();\n break;\n case 'toggle-lock':\n await this.store.toggleLockDashboard();\n this.recompute();\n setTimeout(() => this.recompute(), 50);\n break;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardHomeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXMDashboardHomeComponent, isStandalone: true, selector: \"axm-dashboard-home\", providers: [\n AXPDesignerService,\n AXMDashboardStore,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDashboardHomeComponent,\n },\n ], usesInheritance: true, ngImport: i0, template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Content Section -->\\n\\n <axp-page-content class=\\\"ax-relative\\\">\\n <!-- Loading State -->\\n @if(store.isLoading()) {\\n <div\\n class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\\\"\\n >\\n <ax-loading></ax-loading>\\n <p class=\\\"ax-mt-3 ax-text-gray-600\\\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\\n </div>\\n } @else {\\n <axp-widgets-container [context]=\\\"context()\\\">\\n <ax-grid-layout-container [options]=\\\"store.currentLayoutOptions()\\\" (onChange)=\\\"store.onGridChange($event)\\\">\\n <!-- No Dashboards State -->\\n @if(!store.dashboards() || store.dashboards().length === 0) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\\\">\\n <ax-icon icon=\\\"fa-light fa-shapes\\\" class=\\\"ax-text-4xl ax-mb-4\\\"></ax-icon>\\n <h2 class=\\\"ax-text-xl ax-font-semibold ax-mb-2\\\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }}</h2>\\n <p class=\\\"ax-text-center ax-mb-6\\\">{{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}</p>\\n </div>\\n }\\n <!-- No Selected Dashboard State -->\\n @else if (!store.selectedDashboard()) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\\\">\\n <ax-icon icon=\\\"fa-light fa-shapes\\\" class=\\\"ax-text-4xl ax-mb-4\\\"></ax-icon>\\n <h2 class=\\\"ax-text-xl ax-font-semibold ax-mb-2\\\">\\n {{ t('no-current-dashboard', { scope: 'dashboard' }) | async }}\\n </h2>\\n <p class=\\\"ax-text-center ax-mb-6\\\">{{ t('select-dashboard', { scope: 'dashboard' }) | async }}</p>\\n </div>\\n }\\n <!-- No Widgets State -->\\n @else if (!store.selectedDashboard()?.widgets || store.selectedDashboard()?.widgets?.length === 0) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\\\">\\n <ax-icon icon=\\\"fa-light fa-shapes\\\" class=\\\"ax-text-4xl ax-mb-4\\\"></ax-icon>\\n <h2 class=\\\"ax-text-xl ax-font-semibold ax-mb-2\\\">{{ t('no-widgets', { scope: 'dashboard' }) | async }}</h2>\\n <p class=\\\"ax-text-center ax-mb-6\\\">{{ t('add-first-widget', { scope: 'dashboard' }) | async }}</p>\\n </div>\\n }\\n <!-- Widgets Grid -->\\n @else { @for(widget of store.selectedDashboard()?.widgets; track widget.config.id) {\\n <ax-grid-layout-widget\\n [options]=\\\"widget.config\\\"\\n class=\\\"dark:[--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lighter-surface)] [--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lightest-surface)]\\\"\\n >\\n <axm-dashboard-widget-wrapper\\n [title]=\\\"widget.node?.options?.['title']\\\"\\n [hasConfiguration]=\\\"store.canConfigureWidget()(widget)\\\"\\n [isLocked]=\\\"store.isWidgetLocked()(widget)\\\"\\n (onDelete)=\\\"confirmWidgetDelete(store.selectedDashboard()?.id!, widget.config.id!)\\\"\\n (onConfiguration)=\\\"store.handlePopupConfiguration(widget.node!)\\\"\\n (onValueChanged)=\\\"store.handleValueChanged(widget?.node!,$event)\\\"\\n (onOptionsChanged)=\\\"store.handleOptionsChanged(widget?.node!,$event)\\\"\\n >\\n @if(widget.node) {\\n <ng-container axp-widget-renderer [node]=\\\"widget.node\\\" [mode]=\\\"'view'\\\"></ng-container>\\n }\\n </axm-dashboard-widget-wrapper>\\n </ax-grid-layout-widget>\\n } }\\n </ax-grid-layout-container>\\n </axp-widgets-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"axm-dashboard-home{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-dashboard-home .placeholder-content{border-radius:.5rem!important;border-width:1px!important;border-style:dashed!important;--tw-border-opacity: 1 !important;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))!important;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.5)!important}axm-dashboard-home ax-grid-layout-widget .grid-stack-item-content{border-radius:.375rem!important;border-width:1px!important;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05) !important;--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color) !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"ngmodule\", type: AXLoadingModule }, { kind: \"component\", type: i2.AXLoadingComponent, selector: \"ax-loading\", inputs: [\"visible\", \"type\", \"context\"], outputs: [\"visibleChange\"] }, { kind: \"ngmodule\", type: AXPLayoutBuilderModule }, { kind: \"component\", type: i3.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i3.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }, { kind: \"ngmodule\", type: AXButtonModule }, { kind: \"ngmodule\", type: AXButtonGroupModule }, { kind: \"ngmodule\", type: AXGridLayoutBuilderModule }, { kind: \"component\", type: i4.AXGridLayoutContainerComponent, selector: \"ax-grid-layout-container\", inputs: [\"options\", \"isEmpty\"], outputs: [\"onAdded\", \"onRemoved\", \"onWidgetChange\", \"onChange\", \"onRender\", \"isEmptyChange\"] }, { kind: \"component\", type: i4.AXGridLayoutWidgetComponent, selector: \"ax-grid-layout-widget\", inputs: [\"options\"] }, { kind: \"component\", type: AXPPageLayoutComponent, selector: \"axp-page-layout\" }, { kind: \"component\", type: AXPThemeLayoutBlockComponent, selector: \" axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, \" }, { kind: \"ngmodule\", type: AXDropdownButtonModule }, { kind: \"ngmodule\", type: AXDropdownModule }, { kind: \"ngmodule\", type: AXDecoratorModule }, { kind: \"component\", type: i5.AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"ngmodule\", type: AXTranslationModule }, { kind: \"directive\", type: i6.AXTranslatorDirective, selector: \"[translate]\" }, { kind: \"ngmodule\", type: AXBreadcrumbsModule }, { kind: \"component\", type: AXMDashboardWidgetWrapperComponent, selector: \"axm-dashboard-widget-wrapper\", inputs: [\"title\", \"hasConfiguration\", \"isLocked\"], outputs: [\"onDelete\", \"onConfiguration\", \"onValueChanged\", \"onOptionsChanged\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXMDashboardHomeComponent, decorators: [{\n type: Component,\n args: [{ selector: 'axm-dashboard-home', standalone: true, imports: [\n CommonModule,\n AXLoadingModule,\n AXPLayoutBuilderModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXGridLayoutBuilderModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXDecoratorModule,\n AXTranslationModule,\n AXBreadcrumbsModule,\n AXMDashboardWidgetWrapperComponent,\n ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [\n AXPDesignerService,\n AXMDashboardStore,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDashboardHomeComponent,\n },\n ], template: \"<axp-page-layout *translate=\\\"let t\\\">\\n <!-- Content Section -->\\n\\n <axp-page-content class=\\\"ax-relative\\\">\\n <!-- Loading State -->\\n @if(store.isLoading()) {\\n <div\\n class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-w-full ax-absolute ax-z-10 ax-bg-white/80\\\"\\n >\\n <ax-loading></ax-loading>\\n <p class=\\\"ax-mt-3 ax-text-gray-600\\\">{{ t('loading', { scope: 'dashboard' }) | async }}</p>\\n </div>\\n } @else {\\n <axp-widgets-container [context]=\\\"context()\\\">\\n <ax-grid-layout-container [options]=\\\"store.currentLayoutOptions()\\\" (onChange)=\\\"store.onGridChange($event)\\\">\\n <!-- No Dashboards State -->\\n @if(!store.dashboards() || store.dashboards().length === 0) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\\\">\\n <ax-icon icon=\\\"fa-light fa-shapes\\\" class=\\\"ax-text-4xl ax-mb-4\\\"></ax-icon>\\n <h2 class=\\\"ax-text-xl ax-font-semibold ax-mb-2\\\">{{ t('no-dashboards', { scope: 'dashboard' }) | async }}</h2>\\n <p class=\\\"ax-text-center ax-mb-6\\\">{{ t('add-first-dashboard', { scope: 'dashboard' }) | async }}</p>\\n </div>\\n }\\n <!-- No Selected Dashboard State -->\\n @else if (!store.selectedDashboard()) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\\\">\\n <ax-icon icon=\\\"fa-light fa-shapes\\\" class=\\\"ax-text-4xl ax-mb-4\\\"></ax-icon>\\n <h2 class=\\\"ax-text-xl ax-font-semibold ax-mb-2\\\">\\n {{ t('no-current-dashboard', { scope: 'dashboard' }) | async }}\\n </h2>\\n <p class=\\\"ax-text-center ax-mb-6\\\">{{ t('select-dashboard', { scope: 'dashboard' }) | async }}</p>\\n </div>\\n }\\n <!-- No Widgets State -->\\n @else if (!store.selectedDashboard()?.widgets || store.selectedDashboard()?.widgets?.length === 0) {\\n <div class=\\\"ax-flex ax-flex-col ax-items-center ax-justify-center ax-h-full ax-p-4\\\">\\n <ax-icon icon=\\\"fa-light fa-shapes\\\" class=\\\"ax-text-4xl ax-mb-4\\\"></ax-icon>\\n <h2 class=\\\"ax-text-xl ax-font-semibold ax-mb-2\\\">{{ t('no-widgets', { scope: 'dashboard' }) | async }}</h2>\\n <p class=\\\"ax-text-center ax-mb-6\\\">{{ t('add-first-widget', { scope: 'dashboard' }) | async }}</p>\\n </div>\\n }\\n <!-- Widgets Grid -->\\n @else { @for(widget of store.selectedDashboard()?.widgets; track widget.config.id) {\\n <ax-grid-layout-widget\\n [options]=\\\"widget.config\\\"\\n class=\\\"dark:[--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lighter-surface)] [--ax-comp-grid-layout-stack-item-content-bg-color:var(--ax-sys-color-lightest-surface)]\\\"\\n >\\n <axm-dashboard-widget-wrapper\\n [title]=\\\"widget.node?.options?.['title']\\\"\\n [hasConfiguration]=\\\"store.canConfigureWidget()(widget)\\\"\\n [isLocked]=\\\"store.isWidgetLocked()(widget)\\\"\\n (onDelete)=\\\"confirmWidgetDelete(store.selectedDashboard()?.id!, widget.config.id!)\\\"\\n (onConfiguration)=\\\"store.handlePopupConfiguration(widget.node!)\\\"\\n (onValueChanged)=\\\"store.handleValueChanged(widget?.node!,$event)\\\"\\n (onOptionsChanged)=\\\"store.handleOptionsChanged(widget?.node!,$event)\\\"\\n >\\n @if(widget.node) {\\n <ng-container axp-widget-renderer [node]=\\\"widget.node\\\" [mode]=\\\"'view'\\\"></ng-container>\\n }\\n </axm-dashboard-widget-wrapper>\\n </ax-grid-layout-widget>\\n } }\\n </ax-grid-layout-container>\\n </axp-widgets-container>\\n }\\n </axp-page-content>\\n</axp-page-layout>\\n\", styles: [\"axm-dashboard-home{background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}axm-dashboard-home .placeholder-content{border-radius:.5rem!important;border-width:1px!important;border-style:dashed!important;--tw-border-opacity: 1 !important;border-color:rgba(var(--ax-sys-color-primary-500),var(--tw-border-opacity, 1))!important;background-color:rgba(var(--ax-sys-color-primary-lightest-surface),.5)!important}axm-dashboard-home ax-grid-layout-widget .grid-stack-item-content{border-radius:.375rem!important;border-width:1px!important;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05) !important;--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color) !important;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)!important}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1kYXNoYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9mZWF0dXJlcy9ob21lLWRhc2hib2FyZC9kYXNoYm9hcmQtaG9tZS9ob21lLWRhc2hib2FyZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2hvbWUtZGFzaGJvYXJkL2Rhc2hib2FyZC1ob21lL2hvbWUtZGFzaGJvYXJkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBVSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ25G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QUFDO2dCQUN2QyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7OEdBbktVLHlCQUF5QjtrR0FBekIseUJBQXlCLGlFQVR6QjtZQUNULGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakI7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHlCQUF5QjthQUN2QztTQUNGLGlEQ3hESCx5b0hBbUVBLHM2QkRuQ0ksWUFBWSxtRkFDWixlQUFlLDhLQUNmLHNCQUFzQiw4WkFDdEIsY0FBYyw4QkFDZCxtQkFBbUIsOEJBQ25CLHlCQUF5Qix3WEFDekIsc0JBQXNCLDREQUN0Qiw0QkFBNEIsK2hCQUM1QixzQkFBc0IsOEJBQ3RCLGdCQUFnQiw4QkFDaEIsaUJBQWlCLCtIQUNqQixtQkFBbUIsOEdBQ25CLG1CQUFtQiwrQkFDbkIsa0NBQWtDOzsyRkFhekIseUJBQXlCO2tCQWhDckMsU0FBUzsrQkFDRSxvQkFBb0IsY0FHbEIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQix5QkFBeUI7d0JBQ3pCLHNCQUFzQjt3QkFDdEIsNEJBQTRCO3dCQUM1QixzQkFBc0I7d0JBQ3RCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsa0NBQWtDO3FCQUNuQyxtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDVCxrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakI7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVywyQkFBMkI7eUJBQ3ZDO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGVmZmVjdCwgaW5qZWN0LCBPbkluaXQsIHNpZ25hbCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWEJ1dHRvbkdyb3VwTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbi1ncm91cCc7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWERyb3Bkb3duQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2Ryb3Bkb3duLWJ1dHRvbic7XG5pbXBvcnQgeyBBWEdyaWRMYXlvdXRCdWlsZGVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2dyaWQtbGF5b3V0LWJ1aWxkZXInO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZS90cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBBWFBMYXlvdXRCdWlsZGVyTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9sYXlvdXQvYnVpbGRlcic7XG5pbXBvcnQgeyBBWFBEZXNpZ25lclNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9kZXNpZ25lcic7XG5pbXBvcnQgeyBBWFBQYWdlTGF5b3V0QmFzZSwgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQsIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC92aWV3cyc7XG5pbXBvcnQgeyBBWFBMYXlvdXRUaGVtZVNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3RoZW1lcy9zaGFyZWQnO1xuaW1wb3J0IHsgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2NvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcHVwU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wb3B1cCc7XG5pbXBvcnQgeyBBWFBBY3Rpb25NZW51SXRlbSwgQVhQRXhlY3V0ZUNvbW1hbmQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgUm9vdENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0JztcbmltcG9ydCB7IEFYTURhc2hib2FyZFdpZGdldFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi93aWRnZXQtd3JhcHBlci9kYXNoYm9hcmQtd2lkZ2V0LXdyYXBwZXInO1xuaW1wb3J0IHsgQVhNRGFzaGJvYXJkU3RvcmUgfSBmcm9tICcuL2hvbWUtZGFzaGJvYXJkLnN0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhtLWRhc2hib2FyZC1ob21lJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2hvbWUtZGFzaGJvYXJkLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ob21lLWRhc2hib2FyZC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYUExheW91dEJ1aWxkZXJNb2R1bGUsXG4gICAgQVhCdXR0b25Nb2R1bGUsXG4gICAgQVhCdXR0b25Hcm91cE1vZHVsZSxcbiAgICBBWEdyaWRMYXlvdXRCdWlsZGVyTW9kdWxlLFxuICAgIEFYUFBhZ2VMYXlvdXRDb21wb25lbnQsXG4gICAgQVhQVGhlbWVMYXlvdXRCbG9ja0NvbXBvbmVudCxcbiAgICBBWERyb3Bkb3duQnV0dG9uTW9kdWxlLFxuICAgIEFYRHJvcGRvd25Nb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIEFYTURhc2hib2FyZFdpZGdldFdyYXBwZXJDb21wb25lbnQsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWFBEZXNpZ25lclNlcnZpY2UsXG4gICAgQVhNRGFzaGJvYXJkU3RvcmUsXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhQUGFnZUxheW91dEJhc2UsXG4gICAgICB1c2VFeGlzdGluZzogQVhNRGFzaGJvYXJkSG9tZUNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWE1EYXNoYm9hcmRIb21lQ29tcG9uZW50IGV4dGVuZHMgQVhQUGFnZUxheW91dEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBEZXBlbmRlbmNpZXNcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvb3RDb25maWcgPSBSb290Q29uZmlnO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlhbG9nU2VydmljZSA9IGluamVjdChBWERpYWxvZ1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcG9wdXBTZXJ2aWNlID0gaW5qZWN0KEFYUG9wdXBTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3RvcmUgPSBpbmplY3QoQVhNRGFzaGJvYXJkU3RvcmUpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGhlbWVTZXJ2aWNlID0gaW5qZWN0KEFYUExheW91dFRoZW1lU2VydmljZSk7XG5cbiAgLy8gQ29tcG9uZW50IFN0YXRlXG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQgPSBzaWduYWwoe30pO1xuICBwcml2YXRlIGRhc2hib2FyZHNMb2FkZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8vIExpZmVjeWNsZSBIb29rc1xuICBvdmVycmlkZSBhc3luYyBuZ09uSW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBjaGlsZFJvdXRlID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkIHx8IHRoaXMuYWN0aXZhdGVkUm91dGU7XG4gICAgY2hpbGRSb3V0ZS5kYXRhLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgY29uc3QgaXNBZG1pbiA9IGRhdGFbJ2lzQWRtaW4nXSA/PyBmYWxzZTtcbiAgICAgIHRoaXMuc3RvcmUuc2V0SXNBZG1pbihpc0FkbWluKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEVmZmVjdHNcbiAgI2luaXRFZmZlY3QgPSBlZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFsbERhc2hib2FyZHMgPSB0aGlzLnN0b3JlLmF2YWlsYWJsZURhc2hib2FyZHMoKTtcbiAgICBpZiAoYWxsRGFzaGJvYXJkcy5sZW5ndGggPiAwICYmICF0aGlzLmRhc2hib2FyZHNMb2FkZWQoKSkge1xuICAgICAgdGhpcy5kYXNoYm9hcmRzTG9hZGVkLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuYXBwbHlEYXNoYm9hcmRGaWx0ZXJpbmcoKTtcbiAgICAgIHRoaXMucmVjb21wdXRlKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBQcml2YXRlIE1ldGhvZHNcbiAgcHJpdmF0ZSBhcHBseURhc2hib2FyZEZpbHRlcmluZygpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3JlLmZpbHRlckRhc2hib2FyZHNCeVNjb3BlKHRoaXMuc3RvcmUuaXNVc2VyQWRtaW4oKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgY29uZmlybVdpZGdldERlbGV0ZShkYXNoYm9hcmRJZDogc3RyaW5nLCB3aWRnZXRJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRpYWxvZ1Jlc3VsdCA9IGF3YWl0IHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKFxuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ3dvcmtmbG93Lndhcm5pbmcnKSxcbiAgICAgICAgYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKCd3b3JrZmxvdy5jb25maXJtLWRlbGV0ZScpLFxuICAgICAgICAnZGFuZ2VyJyxcbiAgICAgICAgJ2hvcml6b250YWwnLFxuICAgICAgKTtcblxuICAgICAgaWYgKGRpYWxvZ1Jlc3VsdC5yZXN1bHQpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5yZW1vdmVXaWRnZXQoZGFzaGJvYXJkSWQsIHdpZGdldElkKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29uZmlybWluZyB3aWRnZXQgZGVsZXRpb246JywgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhZ2UgSW50ZXJmYWNlIEltcGxlbWVudGF0aW9uXG4gIG92ZXJyaWRlIGdldFBhZ2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCk/LnRpdGxlIHx8ICdEYXNoYm9hcmQnO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZ2V0UGFnZURlc2NyaXB0aW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0ZWREYXNoYm9hcmQoKT8uZGVzY3JpcHRpb24gfHwgJyc7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgZ2V0VGl0bGVBY3Rpb25zKCk6IEFYUEFjdGlvbk1lbnVJdGVtW10gfCBQcm9taXNlPEFYUEFjdGlvbk1lbnVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5kYXNoYm9hcmRzKCkubWFwKChkYXNoYm9hcmQpID0+ICh7XG4gICAgICB0aXRsZTogZGFzaGJvYXJkLnRpdGxlLFxuICAgICAgY29tbWFuZDogeyBuYW1lOiBkYXNoYm9hcmQuaWQsIG1ldGFkYXRhOiB7IGlzRGFzaGJvYXJkOiB0cnVlLCBkYXNoYm9hcmQgfSB9LFxuICAgICAgaWNvbjogZGFzaGJvYXJkLmlkID09PSB0aGlzLnN0b3JlLmN1cnJlbnREYXNoYm9hcmRJZCgpID8gJ2ZhLXNvbGlkIGZhLWNoZWNrJyA6ICcnLFxuICAgIH0pKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGFzeW5jIGdldFByaW1hcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGl0bGU6ICd0KFwiYWRkLWl0ZW1cIiknLFxuICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtc3F1YXJlLXBsdXMnLFxuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBpdGVtczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2Rhc2hib2FyZCcsIHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0pLFxuICAgICAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLWdhdWdlLWhpZ2gnLFxuICAgICAgICAgICAgYnJlYWs6IHRydWUsXG4gICAgICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICduZXctZGFzaGJvYXJkJyB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnd2lkZ2V0JywgeyBzY29wZTogJ2Rhc2hib2FyZCcgfSksXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtd2luZG93LXJlc3RvcmUnLFxuICAgICAgICAgICAgY29tbWFuZDogeyBuYW1lOiAnbmV3LXdpZGdldCcgfSxcbiAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLnN0b3JlLmRhc2hib2FyZHMoKS5sZW5ndGggPCAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBnZXRTZWNvbmRhcnlNZW51SXRlbXMoKTogUHJvbWlzZTxBWFBBY3Rpb25NZW51SXRlbVtdPiB7XG4gICAgY29uc3QgaXRlbXM6IEFYUEFjdGlvbk1lbnVJdGVtW10gPSBbXG4gICAgICB7XG4gICAgICAgIHRpdGxlOiBhd2FpdCB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmMoJ2VkaXQnKSxcbiAgICAgICAgaWNvbjogJ2ZhLWxpZ2h0IGZhLXBlbicsXG4gICAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLnN0b3JlLmRhc2hib2FyZHMoKS5sZW5ndGggPCAxLFxuICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICdlZGl0JyB9LFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgaWYgKCF0aGlzLnN0b3JlLmlzVXNlckFkbWluKCkgJiYgdGhpcy50aGVtZVNlcnZpY2UuaXNEZXNrdG9wRGV2aWNlKCkpIHtcbiAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICB0aXRsZTogYXdhaXQgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZUFzeW5jKHRoaXMuc3RvcmUuaXNEYXNoYm9hcmRMb2NrZWQoKSA/ICd1bmxvY2snIDogJ2xvY2snLCB7XG4gICAgICAgICAgc2NvcGU6ICdkYXNoYm9hcmQnLFxuICAgICAgICB9KSxcbiAgICAgICAgaWNvbjogdGhpcy5zdG9yZS5pc0Rhc2hib2FyZExvY2tlZCgpID8gJ2ZhLWxpZ2h0IGZhLWxvY2stb3BlbicgOiAnZmEtbGlnaHQgZmEtbG9jaycsXG4gICAgICAgIGNvbG9yOiAnYWNjZW50MycsXG4gICAgICAgIGRpc2FibGVkOiB0aGlzLnN0b3JlLmRhc2hib2FyZHMoKS5sZW5ndGggPCAxLFxuICAgICAgICBjb21tYW5kOiB7IG5hbWU6ICd0b2dnbGUtbG9jaycgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGl0ZW1zLnB1c2goe1xuICAgICAgdGl0bGU6IGF3YWl0IHRoaXMudHJhbnNsYXRlU2VydmljZS50cmFuc2xhdGVBc3luYygnZGVsZXRlJyksXG4gICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gtY2FuJyxcbiAgICAgIGNvbG9yOiAnZGFuZ2VyJyxcbiAgICAgIGRpc2FibGVkOiB0aGlzLnN0b3JlLmRhc2hib2FyZHMoKS5sZW5ndGggPCAxLFxuICAgICAgY29tbWFuZDogeyBuYW1lOiAnZGVsZXRlJyB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgZXhlY3V0ZShjb21tYW5kOiBBWFBFeGVjdXRlQ29tbWFuZCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChjb21tYW5kLm1ldGFkYXRhPy5bJ2lzRGFzaGJvYXJkJ10pIHtcbiAgICAgIHRoaXMuc3RvcmUuaGFuZGxlQ29uZmlnQ2hhbmdlKGNvbW1hbmQubWV0YWRhdGE/LlsnZGFzaGJvYXJkJ10pO1xuICAgICAgdGhpcy5yZWNvbXB1dGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvbW1hbmQubmFtZSkge1xuICAgICAgY2FzZSAnbmV3LWRhc2hib2FyZCc6XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmUuYWRkRGFzaGJvYXJkKCk7XG4gICAgICAgIHRoaXMuYXBwbHlEYXNoYm9hcmRGaWx0ZXJpbmcoKTtcbiAgICAgICAgdGhpcy5yZWNvbXB1dGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICduZXctd2lkZ2V0JzpcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yZS5hZGRXaWRnZXQoKTtcbiAgICAgICAgdGhpcy5yZWNvbXB1dGUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlZGl0JzpcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yZS5lZGl0RGFzaGJvYXJkKCk7XG4gICAgICAgIHRoaXMucmVjb21wdXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yZS5yZW1vdmVEYXNoYm9hcmQodGhpcy5zdG9yZS5zZWxlY3RlZERhc2hib2FyZCgpPy5pZCEpO1xuICAgICAgICB0aGlzLmFwcGx5RGFzaGJvYXJkRmlsdGVyaW5nKCk7XG4gICAgICAgIHRoaXMucmVjb21wdXRlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9nZ2xlLWxvY2snOlxuICAgICAgICBhd2FpdCB0aGlzLnN0b3JlLnRvZ2dsZUxvY2tEYXNoYm9hcmQoKTtcbiAgICAgICAgdGhpcy5yZWNvbXB1dGUoKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnJlY29tcHV0ZSgpLCA1MCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIiwiPGF4cC1wYWdlLWxheW91dCAqdHJhbnNsYXRlPVwibGV0IHRcIj5cbiAgPCEtLSBDb250ZW50IFNlY3Rpb24gLS0+XG5cbiAgPGF4cC1wYWdlLWNvbnRlbnQgY2xhc3M9XCJheC1yZWxhdGl2ZVwiPlxuICAgIDwhLS0gTG9hZGluZyBTdGF0ZSAtLT5cbiAgICBAaWYoc3RvcmUuaXNMb2FkaW5nKCkpIHtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWgtZnVsbCBheC13LWZ1bGwgYXgtYWJzb2x1dGUgYXgtei0xMCBheC1iZy13aGl0ZS84MFwiXG4gICAgPlxuICAgICAgPGF4LWxvYWRpbmc+PC9heC1sb2FkaW5nPlxuICAgICAgPHAgY2xhc3M9XCJheC1tdC0zIGF4LXRleHQtZ3JheS02MDBcIj57eyB0KCdsb2FkaW5nJywgeyBzY29wZTogJ2Rhc2hib2FyZCcgfSkgfCBhc3luYyB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICA8YXhwLXdpZGdldHMtY29udGFpbmVyIFtjb250ZXh0XT1cImNvbnRleHQoKVwiPlxuICAgICAgPGF4LWdyaWQtbGF5b3V0LWNvbnRhaW5lciBbb3B0aW9uc109XCJzdG9yZS5jdXJyZW50TGF5b3V0T3B0aW9ucygpXCIgKG9uQ2hhbmdlKT1cInN0b3JlLm9uR3JpZENoYW5nZSgkZXZlbnQpXCI+XG4gICAgICAgIDwhLS0gTm8gRGFzaGJvYXJkcyBTdGF0ZSAtLT5cbiAgICAgICAgQGlmKCFzdG9yZS5kYXNoYm9hcmRzKCkgfHwgc3RvcmUuZGFzaGJvYXJkcygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtaC1mdWxsIGF4LXAtNFwiPlxuICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1saWdodCBmYS1zaGFwZXNcIiBjbGFzcz1cImF4LXRleHQtNHhsIGF4LW1iLTRcIj48L2F4LWljb24+XG4gICAgICAgICAgPGgyIGNsYXNzPVwiYXgtdGV4dC14bCBheC1mb250LXNlbWlib2xkIGF4LW1iLTJcIj57eyB0KCduby1kYXNoYm9hcmRzJywgeyBzY29wZTogJ2Rhc2hib2FyZCcgfSkgfCBhc3luYyB9fTwvaDI+XG4gICAgICAgICAgPHAgY2xhc3M9XCJheC10ZXh0LWNlbnRlciBheC1tYi02XCI+e3sgdCgnYWRkLWZpcnN0LWRhc2hib2FyZCcsIHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0pIHwgYXN5bmMgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDwhLS0gTm8gU2VsZWN0ZWQgRGFzaGJvYXJkIFN0YXRlIC0tPlxuICAgICAgICBAZWxzZSBpZiAoIXN0b3JlLnNlbGVjdGVkRGFzaGJvYXJkKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWgtZnVsbCBheC1wLTRcIj5cbiAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtc2hhcGVzXCIgY2xhc3M9XCJheC10ZXh0LTR4bCBheC1tYi00XCI+PC9heC1pY29uPlxuICAgICAgICAgIDxoMiBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1zZW1pYm9sZCBheC1tYi0yXCI+XG4gICAgICAgICAgICB7eyB0KCduby1jdXJyZW50LWRhc2hib2FyZCcsIHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0pIHwgYXN5bmMgfX1cbiAgICAgICAgICA8L2gyPlxuICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtbWItNlwiPnt7IHQoJ3NlbGVjdC1kYXNoYm9hcmQnLCB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9KSB8IGFzeW5jIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIE5vIFdpZGdldHMgU3RhdGUgLS0+XG4gICAgICAgIEBlbHNlIGlmICghc3RvcmUuc2VsZWN0ZWREYXNoYm9hcmQoKT8ud2lkZ2V0cyB8fCBzdG9yZS5zZWxlY3RlZERhc2hib2FyZCgpPy53aWRnZXRzPy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtaXRlbXMtY2VudGVyIGF4LWp1c3RpZnktY2VudGVyIGF4LWgtZnVsbCBheC1wLTRcIj5cbiAgICAgICAgICA8YXgtaWNvbiBpY29uPVwiZmEtbGlnaHQgZmEtc2hhcGVzXCIgY2xhc3M9XCJheC10ZXh0LTR4bCBheC1tYi00XCI+PC9heC1pY29uPlxuICAgICAgICAgIDxoMiBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1zZW1pYm9sZCBheC1tYi0yXCI+e3sgdCgnbm8td2lkZ2V0cycsIHsgc2NvcGU6ICdkYXNoYm9hcmQnIH0pIHwgYXN5bmMgfX08L2gyPlxuICAgICAgICAgIDxwIGNsYXNzPVwiYXgtdGV4dC1jZW50ZXIgYXgtbWItNlwiPnt7IHQoJ2FkZC1maXJzdC13aWRnZXQnLCB7IHNjb3BlOiAnZGFzaGJvYXJkJyB9KSB8IGFzeW5jIH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8IS0tIFdpZGdldHMgR3JpZCAtLT5cbiAgICAgICAgQGVsc2UgeyBAZm9yKHdpZGdldCBvZiBzdG9yZS5zZWxlY3RlZERhc2hib2FyZCgpPy53aWRnZXRzOyB0cmFjayB3aWRnZXQuY29uZmlnLmlkKSB7XG4gICAgICAgIDxheC1ncmlkLWxheW91dC13aWRnZXRcbiAgICAgICAgICBbb3B0aW9uc109XCJ3aWRnZXQuY29uZmlnXCJcbiAgICAgICAgICBjbGFzcz1cImRhcms6Wy0tYXgtY29tcC1ncmlkLWxheW91dC1zdGFjay1pdGVtLWNvbnRlbnQtYmctY29sb3I6dmFyKC0tYXgtc3lzLWNvbG9yLWxpZ2h0ZXItc3VyZmFjZSldIFstLWF4LWNvbXAtZ3JpZC1sYXlvdXQtc3RhY2staXRlbS1jb250ZW50LWJnLWNvbG9yOnZhcigtLWF4LXN5cy1jb2xvci1saWdodGVzdC1zdXJmYWNlKV1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGF4bS1kYXNoYm9hcmQtd2lkZ2V0LXdyYXBwZXJcbiAgICAgICAgICAgIFt0aXRsZV09XCJ3aWRnZXQubm9kZT8ub3B0aW9ucz8uWyd0aXRsZSddXCJcbiAgICAgICAgICAgIFtoYXNDb25maWd1cmF0aW9uXT1cInN0b3JlLmNhbkNvbmZpZ3VyZVdpZGdldCgpKHdpZGdldClcIlxuICAgICAgICAgICAgW2lzTG9ja2VkXT1cInN0b3JlLmlzV2lkZ2V0TG9ja2VkKCkod2lkZ2V0KVwiXG4gICAgICAgICAgICAob25EZWxldGUpPVwiY29uZmlybVdpZGdldERlbGV0ZShzdG9yZS5zZWxlY3RlZERhc2hib2FyZCgpPy5pZCEsIHdpZGdldC5jb25maWcuaWQhKVwiXG4gICAgICAgICAgICAob25Db25maWd1cmF0aW9uKT1cInN0b3JlLmhhbmRsZVBvcHVwQ29uZmlndXJhdGlvbih3aWRnZXQubm9kZSEpXCJcbiAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJzdG9yZS5oYW5kbGVWYWx1ZUNoYW5nZWQod2lkZ2V0Py5ub2RlISwkZXZlbnQpXCJcbiAgICAgICAgICAgIChvbk9wdGlvbnNDaGFuZ2VkKT1cInN0b3JlLmhhbmRsZU9wdGlvbnNDaGFuZ2VkKHdpZGdldD8ubm9kZSEsJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmKHdpZGdldC5ub2RlKSB7XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW25vZGVdPVwid2lkZ2V0Lm5vZGVcIiBbbW9kZV09XCIndmlldydcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2F4bS1kYXNoYm9hcmQtd2lkZ2V0LXdyYXBwZXI+XG4gICAgICAgIDwvYXgtZ3JpZC1sYXlvdXQtd2lkZ2V0PlxuICAgICAgICB9IH1cbiAgICAgIDwvYXgtZ3JpZC1sYXlvdXQtY29udGFpbmVyPlxuICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuICAgIH1cbiAgPC9heHAtcGFnZS1jb250ZW50PlxuPC9heHAtcGFnZS1sYXlvdXQ+XG4iXX0=","const path = 'home:dashboard:';\nexport var AXPHomeDashboardSetting;\n(function (AXPHomeDashboardSetting) {\n AXPHomeDashboardSetting[\"CurrentDashboard\"] = \"home:dashboard:current-dashboard\";\n})(AXPHomeDashboardSetting || (AXPHomeDashboardSetting = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0cnRpbmcua2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2ZlYXR1cmVzL2hvbWUtZGFzaGJvYXJkL3NldHJ0aW5nLmtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxJQUFJLEdBQUcsaUJBQWlCLENBQUM7QUFDL0IsTUFBTSxDQUFOLElBQVksdUJBRVg7QUFGRCxXQUFZLHVCQUF1QjtJQUNqQyxnRkFBNkMsQ0FBQTtBQUMvQyxDQUFDLEVBRlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUVsQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHBhdGggPSAnaG9tZTpkYXNoYm9hcmQ6JztcbmV4cG9ydCBlbnVtIEFYUEhvbWVEYXNoYm9hcmRTZXR0aW5nIHtcbiAgQ3VycmVudERhc2hib2FyZCA9IGAke3BhdGh9Y3VycmVudC1kYXNoYm9hcmRgLFxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LW1vZHVsZXMtZGFzaGJvYXJkLW1hbmFnZW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2Fjb3JleC1tb2R1bGVzLWRhc2hib2FyZC1tYW5hZ2VtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i2","i3","i4","i5","rxjsInterval","path","AXPHomeDashboardSetting","i6"],"mappings":"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AAE,EAAE,EAAE,QAAQ,EAAE;AAC5N;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,sHAAsH,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACjW;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,UAAU,EAAE,CAAC;AACrI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,sHAAsH,CAAC,EAAE;AAC9O,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;;;;;;AC5J3B,MAAC,oBAAoB,GAAG;AACpC,IAAI,IAAI,EAAE,cAAc;AACxB,IAAI,KAAK,EAAE,cAAc;AACzB,IAAI,WAAW,EAAE,EAAE;AACnB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,UAAU,EAAE,EAAE;AAClB,IAAI,MAAM,EAAE,CAAC,kBAAkB,CAAC,eAAe,CAAC;AAChD,IAAI,IAAI,EAAE,oBAAoB;AAC9B,IAAI,UAAU,EAAE;AAChB,QAAQ;AACR,YAAY,IAAI,EAAE,UAAU;AAC5B,YAAY,KAAK,EAAE,0CAA0C;AAC7D,YAAY,KAAK,EAAE,uBAAuB;AAC1C,YAAY,MAAM,EAAE;AACpB,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,IAAI,EAAE,UAAU;AACpC,oBAAoB,IAAI,EAAE,kBAAkB;AAC5C,oBAAoB,IAAI,EAAE,iBAAiB,CAAC,MAAM;AAClD,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,UAAU,EAAE,WAAW;AAC/C,wBAAwB,SAAS,EAAE,OAAO;AAC1C,wBAAwB,UAAU,EAAE,MAAM;AAC1C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,KAAK,EAAE,CAAC;AACpB,SAAS;AACT,QAAQ;AACR,YAAY,IAAI,EAAE,QAAQ;AAC1B,YAAY,KAAK,EAAE,iDAAiD;AACpE,YAAY,KAAK,EAAE,uBAAuB;AAC1C,YAAY,MAAM,EAAE;AACpB,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,IAAI,EAAE,QAAQ;AAClC,oBAAoB,IAAI,EAAE,gBAAgB;AAC1C,oBAAoB,IAAI,EAAE,iBAAiB,CAAC,MAAM;AAClD,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,QAAQ,EAAE,IAAI;AACtC,wBAAwB,UAAU,EAAE,WAAW;AAC/C,wBAAwB,SAAS,EAAE,OAAO;AAC1C,wBAAwB,UAAU,EAAE,MAAM;AAC1C,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,EAAE,IAAI;AACzB,YAAY,KAAK,EAAE,CAAC;AACpB,SAAS;AACT,KAAK;AACL,IAAI,UAAU,EAAE;AAChB,QAAQ,IAAI,EAAE;AACd,YAAY,SAAS,EAAE,MAAM,+EAA8C,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,2BAA2B,CAAC;AACtH,SAAS;AACT,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,UAAU,EAAE;AACpB,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,SAAS,EAAE,CAAC;AACxB,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,SAAS,EAAE,CAAC;AACxB,SAAS;AACT,KAAK;AACL;;AChEA;AACA;AACA;AACA;AACO,MAAM,8BAA8B,SAAS,uBAAuB,CAAC;AAC5E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,EAAE;AACf,QAAQ,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3D,QAAQ,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AAC7D,QAAQ,IAAI,CAAC,UAAU,CAAC;AACxB,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE;AAC7B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,SAAS,EAAE,IAAI;AAC3B,YAAY,QAAQ,EAAE,EAAE;AACxB,YAAY,YAAY,EAAE,CAAC;AAC3B,YAAY,QAAQ,EAAE,IAAI;AAC1B,YAAY,cAAc,EAAE,KAAK;AACjC,YAAY,WAAW,EAAE,IAAI;AAC7B,YAAY,eAAe,EAAE,WAAW;AACxC,YAAY,iBAAiB,EAAE,GAAG;AAClC,SAAS,CAAC;AACV;AACA,IAAI,cAAc,CAAC,KAAK,EAAE;AAC1B;AACA;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAChM,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,8BAA8B,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,iIAAiI,EAAE,MAAM,EAAE,CAAC,+CAA+C,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACnmB;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,UAAU,EAAE,CAAC;AACxI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,mBAAmB,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,iIAAiI,EAAE,MAAM,EAAE,CAAC,+CAA+C,CAAC,EAAE;AAC9S,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;;;;;;ACnC3B,MAAC,0BAA0B,GAAG;AAC1C,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,KAAK,EAAE,QAAQ;AACnB;AACY,MAAC,4BAA4B,GAAG;AAC5C,IAAI,IAAI,EAAE,SAAS;AACnB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,KAAK,EAAE,WAAW;AACtB;;ACNY,MAAC,iBAAiB,GAAG;AACjC,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,KAAK,EAAE,kBAAkB;AAC7B,IAAI,UAAU,EAAE,CAAC,0BAA0B,CAAC;AAC5C,IAAI,MAAM,EAAE,CAAC,kBAAkB,CAAC,eAAe,CAAC;AAChD,IAAI,IAAI,EAAE,WAAW;AACrB,IAAI,IAAI,EAAE,uBAAuB;AACjC,IAAI,UAAU,EAAE;AAChB,QAAQ,aAAa,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5D,QAAQ,aAAa,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AACjE;AACA,QAAQ;AACR,YAAY,IAAI,EAAE,OAAO;AACzB,YAAY,KAAK,EAAE,0CAA0C;AAC7D,YAAY,KAAK,EAAE,6BAA6B;AAChD,YAAY,MAAM,EAAE;AACpB,gBAAgB,YAAY,EAAE,EAAE;AAChC,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,IAAI,EAAE,eAAe;AACzC,oBAAoB,IAAI,EAAE,iBAAiB,CAAC,IAAI;AAChD,oBAAoB,OAAO,EAAE;AAC7B,wBAAwB,WAAW,EAAE,mBAAmB;AACxD,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,EAAE,IAAI;AACzB,SAAS;AACT;AACA,QAAQ;AACR,YAAY,IAAI,EAAE,YAAY;AAC9B,YAAY,KAAK,EAAE,2CAA2C;AAC9D,YAAY,KAAK,EAAE,6BAA6B;AAChD,YAAY,MAAM,EAAE;AACpB,gBAAgB,YAAY,EAAE,EAAE;AAChC,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,IAAI,EAAE,YAAY;AACtC,oBAAoB,IAAI,EAAE,oBAAoB;AAC9C,oBAAoB,IAAI,EAAE,iBAAiB,CAAC,IAAI;AAChD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,EAAE,IAAI;AACzB,SAAS;AACT;AACA,QAAQ;AACR,YAAY,IAAI,EAAE,YAAY;AAC9B,YAAY,KAAK,EAAE,2CAA2C;AAC9D,YAAY,KAAK,EAAE,6BAA6B;AAChD,YAAY,MAAM,EAAE;AACpB,gBAAgB,YAAY,EAAE,EAAE;AAChC,gBAAgB,QAAQ,EAAE,QAAQ;AAClC,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,IAAI,EAAE,YAAY;AACtC,oBAAoB,IAAI,EAAE,oBAAoB;AAC9C,oBAAoB,IAAI,EAAE,iBAAiB,CAAC,IAAI;AAChD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,EAAE,IAAI;AACzB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI,UAAU,EAAE;AAChB,QAAQ,IAAI,EAAE;AACd,YAAY,SAAS,EAAE,MAAM,0EAAwC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,gCAAgC,CAAC;AACrH,SAAS;AACT,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,UAAU,EAAE;AACpB,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,SAAS,EAAE,CAAC;AACxB,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,SAAS,EAAE,CAAC;AACxB,SAAS;AACT,KAAK;AACL;;AClPA;AACA;AACA;AACA;AACO,MAAM,gCAAgC,SAAS,uBAAuB,CAAC;AAC9E,IAAI,WAAW,GAAG;AAClB,QAAQ,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AQ,EAAE,QAAQ;AAClC,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,IAAI,EAAE,OAAO;AACjC,oBAAoB,IAAI,EAAE,eAAe;AACzC,oBAAoB,IAAI,EAAE,iBAAiB,CAAC,IAAI;AAChD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,EAAE,IAAI;AACzB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI,UAAU,EAAE;AAChB,QAAQ,IAAI,EAAE;AACd,YAAY,SAAS,EAAE,MAAM,0EAAwC,CAAC,IAAI,CAAC,CAAC,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AAI,EAAE,UAAU;AAC5B,YAAY,KAAK,EAAE,yCAAyC;AAC5D,YAAY,KAAK,EAAE,6BAA6B;AAChD,YAAY,MAAM,EAAE;AACpB,gBAAgB,YAAY,EAAE,KAAK;AACnC,gBAAgB,QAAQ,EAAE,SAAS;AACnC,gBAAgB,SAAS,EAAE;AAC3B,oBAAoB,IAAI,EAAE,UAAU;AACpC,oBAAoB,IAAI,EAAE,kBAAkB;AAC5C,oBAAoB,IAAI,EAAE,iBAAiB,CAAC,MAAM;AAClD,iBAAiB;AACjB,aAAa;AACb,YAAY,OAAO,EAAE,IAAI;AACzB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI,UAAU,EAAE;AAChB,QAAQ,IAAI,EAAE;AACd,YAAY,SAAS,EAAE,MAAM,yEAAuC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,+BAA+B,CAAC;AACnH,SAAS;AACT,KAAK;AACL,IAAI,IAAI,EAAE;AACV,QAAQ,UAAU,EAAE;AACpB,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,MAAM,EAAE,CAAC;AACrB,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,SAAS,EAAE,CAAC;AACxB,YAAY,QAAQ,EAAE,CAAC;AACvB,YAAY,SAAS,EAAE,CAAC;AACxB,SAAS;AACT,KAAK;AACL;;ACpXO,MAAM,gCAAgC,SAAS,uBAAuB,CAAC;AAC9E,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;AACtC,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;AAC3C,QAAQ,IAAI,CAAC,KAA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,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAAC,MAAM,EAAE,CAAC,CAAC;AACt5C;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,UAAU,EAAE,CAAC;AACzI,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC,EAAE,eAAe,EAAE,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,CAAC,EAAE,SAAS,EAAE;AACrL,wBAAwB;AACxB,4BAA4B,OAAO,EAAE,qBAAqB;AAC1D,4BAA4B,QAAQ,EA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"}
|