@acorex/platform 21.0.0-next.2 → 21.0.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/auth/index.d.ts +97 -238
  2. package/common/index.d.ts +778 -213
  3. package/core/index.d.ts +562 -433
  4. package/fesm2022/acorex-platform-auth.mjs +160 -200
  5. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  6. package/fesm2022/acorex-platform-common.mjs +1012 -125
  7. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  8. package/fesm2022/acorex-platform-core.mjs +685 -400
  9. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  10. package/fesm2022/acorex-platform-domain.mjs +54 -11
  11. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  12. package/fesm2022/acorex-platform-layout-builder.mjs +412 -270
  13. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  14. package/fesm2022/acorex-platform-layout-components.mjs +2112 -3153
  15. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  16. package/fesm2022/acorex-platform-layout-designer.mjs +7 -7
  17. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-layout-entity.mjs +756 -648
  19. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-layout-views.mjs +4 -4
  21. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-layout-widget-core.mjs +248 -174
  23. package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
  24. package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs → acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs} +2 -2
  25. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs} +2 -2
  27. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +1 -0
  28. package/fesm2022/acorex-platform-layout-widgets.mjs +3058 -1038
  29. package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
  30. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs → acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs} +26 -5
  31. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +1 -0
  32. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs → acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs} +4 -5
  33. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +101 -0
  35. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +1 -0
  36. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs → acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs} +3 -3
  37. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +1 -0
  38. package/fesm2022/acorex-platform-themes-default.mjs +166 -30
  39. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  40. package/fesm2022/acorex-platform-themes-shared.mjs +27 -27
  41. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  42. package/layout/builder/index.d.ts +4 -1
  43. package/layout/components/index.d.ts +405 -327
  44. package/layout/designer/index.d.ts +3 -3
  45. package/layout/entity/index.d.ts +163 -108
  46. package/layout/widget-core/index.d.ts +39 -49
  47. package/layout/widgets/index.d.ts +368 -54
  48. package/package.json +5 -5
  49. package/themes/default/index.d.ts +15 -2
  50. package/themes/shared/index.d.ts +10 -10
  51. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs +0 -50
  52. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs.map +0 -1
  53. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs +0 -42
  54. package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs.map +0 -1
  55. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs +0 -55
  56. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs.map +0 -1
  57. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs +0 -50
  58. package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs.map +0 -1
  59. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs +0 -48
  60. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs.map +0 -1
  61. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs +0 -42
  62. package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs.map +0 -1
  63. package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs.map +0 -1
  64. package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs.map +0 -1
  65. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs.map +0 -1
  66. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs.map +0 -1
  67. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs +0 -101
  68. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs.map +0 -1
  69. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-layout-widget-core.mjs","sources":["../tmp-esm2022/layout/widget-core/lib/widget-core-store.service.js","../tmp-esm2022/layout/widget-core/lib/widget-status.types.js","../tmp-esm2022/layout/widget-core/lib/widget-core.service.js","../tmp-esm2022/layout/widget-core/lib/widget-catalog.js","../tmp-esm2022/layout/widget-core/lib/widget.types.js","../tmp-esm2022/layout/widget-core/lib/widget-base.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/box-model-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/block-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/flex-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/inline-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/flex-item-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/grid-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/grid-item-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/table-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/table-item-ops-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/table-item-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/widget-registery.service.js","../tmp-esm2022/layout/widget-core/lib/widget-column-renderer.js","../tmp-esm2022/layout/widget-core/lib/widget-container.component.js","../tmp-esm2022/layout/widget-core/lib/widget-placeholder.component.js","../tmp-esm2022/layout/widget-core/lib/widget-renderer.directive.js","../tmp-esm2022/layout/widget-core/lib/widget-core.module.js","../tmp-esm2022/layout/widget-core/lib/helper/property-editor.helper.js","../tmp-esm2022/layout/widget-core/lib/widget-categories.js","../tmp-esm2022/layout/widget-core/lib/widget-group.types.js","../tmp-esm2022/layout/widget-core/lib/runtime/widget-standalone-renderer-host.component.js","../tmp-esm2022/layout/widget-core/lib/runtime/widget-rendering.engine.js","../tmp-esm2022/layout/widget-core/acorex-platform-layout-widget-core.js"],"sourcesContent":["import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';\nimport { cloneDeep, get, isEqual } from 'lodash-es';\nimport { computed } from '@angular/core';\nimport { setSmart } from '@acorex/platform/core';\nexport class AXPWidgetCoreContextChangeEvent {\n}\nexport const AXPWidgetCoreContextStore = signalStore(\n// Initial State\nwithState(() => ({\n data: {}, // Shared context data\n state: 'initiated', // Current state\n initialSnapshot: {}, // Snapshot of the first initialized state\n previousSnapshot: {}, // Snapshot of the previous state\n lastChange: {\n state: 'initiated',\n }, // Last change event\n})), \n// Computed Signals\nwithComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({\n isChanged: computed(() => state() === 'changed'),\n isReset: computed(() => state() === 'restored'),\n isInitiated: computed(() => state() === 'initiated'),\n isEmpty: computed(() => Object.keys(data()).length === 0),\n isDirty: computed(() => !isEqual(data(), previousSnapshot())),\n snapshot: computed(() => cloneDeep(data())), // Current data snapshot\n initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot\n previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot\n changeEvent: computed(() => lastChange()), // Reactive last change event\n})), \n// Methods for State Management\nwithMethods((store) => ({\n // Update a specific value\n update(path, value) {\n const currentData = cloneDeep(store.data());\n const oldValue = get(currentData, path);\n // Skip if the value hasn't changed\n if (isEqual(oldValue, value)) {\n return;\n }\n // Update the value and prepare the change event\n const updatedData = setSmart(currentData, path, value);\n const changeEvent = {\n oldValue,\n newValue: value,\n path,\n state: 'changed',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n patch(context) {\n const currentData = cloneDeep(store.data());\n // Update the value and prepare the change event\n const updatedData = { ...currentData, ...context };\n const changeEvent = {\n state: 'patch',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n // Reset to the initial state\n reset() {\n const initialData = store.initial();\n const changeEvent = {\n oldValue: cloneDeep(store.data()), // Current data becomes old value\n newValue: cloneDeep(initialData), // Reset to the initial state\n path: '',\n state: 'restored',\n data: initialData,\n };\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: initialData,\n state: 'restored',\n lastChange: changeEvent,\n });\n },\n // Initialize the state\n set(initialData) {\n const currentData = store.data();\n if (isEqual(currentData, initialData)) {\n return; // Skip if the current state matches the initial state\n }\n const changeEvent = {\n oldValue: null,\n newValue: cloneDeep(initialData),\n path: '',\n state: 'initiated',\n data: initialData,\n };\n patchState(store, {\n initialSnapshot: cloneDeep(initialData), // Save the initial state\n previousSnapshot: store.snapshot(), // Save the current state as the previous\n data: initialData,\n state: 'initiated',\n lastChange: changeEvent,\n });\n },\n // Get a specific value\n getValue(path) {\n return get(store.data(), path);\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvcmUtc3RvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LWNvcmUtc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBTyxPQUFPLEVBQVMsTUFBTSxXQUFXLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJakQsTUFBTSxPQUFPLCtCQUErQjtDQU0zQztBQUVELE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFdBQVc7QUFDaEQsZ0JBQWdCO0FBQ2hCLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxFQUFFLEVBQUUsRUFBRSxzQkFBc0I7SUFDaEMsS0FBSyxFQUFFLFdBQXdDLEVBQUUsZ0JBQWdCO0lBQ2pFLGVBQWUsRUFBRSxFQUFFLEVBQUUsMENBQTBDO0lBQy9ELGdCQUFnQixFQUFFLEVBQUUsRUFBRSxpQ0FBaUM7SUFDdkQsVUFBVSxFQUFFO1FBQ1IsS0FBSyxFQUFFLFdBQVc7S0FDYyxFQUFFLG9CQUFvQjtDQUM3RCxDQUFDLENBQUM7QUFFSCxtQkFBbUI7QUFDbkIsWUFBWSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5RSxTQUFTLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxL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Q0FBQztJQUNQLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsUUFBUSxDQUFDLElBQVk7UUFDakIsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDSixDQUFDLENBQUMsQ0FDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2lnbmFsU3RvcmUsIHdpdGhTdGF0ZSwgd2l0aENvbXB1dGVkLCB3aXRoTWV0aG9kcywgcGF0Y2hTdGF0ZSB9IGZyb20gJ0BuZ3J4L3NpZ25hbHMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBnZXQsIHNldCwgaXNFcXVhbCwgbWVyZ2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNldFNtYXJ0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0Q29yZUNvbnRleHRTdGF0ZSA9ICdpbml0aWF0ZWQnIHwgJ3Jlc3RvcmVkJyB8ICdjaGFuZ2VkJyB8ICdwYXRjaCc7XG5cbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRDb3JlQ29udGV4dENoYW5nZUV2ZW50IHtcbiAgICBvbGRWYWx1ZT86IGFueTtcbiAgICBuZXdWYWx1ZT86IGFueTtcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIHN0YXRlOiBBWFBXaWRnZXRDb3JlQ29udGV4dFN0YXRlO1xuICAgIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUgPSBzaWduYWxTdG9yZShcbiAgICAvLyBJbml0aWFsIFN0YXRlXG4gICAgd2l0aFN0YXRlKCgpID0+ICh7XG4gICAgICAgIGRhdGE6IHt9LCAvLyBTaGFyZWQgY29udGV4dCBkYXRhXG4gICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyBhcyBBWFBXaWRnZXRDb3JlQ29udGV4dFN0YXRlLCAvLyBDdXJyZW50IHN0YXRlXG4gICAgICAgIGluaXRpYWxTbmFwc2hvdDoge30sIC8vIFNuYXBzaG90IG9mIHRoZSBmaXJzdCBpbml0aWFsaXplZCBzdGF0ZVxuICAgICAgICBwcmV2aW91c1NuYXBzaG90OiB7fSwgLy8gU25hcHNob3Qgb2YgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgIGxhc3RDaGFuZ2U6IHtcbiAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgfSBhcyBBWFBXaWRnZXRDb3JlQ29udGV4dENoYW5nZUV2ZW50LCAvLyBMYXN0IGNoYW5nZSBldmVudFxuICAgIH0pKSxcblxuICAgIC8vIENvbXB1dGVkIFNpZ25hbHNcbiAgICB3aXRoQ29tcHV0ZWQoKHsgZGF0YSwgc3RhdGUsIGxhc3RDaGFuZ2UsIGluaXRpYWxTbmFwc2hvdCwgcHJldmlvdXNTbmFwc2hvdCB9KSA9PiAoe1xuICAgICAgICBpc0NoYW5nZWQ6IGNvbXB1dGVkKCgpID0+IHN0YXRlKCkgPT09ICdjaGFuZ2VkJyksXG4gICAgICAgIGlzUmVzZXQ6IGNvbXB1dGVkKCgpID0+IHN0YXRlKCkgPT09ICdyZXN0b3JlZCcpLFxuICAgICAgICBpc0luaXRpYXRlZDogY29tcHV0ZWQoKCkgPT4gc3RhdGUoKSA9PT0gJ2luaXRpYXRlZCcpLFxuICAgICAgICBpc0VtcHR5OiBjb21wdXRlZCgoKSA9PiBPYmplY3Qua2V5cyhkYXRhKCkpLmxlbmd0aCA9PT0gMCksXG4gICAgICAgIGlzRGlydHk6IGNvbXB1dGVkKCgpID0+ICFpc0VxdWFsKGRhdGEoKSwgcHJldmlvdXNTbmFwc2hvdCgpKSksIFxuICAgICAgICBzbmFwc2hvdDogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKGRhdGEoKSkpLCAvLyBDdXJyZW50IGRhdGEgc25hcHNob3RcbiAgICAgICAgaW5pdGlhbDogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKGluaXRpYWxTbmFwc2hvdCgpKSksIC8vIEluaXRpYWwgc25hcHNob3RcbiAgICAgICAgcHJldmlvdXM6IGNvbXB1dGVkKCgpID0+IGNsb25lRGVlcChwcmV2aW91c1NuYXBzaG90KCkpKSwgLy8gUHJldmlvdXMgc25hcHNob3RcbiAgICAgICAgY2hhbmdlRXZlbnQ6IGNvbXB1dGVkKCgpID0+IGxhc3RDaGFuZ2UoKSksIC8vIFJlYWN0aXZlIGxhc3QgY2hhbmdlIGV2ZW50XG4gICAgfSkpLFxuXG4gICAgLy8gTWV0aG9kcyBmb3IgU3RhdGUgTWFuYWdlbWVudFxuICAgIHdpdGhNZXRob2RzKChzdG9yZSkgPT4gKHtcbiAgICAgICAgLy8gVXBkYXRlIGEgc3BlY2lmaWMgdmFsdWVcbiAgICAgICAgdXBkYXRlKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGEgPSBjbG9uZURlZXAoc3RvcmUuZGF0YSgpKTtcbiAgICAgICAgICAgIGNvbnN0IG9sZFZhbHVlID0gZ2V0KGN1cnJlbnREYXRhLCBwYXRoKTtcblxuICAgICAgICAgICAgLy8gU2tpcCBpZiB0aGUgdmFsdWUgaGFzbid0IGNoYW5nZWRcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKG9sZFZhbHVlLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgdmFsdWUgYW5kIHByZXBhcmUgdGhlIGNoYW5nZSBldmVudFxuICAgICAgICAgICAgY29uc3QgdXBkYXRlZERhdGEgPSBzZXRTbWFydChjdXJyZW50RGF0YSwgcGF0aCwgdmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUFdpZGdldENvcmVDb250ZXh0Q2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgb2xkVmFsdWUsXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIFBhdGNoIHRoZSBzdGF0ZVxuICAgICAgICAgICAgcGF0Y2hTdGF0ZShzdG9yZSwge1xuICAgICAgICAgICAgICAgIHByZXZpb3VzU25hcHNob3Q6IHN0b3JlLnNuYXBzaG90KCksIC8vIFNhdmUgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlZERhdGEsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdjaGFuZ2VkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIHBhdGNoKGNvbnRleHQ6IHt9KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IGNsb25lRGVlcChzdG9yZS5kYXRhKCkpO1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhbmQgcHJlcGFyZSB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHsgLi4uY3VycmVudERhdGEsIC4uLmNvbnRleHQgfTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBBWFBXaWRnZXRDb3JlQ29udGV4dENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIHN0YXRlOiAncGF0Y2gnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gUGF0Y2ggdGhlIHN0YXRlXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoYW5nZWQnLFxuICAgICAgICAgICAgICAgIGxhc3RDaGFuZ2U6IGNoYW5nZUV2ZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gUmVzZXQgdG8gdGhlIGluaXRpYWwgc3RhdGVcbiAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICBjb25zdCBpbml0aWFsRGF0YSA9IHN0b3JlLmluaXRpYWwoKTtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBBWFBXaWRnZXRDb3JlQ29udGV4dENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIG9sZFZhbHVlOiBjbG9uZURlZXAoc3RvcmUuZGF0YSgpKSwgLy8gQ3VycmVudCBkYXRhIGJlY29tZXMgb2xkIHZhbHVlXG4gICAgICAgICAgICAgICAgbmV3VmFsdWU6IGNsb25lRGVlcChpbml0aWFsRGF0YSksIC8vIFJlc2V0IHRvIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgc3RhdGU6ICdyZXN0b3JlZCcsXG4gICAgICAgICAgICAgICAgZGF0YTogaW5pdGlhbERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ3Jlc3RvcmVkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHN0YXRlXG4gICAgICAgIHNldChpbml0aWFsRGF0YTogYW55KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IHN0b3JlLmRhdGEoKTtcbiAgICAgICAgICAgIGlmIChpc0VxdWFsKGN1cnJlbnREYXRhLCBpbml0aWFsRGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47IC8vIFNraXAgaWYgdGhlIGN1cnJlbnQgc3RhdGUgbWF0Y2hlcyB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogQVhQV2lkZ2V0Q29yZUNvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogY2xvbmVEZWVwKGluaXRpYWxEYXRhKSxcbiAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcsXG4gICAgICAgICAgICAgICAgZGF0YTogaW5pdGlhbERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgaW5pdGlhbFNuYXBzaG90OiBjbG9uZURlZXAoaW5pdGlhbERhdGEpLCAvLyBTYXZlIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBhcyB0aGUgcHJldmlvdXNcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2luaXRpYXRlZCcsXG4gICAgICAgICAgICAgICAgbGFzdENoYW5nZTogY2hhbmdlRXZlbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBHZXQgYSBzcGVjaWZpYyB2YWx1ZVxuICAgICAgICBnZXRWYWx1ZShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBnZXQoc3RvcmUuZGF0YSgpLCBwYXRoKTtcbiAgICAgICAgfSxcbiAgICB9KSlcbik7XG4iXX0=","export var AXPPageStatus;\n(function (AXPPageStatus) {\n // Idle statuses\n AXPPageStatus[\"Idle\"] = \"idle\";\n // Rendering statuses\n AXPPageStatus[\"Rendering\"] = \"rendering\";\n AXPPageStatus[\"Rendered\"] = \"rendered\";\n // Processing statuses\n AXPPageStatus[\"Processing\"] = \"processing\";\n // Submission statuses\n AXPPageStatus[\"Submitting\"] = \"submitting\";\n AXPPageStatus[\"Submitted\"] = \"submitted\";\n // Validation statuses\n AXPPageStatus[\"Validating\"] = \"validating\";\n AXPPageStatus[\"Validated\"] = \"validated\";\n // Error handling\n AXPPageStatus[\"Error\"] = \"error\";\n})(AXPPageStatus || (AXPPageStatus = {}));\nexport var AXPWidgetStatus;\n(function (AXPWidgetStatus) {\n // Rendering statuses\n AXPWidgetStatus[\"Rendering\"] = \"rendering\";\n AXPWidgetStatus[\"Rendered\"] = \"rendered\";\n // Processing statuses\n AXPWidgetStatus[\"Processing\"] = \"processing\";\n // Error handling\n AXPWidgetStatus[\"Error\"] = \"error\";\n})(AXPWidgetStatus || (AXPWidgetStatus = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXN0YXR1cy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LXN0YXR1cy50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQXFCWDtBQXJCRCxXQUFZLGFBQWE7SUFDckIsZ0JBQWdCO0lBQ2hCLDhCQUFhLENBQUE7SUFFYixxQkFBcUI7SUFDckIsd0NBQXVCLENBQUE7SUFDdkIsc0NBQXFCLENBQUE7SUFFckIsc0JBQXNCO0lBQ3RCLDBDQUF5QixDQUFBO0lBRXpCLHNCQUFzQjtJQUN0QiwwQ0FBeUIsQ0FBQTtJQUN6Qix3Q0FBdUIsQ0FBQTtJQUV2QixzQkFBc0I7SUFDdEIsMENBQXlCLENBQUE7SUFDekIsd0NBQXVCLENBQUE7SUFFdkIsaUJBQWlCO0lBQ2pCLGdDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQXJCVyxhQUFhLEtBQWIsYUFBYSxRQXFCeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQVVYO0FBVkQsV0FBWSxlQUFlO0lBQ3ZCLHFCQUFxQjtJQUNyQiwwQ0FBdUIsQ0FBQTtJQUN2Qix3Q0FBcUIsQ0FBQTtJQUVyQixzQkFBc0I7SUFDdEIsNENBQXlCLENBQUE7SUFFekIsaUJBQWlCO0lBQ2pCLGtDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVZXLGVBQWUsS0FBZixlQUFlLFFBVTFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQVhQUGFnZVN0YXR1cyB7XG4gICAgLy8gSWRsZSBzdGF0dXNlc1xuICAgIElkbGUgPSAnaWRsZScsICAgICAgICAgICAgICAgICAvLyBUaGUgcGFnZSBpcyBpZGxlLlxuXG4gICAgLy8gUmVuZGVyaW5nIHN0YXR1c2VzXG4gICAgUmVuZGVyaW5nID0gJ3JlbmRlcmluZycsICAgICAgIC8vIFRoZSBwYWdlIGlzIGJlaW5nIHJlbmRlcmVkLlxuICAgIFJlbmRlcmVkID0gJ3JlbmRlcmVkJywgICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIHByb2Nlc3MgaXMgY29tcGxldGUuIHNob3VsZCBiZSByZW5hbWVkIHRvIGlkbGVcblxuICAgIC8vIFByb2Nlc3Npbmcgc3RhdHVzZXNcbiAgICBQcm9jZXNzaW5nID0gJ3Byb2Nlc3NpbmcnLCAgICAgLy8gVGhlIHBhZ2UgaXMgcGVyZm9ybWluZyBhIHRhc2sgb3IgaW50ZXJhY3Rpb24uXG5cbiAgICAvLyBTdWJtaXNzaW9uIHN0YXR1c2VzXG4gICAgU3VibWl0dGluZyA9ICdzdWJtaXR0aW5nJywgICAvLyBUaGUgZm9ybSBpcyBiZWluZyBzdWJtaXR0ZWQuXG4gICAgU3VibWl0dGVkID0gJ3N1Ym1pdHRlZCcsICAgICAvLyBTdWJtaXNzaW9uIGlzIGNvbXBsZXRlZC5cblxuICAgIC8vIFZhbGlkYXRpb24gc3RhdHVzZXNcbiAgICBWYWxpZGF0aW5nID0gJ3ZhbGlkYXRpbmcnLCAgICAgLy8gVGhlIGZvcm0gaXMgYmVpbmcgdmFsaWRhdGVkLlxuICAgIFZhbGlkYXRlZCA9ICd2YWxpZGF0ZWQnLCAgICAgICAvLyBWYWxpZGF0aW9uIGlzIGNvbXBsZXRlZC4gIFxuXG4gICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICBFcnJvciA9ICdlcnJvcicsXG59XG5cbmV4cG9ydCBlbnVtIEFYUFdpZGdldFN0YXR1cyB7XG4gICAgLy8gUmVuZGVyaW5nIHN0YXR1c2VzXG4gICAgUmVuZGVyaW5nID0gJ3JlbmRlcmluZycsICAgICAgIC8vIFRoZSB3aWRnZXQgaXMgYmVpbmcgcmVuZGVyZWQuXG4gICAgUmVuZGVyZWQgPSAncmVuZGVyZWQnLCAgICAgICAgIC8vIFRoZSByZW5kZXJpbmcgcHJvY2VzcyBpcyBjb21wbGV0ZS5cblxuICAgIC8vIFByb2Nlc3Npbmcgc3RhdHVzZXNcbiAgICBQcm9jZXNzaW5nID0gJ3Byb2Nlc3NpbmcnLCAgICAgLy8gVGhlIHdpZGdldCBpcyBwZXJmb3JtaW5nIGEgdGFzayBvciBpbnRlcmFjdGlvbi5cblxuICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgRXJyb3IgPSAnZXJyb3InLCAgICAgICAgICAgICAgIC8vIEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBhbnkgcGhhc2UuXG59XG4iXX0=","import { computed, Injectable, signal } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPPageStatus, AXPWidgetStatus } from './widget-status.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetCoreElement {\n api() {\n return {};\n }\n actions() {\n return [];\n }\n}\nexport class AXPWidgetCoreService {\n constructor() {\n this.variables$ = signal({}, ...(ngDevMode ? [{ debugName: \"variables$\" }] : []));\n this.functions$ = signal({}, ...(ngDevMode ? [{ debugName: \"functions$\" }] : []));\n this.onRefresh = new Subject();\n this.widgets = new Map();\n this.onWidgetRegistered = new Subject();\n this.status$ = signal(AXPPageStatus.Rendering, ...(ngDevMode ? [{ debugName: \"status$\" }] : []));\n this.status = this.status$.asReadonly();\n this.isBusy = computed(() => {\n return [AXPPageStatus.Processing, AXPPageStatus.Submitting, AXPPageStatus.Rendering].includes(this.status());\n }, ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n this.registeredWidgetsCount = signal(0, ...(ngDevMode ? [{ debugName: \"registeredWidgetsCount\" }] : []));\n }\n get variables() {\n return this.variables$();\n }\n get functions() {\n return this.functions$();\n }\n updateStatus() {\n this.status$.update(() => this.detectStatus());\n this.registeredWidgetsCount.set(this.widgets.size);\n }\n detectStatus() {\n const statuses = Array.from(this.widgets.values()).map((c) => c.status());\n // Rendering statuses\n if (statuses.some((status) => status === AXPWidgetStatus.Rendering)) {\n return AXPPageStatus.Rendering;\n }\n if (statuses.every((status) => status === AXPWidgetStatus.Rendered)) {\n return AXPPageStatus.Rendered;\n }\n // Processing statuses\n if (statuses.some((status) => status === AXPWidgetStatus.Processing)) {\n return AXPPageStatus.Processing;\n }\n // Error handling\n if (statuses.some((status) => status === AXPWidgetStatus.Error)) {\n return AXPPageStatus.Error;\n }\n return AXPPageStatus.Rendered; // Default to Loaded when all widgets are in a completed state\n }\n refresh() {\n setTimeout(() => {\n this.onRefresh.next();\n }, 0);\n }\n setStatus(status) {\n this.status$.set(status);\n }\n setVariables(...args) {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.variables$.set(args[0]);\n else if (args.length == 2) {\n this.variables$.update((v) => set(v, args[0], args[1]));\n }\n }\n setFunctions(...args) {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.functions$.set(args[0]);\n else if (args.length == 2) {\n this.functions$.update((v) => set(v, args[0], args[1]));\n }\n }\n registerWidget(id, widget) {\n this.widgets.set(id, widget);\n this.onWidgetRegistered.next({ id, widget });\n }\n getWidget(id) {\n return this.widgets.get(id);\n }\n /**\n * Waits until a widget with the given id is registered, then resolves with it.\n * If the widget is already registered, resolves immediately.\n * Optionally accepts a timeout (in ms) after which it resolves with undefined.\n */\n async waitForWidget(id, timeoutMs) {\n const existing = this.widgets.get(id);\n if (existing) {\n return existing;\n }\n return new Promise((resolve) => {\n let resolved = false;\n let timer = null;\n const sub = this.onWidgetRegistered.subscribe(({ id: registeredId, widget }) => {\n if (registeredId === id && !resolved) {\n resolved = true;\n sub.unsubscribe();\n if (timer) {\n clearTimeout(timer);\n }\n resolve(widget);\n }\n });\n if (timeoutMs != null && timeoutMs > 0) {\n timer = setTimeout(() => {\n if (!resolved) {\n resolved = true;\n sub.unsubscribe();\n resolve(undefined);\n }\n }, timeoutMs);\n }\n });\n }\n /**\n * Returns a list of registered widget ids (names).\n */\n listRegisteredWidgetNames() {\n return Array.from(this.widgets.keys());\n }\n ngOnDestroy() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LWNvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBaUJ2RSxNQUFNLE9BQWdCLG9CQUFvQjtJQUl4QyxHQUFHO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTztRQUNMLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLG9CQUFvQjtJQURqQztRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFNLEVBQUUsc0RBQUMsQ0FBQztRQUM3QixlQUFVLEdBQUcsTUFBTSxDQUE4QixFQUFFLHNEQUFDLENBQUM7UUFFdEQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXZELFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBZ0QsQ0FBQztRQUVqRixZQUFPLEdBQUcsTUFBTSxDQUFnQixhQUFhLENBQUMsU0FBUyxtREFBQyxDQUFDO1FBQzFELFdBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRW5DLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRyxDQUFDLGtEQUFDLENBQUM7UUFFSSwyQkFBc0IsR0FBRyxNQUFNLENBQVMsQ0FBQyxrRUFBQyxDQUFDO0tBMkhuRDtJQXpIQyxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFMUUscUJBQXFCO1FBQ3JCLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxLQUFLLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDcEUsT0FBTyxhQUFhLENBQUMsUUFBUSxDQUFDO1FBQ2hDLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckUsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDaEUsT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQzdCLENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyw4REFBOEQ7SUFDL0YsQ0FBQztJQUVELE9BQU87UUFDTCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQXFCO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFJRCxZQUFZLENBQUMsR0FBRyxJQUFXO1FBQ3pCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsT0FBTzthQUN4QixJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ25ELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQztJQUlELFlBQVksQ0FBQyxHQUFHLElBQVc7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPO2FBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbkQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLEVBQVUsRUFBRSxNQUE0QjtRQUNyRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFVLEVBQUUsU0FBa0I7UUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLElBQUksT0FBTyxDQUFtQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQy9ELElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLEtBQUssR0FBUSxJQUFJLENBQUM7WUFDdEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2dCQUM3RSxJQUFJLFlBQVksS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDckMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDaEIsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO29CQUNsQixJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNWLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEIsQ0FBQztvQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2QsUUFBUSxHQUFHLElBQUksQ0FBQzt3QkFDaEIsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNsQixPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUF5QjtRQUN2QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxXQUFXLEtBQVUsQ0FBQzsrR0ExSVgsb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBQYWdlU3RhdHVzLCBBWFBXaWRnZXRTdGF0dXMgfSBmcm9tICcuL3dpZGdldC1zdGF0dXMudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRDb3JlRWxlbWVudEFQSSA9IHsgW25hbWU6IHN0cmluZ106IFN1YmplY3Q8YW55PiB8IEZ1bmN0aW9uIH07XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldENvcmVFbGVtZW50QWN0aW9uID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICAvLyBDYW4gYmUgYm9vbGVhbiBvciBhbiBleHByZXNzaW9uIHN0cmluZyBsaWtlICd7e2FwaS5nZXRTdGF0dXMoKS5pc0ZpcnN0fX0nXG4gIGRpc2FibGVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbiB8IHN0cmluZztcbiAgem9uZT86ICdoZWFkZXInIHwgJ2Zvb3Rlcic7XG4gIC8vIFBsYWNlbWVudCBpbnNpZGUgdGhlIHpvbmUgZm9yIGRpYWxvZyByZW5kZXJpbmdcbiAgcGxhY2VtZW50PzogJ3ByZWZpeCcgfCAnc3VmZml4JztcbiAgc2NvcGU/OiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5Jztcbn07XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQV2lkZ2V0Q29yZUVsZW1lbnQge1xuICBhYnN0cmFjdCBnZXQgaWQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWJzdHJhY3QgZ2V0IHN0YXR1cygpOiBTaWduYWw8QVhQV2lkZ2V0U3RhdHVzPjtcblxuICBhcGkoKTogQVhQV2lkZ2V0Q29yZUVsZW1lbnRBUEkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBhY3Rpb25zKCk6IEFYUFdpZGdldENvcmVFbGVtZW50QWN0aW9uW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29yZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHZhcmlhYmxlcyQgPSBzaWduYWw8YW55Pih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZnVuY3Rpb25zJCA9IHNpZ25hbDx7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0+KHt9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25SZWZyZXNoOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHdpZGdldHMgPSBuZXcgTWFwPHN0cmluZywgQVhQV2lkZ2V0Q29yZUVsZW1lbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25XaWRnZXRSZWdpc3RlcmVkID0gbmV3IFN1YmplY3Q8eyBpZDogc3RyaW5nOyB3aWRnZXQ6IEFYUFdpZGdldENvcmVFbGVtZW50IH0+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXMkID0gc2lnbmFsPEFYUFBhZ2VTdGF0dXM+KEFYUFBhZ2VTdGF0dXMuUmVuZGVyaW5nKTtcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IHRoaXMuc3RhdHVzJC5hc1JlYWRvbmx5KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gW0FYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZywgQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLCBBWFBQYWdlU3RhdHVzLlJlbmRlcmluZ10uaW5jbHVkZXModGhpcy5zdGF0dXMoKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyByZWdpc3RlcmVkV2lkZ2V0c0NvdW50ID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgZ2V0IHZhcmlhYmxlcygpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZXMkKCk7XG4gIH1cblxuICBnZXQgZnVuY3Rpb25zKCk6IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zJCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVN0YXR1cygpIHtcbiAgICB0aGlzLnN0YXR1cyQudXBkYXRlKCgpID0+IHRoaXMuZGV0ZWN0U3RhdHVzKCkpO1xuICAgIHRoaXMucmVnaXN0ZXJlZFdpZGdldHNDb3VudC5zZXQodGhpcy53aWRnZXRzLnNpemUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RTdGF0dXMoKTogQVhQUGFnZVN0YXR1cyB7XG4gICAgY29uc3Qgc3RhdHVzZXMgPSBBcnJheS5mcm9tKHRoaXMud2lkZ2V0cy52YWx1ZXMoKSkubWFwKChjKSA9PiBjLnN0YXR1cygpKTtcblxuICAgIC8vIFJlbmRlcmluZyBzdGF0dXNlc1xuICAgIGlmIChzdGF0dXNlcy5zb21lKChzdGF0dXMpID0+IHN0YXR1cyA9PT0gQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmluZykpIHtcbiAgICAgIHJldHVybiBBWFBQYWdlU3RhdHVzLlJlbmRlcmluZztcbiAgICB9XG4gICAgaWYgKHN0YXR1c2VzLmV2ZXJ5KChzdGF0dXMpID0+IHN0YXR1cyA9PT0gQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmVkKSkge1xuICAgICAgcmV0dXJuIEFYUFBhZ2VTdGF0dXMuUmVuZGVyZWQ7XG4gICAgfVxuXG4gICAgLy8gUHJvY2Vzc2luZyBzdGF0dXNlc1xuICAgIGlmIChzdGF0dXNlcy5zb21lKChzdGF0dXMpID0+IHN0YXR1cyA9PT0gQVhQV2lkZ2V0U3RhdHVzLlByb2Nlc3NpbmcpKSB7XG4gICAgICByZXR1cm4gQVhQUGFnZVN0YXR1cy5Qcm9jZXNzaW5nO1xuICAgIH1cblxuICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgaWYgKHN0YXR1c2VzLnNvbWUoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBXaWRnZXRTdGF0dXMuRXJyb3IpKSB7XG4gICAgICByZXR1cm4gQVhQUGFnZVN0YXR1cy5FcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gQVhQUGFnZVN0YXR1cy5SZW5kZXJlZDsgLy8gRGVmYXVsdCB0byBMb2FkZWQgd2hlbiBhbGwgd2lkZ2V0cyBhcmUgaW4gYSBjb21wbGV0ZWQgc3RhdGVcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVmcmVzaC5uZXh0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBzZXRTdGF0dXMoc3RhdHVzOiBBWFBQYWdlU3RhdHVzKSB7XG4gICAgdGhpcy5zdGF0dXMkLnNldChzdGF0dXMpO1xuICB9XG5cbiAgc2V0VmFyaWFibGVzKGtleXNWYWx1ZXM6IGFueSk6IHZvaWQ7XG4gIHNldFZhcmlhYmxlcyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gIHNldFZhcmlhYmxlcyguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT0gMSkgdGhpcy52YXJpYWJsZXMkLnNldChhcmdzWzBdKTtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICB0aGlzLnZhcmlhYmxlcyQudXBkYXRlKCh2KSA9PiBzZXQodiwgYXJnc1swXSwgYXJnc1sxXSkpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZ1bmN0aW9ucyhrZXlzVmFsdWVzOiBhbnkpOiB2b2lkO1xuICBzZXRGdW5jdGlvbnMoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICBzZXRGdW5jdGlvbnMoLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPT0gMCkgcmV0dXJuO1xuICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09IDEpIHRoaXMuZnVuY3Rpb25zJC5zZXQoYXJnc1swXSk7XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT0gMikge1xuICAgICAgdGhpcy5mdW5jdGlvbnMkLnVwZGF0ZSgodikgPT4gc2V0KHYsIGFyZ3NbMF0sIGFyZ3NbMV0pKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3RlcldpZGdldChpZDogc3RyaW5nLCB3aWRnZXQ6IEFYUFdpZGdldENvcmVFbGVtZW50KSB7XG4gICAgdGhpcy53aWRnZXRzLnNldChpZCwgd2lkZ2V0KTtcbiAgICB0aGlzLm9uV2lkZ2V0UmVnaXN0ZXJlZC5uZXh0KHsgaWQsIHdpZGdldCB9KTtcbiAgfVxuXG4gIGdldFdpZGdldChpZDogc3RyaW5nKTogQVhQV2lkZ2V0Q29yZUVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLndpZGdldHMuZ2V0KGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyB1bnRpbCBhIHdpZGdldCB3aXRoIHRoZSBnaXZlbiBpZCBpcyByZWdpc3RlcmVkLCB0aGVuIHJlc29sdmVzIHdpdGggaXQuXG4gICAqIElmIHRoZSB3aWRnZXQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCByZXNvbHZlcyBpbW1lZGlhdGVseS5cbiAgICogT3B0aW9uYWxseSBhY2NlcHRzIGEgdGltZW91dCAoaW4gbXMpIGFmdGVyIHdoaWNoIGl0IHJlc29sdmVzIHdpdGggdW5kZWZpbmVkLlxuICAgKi9cbiAgYXN5bmMgd2FpdEZvcldpZGdldChpZDogc3RyaW5nLCB0aW1lb3V0TXM/OiBudW1iZXIpOiBQcm9taXNlPEFYUFdpZGdldENvcmVFbGVtZW50IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLndpZGdldHMuZ2V0KGlkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8QVhQV2lkZ2V0Q29yZUVsZW1lbnQgfCB1bmRlZmluZWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBsZXQgcmVzb2x2ZWQgPSBmYWxzZTtcbiAgICAgIGxldCB0aW1lcjogYW55ID0gbnVsbDtcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMub25XaWRnZXRSZWdpc3RlcmVkLnN1YnNjcmliZSgoeyBpZDogcmVnaXN0ZXJlZElkLCB3aWRnZXQgfSkgPT4ge1xuICAgICAgICBpZiAocmVnaXN0ZXJlZElkID09PSBpZCAmJiAhcmVzb2x2ZWQpIHtcbiAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKHdpZGdldCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGltZW91dE1zICE9IG51bGwgJiYgdGltZW91dE1zID4gMCkge1xuICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgdGltZW91dE1zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiByZWdpc3RlcmVkIHdpZGdldCBpZHMgKG5hbWVzKS5cbiAgICovXG4gIGxpc3RSZWdpc3RlcmVkV2lkZ2V0TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMud2lkZ2V0cy5rZXlzKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxufVxuIl19","const AXPWidgetsCatalog = {\n timeDuration: 'time-duration',\n timeDurationFilter: 'time-duration-filter',\n checkbox: 'checkbox-editor',\n color: 'color-editor',\n connectedLists: 'connected-lists-editor',\n list: 'list-editor',\n contact: 'contact-editor',\n dateTime: 'date-time-editor',\n largeText: 'large-text-editor',\n number: 'number-editor',\n numberUnit: 'number-unit-editor',\n password: 'password-editor',\n richText: 'rich-text-editor',\n select: 'select-editor',\n selectionList: 'selection-list-editor',\n text: 'text-editor',\n table: 'table-editor',\n toggle: 'toggle-editor',\n blockLayout: 'block-layout',\n pageLayout: 'page-layout',\n repeaterLayout: 'repeater-layout',\n textBlockLayout: 'text-block-layout',\n fileUploader: 'file-uploader',\n fileTypeExtension: 'file-type-extension',\n map: 'map',\n imageMarker: 'image-marker',\n image: 'image',\n gallery: 'gallery',\n signature: 'signature',\n buttonAction: 'button-action',\n document: 'document-layout',\n lookup: 'lookup-editor',\n formField: 'form-field',\n qrcode: 'qrcode',\n schedulerPicker: 'scheduler-picker',\n advancedGrid: 'advanced-grid-layout',\n advancedGridItem: 'advanced-grid-item-layout',\n grid: 'grid-layout',\n gridItem: 'grid-item-layout',\n // gridRow: 'grid-row-layout',\n widgetSelector: 'widget-selector',\n template: 'template',\n templateDesigner: 'template-designer',\n cronJob: 'cron-job',\n spacing: 'spacing',\n direction: 'direction',\n border: 'border',\n flexLayout: 'flex-layout',\n flexItem: 'flex-item-layout',\n tableLayout: 'table-layout',\n tableItem: 'table-item-layout',\n avatar: 'avatar',\n themePaletteChooser: 'theme-palette-chooser',\n themeModeChooser: 'theme-mode-chooser',\n menuOrientationChooser: 'menu-orientation-chooser',\n fontStyleChooser: 'font-style-chooser',\n fontSizeChooser: 'font-size-chooser',\n iconChooser: 'icon-chooser',\n icon: 'icon',\n themeColorChooser: 'theme-color-chooser',\n gridOptions: 'grid-options',\n gridItemOptions: 'grid-item-options',\n advancedGridOptions: 'advanced-grid-options',\n stringFilter: 'string-filter',\n numberFilter: 'number-filter',\n dateTimeFilter: 'datetime-filter',\n booleanFilter: 'boolean-filter',\n lookupFilter: 'lookup-filter',\n flexOptions: 'flex-options',\n flexItemOptions: 'flex-item-options',\n selectFilter: 'select-filter',\n requiredValidation: 'required-validation',\n regularExpressionValidation: 'regular-expression-validation',\n minLengthValidation: 'min-length-validation',\n maxLengthValidation: 'max-length-validation',\n lessThanValidation: 'less-than-validation',\n greaterThanValidation: 'greater-than-validation',\n betweenValidation: 'between-validation',\n equalValidation: 'equal-validation',\n callbackValidation: 'callback-validation',\n donutChart: 'donut-chart',\n lineChart: 'line-chart',\n barChart: 'bar-chart',\n gaugeChart: 'gauge-chart',\n stickyNote: 'sticky-note',\n clockCalendar: 'clock-calendar',\n analogClock: 'analog-clock',\n weather: 'weather',\n minimalWeather: 'minimal-weather',\n advancedWeather: 'advanced-weather',\n metaData: 'meta-data-editor',\n templateEditor: 'template-box-editor',\n panel: 'panel',\n notification: 'notification',\n taskBoard: 'task-board',\n comment: 'comment',\n dataList: 'data-list',\n listToolbar: 'list-toolbar',\n entityList: 'entity-list',\n editorJs: 'editor-js-editor',\n documentUploader: 'document-uploader',\n signatureList: 'signature-list',\n status: 'status-widget',\n stepWizard: 'step-wizard',\n};\nexport { AXPWidgetsCatalog };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNhdGFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL3dpZGdldC1jYXRhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0saUJBQWlCLEdBQXNCO0lBQzNDLFlBQVksRUFBRSxlQUFlO0lBQzdCLGtCQUFrQixFQUFFLHNCQUFzQjtJQUMxQyxRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLGNBQWMsRUFBRSx3QkFBd0I7SUFDeEMsSUFBSSxFQUFFLGFBQWE7SUFDbkIsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLFNBQVMsRUFBRSxtQkFBbUI7SUFDOUIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsYUFBYSxFQUFFLHVCQUF1QjtJQUN0QyxJQUFJLEVBQUUsYUFBYTtJQUNuQixLQUFLLEVBQUUsY0FBYztJQUNyQixNQUFNLEVBQUUsZUFBZTtJQUN2QixXQUFXLEVBQUUsY0FBYztJQUMzQixVQUFVLEVBQUUsYUFBYTtJQUN6QixjQUFjLEVBQUUsaUJBQWlCO0lBQ2pDLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFDN0IsaUJBQWlCLEVBQUUscUJBQXFCO0lBQ3hDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLGNBQWM7SUFDM0IsS0FBSyxFQUFFLE9BQU87SUFDZCxPQUFPLEVBQUUsU0FBUztJQUNsQixTQUFTLEVBQUUsV0FBVztJQUN0QixZQUFZLEVBQUUsZUFBZTtJQUM3QixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsWUFBWSxFQUFFLHNCQUFzQjtJQUNwQyxnQkFBZ0IsRUFBRSwyQkFBMkI7SUFDN0MsSUFBSSxFQUFFLGFBQWE7SUFDbkIsUUFBUSxFQUFFLGtCQUFrQjtJQUM1Qiw4QkFBOEI7SUFDOUIsY0FBYyxFQUFFLGlCQUFpQjtJQUNqQyxRQUFRLEVBQUUsVUFBVTtJQUNwQixnQkFBZ0IsRUFBRSxtQkFBbUI7SUFDckMsT0FBTyxFQUFFLFVBQVU7SUFDbkIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLGFBQWE7SUFDekIsUUFBUSxFQUFFLGtCQUFrQjtJQUM1QixXQUFXLEVBQUUsY0FBYztJQUMzQixTQUFTLEVBQUUsbUJBQW1CO0lBQzlCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLG1CQUFtQixFQUFFLHVCQUF1QjtJQUM1QyxnQkFBZ0IsRUFBRSxvQkFBb0I7SUFDdEMsc0JBQXNCLEVBQUUsMEJBQTBCO0lBQ2xELGdCQUFnQixFQUFFLG9CQUFvQjtJQUN0QyxlQUFlLEVBQUUsbUJBQW1CO0lBQ3BDLFdBQVcsRUFBRSxjQUFjO0lBQzNCLElBQUksRUFBRSxNQUFNO0lBQ1osaUJBQWlCLEVBQUUscUJBQXFCO0lBQ3hDLFdBQVcsRUFBRSxjQUFjO0lBQzNCLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsbUJBQW1CLEVBQUUsdUJBQXVCO0lBQzVDLFlBQVksRUFBRSxlQUFlO0lBQzdCLFlBQVksRUFBRSxlQUFlO0lBQzdCLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsYUFBYSxFQUFFLGdCQUFnQjtJQUMvQixZQUFZLEVBQUUsZUFBZTtJQUM3QixXQUFXLEVBQUUsY0FBYztJQUMzQixlQUFlLEVBQUUsbUJBQW1CO0lBQ3BDLFlBQVksRUFBRSxlQUFlO0lBQzdCLGtCQUFrQixFQUFFLHFCQUFxQjtJQUN6QywyQkFBMkIsRUFBRSwrQkFBK0I7SUFDNUQsbUJBQW1CLEVBQUUsdUJBQXVCO0lBQzVDLG1CQUFtQixFQUFFLHVCQUF1QjtJQUM1QyxrQkFBa0IsRUFBRSxzQkFBc0I7SUFDMUMscUJBQXFCLEVBQUUseUJBQXlCO0lBQ2hELGlCQUFpQixFQUFFLG9CQUFvQjtJQUN2QyxlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLGtCQUFrQixFQUFFLHFCQUFxQjtJQUN6QyxVQUFVLEVBQUUsYUFBYTtJQUN6QixTQUFTLEVBQUUsWUFBWTtJQUN2QixRQUFRLEVBQUUsV0FBVztJQUNyQixVQUFVLEVBQUUsYUFBYTtJQUN6QixVQUFVLEVBQUUsYUFBYTtJQUN6QixhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLFdBQVcsRUFBRSxjQUFjO0lBQzNCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsZUFBZSxFQUFFLGtCQUFrQjtJQUNuQyxRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLGNBQWMsRUFBRSxxQkFBcUI7SUFDckMsS0FBSyxFQUFFLE9BQU87SUFDZCxZQUFZLEVBQUUsY0FBYztJQUM1QixTQUFTLEVBQUUsWUFBWTtJQUN2QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsV0FBVztJQUNyQixXQUFXLEVBQUUsY0FBYztJQUMzQixVQUFVLEVBQUUsYUFBYTtJQUN6QixRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLGdCQUFnQixFQUFFLG1CQUFtQjtJQUVyQyxhQUFhLEVBQUUsZ0JBQWdCO0lBRS9CLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLFVBQVUsRUFBRSxhQUFhO0NBQzFCLENBQUM7QUFFRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUFdpZGdldFR5cGVzTWFwIH0gZnJvbSAnLi93aWRnZXQtbWFwJztcblxuY29uc3QgQVhQV2lkZ2V0c0NhdGFsb2c6IEFYUFdpZGdldFR5cGVzTWFwID0ge1xuICB0aW1lRHVyYXRpb246ICd0aW1lLWR1cmF0aW9uJyxcbiAgdGltZUR1cmF0aW9uRmlsdGVyOiAndGltZS1kdXJhdGlvbi1maWx0ZXInLFxuICBjaGVja2JveDogJ2NoZWNrYm94LWVkaXRvcicsXG4gIGNvbG9yOiAnY29sb3ItZWRpdG9yJyxcbiAgY29ubmVjdGVkTGlzdHM6ICdjb25uZWN0ZWQtbGlzdHMtZWRpdG9yJyxcbiAgbGlzdDogJ2xpc3QtZWRpdG9yJyxcbiAgY29udGFjdDogJ2NvbnRhY3QtZWRpdG9yJyxcbiAgZGF0ZVRpbWU6ICdkYXRlLXRpbWUtZWRpdG9yJyxcbiAgbGFyZ2VUZXh0OiAnbGFyZ2UtdGV4dC1lZGl0b3InLFxuICBudW1iZXI6ICdudW1iZXItZWRpdG9yJyxcbiAgbnVtYmVyVW5pdDogJ251bWJlci11bml0LWVkaXRvcicsXG4gIHBhc3N3b3JkOiAncGFzc3dvcmQtZWRpdG9yJyxcbiAgcmljaFRleHQ6ICdyaWNoLXRleHQtZWRpdG9yJyxcbiAgc2VsZWN0OiAnc2VsZWN0LWVkaXRvcicsXG4gIHNlbGVjdGlvbkxpc3Q6ICdzZWxlY3Rpb24tbGlzdC1lZGl0b3InLFxuICB0ZXh0OiAndGV4dC1lZGl0b3InLFxuICB0YWJsZTogJ3RhYmxlLWVkaXRvcicsXG4gIHRvZ2dsZTogJ3RvZ2dsZS1lZGl0b3InLFxuICBibG9ja0xheW91dDogJ2Jsb2NrLWxheW91dCcsXG4gIHBhZ2VMYXlvdXQ6ICdwYWdlLWxheW91dCcsXG4gIHJlcGVhdGVyTGF5b3V0OiAncmVwZWF0ZXItbGF5b3V0JyxcbiAgdGV4dEJsb2NrTGF5b3V0OiAndGV4dC1ibG9jay1sYXlvdXQnLFxuICBmaWxlVXBsb2FkZXI6ICdmaWxlLXVwbG9hZGVyJyxcbiAgZmlsZVR5cGVFeHRlbnNpb246ICdmaWxlLXR5cGUtZXh0ZW5zaW9uJyxcbiAgbWFwOiAnbWFwJyxcbiAgaW1hZ2VNYXJrZXI6ICdpbWFnZS1tYXJrZXInLFxuICBpbWFnZTogJ2ltYWdlJyxcbiAgZ2FsbGVyeTogJ2dhbGxlcnknLFxuICBzaWduYXR1cmU6ICdzaWduYXR1cmUnLFxuICBidXR0b25BY3Rpb246ICdidXR0b24tYWN0aW9uJyxcbiAgZG9jdW1lbnQ6ICdkb2N1bWVudC1sYXlvdXQnLFxuICBsb29rdXA6ICdsb29rdXAtZWRpdG9yJyxcbiAgZm9ybUZpZWxkOiAnZm9ybS1maWVsZCcsXG4gIHFyY29kZTogJ3FyY29kZScsXG4gIHNjaGVkdWxlclBpY2tlcjogJ3NjaGVkdWxlci1waWNrZXInLFxuICBhZHZhbmNlZEdyaWQ6ICdhZHZhbmNlZC1ncmlkLWxheW91dCcsXG4gIGFkdmFuY2VkR3JpZEl0ZW06ICdhZHZhbmNlZC1ncmlkLWl0ZW0tbGF5b3V0JyxcbiAgZ3JpZDogJ2dyaWQtbGF5b3V0JyxcbiAgZ3JpZEl0ZW06ICdncmlkLWl0ZW0tbGF5b3V0JyxcbiAgLy8gZ3JpZFJvdzogJ2dyaWQtcm93LWxheW91dCcsXG4gIHdpZGdldFNlbGVjdG9yOiAnd2lkZ2V0LXNlbGVjdG9yJyxcbiAgdGVtcGxhdGU6ICd0ZW1wbGF0ZScsXG4gIHRlbXBsYXRlRGVzaWduZXI6ICd0ZW1wbGF0ZS1kZXNpZ25lcicsXG4gIGNyb25Kb2I6ICdjcm9uLWpvYicsXG4gIHNwYWNpbmc6ICdzcGFjaW5nJyxcbiAgZGlyZWN0aW9uOiAnZGlyZWN0aW9uJyxcbiAgYm9yZGVyOiAnYm9yZGVyJyxcbiAgZmxleExheW91dDogJ2ZsZXgtbGF5b3V0JyxcbiAgZmxleEl0ZW06ICdmbGV4LWl0ZW0tbGF5b3V0JyxcbiAgdGFibGVMYXlvdXQ6ICd0YWJsZS1sYXlvdXQnLFxuICB0YWJsZUl0ZW06ICd0YWJsZS1pdGVtLWxheW91dCcsXG4gIGF2YXRhcjogJ2F2YXRhcicsXG4gIHRoZW1lUGFsZXR0ZUNob29zZXI6ICd0aGVtZS1wYWxldHRlLWNob29zZXInLFxuICB0aGVtZU1vZGVDaG9vc2VyOiAndGhlbWUtbW9kZS1jaG9vc2VyJyxcbiAgbWVudU9yaWVudGF0aW9uQ2hvb3NlcjogJ21lbnUtb3JpZW50YXRpb24tY2hvb3NlcicsXG4gIGZvbnRTdHlsZUNob29zZXI6ICdmb250LXN0eWxlLWNob29zZXInLFxuICBmb250U2l6ZUNob29zZXI6ICdmb250LXNpemUtY2hvb3NlcicsXG4gIGljb25DaG9vc2VyOiAnaWNvbi1jaG9vc2VyJyxcbiAgaWNvbjogJ2ljb24nLFxuICB0aGVtZUNvbG9yQ2hvb3NlcjogJ3RoZW1lLWNvbG9yLWNob29zZXInLFxuICBncmlkT3B0aW9uczogJ2dyaWQtb3B0aW9ucycsXG4gIGdyaWRJdGVtT3B0aW9uczogJ2dyaWQtaXRlbS1vcHRpb25zJyxcbiAgYWR2YW5jZWRHcmlkT3B0aW9uczogJ2FkdmFuY2VkLWdyaWQtb3B0aW9ucycsXG4gIHN0cmluZ0ZpbHRlcjogJ3N0cmluZy1maWx0ZXInLFxuICBudW1iZXJGaWx0ZXI6ICdudW1iZXItZmlsdGVyJyxcbiAgZGF0ZVRpbWVGaWx0ZXI6ICdkYXRldGltZS1maWx0ZXInLFxuICBib29sZWFuRmlsdGVyOiAnYm9vbGVhbi1maWx0ZXInLFxuICBsb29rdXBGaWx0ZXI6ICdsb29rdXAtZmlsdGVyJyxcbiAgZmxleE9wdGlvbnM6ICdmbGV4LW9wdGlvbnMnLFxuICBmbGV4SXRlbU9wdGlvbnM6ICdmbGV4LWl0ZW0tb3B0aW9ucycsXG4gIHNlbGVjdEZpbHRlcjogJ3NlbGVjdC1maWx0ZXInLFxuICByZXF1aXJlZFZhbGlkYXRpb246ICdyZXF1aXJlZC12YWxpZGF0aW9uJyxcbiAgcmVndWxhckV4cHJlc3Npb25WYWxpZGF0aW9uOiAncmVndWxhci1leHByZXNzaW9uLXZhbGlkYXRpb24nLFxuICBtaW5MZW5ndGhWYWxpZGF0aW9uOiAnbWluLWxlbmd0aC12YWxpZGF0aW9uJyxcbiAgbWF4TGVuZ3RoVmFsaWRhdGlvbjogJ21heC1sZW5ndGgtdmFsaWRhdGlvbicsXG4gIGxlc3NUaGFuVmFsaWRhdGlvbjogJ2xlc3MtdGhhbi12YWxpZGF0aW9uJyxcbiAgZ3JlYXRlclRoYW5WYWxpZGF0aW9uOiAnZ3JlYXRlci10aGFuLXZhbGlkYXRpb24nLFxuICBiZXR3ZWVuVmFsaWRhdGlvbjogJ2JldHdlZW4tdmFsaWRhdGlvbicsXG4gIGVxdWFsVmFsaWRhdGlvbjogJ2VxdWFsLXZhbGlkYXRpb24nLFxuICBjYWxsYmFja1ZhbGlkYXRpb246ICdjYWxsYmFjay12YWxpZGF0aW9uJyxcbiAgZG9udXRDaGFydDogJ2RvbnV0LWNoYXJ0JyxcbiAgbGluZUNoYXJ0OiAnbGluZS1jaGFydCcsXG4gIGJhckNoYXJ0OiAnYmFyLWNoYXJ0JyxcbiAgZ2F1Z2VDaGFydDogJ2dhdWdlLWNoYXJ0JyxcbiAgc3RpY2t5Tm90ZTogJ3N0aWNreS1ub3RlJyxcbiAgY2xvY2tDYWxlbmRhcjogJ2Nsb2NrLWNhbGVuZGFyJyxcbiAgYW5hbG9nQ2xvY2s6ICdhbmFsb2ctY2xvY2snLFxuICB3ZWF0aGVyOiAnd2VhdGhlcicsXG4gIG1pbmltYWxXZWF0aGVyOiAnbWluaW1hbC13ZWF0aGVyJyxcbiAgYWR2YW5jZWRXZWF0aGVyOiAnYWR2YW5jZWQtd2VhdGhlcicsXG4gIG1ldGFEYXRhOiAnbWV0YS1kYXRhLWVkaXRvcicsXG4gIHRlbXBsYXRlRWRpdG9yOiAndGVtcGxhdGUtYm94LWVkaXRvcicsXG4gIHBhbmVsOiAncGFuZWwnLFxuICBub3RpZmljYXRpb246ICdub3RpZmljYXRpb24nLFxuICB0YXNrQm9hcmQ6ICd0YXNrLWJvYXJkJyxcbiAgY29tbWVudDogJ2NvbW1lbnQnLFxuICBkYXRhTGlzdDogJ2RhdGEtbGlzdCcsXG4gIGxpc3RUb29sYmFyOiAnbGlzdC10b29sYmFyJyxcbiAgZW50aXR5TGlzdDogJ2VudGl0eS1saXN0JyxcbiAgZWRpdG9ySnM6ICdlZGl0b3ItanMtZWRpdG9yJyxcbiAgZG9jdW1lbnRVcGxvYWRlcjogJ2RvY3VtZW50LXVwbG9hZGVyJyxcblxuICBzaWduYXR1cmVMaXN0OiAnc2lnbmF0dXJlLWxpc3QnLFxuXG4gIHN0YXR1czogJ3N0YXR1cy13aWRnZXQnLFxuICBzdGVwV2l6YXJkOiAnc3RlcC13aXphcmQnLFxufTtcblxuZXhwb3J0IHsgQVhQV2lkZ2V0c0NhdGFsb2cgfTtcbiJdfQ==","import { InjectionToken } from '@angular/core';\nimport { cloneDeep, isNil, merge } from 'lodash-es';\nimport { AXPWidgetsCatalog } from './widget-catalog';\nexport function cloneProperty(property, values) {\n return merge(cloneDeep(property), values);\n}\nexport function createStringProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: !isNil(ctor.visible) ? ctor.visible : true,\n };\n}\nexport function createNumberProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'number',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.number,\n options: ctor.options,\n },\n },\n visible: !isNil(ctor.visible) ? ctor.visible : true,\n };\n}\nexport function createBooleanProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'boolean',\n defaultValue: ctor.defaultValue ?? false,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: ctor.visible ?? true,\n };\n}\nexport function createSelectProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: Array.isArray(ctor.defaultValue)\n ? ctor.defaultValue.map((item) => (typeof item === 'string' ? { id: item } : item))\n : typeof ctor.defaultValue === 'string'\n ? { id: ctor.defaultValue, title: ctor.defaultValue }\n : ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ctor.dataSource.map((item) => (typeof item === 'string' ? { id: item, title: item } : item)),\n },\n },\n },\n visible: ctor.visible ?? true,\n };\n}\nexport const AXP_WIDGET_TOKEN = new InjectionToken('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken('AXP_WIDGET_COLUMN_TOKEN');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUE2QnJELE1BQU0sVUFBVSxhQUFhLENBQzNCLFFBQTJCLEVBQzNCLE1BQTJDO0lBRTNDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBT3BDO0lBQ0MsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLFFBQVE7WUFDbEIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUk7Z0JBQzVCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQzdCO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQ3BELENBQUM7QUFDSixDQUFDO0FB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aUJBQ3pHO2FBQ0Y7U0FDRjtRQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7S0FDOUIsQ0FBQztBQUNKLENBQUM7QUFrQ0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQXFCLGtCQUFrQixDQUFDLENBQUM7QUFDM0YsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQTJCLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFBEYXRhVHlwZSxcbiAgQVhQRXhwcmVzc2lvbixcbiAgQVhQTWV0YURhdGEsXG4gIEFYUE9wdGlvbnNEYXRhLFxuICBBWFBQYXJ0aWFsTmVzdGVkLFxuICBBWFBWYWxpZGF0aW9uUnVsZXMsXG4gIEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbnMsXG4gIEFYUFdpZGdldFRyaWdnZXJzLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNOaWwsIG1lcmdlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnLi93aWRnZXQtY2F0YWxvZyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDYXRlZ29yeSB9IGZyb20gJy4vd2lkZ2V0LWNhdGVnb3JpZXMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0R3JvdXAgfSBmcm9tICcuL3dpZGdldC1ncm91cC50eXBlcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRUeXBlc01hcCB9IGZyb20gJy4vd2lkZ2V0LW1hcCc7XG5pbXBvcnQgeyBBWFBQYWdlU3RhdHVzIH0gZnJvbSAnLi93aWRnZXQtc3RhdHVzLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldFByb3BlcnR5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIG9yZGVyPzogbnVtYmVyO1xuICBzY2hlbWE6IHtcbiAgICBkYXRhVHlwZTogQVhQRGF0YVR5cGU7XG4gICAgbnVsbGFibGU/OiBib29sZWFuO1xuICAgIGRlZmF1bHRWYWx1ZT86IGFueSB8IHN0cmluZyB8ICgoY29udGV4dDogYW55IHwgbnVsbCkgPT4gYW55KTtcbiAgICBpbnRlcmZhY2U6IFJlcXVpcmVkPFBpY2s8QVhQV2lkZ2V0Tm9kZSwgJ3BhdGgnPj4gJiBPbWl0PEFYUFdpZGdldE5vZGUsICdwYXRoJz47XG4gIH07XG4gIG9wdGlvbnM/OiBBWFBPcHRpb25zRGF0YTtcbiAgdmFsaWRhdGlvbnM/OiBBWFBWYWxpZGF0aW9uUnVsZXM7XG4gIHZpc2libGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVByb3BlcnR5KFxuICBwcm9wZXJ0eTogQVhQV2lkZ2V0UHJvcGVydHksXG4gIHZhbHVlczogQVhQUGFydGlhbE5lc3RlZDxBWFBXaWRnZXRQcm9wZXJ0eT4sXG4pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiBtZXJnZShjbG9uZURlZXAocHJvcGVydHkpLCB2YWx1ZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RyaW5nUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGN0b3IuZGVmYXVsdFZhbHVlLFxuICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICAgICAgcGF0aDogY3Rvci5wYXRoID8/IGN0b3IubmFtZSxcbiAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiAhaXNOaWwoY3Rvci52aXNpYmxlKSA/IGN0b3IudmlzaWJsZSA6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOdW1iZXJQcm9wZXJ0eShjdG9yOiB7XG4gIGRlZmF1bHRWYWx1ZT86IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBncm91cDogQVhQV2lkZ2V0UHJvcGVydHlHcm91cDtcbiAgdmlzaWJsZT86IGJvb2xlYW47XG4gIG9wdGlvbnM/OiB7XG4gICAgbWluVmFsdWU/OiBudW1iZXI7XG4gICAgbWF4VmFsdWU/OiBudW1iZXI7XG4gICAgZGVjaW1hbHM/OiBudW1iZXI7XG4gIH07XG59KTogQVhQV2lkZ2V0UHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICB0aXRsZTogY3Rvci50aXRsZSxcbiAgICBncm91cDogY3Rvci5ncm91cCxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgIG9wdGlvbnM6IGN0b3Iub3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiAhaXNOaWwoY3Rvci52aXNpYmxlKSA/IGN0b3IudmlzaWJsZSA6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb29sZWFuUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn0pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY3Rvci5uYW1lLFxuICAgIHRpdGxlOiBjdG9yLnRpdGxlLFxuICAgIGdyb3VwOiBjdG9yLmdyb3VwLFxuICAgIHNjaGVtYToge1xuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUgPz8gZmFsc2UsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RQcm9wZXJ0eTxUID0gc3RyaW5nIHwgeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+KGN0b3I6IHtcbiAgZGVmYXVsdFZhbHVlOiBUIHwgVFtdIHwgYW55O1xuICBkYXRhU291cmNlOiBUW107XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IEFycmF5LmlzQXJyYXkoY3Rvci5kZWZhdWx0VmFsdWUpXG4gICAgICAgID8gY3Rvci5kZWZhdWx0VmFsdWUubWFwKChpdGVtKSA9PiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8geyBpZDogaXRlbSB9IDogaXRlbSkpXG4gICAgICAgIDogdHlwZW9mIGN0b3IuZGVmYXVsdFZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8geyBpZDogY3Rvci5kZWZhdWx0VmFsdWUsIHRpdGxlOiBjdG9yLmRlZmF1bHRWYWx1ZSB9XG4gICAgICAgICAgOiBjdG9yLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGludGVyZmFjZToge1xuICAgICAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgICAgIHBhdGg6IGN0b3IucGF0aCA/PyBjdG9yLm5hbWUsXG4gICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGRhdGFTb3VyY2U6IGN0b3IuZGF0YVNvdXJjZS5tYXAoKGl0ZW0pID0+ICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7IGlkOiBpdGVtLCB0aXRsZTogaXRlbSB9IDogaXRlbSkpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHZpc2libGU6IGN0b3IudmlzaWJsZSA/PyB0cnVlLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldE5vZGUge1xuICB0eXBlOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF0gfCBrZXlvZiBBWFBXaWRnZXRUeXBlc01hcCB8IHN0cmluZztcbiAgbW9kZT86IEFYUFdpZGdldFJlbmRlck1vZGU7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZpc2libGU/OiBib29sZWFuIHwgQVhQRXhwcmVzc2lvbjtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBmb3JtdWxhPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEFYUFdpZGdldE5vZGVbXTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB0cmlnZ2Vycz86IEFYUFdpZGdldFRyaWdnZXJzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG4gIHZhbHVlVHJhbnNmb3Jtcz86IEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZVRva2VuPFRPcHRpb25zIGV4dGVuZHMgQVhQT3B0aW9uc0RhdGEgPSBBWFBPcHRpb25zRGF0YT4ge1xuICBkZWZhdWx0VmFsdWU/OiBhbnk7XG4gIGNvbmZpZzogQVhQV2lkZ2V0Q29uZmlnO1xuICBub2RlOiBBWFBXaWRnZXROb2RlO1xuICBvcHRpb25zPzogVE9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29sdW1uTm9kZSB7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zPzogQVhQT3B0aW9uc0RhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29sdW1uTm9kZVRva2VuIGV4dGVuZHMgQVhQV2lkZ2V0Q29sdW1uTm9kZSB7XG4gIGNvbmZpZzogQVhQV2lkZ2V0Q29uZmlnO1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBXaWRnZXROb2RlVG9rZW4+KCdBWFBfV0lER0VUX1RPS0VOJyk7XG5leHBvcnQgY29uc3QgQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQV2lkZ2V0Q29sdW1uTm9kZVRva2VuPignQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4nKTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb21wb25lbnRDb25maWcge1xuICBjb21wb25lbnQ6ICgpID0+IFByb21pc2U8YW55PjtcbiAgcHJvcGVydGllcz86IEFYUFdpZGdldFByb3BlcnR5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cyB7XG4gIGRlc2lnbmVyPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICB2aWV3PzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBlZGl0PzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBwcmludD86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgY29sdW1uPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBmaWx0ZXI/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldFZpZXdUeXBlID0gJ2NvbnRhaW5lcicgfCAnZWRpdG9yJyB8ICdhY3Rpb24nIHwgJ3ZpZXcnIHwgJ2ZpbHRlcicgfCAndmFsaWRhdGlvbicgfCAnZGFzaGJvYXJkJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0RGVzaWduZXJPcHRpb25zTWFwID0ge1xuICBjb250YWluZXI6IHsgY2FuSW5zZXJ0OiBib29sZWFuIH07XG4gIGVkaXRvcjoge1xuICAgIG5lZWRMYWJlbDogYm9vbGVhbjtcbiAgfTtcbiAgYWN0aW9uOiB7fTtcbiAgdmlldzoge307XG59O1xuXG5leHBvcnQgdHlwZSBBWFBFeHRyYWN0V2lkZ2V0Q29uZmlnPFQ+ID0ge1xuICB0eXBlOiBBWFBXaWRnZXRWaWV3VHlwZTtcbiAgZGVzaWduZXI6IFQgZXh0ZW5kcyB7IHR5cGU6IGluZmVyIFYgfVxuICAgID8gViBleHRlbmRzIGtleW9mIEFYUFdpZGdldERlc2lnbmVyT3B0aW9uc01hcFxuICAgICAgPyBBWFBXaWRnZXREZXNpZ25lck9wdGlvbnNNYXBbVl1cbiAgICAgIDogYW55XG4gICAgOiBhbnk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbmZpZzxUID0gYW55PiB7XG4gIG5hbWU6IEFYUFdpZGdldFR5cGVzTWFwW2tleW9mIEFYUFdpZGdldFR5cGVzTWFwXSB8IGtleW9mIEFYUFdpZGdldFR5cGVzTWFwIHwgc3RyaW5nO1xuICBhbGlhcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICB0aXRsZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY2F0ZWdvcmllcz86IEFYUFdpZGdldENhdGVnb3J5IHwgQVhQV2lkZ2V0Q2F0ZWdvcnlbXTtcbiAgZ3JvdXBzPzogQVhQV2lkZ2V0R3JvdXBbXTtcbiAgcHJvcGVydGllcz86IEFYUFdpZGdldFByb3BlcnR5W107XG4gIGNvbXBvbmVudHM6IEFYUFdpZGdldENvbmZpZ0NvbXBvbmVudHM7XG4gIG1ldGE/OiBBWFBNZXRhRGF0YTtcbiAgdHlwZTogQVhQRXh0cmFjdFdpZGdldENvbmZpZzxUPlsndHlwZSddO1xuICBkZXNpZ25lcj86IEFYUEV4dHJhY3RXaWRnZXRDb25maWc8VD5bJ2Rlc2lnbmVyJ107XG4gIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBkZWZhdWx0RmlsdGVyV2lkZ2V0TmFtZT86XG4gICAgfCAnc3RyaW5nLWZpbHRlcidcbiAgICB8ICdudW1iZXItZmlsdGVyJ1xuICAgIHwgJ2RhdGV0aW1lLWZpbHRlcidcbiAgICB8ICdib29sZWFuLWZpbHRlcidcbiAgICB8ICdzZWxlY3QtZmlsdGVyJ1xuICAgIHwgJ2xvb2t1cC1maWx0ZXInXG4gICAgfCAndGltZS1kdXJhdGlvbi1maWx0ZXInO1xufVxuZXhwb3J0IGludGVyZmFjZSBleHRlbmRlZFdpZGdldCB7XG4gIHdpZGdldDogQVhQV2lkZ2V0Q29uZmlnO1xuICBwYXJlbnROYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldFJlbmRlck1vZGUgPSBrZXlvZiBBWFBXaWRnZXRDb25maWdDb21wb25lbnRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUExheW91dEJ1aWxkZXJTdGF0dXNDaGFuZ2VkRXZlbnQge1xuICBzdGF0dXM6IEFYUFBhZ2VTdGF0dXM7XG59XG4iXX0=","import { AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDefinitionProviderService, extractValue, } from '@acorex/platform/core';\nimport { computed, effect, ElementRef, inject, Injectable, signal, untracked, } from '@angular/core';\nimport { cloneDeep, get, isEqual, isNil, isObjectLike, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AXPWidgetCoreContextStore } from './widget-core-store.service';\nimport { AXPWidgetCoreElement, AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetStatus } from './widget-status.types';\nimport { AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN, } from './widget.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPBaseWidgetComponent extends AXPWidgetCoreElement {\n constructor() {\n super(...arguments);\n this.token = inject(AXP_WIDGET_TOKEN);\n this.host = inject(ElementRef).nativeElement;\n this.layoutService = inject(AXPWidgetCoreService);\n this.contextService = inject(AXPWidgetCoreContextStore);\n this.config = this.token.config;\n this.node = this.token.node;\n this.name = this.token.node.name;\n this.component = this;\n this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: \"_options\" }] : []));\n this.options = this._options.asReadonly();\n this.onOptionsChanged = new Subject();\n this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: \"_status\" }] : []));\n this.status = this._status.asReadonly();\n this.onStatusChanged = new BehaviorSubject(this._status());\n this.#statusEffect = effect(() => {\n this.onStatusChanged.next(this.status());\n }, ...(ngDevMode ? [{ debugName: \"#statusEffect\" }] : []));\n this.isBusy = computed(() => [AXPWidgetStatus.Rendering, AXPWidgetStatus.Processing].includes(this.status()), ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: \"_children\" }] : []));\n this.children = this._children.asReadonly();\n }\n get id() {\n return this._id;\n }\n #statusEffect;\n outputs() {\n return [];\n }\n ngOnInit() {\n if (get(this.node, '__meta__.added')) {\n this.onAdded();\n }\n this.setStatus(AXPWidgetStatus.Rendered);\n }\n setStatus(status) {\n this._status.set(status);\n this.layoutService.updateStatus();\n }\n setOptions(values) {\n const oldValue = this.options();\n const value = cloneDeep(values);\n this._options.set({ ...oldValue, ...value });\n this.onOptionsChanged.next({ sender: this });\n }\n output(name) {\n const outputs = this.outputs().map((c) => (typeof c == 'string' ? { name: c, value: c } : c));\n if (outputs.some((c) => c.name == name)) {\n const opt = get(this, name);\n if (typeof opt == 'function') {\n return opt();\n }\n return opt;\n }\n return null;\n }\n call(name, ...args) {\n const fn = get(this, name);\n if (fn && typeof fn == 'function') {\n fn.bind(this)(...args);\n }\n }\n setChildren(children) {\n this._children.set([...children]);\n }\n onAdded() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBaseWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {\n //TODO change this approach\n ngOnInit() {\n if (this.name && !(this instanceof AXPValueWidgetComponent)) {\n this.layoutService.registerWidget(this.name, this);\n }\n super.ngOnInit();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {\n constructor() {\n super(...arguments);\n this.path = this.token.node.path;\n this.defaultValue = this.token.defaultValue ?? this.token.node.defaultValue;\n this._isValueWidget = false;\n this.isValueWidget = () => this._isValueWidget;\n this.onValueChanged = new Subject();\n this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: \"fullPath\" }] : []));\n this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: \"parentPath\" }] : []));\n this.getValue = computed(() => {\n return this.fullPath() ? this.extractValue(this.fullPath()) : null;\n }, ...(ngDevMode ? [{ debugName: \"getValue\", equal: isEqual }] : [{ equal: isEqual }]));\n this.validationRules = computed(() => {\n const validationsRaw = this.options()['validations'];\n if (validationsRaw == null) {\n return [];\n }\n return Object.values(this.options()['validations'])\n .filter((c) => c != null)\n .map((c) => ({\n rule: c.rule,\n message: c.message,\n options: c.options,\n }));\n }, ...(ngDevMode ? [{ debugName: \"validationRules\" }] : []));\n }\n ngOnInit() {\n this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;\n if (this.isValueWidget()) {\n this.detectFullPath();\n if (!isNil(this.defaultValue) && isNil(this.getValue())) {\n this.setValue(this.defaultValue);\n }\n }\n //\n super.ngOnInit();\n }\n extractValue(path) {\n const rawValue = this.contextService.getValue(path);\n if (this.node.valueTransforms?.getter) {\n return this.node.valueTransforms?.getter(rawValue);\n }\n return rawValue;\n }\n setValue(value) {\n if (this.node.valueTransforms?.setter) {\n value = this.node.valueTransforms?.setter(value);\n }\n const oldValue = this.getValue();\n value = isUndefined(value) ? null : value;\n if (isNil(value) && isNil(oldValue)) {\n return;\n }\n if (isEqual(oldValue, value)) {\n return;\n }\n if (this.fullPath()) {\n this.contextService.update(this.fullPath(), value);\n this.onValueChanged.next({ sender: this });\n }\n }\n detectFullPath() {\n const sections = [];\n const ids = [];\n //\n let parent = this;\n //\n while (parent) {\n const isValueWidget = parent instanceof AXPValueWidgetComponent && parent.isValueWidget();\n const valueParent = parent;\n const path = valueParent.path ?? (isValueWidget ? valueParent.name : null);\n const id = valueParent.name;\n //\n if (path) {\n sections.push(path);\n }\n if (parent.index != null && isValueWidget) {\n sections.push(`[${parent.index}]`);\n }\n if (id) {\n ids.push(id);\n if (parent.index != null) {\n ids.push(`${parent.index}`);\n }\n }\n parent = parent.parent;\n }\n //\n this.fullPath.set(sections.reverse().join('.'));\n this.parentPath.set(sections.slice(0, sections.length - 1).join('.'));\n this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n if (this._id) {\n this.layoutService.registerWidget(this._id, this);\n }\n }\n handleValueChanged(e) {\n if (e.isUserInteraction) {\n this.setValue(e.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPValueWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPDataListWidgetComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n this.dataService = inject(AXPDataSourceDefinitionProviderService);\n this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: \"textField\" }] : []));\n this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: \"valueField\" }] : []));\n this.textTemplate = computed(() => isNil(this.options()['textTemplate'])\n ? undefined\n : this.options()['textTemplate'].replace(/{/g, '{{').replace(/}/g, '}}'), ...(ngDevMode ? [{ debugName: \"textTemplate\" }] : []));\n this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: \"selectedItems\" }] : []));\n //#region ---- DataSource Loading Effect ----\n /**\n * Track the last loaded string dataSource reference to prevent infinite loops\n * Only used for string-based datasources (not arrays or AXDataSource instances)\n */\n this.lastStringDataSourceRef = null;\n this.rf = effect(async () => {\n const rawValue = this.options()['dataSource'];\n // For string datasources: prevent infinite loop by checking reference\n if (typeof rawValue === 'string') {\n if (rawValue === this.lastStringDataSourceRef) {\n return;\n }\n this.lastStringDataSourceRef = rawValue;\n }\n else {\n // Reset string reference when dataSource changes to non-string\n this.lastStringDataSourceRef = null;\n }\n // Process dataSource creation in untracked context\n await untracked(async () => {\n if (rawValue instanceof AXDataSource) {\n // For AXDataSource instances, check if config changed\n if (!isEqual(rawValue.config, this.dataSource().config)) {\n this.dataSource.set(rawValue);\n }\n }\n // static array datasource - always recreate when options change\n else if (Array.isArray(rawValue)) {\n const ds = new AXDataSource({\n key: this.valueField(),\n pageSize: 10,\n load: async (e) => {\n const raw = this.options()['dataSource'];\n const skip = e.skip ?? 0;\n const take = e.take ?? raw.length;\n return {\n items: raw.slice(skip, skip + take),\n total: raw.length,\n };\n },\n byKey: (key) => {\n const raw = this.options()['dataSource'];\n const item = raw.filter((c) => c[this.valueField()] == key);\n return Promise.resolve(item[0]);\n },\n });\n this.dataSource.set(ds);\n }\n // resolve data source by name (string or object with id)\n else if (rawValue && (typeof rawValue == 'string' || typeof rawValue == 'object')) {\n const id = typeof rawValue == 'object' ? rawValue['id'] : rawValue;\n const c = await this.dataService.get(id);\n if (this.mode == 'designer' && c?.samples?.length) {\n this.dataSource.set(convertArrayToDataSource(c.samples, {\n key: this.valueField(),\n pageSize: 500,\n }));\n }\n else {\n const ds = c?.source();\n if (ds && ds instanceof Promise) {\n const d = await ds;\n this.dataSource.set(d);\n }\n else if (ds) {\n this.dataSource.set(ds);\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n }\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"rf\" }] : []));\n this.effect2 = effect(async () => {\n const value = this.getValue();\n const items = [];\n if (Array.isArray(value)) {\n items.push(...(await Promise.all(value.map((item) => this.extractItem(item)))));\n }\n else {\n items.push(await this.extractItem(value));\n }\n this.selectedItems.set(items.filter((c) => c != null));\n }, ...(ngDevMode ? [{ debugName: \"effect2\" }] : []));\n }\n //#endregion\n async extractItem(item) {\n if (isNil(item)) {\n return null;\n }\n if (isObjectLike(item) && get(item, this.textField()) != null) {\n return item;\n }\n const key = extractValue(item, this.valueField());\n const ds = this.dataSource();\n if (ds.config?.byKey) {\n const found = await ds.config?.byKey(key);\n if (found) {\n return found;\n }\n }\n return isObjectLike(item)\n ? item\n : {\n [this.valueField()]: item,\n [this.textField()]: item,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataListWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataListWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataListWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPColumnWidgetComponent {\n constructor() {\n this.token = inject(AXP_WIDGET_COLUMN_TOKEN);\n this.path = this.token.path;\n this.options = this.token.options ?? {};\n this.rawValue = null;\n this.nullText = this.options['nullText'];\n this.nullValue = this.options['nullValue'];\n this.value = computed(() => {\n if (isNil(this.rawValue) && !isNil(this.nullValue)) {\n return this.nullValue;\n }\n return this.rawValue;\n }, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColumnWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBdUIsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsc0NBQXNDLEVBSXRDLFlBQVksR0FDYixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUVWLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGdCQUFnQixHQUlqQixNQUFNLGdCQUFnQixDQUFDOztBQU14QixNQUFNLE9BQWdCLHNCQUVwQixTQUFRLG9CQUFvQjtJQUg5Qjs7UUFJcUIsVUFBSyxHQUFpQyxNQUFNLENBQUMsZ0JBQWdCLENBQWlDLENBQUM7UUFDbEcsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUErQixDQUFDO1FBRXZELGtCQUFhLEdB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QUV4QixhQUFRLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQVcsQ0FBQztRQUNuRCxjQUFTLEdBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQU0sQ0FBQztRQUV2RCxVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLENBQUMsaURBQUMsQ0FBQztLQUNKOytHQWhCcUIsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRDdDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYVmFsdWVDaGFuZ2VkRXZlbnQsIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQge1xuICBBWFBEYXRhU291cmNlRGVmaW5pdGlvblByb3ZpZGVyU2VydmljZSxcbiAgQVhQT3B0aW9uc0RhdGEsXG4gIEFYUFZhbGlkYXRpb25SdWxlLFxuICBBWFBWYWxpZGF0aW9uUnVsZXMsXG4gIGV4dHJhY3RWYWx1ZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBpc0VxdWFsLCBpc05pbCwgaXNPYmplY3RMaWtlLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUgfSBmcm9tICcuL3dpZGdldC1jb3JlLXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZUVsZW1lbnQsIEFYUFdpZGdldENvcmVTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtY29yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldFN0YXR1cyB9IGZyb20gJy4vd2lkZ2V0LXN0YXR1cy50eXBlcyc7XG5pbXBvcnQge1xuICBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTixcbiAgQVhQX1dJREdFVF9UT0tFTixcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZW5kZXJNb2RlLFxufSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYUENsYXNzTWFwID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+O1xuZXhwb3J0IHR5cGUgQVhQU3R5bGVNYXAgPSBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+PjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUEJhc2VXaWRnZXRDb21wb25lbnQ8XG4gIFRPcHRpb25zIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBBWFBPcHRpb25zRGF0YSxcbj4gZXh0ZW5kcyBBWFBXaWRnZXRDb3JlRWxlbWVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b2tlbjogQVhQV2lkZ2V0Tm9kZVRva2VuPFRPcHRpb25zPiA9IGluamVjdChBWFBfV0lER0VUX1RPS0VOKSBhcyBBWFBXaWRnZXROb2RlVG9rZW48VE9wdGlvbnM+O1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldENvcmVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHRTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWcgPSB0aGlzLnRva2VuLmNvbmZpZztcbiAgcHVibGljIHJlYWRvbmx5IG5vZGUgPSB0aGlzLnRva2VuLm5vZGU7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hbWUgPSB0aGlzLnRva2VuLm5vZGUubmFtZTtcblxuICBwcm90ZWN0ZWQgY29tcG9uZW50ID0gdGhpcztcblxuICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb3B0aW9ucyA9IHNpZ25hbDxUT3B0aW9ucz4odGhpcy50b2tlbi5vcHRpb25zID8/ICh7fSBhcyBUT3B0aW9ucykpO1xuICBwdWJsaWMgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHB1YmxpYyBvbk9wdGlvbnNDaGFuZ2VkID0gbmV3IFN1YmplY3Q8eyBzZW5kZXI6IEFYUEJhc2VXaWRnZXRDb21wb25lbnQgfT4oKTtcblxuICBwcml2YXRlIF9zdGF0dXMgPSBzaWduYWw8QVhQV2lkZ2V0U3RhdHVzPihBWFBXaWRnZXRTdGF0dXMuUmVuZGVyaW5nKTtcbiAgcHVibGljIHN0YXR1cyA9IHRoaXMuX3N0YXR1cy5hc1JlYWRvbmx5KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uU3RhdHVzQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhQV2lkZ2V0U3RhdHVzPih0aGlzLl9zdGF0dXMoKSk7XG5cbiAgI3N0YXR1c0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgdGhpcy5vblN0YXR1c0NoYW5nZWQubmV4dCh0aGlzLnN0YXR1cygpKTtcbiAgfSk7XG5cbiAgcHVibGljIGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+IFtBWFBXaWRnZXRTdGF0dXMuUmVuZGVyaW5nLCBBWFBXaWRnZXRTdGF0dXMuUHJvY2Vzc2luZ10uaW5jbHVkZXModGhpcy5zdGF0dXMoKSkpO1xuXG4gIHBhcmVudDogQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudDxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGFyZW50Q29tcG9uZW50OiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgcGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBpbmRleDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgbW9kZTogQVhQV2lkZ2V0UmVuZGVyTW9kZTtcbiAgbG9ja2VkOiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCBvdXRwdXRzKCk6IChzdHJpbmcgfCB7IFtuYW1lOiBzdHJpbmddOiB1bmtub3duIH0pW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmIChnZXQodGhpcy5ub2RlLCAnX19tZXRhX18uYWRkZWQnKSkge1xuICAgICAgdGhpcy5vbkFkZGVkKCk7XG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdHVzKEFYUFdpZGdldFN0YXR1cy5SZW5kZXJlZCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdHVzKHN0YXR1czogQVhQV2lkZ2V0U3RhdHVzKSB7XG4gICAgdGhpcy5fc3RhdHVzLnNldChzdGF0dXMpO1xuICAgIHRoaXMubGF5b3V0U2VydmljZS51cGRhdGVTdGF0dXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRPcHRpb25zKHZhbHVlczogUGFydGlhbDxUT3B0aW9ucz4pOiB2b2lkIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMub3B0aW9ucygpO1xuICAgIGNvbnN0IHZhbHVlID0gY2xvbmVEZWVwKHZhbHVlcyk7XG4gICAgdGhpcy5fb3B0aW9ucy5zZXQoeyAuLi5vbGRWYWx1ZSwgLi4udmFsdWUgfSBhcyBUT3B0aW9ucyk7XG4gICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLm5leHQoeyBzZW5kZXI6IHRoaXMgfSk7XG4gIH1cblxuICBvdXRwdXQ8VCA9IGFueT4obmFtZTogc3RyaW5nKTogVCB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMub3V0cHV0cygpLm1hcCgoYykgPT4gKHR5cGVvZiBjID09ICdzdHJpbmcnID8geyBuYW1lOiBjLCB2YWx1ZTogYyB9IDogYykpIGFzIHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgIH1bXTtcblxuICAgIGlmIChvdXRwdXRzLnNvbWUoKGMpID0+IGMubmFtZSA9PSBuYW1lKSkge1xuICAgICAgY29uc3Qgb3B0ID0gZ2V0KHRoaXMsIG5hbWUpO1xuICAgICAgaWYgKHR5cGVvZiBvcHQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gb3B0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbCBhcyBUO1xuICB9XG5cbiAgY2FsbChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZm4gPSBnZXQodGhpcywgbmFtZSkgYXMgRnVuY3Rpb247XG4gICAgaWYgKGZuICYmIHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmbi5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBfY2hpbGRyZW4gPSBzaWduYWwodGhpcy50b2tlbi5ub2RlLmNoaWxkcmVuID8/IFtdKTtcbiAgcHJvdGVjdGVkIGNoaWxkcmVuID0gdGhpcy5fY2hpbGRyZW4uYXNSZWFkb25seSgpO1xuXG4gIHNldENoaWxkcmVuKGNoaWxkcmVuOiBBWFBXaWRnZXROb2RlW10pIHtcbiAgICB0aGlzLl9jaGlsZHJlbi5zZXQoWy4uLmNoaWxkcmVuXSk7XG4gIH1cblxuICBvbkFkZGVkKCkge31cblxuICBob3N0Q2xhc3M/KCk6IEFYUENsYXNzTWFwO1xuICBob3N0U3R5bGU/KCk6IEFYUFN0eWxlTWFwO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudDxcbiAgVE9wdGlvbnMgZXh0ZW5kcyBBWFBPcHRpb25zRGF0YSA9IEFYUE9wdGlvbnNEYXRhLFxuPiBleHRlbmRzIEFYUEJhc2VXaWRnZXRDb21wb25lbnQ8VE9wdGlvbnM+IHtcbiAgLy9UT0RPIGNoYW5nZSB0aGlzIGFwcHJvYWNoXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hbWUgJiYgISh0aGlzIGluc3RhbmNlb2YgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQpKSB7XG4gICAgICB0aGlzLmxheW91dFNlcnZpY2UucmVnaXN0ZXJXaWRnZXQodGhpcy5uYW1lLCB0aGlzKTtcbiAgICB9XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxUID0gYW55IHwgbnVsbCwgVE9wdGlvbnMgZXh0ZW5kcyBBWFBPcHRpb25zRGF0YSA9IEFYUE9wdGlvbnNEYXRhPlxuICBleHRlbmRzIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQ8VE9wdGlvbnM+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIHByb3RlY3RlZCByZWFkb25seSBwYXRoID0gdGhpcy50b2tlbi5ub2RlLnBhdGg7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0VmFsdWUgPSB0aGlzLnRva2VuLmRlZmF1bHRWYWx1ZSA/PyB0aGlzLnRva2VuLm5vZGUuZGVmYXVsdFZhbHVlO1xuXG4gIHByaXZhdGUgX2lzVmFsdWVXaWRnZXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1ZhbHVlV2lkZ2V0ID0gKCkgPT4gdGhpcy5faXNWYWx1ZVdpZGdldDtcblxuICBwdWJsaWMgb25WYWx1ZUNoYW5nZWQgPSBuZXcgU3ViamVjdDx7IHNlbmRlcjogQVhQQmFzZVdpZGdldENvbXBvbmVudCB9PigpO1xuXG4gIHB1YmxpYyBmdWxsUGF0aCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHBhcmVudFBhdGggPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5faXNWYWx1ZVdpZGdldCA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXM/LnNvbWUoKGMpID0+IGMubmFtZSA9PSAncGF0aCcpID8/IGZhbHNlO1xuICAgIGlmICh0aGlzLmlzVmFsdWVXaWRnZXQoKSkge1xuICAgICAgdGhpcy5kZXRlY3RGdWxsUGF0aCgpO1xuICAgICAgaWYgKCFpc05pbCh0aGlzLmRlZmF1bHRWYWx1ZSkgJiYgaXNOaWwodGhpcy5nZXRWYWx1ZSgpKSkge1xuICAgICAgICB0aGlzLnNldFZhbHVlKHRoaXMuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy9cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlID0gY29tcHV0ZWQ8VD4oXG4gICAgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuZnVsbFBhdGgoKSA/IHRoaXMuZXh0cmFjdFZhbHVlKHRoaXMuZnVsbFBhdGgoKSEpIDogbnVsbDtcbiAgICB9LFxuICAgIHsgZXF1YWw6IGlzRXF1YWwgfSxcbiAgKTtcblxuICBwcm90ZWN0ZWQgdmFsaWRhdGlvblJ1bGVzID0gY29tcHV0ZWQ8QVhQVmFsaWRhdGlvblJ1bGVzPigoKSA9PiB7XG4gICAgY29uc3QgdmFsaWRhdGlvbnNSYXcgPSB0aGlzLm9wdGlvbnMoKVsndmFsaWRhdGlvbnMnXTtcbiAgICBpZiAodmFsaWRhdGlvbnNSYXcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLm9wdGlvbnMoKVsndmFsaWRhdGlvbnMnXSlcbiAgICAgIC5maWx0ZXIoKGMpID0+IGMgIT0gbnVsbClcbiAgICAgIC5tYXAoXG4gICAgICAgIChjOiBhbnkpID0+XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIHJ1bGU6IGMucnVsZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGMubWVzc2FnZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IGMub3B0aW9ucyxcbiAgICAgICAgICB9KSBhcyBBWFBWYWxpZGF0aW9uUnVsZSxcbiAgICAgICk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBleHRyYWN0VmFsdWUocGF0aDogc3RyaW5nKTogYW55IHtcbiAgICBjb25zdCByYXdWYWx1ZSA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0VmFsdWUocGF0aCk7XG4gICAgaWYgKHRoaXMubm9kZS52YWx1ZVRyYW5zZm9ybXM/LmdldHRlcikge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZS52YWx1ZVRyYW5zZm9ybXM/LmdldHRlcihyYXdWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByYXdWYWx1ZTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLm5vZGUudmFsdWVUcmFuc2Zvcm1zPy5zZXR0ZXIpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5ub2RlLnZhbHVlVHJhbnNmb3Jtcz8uc2V0dGVyKHZhbHVlKTtcbiAgICB9XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgdmFsdWUgPSBpc1VuZGVmaW5lZCh2YWx1ZSkgPyBudWxsIDogdmFsdWU7XG4gICAgaWYgKGlzTmlsKHZhbHVlKSAmJiBpc05pbChvbGRWYWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzRXF1YWwob2xkVmFsdWUsIHZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5mdWxsUGF0aCgpKSB7XG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh0aGlzLmZ1bGxQYXRoKCkhLCB2YWx1ZSk7XG4gICAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLm5leHQoeyBzZW5kZXI6IHRoaXMgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RGdWxsUGF0aCgpIHtcbiAgICBjb25zdCBzZWN0aW9ucyA9IFtdO1xuICAgIGNvbnN0IGlkcyA9IFtdO1xuICAgIC8vXG4gICAgbGV0IHBhcmVudDogQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudDxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZCA9IHRoaXMgYXMgQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudDxhbnk+O1xuICAgIC8vXG4gICAgd2hpbGUgKHBhcmVudCkge1xuICAgICAgY29uc3QgaXNWYWx1ZVdpZGdldCA9IHBhcmVudCBpbnN0YW5jZW9mIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50ICYmIHBhcmVudC5pc1ZhbHVlV2lkZ2V0KCk7XG4gICAgICBjb25zdCB2YWx1ZVBhcmVudCA9IHBhcmVudCBhcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxhbnksIGFueT47XG4gICAgICBjb25zdCBwYXRoID0gdmFsdWVQYXJlbnQucGF0aCA/PyAoaXNWYWx1ZVdpZGdldCA/IHZhbHVlUGFyZW50Lm5hbWUgOiBudWxsKTtcbiAgICAgIGNvbnN0IGlkID0gdmFsdWVQYXJlbnQubmFtZTtcbiAgICAgIC8vXG4gICAgICBpZiAocGF0aCkge1xuICAgICAgICBzZWN0aW9ucy5wdXNoKHBhdGgpO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudC5pbmRleCAhPSBudWxsICYmIGlzVmFsdWVXaWRnZXQpIHtcbiAgICAgICAgc2VjdGlvbnMucHVzaChgWyR7cGFyZW50LmluZGV4fV1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChpZCkge1xuICAgICAgICBpZHMucHVzaChpZCk7XG4gICAgICAgIGlmIChwYXJlbnQuaW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgIGlkcy5wdXNoKGAke3BhcmVudC5pbmRleH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICB9XG4gICAgLy9cbiAgICB0aGlzLmZ1bGxQYXRoLnNldChzZWN0aW9ucy5yZXZlcnNlKCkuam9pbignLicpKTtcbiAgICB0aGlzLnBhcmVudFBhdGguc2V0KHNlY3Rpb25zLnNsaWNlKDAsIHNlY3Rpb25zLmxlbmd0aCAtIDEpLmpvaW4oJy4nKSk7XG4gICAgdGhpcy5faWQgPSB0aGlzLm5hbWUgfHwgdGhpcy5wYXJlbnQgPyBpZHMucmV2ZXJzZSgpLmpvaW4oJ18nKSA6IG51bGw7XG4gICAgaWYgKHRoaXMuX2lkKSB7XG4gICAgICB0aGlzLmxheW91dFNlcnZpY2UucmVnaXN0ZXJXaWRnZXQodGhpcy5faWQsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVWYWx1ZUNoYW5nZWQoZTogQVhWYWx1ZUNoYW5nZWRFdmVudDxUPikge1xuICAgIGlmIChlLmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKGUudmFsdWUpO1xuICAgIH1cbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQRGF0YUxpc3RXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxhbnk+IHtcbiAgcHJpdmF0ZSBkYXRhU2VydmljZSA9IGluamVjdChBWFBEYXRhU291cmNlRGVmaW5pdGlvblByb3ZpZGVyU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIHRleHRGaWVsZCA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gdGhpcy5vcHRpb25zKClbJ3RleHRGaWVsZCddID8/ICd0aXRsZScpO1xuICBwcm90ZWN0ZWQgdmFsdWVGaWVsZCA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4gKHRoaXMub3B0aW9ucygpWyd2YWx1ZUZpZWxkJ10gYXMgc3RyaW5nKSA/PyAnaWQnKTtcbiAgcHJvdGVjdGVkIHRleHRUZW1wbGF0ZSA9IGNvbXB1dGVkPHN0cmluZyB8IHVuZGVmaW5lZD4oKCkgPT5cbiAgICBpc05pbCh0aGlzLm9wdGlvbnMoKVsndGV4dFRlbXBsYXRlJ10pXG4gICAgICA/IHVuZGVmaW5lZFxuICAgICAgOiAodGhpcy5vcHRpb25zKClbJ3RleHRUZW1wbGF0ZSddIGFzIHN0cmluZykucmVwbGFjZSgvey9nLCAne3snKS5yZXBsYWNlKC99L2csICd9fScpLFxuICApO1xuXG4gIHByb3RlY3RlZCBkYXRhU291cmNlID0gc2lnbmFsPEFYRGF0YVNvdXJjZTxhbnk+Pihjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2U8YW55PihbXSkpO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zID0gc2lnbmFsPGFueVtdPihbXSk7XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBEYXRhU291cmNlIExvYWRpbmcgRWZmZWN0ICAgLS0tLVxuXG4gIC8qKlxuICAgKiBUcmFjayB0aGUgbGFzdCBsb2FkZWQgc3RyaW5nIGRhdGFTb3VyY2UgcmVmZXJlbmNlIHRvIHByZXZlbnQgaW5maW5pdGUgbG9vcHNcbiAgICogT25seSB1c2VkIGZvciBzdHJpbmctYmFzZWQgZGF0YXNvdXJjZXMgKG5vdCBhcnJheXMgb3IgQVhEYXRhU291cmNlIGluc3RhbmNlcylcbiAgICovXG4gIHByaXZhdGUgbGFzdFN0cmluZ0RhdGFTb3VyY2VSZWY6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmYgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gdGhpcy5vcHRpb25zKClbJ2RhdGFTb3VyY2UnXTtcblxuICAgIC8vIEZvciBzdHJpbmcgZGF0YXNvdXJjZXM6IHByZXZlbnQgaW5maW5pdGUgbG9vcCBieSBjaGVja2luZyByZWZlcmVuY2VcbiAgICBpZiAodHlwZW9mIHJhd1ZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHJhd1ZhbHVlID09PSB0aGlzLmxhc3RTdHJpbmdEYXRhU291cmNlUmVmKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMubGFzdFN0cmluZ0RhdGFTb3VyY2VSZWYgPSByYXdWYWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmVzZXQgc3RyaW5nIHJlZmVyZW5jZSB3aGVuIGRhdGFTb3VyY2UgY2hhbmdlcyB0byBub24tc3RyaW5nXG4gICAgICB0aGlzLmxhc3RTdHJpbmdEYXRhU291cmNlUmVmID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGRhdGFTb3VyY2UgY3JlYXRpb24gaW4gdW50cmFja2VkIGNvbnRleHRcbiAgICBhd2FpdCB1bnRyYWNrZWQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKHJhd1ZhbHVlIGluc3RhbmNlb2YgQVhEYXRhU291cmNlKSB7XG4gICAgICAgIC8vIEZvciBBWERhdGFTb3VyY2UgaW5zdGFuY2VzLCBjaGVjayBpZiBjb25maWcgY2hhbmdlZFxuICAgICAgICBpZiAoIWlzRXF1YWwocmF3VmFsdWUuY29uZmlnLCB0aGlzLmRhdGFTb3VyY2UoKS5jb25maWcpKSB7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChyYXdWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHN0YXRpYyBhcnJheSBkYXRhc291cmNlIC0gYWx3YXlzIHJlY3JlYXRlIHdoZW4gb3B0aW9ucyBjaGFuZ2VcbiAgICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGRzID0gbmV3IEFYRGF0YVNvdXJjZSh7XG4gICAgICAgICAga2V5OiB0aGlzLnZhbHVlRmllbGQoKSxcbiAgICAgICAgICBwYWdlU2l6ZTogMTAsXG4gICAgICAgICAgbG9hZDogYXN5bmMgKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gdGhpcy5vcHRpb25zKClbJ2RhdGFTb3VyY2UnXTtcbiAgICAgICAgICAgIGNvbnN0IHNraXAgPSBlLnNraXAgPz8gMDtcbiAgICAgICAgICAgIGNvbnN0IHRha2UgPSBlLnRha2UgPz8gcmF3Lmxlbmd0aDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGl0ZW1zOiByYXcuc2xpY2Uoc2tpcCwgc2tpcCArIHRha2UpLFxuICAgICAgICAgICAgICB0b3RhbDogcmF3Lmxlbmd0aCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBieUtleTogKGtleTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmF3ID0gdGhpcy5vcHRpb25zKClbJ2RhdGFTb3VyY2UnXTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSByYXcuZmlsdGVyKChjOiBhbnkpID0+IGNbdGhpcy52YWx1ZUZpZWxkKCldID09IGtleSk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGl0ZW1bMF0pIGFzIGFueTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChkcyk7XG4gICAgICB9XG4gICAgICAvLyByZXNvbHZlIGRhdGEgc291cmNlIGJ5IG5hbWUgKHN0cmluZyBvciBvYmplY3Qgd2l0aCBpZClcbiAgICAgIGVsc2UgaWYgKHJhd1ZhbHVlICYmICh0eXBlb2YgcmF3VmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHJhd1ZhbHVlID09ICdvYmplY3QnKSkge1xuICAgICAgICBjb25zdCBpZCA9IHR5cGVvZiByYXdWYWx1ZSA9PSAnb2JqZWN0JyA/IHJhd1ZhbHVlWydpZCddIDogcmF3VmFsdWU7XG4gICAgICAgIGNvbnN0IGMgPSBhd2FpdCB0aGlzLmRhdGFTZXJ2aWNlLmdldChpZCk7XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT0gJ2Rlc2lnbmVyJyAmJiBjPy5zYW1wbGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KFxuICAgICAgICAgICAgY29udmVydEFycmF5VG9EYXRhU291cmNlKGMuc2FtcGxlcywge1xuICAgICAgICAgICAgICBrZXk6IHRoaXMudmFsdWVGaWVsZCgpLFxuICAgICAgICAgICAgICBwYWdlU2l6ZTogNTAwLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBkcyA9IGM/LnNvdXJjZSgpO1xuICAgICAgICAgIGlmIChkcyAmJiBkcyBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSBhd2FpdCBkcztcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoZCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChkcykge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChkcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGVtcHR5IGRhdGFzb3VyY2VcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoY29udmVydEFycmF5VG9EYXRhU291cmNlPGFueT4oW10pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGVtcHR5IGRhdGFzb3VyY2VcbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZTxhbnk+KFtdKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIHByb3RlY3RlZCBhc3luYyBleHRyYWN0SXRlbShpdGVtOiB1bmtub3duKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoaXNOaWwoaXRlbSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBpZiAoaXNPYmplY3RMaWtlKGl0ZW0pICYmIGdldChpdGVtLCB0aGlzLnRleHRGaWVsZCgpKSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gICAgY29uc3Qga2V5ID0gZXh0cmFjdFZhbHVlKGl0ZW0sIHRoaXMudmFsdWVGaWVsZCgpKTtcbiAgICBjb25zdCBkcyA9IHRoaXMuZGF0YVNvdXJjZSgpO1xuICAgIGlmIChkcy5jb25maWc/LmJ5S2V5KSB7XG4gICAgICBjb25zdCBmb3VuZCA9IGF3YWl0IGRzLmNvbmZpZz8uYnlLZXkoa2V5KTtcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpc09iamVjdExpa2UoaXRlbSlcbiAgICAgID8gaXRlbVxuICAgICAgOiB7XG4gICAgICAgICAgW3RoaXMudmFsdWVGaWVsZCgpXTogaXRlbSxcbiAgICAgICAgICBbdGhpcy50ZXh0RmllbGQoKV06IGl0ZW0sXG4gICAgICAgIH07XG4gIH1cblxuICBwcml2YXRlIGVmZmVjdDIgPSBlZmZlY3QoYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaXRlbXMucHVzaCguLi4oYXdhaXQgUHJvbWlzZS5hbGwodmFsdWUubWFwKChpdGVtOiBhbnkpID0+IHRoaXMuZXh0cmFjdEl0ZW0oaXRlbSkpKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtcy5wdXNoKGF3YWl0IHRoaXMuZXh0cmFjdEl0ZW0odmFsdWUpKTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNldChpdGVtcy5maWx0ZXIoKGMpID0+IGMgIT0gbnVsbCkpO1xuICB9KTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUENvbHVtbldpZGdldENvbXBvbmVudDxUID0gYW55IHwgbnVsbCB8IHZvaWQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2tlbiA9IGluamVjdChBWFBfV0lER0VUX0NPTFVNTl9UT0tFTik7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBhdGggPSB0aGlzLnRva2VuLnBhdGg7XG4gIHByb3RlY3RlZCByZWFkb25seSBvcHRpb25zID0gdGhpcy50b2tlbi5vcHRpb25zID8/IHt9O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmF3VmFsdWU6IFQgPSBudWxsIGFzIFQ7XG4gIHByb3RlY3RlZCByZWFkb25seSByb3dEYXRhOiBhbnk7XG4gIHByb3RlY3RlZCByZWFkb25seSBudWxsVGV4dDogYW55ID0gdGhpcy5vcHRpb25zWydudWxsVGV4dCddIGFzIHN0cmluZztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG51bGxWYWx1ZTogVCA9IHRoaXMub3B0aW9uc1snbnVsbFZhbHVlJ10gYXMgVDtcblxuICBwcm90ZWN0ZWQgdmFsdWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKGlzTmlsKHRoaXMucmF3VmFsdWUpICYmICFpc05pbCh0aGlzLm51bGxWYWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm51bGxWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmF3VmFsdWU7XG4gIH0pO1xufVxuIl19","import { computed, Injectable } from '@angular/core';\nimport { AXPLayoutBaseWidgetComponent } from '../widget-base.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostBoxStyle = computed(() => {\n const options = this.options();\n const style = {};\n const spacing = options?.['spacing'];\n const border = options?.['border'];\n const backgroundColor = options?.['backgroundColor'];\n const direction = options?.['direction'];\n const overflow = options?.['overflow'];\n const overflowX = options?.['overflowX'];\n const overflowY = options?.['overflowY'];\n style['background-color'] = backgroundColor ?? '';\n style['padding'] = spacing?.padding ?? '';\n style['margin'] = spacing?.margin ?? '';\n style['border-radius'] = border?.radius ?? '';\n style['border-width'] = border?.width ?? '';\n style['border-color'] = border?.color ?? '';\n style['border-style'] = border?.style ?? '';\n style['overflow'] = overflow ?? '';\n style['overflow-x'] = overflowX ?? '';\n style['overflow-y'] = overflowY ?? '';\n style['direction'] = direction ?? '';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostBoxStyle\" }] : []));\n this.blockStyle = computed(() => {\n const options = this.options();\n const style = { ...this.hostBoxStyle() };\n const width = options?.['width'];\n const minWidth = options?.['minWidth'];\n const maxWidth = options?.['maxWidth'];\n const height = options?.['height'];\n const minHeight = options?.['minHeight'];\n const maxHeight = options?.['maxHeight'];\n style['min-width'] = minWidth ?? '';\n style['width'] = width ?? '';\n style['max-width'] = maxWidth ?? '';\n style['min-height'] = minHeight ?? '';\n style['height'] = height ?? '';\n style['max-height'] = maxHeight ?? '';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"blockStyle\" }] : []));\n this.inlineStyle = computed(() => {\n return { ...this.hostBoxStyle() };\n }, ...(ngDevMode ? [{ debugName: \"inlineStyle\" }] : []));\n this.blockClass = computed(() => {\n return {\n 'ax-block': true,\n 'ax-w-full': true,\n // 'ax-widget-outline': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"blockClass\" }] : []));\n this.inlineClass = computed(() => {\n return {\n 'ax-inline-block': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"inlineClass\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LW1vZGVsLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL2Jhc2Utd2lkZ2V0L2JveC1tb2RlbC13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBZSw0QkFBNEIsRUFBZSxNQUFNLDBCQUEwQixDQUFDOztBQUdsRyxNQUFNLE9BQWdCLGdDQUFpQyxTQUFRLDRCQUE0QjtJQUQzRjs7UUFFUyxpQkFBWSxHQUFHLFFBQVEsQ0FBYyxHQUFHLEVBQUU7WUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRS9CLE1BQU0sS0FBSyxHQUFvQyxFQUFFLENBQUM7WUFFbEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFvQyxDQUFDO1lBQ3hFLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBbUMsQ0FBQztZQUVyRSxNQUFNLGVBQWUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBdUIsQ0FBQztZQUMzRSxNQUFNLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQXVCLENBQUM7WUFFL0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUF1QixDQUFDO1lBQzdELE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBdUIsQ0FBQztZQUMvRCxNQUFNLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQXVCLENBQUM7WUFFL0QsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsZUFBZSxJQUFJLEVBQUUsQ0FBQztZQUNsRCxLQUFLLENBQUMs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LFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQm9yZGVyQm94U3RyaW5nLCBBWFBTcGFjaW5nQm94U3RyaW5nIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IEFYUENsYXNzTWFwLCBBWFBMYXlvdXRCYXNlV2lkZ2V0Q29tcG9uZW50LCBBWFBTdHlsZU1hcCB9IGZyb20gJy4uL3dpZGdldC1iYXNlLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBCb3hNb2RlbExheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQge1xuICBwdWJsaWMgaG9zdEJveFN0eWxlID0gY29tcHV0ZWQ8QVhQU3R5bGVNYXA+KCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG5cbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHt9O1xuXG4gICAgY29uc3Qgc3BhY2luZyA9IG9wdGlvbnM/Llsnc3BhY2luZyddIGFzIEFYUFNwYWNpbmdCb3hTdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgYm9yZGVyID0gb3B0aW9ucz8uWydib3JkZXInXSBhcyBBWFBCb3JkZXJCb3hTdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBvcHRpb25zPy5bJ2JhY2tncm91bmRDb2xvciddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBvcHRpb25zPy5bJ2RpcmVjdGlvbiddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IG92ZXJmbG93ID0gb3B0aW9ucz8uWydvdmVyZmxvdyddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvdmVyZmxvd1ggPSBvcHRpb25zPy5bJ292ZXJmbG93WCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvdmVyZmxvd1kgPSBvcHRpb25zPy5bJ292ZXJmbG93WSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSBiYWNrZ3JvdW5kQ29sb3IgPz8gJyc7XG4gICAgc3R5bGVbJ3BhZGRpbmcnXSA9IHNwYWNpbmc/LnBhZGRpbmcgPz8gJyc7XG4gICAgc3R5bGVbJ21hcmdpbiddID0gc3BhY2luZz8ubWFyZ2luID8/ICcnO1xuXG4gICAgc3R5bGVbJ2JvcmRlci1yYWRpdXMnXSA9IGJvcmRlcj8ucmFkaXVzID8/ICcnO1xuICAgIHN0eWxlWydib3JkZXItd2lkdGgnXSA9IGJvcmRlcj8ud2lkdGggPz8gJyc7XG4gICAgc3R5bGVbJ2JvcmRlci1jb2xvciddID0gYm9yZGVyPy5jb2xvciA/PyAnJztcbiAgICBzdHlsZVsnYm9yZGVyLXN0eWxlJ10gPSBib3JkZXI/LnN0eWxlID8/ICcnO1xuXG4gICAgc3R5bGVbJ292ZXJmbG93J10gPSBvdmVyZmxvdyA/PyAnJztcbiAgICBzdHlsZVsnb3ZlcmZsb3cteCddID0gb3ZlcmZsb3dYID8/ICcnO1xuICAgIHN0eWxlWydvdmVyZmxvdy15J10gPSBvdmVyZmxvd1kgPz8gJyc7XG5cbiAgICBzdHlsZVsnZGlyZWN0aW9uJ10gPSBkaXJlY3Rpb24gPz8gJyc7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBibG9ja1N0eWxlID0gY29tcHV0ZWQ8QVhQU3R5bGVNYXA+KCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG5cbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4udGhpcy5ob3N0Qm94U3R5bGUoKSB9O1xuXG4gICAgY29uc3Qgd2lkdGggPSBvcHRpb25zPy5bJ3dpZHRoJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1pbldpZHRoID0gb3B0aW9ucz8uWydtaW5XaWR0aCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtYXhXaWR0aCA9IG9wdGlvbnM/LlsnbWF4V2lkdGgnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBoZWlnaHQgPSBvcHRpb25zPy5bJ2hlaWdodCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtaW5IZWlnaHQgPSBvcHRpb25zPy5bJ21pbkhlaWdodCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSBvcHRpb25zPy5bJ21heEhlaWdodCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHN0eWxlWydtaW4td2lkdGgnXSA9IG1pbldpZHRoID8/ICcnO1xuICAgIHN0eWxlWyd3aWR0aCddID0gd2lkdGggPz8gJyc7XG4gICAgc3R5bGVbJ21heC13aWR0aCddID0gbWF4V2lkdGggPz8gJyc7XG5cbiAgICBzdHlsZVsnbWluLWhlaWdodCddID0gbWluSGVpZ2h0ID8/ICcnO1xuICAgIHN0eWxlWydoZWlnaHQnXSA9IGhlaWdodCA/PyAnJztcbiAgICBzdHlsZVsnbWF4LWhlaWdodCddID0gbWF4SGVpZ2h0ID8/ICcnO1xuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaW5saW5lU3R5bGUgPSBjb21wdXRlZDxBWFBTdHlsZU1hcD4oKCkgPT4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuaG9zdEJveFN0eWxlKCkgfTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGJsb2NrQ2xhc3MgPSBjb21wdXRlZDxBWFBDbGFzc01hcD4oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAnYXgtYmxvY2snOiB0cnVlLFxuICAgICAgJ2F4LXctZnVsbCc6IHRydWUsXG4gICAgICAvLyAnYXgtd2lkZ2V0LW91dGxpbmUnOiB0cnVlLFxuICAgIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBpbmxpbmVDbGFzcyA9IGNvbXB1dGVkPEFYUENsYXNzTWFwPigoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdheC1pbmxpbmUtYmxvY2snOiB0cnVlLFxuICAgIH07XG4gIH0pO1xufVxuIl19","import { Injectable, computed } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi9iYXNlLXdpZGdldC9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR2hGLE1BQU0sT0FBZ0IsaUNBQWtDLFNBQVEsZ0NBQWdDO0lBRGhHOztRQUVrQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUscURBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUscURBQUMsQ0FBQztLQUMvRDsrR0FIcUIsaUNBQWlDO21IQUFqQyxpQ0FBaUM7OzRGQUFqQyxpQ0FBaUM7a0JBRHRELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQm94TW9kZWxMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2JveC1tb2RlbC13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJveE1vZGVsTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmxvY2tDbGFzcygpKTtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmxvY2tTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"flex\" }] : []));\n this.hostFlexStyle = computed(() => {\n const blockStyle = this.blockStyle();\n const style = { ...blockStyle };\n const flex = this.flex();\n if (isNil(flex?.flexDirection)) {\n style['flex-direction'] = '';\n }\n else {\n style['flex-direction'] = flex.flexDirection;\n }\n if (isNil(flex?.flexWrap)) {\n style['flex-wrap'] = '';\n }\n else {\n style['flex-wrap'] = flex.flexWrap;\n }\n //TODO NEED TO FIX LATER\n style['overflow'] = flex?.flexWrap === 'nowrap' ? 'auto' : '';\n //END\n if (isNil(flex?.justifyContent)) {\n style['justify-content'] = '';\n }\n else {\n style['justify-content'] = flex.justifyContent;\n }\n if (isNil(flex?.alignItems)) {\n style['align-items'] = '';\n }\n else {\n style['align-items'] = flex.alignItems;\n }\n if (isNil(flex?.gap)) {\n style['gap'] = '';\n }\n else {\n style['gap'] = flex.gap;\n }\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostFlexStyle\" }] : []));\n this.hostFlexClass = computed(() => {\n return {\n ...this.blockClass(),\n 'ax-flex': true,\n 'ax-h-full': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"hostFlexClass\" }] : []));\n this.hostClass = computed(() => {\n return this.hostFlexClass();\n }, ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => {\n return this.hostFlexStyle();\n }, ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL2Jhc2Utd2lkZ2V0L2ZsZXgtYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2xGLE1BQU0sT0FBZ0IsZ0NBQWlDLFNBQVEsaUNBQWlDO0lBRGhHOztRQUVZLFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBa0MsZ0RBQUMsQ0FBQztRQUV6RSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sS0FBSyxHQUFvQyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUMvQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDL0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDL0MsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUMxQixLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxDQUFDO1lBQ0Qsd0JBQXdCO1lBQ3hCLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLEVBQUUsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUQsS0FBSztZQUNMLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDakQsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUM1QixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQzFCLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMseURBQUMsQ0FBQztRQUVJLGtCQUFhLEdBQUcsUUFBUSxDQUEwQixHQUFHLEVBQUU7WUFDNUQsT0FBTztnQkFDTCxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7UUFDSixDQUFDLHlEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLHFEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLHFEQUFDLENBQUM7S0FDSjsrR0FyRHFCLGdDQUFnQzttSEFBaEMsZ0NBQWdDOzs0RkFBaEMsZ0NBQWdDO2tCQURyRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUEZsZXhCb3hTdHJpbmcgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQRmxleEJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCbG9ja0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgZmxleCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpIGFzIEFYUEZsZXhCb3hTdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBob3N0RmxleFN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGJsb2NrU3R5bGUgPSB0aGlzLmJsb2NrU3R5bGUoKTtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4uYmxvY2tTdHlsZSB9O1xuICAgIGNvbnN0IGZsZXggPSB0aGlzLmZsZXgoKTtcbiAgICBpZiAoaXNOaWwoZmxleD8uZmxleERpcmVjdGlvbikpIHtcbiAgICAgIHN0eWxlWydmbGV4LWRpcmVjdGlvbiddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydmbGV4LWRpcmVjdGlvbiddID0gZmxleC5mbGV4RGlyZWN0aW9uO1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmxleD8uZmxleFdyYXApKSB7XG4gICAgICBzdHlsZVsnZmxleC13cmFwJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2ZsZXgtd3JhcCddID0gZmxleC5mbGV4V3JhcDtcbiAgICB9XG4gICAgLy9UT0RPIE5FRUQgVE8gRklYIExBVEVSXG4gICAgc3R5bGVbJ292ZXJmbG93J10gPSBmbGV4Py5mbGV4V3JhcCA9PT0gJ25vd3JhcCcgPyAnYXV0bycgOiAnJztcbiAgICAvL0VORFxuICAgIGlmIChpc05pbChmbGV4Py5qdXN0aWZ5Q29udGVudCkpIHtcbiAgICAgIHN0eWxlWydqdXN0aWZ5LWNvbnRlbnQnXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnanVzdGlmeS1jb250ZW50J10gPSBmbGV4Lmp1c3RpZnlDb250ZW50O1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmxleD8uYWxpZ25JdGVtcykpIHtcbiAgICAgIHN0eWxlWydhbGlnbi1pdGVtcyddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydhbGlnbi1pdGVtcyddID0gZmxleC5hbGlnbkl0ZW1zO1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmxleD8uZ2FwKSkge1xuICAgICAgc3R5bGVbJ2dhcCddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydnYXAnXSA9IGZsZXguZ2FwO1xuICAgIH1cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0pO1xuXG4gIHB1YmxpYyBob3N0RmxleENsYXNzID0gY29tcHV0ZWQ8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5ibG9ja0NsYXNzKCksXG4gICAgICAnYXgtZmxleCc6IHRydWUsXG4gICAgICAnYXgtaC1mdWxsJzogdHJ1ZSxcbiAgICB9O1xuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RGbGV4Q2xhc3MoKTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RmxleFN0eWxlKCk7XG4gIH0pO1xufVxuIl19","import { computed, Injectable } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvYmFzZS13aWRnZXQvaW5saW5lLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHaEYsTUFBTSxPQUFnQixrQ0FBbUMsU0FBUSxnQ0FBZ0M7SUFEakc7O1FBRWtCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxxREFBQyxDQUFDO1FBQy9DLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxxREFBQyxDQUFDO0tBQ2hFOytHQUhxQixrQ0FBa0M7bUhBQWxDLGtDQUFrQzs7NEZBQWxDLGtDQUFrQztrQkFEdkQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBCb3hNb2RlbExheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYm94LW1vZGVsLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQSW5saW5lQmFzZUxheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJveE1vZGVsTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW5saW5lQ2xhc3MoKSk7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlubGluZVN0eWxlKCkpO1xufVxuIl19","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPInlineBaseLayoutWidgetComponent } from './inline-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"flexItem\" }] : []));\n this.hostFlexItemStyle = computed(() => {\n const inlineStyle = this.blockStyle();\n const style = { ...inlineStyle };\n const fi = this.flexItem();\n if (isNil(fi?.order)) {\n style['order'] = '';\n }\n else {\n style['order'] = fi.order;\n }\n if (isNil(fi?.grow)) {\n style['flex-grow'] = '';\n }\n else {\n style['flex-grow'] = fi.grow;\n }\n if (isNil(fi?.shrink)) {\n style['flex-shrink'] = '';\n }\n else {\n style['flex-shrink'] = fi.shrink;\n }\n if (isNil(fi?.basis)) {\n style['flex-basis'] = '';\n }\n else {\n style['flex-basis'] = fi.basis;\n }\n if (isNil(fi?.alignSelf)) {\n style['align-self'] = '';\n }\n else {\n style['align-self'] = fi.alignSelf;\n }\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostFlexItemStyle\" }] : []));\n this.hostFlexItemClass = computed(() => {\n return {\n ...this.blockClass(),\n };\n }, ...(ngDevMode ? [{ debugName: \"hostFlexItemClass\" }] : []));\n this.hostClass = computed(() => {\n return this.hostFlexItemClass();\n }, ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => {\n return this.hostFlexItemStyle();\n }, ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvYmFzZS13aWRnZXQvZmxleC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUdwRixNQUFNLE9BQWdCLG9DQUFxQyxTQUFRLGtDQUFrQztJQURyRzs7UUFFWSxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQXNDLG9EQUFDLENBQUM7UUFFakYsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUNsRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDL0IsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN0QixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDckMsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyw2REFBQyxDQUFDO1FBRUksc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QyxPQUFPO2dCQUNMLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUNyQixDQUFDO1FBQ0osQ0FBQyw2REFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNsQyxDQUFDLHFEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xDLENBQUMscURBQUMsQ0FBQztLQUNKOytHQWhEcUIsb0NBQW9DO21IQUFwQyxvQ0FBb0M7OzRGQUFwQyxvQ0FBb0M7a0JBRHpELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQRmxleEl0ZW1Cb3hTdHJpbmcgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgQVhQSW5saW5lQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vaW5saW5lLWJhc2Utd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBGbGV4SXRlbUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBJbmxpbmVCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGZsZXhJdGVtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkgYXMgQVhQRmxleEl0ZW1Cb3hTdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBob3N0RmxleEl0ZW1TdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbmxpbmVTdHlsZSA9IHRoaXMuYmxvY2tTdHlsZSgpO1xuICAgIGNvbnN0IHN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0geyAuLi5pbmxpbmVTdHlsZSB9O1xuICAgIGNvbnN0IGZpID0gdGhpcy5mbGV4SXRlbSgpO1xuICAgIGlmIChpc05pbChmaT8ub3JkZXIpKSB7XG4gICAgICBzdHlsZVsnb3JkZXInXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnb3JkZXInXSA9IGZpLm9yZGVyO1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmk/Lmdyb3cpKSB7XG4gICAgICBzdHlsZVsnZmxleC1ncm93J10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2ZsZXgtZ3JvdyddID0gZmkuZ3JvdztcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZpPy5zaHJpbmspKSB7XG4gICAgICBzdHlsZVsnZmxleC1zaHJpbmsnXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnZmxleC1zaHJpbmsnXSA9IGZpLnNocmluaztcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZpPy5iYXNpcykpIHtcbiAgICAgIHN0eWxlWydmbGV4LWJhc2lzJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2ZsZXgtYmFzaXMnXSA9IGZpLmJhc2lzO1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmk/LmFsaWduU2VsZikpIHtcbiAgICAgIHN0eWxlWydhbGlnbi1zZWxmJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2FsaWduLXNlbGYnXSA9IGZpLmFsaWduU2VsZjtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwdWJsaWMgaG9zdEZsZXhJdGVtQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuYmxvY2tDbGFzcygpLFxuICAgIH07XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEZsZXhJdGVtQ2xhc3MoKTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RmxleEl0ZW1TdHlsZSgpO1xuICB9KTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n this.hostGridStyle = computed(() => {\n const style = { ...this.inlineStyle() };\n const g = this.grid()?.default;\n if (g?.gap)\n style['gap'] = g.gap;\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostGridStyle\" }] : []));\n this.hostGridClass = computed(() => {\n const cls = {\n ...this.inlineClass(),\n 'ax-grid': true,\n };\n const g = this.grid()?.default;\n if (g?.columns)\n cls[`lg:ax-grid-cols-${g.columns}`] = true;\n if (g?.rows)\n cls[`lg:ax-grid-rows-${g.rows}`] = true;\n if (g?.justifyItems)\n cls[`lg:ax-justify-items-${g.justifyItems}`] = true;\n if (g?.alignItems)\n cls[`lg:ax-align-items-${g.alignItems}`] = true;\n if (g?.autoFlow)\n cls[`lg:ax-grid-flow-${g.autoFlow}`] = true;\n return cls;\n }, ...(ngDevMode ? [{ debugName: \"hostGridClass\" }] : []));\n this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL2Jhc2Utd2lkZ2V0L2dyaWQtYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUdsRixNQUFNLE9BQWdCLGdDQUFpQyxTQUFRLGlDQUFpQztJQURoRzs7UUFFVSxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBd0MsZ0RBQUMsQ0FBQztRQUV4RixrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN6RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDO1lBRS9CLElBQUksQ0FBQyxFQUFFLEdBQUc7Z0JBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFFakMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLHlEQUFDLENBQUM7UUFFSSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxHQUFHLEdBQTRCO2dCQUNuQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUM7WUFFRixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDO1lBRS9CLElBQUksQ0FBQyxFQUFFLE9BQU87Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDM0QsSUFBSSxDQUFDLEVBQUUsSUFBSTtnQkFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNyRCxJQUFJLENBQUMsRUFBRSxZQUFZO2dCQUFFLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxFQUFFLFVBQVU7Z0JBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDbkUsSUFBSSxDQUFDLEVBQUUsUUFBUTtnQkFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUU3RCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMseURBQUMsQ0FBQztRQUVhLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxxREFBQyxDQUFDO1FBQ2pELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxxREFBQyxDQUFDO0tBQ2xFOytHQS9CcUIsZ0NBQWdDO21IQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRHJELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQR3JpZEJyZWFrcG9pbnRWYWx1ZXMgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQR3JpZEJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCbG9ja0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICBwcml2YXRlIGdyaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKT8uWydncmlkJ10gYXMgQVhQR3JpZEJyZWFrcG9pbnRWYWx1ZXMgfCB1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBob3N0R3JpZFN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0geyAuLi50aGlzLmlubGluZVN0eWxlKCkgfTtcbiAgICBjb25zdCBnID0gdGhpcy5ncmlkKCk/LmRlZmF1bHQ7XG5cbiAgICBpZiAoZz8uZ2FwKSBzdHlsZVsnZ2FwJ10gPSBnLmdhcDtcblxuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHVibGljIGhvc3RHcmlkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2xzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHtcbiAgICAgIC4uLnRoaXMuaW5saW5lQ2xhc3MoKSxcbiAgICAgICdheC1ncmlkJzogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3QgZyA9IHRoaXMuZ3JpZCgpPy5kZWZhdWx0O1xuXG4gICAgaWYgKGc/LmNvbHVtbnMpIGNsc1tgbGc6YXgtZ3JpZC1jb2xzLSR7Zy5jb2x1bW5zfWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8ucm93cykgY2xzW2BsZzpheC1ncmlkLXJvd3MtJHtnLnJvd3N9YF0gPSB0cnVlO1xuICAgIGlmIChnPy5qdXN0aWZ5SXRlbXMpIGNsc1tgbGc6YXgtanVzdGlmeS1pdGVtcy0ke2cuanVzdGlmeUl0ZW1zfWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8uYWxpZ25JdGVtcykgY2xzW2BsZzpheC1hbGlnbi1pdGVtcy0ke2cuYWxpZ25JdGVtc31gXSA9IHRydWU7XG4gICAgaWYgKGc/LmF1dG9GbG93KSBjbHNbYGxnOmF4LWdyaWQtZmxvdy0ke2cuYXV0b0Zsb3d9YF0gPSB0cnVlO1xuXG4gICAgcmV0dXJuIGNscztcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaG9zdEdyaWRDbGFzcygpKTtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaG9zdEdyaWRTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { AXPFlexBaseLayoutWidgetComponent } from './flex-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"gridItem\" }] : []));\n this.hostGridItemStyle = computed(() => {\n const style = { ...this.hostFlexStyle() };\n const g = this.gridItem();\n if (g?.alignSelf)\n style['align-self'] = g.alignSelf;\n if (g?.justifySelf)\n style['justify-self'] = g.justifySelf;\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostGridItemStyle\" }] : []));\n this.hostGridItemClass = computed(() => {\n const cls = { ...this.hostFlexClass() };\n const g = this.gridItem();\n if (g?.colSpan)\n cls[`lg:ax-col-span-${g.colSpan}`] = true;\n if (g?.colStart)\n cls[`lg:ax-col-start-${g.colStart}`] = true;\n if (g?.colEnd)\n cls[`lg:ax-col-end-${g.colEnd}`] = true;\n if (g?.rowSpan)\n cls[`lg:ax-row-span-${g.rowSpan}`] = true;\n if (g?.rowStart)\n cls[`lg:ax-row-start-${g.rowStart}`] = true;\n if (g?.rowEnd)\n cls[`lg:ax-row-end-${g.rowEnd}`] = true;\n return cls;\n }, ...(ngDevMode ? [{ debugName: \"hostGridItemClass\" }] : []));\n this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvYmFzZS13aWRnZXQvZ3JpZC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHaEYsTUFBTSxPQUFnQixvQ0FBcUMsU0FBUSxnQ0FBZ0M7SUFEbkc7O1FBRVUsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFzQyxvREFBQyxDQUFDO1FBRS9FLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUMzRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFMUIsSUFBSSxDQUFDLEVBQUUsU0FBUztnQkFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNwRCxJQUFJLENBQUMsRUFBRSxXQUFXO2dCQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBRTFELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyw2REFBQyxDQUFDO1FBRUksc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNLEdBQUcsR0FBNEIsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUUxQixJQUFJLENBQUMsRUFBRSxPQUFPO2dCQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzFELElBQUksQ0FBQyxFQUFFLFFBQVE7Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDN0QsSUFBSSxDQUFDLEVBQUUsTUFBTTtnQkFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUV2RCxJQUFJLENBQUMsRUFBRSxPQUFPO2dCQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzFELElBQUksQ0FBQyxFQUFFLFFBQVE7Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDN0QsSUFBSSxDQUFDLEVBQUUsTUFBTTtnQkFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUV2RCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsNkRBQUMsQ0FBQztRQUVhLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLHFEQUFDLENBQUM7UUFDckQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUscURBQUMsQ0FBQztLQUN0RTsrR0E5QnFCLG9DQUFvQzttSEFBcEMsb0NBQW9DOzs0RkFBcEMsb0NBQW9DO2tCQUR6RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEdyaWRJdGVtQm94U3RyaW5nIH0gZnJvbSAnLi4vaGVscGVyL3Byb3BlcnR5LWVkaXRvci50eXBlJztcbmltcG9ydCB7IEFYUEZsZXhCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9mbGV4LWJhc2Utd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBHcmlkSXRlbUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBGbGV4QmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHByaXZhdGUgZ3JpZEl0ZW0gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKSBhcyBBWFBHcmlkSXRlbUJveFN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIGhvc3RHcmlkSXRlbVN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0geyAuLi50aGlzLmhvc3RGbGV4U3R5bGUoKSB9O1xuICAgIGNvbnN0IGcgPSB0aGlzLmdyaWRJdGVtKCk7XG5cbiAgICBpZiAoZz8uYWxpZ25TZWxmKSBzdHlsZVsnYWxpZ24tc2VsZiddID0gZy5hbGlnblNlbGY7XG4gICAgaWYgKGc/Lmp1c3RpZnlTZWxmKSBzdHlsZVsnanVzdGlmeS1zZWxmJ10gPSBnLmp1c3RpZnlTZWxmO1xuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwdWJsaWMgaG9zdEdyaWRJdGVtQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2xzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHsgLi4udGhpcy5ob3N0RmxleENsYXNzKCkgfTtcbiAgICBjb25zdCBnID0gdGhpcy5ncmlkSXRlbSgpO1xuXG4gICAgaWYgKGc/LmNvbFNwYW4pIGNsc1tgbGc6YXgtY29sLXNwYW4tJHtnLmNvbFNwYW59YF0gPSB0cnVlO1xuICAgIGlmIChnPy5jb2xTdGFydCkgY2xzW2BsZzpheC1jb2wtc3RhcnQtJHtnLmNvbFN0YXJ0fWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8uY29sRW5kKSBjbHNbYGxnOmF4LWNvbC1lbmQtJHtnLmNvbEVuZH1gXSA9IHRydWU7XG5cbiAgICBpZiAoZz8ucm93U3BhbikgY2xzW2BsZzpheC1yb3ctc3Bhbi0ke2cucm93U3Bhbn1gXSA9IHRydWU7XG4gICAgaWYgKGc/LnJvd1N0YXJ0KSBjbHNbYGxnOmF4LXJvdy1zdGFydC0ke2cucm93U3RhcnR9YF0gPSB0cnVlO1xuICAgIGlmIChnPy5yb3dFbmQpIGNsc1tgbGc6YXgtcm93LWVuZC0ke2cucm93RW5kfWBdID0gdHJ1ZTtcblxuICAgIHJldHVybiBjbHM7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RHcmlkSXRlbUNsYXNzKCkpO1xuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ob3N0R3JpZEl0ZW1TdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostTableClass = computed(() => ({\n ...this.blockClass(),\n }), ...(ngDevMode ? [{ debugName: \"hostTableClass\" }] : []));\n this.hostTableStyle = computed(() => {\n const style = { ...this.blockStyle() };\n style['overflow-x'] = 'auto';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostTableStyle\" }] : []));\n this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi9iYXNlLXdpZGdldC90YWJsZS1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2xGLE1BQU0sT0FBZ0IsaUNBQWtDLFNBQVEsaUNBQWlDO0lBRGpHOztRQUVTLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdEMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQ3JCLENBQUMsMERBQUMsQ0FBQztRQUVHLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxNQUFNLEtBQUssR0FBb0MsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3hFLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLDBEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUscURBQUMsQ0FBQztRQUNsRCxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUscURBQUMsQ0FBQztLQUNuRTsrR0FicUIsaUNBQWlDO21IQUFqQyxpQ0FBaUM7OzRGQUFqQyxpQ0FBaUM7a0JBRHRELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQVGFibGVCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHVibGljIGhvc3RUYWJsZUNsYXNzID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAuLi50aGlzLmJsb2NrQ2xhc3MoKSxcbiAgfSkpO1xuXG4gIHB1YmxpYyBob3N0VGFibGVTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4udGhpcy5ibG9ja1N0eWxlKCkgfTtcbiAgICBzdHlsZVsnb3ZlcmZsb3cteCddID0gJ2F1dG8nO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaG9zdFRhYmxlQ2xhc3MoKSk7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RUYWJsZVN0eWxlKCkpO1xufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1vcHMtYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi9iYXNlLXdpZGdldC90YWJsZS1pdGVtLW9wcy1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHbEYsTUFBTSxPQUFnQix3Q0FBeUMsU0FBUSxpQ0FBaUM7K0dBQWxGLHdDQUF3QzttSEFBeEMsd0NBQXdDOzs0RkFBeEMsd0NBQXdDO2tCQUQ3RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQVGFibGVJdGVtT3BzQmFzZUxheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIC8vIENvbHVtbnMgKHJlbGF0aXZlIHRvIGN1cnJlbnQgY2VsbClcbiAgYWJzdHJhY3QgaW5zZXJ0Q29sdW1uTGVmdCgpOiB2b2lkO1xuICBhYnN0cmFjdCBpbnNlcnRDb2x1bW5SaWdodCgpOiB2b2lkO1xuXG4gIC8vIFJvd3MgcmVsYXRpdmUgdG8gY3VycmVudCBjZWxsXG4gIGFic3RyYWN0IGluc2VydFJvd0Fib3ZlKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGluc2VydFJvd0JlbG93KCk6IHZvaWQ7XG5cbiAgLy8gQ2VsbC1sZXZlbCBpbnNlcnQgb3BlcmF0aW9ucyAocmVsYXRpdmUgdG8gY3VycmVudCBjZWxsKVxuICBhYnN0cmFjdCBpbnNlcnRDZWxsU2hpZnRSaWdodCgpOiB2b2lkOyAvLyBpbnNlcnQgdG8gdGhlIGxlZnQgb2YgdGFyZ2V0LCBzaGlmdCByaWdodCwgaW5jcmVhc2UgY29sdW1uc1xuICBhYnN0cmFjdCBpbnNlcnRDZWxsU2hpZnREb3duKCk6IHZvaWQ7IC8vIGluc2VydCBhYm92ZSB0YXJnZXQgcm93LCBzaGlmdCBkb3duLCBpbmNyZWFzZSByb3dzXG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { AXPTableItemOpsBaseLayoutWidgetComponent } from './table-item-ops-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.colSpan = computed(() => {\n const v = this.options()?.colSpan;\n return v ? Math.max(1, v) : 1;\n }, ...(ngDevMode ? [{ debugName: \"colSpan\" }] : []));\n this.rowSpan = computed(() => {\n const v = this.options()?.rowSpan;\n return v ? Math.max(1, v) : 1;\n }, ...(ngDevMode ? [{ debugName: \"rowSpan\" }] : []));\n this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL2Jhc2Utd2lkZ2V0L3RhYmxlLWl0ZW0tYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOztBQUdsRyxNQUFNLE9BQWdCLHFDQUFzQyxTQUFRLHdDQUF3QztJQUQ1Rzs7UUFFWSxZQUFPLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRTtZQUN4QyxNQUFNLENBQUMsR0FBSSxJQUFJLENBQUMsT0FBTyxFQUFVLEVBQUUsT0FBNkIsQ0FBQztZQUNqRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLG1EQUFDLENBQUM7UUFDTyxZQUFPLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRTtZQUN4QyxNQUFNLENBQUMsR0FBSSxJQUFJLENBQUMsT0FBTyxFQUFVLEVBQUUsT0FBNkIsQ0FBQztZQUNqRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLG1EQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUscURBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUscURBQUMsQ0FBQztLQUMvRDsrR0FacUIscUNBQXFDO21IQUFyQyxxQ0FBcUM7OzRGQUFyQyxxQ0FBcUM7a0JBRDFELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQVGFibGVJdGVtT3BzQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtaXRlbS1vcHMtYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFRhYmxlSXRlbUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBUYWJsZUl0ZW1PcHNCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGNvbFNwYW4gPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCB2ID0gKHRoaXMub3B0aW9ucygpIGFzIGFueSk/LmNvbFNwYW4gYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB2ID8gTWF0aC5tYXgoMSwgdikgOiAxO1xuICB9KTtcbiAgcHJvdGVjdGVkIHJvd1NwYW4gPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCB2ID0gKHRoaXMub3B0aW9ucygpIGFzIGFueSk/LnJvd1NwYW4gYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB2ID8gTWF0aC5tYXgoMSwgdikgOiAxO1xuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ibG9ja0NsYXNzKCkpO1xuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ibG9ja1N0eWxlKCkpO1xufVxuIl19","import { Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetRegistryService {\n /**\n *\n */\n constructor() {\n this.types = new Map();\n AXPWidgetRegistryService.instance = this;\n }\n register(widget) {\n this.types.set(widget.name, widget);\n }\n extend(parentName, widget) {\n const parentWidget = this.resolve(parentName);\n const newWidget = merge({}, parentWidget, widget);\n newWidget.name = widget.name;\n this.register(newWidget);\n }\n resolve(name) {\n const widget = this.types.get(name);\n if (!widget) {\n throw new Error(`Widget with name \"${name}\" does not exist.`);\n }\n return widget;\n }\n all() {\n return Array.from(this.types.values());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQtcmVnaXN0ZXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQU1sQyxNQUFNLE9BQU8sd0JBQXdCO0lBS25DOztPQUVHO0lBQ0g7UUFQUSxVQUFLLEdBQWlDLElBQUksR0FBRyxFQUFFLENBQUM7UUFRdEQsd0JBQXdCLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQXVCO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFrQixFQUFFLE1BQXVCO1FBQ2hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEQsU0FBUyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLElBQUksbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLEdBQUc7UUFDUixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7K0dBakNVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb25maWcgfSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHR5cGVzOiBNYXA8c3RyaW5nLCBBWFBXaWRnZXRDb25maWc+ID0gbmV3IE1hcCgpO1xuXG4gIHB1YmxpYyBzdGF0aWMgIGluc3RhbmNlOkFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZTtcblxuICAvKipcbiAgICpcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZT10aGlzO1xuICB9XG5cbiAgcmVnaXN0ZXIod2lkZ2V0OiBBWFBXaWRnZXRDb25maWcpIHtcbiAgICB0aGlzLnR5cGVzLnNldCh3aWRnZXQubmFtZSwgd2lkZ2V0KTtcbiAgfVxuXG4gIGV4dGVuZChwYXJlbnROYW1lOiBzdHJpbmcsIHdpZGdldDogQVhQV2lkZ2V0Q29uZmlnKSB7XG4gICAgY29uc3QgcGFyZW50V2lkZ2V0ID0gdGhpcy5yZXNvbHZlKHBhcmVudE5hbWUpO1xuICAgIGNvbnN0IG5ld1dpZGdldCA9IG1lcmdlKHt9LCBwYXJlbnRXaWRnZXQsIHdpZGdldCk7XG4gICAgbmV3V2lkZ2V0Lm5hbWUgPSB3aWRnZXQubmFtZTtcbiAgICB0aGlzLnJlZ2lzdGVyKG5ld1dpZGdldCk7XG4gIH1cblxuICByZXNvbHZlKG5hbWU6IHN0cmluZyk6IEFYUFdpZGdldENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy50eXBlcy5nZXQobmFtZSk7XG4gICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV2lkZ2V0IHdpdGggbmFtZSBcIiR7bmFtZX1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuXG4gIHB1YmxpYyBhbGwoKTogQVhQV2lkZ2V0Q29uZmlnW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMudHlwZXMudmFsdWVzKCkpO1xuICB9XG59XG4iXX0=","import { AXBaseDataTable, AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport { getSmart } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, TemplateRef, ViewChild, inject, signal, } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport { AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXP_WIDGET_COLUMN_TOKEN } from './widget.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.grid = inject(AXBaseDataTable);\n this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: \"mergedOptions\" }] : []));\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n this.injector = inject(Injector);\n this.cdr = inject(ChangeDetectorRef);\n }\n get node() {\n return this._node;\n }\n set node(v) {\n this._node = v;\n }\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n get renderCellTemplate() {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n // if (row.data?.__meta__?.expanded === undefined) {\n // this.width = `${parseInt(this.width as string) + 24}px`;\n // }\n }\n get renderHeaderTemplate() {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n get loadingEnabled() {\n return true;\n }\n get name() {\n return `col-${this.node.path}`;\n }\n async ngOnInit() {\n const widget = this.widgetRegistery.resolve(this.node.type);\n const mode = 'column';\n this.component = await widget?.components[mode]?.component();\n //\n const props = widget?.components[mode]?.properties\n ?.filter((c) => c.schema.defaultValue)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions(),\n };\n this.widgetInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n this.width = this.mergedOptions().width === 'auto' ? 'auto' : this.customWidth ? this.customWidth : (this.mergedOptions().width ?? '200px');\n this.allowResizing = this.mergedOptions().allowResizing || true;\n this.cdr.detectChanges();\n }\n getInputs(data) {\n return {\n rawValue: getSmart(data, this.node.path),\n rowData: data,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: \"axp-widget-column-renderer\", inputs: { caption: \"caption\", customExpandIcon: \"customExpandIcon\", customCollapseIcon: \"customCollapseIcon\", customWidth: \"customWidth\", node: \"node\", footerTemplate: \"footerTemplate\", expandHandler: \"expandHandler\", cellTemplate: \"cellTemplate\", headerTemplate: \"headerTemplate\" }, providers: [\n AXPWidgetCoreService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ], viewQueries: [{ propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"_contentCellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header>{{ caption | translate | async }}</ng-template>\n <ng-template #cell let-row>\n <div [class]=\"expandHandler ? 'ax-flex ax-gap-2 ax-items-center' : ''\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [class.ax-invisible]=\"row.data.hasChild === false\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md ax-opacity-75'\"></i>\n }\n }\n </div>\n }\n @if (component && widgetInjector && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-column-renderer',\n template: `\n <ng-template #header>{{ caption | translate | async }}</ng-template>\n <ng-template #cell let-row>\n <div [class]=\"expandHandler ? 'ax-flex ax-gap-2 ax-items-center' : ''\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [class.ax-invisible]=\"row.data.hasChild === false\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md ax-opacity-75'\"></i>\n }\n }\n </div>\n }\n @if (component && widgetInjector && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: widgetInjector; inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n providers: [\n AXPWidgetCoreService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['caption'],\n standalone: false,\n }]\n }], propDecorators: { customExpandIcon: [{\n type: Input\n }], customCollapseIcon: [{\n type: Input\n }], customWidth: [{\n type: Input\n }], node: [{\n type: Input,\n args: [{ required: true }]\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], expandHandler: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], _contentCellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], headerTemplate: [{\n type: Input\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbHVtbi1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LWNvbHVtbi1yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBdUIsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQTRDOUUsTUFBTSxPQUFPLGdDQUFpQyxTQUFRLDBCQUEwQjtJQTFDaEY7O1FBMkNZLG9CQUFlLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDckQsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQWdCL0Isa0JBQWEsR0FBRyxNQUFNLENBQU0sRUFBRSx5REFBQyxDQUFDO1FBQzlCLGVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxzREFBQyxDQUFDO1FBb0Q1QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQTBDekM7SUF4R0MsSUFDVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFXLElBQUksQ0FBQyxDQUFzQjtRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNqQixDQUFDO0lBV0QsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUM1RCxDQUFDO0lBV0QsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUN4RCxDQUFDO0lBUVMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxHQUFRO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsb0RBQW9EO1FBQ3BELDZEQUE2RDtRQUM3RCxJQUFJO0lBQ04sQ0FBQztJQUVELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBT0QsS0FBSyxDQUFDLFFBQVE7UUFDWixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUM3RCxFQUFFO1FBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVO1lBQ2hELEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQzthQUNyQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7YUFDakQsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzdCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNULEVBQUU7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFOUQsTUFBTSxVQUFVLEdBQUc7WUFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtTQUM5QixDQUFDO1FBQ0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNyQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLHVCQUF1QjtvQkFDaEMsUUFBUSxFQUFFLFVBQVU7aUJBQ3JCO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFBLENBQUMsQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQztRQUN4SSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFTO1FBQ2pCLE9BQU87WUFDTCxRQUFRLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUssQ0FBQztZQUN6QyxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFDSixDQUFDOytHQWpIVSxnQ0FBZ0M7bUdBQWhDLGdDQUFnQyxzV0FSaEM7WUFDVCxvQkFBb0I7WUFDcEIsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxFQUFFLGdDQUFnQyxFQUFFO1NBQ3ZGLHFXQW5DUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDs7NEZBU1UsZ0NBQWdDO2tCQTFDNUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNEJBQTRCO29CQUN0QyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQ7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULG9CQUFvQjt3QkFDcEIsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsV0FBVyxrQ0FBa0MsRUFBRTtxQkFDdkY7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDbkIsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOztzQkFLRSxLQUFLOztzQkFDTCxLQUFLOztzQkFFTCxLQUFLOztzQkFHTCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTs7c0JBV3hCLEtBQUs7O3NCQUdMLFNBQVM7dUJBQUMsUUFBUTs7c0JBT2xCLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLFNBQVM7dUJBQUMsTUFBTTs7c0JBT2hCLEtBQUs7O3NCQUdMLFNBQVM7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQmFzZURhdGFUYWJsZSwgQVhEYXRhVGFibGVDb2x1bW5Db21wb25lbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGF0YS10YWJsZSc7XG5pbXBvcnQgeyBnZXRTbWFydCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29yZSc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlU2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LWNvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb2x1bW5Ob2RlLCBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTiB9IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPnt7IGNhcHRpb24gfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICA8ZGl2IFtjbGFzc109XCJleHBhbmRIYW5kbGVyID8gJ2F4LWZsZXggYXgtZ2FwLTIgYXgtaXRlbXMtY2VudGVyJyA6ICcnXCI+XG4gICAgICAgIEBpZiAoZXhwYW5kSGFuZGxlcikge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVFeHBhbmRSb3cocm93KVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWV4cGFuZC1oYW5kbGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5heC1pbnZpc2libGVdPVwicm93LmRhdGEuaGFzQ2hpbGQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgIGlkPVwiYXgtZXhwYW5kLWhhbmRsZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWlubGluZS1zdGFydC5yZW1dPVwicm93LmRhdGE/Ll9fbWV0YV9fPy5sZXZlbCAqIDJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZ1JvdygpID09PSByb3cpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lci10aGlyZCBheC1hbmltYXRlLXR3U3BpbiBheC1hbmltYXRlLWluZmluaXRlXCI+PC9pPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBpZiAocm93LmRhdGE/Ll9fbWV0YV9fPy5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjdXN0b21Db2xsYXBzZUljb24gfHwgJ2ZhciBmYS1taW51cy1zcXVhcmUgYXgtdGV4dC1tZCBheC1vcGFjaXR5LTc1J1wiPjwvaT5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImN1c3RvbUV4cGFuZEljb24gfHwgJ2ZhciBmYS1wbHVzLXNxdWFyZSBheC10ZXh0LW1kICBheC1vcGFjaXR5LTc1J1wiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoY29tcG9uZW50ICYmIHdpZGdldEluamVjdG9yICYmIHJvdz8uZGF0YSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXBvbmVudDsgaW5qZWN0b3I6IHdpZGdldEluamVjdG9yOyBpbnB1dHM6IGdldElucHV0cyhyb3cuZGF0YSlcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Zvb3Rlcj48L25nLXRlbXBsYXRlPlxuICBgLFxuICBwcm92aWRlcnM6IFtcbiAgICBBWFBXaWRnZXRDb3JlU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhQV2lkZ2V0Q29sdW1uUmVuZGVyZXJDb21wb25lbnQgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGlucHV0czogWydjYXB0aW9uJ10sXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRDb2x1bW5SZW5kZXJlckNvbXBvbmVudCBleHRlbmRzIEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHdpZGdldFJlZ2lzdGVyeSA9IGluamVjdChBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UpO1xuICBwcml2YXRlIGdyaWQgPSBpbmplY3QoQVhCYXNlRGF0YVRhYmxlKTtcblxuICBASW5wdXQoKSBjdXN0b21FeHBhbmRJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGN1c3RvbUNvbGxhcHNlSWNvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGN1c3RvbVdpZHRoOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBfbm9kZTogQVhQV2lkZ2V0Q29sdW1uTm9kZTtcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgcHVibGljIGdldCBub2RlKCk6IEFYUFdpZGdldENvbHVtbk5vZGUge1xuICAgIHJldHVybiB0aGlzLl9ub2RlO1xuICB9XG4gIHB1YmxpYyBzZXQgbm9kZSh2OiBBWFBXaWRnZXRDb2x1bW5Ob2RlKSB7XG4gICAgdGhpcy5fbm9kZSA9IHY7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlZE9wdGlvbnMgPSBzaWduYWw8YW55Pih7fSk7XG4gIHByb3RlY3RlZCBsb2FkaW5nUm93ID0gc2lnbmFsKG51bGwpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgnZm9vdGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmZvb3RlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBleHBhbmRIYW5kbGVyOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jb250ZW50Q2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5jZWxsVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudENlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlRXhwYW5kUm93KHJvdzogYW55KSB7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChyb3cpO1xuICAgIGF3YWl0IHRoaXMuZ3JpZC5leHBhbmRSb3cocm93KTtcbiAgICB0aGlzLmxvYWRpbmdSb3cuc2V0KG51bGwpO1xuICAgIC8vIGlmIChyb3cuZGF0YT8uX19tZXRhX18/LmV4cGFuZGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyAgIHRoaXMud2lkdGggPSBgJHtwYXJzZUludCh0aGlzLndpZHRoIGFzIHN0cmluZykgKyAyNH1weGA7XG4gICAgLy8gfVxuICB9XG5cbiAgZ2V0IHJlbmRlckhlYWRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgY29sLSR7dGhpcy5ub2RlLnBhdGh9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByb3RlY3RlZCB3aWRnZXRJbmplY3RvciE6IEluamVjdG9yO1xuICBwcm90ZWN0ZWQgY29tcG9uZW50ITogYW55O1xuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHdpZGdldCA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5LnJlc29sdmUodGhpcy5ub2RlLnR5cGUpO1xuICAgIGNvbnN0IG1vZGUgPSAnY29sdW1uJztcbiAgICB0aGlzLmNvbXBvbmVudCA9IGF3YWl0IHdpZGdldD8uY29tcG9uZW50c1ttb2RlXT8uY29tcG9uZW50KCk7XG4gICAgLy9cbiAgICBjb25zdCBwcm9wcyA9IHdpZGdldD8uY29tcG9uZW50c1ttb2RlXT8ucHJvcGVydGllc1xuICAgICAgPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSlcbiAgICAgIC5tYXAoKGMpID0+ICh7IFtjLm5hbWVdOiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgfSkpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5jdXJyIH07XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUub3B0aW9ucykgfHwge30pO1xuXG4gICAgY29uc3QgdG9rZW5WYWx1ZSA9IHtcbiAgICAgIHBhdGg6IHRoaXMubm9kZS5wYXRoLFxuICAgICAgb3B0aW9uczogdGhpcy5tZXJnZWRPcHRpb25zKCksXG4gICAgfTtcbiAgICB0aGlzLndpZGdldEluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRoaXMud2lkdGggPSB0aGlzLm1lcmdlZE9wdGlvbnMoKS53aWR0aCA9PT0gJ2F1dG8nPyAnYXV0byc6IHRoaXMuY3VzdG9tV2lkdGg/IHRoaXMuY3VzdG9tV2lkdGg6ICh0aGlzLm1lcmdlZE9wdGlvbnMoKS53aWR0aCA/PyAnMjAwcHgnKTtcbiAgICB0aGlzLmFsbG93UmVzaXppbmcgPSB0aGlzLm1lcmdlZE9wdGlvbnMoKS5hbGxvd1Jlc2l6aW5nIHx8IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZ2V0SW5wdXRzKGRhdGE6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJhd1ZhbHVlOiBnZXRTbWFydChkYXRhLCB0aGlzLm5vZGUucGF0aCEpLFxuICAgICAgcm93RGF0YTogZGF0YSxcbiAgICB9O1xuICB9XG59XG4iXX0=","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, computed, effect, inject, } from '@angular/core';\nimport { AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetCoreContextStore } from './widget-core-store.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetContainerComponent {\n set context(value) {\n this.contextService.set(value);\n }\n set functions(v) {\n this.builderService.setFunctions(v);\n }\n constructor() {\n this.contextService = inject(AXPWidgetCoreContextStore);\n this.builderService = inject(AXPWidgetCoreService);\n this.onContextChanged = new EventEmitter();\n this.status = computed(() => {\n return this.builderService.status();\n }, ...(ngDevMode ? [{ debugName: \"status\" }] : []));\n this.isBusy = computed(() => {\n return this.builderService.isBusy();\n }, ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n effect(() => {\n if (this.contextService.isChanged()) {\n this.onContextChanged.emit(this.contextService.changeEvent());\n }\n });\n }\n refresh() {\n this.builderService.refresh();\n }\n find(name) {\n return this.builderService.waitForWidget(name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPWidgetContainerComponent, isStandalone: false, selector: \"axp-widgets-container\", inputs: { context: \"context\", functions: \"functions\" }, outputs: { onContextChanged: \"onContextChanged\" }, host: { styleAttribute: \"display: contents;\" }, providers: [AXPWidgetCoreService, AXPWidgetCoreContextStore], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widgets-container',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: contents;' },\n providers: [AXPWidgetCoreService, AXPWidgetCoreContextStore],\n standalone: false,\n }]\n }], ctorParameters: () => [], propDecorators: { onContextChanged: [{\n type: Output\n }], context: [{\n type: Input\n }], functions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL3dpZGdldC1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBbUMsTUFBTSw2QkFBNkIsQ0FBQzs7QUFVekcsTUFBTSxPQUFPLDJCQUEyQjtJQU90QyxJQUNJLE9BQU8sQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUNXLFNBQVMsQ0FBQyxDQUFNO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDtRQWhCZ0IsbUJBQWMsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNuRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRzlDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBb0JoRixXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxrREFBQyxDQUFDO1FBRUksV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLENBQUMsa0RBQUMsQ0FBQztRQWJELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVdNLE9BQU87UUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxJQUFJLENBQUMsSUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBeENVLDJCQUEyQjttR0FBM0IsMkJBQTJCLGdPQUgzQixDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDLDBCQUhsRCwyQkFBMkI7OzRGQU0xQiwyQkFBMkI7a0JBUnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtvQkFDckMsU0FBUyxFQUFFLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLENBQUM7b0JBQzVELFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7c0JBS0UsTUFBTTs7c0JBR04sS0FBSzs7c0JBS0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtY29yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUsIEFYUFdpZGdldENvcmVDb250ZXh0Q2hhbmdlRXZlbnQgfSBmcm9tICcuL3dpZGdldC1jb3JlLXN0b3JlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0cy1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGNvbnRlbnRzOycgfSxcbiAgcHJvdmlkZXJzOiBbQVhQV2lkZ2V0Q29yZVNlcnZpY2UsIEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmVdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29udGFpbmVyQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHRTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUpO1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRlclNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0Q29yZVNlcnZpY2UpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgb25Db250ZXh0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhQV2lkZ2V0Q29yZUNvbnRleHRDaGFuZ2VFdmVudD4oKTtcblxuICBASW5wdXQoKVxuICBzZXQgY29udGV4dCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmdW5jdGlvbnModjogYW55KSB7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRGdW5jdGlvbnModik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29udGV4dFNlcnZpY2UuaXNDaGFuZ2VkKCkpIHtcbiAgICAgICAgdGhpcy5vbkNvbnRleHRDaGFuZ2VkLmVtaXQodGhpcy5jb250ZXh0U2VydmljZS5jaGFuZ2VFdmVudCgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0dXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRlclNlcnZpY2Uuc3RhdHVzKCk7XG4gIH0pO1xuXG4gIHB1YmxpYyBpc0J1c3kgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRlclNlcnZpY2UuaXNCdXN5KCk7XG4gIH0pO1xuXG5cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwdWJsaWMgZmluZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS53YWl0Rm9yV2lkZ2V0KG5hbWUpO1xuICB9XG59XG4iXX0=","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/skeleton\";\nexport class AXPWidgetPlaceholderComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPWidgetPlaceholderComponent, isStandalone: true, selector: \"axp-widget-placeholder\", ngImport: i0, template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i1.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-placeholder',\n template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXSkeletonModule],\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFXbkUsTUFBTSxPQUFPLDZCQUE2QjsrR0FBN0IsNkJBQTZCO21HQUE3Qiw2QkFBNkIsa0ZBUDlCOztTQUVILDJEQUVHLGdCQUFnQjs7NEZBR2YsNkJBQTZCO2tCQVR6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRTs7U0FFSDtvQkFDUCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0LXBsYWNlaG9sZGVyJyxcbiAgdGVtcGxhdGU6IGA8ZGl2PlxuICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctZnVsbCBheC1oLTEwIGF4LXJvdW5kZWQtbWRcIj48L2F4LXNrZWxldG9uPlxuICA8L2Rpdj5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0FYU2tlbGV0b25Nb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRQbGFjZWhvbGRlckNvbXBvbmVudCB7fVxuIl19","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { Directive, Injector, ViewContainerRef, effect, inject, input, output, signal, } from '@angular/core';\nimport { cloneDeep, get, isEmpty, isEqual, isString, merge, set, sum } from 'lodash-es';\nimport { Subject, filter } from 'rxjs';\nimport { AXPWidgetCoreContextStore } from './widget-core-store.service';\nimport { AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetPlaceholderComponent } from './widget-placeholder.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetStatus } from './widget-status.types';\nimport { AXP_WIDGET_TOKEN, } from './widget.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetRendererDirective {\n //#endregion\n //#endregion\n constructor() {\n this.parentNode = input(...(ngDevMode ? [undefined, { debugName: \"parentNode\" }] : []));\n this.index = input(...(ngDevMode ? [undefined, { debugName: \"index\" }] : []));\n this.mode = input.required(...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n this.node = input.required(...(ngDevMode ? [{ debugName: \"node\" }] : []));\n this._options = signal({}, ...(ngDevMode ? [{ debugName: \"_options\" }] : []));\n this.options = this._options.asReadonly();\n this.onOptionsChanged = output();\n this.onValueChanged = output();\n //#region ---- Public API ----\n /**\n * Signal that emits the component reference when it's ready\n */\n this._componentRefSignal = signal(null, ...(ngDevMode ? [{ debugName: \"_componentRefSignal\" }] : []));\n this.componentRefSignal = this._componentRefSignal.asReadonly();\n //#endregion\n //#region ---- Properties ----\n this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: \"mergedOptions\" }] : []));\n this.injector = inject(Injector);\n this.builderService = inject(AXPWidgetCoreService);\n this.contextService = inject(AXPWidgetCoreContextStore);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.unsubscriber = inject(AXUnsubscriber);\n this.translateService = inject(AXTranslationService);\n this.widgetService = inject(AXPWidgetRegistryService);\n this.expressionEvaluator = inject(AXPExpressionEvaluatorService);\n this.viewContainerRef = inject(ViewContainerRef);\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.isVisible = signal(true, ...(ngDevMode ? [{ debugName: \"isVisible\" }] : []));\n this.expressionEvaluators = new Map();\n this.renderTimeoutId = null;\n this.hasInitialRender = false;\n this.onContextChanged = new Subject();\n //#region ---- Performance Optimization Properties ----\n this.contextUpdateQueue = new Set();\n this.contextUpdateTimeout = null;\n this.CONTEXT_UPDATE_DEBOUNCE_MS = 4; // ~250fps for large forms\n // Removed visibility detection - not needed for current implementation\n // Expression result caching\n this.expressionCache = new Map();\n this.EXPRESSION_CACHE_TTL = 500; // Cache for 500ms (increased for better hit rate)\n // Options change tracking\n this.lastAppliedOptions = null;\n // Expression result tracking\n this.lastExpressionResults = new Map();\n // Buffer for context changes that happen before initial render completes\n this.preRenderContextQueue = new Set();\n effect(async () => {\n const changed = this.contextService.changeEvent();\n // Don't trigger re-render during initial setup\n if (!this.hasInitialRender) {\n if (changed.path) {\n this.preRenderContextQueue.add(changed.path);\n // console.log(`📝 [${this.node().type}] Buffered pre-render context change: ${changed.path}`);\n }\n return;\n }\n // CRITICAL PERFORMANCE FIX: Only respond to relevant context changes\n if (changed.path && this.isRelevantContextChange(changed.path)) {\n // console.log(`🎯 [${this.node().type}] Context change detected: ${changed.path}`);\n this.queueContextUpdate(changed.path);\n }\n });\n this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {\n await this.processBatchedUpdates();\n });\n }\n //#region ---- Expression Caching Methods ----\n getCachedExpressionResult(expressionKey) {\n const cached = this.expressionCache.get(expressionKey);\n if (cached && performance.now() - cached.timestamp < this.EXPRESSION_CACHE_TTL) {\n // console.log(`💾 [${this.node().type}] Using cached expression result for '${expressionKey}'`);\n return cached.value;\n }\n return null;\n }\n setCachedExpressionResult(expressionKey, value) {\n this.expressionCache.set(expressionKey, {\n value,\n timestamp: performance.now(),\n });\n }\n clearExpressionCache() {\n this.expressionCache.clear();\n }\n isPathAffectingExpressions(changedPath) {\n // console.log(\n // `🔍 [${this.node().type}] Checking if path '${changedPath}' affects expressions. Expression count: ${this.expressionEvaluators.size}`,\n // );\n // If widget has no expressions, no need to clear cache\n if (this.expressionEvaluators.size === 0) {\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' - no expressions, keeping cache`);\n return false;\n }\n // Use the same logic as hasExpressionDependency to check for actual dependencies\n if (this.hasExpressionDependency(changedPath)) {\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' affects expressions - clearing cache`);\n return true;\n }\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' does not affect expressions - keeping cache`);\n return false;\n }\n //#endregion\n //#region ---- Context Batching Methods ----\n queueContextUpdate(path) {\n if (path) {\n // console.log(`🔄 [${this.node().type}] Queueing context update for path: ${path}`);\n this.contextUpdateQueue.add(path);\n // Clear existing timeout\n if (this.contextUpdateTimeout) {\n clearTimeout(this.contextUpdateTimeout);\n }\n // Debounce updates\n this.contextUpdateTimeout = setTimeout(() => {\n // console.log(`⚡ [${this.node().type}] Processing batched updates for ${this.contextUpdateQueue.size} paths`);\n this.processBatchedUpdates();\n }, this.CONTEXT_UPDATE_DEBOUNCE_MS);\n }\n }\n async processBatchedUpdates() {\n if (this.contextUpdateQueue.size === 0)\n return;\n const startTime = performance.now();\n const paths = Array.from(this.contextUpdateQueue);\n this.contextUpdateQueue.clear();\n // console.log(`📊 [${this.node().type}] Processing ${paths.length} paths:`, paths);\n // Clear expression cache only if changed paths affect this widget's expressions\n const shouldClearCache = paths.some((path) => this.isPathAffectingExpressions(path));\n if (shouldClearCache) {\n // console.log(`🗑️ [${this.node().type}] Clearing expression cache due to expression-affecting path change`);\n this.clearExpressionCache();\n }\n // Process updates in batches\n const optionsStartTime = performance.now();\n const hasOptionsUpdate = await this.updateOptionsBasedOnContext();\n const optionsTime = performance.now() - optionsStartTime;\n if (typeof hasOptionsUpdate === 'number' && hasOptionsUpdate > 0) {\n // console.log(`🔧 [${this.node().type}] Options updated (${optionsTime.toFixed(2)}ms)`);\n this.applyOptions();\n }\n // Check formulas for any of the changed paths\n const formulaStartTime = performance.now();\n const formulaNeedsUpdate = paths.some((path) => this.checkFormulaForUpdate(this.node().formula, path));\n if (formulaNeedsUpdate) {\n // console.log(`🧮 [${this.node().type}] Formula needs update`);\n await this.updateValueBasedOnFormula();\n }\n const formulaTime = performance.now() - formulaStartTime;\n // Check visibility for any of the changed paths\n const visibilityStartTime = performance.now();\n const visibilityNeedsUpdate = paths.some((path) => this.hasVisibilityDependency(path));\n if (visibilityNeedsUpdate) {\n // console.log(`👁️ [${this.node().type}] Visibility needs update`);\n await this.updateVisibility();\n }\n const visibilityTime = performance.now() - visibilityStartTime;\n // Emit context changes\n paths.forEach((path) => {\n this.onContextChanged.next({ path });\n });\n const totalTime = performance.now() - startTime;\n // console.log(\n // `✅ [${this.node().type}] Batch processing completed in ${totalTime.toFixed(2)}ms (options: ${optionsTime.toFixed(2)}ms, formula: ${formulaTime.toFixed(2)}ms, visibility: ${visibilityTime.toFixed(2)}ms)`,\n // );\n }\n //#endregion\n //#region ---- Context Relevance Filtering ----\n isRelevantContextChange(changedPath) {\n const node = this.node();\n // 1. Direct path match - widget's own field\n if (node.path === changedPath) {\n return true;\n }\n // 2. Parent path match - widget is inside the changed container\n if (node.path && changedPath.startsWith(node.path + '.')) {\n return true;\n }\n // 3. Child path match - changed field is inside this widget's container\n if (node.path && node.path.startsWith(changedPath + '.')) {\n return true;\n }\n // 4. Expression dependency check - if widget has expressions that depend on this path\n if (this.hasExpressionDependency(changedPath)) {\n return true;\n }\n // 5. Formula dependency check - if widget's formula depends on this path\n if (node.formula && this.checkFormulaForUpdate(node.formula, changedPath)) {\n return true;\n }\n // 6. Trigger dependency check - if widget has triggers that depend on this path\n if (this.hasTriggerDependency(changedPath)) {\n return true;\n }\n // 7. Visibility dependency check - if widget's visibility depends on this path\n if (this.hasVisibilityDependency(changedPath)) {\n return true;\n }\n return false;\n }\n hasExpressionDependency(changedPath) {\n // Check if any cached expressions depend on the changed path\n for (const [path, evaluator] of this.expressionEvaluators) {\n // Check if the expression path itself contains the changed path\n if (path.includes(changedPath)) {\n return true;\n }\n // Parse the actual expression content to check for context.eval() calls\n // We need to get the original expression string to analyze it\n const node = this.node();\n const expressionValue = this.getExpressionValueFromNode(node, path);\n if (expressionValue && typeof expressionValue === 'string') {\n // Look for context.eval() calls that reference the changed path\n const contextEvalRegex = /context\\.eval\\(['\"]([^'\\\"]+)['\"]\\)/g;\n let match;\n while ((match = contextEvalRegex.exec(expressionValue)) !== null) {\n const evalPath = match[1];\n // Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', 'party.typeId' -> 'party.type.id')\n const normalizePath = (p) => {\n if (!p)\n return p;\n const parts = p.split('.');\n const last = parts[parts.length - 1];\n if (last && last.endsWith('Id')) {\n parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');\n }\n return parts.join('.');\n };\n const isSegmentSuffix = (a, b) => {\n if (!a || !b)\n return false;\n const pa = a.split('.');\n const pb = b.split('.');\n if (pb.length > pa.length)\n return false;\n for (let i = 1; i <= pb.length; i++) {\n if (pa[pa.length - i] !== pb[pb.length - i])\n return false;\n }\n return true;\n };\n const evalNorm = normalizePath(evalPath);\n const changedNorm = normalizePath(changedPath);\n // Debug log for dependency check\n // console.log(\n // `🧭 [${this.node().type}] dep-check expr='${path}', changed='${changedPath}', eval='${evalPath}', evalNorm='${evalNorm}', changedNorm='${changedNorm}'`,\n // );\n // Generic direct and hierarchical dependency checks (raw and normalized)\n const rawMatch = evalPath === changedPath ||\n evalPath.startsWith(changedPath + '.') ||\n changedPath.startsWith(evalPath + '.') ||\n isSegmentSuffix(evalPath, changedPath) ||\n isSegmentSuffix(changedPath, evalPath);\n const normMatch = evalNorm === changedNorm ||\n evalNorm.startsWith(changedNorm + '.') ||\n changedNorm.startsWith(evalNorm + '.') ||\n isSegmentSuffix(evalNorm, changedNorm) ||\n isSegmentSuffix(changedNorm, evalNorm);\n if (rawMatch || normMatch) {\n // console.log(\n // `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (generic match)`,\n // );\n return true;\n }\n // Check for path aliases/mappings (e.g., typeId.id <-> type.id)\n if (this.isPathAlias(evalPath, changedPath)) {\n // console.log(\n // `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (path alias)`,\n // );\n return true;\n }\n }\n }\n }\n return false;\n }\n isPathAlias(evalPath, changedPath) {\n // Dynamic path alias detection based on 'Id' suffix pattern\n // Examples: typeId.id <-> type.id, categoryId.name <-> category.name\n // Check if evalPath ends with 'Id' and has a property\n if (evalPath.endsWith('Id') && evalPath.includes('.')) {\n const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n const property = evalPath.substring(evalPath.lastIndexOf('.') + 1);\n const mappedPath = `${basePath}.${property}`;\n if (changedPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n // Check if changedPath ends with 'Id' and has a property\n if (changedPath.endsWith('Id') && changedPath.includes('.')) {\n const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n const property = changedPath.substring(changedPath.lastIndexOf('.') + 1);\n const mappedPath = `${basePath}.${property}`;\n if (evalPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n // Check for direct 'Id' suffix mapping (e.g., typeId <-> type.id)\n if (evalPath.endsWith('Id') && !evalPath.includes('.')) {\n const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n const mappedPath = `${basePath}.id`;\n if (changedPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n if (changedPath.endsWith('Id') && !changedPath.includes('.')) {\n const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n const mappedPath = `${basePath}.id`;\n if (evalPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n return false;\n }\n getExpressionValueFromNode(node, path) {\n try {\n // Navigate through the node structure to find the expression value\n const pathParts = path.split('.');\n let current = node.options || {};\n // Navigate through the path parts\n for (const part of pathParts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part];\n }\n else {\n return null;\n }\n }\n return typeof current === 'string' ? current : null;\n }\n catch (error) {\n // console.error('Error extracting expression value from node:', error);\n return null;\n }\n }\n hasTriggerDependency(changedPath) {\n const node = this.node();\n const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n if (!triggers)\n return false;\n // Check if any trigger event depends on the changed path\n for (const trigger of triggers) {\n if (trigger.event && trigger.event.includes(changedPath)) {\n return true;\n }\n }\n return false;\n }\n hasVisibilityDependency(changedPath) {\n const node = this.node();\n const visibility = node.options?.['visible'] || this.mergedOptions()?.visible;\n if (!visibility || typeof visibility !== 'string')\n return false;\n // Check if visibility expression depends on the changed path\n if (this.expressionEvaluator.isExpression(visibility)) {\n // Parse the visibility expression to check for context.eval() calls\n const contextEvalRegex = /context\\.eval\\(['\"]([^'\\\"]+)['\"]\\)/g;\n let match;\n while ((match = contextEvalRegex.exec(visibility)) !== null) {\n const evalPath = match[1];\n // Check for direct or hierarchical dependency\n if (evalPath === changedPath ||\n evalPath.startsWith(changedPath + '.') ||\n changedPath.startsWith(evalPath + '.')) {\n return true;\n }\n }\n }\n return false;\n }\n //#endregion\n // Removed visibility detection methods - not needed for current implementation\n // Detect input changes\n ngOnChanges(changes) {\n if (changes['mode'] || changes['node']) {\n // Check if either 'mode' or 'node' has changed\n this.rerenderComponent();\n }\n }\n rerenderComponent() {\n // Clear any pending render operation to prevent double rendering\n if (this.renderTimeoutId) {\n clearTimeout(this.renderTimeoutId);\n this.renderTimeoutId = null;\n }\n // Reset loading state to allow re-rendering\n this.isLoading.set(false);\n // Schedule the component loading\n this.renderTimeoutId = setTimeout(async () => {\n await this.loadComponent();\n this.renderTimeoutId = null;\n });\n }\n ngOnDestroy() {\n if (this.renderTimeoutId) {\n clearTimeout(this.renderTimeoutId);\n }\n if (this.contextUpdateTimeout) {\n clearTimeout(this.contextUpdateTimeout);\n }\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n async loadComponent() {\n if (this.isLoading()) {\n return;\n }\n this.isLoading.set(true);\n try {\n // Destroy the existing component if it exists\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.viewContainerRef.clear();\n // Reset the component ref signal\n this._componentRefSignal.set(null);\n //\n const widget = this.widgetRegistery.resolve(this.node().type);\n //\n const propertiesToProcess = [\n ...(widget?.properties ?? []),\n ...(widget?.components[this.mode()]?.properties ?? []),\n ]?.filter((c) => c.schema.defaultValue != null);\n // Process default values (evaluate expressions if needed)\n const props = {};\n for (const property of propertiesToProcess) {\n const defaultValue = property.schema.defaultValue;\n if (typeof defaultValue === 'string' && this.expressionEvaluator.isExpression(defaultValue)) {\n // Evaluate expression for default value\n try {\n const evaluatedValue = await this.evaluateExpression(defaultValue);\n props[property.name] = evaluatedValue;\n }\n catch (error) {\n // console.error(`Error evaluating default value expression for property ${property.name}:`, error);\n props[property.name] = cloneDeep(defaultValue); // Fallback to original value\n }\n }\n else {\n // Use static default value\n props[property.name] = cloneDeep(defaultValue);\n }\n }\n //\n this.mergedOptions.set(merge(props, widget?.options, this.node().options) || {});\n this.expressionEvaluators.clear();\n // Register expressions from widget defaults and node options to cover related-entity cases\n this.preprocessAndInitialOptions(cloneDeep(widget?.options));\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n await this.updateOptionsBasedOnContext();\n //\n this._options.update((val) => ({ ...val, ...this.mergedOptions() }));\n // Evaluate default value\n let defaultValue = this.node().defaultValue;\n if (defaultValue && this.expressionEvaluator.isExpression(defaultValue)) {\n defaultValue = await this.evaluateExpression(defaultValue);\n }\n //\n const tokenValue = {\n node: this.node(),\n defaultValue: defaultValue,\n options: this.mergedOptions(),\n config: widget,\n };\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n //\n const loadingRef = this.viewContainerRef.createComponent(AXPWidgetPlaceholderComponent);\n //\n const com = await widget?.components[this.mode()]?.component();\n if (!com) {\n // console.error(`${this.node().type} widget component not found with mode: ${this.mode()}`);\n return;\n }\n this.componentRef = this.viewContainerRef.createComponent(com, { injector: token });\n this.instance = this.componentRef.instance;\n this.instance.setStatus(AXPWidgetStatus.Rendering);\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n this.instance.setStatus(AXPWidgetStatus.Rendered);\n // Update the component ref signal for reactive access\n this._componentRefSignal.set(this.componentRef);\n this.instance?.onOptionsChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onOptionsChanged.emit({ sender: this, widget: c.sender });\n });\n this.instance?.onValueChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onValueChanged.emit({ sender: this, widget: c.sender });\n });\n await this.updateValueBasedOnFormula();\n await this.updateVisibility();\n await this.assignTriggers();\n //\n loadingRef.destroy();\n // Mark that initial render is complete\n this.hasInitialRender = true;\n // Re-evaluate expressions after initial render to catch late-arriving related context\n if (this.expressionEvaluators.size > 0) {\n // console.log(`🔄 [${this.node().type}] Re-evaluating expressions after initial render`);\n await this.updateOptionsBasedOnContext();\n this.applyOptions();\n }\n // Re-evaluate visibility after initial render\n await this.updateVisibility();\n // Process any buffered pre-render context changes now that the component is ready\n if (this.preRenderContextQueue.size > 0) {\n // console.log(\n // `🚀 [${this.node().type}] Processing ${this.preRenderContextQueue.size} buffered pre-render changes`,\n // );\n this.preRenderContextQueue.forEach((p) => this.contextUpdateQueue.add(p));\n this.preRenderContextQueue.clear();\n await this.processBatchedUpdates();\n }\n }\n catch (error) {\n // console.error('Error loading component:', error);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n applyOptions() {\n if (!this.instance)\n return;\n const currentOptions = this.mergedOptions();\n // Check if options have actually changed\n if (this.hasOptionsChanged(currentOptions)) {\n // console.log('applyOptions', this.node().path, '- options changed');\n this._options.update((val) => ({ ...val, ...currentOptions }));\n this.instance.setOptions(currentOptions);\n this.lastAppliedOptions = cloneDeep(currentOptions); // Deep clone using Lodash\n }\n else {\n // console.log('applyOptions', this.node().path, '- no changes, skipping');\n }\n }\n hasOptionsChanged(newOptions) {\n if (!this.lastAppliedOptions) {\n return true; // First time, always apply\n }\n // Deep comparison of options using Lodash isEqual\n return !isEqual(newOptions, this.lastAppliedOptions);\n }\n // Removed deepCloneValue method - now using Lodash cloneDeep\n checkFormulaForUpdate(formula, path) {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n }\n else\n return false;\n }\n preprocessAndInitialOptions(obj, pathPrefix = '') {\n if (!obj) {\n return;\n }\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n // CRITICAL FIX: Skip trigger actions during options processing\n //\n // PROBLEM: Trigger actions were being evaluated immediately during widget setup/options processing,\n // causing them to execute before the actual trigger event occurred. This meant triggers would fire\n // during initialization instead of when the specified context path actually changed.\n //\n // ROOT CAUSE: The expression evaluator was processing trigger action expressions (like console.log\n // or widget.setValue calls) as part of the normal options preprocessing, treating them as dynamic\n // expressions that needed immediate evaluation.\n //\n // SOLUTION: Detect when we're processing trigger actions and store them as static values without\n // expression evaluation. This ensures trigger actions are only evaluated when the trigger's\n // subscription callback actually fires (when the event condition is met).\n //\n // RESULT: Triggers now only execute when their event filters pass (e.g., when the specified\n // context path changes), not during widget initialization.\n if (currentPath.includes('triggers') && (key === 'action' || currentPath.endsWith('.action'))) {\n // Apply static values directly without expression evaluation\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n return;\n }\n if (typeof value === 'string' && this.expressionEvaluator.isExpression(value)) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n }\n else if (typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n }\n else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n async updateOptionsBasedOnContext() {\n // Early return if no expressions to evaluate\n if (this.expressionEvaluators.size === 0) {\n return 0;\n }\n // console.log(`🔍 [${this.node().type}] Evaluating ${this.expressionEvaluators.size} expressions`);\n const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {\n // Check cache first\n const cachedValue = this.getCachedExpressionResult(path);\n if (cachedValue !== null) {\n // console.log(`💾 [${this.node().type}] Using cached expression result for '${path}'`);\n return { path, newValue: cachedValue, fromCache: true };\n }\n // Evaluate expression if not cached\n const evalStartTime = performance.now();\n const newValue = await evaluator();\n const evalTime = performance.now() - evalStartTime;\n // Check if result has actually changed using Lodash isEqual\n const lastValue = this.lastExpressionResults.get(path);\n const hasChanged = !isEqual(newValue, lastValue);\n if (hasChanged) {\n // console.log(\n // `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value changed`,\n // );\n // Cache the result and track it\n this.setCachedExpressionResult(path, newValue);\n this.lastExpressionResults.set(path, cloneDeep(newValue));\n return { path, newValue, fromCache: false, hasChanged: true };\n }\n else {\n // console.log(\n // `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value unchanged, skipping update`,\n // );\n // Cache the result but don't update\n this.setCachedExpressionResult(path, newValue);\n this.lastExpressionResults.set(path, cloneDeep(newValue));\n return { path, newValue, fromCache: false, hasChanged: false };\n }\n });\n // Wait for all evaluators to complete\n const updates = await Promise.all(updatePromises);\n // Filter updates to only include those that have actually changed\n const changedUpdates = updates.filter((update) => update.hasChanged !== false);\n // Apply updates to mergedOptions only for changed values\n if (changedUpdates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n changedUpdates.forEach(({ path, newValue }) => {\n set(updatedOptions, path, newValue);\n });\n return updatedOptions;\n });\n }\n const cacheHits = updates.filter((update) => update.fromCache).length;\n const skippedUpdates = updates.length - changedUpdates.length;\n // console.log(\n // `📋 [${this.node().type}] Applied ${changedUpdates.length} expression updates (${cacheHits} cache hits, ${skippedUpdates} skipped)`,\n // );\n return changedUpdates.length;\n }\n async updateValueBasedOnFormula() {\n if (this.node().formula) {\n const value = await this.evaluateExpression(this.node().formula);\n this.instance.setValue(value);\n }\n }\n async updateVisibility() {\n const node = this.node();\n const visibility = node.options?.['visible'] || this.mergedOptions()?.visible;\n if (visibility === undefined || visibility === null) {\n // Default to visible if no visibility option is set\n this.show();\n return;\n }\n let shouldBeVisible;\n if (typeof visibility === 'boolean') {\n shouldBeVisible = visibility;\n }\n else if (typeof visibility === 'string' && this.expressionEvaluator.isExpression(visibility)) {\n // Evaluate expression for visibility\n try {\n const result = await this.evaluateExpression(visibility);\n shouldBeVisible = Boolean(result);\n }\n catch (error) {\n // console.error('Error evaluating visibility expression:', error);\n shouldBeVisible = true; // Default to visible on error\n }\n }\n else {\n // Treat other values as truthy/falsy\n shouldBeVisible = Boolean(visibility);\n }\n if (shouldBeVisible) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n show() {\n if (!this.isVisible()) {\n this.isVisible.set(true);\n if (this.componentRef && this.componentRef.location) {\n this.componentRef.location.nativeElement.style.display = '';\n }\n }\n }\n hide() {\n if (this.isVisible()) {\n this.isVisible.set(false);\n if (this.componentRef && this.componentRef.location) {\n this.componentRef.location.nativeElement.style.display = 'none';\n }\n }\n }\n async evaluateExpression(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n return await this.expressionEvaluator.evaluate(templateExpression, scope);\n }\n catch (error) {\n // console.error('Error evaluating expression:', error);\n return false;\n }\n }\n buildExpressionScope() {\n return {\n context: this.getContextScope(),\n events: this.getEventScope(),\n widget: this.getWidgetScope(),\n methods: this.getFunctionScope(),\n vars: this.getVariablesScope(),\n };\n }\n getContextScope() {\n return {\n eval: (path) => {\n //TODO: Handle array index\n const fullPath = path.startsWith('>') ? `${this.instance?.parentPath()}.${path.substring(1)}` : path;\n const value = this.contextService.getValue(fullPath);\n return value;\n },\n set: (path, value) => {\n this.contextService.update(path, value);\n },\n data: () => {\n return this.contextService.data();\n },\n isDirty: () => {\n return this.contextService.isDirty();\n },\n };\n }\n getEventScope() {\n return {\n context: (path) => {\n return this.onContextChanged.pipe(filter((c) => {\n // If no path filter specified, pass all events\n if (path == null || path === '') {\n return true;\n }\n // Ensure c.path exists\n if (!c.path) {\n return false;\n }\n // Pattern: \"prefix*\" - matches paths that start with prefix\n if (path.endsWith('*')) {\n const prefix = path.substring(0, path.length - 1);\n return c.path.startsWith(prefix);\n }\n // Pattern: \"*suffix\" - matches paths that end with suffix\n else if (path.startsWith('*')) {\n const suffix = path.substring(1);\n return c.path.endsWith(suffix);\n }\n // Exact match\n else {\n return c.path === path;\n }\n }));\n },\n from: (event) => get(this.instance.api(), event),\n };\n }\n getWidgetScope() {\n return {\n call: (name, ...args) => {\n this.instance.call(name, ...args);\n },\n setValue: (value) => {\n this.instance.setValue(value);\n },\n clear: () => {\n this.instance.setValue(undefined);\n },\n refresh: () => {\n const refresh = this.instance?.['refresh'];\n if (refresh && typeof refresh === 'function') {\n refresh.bind(this.instance)();\n }\n },\n output: (name) => {\n this.instance.output(name);\n },\n find: (id) => {\n return this.builderService.getWidget(id);\n },\n };\n }\n getFunctionScope() {\n const scope = {\n sum: (values) => {\n return sum(values);\n },\n translate: (text, options) => {\n return this.translateService.translateAsync(text, options);\n },\n widgetInfo: (name) => {\n return this.widgetService.resolve(name);\n },\n };\n // Add custom functions from builder service\n Object.entries(this.builderService.functions).forEach(([key, fn]) => {\n scope[key] = (...args) => {\n return fn(...args);\n };\n });\n return scope;\n }\n getVariablesScope() {\n return {\n eval: (path) => get(this.builderService.variables, path),\n };\n }\n async assignTriggers() {\n const node = this.node();\n // Check multiple possible locations for triggers\n const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n if (!triggers) {\n return;\n }\n for (const trigger of triggers) {\n try {\n const event = await this.evaluateTrigger(trigger.event);\n if (event) {\n event.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n const exec = async (action) => {\n if (!isEmpty(action) && isString(action)) {\n await this.evaluateAction(action);\n }\n };\n const actions = Array.isArray(trigger.action) ? trigger.action : [trigger.action];\n actions.forEach(async (a) => await exec(a));\n });\n }\n }\n catch (error) {\n // console.error('Error assigning trigger:', error);\n }\n }\n }\n async evaluateTrigger(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n const result = await this.expressionEvaluator.evaluate(templateExpression, scope);\n // Check if result is an Observable\n if (result && typeof result.subscribe === 'function') {\n return result;\n }\n else {\n return null;\n }\n }\n catch (error) {\n // console.error('Error evaluating trigger expression:', error);\n return null;\n }\n }\n async evaluateAction(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n await this.expressionEvaluator.evaluate(templateExpression, scope);\n }\n catch (error) {\n // console.error('Error evaluating action expression:', templateExpression, error);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.12\", type: AXPWidgetRendererDirective, isStandalone: false, selector: \"[axp-widget-renderer]\", inputs: { parentNode: { classPropertyName: \"parentNode\", publicName: \"parentNode\", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: \"index\", publicName: \"index\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: \"node\", publicName: \"node\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: \"onOptionsChanged\", onValueChanged: \"onValueChanged\" }, providers: [\n {\n provide: AXUnsubscriber,\n },\n ], exportAs: [\"widgetRenderer\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-widget-renderer]',\n exportAs: 'widgetRenderer',\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n standalone: false,\n }]\n }], ctorParameters: () => [], propDecorators: { parentNode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"parentNode\", required: false }] }], index: [{ type: i0.Input, args: [{ isSignal: true, alias: \"index\", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"mode\", required: true }] }], node: [{ type: i0.Input, args: [{ isSignal: true, alias: \"node\", required: true }] }], onOptionsChanged: [{ type: i0.Output, args: [\"onOptionsChanged\"] }], onValueChanged: [{ type: i0.Output, args: [\"onValueChanged\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LXJlbmRlcmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBK0IsNkJBQTZCLEVBQWUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoSCxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFFUixnQkFBZ0IsRUFFaEIsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4RixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUtMLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDOztBQWN4QixNQUFNLE9BQU8sMEJBQTBCO0lB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Q3JGLENBQUM7SUFDSCxDQUFDOytHQTlnQ1UsMEJBQTBCO21HQUExQiwwQkFBMEIsNm9CQVAxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2FBQ3hCO1NBQ0Y7OzRGQUdVLDBCQUEwQjtrQkFWdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO29CQUNELFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucywgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlLCBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSwgQVhQTWV0YURhdGEgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEluamVjdG9yLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgaXNFbXB0eSwgaXNFcXVhbCwgaXNTdHJpbmcsIG1lcmdlLCBzZXQsIHN1bSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUEJhc2VXaWRnZXRDb21wb25lbnQsIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQsIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZUNvbnRleHRTdG9yZSB9IGZyb20gJy4vd2lkZ2V0LWNvcmUtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlU2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LWNvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRTdGF0dXMgfSBmcm9tICcuL3dpZGdldC1zdGF0dXMudHlwZXMnO1xuaW1wb3J0IHtcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXROb2RlLFxuICBBWFBXaWRnZXROb2RlVG9rZW4sXG4gIEFYUFdpZGdldFJlbmRlck1vZGUsXG4gIEFYUF9XSURHRVRfVE9LRU4sXG59IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmVPcHRpb25zID0gQVhQTWV0YURhdGE7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theHAtd2lkZ2V0LXJlbmRlcmVyXScsXG4gIGV4cG9ydEFzOiAnd2lkZ2V0UmVuZGVyZXInLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFVuc3Vic2NyaWJlcixcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmUge1xuICBwYXJlbnROb2RlID0gaW5wdXQ8QVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudCB8IG51bGw+KCk7XG5cbiAgaW5kZXggPSBpbnB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcml2YXRlIF9vcHRpb25zID0gc2lnbmFsPEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlT3B0aW9ucz4oe30pO1xuICBwdWJsaWMgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHB1YmxpYyBvbk9wdGlvbnNDaGFuZ2VkID0gb3V0cHV0PHsgc2VuZGVyOiBBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZTsgd2lkZ2V0OiBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50IH0+KCk7XG4gIHB1YmxpYyBvblZhbHVlQ2hhbmdlZCA9IG91dHB1dDx7IHNlbmRlcjogQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmU7IHdpZGdldDogQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgfT4oKTtcblxuICAvLyNyZWdpb24gLS0tLSAgIFB1YmxpYyBBUEkgICAtLS0tXG5cbiAgLyoqXG4gICAqIFNpZ25hbCB0aGF0IGVtaXRzIHRoZSBjb21wb25lbnQgcmVmZXJlbmNlIHdoZW4gaXQncyByZWFkeVxuICAgKi9cbiAgcHJpdmF0ZSBfY29tcG9uZW50UmVmU2lnbmFsID0gc2lnbmFsPENvbXBvbmVudFJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyBjb21wb25lbnRSZWZTaWduYWwgPSB0aGlzLl9jb21wb25lbnRSZWZTaWduYWwuYXNSZWFkb25seSgpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHJvcGVydGllcyAgIC0tLS1cblxuICBwcm90ZWN0ZWQgbWVyZ2VkT3B0aW9uczogV3JpdGFibGVTaWduYWw8YW55PiA9IHNpZ25hbDxhbnk+KHt9KTtcblxuICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJvdGVjdGVkIGJ1aWxkZXJTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldENvcmVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGNvbnRleHRTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUpO1xuICBwcm90ZWN0ZWQgd2lkZ2V0UmVnaXN0ZXJ5ID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG4gIHByb3RlY3RlZCB1bnN1YnNjcmliZXIgPSBpbmplY3QoQVhVbnN1YnNjcmliZXIpO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIHByb3RlY3RlZCB3aWRnZXRTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZSk7XG4gIHByb3RlY3RlZCBleHByZXNzaW9uRXZhbHVhdG9yID0gaW5qZWN0KEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuXG4gIHByb3RlY3RlZCBpc0xvYWRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgaXNWaXNpYmxlID0gc2lnbmFsKHRydWUpO1xuICAvL1RPRE8gY2hlY2sgaWYgaW5zdGFuY2UgY2Fubm90IGJlIHB1YmxpYyBjaGFuZ2UgaXQ6XG4gIHB1YmxpYyBpbnN0YW5jZSE6IEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50O1xuICBwcml2YXRlIGV4cHJlc3Npb25FdmFsdWF0b3JzOiBNYXA8c3RyaW5nLCAoKSA9PiBQcm9taXNlPGFueT4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPGFueT47XG4gIHByaXZhdGUgcmVuZGVyVGltZW91dElkOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIGhhc0luaXRpYWxSZW5kZXIgPSBmYWxzZTtcblxuICBwcml2YXRlIG9uQ29udGV4dENoYW5nZWQgPSBuZXcgU3ViamVjdDx7IHBhdGg6IHN0cmluZyB9PigpO1xuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9uIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgcHJpdmF0ZSBjb250ZXh0VXBkYXRlUXVldWUgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBjb250ZXh0VXBkYXRlVGltZW91dDogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBDT05URVhUX1VQREFURV9ERUJPVU5DRV9NUyA9IDQ7IC8vIH4yNTBmcHMgZm9yIGxhcmdlIGZvcm1zXG5cbiAgLy8gUmVtb3ZlZCB2aXNpYmlsaXR5IGRldGVjdGlvbiAtIG5vdCBuZWVkZWQgZm9yIGN1cnJlbnQgaW1wbGVtZW50YXRpb25cblxuICAvLyBFeHByZXNzaW9uIHJlc3VsdCBjYWNoaW5nXG4gIHByaXZhdGUgZXhwcmVzc2lvbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHsgdmFsdWU6IGFueTsgdGltZXN0YW1wOiBudW1iZXIgfT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBFWFBSRVNTSU9OX0NBQ0hFX1RUTCA9IDUwMDsgLy8gQ2FjaGUgZm9yIDUwMG1zIChpbmNyZWFzZWQgZm9yIGJldHRlciBoaXQgcmF0ZSlcblxuICAvLyBPcHRpb25zIGNoYW5nZSB0cmFja2luZ1xuICBwcml2YXRlIGxhc3RBcHBsaWVkT3B0aW9uczogYW55ID0gbnVsbDtcblxuICAvLyBFeHByZXNzaW9uIHJlc3VsdCB0cmFja2luZ1xuICBwcml2YXRlIGxhc3RFeHByZXNzaW9uUmVzdWx0cyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgLy8gQnVmZmVyIGZvciBjb250ZXh0IGNoYW5nZXMgdGhhdCBoYXBwZW4gYmVmb3JlIGluaXRpYWwgcmVuZGVyIGNvbXBsZXRlc1xuICBwcml2YXRlIHByZVJlbmRlckNvbnRleHRRdWV1ZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5jb250ZXh0U2VydmljZS5jaGFuZ2VFdmVudCgpO1xuXG4gICAgICAvLyBEb24ndCB0cmlnZ2VyIHJlLXJlbmRlciBkdXJpbmcgaW5pdGlhbCBzZXR1cFxuICAgICAgaWYgKCF0aGlzLmhhc0luaXRpYWxSZW5kZXIpIHtcbiAgICAgICAgaWYgKGNoYW5nZWQucGF0aCkge1xuICAgICAgICAgIHRoaXMucHJlUmVuZGVyQ29udGV4dFF1ZXVlLmFkZChjaGFuZ2VkLnBhdGgpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5OdIFske3RoaXMubm9kZSgpLnR5cGV9XSBCdWZmZXJlZCBwcmUtcmVuZGVyIGNvbnRleHQgY2hhbmdlOiAke2NoYW5nZWQucGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIENSSVRJQ0FMIFBFUkZPUk1BTkNFIEZJWDogT25seSByZXNwb25kIHRvIHJlbGV2YW50IGNvbnRleHQgY2hhbmdlc1xuICAgICAgaWYgKGNoYW5nZWQucGF0aCAmJiB0aGlzLmlzUmVsZXZhbnRDb250ZXh0Q2hhbmdlKGNoYW5nZWQucGF0aCkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCfjq8gWyR7dGhpcy5ub2RlKCkudHlwZX1dIENvbnRleHQgY2hhbmdlIGRldGVjdGVkOiAke2NoYW5nZWQucGF0aH1gKTtcbiAgICAgICAgdGhpcy5xdWV1ZUNvbnRleHRVcGRhdGUoY2hhbmdlZC5wYXRoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYnVpbGRlclNlcnZpY2Uub25SZWZyZXNoLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc0JhdGNoZWRVcGRhdGVzKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEV4cHJlc3Npb24gQ2FjaGluZyBNZXRob2RzICAgLS0tLVxuXG4gIHByaXZhdGUgZ2V0Q2FjaGVkRXhwcmVzc2lvblJlc3VsdChleHByZXNzaW9uS2V5OiBzdHJpbmcpOiBhbnkgfCBudWxsIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmV4cHJlc3Npb25DYWNoZS5nZXQoZXhwcmVzc2lvbktleSk7XG4gICAgaWYgKGNhY2hlZCAmJiBwZXJmb3JtYW5jZS5ub3coKSAtIGNhY2hlZC50aW1lc3RhbXAgPCB0aGlzLkVYUFJFU1NJT05fQ0FDSEVfVFRMKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+SviBbJHt0aGlzLm5vZGUoKS50eXBlfV0gVXNpbmcgY2FjaGVkIGV4cHJlc3Npb24gcmVzdWx0IGZvciAnJHtleHByZXNzaW9uS2V5fSdgKTtcbiAgICAgIHJldHVybiBjYWNoZWQudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWNoZWRFeHByZXNzaW9uUmVzdWx0KGV4cHJlc3Npb25LZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZXhwcmVzc2lvbkNhY2hlLnNldChleHByZXNzaW9uS2V5LCB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHRpbWVzdGFtcDogcGVyZm9ybWFuY2Uubm93KCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXhwcmVzc2lvbkNhY2hlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwcmVzc2lvbkNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGlzUGF0aEFmZmVjdGluZ0V4cHJlc3Npb25zKGNoYW5nZWRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAvLyAgIGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBDaGVja2luZyBpZiBwYXRoICcke2NoYW5nZWRQYXRofScgYWZmZWN0cyBleHByZXNzaW9ucy4gRXhwcmVzc2lvbiBjb3VudDogJHt0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNpemV9YCxcbiAgICAvLyApO1xuXG4gICAgLy8gSWYgd2lkZ2V0IGhhcyBubyBleHByZXNzaW9ucywgbm8gbmVlZCB0byBjbGVhciBjYWNoZVxuICAgIGlmICh0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNpemUgPT09IDApIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoICcke2NoYW5nZWRQYXRofScgLSBubyBleHByZXNzaW9ucywga2VlcGluZyBjYWNoZWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFVzZSB0aGUgc2FtZSBsb2dpYyBhcyBoYXNFeHByZXNzaW9uRGVwZW5kZW5jeSB0byBjaGVjayBmb3IgYWN0dWFsIGRlcGVuZGVuY2llc1xuICAgIGlmICh0aGlzLmhhc0V4cHJlc3Npb25EZXBlbmRlbmN5KGNoYW5nZWRQYXRoKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggJyR7Y2hhbmdlZFBhdGh9JyBhZmZlY3RzIGV4cHJlc3Npb25zIC0gY2xlYXJpbmcgY2FjaGVgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoICcke2NoYW5nZWRQYXRofScgZG9lcyBub3QgYWZmZWN0IGV4cHJlc3Npb25zIC0ga2VlcGluZyBjYWNoZWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29udGV4dCBCYXRjaGluZyBNZXRob2RzICAgLS0tLVxuXG4gIHByaXZhdGUgcXVldWVDb250ZXh0VXBkYXRlKHBhdGg6IHN0cmluZykge1xuICAgIGlmIChwYXRoKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+UhCBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUXVldWVpbmcgY29udGV4dCB1cGRhdGUgZm9yIHBhdGg6ICR7cGF0aH1gKTtcbiAgICAgIHRoaXMuY29udGV4dFVwZGF0ZVF1ZXVlLmFkZChwYXRoKTtcblxuICAgICAgLy8gQ2xlYXIgZXhpc3RpbmcgdGltZW91dFxuICAgICAgaWYgKHRoaXMuY29udGV4dFVwZGF0ZVRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY29udGV4dFVwZGF0ZVRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWJvdW5jZSB1cGRhdGVzXG4gICAgICB0aGlzLmNvbnRleHRVcGRhdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGDimqEgWyR7dGhpcy5ub2RlKCkudHlwZX1dIFByb2Nlc3NpbmcgYmF0Y2hlZCB1cGRhdGVzIGZvciAke3RoaXMuY29udGV4dFVwZGF0ZVF1ZXVlLnNpemV9IHBhdGhzYCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc0JhdGNoZWRVcGRhdGVzKCk7XG4gICAgICB9LCB0aGlzLkNPTlRFWFRfVVBEQVRFX0RFQk9VTkNFX01TKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NCYXRjaGVkVXBkYXRlcygpIHtcbiAgICBpZiAodGhpcy5jb250ZXh0VXBkYXRlUXVldWUuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgcGF0aHMgPSBBcnJheS5mcm9tKHRoaXMuY29udGV4dFVwZGF0ZVF1ZXVlKTtcbiAgICB0aGlzLmNvbnRleHRVcGRhdGVRdWV1ZS5jbGVhcigpO1xuXG4gICAgLy8gY29uc29sZS5sb2coYPCfk4ogWyR7dGhpcy5ub2RlKCkudHlwZX1dIFByb2Nlc3NpbmcgJHtwYXRocy5sZW5ndGh9IHBhdGhzOmAsIHBhdGhzKTtcblxuICAgIC8vIENsZWFyIGV4cHJlc3Npb24gY2FjaGUgb25seSBpZiBjaGFuZ2VkIHBhdGhzIGFmZmVjdCB0aGlzIHdpZGdldCdzIGV4cHJlc3Npb25zXG4gICAgY29uc3Qgc2hvdWxkQ2xlYXJDYWNoZSA9IHBhdGhzLnNvbWUoKHBhdGgpID0+IHRoaXMuaXNQYXRoQWZmZWN0aW5nRXhwcmVzc2lvbnMocGF0aCkpO1xuICAgIGlmIChzaG91bGRDbGVhckNhY2hlKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+Xke+4jyBbJHt0aGlzLm5vZGUoKS50eXBlfV0gQ2xlYXJpbmcgZXhwcmVzc2lvbiBjYWNoZSBkdWUgdG8gZXhwcmVzc2lvbi1hZmZlY3RpbmcgcGF0aCBjaGFuZ2VgKTtcbiAgICAgIHRoaXMuY2xlYXJFeHByZXNzaW9uQ2FjaGUoKTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIHVwZGF0ZXMgaW4gYmF0Y2hlc1xuICAgIGNvbnN0IG9wdGlvbnNTdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBoYXNPcHRpb25zVXBkYXRlID0gYXdhaXQgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKTtcbiAgICBjb25zdCBvcHRpb25zVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gb3B0aW9uc1N0YXJ0VGltZTtcblxuICAgIGlmICh0eXBlb2YgaGFzT3B0aW9uc1VwZGF0ZSA9PT0gJ251bWJlcicgJiYgaGFzT3B0aW9uc1VwZGF0ZSA+IDApIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SnIFske3RoaXMubm9kZSgpLnR5cGV9XSBPcHRpb25zIHVwZGF0ZWQgKCR7b3B0aW9uc1RpbWUudG9GaXhlZCgyKX1tcylgKTtcbiAgICAgIHRoaXMuYXBwbHlPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9ybXVsYXMgZm9yIGFueSBvZiB0aGUgY2hhbmdlZCBwYXRoc1xuICAgIGNvbnN0IGZvcm11bGFTdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBmb3JtdWxhTmVlZHNVcGRhdGUgPSBwYXRocy5zb21lKChwYXRoKSA9PiB0aGlzLmNoZWNrRm9ybXVsYUZvclVwZGF0ZSh0aGlzLm5vZGUoKS5mb3JtdWxhLCBwYXRoKSk7XG5cbiAgICBpZiAoZm9ybXVsYU5lZWRzVXBkYXRlKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+nriBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRm9ybXVsYSBuZWVkcyB1cGRhdGVgKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpO1xuICAgIH1cbiAgICBjb25zdCBmb3JtdWxhVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gZm9ybXVsYVN0YXJ0VGltZTtcblxuICAgIC8vIENoZWNrIHZpc2liaWxpdHkgZm9yIGFueSBvZiB0aGUgY2hhbmdlZCBwYXRoc1xuICAgIGNvbnN0IHZpc2liaWxpdHlTdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCB2aXNpYmlsaXR5TmVlZHNVcGRhdGUgPSBwYXRocy5zb21lKChwYXRoKSA9PiB0aGlzLmhhc1Zpc2liaWxpdHlEZXBlbmRlbmN5KHBhdGgpKTtcblxuICAgIGlmICh2aXNpYmlsaXR5TmVlZHNVcGRhdGUpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5GB77iPIFske3RoaXMubm9kZSgpLnR5cGV9XSBWaXNpYmlsaXR5IG5lZWRzIHVwZGF0ZWApO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XG4gICAgfVxuICAgIGNvbnN0IHZpc2liaWxpdHlUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSB2aXNpYmlsaXR5U3RhcnRUaW1lO1xuXG4gICAgLy8gRW1pdCBjb250ZXh0IGNoYW5nZXNcbiAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICB0aGlzLm9uQ29udGV4dENoYW5nZWQubmV4dCh7IHBhdGggfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3RhbFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAvLyAgIGDinIUgWyR7dGhpcy5ub2RlKCkudHlwZX1dIEJhdGNoIHByb2Nlc3NpbmcgY29tcGxldGVkIGluICR7dG90YWxUaW1lLnRvRml4ZWQoMil9bXMgKG9wdGlvbnM6ICR7b3B0aW9uc1RpbWUudG9GaXhlZCgyKX1tcywgZm9ybXVsYTogJHtmb3JtdWxhVGltZS50b0ZpeGVkKDIpfW1zLCB2aXNpYmlsaXR5OiAke3Zpc2liaWxpdHlUaW1lLnRvRml4ZWQoMil9bXMpYCxcbiAgICAvLyApO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb250ZXh0IFJlbGV2YW5jZSBGaWx0ZXJpbmcgICAtLS0tXG5cbiAgcHJpdmF0ZSBpc1JlbGV2YW50Q29udGV4dENoYW5nZShjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuXG4gICAgLy8gMS4gRGlyZWN0IHBhdGggbWF0Y2ggLSB3aWRnZXQncyBvd24gZmllbGRcbiAgICBpZiAobm9kZS5wYXRoID09PSBjaGFuZ2VkUGF0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gMi4gUGFyZW50IHBhdGggbWF0Y2ggLSB3aWRnZXQgaXMgaW5zaWRlIHRoZSBjaGFuZ2VkIGNvbnRhaW5lclxuICAgIGlmIChub2RlLnBhdGggJiYgY2hhbmdlZFBhdGguc3RhcnRzV2l0aChub2RlLnBhdGggKyAnLicpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyAzLiBDaGlsZCBwYXRoIG1hdGNoIC0gY2hhbmdlZCBmaWVsZCBpcyBpbnNpZGUgdGhpcyB3aWRnZXQncyBjb250YWluZXJcbiAgICBpZiAobm9kZS5wYXRoICYmIG5vZGUucGF0aC5zdGFydHNXaXRoKGNoYW5nZWRQYXRoICsgJy4nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gNC4gRXhwcmVzc2lvbiBkZXBlbmRlbmN5IGNoZWNrIC0gaWYgd2lkZ2V0IGhhcyBleHByZXNzaW9ucyB0aGF0IGRlcGVuZCBvbiB0aGlzIHBhdGhcbiAgICBpZiAodGhpcy5oYXNFeHByZXNzaW9uRGVwZW5kZW5jeShjaGFuZ2VkUGF0aCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIDUuIEZvcm11bGEgZGVwZW5kZW5jeSBjaGVjayAtIGlmIHdpZGdldCdzIGZvcm11bGEgZGVwZW5kcyBvbiB0aGlzIHBhdGhcbiAgICBpZiAobm9kZS5mb3JtdWxhICYmIHRoaXMuY2hlY2tGb3JtdWxhRm9yVXBkYXRlKG5vZGUuZm9ybXVsYSwgY2hhbmdlZFBhdGgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyA2LiBUcmlnZ2VyIGRlcGVuZGVuY3kgY2hlY2sgLSBpZiB3aWRnZXQgaGFzIHRyaWdnZXJzIHRoYXQgZGVwZW5kIG9uIHRoaXMgcGF0aFxuICAgIGlmICh0aGlzLmhhc1RyaWdnZXJEZXBlbmRlbmN5KGNoYW5nZWRQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gNy4gVmlzaWJpbGl0eSBkZXBlbmRlbmN5IGNoZWNrIC0gaWYgd2lkZ2V0J3MgdmlzaWJpbGl0eSBkZXBlbmRzIG9uIHRoaXMgcGF0aFxuICAgIGlmICh0aGlzLmhhc1Zpc2liaWxpdHlEZXBlbmRlbmN5KGNoYW5nZWRQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNFeHByZXNzaW9uRGVwZW5kZW5jeShjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hlY2sgaWYgYW55IGNhY2hlZCBleHByZXNzaW9ucyBkZXBlbmQgb24gdGhlIGNoYW5nZWQgcGF0aFxuICAgIGZvciAoY29uc3QgW3BhdGgsIGV2YWx1YXRvcl0gb2YgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycykge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV4cHJlc3Npb24gcGF0aCBpdHNlbGYgY29udGFpbnMgdGhlIGNoYW5nZWQgcGF0aFxuICAgICAgaWYgKHBhdGguaW5jbHVkZXMoY2hhbmdlZFBhdGgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBQYXJzZSB0aGUgYWN0dWFsIGV4cHJlc3Npb24gY29udGVudCB0byBjaGVjayBmb3IgY29udGV4dC5ldmFsKCkgY2FsbHNcbiAgICAgIC8vIFdlIG5lZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBleHByZXNzaW9uIHN0cmluZyB0byBhbmFseXplIGl0XG4gICAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgICBjb25zdCBleHByZXNzaW9uVmFsdWUgPSB0aGlzLmdldEV4cHJlc3Npb25WYWx1ZUZyb21Ob2RlKG5vZGUsIHBhdGgpO1xuXG4gICAgICBpZiAoZXhwcmVzc2lvblZhbHVlICYmIHR5cGVvZiBleHByZXNzaW9uVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIExvb2sgZm9yIGNvbnRleHQuZXZhbCgpIGNhbGxzIHRoYXQgcmVmZXJlbmNlIHRoZSBjaGFuZ2VkIHBhdGhcbiAgICAgICAgY29uc3QgY29udGV4dEV2YWxSZWdleCA9IC9jb250ZXh0XFwuZXZhbFxcKFsnXCJdKFteJ1xcXCJdKylbJ1wiXVxcKS9nO1xuICAgICAgICBsZXQgbWF0Y2g7XG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSBjb250ZXh0RXZhbFJlZ2V4LmV4ZWMoZXhwcmVzc2lvblZhbHVlKSkgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBldmFsUGF0aCA9IG1hdGNoWzFdO1xuXG4gICAgICAgICAgLy8gTm9ybWFsaXplIElkLXN1ZmZpeGVkIHNlZ21lbnRzIHRvIGRvdC1pZCBmb3JtIChlLmcuLCAndHlwZUlkJyAtPiAndHlwZS5pZCcsICdwYXJ0eS50eXBlSWQnIC0+ICdwYXJ0eS50eXBlLmlkJylcbiAgICAgICAgICBjb25zdCBub3JtYWxpemVQYXRoID0gKHA6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgICAgICAgICBpZiAoIXApIHJldHVybiBwO1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBwLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAobGFzdCAmJiBsYXN0LmVuZHNXaXRoKCdJZCcpKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnNwbGljZShwYXJ0cy5sZW5ndGggLSAxLCAxLCBsYXN0LnNsaWNlKDAsIC0yKSwgJ2lkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFydHMuam9pbignLicpO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBpc1NlZ21lbnRTdWZmaXggPSAoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICAgICAgICAgIGlmICghYSB8fCAhYikgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgcGEgPSBhLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBjb25zdCBwYiA9IGIuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChwYi5sZW5ndGggPiBwYS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIGlmIChwYVtwYS5sZW5ndGggLSBpXSAhPT0gcGJbcGIubGVuZ3RoIC0gaV0pIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBldmFsTm9ybSA9IG5vcm1hbGl6ZVBhdGgoZXZhbFBhdGgpO1xuICAgICAgICAgIGNvbnN0IGNoYW5nZWROb3JtID0gbm9ybWFsaXplUGF0aChjaGFuZ2VkUGF0aCk7XG5cbiAgICAgICAgICAvLyBEZWJ1ZyBsb2cgZm9yIGRlcGVuZGVuY3kgY2hlY2tcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAvLyAgIGDwn6etIFske3RoaXMubm9kZSgpLnR5cGV9XSBkZXAtY2hlY2sgZXhwcj0nJHtwYXRofScsIGNoYW5nZWQ9JyR7Y2hhbmdlZFBhdGh9JywgZXZhbD0nJHtldmFsUGF0aH0nLCBldmFsTm9ybT0nJHtldmFsTm9ybX0nLCBjaGFuZ2VkTm9ybT0nJHtjaGFuZ2VkTm9ybX0nYCxcbiAgICAgICAgICAvLyApO1xuXG4gICAgICAgICAgLy8gR2VuZXJpYyBkaXJlY3QgYW5kIGhpZXJhcmNoaWNhbCBkZXBlbmRlbmN5IGNoZWNrcyAocmF3IGFuZCBub3JtYWxpemVkKVxuICAgICAgICAgIGNvbnN0IHJhd01hdGNoID1cbiAgICAgICAgICAgIGV2YWxQYXRoID09PSBjaGFuZ2VkUGF0aCB8fFxuICAgICAgICAgICAgZXZhbFBhdGguc3RhcnRzV2l0aChjaGFuZ2VkUGF0aCArICcuJykgfHxcbiAgICAgICAgICAgIGNoYW5nZWRQYXRoLnN0YXJ0c1dpdGgoZXZhbFBhdGggKyAnLicpIHx8XG4gICAgICAgICAgICBpc1NlZ21lbnRTdWZmaXgoZXZhbFBhdGgsIGNoYW5nZWRQYXRoKSB8fFxuICAgICAgICAgICAgaXNTZWdtZW50U3VmZml4KGNoYW5nZWRQYXRoLCBldmFsUGF0aCk7XG5cbiAgICAgICAgICBjb25zdCBub3JtTWF0Y2ggPVxuICAgICAgICAgICAgZXZhbE5vcm0gPT09IGNoYW5nZWROb3JtIHx8XG4gICAgICAgICAgICBldmFsTm9ybS5zdGFydHNXaXRoKGNoYW5nZWROb3JtICsgJy4nKSB8fFxuICAgICAgICAgICAgY2hhbmdlZE5vcm0uc3RhcnRzV2l0aChldmFsTm9ybSArICcuJykgfHxcbiAgICAgICAgICAgIGlzU2VnbWVudFN1ZmZpeChldmFsTm9ybSwgY2hhbmdlZE5vcm0pIHx8XG4gICAgICAgICAgICBpc1NlZ21lbnRTdWZmaXgoY2hhbmdlZE5vcm0sIGV2YWxOb3JtKTtcblxuICAgICAgICAgIGlmIChyYXdNYXRjaCB8fCBub3JtTWF0Y2gpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgLy8gICBg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRXhwcmVzc2lvbiAnJHtwYXRofScgZGVwZW5kcyBvbiAnJHtjaGFuZ2VkUGF0aH0nIHZpYSBjb250ZXh0LmV2YWwoJyR7ZXZhbFBhdGh9JykgKGdlbmVyaWMgbWF0Y2gpYCxcbiAgICAgICAgICAgIC8vICk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDaGVjayBmb3IgcGF0aCBhbGlhc2VzL21hcHBpbmdzIChlLmcuLCB0eXBlSWQuaWQgPC0+IHR5cGUuaWQpXG4gICAgICAgICAgaWYgKHRoaXMuaXNQYXRoQWxpYXMoZXZhbFBhdGgsIGNoYW5nZWRQYXRoKSkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgICAgICAvLyAgIGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBFeHByZXNzaW9uICcke3BhdGh9JyBkZXBlbmRzIG9uICcke2NoYW5nZWRQYXRofScgdmlhIGNvbnRleHQuZXZhbCgnJHtldmFsUGF0aH0nKSAocGF0aCBhbGlhcylgLFxuICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGlzUGF0aEFsaWFzKGV2YWxQYXRoOiBzdHJpbmcsIGNoYW5nZWRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBEeW5hbWljIHBhdGggYWxpYXMgZGV0ZWN0aW9uIGJhc2VkIG9uICdJZCcgc3VmZml4IHBhdHRlcm5cbiAgICAvLyBFeGFtcGxlczogdHlwZUlkLmlkIDwtPiB0eXBlLmlkLCBjYXRlZ29yeUlkLm5hbWUgPC0+IGNhdGVnb3J5Lm5hbWVcblxuICAgIC8vIENoZWNrIGlmIGV2YWxQYXRoIGVuZHMgd2l0aCAnSWQnIGFuZCBoYXMgYSBwcm9wZXJ0eVxuICAgIGlmIChldmFsUGF0aC5lbmRzV2l0aCgnSWQnKSAmJiBldmFsUGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBiYXNlUGF0aCA9IGV2YWxQYXRoLnN1YnN0cmluZygwLCBldmFsUGF0aC5sYXN0SW5kZXhPZignSWQnKSk7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGV2YWxQYXRoLnN1YnN0cmluZyhldmFsUGF0aC5sYXN0SW5kZXhPZignLicpICsgMSk7XG4gICAgICBjb25zdCBtYXBwZWRQYXRoID0gYCR7YmFzZVBhdGh9LiR7cHJvcGVydHl9YDtcblxuICAgICAgaWYgKGNoYW5nZWRQYXRoID09PSBtYXBwZWRQYXRoKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoIGFsaWFzIGRldGVjdGVkOiAnJHtldmFsUGF0aH0nIDwtPiAnJHtjaGFuZ2VkUGF0aH0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGNoYW5nZWRQYXRoIGVuZHMgd2l0aCAnSWQnIGFuZCBoYXMgYSBwcm9wZXJ0eVxuICAgIGlmIChjaGFuZ2VkUGF0aC5lbmRzV2l0aCgnSWQnKSAmJiBjaGFuZ2VkUGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBiYXNlUGF0aCA9IGNoYW5nZWRQYXRoLnN1YnN0cmluZygwLCBjaGFuZ2VkUGF0aC5sYXN0SW5kZXhPZignSWQnKSk7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGNoYW5nZWRQYXRoLnN1YnN0cmluZyhjaGFuZ2VkUGF0aC5sYXN0SW5kZXhPZignLicpICsgMSk7XG4gICAgICBjb25zdCBtYXBwZWRQYXRoID0gYCR7YmFzZVBhdGh9LiR7cHJvcGVydHl9YDtcblxuICAgICAgaWYgKGV2YWxQYXRoID09PSBtYXBwZWRQYXRoKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoIGFsaWFzIGRldGVjdGVkOiAnJHtldmFsUGF0aH0nIDwtPiAnJHtjaGFuZ2VkUGF0aH0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBkaXJlY3QgJ0lkJyBzdWZmaXggbWFwcGluZyAoZS5nLiwgdHlwZUlkIDwtPiB0eXBlLmlkKVxuICAgIGlmIChldmFsUGF0aC5lbmRzV2l0aCgnSWQnKSAmJiAhZXZhbFBhdGguaW5jbHVkZXMoJy4nKSkge1xuICAgICAgY29uc3QgYmFzZVBhdGggPSBldmFsUGF0aC5zdWJzdHJpbmcoMCwgZXZhbFBhdGgubGFzdEluZGV4T2YoJ0lkJykpO1xuICAgICAgY29uc3QgbWFwcGVkUGF0aCA9IGAke2Jhc2VQYXRofS5pZGA7XG5cbiAgICAgIGlmIChjaGFuZ2VkUGF0aCA9PT0gbWFwcGVkUGF0aCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUGF0aCBhbGlhcyBkZXRlY3RlZDogJyR7ZXZhbFBhdGh9JyA8LT4gJyR7Y2hhbmdlZFBhdGh9J2ApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlZFBhdGguZW5kc1dpdGgoJ0lkJykgJiYgIWNoYW5nZWRQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgIGNvbnN0IGJhc2VQYXRoID0gY2hhbmdlZFBhdGguc3Vic3RyaW5nKDAsIGNoYW5nZWRQYXRoLmxhc3RJbmRleE9mKCdJZCcpKTtcbiAgICAgIGNvbnN0IG1hcHBlZFBhdGggPSBgJHtiYXNlUGF0aH0uaWRgO1xuXG4gICAgICBpZiAoZXZhbFBhdGggPT09IG1hcHBlZFBhdGgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggYWxpYXMgZGV0ZWN0ZWQ6ICcke2V2YWxQYXRofScgPC0+ICcke2NoYW5nZWRQYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHByZXNzaW9uVmFsdWVGcm9tTm9kZShub2RlOiBBWFBXaWRnZXROb2RlLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgLy8gTmF2aWdhdGUgdGhyb3VnaCB0aGUgbm9kZSBzdHJ1Y3R1cmUgdG8gZmluZCB0aGUgZXhwcmVzc2lvbiB2YWx1ZVxuICAgICAgY29uc3QgcGF0aFBhcnRzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgICAgbGV0IGN1cnJlbnQ6IGFueSA9IG5vZGUub3B0aW9ucyB8fCB7fTtcblxuICAgICAgLy8gTmF2aWdhdGUgdGhyb3VnaCB0aGUgcGF0aCBwYXJ0c1xuICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhdGhQYXJ0cykge1xuICAgICAgICBpZiAoY3VycmVudCAmJiB0eXBlb2YgY3VycmVudCA9PT0gJ29iamVjdCcgJiYgcGFydCBpbiBjdXJyZW50KSB7XG4gICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcGFydF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHR5cGVvZiBjdXJyZW50ID09PSAnc3RyaW5nJyA/IGN1cnJlbnQgOiBudWxsO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBleHRyYWN0aW5nIGV4cHJlc3Npb24gdmFsdWUgZnJvbSBub2RlOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzVHJpZ2dlckRlcGVuZGVuY3koY2hhbmdlZFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGUoKTtcbiAgICBjb25zdCB0cmlnZ2VycyA9IG5vZGUudHJpZ2dlcnMgfHwgbm9kZS5vcHRpb25zPy5bJ3RyaWdnZXJzJ10gfHwgdGhpcy5tZXJnZWRPcHRpb25zKCk/LnRyaWdnZXJzO1xuXG4gICAgaWYgKCF0cmlnZ2VycykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgYW55IHRyaWdnZXIgZXZlbnQgZGVwZW5kcyBvbiB0aGUgY2hhbmdlZCBwYXRoXG4gICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIHRyaWdnZXJzKSB7XG4gICAgICBpZiAodHJpZ2dlci5ldmVudCAmJiB0cmlnZ2VyLmV2ZW50LmluY2x1ZGVzKGNoYW5nZWRQYXRoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNWaXNpYmlsaXR5RGVwZW5kZW5jeShjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIGNvbnN0IHZpc2liaWxpdHkgPSBub2RlLm9wdGlvbnM/LlsndmlzaWJsZSddIHx8IHRoaXMubWVyZ2VkT3B0aW9ucygpPy52aXNpYmxlO1xuXG4gICAgaWYgKCF2aXNpYmlsaXR5IHx8IHR5cGVvZiB2aXNpYmlsaXR5ICE9PSAnc3RyaW5nJykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgaWYgdmlzaWJpbGl0eSBleHByZXNzaW9uIGRlcGVuZHMgb24gdGhlIGNoYW5nZWQgcGF0aFxuICAgIGlmICh0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3IuaXNFeHByZXNzaW9uKHZpc2liaWxpdHkpKSB7XG4gICAgICAvLyBQYXJzZSB0aGUgdmlzaWJpbGl0eSBleHByZXNzaW9uIHRvIGNoZWNrIGZvciBjb250ZXh0LmV2YWwoKSBjYWxsc1xuICAgICAgY29uc3QgY29udGV4dEV2YWxSZWdleCA9IC9jb250ZXh0XFwuZXZhbFxcKFsnXCJdKFteJ1xcXCJdKylbJ1wiXVxcKS9nO1xuICAgICAgbGV0IG1hdGNoO1xuICAgICAgd2hpbGUgKChtYXRjaCA9IGNvbnRleHRFdmFsUmVnZXguZXhlYyh2aXNpYmlsaXR5KSkgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgZXZhbFBhdGggPSBtYXRjaFsxXTtcblxuICAgICAgICAvLyBDaGVjayBmb3IgZGlyZWN0IG9yIGhpZXJhcmNoaWNhbCBkZXBlbmRlbmN5XG4gICAgICAgIGlmIChcbiAgICAgICAgICBldmFsUGF0aCA9PT0gY2hhbmdlZFBhdGggfHxcbiAgICAgICAgICBldmFsUGF0aC5zdGFydHNXaXRoKGNoYW5nZWRQYXRoICsgJy4nKSB8fFxuICAgICAgICAgIGNoYW5nZWRQYXRoLnN0YXJ0c1dpdGgoZXZhbFBhdGggKyAnLicpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8gUmVtb3ZlZCB2aXNpYmlsaXR5IGRldGVjdGlvbiBtZXRob2RzIC0gbm90IG5lZWRlZCBmb3IgY3VycmVudCBpbXBsZW1lbnRhdGlvblxuXG4gIC8vIERldGVjdCBpbnB1dCBjaGFuZ2VzXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snbW9kZSddIHx8IGNoYW5nZXNbJ25vZGUnXSkge1xuICAgICAgLy8gQ2hlY2sgaWYgZWl0aGVyICdtb2RlJyBvciAnbm9kZScgaGFzIGNoYW5nZWRcbiAgICAgIHRoaXMucmVyZW5kZXJDb21wb25lbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlcmVuZGVyQ29tcG9uZW50KCkge1xuICAgIC8vIENsZWFyIGFueSBwZW5kaW5nIHJlbmRlciBvcGVyYXRpb24gdG8gcHJldmVudCBkb3VibGUgcmVuZGVyaW5nXG4gICAgaWYgKHRoaXMucmVuZGVyVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZW5kZXJUaW1lb3V0SWQpO1xuICAgICAgdGhpcy5yZW5kZXJUaW1lb3V0SWQgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IGxvYWRpbmcgc3RhdGUgdG8gYWxsb3cgcmUtcmVuZGVyaW5nXG4gICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcblxuICAgIC8vIFNjaGVkdWxlIHRoZSBjb21wb25lbnQgbG9hZGluZ1xuICAgIHRoaXMucmVuZGVyVGltZW91dElkID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmxvYWRDb21wb25lbnQoKTtcbiAgICAgIHRoaXMucmVuZGVyVGltZW91dElkID0gbnVsbDtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnJlbmRlclRpbWVvdXRJZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVuZGVyVGltZW91dElkKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29udGV4dFVwZGF0ZVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbnRleHRVcGRhdGVUaW1lb3V0KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBEZXN0cm95IHRoZSBleGlzdGluZyBjb21wb25lbnQgaWYgaXQgZXhpc3RzXG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG5cbiAgICAgIC8vIFJlc2V0IHRoZSBjb21wb25lbnQgcmVmIHNpZ25hbFxuICAgICAgdGhpcy5fY29tcG9uZW50UmVmU2lnbmFsLnNldChudWxsKTtcbiAgICAgIC8vXG4gICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLndpZGdldFJlZ2lzdGVyeS5yZXNvbHZlKHRoaXMubm9kZSgpLnR5cGUpO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IHByb3BlcnRpZXNUb1Byb2Nlc3MgPSBbXG4gICAgICAgIC4uLih3aWRnZXQ/LnByb3BlcnRpZXMgPz8gW10pLFxuICAgICAgICAuLi4od2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllcyA/PyBbXSksXG4gICAgICBdPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSAhPSBudWxsKTtcblxuICAgICAgLy8gUHJvY2VzcyBkZWZhdWx0IHZhbHVlcyAoZXZhbHVhdGUgZXhwcmVzc2lvbnMgaWYgbmVlZGVkKVxuICAgICAgY29uc3QgcHJvcHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllc1RvUHJvY2Vzcykge1xuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBwcm9wZXJ0eS5zY2hlbWEuZGVmYXVsdFZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbihkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgLy8gRXZhbHVhdGUgZXhwcmVzc2lvbiBmb3IgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBldmFsdWF0ZWRWYWx1ZSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICBwcm9wc1twcm9wZXJ0eS5uYW1lXSA9IGV2YWx1YXRlZFZhbHVlO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKGBFcnJvciBldmFsdWF0aW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBmb3IgcHJvcGVydHkgJHtwcm9wZXJ0eS5uYW1lfTpgLCBlcnJvcik7XG4gICAgICAgICAgICBwcm9wc1twcm9wZXJ0eS5uYW1lXSA9IGNsb25lRGVlcChkZWZhdWx0VmFsdWUpOyAvLyBGYWxsYmFjayB0byBvcmlnaW5hbCB2YWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVc2Ugc3RhdGljIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICBwcm9wc1twcm9wZXJ0eS5uYW1lXSA9IGNsb25lRGVlcChkZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL1xuICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnNldChtZXJnZShwcm9wcywgd2lkZ2V0Py5vcHRpb25zLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG5cbiAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuY2xlYXIoKTtcbiAgICAgIC8vIFJlZ2lzdGVyIGV4cHJlc3Npb25zIGZyb20gd2lkZ2V0IGRlZmF1bHRzIGFuZCBub2RlIG9wdGlvbnMgdG8gY292ZXIgcmVsYXRlZC1lbnRpdHkgY2FzZXNcbiAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKGNsb25lRGVlcCh3aWRnZXQ/Lm9wdGlvbnMpKTtcbiAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKGNsb25lRGVlcCh0aGlzLm5vZGUoKS5vcHRpb25zKSk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpO1xuICAgICAgLy9cbiAgICAgIHRoaXMuX29wdGlvbnMudXBkYXRlKCh2YWwpID0+ICh7IC4uLnZhbCwgLi4udGhpcy5tZXJnZWRPcHRpb25zKCkgfSkpO1xuICAgICAgLy8gRXZhbHVhdGUgZGVmYXVsdCB2YWx1ZVxuICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHRoaXMubm9kZSgpLmRlZmF1bHRWYWx1ZTtcbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgJiYgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbihkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICAvL1xuICAgICAgY29uc3QgdG9rZW5WYWx1ZSA9IHtcbiAgICAgICAgbm9kZTogdGhpcy5ub2RlKCksXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLFxuICAgICAgICBvcHRpb25zOiB0aGlzLm1lcmdlZE9wdGlvbnMoKSxcbiAgICAgICAgY29uZmlnOiB3aWRnZXQsXG4gICAgICB9IGFzIEFYUFdpZGdldE5vZGVUb2tlbjtcbiAgICAgIGNvbnN0IHRva2VuID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX1RPS0VOLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IGxvYWRpbmdSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEFYUFdpZGdldFBsYWNlaG9sZGVyQ29tcG9uZW50KTtcbiAgICAgIC8vXG4gICAgICBjb25zdCBjb20gPSBhd2FpdCB3aWRnZXQ/LmNvbXBvbmVudHNbdGhpcy5tb2RlKCldPy5jb21wb25lbnQoKTtcbiAgICAgIGlmICghY29tKSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5ub2RlKCkudHlwZX0gd2lkZ2V0IGNvbXBvbmVudCBub3QgZm91bmQgd2l0aCBtb2RlOiAke3RoaXMubW9kZSgpfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8QVhQVmFsdWVXaWRnZXRDb21wb25lbnQ8YW55Pj4oY29tLCB7IGluamVjdG9yOiB0b2tlbiB9KTtcbiAgICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0U3RhdHVzKEFYUFdpZGdldFN0YXR1cy5SZW5kZXJpbmcpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5wYXJlbnQgPSB0aGlzLnBhcmVudE5vZGUoKTtcbiAgICAgIHRoaXMuaW5zdGFuY2UuaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgICB0aGlzLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGUoKTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0U3RhdHVzKEFYUFdpZGdldFN0YXR1cy5SZW5kZXJlZCk7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgY29tcG9uZW50IHJlZiBzaWduYWwgZm9yIHJlYWN0aXZlIGFjY2Vzc1xuICAgICAgdGhpcy5fY29tcG9uZW50UmVmU2lnbmFsLnNldCh0aGlzLmNvbXBvbmVudFJlZik7XG4gICAgICB0aGlzLmluc3RhbmNlPy5vbk9wdGlvbnNDaGFuZ2VkPy5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCh7IHNlbmRlcjogdGhpcywgd2lkZ2V0OiBjLnNlbmRlciB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbnN0YW5jZT8ub25WYWx1ZUNoYW5nZWQ/LnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7IHNlbmRlcjogdGhpcywgd2lkZ2V0OiBjLnNlbmRlciBhcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB9KTtcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcbiAgICAgIGF3YWl0IHRoaXMuYXNzaWduVHJpZ2dlcnMoKTtcbiAgICAgIC8vXG4gICAgICBsb2FkaW5nUmVmLmRlc3Ryb3koKTtcblxuICAgICAgLy8gTWFyayB0aGF0IGluaXRpYWwgcmVuZGVyIGlzIGNvbXBsZXRlXG4gICAgICB0aGlzLmhhc0luaXRpYWxSZW5kZXIgPSB0cnVlO1xuXG4gICAgICAvLyBSZS1ldmFsdWF0ZSBleHByZXNzaW9ucyBhZnRlciBpbml0aWFsIHJlbmRlciB0byBjYXRjaCBsYXRlLWFycml2aW5nIHJlbGF0ZWQgY29udGV4dFxuICAgICAgaWYgKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2l6ZSA+IDApIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCflIQgWyR7dGhpcy5ub2RlKCkudHlwZX1dIFJlLWV2YWx1YXRpbmcgZXhwcmVzc2lvbnMgYWZ0ZXIgaW5pdGlhbCByZW5kZXJgKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKTtcbiAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmUtZXZhbHVhdGUgdmlzaWJpbGl0eSBhZnRlciBpbml0aWFsIHJlbmRlclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XG5cbiAgICAgIC8vIFByb2Nlc3MgYW55IGJ1ZmZlcmVkIHByZS1yZW5kZXIgY29udGV4dCBjaGFuZ2VzIG5vdyB0aGF0IHRoZSBjb21wb25lbnQgaXMgcmVhZHlcbiAgICAgIGlmICh0aGlzLnByZVJlbmRlckNvbnRleHRRdWV1ZS5zaXplID4gMCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgLy8gICBg8J+agCBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUHJvY2Vzc2luZyAke3RoaXMucHJlUmVuZGVyQ29udGV4dFF1ZXVlLnNpemV9IGJ1ZmZlcmVkIHByZS1yZW5kZXIgY2hhbmdlc2AsXG4gICAgICAgIC8vICk7XG4gICAgICAgIHRoaXMucHJlUmVuZGVyQ29udGV4dFF1ZXVlLmZvckVhY2goKHApID0+IHRoaXMuY29udGV4dFVwZGF0ZVF1ZXVlLmFkZChwKSk7XG4gICAgICAgIHRoaXMucHJlUmVuZGVyQ29udGV4dFF1ZXVlLmNsZWFyKCk7XG4gICAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc0JhdGNoZWRVcGRhdGVzKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY29tcG9uZW50OicsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5T3B0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5tZXJnZWRPcHRpb25zKCk7XG5cbiAgICAvLyBDaGVjayBpZiBvcHRpb25zIGhhdmUgYWN0dWFsbHkgY2hhbmdlZFxuICAgIGlmICh0aGlzLmhhc09wdGlvbnNDaGFuZ2VkKGN1cnJlbnRPcHRpb25zKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2FwcGx5T3B0aW9ucycsIHRoaXMubm9kZSgpLnBhdGgsICctIG9wdGlvbnMgY2hhbmdlZCcpO1xuICAgICAgdGhpcy5fb3B0aW9ucy51cGRhdGUoKHZhbCkgPT4gKHsgLi4udmFsLCAuLi5jdXJyZW50T3B0aW9ucyB9KSk7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldE9wdGlvbnMoY3VycmVudE9wdGlvbnMpO1xuICAgICAgdGhpcy5sYXN0QXBwbGllZE9wdGlvbnMgPSBjbG9uZURlZXAoY3VycmVudE9wdGlvbnMpOyAvLyBEZWVwIGNsb25lIHVzaW5nIExvZGFzaFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnYXBwbHlPcHRpb25zJywgdGhpcy5ub2RlKCkucGF0aCwgJy0gbm8gY2hhbmdlcywgc2tpcHBpbmcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhc09wdGlvbnNDaGFuZ2VkKG5ld09wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5sYXN0QXBwbGllZE9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBGaXJzdCB0aW1lLCBhbHdheXMgYXBwbHlcbiAgICB9XG5cbiAgICAvLyBEZWVwIGNvbXBhcmlzb24gb2Ygb3B0aW9ucyB1c2luZyBMb2Rhc2ggaXNFcXVhbFxuICAgIHJldHVybiAhaXNFcXVhbChuZXdPcHRpb25zLCB0aGlzLmxhc3RBcHBsaWVkT3B0aW9ucyk7XG4gIH1cblxuICAvLyBSZW1vdmVkIGRlZXBDbG9uZVZhbHVlIG1ldGhvZCAtIG5vdyB1c2luZyBMb2Rhc2ggY2xvbmVEZWVwXG5cbiAgcHJpdmF0ZSBjaGVja0Zvcm11bGFGb3JVcGRhdGUoZm9ybXVsYTogc3RyaW5nIHwgdW5kZWZpbmVkLCBwYXRoPzogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmIChmb3JtdWxhKSB7XG4gICAgICBjb25zdCByZWdleCA9IC9jb250ZXh0XFwuZXZhbFxcKCcoW14nXSspJ1xcKS9nO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGZvcm11bGEubWF0Y2gocmVnZXgpO1xuICAgICAgY29uc3Qgbm9kZXMgPSBtYXRjaGVzID8gbWF0Y2hlcy5tYXAoKG1hdGNoOiBhbnkpID0+IG1hdGNoLm1hdGNoKC8nKFteJ10rKScvKVsxXSkgOiBbXTtcbiAgICAgIHJldHVybiBub2Rlcy5pbmNsdWRlcyhwYXRoKTtcbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKG9iajogYW55LCBwYXRoUHJlZml4OiBzdHJpbmcgPSAnJyk6IHZvaWQge1xuICAgIGlmICghb2JqKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIE9iamVjdC5lbnRyaWVzKG9iaikuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGhQcmVmaXggPyBgJHtwYXRoUHJlZml4fS4ke2tleX1gIDoga2V5O1xuXG4gICAgICAvLyBDUklUSUNBTCBGSVg6IFNraXAgdHJpZ2dlciBhY3Rpb25zIGR1cmluZyBvcHRpb25zIHByb2Nlc3NpbmdcbiAgICAgIC8vXG4gICAgICAvLyBQUk9CTEVNOiBUcmlnZ2VyIGFjdGlvbnMgd2VyZSBiZWluZyBldmFsdWF0ZWQgaW1tZWRpYXRlbHkgZHVyaW5nIHdpZGdldCBzZXR1cC9vcHRpb25zIHByb2Nlc3NpbmcsXG4gICAgICAvLyBjYXVzaW5nIHRoZW0gdG8gZXhlY3V0ZSBiZWZvcmUgdGhlIGFjdHVhbCB0cmlnZ2VyIGV2ZW50IG9jY3VycmVkLiBUaGlzIG1lYW50IHRyaWdnZXJzIHdvdWxkIGZpcmVcbiAgICAgIC8vIGR1cmluZyBpbml0aWFsaXphdGlvbiBpbnN0ZWFkIG9mIHdoZW4gdGhlIHNwZWNpZmllZCBjb250ZXh0IHBhdGggYWN0dWFsbHkgY2hhbmdlZC5cbiAgICAgIC8vXG4gICAgICAvLyBST09UIENBVVNFOiBUaGUgZXhwcmVzc2lvbiBldmFsdWF0b3Igd2FzIHByb2Nlc3NpbmcgdHJpZ2dlciBhY3Rpb24gZXhwcmVzc2lvbnMgKGxpa2UgY29uc29sZS5sb2dcbiAgICAgIC8vIG9yIHdpZGdldC5zZXRWYWx1ZSBjYWxscykgYXMgcGFydCBvZiB0aGUgbm9ybWFsIG9wdGlvbnMgcHJlcHJvY2Vzc2luZywgdHJlYXRpbmcgdGhlbSBhcyBkeW5hbWljXG4gICAgICAvLyBleHByZXNzaW9ucyB0aGF0IG5lZWRlZCBpbW1lZGlhdGUgZXZhbHVhdGlvbi5cbiAgICAgIC8vXG4gICAgICAvLyBTT0xVVElPTjogRGV0ZWN0IHdoZW4gd2UncmUgcHJvY2Vzc2luZyB0cmlnZ2VyIGFjdGlvbnMgYW5kIHN0b3JlIHRoZW0gYXMgc3RhdGljIHZhbHVlcyB3aXRob3V0XG4gICAgICAvLyBleHByZXNzaW9uIGV2YWx1YXRpb24uIFRoaXMgZW5zdXJlcyB0cmlnZ2VyIGFjdGlvbnMgYXJlIG9ubHkgZXZhbHVhdGVkIHdoZW4gdGhlIHRyaWdnZXInc1xuICAgICAgLy8gc3Vic2NyaXB0aW9uIGNhbGxiYWNrIGFjdHVhbGx5IGZpcmVzICh3aGVuIHRoZSBldmVudCBjb25kaXRpb24gaXMgbWV0KS5cbiAgICAgIC8vXG4gICAgICAvLyBSRVNVTFQ6IFRyaWdnZXJzIG5vdyBvbmx5IGV4ZWN1dGUgd2hlbiB0aGVpciBldmVudCBmaWx0ZXJzIHBhc3MgKGUuZy4sIHdoZW4gdGhlIHNwZWNpZmllZFxuICAgICAgLy8gY29udGV4dCBwYXRoIGNoYW5nZXMpLCBub3QgZHVyaW5nIHdpZGdldCBpbml0aWFsaXphdGlvbi5cbiAgICAgIGlmIChjdXJyZW50UGF0aC5pbmNsdWRlcygndHJpZ2dlcnMnKSAmJiAoa2V5ID09PSAnYWN0aW9uJyB8fCBjdXJyZW50UGF0aC5lbmRzV2l0aCgnLmFjdGlvbicpKSkge1xuICAgICAgICAvLyBBcHBseSBzdGF0aWMgdmFsdWVzIGRpcmVjdGx5IHdpdGhvdXQgZXhwcmVzc2lvbiBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcbiAgICAgICAgLy8gQ2FjaGUgZHluYW1pYyBleHByZXNzaW9uIGZvciBsYXRlciBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2V0KGN1cnJlbnRQYXRoLCAoKSA9PiB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbih2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAodmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkIG9iamVjdHNcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnModmFsdWUsIGN1cnJlbnRQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFwcGx5IHN0YXRpYyB2YWx1ZXMgZGlyZWN0bHlcbiAgICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgoY3VycmVudE9wdGlvbnMpID0+IHtcbiAgICAgICAgICByZXR1cm4gc2V0KGN1cnJlbnRPcHRpb25zLCBjdXJyZW50UGF0aCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpIHtcbiAgICAvLyBFYXJseSByZXR1cm4gaWYgbm8gZXhwcmVzc2lvbnMgdG8gZXZhbHVhdGVcbiAgICBpZiAodGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zaXplID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRXZhbHVhdGluZyAke3RoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2l6ZX0gZXhwcmVzc2lvbnNgKTtcblxuICAgIGNvbnN0IHVwZGF0ZVByb21pc2VzID0gQXJyYXkuZnJvbSh0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzKS5tYXAoYXN5bmMgKFtwYXRoLCBldmFsdWF0b3JdKSA9PiB7XG4gICAgICAvLyBDaGVjayBjYWNoZSBmaXJzdFxuICAgICAgY29uc3QgY2FjaGVkVmFsdWUgPSB0aGlzLmdldENhY2hlZEV4cHJlc3Npb25SZXN1bHQocGF0aCk7XG4gICAgICBpZiAoY2FjaGVkVmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCfkr4gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFVzaW5nIGNhY2hlZCBleHByZXNzaW9uIHJlc3VsdCBmb3IgJyR7cGF0aH0nYCk7XG4gICAgICAgIHJldHVybiB7IHBhdGgsIG5ld1ZhbHVlOiBjYWNoZWRWYWx1ZSwgZnJvbUNhY2hlOiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEV2YWx1YXRlIGV4cHJlc3Npb24gaWYgbm90IGNhY2hlZFxuICAgICAgY29uc3QgZXZhbFN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBhd2FpdCBldmFsdWF0b3IoKTtcbiAgICAgIGNvbnN0IGV2YWxUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSBldmFsU3RhcnRUaW1lO1xuXG4gICAgICAvLyBDaGVjayBpZiByZXN1bHQgaGFzIGFjdHVhbGx5IGNoYW5nZWQgdXNpbmcgTG9kYXNoIGlzRXF1YWxcbiAgICAgIGNvbnN0IGxhc3RWYWx1ZSA9IHRoaXMubGFzdEV4cHJlc3Npb25SZXN1bHRzLmdldChwYXRoKTtcbiAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSAhaXNFcXVhbChuZXdWYWx1ZSwgbGFzdFZhbHVlKTtcblxuICAgICAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgIC8vICAgYPCfk50gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEV4cHJlc3Npb24gJyR7cGF0aH0nIGV2YWx1YXRlZCBpbiAke2V2YWxUaW1lLnRvRml4ZWQoMil9bXMgLSB2YWx1ZSBjaGFuZ2VkYCxcbiAgICAgICAgLy8gKTtcbiAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdCBhbmQgdHJhY2sgaXRcbiAgICAgICAgdGhpcy5zZXRDYWNoZWRFeHByZXNzaW9uUmVzdWx0KHBhdGgsIG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy5sYXN0RXhwcmVzc2lvblJlc3VsdHMuc2V0KHBhdGgsIGNsb25lRGVlcChuZXdWYWx1ZSkpO1xuICAgICAgICByZXR1cm4geyBwYXRoLCBuZXdWYWx1ZSwgZnJvbUNhY2hlOiBmYWxzZSwgaGFzQ2hhbmdlZDogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgIC8vICAgYPCfk50gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEV4cHJlc3Npb24gJyR7cGF0aH0nIGV2YWx1YXRlZCBpbiAke2V2YWxUaW1lLnRvRml4ZWQoMil9bXMgLSB2YWx1ZSB1bmNoYW5nZWQsIHNraXBwaW5nIHVwZGF0ZWAsXG4gICAgICAgIC8vICk7XG4gICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQgYnV0IGRvbid0IHVwZGF0ZVxuICAgICAgICB0aGlzLnNldENhY2hlZEV4cHJlc3Npb25SZXN1bHQocGF0aCwgbmV3VmFsdWUpO1xuICAgICAgICB0aGlzLmxhc3RFeHByZXNzaW9uUmVzdWx0cy5zZXQocGF0aCwgY2xvbmVEZWVwKG5ld1ZhbHVlKSk7XG4gICAgICAgIHJldHVybiB7IHBhdGgsIG5ld1ZhbHVlLCBmcm9tQ2FjaGU6IGZhbHNlLCBoYXNDaGFuZ2VkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gV2FpdCBmb3IgYWxsIGV2YWx1YXRvcnMgdG8gY29tcGxldGVcbiAgICBjb25zdCB1cGRhdGVzID0gYXdhaXQgUHJvbWlzZS5hbGwodXBkYXRlUHJvbWlzZXMpO1xuXG4gICAgLy8gRmlsdGVyIHVwZGF0ZXMgdG8gb25seSBpbmNsdWRlIHRob3NlIHRoYXQgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgY29uc3QgY2hhbmdlZFVwZGF0ZXMgPSB1cGRhdGVzLmZpbHRlcigodXBkYXRlKSA9PiB1cGRhdGUuaGFzQ2hhbmdlZCAhPT0gZmFsc2UpO1xuXG4gICAgLy8gQXBwbHkgdXBkYXRlcyB0byBtZXJnZWRPcHRpb25zIG9ubHkgZm9yIGNoYW5nZWQgdmFsdWVzXG4gICAgaWYgKGNoYW5nZWRVcGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKG8pID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB7IC4uLm8gfTtcbiAgICAgICAgY2hhbmdlZFVwZGF0ZXMuZm9yRWFjaCgoeyBwYXRoLCBuZXdWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgc2V0KHVwZGF0ZWRPcHRpb25zLCBwYXRoLCBuZXdWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdXBkYXRlZE9wdGlvbnM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZUhpdHMgPSB1cGRhdGVzLmZpbHRlcigodXBkYXRlKSA9PiB1cGRhdGUuZnJvbUNhY2hlKS5sZW5ndGg7XG4gICAgY29uc3Qgc2tpcHBlZFVwZGF0ZXMgPSB1cGRhdGVzLmxlbmd0aCAtIGNoYW5nZWRVcGRhdGVzLmxlbmd0aDtcblxuICAgIC8vIGNvbnNvbGUubG9nKFxuICAgIC8vICAgYPCfk4sgWyR7dGhpcy5ub2RlKCkudHlwZX1dIEFwcGxpZWQgJHtjaGFuZ2VkVXBkYXRlcy5sZW5ndGh9IGV4cHJlc3Npb24gdXBkYXRlcyAoJHtjYWNoZUhpdHN9IGNhY2hlIGhpdHMsICR7c2tpcHBlZFVwZGF0ZXN9IHNraXBwZWQpYCxcbiAgICAvLyApO1xuICAgIHJldHVybiBjaGFuZ2VkVXBkYXRlcy5sZW5ndGg7XG4gIH1cblxuICBhc3luYyB1cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCkge1xuICAgIGlmICh0aGlzLm5vZGUoKS5mb3JtdWxhKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKHRoaXMubm9kZSgpLmZvcm11bGEhKTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZpc2liaWxpdHkoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIGNvbnN0IHZpc2liaWxpdHkgPSBub2RlLm9wdGlvbnM/LlsndmlzaWJsZSddIHx8IHRoaXMubWVyZ2VkT3B0aW9ucygpPy52aXNpYmxlO1xuXG4gICAgaWYgKHZpc2liaWxpdHkgPT09IHVuZGVmaW5lZCB8fCB2aXNpYmlsaXR5ID09PSBudWxsKSB7XG4gICAgICAvLyBEZWZhdWx0IHRvIHZpc2libGUgaWYgbm8gdmlzaWJpbGl0eSBvcHRpb24gaXMgc2V0XG4gICAgICB0aGlzLnNob3coKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2hvdWxkQmVWaXNpYmxlOiBib29sZWFuO1xuXG4gICAgaWYgKHR5cGVvZiB2aXNpYmlsaXR5ID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHNob3VsZEJlVmlzaWJsZSA9IHZpc2liaWxpdHk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmlzaWJpbGl0eSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbih2aXNpYmlsaXR5KSkge1xuICAgICAgLy8gRXZhbHVhdGUgZXhwcmVzc2lvbiBmb3IgdmlzaWJpbGl0eVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmlzaWJpbGl0eSk7XG4gICAgICAgIHNob3VsZEJlVmlzaWJsZSA9IEJvb2xlYW4ocmVzdWx0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgdmlzaWJpbGl0eSBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICAgICAgc2hvdWxkQmVWaXNpYmxlID0gdHJ1ZTsgLy8gRGVmYXVsdCB0byB2aXNpYmxlIG9uIGVycm9yXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyZWF0IG90aGVyIHZhbHVlcyBhcyB0cnV0aHkvZmFsc3lcbiAgICAgIHNob3VsZEJlVmlzaWJsZSA9IEJvb2xlYW4odmlzaWJpbGl0eSk7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZEJlVmlzaWJsZSkge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdygpIHtcbiAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKCkpIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlLnNldCh0cnVlKTtcbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAmJiB0aGlzLmNvbXBvbmVudFJlZi5sb2NhdGlvbikge1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMuaXNWaXNpYmxlKCkpIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgJiYgdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24pIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVFeHByZXNzaW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmJ1aWxkRXhwcmVzc2lvblNjb3BlKCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKHRlbXBsYXRlRXhwcmVzc2lvbiwgc2NvcGUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRFeHByZXNzaW9uU2NvcGUoKTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGV4dDogdGhpcy5nZXRDb250ZXh0U2NvcGUoKSxcbiAgICAgIGV2ZW50czogdGhpcy5nZXRFdmVudFNjb3BlKCksXG4gICAgICB3aWRnZXQ6IHRoaXMuZ2V0V2lkZ2V0U2NvcGUoKSxcbiAgICAgIG1ldGhvZHM6IHRoaXMuZ2V0RnVuY3Rpb25TY29wZSgpLFxuICAgICAgdmFyczogdGhpcy5nZXRWYXJpYWJsZXNTY29wZSgpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHRTY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZXZhbDogKHBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICAvL1RPRE86IEhhbmRsZSBhcnJheSBpbmRleFxuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguc3RhcnRzV2l0aCgnPicpID8gYCR7dGhpcy5pbnN0YW5jZT8ucGFyZW50UGF0aCgpfS4ke3BhdGguc3Vic3RyaW5nKDEpfWAgOiBwYXRoO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0VmFsdWUoZnVsbFBhdGgpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9LFxuICAgICAgc2V0OiAocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHBhdGgsIHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBkYXRhOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLmRhdGEoKTtcbiAgICAgIH0sXG4gICAgICBpc0RpcnR5OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLmlzRGlydHkoKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXZlbnRTY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGV4dDogKHBhdGg/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub25Db250ZXh0Q2hhbmdlZC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoYykgPT4ge1xuICAgICAgICAgICAgLy8gSWYgbm8gcGF0aCBmaWx0ZXIgc3BlY2lmaWVkLCBwYXNzIGFsbCBldmVudHNcbiAgICAgICAgICAgIGlmIChwYXRoID09IG51bGwgfHwgcGF0aCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFbnN1cmUgYy5wYXRoIGV4aXN0c1xuICAgICAgICAgICAgaWYgKCFjLnBhdGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUGF0dGVybjogXCJwcmVmaXgqXCIgLSBtYXRjaGVzIHBhdGhzIHRoYXQgc3RhcnQgd2l0aCBwcmVmaXhcbiAgICAgICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGMucGF0aC5zdGFydHNXaXRoKHByZWZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQYXR0ZXJuOiBcIipzdWZmaXhcIiAtIG1hdGNoZXMgcGF0aHMgdGhhdCBlbmQgd2l0aCBzdWZmaXhcbiAgICAgICAgICAgIGVsc2UgaWYgKHBhdGguc3RhcnRzV2l0aCgnKicpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IHBhdGguc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgICByZXR1cm4gYy5wYXRoLmVuZHNXaXRoKHN1ZmZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFeGFjdCBtYXRjaFxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBjLnBhdGggPT09IHBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZnJvbTogKGV2ZW50OiBzdHJpbmcpID0+IGdldCh0aGlzLmluc3RhbmNlLmFwaSgpLCBldmVudCksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0V2lkZ2V0U2NvcGUoKTogeyBbbmFtZTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNhbGw6IChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuY2FsbChuYW1lLCAuLi5hcmdzKTtcbiAgICAgIH0sXG4gICAgICBzZXRWYWx1ZTogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgY2xlYXI6ICgpID0+IHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zZXRWYWx1ZSh1bmRlZmluZWQpO1xuICAgICAgfSxcbiAgICAgIHJlZnJlc2g6ICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVmcmVzaCA9ICh0aGlzLmluc3RhbmNlIGFzIGFueSk/LlsncmVmcmVzaCddO1xuICAgICAgICBpZiAocmVmcmVzaCAmJiB0eXBlb2YgcmVmcmVzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHJlZnJlc2guYmluZCh0aGlzLmluc3RhbmNlKSgpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3V0cHV0OiAobmFtZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2Uub3V0cHV0KG5hbWUpO1xuICAgICAgfSxcbiAgICAgIGZpbmQ6IChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLmdldFdpZGdldChpZCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEZ1bmN0aW9uU2NvcGUoKTogeyBbbmFtZTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgY29uc3Qgc2NvcGU6IHsgW25hbWU6IHN0cmluZ106IEZ1bmN0aW9uIH0gPSB7XG4gICAgICBzdW06ICh2YWx1ZXM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gc3VtKHZhbHVlcyk7XG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRlOiAodGV4dDogc3RyaW5nLCBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmModGV4dCwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgd2lkZ2V0SW5mbzogKG5hbWU6IHN0cmluZyk6IEFYUFdpZGdldENvbmZpZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFNlcnZpY2UucmVzb2x2ZShuYW1lKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIEFkZCBjdXN0b20gZnVuY3Rpb25zIGZyb20gYnVpbGRlciBzZXJ2aWNlXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5idWlsZGVyU2VydmljZS5mdW5jdGlvbnMpLmZvckVhY2goKFtrZXksIGZuXSkgPT4ge1xuICAgICAgc2NvcGVba2V5XSA9ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXJpYWJsZXNTY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZXZhbDogKHBhdGg6IHN0cmluZykgPT4gZ2V0KHRoaXMuYnVpbGRlclNlcnZpY2UudmFyaWFibGVzLCBwYXRoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhc3NpZ25UcmlnZ2VycygpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgLy8gQ2hlY2sgbXVsdGlwbGUgcG9zc2libGUgbG9jYXRpb25zIGZvciB0cmlnZ2Vyc1xuICAgIGNvbnN0IHRyaWdnZXJzID0gbm9kZS50cmlnZ2VycyB8fCBub2RlLm9wdGlvbnM/LlsndHJpZ2dlcnMnXSB8fCB0aGlzLm1lcmdlZE9wdGlvbnMoKT8udHJpZ2dlcnM7XG5cbiAgICBpZiAoIXRyaWdnZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIHRyaWdnZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBldmVudCA9IGF3YWl0IHRoaXMuZXZhbHVhdGVUcmlnZ2VyKHRyaWdnZXIuZXZlbnQpO1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICBldmVudC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGVjID0gYXN5bmMgKGFjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaXNFbXB0eShhY3Rpb24pICYmIGlzU3RyaW5nKGFjdGlvbikpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2YWx1YXRlQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gQXJyYXkuaXNBcnJheSh0cmlnZ2VyLmFjdGlvbikgPyB0cmlnZ2VyLmFjdGlvbiA6IFt0cmlnZ2VyLmFjdGlvbl07XG4gICAgICAgICAgICBhY3Rpb25zLmZvckVhY2goYXN5bmMgKGE6IHN0cmluZykgPT4gYXdhaXQgZXhlYyhhKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFzc2lnbmluZyB0cmlnZ2VyOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlVHJpZ2dlcih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8T2JzZXJ2YWJsZTxhbnk+IHwgbnVsbD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuYnVpbGRFeHByZXNzaW9uU2NvcGUoKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsdWF0ZSh0ZW1wbGF0ZUV4cHJlc3Npb24sIHNjb3BlKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgcmVzdWx0IGlzIGFuIE9ic2VydmFibGVcbiAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIHRyaWdnZXIgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlQWN0aW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5idWlsZEV4cHJlc3Npb25TY29wZSgpO1xuICAgICAgYXdhaXQgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKHRlbXBsYXRlRXhwcmVzc2lvbiwgc2NvcGUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGFjdGlvbiBleHByZXNzaW9uOicsIHRlbXBsYXRlRXhwcmVzc2lvbiwgZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIl19","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { Inject, NgModule, Optional } from '@angular/core';\nimport { AXPWidgetColumnRendererComponent } from './widget-column-renderer';\nimport { AXPWidgetContainerComponent } from './widget-container.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetRendererDirective } from './widget-renderer.directive';\nimport * as i0 from \"@angular/core\";\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];\nexport class AXPWidgetCoreModule {\n static forRoot(config) {\n return {\n ngModule: AXPWidgetCoreModule,\n providers: [\n {\n provide: 'AXPWidgetCoreModuleFactory',\n useFactory: (registry) => async () => {\n await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);\n await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);\n },\n deps: [AXPWidgetRegistryService],\n multi: true,\n },\n ],\n };\n }\n static forChild(config) {\n return {\n ngModule: AXPWidgetCoreModule,\n providers: [\n {\n provide: 'AXPWidgetCoreModuleFactory',\n useFactory: (registry) => async () => {\n await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);\n await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);\n },\n deps: [AXPWidgetRegistryService],\n multi: true,\n },\n ],\n };\n }\n /**\n * @ignore\n */\n constructor(instances) {\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreModule, deps: [{ token: 'AXPWidgetCoreModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreModule, imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule],\n exports: [...COMPONENTS],\n declarations: [...COMPONENTS],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['AXPWidgetCoreModuleFactory']\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQtY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVF6RSxNQUFNLFVBQVUsR0FBRyxDQUFDLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFPL0csTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW1DO1FBQ2hELE9BQU87WUFDTCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsNEJBQTRCO29CQUNyQyxVQUFVLEVBQUUsQ0FBQyxRQUFrQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTt3QkFDN0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUU1RixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUN2RyxDQUFDO29CQUNKLENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsd0JBQXdCLENBQUM7b0JBQ2hDLEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBbUM7UUFDakQsT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSw0QkFBNEI7b0JBQ3JDLFVBQVUsRUFBRSxDQUFDLFFBQWtDLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFO3dCQUM3RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7d0JBRTVGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ3ZHLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxJQUFJLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDaEMsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUE4RCxTQUFnQjtRQUM1RSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBaERVLG1CQUFtQixrQkE0Q0UsNEJBQTRCO2dIQTVDakQsbUJBQW1CLGlCQVBaLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLDBCQUEwQixhQUdqRyxZQUFZLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsYUFIdkUsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsMEJBQTBCO2dIQU9oRyxtQkFBbUIsWUFKcEIsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsbUJBQW1COzs0RkFJOUUsbUJBQW1CO2tCQUwvQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUMxRixPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztvQkFDeEIsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQzlCOzswQkE2Q2MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldENvbHVtblJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtY29sdW1uLXJlbmRlcmVyJztcbmltcG9ydCB7IEFYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtcmVnaXN0ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmUgfSBmcm9tICcuL3dpZGdldC1yZW5kZXJlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29uZmlnLCBleHRlbmRlZFdpZGdldCB9IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb3JlTW9kdWxlQ29uZmlncyB7XG4gIHdpZGdldHM/OiBBWFBXaWRnZXRDb25maWdbXTtcbiAgZXh0ZW5kZWRXaWRnZXRzPzogZXh0ZW5kZWRXaWRnZXRbXTtcbn1cblxuY29uc3QgQ09NUE9ORU5UUyA9IFtBWFBXaWRnZXRDb250YWluZXJDb21wb25lbnQsIEFYUFdpZGdldENvbHVtblJlbmRlcmVyQ29tcG9uZW50LCBBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZV07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFBvcnRhbE1vZHVsZSwgQVhTa2VsZXRvbk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uTW9kdWxlXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVFNdLFxuICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRTXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29yZU1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEFYUFdpZGdldENvcmVNb2R1bGVDb25maWdzKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWFBXaWRnZXRDb3JlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhQV2lkZ2V0Q29yZU1vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChjb25maWc/LndpZGdldHM/Lm1hcCgodykgPT4gUHJvbWlzZS5yZXNvbHZlKHJlZ2lzdHJ5LnJlZ2lzdGVyKHcpKSkgfHwgW10pO1xuXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY29uZmlnPy5leHRlbmRlZFdpZGdldHM/Lm1hcCgoZXcpID0+IFByb21pc2UucmVzb2x2ZShyZWdpc3RyeS5leHRlbmQoZXcucGFyZW50TmFtZSwgZXcud2lkZ2V0KSkpIHx8IFtdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZvckNoaWxkKGNvbmZpZz86IEFYUFdpZGdldENvcmVNb2R1bGVDb25maWdzKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWFBXaWRnZXRDb3JlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhQV2lkZ2V0Q29yZU1vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChjb25maWc/LndpZGdldHM/Lm1hcCgodykgPT4gUHJvbWlzZS5yZXNvbHZlKHJlZ2lzdHJ5LnJlZ2lzdGVyKHcpKSkgfHwgW10pO1xuXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY29uZmlnPy5leHRlbmRlZFdpZGdldHM/Lm1hcCgoZXcpID0+IFByb21pc2UucmVzb2x2ZShyZWdpc3RyeS5leHRlbmQoZXcucGFyZW50TmFtZSwgZXcud2lkZ2V0KSkpIHx8IFtdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoJ0FYUFdpZGdldENvcmVNb2R1bGVGYWN0b3J5JykgaW5zdGFuY2VzOiBhbnlbXSkge1xuICAgIGluc3RhbmNlcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgZigpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","export class AXPPropertyEditorHelper {\n static expandShorthand(values) {\n switch (values.length) {\n case 1:\n return [values[0], values[0], values[0], values[0]];\n case 2:\n return [values[0], values[1], values[0], values[1]];\n case 3:\n return [values[0], values[1], values[2], values[1]];\n case 4:\n return values;\n default:\n throw new Error(`Invalid shorthand value count. Input: ${values}`);\n }\n }\n static condenseShorthand(values) {\n if (values.length !== 4) {\n throw new Error('Expected 4 values for condensation.');\n }\n if (values[0] === values[1] && values[1] === values[2] && values[2] === values[3]) {\n return `${values[0]}`;\n }\n else if (values[0] === values[2] && values[1] === values[3]) {\n return `${values[0]} ${values[1]}`;\n }\n else if (values[1] === values[3]) {\n return `${values[0]} ${values[1]} ${values[2]}`;\n }\n else {\n return `${values[0]} ${values[1]} ${values[2]} ${values[3]}`;\n }\n }\n static parseSides(input) {\n const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n return { top: values[0], right: values[1], bottom: values[2], left: values[3] };\n }\n static parseSidesWithUnits(input) {\n const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n return {\n top: AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n right: AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n bottom: AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n left: AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n };\n }\n static parseCorners(input) {\n const values = this.expandShorthand(input.split(' ').map((value) => value.trim()));\n return {\n 'top-left': AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n 'top-right': AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n 'bottom-left': AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n 'bottom-right': AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n };\n }\n static parseSpacingBox(input) {\n return {\n margin: this.parseSidesWithUnits(input.margin),\n padding: this.parseSidesWithUnits(input.padding),\n };\n }\n static parseBorderBox(input) {\n return {\n width: this.parseSidesWithUnits(input.width),\n radius: this.parseCorners(input.radius),\n color: this.parseSides(input.color),\n style: this.parseSides(input.style),\n };\n }\n static parseSpacingBoxReverse(input, units) {\n const format = (value, unit) => `${value}${unit}`;\n return {\n margin: AXPPropertyEditorHelper.condenseShorthand([\n format(input.margin.top, units.margin.top),\n format(input.margin.right, units.margin.right),\n format(input.margin.bottom, units.margin.bottom),\n format(input.margin.left, units.margin.left),\n ]),\n padding: AXPPropertyEditorHelper.condenseShorthand([\n format(input.padding.top, units.padding.top),\n format(input.padding.right, units.padding.right),\n format(input.padding.bottom, units.padding.bottom),\n format(input.padding.left, units.padding.left),\n ]),\n };\n }\n static parseBorderBoxReverse(input, units) {\n const format = (value, unit) => `${value}${unit}`;\n return {\n width: AXPPropertyEditorHelper.condenseShorthand([\n format(input.width.top, units.width.top),\n format(input.width.right, units.width.right),\n format(input.width.bottom, units.width.bottom),\n format(input.width.left, units.width.left),\n ]),\n radius: AXPPropertyEditorHelper.condenseShorthand([\n format(input.radius['top-left'], units.radius['top-left']),\n format(input.radius['top-right'], units.radius['top-right']),\n format(input.radius['bottom-right'], units.radius['bottom-right']),\n format(input.radius['bottom-left'], units.radius['bottom-left']),\n ]),\n color: AXPPropertyEditorHelper.condenseShorthand([\n `${input.color.top}${units.color.top}`,\n `${input.color.right}${units.color.right}`,\n `${input.color.bottom}${units.color.bottom}`,\n `${input.color.left}${units.color.left}`,\n ]),\n style: AXPPropertyEditorHelper.condenseShorthand([\n `${input.style.top}${units.style.top}`,\n `${input.style.right}${units.style.right}`,\n `${input.style.bottom}${units.style.bottom}`,\n `${input.style.left}${units.style.left}`,\n ]),\n };\n }\n static getValueWithUnit(input) {\n if (typeof input === 'number')\n return { value: input, unit: 'px' };\n if (input === 'auto')\n return { value: 0, unit: 'px' };\n const match = input.match(/^([0-9.]+)([a-z%]*)$/i);\n if (!match)\n throw new Error(`Invalid unit format: ${input}`);\n return { value: parseFloat(match[1]), unit: match[2] || '' };\n }\n static getValueFromUnit(value, unit) {\n return unit ? `${value}${unit}` : `${value}`;\n }\n static parseGap(gap) {\n const parts = gap.split(/\\s+/);\n const match = parts[0].match(/^(\\d+\\.?\\d*)([a-z%]+)$/);\n if (!match) {\n throw new Error('Invalid gap format');\n }\n const [, xValue, unit] = match;\n let yValue = parseFloat(xValue);\n if (parts.length === 2) {\n const secondMatch = parts[1].match(/^(\\d+\\.?\\d*)[a-z%]+$/);\n if (!secondMatch) {\n throw new Error('Invalid gap format');\n }\n yValue = parseFloat(secondMatch[1]);\n }\n return {\n values: {\n x: parseFloat(xValue),\n y: yValue,\n },\n unit,\n };\n }\n static parseGridTemplate(gridTemplate) {\n const match = gridTemplate.match(/^repeat\\((\\d+),\\s*(?:1fr|auto|minmax\\([^)]*\\))\\)$/);\n if (!match) {\n throw new Error(\"Invalid grid template format. Expected 'repeat(N, 1fr|auto|minmax(...))'.\");\n }\n return parseInt(match[1], 10);\n }\n static createGridTemplate(repetitionCount) {\n if (repetitionCount <= 0) {\n throw new Error('Repetition count must be a positive integer.');\n }\n return `repeat(${repetitionCount}, 1fr)`;\n }\n}\nexport function findNonEmptyBreakpoints(values) {\n const breakpoints = ['default', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'];\n const nonEmptyBreakpoints = [];\n for (const breakpoint of breakpoints) {\n if (values[breakpoint] !== undefined) {\n nonEmptyBreakpoints.push(breakpoint);\n }\n }\n return nonEmptyBreakpoints;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvaGVscGVyL3Byb3BlcnR5LWVkaXRvci5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxPQUFPLHVCQUF1QjtJQUMxQixNQUFNLENBQUMsZUFBZSxDQUFtQixNQUFXO1FBQzFELFFBQVEsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELEtBQUssQ0FBQztnQkFDSixPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFJLE1BQVc7UUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hC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Q0FBQztJQUVELE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYUEJvcmRlckJveCxcbiAgQVhQQm9yZGVyQm94U3RyaW5nLFxuICBBWFBCcmVha3BvaW50cyxcbiAgQVhQQnJlYWtwb2ludFZhbHVlcyxcbiAgQVhQUHJvcGVydHlDb3JuZXJzLFxuICBBWFBQcm9wZXJ0eVNpZGVzLFxuICBBWFBTcGFjaW5nQm94LFxuICBBWFBTcGFjaW5nQm94U3RyaW5nLFxufSBmcm9tICcuL3Byb3BlcnR5LWVkaXRvci50eXBlJztcblxuZXhwb3J0IGNsYXNzIEFYUFByb3BlcnR5RWRpdG9ySGVscGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZXhwYW5kU2hvcnRoYW5kPFQgZXh0ZW5kcyBzdHJpbmc+KHZhbHVlczogVFtdKTogVFtdIHtcbiAgICBzd2l0Y2ggKHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIFt2YWx1ZXNbMF0sIHZhbHVlc1swXSwgdmFsdWVzWzBdLCB2YWx1ZXNbMF1dO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gW3ZhbHVlc1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMF0sIHZhbHVlc1sxXV07XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiBbdmFsdWVzWzBdLCB2YWx1ZXNbMV0sIHZhbHVlc1syXSwgdmFsdWVzWzFdXTtcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzaG9ydGhhbmQgdmFsdWUgY291bnQuIElucHV0OiAke3ZhbHVlc31gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb25kZW5zZVNob3J0aGFuZDxUPih2YWx1ZXM6IFRbXSk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggIT09IDQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgNCB2YWx1ZXMgZm9yIGNvbmRlbnNhdGlvbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWVzWzBdID09PSB2YWx1ZXNbMV0gJiYgdmFsdWVzWzFdID09PSB2YWx1ZXNbMl0gJiYgdmFsdWVzWzJdID09PSB2YWx1ZXNbM10pIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZXNbMF19YDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlc1swXSA9PT0gdmFsdWVzWzJdICYmIHZhbHVlc1sxXSA9PT0gdmFsdWVzWzNdKSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWVzWzBdfSAke3ZhbHVlc1sxXX1gO1xuICAgIH0gZWxzZSBpZiAodmFsdWVzWzFdID09PSB2YWx1ZXNbM10pIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZXNbMF19ICR7dmFsdWVzWzFdfSAke3ZhbHVlc1syXX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWVzWzBdfSAke3ZhbHVlc1sxXX0gJHt2YWx1ZXNbMl19ICR7dmFsdWVzWzNdfWA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VTaWRlcyhpbnB1dDogc3RyaW5nKTogQVhQUHJvcGVydHlTaWRlcyB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5leHBhbmRTaG9ydGhhbmQoaW5wdXQubWF0Y2goLyg/OnJnYlxcKFteKV0rXFwpfFteIF0rKS9nKT8ubWFwKCh2YWx1ZSkgPT4gdmFsdWUudHJpbSgpKSB8fCBbXSk7XG4gICAgcmV0dXJuIHsgdG9wOiB2YWx1ZXNbMF0sIHJpZ2h0OiB2YWx1ZXNbMV0sIGJvdHRvbTogdmFsdWVzWzJdLCBsZWZ0OiB2YWx1ZXNbM10gfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlU2lkZXNXaXRoVW5pdHMoaW5wdXQ6IHN0cmluZyk6IEFYUFByb3BlcnR5U2lkZXM8bnVtYmVyPiB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5leHBhbmRTaG9ydGhhbmQoaW5wdXQubWF0Y2goLyg/OnJnYlxcKFteKV0rXFwpfFteIF0rKS9nKT8ubWFwKCh2YWx1ZSkgPT4gdmFsdWUudHJpbSgpKSB8fCBbXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvcDogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMF0pLnZhbHVlLFxuICAgICAgcmlnaHQ6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzFdKS52YWx1ZSxcbiAgICAgIGJvdHRvbTogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMl0pLnZhbHVlLFxuICAgICAgbGVmdDogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbM10pLnZhbHVlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUNvcm5lcnMoaW5wdXQ6IHN0cmluZyk6IEFYUFByb3BlcnR5Q29ybmVyczxudW1iZXI+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmV4cGFuZFNob3J0aGFuZChpbnB1dC5zcGxpdCgnICcpLm1hcCgodmFsdWUpID0+IHZhbHVlLnRyaW0oKSkpO1xuICAgIHJldHVybiB7XG4gICAgICAndG9wLWxlZnQnOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5nZXRWYWx1ZVdpdGhVbml0KHZhbHVlc1swXSkudmFsdWUsXG4gICAgICAndG9wLXJpZ2h0JzogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMV0pLnZhbHVlLFxuICAgICAgJ2JvdHRvbS1sZWZ0JzogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMl0pLnZhbHVlLFxuICAgICAgJ2JvdHRvbS1yaWdodCc6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzNdKS52YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZVNwYWNpbmdCb3goaW5wdXQ6IEFYUFNwYWNpbmdCb3hTdHJpbmcpOiBBWFBTcGFjaW5nQm94PG51bWJlcj4ge1xuICAgIHJldHVybiB7XG4gICAgICBtYXJnaW46IHRoaXMucGFyc2VTaWRlc1dpdGhVbml0cyhpbnB1dC5tYXJnaW4pLFxuICAgICAgcGFkZGluZzogdGhpcy5wYXJzZVNpZGVzV2l0aFVuaXRzKGlucHV0LnBhZGRpbmcpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHBhcnNlQm9yZGVyQm94KGlucHV0OiBBWFBCb3JkZXJCb3hTdHJpbmcpOiBBWFBCb3JkZXJCb3g8bnVtYmVyIHwgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB0aGlzLnBhcnNlU2lkZXNXaXRoVW5pdHMoaW5wdXQud2lkdGgpLFxuICAgICAgcmFkaXVzOiB0aGlzLnBhcnNlQ29ybmVycyhpbnB1dC5yYWRpdXMpLFxuICAgICAgY29sb3I6IHRoaXMucGFyc2VTaWRlcyhpbnB1dC5jb2xvciksXG4gICAgICBzdHlsZTogdGhpcy5wYXJzZVNpZGVzKGlucHV0LnN0eWxlKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZVNwYWNpbmdCb3hSZXZlcnNlKFxuICAgIGlucHV0OiBBWFBTcGFjaW5nQm94PG51bWJlcj4sXG4gICAgdW5pdHM6IEFYUFNwYWNpbmdCb3g8c3RyaW5nPixcbiAgKTogQVhQU3BhY2luZ0JveFN0cmluZyB7XG4gICAgY29uc3QgZm9ybWF0ID0gKHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZykgPT4gYCR7dmFsdWV9JHt1bml0fWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hcmdpbjogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuY29uZGVuc2VTaG9ydGhhbmQoW1xuICAgICAgICBmb3JtYXQoaW5wdXQubWFyZ2luLnRvcCwgdW5pdHMubWFyZ2luLnRvcCksXG4gICAgICAgIGZvcm1hdChpbnB1dC5tYXJnaW4ucmlnaHQsIHVuaXRzLm1hcmdpbi5yaWdodCksXG4gICAgICAgIGZvcm1hdChpbnB1dC5tYXJnaW4uYm90dG9tLCB1bml0cy5tYXJnaW4uYm90dG9tKSxcbiAgICAgICAgZm9ybWF0KGlucHV0Lm1hcmdpbi5sZWZ0LCB1bml0cy5tYXJnaW4ubGVmdCksXG4gICAgICBdKSxcbiAgICAgIHBhZGRpbmc6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgZm9ybWF0KGlucHV0LnBhZGRpbmcudG9wLCB1bml0cy5wYWRkaW5nLnRvcCksXG4gICAgICAgIGZvcm1hdChpbnB1dC5wYWRkaW5nLnJpZ2h0LCB1bml0cy5wYWRkaW5nLnJpZ2h0KSxcbiAgICAgICAgZm9ybWF0KGlucHV0LnBhZGRpbmcuYm90dG9tLCB1bml0cy5wYWRkaW5nLmJvdHRvbSksXG4gICAgICAgIGZvcm1hdChpbnB1dC5wYWRkaW5nLmxlZnQsIHVuaXRzLnBhZGRpbmcubGVmdCksXG4gICAgICBdKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUJvcmRlckJveFJldmVyc2UoXG4gICAgaW5wdXQ6IEFYUEJvcmRlckJveDxudW1iZXIgfCBzdHJpbmc+LFxuICAgIHVuaXRzOiBBWFBCb3JkZXJCb3g8c3RyaW5nPixcbiAgKTogQVhQQm9yZGVyQm94U3RyaW5nIHtcbiAgICBjb25zdCBmb3JtYXQgPSAodmFsdWU6IG51bWJlciB8IHN0cmluZywgdW5pdDogc3RyaW5nKSA9PiBgJHt2YWx1ZX0ke3VuaXR9YDtcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuY29uZGVuc2VTaG9ydGhhbmQoW1xuICAgICAgICBmb3JtYXQoaW5wdXQud2lkdGgudG9wLCB1bml0cy53aWR0aC50b3ApLFxuICAgICAgICBmb3JtYXQoaW5wdXQud2lkdGgucmlnaHQsIHVuaXRzLndpZHRoLnJpZ2h0KSxcbiAgICAgICAgZm9ybWF0KGlucHV0LndpZHRoLmJvdHRvbSwgdW5pdHMud2lkdGguYm90dG9tKSxcbiAgICAgICAgZm9ybWF0KGlucHV0LndpZHRoLmxlZnQsIHVuaXRzLndpZHRoLmxlZnQpLFxuICAgICAgXSksXG4gICAgICByYWRpdXM6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgZm9ybWF0KGlucHV0LnJhZGl1c1sndG9wLWxlZnQnXSwgdW5pdHMucmFkaXVzWyd0b3AtbGVmdCddKSxcbiAgICAgICAgZm9ybWF0KGlucHV0LnJhZGl1c1sndG9wLXJpZ2h0J10sIHVuaXRzLnJhZGl1c1sndG9wLXJpZ2h0J10pLFxuICAgICAgICBmb3JtYXQoaW5wdXQucmFkaXVzWydib3R0b20tcmlnaHQnXSwgdW5pdHMucmFkaXVzWydib3R0b20tcmlnaHQnXSksXG4gICAgICAgIGZvcm1hdChpbnB1dC5yYWRpdXNbJ2JvdHRvbS1sZWZ0J10sIHVuaXRzLnJhZGl1c1snYm90dG9tLWxlZnQnXSksXG4gICAgICBdKSxcbiAgICAgIGNvbG9yOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5jb25kZW5zZVNob3J0aGFuZChbXG4gICAgICAgIGAke2lucHV0LmNvbG9yLnRvcH0ke3VuaXRzLmNvbG9yLnRvcH1gLFxuICAgICAgICBgJHtpbnB1dC5jb2xvci5yaWdodH0ke3VuaXRzLmNvbG9yLnJpZ2h0fWAsXG4gICAgICAgIGAke2lucHV0LmNvbG9yLmJvdHRvbX0ke3VuaXRzLmNvbG9yLmJvdHRvbX1gLFxuICAgICAgICBgJHtpbnB1dC5jb2xvci5sZWZ0fSR7dW5pdHMuY29sb3IubGVmdH1gLFxuICAgICAgXSksXG4gICAgICBzdHlsZTogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuY29uZGVuc2VTaG9ydGhhbmQoW1xuICAgICAgICBgJHtpbnB1dC5zdHlsZS50b3B9JHt1bml0cy5zdHlsZS50b3B9YCxcbiAgICAgICAgYCR7aW5wdXQuc3R5bGUucmlnaHR9JHt1bml0cy5zdHlsZS5yaWdodH1gLFxuICAgICAgICBgJHtpbnB1dC5zdHlsZS5ib3R0b219JHt1bml0cy5zdHlsZS5ib3R0b219YCxcbiAgICAgICAgYCR7aW5wdXQuc3R5bGUubGVmdH0ke3VuaXRzLnN0eWxlLmxlZnR9YCxcbiAgICAgIF0pLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFZhbHVlV2l0aFVuaXQoaW5wdXQ6IHN0cmluZyB8IG51bWJlcik6IHsgdmFsdWU6IG51bWJlcjsgdW5pdDogc3RyaW5nIH0ge1xuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSByZXR1cm4geyB2YWx1ZTogaW5wdXQsIHVuaXQ6ICdweCcgfTtcbiAgICBpZiAoaW5wdXQgPT09ICdhdXRvJykgcmV0dXJuIHsgdmFsdWU6IDAsIHVuaXQ6ICdweCcgfTtcblxuICAgIGNvbnN0IG1hdGNoID0gaW5wdXQubWF0Y2goL14oWzAtOS5dKykoW2EteiVdKikkL2kpO1xuICAgIGlmICghbWF0Y2gpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0IGZvcm1hdDogJHtpbnB1dH1gKTtcblxuICAgIHJldHVybiB7IHZhbHVlOiBwYXJzZUZsb2F0KG1hdGNoWzFdKSwgdW5pdDogbWF0Y2hbMl0gfHwgJycgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VmFsdWVGcm9tVW5pdCh2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB1bml0ID8gYCR7dmFsdWV9JHt1bml0fWAgOiBgJHt2YWx1ZX1gO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUdhcChnYXA6IHN0cmluZyk6IHsgdmFsdWVzOiBSZWNvcmQ8J3gnIHwgJ3knLCBudW1iZXI+OyB1bml0OiBzdHJpbmcgfSB7XG4gICAgY29uc3QgcGFydHMgPSBnYXAuc3BsaXQoL1xccysvKTtcbiAgICBjb25zdCBtYXRjaCA9IHBhcnRzWzBdLm1hdGNoKC9eKFxcZCtcXC4/XFxkKikoW2EteiVdKykkLyk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdhcCBmb3JtYXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBbLCB4VmFsdWUsIHVuaXRdID0gbWF0Y2g7XG4gICAgbGV0IHlWYWx1ZSA9IHBhcnNlRmxvYXQoeFZhbHVlKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBjb25zdCBzZWNvbmRNYXRjaCA9IHBhcnRzWzFdLm1hdGNoKC9eKFxcZCtcXC4/XFxkKilbYS16JV0rJC8pO1xuICAgICAgaWYgKCFzZWNvbmRNYXRjaCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZ2FwIGZvcm1hdCcpO1xuICAgICAgfVxuICAgICAgeVZhbHVlID0gcGFyc2VGbG9hdChzZWNvbmRNYXRjaFsxXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlczoge1xuICAgICAgICB4OiBwYXJzZUZsb2F0KHhWYWx1ZSksXG4gICAgICAgIHk6IHlWYWx1ZSxcbiAgICAgIH0sXG4gICAgICB1bml0LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHBhcnNlR3JpZFRlbXBsYXRlKGdyaWRUZW1wbGF0ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBtYXRjaCA9IGdyaWRUZW1wbGF0ZS5tYXRjaCgvXnJlcGVhdFxcKChcXGQrKSxcXHMqKD86MWZyfGF1dG98bWlubWF4XFwoW14pXSpcXCkpXFwpJC8pO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JpZCB0ZW1wbGF0ZSBmb3JtYXQuIEV4cGVjdGVkICdyZXBlYXQoTiwgMWZyfGF1dG98bWlubWF4KC4uLikpJy5cIik7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUludChtYXRjaFsxXSwgMTApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVHcmlkVGVtcGxhdGUocmVwZXRpdGlvbkNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChyZXBldGl0aW9uQ291bnQgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXBldGl0aW9uIGNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicpO1xuICAgIH1cbiAgICByZXR1cm4gYHJlcGVhdCgke3JlcGV0aXRpb25Db3VudH0sIDFmcilgO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTm9uRW1wdHlCcmVha3BvaW50czxUPih2YWx1ZXM6IEFYUEJyZWFrcG9pbnRWYWx1ZXM8VD4pOiBBWFBCcmVha3BvaW50c1tdIHtcbiAgY29uc3QgYnJlYWtwb2ludHM6IEFYUEJyZWFrcG9pbnRzW10gPSBbJ2RlZmF1bHQnLCAnc20nLCAnbWQnLCAnbGcnLCAneGwnLCAnMnhsJywgJzN4bCddO1xuICBjb25zdCBub25FbXB0eUJyZWFrcG9pbnRzOiBBWFBCcmVha3BvaW50c1tdID0gW107XG5cbiAgZm9yIChjb25zdCBicmVha3BvaW50IG9mIGJyZWFrcG9pbnRzKSB7XG4gICAgaWYgKHZhbHVlc1ticmVha3BvaW50XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBub25FbXB0eUJyZWFrcG9pbnRzLnB1c2goYnJlYWtwb2ludCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vbkVtcHR5QnJlYWtwb2ludHM7XG59XG4iXX0=","export const AXP_WIDGETS_LAYOUT_CATEGORY = {\n name: 'layout',\n order: 1,\n title: 'Layout',\n};\nexport const AXP_WIDGETS_EDITOR_CATEGORY = {\n name: 'editor',\n order: 2,\n title: 'Editors',\n};\nexport const AXP_WIDGETS_ACTION_CATEGORY = {\n name: 'action',\n order: 3,\n title: 'Action',\n};\nexport const AXP_WIDGETS_ADVANCE_CATEGORY = {\n name: 'advance',\n order: 4,\n title: 'Advance',\n};\nexport const AXP_WIDGETS_CATEGORIES = [\n AXP_WIDGETS_LAYOUT_CATEGORY,\n AXP_WIDGETS_EDITOR_CATEGORY,\n AXP_WIDGETS_ACTION_CATEGORY,\n AXP_WIDGETS_ADVANCE_CATEGORY,\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNhdGVnb3JpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL3dpZGdldC1jYXRlZ29yaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFzQjtJQUM1RCxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLFFBQVE7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFzQjtJQUM1RCxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLFNBQVM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFzQjtJQUM1RCxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLFFBQVE7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFzQjtJQUM3RCxJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLFNBQVM7Q0FDakIsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF3QjtJQUN6RCwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQiw0QkFBNEI7Q0FDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q2F0ZWdvcnkge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUU19MQVlPVVRfQ0FURUdPUlk6IEFYUFdpZGdldENhdGVnb3J5ID0ge1xuICBuYW1lOiAnbGF5b3V0JyxcbiAgb3JkZXI6IDEsXG4gIHRpdGxlOiAnTGF5b3V0Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUU19FRElUT1JfQ0FURUdPUlk6IEFYUFdpZGdldENhdGVnb3J5ID0ge1xuICBuYW1lOiAnZWRpdG9yJyxcbiAgb3JkZXI6IDIsXG4gIHRpdGxlOiAnRWRpdG9ycycsXG59O1xuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVFNfQUNUSU9OX0NBVEVHT1JZOiBBWFBXaWRnZXRDYXRlZ29yeSA9IHtcbiAgbmFtZTogJ2FjdGlvbicsXG4gIG9yZGVyOiAzLFxuICB0aXRsZTogJ0FjdGlvbicsXG59O1xuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVFNfQURWQU5DRV9DQVRFR09SWTogQVhQV2lkZ2V0Q2F0ZWdvcnkgPSB7XG4gIG5hbWU6ICdhZHZhbmNlJyxcbiAgb3JkZXI6IDQsXG4gIHRpdGxlOiAnQWR2YW5jZScsXG59O1xuXG5cblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRTX0NBVEVHT1JJRVM6IEFYUFdpZGdldENhdGVnb3J5W10gPSBbXG4gIEFYUF9XSURHRVRTX0xBWU9VVF9DQVRFR09SWSxcbiAgQVhQX1dJREdFVFNfRURJVE9SX0NBVEVHT1JZLFxuICBBWFBfV0lER0VUU19BQ1RJT05fQ0FURUdPUlksXG4gIEFYUF9XSURHRVRTX0FEVkFOQ0VfQ0FURUdPUlksXG5dO1xuIl19","export var AXPWidgetGroupEnum;\n(function (AXPWidgetGroupEnum) {\n AXPWidgetGroupEnum[\"FormElement\"] = \"form-element\";\n AXPWidgetGroupEnum[\"DashboardWidget\"] = \"dashboard-widget\";\n AXPWidgetGroupEnum[\"FormTemplate\"] = \"form-template\";\n AXPWidgetGroupEnum[\"PropertyEditor\"] = \"property-editor\";\n AXPWidgetGroupEnum[\"MetaData\"] = \"meta-data\";\n AXPWidgetGroupEnum[\"SettingWidget\"] = \"setting-widget\";\n AXPWidgetGroupEnum[\"EntityWidget\"] = \"entity-widget\";\n AXPWidgetGroupEnum[\"UtilityWidget\"] = \"utility-widget\";\n})(AXPWidgetGroupEnum || (AXPWidgetGroupEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWdyb3VwLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQtZ3JvdXAudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxDQUFOLElBQVksa0JBU1g7QUFURCxXQUFZLGtCQUFrQjtJQUM1QixrREFBNEIsQ0FBQTtJQUM1QiwwREFBb0MsQ0FBQTtJQUNwQyxvREFBOEIsQ0FBQTtJQUM5Qix3REFBa0MsQ0FBQTtJQUNsQyw0Q0FBc0IsQ0FBQTtJQUN0QixzREFBZ0MsQ0FBQTtJQUNoQyxvREFBOEIsQ0FBQTtJQUM5QixzREFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBVFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQVM3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYUFdpZGdldEdyb3VwID1cbiAgJ2Zvcm0tZWxlbWVudCcgfFxuICAnZGFzaGJvYXJkLXdpZGdldCcgfFxuICAnZm9ybS10ZW1wbGF0ZScgfFxuICAncHJvcGVydHktZWRpdG9yJyB8XG4gICdtZXRhLWRhdGEnIHxcbiAgJ3NldHRpbmctd2lkZ2V0JyB8XG4gICdlbnRpdHktd2lkZ2V0JyB8XG4gICd1dGlsaXR5LXdpZGdldCc7XG5cblxuZXhwb3J0IGVudW0gQVhQV2lkZ2V0R3JvdXBFbnVtIHtcbiAgRm9ybUVsZW1lbnQgPSAnZm9ybS1lbGVtZW50JyxcbiAgRGFzaGJvYXJkV2lkZ2V0ID0gJ2Rhc2hib2FyZC13aWRnZXQnLFxuICBGb3JtVGVtcGxhdGUgPSAnZm9ybS10ZW1wbGF0ZScsXG4gIFByb3BlcnR5RWRpdG9yID0gJ3Byb3BlcnR5LWVkaXRvcicsXG4gIE1ldGFEYXRhID0gJ21ldGEtZGF0YScsXG4gIFNldHRpbmdXaWRnZXQgPSAnc2V0dGluZy13aWRnZXQnLFxuICBFbnRpdHlXaWRnZXQgPSAnZW50aXR5LXdpZGdldCcsXG4gIFV0aWxpdHlXaWRnZXQgPSAndXRpbGl0eS13aWRnZXQnLFxufSJdfQ==","import { Component, Input } from '@angular/core';\nimport { AXPWidgetCoreModule } from '../widget-core.module';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"../widget-container.component\";\nimport * as i2 from \"../widget-renderer.directive\";\nexport class AXPWidgetStandaloneRendererHostComponent {\n constructor() {\n this.mode = 'edit';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetStandaloneRendererHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPWidgetStandaloneRendererHostComponent, isStandalone: true, selector: \"axp-widget-standalone-renderer-host\", inputs: { mode: \"mode\", node: \"node\", context: \"context\", functions: \"functions\" }, ngImport: i0, template: `\n <axp-widgets-container [context]=\"context\" [functions]=\"functions\">\n <ng-container axp-widget-renderer [mode]=\"mode\" [node]=\"node\"></ng-container>\n </axp-widgets-container>\n `, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXPWidgetCoreModule }, { kind: \"component\", type: i1.AXPWidgetContainerComponent, selector: \"axp-widgets-container\", inputs: [\"context\", \"functions\"], outputs: [\"onContextChanged\"] }, { kind: \"directive\", type: i2.AXPWidgetRendererDirective, selector: \"[axp-widget-renderer]\", inputs: [\"parentNode\", \"index\", \"mode\", \"node\"], outputs: [\"onOptionsChanged\", \"onValueChanged\"], exportAs: [\"widgetRenderer\"] }] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetStandaloneRendererHostComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-standalone-renderer-host',\n template: `\n <axp-widgets-container [context]=\"context\" [functions]=\"functions\">\n <ng-container axp-widget-renderer [mode]=\"mode\" [node]=\"node\"></ng-container>\n </axp-widgets-container>\n `,\n standalone: true,\n imports: [AXPWidgetCoreModule]\n }]\n }], propDecorators: { mode: [{\n type: Input\n }], node: [{\n type: Input\n }], context: [{\n type: Input\n }], functions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXN0YW5kYWxvbmUtcmVuZGVyZXItaG9zdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL3J1bnRpbWUvd2lkZ2V0LXN0YW5kYWxvbmUtcmVuZGVyZXItaG9zdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFhNUQsTUFBTSxPQUFPLHdDQUF3QztJQVZyRDtRQVdXLFNBQUksR0FBd0IsTUFBTSxDQUFDO0tBSTdDOytHQUxZLHdDQUF3QzttR0FBeEMsd0NBQXdDLG1MQVJ6Qzs7OztHQUlULDJEQUVTLG1CQUFtQjs7NEZBRWxCLHdDQUF3QztrQkFWcEQsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUNBQXFDO29CQUMvQyxRQUFRLEVBQUU7Ozs7R0FJVDtvQkFDRCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQy9COztzQkFFRSxLQUFLOztzQkFDTCxLQUFLOztzQkFDTCxLQUFLOztzQkFDTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZU1vZHVsZSB9IGZyb20gJy4uL3dpZGdldC1jb3JlLm1vZHVsZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXROb2RlLCBBWFBXaWRnZXRSZW5kZXJNb2RlIH0gZnJvbSAnLi4vd2lkZ2V0LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXdpZGdldC1zdGFuZGFsb25lLXJlbmRlcmVyLWhvc3QnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxheHAtd2lkZ2V0cy1jb250YWluZXIgW2NvbnRleHRdPVwiY29udGV4dFwiIFtmdW5jdGlvbnNdPVwiZnVuY3Rpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyIGF4cC13aWRnZXQtcmVuZGVyZXIgW21vZGVdPVwibW9kZVwiIFtub2RlXT1cIm5vZGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2F4cC13aWRnZXRzLWNvbnRhaW5lcj5cbiAgYCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0FYUFdpZGdldENvcmVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEFYUFdpZGdldFN0YW5kYWxvbmVSZW5kZXJlckhvc3RDb21wb25lbnQge1xuICBASW5wdXQoKSBtb2RlOiBBWFBXaWRnZXRSZW5kZXJNb2RlID0gJ2VkaXQnO1xuICBASW5wdXQoKSBub2RlITogQVhQV2lkZ2V0Tm9kZTtcbiAgQElucHV0KCkgY29udGV4dD86IGFueTtcbiAgQElucHV0KCkgZnVuY3Rpb25zPzogYW55O1xufVxuIl19","import { ApplicationRef, EnvironmentInjector, Injectable, InjectionToken, createComponent } from '@angular/core';\nimport { AXPWidgetStandaloneRendererHostComponent } from './widget-standalone-renderer-host.component';\nimport * as i0 from \"@angular/core\";\nexport const LAYOUT_WIDGET_RENDER_ENGINE = new InjectionToken('LAYOUT_WIDGET_RENDER_ENGINE');\nexport class WidgetCoreRendererEngine {\n constructor(appRef, env) {\n this.appRef = appRef;\n this.env = env;\n }\n render(node, target, context, mode = 'edit') {\n const compRef = createComponent(AXPWidgetStandaloneRendererHostComponent, { environmentInjector: this.env });\n compRef.setInput('mode', mode);\n compRef.setInput('node', node);\n if (context) {\n compRef.setInput('context', context);\n }\n this.appRef.attachView(compRef.hostView);\n target.appendChild(compRef.location.nativeElement);\n return {\n element: compRef.location.nativeElement,\n destroy: () => {\n try {\n this.appRef.detachView(compRef.hostView);\n }\n catch { }\n compRef.destroy();\n },\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: WidgetCoreRendererEngine, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: WidgetCoreRendererEngine, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: WidgetCoreRendererEngine, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }] });\nexport class SimpleDomRendererEngine {\n render(node, target) {\n const element = this.createElement(node);\n target.appendChild(element);\n return {\n element,\n destroy: () => {\n if (element.parentElement) {\n element.parentElement.removeChild(element);\n }\n },\n };\n }\n createElement(node) {\n const container = document.createElement('div');\n container.className = `axp-widget axp-widget-${node.type}`;\n switch (String(node.type)) {\n case 'text-block-layout':\n case 'static-text':\n this.renderText(container, node);\n break;\n case 'tag':\n this.renderTag(container, node);\n break;\n case 'text-editor':\n this.renderTextBox(container, node);\n break;\n default:\n this.renderGeneric(container, node);\n break;\n }\n return container;\n }\n renderText(container, node) {\n const anyNode = node;\n const content = (anyNode.options && (anyNode.options.content || anyNode.options.label)) || '';\n container.innerHTML = typeof content === 'string' ? content : String(content);\n }\n renderTag(container, node) {\n const label = node.options?.label || 'Tag';\n const tone = node.options?.tone || 'primary';\n container.innerHTML = `<span class=\"tag tag-${tone}\" style=\"\n display: inline-block;\n padding: 4px 12px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 500;\n background: ${tone === 'success' ? '#d4edda' : '#cce5ff'};\n color: ${tone === 'success' ? '#155724' : '#004085'};\n border: 1px solid ${tone === 'success' ? '#c3e6cb' : '#b8daff'};\n \">${label}</span>`;\n }\n renderTextBox(container, node) {\n const placeholder = node.options?.placeholder || '';\n const input = document.createElement('input');\n input.type = 'text';\n input.placeholder = placeholder;\n input.style.cssText = `\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 14px;\n `;\n container.appendChild(input);\n }\n renderGeneric(container, node) {\n const anyNode = node;\n if (anyNode.options?.content) {\n container.innerHTML = anyNode.options.content;\n }\n else {\n container.textContent = `[${String(node.type)}]`;\n }\n }\n}\nexport function provideWidgetCoreRenderer() {\n return [{ provide: LAYOUT_WIDGET_RENDER_ENGINE, useClass: WidgetCoreRendererEngine }];\n}\nexport function provideSimpleDomRenderer() {\n return [{ provide: LAYOUT_WIDGET_RENDER_ENGINE, useClass: SimpleDomRendererEngine }];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmluZy5lbmdpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL3J1bnRpbWUvd2lkZ2V0LXJlbmRlcmluZy5lbmdpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFXdkcsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxjQUFjLENBQXFCLDZCQUE2QixDQUFDLENBQUM7QUFHakgsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUFvQixNQUFzQixFQUFVLEdBQXdCO1FBQXhELFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBcUI7SUFBRyxDQUFDO0lBRWhGLE1BQU0sQ0FBQyxJQUFtQixFQUFFLE1BQW1CLEVBQUUsT0FBYSxFQUFFLE9BQTRCLE1BQU07UUFDaEcsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLHdDQUF3QyxFQUFFLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDN0csT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxD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UUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QjtJQUN0QyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLENBQUMsQ0FBQztBQUN2RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBjcmVhdGVDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldE5vZGUsIEFYUFdpZGdldFJlbmRlck1vZGUgfSBmcm9tICcuLi93aWRnZXQudHlwZXMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0U3RhbmRhbG9uZVJlbmRlcmVySG9zdENvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LXN0YW5kYWxvbmUtcmVuZGVyZXItaG9zdC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpZGdldFJlbmRlckhhbmRsZSB7XG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICBkZXN0cm95KCk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0UmVuZGVyRW5naW5lIHtcbiAgcmVuZGVyKG5vZGU6IEFYUFdpZGdldE5vZGUsIHRhcmdldDogSFRNTEVsZW1lbnQsIGNvbnRleHQ/OiBhbnksIG1vZGU/OiBBWFBXaWRnZXRSZW5kZXJNb2RlKTogV2lkZ2V0UmVuZGVySGFuZGxlO1xufVxuXG5leHBvcnQgY29uc3QgTEFZT1VUX1dJREdFVF9SRU5ERVJfRU5HSU5FID0gbmV3IEluamVjdGlvblRva2VuPFdpZGdldFJlbmRlckVuZ2luZT4oJ0xBWU9VVF9XSURHRVRfUkVOREVSX0VOR0lORScpO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFdpZGdldENvcmVSZW5kZXJlckVuZ2luZSBpbXBsZW1lbnRzIFdpZGdldFJlbmRlckVuZ2luZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXBwUmVmOiBBcHBsaWNhdGlvblJlZiwgcHJpdmF0ZSBlbnY6IEVudmlyb25tZW50SW5qZWN0b3IpIHt9XG5cbiAgcmVuZGVyKG5vZGU6IEFYUFdpZGdldE5vZGUsIHRhcmdldDogSFRNTEVsZW1lbnQsIGNvbnRleHQ/OiBhbnksIG1vZGU6IEFYUFdpZGdldFJlbmRlck1vZGUgPSAnZWRpdCcpOiBXaWRnZXRSZW5kZXJIYW5kbGUge1xuICAgIGNvbnN0IGNvbXBSZWYgPSBjcmVhdGVDb21wb25lbnQoQVhQV2lkZ2V0U3RhbmRhbG9uZVJlbmRlcmVySG9zdENvbXBvbmVudCwgeyBlbnZpcm9ubWVudEluamVjdG9yOiB0aGlzLmVudiB9KTtcbiAgICBjb21wUmVmLnNldElucHV0KCdtb2RlJywgbW9kZSk7XG4gICAgY29tcFJlZi5zZXRJbnB1dCgnbm9kZScsIG5vZGUpO1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICBjb21wUmVmLnNldElucHV0KCdjb250ZXh0JywgY29udGV4dCk7XG4gICAgfVxuXG4gICAgdGhpcy5hcHBSZWYuYXR0YWNoVmlldyhjb21wUmVmLmhvc3RWaWV3KTtcbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY29tcFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBlbGVtZW50OiBjb21wUmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQsXG4gICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5hcHBSZWYuZGV0YWNoVmlldyhjb21wUmVmLmhvc3RWaWV3KTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICBjb21wUmVmLmRlc3Ryb3koKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2ltcGxlRG9tUmVuZGVyZXJFbmdpbmUgaW1wbGVtZW50cyBXaWRnZXRSZW5kZXJFbmdpbmUge1xuICByZW5kZXIobm9kZTogQVhQV2lkZ2V0Tm9kZSwgdGFyZ2V0OiBIVE1MRWxlbWVudCk6IFdpZGdldFJlbmRlckhhbmRsZSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuY3JlYXRlRWxlbWVudChub2RlKTtcbiAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnQsXG4gICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRWxlbWVudChub2RlOiBBWFBXaWRnZXROb2RlKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSBgYXhwLXdpZGdldCBheHAtd2lkZ2V0LSR7bm9kZS50eXBlfWA7XG5cbiAgICBzd2l0Y2ggKFN0cmluZyhub2RlLnR5cGUpKSB7XG4gICAgICBjYXNlICd0ZXh0LWJsb2NrLWxheW91dCc6XG4gICAgICBjYXNlICdzdGF0aWMtdGV4dCc6XG4gICAgICAgIHRoaXMucmVuZGVyVGV4dChjb250YWluZXIsIG5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHRoaXMucmVuZGVyVGFnKGNvbnRhaW5lciwgbm9kZSBhcyBhbnkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHQtZWRpdG9yJzpcbiAgICAgICAgdGhpcy5yZW5kZXJUZXh0Qm94KGNvbnRhaW5lciwgbm9kZSBhcyBhbnkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMucmVuZGVyR2VuZXJpYyhjb250YWluZXIsIG5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gY29udGFpbmVyO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJUZXh0KGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIG5vZGU6IEFYUFdpZGdldE5vZGUpIHtcbiAgICBjb25zdCBhbnlOb2RlOiBhbnkgPSBub2RlO1xuICAgIGNvbnN0IGNvbnRlbnQgPSAoYW55Tm9kZS5vcHRpb25zICYmIChhbnlOb2RlLm9wdGlvbnMuY29udGVudCB8fCBhbnlOb2RlLm9wdGlvbnMubGFiZWwpKSB8fCAnJztcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnID8gY29udGVudCA6IFN0cmluZyhjb250ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyVGFnKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQsIG5vZGU6IGFueSkge1xuICAgIGNvbnN0IGxhYmVsID0gbm9kZS5vcHRpb25zPy5sYWJlbCB8fCAnVGFnJztcbiAgICBjb25zdCB0b25lID0gbm9kZS5vcHRpb25zPy50b25lIHx8ICdwcmltYXJ5JztcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gYDxzcGFuIGNsYXNzPVwidGFnIHRhZy0ke3RvbmV9XCIgc3R5bGU9XCJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHBhZGRpbmc6IDRweCAxMnB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgICBiYWNrZ3JvdW5kOiAke3RvbmUgPT09ICdzdWNjZXNzJyA/ICcjZDRlZGRhJyA6ICcjY2NlNWZmJ307XG4gICAgICBjb2xvcjogJHt0b25lID09PSAnc3VjY2VzcycgPyAnIzE1NTcyNCcgOiAnIzAwNDA4NSd9O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJHt0b25lID09PSAnc3VjY2VzcycgPyAnI2MzZTZjYicgOiAnI2I4ZGFmZid9O1xuICAgIFwiPiR7bGFiZWx9PC9zcGFuPmA7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclRleHRCb3goY29udGFpbmVyOiBIVE1MRWxlbWVudCwgbm9kZTogYW55KSB7XG4gICAgY29uc3QgcGxhY2Vob2xkZXIgPSBub2RlLm9wdGlvbnM/LnBsYWNlaG9sZGVyIHx8ICcnO1xuICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcbiAgICBpbnB1dC50eXBlID0gJ3RleHQnO1xuICAgIGlucHV0LnBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXI7XG4gICAgaW5wdXQuc3R5bGUuY3NzVGV4dCA9IGBcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGA7XG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGlucHV0KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyR2VuZXJpYyhjb250YWluZXI6IEhUTUxFbGVtZW50LCBub2RlOiBBWFBXaWRnZXROb2RlKSB7XG4gICAgY29uc3QgYW55Tm9kZTogYW55ID0gbm9kZTtcbiAgICBpZiAoYW55Tm9kZS5vcHRpb25zPy5jb250ZW50KSB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gYW55Tm9kZS5vcHRpb25zLmNvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci50ZXh0Q29udGVudCA9IGBbJHtTdHJpbmcobm9kZS50eXBlKX1dYDtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVXaWRnZXRDb3JlUmVuZGVyZXIoKSB7XG4gIHJldHVybiBbeyBwcm92aWRlOiBMQVlPVVRfV0lER0VUX1JFTkRFUl9FTkdJTkUsIHVzZUNsYXNzOiBXaWRnZXRDb3JlUmVuZGVyZXJFbmdpbmUgfV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlU2ltcGxlRG9tUmVuZGVyZXIoKSB7XG4gIHJldHVybiBbeyBwcm92aWRlOiBMQVlPVVRfV0lER0VUX1JFTkRFUl9FTkdJTkUsIHVzZUNsYXNzOiBTaW1wbGVEb21SZW5kZXJlckVuZ2luZSB9XTtcbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWxheW91dC13aWRnZXQtY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9hY29yZXgtcGxhdGZvcm0tbGF5b3V0LXdpZGdldC1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1","i1.AXPWidgetContainerComponent","i2.AXPWidgetRendererDirective"],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-layout-widget-core.mjs","sources":["../tmp-esm2022/layout/widget-core/lib/widget-core-store.service.js","../tmp-esm2022/layout/widget-core/lib/widget-status.types.js","../tmp-esm2022/layout/widget-core/lib/widget-core.service.js","../tmp-esm2022/layout/widget-core/lib/widget-catalog.js","../tmp-esm2022/layout/widget-core/lib/widget.types.js","../tmp-esm2022/layout/widget-core/lib/widget-base.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/box-model-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/block-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/flex-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/inline-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/flex-item-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/grid-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/grid-item-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/table-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/table-item-ops-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/base-widget/table-item-base-widget.component.js","../tmp-esm2022/layout/widget-core/lib/widget-registery.service.js","../tmp-esm2022/layout/widget-core/lib/widget-column-renderer.js","../tmp-esm2022/layout/widget-core/lib/widget-container.component.js","../tmp-esm2022/layout/widget-core/lib/widget-placeholder.component.js","../tmp-esm2022/layout/widget-core/lib/widget-renderer.directive.js","../tmp-esm2022/layout/widget-core/lib/widget-core.module.js","../tmp-esm2022/layout/widget-core/lib/helper/property-editor.helper.js","../tmp-esm2022/layout/widget-core/lib/widget-categories.js","../tmp-esm2022/layout/widget-core/lib/widget-group.types.js","../tmp-esm2022/layout/widget-core/acorex-platform-layout-widget-core.js"],"sourcesContent":["import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';\nimport { cloneDeep, get, isEqual, has } from 'lodash-es';\nimport { computed } from '@angular/core';\nimport { setSmart } from '@acorex/platform/core';\nexport class AXPWidgetCoreContextChangeEvent {\n}\nexport const AXPWidgetCoreContextStore = signalStore(\n// Initial State\nwithState(() => ({\n data: {}, // Shared context data\n state: 'initiated', // Current state\n initialSnapshot: {}, // Snapshot of the first initialized state\n previousSnapshot: {}, // Snapshot of the previous state\n lastChange: {\n state: 'initiated',\n }, // Last change event\n})), \n// Computed Signals\nwithComputed(({ data, state, lastChange, initialSnapshot, previousSnapshot }) => ({\n isChanged: computed(() => state() === 'changed'),\n isReset: computed(() => state() === 'restored'),\n isInitiated: computed(() => state() === 'initiated'),\n isEmpty: computed(() => Object.keys(data()).length === 0),\n isDirty: computed(() => !isEqual(data(), previousSnapshot())),\n snapshot: computed(() => cloneDeep(data())), // Current data snapshot\n initial: computed(() => cloneDeep(initialSnapshot())), // Initial snapshot\n previous: computed(() => cloneDeep(previousSnapshot())), // Previous snapshot\n changeEvent: computed(() => lastChange()), // Reactive last change event\n})), \n// Methods for State Management\nwithMethods((store) => ({\n // Update a specific value\n update(path, value) {\n const currentData = cloneDeep(store.data());\n const oldValue = get(currentData, path);\n // Skip if the value hasn't changed\n if (isEqual(oldValue, value)) {\n return;\n }\n // Update the value and prepare the change event\n const updatedData = setSmart(currentData, path, value);\n const changeEvent = {\n oldValue,\n newValue: value,\n path,\n state: 'changed',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n patch(context) {\n const currentData = cloneDeep(store.data());\n // Update the value and prepare the change event\n const updatedData = { ...currentData, ...context };\n const changeEvent = {\n state: 'patch',\n data: updatedData,\n };\n // Patch the state\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: updatedData,\n state: 'changed',\n lastChange: changeEvent,\n });\n },\n // Reset to the initial state\n reset() {\n const initialData = store.initial();\n const changeEvent = {\n oldValue: cloneDeep(store.data()), // Current data becomes old value\n newValue: cloneDeep(initialData), // Reset to the initial state\n path: '',\n state: 'restored',\n data: initialData,\n };\n patchState(store, {\n previousSnapshot: store.snapshot(), // Save the previous state\n data: initialData,\n state: 'restored',\n lastChange: changeEvent,\n });\n },\n // Initialize the state\n set(initialData) {\n const currentData = store.data();\n if (isEqual(currentData, initialData)) {\n return; // Skip if the current state matches the initial state\n }\n const changeEvent = {\n oldValue: null,\n newValue: cloneDeep(initialData),\n path: '',\n state: 'initiated',\n data: initialData,\n };\n patchState(store, {\n initialSnapshot: cloneDeep(initialData), // Save the initial state\n previousSnapshot: store.snapshot(), // Save the current state as the previous\n data: initialData,\n state: 'initiated',\n lastChange: changeEvent,\n });\n },\n // Get a specific value\n getValue(path) {\n return get(store.data(), path);\n },\n // Check if a path exists in the context\n hasValue(path) {\n return has(store.data(), path);\n },\n})));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvcmUtc3RvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LWNvcmUtc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBTyxPQUFPLEVBQVMsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSWpELE1BQU0sT0FBTywrQkFBK0I7Q0FNM0M7QUFFRCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxXQUFXO0FBQ2hELGdCQUFnQjtBQUNoQixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNiLElBQUksRUFBRSxFQUFFLEVBQUUsc0JBQXNCO0lBQ2hDLEtBQUssRUFBRSxXQUF3QyxFQUFFLGdCQUFnQjtJQUNqRSxlQUFlLEVBQUUsRUFBRSxFQUFFLDBDQUEwQztJQUMvRCxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsaUNBQWlDO0lBQ3ZELFVBQVUsRUFBRTtRQUNSLEtBQUssRUFBRSxXQUFXO0tBQ2MsRUFBRSxvQkFBb0I7Q0FDN0QsQ0FBQyxDQUFDO0FBRUgsbUJBQW1CO0FBQ25CLFlBQVksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxTQUFTLENBQUM7SUFDaEQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxVQUFVLENBQUM7SUFDL0MsV0FBVyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxXQUFXLENBQUM7SUFDcEQsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUN6RCxPQUFPLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUM3RCxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsd0JBQXdCO0lBQ3JFLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFBRSxtQkFBbUI7SUFDMUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CO0lBQzdFLFdBQVcsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSw2QkFBNkI7Q0FDM0UsQ0FBQyxDQUFDO0FBRUgsK0JBQStCO0FBQy9CLFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwQiwwQkFBMEI7SUFDMUIsTUFBTSxDQUFDLElBQVksRUFBRSxLQUFVO1FBQzNCLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXhDLG1DQUFtQztRQUNuQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1gsQ0FBQztRQUVELGdEQUFnRDtRQUNoRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLFdBQVcsR0FBb0M7WUFDakQsUUFBUTtZQUNSLFFBQVEsRUFBRSxLQUFLO1lBQ2YsSUFBSTtZQUNKLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxXQUFXO1NBQ3BCLENBQUM7UUFFRixrQkFBa0I7UUFDbEIsVUFBVSxDQUFDLEtBQUssRUFBRTtZQUNkLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSwwQkFBMEI7WUFDOUQsSUFBSSxFQUFFLFdBQVc7WUFDakIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsVUFBVSxFQUFFLFdBQVc7U0FDMUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFXO1FBQ2IsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLGdEQUFnRDtRQUNoRCxNQUFNLFdBQVcsR0FBRyxFQUFFLEdBQUcsV0FBVyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDbkQsTUFBTSxXQUFXLEdBQW9DO1lBQ2pELEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLFdBQVc7U0FDcEIsQ0FBQztRQUVGLGtCQUFrQjtRQUNsQixVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ2QsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLDBCQUEwQjtZQUM5RCxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsU0FBUztZQUNoQixVQUFVLEVBQUUsV0FBVztTQUMxQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsNkJBQTZCO0lBQzdCLEtBQUs7UUFDRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEMsTUFBTSxXQUFXLEdBQW9DO1lBQ2pELFFBQVEsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsaUNBQWlDO1lBQ3BFLFFBQVEsRUFBRSxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsNkJBQTZCO1lBQy9ELElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSyxFQUFFLFVBQVU7WUFDakIsSUFBSSxFQUFFLFdBQVc7U0FDcEIsQ0FBQztRQUVGLFVBQVUsQ0FBQyxLQUFLLEVBQUU7WUFDZCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsMEJBQTBCO1lBQzlELElBQUksRUFBRSxXQUFXO1lBQ2pCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLFVBQVUsRUFBRSxXQUFXO1NBQzFCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsR0FBRyxDQUFDLFdBQWdCO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNwQyxPQUFPLENBQUMsc0RBQXNEO1FBQ2xFLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBb0M7WUFDakQsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxXQUFXO1lBQ2xCLElBQUksRUFBRSxXQUFXO1NBQ3BCLENBQUM7UUFFRixVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ2QsZUFBZSxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSx5QkFBeUI7WUFDbEUsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLHlDQUF5QztZQUM3RSxJQUFJLEVBQUUsV0FBVztZQUNqQixLQUFLLEVBQUUsV0FBVztZQUNsQixVQUFVLEVBQUUsV0FBVztTQUMxQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLFFBQVEsQ0FBQyxJQUFZO1FBQ2pCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pCLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0osQ0FBQyxDQUFDLENBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNpZ25hbFN0b3JlLCB3aXRoU3RhdGUsIHdpdGhDb21wdXRlZCwgd2l0aE1ldGhvZHMsIHBhdGNoU3RhdGUgfSBmcm9tICdAbmdyeC9zaWduYWxzJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBzZXQsIGlzRXF1YWwsIG1lcmdlLCBoYXMgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNldFNtYXJ0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0Q29yZUNvbnRleHRTdGF0ZSA9ICdpbml0aWF0ZWQnIHwgJ3Jlc3RvcmVkJyB8ICdjaGFuZ2VkJyB8ICdwYXRjaCc7XG5cbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRDb3JlQ29udGV4dENoYW5nZUV2ZW50IHtcbiAgICBvbGRWYWx1ZT86IGFueTtcbiAgICBuZXdWYWx1ZT86IGFueTtcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIHN0YXRlOiBBWFBXaWRnZXRDb3JlQ29udGV4dFN0YXRlO1xuICAgIGRhdGE6IGFueTtcbn1cblxuZXhwb3J0IGNvbnN0IEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUgPSBzaWduYWxTdG9yZShcbiAgICAvLyBJbml0aWFsIFN0YXRlXG4gICAgd2l0aFN0YXRlKCgpID0+ICh7XG4gICAgICAgIGRhdGE6IHt9LCAvLyBTaGFyZWQgY29udGV4dCBkYXRhXG4gICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyBhcyBBWFBXaWRnZXRDb3JlQ29udGV4dFN0YXRlLCAvLyBDdXJyZW50IHN0YXRlXG4gICAgICAgIGluaXRpYWxTbmFwc2hvdDoge30sIC8vIFNuYXBzaG90IG9mIHRoZSBmaXJzdCBpbml0aWFsaXplZCBzdGF0ZVxuICAgICAgICBwcmV2aW91c1NuYXBzaG90OiB7fSwgLy8gU25hcHNob3Qgb2YgdGhlIHByZXZpb3VzIHN0YXRlXG4gICAgICAgIGxhc3RDaGFuZ2U6IHtcbiAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgfSBhcyBBWFBXaWRnZXRDb3JlQ29udGV4dENoYW5nZUV2ZW50LCAvLyBMYXN0IGNoYW5nZSBldmVudFxuICAgIH0pKSxcblxuICAgIC8vIENvbXB1dGVkIFNpZ25hbHNcbiAgICB3aXRoQ29tcHV0ZWQoKHsgZGF0YSwgc3RhdGUsIGxhc3RDaGFuZ2UsIGluaXRpYWxTbmFwc2hvdCwgcHJldmlvdXNTbmFwc2hvdCB9KSA9PiAoe1xuICAgICAgICBpc0NoYW5nZWQ6IGNvbXB1dGVkKCgpID0+IHN0YXRlKCkgPT09ICdjaGFuZ2VkJyksXG4gICAgICAgIGlzUmVzZXQ6IGNvbXB1dGVkKCgpID0+IHN0YXRlKCkgPT09ICdyZXN0b3JlZCcpLFxuICAgICAgICBpc0luaXRpYXRlZDogY29tcHV0ZWQoKCkgPT4gc3RhdGUoKSA9PT0gJ2luaXRpYXRlZCcpLFxuICAgICAgICBpc0VtcHR5OiBjb21wdXRlZCgoKSA9PiBPYmplY3Qua2V5cyhkYXRhKCkpLmxlbmd0aCA9PT0gMCksXG4gICAgICAgIGlzRGlydHk6IGNvbXB1dGVkKCgpID0+ICFpc0VxdWFsKGRhdGEoKSwgcHJldmlvdXNTbmFwc2hvdCgpKSksXG4gICAgICAgIHNuYXBzaG90OiBjb21wdXRlZCgoKSA9PiBjbG9uZURlZXAoZGF0YSgpKSksIC8vIEN1cnJlbnQgZGF0YSBzbmFwc2hvdFxuICAgICAgICBpbml0aWFsOiBjb21wdXRlZCgoKSA9PiBjbG9uZURlZXAoaW5pdGlhbFNuYXBzaG90KCkpKSwgLy8gSW5pdGlhbCBzbmFwc2hvdFxuICAgICAgICBwcmV2aW91czogY29tcHV0ZWQoKCkgPT4gY2xvbmVEZWVwKHByZXZpb3VzU25hcHNob3QoKSkpLCAvLyBQcmV2aW91cyBzbmFwc2hvdFxuICAgICAgICBjaGFuZ2VFdmVudDogY29tcHV0ZWQoKCkgPT4gbGFzdENoYW5nZSgpKSwgLy8gUmVhY3RpdmUgbGFzdCBjaGFuZ2UgZXZlbnRcbiAgICB9KSksXG5cbiAgICAvLyBNZXRob2RzIGZvciBTdGF0ZSBNYW5hZ2VtZW50XG4gICAgd2l0aE1ldGhvZHMoKHN0b3JlKSA9PiAoe1xuICAgICAgICAvLyBVcGRhdGUgYSBzcGVjaWZpYyB2YWx1ZVxuICAgICAgICB1cGRhdGUocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0YSA9IGNsb25lRGVlcChzdG9yZS5kYXRhKCkpO1xuICAgICAgICAgICAgY29uc3Qgb2xkVmFsdWUgPSBnZXQoY3VycmVudERhdGEsIHBhdGgpO1xuXG4gICAgICAgICAgICAvLyBTa2lwIGlmIHRoZSB2YWx1ZSBoYXNuJ3QgY2hhbmdlZFxuICAgICAgICAgICAgaWYgKGlzRXF1YWwob2xkVmFsdWUsIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSB2YWx1ZSBhbmQgcHJlcGFyZSB0aGUgY2hhbmdlIGV2ZW50XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHNldFNtYXJ0KGN1cnJlbnREYXRhLCBwYXRoLCB2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBjaGFuZ2VFdmVudDogQVhQV2lkZ2V0Q29yZUNvbnRleHRDaGFuZ2VFdmVudCA9IHtcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZSxcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoYW5nZWQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gUGF0Y2ggdGhlIHN0YXRlXG4gICAgICAgICAgICBwYXRjaFN0YXRlKHN0b3JlLCB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTbmFwc2hvdDogc3RvcmUuc25hcHNob3QoKSwgLy8gU2F2ZSB0aGUgcHJldmlvdXMgc3RhdGVcbiAgICAgICAgICAgICAgICBkYXRhOiB1cGRhdGVkRGF0YSxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ2NoYW5nZWQnLFxuICAgICAgICAgICAgICAgIGxhc3RDaGFuZ2U6IGNoYW5nZUV2ZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcGF0Y2goY29udGV4dDoge30pIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gY2xvbmVEZWVwKHN0b3JlLmRhdGEoKSk7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHZhbHVlIGFuZCBwcmVwYXJlIHRoZSBjaGFuZ2UgZXZlbnRcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0geyAuLi5jdXJyZW50RGF0YSwgLi4uY29udGV4dCB9O1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUFdpZGdldENvcmVDb250ZXh0Q2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgc3RhdGU6ICdwYXRjaCcsXG4gICAgICAgICAgICAgICAgZGF0YTogdXBkYXRlZERhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBQYXRjaCB0aGUgc3RhdGVcbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NuYXBzaG90OiBzdG9yZS5zbmFwc2hvdCgpLCAvLyBTYXZlIHRoZSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICAgICAgICAgIGRhdGE6IHVwZGF0ZWREYXRhLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnY2hhbmdlZCcsXG4gICAgICAgICAgICAgICAgbGFzdENoYW5nZTogY2hhbmdlRXZlbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICAvLyBSZXNldCB0byB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgICAgICByZXNldCgpIHtcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxEYXRhID0gc3RvcmUuaW5pdGlhbCgpO1xuICAgICAgICAgICAgY29uc3QgY2hhbmdlRXZlbnQ6IEFYUFdpZGdldENvcmVDb250ZXh0Q2hhbmdlRXZlbnQgPSB7XG4gICAgICAgICAgICAgICAgb2xkVmFsdWU6IGNsb25lRGVlcChzdG9yZS5kYXRhKCkpLCAvLyBDdXJyZW50IGRhdGEgYmVjb21lcyBvbGQgdmFsdWVcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZTogY2xvbmVEZWVwKGluaXRpYWxEYXRhKSwgLy8gUmVzZXQgdG8gdGhlIGluaXRpYWwgc3RhdGVcbiAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICBzdGF0ZTogJ3Jlc3RvcmVkJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NuYXBzaG90OiBzdG9yZS5zbmFwc2hvdCgpLCAvLyBTYXZlIHRoZSBwcmV2aW91cyBzdGF0ZVxuICAgICAgICAgICAgICAgIGRhdGE6IGluaXRpYWxEYXRhLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAncmVzdG9yZWQnLFxuICAgICAgICAgICAgICAgIGxhc3RDaGFuZ2U6IGNoYW5nZUV2ZW50LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgc3RhdGVcbiAgICAgICAgc2V0KGluaXRpYWxEYXRhOiBhbnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRhID0gc3RvcmUuZGF0YSgpO1xuICAgICAgICAgICAgaWYgKGlzRXF1YWwoY3VycmVudERhdGEsIGluaXRpYWxEYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjsgLy8gU2tpcCBpZiB0aGUgY3VycmVudCBzdGF0ZSBtYXRjaGVzIHRoZSBpbml0aWFsIHN0YXRlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZUV2ZW50OiBBWFBXaWRnZXRDb3JlQ29udGV4dENoYW5nZUV2ZW50ID0ge1xuICAgICAgICAgICAgICAgIG9sZFZhbHVlOiBudWxsLFxuICAgICAgICAgICAgICAgIG5ld1ZhbHVlOiBjbG9uZURlZXAoaW5pdGlhbERhdGEpLFxuICAgICAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBhdGNoU3RhdGUoc3RvcmUsIHtcbiAgICAgICAgICAgICAgICBpbml0aWFsU25hcHNob3Q6IGNsb25lRGVlcChpbml0aWFsRGF0YSksIC8vIFNhdmUgdGhlIGluaXRpYWwgc3RhdGVcbiAgICAgICAgICAgICAgICBwcmV2aW91c1NuYXBzaG90OiBzdG9yZS5zbmFwc2hvdCgpLCAvLyBTYXZlIHRoZSBjdXJyZW50IHN0YXRlIGFzIHRoZSBwcmV2aW91c1xuICAgICAgICAgICAgICAgIGRhdGE6IGluaXRpYWxEYXRhLFxuICAgICAgICAgICAgICAgIHN0YXRlOiAnaW5pdGlhdGVkJyxcbiAgICAgICAgICAgICAgICBsYXN0Q2hhbmdlOiBjaGFuZ2VFdmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIEdldCBhIHNwZWNpZmljIHZhbHVlXG4gICAgICAgIGdldFZhbHVlKHBhdGg6IHN0cmluZykge1xuICAgICAgICAgICAgcmV0dXJuIGdldChzdG9yZS5kYXRhKCksIHBhdGgpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8vIENoZWNrIGlmIGEgcGF0aCBleGlzdHMgaW4gdGhlIGNvbnRleHRcbiAgICAgICAgaGFzVmFsdWUocGF0aDogc3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gaGFzKHN0b3JlLmRhdGEoKSwgcGF0aCk7XG4gICAgICAgIH0sXG4gICAgfSkpXG4pO1xuIl19","export var AXPPageStatus;\n(function (AXPPageStatus) {\n // Idle statuses\n AXPPageStatus[\"Idle\"] = \"idle\";\n // Rendering statuses\n AXPPageStatus[\"Rendering\"] = \"rendering\";\n AXPPageStatus[\"Rendered\"] = \"rendered\";\n // Processing statuses\n AXPPageStatus[\"Processing\"] = \"processing\";\n // Submission statuses\n AXPPageStatus[\"Submitting\"] = \"submitting\";\n AXPPageStatus[\"Submitted\"] = \"submitted\";\n // Validation statuses\n AXPPageStatus[\"Validating\"] = \"validating\";\n AXPPageStatus[\"Validated\"] = \"validated\";\n // Error handling\n AXPPageStatus[\"Error\"] = \"error\";\n})(AXPPageStatus || (AXPPageStatus = {}));\nexport var AXPWidgetStatus;\n(function (AXPWidgetStatus) {\n // Rendering statuses\n AXPWidgetStatus[\"Rendering\"] = \"rendering\";\n AXPWidgetStatus[\"Rendered\"] = \"rendered\";\n // Processing statuses\n AXPWidgetStatus[\"Processing\"] = \"processing\";\n // Error handling\n AXPWidgetStatus[\"Error\"] = \"error\";\n})(AXPWidgetStatus || (AXPWidgetStatus = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXN0YXR1cy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LXN0YXR1cy50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxhQXFCWDtBQXJCRCxXQUFZLGFBQWE7SUFDckIsZ0JBQWdCO0lBQ2hCLDhCQUFhLENBQUE7SUFFYixxQkFBcUI7SUFDckIsd0NBQXVCLENBQUE7SUFDdkIsc0NBQXFCLENBQUE7SUFFckIsc0JBQXNCO0lBQ3RCLDBDQUF5QixDQUFBO0lBRXpCLHNCQUFzQjtJQUN0QiwwQ0FBeUIsQ0FBQTtJQUN6Qix3Q0FBdUIsQ0FBQTtJQUV2QixzQkFBc0I7SUFDdEIsMENBQXlCLENBQUE7SUFDekIsd0NBQXVCLENBQUE7SUFFdkIsaUJBQWlCO0lBQ2pCLGdDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQXJCVyxhQUFhLEtBQWIsYUFBYSxRQXFCeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxlQVVYO0FBVkQsV0FBWSxlQUFlO0lBQ3ZCLHFCQUFxQjtJQUNyQiwwQ0FBdUIsQ0FBQTtJQUN2Qix3Q0FBcUIsQ0FBQTtJQUVyQixzQkFBc0I7SUFDdEIsNENBQXlCLENBQUE7SUFFekIsaUJBQWlCO0lBQ2pCLGtDQUFlLENBQUE7QUFDbkIsQ0FBQyxFQVZXLGVBQWUsS0FBZixlQUFlLFFBVTFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQVhQUGFnZVN0YXR1cyB7XG4gICAgLy8gSWRsZSBzdGF0dXNlc1xuICAgIElkbGUgPSAnaWRsZScsICAgICAgICAgICAgICAgICAvLyBUaGUgcGFnZSBpcyBpZGxlLlxuXG4gICAgLy8gUmVuZGVyaW5nIHN0YXR1c2VzXG4gICAgUmVuZGVyaW5nID0gJ3JlbmRlcmluZycsICAgICAgIC8vIFRoZSBwYWdlIGlzIGJlaW5nIHJlbmRlcmVkLlxuICAgIFJlbmRlcmVkID0gJ3JlbmRlcmVkJywgICAgICAgICAvLyBUaGUgcmVuZGVyaW5nIHByb2Nlc3MgaXMgY29tcGxldGUuIHNob3VsZCBiZSByZW5hbWVkIHRvIGlkbGVcblxuICAgIC8vIFByb2Nlc3Npbmcgc3RhdHVzZXNcbiAgICBQcm9jZXNzaW5nID0gJ3Byb2Nlc3NpbmcnLCAgICAgLy8gVGhlIHBhZ2UgaXMgcGVyZm9ybWluZyBhIHRhc2sgb3IgaW50ZXJhY3Rpb24uXG5cbiAgICAvLyBTdWJtaXNzaW9uIHN0YXR1c2VzXG4gICAgU3VibWl0dGluZyA9ICdzdWJtaXR0aW5nJywgICAvLyBUaGUgZm9ybSBpcyBiZWluZyBzdWJtaXR0ZWQuXG4gICAgU3VibWl0dGVkID0gJ3N1Ym1pdHRlZCcsICAgICAvLyBTdWJtaXNzaW9uIGlzIGNvbXBsZXRlZC5cblxuICAgIC8vIFZhbGlkYXRpb24gc3RhdHVzZXNcbiAgICBWYWxpZGF0aW5nID0gJ3ZhbGlkYXRpbmcnLCAgICAgLy8gVGhlIGZvcm0gaXMgYmVpbmcgdmFsaWRhdGVkLlxuICAgIFZhbGlkYXRlZCA9ICd2YWxpZGF0ZWQnLCAgICAgICAvLyBWYWxpZGF0aW9uIGlzIGNvbXBsZXRlZC4gIFxuXG4gICAgLy8gRXJyb3IgaGFuZGxpbmdcbiAgICBFcnJvciA9ICdlcnJvcicsXG59XG5cbmV4cG9ydCBlbnVtIEFYUFdpZGdldFN0YXR1cyB7XG4gICAgLy8gUmVuZGVyaW5nIHN0YXR1c2VzXG4gICAgUmVuZGVyaW5nID0gJ3JlbmRlcmluZycsICAgICAgIC8vIFRoZSB3aWRnZXQgaXMgYmVpbmcgcmVuZGVyZWQuXG4gICAgUmVuZGVyZWQgPSAncmVuZGVyZWQnLCAgICAgICAgIC8vIFRoZSByZW5kZXJpbmcgcHJvY2VzcyBpcyBjb21wbGV0ZS5cblxuICAgIC8vIFByb2Nlc3Npbmcgc3RhdHVzZXNcbiAgICBQcm9jZXNzaW5nID0gJ3Byb2Nlc3NpbmcnLCAgICAgLy8gVGhlIHdpZGdldCBpcyBwZXJmb3JtaW5nIGEgdGFzayBvciBpbnRlcmFjdGlvbi5cblxuICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgRXJyb3IgPSAnZXJyb3InLCAgICAgICAgICAgICAgIC8vIEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBhbnkgcGhhc2UuXG59XG4iXX0=","import { computed, Injectable, signal } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { Subject } from 'rxjs';\nimport { AXPPageStatus, AXPWidgetStatus } from './widget-status.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetCoreElement {\n api() {\n return {};\n }\n actions() {\n return [];\n }\n}\nexport class AXPWidgetCoreService {\n constructor() {\n this.variables$ = signal({}, ...(ngDevMode ? [{ debugName: \"variables$\" }] : []));\n this.functions$ = signal({}, ...(ngDevMode ? [{ debugName: \"functions$\" }] : []));\n this.onRefresh = new Subject();\n this.widgets = new Map();\n this.onWidgetRegistered = new Subject();\n this.status$ = signal(AXPPageStatus.Rendering, ...(ngDevMode ? [{ debugName: \"status$\" }] : []));\n this.status = this.status$.asReadonly();\n this.isBusy = computed(() => {\n return [AXPPageStatus.Processing, AXPPageStatus.Submitting, AXPPageStatus.Rendering].includes(this.status());\n }, ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n this.registeredWidgetsCount = signal(0, ...(ngDevMode ? [{ debugName: \"registeredWidgetsCount\" }] : []));\n }\n get variables() {\n return this.variables$();\n }\n get functions() {\n return this.functions$();\n }\n updateStatus() {\n this.status$.update(() => this.detectStatus());\n this.registeredWidgetsCount.set(this.widgets.size);\n }\n detectStatus() {\n const statuses = Array.from(this.widgets.values()).map((c) => c.status());\n // Rendering statuses\n if (statuses.some((status) => status === AXPWidgetStatus.Rendering)) {\n return AXPPageStatus.Rendering;\n }\n if (statuses.every((status) => status === AXPWidgetStatus.Rendered)) {\n return AXPPageStatus.Rendered;\n }\n // Processing statuses\n if (statuses.some((status) => status === AXPWidgetStatus.Processing)) {\n return AXPPageStatus.Processing;\n }\n // Error handling\n if (statuses.some((status) => status === AXPWidgetStatus.Error)) {\n return AXPPageStatus.Error;\n }\n return AXPPageStatus.Rendered; // Default to Loaded when all widgets are in a completed state\n }\n refresh() {\n setTimeout(() => {\n this.onRefresh.next();\n }, 0);\n }\n setStatus(status) {\n this.status$.set(status);\n }\n setVariables(...args) {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.variables$.set(args[0]);\n else if (args.length == 2) {\n this.variables$.update((v) => set(v, args[0], args[1]));\n }\n }\n setFunctions(...args) {\n if (args.length == 0)\n return;\n else if (args.length == 1)\n this.functions$.set(args[0]);\n else if (args.length == 2) {\n this.functions$.update((v) => set(v, args[0], args[1]));\n }\n }\n registerWidget(id, widget) {\n this.widgets.set(id, widget);\n this.onWidgetRegistered.next({ id, widget });\n }\n getWidget(id) {\n return this.widgets.get(id);\n }\n /**\n * Waits until a widget with the given id is registered, then resolves with it.\n * If the widget is already registered, resolves immediately.\n * Optionally accepts a timeout (in ms) after which it resolves with undefined.\n */\n async waitForWidget(id, timeoutMs) {\n const existing = this.widgets.get(id);\n if (existing) {\n return existing;\n }\n return new Promise((resolve) => {\n let resolved = false;\n let timer = null;\n const sub = this.onWidgetRegistered.subscribe(({ id: registeredId, widget }) => {\n if (registeredId === id && !resolved) {\n resolved = true;\n sub.unsubscribe();\n if (timer) {\n clearTimeout(timer);\n }\n resolve(widget);\n }\n });\n if (timeoutMs != null && timeoutMs > 0) {\n timer = setTimeout(() => {\n if (!resolved) {\n resolved = true;\n sub.unsubscribe();\n resolve(undefined);\n }\n }, timeoutMs);\n }\n });\n }\n /**\n * Returns a list of registered widget ids (names).\n */\n listRegisteredWidgetNames() {\n return Array.from(this.widgets.keys());\n }\n ngOnDestroy() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvcmUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LWNvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBaUJ2RSxNQUFNLE9BQWdCLG9CQUFvQjtJQUl4QyxHQUFHO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsT0FBTztRQUNMLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLG9CQUFvQjtJQURqQztRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFNLEVBQUUsc0RBQUMsQ0FBQztRQUM3QixlQUFVLEdBQUcsTUFBTSxDQUE4QixFQUFFLHNEQUFDLENBQUM7UUFFdEQsY0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRXZELFlBQU8sR0FBRyxJQUFJLEdBQUcsRUFBZ0MsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBZ0QsQ0FBQztRQUVqRixZQUFPLEdBQUcsTUFBTSxDQUFnQixhQUFhLENBQUMsU0FBUyxtREFBQyxDQUFDO1FBQzFELFdBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRW5DLFdBQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FB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cnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSwgU2lnbmFsLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBQYWdlU3RhdHVzLCBBWFBXaWRnZXRTdGF0dXMgfSBmcm9tICcuL3dpZGdldC1zdGF0dXMudHlwZXMnO1xuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRDb3JlRWxlbWVudEFQSSA9IHsgW25hbWU6IHN0cmluZ106IFN1YmplY3Q8YW55PiB8IEZ1bmN0aW9uIH07XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldENvcmVFbGVtZW50QWN0aW9uID0ge1xuICB0aXRsZTogc3RyaW5nO1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbG9yPzogc3RyaW5nO1xuICAvLyBDYW4gYmUgYm9vbGVhbiBvciBhbiBleHByZXNzaW9uIHN0cmluZyBsaWtlICd7e2FwaS5nZXRTdGF0dXMoKS5pc0ZpcnN0fX0nXG4gIGRpc2FibGVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbiB8IHN0cmluZztcbiAgem9uZT86ICdoZWFkZXInIHwgJ2Zvb3Rlcic7XG4gIC8vIFBsYWNlbWVudCBpbnNpZGUgdGhlIHpvbmUgZm9yIGRpYWxvZyByZW5kZXJpbmdcbiAgcGxhY2VtZW50PzogJ3ByZWZpeCcgfCAnc3VmZml4JztcbiAgc2NvcGU/OiAncHJpbWFyeScgfCAnc2Vjb25kYXJ5Jztcbn07XG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQV2lkZ2V0Q29yZUVsZW1lbnQge1xuICBhYnN0cmFjdCBnZXQgaWQoKTogc3RyaW5nIHwgbnVsbDtcbiAgYWJzdHJhY3QgZ2V0IHN0YXR1cygpOiBTaWduYWw8QVhQV2lkZ2V0U3RhdHVzPjtcblxuICBhcGkoKTogQVhQV2lkZ2V0Q29yZUVsZW1lbnRBUEkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBhY3Rpb25zKCk6IEFYUFdpZGdldENvcmVFbGVtZW50QWN0aW9uW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29yZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHZhcmlhYmxlcyQgPSBzaWduYWw8YW55Pih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZnVuY3Rpb25zJCA9IHNpZ25hbDx7IFtrZXk6IHN0cmluZ106IEZ1bmN0aW9uIH0+KHt9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb25SZWZyZXNoOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwcml2YXRlIHdpZGdldHMgPSBuZXcgTWFwPHN0cmluZywgQVhQV2lkZ2V0Q29yZUVsZW1lbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb25XaWRnZXRSZWdpc3RlcmVkID0gbmV3IFN1YmplY3Q8eyBpZDogc3RyaW5nOyB3aWRnZXQ6IEFYUFdpZGdldENvcmVFbGVtZW50IH0+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXMkID0gc2lnbmFsPEFYUFBhZ2VTdGF0dXM+KEFYUFBhZ2VTdGF0dXMuUmVuZGVyaW5nKTtcbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1cyA9IHRoaXMuc3RhdHVzJC5hc1JlYWRvbmx5KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gW0FYUFBhZ2VTdGF0dXMuUHJvY2Vzc2luZywgQVhQUGFnZVN0YXR1cy5TdWJtaXR0aW5nLCBBWFBQYWdlU3RhdHVzLlJlbmRlcmluZ10uaW5jbHVkZXModGhpcy5zdGF0dXMoKSk7XG4gIH0pO1xuXG4gIHB1YmxpYyByZWdpc3RlcmVkV2lkZ2V0c0NvdW50ID0gc2lnbmFsPG51bWJlcj4oMCk7XG5cbiAgZ2V0IHZhcmlhYmxlcygpIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYWJsZXMkKCk7XG4gIH1cblxuICBnZXQgZnVuY3Rpb25zKCk6IHsgW2tleTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zJCgpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVN0YXR1cygpIHtcbiAgICB0aGlzLnN0YXR1cyQudXBkYXRlKCgpID0+IHRoaXMuZGV0ZWN0U3RhdHVzKCkpO1xuICAgIHRoaXMucmVnaXN0ZXJlZFdpZGdldHNDb3VudC5zZXQodGhpcy53aWRnZXRzLnNpemUpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXRlY3RTdGF0dXMoKTogQVhQUGFnZVN0YXR1cyB7XG4gICAgY29uc3Qgc3RhdHVzZXMgPSBBcnJheS5mcm9tKHRoaXMud2lkZ2V0cy52YWx1ZXMoKSkubWFwKChjKSA9PiBjLnN0YXR1cygpKTtcblxuICAgIC8vIFJlbmRlcmluZyBzdGF0dXNlc1xuICAgIGlmIChzdGF0dXNlcy5zb21lKChzdGF0dXMpID0+IHN0YXR1cyA9PT0gQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmluZykpIHtcbiAgICAgIHJldHVybiBBWFBQYWdlU3RhdHVzLlJlbmRlcmluZztcbiAgICB9XG4gICAgaWYgKHN0YXR1c2VzLmV2ZXJ5KChzdGF0dXMpID0+IHN0YXR1cyA9PT0gQVhQV2lkZ2V0U3RhdHVzLlJlbmRlcmVkKSkge1xuICAgICAgcmV0dXJuIEFYUFBhZ2VTdGF0dXMuUmVuZGVyZWQ7XG4gICAgfVxuXG4gICAgLy8gUHJvY2Vzc2luZyBzdGF0dXNlc1xuICAgIGlmIChzdGF0dXNlcy5zb21lKChzdGF0dXMpID0+IHN0YXR1cyA9PT0gQVhQV2lkZ2V0U3RhdHVzLlByb2Nlc3NpbmcpKSB7XG4gICAgICByZXR1cm4gQVhQUGFnZVN0YXR1cy5Qcm9jZXNzaW5nO1xuICAgIH1cblxuICAgIC8vIEVycm9yIGhhbmRsaW5nXG4gICAgaWYgKHN0YXR1c2VzLnNvbWUoKHN0YXR1cykgPT4gc3RhdHVzID09PSBBWFBXaWRnZXRTdGF0dXMuRXJyb3IpKSB7XG4gICAgICByZXR1cm4gQVhQUGFnZVN0YXR1cy5FcnJvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gQVhQUGFnZVN0YXR1cy5SZW5kZXJlZDsgLy8gRGVmYXVsdCB0byBMb2FkZWQgd2hlbiBhbGwgd2lkZ2V0cyBhcmUgaW4gYSBjb21wbGV0ZWQgc3RhdGVcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9uUmVmcmVzaC5uZXh0KCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBzZXRTdGF0dXMoc3RhdHVzOiBBWFBQYWdlU3RhdHVzKSB7XG4gICAgdGhpcy5zdGF0dXMkLnNldChzdGF0dXMpO1xuICB9XG5cbiAgc2V0VmFyaWFibGVzKGtleXNWYWx1ZXM6IGFueSk6IHZvaWQ7XG4gIHNldFZhcmlhYmxlcyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQ7XG4gIHNldFZhcmlhYmxlcyguLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgIGlmIChhcmdzLmxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT0gMSkgdGhpcy52YXJpYWJsZXMkLnNldChhcmdzWzBdKTtcbiAgICBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PSAyKSB7XG4gICAgICB0aGlzLnZhcmlhYmxlcyQudXBkYXRlKCh2KSA9PiBzZXQodiwgYXJnc1swXSwgYXJnc1sxXSkpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZ1bmN0aW9ucyhrZXlzVmFsdWVzOiBhbnkpOiB2b2lkO1xuICBzZXRGdW5jdGlvbnMoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkO1xuICBzZXRGdW5jdGlvbnMoLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPT0gMCkgcmV0dXJuO1xuICAgIGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09IDEpIHRoaXMuZnVuY3Rpb25zJC5zZXQoYXJnc1swXSk7XG4gICAgZWxzZSBpZiAoYXJncy5sZW5ndGggPT0gMikge1xuICAgICAgdGhpcy5mdW5jdGlvbnMkLnVwZGF0ZSgodikgPT4gc2V0KHYsIGFyZ3NbMF0sIGFyZ3NbMV0pKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3RlcldpZGdldChpZDogc3RyaW5nLCB3aWRnZXQ6IEFYUFdpZGdldENvcmVFbGVtZW50KSB7XG4gICAgdGhpcy53aWRnZXRzLnNldChpZCwgd2lkZ2V0KTtcbiAgICB0aGlzLm9uV2lkZ2V0UmVnaXN0ZXJlZC5uZXh0KHsgaWQsIHdpZGdldCB9KTtcbiAgfVxuXG4gIGdldFdpZGdldChpZDogc3RyaW5nKTogQVhQV2lkZ2V0Q29yZUVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLndpZGdldHMuZ2V0KGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWl0cyB1bnRpbCBhIHdpZGdldCB3aXRoIHRoZSBnaXZlbiBpZCBpcyByZWdpc3RlcmVkLCB0aGVuIHJlc29sdmVzIHdpdGggaXQuXG4gICAqIElmIHRoZSB3aWRnZXQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLCByZXNvbHZlcyBpbW1lZGlhdGVseS5cbiAgICogT3B0aW9uYWxseSBhY2NlcHRzIGEgdGltZW91dCAoaW4gbXMpIGFmdGVyIHdoaWNoIGl0IHJlc29sdmVzIHdpdGggdW5kZWZpbmVkLlxuICAgKi9cbiAgYXN5bmMgd2FpdEZvcldpZGdldChpZDogc3RyaW5nLCB0aW1lb3V0TXM/OiBudW1iZXIpOiBQcm9taXNlPEFYUFdpZGdldENvcmVFbGVtZW50IHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLndpZGdldHMuZ2V0KGlkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8QVhQV2lkZ2V0Q29yZUVsZW1lbnQgfCB1bmRlZmluZWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICBsZXQgcmVzb2x2ZWQgPSBmYWxzZTtcbiAgICAgIGxldCB0aW1lcjogYW55ID0gbnVsbDtcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMub25XaWRnZXRSZWdpc3RlcmVkLnN1YnNjcmliZSgoeyBpZDogcmVnaXN0ZXJlZElkLCB3aWRnZXQgfSkgPT4ge1xuICAgICAgICBpZiAocmVnaXN0ZXJlZElkID09PSBpZCAmJiAhcmVzb2x2ZWQpIHtcbiAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgaWYgKHRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKHdpZGdldCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGltZW91dE1zICE9IG51bGwgJiYgdGltZW91dE1zID4gMCkge1xuICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgcmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgdGltZW91dE1zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiByZWdpc3RlcmVkIHdpZGdldCBpZHMgKG5hbWVzKS5cbiAgICovXG4gIGxpc3RSZWdpc3RlcmVkV2lkZ2V0TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMud2lkZ2V0cy5rZXlzKCkpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7fVxufVxuIl19","const AXPWidgetsCatalog = {\n timeDuration: 'time-duration',\n timeDurationFilter: 'time-duration-filter',\n checkbox: 'checkbox-editor',\n color: 'color-editor',\n connectedLists: 'connected-lists-editor',\n list: 'list-editor',\n contact: 'contact-editor',\n dateTime: 'date-time-editor',\n largeText: 'large-text-editor',\n number: 'number-editor',\n numberUnit: 'number-unit-editor',\n password: 'password-editor',\n richText: 'rich-text-editor',\n select: 'select-editor',\n selectionList: 'selection-list-editor',\n text: 'text-editor',\n table: 'table-editor',\n toggle: 'toggle-editor',\n blockLayout: 'block-layout',\n pageLayout: 'page-layout',\n repeaterLayout: 'repeater-layout',\n textBlockLayout: 'text-block-layout',\n fileUploader: 'file-uploader',\n fileTypeExtension: 'file-type-extension',\n map: 'map',\n imageMarker: 'image-marker',\n image: 'image',\n gallery: 'gallery',\n signature: 'signature',\n buttonAction: 'button-action',\n document: 'document-layout',\n lookup: 'lookup-editor',\n formField: 'form-field',\n qrcode: 'qrcode',\n schedulerPicker: 'scheduler-picker',\n advancedGrid: 'advanced-grid-layout',\n advancedGridItem: 'advanced-grid-item-layout',\n grid: 'grid-layout',\n gridItem: 'grid-item-layout',\n template: 'template',\n templateDesigner: 'template-designer',\n cronJob: 'cron-job',\n spacing: 'spacing',\n direction: 'direction',\n border: 'border',\n flexLayout: 'flex-layout',\n flexItem: 'flex-item-layout',\n tableLayout: 'table-layout',\n tableItem: 'table-item-layout',\n avatar: 'avatar',\n themePaletteChooser: 'theme-palette-chooser',\n themeModeChooser: 'theme-mode-chooser',\n menuOrientationChooser: 'menu-orientation-chooser',\n fontStyleChooser: 'font-style-chooser',\n fontSizeChooser: 'font-size-chooser',\n iconChooser: 'icon-chooser',\n icon: 'icon',\n themeColorChooser: 'theme-color-chooser',\n gridOptions: 'grid-options',\n gridItemOptions: 'grid-item-options',\n advancedGridOptions: 'advanced-grid-options',\n stringFilter: 'string-filter',\n numberFilter: 'number-filter',\n dateTimeFilter: 'datetime-filter',\n booleanFilter: 'boolean-filter',\n lookupFilter: 'lookup-filter',\n flexOptions: 'flex-options',\n flexItemOptions: 'flex-item-options',\n selectFilter: 'select-filter',\n requiredValidation: 'required-validation',\n regularExpressionValidation: 'regular-expression-validation',\n minLengthValidation: 'min-length-validation',\n maxLengthValidation: 'max-length-validation',\n lessThanValidation: 'less-than-validation',\n greaterThanValidation: 'greater-than-validation',\n betweenValidation: 'between-validation',\n equalValidation: 'equal-validation',\n callbackValidation: 'callback-validation',\n donutChart: 'donut-chart',\n lineChart: 'line-chart',\n barChart: 'bar-chart',\n gaugeChart: 'gauge-chart',\n stickyNote: 'sticky-note',\n clockCalendar: 'clock-calendar',\n analogClock: 'analog-clock',\n weather: 'weather',\n minimalWeather: 'minimal-weather',\n advancedWeather: 'advanced-weather',\n metaData: 'meta-data-editor',\n templateEditor: 'template-box-editor',\n panel: 'panel',\n notification: 'notification',\n taskBoard: 'task-board',\n comment: 'comment',\n dataList: 'data-list',\n listToolbar: 'list-toolbar',\n entityList: 'entity-list',\n editorJs: 'editor-js-editor',\n documentUploader: 'document-uploader',\n signatureList: 'signature-list',\n stepWizard: 'step-wizard',\n progressBar: 'progress-bar-editor',\n rate: 'rate-picker-editor'\n};\nexport { AXPWidgetsCatalog };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNhdGFsb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL3dpZGdldC1jYXRhbG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0saUJBQWlCLEdBQXNCO0lBQzNDLFlBQVksRUFBRSxlQUFlO0lBQzdCLGtCQUFrQixFQUFFLHNCQUFzQjtJQUMxQyxRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLEtBQUssRUFBRSxjQUFjO0lBQ3JCLGNBQWMsRUFBRSx3QkFBd0I7SUFDeEMsSUFBSSxFQUFFLGFBQWE7SUFDbkIsT0FBTyxFQUFFLGdCQUFnQjtJQUN6QixRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLFNBQVMsRUFBRSxtQkFBbUI7SUFDOUIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLFFBQVEsRUFBRSxrQkFBa0I7SUFDNUIsTUFBTSxFQUFFLGVBQWU7SUFDdkIsYUFBYSxFQUFFLHVCQUF1QjtJQUN0QyxJQUFJLEVBQUUsYUFBYTtJQUNuQixLQUFLLEVBQUUsY0FBYztJQUNyQixNQUFNLEVBQUUsZUFBZTtJQUN2QixXQUFXLEVBQUUsY0FBYztJQUMzQixVQUFVLEVBQUUsYUFBYTtJQUN6QixjQUFjLEVBQUUsaUJBQWlCO0lBQ2pDLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsWUFBWSxFQUFFLGVBQWU7SUFDN0IsaUJBQWlCLEVBQUUscUJBQXFCO0lBQ3hDLEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLGNBQWM7SUFDM0IsS0FBSyxFQUFFLE9BQU87SUFDZCxPQUFPLEVBQUUsU0FBUztJQUNsQixTQUFTLEVBQUUsV0FBVztJQUN0QixZQUFZLEVBQUUsZUFBZTtJQUM3QixRQUFRLEVBQUUsaUJBQWlCO0lBQzNCLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLGVBQWUsRUFBRSxrQkFBa0I7SUFDbkMsWUFBWSxFQUFFLHNCQUFzQjtJQUNwQyxnQkFBZ0IsRUFBRSwyQkFBMkI7SUFDN0MsSUFBSSxFQUFFLGFBQWE7SUFDbkIsUUFBUSxFQUFFLGtCQUFrQjtJQUM1QixRQUFRLEVBQUUsVUFBVTtJQUNwQixnQkFBZ0IsRUFBRSxtQkFBbUI7SUFDckMsT0FBTyxFQUFFLFVBQVU7SUFDbkIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsVUFBVSxFQUFFLGFBQWE7SUFDekIsUUFBUSxFQUFFLGtCQUFrQjtJQUM1QixXQUFXLEVBQUUsY0FBYztJQUMzQixTQUFTLEVBQUUsbUJBQW1CO0lBQzlCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLG1CQUFtQixFQUFFLHVCQUF1QjtJQUM1QyxnQkFBZ0IsRUFBRSxvQkFBb0I7SUFDdEMsc0JBQXNCLEVBQUUsMEJBQTBCO0lBQ2xELGdCQUFnQixFQUFFLG9CQUFvQjtJQUN0QyxlQUFlLEVBQUUsbUJBQW1CO0lBQ3BDLFdBQVcsRUFBRSxjQUFjO0lBQzNCLElBQUksRUFBRSxNQUFNO0lBQ1osaUJBQWlCLEVBQUUscUJBQXFCO0lBQ3hDLFdBQVcsRUFBRSxjQUFjO0lBQzNCLGVBQWUsRUFBRSxtQkFBbUI7SUFDcEMsbUJBQW1CLEVBQUUsdUJBQXVCO0lBQzVDLFlBQVksRUFBRSxlQUFlO0lBQzdCLFlBQVksRUFBRSxlQUFlO0lBQzdCLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsYUFBYSxFQUFFLGdCQUFnQjtJQUMvQixZQUFZLEVBQUUsZUFBZTtJQUM3QixXQUFXLEVBQUUsY0FBYztJQUMzQixlQUFlLEVBQUUsbUJBQW1CO0lBQ3BDLFlBQVksRUFBRSxlQUFlO0lBQzdCLGtCQUFrQixFQUFFLHFCQUFxQjtJQUN6QywyQkFBMkIsRUFBRSwrQkFBK0I7SUFDNUQsbUJBQW1CLEVBQUUsdUJBQXVCO0lBQzVDLG1CQUFtQixFQUFFLHVCQUF1QjtJQUM1QyxrQkFBa0IsRUFBRSxzQkFBc0I7SUFDMUMscUJBQXFCLEVBQUUseUJBQXlCO0lBQ2hELGlCQUFpQixFQUFFLG9CQUFvQjtJQUN2QyxlQUFlLEVBQUUsa0JBQWtCO0lBQ25DLGtCQUFrQixFQUFFLHFCQUFxQjtJQUN6QyxVQUFVLEVBQUUsYUFBYTtJQUN6QixTQUFTLEVBQUUsWUFBWTtJQUN2QixRQUFRLEVBQUUsV0FBVztJQUNyQixVQUFVLEVBQUUsYUFBYTtJQUN6QixVQUFVLEVBQUUsYUFBYTtJQUN6QixhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLFdBQVcsRUFBRSxjQUFjO0lBQzNCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsZUFBZSxFQUFFLGtCQUFrQjtJQUNuQyxRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLGNBQWMsRUFBRSxxQkFBcUI7SUFDckMsS0FBSyxFQUFFLE9BQU87SUFDZCxZQUFZLEVBQUUsY0FBYztJQUM1QixTQUFTLEVBQUUsWUFBWTtJQUN2QixPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsV0FBVztJQUNyQixXQUFXLEVBQUUsY0FBYztJQUMzQixVQUFVLEVBQUUsYUFBYTtJQUN6QixRQUFRLEVBQUUsa0JBQWtCO0lBQzVCLGdCQUFnQixFQUFFLG1CQUFtQjtJQUNyQyxhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLFVBQVUsRUFBRSxhQUFhO0lBQ3pCLFdBQVcsRUFBRSxxQkFBcUI7SUFDbEMsSUFBSSxFQUFFLG9CQUFvQjtDQUMzQixDQUFDO0FBRUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFBXaWRnZXRUeXBlc01hcCB9IGZyb20gJy4vd2lkZ2V0LW1hcCc7XG5cbmNvbnN0IEFYUFdpZGdldHNDYXRhbG9nOiBBWFBXaWRnZXRUeXBlc01hcCA9IHtcbiAgdGltZUR1cmF0aW9uOiAndGltZS1kdXJhdGlvbicsXG4gIHRpbWVEdXJhdGlvbkZpbHRlcjogJ3RpbWUtZHVyYXRpb24tZmlsdGVyJyxcbiAgY2hlY2tib3g6ICdjaGVja2JveC1lZGl0b3InLFxuICBjb2xvcjogJ2NvbG9yLWVkaXRvcicsXG4gIGNvbm5lY3RlZExpc3RzOiAnY29ubmVjdGVkLWxpc3RzLWVkaXRvcicsXG4gIGxpc3Q6ICdsaXN0LWVkaXRvcicsXG4gIGNvbnRhY3Q6ICdjb250YWN0LWVkaXRvcicsXG4gIGRhdGVUaW1lOiAnZGF0ZS10aW1lLWVkaXRvcicsXG4gIGxhcmdlVGV4dDogJ2xhcmdlLXRleHQtZWRpdG9yJyxcbiAgbnVtYmVyOiAnbnVtYmVyLWVkaXRvcicsXG4gIG51bWJlclVuaXQ6ICdudW1iZXItdW5pdC1lZGl0b3InLFxuICBwYXNzd29yZDogJ3Bhc3N3b3JkLWVkaXRvcicsXG4gIHJpY2hUZXh0OiAncmljaC10ZXh0LWVkaXRvcicsXG4gIHNlbGVjdDogJ3NlbGVjdC1lZGl0b3InLFxuICBzZWxlY3Rpb25MaXN0OiAnc2VsZWN0aW9uLWxpc3QtZWRpdG9yJyxcbiAgdGV4dDogJ3RleHQtZWRpdG9yJyxcbiAgdGFibGU6ICd0YWJsZS1lZGl0b3InLFxuICB0b2dnbGU6ICd0b2dnbGUtZWRpdG9yJyxcbiAgYmxvY2tMYXlvdXQ6ICdibG9jay1sYXlvdXQnLFxuICBwYWdlTGF5b3V0OiAncGFnZS1sYXlvdXQnLFxuICByZXBlYXRlckxheW91dDogJ3JlcGVhdGVyLWxheW91dCcsXG4gIHRleHRCbG9ja0xheW91dDogJ3RleHQtYmxvY2stbGF5b3V0JyxcbiAgZmlsZVVwbG9hZGVyOiAnZmlsZS11cGxvYWRlcicsXG4gIGZpbGVUeXBlRXh0ZW5zaW9uOiAnZmlsZS10eXBlLWV4dGVuc2lvbicsXG4gIG1hcDogJ21hcCcsXG4gIGltYWdlTWFya2VyOiAnaW1hZ2UtbWFya2VyJyxcbiAgaW1hZ2U6ICdpbWFnZScsXG4gIGdhbGxlcnk6ICdnYWxsZXJ5JyxcbiAgc2lnbmF0dXJlOiAnc2lnbmF0dXJlJyxcbiAgYnV0dG9uQWN0aW9uOiAnYnV0dG9uLWFjdGlvbicsXG4gIGRvY3VtZW50OiAnZG9jdW1lbnQtbGF5b3V0JyxcbiAgbG9va3VwOiAnbG9va3VwLWVkaXRvcicsXG4gIGZvcm1GaWVsZDogJ2Zvcm0tZmllbGQnLFxuICBxcmNvZGU6ICdxcmNvZGUnLFxuICBzY2hlZHVsZXJQaWNrZXI6ICdzY2hlZHVsZXItcGlja2VyJyxcbiAgYWR2YW5jZWRHcmlkOiAnYWR2YW5jZWQtZ3JpZC1sYXlvdXQnLFxuICBhZHZhbmNlZEdyaWRJdGVtOiAnYWR2YW5jZWQtZ3JpZC1pdGVtLWxheW91dCcsXG4gIGdyaWQ6ICdncmlkLWxheW91dCcsXG4gIGdyaWRJdGVtOiAnZ3JpZC1pdGVtLWxheW91dCcsXG4gIHRlbXBsYXRlOiAndGVtcGxhdGUnLFxuICB0ZW1wbGF0ZURlc2lnbmVyOiAndGVtcGxhdGUtZGVzaWduZXInLFxuICBjcm9uSm9iOiAnY3Jvbi1qb2InLFxuICBzcGFjaW5nOiAnc3BhY2luZycsXG4gIGRpcmVjdGlvbjogJ2RpcmVjdGlvbicsXG4gIGJvcmRlcjogJ2JvcmRlcicsXG4gIGZsZXhMYXlvdXQ6ICdmbGV4LWxheW91dCcsXG4gIGZsZXhJdGVtOiAnZmxleC1pdGVtLWxheW91dCcsXG4gIHRhYmxlTGF5b3V0OiAndGFibGUtbGF5b3V0JyxcbiAgdGFibGVJdGVtOiAndGFibGUtaXRlbS1sYXlvdXQnLFxuICBhdmF0YXI6ICdhdmF0YXInLFxuICB0aGVtZVBhbGV0dGVDaG9vc2VyOiAndGhlbWUtcGFsZXR0ZS1jaG9vc2VyJyxcbiAgdGhlbWVNb2RlQ2hvb3NlcjogJ3RoZW1lLW1vZGUtY2hvb3NlcicsXG4gIG1lbnVPcmllbnRhdGlvbkNob29zZXI6ICdtZW51LW9yaWVudGF0aW9uLWNob29zZXInLFxuICBmb250U3R5bGVDaG9vc2VyOiAnZm9udC1zdHlsZS1jaG9vc2VyJyxcbiAgZm9udFNpemVDaG9vc2VyOiAnZm9udC1zaXplLWNob29zZXInLFxuICBpY29uQ2hvb3NlcjogJ2ljb24tY2hvb3NlcicsXG4gIGljb246ICdpY29uJyxcbiAgdGhlbWVDb2xvckNob29zZXI6ICd0aGVtZS1jb2xvci1jaG9vc2VyJyxcbiAgZ3JpZE9wdGlvbnM6ICdncmlkLW9wdGlvbnMnLFxuICBncmlkSXRlbU9wdGlvbnM6ICdncmlkLWl0ZW0tb3B0aW9ucycsXG4gIGFkdmFuY2VkR3JpZE9wdGlvbnM6ICdhZHZhbmNlZC1ncmlkLW9wdGlvbnMnLFxuICBzdHJpbmdGaWx0ZXI6ICdzdHJpbmctZmlsdGVyJyxcbiAgbnVtYmVyRmlsdGVyOiAnbnVtYmVyLWZpbHRlcicsXG4gIGRhdGVUaW1lRmlsdGVyOiAnZGF0ZXRpbWUtZmlsdGVyJyxcbiAgYm9vbGVhbkZpbHRlcjogJ2Jvb2xlYW4tZmlsdGVyJyxcbiAgbG9va3VwRmlsdGVyOiAnbG9va3VwLWZpbHRlcicsXG4gIGZsZXhPcHRpb25zOiAnZmxleC1vcHRpb25zJyxcbiAgZmxleEl0ZW1PcHRpb25zOiAnZmxleC1pdGVtLW9wdGlvbnMnLFxuICBzZWxlY3RGaWx0ZXI6ICdzZWxlY3QtZmlsdGVyJyxcbiAgcmVxdWlyZWRWYWxpZGF0aW9uOiAncmVxdWlyZWQtdmFsaWRhdGlvbicsXG4gIHJlZ3VsYXJFeHByZXNzaW9uVmFsaWRhdGlvbjogJ3JlZ3VsYXItZXhwcmVzc2lvbi12YWxpZGF0aW9uJyxcbiAgbWluTGVuZ3RoVmFsaWRhdGlvbjogJ21pbi1sZW5ndGgtdmFsaWRhdGlvbicsXG4gIG1heExlbmd0aFZhbGlkYXRpb246ICdtYXgtbGVuZ3RoLXZhbGlkYXRpb24nLFxuICBsZXNzVGhhblZhbGlkYXRpb246ICdsZXNzLXRoYW4tdmFsaWRhdGlvbicsXG4gIGdyZWF0ZXJUaGFuVmFsaWRhdGlvbjogJ2dyZWF0ZXItdGhhbi12YWxpZGF0aW9uJyxcbiAgYmV0d2VlblZhbGlkYXRpb246ICdiZXR3ZWVuLXZhbGlkYXRpb24nLFxuICBlcXVhbFZhbGlkYXRpb246ICdlcXVhbC12YWxpZGF0aW9uJyxcbiAgY2FsbGJhY2tWYWxpZGF0aW9uOiAnY2FsbGJhY2stdmFsaWRhdGlvbicsXG4gIGRvbnV0Q2hhcnQ6ICdkb251dC1jaGFydCcsXG4gIGxpbmVDaGFydDogJ2xpbmUtY2hhcnQnLFxuICBiYXJDaGFydDogJ2Jhci1jaGFydCcsXG4gIGdhdWdlQ2hhcnQ6ICdnYXVnZS1jaGFydCcsXG4gIHN0aWNreU5vdGU6ICdzdGlja3ktbm90ZScsXG4gIGNsb2NrQ2FsZW5kYXI6ICdjbG9jay1jYWxlbmRhcicsXG4gIGFuYWxvZ0Nsb2NrOiAnYW5hbG9nLWNsb2NrJyxcbiAgd2VhdGhlcjogJ3dlYXRoZXInLFxuICBtaW5pbWFsV2VhdGhlcjogJ21pbmltYWwtd2VhdGhlcicsXG4gIGFkdmFuY2VkV2VhdGhlcjogJ2FkdmFuY2VkLXdlYXRoZXInLFxuICBtZXRhRGF0YTogJ21ldGEtZGF0YS1lZGl0b3InLFxuICB0ZW1wbGF0ZUVkaXRvcjogJ3RlbXBsYXRlLWJveC1lZGl0b3InLFxuICBwYW5lbDogJ3BhbmVsJyxcbiAgbm90aWZpY2F0aW9uOiAnbm90aWZpY2F0aW9uJyxcbiAgdGFza0JvYXJkOiAndGFzay1ib2FyZCcsXG4gIGNvbW1lbnQ6ICdjb21tZW50JyxcbiAgZGF0YUxpc3Q6ICdkYXRhLWxpc3QnLFxuICBsaXN0VG9vbGJhcjogJ2xpc3QtdG9vbGJhcicsXG4gIGVudGl0eUxpc3Q6ICdlbnRpdHktbGlzdCcsXG4gIGVkaXRvckpzOiAnZWRpdG9yLWpzLWVkaXRvcicsXG4gIGRvY3VtZW50VXBsb2FkZXI6ICdkb2N1bWVudC11cGxvYWRlcicsXG4gIHNpZ25hdHVyZUxpc3Q6ICdzaWduYXR1cmUtbGlzdCcsXG4gIHN0ZXBXaXphcmQ6ICdzdGVwLXdpemFyZCcsXG4gIHByb2dyZXNzQmFyOiAncHJvZ3Jlc3MtYmFyLWVkaXRvcicsXG4gIHJhdGU6ICdyYXRlLXBpY2tlci1lZGl0b3InXG59O1xuXG5leHBvcnQgeyBBWFBXaWRnZXRzQ2F0YWxvZyB9O1xuIl19","import { InjectionToken } from '@angular/core';\nimport { cloneDeep, isNil, merge } from 'lodash-es';\nimport { AXPWidgetsCatalog } from './widget-catalog';\nexport function cloneProperty(property, values) {\n return merge(cloneDeep(property), values);\n}\nexport function createStringProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.text,\n },\n },\n visible: !isNil(ctor.visible) ? ctor.visible : true,\n };\n}\nexport function createNumberProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'number',\n defaultValue: ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.number,\n options: ctor.options,\n },\n },\n visible: !isNil(ctor.visible) ? ctor.visible : true,\n };\n}\nexport function createBooleanProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'boolean',\n defaultValue: ctor.defaultValue ?? false,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.toggle,\n },\n },\n visible: ctor.visible ?? true,\n };\n}\nexport function createSelectProperty(ctor) {\n return {\n name: ctor.name,\n title: ctor.title,\n group: ctor.group,\n schema: {\n dataType: 'string',\n defaultValue: Array.isArray(ctor.defaultValue)\n ? ctor.defaultValue.map((item) => (typeof item === 'string' ? { id: item } : item))\n : typeof ctor.defaultValue === 'string'\n ? { id: ctor.defaultValue, title: ctor.defaultValue }\n : ctor.defaultValue,\n interface: {\n name: ctor.name,\n path: ctor.path ?? ctor.name,\n type: AXPWidgetsCatalog.select,\n options: {\n dataSource: ctor.dataSource.map((item) => (typeof item === 'string' ? { id: item, title: item } : item)),\n },\n },\n },\n visible: ctor.visible ?? true,\n };\n}\nexport const AXP_WIDGET_TOKEN = new InjectionToken('AXP_WIDGET_TOKEN');\nexport const AXP_WIDGET_COLUMN_TOKEN = new InjectionToken('AXP_WIDGET_COLUMN_TOKEN');\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUE2QnJELE1BQU0sVUFBVSxhQUFhLENBQzNCLFFBQTJCLEVBQzNCLE1BQTJDO0lBRTNDLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBT3BDO0lBQ0MsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7UUFDakIsTUFBTSxFQUFFO1lBQ04sUUFBUSxFQUFFLFFBQVE7WUFDbEIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLFNBQVMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUk7Z0JBQzVCLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQzdCO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJO0tBQ3BELENBQUM7QUFDSixDQUFDO0FB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aUJBQ3pHO2FBQ0Y7U0FDRjtRQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUk7S0FDOUIsQ0FBQztBQUNKLENBQUM7QUFrQ0QsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxjQUFjLENBQXFCLGtCQUFrQixDQUFDLENBQUM7QUFDM0YsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQTJCLHlCQUF5QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWFBEYXRhVHlwZSxcbiAgQVhQRXhwcmVzc2lvbixcbiAgQVhQTWV0YURhdGEsXG4gIEFYUE9wdGlvbnNEYXRhLFxuICBBWFBQYXJ0aWFsTmVzdGVkLFxuICBBWFBWYWxpZGF0aW9uUnVsZXMsXG4gIEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbnMsXG4gIEFYUFdpZGdldFRyaWdnZXJzLFxufSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNOaWwsIG1lcmdlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUFdpZGdldHNDYXRhbG9nIH0gZnJvbSAnLi93aWRnZXQtY2F0YWxvZyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDYXRlZ29yeSB9IGZyb20gJy4vd2lkZ2V0LWNhdGVnb3JpZXMnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0R3JvdXAgfSBmcm9tICcuL3dpZGdldC1ncm91cC50eXBlcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRUeXBlc01hcCB9IGZyb20gJy4vd2lkZ2V0LW1hcCc7XG5pbXBvcnQgeyBBWFBQYWdlU3RhdHVzIH0gZnJvbSAnLi93aWRnZXQtc3RhdHVzLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBvcmRlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldFByb3BlcnR5IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIG9yZGVyPzogbnVtYmVyO1xuICBzY2hlbWE6IHtcbiAgICBkYXRhVHlwZTogQVhQRGF0YVR5cGU7XG4gICAgbnVsbGFibGU/OiBib29sZWFuO1xuICAgIGRlZmF1bHRWYWx1ZT86IGFueSB8IHN0cmluZyB8ICgoY29udGV4dDogYW55IHwgbnVsbCkgPT4gYW55KTtcbiAgICBpbnRlcmZhY2U6IFJlcXVpcmVkPFBpY2s8QVhQV2lkZ2V0Tm9kZSwgJ3BhdGgnPj4gJiBPbWl0PEFYUFdpZGdldE5vZGUsICdwYXRoJz47XG4gIH07XG4gIG9wdGlvbnM/OiBBWFBPcHRpb25zRGF0YTtcbiAgdmFsaWRhdGlvbnM/OiBBWFBWYWxpZGF0aW9uUnVsZXM7XG4gIHZpc2libGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9uZVByb3BlcnR5KFxuICBwcm9wZXJ0eTogQVhQV2lkZ2V0UHJvcGVydHksXG4gIHZhbHVlczogQVhQUGFydGlhbE5lc3RlZDxBWFBXaWRnZXRQcm9wZXJ0eT4sXG4pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiBtZXJnZShjbG9uZURlZXAocHJvcGVydHkpLCB2YWx1ZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3RyaW5nUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IGN0b3IuZGVmYXVsdFZhbHVlLFxuICAgICAgaW50ZXJmYWNlOiB7XG4gICAgICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICAgICAgcGF0aDogY3Rvci5wYXRoID8/IGN0b3IubmFtZSxcbiAgICAgICAgdHlwZTogQVhQV2lkZ2V0c0NhdGFsb2cudGV4dCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiAhaXNOaWwoY3Rvci52aXNpYmxlKSA/IGN0b3IudmlzaWJsZSA6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOdW1iZXJQcm9wZXJ0eShjdG9yOiB7XG4gIGRlZmF1bHRWYWx1ZT86IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBncm91cDogQVhQV2lkZ2V0UHJvcGVydHlHcm91cDtcbiAgdmlzaWJsZT86IGJvb2xlYW47XG4gIG9wdGlvbnM/OiB7XG4gICAgbWluVmFsdWU/OiBudW1iZXI7XG4gICAgbWF4VmFsdWU/OiBudW1iZXI7XG4gICAgZGVjaW1hbHM/OiBudW1iZXI7XG4gIH07XG59KTogQVhQV2lkZ2V0UHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGN0b3IubmFtZSxcbiAgICB0aXRsZTogY3Rvci50aXRsZSxcbiAgICBncm91cDogY3Rvci5ncm91cCxcbiAgICBzY2hlbWE6IHtcbiAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy5udW1iZXIsXG4gICAgICAgIG9wdGlvbnM6IGN0b3Iub3B0aW9ucyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB2aXNpYmxlOiAhaXNOaWwoY3Rvci52aXNpYmxlKSA/IGN0b3IudmlzaWJsZSA6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb29sZWFuUHJvcGVydHkoY3Rvcjoge1xuICBkZWZhdWx0VmFsdWU/OiBib29sZWFuO1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGdyb3VwOiBBWFBXaWRnZXRQcm9wZXJ0eUdyb3VwO1xuICB2aXNpYmxlPzogYm9vbGVhbjtcbn0pOiBBWFBXaWRnZXRQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogY3Rvci5uYW1lLFxuICAgIHRpdGxlOiBjdG9yLnRpdGxlLFxuICAgIGdyb3VwOiBjdG9yLmdyb3VwLFxuICAgIHNjaGVtYToge1xuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogY3Rvci5kZWZhdWx0VmFsdWUgPz8gZmFsc2UsXG4gICAgICBpbnRlcmZhY2U6IHtcbiAgICAgICAgbmFtZTogY3Rvci5uYW1lLFxuICAgICAgICBwYXRoOiBjdG9yLnBhdGggPz8gY3Rvci5uYW1lLFxuICAgICAgICB0eXBlOiBBWFBXaWRnZXRzQ2F0YWxvZy50b2dnbGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgdmlzaWJsZTogY3Rvci52aXNpYmxlID8/IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTZWxlY3RQcm9wZXJ0eTxUID0gc3RyaW5nIHwgeyBpZDogc3RyaW5nOyB0aXRsZTogc3RyaW5nIH0+KGN0b3I6IHtcbiAgZGVmYXVsdFZhbHVlOiBUIHwgVFtdIHwgYW55O1xuICBkYXRhU291cmNlOiBUW107XG4gIG5hbWU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgZ3JvdXA6IEFYUFdpZGdldFByb3BlcnR5R3JvdXA7XG4gIHZpc2libGU/OiBib29sZWFuO1xufSk6IEFYUFdpZGdldFByb3BlcnR5IHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgdGl0bGU6IGN0b3IudGl0bGUsXG4gICAgZ3JvdXA6IGN0b3IuZ3JvdXAsXG4gICAgc2NoZW1hOiB7XG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXG4gICAgICBkZWZhdWx0VmFsdWU6IEFycmF5LmlzQXJyYXkoY3Rvci5kZWZhdWx0VmFsdWUpXG4gICAgICAgID8gY3Rvci5kZWZhdWx0VmFsdWUubWFwKChpdGVtKSA9PiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8geyBpZDogaXRlbSB9IDogaXRlbSkpXG4gICAgICAgIDogdHlwZW9mIGN0b3IuZGVmYXVsdFZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8geyBpZDogY3Rvci5kZWZhdWx0VmFsdWUsIHRpdGxlOiBjdG9yLmRlZmF1bHRWYWx1ZSB9XG4gICAgICAgICAgOiBjdG9yLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGludGVyZmFjZToge1xuICAgICAgICBuYW1lOiBjdG9yLm5hbWUsXG4gICAgICAgIHBhdGg6IGN0b3IucGF0aCA/PyBjdG9yLm5hbWUsXG4gICAgICAgIHR5cGU6IEFYUFdpZGdldHNDYXRhbG9nLnNlbGVjdCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGRhdGFTb3VyY2U6IGN0b3IuZGF0YVNvdXJjZS5tYXAoKGl0ZW0pID0+ICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyB7IGlkOiBpdGVtLCB0aXRsZTogaXRlbSB9IDogaXRlbSkpLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHZpc2libGU6IGN0b3IudmlzaWJsZSA/PyB0cnVlLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldE5vZGUge1xuICB0eXBlOiBBWFBXaWRnZXRUeXBlc01hcFtrZXlvZiBBWFBXaWRnZXRUeXBlc01hcF0gfCBrZXlvZiBBWFBXaWRnZXRUeXBlc01hcCB8IHN0cmluZztcbiAgbW9kZT86IEFYUFdpZGdldFJlbmRlck1vZGU7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHZpc2libGU/OiBib29sZWFuIHwgQVhQRXhwcmVzc2lvbjtcbiAgZGVmYXVsdFZhbHVlPzogYW55O1xuICBmb3JtdWxhPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEFYUFdpZGdldE5vZGVbXTtcbiAgb3B0aW9ucz86IEFYUE9wdGlvbnNEYXRhO1xuICB0cmlnZ2Vycz86IEFYUFdpZGdldFRyaWdnZXJzO1xuICBtZXRhPzogQVhQTWV0YURhdGE7XG4gIHZhbHVlVHJhbnNmb3Jtcz86IEFYUFZhbHVlVHJhbnNmb3JtZXJGdW5jdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Tm9kZVRva2VuPFRPcHRpb25zIGV4dGVuZHMgQVhQT3B0aW9uc0RhdGEgPSBBWFBPcHRpb25zRGF0YT4ge1xuICBkZWZhdWx0VmFsdWU/OiBhbnk7XG4gIGNvbmZpZzogQVhQV2lkZ2V0Q29uZmlnO1xuICBub2RlOiBBWFBXaWRnZXROb2RlO1xuICBvcHRpb25zPzogVE9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29sdW1uTm9kZSB7XG4gIHR5cGU6IHN0cmluZztcbiAgcGF0aDogc3RyaW5nO1xuICBvcHRpb25zPzogQVhQT3B0aW9uc0RhdGE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29sdW1uTm9kZVRva2VuIGV4dGVuZHMgQVhQV2lkZ2V0Q29sdW1uTm9kZSB7XG4gIGNvbmZpZzogQVhQV2lkZ2V0Q29uZmlnO1xufVxuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFBXaWRnZXROb2RlVG9rZW4+KCdBWFBfV0lER0VUX1RPS0VOJyk7XG5leHBvcnQgY29uc3QgQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhQV2lkZ2V0Q29sdW1uTm9kZVRva2VuPignQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4nKTtcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb21wb25lbnRDb25maWcge1xuICBjb21wb25lbnQ6ICgpID0+IFByb21pc2U8YW55PjtcbiAgcHJvcGVydGllcz86IEFYUFdpZGdldFByb3BlcnR5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cyB7XG4gIGRlc2lnbmVyPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICB2aWV3PzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBlZGl0PzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBwcmludD86IEFYUFdpZGdldENvbXBvbmVudENvbmZpZztcbiAgY29sdW1uPzogQVhQV2lkZ2V0Q29tcG9uZW50Q29uZmlnO1xuICBmaWx0ZXI/OiBBWFBXaWRnZXRDb21wb25lbnRDb25maWc7XG59XG5cbmV4cG9ydCB0eXBlIEFYUFdpZGdldFZpZXdUeXBlID0gJ2NvbnRhaW5lcicgfCAnZWRpdG9yJyB8ICdhY3Rpb24nIHwgJ3ZpZXcnIHwgJ2ZpbHRlcicgfCAndmFsaWRhdGlvbicgfCAnZGFzaGJvYXJkJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0RGVzaWduZXJPcHRpb25zTWFwID0ge1xuICBjb250YWluZXI6IHsgY2FuSW5zZXJ0OiBib29sZWFuIH07XG4gIGVkaXRvcjoge1xuICAgIG5lZWRMYWJlbDogYm9vbGVhbjtcbiAgfTtcbiAgYWN0aW9uOiB7fTtcbiAgdmlldzoge307XG59O1xuXG5leHBvcnQgdHlwZSBBWFBFeHRyYWN0V2lkZ2V0Q29uZmlnPFQ+ID0ge1xuICB0eXBlOiBBWFBXaWRnZXRWaWV3VHlwZTtcbiAgZGVzaWduZXI6IFQgZXh0ZW5kcyB7IHR5cGU6IGluZmVyIFYgfVxuICA/IFYgZXh0ZW5kcyBrZXlvZiBBWFBXaWRnZXREZXNpZ25lck9wdGlvbnNNYXBcbiAgPyBBWFBXaWRnZXREZXNpZ25lck9wdGlvbnNNYXBbVl1cbiAgOiBhbnlcbiAgOiBhbnk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYUFdpZGdldENvbmZpZzxUID0gYW55PiB7XG4gIG5hbWU6IEFYUFdpZGdldFR5cGVzTWFwW2tleW9mIEFYUFdpZGdldFR5cGVzTWFwXSB8IGtleW9mIEFYUFdpZGdldFR5cGVzTWFwIHwgc3RyaW5nO1xuICBhbGlhcz86IHN0cmluZyB8IHN0cmluZ1tdO1xuICB0aXRsZTogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY2F0ZWdvcmllcz86IEFYUFdpZGdldENhdGVnb3J5IHwgQVhQV2lkZ2V0Q2F0ZWdvcnlbXTtcbiAgZ3JvdXBzPzogQVhQV2lkZ2V0R3JvdXBbXTtcbiAgcHJvcGVydGllcz86IEFYUFdpZGdldFByb3BlcnR5W107XG4gIGNvbXBvbmVudHM6IEFYUFdpZGdldENvbmZpZ0NvbXBvbmVudHM7XG4gIG1ldGE/OiBBWFBNZXRhRGF0YTtcbiAgdHlwZTogQVhQRXh0cmFjdFdpZGdldENvbmZpZzxUPlsndHlwZSddO1xuICBkZXNpZ25lcj86IEFYUEV4dHJhY3RXaWRnZXRDb25maWc8VD5bJ2Rlc2lnbmVyJ107XG4gIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBkZWZhdWx0RmlsdGVyV2lkZ2V0TmFtZT86XG4gIHwgJ3N0cmluZy1maWx0ZXInXG4gIHwgJ251bWJlci1maWx0ZXInXG4gIHwgJ2RhdGV0aW1lLWZpbHRlcidcbiAgfCAnYm9vbGVhbi1maWx0ZXInXG4gIHwgJ3NlbGVjdC1maWx0ZXInXG4gIHwgJ2xvb2t1cC1maWx0ZXInXG4gIHwgJ3RpbWUtZHVyYXRpb24tZmlsdGVyJ1xuICB8IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgZXh0ZW5kZWRXaWRnZXQge1xuICB3aWRnZXQ6IEFYUFdpZGdldENvbmZpZztcbiAgcGFyZW50TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBBWFBXaWRnZXRSZW5kZXJNb2RlID0ga2V5b2YgQVhQV2lkZ2V0Q29uZmlnQ29tcG9uZW50cztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBMYXlvdXRCdWlsZGVyU3RhdHVzQ2hhbmdlZEV2ZW50IHtcbiAgc3RhdHVzOiBBWFBQYWdlU3RhdHVzO1xufVxuIl19","import { AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';\nimport { AXPDataSourceDefinitionProviderService, extractValue, } from '@acorex/platform/core';\nimport { computed, effect, ElementRef, inject, Injectable, signal, untracked, } from '@angular/core';\nimport { cloneDeep, get, isEqual, isNil, isObjectLike, isUndefined } from 'lodash-es';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { AXPWidgetCoreContextStore } from './widget-core-store.service';\nimport { AXPWidgetCoreElement, AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetStatus } from './widget-status.types';\nimport { AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN, } from './widget.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPBaseWidgetComponent extends AXPWidgetCoreElement {\n constructor() {\n super(...arguments);\n this.token = inject(AXP_WIDGET_TOKEN);\n this.host = inject(ElementRef).nativeElement;\n this.layoutService = inject(AXPWidgetCoreService);\n this.contextService = inject(AXPWidgetCoreContextStore);\n this.config = this.token.config;\n this.node = this.token.node;\n this.name = this.token.node.name;\n this.component = this;\n this._options = signal(this.token.options ?? {}, ...(ngDevMode ? [{ debugName: \"_options\" }] : []));\n this.options = this._options.asReadonly();\n this.onOptionsChanged = new Subject();\n this._status = signal(AXPWidgetStatus.Rendering, ...(ngDevMode ? [{ debugName: \"_status\" }] : []));\n this.status = this._status.asReadonly();\n this.onStatusChanged = new BehaviorSubject(this._status());\n this.#statusEffect = effect(() => {\n this.onStatusChanged.next(this.status());\n }, ...(ngDevMode ? [{ debugName: \"#statusEffect\" }] : []));\n this.isBusy = computed(() => [AXPWidgetStatus.Rendering, AXPWidgetStatus.Processing].includes(this.status()), ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n this._children = signal(this.token.node.children ?? [], ...(ngDevMode ? [{ debugName: \"_children\" }] : []));\n this.children = this._children.asReadonly();\n }\n get id() {\n return this._id;\n }\n #statusEffect;\n outputs() {\n return [];\n }\n ngOnInit() {\n if (get(this.node, '__meta__.added')) {\n this.onAdded();\n }\n this.setStatus(AXPWidgetStatus.Rendered);\n }\n setStatus(status) {\n this._status.set(status);\n this.layoutService.updateStatus();\n }\n setOptions(values) {\n const oldValue = this.options();\n const value = cloneDeep(values);\n this._options.set({ ...oldValue, ...value });\n this.onOptionsChanged.next({ sender: this });\n }\n output(name) {\n const outputs = this.outputs().map((c) => (typeof c == 'string' ? { name: c, value: c } : c));\n if (outputs.some((c) => c.name == name)) {\n const opt = get(this, name);\n if (typeof opt == 'function') {\n return opt();\n }\n return opt;\n }\n return null;\n }\n call(name, ...args) {\n const fn = get(this, name);\n if (fn && typeof fn == 'function') {\n fn.bind(this)(...args);\n }\n }\n setChildren(children) {\n this._children.set([...children]);\n }\n onAdded() { }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBaseWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBaseWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPLayoutBaseWidgetComponent extends AXPBaseWidgetComponent {\n //TODO change this approach\n ngOnInit() {\n if (this.name && !(this instanceof AXPValueWidgetComponent)) {\n this.layoutService.registerWidget(this.name, this);\n }\n super.ngOnInit();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPLayoutBaseWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPLayoutBaseWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPLayoutBaseWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {\n constructor() {\n super(...arguments);\n this.path = this.token.node.path;\n this.defaultValue = this.token.defaultValue ?? this.token.node.defaultValue;\n this._isValueWidget = false;\n this.isValueWidget = () => this._isValueWidget;\n this.onValueChanged = new Subject();\n this.fullPath = signal(null, ...(ngDevMode ? [{ debugName: \"fullPath\" }] : []));\n this.parentPath = signal(null, ...(ngDevMode ? [{ debugName: \"parentPath\" }] : []));\n this.getValue = computed(() => {\n return this.fullPath() ? this.extractValue(this.fullPath()) : null;\n }, ...(ngDevMode ? [{ debugName: \"getValue\", equal: isEqual }] : [{ equal: isEqual }]));\n this.validationRules = computed(() => {\n const validationsRaw = this.options()['validations'];\n if (validationsRaw == null) {\n return [];\n }\n return Object.values(this.options()['validations'])\n .filter((c) => c != null)\n .map((c) => ({\n rule: c.rule,\n message: c.message,\n options: c.options,\n }));\n }, ...(ngDevMode ? [{ debugName: \"validationRules\" }] : []));\n }\n ngOnInit() {\n this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;\n if (this.isValueWidget()) {\n this.detectFullPath();\n // Set defaultValue if it exists and the path doesn't exist in context\n if (!isNil(this.defaultValue) && this.fullPath() && !this.contextService.hasValue(this.fullPath())) {\n this.setValue(this.defaultValue);\n }\n }\n //\n super.ngOnInit();\n }\n extractValue(path) {\n const rawValue = this.contextService.getValue(path);\n if (this.node.valueTransforms?.getter) {\n return this.node.valueTransforms?.getter(rawValue);\n }\n return rawValue;\n }\n setValue(value) {\n if (this.node.valueTransforms?.setter) {\n value = this.node.valueTransforms?.setter(value);\n }\n const oldValue = this.getValue();\n value = isUndefined(value) ? null : value;\n if (isNil(value) && isNil(oldValue)) {\n return;\n }\n if (isEqual(oldValue, value)) {\n return;\n }\n if (this.fullPath()) {\n this.contextService.update(this.fullPath(), value);\n this.onValueChanged.next({ sender: this });\n }\n }\n detectFullPath() {\n const sections = [];\n const ids = [];\n //\n let parent = this;\n //\n while (parent) {\n const isValueWidget = parent instanceof AXPValueWidgetComponent && parent.isValueWidget();\n const valueParent = parent;\n const path = valueParent.path ?? (isValueWidget ? valueParent.name : null);\n const id = valueParent.name;\n //\n if (path) {\n sections.push(path);\n }\n if (parent.index != null && isValueWidget) {\n sections.push(`[${parent.index}]`);\n }\n if (id) {\n ids.push(id);\n if (parent.index != null) {\n ids.push(`${parent.index}`);\n }\n }\n parent = parent.parent;\n }\n //\n this.fullPath.set(sections.reverse().join('.'));\n this.parentPath.set(sections.slice(0, sections.length - 1).join('.'));\n this._id = this.name || this.parent ? ids.reverse().join('_') : null;\n if (this._id) {\n this.layoutService.registerWidget(this._id, this);\n }\n }\n handleValueChanged(e) {\n if (e.isUserInteraction) {\n this.setValue(e.value);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPValueWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPValueWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPValueWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPDataListWidgetComponent extends AXPValueWidgetComponent {\n constructor() {\n super(...arguments);\n this.dataService = inject(AXPDataSourceDefinitionProviderService);\n this.textField = computed(() => this.options()['textField'] ?? 'title', ...(ngDevMode ? [{ debugName: \"textField\" }] : []));\n this.valueField = computed(() => this.options()['valueField'] ?? 'id', ...(ngDevMode ? [{ debugName: \"valueField\" }] : []));\n this.textTemplate = computed(() => isNil(this.options()['textTemplate'])\n ? undefined\n : this.options()['textTemplate'].replace(/{/g, '{{').replace(/}/g, '}}'), ...(ngDevMode ? [{ debugName: \"textTemplate\" }] : []));\n this.dataSource = signal(convertArrayToDataSource([]), ...(ngDevMode ? [{ debugName: \"dataSource\" }] : []));\n this.selectedItems = signal([], ...(ngDevMode ? [{ debugName: \"selectedItems\" }] : []));\n //#region ---- DataSource Loading Effect ----\n /**\n * Track the last loaded string dataSource reference to prevent infinite loops\n * Only used for string-based datasources (not arrays or AXDataSource instances)\n */\n this.lastStringDataSourceRef = null;\n this.rf = effect(async () => {\n const rawValue = this.options()['dataSource'];\n // For string datasources: prevent infinite loop by checking reference\n if (typeof rawValue === 'string') {\n if (rawValue === this.lastStringDataSourceRef) {\n return;\n }\n this.lastStringDataSourceRef = rawValue;\n }\n else {\n // Reset string reference when dataSource changes to non-string\n this.lastStringDataSourceRef = null;\n }\n // Process dataSource creation in untracked context\n await untracked(async () => {\n if (rawValue instanceof AXDataSource) {\n // For AXDataSource instances, check if config changed\n if (!isEqual(rawValue.config, this.dataSource().config)) {\n this.dataSource.set(rawValue);\n }\n }\n // static array datasource - always recreate when options change\n else if (Array.isArray(rawValue)) {\n const ds = new AXDataSource({\n key: this.valueField(),\n pageSize: 10,\n load: async (e) => {\n const raw = this.options()['dataSource'];\n const skip = e.skip ?? 0;\n const take = e.take ?? raw.length;\n return {\n items: raw.slice(skip, skip + take),\n total: raw.length,\n };\n },\n byKey: (key) => {\n const raw = this.options()['dataSource'];\n const item = raw.filter((c) => c[this.valueField()] == key);\n return Promise.resolve(item[0]);\n },\n });\n this.dataSource.set(ds);\n }\n // resolve data source by name (string or object with id)\n else if (rawValue && (typeof rawValue == 'string' || typeof rawValue == 'object')) {\n const id = typeof rawValue == 'object' ? rawValue['id'] : rawValue;\n const c = await this.dataService.get(id);\n if (this.mode == 'designer' && c?.samples?.length) {\n this.dataSource.set(convertArrayToDataSource(c.samples, {\n key: this.valueField(),\n pageSize: 500,\n }));\n }\n else {\n const ds = c?.source();\n if (ds && ds instanceof Promise) {\n const d = await ds;\n this.dataSource.set(d);\n }\n else if (ds) {\n this.dataSource.set(ds);\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n }\n }\n // empty datasource\n else {\n this.dataSource.set(convertArrayToDataSource([]));\n }\n });\n }, ...(ngDevMode ? [{ debugName: \"rf\" }] : []));\n this.effect2 = effect(async () => {\n const value = this.getValue();\n const items = [];\n if (Array.isArray(value)) {\n items.push(...(await Promise.all(value.map((item) => this.extractItem(item)))));\n }\n else {\n items.push(await this.extractItem(value));\n }\n this.selectedItems.set(items.filter((c) => c != null));\n }, ...(ngDevMode ? [{ debugName: \"effect2\" }] : []));\n }\n //#endregion\n async extractItem(item) {\n if (isNil(item)) {\n return null;\n }\n if (isObjectLike(item) && get(item, this.textField()) != null) {\n return item;\n }\n const key = extractValue(item, this.valueField());\n const ds = this.dataSource();\n if (ds.config?.byKey) {\n const found = await ds.config?.byKey(key);\n if (found) {\n return found;\n }\n }\n return isObjectLike(item)\n ? item\n : {\n [this.valueField()]: item,\n [this.textField()]: item,\n };\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataListWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataListWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPDataListWidgetComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPColumnWidgetComponent {\n constructor() {\n this.token = inject(AXP_WIDGET_COLUMN_TOKEN);\n this.path = this.token.path;\n this.options = this.token.options ?? {};\n this.rawValue = null;\n this.nullText = this.options['nullText'];\n this.nullValue = this.options['nullValue'];\n this.value = computed(() => {\n if (isNil(this.rawValue) && !isNil(this.nullValue)) {\n return this.nullValue;\n }\n return this.rawValue;\n }, ...(ngDevMode ? [{ debugName: \"value\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColumnWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColumnWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPColumnWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBdUIsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRyxPQUFPLEVBQ0wsc0NBQXNDLEVBSXRDLFlBQVksR0FDYixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sVUFBVSxFQUVWLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGdCQUFnQixHQUlqQixNQUFNLGdCQUFnQixDQUFDOztBQU14QixNQUFNLE9BQWdCLHNCQUVwQixTQUFRLG9CQUFvQjtJQUg5Qjs7UUFJcUIsVUFBSyxHQUFpQyxNQUFNLENBQUMsZ0JBQWdCLENBQWlDLENBQUM7UUFDbEcsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUErQixDQUFDO1FBRXZELGtCQUFhLEdB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LENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDbkMsYUFBUSxHQUFNLElBQVMsQ0FBQztRQUV4QixhQUFRLEdBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQVcsQ0FBQztRQUNuRCxjQUFTLEdBQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQU0sQ0FBQztRQUV2RCxVQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM5QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN4QixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3ZCLENBQUMsaURBQUMsQ0FBQztLQUNKOytHQWhCcUIsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRDdDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWERhdGFTb3VyY2UsIEFYVmFsdWVDaGFuZ2VkRXZlbnQsIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZSB9IGZyb20gJ0BhY29yZXgvY2RrL2NvbW1vbic7XG5pbXBvcnQge1xuICBBWFBEYXRhU291cmNlRGVmaW5pdGlvblByb3ZpZGVyU2VydmljZSxcbiAgQVhQT3B0aW9uc0RhdGEsXG4gIEFYUFZhbGlkYXRpb25SdWxlLFxuICBBWFBWYWxpZGF0aW9uUnVsZXMsXG4gIGV4dHJhY3RWYWx1ZSxcbn0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb3JlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBPbkluaXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0LCBpc0VxdWFsLCBpc05pbCwgaXNPYmplY3RMaWtlLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUgfSBmcm9tICcuL3dpZGdldC1jb3JlLXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZUVsZW1lbnQsIEFYUFdpZGdldENvcmVTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtY29yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldFN0YXR1cyB9IGZyb20gJy4vd2lkZ2V0LXN0YXR1cy50eXBlcyc7XG5pbXBvcnQge1xuICBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTixcbiAgQVhQX1dJREdFVF9UT0tFTixcbiAgQVhQV2lkZ2V0Tm9kZSxcbiAgQVhQV2lkZ2V0Tm9kZVRva2VuLFxuICBBWFBXaWRnZXRSZW5kZXJNb2RlLFxufSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbmV4cG9ydCB0eXBlIEFYUENsYXNzTWFwID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+O1xuZXhwb3J0IHR5cGUgQVhQU3R5bGVNYXAgPSBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+PjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUEJhc2VXaWRnZXRDb21wb25lbnQ8XG4gIFRPcHRpb25zIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBBWFBPcHRpb25zRGF0YSxcbj4gZXh0ZW5kcyBBWFBXaWRnZXRDb3JlRWxlbWVudCB7XG4gIHByb3RlY3RlZCByZWFkb25seSB0b2tlbjogQVhQV2lkZ2V0Tm9kZVRva2VuPFRPcHRpb25zPiA9IGluamVjdChBWFBfV0lER0VUX1RPS0VOKSBhcyBBWFBXaWRnZXROb2RlVG9rZW48VE9wdGlvbnM+O1xuICBwdWJsaWMgcmVhZG9ubHkgaG9zdCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBsYXlvdXRTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldENvcmVTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHRTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb25maWcgPSB0aGlzLnRva2VuLmNvbmZpZztcbiAgcHVibGljIHJlYWRvbmx5IG5vZGUgPSB0aGlzLnRva2VuLm5vZGU7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG5hbWUgPSB0aGlzLnRva2VuLm5vZGUubmFtZTtcblxuICBwcm90ZWN0ZWQgY29tcG9uZW50ID0gdGhpcztcblxuICBwcm90ZWN0ZWQgX2lkOiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuXG4gIHByb3RlY3RlZCBfb3B0aW9ucyA9IHNpZ25hbDxUT3B0aW9ucz4odGhpcy50b2tlbi5vcHRpb25zID8/ICh7fSBhcyBUT3B0aW9ucykpO1xuICBwdWJsaWMgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHB1YmxpYyBvbk9wdGlvbnNDaGFuZ2VkID0gbmV3IFN1YmplY3Q8eyBzZW5kZXI6IEFYUEJhc2VXaWRnZXRDb21wb25lbnQgfT4oKTtcblxuICBwcml2YXRlIF9zdGF0dXMgPSBzaWduYWw8QVhQV2lkZ2V0U3RhdHVzPihBWFBXaWRnZXRTdGF0dXMuUmVuZGVyaW5nKTtcbiAgcHVibGljIHN0YXR1cyA9IHRoaXMuX3N0YXR1cy5hc1JlYWRvbmx5KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9uU3RhdHVzQ2hhbmdlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhQV2lkZ2V0U3RhdHVzPih0aGlzLl9zdGF0dXMoKSk7XG5cbiAgI3N0YXR1c0VmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgdGhpcy5vblN0YXR1c0NoYW5nZWQubmV4dCh0aGlzLnN0YXR1cygpKTtcbiAgfSk7XG5cbiAgcHVibGljIGlzQnVzeSA9IGNvbXB1dGVkKCgpID0+IFtBWFBXaWRnZXRTdGF0dXMuUmVuZGVyaW5nLCBBWFBXaWRnZXRTdGF0dXMuUHJvY2Vzc2luZ10uaW5jbHVkZXModGhpcy5zdGF0dXMoKSkpO1xuXG4gIHBhcmVudDogQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudDxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGFyZW50Q29tcG9uZW50OiBDb21wb25lbnRSZWY8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgcGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBpbmRleDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgbW9kZTogQVhQV2lkZ2V0UmVuZGVyTW9kZTtcbiAgbG9ja2VkOiBib29sZWFuO1xuXG4gIHByb3RlY3RlZCBvdXRwdXRzKCk6IChzdHJpbmcgfCB7IFtuYW1lOiBzdHJpbmddOiB1bmtub3duIH0pW10ge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmIChnZXQodGhpcy5ub2RlLCAnX19tZXRhX18uYWRkZWQnKSkge1xuICAgICAgdGhpcy5vbkFkZGVkKCk7XG4gICAgfVxuICAgIHRoaXMuc2V0U3RhdHVzKEFYUFdpZGdldFN0YXR1cy5SZW5kZXJlZCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdHVzKHN0YXR1czogQVhQV2lkZ2V0U3RhdHVzKSB7XG4gICAgdGhpcy5fc3RhdHVzLnNldChzdGF0dXMpO1xuICAgIHRoaXMubGF5b3V0U2VydmljZS51cGRhdGVTdGF0dXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRPcHRpb25zKHZhbHVlczogUGFydGlhbDxUT3B0aW9ucz4pOiB2b2lkIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMub3B0aW9ucygpO1xuICAgIGNvbnN0IHZhbHVlID0gY2xvbmVEZWVwKHZhbHVlcyk7XG4gICAgdGhpcy5fb3B0aW9ucy5zZXQoeyAuLi5vbGRWYWx1ZSwgLi4udmFsdWUgfSBhcyBUT3B0aW9ucyk7XG4gICAgdGhpcy5vbk9wdGlvbnNDaGFuZ2VkLm5leHQoeyBzZW5kZXI6IHRoaXMgfSk7XG4gIH1cblxuICBvdXRwdXQ8VCA9IGFueT4obmFtZTogc3RyaW5nKTogVCB7XG4gICAgY29uc3Qgb3V0cHV0cyA9IHRoaXMub3V0cHV0cygpLm1hcCgoYykgPT4gKHR5cGVvZiBjID09ICdzdHJpbmcnID8geyBuYW1lOiBjLCB2YWx1ZTogYyB9IDogYykpIGFzIHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHZhbHVlOiB1bmtub3duO1xuICAgIH1bXTtcblxuICAgIGlmIChvdXRwdXRzLnNvbWUoKGMpID0+IGMubmFtZSA9PSBuYW1lKSkge1xuICAgICAgY29uc3Qgb3B0ID0gZ2V0KHRoaXMsIG5hbWUpO1xuICAgICAgaWYgKHR5cGVvZiBvcHQgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gb3B0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3B0O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbCBhcyBUO1xuICB9XG5cbiAgY2FsbChuYW1lOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgZm4gPSBnZXQodGhpcywgbmFtZSkgYXMgRnVuY3Rpb247XG4gICAgaWYgKGZuICYmIHR5cGVvZiBmbiA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBmbi5iaW5kKHRoaXMpKC4uLmFyZ3MpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBfY2hpbGRyZW4gPSBzaWduYWwodGhpcy50b2tlbi5ub2RlLmNoaWxkcmVuID8/IFtdKTtcbiAgcHJvdGVjdGVkIGNoaWxkcmVuID0gdGhpcy5fY2hpbGRyZW4uYXNSZWFkb25seSgpO1xuXG4gIHNldENoaWxkcmVuKGNoaWxkcmVuOiBBWFBXaWRnZXROb2RlW10pIHtcbiAgICB0aGlzLl9jaGlsZHJlbi5zZXQoWy4uLmNoaWxkcmVuXSk7XG4gIH1cblxuICBvbkFkZGVkKCkge31cblxuICBob3N0Q2xhc3M/KCk6IEFYUENsYXNzTWFwO1xuICBob3N0U3R5bGU/KCk6IEFYUFN0eWxlTWFwO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudDxcbiAgVE9wdGlvbnMgZXh0ZW5kcyBBWFBPcHRpb25zRGF0YSA9IEFYUE9wdGlvbnNEYXRhLFxuPiBleHRlbmRzIEFYUEJhc2VXaWRnZXRDb21wb25lbnQ8VE9wdGlvbnM+IHtcbiAgLy9UT0RPIGNoYW5nZSB0aGlzIGFwcHJvYWNoXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hbWUgJiYgISh0aGlzIGluc3RhbmNlb2YgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQpKSB7XG4gICAgICB0aGlzLmxheW91dFNlcnZpY2UucmVnaXN0ZXJXaWRnZXQodGhpcy5uYW1lLCB0aGlzKTtcbiAgICB9XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudDxUID0gYW55IHwgbnVsbCwgVE9wdGlvbnMgZXh0ZW5kcyBBWFBPcHRpb25zRGF0YSA9IEFYUE9wdGlvbnNEYXRhPlxuICBleHRlbmRzIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQ8VE9wdGlvbnM+XG4gIGltcGxlbWVudHMgT25Jbml0XG57XG4gIHByb3RlY3RlZCByZWFkb25seSBwYXRoID0gdGhpcy50b2tlbi5ub2RlLnBhdGg7XG4gIHByb3RlY3RlZCByZWFkb25seSBkZWZhdWx0VmFsdWUgPSB0aGlzLnRva2VuLmRlZmF1bHRWYWx1ZSA/PyB0aGlzLnRva2VuLm5vZGUuZGVmYXVsdFZhbHVlO1xuXG4gIHByaXZhdGUgX2lzVmFsdWVXaWRnZXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1ZhbHVlV2lkZ2V0ID0gKCkgPT4gdGhpcy5faXNWYWx1ZVdpZGdldDtcblxuICBwdWJsaWMgb25WYWx1ZUNoYW5nZWQgPSBuZXcgU3ViamVjdDx7IHNlbmRlcjogQVhQQmFzZVdpZGdldENvbXBvbmVudCB9PigpO1xuXG4gIHB1YmxpYyBmdWxsUGF0aCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHBhcmVudFBhdGggPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5faXNWYWx1ZVdpZGdldCA9IHRoaXMuY29uZmlnLnByb3BlcnRpZXM/LnNvbWUoKGMpID0+IGMubmFtZSA9PSAncGF0aCcpID8/IGZhbHNlO1xuICAgIGlmICh0aGlzLmlzVmFsdWVXaWRnZXQoKSkge1xuICAgICAgdGhpcy5kZXRlY3RGdWxsUGF0aCgpO1xuICAgICAgLy8gU2V0IGRlZmF1bHRWYWx1ZSBpZiBpdCBleGlzdHMgYW5kIHRoZSBwYXRoIGRvZXNuJ3QgZXhpc3QgaW4gY29udGV4dFxuICAgICAgaWYgKCFpc05pbCh0aGlzLmRlZmF1bHRWYWx1ZSkgJiYgdGhpcy5mdWxsUGF0aCgpICYmICF0aGlzLmNvbnRleHRTZXJ2aWNlLmhhc1ZhbHVlKHRoaXMuZnVsbFBhdGgoKSEpKSB7XG4gICAgICAgIHRoaXMuc2V0VmFsdWUodGhpcy5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICAvL1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUgPSBjb21wdXRlZDxUPihcbiAgICAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5mdWxsUGF0aCgpID8gdGhpcy5leHRyYWN0VmFsdWUodGhpcy5mdWxsUGF0aCgpISkgOiBudWxsO1xuICAgIH0sXG4gICAgeyBlcXVhbDogaXNFcXVhbCB9LFxuICApO1xuXG4gIHByb3RlY3RlZCB2YWxpZGF0aW9uUnVsZXMgPSBjb21wdXRlZDxBWFBWYWxpZGF0aW9uUnVsZXM+KCgpID0+IHtcbiAgICBjb25zdCB2YWxpZGF0aW9uc1JhdyA9IHRoaXMub3B0aW9ucygpWyd2YWxpZGF0aW9ucyddO1xuICAgIGlmICh2YWxpZGF0aW9uc1JhdyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMub3B0aW9ucygpWyd2YWxpZGF0aW9ucyddKVxuICAgICAgLmZpbHRlcigoYykgPT4gYyAhPSBudWxsKVxuICAgICAgLm1hcChcbiAgICAgICAgKGM6IGFueSkgPT5cbiAgICAgICAgICAoe1xuICAgICAgICAgICAgcnVsZTogYy5ydWxlLFxuICAgICAgICAgICAgbWVzc2FnZTogYy5tZXNzYWdlLFxuICAgICAgICAgICAgb3B0aW9uczogYy5vcHRpb25zLFxuICAgICAgICAgIH0pIGFzIEFYUFZhbGlkYXRpb25SdWxlLFxuICAgICAgKTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGV4dHJhY3RWYWx1ZShwYXRoOiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gdGhpcy5jb250ZXh0U2VydmljZS5nZXRWYWx1ZShwYXRoKTtcbiAgICBpZiAodGhpcy5ub2RlLnZhbHVlVHJhbnNmb3Jtcz8uZ2V0dGVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLnZhbHVlVHJhbnNmb3Jtcz8uZ2V0dGVyKHJhd1ZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJhd1ZhbHVlO1xuICB9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMubm9kZS52YWx1ZVRyYW5zZm9ybXM/LnNldHRlcikge1xuICAgICAgdmFsdWUgPSB0aGlzLm5vZGUudmFsdWVUcmFuc2Zvcm1zPy5zZXR0ZXIodmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICB2YWx1ZSA9IGlzVW5kZWZpbmVkKHZhbHVlKSA/IG51bGwgOiB2YWx1ZTtcbiAgICBpZiAoaXNOaWwodmFsdWUpICYmIGlzTmlsKG9sZFZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNFcXVhbChvbGRWYWx1ZSwgdmFsdWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmZ1bGxQYXRoKCkpIHtcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHRoaXMuZnVsbFBhdGgoKSEsIHZhbHVlKTtcbiAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQubmV4dCh7IHNlbmRlcjogdGhpcyB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRldGVjdEZ1bGxQYXRoKCkge1xuICAgIGNvbnN0IHNlY3Rpb25zID0gW107XG4gICAgY29uc3QgaWRzID0gW107XG4gICAgLy9cbiAgICBsZXQgcGFyZW50OiBBWFBMYXlvdXRCYXNlV2lkZ2V0Q29tcG9uZW50PGFueT4gfCBudWxsIHwgdW5kZWZpbmVkID0gdGhpcyBhcyBBWFBMYXlvdXRCYXNlV2lkZ2V0Q29tcG9uZW50PGFueT47XG4gICAgLy9cbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICBjb25zdCBpc1ZhbHVlV2lkZ2V0ID0gcGFyZW50IGluc3RhbmNlb2YgQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgJiYgcGFyZW50LmlzVmFsdWVXaWRnZXQoKTtcbiAgICAgIGNvbnN0IHZhbHVlUGFyZW50ID0gcGFyZW50IGFzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50PGFueSwgYW55PjtcbiAgICAgIGNvbnN0IHBhdGggPSB2YWx1ZVBhcmVudC5wYXRoID8/IChpc1ZhbHVlV2lkZ2V0ID8gdmFsdWVQYXJlbnQubmFtZSA6IG51bGwpO1xuICAgICAgY29uc3QgaWQgPSB2YWx1ZVBhcmVudC5uYW1lO1xuICAgICAgLy9cbiAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgIHNlY3Rpb25zLnB1c2gocGF0aCk7XG4gICAgICB9XG4gICAgICBpZiAocGFyZW50LmluZGV4ICE9IG51bGwgJiYgaXNWYWx1ZVdpZGdldCkge1xuICAgICAgICBzZWN0aW9ucy5wdXNoKGBbJHtwYXJlbnQuaW5kZXh9XWApO1xuICAgICAgfVxuICAgICAgaWYgKGlkKSB7XG4gICAgICAgIGlkcy5wdXNoKGlkKTtcbiAgICAgICAgaWYgKHBhcmVudC5pbmRleCAhPSBudWxsKSB7XG4gICAgICAgICAgaWRzLnB1c2goYCR7cGFyZW50LmluZGV4fWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgIH1cbiAgICAvL1xuICAgIHRoaXMuZnVsbFBhdGguc2V0KHNlY3Rpb25zLnJldmVyc2UoKS5qb2luKCcuJykpO1xuICAgIHRoaXMucGFyZW50UGF0aC5zZXQoc2VjdGlvbnMuc2xpY2UoMCwgc2VjdGlvbnMubGVuZ3RoIC0gMSkuam9pbignLicpKTtcbiAgICB0aGlzLl9pZCA9IHRoaXMubmFtZSB8fCB0aGlzLnBhcmVudCA/IGlkcy5yZXZlcnNlKCkuam9pbignXycpIDogbnVsbDtcbiAgICBpZiAodGhpcy5faWQpIHtcbiAgICAgIHRoaXMubGF5b3V0U2VydmljZS5yZWdpc3RlcldpZGdldCh0aGlzLl9pZCwgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZVZhbHVlQ2hhbmdlZChlOiBBWFZhbHVlQ2hhbmdlZEV2ZW50PFQ+KSB7XG4gICAgaWYgKGUuaXNVc2VySW50ZXJhY3Rpb24pIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUoZS52YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBEYXRhTGlzdFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50PGFueT4ge1xuICBwcml2YXRlIGRhdGFTZXJ2aWNlID0gaW5qZWN0KEFYUERhdGFTb3VyY2VEZWZpbml0aW9uUHJvdmlkZXJTZXJ2aWNlKTtcblxuICBwcm90ZWN0ZWQgdGV4dEZpZWxkID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB0aGlzLm9wdGlvbnMoKVsndGV4dEZpZWxkJ10gPz8gJ3RpdGxlJyk7XG4gIHByb3RlY3RlZCB2YWx1ZUZpZWxkID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiAodGhpcy5vcHRpb25zKClbJ3ZhbHVlRmllbGQnXSBhcyBzdHJpbmcpID8/ICdpZCcpO1xuICBwcm90ZWN0ZWQgdGV4dFRlbXBsYXRlID0gY29tcHV0ZWQ8c3RyaW5nIHwgdW5kZWZpbmVkPigoKSA9PlxuICAgIGlzTmlsKHRoaXMub3B0aW9ucygpWyd0ZXh0VGVtcGxhdGUnXSlcbiAgICAgID8gdW5kZWZpbmVkXG4gICAgICA6ICh0aGlzLm9wdGlvbnMoKVsndGV4dFRlbXBsYXRlJ10gYXMgc3RyaW5nKS5yZXBsYWNlKC97L2csICd7eycpLnJlcGxhY2UoL30vZywgJ319JyksXG4gICk7XG5cbiAgcHJvdGVjdGVkIGRhdGFTb3VyY2UgPSBzaWduYWw8QVhEYXRhU291cmNlPGFueT4+KGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZTxhbnk+KFtdKSk7XG5cbiAgcHVibGljIHNlbGVjdGVkSXRlbXMgPSBzaWduYWw8YW55W10+KFtdKTtcblxuICAvLyNyZWdpb24gLS0tLSAgIERhdGFTb3VyY2UgTG9hZGluZyBFZmZlY3QgICAtLS0tXG5cbiAgLyoqXG4gICAqIFRyYWNrIHRoZSBsYXN0IGxvYWRlZCBzdHJpbmcgZGF0YVNvdXJjZSByZWZlcmVuY2UgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wc1xuICAgKiBPbmx5IHVzZWQgZm9yIHN0cmluZy1iYXNlZCBkYXRhc291cmNlcyAobm90IGFycmF5cyBvciBBWERhdGFTb3VyY2UgaW5zdGFuY2VzKVxuICAgKi9cbiAgcHJpdmF0ZSBsYXN0U3RyaW5nRGF0YVNvdXJjZVJlZjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZiA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmF3VmFsdWUgPSB0aGlzLm9wdGlvbnMoKVsnZGF0YVNvdXJjZSddO1xuXG4gICAgLy8gRm9yIHN0cmluZyBkYXRhc291cmNlczogcHJldmVudCBpbmZpbml0ZSBsb29wIGJ5IGNoZWNraW5nIHJlZmVyZW5jZVxuICAgIGlmICh0eXBlb2YgcmF3VmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAocmF3VmFsdWUgPT09IHRoaXMubGFzdFN0cmluZ0RhdGFTb3VyY2VSZWYpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5sYXN0U3RyaW5nRGF0YVNvdXJjZVJlZiA9IHJhd1ZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNldCBzdHJpbmcgcmVmZXJlbmNlIHdoZW4gZGF0YVNvdXJjZSBjaGFuZ2VzIHRvIG5vbi1zdHJpbmdcbiAgICAgIHRoaXMubGFzdFN0cmluZ0RhdGFTb3VyY2VSZWYgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgZGF0YVNvdXJjZSBjcmVhdGlvbiBpbiB1bnRyYWNrZWQgY29udGV4dFxuICAgIGF3YWl0IHVudHJhY2tlZChhc3luYyAoKSA9PiB7XG4gICAgICBpZiAocmF3VmFsdWUgaW5zdGFuY2VvZiBBWERhdGFTb3VyY2UpIHtcbiAgICAgICAgLy8gRm9yIEFYRGF0YVNvdXJjZSBpbnN0YW5jZXMsIGNoZWNrIGlmIGNvbmZpZyBjaGFuZ2VkXG4gICAgICAgIGlmICghaXNFcXVhbChyYXdWYWx1ZS5jb25maWcsIHRoaXMuZGF0YVNvdXJjZSgpLmNvbmZpZykpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KHJhd1ZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gc3RhdGljIGFycmF5IGRhdGFzb3VyY2UgLSBhbHdheXMgcmVjcmVhdGUgd2hlbiBvcHRpb25zIGNoYW5nZVxuICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyYXdWYWx1ZSkpIHtcbiAgICAgICAgY29uc3QgZHMgPSBuZXcgQVhEYXRhU291cmNlKHtcbiAgICAgICAgICBrZXk6IHRoaXMudmFsdWVGaWVsZCgpLFxuICAgICAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgICAgICBsb2FkOiBhc3luYyAoZTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSB0aGlzLm9wdGlvbnMoKVsnZGF0YVNvdXJjZSddO1xuICAgICAgICAgICAgY29uc3Qgc2tpcCA9IGUuc2tpcCA/PyAwO1xuICAgICAgICAgICAgY29uc3QgdGFrZSA9IGUudGFrZSA/PyByYXcubGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgaXRlbXM6IHJhdy5zbGljZShza2lwLCBza2lwICsgdGFrZSksXG4gICAgICAgICAgICAgIHRvdGFsOiByYXcubGVuZ3RoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ5S2V5OiAoa2V5OiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXcgPSB0aGlzLm9wdGlvbnMoKVsnZGF0YVNvdXJjZSddO1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHJhdy5maWx0ZXIoKGM6IGFueSkgPT4gY1t0aGlzLnZhbHVlRmllbGQoKV0gPT0ga2V5KTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaXRlbVswXSkgYXMgYW55O1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KGRzKTtcbiAgICAgIH1cbiAgICAgIC8vIHJlc29sdmUgZGF0YSBzb3VyY2UgYnkgbmFtZSAoc3RyaW5nIG9yIG9iamVjdCB3aXRoIGlkKVxuICAgICAgZWxzZSBpZiAocmF3VmFsdWUgJiYgKHR5cGVvZiByYXdWYWx1ZSA9PSAnc3RyaW5nJyB8fCB0eXBlb2YgcmF3VmFsdWUgPT0gJ29iamVjdCcpKSB7XG4gICAgICAgIGNvbnN0IGlkID0gdHlwZW9mIHJhd1ZhbHVlID09ICdvYmplY3QnID8gcmF3VmFsdWVbJ2lkJ10gOiByYXdWYWx1ZTtcbiAgICAgICAgY29uc3QgYyA9IGF3YWl0IHRoaXMuZGF0YVNlcnZpY2UuZ2V0KGlkKTtcbiAgICAgICAgaWYgKHRoaXMubW9kZSA9PSAnZGVzaWduZXInICYmIGM/LnNhbXBsZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoXG4gICAgICAgICAgICBjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2UoYy5zYW1wbGVzLCB7XG4gICAgICAgICAgICAgIGtleTogdGhpcy52YWx1ZUZpZWxkKCksXG4gICAgICAgICAgICAgIHBhZ2VTaXplOiA1MDAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRzID0gYz8uc291cmNlKCk7XG4gICAgICAgICAgaWYgKGRzICYmIGRzIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgY29uc3QgZCA9IGF3YWl0IGRzO1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChkKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRzKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc2V0KGRzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZW1wdHkgZGF0YXNvdXJjZVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLnNldChjb252ZXJ0QXJyYXlUb0RhdGFTb3VyY2U8YW55PihbXSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gZW1wdHkgZGF0YXNvdXJjZVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5zZXQoY29udmVydEFycmF5VG9EYXRhU291cmNlPGFueT4oW10pKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgcHJvdGVjdGVkIGFzeW5jIGV4dHJhY3RJdGVtKGl0ZW06IHVua25vd24pOiBQcm9taXNlPGFueT4ge1xuICAgIGlmIChpc05pbChpdGVtKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChpc09iamVjdExpa2UoaXRlbSkgJiYgZ2V0KGl0ZW0sIHRoaXMudGV4dEZpZWxkKCkpICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSBleHRyYWN0VmFsdWUoaXRlbSwgdGhpcy52YWx1ZUZpZWxkKCkpO1xuICAgIGNvbnN0IGRzID0gdGhpcy5kYXRhU291cmNlKCk7XG4gICAgaWYgKGRzLmNvbmZpZz8uYnlLZXkpIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gYXdhaXQgZHMuY29uZmlnPy5ieUtleShrZXkpO1xuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIHJldHVybiBmb3VuZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlzT2JqZWN0TGlrZShpdGVtKVxuICAgICAgPyBpdGVtXG4gICAgICA6IHtcbiAgICAgICAgICBbdGhpcy52YWx1ZUZpZWxkKCldOiBpdGVtLFxuICAgICAgICAgIFt0aGlzLnRleHRGaWVsZCgpXTogaXRlbSxcbiAgICAgICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZWZmZWN0MiA9IGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlKCk7XG4gICAgY29uc3QgaXRlbXM6IGFueVtdID0gW107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBpdGVtcy5wdXNoKC4uLihhd2FpdCBQcm9taXNlLmFsbCh2YWx1ZS5tYXAoKGl0ZW06IGFueSkgPT4gdGhpcy5leHRyYWN0SXRlbShpdGVtKSkpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1zLnB1c2goYXdhaXQgdGhpcy5leHRyYWN0SXRlbSh2YWx1ZSkpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuc2V0KGl0ZW1zLmZpbHRlcigoYykgPT4gYyAhPSBudWxsKSk7XG4gIH0pO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQQ29sdW1uV2lkZ2V0Q29tcG9uZW50PFQgPSBhbnkgfCBudWxsIHwgdm9pZD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IHRva2VuID0gaW5qZWN0KEFYUF9XSURHRVRfQ09MVU1OX1RPS0VOKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGF0aCA9IHRoaXMudG9rZW4ucGF0aDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnMgPSB0aGlzLnRva2VuLm9wdGlvbnMgPz8ge307XG4gIHByb3RlY3RlZCByZWFkb25seSByYXdWYWx1ZTogVCA9IG51bGwgYXMgVDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvd0RhdGE6IGFueTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG51bGxUZXh0OiBhbnkgPSB0aGlzLm9wdGlvbnNbJ251bGxUZXh0J10gYXMgc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgbnVsbFZhbHVlOiBUID0gdGhpcy5vcHRpb25zWydudWxsVmFsdWUnXSBhcyBUO1xuXG4gIHByb3RlY3RlZCB2YWx1ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoaXNOaWwodGhpcy5yYXdWYWx1ZSkgJiYgIWlzTmlsKHRoaXMubnVsbFZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMubnVsbFZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yYXdWYWx1ZTtcbiAgfSk7XG59XG4iXX0=","import { computed, Injectable } from '@angular/core';\nimport { AXPLayoutBaseWidgetComponent } from '../widget-base.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPBoxModelLayoutWidgetComponent extends AXPLayoutBaseWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostBoxStyle = computed(() => {\n const options = this.options();\n const style = {};\n const spacing = options?.['spacing'];\n const border = options?.['border'];\n const backgroundColor = options?.['backgroundColor'];\n const direction = options?.['direction'];\n const overflow = options?.['overflow'];\n const overflowX = options?.['overflowX'];\n const overflowY = options?.['overflowY'];\n style['background-color'] = backgroundColor ?? '';\n style['padding'] = spacing?.padding ?? '';\n style['margin'] = spacing?.margin ?? '';\n style['border-radius'] = border?.radius ?? '';\n style['border-width'] = border?.width ?? '';\n style['border-color'] = border?.color ?? '';\n style['border-style'] = border?.style ?? '';\n style['overflow'] = overflow ?? '';\n style['overflow-x'] = overflowX ?? '';\n style['overflow-y'] = overflowY ?? '';\n style['direction'] = direction ?? '';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostBoxStyle\" }] : []));\n this.blockStyle = computed(() => {\n const options = this.options();\n const style = { ...this.hostBoxStyle() };\n const width = options?.['width'];\n const minWidth = options?.['minWidth'];\n const maxWidth = options?.['maxWidth'];\n const height = options?.['height'];\n const minHeight = options?.['minHeight'];\n const maxHeight = options?.['maxHeight'];\n style['min-width'] = minWidth ?? '';\n style['width'] = width ?? '';\n style['max-width'] = maxWidth ?? '';\n style['min-height'] = minHeight ?? '';\n style['height'] = height ?? '';\n style['max-height'] = maxHeight ?? '';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"blockStyle\" }] : []));\n this.inlineStyle = computed(() => {\n return { ...this.hostBoxStyle() };\n }, ...(ngDevMode ? [{ debugName: \"inlineStyle\" }] : []));\n this.blockClass = computed(() => {\n return {\n 'ax-block': true,\n 'ax-w-full': true,\n // 'ax-widget-outline': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"blockClass\" }] : []));\n this.inlineClass = computed(() => {\n return {\n 'ax-inline-block': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"inlineClass\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBoxModelLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LW1vZGVsLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL2Jhc2Utd2lkZ2V0L2JveC1tb2RlbC13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBZSw0QkFBNEIsRUFBZSxNQUFNLDBCQUEwQixDQUFDOztBQUdsRyxNQUFNLE9BQWdCLGdDQUFpQyxTQUFRLDRCQUE0QjtJQUQzRjs7UUFFUyxpQkFBWSxHQUFHLFFBQVEsQ0FBYyxHQUFHLEVBQUU7WUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRS9CLE1BQU0sS0FBSyxHQUFvQyxFQUFFLENBQUM7WUFFbEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFvQyxDQUFDO1lBQ3hFLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBbUMsQ0FBQztZQUVyRSxNQUFNLGVBQWUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBdUIsQ0FBQztZQUMzRSxNQUFNLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQXVCLENBQUM7WUFFL0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUF1QixDQUFDO1lBQzdELE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBdUIsQ0FBQztZQUMvRCxNQUFNLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQXVCLENBQUM7WUFFL0QsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsZUFBZSxJQUFJLEVBQUUsQ0FBQztZQUNsRCxLQUFLLENBQUMs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LFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQm9yZGVyQm94U3RyaW5nLCBBWFBTcGFjaW5nQm94U3RyaW5nIH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7IEFYUENsYXNzTWFwLCBBWFBMYXlvdXRCYXNlV2lkZ2V0Q29tcG9uZW50LCBBWFBTdHlsZU1hcCB9IGZyb20gJy4uL3dpZGdldC1iYXNlLmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBCb3hNb2RlbExheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQge1xuICBwdWJsaWMgaG9zdEJveFN0eWxlID0gY29tcHV0ZWQ8QVhQU3R5bGVNYXA+KCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG5cbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHt9O1xuXG4gICAgY29uc3Qgc3BhY2luZyA9IG9wdGlvbnM/Llsnc3BhY2luZyddIGFzIEFYUFNwYWNpbmdCb3hTdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgYm9yZGVyID0gb3B0aW9ucz8uWydib3JkZXInXSBhcyBBWFBCb3JkZXJCb3hTdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBvcHRpb25zPy5bJ2JhY2tncm91bmRDb2xvciddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSBvcHRpb25zPy5bJ2RpcmVjdGlvbiddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IG92ZXJmbG93ID0gb3B0aW9ucz8uWydvdmVyZmxvdyddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvdmVyZmxvd1ggPSBvcHRpb25zPy5bJ292ZXJmbG93WCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvdmVyZmxvd1kgPSBvcHRpb25zPy5bJ292ZXJmbG93WSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHN0eWxlWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSBiYWNrZ3JvdW5kQ29sb3IgPz8gJyc7XG4gICAgc3R5bGVbJ3BhZGRpbmcnXSA9IHNwYWNpbmc/LnBhZGRpbmcgPz8gJyc7XG4gICAgc3R5bGVbJ21hcmdpbiddID0gc3BhY2luZz8ubWFyZ2luID8/ICcnO1xuXG4gICAgc3R5bGVbJ2JvcmRlci1yYWRpdXMnXSA9IGJvcmRlcj8ucmFkaXVzID8/ICcnO1xuICAgIHN0eWxlWydib3JkZXItd2lkdGgnXSA9IGJvcmRlcj8ud2lkdGggPz8gJyc7XG4gICAgc3R5bGVbJ2JvcmRlci1jb2xvciddID0gYm9yZGVyPy5jb2xvciA/PyAnJztcbiAgICBzdHlsZVsnYm9yZGVyLXN0eWxlJ10gPSBib3JkZXI/LnN0eWxlID8/ICcnO1xuXG4gICAgc3R5bGVbJ292ZXJmbG93J10gPSBvdmVyZmxvdyA/PyAnJztcbiAgICBzdHlsZVsnb3ZlcmZsb3cteCddID0gb3ZlcmZsb3dYID8/ICcnO1xuICAgIHN0eWxlWydvdmVyZmxvdy15J10gPSBvdmVyZmxvd1kgPz8gJyc7XG5cbiAgICBzdHlsZVsnZGlyZWN0aW9uJ10gPSBkaXJlY3Rpb24gPz8gJyc7XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBibG9ja1N0eWxlID0gY29tcHV0ZWQ8QVhQU3R5bGVNYXA+KCgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5vcHRpb25zKCk7XG5cbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4udGhpcy5ob3N0Qm94U3R5bGUoKSB9O1xuXG4gICAgY29uc3Qgd2lkdGggPSBvcHRpb25zPy5bJ3dpZHRoJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1pbldpZHRoID0gb3B0aW9ucz8uWydtaW5XaWR0aCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtYXhXaWR0aCA9IG9wdGlvbnM/LlsnbWF4V2lkdGgnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBoZWlnaHQgPSBvcHRpb25zPy5bJ2hlaWdodCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtaW5IZWlnaHQgPSBvcHRpb25zPy5bJ21pbkhlaWdodCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBtYXhIZWlnaHQgPSBvcHRpb25zPy5bJ21heEhlaWdodCddIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIHN0eWxlWydtaW4td2lkdGgnXSA9IG1pbldpZHRoID8/ICcnO1xuICAgIHN0eWxlWyd3aWR0aCddID0gd2lkdGggPz8gJyc7XG4gICAgc3R5bGVbJ21heC13aWR0aCddID0gbWF4V2lkdGggPz8gJyc7XG5cbiAgICBzdHlsZVsnbWluLWhlaWdodCddID0gbWluSGVpZ2h0ID8/ICcnO1xuICAgIHN0eWxlWydoZWlnaHQnXSA9IGhlaWdodCA/PyAnJztcbiAgICBzdHlsZVsnbWF4LWhlaWdodCddID0gbWF4SGVpZ2h0ID8/ICcnO1xuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwcm90ZWN0ZWQgaW5saW5lU3R5bGUgPSBjb21wdXRlZDxBWFBTdHlsZU1hcD4oKCkgPT4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuaG9zdEJveFN0eWxlKCkgfTtcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGJsb2NrQ2xhc3MgPSBjb21wdXRlZDxBWFBDbGFzc01hcD4oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAnYXgtYmxvY2snOiB0cnVlLFxuICAgICAgJ2F4LXctZnVsbCc6IHRydWUsXG4gICAgICAvLyAnYXgtd2lkZ2V0LW91dGxpbmUnOiB0cnVlLFxuICAgIH07XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBpbmxpbmVDbGFzcyA9IGNvbXB1dGVkPEFYUENsYXNzTWFwPigoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdheC1pbmxpbmUtYmxvY2snOiB0cnVlLFxuICAgIH07XG4gIH0pO1xufVxuIl19","import { Injectable, computed } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPBlockBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPBlockBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi9iYXNlLXdpZGdldC9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sOEJBQThCLENBQUM7O0FBR2hGLE1BQU0sT0FBZ0IsaUNBQWtDLFNBQVEsZ0NBQWdDO0lBRGhHOztRQUVrQixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUscURBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUscURBQUMsQ0FBQztLQUMvRDsrR0FIcUIsaUNBQWlDO21IQUFqQyxpQ0FBaUM7OzRGQUFqQyxpQ0FBaUM7a0JBRHRELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQm94TW9kZWxMYXlvdXRXaWRnZXRDb21wb25lbnQgfSBmcm9tICcuL2JveC1tb2RlbC13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJveE1vZGVsTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmxvY2tDbGFzcygpKTtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYmxvY2tTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPFlexBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.flex = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"flex\" }] : []));\n this.hostFlexStyle = computed(() => {\n const blockStyle = this.blockStyle();\n const style = { ...blockStyle };\n const flex = this.flex();\n if (isNil(flex?.flexDirection)) {\n style['flex-direction'] = '';\n }\n else {\n style['flex-direction'] = flex.flexDirection;\n }\n if (isNil(flex?.flexWrap)) {\n style['flex-wrap'] = '';\n }\n else {\n style['flex-wrap'] = flex.flexWrap;\n }\n //TODO NEED TO FIX LATER\n style['overflow'] = flex?.flexWrap === 'nowrap' ? 'auto' : '';\n //END\n if (isNil(flex?.justifyContent)) {\n style['justify-content'] = '';\n }\n else {\n style['justify-content'] = flex.justifyContent;\n }\n if (isNil(flex?.alignItems)) {\n style['align-items'] = '';\n }\n else {\n style['align-items'] = flex.alignItems;\n }\n if (isNil(flex?.gap)) {\n style['gap'] = '';\n }\n else {\n style['gap'] = flex.gap;\n }\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostFlexStyle\" }] : []));\n this.hostFlexClass = computed(() => {\n return {\n ...this.blockClass(),\n 'ax-flex': true,\n 'ax-h-full': true,\n };\n }, ...(ngDevMode ? [{ debugName: \"hostFlexClass\" }] : []));\n this.hostClass = computed(() => {\n return this.hostFlexClass();\n }, ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => {\n return this.hostFlexStyle();\n }, ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL2Jhc2Utd2lkZ2V0L2ZsZXgtYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFbEMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2xGLE1BQU0sT0FBZ0IsZ0NBQWlDLFNBQVEsaUNBQWlDO0lBRGhHOztRQUVZLFNBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBa0MsZ0RBQUMsQ0FBQztRQUV6RSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sS0FBSyxHQUFvQyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDakUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3pCLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUMvQixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDL0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDL0MsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUMxQixLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNyQyxDQUFDO1lBQ0Qsd0JBQXdCO1lBQ3hCLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLEVBQUUsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUQsS0FBSztZQUNMLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUNoQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDaEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7WUFDakQsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUM1QixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDcEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQzFCLENBQUM7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMseURBQUMsQ0FBQztRQUVJLGtCQUFhLEdBQUcsUUFBUSxDQUEwQixHQUFHLEVBQUU7WUFDNUQsT0FBTztnQkFDTCxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQUM7UUFDSixDQUFDLHlEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLHFEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM5QixDQUFDLHFEQUFDLENBQUM7S0FDSjsrR0FyRHFCLGdDQUFnQzttSEFBaEMsZ0NBQWdDOzs0RkFBaEMsZ0NBQWdDO2tCQURyRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYUEZsZXhCb3hTdHJpbmcgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQRmxleEJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCbG9ja0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICBwcm90ZWN0ZWQgZmxleCA9IGNvbXB1dGVkKCgpID0+IHRoaXMub3B0aW9ucygpIGFzIEFYUEZsZXhCb3hTdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBob3N0RmxleFN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGJsb2NrU3R5bGUgPSB0aGlzLmJsb2NrU3R5bGUoKTtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4uYmxvY2tTdHlsZSB9O1xuICAgIGNvbnN0IGZsZXggPSB0aGlzLmZsZXgoKTtcbiAgICBpZiAoaXNOaWwoZmxleD8uZmxleERpcmVjdGlvbikpIHtcbiAgICAgIHN0eWxlWydmbGV4LWRpcmVjdGlvbiddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydmbGV4LWRpcmVjdGlvbiddID0gZmxleC5mbGV4RGlyZWN0aW9uO1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmxleD8uZmxleFdyYXApKSB7XG4gICAgICBzdHlsZVsnZmxleC13cmFwJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2ZsZXgtd3JhcCddID0gZmxleC5mbGV4V3JhcDtcbiAgICB9XG4gICAgLy9UT0RPIE5FRUQgVE8gRklYIExBVEVSXG4gICAgc3R5bGVbJ292ZXJmbG93J10gPSBmbGV4Py5mbGV4V3JhcCA9PT0gJ25vd3JhcCcgPyAnYXV0bycgOiAnJztcbiAgICAvL0VORFxuICAgIGlmIChpc05pbChmbGV4Py5qdXN0aWZ5Q29udGVudCkpIHtcbiAgICAgIHN0eWxlWydqdXN0aWZ5LWNvbnRlbnQnXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnanVzdGlmeS1jb250ZW50J10gPSBmbGV4Lmp1c3RpZnlDb250ZW50O1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmxleD8uYWxpZ25JdGVtcykpIHtcbiAgICAgIHN0eWxlWydhbGlnbi1pdGVtcyddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydhbGlnbi1pdGVtcyddID0gZmxleC5hbGlnbkl0ZW1zO1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmxleD8uZ2FwKSkge1xuICAgICAgc3R5bGVbJ2dhcCddID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlWydnYXAnXSA9IGZsZXguZ2FwO1xuICAgIH1cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0pO1xuXG4gIHB1YmxpYyBob3N0RmxleENsYXNzID0gY29tcHV0ZWQ8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5ibG9ja0NsYXNzKCksXG4gICAgICAnYXgtZmxleCc6IHRydWUsXG4gICAgICAnYXgtaC1mdWxsJzogdHJ1ZSxcbiAgICB9O1xuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RGbGV4Q2xhc3MoKTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RmxleFN0eWxlKCk7XG4gIH0pO1xufVxuIl19","import { computed, Injectable } from '@angular/core';\nimport { AXPBoxModelLayoutWidgetComponent } from './box-model-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPInlineBaseLayoutWidgetComponent extends AXPBoxModelLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostClass = computed(() => this.inlineClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.inlineStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPInlineBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvYmFzZS13aWRnZXQvaW5saW5lLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHaEYsTUFBTSxPQUFnQixrQ0FBbUMsU0FBUSxnQ0FBZ0M7SUFEakc7O1FBRWtCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxxREFBQyxDQUFDO1FBQy9DLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxxREFBQyxDQUFDO0tBQ2hFOytHQUhxQixrQ0FBa0M7bUhBQWxDLGtDQUFrQzs7NEZBQWxDLGtDQUFrQztrQkFEdkQsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVkLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFBCb3hNb2RlbExheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vYm94LW1vZGVsLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQSW5saW5lQmFzZUxheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJveE1vZGVsTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW5saW5lQ2xhc3MoKSk7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlubGluZVN0eWxlKCkpO1xufVxuIl19","import { Injectable, computed } from '@angular/core';\nimport { isNil } from 'lodash-es';\nimport { AXPInlineBaseLayoutWidgetComponent } from './inline-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPFlexItemBaseLayoutWidgetComponent extends AXPInlineBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.flexItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"flexItem\" }] : []));\n this.hostFlexItemStyle = computed(() => {\n const inlineStyle = this.blockStyle();\n const style = { ...inlineStyle };\n const fi = this.flexItem();\n if (isNil(fi?.order)) {\n style['order'] = '';\n }\n else {\n style['order'] = fi.order;\n }\n if (isNil(fi?.grow)) {\n style['flex-grow'] = '';\n }\n else {\n style['flex-grow'] = fi.grow;\n }\n if (isNil(fi?.shrink)) {\n style['flex-shrink'] = '';\n }\n else {\n style['flex-shrink'] = fi.shrink;\n }\n if (isNil(fi?.basis)) {\n style['flex-basis'] = '';\n }\n else {\n style['flex-basis'] = fi.basis;\n }\n if (isNil(fi?.alignSelf)) {\n style['align-self'] = '';\n }\n else {\n style['align-self'] = fi.alignSelf;\n }\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostFlexItemStyle\" }] : []));\n this.hostFlexItemClass = computed(() => {\n return {\n ...this.blockClass(),\n };\n }, ...(ngDevMode ? [{ debugName: \"hostFlexItemClass\" }] : []));\n this.hostClass = computed(() => {\n return this.hostFlexItemClass();\n }, ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => {\n return this.hostFlexItemStyle();\n }, ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPFlexItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxleC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvYmFzZS13aWRnZXQvZmxleC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQUdwRixNQUFNLE9BQWdCLG9DQUFxQyxTQUFRLGtDQUFrQztJQURyRzs7UUFFWSxhQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQXNDLG9EQUFDLENBQUM7UUFFakYsc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztZQUNsRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDM0IsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdEIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMxQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDL0IsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN0QixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMzQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDckMsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyw2REFBQyxDQUFDO1FBRUksc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QyxPQUFPO2dCQUNMLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUNyQixDQUFDO1FBQ0osQ0FBQyw2REFBQyxDQUFDO1FBRWEsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDeEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNsQyxDQUFDLHFEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4QyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2xDLENBQUMscURBQUMsQ0FBQztLQUNKOytHQWhEcUIsb0NBQW9DO21IQUFwQyxvQ0FBb0M7OzRGQUFwQyxvQ0FBb0M7a0JBRHpELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQVhQRmxleEl0ZW1Cb3hTdHJpbmcgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgQVhQSW5saW5lQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vaW5saW5lLWJhc2Utd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBGbGV4SXRlbUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBJbmxpbmVCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGZsZXhJdGVtID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5vcHRpb25zKCkgYXMgQVhQRmxleEl0ZW1Cb3hTdHJpbmcgfCB1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBob3N0RmxleEl0ZW1TdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBpbmxpbmVTdHlsZSA9IHRoaXMuYmxvY2tTdHlsZSgpO1xuICAgIGNvbnN0IHN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0geyAuLi5pbmxpbmVTdHlsZSB9O1xuICAgIGNvbnN0IGZpID0gdGhpcy5mbGV4SXRlbSgpO1xuICAgIGlmIChpc05pbChmaT8ub3JkZXIpKSB7XG4gICAgICBzdHlsZVsnb3JkZXInXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnb3JkZXInXSA9IGZpLm9yZGVyO1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmk/Lmdyb3cpKSB7XG4gICAgICBzdHlsZVsnZmxleC1ncm93J10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2ZsZXgtZ3JvdyddID0gZmkuZ3JvdztcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZpPy5zaHJpbmspKSB7XG4gICAgICBzdHlsZVsnZmxleC1zaHJpbmsnXSA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZVsnZmxleC1zaHJpbmsnXSA9IGZpLnNocmluaztcbiAgICB9XG4gICAgaWYgKGlzTmlsKGZpPy5iYXNpcykpIHtcbiAgICAgIHN0eWxlWydmbGV4LWJhc2lzJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2ZsZXgtYmFzaXMnXSA9IGZpLmJhc2lzO1xuICAgIH1cbiAgICBpZiAoaXNOaWwoZmk/LmFsaWduU2VsZikpIHtcbiAgICAgIHN0eWxlWydhbGlnbi1zZWxmJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVbJ2FsaWduLXNlbGYnXSA9IGZpLmFsaWduU2VsZjtcbiAgICB9XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwdWJsaWMgaG9zdEZsZXhJdGVtQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuYmxvY2tDbGFzcygpLFxuICAgIH07XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaG9zdEZsZXhJdGVtQ2xhc3MoKTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ob3N0RmxleEl0ZW1TdHlsZSgpO1xuICB9KTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.grid = computed(() => this.options()?.['grid'], ...(ngDevMode ? [{ debugName: \"grid\" }] : []));\n this.hostGridStyle = computed(() => {\n const style = { ...this.inlineStyle() };\n const g = this.grid()?.default;\n if (g?.gap)\n style['gap'] = g.gap;\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostGridStyle\" }] : []));\n this.hostGridClass = computed(() => {\n const cls = {\n ...this.inlineClass(),\n 'ax-grid': true,\n };\n const g = this.grid()?.default;\n if (g?.columns)\n cls[`lg:ax-grid-cols-${g.columns}`] = true;\n if (g?.rows)\n cls[`lg:ax-grid-rows-${g.rows}`] = true;\n if (g?.justifyItems)\n cls[`lg:ax-justify-items-${g.justifyItems}`] = true;\n if (g?.alignItems)\n cls[`lg:ax-align-items-${g.alignItems}`] = true;\n if (g?.autoFlow)\n cls[`lg:ax-grid-flow-${g.autoFlow}`] = true;\n return cls;\n }, ...(ngDevMode ? [{ debugName: \"hostGridClass\" }] : []));\n this.hostClass = computed(() => this.hostGridClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostGridStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL2Jhc2Utd2lkZ2V0L2dyaWQtYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLCtCQUErQixDQUFDOztBQUdsRixNQUFNLE9BQWdCLGdDQUFpQyxTQUFRLGlDQUFpQztJQURoRzs7UUFFVSxTQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBd0MsZ0RBQUMsQ0FBQztRQUV4RixrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN6RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDO1lBRS9CLElBQUksQ0FBQyxFQUFFLEdBQUc7Z0JBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFFakMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLHlEQUFDLENBQUM7UUFFSSxrQkFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDbkMsTUFBTSxHQUFHLEdBQTRCO2dCQUNuQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ3JCLFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUM7WUFFRixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDO1lBRS9CLElBQUksQ0FBQyxFQUFFLE9BQU87Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDM0QsSUFBSSxDQUFDLEVBQUUsSUFBSTtnQkFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUNyRCxJQUFJLENBQUMsRUFBRSxZQUFZO2dCQUFFLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3pFLElBQUksQ0FBQyxFQUFFLFVBQVU7Z0JBQUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDbkUsSUFBSSxDQUFDLEVBQUUsUUFBUTtnQkFBRSxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUU3RCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMseURBQUMsQ0FBQztRQUVhLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxxREFBQyxDQUFDO1FBQ2pELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxxREFBQyxDQUFDO0tBQ2xFOytHQS9CcUIsZ0NBQWdDO21IQUFoQyxnQ0FBZ0M7OzRGQUFoQyxnQ0FBZ0M7a0JBRHJELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQR3JpZEJyZWFrcG9pbnRWYWx1ZXMgfSBmcm9tICcuLi9oZWxwZXInO1xuaW1wb3J0IHsgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQR3JpZEJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBCbG9ja0Jhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQge1xuICBwcml2YXRlIGdyaWQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKT8uWydncmlkJ10gYXMgQVhQR3JpZEJyZWFrcG9pbnRWYWx1ZXMgfCB1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyBob3N0R3JpZFN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0geyAuLi50aGlzLmlubGluZVN0eWxlKCkgfTtcbiAgICBjb25zdCBnID0gdGhpcy5ncmlkKCk/LmRlZmF1bHQ7XG5cbiAgICBpZiAoZz8uZ2FwKSBzdHlsZVsnZ2FwJ10gPSBnLmdhcDtcblxuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHVibGljIGhvc3RHcmlkQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2xzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHtcbiAgICAgIC4uLnRoaXMuaW5saW5lQ2xhc3MoKSxcbiAgICAgICdheC1ncmlkJzogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3QgZyA9IHRoaXMuZ3JpZCgpPy5kZWZhdWx0O1xuXG4gICAgaWYgKGc/LmNvbHVtbnMpIGNsc1tgbGc6YXgtZ3JpZC1jb2xzLSR7Zy5jb2x1bW5zfWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8ucm93cykgY2xzW2BsZzpheC1ncmlkLXJvd3MtJHtnLnJvd3N9YF0gPSB0cnVlO1xuICAgIGlmIChnPy5qdXN0aWZ5SXRlbXMpIGNsc1tgbGc6YXgtanVzdGlmeS1pdGVtcy0ke2cuanVzdGlmeUl0ZW1zfWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8uYWxpZ25JdGVtcykgY2xzW2BsZzpheC1hbGlnbi1pdGVtcy0ke2cuYWxpZ25JdGVtc31gXSA9IHRydWU7XG4gICAgaWYgKGc/LmF1dG9GbG93KSBjbHNbYGxnOmF4LWdyaWQtZmxvdy0ke2cuYXV0b0Zsb3d9YF0gPSB0cnVlO1xuXG4gICAgcmV0dXJuIGNscztcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaG9zdEdyaWRDbGFzcygpKTtcbiAgcHVibGljIG92ZXJyaWRlIGhvc3RTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaG9zdEdyaWRTdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { AXPFlexBaseLayoutWidgetComponent } from './flex-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPGridItemBaseLayoutWidgetComponent extends AXPFlexBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.gridItem = computed(() => this.options(), ...(ngDevMode ? [{ debugName: \"gridItem\" }] : []));\n this.hostGridItemStyle = computed(() => {\n const style = { ...this.hostFlexStyle() };\n const g = this.gridItem();\n if (g?.alignSelf)\n style['align-self'] = g.alignSelf;\n if (g?.justifySelf)\n style['justify-self'] = g.justifySelf;\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostGridItemStyle\" }] : []));\n this.hostGridItemClass = computed(() => {\n const cls = { ...this.hostFlexClass() };\n const g = this.gridItem();\n if (g?.colSpan)\n cls[`lg:ax-col-span-${g.colSpan}`] = true;\n if (g?.colStart)\n cls[`lg:ax-col-start-${g.colStart}`] = true;\n if (g?.colEnd)\n cls[`lg:ax-col-end-${g.colEnd}`] = true;\n if (g?.rowSpan)\n cls[`lg:ax-row-span-${g.rowSpan}`] = true;\n if (g?.rowStart)\n cls[`lg:ax-row-start-${g.rowStart}`] = true;\n if (g?.rowEnd)\n cls[`lg:ax-row-end-${g.rowEnd}`] = true;\n return cls;\n }, ...(ngDevMode ? [{ debugName: \"hostGridItemClass\" }] : []));\n this.hostClass = computed(() => this.hostGridItemClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostGridItemStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPGridItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvYmFzZS13aWRnZXQvZ3JpZC1pdGVtLWJhc2Utd2lkZ2V0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFHaEYsTUFBTSxPQUFnQixvQ0FBcUMsU0FBUSxnQ0FBZ0M7SUFEbkc7O1FBRVUsYUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFzQyxvREFBQyxDQUFDO1FBRS9FLHNCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsTUFBTSxLQUFLLEdBQW9DLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQztZQUMzRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFMUIsSUFBSSxDQUFDLEVBQUUsU0FBUztnQkFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNwRCxJQUFJLENBQUMsRUFBRSxXQUFXO2dCQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDO1lBRTFELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyw2REFBQyxDQUFDO1FBRUksc0JBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNLEdBQUcsR0FBNEIsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ2pFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUUxQixJQUFJLENBQUMsRUFBRSxPQUFPO2dCQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzFELElBQUksQ0FBQyxFQUFFLFFBQVE7Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDN0QsSUFBSSxDQUFDLEVBQUUsTUFBTTtnQkFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUV2RCxJQUFJLENBQUMsRUFBRSxPQUFPO2dCQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzFELElBQUksQ0FBQyxFQUFFLFFBQVE7Z0JBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDN0QsSUFBSSxDQUFDLEVBQUUsTUFBTTtnQkFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUV2RCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsNkRBQUMsQ0FBQztRQUVhLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLHFEQUFDLENBQUM7UUFDckQsY0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUscURBQUMsQ0FBQztLQUN0RTsrR0E5QnFCLG9DQUFvQzttSEFBcEMsb0NBQW9DOzs0RkFBcEMsb0NBQW9DO2tCQUR6RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUEdyaWRJdGVtQm94U3RyaW5nIH0gZnJvbSAnLi4vaGVscGVyL3Byb3BlcnR5LWVkaXRvci50eXBlJztcbmltcG9ydCB7IEFYUEZsZXhCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9mbGV4LWJhc2Utd2lkZ2V0LmNvbXBvbmVudCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFBHcmlkSXRlbUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBGbGV4QmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIHByaXZhdGUgZ3JpZEl0ZW0gPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9wdGlvbnMoKSBhcyBBWFBHcmlkSXRlbUJveFN0cmluZyB8IHVuZGVmaW5lZCk7XG5cbiAgcHVibGljIGhvc3RHcmlkSXRlbVN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHN0eWxlOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXI+ID0geyAuLi50aGlzLmhvc3RGbGV4U3R5bGUoKSB9O1xuICAgIGNvbnN0IGcgPSB0aGlzLmdyaWRJdGVtKCk7XG5cbiAgICBpZiAoZz8uYWxpZ25TZWxmKSBzdHlsZVsnYWxpZ24tc2VsZiddID0gZy5hbGlnblNlbGY7XG4gICAgaWYgKGc/Lmp1c3RpZnlTZWxmKSBzdHlsZVsnanVzdGlmeS1zZWxmJ10gPSBnLmp1c3RpZnlTZWxmO1xuXG4gICAgcmV0dXJuIHN0eWxlO1xuICB9KTtcblxuICBwdWJsaWMgaG9zdEdyaWRJdGVtQ2xhc3MgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY2xzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHsgLi4udGhpcy5ob3N0RmxleENsYXNzKCkgfTtcbiAgICBjb25zdCBnID0gdGhpcy5ncmlkSXRlbSgpO1xuXG4gICAgaWYgKGc/LmNvbFNwYW4pIGNsc1tgbGc6YXgtY29sLXNwYW4tJHtnLmNvbFNwYW59YF0gPSB0cnVlO1xuICAgIGlmIChnPy5jb2xTdGFydCkgY2xzW2BsZzpheC1jb2wtc3RhcnQtJHtnLmNvbFN0YXJ0fWBdID0gdHJ1ZTtcbiAgICBpZiAoZz8uY29sRW5kKSBjbHNbYGxnOmF4LWNvbC1lbmQtJHtnLmNvbEVuZH1gXSA9IHRydWU7XG5cbiAgICBpZiAoZz8ucm93U3BhbikgY2xzW2BsZzpheC1yb3ctc3Bhbi0ke2cucm93U3Bhbn1gXSA9IHRydWU7XG4gICAgaWYgKGc/LnJvd1N0YXJ0KSBjbHNbYGxnOmF4LXJvdy1zdGFydC0ke2cucm93U3RhcnR9YF0gPSB0cnVlO1xuICAgIGlmIChnPy5yb3dFbmQpIGNsc1tgbGc6YXgtcm93LWVuZC0ke2cucm93RW5kfWBdID0gdHJ1ZTtcblxuICAgIHJldHVybiBjbHM7XG4gIH0pO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBob3N0Q2xhc3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RHcmlkSXRlbUNsYXNzKCkpO1xuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ob3N0R3JpZEl0ZW1TdHlsZSgpKTtcbn1cbiJdfQ==","import { Injectable, computed } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.hostTableClass = computed(() => ({\n ...this.blockClass(),\n }), ...(ngDevMode ? [{ debugName: \"hostTableClass\" }] : []));\n this.hostTableStyle = computed(() => {\n const style = { ...this.blockStyle() };\n style['overflow-x'] = 'auto';\n return style;\n }, ...(ngDevMode ? [{ debugName: \"hostTableStyle\" }] : []));\n this.hostClass = computed(() => this.hostTableClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.hostTableStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi9iYXNlLXdpZGdldC90YWJsZS1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR2xGLE1BQU0sT0FBZ0IsaUNBQWtDLFNBQVEsaUNBQWlDO0lBRGpHOztRQUVTLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdEMsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQ3JCLENBQUMsMERBQUMsQ0FBQztRQUVHLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNwQyxNQUFNLEtBQUssR0FBb0MsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3hFLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDN0IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLDBEQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUscURBQUMsQ0FBQztRQUNsRCxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUscURBQUMsQ0FBQztLQUNuRTsrR0FicUIsaUNBQWlDO21IQUFqQyxpQ0FBaUM7OzRGQUFqQyxpQ0FBaUM7a0JBRHRELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQVGFibGVCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IGV4dGVuZHMgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHVibGljIGhvc3RUYWJsZUNsYXNzID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICAuLi50aGlzLmJsb2NrQ2xhc3MoKSxcbiAgfSkpO1xuXG4gIHB1YmxpYyBob3N0VGFibGVTdHlsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzdHlsZTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHsgLi4udGhpcy5ibG9ja1N0eWxlKCkgfTtcbiAgICBzdHlsZVsnb3ZlcmZsb3cteCddID0gJ2F1dG8nO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSk7XG5cbiAgcHVibGljIG92ZXJyaWRlIGhvc3RDbGFzcyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaG9zdFRhYmxlQ2xhc3MoKSk7XG4gIHB1YmxpYyBvdmVycmlkZSBob3N0U3R5bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmhvc3RUYWJsZVN0eWxlKCkpO1xufVxuIl19","import { Injectable } from '@angular/core';\nimport { AXPBlockBaseLayoutWidgetComponent } from './block-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableItemOpsBaseLayoutWidgetComponent extends AXPBlockBaseLayoutWidgetComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemOpsBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1vcHMtYmFzZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi9iYXNlLXdpZGdldC90YWJsZS1pdGVtLW9wcy1iYXNlLXdpZGdldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFHbEYsTUFBTSxPQUFnQix3Q0FBeUMsU0FBUSxpQ0FBaUM7K0dBQWxGLHdDQUF3QzttSEFBeEMsd0NBQXdDOzs0RkFBeEMsd0NBQXdDO2tCQUQ3RCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQQmxvY2tCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi9ibG9jay1iYXNlLXdpZGdldC5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhQVGFibGVJdGVtT3BzQmFzZUxheW91dFdpZGdldENvbXBvbmVudCBleHRlbmRzIEFYUEJsb2NrQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB7XG4gIC8vIENvbHVtbnMgKHJlbGF0aXZlIHRvIGN1cnJlbnQgY2VsbClcbiAgYWJzdHJhY3QgaW5zZXJ0Q29sdW1uTGVmdCgpOiB2b2lkO1xuICBhYnN0cmFjdCBpbnNlcnRDb2x1bW5SaWdodCgpOiB2b2lkO1xuXG4gIC8vIFJvd3MgcmVsYXRpdmUgdG8gY3VycmVudCBjZWxsXG4gIGFic3RyYWN0IGluc2VydFJvd0Fib3ZlKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGluc2VydFJvd0JlbG93KCk6IHZvaWQ7XG5cbiAgLy8gQ2VsbC1sZXZlbCBpbnNlcnQgb3BlcmF0aW9ucyAocmVsYXRpdmUgdG8gY3VycmVudCBjZWxsKVxuICBhYnN0cmFjdCBpbnNlcnRDZWxsU2hpZnRSaWdodCgpOiB2b2lkOyAvLyBpbnNlcnQgdG8gdGhlIGxlZnQgb2YgdGFyZ2V0LCBzaGlmdCByaWdodCwgaW5jcmVhc2UgY29sdW1uc1xuICBhYnN0cmFjdCBpbnNlcnRDZWxsU2hpZnREb3duKCk6IHZvaWQ7IC8vIGluc2VydCBhYm92ZSB0YXJnZXQgcm93LCBzaGlmdCBkb3duLCBpbmNyZWFzZSByb3dzXG59XG4iXX0=","import { Injectable, computed } from '@angular/core';\nimport { AXPTableItemOpsBaseLayoutWidgetComponent } from './table-item-ops-base-widget.component';\nimport * as i0 from \"@angular/core\";\nexport class AXPTableItemBaseLayoutWidgetComponent extends AXPTableItemOpsBaseLayoutWidgetComponent {\n constructor() {\n super(...arguments);\n this.colSpan = computed(() => {\n const v = this.options()?.colSpan;\n return v ? Math.max(1, v) : 1;\n }, ...(ngDevMode ? [{ debugName: \"colSpan\" }] : []));\n this.rowSpan = computed(() => {\n const v = this.options()?.rowSpan;\n return v ? Math.max(1, v) : 1;\n }, ...(ngDevMode ? [{ debugName: \"rowSpan\" }] : []));\n this.hostClass = computed(() => this.blockClass(), ...(ngDevMode ? [{ debugName: \"hostClass\" }] : []));\n this.hostStyle = computed(() => this.blockStyle(), ...(ngDevMode ? [{ debugName: \"hostStyle\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPTableItemBaseLayoutWidgetComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaXRlbS1iYXNlLXdpZGdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL2Jhc2Utd2lkZ2V0L3RhYmxlLWl0ZW0tYmFzZS13aWRnZXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOztBQUdsRyxNQUFNLE9BQWdCLHFDQUFzQyxTQUFRLHdDQUF3QztJQUQ1Rzs7UUFFWSxZQUFPLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRTtZQUN4QyxNQUFNLENBQUMsR0FBSSxJQUFJLENBQUMsT0FBTyxFQUFVLEVBQUUsT0FBNkIsQ0FBQztZQUNqRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLG1EQUFDLENBQUM7UUFDTyxZQUFPLEdBQUcsUUFBUSxDQUFTLEdBQUcsRUFBRTtZQUN4QyxNQUFNLENBQUMsR0FBSSxJQUFJLENBQUMsT0FBTyxFQUFVLEVBQUUsT0FBNkIsQ0FBQztZQUNqRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLG1EQUFDLENBQUM7UUFFYSxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUscURBQUMsQ0FBQztRQUM5QyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUscURBQUMsQ0FBQztLQUMvRDsrR0FacUIscUNBQXFDO21IQUFyQyxxQ0FBcUM7OzRGQUFyQyxxQ0FBcUM7a0JBRDFELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhQVGFibGVJdGVtT3BzQmFzZUxheW91dFdpZGdldENvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtaXRlbS1vcHMtYmFzZS13aWRnZXQuY29tcG9uZW50JztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUFRhYmxlSXRlbUJhc2VMYXlvdXRXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBBWFBUYWJsZUl0ZW1PcHNCYXNlTGF5b3V0V2lkZ2V0Q29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIGNvbFNwYW4gPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCB2ID0gKHRoaXMub3B0aW9ucygpIGFzIGFueSk/LmNvbFNwYW4gYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB2ID8gTWF0aC5tYXgoMSwgdikgOiAxO1xuICB9KTtcbiAgcHJvdGVjdGVkIHJvd1NwYW4gPSBjb21wdXRlZDxudW1iZXI+KCgpID0+IHtcbiAgICBjb25zdCB2ID0gKHRoaXMub3B0aW9ucygpIGFzIGFueSk/LnJvd1NwYW4gYXMgbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIHJldHVybiB2ID8gTWF0aC5tYXgoMSwgdikgOiAxO1xuICB9KTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdENsYXNzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ibG9ja0NsYXNzKCkpO1xuICBwdWJsaWMgb3ZlcnJpZGUgaG9zdFN0eWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5ibG9ja1N0eWxlKCkpO1xufVxuIl19","import { Injectable } from '@angular/core';\nimport { merge } from 'lodash-es';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetRegistryService {\n /**\n *\n */\n constructor() {\n this.types = new Map();\n AXPWidgetRegistryService.instance = this;\n }\n register(widget) {\n this.types.set(widget.name, widget);\n }\n extend(parentName, widget) {\n const parentWidget = this.resolve(parentName);\n const newWidget = merge({}, parentWidget, widget);\n newWidget.name = widget.name;\n this.register(newWidget);\n }\n resolve(name) {\n const widget = this.types.get(name);\n if (!widget) {\n throw new Error(`Widget with name \"${name}\" does not exist.`);\n }\n return widget;\n }\n all() {\n return Array.from(this.types.values());\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRegistryService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRegistryService, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlZ2lzdGVyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQtcmVnaXN0ZXJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQU1sQyxNQUFNLE9BQU8sd0JBQXdCO0lBS25DOztPQUVHO0lBQ0g7UUFQUSxVQUFLLEdBQWlDLElBQUksR0FBRyxFQUFFLENBQUM7UUFRdEQsd0JBQXdCLENBQUMsUUFBUSxHQUFDLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQXVCO1FBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFrQixFQUFFLE1BQXVCO1FBQ2hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEQsU0FBUyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFZO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLElBQUksbUJBQW1CLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLEdBQUc7UUFDUixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7K0dBakNVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb25maWcgfSBmcm9tICcuL3dpZGdldC50eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHR5cGVzOiBNYXA8c3RyaW5nLCBBWFBXaWRnZXRDb25maWc+ID0gbmV3IE1hcCgpO1xuXG4gIHB1YmxpYyBzdGF0aWMgIGluc3RhbmNlOkFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZTtcblxuICAvKipcbiAgICpcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIEFYUFdpZGdldFJlZ2lzdHJ5U2VydmljZS5pbnN0YW5jZT10aGlzO1xuICB9XG5cbiAgcmVnaXN0ZXIod2lkZ2V0OiBBWFBXaWRnZXRDb25maWcpIHtcbiAgICB0aGlzLnR5cGVzLnNldCh3aWRnZXQubmFtZSwgd2lkZ2V0KTtcbiAgfVxuXG4gIGV4dGVuZChwYXJlbnROYW1lOiBzdHJpbmcsIHdpZGdldDogQVhQV2lkZ2V0Q29uZmlnKSB7XG4gICAgY29uc3QgcGFyZW50V2lkZ2V0ID0gdGhpcy5yZXNvbHZlKHBhcmVudE5hbWUpO1xuICAgIGNvbnN0IG5ld1dpZGdldCA9IG1lcmdlKHt9LCBwYXJlbnRXaWRnZXQsIHdpZGdldCk7XG4gICAgbmV3V2lkZ2V0Lm5hbWUgPSB3aWRnZXQubmFtZTtcbiAgICB0aGlzLnJlZ2lzdGVyKG5ld1dpZGdldCk7XG4gIH1cblxuICByZXNvbHZlKG5hbWU6IHN0cmluZyk6IEFYUFdpZGdldENvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy50eXBlcy5nZXQobmFtZSk7XG4gICAgaWYgKCF3aWRnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV2lkZ2V0IHdpdGggbmFtZSBcIiR7bmFtZX1cIiBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuXG4gIHB1YmxpYyBhbGwoKTogQVhQV2lkZ2V0Q29uZmlnW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMudHlwZXMudmFsdWVzKCkpO1xuICB9XG59XG4iXX0=","import { AXBaseDataTable, AXDataTableColumnComponent } from '@acorex/components/data-table';\nimport { AXPExpressionEvaluatorService, getSmart } from '@acorex/platform/core';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, TemplateRef, ViewChild, inject, signal, } from '@angular/core';\nimport { merge, get } from 'lodash-es';\nimport { AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXP_WIDGET_COLUMN_TOKEN } from './widget.types';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"@acorex/core/translation\";\nexport class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {\n constructor() {\n super(...arguments);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.grid = inject(AXBaseDataTable);\n this.expressionEvaluator = inject(AXPExpressionEvaluatorService);\n this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: \"mergedOptions\" }] : []));\n this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: \"loadingRow\" }] : []));\n this.rowInjectorsCache = new Map();\n this.hasExpressions = false;\n this.pendingEvaluations = new Set();\n this.changeDetectionScheduled = false;\n this.MAX_CACHE_SIZE = 1000; // Limit cache size to prevent memory leaks\n this.injector = inject(Injector);\n this.cdr = inject(ChangeDetectorRef);\n }\n get node() {\n return this._node;\n }\n set node(v) {\n this._node = v;\n }\n get renderFooterTemplate() {\n return this.footerTemplate ?? this._contentFooterTemplate;\n }\n get renderCellTemplate() {\n return this.cellTemplate ?? this._contentCellTemplate;\n }\n async handleExpandRow(row) {\n this.loadingRow.set(row);\n await this.grid.expandRow(row);\n this.loadingRow.set(null);\n // if (row.data?.__meta__?.expanded === undefined) {\n // this.width = `${parseInt(this.width as string) + 24}px`;\n // }\n }\n get renderHeaderTemplate() {\n return this.headerTemplate ?? this._contentHeaderTemplate;\n }\n get loadingEnabled() {\n return true;\n }\n get name() {\n return `col-${this.node.path}`;\n }\n async ngOnInit() {\n const widget = this.widgetRegistery.resolve(this.node.type);\n const mode = 'column';\n this.component = await widget?.components[mode]?.component();\n //\n const props = widget?.components[mode]?.properties\n ?.filter((c) => c.schema.defaultValue)\n .map((c) => ({ [c.name]: c.schema.defaultValue }))\n .reduce((acc, curr) => {\n return { ...acc, ...curr };\n }, {});\n //\n this.mergedOptions.set(merge(props, this.node.options) || {});\n // Check if options contain expressions (performance optimization)\n this.hasExpressions = this.checkForExpressions(this.mergedOptions());\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions(),\n };\n this.widgetInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n this.width = this.mergedOptions().width === 'auto' ? 'auto' : this.customWidth ? this.customWidth : (this.mergedOptions().width ?? '200px');\n this.allowResizing = this.mergedOptions().allowResizing || true;\n this.cdr.detectChanges();\n }\n //#region ---- Performance Optimization Methods ----\n /**\n * Check if options contain any expressions that need evaluation\n */\n checkForExpressions(obj) {\n if (typeof obj === 'string') {\n return this.expressionEvaluator.isExpression(obj);\n }\n if (Array.isArray(obj)) {\n return obj.some((item) => this.checkForExpressions(item));\n }\n if (obj && typeof obj === 'object') {\n return Object.values(obj).some((value) => this.checkForExpressions(value));\n }\n return false;\n }\n /**\n * Get cache key for row data - optimized to avoid JSON.stringify when possible\n */\n getCacheKey(data) {\n if (data?.id) {\n return `row-${data.id}`;\n }\n // Use a hash of key properties instead of full JSON.stringify\n // This is much faster for large objects\n const keyProps = ['id', 'code', 'name', 'title'];\n const keyValues = keyProps.map((prop) => data?.[prop]).filter((v) => v != null);\n if (keyValues.length > 0) {\n return `row-${keyValues.join('-')}`;\n }\n // Fallback to JSON.stringify only if no key properties exist\n // But limit the stringified size to prevent performance issues\n try {\n const str = JSON.stringify(data);\n return str.length > 1000 ? `row-${str.substring(0, 1000)}` : `row-${str}`;\n }\n catch {\n // If JSON.stringify fails, use a simple hash\n return `row-${Object.keys(data || {}).length}`;\n }\n }\n /**\n * Schedule change detection (debounced to batch multiple updates)\n */\n scheduleChangeDetection() {\n if (this.changeDetectionScheduled) {\n return;\n }\n this.changeDetectionScheduled = true;\n // Use requestAnimationFrame for better performance\n requestAnimationFrame(() => {\n this.cdr.detectChanges();\n this.changeDetectionScheduled = false;\n });\n }\n /**\n * Limit cache size using simple FIFO eviction\n */\n evictCacheIfNeeded() {\n if (this.rowInjectorsCache.size >= this.MAX_CACHE_SIZE) {\n // Remove oldest entries (first 25% of cache)\n const entriesToRemove = Math.floor(this.MAX_CACHE_SIZE * 0.25);\n const keysToRemove = Array.from(this.rowInjectorsCache.keys()).slice(0, entriesToRemove);\n keysToRemove.forEach((key) => this.rowInjectorsCache.delete(key));\n }\n }\n //#endregion\n getInputs(data) {\n return {\n rawValue: get(data, this.node.path),\n rowData: data,\n };\n }\n getRowInjector(data) {\n // Optimized cache key generation\n const cacheKey = this.getCacheKey(data);\n // Check if we have a cached injector for this row\n let rowInjector = this.rowInjectorsCache.get(cacheKey);\n if (!rowInjector) {\n // If no expressions in options, use original options directly (performance optimization)\n if (!this.hasExpressions) {\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions(),\n };\n rowInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n this.evictCacheIfNeeded();\n this.rowInjectorsCache.set(cacheKey, rowInjector);\n return rowInjector;\n }\n // Check if evaluation is already pending for this row\n if (!this.pendingEvaluations.has(cacheKey)) {\n this.pendingEvaluations.add(cacheKey);\n // Evaluate expressions in options based on row data\n const scope = {\n ...(data ?? {}),\n context: {\n eval: (path) => {\n return getSmart(data, path);\n },\n },\n };\n // Start async evaluation - will update injector when complete\n this.expressionEvaluator.evaluate(this.mergedOptions(), scope).then((evaluatedOptions) => {\n // Create injector with evaluated options\n const tokenValue = {\n path: this.node.path,\n options: evaluatedOptions,\n };\n const newInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n // Replace cached injector to force component recreation on next render\n this.rowInjectorsCache.delete(cacheKey);\n this.evictCacheIfNeeded();\n this.rowInjectorsCache.set(cacheKey, newInjector);\n this.pendingEvaluations.delete(cacheKey);\n // Schedule batched change detection (performance optimization)\n this.scheduleChangeDetection();\n }).catch(() => {\n // If evaluation fails, keep using the fallback injector\n this.pendingEvaluations.delete(cacheKey);\n });\n }\n // Create injector with original options as fallback (will be updated when evaluation completes)\n const tokenValue = {\n path: this.node.path,\n options: this.mergedOptions(),\n };\n rowInjector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_COLUMN_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n // Cache the initial injector\n this.evictCacheIfNeeded();\n this.rowInjectorsCache.set(cacheKey, rowInjector);\n }\n return rowInjector;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.12\", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: \"axp-widget-column-renderer\", inputs: { caption: \"caption\", customExpandIcon: \"customExpandIcon\", customCollapseIcon: \"customCollapseIcon\", customWidth: \"customWidth\", node: \"node\", footerTemplate: \"footerTemplate\", expandHandler: \"expandHandler\", cellTemplate: \"cellTemplate\", headerTemplate: \"headerTemplate\" }, providers: [\n AXPWidgetCoreService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ], viewQueries: [{ propertyName: \"_contentFooterTemplate\", first: true, predicate: [\"footer\"], descendants: true }, { propertyName: \"_contentCellTemplate\", first: true, predicate: [\"cell\"], descendants: true }, { propertyName: \"_contentHeaderTemplate\", first: true, predicate: [\"header\"], descendants: true }], usesInheritance: true, ngImport: i0, template: `\n <ng-template #header>{{ caption | translate | async }}</ng-template>\n <ng-template #cell let-row>\n <div [class]=\"expandHandler ? 'ax-flex ax-gap-2 ax-items-center' : ''\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [class.ax-invisible]=\"row.data.hasChild === false\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md ax-opacity-75'\"></i>\n }\n }\n </div>\n }\n @if (component && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: getRowInjector(row.data); inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: i1.NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: [\"ngComponentOutlet\", \"ngComponentOutletInputs\", \"ngComponentOutletInjector\", \"ngComponentOutletEnvironmentInjector\", \"ngComponentOutletContent\", \"ngComponentOutletNgModule\", \"ngComponentOutletNgModuleFactory\"], exportAs: [\"ngComponentOutlet\"] }, { kind: \"pipe\", type: i1.AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: i2.AXTranslatorPipe, name: \"translate\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetColumnRendererComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-column-renderer',\n template: `\n <ng-template #header>{{ caption | translate | async }}</ng-template>\n <ng-template #cell let-row>\n <div [class]=\"expandHandler ? 'ax-flex ax-gap-2 ax-items-center' : ''\">\n @if (expandHandler) {\n <div\n (click)=\"handleExpandRow(row)\"\n class=\"ax-expand-handler\"\n [class.ax-invisible]=\"row.data.hasChild === false\"\n id=\"ax-expand-handler-container\"\n [style.padding-inline-start.rem]=\"row.data?.__meta__?.level * 2\"\n >\n @if (loadingRow() === row) {\n <i class=\"fas fa-spinner-third ax-animate-twSpin ax-animate-infinite\"></i>\n } @else {\n @if (row.data?.__meta__?.expanded) {\n <i [class]=\"customCollapseIcon || 'far fa-minus-square ax-text-md ax-opacity-75'\"></i>\n } @else {\n <i [class]=\"customExpandIcon || 'far fa-plus-square ax-text-md ax-opacity-75'\"></i>\n }\n }\n </div>\n }\n @if (component && row?.data) {\n <ng-container\n *ngComponentOutlet=\"component; injector: getRowInjector(row.data); inputs: getInputs(row.data)\"\n ></ng-container>\n }\n </div>\n </ng-template>\n <ng-template #footer></ng-template>\n `,\n providers: [\n AXPWidgetCoreService,\n { provide: AXDataTableColumnComponent, useExisting: AXPWidgetColumnRendererComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['caption'],\n standalone: false,\n }]\n }], propDecorators: { customExpandIcon: [{\n type: Input\n }], customCollapseIcon: [{\n type: Input\n }], customWidth: [{\n type: Input\n }], node: [{\n type: Input,\n args: [{ required: true }]\n }], footerTemplate: [{\n type: Input\n }], _contentFooterTemplate: [{\n type: ViewChild,\n args: ['footer']\n }], expandHandler: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], _contentCellTemplate: [{\n type: ViewChild,\n args: ['cell']\n }], headerTemplate: [{\n type: Input\n }], _contentHeaderTemplate: [{\n type: ViewChild,\n args: ['header']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbHVtbi1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LWNvbHVtbi1yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLDBCQUEwQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUYsT0FBTyxFQUFFLDZCQUE2QixFQUErQixRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdkMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEUsT0FBTyxFQUF1Qix1QkFBdUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBNEM5RSxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsMEJBQTBCO0lBMUNoRjs7UUEyQ1ksb0JBQWUsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNyRCxTQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQy9CLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBZ0I1RCxrQkFBYSxHQUFHLE1BQU0sQ0FBTSxFQUFFLHlEQUFDLENBQUM7UUFDOUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLHNEQUFDLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsSUFBSSxH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QUUsV0FBVyxrQ0FBa0MsRUFBRTtxQkFDdkY7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQztvQkFDbkIsVUFBVSxFQUFFLEtBQUs7aUJBQ2xCOztzQkFNRSxLQUFLOztzQkFDTCxLQUFLOztzQkFFTCxLQUFLOztzQkFHTCxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTs7c0JBZ0J4QixLQUFLOztzQkFHTCxTQUFTO3VCQUFDLFFBQVE7O3NCQU9sQixLQUFLOztzQkFHTCxLQUFLOztzQkFHTCxTQUFTO3VCQUFDLE1BQU07O3NCQU9oQixLQUFLOztzQkFHTCxTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEJhc2VEYXRhVGFibGUsIEFYRGF0YVRhYmxlQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RhdGEtdGFibGUnO1xuaW1wb3J0IHsgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNlcnZpY2UsIEFYUEV4cHJlc3Npb25FdmFsdWF0b3JTY29wZSwgZ2V0U21hcnQgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlU2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LWNvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb2x1bW5Ob2RlLCBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTiB9IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLXdpZGdldC1jb2x1bW4tcmVuZGVyZXInLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjaGVhZGVyPnt7IGNhcHRpb24gfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3c+XG4gICAgICA8ZGl2IFtjbGFzc109XCJleHBhbmRIYW5kbGVyID8gJ2F4LWZsZXggYXgtZ2FwLTIgYXgtaXRlbXMtY2VudGVyJyA6ICcnXCI+XG4gICAgICAgIEBpZiAoZXhwYW5kSGFuZGxlcikge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVFeHBhbmRSb3cocm93KVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWV4cGFuZC1oYW5kbGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5heC1pbnZpc2libGVdPVwicm93LmRhdGEuaGFzQ2hpbGQgPT09IGZhbHNlXCJcbiAgICAgICAgICAgIGlkPVwiYXgtZXhwYW5kLWhhbmRsZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nLWlubGluZS1zdGFydC5yZW1dPVwicm93LmRhdGE/Ll9fbWV0YV9fPy5sZXZlbCAqIDJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAobG9hZGluZ1JvdygpID09PSByb3cpIHtcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lci10aGlyZCBheC1hbmltYXRlLXR3U3BpbiBheC1hbmltYXRlLWluZmluaXRlXCI+PC9pPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgIEBpZiAocm93LmRhdGE/Ll9fbWV0YV9fPy5leHBhbmRlZCkge1xuICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJjdXN0b21Db2xsYXBzZUljb24gfHwgJ2ZhciBmYS1taW51cy1zcXVhcmUgYXgtdGV4dC1tZCBheC1vcGFjaXR5LTc1J1wiPjwvaT5cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImN1c3RvbUV4cGFuZEljb24gfHwgJ2ZhciBmYS1wbHVzLXNxdWFyZSBheC10ZXh0LW1kICBheC1vcGFjaXR5LTc1J1wiPjwvaT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIEBpZiAoY29tcG9uZW50ICYmIHJvdz8uZGF0YSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0NvbXBvbmVudE91dGxldD1cImNvbXBvbmVudDsgaW5qZWN0b3I6IGdldFJvd0luamVjdG9yKHJvdy5kYXRhKTsgaW5wdXRzOiBnZXRJbnB1dHMocm93LmRhdGEpXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNmb290ZXI+PC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQVhQV2lkZ2V0Q29yZVNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYUFdpZGdldENvbHVtblJlbmRlcmVyQ29tcG9uZW50IH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbnB1dHM6IFsnY2FwdGlvbiddLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29sdW1uUmVuZGVyZXJDb21wb25lbnQgZXh0ZW5kcyBBWERhdGFUYWJsZUNvbHVtbkNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCB3aWRnZXRSZWdpc3RlcnkgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBncmlkID0gaW5qZWN0KEFYQmFzZURhdGFUYWJsZSk7XG4gIHByaXZhdGUgZXhwcmVzc2lvbkV2YWx1YXRvciA9IGluamVjdChBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSk7XG5cbiAgQElucHV0KCkgY3VzdG9tRXhwYW5kSWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBjdXN0b21Db2xsYXBzZUljb246IHN0cmluZztcblxuICBASW5wdXQoKSBjdXN0b21XaWR0aDogc3RyaW5nO1xuXG4gIHByaXZhdGUgX25vZGU6IEFYUFdpZGdldENvbHVtbk5vZGU7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBnZXQgbm9kZSgpOiBBWFBXaWRnZXRDb2x1bW5Ob2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZTtcbiAgfVxuICBwdWJsaWMgc2V0IG5vZGUodjogQVhQV2lkZ2V0Q29sdW1uTm9kZSkge1xuICAgIHRoaXMuX25vZGUgPSB2O1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZWRPcHRpb25zID0gc2lnbmFsPGFueT4oe30pO1xuICBwcm90ZWN0ZWQgbG9hZGluZ1JvdyA9IHNpZ25hbChudWxsKTtcbiAgcHJpdmF0ZSByb3dJbmplY3RvcnNDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBJbmplY3Rvcj4oKTtcbiAgcHJpdmF0ZSBoYXNFeHByZXNzaW9ucyA9IGZhbHNlO1xuICBwcml2YXRlIHBlbmRpbmdFdmFsdWF0aW9ucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcml2YXRlIGNoYW5nZURldGVjdGlvblNjaGVkdWxlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IE1BWF9DQUNIRV9TSVpFID0gMTAwMDsgLy8gTGltaXQgY2FjaGUgc2l6ZSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrc1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgnZm9vdGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBnZXQgcmVuZGVyRm9vdGVyVGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmZvb3RlclRlbXBsYXRlID8/IHRoaXMuX2NvbnRlbnRGb290ZXJUZW1wbGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBleHBhbmRIYW5kbGVyOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBWaWV3Q2hpbGQoJ2NlbGwnKVxuICBwcml2YXRlIF9jb250ZW50Q2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBnZXQgcmVuZGVyQ2VsbFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5jZWxsVGVtcGxhdGUgPz8gdGhpcy5fY29udGVudENlbGxUZW1wbGF0ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQFZpZXdDaGlsZCgnaGVhZGVyJylcbiAgcHJpdmF0ZSBfY29udGVudEhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjx1bmtub3duPjtcblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlRXhwYW5kUm93KHJvdzogYW55KSB7XG4gICAgdGhpcy5sb2FkaW5nUm93LnNldChyb3cpO1xuICAgIGF3YWl0IHRoaXMuZ3JpZC5leHBhbmRSb3cocm93KTtcbiAgICB0aGlzLmxvYWRpbmdSb3cuc2V0KG51bGwpO1xuICAgIC8vIGlmIChyb3cuZGF0YT8uX19tZXRhX18/LmV4cGFuZGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyAgIHRoaXMud2lkdGggPSBgJHtwYXJzZUludCh0aGlzLndpZHRoIGFzIHN0cmluZykgKyAyNH1weGA7XG4gICAgLy8gfVxuICB9XG5cbiAgZ2V0IHJlbmRlckhlYWRlclRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5oZWFkZXJUZW1wbGF0ZSA/PyB0aGlzLl9jb250ZW50SGVhZGVyVGVtcGxhdGU7XG4gIH1cblxuICBnZXQgbG9hZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgY29sLSR7dGhpcy5ub2RlLnBhdGh9YDtcbiAgfVxuXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcml2YXRlIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByb3RlY3RlZCB3aWRnZXRJbmplY3RvciE6IEluamVjdG9yO1xuICBwcm90ZWN0ZWQgY29tcG9uZW50ITogYW55O1xuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHdpZGdldCA9IHRoaXMud2lkZ2V0UmVnaXN0ZXJ5LnJlc29sdmUodGhpcy5ub2RlLnR5cGUpO1xuICAgIGNvbnN0IG1vZGUgPSAnY29sdW1uJztcbiAgICB0aGlzLmNvbXBvbmVudCA9IGF3YWl0IHdpZGdldD8uY29tcG9uZW50c1ttb2RlXT8uY29tcG9uZW50KCk7XG4gICAgLy9cbiAgICBjb25zdCBwcm9wcyA9IHdpZGdldD8uY29tcG9uZW50c1ttb2RlXT8ucHJvcGVydGllc1xuICAgICAgPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSlcbiAgICAgIC5tYXAoKGMpID0+ICh7IFtjLm5hbWVdOiBjLnNjaGVtYS5kZWZhdWx0VmFsdWUgfSkpXG4gICAgICAucmVkdWNlKChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5jdXJyIH07XG4gICAgICB9LCB7fSk7XG4gICAgLy9cbiAgICB0aGlzLm1lcmdlZE9wdGlvbnMuc2V0KG1lcmdlKHByb3BzLCB0aGlzLm5vZGUub3B0aW9ucykgfHwge30pO1xuXG4gICAgLy8gQ2hlY2sgaWYgb3B0aW9ucyBjb250YWluIGV4cHJlc3Npb25zIChwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24pXG4gICAgdGhpcy5oYXNFeHByZXNzaW9ucyA9IHRoaXMuY2hlY2tGb3JFeHByZXNzaW9ucyh0aGlzLm1lcmdlZE9wdGlvbnMoKSk7XG5cbiAgICBjb25zdCB0b2tlblZhbHVlID0ge1xuICAgICAgcGF0aDogdGhpcy5ub2RlLnBhdGgsXG4gICAgICBvcHRpb25zOiB0aGlzLm1lcmdlZE9wdGlvbnMoKSxcbiAgICB9O1xuICAgIHRoaXMud2lkZ2V0SW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogdG9rZW5WYWx1ZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgdGhpcy53aWR0aCA9IHRoaXMubWVyZ2VkT3B0aW9ucygpLndpZHRoID09PSAnYXV0bycgPyAnYXV0bycgOiB0aGlzLmN1c3RvbVdpZHRoID8gdGhpcy5jdXN0b21XaWR0aCA6ICh0aGlzLm1lcmdlZE9wdGlvbnMoKS53aWR0aCA/PyAnMjAwcHgnKTtcbiAgICB0aGlzLmFsbG93UmVzaXppbmcgPSB0aGlzLm1lcmdlZE9wdGlvbnMoKS5hbGxvd1Jlc2l6aW5nIHx8IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQZXJmb3JtYW5jZSBPcHRpbWl6YXRpb24gTWV0aG9kcyAgIC0tLS1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgb3B0aW9ucyBjb250YWluIGFueSBleHByZXNzaW9ucyB0aGF0IG5lZWQgZXZhbHVhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0ZvckV4cHJlc3Npb25zKG9iajogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbihvYmopO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICByZXR1cm4gb2JqLnNvbWUoKGl0ZW0pID0+IHRoaXMuY2hlY2tGb3JFeHByZXNzaW9ucyhpdGVtKSk7XG4gICAgfVxuICAgIGlmIChvYmogJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiBPYmplY3QudmFsdWVzKG9iaikuc29tZSgodmFsdWUpID0+IHRoaXMuY2hlY2tGb3JFeHByZXNzaW9ucyh2YWx1ZSkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNhY2hlIGtleSBmb3Igcm93IGRhdGEgLSBvcHRpbWl6ZWQgdG8gYXZvaWQgSlNPTi5zdHJpbmdpZnkgd2hlbiBwb3NzaWJsZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDYWNoZUtleShkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChkYXRhPy5pZCkge1xuICAgICAgcmV0dXJuIGByb3ctJHtkYXRhLmlkfWA7XG4gICAgfVxuICAgIC8vIFVzZSBhIGhhc2ggb2Yga2V5IHByb3BlcnRpZXMgaW5zdGVhZCBvZiBmdWxsIEpTT04uc3RyaW5naWZ5XG4gICAgLy8gVGhpcyBpcyBtdWNoIGZhc3RlciBmb3IgbGFyZ2Ugb2JqZWN0c1xuICAgIGNvbnN0IGtleVByb3BzID0gWydpZCcsICdjb2RlJywgJ25hbWUnLCAndGl0bGUnXTtcbiAgICBjb25zdCBrZXlWYWx1ZXMgPSBrZXlQcm9wcy5tYXAoKHByb3ApID0+IGRhdGE/Lltwcm9wXSkuZmlsdGVyKCh2KSA9PiB2ICE9IG51bGwpO1xuICAgIGlmIChrZXlWYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGByb3ctJHtrZXlWYWx1ZXMuam9pbignLScpfWA7XG4gICAgfVxuICAgIC8vIEZhbGxiYWNrIHRvIEpTT04uc3RyaW5naWZ5IG9ubHkgaWYgbm8ga2V5IHByb3BlcnRpZXMgZXhpc3RcbiAgICAvLyBCdXQgbGltaXQgdGhlIHN0cmluZ2lmaWVkIHNpemUgdG8gcHJldmVudCBwZXJmb3JtYW5jZSBpc3N1ZXNcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RyID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgICByZXR1cm4gc3RyLmxlbmd0aCA+IDEwMDAgPyBgcm93LSR7c3RyLnN1YnN0cmluZygwLCAxMDAwKX1gIDogYHJvdy0ke3N0cn1gO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWYgSlNPTi5zdHJpbmdpZnkgZmFpbHMsIHVzZSBhIHNpbXBsZSBoYXNoXG4gICAgICByZXR1cm4gYHJvdy0ke09iamVjdC5rZXlzKGRhdGEgfHwge30pLmxlbmd0aH1gO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY2hlZHVsZSBjaGFuZ2UgZGV0ZWN0aW9uIChkZWJvdW5jZWQgdG8gYmF0Y2ggbXVsdGlwbGUgdXBkYXRlcylcbiAgICovXG4gIHByaXZhdGUgc2NoZWR1bGVDaGFuZ2VEZXRlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2hhbmdlRGV0ZWN0aW9uU2NoZWR1bGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAvLyBVc2UgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2VcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb25TY2hlZHVsZWQgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1pdCBjYWNoZSBzaXplIHVzaW5nIHNpbXBsZSBGSUZPIGV2aWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGV2aWN0Q2FjaGVJZk5lZWRlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dJbmplY3RvcnNDYWNoZS5zaXplID49IHRoaXMuTUFYX0NBQ0hFX1NJWkUpIHtcbiAgICAgIC8vIFJlbW92ZSBvbGRlc3QgZW50cmllcyAoZmlyc3QgMjUlIG9mIGNhY2hlKVxuICAgICAgY29uc3QgZW50cmllc1RvUmVtb3ZlID0gTWF0aC5mbG9vcih0aGlzLk1BWF9DQUNIRV9TSVpFICogMC4yNSk7XG4gICAgICBjb25zdCBrZXlzVG9SZW1vdmUgPSBBcnJheS5mcm9tKHRoaXMucm93SW5qZWN0b3JzQ2FjaGUua2V5cygpKS5zbGljZSgwLCBlbnRyaWVzVG9SZW1vdmUpO1xuICAgICAga2V5c1RvUmVtb3ZlLmZvckVhY2goKGtleSkgPT4gdGhpcy5yb3dJbmplY3RvcnNDYWNoZS5kZWxldGUoa2V5KSk7XG4gICAgfVxuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgZ2V0SW5wdXRzKGRhdGE6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJhd1ZhbHVlOiBnZXQoZGF0YSwgdGhpcy5ub2RlLnBhdGghKSxcbiAgICAgIHJvd0RhdGE6IGRhdGEsXG4gICAgfTtcbiAgfVxuXG4gIGdldFJvd0luamVjdG9yKGRhdGE6IGFueSk6IEluamVjdG9yIHtcbiAgICAvLyBPcHRpbWl6ZWQgY2FjaGUga2V5IGdlbmVyYXRpb25cbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2V0Q2FjaGVLZXkoZGF0YSk7XG5cbiAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY2FjaGVkIGluamVjdG9yIGZvciB0aGlzIHJvd1xuICAgIGxldCByb3dJbmplY3RvciA9IHRoaXMucm93SW5qZWN0b3JzQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcblxuICAgIGlmICghcm93SW5qZWN0b3IpIHtcbiAgICAgIC8vIElmIG5vIGV4cHJlc3Npb25zIGluIG9wdGlvbnMsIHVzZSBvcmlnaW5hbCBvcHRpb25zIGRpcmVjdGx5IChwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24pXG4gICAgICBpZiAoIXRoaXMuaGFzRXhwcmVzc2lvbnMpIHtcbiAgICAgICAgY29uc3QgdG9rZW5WYWx1ZSA9IHtcbiAgICAgICAgICBwYXRoOiB0aGlzLm5vZGUucGF0aCxcbiAgICAgICAgICBvcHRpb25zOiB0aGlzLm1lcmdlZE9wdGlvbnMoKSxcbiAgICAgICAgfTtcblxuICAgICAgICByb3dJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTixcbiAgICAgICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZXZpY3RDYWNoZUlmTmVlZGVkKCk7XG4gICAgICAgIHRoaXMucm93SW5qZWN0b3JzQ2FjaGUuc2V0KGNhY2hlS2V5LCByb3dJbmplY3Rvcik7XG4gICAgICAgIHJldHVybiByb3dJbmplY3RvcjtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgZXZhbHVhdGlvbiBpcyBhbHJlYWR5IHBlbmRpbmcgZm9yIHRoaXMgcm93XG4gICAgICBpZiAoIXRoaXMucGVuZGluZ0V2YWx1YXRpb25zLmhhcyhjYWNoZUtleSkpIHtcbiAgICAgICAgdGhpcy5wZW5kaW5nRXZhbHVhdGlvbnMuYWRkKGNhY2hlS2V5KTtcblxuICAgICAgICAvLyBFdmFsdWF0ZSBleHByZXNzaW9ucyBpbiBvcHRpb25zIGJhc2VkIG9uIHJvdyBkYXRhXG4gICAgICAgIGNvbnN0IHNjb3BlOiBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2NvcGUgPSB7XG4gICAgICAgICAgLi4uKGRhdGEgPz8ge30pLFxuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIGV2YWw6IChwYXRoOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldFNtYXJ0KGRhdGEsIHBhdGgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFN0YXJ0IGFzeW5jIGV2YWx1YXRpb24gLSB3aWxsIHVwZGF0ZSBpbmplY3RvciB3aGVuIGNvbXBsZXRlXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsdWF0ZSh0aGlzLm1lcmdlZE9wdGlvbnMoKSwgc2NvcGUpLnRoZW4oKGV2YWx1YXRlZE9wdGlvbnMpID0+IHtcbiAgICAgICAgICAvLyBDcmVhdGUgaW5qZWN0b3Igd2l0aCBldmFsdWF0ZWQgb3B0aW9uc1xuICAgICAgICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICAgICAgICBwYXRoOiB0aGlzLm5vZGUucGF0aCxcbiAgICAgICAgICAgIG9wdGlvbnM6IGV2YWx1YXRlZE9wdGlvbnMsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IG5ld0luamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHJvdmlkZTogQVhQX1dJREdFVF9DT0xVTU5fVE9LRU4sXG4gICAgICAgICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gUmVwbGFjZSBjYWNoZWQgaW5qZWN0b3IgdG8gZm9yY2UgY29tcG9uZW50IHJlY3JlYXRpb24gb24gbmV4dCByZW5kZXJcbiAgICAgICAgICB0aGlzLnJvd0luamVjdG9yc0NhY2hlLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgICAgdGhpcy5ldmljdENhY2hlSWZOZWVkZWQoKTtcbiAgICAgICAgICB0aGlzLnJvd0luamVjdG9yc0NhY2hlLnNldChjYWNoZUtleSwgbmV3SW5qZWN0b3IpO1xuICAgICAgICAgIHRoaXMucGVuZGluZ0V2YWx1YXRpb25zLmRlbGV0ZShjYWNoZUtleSk7XG5cbiAgICAgICAgICAvLyBTY2hlZHVsZSBiYXRjaGVkIGNoYW5nZSBkZXRlY3Rpb24gKHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbilcbiAgICAgICAgICB0aGlzLnNjaGVkdWxlQ2hhbmdlRGV0ZWN0aW9uKCk7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAvLyBJZiBldmFsdWF0aW9uIGZhaWxzLCBrZWVwIHVzaW5nIHRoZSBmYWxsYmFjayBpbmplY3RvclxuICAgICAgICAgIHRoaXMucGVuZGluZ0V2YWx1YXRpb25zLmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBDcmVhdGUgaW5qZWN0b3Igd2l0aCBvcmlnaW5hbCBvcHRpb25zIGFzIGZhbGxiYWNrICh3aWxsIGJlIHVwZGF0ZWQgd2hlbiBldmFsdWF0aW9uIGNvbXBsZXRlcylcbiAgICAgIGNvbnN0IHRva2VuVmFsdWUgPSB7XG4gICAgICAgIHBhdGg6IHRoaXMubm9kZS5wYXRoLFxuICAgICAgICBvcHRpb25zOiB0aGlzLm1lcmdlZE9wdGlvbnMoKSxcbiAgICAgIH07XG5cbiAgICAgIHJvd0luamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX0NPTFVNTl9UT0tFTixcbiAgICAgICAgICAgIHVzZVZhbHVlOiB0b2tlblZhbHVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgLy8gQ2FjaGUgdGhlIGluaXRpYWwgaW5qZWN0b3JcbiAgICAgIHRoaXMuZXZpY3RDYWNoZUlmTmVlZGVkKCk7XG4gICAgICB0aGlzLnJvd0luamVjdG9yc0NhY2hlLnNldChjYWNoZUtleSwgcm93SW5qZWN0b3IpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dJbmplY3RvcjtcbiAgfVxufVxuIl19","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, computed, effect, inject, } from '@angular/core';\nimport { AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetCoreContextStore } from './widget-core-store.service';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetContainerComponent {\n set context(value) {\n this.contextService.set(value);\n }\n set functions(v) {\n this.builderService.setFunctions(v);\n }\n constructor() {\n this.contextService = inject(AXPWidgetCoreContextStore);\n this.builderService = inject(AXPWidgetCoreService);\n this.onContextChanged = new EventEmitter();\n this.status = computed(() => {\n return this.builderService.status();\n }, ...(ngDevMode ? [{ debugName: \"status\" }] : []));\n this.isBusy = computed(() => {\n return this.builderService.isBusy();\n }, ...(ngDevMode ? [{ debugName: \"isBusy\" }] : []));\n effect(() => {\n if (this.contextService.isChanged()) {\n this.onContextChanged.emit(this.contextService.changeEvent());\n }\n });\n }\n refresh() {\n this.builderService.refresh();\n }\n find(name) {\n return this.builderService.waitForWidget(name);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPWidgetContainerComponent, isStandalone: false, selector: \"axp-widgets-container\", inputs: { context: \"context\", functions: \"functions\" }, outputs: { onContextChanged: \"onContextChanged\" }, host: { styleAttribute: \"display: contents;\" }, providers: [AXPWidgetCoreService, AXPWidgetCoreContextStore], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetContainerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widgets-container',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { style: 'display: contents;' },\n providers: [AXPWidgetCoreService, AXPWidgetCoreContextStore],\n standalone: false,\n }]\n }], ctorParameters: () => [], propDecorators: { onContextChanged: [{\n type: Output\n }], context: [{\n type: Input\n }], functions: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL3dpZGdldC1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFFBQVEsRUFDUixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSx5QkFBeUIsRUFBbUMsTUFBTSw2QkFBNkIsQ0FBQzs7QUFVekcsTUFBTSxPQUFPLDJCQUEyQjtJQU90QyxJQUNJLE9BQU8sQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUNXLFNBQVMsQ0FBQyxDQUFNO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDtRQWhCZ0IsbUJBQWMsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUNuRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRzlDLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBb0JoRixXQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEMsQ0FBQyxrREFBQyxDQUFDO1FBRUksV0FBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RDLENBQUMsa0RBQUMsQ0FBQztRQWJELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVdNLE9BQU87UUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxJQUFJLENBQUMsSUFBWTtRQUN0QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBeENVLDJCQUEyQjttR0FBM0IsMkJBQTJCLGdPQUgzQixDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDLDBCQUhsRCwyQkFBMkI7OzRGQU0xQiwyQkFBMkI7a0JBUnZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtvQkFDckMsU0FBUyxFQUFFLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLENBQUM7b0JBQzVELFVBQVUsRUFBRSxLQUFLO2lCQUNsQjs7c0JBS0UsTUFBTTs7c0JBR04sS0FBSzs7c0JBS0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtY29yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUsIEFYUFdpZGdldENvcmVDb250ZXh0Q2hhbmdlRXZlbnQgfSBmcm9tICcuL3dpZGdldC1jb3JlLXN0b3JlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0cy1jb250YWluZXInLFxuICB0ZW1wbGF0ZTogYDxuZy1jb250ZW50PjwvbmctY29udGVudD5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDogeyBzdHlsZTogJ2Rpc3BsYXk6IGNvbnRlbnRzOycgfSxcbiAgcHJvdmlkZXJzOiBbQVhQV2lkZ2V0Q29yZVNlcnZpY2UsIEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmVdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29udGFpbmVyQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHRTZXJ2aWNlID0gaW5qZWN0KEFYUFdpZGdldENvcmVDb250ZXh0U3RvcmUpO1xuICBwdWJsaWMgcmVhZG9ubHkgYnVpbGRlclNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0Q29yZVNlcnZpY2UpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgb25Db250ZXh0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhQV2lkZ2V0Q29yZUNvbnRleHRDaGFuZ2VFdmVudD4oKTtcblxuICBASW5wdXQoKVxuICBzZXQgY29udGV4dCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5jb250ZXh0U2VydmljZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBmdW5jdGlvbnModjogYW55KSB7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5zZXRGdW5jdGlvbnModik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY29udGV4dFNlcnZpY2UuaXNDaGFuZ2VkKCkpIHtcbiAgICAgICAgdGhpcy5vbkNvbnRleHRDaGFuZ2VkLmVtaXQodGhpcy5jb250ZXh0U2VydmljZS5jaGFuZ2VFdmVudCgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0dXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRlclNlcnZpY2Uuc3RhdHVzKCk7XG4gIH0pO1xuXG4gIHB1YmxpYyBpc0J1c3kgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRlclNlcnZpY2UuaXNCdXN5KCk7XG4gIH0pO1xuXG5cbiAgcHVibGljIHJlZnJlc2goKSB7XG4gICAgdGhpcy5idWlsZGVyU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICBwdWJsaWMgZmluZChuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5idWlsZGVyU2VydmljZS53YWl0Rm9yV2lkZ2V0KG5hbWUpO1xuICB9XG59XG4iXX0=","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@acorex/components/skeleton\";\nexport class AXPWidgetPlaceholderComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetPlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"20.3.12\", type: AXPWidgetPlaceholderComponent, isStandalone: true, selector: \"axp-widget-placeholder\", ngImport: i0, template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`, isInline: true, dependencies: [{ kind: \"ngmodule\", type: AXSkeletonModule }, { kind: \"component\", type: i1.AXSkeletonComponent, selector: \"ax-skeleton\", inputs: [\"animated\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetPlaceholderComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'axp-widget-placeholder',\n template: `<div>\n <ax-skeleton class=\"ax-w-full ax-h-10 ax-rounded-md\"></ax-skeleton>\n </div>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AXSkeletonModule],\n standalone: true,\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFXbkUsTUFBTSxPQUFPLDZCQUE2QjsrR0FBN0IsNkJBQTZCO21HQUE3Qiw2QkFBNkIsa0ZBUDlCOztTQUVILDJEQUVHLGdCQUFnQjs7NEZBR2YsNkJBQTZCO2tCQVR6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRTs7U0FFSDtvQkFDUCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvc2tlbGV0b24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheHAtd2lkZ2V0LXBsYWNlaG9sZGVyJyxcbiAgdGVtcGxhdGU6IGA8ZGl2PlxuICAgIDxheC1za2VsZXRvbiBjbGFzcz1cImF4LXctZnVsbCBheC1oLTEwIGF4LXJvdW5kZWQtbWRcIj48L2F4LXNrZWxldG9uPlxuICA8L2Rpdj5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW0FYU2tlbGV0b25Nb2R1bGVdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBXaWRnZXRQbGFjZWhvbGRlckNvbXBvbmVudCB7fVxuIl19","import { AXTranslationService } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AXPExpressionEvaluatorService } from '@acorex/platform/core';\nimport { Directive, Injector, ViewContainerRef, effect, inject, input, output, signal, } from '@angular/core';\nimport { cloneDeep, get, isEmpty, isEqual, isString, merge, set, sum } from 'lodash-es';\nimport { Subject, filter } from 'rxjs';\nimport { AXPWidgetCoreContextStore } from './widget-core-store.service';\nimport { AXPWidgetCoreService } from './widget-core.service';\nimport { AXPWidgetPlaceholderComponent } from './widget-placeholder.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetStatus } from './widget-status.types';\nimport { AXP_WIDGET_TOKEN, } from './widget.types';\nimport * as i0 from \"@angular/core\";\nexport class AXPWidgetRendererDirective {\n //#endregion\n //#endregion\n constructor() {\n this.parentNode = input(...(ngDevMode ? [undefined, { debugName: \"parentNode\" }] : []));\n this.index = input(...(ngDevMode ? [undefined, { debugName: \"index\" }] : []));\n this.mode = input.required(...(ngDevMode ? [{ debugName: \"mode\" }] : []));\n this.node = input.required(...(ngDevMode ? [{ debugName: \"node\" }] : []));\n this._options = signal({}, ...(ngDevMode ? [{ debugName: \"_options\" }] : []));\n this.options = this._options.asReadonly();\n this.onOptionsChanged = output();\n this.onValueChanged = output();\n this.onLoad = output();\n //#region ---- Public API ----\n /**\n * Signal that emits the component reference when it's ready\n */\n this._componentRefSignal = signal(null, ...(ngDevMode ? [{ debugName: \"_componentRefSignal\" }] : []));\n this.componentRefSignal = this._componentRefSignal.asReadonly();\n //#endregion\n //#region ---- Properties ----\n this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: \"mergedOptions\" }] : []));\n this.injector = inject(Injector);\n this.builderService = inject(AXPWidgetCoreService);\n this.contextService = inject(AXPWidgetCoreContextStore);\n this.widgetRegistery = inject(AXPWidgetRegistryService);\n this.unsubscriber = inject(AXUnsubscriber);\n this.translateService = inject(AXTranslationService);\n this.widgetService = inject(AXPWidgetRegistryService);\n this.expressionEvaluator = inject(AXPExpressionEvaluatorService);\n this.viewContainerRef = inject(ViewContainerRef);\n this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: \"isLoading\" }] : []));\n this.isVisible = signal(true, ...(ngDevMode ? [{ debugName: \"isVisible\" }] : []));\n this.expressionEvaluators = new Map();\n this.renderTimeoutId = null;\n this.hasInitialRender = false;\n this.onContextChanged = new Subject();\n this.onLoadEvent = new Subject();\n //#region ---- Performance Optimization Properties ----\n this.contextUpdateQueue = new Set();\n this.contextUpdateTimeout = null;\n this.CONTEXT_UPDATE_DEBOUNCE_MS = 4; // ~250fps for large forms\n // Removed visibility detection - not needed for current implementation\n // Expression result caching\n this.expressionCache = new Map();\n this.EXPRESSION_CACHE_TTL = 500; // Cache for 500ms (increased for better hit rate)\n // Options change tracking\n this.lastAppliedOptions = null;\n // Expression result tracking\n this.lastExpressionResults = new Map();\n // Buffer for context changes that happen before initial render completes\n this.preRenderContextQueue = new Set();\n effect(async () => {\n const changed = this.contextService.changeEvent();\n // Don't trigger re-render during initial setup\n if (!this.hasInitialRender) {\n // Handle initial context set (state: 'initiated' with empty path means full context update)\n if (changed.state === 'initiated' && (!changed.path || changed.path === '')) {\n // Mark that we need to re-evaluate all expressions when initial render completes\n // This handles the case where context is set before/during widget initialization\n this.preRenderContextQueue.add('*'); // Use '*' as a marker for full context initialization\n // console.log(`📝 [${this.node().type}] Buffered initial context set`);\n }\n else if (changed.path) {\n this.preRenderContextQueue.add(changed.path);\n // console.log(`📝 [${this.node().type}] Buffered pre-render context change: ${changed.path}`);\n }\n return;\n }\n // CRITICAL PERFORMANCE FIX: Only respond to relevant context changes\n // Handle initial context set (full context update)\n if (changed.state === 'initiated' && (!changed.path || changed.path === '')) {\n // Full context initialization - trigger re-evaluation of all expressions\n // console.log(`🎯 [${this.node().type}] Initial context set detected - triggering full re-evaluation`);\n this.clearExpressionCache();\n if (this.expressionEvaluators.size > 0) {\n await this.updateOptionsBasedOnContext();\n this.applyOptions();\n }\n await this.updateVisibility();\n await this.updateValueBasedOnFormula();\n }\n else if (changed.path && this.isRelevantContextChange(changed.path)) {\n // console.log(`🎯 [${this.node().type}] Context change detected: ${changed.path}`);\n this.queueContextUpdate(changed.path);\n }\n });\n this.builderService.onRefresh.pipe(this.unsubscriber.takeUntilDestroy).subscribe(async () => {\n await this.processBatchedUpdates();\n });\n }\n //#region ---- Expression Caching Methods ----\n getCachedExpressionResult(expressionKey) {\n const cached = this.expressionCache.get(expressionKey);\n if (cached && performance.now() - cached.timestamp < this.EXPRESSION_CACHE_TTL) {\n // console.log(`💾 [${this.node().type}] Using cached expression result for '${expressionKey}'`);\n return cached.value;\n }\n return null;\n }\n setCachedExpressionResult(expressionKey, value) {\n this.expressionCache.set(expressionKey, {\n value,\n timestamp: performance.now(),\n });\n }\n clearExpressionCache() {\n this.expressionCache.clear();\n }\n isPathAffectingExpressions(changedPath) {\n // console.log(\n // `🔍 [${this.node().type}] Checking if path '${changedPath}' affects expressions. Expression count: ${this.expressionEvaluators.size}`,\n // );\n // If widget has no expressions, no need to clear cache\n if (this.expressionEvaluators.size === 0) {\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' - no expressions, keeping cache`);\n return false;\n }\n // Use the same logic as hasExpressionDependency to check for actual dependencies\n if (this.hasExpressionDependency(changedPath)) {\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' affects expressions - clearing cache`);\n return true;\n }\n // console.log(`🔍 [${this.node().type}] Path '${changedPath}' does not affect expressions - keeping cache`);\n return false;\n }\n //#endregion\n //#region ---- Context Batching Methods ----\n queueContextUpdate(path) {\n if (path) {\n // console.log(`🔄 [${this.node().type}] Queueing context update for path: ${path}`);\n this.contextUpdateQueue.add(path);\n // Clear existing timeout\n if (this.contextUpdateTimeout) {\n clearTimeout(this.contextUpdateTimeout);\n }\n // Debounce updates\n this.contextUpdateTimeout = setTimeout(() => {\n // console.log(`⚡ [${this.node().type}] Processing batched updates for ${this.contextUpdateQueue.size} paths`);\n this.processBatchedUpdates();\n }, this.CONTEXT_UPDATE_DEBOUNCE_MS);\n }\n }\n async processBatchedUpdates() {\n if (this.contextUpdateQueue.size === 0)\n return;\n const startTime = performance.now();\n const paths = Array.from(this.contextUpdateQueue);\n this.contextUpdateQueue.clear();\n // console.log(`📊 [${this.node().type}] Processing ${paths.length} paths:`, paths);\n // Clear expression cache only if changed paths affect this widget's expressions\n const shouldClearCache = paths.some((path) => this.isPathAffectingExpressions(path));\n if (shouldClearCache) {\n // console.log(`🗑️ [${this.node().type}] Clearing expression cache due to expression-affecting path change`);\n this.clearExpressionCache();\n }\n // Process updates in batches\n const optionsStartTime = performance.now();\n const hasOptionsUpdate = await this.updateOptionsBasedOnContext();\n const optionsTime = performance.now() - optionsStartTime;\n if (typeof hasOptionsUpdate === 'number' && hasOptionsUpdate > 0) {\n // console.log(`🔧 [${this.node().type}] Options updated (${optionsTime.toFixed(2)}ms)`);\n this.applyOptions();\n }\n // Check formulas for any of the changed paths\n const formulaStartTime = performance.now();\n const formulaNeedsUpdate = paths.some((path) => this.checkFormulaForUpdate(this.node().formula, path));\n if (formulaNeedsUpdate) {\n // console.log(`🧮 [${this.node().type}] Formula needs update`);\n await this.updateValueBasedOnFormula();\n }\n const formulaTime = performance.now() - formulaStartTime;\n // Check visibility for any of the changed paths\n const visibilityStartTime = performance.now();\n const visibilityNeedsUpdate = paths.some((path) => this.hasVisibilityDependency(path));\n if (visibilityNeedsUpdate) {\n // console.log(`👁️ [${this.node().type}] Visibility needs update`);\n await this.updateVisibility();\n }\n const visibilityTime = performance.now() - visibilityStartTime;\n // Emit context changes\n paths.forEach((path) => {\n this.onContextChanged.next({ path });\n });\n const totalTime = performance.now() - startTime;\n // console.log(\n // `✅ [${this.node().type}] Batch processing completed in ${totalTime.toFixed(2)}ms (options: ${optionsTime.toFixed(2)}ms, formula: ${formulaTime.toFixed(2)}ms, visibility: ${visibilityTime.toFixed(2)}ms)`,\n // );\n }\n //#endregion\n //#region ---- Context Relevance Filtering ----\n isRelevantContextChange(changedPath) {\n const node = this.node();\n // 1. Direct path match - widget's own field\n if (node.path === changedPath) {\n return true;\n }\n // 2. Parent path match - widget is inside the changed container\n if (node.path && changedPath.startsWith(node.path + '.')) {\n return true;\n }\n // 3. Child path match - changed field is inside this widget's container\n if (node.path && node.path.startsWith(changedPath + '.')) {\n return true;\n }\n // 4. Expression dependency check - if widget has expressions that depend on this path\n if (this.hasExpressionDependency(changedPath)) {\n return true;\n }\n // 5. Formula dependency check - if widget's formula depends on this path\n if (node.formula && this.checkFormulaForUpdate(node.formula, changedPath)) {\n return true;\n }\n // 6. Trigger dependency check - if widget has triggers that depend on this path\n if (this.hasTriggerDependency(changedPath)) {\n return true;\n }\n // 7. Visibility dependency check - if widget's visibility depends on this path\n if (this.hasVisibilityDependency(changedPath)) {\n return true;\n }\n return false;\n }\n hasExpressionDependency(changedPath) {\n // Check if any cached expressions depend on the changed path\n for (const [path, evaluator] of this.expressionEvaluators) {\n // Check if the expression path itself contains the changed path\n if (path.includes(changedPath)) {\n return true;\n }\n // Parse the actual expression content to check for context.eval() calls\n // We need to get the original expression string to analyze it\n const node = this.node();\n const expressionValue = this.getExpressionValueFromNode(node, path);\n if (expressionValue && typeof expressionValue === 'string') {\n // Look for context.eval() calls that reference the changed path\n const contextEvalRegex = /context\\.eval\\(['\"]([^'\\\"]+)['\"]\\)/g;\n let match;\n while ((match = contextEvalRegex.exec(expressionValue)) !== null) {\n const evalPath = match[1];\n // Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', 'person.typeId' -> 'person.type.id')\n const normalizePath = (p) => {\n if (!p)\n return p;\n const parts = p.split('.');\n const last = parts[parts.length - 1];\n if (last && last.endsWith('Id')) {\n parts.splice(parts.length - 1, 1, last.slice(0, -2), 'id');\n }\n return parts.join('.');\n };\n const isSegmentSuffix = (a, b) => {\n if (!a || !b)\n return false;\n const pa = a.split('.');\n const pb = b.split('.');\n if (pb.length > pa.length)\n return false;\n for (let i = 1; i <= pb.length; i++) {\n if (pa[pa.length - i] !== pb[pb.length - i])\n return false;\n }\n return true;\n };\n const evalNorm = normalizePath(evalPath);\n const changedNorm = normalizePath(changedPath);\n // Debug log for dependency check\n // console.log(\n // `🧭 [${this.node().type}] dep-check expr='${path}', changed='${changedPath}', eval='${evalPath}', evalNorm='${evalNorm}', changedNorm='${changedNorm}'`,\n // );\n // Generic direct and hierarchical dependency checks (raw and normalized)\n const rawMatch = evalPath === changedPath ||\n evalPath.startsWith(changedPath + '.') ||\n changedPath.startsWith(evalPath + '.') ||\n isSegmentSuffix(evalPath, changedPath) ||\n isSegmentSuffix(changedPath, evalPath);\n const normMatch = evalNorm === changedNorm ||\n evalNorm.startsWith(changedNorm + '.') ||\n changedNorm.startsWith(evalNorm + '.') ||\n isSegmentSuffix(evalNorm, changedNorm) ||\n isSegmentSuffix(changedNorm, evalNorm);\n if (rawMatch || normMatch) {\n // console.log(\n // `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (generic match)`,\n // );\n return true;\n }\n // Check for path aliases/mappings (e.g., typeId.id <-> type.id)\n if (this.isPathAlias(evalPath, changedPath)) {\n // console.log(\n // `🔍 [${this.node().type}] Expression '${path}' depends on '${changedPath}' via context.eval('${evalPath}') (path alias)`,\n // );\n return true;\n }\n }\n }\n }\n return false;\n }\n isPathAlias(evalPath, changedPath) {\n // Dynamic path alias detection based on 'Id' suffix pattern\n // Examples: typeId.id <-> type.id, categoryId.name <-> category.name\n // Check if evalPath ends with 'Id' and has a property\n if (evalPath.endsWith('Id') && evalPath.includes('.')) {\n const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n const property = evalPath.substring(evalPath.lastIndexOf('.') + 1);\n const mappedPath = `${basePath}.${property}`;\n if (changedPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n // Check if changedPath ends with 'Id' and has a property\n if (changedPath.endsWith('Id') && changedPath.includes('.')) {\n const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n const property = changedPath.substring(changedPath.lastIndexOf('.') + 1);\n const mappedPath = `${basePath}.${property}`;\n if (evalPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n // Check for direct 'Id' suffix mapping (e.g., typeId <-> type.id)\n if (evalPath.endsWith('Id') && !evalPath.includes('.')) {\n const basePath = evalPath.substring(0, evalPath.lastIndexOf('Id'));\n const mappedPath = `${basePath}.id`;\n if (changedPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n if (changedPath.endsWith('Id') && !changedPath.includes('.')) {\n const basePath = changedPath.substring(0, changedPath.lastIndexOf('Id'));\n const mappedPath = `${basePath}.id`;\n if (evalPath === mappedPath) {\n // console.log(`🔍 [${this.node().type}] Path alias detected: '${evalPath}' <-> '${changedPath}'`);\n return true;\n }\n }\n return false;\n }\n getExpressionValueFromNode(node, path) {\n try {\n // Navigate through the node structure to find the expression value\n const pathParts = path.split('.');\n let current = node.options || {};\n // Navigate through the path parts\n for (const part of pathParts) {\n if (current && typeof current === 'object' && part in current) {\n current = current[part];\n }\n else {\n return null;\n }\n }\n return typeof current === 'string' ? current : null;\n }\n catch (error) {\n // console.error('Error extracting expression value from node:', error);\n return null;\n }\n }\n hasTriggerDependency(changedPath) {\n const node = this.node();\n const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n if (!triggers)\n return false;\n // Check if any trigger event depends on the changed path\n for (const trigger of triggers) {\n if (trigger.event && trigger.event.includes(changedPath)) {\n return true;\n }\n }\n return false;\n }\n hasVisibilityDependency(changedPath) {\n const node = this.node();\n const visibility = node.options?.['visible'] || this.mergedOptions()?.visible;\n if (!visibility || typeof visibility !== 'string')\n return false;\n // Check if visibility expression depends on the changed path\n if (this.expressionEvaluator.isExpression(visibility)) {\n // Parse the visibility expression to check for context.eval() calls\n const contextEvalRegex = /context\\.eval\\(['\"]([^'\\\"]+)['\"]\\)/g;\n let match;\n while ((match = contextEvalRegex.exec(visibility)) !== null) {\n const evalPath = match[1];\n // Check for direct or hierarchical dependency\n if (evalPath === changedPath ||\n evalPath.startsWith(changedPath + '.') ||\n changedPath.startsWith(evalPath + '.')) {\n return true;\n }\n }\n }\n return false;\n }\n //#endregion\n // Removed visibility detection methods - not needed for current implementation\n // Detect input changes\n ngOnChanges(changes) {\n if (changes['mode'] || changes['node']) {\n // Check if either 'mode' or 'node' has changed\n this.rerenderComponent();\n }\n }\n rerenderComponent() {\n // Clear any pending render operation to prevent double rendering\n if (this.renderTimeoutId) {\n clearTimeout(this.renderTimeoutId);\n this.renderTimeoutId = null;\n }\n // Reset loading state to allow re-rendering\n this.isLoading.set(false);\n // Schedule the component loading\n this.renderTimeoutId = setTimeout(async () => {\n await this.loadComponent();\n this.renderTimeoutId = null;\n });\n }\n ngOnDestroy() {\n if (this.renderTimeoutId) {\n clearTimeout(this.renderTimeoutId);\n }\n if (this.contextUpdateTimeout) {\n clearTimeout(this.contextUpdateTimeout);\n }\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.onLoadEvent.complete();\n }\n async loadComponent() {\n if (this.isLoading()) {\n return;\n }\n this.isLoading.set(true);\n try {\n // Destroy the existing component if it exists\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.viewContainerRef.clear();\n // Reset the component ref signal\n this._componentRefSignal.set(null);\n //\n const widget = this.widgetRegistery.resolve(this.node().type);\n //\n const propertiesToProcess = [\n ...(widget?.properties ?? []),\n ...(widget?.components[this.mode()]?.properties ?? []),\n ]?.filter((c) => c.schema.defaultValue != null);\n // Process default values (evaluate expressions if needed)\n const props = {};\n for (const property of propertiesToProcess) {\n const defaultValue = property.schema.defaultValue;\n if (typeof defaultValue === 'string' && this.expressionEvaluator.isExpression(defaultValue)) {\n // Evaluate expression for default value\n try {\n const evaluatedValue = await this.evaluateExpression(defaultValue);\n props[property.name] = evaluatedValue;\n }\n catch (error) {\n // console.error(`Error evaluating default value expression for property ${property.name}:`, error);\n props[property.name] = cloneDeep(defaultValue); // Fallback to original value\n }\n }\n else {\n // Use static default value\n props[property.name] = cloneDeep(defaultValue);\n }\n }\n //\n this.mergedOptions.set(merge(props, widget?.options, this.node().options) || {});\n this.expressionEvaluators.clear();\n // Register expressions from widget defaults and node options to cover related-entity cases\n this.preprocessAndInitialOptions(cloneDeep(widget?.options));\n this.preprocessAndInitialOptions(cloneDeep(this.node().options));\n // Check if context is available before evaluating expressions\n // If context is empty, expressions will be re-evaluated after initial render\n const contextData = this.contextService.data();\n const hasContextData = contextData && Object.keys(contextData).length > 0;\n if (hasContextData) {\n await this.updateOptionsBasedOnContext();\n }\n else {\n // Context not yet available - expressions will be evaluated after initial render\n // when context is set (handled by the effect and preRenderContextQueue)\n }\n //\n this._options.update((val) => ({ ...val, ...this.mergedOptions() }));\n // Evaluate default value\n let defaultValue = this.node().defaultValue;\n if (defaultValue && this.expressionEvaluator.isExpression(defaultValue)) {\n defaultValue = await this.evaluateExpression(defaultValue);\n }\n //\n const tokenValue = {\n node: this.node(),\n defaultValue: defaultValue,\n options: this.mergedOptions(),\n config: widget,\n };\n const token = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: AXP_WIDGET_TOKEN,\n useValue: tokenValue,\n },\n ],\n });\n //\n const loadingRef = this.viewContainerRef.createComponent(AXPWidgetPlaceholderComponent);\n //\n const com = await widget?.components[this.mode()]?.component();\n if (!com) {\n // console.error(`${this.node().type} widget component not found with mode: ${this.mode()}`);\n return;\n }\n this.componentRef = this.viewContainerRef.createComponent(com, { injector: token });\n this.instance = this.componentRef.instance;\n this.instance.setStatus(AXPWidgetStatus.Rendering);\n this.instance.parent = this.parentNode();\n this.instance.index = this.index();\n this.instance.mode = this.mode();\n this.instance.setStatus(AXPWidgetStatus.Rendered);\n // Update the component ref signal for reactive access\n this._componentRefSignal.set(this.componentRef);\n this.instance?.onOptionsChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onOptionsChanged.emit({ sender: this, widget: c.sender });\n });\n this.instance?.onValueChanged?.pipe(this.unsubscriber.takeUntilDestroy).subscribe((c) => {\n this.onValueChanged.emit({ sender: this, widget: c.sender });\n });\n await this.updateValueBasedOnFormula();\n await this.updateVisibility();\n await this.assignTriggers();\n //\n loadingRef.destroy();\n // Mark that initial render is complete\n this.hasInitialRender = true;\n // Re-evaluate expressions after initial render to catch late-arriving related context\n if (this.expressionEvaluators.size > 0) {\n // console.log(`🔄 [${this.node().type}] Re-evaluating expressions after initial render`);\n await this.updateOptionsBasedOnContext();\n this.applyOptions();\n }\n // Re-evaluate visibility after initial render\n await this.updateVisibility();\n // Process any buffered pre-render context changes now that the component is ready\n if (this.preRenderContextQueue.size > 0) {\n // Check if we have a full context initialization marker\n const hasFullContextInit = this.preRenderContextQueue.has('*');\n if (hasFullContextInit) {\n // Full context was initialized - clear cache and re-evaluate all expressions\n // console.log(`🚀 [${this.node().type}] Processing initial context set - full re-evaluation`);\n this.clearExpressionCache();\n this.preRenderContextQueue.clear();\n // Re-evaluate all expressions since context is now available\n if (this.expressionEvaluators.size > 0) {\n await this.updateOptionsBasedOnContext();\n this.applyOptions();\n }\n await this.updateVisibility();\n }\n else {\n // console.log(\n // `🚀 [${this.node().type}] Processing ${this.preRenderContextQueue.size} buffered pre-render changes`,\n // );\n this.preRenderContextQueue.forEach((p) => this.contextUpdateQueue.add(p));\n this.preRenderContextQueue.clear();\n await this.processBatchedUpdates();\n }\n }\n // Emit load event after widget is fully loaded\n const loadEvent = { sender: this, widget: this.instance };\n this.onLoadEvent.next(loadEvent);\n this.onLoad.emit(loadEvent);\n }\n catch (error) {\n // console.error('Error loading component:', error);\n }\n finally {\n this.isLoading.set(false);\n }\n }\n applyOptions() {\n if (!this.instance)\n return;\n const currentOptions = this.mergedOptions();\n // Check if options have actually changed\n if (this.hasOptionsChanged(currentOptions)) {\n // console.log('applyOptions', this.node().path, '- options changed');\n this._options.update((val) => ({ ...val, ...currentOptions }));\n this.instance.setOptions(currentOptions);\n this.lastAppliedOptions = cloneDeep(currentOptions); // Deep clone using Lodash\n }\n else {\n // console.log('applyOptions', this.node().path, '- no changes, skipping');\n }\n }\n hasOptionsChanged(newOptions) {\n if (!this.lastAppliedOptions) {\n return true; // First time, always apply\n }\n // Deep comparison of options using Lodash isEqual\n return !isEqual(newOptions, this.lastAppliedOptions);\n }\n // Removed deepCloneValue method - now using Lodash cloneDeep\n checkFormulaForUpdate(formula, path) {\n if (formula) {\n const regex = /context\\.eval\\('([^']+)'\\)/g;\n const matches = formula.match(regex);\n const nodes = matches ? matches.map((match) => match.match(/'([^']+)'/)[1]) : [];\n return nodes.includes(path);\n }\n else\n return false;\n }\n preprocessAndInitialOptions(obj, pathPrefix = '') {\n if (!obj) {\n return;\n }\n Object.entries(obj).forEach(([key, value]) => {\n const currentPath = pathPrefix ? `${pathPrefix}.${key}` : key;\n // CRITICAL FIX: Skip trigger actions during options processing\n //\n // PROBLEM: Trigger actions were being evaluated immediately during widget setup/options processing,\n // causing them to execute before the actual trigger event occurred. This meant triggers would fire\n // during initialization instead of when the specified context path actually changed.\n //\n // ROOT CAUSE: The expression evaluator was processing trigger action expressions (like console.log\n // or widget.setValue calls) as part of the normal options preprocessing, treating them as dynamic\n // expressions that needed immediate evaluation.\n //\n // SOLUTION: Detect when we're processing trigger actions and store them as static values without\n // expression evaluation. This ensures trigger actions are only evaluated when the trigger's\n // subscription callback actually fires (when the event condition is met).\n //\n // RESULT: Triggers now only execute when their event filters pass (e.g., when the specified\n // context path changes), not during widget initialization.\n if (currentPath.includes('triggers') && (key === 'action' || currentPath.endsWith('.action'))) {\n // Apply static values directly without expression evaluation\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n return;\n }\n if (typeof value === 'string' && this.expressionEvaluator.isExpression(value)) {\n // Cache dynamic expression for later evaluation\n this.expressionEvaluators.set(currentPath, () => this.evaluateExpression(value));\n }\n else if (typeof value === 'object' &&\n value !== null &&\n (value.constructor === Object || Array.isArray(value))) {\n // Recursively handle nested objects\n this.preprocessAndInitialOptions(value, currentPath);\n }\n else {\n // Apply static values directly\n this.mergedOptions.update((currentOptions) => {\n return set(currentOptions, currentPath, value);\n });\n }\n });\n }\n async updateOptionsBasedOnContext() {\n // Early return if no expressions to evaluate\n if (this.expressionEvaluators.size === 0) {\n return 0;\n }\n // console.log(`🔍 [${this.node().type}] Evaluating ${this.expressionEvaluators.size} expressions`);\n const updatePromises = Array.from(this.expressionEvaluators).map(async ([path, evaluator]) => {\n // Check cache first\n const cachedValue = this.getCachedExpressionResult(path);\n if (cachedValue !== null) {\n // console.log(`💾 [${this.node().type}] Using cached expression result for '${path}'`);\n return { path, newValue: cachedValue, fromCache: true };\n }\n // Evaluate expression if not cached\n const evalStartTime = performance.now();\n const newValue = await evaluator();\n const evalTime = performance.now() - evalStartTime;\n // Check if result has actually changed using Lodash isEqual\n const lastValue = this.lastExpressionResults.get(path);\n const hasChanged = !isEqual(newValue, lastValue);\n if (hasChanged) {\n // console.log(\n // `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value changed`,\n // );\n // Cache the result and track it\n this.setCachedExpressionResult(path, newValue);\n this.lastExpressionResults.set(path, cloneDeep(newValue));\n return { path, newValue, fromCache: false, hasChanged: true };\n }\n else {\n // console.log(\n // `📝 [${this.node().type}] Expression '${path}' evaluated in ${evalTime.toFixed(2)}ms - value unchanged, skipping update`,\n // );\n // Cache the result but don't update\n this.setCachedExpressionResult(path, newValue);\n this.lastExpressionResults.set(path, cloneDeep(newValue));\n return { path, newValue, fromCache: false, hasChanged: false };\n }\n });\n // Wait for all evaluators to complete\n const updates = await Promise.all(updatePromises);\n // Filter updates to only include those that have actually changed\n const changedUpdates = updates.filter((update) => update.hasChanged !== false);\n // Apply updates to mergedOptions only for changed values\n if (changedUpdates.length > 0) {\n this.mergedOptions.update((o) => {\n const updatedOptions = { ...o };\n changedUpdates.forEach(({ path, newValue }) => {\n set(updatedOptions, path, newValue);\n });\n return updatedOptions;\n });\n }\n const cacheHits = updates.filter((update) => update.fromCache).length;\n const skippedUpdates = updates.length - changedUpdates.length;\n // console.log(\n // `📋 [${this.node().type}] Applied ${changedUpdates.length} expression updates (${cacheHits} cache hits, ${skippedUpdates} skipped)`,\n // );\n return changedUpdates.length;\n }\n async updateValueBasedOnFormula() {\n if (this.node().formula) {\n const value = await this.evaluateExpression(this.node().formula);\n this.instance.setValue(value);\n }\n }\n async updateVisibility() {\n const node = this.node();\n const visibility = node.options?.['visible'] || this.mergedOptions()?.visible;\n if (visibility === undefined || visibility === null) {\n // Default to visible if no visibility option is set\n this.show();\n return;\n }\n let shouldBeVisible;\n if (typeof visibility === 'boolean') {\n shouldBeVisible = visibility;\n }\n else if (typeof visibility === 'string' && this.expressionEvaluator.isExpression(visibility)) {\n // Evaluate expression for visibility\n try {\n const result = await this.evaluateExpression(visibility);\n shouldBeVisible = Boolean(result);\n }\n catch (error) {\n // console.error('Error evaluating visibility expression:', error);\n shouldBeVisible = true; // Default to visible on error\n }\n }\n else {\n // Treat other values as truthy/falsy\n shouldBeVisible = Boolean(visibility);\n }\n if (shouldBeVisible) {\n this.show();\n }\n else {\n this.hide();\n }\n }\n show() {\n if (!this.isVisible()) {\n this.isVisible.set(true);\n if (this.componentRef && this.componentRef.location) {\n this.componentRef.location.nativeElement.style.display = '';\n }\n }\n }\n hide() {\n if (this.isVisible()) {\n this.isVisible.set(false);\n if (this.componentRef && this.componentRef.location) {\n this.componentRef.location.nativeElement.style.display = 'none';\n }\n }\n }\n async evaluateExpression(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n return await this.expressionEvaluator.evaluate(templateExpression, scope);\n }\n catch (error) {\n // console.error('Error evaluating expression:', error);\n return false;\n }\n }\n buildExpressionScope() {\n return {\n context: this.getContextScope(),\n events: this.getEventScope(),\n widget: this.getWidgetScope(),\n methods: this.getFunctionScope(),\n vars: this.getVariablesScope(),\n };\n }\n getContextScope() {\n return {\n eval: (path) => {\n //TODO: Handle array index\n const fullPath = path.startsWith('>') ? `${this.instance?.parentPath()}.${path.substring(1)}` : path;\n const value = this.contextService.getValue(fullPath);\n return value;\n },\n set: (path, value) => {\n this.contextService.update(path, value);\n },\n data: () => {\n return this.contextService.data();\n },\n isDirty: () => {\n return this.contextService.isDirty();\n },\n };\n }\n getEventScope() {\n return {\n context: (path) => {\n return this.onContextChanged.pipe(filter((c) => {\n // If no path filter specified, pass all events\n if (path == null || path === '') {\n return true;\n }\n // Ensure c.path exists\n if (!c.path) {\n return false;\n }\n // Pattern: \"prefix*\" - matches paths that start with prefix\n if (path.endsWith('*')) {\n const prefix = path.substring(0, path.length - 1);\n return c.path.startsWith(prefix);\n }\n // Pattern: \"*suffix\" - matches paths that end with suffix\n else if (path.startsWith('*')) {\n const suffix = path.substring(1);\n return c.path.endsWith(suffix);\n }\n // Exact match\n else {\n return c.path === path;\n }\n }));\n },\n from: (event) => get(this.instance.api(), event),\n load: () => {\n return this.onLoadEvent.asObservable();\n },\n };\n }\n getWidgetScope() {\n return {\n call: (name, ...args) => {\n this.instance.call(name, ...args);\n },\n setValue: (value) => {\n this.instance.setValue(value);\n },\n clear: () => {\n this.instance.setValue(undefined);\n },\n refresh: () => {\n const refresh = this.instance?.['refresh'];\n if (refresh && typeof refresh === 'function') {\n refresh.bind(this.instance)();\n }\n else {\n this.updateOptionsBasedOnContext();\n this.applyOptions();\n }\n },\n output: (name) => {\n this.instance.output(name);\n },\n find: (id) => {\n return this.builderService.getWidget(id);\n },\n };\n }\n getFunctionScope() {\n const scope = {\n sum: (values) => {\n return sum(values);\n },\n translate: (text, options) => {\n return this.translateService.translateAsync(text, options);\n },\n widgetInfo: (name) => {\n return this.widgetService.resolve(name);\n },\n };\n // Add custom functions from builder service\n Object.entries(this.builderService.functions).forEach(([key, fn]) => {\n scope[key] = (...args) => {\n return fn(...args);\n };\n });\n return scope;\n }\n getVariablesScope() {\n return {\n eval: (path) => get(this.builderService.variables, path),\n };\n }\n async assignTriggers() {\n const node = this.node();\n // Check multiple possible locations for triggers\n const triggers = node.triggers || node.options?.['triggers'] || this.mergedOptions()?.triggers;\n if (!triggers) {\n return;\n }\n for (const trigger of triggers) {\n try {\n const event = await this.evaluateTrigger(trigger.event);\n if (event) {\n event.pipe(this.unsubscriber.takeUntilDestroy).subscribe(() => {\n const exec = async (action) => {\n if (!isEmpty(action) && isString(action)) {\n await this.evaluateAction(action);\n }\n };\n const actions = Array.isArray(trigger.action) ? trigger.action : [trigger.action];\n actions.forEach(async (a) => await exec(a));\n });\n }\n }\n catch (error) {\n // console.error('Error assigning trigger:', error);\n }\n }\n }\n async evaluateTrigger(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n const result = await this.expressionEvaluator.evaluate(templateExpression, scope);\n // Check if result is an Observable\n if (result && typeof result.subscribe === 'function') {\n return result;\n }\n else {\n return null;\n }\n }\n catch (error) {\n // console.error('Error evaluating trigger expression:', error);\n return null;\n }\n }\n async evaluateAction(templateExpression) {\n try {\n const scope = this.buildExpressionScope();\n await this.expressionEvaluator.evaluate(templateExpression, scope);\n }\n catch (error) {\n // console.error('Error evaluating action expression:', templateExpression, error);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.12\", type: AXPWidgetRendererDirective, isStandalone: false, selector: \"[axp-widget-renderer]\", inputs: { parentNode: { classPropertyName: \"parentNode\", publicName: \"parentNode\", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: \"index\", publicName: \"index\", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: \"mode\", publicName: \"mode\", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: \"node\", publicName: \"node\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: \"onOptionsChanged\", onValueChanged: \"onValueChanged\", onLoad: \"onLoad\" }, providers: [\n {\n provide: AXUnsubscriber,\n },\n ], exportAs: [\"widgetRenderer\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetRendererDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axp-widget-renderer]',\n exportAs: 'widgetRenderer',\n providers: [\n {\n provide: AXUnsubscriber,\n },\n ],\n standalone: false,\n }]\n }], ctorParameters: () => [], propDecorators: { parentNode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"parentNode\", required: false }] }], index: [{ type: i0.Input, args: [{ isSignal: true, alias: \"index\", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: \"mode\", required: true }] }], node: [{ type: i0.Input, args: [{ isSignal: true, alias: \"node\", required: true }] }], onOptionsChanged: [{ type: i0.Output, args: [\"onOptionsChanged\"] }], onValueChanged: [{ type: i0.Output, args: [\"onValueChanged\"] }], onLoad: [{ type: i0.Output, args: [\"onLoad\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LXJlbmRlcmVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvd2lkZ2V0LXJlbmRlcmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBK0IsNkJBQTZCLEVBQWUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoSCxPQUFPLEVBRUwsU0FBUyxFQUNULFFBQVEsRUFFUixnQkFBZ0IsRUFFaEIsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN4RixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUtMLGdCQUFnQixHQUNqQixNQUFNLGdCQUFnQixDQUFDOztBQWN4QixNQUFNLE9BQU8sMEJBQTBCO0lB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UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsbUZBQW1GO1FBQ3JGLENBQUM7SUFDSCxDQUFDOytHQXprQ1UsMEJBQTBCO21HQUExQiwwQkFBMEIsK3BCQVAxQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxjQUFjO2FBQ3hCO1NBQ0Y7OzRGQUdVLDBCQUEwQjtrQkFWdEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGO29CQUNELFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYVHJhbnNsYXRlT3B0aW9ucywgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhVbnN1YnNjcmliZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlLCBBWFBFeHByZXNzaW9uRXZhbHVhdG9yU2VydmljZSwgQVhQTWV0YURhdGEgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBEaXJlY3RpdmUsXG4gIEluamVjdG9yLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGdldCwgaXNFbXB0eSwgaXNFcXVhbCwgaXNTdHJpbmcsIG1lcmdlLCBzZXQsIHN1bSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYUEJhc2VXaWRnZXRDb21wb25lbnQsIEFYUExheW91dEJhc2VXaWRnZXRDb21wb25lbnQsIEFYUFZhbHVlV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29yZUNvbnRleHRTdG9yZSB9IGZyb20gJy4vd2lkZ2V0LWNvcmUtc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRDb3JlU2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LWNvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2UgfSBmcm9tICcuL3dpZGdldC1yZWdpc3Rlcnkuc2VydmljZSc7XG5pbXBvcnQgeyBBWFBXaWRnZXRTdGF0dXMgfSBmcm9tICcuL3dpZGdldC1zdGF0dXMudHlwZXMnO1xuaW1wb3J0IHtcbiAgQVhQV2lkZ2V0Q29uZmlnLFxuICBBWFBXaWRnZXROb2RlLFxuICBBWFBXaWRnZXROb2RlVG9rZW4sXG4gIEFYUFdpZGdldFJlbmRlck1vZGUsXG4gIEFYUF9XSURHRVRfVE9LRU4sXG59IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuZXhwb3J0IHR5cGUgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmVPcHRpb25zID0gQVhQTWV0YURhdGE7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theHAtd2lkZ2V0LXJlbmRlcmVyXScsXG4gIGV4cG9ydEFzOiAnd2lkZ2V0UmVuZGVyZXInLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBWFVuc3Vic2NyaWJlcixcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmUge1xuICBwYXJlbnROb2RlID0gaW5wdXQ8QVhQTGF5b3V0QmFzZVdpZGdldENvbXBvbmVudCB8IG51bGw+KCk7XG5cbiAgaW5kZXggPSBpbnB1dDxudW1iZXIgfCBudWxsPigpO1xuXG4gIG1vZGUgPSBpbnB1dC5yZXF1aXJlZDxBWFBXaWRnZXRSZW5kZXJNb2RlPigpO1xuICBub2RlID0gaW5wdXQucmVxdWlyZWQ8QVhQV2lkZ2V0Tm9kZT4oKTtcblxuICBwcml2YXRlIF9vcHRpb25zID0gc2lnbmFsPEFYUFdpZGdldFJlbmRlcmVyRGlyZWN0aXZlT3B0aW9ucz4oe30pO1xuICBwdWJsaWMgb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuYXNSZWFkb25seSgpO1xuXG4gIHB1YmxpYyBvbk9wdGlvbnNDaGFuZ2VkID0gb3V0cHV0PHsgc2VuZGVyOiBBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZTsgd2lkZ2V0OiBBWFBCYXNlV2lkZ2V0Q29tcG9uZW50IH0+KCk7XG4gIHB1YmxpYyBvblZhbHVlQ2hhbmdlZCA9IG91dHB1dDx7IHNlbmRlcjogQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmU7IHdpZGdldDogQVhQVmFsdWVXaWRnZXRDb21wb25lbnQgfT4oKTtcbiAgcHVibGljIG9uTG9hZCA9IG91dHB1dDx7IHNlbmRlcjogQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmU7IHdpZGdldDogQVhQQmFzZVdpZGdldENvbXBvbmVudCB9PigpO1xuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUHVibGljIEFQSSAgIC0tLS1cblxuICAvKipcbiAgICogU2lnbmFsIHRoYXQgZW1pdHMgdGhlIGNvbXBvbmVudCByZWZlcmVuY2Ugd2hlbiBpdCdzIHJlYWR5XG4gICAqL1xuICBwcml2YXRlIF9jb21wb25lbnRSZWZTaWduYWwgPSBzaWduYWw8Q29tcG9uZW50UmVmPGFueT4gfCBudWxsPihudWxsKTtcbiAgcHVibGljIGNvbXBvbmVudFJlZlNpZ25hbCA9IHRoaXMuX2NvbXBvbmVudFJlZlNpZ25hbC5hc1JlYWRvbmx5KCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBQcm9wZXJ0aWVzICAgLS0tLVxuXG4gIHByb3RlY3RlZCBtZXJnZWRPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxhbnk+ID0gc2lnbmFsPGFueT4oe30pO1xuXG4gIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICBwcm90ZWN0ZWQgYnVpbGRlclNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0Q29yZVNlcnZpY2UpO1xuICBwcm90ZWN0ZWQgY29udGV4dFNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0Q29yZUNvbnRleHRTdG9yZSk7XG4gIHByb3RlY3RlZCB3aWRnZXRSZWdpc3RlcnkgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHVuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KEFYVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHdpZGdldFNlcnZpY2UgPSBpbmplY3QoQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGV4cHJlc3Npb25FdmFsdWF0b3IgPSBpbmplY3QoQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNlcnZpY2UpO1xuICBwcml2YXRlIHZpZXdDb250YWluZXJSZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG5cbiAgcHJvdGVjdGVkIGlzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByb3RlY3RlZCBpc1Zpc2libGUgPSBzaWduYWwodHJ1ZSk7XG4gIC8vVE9ETyBjaGVjayBpZiBpbnN0YW5jZSBjYW5ub3QgYmUgcHVibGljIGNoYW5nZSBpdDpcbiAgcHVibGljIGluc3RhbmNlITogQVhQVmFsdWVXaWRnZXRDb21wb25lbnQ7XG4gIHByaXZhdGUgZXhwcmVzc2lvbkV2YWx1YXRvcnM6IE1hcDxzdHJpbmcsICgpID0+IFByb21pc2U8YW55Pj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcbiAgcHJpdmF0ZSByZW5kZXJUaW1lb3V0SWQ6IGFueSA9IG51bGw7XG4gIHByaXZhdGUgaGFzSW5pdGlhbFJlbmRlciA9IGZhbHNlO1xuXG4gIHByaXZhdGUgb25Db250ZXh0Q2hhbmdlZCA9IG5ldyBTdWJqZWN0PHsgcGF0aDogc3RyaW5nIH0+KCk7XG4gIHByaXZhdGUgb25Mb2FkRXZlbnQgPSBuZXcgU3ViamVjdDx7IHNlbmRlcjogQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmU7IHdpZGdldDogQVhQQmFzZVdpZGdldENvbXBvbmVudCB9PigpO1xuXG4gIC8vI3JlZ2lvbiAtLS0tICAgUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9uIFByb3BlcnRpZXMgICAtLS0tXG5cbiAgcHJpdmF0ZSBjb250ZXh0VXBkYXRlUXVldWUgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBjb250ZXh0VXBkYXRlVGltZW91dDogYW55ID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBDT05URVhUX1VQREFURV9ERUJPVU5DRV9NUyA9IDQ7IC8vIH4yNTBmcHMgZm9yIGxhcmdlIGZvcm1zXG5cbiAgLy8gUmVtb3ZlZCB2aXNpYmlsaXR5IGRldGVjdGlvbiAtIG5vdCBuZWVkZWQgZm9yIGN1cnJlbnQgaW1wbGVtZW50YXRpb25cblxuICAvLyBFeHByZXNzaW9uIHJlc3VsdCBjYWNoaW5nXG4gIHByaXZhdGUgZXhwcmVzc2lvbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHsgdmFsdWU6IGFueTsgdGltZXN0YW1wOiBudW1iZXIgfT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBFWFBSRVNTSU9OX0NBQ0hFX1RUTCA9IDUwMDsgLy8gQ2FjaGUgZm9yIDUwMG1zIChpbmNyZWFzZWQgZm9yIGJldHRlciBoaXQgcmF0ZSlcblxuICAvLyBPcHRpb25zIGNoYW5nZSB0cmFja2luZ1xuICBwcml2YXRlIGxhc3RBcHBsaWVkT3B0aW9uczogYW55ID0gbnVsbDtcblxuICAvLyBFeHByZXNzaW9uIHJlc3VsdCB0cmFja2luZ1xuICBwcml2YXRlIGxhc3RFeHByZXNzaW9uUmVzdWx0cyA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgLy8gQnVmZmVyIGZvciBjb250ZXh0IGNoYW5nZXMgdGhhdCBoYXBwZW4gYmVmb3JlIGluaXRpYWwgcmVuZGVyIGNvbXBsZXRlc1xuICBwcml2YXRlIHByZVJlbmRlckNvbnRleHRRdWV1ZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5jb250ZXh0U2VydmljZS5jaGFuZ2VFdmVudCgpO1xuXG4gICAgICAvLyBEb24ndCB0cmlnZ2VyIHJlLXJlbmRlciBkdXJpbmcgaW5pdGlhbCBzZXR1cFxuICAgICAgaWYgKCF0aGlzLmhhc0luaXRpYWxSZW5kZXIpIHtcbiAgICAgICAgLy8gSGFuZGxlIGluaXRpYWwgY29udGV4dCBzZXQgKHN0YXRlOiAnaW5pdGlhdGVkJyB3aXRoIGVtcHR5IHBhdGggbWVhbnMgZnVsbCBjb250ZXh0IHVwZGF0ZSlcbiAgICAgICAgaWYgKGNoYW5nZWQuc3RhdGUgPT09ICdpbml0aWF0ZWQnICYmICghY2hhbmdlZC5wYXRoIHx8IGNoYW5nZWQucGF0aCA9PT0gJycpKSB7XG4gICAgICAgICAgLy8gTWFyayB0aGF0IHdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgYWxsIGV4cHJlc3Npb25zIHdoZW4gaW5pdGlhbCByZW5kZXIgY29tcGxldGVzXG4gICAgICAgICAgLy8gVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIGNvbnRleHQgaXMgc2V0IGJlZm9yZS9kdXJpbmcgd2lkZ2V0IGluaXRpYWxpemF0aW9uXG4gICAgICAgICAgdGhpcy5wcmVSZW5kZXJDb250ZXh0UXVldWUuYWRkKCcqJyk7IC8vIFVzZSAnKicgYXMgYSBtYXJrZXIgZm9yIGZ1bGwgY29udGV4dCBpbml0aWFsaXphdGlvblxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5OdIFske3RoaXMubm9kZSgpLnR5cGV9XSBCdWZmZXJlZCBpbml0aWFsIGNvbnRleHQgc2V0YCk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2hhbmdlZC5wYXRoKSB7XG4gICAgICAgICAgdGhpcy5wcmVSZW5kZXJDb250ZXh0UXVldWUuYWRkKGNoYW5nZWQucGF0aCk7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coYPCfk50gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEJ1ZmZlcmVkIHByZS1yZW5kZXIgY29udGV4dCBjaGFuZ2U6ICR7Y2hhbmdlZC5wYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gQ1JJVElDQUwgUEVSRk9STUFOQ0UgRklYOiBPbmx5IHJlc3BvbmQgdG8gcmVsZXZhbnQgY29udGV4dCBjaGFuZ2VzXG4gICAgICAvLyBIYW5kbGUgaW5pdGlhbCBjb250ZXh0IHNldCAoZnVsbCBjb250ZXh0IHVwZGF0ZSlcbiAgICAgIGlmIChjaGFuZ2VkLnN0YXRlID09PSAnaW5pdGlhdGVkJyAmJiAoIWNoYW5nZWQucGF0aCB8fCBjaGFuZ2VkLnBhdGggPT09ICcnKSkge1xuICAgICAgICAvLyBGdWxsIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gLSB0cmlnZ2VyIHJlLWV2YWx1YXRpb24gb2YgYWxsIGV4cHJlc3Npb25zXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGDwn46vIFske3RoaXMubm9kZSgpLnR5cGV9XSBJbml0aWFsIGNvbnRleHQgc2V0IGRldGVjdGVkIC0gdHJpZ2dlcmluZyBmdWxsIHJlLWV2YWx1YXRpb25gKTtcbiAgICAgICAgdGhpcy5jbGVhckV4cHJlc3Npb25DYWNoZSgpO1xuICAgICAgICBpZiAodGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zaXplID4gMCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMudXBkYXRlT3B0aW9uc0Jhc2VkT25Db250ZXh0KCk7XG4gICAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZWQucGF0aCAmJiB0aGlzLmlzUmVsZXZhbnRDb250ZXh0Q2hhbmdlKGNoYW5nZWQucGF0aCkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCfjq8gWyR7dGhpcy5ub2RlKCkudHlwZX1dIENvbnRleHQgY2hhbmdlIGRldGVjdGVkOiAke2NoYW5nZWQucGF0aH1gKTtcbiAgICAgICAgdGhpcy5xdWV1ZUNvbnRleHRVcGRhdGUoY2hhbmdlZC5wYXRoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuYnVpbGRlclNlcnZpY2Uub25SZWZyZXNoLnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMucHJvY2Vzc0JhdGNoZWRVcGRhdGVzKCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyNyZWdpb24gLS0tLSAgIEV4cHJlc3Npb24gQ2FjaGluZyBNZXRob2RzICAgLS0tLVxuXG4gIHByaXZhdGUgZ2V0Q2FjaGVkRXhwcmVzc2lvblJlc3VsdChleHByZXNzaW9uS2V5OiBzdHJpbmcpOiBhbnkgfCBudWxsIHtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmV4cHJlc3Npb25DYWNoZS5nZXQoZXhwcmVzc2lvbktleSk7XG4gICAgaWYgKGNhY2hlZCAmJiBwZXJmb3JtYW5jZS5ub3coKSAtIGNhY2hlZC50aW1lc3RhbXAgPCB0aGlzLkVYUFJFU1NJT05fQ0FDSEVfVFRMKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+SviBbJHt0aGlzLm5vZGUoKS50eXBlfV0gVXNpbmcgY2FjaGVkIGV4cHJlc3Npb24gcmVzdWx0IGZvciAnJHtleHByZXNzaW9uS2V5fSdgKTtcbiAgICAgIHJldHVybiBjYWNoZWQudmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWNoZWRFeHByZXNzaW9uUmVzdWx0KGV4cHJlc3Npb25LZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZXhwcmVzc2lvbkNhY2hlLnNldChleHByZXNzaW9uS2V5LCB7XG4gICAgICB2YWx1ZSxcbiAgICAgIHRpbWVzdGFtcDogcGVyZm9ybWFuY2Uubm93KCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXhwcmVzc2lvbkNhY2hlKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwcmVzc2lvbkNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGlzUGF0aEFmZmVjdGluZ0V4cHJlc3Npb25zKGNoYW5nZWRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAvLyAgIGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBDaGVja2luZyBpZiBwYXRoICcke2NoYW5nZWRQYXRofScgYWZmZWN0cyBleHByZXNzaW9ucy4gRXhwcmVzc2lvbiBjb3VudDogJHt0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNpemV9YCxcbiAgICAvLyApO1xuXG4gICAgLy8gSWYgd2lkZ2V0IGhhcyBubyBleHByZXNzaW9ucywgbm8gbmVlZCB0byBjbGVhciBjYWNoZVxuICAgIGlmICh0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNpemUgPT09IDApIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoICcke2NoYW5nZWRQYXRofScgLSBubyBleHByZXNzaW9ucywga2VlcGluZyBjYWNoZWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFVzZSB0aGUgc2FtZSBsb2dpYyBhcyBoYXNFeHByZXNzaW9uRGVwZW5kZW5jeSB0byBjaGVjayBmb3IgYWN0dWFsIGRlcGVuZGVuY2llc1xuICAgIGlmICh0aGlzLmhhc0V4cHJlc3Npb25EZXBlbmRlbmN5KGNoYW5nZWRQYXRoKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggJyR7Y2hhbmdlZFBhdGh9JyBhZmZlY3RzIGV4cHJlc3Npb25zIC0gY2xlYXJpbmcgY2FjaGVgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoICcke2NoYW5nZWRQYXRofScgZG9lcyBub3QgYWZmZWN0IGV4cHJlc3Npb25zIC0ga2VlcGluZyBjYWNoZWApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiAtLS0tICAgQ29udGV4dCBCYXRjaGluZyBNZXRob2RzICAgLS0tLVxuXG4gIHByaXZhdGUgcXVldWVDb250ZXh0VXBkYXRlKHBhdGg6IHN0cmluZykge1xuICAgIGlmIChwYXRoKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+UhCBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUXVldWVpbmcgY29udGV4dCB1cGRhdGUgZm9yIHBhdGg6ICR7cGF0aH1gKTtcbiAgICAgIHRoaXMuY29udGV4dFVwZGF0ZVF1ZXVlLmFkZChwYXRoKTtcblxuICAgICAgLy8gQ2xlYXIgZXhpc3RpbmcgdGltZW91dFxuICAgICAgaWYgKHRoaXMuY29udGV4dFVwZGF0ZVRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY29udGV4dFVwZGF0ZVRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWJvdW5jZSB1cGRhdGVzXG4gICAgICB0aGlzLmNvbnRleHRVcGRhdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGDimqEgWyR7dGhpcy5ub2RlKCkudHlwZX1dIFByb2Nlc3NpbmcgYmF0Y2hlZCB1cGRhdGVzIGZvciAke3RoaXMuY29udGV4dFVwZGF0ZVF1ZXVlLnNpemV9IHBhdGhzYCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc0JhdGNoZWRVcGRhdGVzKCk7XG4gICAgICB9LCB0aGlzLkNPTlRFWFRfVVBEQVRFX0RFQk9VTkNFX01TKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHByb2Nlc3NCYXRjaGVkVXBkYXRlcygpIHtcbiAgICBpZiAodGhpcy5jb250ZXh0VXBkYXRlUXVldWUuc2l6ZSA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgcGF0aHMgPSBBcnJheS5mcm9tKHRoaXMuY29udGV4dFVwZGF0ZVF1ZXVlKTtcbiAgICB0aGlzLmNvbnRleHRVcGRhdGVRdWV1ZS5jbGVhcigpO1xuXG4gICAgLy8gY29uc29sZS5sb2coYPCfk4ogWyR7dGhpcy5ub2RlKCkudHlwZX1dIFByb2Nlc3NpbmcgJHtwYXRocy5sZW5ndGh9IHBhdGhzOmAsIHBhdGhzKTtcblxuICAgIC8vIENsZWFyIGV4cHJlc3Npb24gY2FjaGUgb25seSBpZiBjaGFuZ2VkIHBhdGhzIGFmZmVjdCB0aGlzIHdpZGdldCdzIGV4cHJlc3Npb25zXG4gICAgY29uc3Qgc2hvdWxkQ2xlYXJDYWNoZSA9IHBhdGhzLnNvbWUoKHBhdGgpID0+IHRoaXMuaXNQYXRoQWZmZWN0aW5nRXhwcmVzc2lvbnMocGF0aCkpO1xuICAgIGlmIChzaG91bGRDbGVhckNhY2hlKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+Xke+4jyBbJHt0aGlzLm5vZGUoKS50eXBlfV0gQ2xlYXJpbmcgZXhwcmVzc2lvbiBjYWNoZSBkdWUgdG8gZXhwcmVzc2lvbi1hZmZlY3RpbmcgcGF0aCBjaGFuZ2VgKTtcbiAgICAgIHRoaXMuY2xlYXJFeHByZXNzaW9uQ2FjaGUoKTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIHVwZGF0ZXMgaW4gYmF0Y2hlc1xuICAgIGNvbnN0IG9wdGlvbnNTdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBoYXNPcHRpb25zVXBkYXRlID0gYXdhaXQgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKTtcbiAgICBjb25zdCBvcHRpb25zVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gb3B0aW9uc1N0YXJ0VGltZTtcblxuICAgIGlmICh0eXBlb2YgaGFzT3B0aW9uc1VwZGF0ZSA9PT0gJ251bWJlcicgJiYgaGFzT3B0aW9uc1VwZGF0ZSA+IDApIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SnIFske3RoaXMubm9kZSgpLnR5cGV9XSBPcHRpb25zIHVwZGF0ZWQgKCR7b3B0aW9uc1RpbWUudG9GaXhlZCgyKX1tcylgKTtcbiAgICAgIHRoaXMuYXBwbHlPcHRpb25zKCk7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9ybXVsYXMgZm9yIGFueSBvZiB0aGUgY2hhbmdlZCBwYXRoc1xuICAgIGNvbnN0IGZvcm11bGFTdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBmb3JtdWxhTmVlZHNVcGRhdGUgPSBwYXRocy5zb21lKChwYXRoKSA9PiB0aGlzLmNoZWNrRm9ybXVsYUZvclVwZGF0ZSh0aGlzLm5vZGUoKS5mb3JtdWxhLCBwYXRoKSk7XG5cbiAgICBpZiAoZm9ybXVsYU5lZWRzVXBkYXRlKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhg8J+nriBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRm9ybXVsYSBuZWVkcyB1cGRhdGVgKTtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlVmFsdWVCYXNlZE9uRm9ybXVsYSgpO1xuICAgIH1cbiAgICBjb25zdCBmb3JtdWxhVGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gZm9ybXVsYVN0YXJ0VGltZTtcblxuICAgIC8vIENoZWNrIHZpc2liaWxpdHkgZm9yIGFueSBvZiB0aGUgY2hhbmdlZCBwYXRoc1xuICAgIGNvbnN0IHZpc2liaWxpdHlTdGFydFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCB2aXNpYmlsaXR5TmVlZHNVcGRhdGUgPSBwYXRocy5zb21lKChwYXRoKSA9PiB0aGlzLmhhc1Zpc2liaWxpdHlEZXBlbmRlbmN5KHBhdGgpKTtcblxuICAgIGlmICh2aXNpYmlsaXR5TmVlZHNVcGRhdGUpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5GB77iPIFske3RoaXMubm9kZSgpLnR5cGV9XSBWaXNpYmlsaXR5IG5lZWRzIHVwZGF0ZWApO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XG4gICAgfVxuICAgIGNvbnN0IHZpc2liaWxpdHlUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSB2aXNpYmlsaXR5U3RhcnRUaW1lO1xuXG4gICAgLy8gRW1pdCBjb250ZXh0IGNoYW5nZXNcbiAgICBwYXRocy5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICB0aGlzLm9uQ29udGV4dENoYW5nZWQubmV4dCh7IHBhdGggfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0b3RhbFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAvLyAgIGDinIUgWyR7dGhpcy5ub2RlKCkudHlwZX1dIEJhdGNoIHByb2Nlc3NpbmcgY29tcGxldGVkIGluICR7dG90YWxUaW1lLnRvRml4ZWQoMil9bXMgKG9wdGlvbnM6ICR7b3B0aW9uc1RpbWUudG9GaXhlZCgyKX1tcywgZm9ybXVsYTogJHtmb3JtdWxhVGltZS50b0ZpeGVkKDIpfW1zLCB2aXNpYmlsaXR5OiAke3Zpc2liaWxpdHlUaW1lLnRvRml4ZWQoMil9bXMpYCxcbiAgICAvLyApO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIC0tLS0gICBDb250ZXh0IFJlbGV2YW5jZSBGaWx0ZXJpbmcgICAtLS0tXG5cbiAgcHJpdmF0ZSBpc1JlbGV2YW50Q29udGV4dENoYW5nZShjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuXG4gICAgLy8gMS4gRGlyZWN0IHBhdGggbWF0Y2ggLSB3aWRnZXQncyBvd24gZmllbGRcbiAgICBpZiAobm9kZS5wYXRoID09PSBjaGFuZ2VkUGF0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gMi4gUGFyZW50IHBhdGggbWF0Y2ggLSB3aWRnZXQgaXMgaW5zaWRlIHRoZSBjaGFuZ2VkIGNvbnRhaW5lclxuICAgIGlmIChub2RlLnBhdGggJiYgY2hhbmdlZFBhdGguc3RhcnRzV2l0aChub2RlLnBhdGggKyAnLicpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyAzLiBDaGlsZCBwYXRoIG1hdGNoIC0gY2hhbmdlZCBmaWVsZCBpcyBpbnNpZGUgdGhpcyB3aWRnZXQncyBjb250YWluZXJcbiAgICBpZiAobm9kZS5wYXRoICYmIG5vZGUucGF0aC5zdGFydHNXaXRoKGNoYW5nZWRQYXRoICsgJy4nKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gNC4gRXhwcmVzc2lvbiBkZXBlbmRlbmN5IGNoZWNrIC0gaWYgd2lkZ2V0IGhhcyBleHByZXNzaW9ucyB0aGF0IGRlcGVuZCBvbiB0aGlzIHBhdGhcbiAgICBpZiAodGhpcy5oYXNFeHByZXNzaW9uRGVwZW5kZW5jeShjaGFuZ2VkUGF0aCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIDUuIEZvcm11bGEgZGVwZW5kZW5jeSBjaGVjayAtIGlmIHdpZGdldCdzIGZvcm11bGEgZGVwZW5kcyBvbiB0aGlzIHBhdGhcbiAgICBpZiAobm9kZS5mb3JtdWxhICYmIHRoaXMuY2hlY2tGb3JtdWxhRm9yVXBkYXRlKG5vZGUuZm9ybXVsYSwgY2hhbmdlZFBhdGgpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyA2LiBUcmlnZ2VyIGRlcGVuZGVuY3kgY2hlY2sgLSBpZiB3aWRnZXQgaGFzIHRyaWdnZXJzIHRoYXQgZGVwZW5kIG9uIHRoaXMgcGF0aFxuICAgIGlmICh0aGlzLmhhc1RyaWdnZXJEZXBlbmRlbmN5KGNoYW5nZWRQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gNy4gVmlzaWJpbGl0eSBkZXBlbmRlbmN5IGNoZWNrIC0gaWYgd2lkZ2V0J3MgdmlzaWJpbGl0eSBkZXBlbmRzIG9uIHRoaXMgcGF0aFxuICAgIGlmICh0aGlzLmhhc1Zpc2liaWxpdHlEZXBlbmRlbmN5KGNoYW5nZWRQYXRoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNFeHByZXNzaW9uRGVwZW5kZW5jeShjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hlY2sgaWYgYW55IGNhY2hlZCBleHByZXNzaW9ucyBkZXBlbmQgb24gdGhlIGNoYW5nZWQgcGF0aFxuICAgIGZvciAoY29uc3QgW3BhdGgsIGV2YWx1YXRvcl0gb2YgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycykge1xuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV4cHJlc3Npb24gcGF0aCBpdHNlbGYgY29udGFpbnMgdGhlIGNoYW5nZWQgcGF0aFxuICAgICAgaWYgKHBhdGguaW5jbHVkZXMoY2hhbmdlZFBhdGgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBQYXJzZSB0aGUgYWN0dWFsIGV4cHJlc3Npb24gY29udGVudCB0byBjaGVjayBmb3IgY29udGV4dC5ldmFsKCkgY2FsbHNcbiAgICAgIC8vIFdlIG5lZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBleHByZXNzaW9uIHN0cmluZyB0byBhbmFseXplIGl0XG4gICAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgICBjb25zdCBleHByZXNzaW9uVmFsdWUgPSB0aGlzLmdldEV4cHJlc3Npb25WYWx1ZUZyb21Ob2RlKG5vZGUsIHBhdGgpO1xuXG4gICAgICBpZiAoZXhwcmVzc2lvblZhbHVlICYmIHR5cGVvZiBleHByZXNzaW9uVmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIExvb2sgZm9yIGNvbnRleHQuZXZhbCgpIGNhbGxzIHRoYXQgcmVmZXJlbmNlIHRoZSBjaGFuZ2VkIHBhdGhcbiAgICAgICAgY29uc3QgY29udGV4dEV2YWxSZWdleCA9IC9jb250ZXh0XFwuZXZhbFxcKFsnXCJdKFteJ1xcXCJdKylbJ1wiXVxcKS9nO1xuICAgICAgICBsZXQgbWF0Y2g7XG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSBjb250ZXh0RXZhbFJlZ2V4LmV4ZWMoZXhwcmVzc2lvblZhbHVlKSkgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBldmFsUGF0aCA9IG1hdGNoWzFdO1xuXG4gICAgICAgICAgLy8gTm9ybWFsaXplIElkLXN1ZmZpeGVkIHNlZ21lbnRzIHRvIGRvdC1pZCBmb3JtIChlLmcuLCAndHlwZUlkJyAtPiAndHlwZS5pZCcsICdwZXJzb24udHlwZUlkJyAtPiAncGVyc29uLnR5cGUuaWQnKVxuICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZVBhdGggPSAocDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICAgICAgICAgIGlmICghcCkgcmV0dXJuIHA7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHAuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGlmIChsYXN0ICYmIGxhc3QuZW5kc1dpdGgoJ0lkJykpIHtcbiAgICAgICAgICAgICAgcGFydHMuc3BsaWNlKHBhcnRzLmxlbmd0aCAtIDEsIDEsIGxhc3Quc2xpY2UoMCwgLTIpLCAnaWQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXJ0cy5qb2luKCcuJyk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGlzU2VnbWVudFN1ZmZpeCA9IChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgaWYgKCFhIHx8ICFiKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBwYSA9IGEuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IHBiID0gYi5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKHBiLmxlbmd0aCA+IHBhLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gcGIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKHBhW3BhLmxlbmd0aCAtIGldICE9PSBwYltwYi5sZW5ndGggLSBpXSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGNvbnN0IGV2YWxOb3JtID0gbm9ybWFsaXplUGF0aChldmFsUGF0aCk7XG4gICAgICAgICAgY29uc3QgY2hhbmdlZE5vcm0gPSBub3JtYWxpemVQYXRoKGNoYW5nZWRQYXRoKTtcblxuICAgICAgICAgIC8vIERlYnVnIGxvZyBmb3IgZGVwZW5kZW5jeSBjaGVja1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFxuICAgICAgICAgIC8vICAgYPCfp60gWyR7dGhpcy5ub2RlKCkudHlwZX1dIGRlcC1jaGVjayBleHByPScke3BhdGh9JywgY2hhbmdlZD0nJHtjaGFuZ2VkUGF0aH0nLCBldmFsPScke2V2YWxQYXRofScsIGV2YWxOb3JtPScke2V2YWxOb3JtfScsIGNoYW5nZWROb3JtPScke2NoYW5nZWROb3JtfSdgLFxuICAgICAgICAgIC8vICk7XG5cbiAgICAgICAgICAvLyBHZW5lcmljIGRpcmVjdCBhbmQgaGllcmFyY2hpY2FsIGRlcGVuZGVuY3kgY2hlY2tzIChyYXcgYW5kIG5vcm1hbGl6ZWQpXG4gICAgICAgICAgY29uc3QgcmF3TWF0Y2ggPVxuICAgICAgICAgICAgZXZhbFBhdGggPT09IGNoYW5nZWRQYXRoIHx8XG4gICAgICAgICAgICBldmFsUGF0aC5zdGFydHNXaXRoKGNoYW5nZWRQYXRoICsgJy4nKSB8fFxuICAgICAgICAgICAgY2hhbmdlZFBhdGguc3RhcnRzV2l0aChldmFsUGF0aCArICcuJykgfHxcbiAgICAgICAgICAgIGlzU2VnbWVudFN1ZmZpeChldmFsUGF0aCwgY2hhbmdlZFBhdGgpIHx8XG4gICAgICAgICAgICBpc1NlZ21lbnRTdWZmaXgoY2hhbmdlZFBhdGgsIGV2YWxQYXRoKTtcblxuICAgICAgICAgIGNvbnN0IG5vcm1NYXRjaCA9XG4gICAgICAgICAgICBldmFsTm9ybSA9PT0gY2hhbmdlZE5vcm0gfHxcbiAgICAgICAgICAgIGV2YWxOb3JtLnN0YXJ0c1dpdGgoY2hhbmdlZE5vcm0gKyAnLicpIHx8XG4gICAgICAgICAgICBjaGFuZ2VkTm9ybS5zdGFydHNXaXRoKGV2YWxOb3JtICsgJy4nKSB8fFxuICAgICAgICAgICAgaXNTZWdtZW50U3VmZml4KGV2YWxOb3JtLCBjaGFuZ2VkTm9ybSkgfHxcbiAgICAgICAgICAgIGlzU2VnbWVudFN1ZmZpeChjaGFuZ2VkTm9ybSwgZXZhbE5vcm0pO1xuXG4gICAgICAgICAgaWYgKHJhd01hdGNoIHx8IG5vcm1NYXRjaCkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgICAgICAvLyAgIGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBFeHByZXNzaW9uICcke3BhdGh9JyBkZXBlbmRzIG9uICcke2NoYW5nZWRQYXRofScgdmlhIGNvbnRleHQuZXZhbCgnJHtldmFsUGF0aH0nKSAoZ2VuZXJpYyBtYXRjaClgLFxuICAgICAgICAgICAgLy8gKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENoZWNrIGZvciBwYXRoIGFsaWFzZXMvbWFwcGluZ3MgKGUuZy4sIHR5cGVJZC5pZCA8LT4gdHlwZS5pZClcbiAgICAgICAgICBpZiAodGhpcy5pc1BhdGhBbGlhcyhldmFsUGF0aCwgY2hhbmdlZFBhdGgpKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIC8vICAgYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEV4cHJlc3Npb24gJyR7cGF0aH0nIGRlcGVuZHMgb24gJyR7Y2hhbmdlZFBhdGh9JyB2aWEgY29udGV4dC5ldmFsKCcke2V2YWxQYXRofScpIChwYXRoIGFsaWFzKWAsXG4gICAgICAgICAgICAvLyApO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNQYXRoQWxpYXMoZXZhbFBhdGg6IHN0cmluZywgY2hhbmdlZFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIER5bmFtaWMgcGF0aCBhbGlhcyBkZXRlY3Rpb24gYmFzZWQgb24gJ0lkJyBzdWZmaXggcGF0dGVyblxuICAgIC8vIEV4YW1wbGVzOiB0eXBlSWQuaWQgPC0+IHR5cGUuaWQsIGNhdGVnb3J5SWQubmFtZSA8LT4gY2F0ZWdvcnkubmFtZVxuXG4gICAgLy8gQ2hlY2sgaWYgZXZhbFBhdGggZW5kcyB3aXRoICdJZCcgYW5kIGhhcyBhIHByb3BlcnR5XG4gICAgaWYgKGV2YWxQYXRoLmVuZHNXaXRoKCdJZCcpICYmIGV2YWxQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgIGNvbnN0IGJhc2VQYXRoID0gZXZhbFBhdGguc3Vic3RyaW5nKDAsIGV2YWxQYXRoLmxhc3RJbmRleE9mKCdJZCcpKTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gZXZhbFBhdGguc3Vic3RyaW5nKGV2YWxQYXRoLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgICAgIGNvbnN0IG1hcHBlZFBhdGggPSBgJHtiYXNlUGF0aH0uJHtwcm9wZXJ0eX1gO1xuXG4gICAgICBpZiAoY2hhbmdlZFBhdGggPT09IG1hcHBlZFBhdGgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggYWxpYXMgZGV0ZWN0ZWQ6ICcke2V2YWxQYXRofScgPC0+ICcke2NoYW5nZWRQYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgY2hhbmdlZFBhdGggZW5kcyB3aXRoICdJZCcgYW5kIGhhcyBhIHByb3BlcnR5XG4gICAgaWYgKGNoYW5nZWRQYXRoLmVuZHNXaXRoKCdJZCcpICYmIGNoYW5nZWRQYXRoLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgIGNvbnN0IGJhc2VQYXRoID0gY2hhbmdlZFBhdGguc3Vic3RyaW5nKDAsIGNoYW5nZWRQYXRoLmxhc3RJbmRleE9mKCdJZCcpKTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gY2hhbmdlZFBhdGguc3Vic3RyaW5nKGNoYW5nZWRQYXRoLmxhc3RJbmRleE9mKCcuJykgKyAxKTtcbiAgICAgIGNvbnN0IG1hcHBlZFBhdGggPSBgJHtiYXNlUGF0aH0uJHtwcm9wZXJ0eX1gO1xuXG4gICAgICBpZiAoZXZhbFBhdGggPT09IG1hcHBlZFBhdGgpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCflI0gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFBhdGggYWxpYXMgZGV0ZWN0ZWQ6ICcke2V2YWxQYXRofScgPC0+ICcke2NoYW5nZWRQYXRofSdgKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGRpcmVjdCAnSWQnIHN1ZmZpeCBtYXBwaW5nIChlLmcuLCB0eXBlSWQgPC0+IHR5cGUuaWQpXG4gICAgaWYgKGV2YWxQYXRoLmVuZHNXaXRoKCdJZCcpICYmICFldmFsUGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICBjb25zdCBiYXNlUGF0aCA9IGV2YWxQYXRoLnN1YnN0cmluZygwLCBldmFsUGF0aC5sYXN0SW5kZXhPZignSWQnKSk7XG4gICAgICBjb25zdCBtYXBwZWRQYXRoID0gYCR7YmFzZVBhdGh9LmlkYDtcblxuICAgICAgaWYgKGNoYW5nZWRQYXRoID09PSBtYXBwZWRQYXRoKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGDwn5SNIFske3RoaXMubm9kZSgpLnR5cGV9XSBQYXRoIGFsaWFzIGRldGVjdGVkOiAnJHtldmFsUGF0aH0nIDwtPiAnJHtjaGFuZ2VkUGF0aH0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkUGF0aC5lbmRzV2l0aCgnSWQnKSAmJiAhY2hhbmdlZFBhdGguaW5jbHVkZXMoJy4nKSkge1xuICAgICAgY29uc3QgYmFzZVBhdGggPSBjaGFuZ2VkUGF0aC5zdWJzdHJpbmcoMCwgY2hhbmdlZFBhdGgubGFzdEluZGV4T2YoJ0lkJykpO1xuICAgICAgY29uc3QgbWFwcGVkUGF0aCA9IGAke2Jhc2VQYXRofS5pZGA7XG5cbiAgICAgIGlmIChldmFsUGF0aCA9PT0gbWFwcGVkUGF0aCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUGF0aCBhbGlhcyBkZXRlY3RlZDogJyR7ZXZhbFBhdGh9JyA8LT4gJyR7Y2hhbmdlZFBhdGh9J2ApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldEV4cHJlc3Npb25WYWx1ZUZyb21Ob2RlKG5vZGU6IEFYUFdpZGdldE5vZGUsIHBhdGg6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICAvLyBOYXZpZ2F0ZSB0aHJvdWdoIHRoZSBub2RlIHN0cnVjdHVyZSB0byBmaW5kIHRoZSBleHByZXNzaW9uIHZhbHVlXG4gICAgICBjb25zdCBwYXRoUGFydHMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgICBsZXQgY3VycmVudDogYW55ID0gbm9kZS5vcHRpb25zIHx8IHt9O1xuXG4gICAgICAvLyBOYXZpZ2F0ZSB0aHJvdWdoIHRoZSBwYXRoIHBhcnRzXG4gICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGF0aFBhcnRzKSB7XG4gICAgICAgIGlmIChjdXJyZW50ICYmIHR5cGVvZiBjdXJyZW50ID09PSAnb2JqZWN0JyAmJiBwYXJ0IGluIGN1cnJlbnQpIHtcbiAgICAgICAgICBjdXJyZW50ID0gY3VycmVudFtwYXJ0XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdzdHJpbmcnID8gY3VycmVudCA6IG51bGw7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV4dHJhY3RpbmcgZXhwcmVzc2lvbiB2YWx1ZSBmcm9tIG5vZGU6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYXNUcmlnZ2VyRGVwZW5kZW5jeShjaGFuZ2VkUGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIGNvbnN0IHRyaWdnZXJzID0gbm9kZS50cmlnZ2VycyB8fCBub2RlLm9wdGlvbnM/LlsndHJpZ2dlcnMnXSB8fCB0aGlzLm1lcmdlZE9wdGlvbnMoKT8udHJpZ2dlcnM7XG5cbiAgICBpZiAoIXRyaWdnZXJzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBpZiBhbnkgdHJpZ2dlciBldmVudCBkZXBlbmRzIG9uIHRoZSBjaGFuZ2VkIHBhdGhcbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpIHtcbiAgICAgIGlmICh0cmlnZ2VyLmV2ZW50ICYmIHRyaWdnZXIuZXZlbnQuaW5jbHVkZXMoY2hhbmdlZFBhdGgpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGhhc1Zpc2liaWxpdHlEZXBlbmRlbmN5KGNoYW5nZWRQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgY29uc3QgdmlzaWJpbGl0eSA9IG5vZGUub3B0aW9ucz8uWyd2aXNpYmxlJ10gfHwgdGhpcy5tZXJnZWRPcHRpb25zKCk/LnZpc2libGU7XG5cbiAgICBpZiAoIXZpc2liaWxpdHkgfHwgdHlwZW9mIHZpc2liaWxpdHkgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBpZiB2aXNpYmlsaXR5IGV4cHJlc3Npb24gZGVwZW5kcyBvbiB0aGUgY2hhbmdlZCBwYXRoXG4gICAgaWYgKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5pc0V4cHJlc3Npb24odmlzaWJpbGl0eSkpIHtcbiAgICAgIC8vIFBhcnNlIHRoZSB2aXNpYmlsaXR5IGV4cHJlc3Npb24gdG8gY2hlY2sgZm9yIGNvbnRleHQuZXZhbCgpIGNhbGxzXG4gICAgICBjb25zdCBjb250ZXh0RXZhbFJlZ2V4ID0gL2NvbnRleHRcXC5ldmFsXFwoWydcIl0oW14nXFxcIl0rKVsnXCJdXFwpL2c7XG4gICAgICBsZXQgbWF0Y2g7XG4gICAgICB3aGlsZSAoKG1hdGNoID0gY29udGV4dEV2YWxSZWdleC5leGVjKHZpc2liaWxpdHkpKSAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBldmFsUGF0aCA9IG1hdGNoWzFdO1xuXG4gICAgICAgIC8vIENoZWNrIGZvciBkaXJlY3Qgb3IgaGllcmFyY2hpY2FsIGRlcGVuZGVuY3lcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGV2YWxQYXRoID09PSBjaGFuZ2VkUGF0aCB8fFxuICAgICAgICAgIGV2YWxQYXRoLnN0YXJ0c1dpdGgoY2hhbmdlZFBhdGggKyAnLicpIHx8XG4gICAgICAgICAgY2hhbmdlZFBhdGguc3RhcnRzV2l0aChldmFsUGF0aCArICcuJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyBSZW1vdmVkIHZpc2liaWxpdHkgZGV0ZWN0aW9uIG1ldGhvZHMgLSBub3QgbmVlZGVkIGZvciBjdXJyZW50IGltcGxlbWVudGF0aW9uXG5cbiAgLy8gRGV0ZWN0IGlucHV0IGNoYW5nZXNcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydtb2RlJ10gfHwgY2hhbmdlc1snbm9kZSddKSB7XG4gICAgICAvLyBDaGVjayBpZiBlaXRoZXIgJ21vZGUnIG9yICdub2RlJyBoYXMgY2hhbmdlZFxuICAgICAgdGhpcy5yZXJlbmRlckNvbXBvbmVudCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVyZW5kZXJDb21wb25lbnQoKSB7XG4gICAgLy8gQ2xlYXIgYW55IHBlbmRpbmcgcmVuZGVyIG9wZXJhdGlvbiB0byBwcmV2ZW50IGRvdWJsZSByZW5kZXJpbmdcbiAgICBpZiAodGhpcy5yZW5kZXJUaW1lb3V0SWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnJlbmRlclRpbWVvdXRJZCk7XG4gICAgICB0aGlzLnJlbmRlclRpbWVvdXRJZCA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgbG9hZGluZyBzdGF0ZSB0byBhbGxvdyByZS1yZW5kZXJpbmdcbiAgICB0aGlzLmlzTG9hZGluZy5zZXQoZmFsc2UpO1xuXG4gICAgLy8gU2NoZWR1bGUgdGhlIGNvbXBvbmVudCBsb2FkaW5nXG4gICAgdGhpcy5yZW5kZXJUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMubG9hZENvbXBvbmVudCgpO1xuICAgICAgdGhpcy5yZW5kZXJUaW1lb3V0SWQgPSBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMucmVuZGVyVGltZW91dElkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5yZW5kZXJUaW1lb3V0SWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb250ZXh0VXBkYXRlVGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY29udGV4dFVwZGF0ZVRpbWVvdXQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5vbkxvYWRFdmVudC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkQ29tcG9uZW50KCkge1xuICAgIGlmICh0aGlzLmlzTG9hZGluZygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nLnNldCh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBEZXN0cm95IHRoZSBleGlzdGluZyBjb21wb25lbnQgaWYgaXQgZXhpc3RzXG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgfVxuICAgICAgdGhpcy52aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG5cbiAgICAgIC8vIFJlc2V0IHRoZSBjb21wb25lbnQgcmVmIHNpZ25hbFxuICAgICAgdGhpcy5fY29tcG9uZW50UmVmU2lnbmFsLnNldChudWxsKTtcbiAgICAgIC8vXG4gICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLndpZGdldFJlZ2lzdGVyeS5yZXNvbHZlKHRoaXMubm9kZSgpLnR5cGUpO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IHByb3BlcnRpZXNUb1Byb2Nlc3MgPSBbXG4gICAgICAgIC4uLih3aWRnZXQ/LnByb3BlcnRpZXMgPz8gW10pLFxuICAgICAgICAuLi4od2lkZ2V0Py5jb21wb25lbnRzW3RoaXMubW9kZSgpXT8ucHJvcGVydGllcyA/PyBbXSksXG4gICAgICBdPy5maWx0ZXIoKGMpID0+IGMuc2NoZW1hLmRlZmF1bHRWYWx1ZSAhPSBudWxsKTtcblxuICAgICAgLy8gUHJvY2VzcyBkZWZhdWx0IHZhbHVlcyAoZXZhbHVhdGUgZXhwcmVzc2lvbnMgaWYgbmVlZGVkKVxuICAgICAgY29uc3QgcHJvcHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcHJvcGVydGllc1RvUHJvY2Vzcykge1xuICAgICAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBwcm9wZXJ0eS5zY2hlbWEuZGVmYXVsdFZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbihkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgICAgLy8gRXZhbHVhdGUgZXhwcmVzc2lvbiBmb3IgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBldmFsdWF0ZWRWYWx1ZSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgICAgICBwcm9wc1twcm9wZXJ0eS5uYW1lXSA9IGV2YWx1YXRlZFZhbHVlO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKGBFcnJvciBldmFsdWF0aW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBmb3IgcHJvcGVydHkgJHtwcm9wZXJ0eS5uYW1lfTpgLCBlcnJvcik7XG4gICAgICAgICAgICBwcm9wc1twcm9wZXJ0eS5uYW1lXSA9IGNsb25lRGVlcChkZWZhdWx0VmFsdWUpOyAvLyBGYWxsYmFjayB0byBvcmlnaW5hbCB2YWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBVc2Ugc3RhdGljIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICBwcm9wc1twcm9wZXJ0eS5uYW1lXSA9IGNsb25lRGVlcChkZWZhdWx0VmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL1xuICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnNldChtZXJnZShwcm9wcywgd2lkZ2V0Py5vcHRpb25zLCB0aGlzLm5vZGUoKS5vcHRpb25zKSB8fCB7fSk7XG5cbiAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuY2xlYXIoKTtcbiAgICAgIC8vIFJlZ2lzdGVyIGV4cHJlc3Npb25zIGZyb20gd2lkZ2V0IGRlZmF1bHRzIGFuZCBub2RlIG9wdGlvbnMgdG8gY292ZXIgcmVsYXRlZC1lbnRpdHkgY2FzZXNcbiAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKGNsb25lRGVlcCh3aWRnZXQ/Lm9wdGlvbnMpKTtcbiAgICAgIHRoaXMucHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKGNsb25lRGVlcCh0aGlzLm5vZGUoKS5vcHRpb25zKSk7XG5cbiAgICAgIC8vIENoZWNrIGlmIGNvbnRleHQgaXMgYXZhaWxhYmxlIGJlZm9yZSBldmFsdWF0aW5nIGV4cHJlc3Npb25zXG4gICAgICAvLyBJZiBjb250ZXh0IGlzIGVtcHR5LCBleHByZXNzaW9ucyB3aWxsIGJlIHJlLWV2YWx1YXRlZCBhZnRlciBpbml0aWFsIHJlbmRlclxuICAgICAgY29uc3QgY29udGV4dERhdGEgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLmRhdGEoKTtcbiAgICAgIGNvbnN0IGhhc0NvbnRleHREYXRhID0gY29udGV4dERhdGEgJiYgT2JqZWN0LmtleXMoY29udGV4dERhdGEpLmxlbmd0aCA+IDA7XG5cbiAgICAgIGlmIChoYXNDb250ZXh0RGF0YSkge1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ29udGV4dCBub3QgeWV0IGF2YWlsYWJsZSAtIGV4cHJlc3Npb25zIHdpbGwgYmUgZXZhbHVhdGVkIGFmdGVyIGluaXRpYWwgcmVuZGVyXG4gICAgICAgIC8vIHdoZW4gY29udGV4dCBpcyBzZXQgKGhhbmRsZWQgYnkgdGhlIGVmZmVjdCBhbmQgcHJlUmVuZGVyQ29udGV4dFF1ZXVlKVxuICAgICAgfVxuICAgICAgLy9cbiAgICAgIHRoaXMuX29wdGlvbnMudXBkYXRlKCh2YWwpID0+ICh7IC4uLnZhbCwgLi4udGhpcy5tZXJnZWRPcHRpb25zKCkgfSkpO1xuICAgICAgLy8gRXZhbHVhdGUgZGVmYXVsdCB2YWx1ZVxuICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHRoaXMubm9kZSgpLmRlZmF1bHRWYWx1ZTtcbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgJiYgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbihkZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKGRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgICAvL1xuICAgICAgY29uc3QgdG9rZW5WYWx1ZSA9IHtcbiAgICAgICAgbm9kZTogdGhpcy5ub2RlKCksXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlLFxuICAgICAgICBvcHRpb25zOiB0aGlzLm1lcmdlZE9wdGlvbnMoKSxcbiAgICAgICAgY29uZmlnOiB3aWRnZXQsXG4gICAgICB9IGFzIEFYUFdpZGdldE5vZGVUb2tlbjtcbiAgICAgIGNvbnN0IHRva2VuID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgICAgcGFyZW50OiB0aGlzLmluamVjdG9yLFxuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBWFBfV0lER0VUX1RPS0VOLFxuICAgICAgICAgICAgdXNlVmFsdWU6IHRva2VuVmFsdWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgICAgLy9cbiAgICAgIGNvbnN0IGxvYWRpbmdSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEFYUFdpZGdldFBsYWNlaG9sZGVyQ29tcG9uZW50KTtcbiAgICAgIC8vXG4gICAgICBjb25zdCBjb20gPSBhd2FpdCB3aWRnZXQ/LmNvbXBvbmVudHNbdGhpcy5tb2RlKCldPy5jb21wb25lbnQoKTtcbiAgICAgIGlmICghY29tKSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5ub2RlKCkudHlwZX0gd2lkZ2V0IGNvbXBvbmVudCBub3QgZm91bmQgd2l0aCBtb2RlOiAke3RoaXMubW9kZSgpfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQ8QVhQVmFsdWVXaWRnZXRDb21wb25lbnQ8YW55Pj4oY29tLCB7IGluamVjdG9yOiB0b2tlbiB9KTtcbiAgICAgIHRoaXMuaW5zdGFuY2UgPSB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0U3RhdHVzKEFYUFdpZGdldFN0YXR1cy5SZW5kZXJpbmcpO1xuICAgICAgdGhpcy5pbnN0YW5jZS5wYXJlbnQgPSB0aGlzLnBhcmVudE5vZGUoKTtcbiAgICAgIHRoaXMuaW5zdGFuY2UuaW5kZXggPSB0aGlzLmluZGV4KCk7XG4gICAgICB0aGlzLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGUoKTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0U3RhdHVzKEFYUFdpZGdldFN0YXR1cy5SZW5kZXJlZCk7XG5cbiAgICAgIC8vIFVwZGF0ZSB0aGUgY29tcG9uZW50IHJlZiBzaWduYWwgZm9yIHJlYWN0aXZlIGFjY2Vzc1xuICAgICAgdGhpcy5fY29tcG9uZW50UmVmU2lnbmFsLnNldCh0aGlzLmNvbXBvbmVudFJlZik7XG4gICAgICB0aGlzLmluc3RhbmNlPy5vbk9wdGlvbnNDaGFuZ2VkPy5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZWQuZW1pdCh7IHNlbmRlcjogdGhpcywgd2lkZ2V0OiBjLnNlbmRlciB9KTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbnN0YW5jZT8ub25WYWx1ZUNoYW5nZWQ/LnBpcGUodGhpcy51bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7IHNlbmRlcjogdGhpcywgd2lkZ2V0OiBjLnNlbmRlciBhcyBBWFBWYWx1ZVdpZGdldENvbXBvbmVudCB9KTtcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCk7XG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVZpc2liaWxpdHkoKTtcbiAgICAgIGF3YWl0IHRoaXMuYXNzaWduVHJpZ2dlcnMoKTtcbiAgICAgIC8vXG4gICAgICBsb2FkaW5nUmVmLmRlc3Ryb3koKTtcblxuICAgICAgLy8gTWFyayB0aGF0IGluaXRpYWwgcmVuZGVyIGlzIGNvbXBsZXRlXG4gICAgICB0aGlzLmhhc0luaXRpYWxSZW5kZXIgPSB0cnVlO1xuXG4gICAgICAvLyBSZS1ldmFsdWF0ZSBleHByZXNzaW9ucyBhZnRlciBpbml0aWFsIHJlbmRlciB0byBjYXRjaCBsYXRlLWFycml2aW5nIHJlbGF0ZWQgY29udGV4dFxuICAgICAgaWYgKHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2l6ZSA+IDApIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCflIQgWyR7dGhpcy5ub2RlKCkudHlwZX1dIFJlLWV2YWx1YXRpbmcgZXhwcmVzc2lvbnMgYWZ0ZXIgaW5pdGlhbCByZW5kZXJgKTtcbiAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKTtcbiAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmUtZXZhbHVhdGUgdmlzaWJpbGl0eSBhZnRlciBpbml0aWFsIHJlbmRlclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XG5cbiAgICAgIC8vIFByb2Nlc3MgYW55IGJ1ZmZlcmVkIHByZS1yZW5kZXIgY29udGV4dCBjaGFuZ2VzIG5vdyB0aGF0IHRoZSBjb21wb25lbnQgaXMgcmVhZHlcbiAgICAgIGlmICh0aGlzLnByZVJlbmRlckNvbnRleHRRdWV1ZS5zaXplID4gMCkge1xuICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgZnVsbCBjb250ZXh0IGluaXRpYWxpemF0aW9uIG1hcmtlclxuICAgICAgICBjb25zdCBoYXNGdWxsQ29udGV4dEluaXQgPSB0aGlzLnByZVJlbmRlckNvbnRleHRRdWV1ZS5oYXMoJyonKTtcblxuICAgICAgICBpZiAoaGFzRnVsbENvbnRleHRJbml0KSB7XG4gICAgICAgICAgLy8gRnVsbCBjb250ZXh0IHdhcyBpbml0aWFsaXplZCAtIGNsZWFyIGNhY2hlIGFuZCByZS1ldmFsdWF0ZSBhbGwgZXhwcmVzc2lvbnNcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhg8J+agCBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUHJvY2Vzc2luZyBpbml0aWFsIGNvbnRleHQgc2V0IC0gZnVsbCByZS1ldmFsdWF0aW9uYCk7XG4gICAgICAgICAgdGhpcy5jbGVhckV4cHJlc3Npb25DYWNoZSgpO1xuICAgICAgICAgIHRoaXMucHJlUmVuZGVyQ29udGV4dFF1ZXVlLmNsZWFyKCk7XG4gICAgICAgICAgLy8gUmUtZXZhbHVhdGUgYWxsIGV4cHJlc3Npb25zIHNpbmNlIGNvbnRleHQgaXMgbm93IGF2YWlsYWJsZVxuICAgICAgICAgIGlmICh0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzLnNpemUgPiAwKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpO1xuICAgICAgICAgICAgdGhpcy5hcHBseU9wdGlvbnMoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgdGhpcy51cGRhdGVWaXNpYmlsaXR5KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgICAgLy8gICBg8J+agCBbJHt0aGlzLm5vZGUoKS50eXBlfV0gUHJvY2Vzc2luZyAke3RoaXMucHJlUmVuZGVyQ29udGV4dFF1ZXVlLnNpemV9IGJ1ZmZlcmVkIHByZS1yZW5kZXIgY2hhbmdlc2AsXG4gICAgICAgICAgLy8gKTtcbiAgICAgICAgICB0aGlzLnByZVJlbmRlckNvbnRleHRRdWV1ZS5mb3JFYWNoKChwKSA9PiB0aGlzLmNvbnRleHRVcGRhdGVRdWV1ZS5hZGQocCkpO1xuICAgICAgICAgIHRoaXMucHJlUmVuZGVyQ29udGV4dFF1ZXVlLmNsZWFyKCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzQmF0Y2hlZFVwZGF0ZXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBFbWl0IGxvYWQgZXZlbnQgYWZ0ZXIgd2lkZ2V0IGlzIGZ1bGx5IGxvYWRlZFxuICAgICAgY29uc3QgbG9hZEV2ZW50ID0geyBzZW5kZXI6IHRoaXMsIHdpZGdldDogdGhpcy5pbnN0YW5jZSB9O1xuICAgICAgdGhpcy5vbkxvYWRFdmVudC5uZXh0KGxvYWRFdmVudCk7XG4gICAgICB0aGlzLm9uTG9hZC5lbWl0KGxvYWRFdmVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGxvYWRpbmcgY29tcG9uZW50OicsIGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5T3B0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMuaW5zdGFuY2UpIHJldHVybjtcblxuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5tZXJnZWRPcHRpb25zKCk7XG5cbiAgICAvLyBDaGVjayBpZiBvcHRpb25zIGhhdmUgYWN0dWFsbHkgY2hhbmdlZFxuICAgIGlmICh0aGlzLmhhc09wdGlvbnNDaGFuZ2VkKGN1cnJlbnRPcHRpb25zKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2FwcGx5T3B0aW9ucycsIHRoaXMubm9kZSgpLnBhdGgsICctIG9wdGlvbnMgY2hhbmdlZCcpO1xuICAgICAgdGhpcy5fb3B0aW9ucy51cGRhdGUoKHZhbCkgPT4gKHsgLi4udmFsLCAuLi5jdXJyZW50T3B0aW9ucyB9KSk7XG4gICAgICB0aGlzLmluc3RhbmNlLnNldE9wdGlvbnMoY3VycmVudE9wdGlvbnMpO1xuICAgICAgdGhpcy5sYXN0QXBwbGllZE9wdGlvbnMgPSBjbG9uZURlZXAoY3VycmVudE9wdGlvbnMpOyAvLyBEZWVwIGNsb25lIHVzaW5nIExvZGFzaFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnYXBwbHlPcHRpb25zJywgdGhpcy5ub2RlKCkucGF0aCwgJy0gbm8gY2hhbmdlcywgc2tpcHBpbmcnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhc09wdGlvbnNDaGFuZ2VkKG5ld09wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5sYXN0QXBwbGllZE9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0cnVlOyAvLyBGaXJzdCB0aW1lLCBhbHdheXMgYXBwbHlcbiAgICB9XG5cbiAgICAvLyBEZWVwIGNvbXBhcmlzb24gb2Ygb3B0aW9ucyB1c2luZyBMb2Rhc2ggaXNFcXVhbFxuICAgIHJldHVybiAhaXNFcXVhbChuZXdPcHRpb25zLCB0aGlzLmxhc3RBcHBsaWVkT3B0aW9ucyk7XG4gIH1cblxuICAvLyBSZW1vdmVkIGRlZXBDbG9uZVZhbHVlIG1ldGhvZCAtIG5vdyB1c2luZyBMb2Rhc2ggY2xvbmVEZWVwXG5cbiAgcHJpdmF0ZSBjaGVja0Zvcm11bGFGb3JVcGRhdGUoZm9ybXVsYTogc3RyaW5nIHwgdW5kZWZpbmVkLCBwYXRoPzogc3RyaW5nIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmIChmb3JtdWxhKSB7XG4gICAgICBjb25zdCByZWdleCA9IC9jb250ZXh0XFwuZXZhbFxcKCcoW14nXSspJ1xcKS9nO1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGZvcm11bGEubWF0Y2gocmVnZXgpO1xuICAgICAgY29uc3Qgbm9kZXMgPSBtYXRjaGVzID8gbWF0Y2hlcy5tYXAoKG1hdGNoOiBhbnkpID0+IG1hdGNoLm1hdGNoKC8nKFteJ10rKScvKVsxXSkgOiBbXTtcbiAgICAgIHJldHVybiBub2Rlcy5pbmNsdWRlcyhwYXRoKTtcbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJlcHJvY2Vzc0FuZEluaXRpYWxPcHRpb25zKG9iajogYW55LCBwYXRoUHJlZml4OiBzdHJpbmcgPSAnJyk6IHZvaWQge1xuICAgIGlmICghb2JqKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIE9iamVjdC5lbnRyaWVzKG9iaikuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50UGF0aCA9IHBhdGhQcmVmaXggPyBgJHtwYXRoUHJlZml4fS4ke2tleX1gIDoga2V5O1xuXG4gICAgICAvLyBDUklUSUNBTCBGSVg6IFNraXAgdHJpZ2dlciBhY3Rpb25zIGR1cmluZyBvcHRpb25zIHByb2Nlc3NpbmdcbiAgICAgIC8vXG4gICAgICAvLyBQUk9CTEVNOiBUcmlnZ2VyIGFjdGlvbnMgd2VyZSBiZWluZyBldmFsdWF0ZWQgaW1tZWRpYXRlbHkgZHVyaW5nIHdpZGdldCBzZXR1cC9vcHRpb25zIHByb2Nlc3NpbmcsXG4gICAgICAvLyBjYXVzaW5nIHRoZW0gdG8gZXhlY3V0ZSBiZWZvcmUgdGhlIGFjdHVhbCB0cmlnZ2VyIGV2ZW50IG9jY3VycmVkLiBUaGlzIG1lYW50IHRyaWdnZXJzIHdvdWxkIGZpcmVcbiAgICAgIC8vIGR1cmluZyBpbml0aWFsaXphdGlvbiBpbnN0ZWFkIG9mIHdoZW4gdGhlIHNwZWNpZmllZCBjb250ZXh0IHBhdGggYWN0dWFsbHkgY2hhbmdlZC5cbiAgICAgIC8vXG4gICAgICAvLyBST09UIENBVVNFOiBUaGUgZXhwcmVzc2lvbiBldmFsdWF0b3Igd2FzIHByb2Nlc3NpbmcgdHJpZ2dlciBhY3Rpb24gZXhwcmVzc2lvbnMgKGxpa2UgY29uc29sZS5sb2dcbiAgICAgIC8vIG9yIHdpZGdldC5zZXRWYWx1ZSBjYWxscykgYXMgcGFydCBvZiB0aGUgbm9ybWFsIG9wdGlvbnMgcHJlcHJvY2Vzc2luZywgdHJlYXRpbmcgdGhlbSBhcyBkeW5hbWljXG4gICAgICAvLyBleHByZXNzaW9ucyB0aGF0IG5lZWRlZCBpbW1lZGlhdGUgZXZhbHVhdGlvbi5cbiAgICAgIC8vXG4gICAgICAvLyBTT0xVVElPTjogRGV0ZWN0IHdoZW4gd2UncmUgcHJvY2Vzc2luZyB0cmlnZ2VyIGFjdGlvbnMgYW5kIHN0b3JlIHRoZW0gYXMgc3RhdGljIHZhbHVlcyB3aXRob3V0XG4gICAgICAvLyBleHByZXNzaW9uIGV2YWx1YXRpb24uIFRoaXMgZW5zdXJlcyB0cmlnZ2VyIGFjdGlvbnMgYXJlIG9ubHkgZXZhbHVhdGVkIHdoZW4gdGhlIHRyaWdnZXInc1xuICAgICAgLy8gc3Vic2NyaXB0aW9uIGNhbGxiYWNrIGFjdHVhbGx5IGZpcmVzICh3aGVuIHRoZSBldmVudCBjb25kaXRpb24gaXMgbWV0KS5cbiAgICAgIC8vXG4gICAgICAvLyBSRVNVTFQ6IFRyaWdnZXJzIG5vdyBvbmx5IGV4ZWN1dGUgd2hlbiB0aGVpciBldmVudCBmaWx0ZXJzIHBhc3MgKGUuZy4sIHdoZW4gdGhlIHNwZWNpZmllZFxuICAgICAgLy8gY29udGV4dCBwYXRoIGNoYW5nZXMpLCBub3QgZHVyaW5nIHdpZGdldCBpbml0aWFsaXphdGlvbi5cbiAgICAgIGlmIChjdXJyZW50UGF0aC5pbmNsdWRlcygndHJpZ2dlcnMnKSAmJiAoa2V5ID09PSAnYWN0aW9uJyB8fCBjdXJyZW50UGF0aC5lbmRzV2l0aCgnLmFjdGlvbicpKSkge1xuICAgICAgICAvLyBBcHBseSBzdGF0aWMgdmFsdWVzIGRpcmVjdGx5IHdpdGhvdXQgZXhwcmVzc2lvbiBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKGN1cnJlbnRPcHRpb25zKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHNldChjdXJyZW50T3B0aW9ucywgY3VycmVudFBhdGgsIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbih2YWx1ZSkpIHtcbiAgICAgICAgLy8gQ2FjaGUgZHluYW1pYyBleHByZXNzaW9uIGZvciBsYXRlciBldmFsdWF0aW9uXG4gICAgICAgIHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2V0KGN1cnJlbnRQYXRoLCAoKSA9PiB0aGlzLmV2YWx1YXRlRXhwcmVzc2lvbih2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB2YWx1ZSAhPT0gbnVsbCAmJlxuICAgICAgICAodmFsdWUuY29uc3RydWN0b3IgPT09IE9iamVjdCB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSlcbiAgICAgICkge1xuICAgICAgICAvLyBSZWN1cnNpdmVseSBoYW5kbGUgbmVzdGVkIG9iamVjdHNcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzQW5kSW5pdGlhbE9wdGlvbnModmFsdWUsIGN1cnJlbnRQYXRoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFwcGx5IHN0YXRpYyB2YWx1ZXMgZGlyZWN0bHlcbiAgICAgICAgdGhpcy5tZXJnZWRPcHRpb25zLnVwZGF0ZSgoY3VycmVudE9wdGlvbnMpID0+IHtcbiAgICAgICAgICByZXR1cm4gc2V0KGN1cnJlbnRPcHRpb25zLCBjdXJyZW50UGF0aCwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZU9wdGlvbnNCYXNlZE9uQ29udGV4dCgpIHtcbiAgICAvLyBFYXJseSByZXR1cm4gaWYgbm8gZXhwcmVzc2lvbnMgdG8gZXZhbHVhdGVcbiAgICBpZiAodGhpcy5leHByZXNzaW9uRXZhbHVhdG9ycy5zaXplID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhg8J+UjSBbJHt0aGlzLm5vZGUoKS50eXBlfV0gRXZhbHVhdGluZyAke3RoaXMuZXhwcmVzc2lvbkV2YWx1YXRvcnMuc2l6ZX0gZXhwcmVzc2lvbnNgKTtcblxuICAgIGNvbnN0IHVwZGF0ZVByb21pc2VzID0gQXJyYXkuZnJvbSh0aGlzLmV4cHJlc3Npb25FdmFsdWF0b3JzKS5tYXAoYXN5bmMgKFtwYXRoLCBldmFsdWF0b3JdKSA9PiB7XG4gICAgICAvLyBDaGVjayBjYWNoZSBmaXJzdFxuICAgICAgY29uc3QgY2FjaGVkVmFsdWUgPSB0aGlzLmdldENhY2hlZEV4cHJlc3Npb25SZXN1bHQocGF0aCk7XG4gICAgICBpZiAoY2FjaGVkVmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYPCfkr4gWyR7dGhpcy5ub2RlKCkudHlwZX1dIFVzaW5nIGNhY2hlZCBleHByZXNzaW9uIHJlc3VsdCBmb3IgJyR7cGF0aH0nYCk7XG4gICAgICAgIHJldHVybiB7IHBhdGgsIG5ld1ZhbHVlOiBjYWNoZWRWYWx1ZSwgZnJvbUNhY2hlOiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIC8vIEV2YWx1YXRlIGV4cHJlc3Npb24gaWYgbm90IGNhY2hlZFxuICAgICAgY29uc3QgZXZhbFN0YXJ0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBhd2FpdCBldmFsdWF0b3IoKTtcbiAgICAgIGNvbnN0IGV2YWxUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSBldmFsU3RhcnRUaW1lO1xuXG4gICAgICAvLyBDaGVjayBpZiByZXN1bHQgaGFzIGFjdHVhbGx5IGNoYW5nZWQgdXNpbmcgTG9kYXNoIGlzRXF1YWxcbiAgICAgIGNvbnN0IGxhc3RWYWx1ZSA9IHRoaXMubGFzdEV4cHJlc3Npb25SZXN1bHRzLmdldChwYXRoKTtcbiAgICAgIGNvbnN0IGhhc0NoYW5nZWQgPSAhaXNFcXVhbChuZXdWYWx1ZSwgbGFzdFZhbHVlKTtcblxuICAgICAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgIC8vICAgYPCfk50gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEV4cHJlc3Npb24gJyR7cGF0aH0nIGV2YWx1YXRlZCBpbiAke2V2YWxUaW1lLnRvRml4ZWQoMil9bXMgLSB2YWx1ZSBjaGFuZ2VkYCxcbiAgICAgICAgLy8gKTtcbiAgICAgICAgLy8gQ2FjaGUgdGhlIHJlc3VsdCBhbmQgdHJhY2sgaXRcbiAgICAgICAgdGhpcy5zZXRDYWNoZWRFeHByZXNzaW9uUmVzdWx0KHBhdGgsIG5ld1ZhbHVlKTtcbiAgICAgICAgdGhpcy5sYXN0RXhwcmVzc2lvblJlc3VsdHMuc2V0KHBhdGgsIGNsb25lRGVlcChuZXdWYWx1ZSkpO1xuICAgICAgICByZXR1cm4geyBwYXRoLCBuZXdWYWx1ZSwgZnJvbUNhY2hlOiBmYWxzZSwgaGFzQ2hhbmdlZDogdHJ1ZSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXG4gICAgICAgIC8vICAgYPCfk50gWyR7dGhpcy5ub2RlKCkudHlwZX1dIEV4cHJlc3Npb24gJyR7cGF0aH0nIGV2YWx1YXRlZCBpbiAke2V2YWxUaW1lLnRvRml4ZWQoMil9bXMgLSB2YWx1ZSB1bmNoYW5nZWQsIHNraXBwaW5nIHVwZGF0ZWAsXG4gICAgICAgIC8vICk7XG4gICAgICAgIC8vIENhY2hlIHRoZSByZXN1bHQgYnV0IGRvbid0IHVwZGF0ZVxuICAgICAgICB0aGlzLnNldENhY2hlZEV4cHJlc3Npb25SZXN1bHQocGF0aCwgbmV3VmFsdWUpO1xuICAgICAgICB0aGlzLmxhc3RFeHByZXNzaW9uUmVzdWx0cy5zZXQocGF0aCwgY2xvbmVEZWVwKG5ld1ZhbHVlKSk7XG4gICAgICAgIHJldHVybiB7IHBhdGgsIG5ld1ZhbHVlLCBmcm9tQ2FjaGU6IGZhbHNlLCBoYXNDaGFuZ2VkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gV2FpdCBmb3IgYWxsIGV2YWx1YXRvcnMgdG8gY29tcGxldGVcbiAgICBjb25zdCB1cGRhdGVzID0gYXdhaXQgUHJvbWlzZS5hbGwodXBkYXRlUHJvbWlzZXMpO1xuXG4gICAgLy8gRmlsdGVyIHVwZGF0ZXMgdG8gb25seSBpbmNsdWRlIHRob3NlIHRoYXQgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkXG4gICAgY29uc3QgY2hhbmdlZFVwZGF0ZXMgPSB1cGRhdGVzLmZpbHRlcigodXBkYXRlKSA9PiB1cGRhdGUuaGFzQ2hhbmdlZCAhPT0gZmFsc2UpO1xuXG4gICAgLy8gQXBwbHkgdXBkYXRlcyB0byBtZXJnZWRPcHRpb25zIG9ubHkgZm9yIGNoYW5nZWQgdmFsdWVzXG4gICAgaWYgKGNoYW5nZWRVcGRhdGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMubWVyZ2VkT3B0aW9ucy51cGRhdGUoKG8pID0+IHtcbiAgICAgICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSB7IC4uLm8gfTtcbiAgICAgICAgY2hhbmdlZFVwZGF0ZXMuZm9yRWFjaCgoeyBwYXRoLCBuZXdWYWx1ZSB9KSA9PiB7XG4gICAgICAgICAgc2V0KHVwZGF0ZWRPcHRpb25zLCBwYXRoLCBuZXdWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdXBkYXRlZE9wdGlvbnM7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZUhpdHMgPSB1cGRhdGVzLmZpbHRlcigodXBkYXRlKSA9PiB1cGRhdGUuZnJvbUNhY2hlKS5sZW5ndGg7XG4gICAgY29uc3Qgc2tpcHBlZFVwZGF0ZXMgPSB1cGRhdGVzLmxlbmd0aCAtIGNoYW5nZWRVcGRhdGVzLmxlbmd0aDtcblxuICAgIC8vIGNvbnNvbGUubG9nKFxuICAgIC8vICAgYPCfk4sgWyR7dGhpcy5ub2RlKCkudHlwZX1dIEFwcGxpZWQgJHtjaGFuZ2VkVXBkYXRlcy5sZW5ndGh9IGV4cHJlc3Npb24gdXBkYXRlcyAoJHtjYWNoZUhpdHN9IGNhY2hlIGhpdHMsICR7c2tpcHBlZFVwZGF0ZXN9IHNraXBwZWQpYCxcbiAgICAvLyApO1xuICAgIHJldHVybiBjaGFuZ2VkVXBkYXRlcy5sZW5ndGg7XG4gIH1cblxuICBhc3luYyB1cGRhdGVWYWx1ZUJhc2VkT25Gb3JtdWxhKCkge1xuICAgIGlmICh0aGlzLm5vZGUoKS5mb3JtdWxhKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHRoaXMuZXZhbHVhdGVFeHByZXNzaW9uKHRoaXMubm9kZSgpLmZvcm11bGEhKTtcbiAgICAgIHRoaXMuaW5zdGFuY2Uuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVZpc2liaWxpdHkoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZSgpO1xuICAgIGNvbnN0IHZpc2liaWxpdHkgPSBub2RlLm9wdGlvbnM/LlsndmlzaWJsZSddIHx8IHRoaXMubWVyZ2VkT3B0aW9ucygpPy52aXNpYmxlO1xuXG4gICAgaWYgKHZpc2liaWxpdHkgPT09IHVuZGVmaW5lZCB8fCB2aXNpYmlsaXR5ID09PSBudWxsKSB7XG4gICAgICAvLyBEZWZhdWx0IHRvIHZpc2libGUgaWYgbm8gdmlzaWJpbGl0eSBvcHRpb24gaXMgc2V0XG4gICAgICB0aGlzLnNob3coKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2hvdWxkQmVWaXNpYmxlOiBib29sZWFuO1xuXG4gICAgaWYgKHR5cGVvZiB2aXNpYmlsaXR5ID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHNob3VsZEJlVmlzaWJsZSA9IHZpc2liaWxpdHk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmlzaWJpbGl0eSA9PT0gJ3N0cmluZycgJiYgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmlzRXhwcmVzc2lvbih2aXNpYmlsaXR5KSkge1xuICAgICAgLy8gRXZhbHVhdGUgZXhwcmVzc2lvbiBmb3IgdmlzaWJpbGl0eVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5ldmFsdWF0ZUV4cHJlc3Npb24odmlzaWJpbGl0eSk7XG4gICAgICAgIHNob3VsZEJlVmlzaWJsZSA9IEJvb2xlYW4ocmVzdWx0KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGV2YWx1YXRpbmcgdmlzaWJpbGl0eSBleHByZXNzaW9uOicsIGVycm9yKTtcbiAgICAgICAgc2hvdWxkQmVWaXNpYmxlID0gdHJ1ZTsgLy8gRGVmYXVsdCB0byB2aXNpYmxlIG9uIGVycm9yXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRyZWF0IG90aGVyIHZhbHVlcyBhcyB0cnV0aHkvZmFsc3lcbiAgICAgIHNob3VsZEJlVmlzaWJsZSA9IEJvb2xlYW4odmlzaWJpbGl0eSk7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZEJlVmlzaWJsZSkge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdygpIHtcbiAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKCkpIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlLnNldCh0cnVlKTtcbiAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZiAmJiB0aGlzLmNvbXBvbmVudFJlZi5sb2NhdGlvbikge1xuICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMuaXNWaXNpYmxlKCkpIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlLnNldChmYWxzZSk7XG4gICAgICBpZiAodGhpcy5jb21wb25lbnRSZWYgJiYgdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24pIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXZhbHVhdGVFeHByZXNzaW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2NvcGUgPSB0aGlzLmJ1aWxkRXhwcmVzc2lvblNjb3BlKCk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKHRlbXBsYXRlRXhwcmVzc2lvbiwgc2NvcGUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGV4cHJlc3Npb246JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRFeHByZXNzaW9uU2NvcGUoKTogQVhQRXhwcmVzc2lvbkV2YWx1YXRvclNjb3BlIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGV4dDogdGhpcy5nZXRDb250ZXh0U2NvcGUoKSxcbiAgICAgIGV2ZW50czogdGhpcy5nZXRFdmVudFNjb3BlKCksXG4gICAgICB3aWRnZXQ6IHRoaXMuZ2V0V2lkZ2V0U2NvcGUoKSxcbiAgICAgIG1ldGhvZHM6IHRoaXMuZ2V0RnVuY3Rpb25TY29wZSgpLFxuICAgICAgdmFyczogdGhpcy5nZXRWYXJpYWJsZXNTY29wZSgpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldENvbnRleHRTY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZXZhbDogKHBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICAvL1RPRE86IEhhbmRsZSBhcnJheSBpbmRleFxuICAgICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguc3RhcnRzV2l0aCgnPicpID8gYCR7dGhpcy5pbnN0YW5jZT8ucGFyZW50UGF0aCgpfS4ke3BhdGguc3Vic3RyaW5nKDEpfWAgOiBwYXRoO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY29udGV4dFNlcnZpY2UuZ2V0VmFsdWUoZnVsbFBhdGgpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9LFxuICAgICAgc2V0OiAocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHBhdGgsIHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBkYXRhOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLmRhdGEoKTtcbiAgICAgIH0sXG4gICAgICBpc0RpcnR5OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRleHRTZXJ2aWNlLmlzRGlydHkoKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXZlbnRTY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGV4dDogKHBhdGg/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub25Db250ZXh0Q2hhbmdlZC5waXBlKFxuICAgICAgICAgIGZpbHRlcigoYykgPT4ge1xuICAgICAgICAgICAgLy8gSWYgbm8gcGF0aCBmaWx0ZXIgc3BlY2lmaWVkLCBwYXNzIGFsbCBldmVudHNcbiAgICAgICAgICAgIGlmIChwYXRoID09IG51bGwgfHwgcGF0aCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFbnN1cmUgYy5wYXRoIGV4aXN0c1xuICAgICAgICAgICAgaWYgKCFjLnBhdGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUGF0dGVybjogXCJwcmVmaXgqXCIgLSBtYXRjaGVzIHBhdGhzIHRoYXQgc3RhcnQgd2l0aCBwcmVmaXhcbiAgICAgICAgICAgIGlmIChwYXRoLmVuZHNXaXRoKCcqJykpIHtcbiAgICAgICAgICAgICAgY29uc3QgcHJlZml4ID0gcGF0aC5zdWJzdHJpbmcoMCwgcGF0aC5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgICAgcmV0dXJuIGMucGF0aC5zdGFydHNXaXRoKHByZWZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQYXR0ZXJuOiBcIipzdWZmaXhcIiAtIG1hdGNoZXMgcGF0aHMgdGhhdCBlbmQgd2l0aCBzdWZmaXhcbiAgICAgICAgICAgIGVsc2UgaWYgKHBhdGguc3RhcnRzV2l0aCgnKicpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHN1ZmZpeCA9IHBhdGguc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgICByZXR1cm4gYy5wYXRoLmVuZHNXaXRoKHN1ZmZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBFeGFjdCBtYXRjaFxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIHJldHVybiBjLnBhdGggPT09IHBhdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZnJvbTogKGV2ZW50OiBzdHJpbmcpID0+IGdldCh0aGlzLmluc3RhbmNlLmFwaSgpLCBldmVudCksXG4gICAgICBsb2FkOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uTG9hZEV2ZW50LmFzT2JzZXJ2YWJsZSgpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXaWRnZXRTY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgY2FsbDogKG5hbWU6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5jYWxsKG5hbWUsIC4uLmFyZ3MpO1xuICAgICAgfSxcbiAgICAgIHNldFZhbHVlOiAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICBjbGVhcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmluc3RhbmNlLnNldFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICB9LFxuICAgICAgcmVmcmVzaDogKCkgPT4ge1xuICAgICAgICBjb25zdCByZWZyZXNoID0gKHRoaXMuaW5zdGFuY2UgYXMgYW55KT8uWydyZWZyZXNoJ107XG4gICAgICAgIGlmIChyZWZyZXNoICYmIHR5cGVvZiByZWZyZXNoID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgcmVmcmVzaC5iaW5kKHRoaXMuaW5zdGFuY2UpKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVPcHRpb25zQmFzZWRPbkNvbnRleHQoKTtcbiAgICAgICAgICB0aGlzLmFwcGx5T3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3V0cHV0OiAobmFtZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2Uub3V0cHV0KG5hbWUpO1xuICAgICAgfSxcbiAgICAgIGZpbmQ6IChpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkZXJTZXJ2aWNlLmdldFdpZGdldChpZCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGdldEZ1bmN0aW9uU2NvcGUoKTogeyBbbmFtZTogc3RyaW5nXTogRnVuY3Rpb24gfSB7XG4gICAgY29uc3Qgc2NvcGU6IHsgW25hbWU6IHN0cmluZ106IEZ1bmN0aW9uIH0gPSB7XG4gICAgICBzdW06ICh2YWx1ZXM6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gc3VtKHZhbHVlcyk7XG4gICAgICB9LFxuICAgICAgdHJhbnNsYXRlOiAodGV4dDogc3RyaW5nLCBvcHRpb25zPzogQVhUcmFuc2xhdGVPcHRpb25zKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlQXN5bmModGV4dCwgb3B0aW9ucyk7XG4gICAgICB9LFxuICAgICAgd2lkZ2V0SW5mbzogKG5hbWU6IHN0cmluZyk6IEFYUFdpZGdldENvbmZpZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLndpZGdldFNlcnZpY2UucmVzb2x2ZShuYW1lKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIEFkZCBjdXN0b20gZnVuY3Rpb25zIGZyb20gYnVpbGRlciBzZXJ2aWNlXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5idWlsZGVyU2VydmljZS5mdW5jdGlvbnMpLmZvckVhY2goKFtrZXksIGZuXSkgPT4ge1xuICAgICAgc2NvcGVba2V5XSA9ICguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNjb3BlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYXJpYWJsZXNTY29wZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBGdW5jdGlvbiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgZXZhbDogKHBhdGg6IHN0cmluZykgPT4gZ2V0KHRoaXMuYnVpbGRlclNlcnZpY2UudmFyaWFibGVzLCBwYXRoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhc3NpZ25UcmlnZ2VycygpIHtcbiAgICBjb25zdCBub2RlID0gdGhpcy5ub2RlKCk7XG4gICAgLy8gQ2hlY2sgbXVsdGlwbGUgcG9zc2libGUgbG9jYXRpb25zIGZvciB0cmlnZ2Vyc1xuICAgIGNvbnN0IHRyaWdnZXJzID0gbm9kZS50cmlnZ2VycyB8fCBub2RlLm9wdGlvbnM/LlsndHJpZ2dlcnMnXSB8fCB0aGlzLm1lcmdlZE9wdGlvbnMoKT8udHJpZ2dlcnM7XG5cbiAgICBpZiAoIXRyaWdnZXJzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIHRyaWdnZXJzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBldmVudCA9IGF3YWl0IHRoaXMuZXZhbHVhdGVUcmlnZ2VyKHRyaWdnZXIuZXZlbnQpO1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICBldmVudC5waXBlKHRoaXMudW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBleGVjID0gYXN5bmMgKGFjdGlvbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghaXNFbXB0eShhY3Rpb24pICYmIGlzU3RyaW5nKGFjdGlvbikpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmV2YWx1YXRlQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gQXJyYXkuaXNBcnJheSh0cmlnZ2VyLmFjdGlvbikgPyB0cmlnZ2VyLmFjdGlvbiA6IFt0cmlnZ2VyLmFjdGlvbl07XG4gICAgICAgICAgICBhY3Rpb25zLmZvckVhY2goYXN5bmMgKGE6IHN0cmluZykgPT4gYXdhaXQgZXhlYyhhKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFzc2lnbmluZyB0cmlnZ2VyOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlVHJpZ2dlcih0ZW1wbGF0ZUV4cHJlc3Npb246IHN0cmluZyk6IFByb21pc2U8T2JzZXJ2YWJsZTxhbnk+IHwgbnVsbD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzY29wZSA9IHRoaXMuYnVpbGRFeHByZXNzaW9uU2NvcGUoKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsdWF0ZSh0ZW1wbGF0ZUV4cHJlc3Npb24sIHNjb3BlKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgcmVzdWx0IGlzIGFuIE9ic2VydmFibGVcbiAgICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC5zdWJzY3JpYmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIHRyaWdnZXIgZXhwcmVzc2lvbjonLCBlcnJvcik7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV2YWx1YXRlQWN0aW9uKHRlbXBsYXRlRXhwcmVzc2lvbjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gdGhpcy5idWlsZEV4cHJlc3Npb25TY29wZSgpO1xuICAgICAgYXdhaXQgdGhpcy5leHByZXNzaW9uRXZhbHVhdG9yLmV2YWx1YXRlKHRlbXBsYXRlRXhwcmVzc2lvbiwgc2NvcGUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBjb25zb2xlLmVycm9yKCdFcnJvciBldmFsdWF0aW5nIGFjdGlvbiBleHByZXNzaW9uOicsIHRlbXBsYXRlRXhwcmVzc2lvbiwgZXJyb3IpO1xuICAgIH1cbiAgfVxufVxuIl19","import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { Inject, NgModule, Optional } from '@angular/core';\nimport { AXPWidgetColumnRendererComponent } from './widget-column-renderer';\nimport { AXPWidgetContainerComponent } from './widget-container.component';\nimport { AXPWidgetRegistryService } from './widget-registery.service';\nimport { AXPWidgetRendererDirective } from './widget-renderer.directive';\nimport * as i0 from \"@angular/core\";\nconst COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];\nexport class AXPWidgetCoreModule {\n static forRoot(config) {\n return {\n ngModule: AXPWidgetCoreModule,\n providers: [\n {\n provide: 'AXPWidgetCoreModuleFactory',\n useFactory: (registry) => async () => {\n await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);\n await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);\n },\n deps: [AXPWidgetRegistryService],\n multi: true,\n },\n ],\n };\n }\n static forChild(config) {\n return {\n ngModule: AXPWidgetCoreModule,\n providers: [\n {\n provide: 'AXPWidgetCoreModuleFactory',\n useFactory: (registry) => async () => {\n await Promise.all(config?.widgets?.map((w) => Promise.resolve(registry.register(w))) || []);\n await Promise.all(config?.extendedWidgets?.map((ew) => Promise.resolve(registry.extend(ew.parentName, ew.widget))) || []);\n },\n deps: [AXPWidgetRegistryService],\n multi: true,\n },\n ],\n };\n }\n /**\n * @ignore\n */\n constructor(instances) {\n instances?.forEach((f) => {\n f();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreModule, deps: [{ token: 'AXPWidgetCoreModuleFactory', optional: true }], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreModule, declarations: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective], imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule], exports: [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreModule, imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.12\", ngImport: i0, type: AXPWidgetCoreModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, PortalModule, AXSkeletonModule, CommonModule, AXTranslationModule],\n exports: [...COMPONENTS],\n declarations: [...COMPONENTS],\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: ['AXPWidgetCoreModuleFactory']\n }] }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQtY29yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUF1QixRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQVF6RSxNQUFNLFVBQVUsR0FBRyxDQUFDLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLDBCQUEwQixDQUFDLENBQUM7QUFPL0csTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW1DO1FBQ2hELE9BQU87WUFDTCxRQUFRLEVBQUUsbUJBQW1CO1lBQzdCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsNEJBQTRCO29CQUNyQyxVQUFVLEVBQUUsQ0FBQyxRQUFrQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRTt3QkFDN0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3dCQUU1RixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUN2RyxDQUFDO29CQUNKLENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsd0JBQXdCLENBQUM7b0JBQ2hDLEtBQUssRUFBRSxJQUFJO2lCQUNaO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBbUM7UUFDakQsT0FBTztZQUNMLFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsU0FBUyxFQUFFO2dCQUNUO29CQUNFLE9BQU8sRUFBRSw0QkFBNEI7b0JBQ3JDLFVBQVUsRUFBRSxDQUFDLFFBQWtDLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFO3dCQUM3RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7d0JBRTVGLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ3ZHLENBQUM7b0JBQ0osQ0FBQztvQkFDRCxJQUFJLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDaEMsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUE4RCxTQUFnQjtRQUM1RSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDdkIsQ0FBQyxFQUFFLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBaERVLG1CQUFtQixrQkE0Q0UsNEJBQTRCO2dIQTVDakQsbUJBQW1CLGlCQVBaLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLDBCQUEwQixhQUdqRyxZQUFZLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsYUFIdkUsMkJBQTJCLEVBQUUsZ0NBQWdDLEVBQUUsMEJBQTBCO2dIQU9oRyxtQkFBbUIsWUFKcEIsWUFBWSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsbUJBQW1COzs0RkFJOUUsbUJBQW1CO2tCQUwvQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixDQUFDO29CQUMxRixPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztvQkFDeEIsWUFBWSxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQzlCOzswQkE2Q2MsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFNrZWxldG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3NrZWxldG9uJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYUFdpZGdldENvbHVtblJlbmRlcmVyQ29tcG9uZW50IH0gZnJvbSAnLi93aWRnZXQtY29sdW1uLXJlbmRlcmVyJztcbmltcG9ydCB7IEFYUFdpZGdldENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vd2lkZ2V0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi93aWRnZXQtcmVnaXN0ZXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0UmVuZGVyZXJEaXJlY3RpdmUgfSBmcm9tICcuL3dpZGdldC1yZW5kZXJlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0Q29uZmlnLCBleHRlbmRlZFdpZGdldCB9IGZyb20gJy4vd2lkZ2V0LnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBBWFBXaWRnZXRDb3JlTW9kdWxlQ29uZmlncyB7XG4gIHdpZGdldHM/OiBBWFBXaWRnZXRDb25maWdbXTtcbiAgZXh0ZW5kZWRXaWRnZXRzPzogZXh0ZW5kZWRXaWRnZXRbXTtcbn1cblxuY29uc3QgQ09NUE9ORU5UUyA9IFtBWFBXaWRnZXRDb250YWluZXJDb21wb25lbnQsIEFYUFdpZGdldENvbHVtblJlbmRlcmVyQ29tcG9uZW50LCBBWFBXaWRnZXRSZW5kZXJlckRpcmVjdGl2ZV07XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFBvcnRhbE1vZHVsZSwgQVhTa2VsZXRvbk1vZHVsZSwgQ29tbW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uTW9kdWxlXSxcbiAgZXhwb3J0czogWy4uLkNPTVBPTkVOVFNdLFxuICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRTXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQV2lkZ2V0Q29yZU1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IEFYUFdpZGdldENvcmVNb2R1bGVDb25maWdzKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWFBXaWRnZXRDb3JlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhQV2lkZ2V0Q29yZU1vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChjb25maWc/LndpZGdldHM/Lm1hcCgodykgPT4gUHJvbWlzZS5yZXNvbHZlKHJlZ2lzdHJ5LnJlZ2lzdGVyKHcpKSkgfHwgW10pO1xuXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY29uZmlnPy5leHRlbmRlZFdpZGdldHM/Lm1hcCgoZXcpID0+IFByb21pc2UucmVzb2x2ZShyZWdpc3RyeS5leHRlbmQoZXcucGFyZW50TmFtZSwgZXcud2lkZ2V0KSkpIHx8IFtdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZvckNoaWxkKGNvbmZpZz86IEFYUFdpZGdldENvcmVNb2R1bGVDb25maWdzKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWFBXaWRnZXRDb3JlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBWFBXaWRnZXRDb3JlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiAnQVhQV2lkZ2V0Q29yZU1vZHVsZUZhY3RvcnknLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IChyZWdpc3RyeTogQVhQV2lkZ2V0UmVnaXN0cnlTZXJ2aWNlKSA9PiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChjb25maWc/LndpZGdldHM/Lm1hcCgodykgPT4gUHJvbWlzZS5yZXNvbHZlKHJlZ2lzdHJ5LnJlZ2lzdGVyKHcpKSkgfHwgW10pO1xuXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgY29uZmlnPy5leHRlbmRlZFdpZGdldHM/Lm1hcCgoZXcpID0+IFByb21pc2UucmVzb2x2ZShyZWdpc3RyeS5leHRlbmQoZXcucGFyZW50TmFtZSwgZXcud2lkZ2V0KSkpIHx8IFtdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlcHM6IFtBWFBXaWRnZXRSZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoJ0FYUFdpZGdldENvcmVNb2R1bGVGYWN0b3J5JykgaW5zdGFuY2VzOiBhbnlbXSkge1xuICAgIGluc3RhbmNlcz8uZm9yRWFjaCgoZikgPT4ge1xuICAgICAgZigpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","export class AXPPropertyEditorHelper {\n static expandShorthand(values) {\n switch (values.length) {\n case 1:\n return [values[0], values[0], values[0], values[0]];\n case 2:\n return [values[0], values[1], values[0], values[1]];\n case 3:\n return [values[0], values[1], values[2], values[1]];\n case 4:\n return values;\n default:\n throw new Error(`Invalid shorthand value count. Input: ${values}`);\n }\n }\n static condenseShorthand(values) {\n if (values.length !== 4) {\n throw new Error('Expected 4 values for condensation.');\n }\n if (values[0] === values[1] && values[1] === values[2] && values[2] === values[3]) {\n return `${values[0]}`;\n }\n else if (values[0] === values[2] && values[1] === values[3]) {\n return `${values[0]} ${values[1]}`;\n }\n else if (values[1] === values[3]) {\n return `${values[0]} ${values[1]} ${values[2]}`;\n }\n else {\n return `${values[0]} ${values[1]} ${values[2]} ${values[3]}`;\n }\n }\n static parseSides(input) {\n const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n return { top: values[0], right: values[1], bottom: values[2], left: values[3] };\n }\n static parseSidesWithUnits(input) {\n const values = this.expandShorthand(input.match(/(?:rgb\\([^)]+\\)|[^ ]+)/g)?.map((value) => value.trim()) || []);\n return {\n top: AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n right: AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n bottom: AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n left: AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n };\n }\n static parseCorners(input) {\n const values = this.expandShorthand(input.split(' ').map((value) => value.trim()));\n return {\n 'top-left': AXPPropertyEditorHelper.getValueWithUnit(values[0]).value,\n 'top-right': AXPPropertyEditorHelper.getValueWithUnit(values[1]).value,\n 'bottom-left': AXPPropertyEditorHelper.getValueWithUnit(values[2]).value,\n 'bottom-right': AXPPropertyEditorHelper.getValueWithUnit(values[3]).value,\n };\n }\n static parseSpacingBox(input) {\n return {\n margin: this.parseSidesWithUnits(input.margin),\n padding: this.parseSidesWithUnits(input.padding),\n };\n }\n static parseBorderBox(input) {\n return {\n width: this.parseSidesWithUnits(input.width),\n radius: this.parseCorners(input.radius),\n color: this.parseSides(input.color),\n style: this.parseSides(input.style),\n };\n }\n static parseSpacingBoxReverse(input, units) {\n const format = (value, unit) => `${value}${unit}`;\n return {\n margin: AXPPropertyEditorHelper.condenseShorthand([\n format(input.margin.top, units.margin.top),\n format(input.margin.right, units.margin.right),\n format(input.margin.bottom, units.margin.bottom),\n format(input.margin.left, units.margin.left),\n ]),\n padding: AXPPropertyEditorHelper.condenseShorthand([\n format(input.padding.top, units.padding.top),\n format(input.padding.right, units.padding.right),\n format(input.padding.bottom, units.padding.bottom),\n format(input.padding.left, units.padding.left),\n ]),\n };\n }\n static parseBorderBoxReverse(input, units) {\n const format = (value, unit) => `${value}${unit}`;\n return {\n width: AXPPropertyEditorHelper.condenseShorthand([\n format(input.width.top, units.width.top),\n format(input.width.right, units.width.right),\n format(input.width.bottom, units.width.bottom),\n format(input.width.left, units.width.left),\n ]),\n radius: AXPPropertyEditorHelper.condenseShorthand([\n format(input.radius['top-left'], units.radius['top-left']),\n format(input.radius['top-right'], units.radius['top-right']),\n format(input.radius['bottom-right'], units.radius['bottom-right']),\n format(input.radius['bottom-left'], units.radius['bottom-left']),\n ]),\n color: AXPPropertyEditorHelper.condenseShorthand([\n `${input.color.top}${units.color.top}`,\n `${input.color.right}${units.color.right}`,\n `${input.color.bottom}${units.color.bottom}`,\n `${input.color.left}${units.color.left}`,\n ]),\n style: AXPPropertyEditorHelper.condenseShorthand([\n `${input.style.top}${units.style.top}`,\n `${input.style.right}${units.style.right}`,\n `${input.style.bottom}${units.style.bottom}`,\n `${input.style.left}${units.style.left}`,\n ]),\n };\n }\n static getValueWithUnit(input) {\n if (typeof input === 'number')\n return { value: input, unit: 'px' };\n if (input === 'auto')\n return { value: 0, unit: 'px' };\n const match = input.match(/^([0-9.]+)([a-z%]*)$/i);\n if (!match)\n throw new Error(`Invalid unit format: ${input}`);\n return { value: parseFloat(match[1]), unit: match[2] || '' };\n }\n static getValueFromUnit(value, unit) {\n return unit ? `${value}${unit}` : `${value}`;\n }\n static parseGap(gap) {\n const parts = gap.split(/\\s+/);\n const match = parts[0].match(/^(\\d+\\.?\\d*)([a-z%]+)$/);\n if (!match) {\n throw new Error('Invalid gap format');\n }\n const [, xValue, unit] = match;\n let yValue = parseFloat(xValue);\n if (parts.length === 2) {\n const secondMatch = parts[1].match(/^(\\d+\\.?\\d*)[a-z%]+$/);\n if (!secondMatch) {\n throw new Error('Invalid gap format');\n }\n yValue = parseFloat(secondMatch[1]);\n }\n return {\n values: {\n x: parseFloat(xValue),\n y: yValue,\n },\n unit,\n };\n }\n static parseGridTemplate(gridTemplate) {\n const match = gridTemplate.match(/^repeat\\((\\d+),\\s*(?:1fr|auto|minmax\\([^)]*\\))\\)$/);\n if (!match) {\n throw new Error(\"Invalid grid template format. Expected 'repeat(N, 1fr|auto|minmax(...))'.\");\n }\n return parseInt(match[1], 10);\n }\n static createGridTemplate(repetitionCount) {\n if (repetitionCount <= 0) {\n throw new Error('Repetition count must be a positive integer.');\n }\n return `repeat(${repetitionCount}, 1fr)`;\n }\n}\nexport function findNonEmptyBreakpoints(values) {\n const breakpoints = ['default', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'];\n const nonEmptyBreakpoints = [];\n for (const breakpoint of breakpoints) {\n if (values[breakpoint] !== undefined) {\n nonEmptyBreakpoints.push(breakpoint);\n }\n }\n return nonEmptyBreakpoints;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktZWRpdG9yLmhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9saWIvaGVscGVyL3Byb3BlcnR5LWVkaXRvci5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxPQUFPLHVCQUF1QjtJQUMxQixNQUFNLENBQUMsZUFBZSxDQUFtQixNQUFXO1FBQzFELFFBQVEsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLEtBQUssQ0FBQztnQkFDSixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxLQUFLLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RELEtBQUssQ0FBQztnQkFDSixPQUFPLE1BQU0sQ0FBQztZQUNoQjtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDO0lBRU8sTUFBTSxDQUFDLGlCQUFpQixDQUFJLE1BQVc7UUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hC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Q0FBQztJQUVELE9BQU8sbUJBQW1CLENBQUM7QUFDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYUEJvcmRlckJveCxcbiAgQVhQQm9yZGVyQm94U3RyaW5nLFxuICBBWFBCcmVha3BvaW50cyxcbiAgQVhQQnJlYWtwb2ludFZhbHVlcyxcbiAgQVhQUHJvcGVydHlDb3JuZXJzLFxuICBBWFBQcm9wZXJ0eVNpZGVzLFxuICBBWFBTcGFjaW5nQm94LFxuICBBWFBTcGFjaW5nQm94U3RyaW5nLFxufSBmcm9tICcuL3Byb3BlcnR5LWVkaXRvci50eXBlJztcblxuZXhwb3J0IGNsYXNzIEFYUFByb3BlcnR5RWRpdG9ySGVscGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgZXhwYW5kU2hvcnRoYW5kPFQgZXh0ZW5kcyBzdHJpbmc+KHZhbHVlczogVFtdKTogVFtdIHtcbiAgICBzd2l0Y2ggKHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmV0dXJuIFt2YWx1ZXNbMF0sIHZhbHVlc1swXSwgdmFsdWVzWzBdLCB2YWx1ZXNbMF1dO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gW3ZhbHVlc1swXSwgdmFsdWVzWzFdLCB2YWx1ZXNbMF0sIHZhbHVlc1sxXV07XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHJldHVybiBbdmFsdWVzWzBdLCB2YWx1ZXNbMV0sIHZhbHVlc1syXSwgdmFsdWVzWzFdXTtcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzaG9ydGhhbmQgdmFsdWUgY291bnQuIElucHV0OiAke3ZhbHVlc31gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb25kZW5zZVNob3J0aGFuZDxUPih2YWx1ZXM6IFRbXSk6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggIT09IDQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgNCB2YWx1ZXMgZm9yIGNvbmRlbnNhdGlvbi4nKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWVzWzBdID09PSB2YWx1ZXNbMV0gJiYgdmFsdWVzWzFdID09PSB2YWx1ZXNbMl0gJiYgdmFsdWVzWzJdID09PSB2YWx1ZXNbM10pIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZXNbMF19YDtcbiAgICB9IGVsc2UgaWYgKHZhbHVlc1swXSA9PT0gdmFsdWVzWzJdICYmIHZhbHVlc1sxXSA9PT0gdmFsdWVzWzNdKSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWVzWzBdfSAke3ZhbHVlc1sxXX1gO1xuICAgIH0gZWxzZSBpZiAodmFsdWVzWzFdID09PSB2YWx1ZXNbM10pIHtcbiAgICAgIHJldHVybiBgJHt2YWx1ZXNbMF19ICR7dmFsdWVzWzFdfSAke3ZhbHVlc1syXX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYCR7dmFsdWVzWzBdfSAke3ZhbHVlc1sxXX0gJHt2YWx1ZXNbMl19ICR7dmFsdWVzWzNdfWA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VTaWRlcyhpbnB1dDogc3RyaW5nKTogQVhQUHJvcGVydHlTaWRlcyB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5leHBhbmRTaG9ydGhhbmQoaW5wdXQubWF0Y2goLyg/OnJnYlxcKFteKV0rXFwpfFteIF0rKS9nKT8ubWFwKCh2YWx1ZSkgPT4gdmFsdWUudHJpbSgpKSB8fCBbXSk7XG4gICAgcmV0dXJuIHsgdG9wOiB2YWx1ZXNbMF0sIHJpZ2h0OiB2YWx1ZXNbMV0sIGJvdHRvbTogdmFsdWVzWzJdLCBsZWZ0OiB2YWx1ZXNbM10gfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlU2lkZXNXaXRoVW5pdHMoaW5wdXQ6IHN0cmluZyk6IEFYUFByb3BlcnR5U2lkZXM8bnVtYmVyPiB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy5leHBhbmRTaG9ydGhhbmQoaW5wdXQubWF0Y2goLyg/OnJnYlxcKFteKV0rXFwpfFteIF0rKS9nKT8ubWFwKCh2YWx1ZSkgPT4gdmFsdWUudHJpbSgpKSB8fCBbXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvcDogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMF0pLnZhbHVlLFxuICAgICAgcmlnaHQ6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzFdKS52YWx1ZSxcbiAgICAgIGJvdHRvbTogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMl0pLnZhbHVlLFxuICAgICAgbGVmdDogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbM10pLnZhbHVlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUNvcm5lcnMoaW5wdXQ6IHN0cmluZyk6IEFYUFByb3BlcnR5Q29ybmVyczxudW1iZXI+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLmV4cGFuZFNob3J0aGFuZChpbnB1dC5zcGxpdCgnICcpLm1hcCgodmFsdWUpID0+IHZhbHVlLnRyaW0oKSkpO1xuICAgIHJldHVybiB7XG4gICAgICAndG9wLWxlZnQnOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5nZXRWYWx1ZVdpdGhVbml0KHZhbHVlc1swXSkudmFsdWUsXG4gICAgICAndG9wLXJpZ2h0JzogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMV0pLnZhbHVlLFxuICAgICAgJ2JvdHRvbS1sZWZ0JzogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuZ2V0VmFsdWVXaXRoVW5pdCh2YWx1ZXNbMl0pLnZhbHVlLFxuICAgICAgJ2JvdHRvbS1yaWdodCc6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmdldFZhbHVlV2l0aFVuaXQodmFsdWVzWzNdKS52YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZVNwYWNpbmdCb3goaW5wdXQ6IEFYUFNwYWNpbmdCb3hTdHJpbmcpOiBBWFBTcGFjaW5nQm94PG51bWJlcj4ge1xuICAgIHJldHVybiB7XG4gICAgICBtYXJnaW46IHRoaXMucGFyc2VTaWRlc1dpdGhVbml0cyhpbnB1dC5tYXJnaW4pLFxuICAgICAgcGFkZGluZzogdGhpcy5wYXJzZVNpZGVzV2l0aFVuaXRzKGlucHV0LnBhZGRpbmcpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHBhcnNlQm9yZGVyQm94KGlucHV0OiBBWFBCb3JkZXJCb3hTdHJpbmcpOiBBWFBCb3JkZXJCb3g8bnVtYmVyIHwgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB0aGlzLnBhcnNlU2lkZXNXaXRoVW5pdHMoaW5wdXQud2lkdGgpLFxuICAgICAgcmFkaXVzOiB0aGlzLnBhcnNlQ29ybmVycyhpbnB1dC5yYWRpdXMpLFxuICAgICAgY29sb3I6IHRoaXMucGFyc2VTaWRlcyhpbnB1dC5jb2xvciksXG4gICAgICBzdHlsZTogdGhpcy5wYXJzZVNpZGVzKGlucHV0LnN0eWxlKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZVNwYWNpbmdCb3hSZXZlcnNlKFxuICAgIGlucHV0OiBBWFBTcGFjaW5nQm94PG51bWJlcj4sXG4gICAgdW5pdHM6IEFYUFNwYWNpbmdCb3g8c3RyaW5nPixcbiAgKTogQVhQU3BhY2luZ0JveFN0cmluZyB7XG4gICAgY29uc3QgZm9ybWF0ID0gKHZhbHVlOiBudW1iZXIsIHVuaXQ6IHN0cmluZykgPT4gYCR7dmFsdWV9JHt1bml0fWA7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hcmdpbjogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuY29uZGVuc2VTaG9ydGhhbmQoW1xuICAgICAgICBmb3JtYXQoaW5wdXQubWFyZ2luLnRvcCwgdW5pdHMubWFyZ2luLnRvcCksXG4gICAgICAgIGZvcm1hdChpbnB1dC5tYXJnaW4ucmlnaHQsIHVuaXRzLm1hcmdpbi5yaWdodCksXG4gICAgICAgIGZvcm1hdChpbnB1dC5tYXJnaW4uYm90dG9tLCB1bml0cy5tYXJnaW4uYm90dG9tKSxcbiAgICAgICAgZm9ybWF0KGlucHV0Lm1hcmdpbi5sZWZ0LCB1bml0cy5tYXJnaW4ubGVmdCksXG4gICAgICBdKSxcbiAgICAgIHBhZGRpbmc6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgZm9ybWF0KGlucHV0LnBhZGRpbmcudG9wLCB1bml0cy5wYWRkaW5nLnRvcCksXG4gICAgICAgIGZvcm1hdChpbnB1dC5wYWRkaW5nLnJpZ2h0LCB1bml0cy5wYWRkaW5nLnJpZ2h0KSxcbiAgICAgICAgZm9ybWF0KGlucHV0LnBhZGRpbmcuYm90dG9tLCB1bml0cy5wYWRkaW5nLmJvdHRvbSksXG4gICAgICAgIGZvcm1hdChpbnB1dC5wYWRkaW5nLmxlZnQsIHVuaXRzLnBhZGRpbmcubGVmdCksXG4gICAgICBdKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUJvcmRlckJveFJldmVyc2UoXG4gICAgaW5wdXQ6IEFYUEJvcmRlckJveDxudW1iZXIgfCBzdHJpbmc+LFxuICAgIHVuaXRzOiBBWFBCb3JkZXJCb3g8c3RyaW5nPixcbiAgKTogQVhQQm9yZGVyQm94U3RyaW5nIHtcbiAgICBjb25zdCBmb3JtYXQgPSAodmFsdWU6IG51bWJlciB8IHN0cmluZywgdW5pdDogc3RyaW5nKSA9PiBgJHt2YWx1ZX0ke3VuaXR9YDtcblxuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuY29uZGVuc2VTaG9ydGhhbmQoW1xuICAgICAgICBmb3JtYXQoaW5wdXQud2lkdGgudG9wLCB1bml0cy53aWR0aC50b3ApLFxuICAgICAgICBmb3JtYXQoaW5wdXQud2lkdGgucmlnaHQsIHVuaXRzLndpZHRoLnJpZ2h0KSxcbiAgICAgICAgZm9ybWF0KGlucHV0LndpZHRoLmJvdHRvbSwgdW5pdHMud2lkdGguYm90dG9tKSxcbiAgICAgICAgZm9ybWF0KGlucHV0LndpZHRoLmxlZnQsIHVuaXRzLndpZHRoLmxlZnQpLFxuICAgICAgXSksXG4gICAgICByYWRpdXM6IEFYUFByb3BlcnR5RWRpdG9ySGVscGVyLmNvbmRlbnNlU2hvcnRoYW5kKFtcbiAgICAgICAgZm9ybWF0KGlucHV0LnJhZGl1c1sndG9wLWxlZnQnXSwgdW5pdHMucmFkaXVzWyd0b3AtbGVmdCddKSxcbiAgICAgICAgZm9ybWF0KGlucHV0LnJhZGl1c1sndG9wLXJpZ2h0J10sIHVuaXRzLnJhZGl1c1sndG9wLXJpZ2h0J10pLFxuICAgICAgICBmb3JtYXQoaW5wdXQucmFkaXVzWydib3R0b20tcmlnaHQnXSwgdW5pdHMucmFkaXVzWydib3R0b20tcmlnaHQnXSksXG4gICAgICAgIGZvcm1hdChpbnB1dC5yYWRpdXNbJ2JvdHRvbS1sZWZ0J10sIHVuaXRzLnJhZGl1c1snYm90dG9tLWxlZnQnXSksXG4gICAgICBdKSxcbiAgICAgIGNvbG9yOiBBWFBQcm9wZXJ0eUVkaXRvckhlbHBlci5jb25kZW5zZVNob3J0aGFuZChbXG4gICAgICAgIGAke2lucHV0LmNvbG9yLnRvcH0ke3VuaXRzLmNvbG9yLnRvcH1gLFxuICAgICAgICBgJHtpbnB1dC5jb2xvci5yaWdodH0ke3VuaXRzLmNvbG9yLnJpZ2h0fWAsXG4gICAgICAgIGAke2lucHV0LmNvbG9yLmJvdHRvbX0ke3VuaXRzLmNvbG9yLmJvdHRvbX1gLFxuICAgICAgICBgJHtpbnB1dC5jb2xvci5sZWZ0fSR7dW5pdHMuY29sb3IubGVmdH1gLFxuICAgICAgXSksXG4gICAgICBzdHlsZTogQVhQUHJvcGVydHlFZGl0b3JIZWxwZXIuY29uZGVuc2VTaG9ydGhhbmQoW1xuICAgICAgICBgJHtpbnB1dC5zdHlsZS50b3B9JHt1bml0cy5zdHlsZS50b3B9YCxcbiAgICAgICAgYCR7aW5wdXQuc3R5bGUucmlnaHR9JHt1bml0cy5zdHlsZS5yaWdodH1gLFxuICAgICAgICBgJHtpbnB1dC5zdHlsZS5ib3R0b219JHt1bml0cy5zdHlsZS5ib3R0b219YCxcbiAgICAgICAgYCR7aW5wdXQuc3R5bGUubGVmdH0ke3VuaXRzLnN0eWxlLmxlZnR9YCxcbiAgICAgIF0pLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFZhbHVlV2l0aFVuaXQoaW5wdXQ6IHN0cmluZyB8IG51bWJlcik6IHsgdmFsdWU6IG51bWJlcjsgdW5pdDogc3RyaW5nIH0ge1xuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdudW1iZXInKSByZXR1cm4geyB2YWx1ZTogaW5wdXQsIHVuaXQ6ICdweCcgfTtcbiAgICBpZiAoaW5wdXQgPT09ICdhdXRvJykgcmV0dXJuIHsgdmFsdWU6IDAsIHVuaXQ6ICdweCcgfTtcblxuICAgIGNvbnN0IG1hdGNoID0gaW5wdXQubWF0Y2goL14oWzAtOS5dKykoW2EteiVdKikkL2kpO1xuICAgIGlmICghbWF0Y2gpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0IGZvcm1hdDogJHtpbnB1dH1gKTtcblxuICAgIHJldHVybiB7IHZhbHVlOiBwYXJzZUZsb2F0KG1hdGNoWzFdKSwgdW5pdDogbWF0Y2hbMl0gfHwgJycgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VmFsdWVGcm9tVW5pdCh2YWx1ZTogbnVtYmVyLCB1bml0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB1bml0ID8gYCR7dmFsdWV9JHt1bml0fWAgOiBgJHt2YWx1ZX1gO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBwYXJzZUdhcChnYXA6IHN0cmluZyk6IHsgdmFsdWVzOiBSZWNvcmQ8J3gnIHwgJ3knLCBudW1iZXI+OyB1bml0OiBzdHJpbmcgfSB7XG4gICAgY29uc3QgcGFydHMgPSBnYXAuc3BsaXQoL1xccysvKTtcbiAgICBjb25zdCBtYXRjaCA9IHBhcnRzWzBdLm1hdGNoKC9eKFxcZCtcXC4/XFxkKikoW2EteiVdKykkLyk7XG4gICAgaWYgKCFtYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGdhcCBmb3JtYXQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBbLCB4VmFsdWUsIHVuaXRdID0gbWF0Y2g7XG4gICAgbGV0IHlWYWx1ZSA9IHBhcnNlRmxvYXQoeFZhbHVlKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID09PSAyKSB7XG4gICAgICBjb25zdCBzZWNvbmRNYXRjaCA9IHBhcnRzWzFdLm1hdGNoKC9eKFxcZCtcXC4/XFxkKilbYS16JV0rJC8pO1xuICAgICAgaWYgKCFzZWNvbmRNYXRjaCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZ2FwIGZvcm1hdCcpO1xuICAgICAgfVxuICAgICAgeVZhbHVlID0gcGFyc2VGbG9hdChzZWNvbmRNYXRjaFsxXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlczoge1xuICAgICAgICB4OiBwYXJzZUZsb2F0KHhWYWx1ZSksXG4gICAgICAgIHk6IHlWYWx1ZSxcbiAgICAgIH0sXG4gICAgICB1bml0LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHBhcnNlR3JpZFRlbXBsYXRlKGdyaWRUZW1wbGF0ZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBjb25zdCBtYXRjaCA9IGdyaWRUZW1wbGF0ZS5tYXRjaCgvXnJlcGVhdFxcKChcXGQrKSxcXHMqKD86MWZyfGF1dG98bWlubWF4XFwoW14pXSpcXCkpXFwpJC8pO1xuICAgIGlmICghbWF0Y2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JpZCB0ZW1wbGF0ZSBmb3JtYXQuIEV4cGVjdGVkICdyZXBlYXQoTiwgMWZyfGF1dG98bWlubWF4KC4uLikpJy5cIik7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUludChtYXRjaFsxXSwgMTApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVHcmlkVGVtcGxhdGUocmVwZXRpdGlvbkNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChyZXBldGl0aW9uQ291bnQgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXBldGl0aW9uIGNvdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicpO1xuICAgIH1cbiAgICByZXR1cm4gYHJlcGVhdCgke3JlcGV0aXRpb25Db3VudH0sIDFmcilgO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTm9uRW1wdHlCcmVha3BvaW50czxUPih2YWx1ZXM6IEFYUEJyZWFrcG9pbnRWYWx1ZXM8VD4pOiBBWFBCcmVha3BvaW50c1tdIHtcbiAgY29uc3QgYnJlYWtwb2ludHM6IEFYUEJyZWFrcG9pbnRzW10gPSBbJ2RlZmF1bHQnLCAnc20nLCAnbWQnLCAnbGcnLCAneGwnLCAnMnhsJywgJzN4bCddO1xuICBjb25zdCBub25FbXB0eUJyZWFrcG9pbnRzOiBBWFBCcmVha3BvaW50c1tdID0gW107XG5cbiAgZm9yIChjb25zdCBicmVha3BvaW50IG9mIGJyZWFrcG9pbnRzKSB7XG4gICAgaWYgKHZhbHVlc1ticmVha3BvaW50XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBub25FbXB0eUJyZWFrcG9pbnRzLnB1c2goYnJlYWtwb2ludCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vbkVtcHR5QnJlYWtwb2ludHM7XG59XG4iXX0=","export const AXP_WIDGETS_LAYOUT_CATEGORY = {\n name: 'layout',\n order: 1,\n title: 'Layout',\n};\nexport const AXP_WIDGETS_EDITOR_CATEGORY = {\n name: 'editor',\n order: 2,\n title: 'Editors',\n};\nexport const AXP_WIDGETS_ACTION_CATEGORY = {\n name: 'action',\n order: 3,\n title: 'Action',\n};\nexport const AXP_WIDGETS_ADVANCE_CATEGORY = {\n name: 'advance',\n order: 4,\n title: 'Advance',\n};\nexport const AXP_WIDGETS_CATEGORIES = [\n AXP_WIDGETS_LAYOUT_CATEGORY,\n AXP_WIDGETS_EDITOR_CATEGORY,\n AXP_WIDGETS_ACTION_CATEGORY,\n AXP_WIDGETS_ADVANCE_CATEGORY,\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNhdGVnb3JpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dC93aWRnZXQtY29yZS9zcmMvbGliL3dpZGdldC1jYXRlZ29yaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFzQjtJQUM1RCxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLFFBQVE7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFzQjtJQUM1RCxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLFNBQVM7Q0FDakIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFzQjtJQUM1RCxJQUFJLEVBQUUsUUFBUTtJQUNkLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLFFBQVE7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFzQjtJQUM3RCxJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxDQUFDO0lBQ1IsS0FBSyxFQUFFLFNBQVM7Q0FDakIsQ0FBQztBQUlGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF3QjtJQUN6RCwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQiw0QkFBNEI7Q0FDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQVhQV2lkZ2V0Q2F0ZWdvcnkge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG9yZGVyOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUU19MQVlPVVRfQ0FURUdPUlk6IEFYUFdpZGdldENhdGVnb3J5ID0ge1xuICBuYW1lOiAnbGF5b3V0JyxcbiAgb3JkZXI6IDEsXG4gIHRpdGxlOiAnTGF5b3V0Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBBWFBfV0lER0VUU19FRElUT1JfQ0FURUdPUlk6IEFYUFdpZGdldENhdGVnb3J5ID0ge1xuICBuYW1lOiAnZWRpdG9yJyxcbiAgb3JkZXI6IDIsXG4gIHRpdGxlOiAnRWRpdG9ycycsXG59O1xuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVFNfQUNUSU9OX0NBVEVHT1JZOiBBWFBXaWRnZXRDYXRlZ29yeSA9IHtcbiAgbmFtZTogJ2FjdGlvbicsXG4gIG9yZGVyOiAzLFxuICB0aXRsZTogJ0FjdGlvbicsXG59O1xuXG5leHBvcnQgY29uc3QgQVhQX1dJREdFVFNfQURWQU5DRV9DQVRFR09SWTogQVhQV2lkZ2V0Q2F0ZWdvcnkgPSB7XG4gIG5hbWU6ICdhZHZhbmNlJyxcbiAgb3JkZXI6IDQsXG4gIHRpdGxlOiAnQWR2YW5jZScsXG59O1xuXG5cblxuZXhwb3J0IGNvbnN0IEFYUF9XSURHRVRTX0NBVEVHT1JJRVM6IEFYUFdpZGdldENhdGVnb3J5W10gPSBbXG4gIEFYUF9XSURHRVRTX0xBWU9VVF9DQVRFR09SWSxcbiAgQVhQX1dJREdFVFNfRURJVE9SX0NBVEVHT1JZLFxuICBBWFBfV0lER0VUU19BQ1RJT05fQ0FURUdPUlksXG4gIEFYUF9XSURHRVRTX0FEVkFOQ0VfQ0FURUdPUlksXG5dO1xuIl19","export var AXPWidgetGroupEnum;\n(function (AXPWidgetGroupEnum) {\n AXPWidgetGroupEnum[\"FormElement\"] = \"form-element\";\n AXPWidgetGroupEnum[\"DashboardWidget\"] = \"dashboard-widget\";\n AXPWidgetGroupEnum[\"FormTemplate\"] = \"form-template\";\n AXPWidgetGroupEnum[\"PropertyEditor\"] = \"property-editor\";\n AXPWidgetGroupEnum[\"MetaData\"] = \"meta-data\";\n AXPWidgetGroupEnum[\"SettingWidget\"] = \"setting-widget\";\n AXPWidgetGroupEnum[\"EntityWidget\"] = \"entity-widget\";\n AXPWidgetGroupEnum[\"UtilityWidget\"] = \"utility-widget\";\n})(AXPWidgetGroupEnum || (AXPWidgetGroupEnum = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWdyb3VwLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXQvd2lkZ2V0LWNvcmUvc3JjL2xpYi93aWRnZXQtZ3JvdXAudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxDQUFOLElBQVksa0JBU1g7QUFURCxXQUFZLGtCQUFrQjtJQUM1QixrREFBNEIsQ0FBQTtJQUM1QiwwREFBb0MsQ0FBQTtJQUNwQyxvREFBOEIsQ0FBQTtJQUM5Qix3REFBa0MsQ0FBQTtJQUNsQyw0Q0FBc0IsQ0FBQTtJQUN0QixzREFBZ0MsQ0FBQTtJQUNoQyxvREFBOEIsQ0FBQTtJQUM5QixzREFBZ0MsQ0FBQTtBQUNsQyxDQUFDLEVBVFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQVM3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEFYUFdpZGdldEdyb3VwID1cbiAgJ2Zvcm0tZWxlbWVudCcgfFxuICAnZGFzaGJvYXJkLXdpZGdldCcgfFxuICAnZm9ybS10ZW1wbGF0ZScgfFxuICAncHJvcGVydHktZWRpdG9yJyB8XG4gICdtZXRhLWRhdGEnIHxcbiAgJ3NldHRpbmctd2lkZ2V0JyB8XG4gICdlbnRpdHktd2lkZ2V0JyB8XG4gICd1dGlsaXR5LXdpZGdldCc7XG5cblxuZXhwb3J0IGVudW0gQVhQV2lkZ2V0R3JvdXBFbnVtIHtcbiAgRm9ybUVsZW1lbnQgPSAnZm9ybS1lbGVtZW50JyxcbiAgRGFzaGJvYXJkV2lkZ2V0ID0gJ2Rhc2hib2FyZC13aWRnZXQnLFxuICBGb3JtVGVtcGxhdGUgPSAnZm9ybS10ZW1wbGF0ZScsXG4gIFByb3BlcnR5RWRpdG9yID0gJ3Byb3BlcnR5LWVkaXRvcicsXG4gIE1ldGFEYXRhID0gJ21ldGEtZGF0YScsXG4gIFNldHRpbmdXaWRnZXQgPSAnc2V0dGluZy13aWRnZXQnLFxuICBFbnRpdHlXaWRnZXQgPSAnZW50aXR5LXdpZGdldCcsXG4gIFV0aWxpdHlXaWRnZXQgPSAndXRpbGl0eS13aWRnZXQnLFxufSJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LXBsYXRmb3JtLWxheW91dC13aWRnZXQtY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0L3dpZGdldC1jb3JlL3NyYy9hY29yZXgtcGxhdGZvcm0tbGF5b3V0LXdpZGdldC1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":["i1"],"mappings":"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"}