@gnggln/ng-ui-system 1.0.0-alpha.2 → 1.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/entry-accordion.d.ts +4 -0
- package/accordion/index.d.ts +5 -0
- package/accordion/lib/components/accordion/accordion.component.d.ts +125 -0
- package/accordion/lib/components/accordion/accordion.types.d.ts +64 -0
- package/accordion/lib/components/accordion/index.d.ts +2 -0
- package/accordion/lib/core/types/index.d.ts +133 -0
- package/base-layout/entry-base-layout.d.ts +4 -0
- package/base-layout/index.d.ts +5 -0
- package/base-layout/lib/components/base-layout/base-layout.component.d.ts +108 -0
- package/base-layout/lib/components/base-layout/base-layout.types.d.ts +40 -0
- package/base-layout/lib/components/base-layout/index.d.ts +13 -0
- package/base-layout/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/base-layout/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/base-layout/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/base-layout/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/base-layout/lib/components/button/button-area.component.d.ts +93 -0
- package/base-layout/lib/components/button/button.component.d.ts +61 -0
- package/base-layout/lib/components/button/button.types.d.ts +75 -0
- package/base-layout/lib/components/page-header/breadcrumb.service.d.ts +96 -0
- package/base-layout/lib/components/page-header/page-header.component.d.ts +59 -0
- package/base-layout/lib/components/page-header/page-header.types.d.ts +96 -0
- package/base-layout/lib/core/types/index.d.ts +133 -0
- package/blackbox/entry-blackbox.d.ts +4 -0
- package/blackbox/index.d.ts +5 -0
- package/blackbox/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
- package/blackbox/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
- package/blackbox/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/blackbox/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
- package/blackbox/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/blackbox/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
- package/blackbox/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/blackbox/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/blackbox/lib/components/blackbox/index.d.ts +23 -0
- package/blackbox/lib/components/blackbox/ui-track.directive.d.ts +20 -0
- package/blackbox/lib/components/button/button-area.component.d.ts +93 -0
- package/blackbox/lib/components/button/button.component.d.ts +61 -0
- package/blackbox/lib/components/button/button.types.d.ts +75 -0
- package/blackbox/lib/components/button/index.d.ts +15 -0
- package/blackbox/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/blackbox/lib/components/modal/index.d.ts +4 -0
- package/blackbox/lib/components/modal/modal.component.d.ts +44 -0
- package/blackbox/lib/components/modal/modal.service.d.ts +93 -0
- package/blackbox/lib/components/modal/modal.types.d.ts +110 -0
- package/blackbox/lib/core/types/index.d.ts +133 -0
- package/button/entry-button.d.ts +4 -0
- package/button/index.d.ts +5 -0
- package/button/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/button/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/button/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/button/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/button/lib/components/button/button-area.component.d.ts +93 -0
- package/button/lib/components/button/button.component.d.ts +61 -0
- package/button/lib/components/button/button.types.d.ts +75 -0
- package/button/lib/components/button/index.d.ts +15 -0
- package/button/lib/core/types/index.d.ts +133 -0
- package/core/entry-core.d.ts +5 -0
- package/core/index.d.ts +5 -0
- package/core/lib/core/types/index.d.ts +133 -0
- package/core/lib/core/utils/index.d.ts +60 -0
- package/crud-table/entry-crud-table.d.ts +4 -0
- package/crud-table/index.d.ts +5 -0
- package/crud-table/lib/components/accordion/accordion.component.d.ts +125 -0
- package/crud-table/lib/components/accordion/accordion.types.d.ts +64 -0
- package/crud-table/lib/components/accordion/index.d.ts +2 -0
- package/crud-table/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/crud-table/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/crud-table/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/crud-table/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/crud-table/lib/components/button/button-area.component.d.ts +93 -0
- package/crud-table/lib/components/button/button.component.d.ts +61 -0
- package/crud-table/lib/components/button/button.types.d.ts +75 -0
- package/crud-table/lib/components/button/index.d.ts +15 -0
- package/crud-table/lib/components/crud-table/crud-table.component.d.ts +143 -0
- package/crud-table/lib/components/crud-table/crud-table.types.d.ts +207 -0
- package/crud-table/lib/components/crud-table/index.d.ts +15 -0
- package/crud-table/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
- package/crud-table/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
- package/crud-table/lib/components/form-builder/form-builder.component.d.ts +279 -0
- package/crud-table/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
- package/crud-table/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
- package/crud-table/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
- package/crud-table/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
- package/crud-table/lib/components/form-builder/services/location.service.d.ts +83 -0
- package/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
- package/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
- package/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
- package/crud-table/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
- package/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
- package/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
- package/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
- package/crud-table/lib/components/form-builder/types/condition.types.d.ts +51 -0
- package/crud-table/lib/components/form-builder/types/field.types.d.ts +330 -0
- package/crud-table/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
- package/crud-table/lib/components/form-builder/types/schema.types.d.ts +304 -0
- package/crud-table/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
- package/crud-table/lib/components/form-builder/types/validation.types.d.ts +179 -0
- package/crud-table/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/crud-table/lib/components/modal/modal.service.d.ts +93 -0
- package/crud-table/lib/components/modal/modal.types.d.ts +110 -0
- package/crud-table/lib/core/logging/logger.config.d.ts +18 -0
- package/crud-table/lib/core/logging/logger.service.d.ts +75 -0
- package/crud-table/lib/core/logging/logger.types.d.ts +70 -0
- package/crud-table/lib/core/types/index.d.ts +133 -0
- package/esm2022/accordion/entry-accordion.mjs +5 -0
- package/esm2022/accordion/gnggln-ng-ui-system-accordion.mjs +5 -0
- package/esm2022/accordion/lib/components/accordion/accordion.component.mjs +398 -0
- package/esm2022/accordion/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/accordion/lib/components/accordion/index.mjs +2 -0
- package/esm2022/accordion/lib/core/types/index.mjs +6 -0
- package/esm2022/base-layout/entry-base-layout.mjs +5 -0
- package/esm2022/base-layout/gnggln-ng-ui-system-base-layout.mjs +5 -0
- package/esm2022/base-layout/lib/components/base-layout/base-layout.component.mjs +272 -0
- package/esm2022/base-layout/lib/components/base-layout/base-layout.types.mjs +6 -0
- package/esm2022/base-layout/lib/components/base-layout/index.mjs +14 -0
- package/esm2022/base-layout/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/base-layout/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/base-layout/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/base-layout/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/base-layout/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/base-layout/lib/components/button/button.component.mjs +180 -0
- package/esm2022/base-layout/lib/components/button/button.types.mjs +6 -0
- package/esm2022/base-layout/lib/components/page-header/breadcrumb.service.mjs +243 -0
- package/esm2022/base-layout/lib/components/page-header/page-header.component.mjs +243 -0
- package/esm2022/base-layout/lib/components/page-header/page-header.types.mjs +21 -0
- package/esm2022/base-layout/lib/core/types/index.mjs +6 -0
- package/esm2022/blackbox/entry-blackbox.mjs +5 -0
- package/esm2022/blackbox/gnggln-ng-ui-system-blackbox.mjs +5 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/blackbox/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/blackbox/lib/components/blackbox/index.mjs +27 -0
- package/esm2022/blackbox/lib/components/blackbox/ui-track.directive.mjs +69 -0
- package/esm2022/blackbox/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/blackbox/lib/components/button/button.component.mjs +180 -0
- package/esm2022/blackbox/lib/components/button/button.types.mjs +6 -0
- package/esm2022/blackbox/lib/components/button/index.mjs +16 -0
- package/esm2022/blackbox/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/blackbox/lib/components/modal/index.mjs +4 -0
- package/esm2022/blackbox/lib/components/modal/modal.component.mjs +139 -0
- package/esm2022/blackbox/lib/components/modal/modal.service.mjs +197 -0
- package/esm2022/blackbox/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/blackbox/lib/core/types/index.mjs +6 -0
- package/esm2022/button/entry-button.mjs +5 -0
- package/esm2022/button/gnggln-ng-ui-system-button.mjs +5 -0
- package/esm2022/button/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/button/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/button/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/button/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/button/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/button/lib/components/button/button.component.mjs +180 -0
- package/esm2022/button/lib/components/button/button.types.mjs +6 -0
- package/esm2022/button/lib/components/button/index.mjs +16 -0
- package/esm2022/button/lib/core/types/index.mjs +6 -0
- package/esm2022/core/entry-core.mjs +6 -0
- package/esm2022/core/gnggln-ng-ui-system-core.mjs +5 -0
- package/esm2022/core/lib/core/types/index.mjs +6 -0
- package/esm2022/core/lib/core/utils/index.mjs +102 -0
- package/esm2022/crud-table/entry-crud-table.mjs +5 -0
- package/esm2022/crud-table/gnggln-ng-ui-system-crud-table.mjs +5 -0
- package/esm2022/crud-table/lib/components/accordion/accordion.component.mjs +398 -0
- package/esm2022/crud-table/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/accordion/index.mjs +2 -0
- package/esm2022/crud-table/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/crud-table/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/crud-table/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/crud-table/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/crud-table/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/crud-table/lib/components/button/button.component.mjs +180 -0
- package/esm2022/crud-table/lib/components/button/button.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/button/index.mjs +16 -0
- package/esm2022/crud-table/lib/components/crud-table/crud-table.component.mjs +789 -0
- package/esm2022/crud-table/lib/components/crud-table/crud-table.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/crud-table/index.mjs +16 -0
- package/esm2022/crud-table/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
- package/esm2022/crud-table/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
- package/esm2022/crud-table/lib/components/form-builder/form-builder.component.mjs +1351 -0
- package/esm2022/crud-table/lib/components/form-builder/services/form-condition.service.mjs +132 -0
- package/esm2022/crud-table/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
- package/esm2022/crud-table/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
- package/esm2022/crud-table/lib/components/form-builder/services/form-validation.service.mjs +381 -0
- package/esm2022/crud-table/lib/components/form-builder/services/location.service.mjs +141 -0
- package/esm2022/crud-table/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
- package/esm2022/crud-table/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
- package/esm2022/crud-table/lib/components/form-builder/types/condition.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/field.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/schema.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/territoriale.types.mjs +6 -0
- package/esm2022/crud-table/lib/components/form-builder/types/validation.types.mjs +10 -0
- package/esm2022/crud-table/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/crud-table/lib/components/modal/modal.service.mjs +197 -0
- package/esm2022/crud-table/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/crud-table/lib/core/logging/logger.config.mjs +18 -0
- package/esm2022/crud-table/lib/core/logging/logger.service.mjs +295 -0
- package/esm2022/crud-table/lib/core/logging/logger.types.mjs +7 -0
- package/esm2022/crud-table/lib/core/types/index.mjs +6 -0
- package/esm2022/crud-table/lib/sources/location-data.opt.json +8942 -0
- package/esm2022/crud-table/lib/sources/nazioni.opt.json +215 -0
- package/esm2022/form-builder/entry-form-builder.mjs +5 -0
- package/esm2022/form-builder/gnggln-ng-ui-system-form-builder.mjs +5 -0
- package/esm2022/form-builder/lib/components/accordion/accordion.component.mjs +398 -0
- package/esm2022/form-builder/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/accordion/index.mjs +2 -0
- package/esm2022/form-builder/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/form-builder/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/form-builder/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/form-builder/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/form-builder/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/form-builder/lib/components/button/button.component.mjs +180 -0
- package/esm2022/form-builder/lib/components/button/button.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/button/index.mjs +16 -0
- package/esm2022/form-builder/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
- package/esm2022/form-builder/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
- package/esm2022/form-builder/lib/components/form-builder/form-builder.component.mjs +1351 -0
- package/esm2022/form-builder/lib/components/form-builder/form-wizard.component.mjs +1064 -0
- package/esm2022/form-builder/lib/components/form-builder/index.mjs +24 -0
- package/esm2022/form-builder/lib/components/form-builder/services/form-condition.service.mjs +132 -0
- package/esm2022/form-builder/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
- package/esm2022/form-builder/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
- package/esm2022/form-builder/lib/components/form-builder/services/form-validation.service.mjs +381 -0
- package/esm2022/form-builder/lib/components/form-builder/services/location.service.mjs +141 -0
- package/esm2022/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
- package/esm2022/form-builder/lib/components/form-builder/services/wizard-sync.service.mjs +84 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
- package/esm2022/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
- package/esm2022/form-builder/lib/components/form-builder/types/condition.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/field.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/index.mjs +3 -0
- package/esm2022/form-builder/lib/components/form-builder/types/schema.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/territoriale.types.mjs +6 -0
- package/esm2022/form-builder/lib/components/form-builder/types/validation.types.mjs +10 -0
- package/esm2022/form-builder/lib/core/logging/logger.config.mjs +18 -0
- package/esm2022/form-builder/lib/core/logging/logger.service.mjs +295 -0
- package/esm2022/form-builder/lib/core/logging/logger.types.mjs +7 -0
- package/esm2022/form-builder/lib/core/types/index.mjs +6 -0
- package/esm2022/form-builder/lib/sources/location-data.opt.json +8942 -0
- package/esm2022/form-builder/lib/sources/nazioni.opt.json +215 -0
- package/esm2022/form-builder-editor/entry-form-builder-editor.mjs +5 -0
- package/esm2022/form-builder-editor/gnggln-ng-ui-system-form-builder-editor.mjs +5 -0
- package/esm2022/form-builder-editor/lib/components/accordion/accordion.component.mjs +398 -0
- package/esm2022/form-builder-editor/lib/components/accordion/accordion.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/accordion/index.mjs +2 -0
- package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/form-builder-editor/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/form-builder-editor/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/form-builder-editor/lib/components/button/button-area.component.mjs +210 -0
- package/esm2022/form-builder-editor/lib/components/button/button.component.mjs +180 -0
- package/esm2022/form-builder-editor/lib/components/button/button.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/button/index.mjs +16 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/form-builder.component.mjs +1351 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/form-condition.service.mjs +132 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/form-validation.service.mjs +381 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/location.service.mjs +141 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +190 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/condition.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/field.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/index.mjs +3 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/schema.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/territoriale.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/form-builder/types/validation.types.mjs +10 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.mjs +730 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.mjs +56 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/index.mjs +23 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.mjs +190 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.mjs +324 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.mjs +188 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.mjs +667 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.mjs +317 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.mjs +611 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.mjs +267 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.mjs +276 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.mjs +323 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +238 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +473 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.mjs +473 -0
- package/esm2022/form-builder-editor/lib/components/form-builder-editor/types/editor.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/form-builder-editor/lib/components/modal/index.mjs +4 -0
- package/esm2022/form-builder-editor/lib/components/modal/modal.component.mjs +139 -0
- package/esm2022/form-builder-editor/lib/components/modal/modal.service.mjs +197 -0
- package/esm2022/form-builder-editor/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/form-builder-editor/lib/core/logging/logger.config.mjs +18 -0
- package/esm2022/form-builder-editor/lib/core/logging/logger.service.mjs +295 -0
- package/esm2022/form-builder-editor/lib/core/logging/logger.types.mjs +7 -0
- package/esm2022/form-builder-editor/lib/core/types/index.mjs +6 -0
- package/esm2022/form-builder-editor/lib/sources/location-data.opt.json +8942 -0
- package/esm2022/form-builder-editor/lib/sources/nazioni.opt.json +215 -0
- package/esm2022/http/entry-http.mjs +5 -0
- package/esm2022/http/gnggln-ng-ui-system-http.mjs +5 -0
- package/esm2022/http/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/http/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/http/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/http/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/http/lib/components/http/http-message.handler.mjs +143 -0
- package/esm2022/http/lib/components/http/http.service.mjs +228 -0
- package/esm2022/http/lib/components/http/http.tokens.mjs +29 -0
- package/esm2022/http/lib/components/http/http.types.mjs +6 -0
- package/esm2022/http/lib/components/http/index.mjs +19 -0
- package/esm2022/http/lib/components/layout-builder/layout-builder.types.mjs +9 -0
- package/esm2022/http/lib/components/layout-builder/layout.service.mjs +239 -0
- package/esm2022/http/lib/components/toast/toast-container.component.mjs +80 -0
- package/esm2022/http/lib/components/toast/toast.component.mjs +151 -0
- package/esm2022/http/lib/components/toast/toast.service.mjs +156 -0
- package/esm2022/http/lib/components/toast/toast.types.mjs +12 -0
- package/esm2022/http/lib/core/types/index.mjs +6 -0
- package/esm2022/http/lib/core/utils/index.mjs +102 -0
- package/esm2022/layout-builder/entry-layout-builder.mjs +5 -0
- package/esm2022/layout-builder/gnggln-ng-ui-system-layout-builder.mjs +5 -0
- package/esm2022/layout-builder/lib/components/layout-builder/index.mjs +18 -0
- package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.component.mjs +1804 -0
- package/esm2022/layout-builder/lib/components/layout-builder/layout-builder.types.mjs +9 -0
- package/esm2022/layout-builder/lib/components/layout-builder/layout.service.mjs +239 -0
- package/esm2022/layout-builder/lib/core/types/index.mjs +6 -0
- package/esm2022/lib/components/accordion/accordion.component.mjs +106 -61
- package/esm2022/lib/components/accordion/accordion.types.mjs +1 -1
- package/esm2022/lib/components/base-layout/base-layout.component.mjs +88 -34
- package/esm2022/lib/components/base-layout/base-layout.types.mjs +1 -1
- package/esm2022/lib/components/base-layout/index.mjs +1 -1
- package/esm2022/lib/components/blackbox/blackbox-debugger.component.mjs +904 -0
- package/esm2022/lib/components/blackbox/blackbox-debugger.service.mjs +51 -0
- package/esm2022/lib/components/blackbox/blackbox-fingerprint.service.mjs +116 -0
- package/esm2022/lib/components/blackbox/blackbox-json-viewer.component.mjs +66 -0
- package/esm2022/lib/components/blackbox/blackbox-storage.service.mjs +286 -0
- package/esm2022/lib/components/blackbox/blackbox.interceptor.mjs +135 -0
- package/esm2022/lib/components/blackbox/blackbox.service.mjs +323 -0
- package/esm2022/lib/components/blackbox/blackbox.types.mjs +25 -0
- package/esm2022/lib/components/blackbox/index.mjs +27 -0
- package/esm2022/lib/components/blackbox/ui-track.directive.mjs +69 -0
- package/esm2022/lib/components/button/button-area.component.mjs +16 -2
- package/esm2022/lib/components/button/button.component.mjs +23 -7
- package/esm2022/lib/components/button/button.types.mjs +1 -1
- package/esm2022/lib/components/crud-table/crud-table.component.mjs +14 -14
- package/esm2022/lib/components/form-builder/form-builder.component.mjs +710 -183
- package/esm2022/lib/components/form-builder/form-wizard.component.mjs +789 -235
- package/esm2022/lib/components/form-builder/index.mjs +7 -2
- package/esm2022/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
- package/esm2022/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
- package/esm2022/lib/components/form-builder/services/location.service.mjs +4 -3
- package/esm2022/lib/components/form-builder/services/nominatim-geocoding.service.mjs +120 -0
- package/esm2022/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +142 -113
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-number-field.component.mjs +113 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.mjs +105 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-select-field.component.mjs +126 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
- package/esm2022/lib/components/form-builder/sub-components/form-fields/index.mjs +6 -0
- package/esm2022/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.mjs +322 -0
- package/esm2022/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +3 -3
- package/esm2022/lib/components/form-builder/types/field.types.mjs +1 -1
- package/esm2022/lib/components/form-builder/types/geocoded-location.types.mjs +6 -0
- package/esm2022/lib/components/form-builder/types/index.mjs +3 -2
- package/esm2022/lib/components/form-builder/types/schema.types.mjs +1 -1
- package/esm2022/lib/components/form-builder/types/validation.types.mjs +6 -2
- package/esm2022/lib/components/form-builder-editor/form-builder-editor.component.mjs +3 -3
- package/esm2022/lib/components/form-builder-editor/index.mjs +3 -1
- package/esm2022/lib/components/form-builder-editor/presets/editor-presets.mjs +395 -0
- package/esm2022/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +2 -2
- package/esm2022/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +2 -1
- package/esm2022/lib/components/http/http-message.handler.mjs +143 -0
- package/esm2022/lib/components/http/http.service.mjs +228 -0
- package/esm2022/lib/components/http/http.tokens.mjs +29 -0
- package/esm2022/lib/components/http/http.types.mjs +6 -0
- package/esm2022/lib/components/http/index.mjs +19 -0
- package/esm2022/lib/components/layout-builder/layout-builder.component.mjs +27 -15
- package/esm2022/lib/components/modal/confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/components/modal/modal.service.mjs +5 -2
- package/esm2022/lib/components/page-header/breadcrumb.service.mjs +5 -4
- package/esm2022/lib/components/table/paginated-table.component.mjs +17 -3
- package/esm2022/lib/components/table/table.types.mjs +1 -1
- package/esm2022/lib/components/toast/index.mjs +18 -0
- package/esm2022/lib/components/toast/toast-container.component.mjs +80 -0
- package/esm2022/lib/components/toast/toast.component.mjs +151 -0
- package/esm2022/lib/components/toast/toast.service.mjs +156 -0
- package/esm2022/lib/components/toast/toast.types.mjs +12 -0
- package/esm2022/lib/core/logging/index.mjs +10 -0
- package/esm2022/lib/core/logging/logger.config.mjs +18 -0
- package/esm2022/lib/core/logging/logger.service.mjs +295 -0
- package/esm2022/lib/core/logging/logger.types.mjs +7 -0
- package/esm2022/lib/core/types/index.mjs +1 -1
- package/esm2022/lib/core/utils/index.mjs +50 -1
- package/esm2022/lib/version/ng-ui-system-version.mjs +12 -0
- package/esm2022/modal/entry-modal.mjs +5 -0
- package/esm2022/modal/gnggln-ng-ui-system-modal.mjs +5 -0
- package/esm2022/modal/lib/components/button/button.component.mjs +180 -0
- package/esm2022/modal/lib/components/button/button.types.mjs +6 -0
- package/esm2022/modal/lib/components/modal/confirm-dialog.component.mjs +151 -0
- package/esm2022/modal/lib/components/modal/index.mjs +4 -0
- package/esm2022/modal/lib/components/modal/modal.component.mjs +139 -0
- package/esm2022/modal/lib/components/modal/modal.service.mjs +197 -0
- package/esm2022/modal/lib/components/modal/modal.types.mjs +6 -0
- package/esm2022/modal/lib/core/types/index.mjs +6 -0
- package/esm2022/page-header/entry-page-header.mjs +5 -0
- package/esm2022/page-header/gnggln-ng-ui-system-page-header.mjs +5 -0
- package/esm2022/page-header/lib/components/page-header/breadcrumb.service.mjs +243 -0
- package/esm2022/page-header/lib/components/page-header/index.mjs +20 -0
- package/esm2022/page-header/lib/components/page-header/page-header.component.mjs +243 -0
- package/esm2022/page-header/lib/components/page-header/page-header.types.mjs +21 -0
- package/esm2022/public-api.mjs +17 -8
- package/esm2022/table/entry-table.mjs +5 -0
- package/esm2022/table/gnggln-ng-ui-system-table.mjs +5 -0
- package/esm2022/table/lib/components/table/index.mjs +2 -0
- package/esm2022/table/lib/components/table/paginated-table.component.mjs +421 -0
- package/esm2022/table/lib/components/table/table.types.mjs +6 -0
- package/esm2022/table/lib/core/utils/index.mjs +102 -0
- package/esm2022/toast/entry-toast.mjs +5 -0
- package/esm2022/toast/gnggln-ng-ui-system-toast.mjs +5 -0
- package/esm2022/toast/lib/components/toast/index.mjs +18 -0
- package/esm2022/toast/lib/components/toast/toast-container.component.mjs +80 -0
- package/esm2022/toast/lib/components/toast/toast.component.mjs +151 -0
- package/esm2022/toast/lib/components/toast/toast.service.mjs +156 -0
- package/esm2022/toast/lib/components/toast/toast.types.mjs +12 -0
- package/esm2022/toast/lib/core/types/index.mjs +6 -0
- package/esm2022/toast/lib/core/utils/index.mjs +102 -0
- package/fesm2022/gnggln-ng-ui-system-accordion.mjs +409 -0
- package/fesm2022/gnggln-ng-ui-system-accordion.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-base-layout.mjs +1905 -0
- package/fesm2022/gnggln-ng-ui-system-base-layout.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-blackbox.mjs +2829 -0
- package/fesm2022/gnggln-ng-ui-system-blackbox.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-button.mjs +1148 -0
- package/fesm2022/gnggln-ng-ui-system-button.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-core.mjs +117 -0
- package/fesm2022/gnggln-ng-ui-system-core.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +49600 -0
- package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +54332 -0
- package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +49609 -0
- package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-http.mjs +1878 -0
- package/fesm2022/gnggln-ng-ui-system-http.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs +2064 -0
- package/fesm2022/gnggln-ng-ui-system-layout-builder.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-modal.mjs +664 -0
- package/fesm2022/gnggln-ng-ui-system-modal.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-page-header.mjs +526 -0
- package/fesm2022/gnggln-ng-ui-system-page-header.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-table.mjs +533 -0
- package/fesm2022/gnggln-ng-ui-system-table.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system-toast.mjs +516 -0
- package/fesm2022/gnggln-ng-ui-system-toast.mjs.map +1 -0
- package/fesm2022/gnggln-ng-ui-system.mjs +10068 -4234
- package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
- package/form-builder/entry-form-builder.d.ts +4 -0
- package/form-builder/index.d.ts +5 -0
- package/form-builder/lib/components/accordion/accordion.component.d.ts +125 -0
- package/form-builder/lib/components/accordion/accordion.types.d.ts +64 -0
- package/form-builder/lib/components/accordion/index.d.ts +2 -0
- package/form-builder/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/form-builder/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/form-builder/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/form-builder/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/form-builder/lib/components/button/button-area.component.d.ts +93 -0
- package/form-builder/lib/components/button/button.component.d.ts +61 -0
- package/form-builder/lib/components/button/button.types.d.ts +75 -0
- package/form-builder/lib/components/button/index.d.ts +15 -0
- package/form-builder/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
- package/form-builder/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
- package/form-builder/lib/components/form-builder/form-builder.component.d.ts +279 -0
- package/form-builder/lib/components/form-builder/form-wizard.component.d.ts +172 -0
- package/form-builder/lib/components/form-builder/index.d.ts +19 -0
- package/form-builder/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
- package/form-builder/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
- package/form-builder/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
- package/form-builder/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
- package/form-builder/lib/components/form-builder/services/location.service.d.ts +83 -0
- package/form-builder/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
- package/form-builder/lib/components/form-builder/services/wizard-sync.service.d.ts +63 -0
- package/form-builder/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
- package/form-builder/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
- package/form-builder/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
- package/form-builder/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
- package/form-builder/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
- package/form-builder/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
- package/form-builder/lib/components/form-builder/types/condition.types.d.ts +51 -0
- package/form-builder/lib/components/form-builder/types/field.types.d.ts +330 -0
- package/form-builder/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
- package/form-builder/lib/components/form-builder/types/index.d.ts +6 -0
- package/form-builder/lib/components/form-builder/types/schema.types.d.ts +304 -0
- package/form-builder/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
- package/form-builder/lib/components/form-builder/types/validation.types.d.ts +179 -0
- package/form-builder/lib/core/logging/logger.config.d.ts +18 -0
- package/form-builder/lib/core/logging/logger.service.d.ts +75 -0
- package/form-builder/lib/core/logging/logger.types.d.ts +70 -0
- package/form-builder/lib/core/types/index.d.ts +133 -0
- package/form-builder-editor/entry-form-builder-editor.d.ts +4 -0
- package/form-builder-editor/index.d.ts +5 -0
- package/form-builder-editor/lib/components/accordion/accordion.component.d.ts +125 -0
- package/form-builder-editor/lib/components/accordion/accordion.types.d.ts +64 -0
- package/form-builder-editor/lib/components/accordion/index.d.ts +2 -0
- package/form-builder-editor/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/form-builder-editor/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/form-builder-editor/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/form-builder-editor/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/form-builder-editor/lib/components/button/button-area.component.d.ts +93 -0
- package/form-builder-editor/lib/components/button/button.component.d.ts +61 -0
- package/form-builder-editor/lib/components/button/button.types.d.ts +75 -0
- package/form-builder-editor/lib/components/button/index.d.ts +15 -0
- package/form-builder-editor/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
- package/form-builder-editor/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
- package/form-builder-editor/lib/components/form-builder/form-builder.component.d.ts +279 -0
- package/form-builder-editor/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
- package/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
- package/form-builder-editor/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
- package/form-builder-editor/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
- package/form-builder-editor/lib/components/form-builder/services/location.service.d.ts +83 -0
- package/form-builder-editor/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +31 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
- package/form-builder-editor/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
- package/form-builder-editor/lib/components/form-builder/types/condition.types.d.ts +51 -0
- package/form-builder-editor/lib/components/form-builder/types/field.types.d.ts +330 -0
- package/form-builder-editor/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
- package/form-builder-editor/lib/components/form-builder/types/index.d.ts +6 -0
- package/form-builder-editor/lib/components/form-builder/types/schema.types.d.ts +304 -0
- package/form-builder-editor/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
- package/form-builder-editor/lib/components/form-builder/types/validation.types.d.ts +179 -0
- package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.component.d.ts +117 -0
- package/form-builder-editor/lib/components/form-builder-editor/form-builder-editor.service.d.ts +38 -0
- package/form-builder-editor/lib/components/form-builder-editor/index.d.ts +17 -0
- package/form-builder-editor/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
- package/form-builder-editor/lib/components/form-builder-editor/services/editor-persistence.service.d.ts +42 -0
- package/form-builder-editor/lib/components/form-builder-editor/services/editor-state.service.d.ts +66 -0
- package/form-builder-editor/lib/components/form-builder-editor/services/field-factory.service.d.ts +28 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.d.ts +139 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.d.ts +43 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.d.ts +83 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.d.ts +40 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.d.ts +51 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.d.ts +63 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.d.ts +68 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.d.ts +82 -0
- package/form-builder-editor/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.d.ts +112 -0
- package/form-builder-editor/lib/components/form-builder-editor/types/editor.types.d.ts +124 -0
- package/form-builder-editor/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/form-builder-editor/lib/components/modal/index.d.ts +4 -0
- package/form-builder-editor/lib/components/modal/modal.component.d.ts +44 -0
- package/form-builder-editor/lib/components/modal/modal.service.d.ts +93 -0
- package/form-builder-editor/lib/components/modal/modal.types.d.ts +110 -0
- package/form-builder-editor/lib/core/logging/logger.config.d.ts +18 -0
- package/form-builder-editor/lib/core/logging/logger.service.d.ts +75 -0
- package/form-builder-editor/lib/core/logging/logger.types.d.ts +70 -0
- package/form-builder-editor/lib/core/types/index.d.ts +133 -0
- package/http/entry-http.d.ts +4 -0
- package/http/index.d.ts +5 -0
- package/http/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/http/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/http/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/http/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/http/lib/components/http/http-message.handler.d.ts +59 -0
- package/http/lib/components/http/http.service.d.ts +98 -0
- package/http/lib/components/http/http.tokens.d.ts +29 -0
- package/http/lib/components/http/http.types.d.ts +50 -0
- package/http/lib/components/http/index.d.ts +17 -0
- package/http/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
- package/http/lib/components/layout-builder/layout.service.d.ts +100 -0
- package/http/lib/components/toast/toast-container.component.d.ts +27 -0
- package/http/lib/components/toast/toast.component.d.ts +37 -0
- package/http/lib/components/toast/toast.service.d.ts +39 -0
- package/http/lib/components/toast/toast.types.d.ts +52 -0
- package/http/lib/core/types/index.d.ts +133 -0
- package/http/lib/core/utils/index.d.ts +60 -0
- package/layout-builder/entry-layout-builder.d.ts +4 -0
- package/layout-builder/index.d.ts +5 -0
- package/layout-builder/lib/components/layout-builder/index.d.ts +16 -0
- package/layout-builder/lib/components/layout-builder/layout-builder.component.d.ts +85 -0
- package/layout-builder/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
- package/layout-builder/lib/components/layout-builder/layout.service.d.ts +100 -0
- package/layout-builder/lib/core/types/index.d.ts +133 -0
- package/lib/components/accordion/accordion.component.d.ts +10 -3
- package/lib/components/accordion/accordion.types.d.ts +2 -0
- package/lib/components/base-layout/base-layout.component.d.ts +36 -11
- package/lib/components/base-layout/base-layout.types.d.ts +14 -0
- package/lib/components/base-layout/index.d.ts +1 -1
- package/lib/components/blackbox/blackbox-debugger.component.d.ts +80 -0
- package/lib/components/blackbox/blackbox-debugger.service.d.ts +34 -0
- package/lib/components/blackbox/blackbox-fingerprint.service.d.ts +36 -0
- package/lib/components/blackbox/blackbox-json-viewer.component.d.ts +18 -0
- package/lib/components/blackbox/blackbox-storage.service.d.ts +55 -0
- package/lib/components/blackbox/blackbox.interceptor.d.ts +38 -0
- package/lib/components/blackbox/blackbox.service.d.ts +144 -0
- package/lib/components/blackbox/blackbox.types.d.ts +238 -0
- package/lib/components/blackbox/index.d.ts +23 -0
- package/lib/components/blackbox/ui-track.directive.d.ts +20 -0
- package/lib/components/button/button-area.component.d.ts +6 -1
- package/lib/components/button/button.component.d.ts +8 -2
- package/lib/components/button/button.types.d.ts +5 -0
- package/lib/components/form-builder/form-builder.component.d.ts +125 -29
- package/lib/components/form-builder/form-wizard.component.d.ts +89 -4
- package/lib/components/form-builder/index.d.ts +7 -1
- package/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
- package/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
- package/lib/components/form-builder/services/nominatim-geocoding.service.d.ts +37 -0
- package/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +9 -6
- package/lib/components/form-builder/sub-components/form-fields/form-number-field.component.d.ts +42 -0
- package/lib/components/form-builder/sub-components/form-fields/form-radio-field.component.d.ts +45 -0
- package/lib/components/form-builder/sub-components/form-fields/form-select-field.component.d.ts +44 -0
- package/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
- package/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
- package/lib/components/form-builder/sub-components/form-fields/index.d.ts +5 -0
- package/lib/components/form-builder/sub-components/location-geocoded/location-geocoded.component.d.ts +84 -0
- package/lib/components/form-builder/types/field.types.d.ts +48 -6
- package/lib/components/form-builder/types/geocoded-location.types.d.ts +116 -0
- package/lib/components/form-builder/types/index.d.ts +4 -3
- package/lib/components/form-builder/types/schema.types.d.ts +83 -6
- package/lib/components/form-builder/types/validation.types.d.ts +5 -0
- package/lib/components/form-builder-editor/index.d.ts +2 -0
- package/lib/components/form-builder-editor/presets/editor-presets.d.ts +25 -0
- package/lib/components/http/http-message.handler.d.ts +59 -0
- package/lib/components/http/http.service.d.ts +98 -0
- package/lib/components/http/http.tokens.d.ts +29 -0
- package/lib/components/http/http.types.d.ts +50 -0
- package/lib/components/http/index.d.ts +17 -0
- package/lib/components/page-header/breadcrumb.service.d.ts +2 -2
- package/lib/components/table/table.types.d.ts +5 -0
- package/lib/components/toast/index.d.ts +17 -0
- package/lib/components/toast/toast-container.component.d.ts +27 -0
- package/lib/components/toast/toast.component.d.ts +37 -0
- package/lib/components/toast/toast.service.d.ts +39 -0
- package/lib/components/toast/toast.types.d.ts +52 -0
- package/lib/core/logging/index.d.ts +8 -0
- package/lib/core/logging/logger.config.d.ts +18 -0
- package/lib/core/logging/logger.service.d.ts +75 -0
- package/lib/core/logging/logger.types.d.ts +70 -0
- package/lib/core/types/index.d.ts +76 -0
- package/lib/core/utils/index.d.ts +31 -0
- package/lib/version/ng-ui-system-version.d.ts +9 -0
- package/modal/entry-modal.d.ts +4 -0
- package/modal/index.d.ts +5 -0
- package/modal/lib/components/button/button.component.d.ts +61 -0
- package/modal/lib/components/button/button.types.d.ts +75 -0
- package/modal/lib/components/modal/confirm-dialog.component.d.ts +46 -0
- package/modal/lib/components/modal/index.d.ts +4 -0
- package/modal/lib/components/modal/modal.component.d.ts +44 -0
- package/modal/lib/components/modal/modal.service.d.ts +93 -0
- package/modal/lib/components/modal/modal.types.d.ts +110 -0
- package/modal/lib/core/types/index.d.ts +133 -0
- package/package.json +93 -8
- package/page-header/entry-page-header.d.ts +4 -0
- package/page-header/index.d.ts +5 -0
- package/page-header/lib/components/page-header/breadcrumb.service.d.ts +96 -0
- package/page-header/lib/components/page-header/index.d.ts +16 -0
- package/page-header/lib/components/page-header/page-header.component.d.ts +59 -0
- package/page-header/lib/components/page-header/page-header.types.d.ts +96 -0
- package/public-api.d.ts +11 -6
- package/table/entry-table.d.ts +4 -0
- package/table/index.d.ts +5 -0
- package/table/lib/components/table/index.d.ts +2 -0
- package/table/lib/components/table/paginated-table.component.d.ts +85 -0
- package/table/lib/components/table/table.types.d.ts +86 -0
- package/table/lib/core/utils/index.d.ts +60 -0
- package/toast/entry-toast.d.ts +4 -0
- package/toast/index.d.ts +5 -0
- package/toast/lib/components/toast/index.d.ts +17 -0
- package/toast/lib/components/toast/toast-container.component.d.ts +27 -0
- package/toast/lib/components/toast/toast.component.d.ts +37 -0
- package/toast/lib/components/toast/toast.service.d.ts +39 -0
- package/toast/lib/components/toast/toast.types.d.ts +52 -0
- package/toast/lib/core/types/index.d.ts +133 -0
- package/toast/lib/core/utils/index.d.ts +60 -0
package/esm2022/form-builder-editor/lib/components/form-builder/services/form-validation.service.mjs
ADDED
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { parse, format, startOfDay, startOfMonth, addDays, addMonths, addYears, addWeeks, isAfter, isBefore, isEqual, isValid as isDateValid, } from 'date-fns';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./form-condition.service";
|
|
6
|
+
/**
|
|
7
|
+
* Servizio per la creazione e gestione dei validatori Angular
|
|
8
|
+
* basati sulle regole dichiarative dello schema del form.
|
|
9
|
+
*
|
|
10
|
+
* Supporta validazioni standard, cross-field, date con offset,
|
|
11
|
+
* file e validatori condizionali.
|
|
12
|
+
*
|
|
13
|
+
* @providedIn 'root'
|
|
14
|
+
*/
|
|
15
|
+
export class UiFormValidationService {
|
|
16
|
+
constructor(conditionService) {
|
|
17
|
+
this.conditionService = conditionService;
|
|
18
|
+
}
|
|
19
|
+
// ─── Creazione validatori ──────────────────────────────────────
|
|
20
|
+
/** Crea un array di validatori Angular dalle regole di validazione. */
|
|
21
|
+
createValidators(rules) {
|
|
22
|
+
if (!rules?.length)
|
|
23
|
+
return [];
|
|
24
|
+
return rules.map((r) => this.createValidator(r)).filter((v) => v !== null);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Crea validatori con supporto condizionale.
|
|
28
|
+
* Le regole con `conditions` vengono applicate solo se le condizioni sono soddisfatte.
|
|
29
|
+
*/
|
|
30
|
+
createConditionalValidators(rules, formData) {
|
|
31
|
+
if (!rules?.length)
|
|
32
|
+
return [];
|
|
33
|
+
const validators = [];
|
|
34
|
+
for (const rule of rules) {
|
|
35
|
+
if (rule.conditions?.length) {
|
|
36
|
+
const shouldApply = this.conditionService.evaluateConditions(rule.conditions, formData);
|
|
37
|
+
if (!shouldApply)
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const v = this.createValidator(rule);
|
|
41
|
+
if (v)
|
|
42
|
+
validators.push(v);
|
|
43
|
+
}
|
|
44
|
+
return validators;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Aggiorna i validatori di un campo in base allo stato corrente del form.
|
|
48
|
+
* Usato per ricalcolare validazioni condizionali quando i dati cambiano.
|
|
49
|
+
*/
|
|
50
|
+
updateFieldValidators(control, rules, formData) {
|
|
51
|
+
if (!rules?.length) {
|
|
52
|
+
control.clearValidators();
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const validators = this.createConditionalValidators(rules, formData);
|
|
56
|
+
control.setValidators(validators);
|
|
57
|
+
}
|
|
58
|
+
control.updateValueAndValidity({ emitEvent: false });
|
|
59
|
+
}
|
|
60
|
+
// ─── Utility pubbliche ─────────────────────────────────────────
|
|
61
|
+
/** Verifica se un campo dovrebbe mostrare gli errori. */
|
|
62
|
+
shouldShowFieldErrors(control) {
|
|
63
|
+
return control.invalid && (control.dirty || control.touched);
|
|
64
|
+
}
|
|
65
|
+
/** Restituisce i campi correlati da cross-field validation. */
|
|
66
|
+
getCrossFieldRelatedFields(fieldKey, allRules) {
|
|
67
|
+
const related = [];
|
|
68
|
+
for (const [key, rules] of Object.entries(allRules)) {
|
|
69
|
+
if (key === fieldKey)
|
|
70
|
+
continue;
|
|
71
|
+
for (const rule of rules) {
|
|
72
|
+
if (rule.type === 'crossField' && rule.crossField?.targetField === fieldKey) {
|
|
73
|
+
related.push(key);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return related;
|
|
78
|
+
}
|
|
79
|
+
/** Verifica se un campo ha validazioni cross-field che lo referenziano. */
|
|
80
|
+
hasCrossFieldValidations(fieldKey, allRules) {
|
|
81
|
+
return this.getCrossFieldRelatedFields(fieldKey, allRules).length > 0;
|
|
82
|
+
}
|
|
83
|
+
/** Formatta la dimensione del file in una stringa leggibile. */
|
|
84
|
+
formatFileSize(bytes) {
|
|
85
|
+
if (bytes === 0)
|
|
86
|
+
return '0 B';
|
|
87
|
+
const k = 1024;
|
|
88
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
89
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
90
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
91
|
+
}
|
|
92
|
+
// ─── Factory validatori ────────────────────────────────────────
|
|
93
|
+
createValidator(rule) {
|
|
94
|
+
switch (rule.type) {
|
|
95
|
+
case 'required':
|
|
96
|
+
return Validators.required;
|
|
97
|
+
case 'email':
|
|
98
|
+
return Validators.email;
|
|
99
|
+
case 'min':
|
|
100
|
+
return Validators.min(rule.value);
|
|
101
|
+
case 'max':
|
|
102
|
+
return Validators.max(rule.value);
|
|
103
|
+
case 'minLength':
|
|
104
|
+
return Validators.minLength(rule.value);
|
|
105
|
+
case 'maxLength':
|
|
106
|
+
return Validators.maxLength(rule.value);
|
|
107
|
+
case 'pattern':
|
|
108
|
+
return Validators.pattern(rule.value);
|
|
109
|
+
case 'custom':
|
|
110
|
+
return rule.validator || null;
|
|
111
|
+
case 'crossField':
|
|
112
|
+
return rule.crossField ? this.createCrossFieldValidator(rule.crossField) : null;
|
|
113
|
+
case 'date-min':
|
|
114
|
+
return this.createDateMinValidator(rule.value, rule.offset);
|
|
115
|
+
case 'date-max':
|
|
116
|
+
return this.createDateMaxValidator(rule.value, rule.offset);
|
|
117
|
+
case 'fileSize':
|
|
118
|
+
return this.createFileSizeValidator(rule.value);
|
|
119
|
+
case 'fileType':
|
|
120
|
+
return this.createFileTypeValidator(rule.value);
|
|
121
|
+
case 'fileCount':
|
|
122
|
+
return this.createFileCountValidator(rule.value);
|
|
123
|
+
default:
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// ─── Cross-field ───────────────────────────────────────────────
|
|
128
|
+
createCrossFieldValidator(config) {
|
|
129
|
+
return (control) => {
|
|
130
|
+
if (!control.parent || !config.targetField)
|
|
131
|
+
return null;
|
|
132
|
+
const targetControl = control.parent.get(config.targetField);
|
|
133
|
+
if (!targetControl)
|
|
134
|
+
return null;
|
|
135
|
+
const sourceValue = control.value;
|
|
136
|
+
const targetValue = targetControl.value;
|
|
137
|
+
if (sourceValue == null || targetValue == null || sourceValue === '' || targetValue === '') {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
let isValid = false;
|
|
141
|
+
if (config.dataType === 'date') {
|
|
142
|
+
isValid = this.validateDateComparison(sourceValue, targetValue, config.operator, config.isMonthYear);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
isValid = this.validateNumberComparison(sourceValue, targetValue, config.operator);
|
|
146
|
+
}
|
|
147
|
+
return isValid
|
|
148
|
+
? null
|
|
149
|
+
: {
|
|
150
|
+
crossField: {
|
|
151
|
+
actualValue: sourceValue,
|
|
152
|
+
requiredComparison: config.operator,
|
|
153
|
+
comparedValue: targetValue,
|
|
154
|
+
targetField: config.targetField,
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/** Confronto date con date-fns. */
|
|
160
|
+
validateDateComparison(sourceValue, targetValue, operator, isMonthYear) {
|
|
161
|
+
const normalize = isMonthYear ? startOfMonth : startOfDay;
|
|
162
|
+
const sourceDate = normalize(new Date(sourceValue));
|
|
163
|
+
const targetDate = normalize(new Date(targetValue));
|
|
164
|
+
if (!isDateValid(sourceDate) || !isDateValid(targetDate))
|
|
165
|
+
return false;
|
|
166
|
+
switch (operator) {
|
|
167
|
+
case 'greater_than':
|
|
168
|
+
return isAfter(sourceDate, targetDate);
|
|
169
|
+
case 'greater_equal':
|
|
170
|
+
return isAfter(sourceDate, targetDate) || isEqual(sourceDate, targetDate);
|
|
171
|
+
case 'less_than':
|
|
172
|
+
return isBefore(sourceDate, targetDate);
|
|
173
|
+
case 'less_equal':
|
|
174
|
+
return isBefore(sourceDate, targetDate) || isEqual(sourceDate, targetDate);
|
|
175
|
+
case 'not_equal':
|
|
176
|
+
return !isEqual(sourceDate, targetDate);
|
|
177
|
+
default:
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/** Confronto numerico. */
|
|
182
|
+
validateNumberComparison(sourceValue, targetValue, operator) {
|
|
183
|
+
const src = Number(sourceValue);
|
|
184
|
+
const tgt = Number(targetValue);
|
|
185
|
+
if (isNaN(src) || isNaN(tgt))
|
|
186
|
+
return false;
|
|
187
|
+
switch (operator) {
|
|
188
|
+
case 'greater_than':
|
|
189
|
+
return src > tgt;
|
|
190
|
+
case 'greater_equal':
|
|
191
|
+
return src >= tgt;
|
|
192
|
+
case 'less_than':
|
|
193
|
+
return src < tgt;
|
|
194
|
+
case 'less_equal':
|
|
195
|
+
return src <= tgt;
|
|
196
|
+
case 'not_equal':
|
|
197
|
+
return src !== tgt;
|
|
198
|
+
default:
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// ─── Date min/max (con keyword e offset) ───────────────────────
|
|
203
|
+
createDateMinValidator(value, offset) {
|
|
204
|
+
return (control) => {
|
|
205
|
+
if (!control.value)
|
|
206
|
+
return null;
|
|
207
|
+
const refDate = this.parseReferenceDate(value, offset);
|
|
208
|
+
if (!refDate)
|
|
209
|
+
return null;
|
|
210
|
+
const inputDate = startOfDay(new Date(control.value));
|
|
211
|
+
if (!isDateValid(inputDate)) {
|
|
212
|
+
return { 'date-min': { message: 'Data non valida', referenceDate: this.formatRefDate(refDate) } };
|
|
213
|
+
}
|
|
214
|
+
if (isBefore(inputDate, refDate)) {
|
|
215
|
+
return {
|
|
216
|
+
'date-min': {
|
|
217
|
+
message: `La data deve essere successiva o uguale a ${this.formatRefDate(refDate)}`,
|
|
218
|
+
referenceDate: this.formatRefDate(refDate),
|
|
219
|
+
inputDate: format(inputDate, 'dd/MM/yyyy'),
|
|
220
|
+
},
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return null;
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
createDateMaxValidator(value, offset) {
|
|
227
|
+
return (control) => {
|
|
228
|
+
if (!control.value)
|
|
229
|
+
return null;
|
|
230
|
+
const refDate = this.parseReferenceDate(value, offset);
|
|
231
|
+
if (!refDate)
|
|
232
|
+
return null;
|
|
233
|
+
const inputDate = startOfDay(new Date(control.value));
|
|
234
|
+
if (!isDateValid(inputDate)) {
|
|
235
|
+
return { 'date-max': { message: 'Data non valida', referenceDate: this.formatRefDate(refDate) } };
|
|
236
|
+
}
|
|
237
|
+
if (isAfter(inputDate, refDate)) {
|
|
238
|
+
return {
|
|
239
|
+
'date-max': {
|
|
240
|
+
message: `La data deve essere precedente o uguale a ${this.formatRefDate(refDate)}`,
|
|
241
|
+
referenceDate: this.formatRefDate(refDate),
|
|
242
|
+
inputDate: format(inputDate, 'dd/MM/yyyy'),
|
|
243
|
+
},
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
return null;
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Parsa una data di riferimento da keyword o stringa DD/MM/YYYY
|
|
251
|
+
* e applica un eventuale offset temporale.
|
|
252
|
+
*/
|
|
253
|
+
parseReferenceDate(value, offset) {
|
|
254
|
+
const today = startOfDay(new Date());
|
|
255
|
+
let date;
|
|
256
|
+
switch (value?.toLowerCase().trim()) {
|
|
257
|
+
case 'today':
|
|
258
|
+
case 'oggi':
|
|
259
|
+
date = today;
|
|
260
|
+
break;
|
|
261
|
+
case 'tomorrow':
|
|
262
|
+
case 'domani':
|
|
263
|
+
date = addDays(today, 1);
|
|
264
|
+
break;
|
|
265
|
+
case 'yesterday':
|
|
266
|
+
case 'ieri':
|
|
267
|
+
date = addDays(today, -1);
|
|
268
|
+
break;
|
|
269
|
+
default: {
|
|
270
|
+
// Prova DD/MM/YYYY
|
|
271
|
+
const parsed = parse(value, 'dd/MM/yyyy', new Date());
|
|
272
|
+
if (isDateValid(parsed)) {
|
|
273
|
+
date = startOfDay(parsed);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
// Prova YYYY-MM-DD (ISO)
|
|
277
|
+
const isoDate = new Date(value);
|
|
278
|
+
if (isDateValid(isoDate)) {
|
|
279
|
+
date = startOfDay(isoDate);
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return offset ? this.applyDateOffset(date, offset) : date;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Applica un offset temporale a una data.
|
|
291
|
+
*
|
|
292
|
+
* Formato: `numero + unita`
|
|
293
|
+
* - `y`/`a` = anni, `m` = mesi, `g`/`d` = giorni, `s`/`w` = settimane
|
|
294
|
+
*/
|
|
295
|
+
applyDateOffset(date, offset) {
|
|
296
|
+
const match = offset.match(/^(-?\d+)([yYaAmMgGdDsSwW])$/);
|
|
297
|
+
if (!match)
|
|
298
|
+
return date;
|
|
299
|
+
const amount = parseInt(match[1], 10);
|
|
300
|
+
switch (match[2].toLowerCase()) {
|
|
301
|
+
case 'y':
|
|
302
|
+
case 'a':
|
|
303
|
+
return addYears(date, amount);
|
|
304
|
+
case 'm':
|
|
305
|
+
return addMonths(date, amount);
|
|
306
|
+
case 'g':
|
|
307
|
+
case 'd':
|
|
308
|
+
return addDays(date, amount);
|
|
309
|
+
case 's':
|
|
310
|
+
case 'w':
|
|
311
|
+
return addWeeks(date, amount);
|
|
312
|
+
default:
|
|
313
|
+
return date;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
formatRefDate(date) {
|
|
317
|
+
return format(date, 'dd/MM/yyyy');
|
|
318
|
+
}
|
|
319
|
+
// ─── File validators ───────────────────────────────────────────
|
|
320
|
+
createFileSizeValidator(maxSize) {
|
|
321
|
+
return (control) => {
|
|
322
|
+
const files = control.value;
|
|
323
|
+
if (!Array.isArray(files) || files.length === 0)
|
|
324
|
+
return null;
|
|
325
|
+
const oversized = files.filter((f) => f.size > maxSize);
|
|
326
|
+
if (oversized.length > 0) {
|
|
327
|
+
return {
|
|
328
|
+
fileSize: {
|
|
329
|
+
maxSize,
|
|
330
|
+
maxSizeFormatted: this.formatFileSize(maxSize),
|
|
331
|
+
files: oversized.map((f) => f.filename),
|
|
332
|
+
},
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
return null;
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
createFileTypeValidator(allowedTypes) {
|
|
339
|
+
return (control) => {
|
|
340
|
+
const files = control.value;
|
|
341
|
+
if (!Array.isArray(files) || files.length === 0)
|
|
342
|
+
return null;
|
|
343
|
+
const invalid = files.filter((f) => {
|
|
344
|
+
return !allowedTypes.some((type) => {
|
|
345
|
+
if (type.endsWith('/*')) {
|
|
346
|
+
const category = type.split('/')[0];
|
|
347
|
+
return f.mimeType.startsWith(category + '/');
|
|
348
|
+
}
|
|
349
|
+
return f.mimeType === type;
|
|
350
|
+
});
|
|
351
|
+
});
|
|
352
|
+
if (invalid.length > 0) {
|
|
353
|
+
return {
|
|
354
|
+
fileType: {
|
|
355
|
+
allowedTypes,
|
|
356
|
+
files: invalid.map((f) => f.filename),
|
|
357
|
+
},
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
return null;
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
createFileCountValidator(maxCount) {
|
|
364
|
+
return (control) => {
|
|
365
|
+
const files = control.value;
|
|
366
|
+
if (!Array.isArray(files))
|
|
367
|
+
return null;
|
|
368
|
+
if (files.length > maxCount) {
|
|
369
|
+
return { fileCount: { maxCount, actualCount: files.length } };
|
|
370
|
+
}
|
|
371
|
+
return null;
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormValidationService, deps: [{ token: i1.UiFormConditionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
375
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormValidationService, providedIn: 'root' }); }
|
|
376
|
+
}
|
|
377
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiFormValidationService, decorators: [{
|
|
378
|
+
type: Injectable,
|
|
379
|
+
args: [{ providedIn: 'root' }]
|
|
380
|
+
}], ctorParameters: () => [{ type: i1.UiFormConditionService }] });
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy11aS1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0tYnVpbGRlci9zZXJ2aWNlcy9mb3JtLXZhbGlkYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBZ0MsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUUsT0FBTyxFQUNMLEtBQUssRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFlBQVksRUFDWixPQUFPLEVBQ1AsU0FBUyxFQUNULFFBQVEsRUFDUixRQUFRLEVBQ1IsT0FBTyxFQUNQLFFBQVEsRUFDUixPQUFPLEVBQ1AsT0FBTyxJQUFJLFdBQVcsR0FDdkIsTUFBTSxVQUFVLENBQUM7OztBQU1sQjs7Ozs7Ozs7R0FRRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFBb0IsZ0JBQXdDO1FBQXhDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7SUFBRyxDQUFDO0lBRWhFLGtFQUFrRTtJQUVsRSx1RUFBdUU7SUFDdkUsZ0JBQWdCLENBQUMsS0FBeUI7UUFDeEMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFvQixFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRDs7O09BR0c7SUFDSCwyQkFBMkIsQ0FBQyxLQUF5QixFQUFFLFFBQTZCO1FBQ2xGLElBQUksQ0FBQyxLQUFL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LENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN2QixPQUFPO29CQUNMLFFBQVEsRUFBRTt3QkFDUixZQUFZO3dCQUNaLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO3FCQUN0QztpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVPLHdCQUF3QixDQUFDLFFBQWdCO1FBQy9DLE9BQU8sQ0FBQyxPQUF3QixFQUFFLEVBQUU7WUFDbEMsTUFBTSxLQUFLLEdBQWlCLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRXZDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxRQUFRLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDaEUsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQzsrR0F2WVUsdUJBQXVCO21IQUF2Qix1QkFBdUIsY0FEVixNQUFNOzs0RkFDbkIsdUJBQXVCO2tCQURuQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBwYXJzZSxcclxuICBmb3JtYXQsXHJcbiAgc3RhcnRPZkRheSxcclxuICBzdGFydE9mTW9udGgsXHJcbiAgYWRkRGF5cyxcclxuICBhZGRNb250aHMsXHJcbiAgYWRkWWVhcnMsXHJcbiAgYWRkV2Vla3MsXHJcbiAgaXNBZnRlcixcclxuICBpc0JlZm9yZSxcclxuICBpc0VxdWFsLFxyXG4gIGlzVmFsaWQgYXMgaXNEYXRlVmFsaWQsXHJcbn0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBVaVZhbGlkYXRpb25SdWxlIH0gZnJvbSAnLi4vdHlwZXMvdmFsaWRhdGlvbi50eXBlcyc7XHJcbmltcG9ydCB7IFVpQ3Jvc3NGaWVsZENvbmZpZywgVWlDcm9zc0ZpZWxkT3BlcmF0b3IgfSBmcm9tICcuLi90eXBlcy92YWxpZGF0aW9uLnR5cGVzJztcclxuaW1wb3J0IHsgVWlGaWxlRGF0YSB9IGZyb20gJy4uL3R5cGVzL2ZpZWxkLnR5cGVzJztcclxuaW1wb3J0IHsgVWlGb3JtQ29uZGl0aW9uU2VydmljZSB9IGZyb20gJy4vZm9ybS1jb25kaXRpb24uc2VydmljZSc7XHJcblxyXG4vKipcclxuICogU2Vydml6aW8gcGVyIGxhIGNyZWF6aW9uZSBlIGdlc3Rpb25lIGRlaSB2YWxpZGF0b3JpIEFuZ3VsYXJcclxuICogYmFzYXRpIHN1bGxlIHJlZ29sZSBkaWNoaWFyYXRpdmUgZGVsbG8gc2NoZW1hIGRlbCBmb3JtLlxyXG4gKlxyXG4gKiBTdXBwb3J0YSB2YWxpZGF6aW9uaSBzdGFuZGFyZCwgY3Jvc3MtZmllbGQsIGRhdGUgY29uIG9mZnNldCxcclxuICogZmlsZSBlIHZhbGlkYXRvcmkgY29uZGl6aW9uYWxpLlxyXG4gKlxyXG4gKiBAcHJvdmlkZWRJbiAncm9vdCdcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBVaUZvcm1WYWxpZGF0aW9uU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25kaXRpb25TZXJ2aWNlOiBVaUZvcm1Db25kaXRpb25TZXJ2aWNlKSB7fVxyXG5cclxuICAvLyDilIDilIDilIAgQ3JlYXppb25lIHZhbGlkYXRvcmkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIC8qKiBDcmVhIHVuIGFycmF5IGRpIHZhbGlkYXRvcmkgQW5ndWxhciBkYWxsZSByZWdvbGUgZGkgdmFsaWRhemlvbmUuICovXHJcbiAgY3JlYXRlVmFsaWRhdG9ycyhydWxlczogVWlWYWxpZGF0aW9uUnVsZVtdKTogVmFsaWRhdG9yRm5bXSB7XHJcbiAgICBpZiAoIXJ1bGVzPy5sZW5ndGgpIHJldHVybiBbXTtcclxuICAgIHJldHVybiBydWxlcy5tYXAoKHIpID0+IHRoaXMuY3JlYXRlVmFsaWRhdG9yKHIpKS5maWx0ZXIoKHYpOiB2IGlzIFZhbGlkYXRvckZuID0+IHYgIT09IG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYSB2YWxpZGF0b3JpIGNvbiBzdXBwb3J0byBjb25kaXppb25hbGUuXHJcbiAgICogTGUgcmVnb2xlIGNvbiBgY29uZGl0aW9uc2AgdmVuZ29ubyBhcHBsaWNhdGUgc29sbyBzZSBsZSBjb25kaXppb25pIHNvbm8gc29kZGlzZmF0dGUuXHJcbiAgICovXHJcbiAgY3JlYXRlQ29uZGl0aW9uYWxWYWxpZGF0b3JzKHJ1bGVzOiBVaVZhbGlkYXRpb25SdWxlW10sIGZvcm1EYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogVmFsaWRhdG9yRm5bXSB7XHJcbiAgICBpZiAoIXJ1bGVzPy5sZW5ndGgpIHJldHVybiBbXTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcclxuICAgICAgaWYgKHJ1bGUuY29uZGl0aW9ucz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgY29uc3Qgc2hvdWxkQXBwbHkgPSB0aGlzLmNvbmRpdGlvblNlcnZpY2UuZXZhbHVhdGVDb25kaXRpb25zKHJ1bGUuY29uZGl0aW9ucywgZm9ybURhdGEpO1xyXG4gICAgICAgIGlmICghc2hvdWxkQXBwbHkpIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHYgPSB0aGlzLmNyZWF0ZVZhbGlkYXRvcihydWxlKTtcclxuICAgICAgaWYgKHYpIHZhbGlkYXRvcnMucHVzaCh2KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdmFsaWRhdG9ycztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFnZ2lvcm5hIGkgdmFsaWRhdG9yaSBkaSB1biBjYW1wbyBpbiBiYXNlIGFsbG8gc3RhdG8gY29ycmVudGUgZGVsIGZvcm0uXHJcbiAgICogVXNhdG8gcGVyIHJpY2FsY29sYXJlIHZhbGlkYXppb25pIGNvbmRpemlvbmFsaSBxdWFuZG8gaSBkYXRpIGNhbWJpYW5vLlxyXG4gICAqL1xyXG4gIHVwZGF0ZUZpZWxkVmFsaWRhdG9ycyhcclxuICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCxcclxuICAgIHJ1bGVzOiBVaVZhbGlkYXRpb25SdWxlW10gfCB1bmRlZmluZWQsXHJcbiAgICBmb3JtRGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcclxuICApOiB2b2lkIHtcclxuICAgIGlmICghcnVsZXM/Lmxlbmd0aCkge1xyXG4gICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuY3JlYXRlQ29uZGl0aW9uYWxWYWxpZGF0b3JzKHJ1bGVzLCBmb3JtRGF0YSk7XHJcbiAgICAgIGNvbnRyb2wuc2V0VmFsaWRhdG9ycyh2YWxpZGF0b3JzKTtcclxuICAgIH1cclxuICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgVXRpbGl0eSBwdWJibGljaGUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIC8qKiBWZXJpZmljYSBzZSB1biBjYW1wbyBkb3ZyZWJiZSBtb3N0cmFyZSBnbGkgZXJyb3JpLiAqL1xyXG4gIHNob3VsZFNob3dGaWVsZEVycm9ycyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBjb250cm9sLmludmFsaWQgJiYgKGNvbnRyb2wuZGlydHkgfHwgY29udHJvbC50b3VjaGVkKTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXN0aXR1aXNjZSBpIGNhbXBpIGNvcnJlbGF0aSBkYSBjcm9zcy1maWVsZCB2YWxpZGF0aW9uLiAqL1xyXG4gIGdldENyb3NzRmllbGRSZWxhdGVkRmllbGRzKGZpZWxkS2V5OiBzdHJpbmcsIGFsbFJ1bGVzOiBSZWNvcmQ8c3RyaW5nLCBVaVZhbGlkYXRpb25SdWxlW10+KTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgcmVsYXRlZDogc3RyaW5nW10gPSBbXTtcclxuICAgIGZvciAoY29uc3QgW2tleSwgcnVsZXNdIG9mIE9iamVjdC5lbnRyaWVzKGFsbFJ1bGVzKSkge1xyXG4gICAgICBpZiAoa2V5ID09PSBmaWVsZEtleSkgY29udGludWU7XHJcbiAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xyXG4gICAgICAgIGlmIChydWxlLnR5cGUgPT09ICdjcm9zc0ZpZWxkJyAmJiBydWxlLmNyb3NzRmllbGQ/LnRhcmdldEZpZWxkID09PSBmaWVsZEtleSkge1xyXG4gICAgICAgICAgcmVsYXRlZC5wdXNoKGtleSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVsYXRlZDtcclxuICB9XHJcblxyXG4gIC8qKiBWZXJpZmljYSBzZSB1biBjYW1wbyBoYSB2YWxpZGF6aW9uaSBjcm9zcy1maWVsZCBjaGUgbG8gcmVmZXJlbnppYW5vLiAqL1xyXG4gIGhhc0Nyb3NzRmllbGRWYWxpZGF0aW9ucyhmaWVsZEtleTogc3RyaW5nLCBhbGxSdWxlczogUmVjb3JkPHN0cmluZywgVWlWYWxpZGF0aW9uUnVsZVtdPik6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3Jvc3NGaWVsZFJlbGF0ZWRGaWVsZHMoZmllbGRLZXksIGFsbFJ1bGVzKS5sZW5ndGggPiAwO1xyXG4gIH1cclxuXHJcbiAgLyoqIEZvcm1hdHRhIGxhIGRpbWVuc2lvbmUgZGVsIGZpbGUgaW4gdW5hIHN0cmluZ2EgbGVnZ2liaWxlLiAqL1xyXG4gIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgaWYgKGJ5dGVzID09PSAwKSByZXR1cm4gJzAgQic7XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IHNpemVzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJ107XHJcbiAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLmxvZyhieXRlcykgLyBNYXRoLmxvZyhrKSk7XHJcbiAgICByZXR1cm4gcGFyc2VGbG9hdCgoYnl0ZXMgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSkgKyAnICcgKyBzaXplc1tpXTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBGYWN0b3J5IHZhbGlkYXRvcmkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVmFsaWRhdG9yKHJ1bGU6IFVpVmFsaWRhdGlvblJ1bGUpOiBWYWxpZGF0b3JGbiB8IG51bGwge1xyXG4gICAgc3dpdGNoIChydWxlLnR5cGUpIHtcclxuICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLnJlcXVpcmVkO1xyXG4gICAgICBjYXNlICdlbWFpbCc6XHJcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMuZW1haWw7XHJcbiAgICAgIGNhc2UgJ21pbic6XHJcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMubWluKHJ1bGUudmFsdWUpO1xyXG4gICAgICBjYXNlICdtYXgnOlxyXG4gICAgICAgIHJldHVybiBWYWxpZGF0b3JzLm1heChydWxlLnZhbHVlKTtcclxuICAgICAgY2FzZSAnbWluTGVuZ3RoJzpcclxuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5taW5MZW5ndGgocnVsZS52YWx1ZSk7XHJcbiAgICAgIGNhc2UgJ21heExlbmd0aCc6XHJcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMubWF4TGVuZ3RoKHJ1bGUudmFsdWUpO1xyXG4gICAgICBjYXNlICdwYXR0ZXJuJzpcclxuICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKHJ1bGUudmFsdWUpO1xyXG4gICAgICBjYXNlICdjdXN0b20nOlxyXG4gICAgICAgIHJldHVybiBydWxlLnZhbGlkYXRvciB8fCBudWxsO1xyXG4gICAgICBjYXNlICdjcm9zc0ZpZWxkJzpcclxuICAgICAgICByZXR1cm4gcnVsZS5jcm9zc0ZpZWxkID8gdGhpcy5jcmVhdGVDcm9zc0ZpZWxkVmFsaWRhdG9yKHJ1bGUuY3Jvc3NGaWVsZCkgOiBudWxsO1xyXG4gICAgICBjYXNlICdkYXRlLW1pbic6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZU1pblZhbGlkYXRvcihydWxlLnZhbHVlLCBydWxlLm9mZnNldCk7XHJcbiAgICAgIGNhc2UgJ2RhdGUtbWF4JzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEYXRlTWF4VmFsaWRhdG9yKHJ1bGUudmFsdWUsIHJ1bGUub2Zmc2V0KTtcclxuICAgICAgY2FzZSAnZmlsZVNpemUnOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZpbGVTaXplVmFsaWRhdG9yKHJ1bGUudmFsdWUpO1xyXG4gICAgICBjYXNlICdmaWxlVHlwZSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsZVR5cGVWYWxpZGF0b3IocnVsZS52YWx1ZSk7XHJcbiAgICAgIGNhc2UgJ2ZpbGVDb3VudCc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsZUNvdW50VmFsaWRhdG9yKHJ1bGUudmFsdWUpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIENyb3NzLWZpZWxkIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUNyb3NzRmllbGRWYWxpZGF0b3IoY29uZmlnOiBVaUNyb3NzRmllbGRDb25maWcpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBpZiAoIWNvbnRyb2wucGFyZW50IHx8ICFjb25maWcudGFyZ2V0RmllbGQpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3QgdGFyZ2V0Q29udHJvbCA9IGNvbnRyb2wucGFyZW50LmdldChjb25maWcudGFyZ2V0RmllbGQpO1xyXG4gICAgICBpZiAoIXRhcmdldENvbnRyb2wpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3Qgc291cmNlVmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICBjb25zdCB0YXJnZXRWYWx1ZSA9IHRhcmdldENvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICBpZiAoc291cmNlVmFsdWUgPT0gbnVsbCB8fCB0YXJnZXRWYWx1ZSA9PSBudWxsIHx8IHNvdXJjZVZhbHVlID09PSAnJyB8fCB0YXJnZXRWYWx1ZSA9PT0gJycpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgaWYgKGNvbmZpZy5kYXRhVHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgICAgaXNWYWxpZCA9IHRoaXMudmFsaWRhdGVEYXRlQ29tcGFyaXNvbihzb3VyY2VWYWx1ZSwgdGFyZ2V0VmFsdWUsIGNvbmZpZy5vcGVyYXRvciwgY29uZmlnLmlzTW9udGhZZWFyKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc1ZhbGlkID0gdGhpcy52YWxpZGF0ZU51bWJlckNvbXBhcmlzb24oc291cmNlVmFsdWUsIHRhcmdldFZhbHVlLCBjb25maWcub3BlcmF0b3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gaXNWYWxpZFxyXG4gICAgICAgID8gbnVsbFxyXG4gICAgICAgIDoge1xyXG4gICAgICAgICAgICBjcm9zc0ZpZWxkOiB7XHJcbiAgICAgICAgICAgICAgYWN0dWFsVmFsdWU6IHNvdXJjZVZhbHVlLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkQ29tcGFyaXNvbjogY29uZmlnLm9wZXJhdG9yLFxyXG4gICAgICAgICAgICAgIGNvbXBhcmVkVmFsdWU6IHRhcmdldFZhbHVlLFxyXG4gICAgICAgICAgICAgIHRhcmdldEZpZWxkOiBjb25maWcudGFyZ2V0RmllbGQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9O1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKiBDb25mcm9udG8gZGF0ZSBjb24gZGF0ZS1mbnMuICovXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZURhdGVDb21wYXJpc29uKFxyXG4gICAgc291cmNlVmFsdWU6IGFueSxcclxuICAgIHRhcmdldFZhbHVlOiBhbnksXHJcbiAgICBvcGVyYXRvcjogVWlDcm9zc0ZpZWxkT3BlcmF0b3IsXHJcbiAgICBpc01vbnRoWWVhcj86IGJvb2xlYW4sXHJcbiAgKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBub3JtYWxpemUgPSBpc01vbnRoWWVhciA/IHN0YXJ0T2ZNb250aCA6IHN0YXJ0T2ZEYXk7XHJcbiAgICBjb25zdCBzb3VyY2VEYXRlID0gbm9ybWFsaXplKG5ldyBEYXRlKHNvdXJjZVZhbHVlKSk7XHJcbiAgICBjb25zdCB0YXJnZXREYXRlID0gbm9ybWFsaXplKG5ldyBEYXRlKHRhcmdldFZhbHVlKSk7XHJcblxyXG4gICAgaWYgKCFpc0RhdGVWYWxpZChzb3VyY2VEYXRlKSB8fCAhaXNEYXRlVmFsaWQodGFyZ2V0RGF0ZSkpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2dyZWF0ZXJfdGhhbic6XHJcbiAgICAgICAgcmV0dXJuIGlzQWZ0ZXIoc291cmNlRGF0ZSwgdGFyZ2V0RGF0ZSk7XHJcbiAgICAgIGNhc2UgJ2dyZWF0ZXJfZXF1YWwnOlxyXG4gICAgICAgIHJldHVybiBpc0FmdGVyKHNvdXJjZURhdGUsIHRhcmdldERhdGUpIHx8IGlzRXF1YWwoc291cmNlRGF0ZSwgdGFyZ2V0RGF0ZSk7XHJcbiAgICAgIGNhc2UgJ2xlc3NfdGhhbic6XHJcbiAgICAgICAgcmV0dXJuIGlzQmVmb3JlKHNvdXJjZURhdGUsIHRhcmdldERhdGUpO1xyXG4gICAgICBjYXNlICdsZXNzX2VxdWFsJzpcclxuICAgICAgICByZXR1cm4gaXNCZWZvcmUoc291cmNlRGF0ZSwgdGFyZ2V0RGF0ZSkgfHwgaXNFcXVhbChzb3VyY2VEYXRlLCB0YXJnZXREYXRlKTtcclxuICAgICAgY2FzZSAnbm90X2VxdWFsJzpcclxuICAgICAgICByZXR1cm4gIWlzRXF1YWwoc291cmNlRGF0ZSwgdGFyZ2V0RGF0ZSk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIENvbmZyb250byBudW1lcmljby4gKi9cclxuICBwcml2YXRlIHZhbGlkYXRlTnVtYmVyQ29tcGFyaXNvbihzb3VyY2VWYWx1ZTogYW55LCB0YXJnZXRWYWx1ZTogYW55LCBvcGVyYXRvcjogVWlDcm9zc0ZpZWxkT3BlcmF0b3IpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHNyYyA9IE51bWJlcihzb3VyY2VWYWx1ZSk7XHJcbiAgICBjb25zdCB0Z3QgPSBOdW1iZXIodGFyZ2V0VmFsdWUpO1xyXG4gICAgaWYgKGlzTmFOKHNyYykgfHwgaXNOYU4odGd0KSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHN3aXRjaCAob3BlcmF0b3IpIHtcclxuICAgICAgY2FzZSAnZ3JlYXRlcl90aGFuJzpcclxuICAgICAgICByZXR1cm4gc3JjID4gdGd0O1xyXG4gICAgICBjYXNlICdncmVhdGVyX2VxdWFsJzpcclxuICAgICAgICByZXR1cm4gc3JjID49IHRndDtcclxuICAgICAgY2FzZSAnbGVzc190aGFuJzpcclxuICAgICAgICByZXR1cm4gc3JjIDwgdGd0O1xyXG4gICAgICBjYXNlICdsZXNzX2VxdWFsJzpcclxuICAgICAgICByZXR1cm4gc3JjIDw9IHRndDtcclxuICAgICAgY2FzZSAnbm90X2VxdWFsJzpcclxuICAgICAgICByZXR1cm4gc3JjICE9PSB0Z3Q7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIERhdGUgbWluL21heCAoY29uIGtleXdvcmQgZSBvZmZzZXQpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuICBwcml2YXRlIGNyZWF0ZURhdGVNaW5WYWxpZGF0b3IodmFsdWU6IHN0cmluZywgb2Zmc2V0Pzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IHJlZkRhdGUgPSB0aGlzLnBhcnNlUmVmZXJlbmNlRGF0ZSh2YWx1ZSwgb2Zmc2V0KTtcclxuICAgICAgaWYgKCFyZWZEYXRlKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IGlucHV0RGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUoY29udHJvbC52YWx1ZSkpO1xyXG4gICAgICBpZiAoIWlzRGF0ZVZhbGlkKGlucHV0RGF0ZSkpIHtcclxuICAgICAgICByZXR1cm4geyAnZGF0ZS1taW4nOiB7IG1lc3NhZ2U6ICdEYXRhIG5vbiB2YWxpZGEnLCByZWZlcmVuY2VEYXRlOiB0aGlzLmZvcm1hdFJlZkRhdGUocmVmRGF0ZSkgfSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNCZWZvcmUoaW5wdXREYXRlLCByZWZEYXRlKSkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAnZGF0ZS1taW4nOiB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBMYSBkYXRhIGRldmUgZXNzZXJlIHN1Y2Nlc3NpdmEgbyB1Z3VhbGUgYSAke3RoaXMuZm9ybWF0UmVmRGF0ZShyZWZEYXRlKX1gLFxyXG4gICAgICAgICAgICByZWZlcmVuY2VEYXRlOiB0aGlzLmZvcm1hdFJlZkRhdGUocmVmRGF0ZSksXHJcbiAgICAgICAgICAgIGlucHV0RGF0ZTogZm9ybWF0KGlucHV0RGF0ZSwgJ2RkL01NL3l5eXknKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZURhdGVNYXhWYWxpZGF0b3IodmFsdWU6IHN0cmluZywgb2Zmc2V0Pzogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgaWYgKCFjb250cm9sLnZhbHVlKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IHJlZkRhdGUgPSB0aGlzLnBhcnNlUmVmZXJlbmNlRGF0ZSh2YWx1ZSwgb2Zmc2V0KTtcclxuICAgICAgaWYgKCFyZWZEYXRlKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IGlucHV0RGF0ZSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUoY29udHJvbC52YWx1ZSkpO1xyXG4gICAgICBpZiAoIWlzRGF0ZVZhbGlkKGlucHV0RGF0ZSkpIHtcclxuICAgICAgICByZXR1cm4geyAnZGF0ZS1tYXgnOiB7IG1lc3NhZ2U6ICdEYXRhIG5vbiB2YWxpZGEnLCByZWZlcmVuY2VEYXRlOiB0aGlzLmZvcm1hdFJlZkRhdGUocmVmRGF0ZSkgfSB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNBZnRlcihpbnB1dERhdGUsIHJlZkRhdGUpKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICdkYXRlLW1heCc6IHtcclxuICAgICAgICAgICAgbWVzc2FnZTogYExhIGRhdGEgZGV2ZSBlc3NlcmUgcHJlY2VkZW50ZSBvIHVndWFsZSBhICR7dGhpcy5mb3JtYXRSZWZEYXRlKHJlZkRhdGUpfWAsXHJcbiAgICAgICAgICAgIHJlZmVyZW5jZURhdGU6IHRoaXMuZm9ybWF0UmVmRGF0ZShyZWZEYXRlKSxcclxuICAgICAgICAgICAgaW5wdXREYXRlOiBmb3JtYXQoaW5wdXREYXRlLCAnZGQvTU0veXl5eScpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNhIHVuYSBkYXRhIGRpIHJpZmVyaW1lbnRvIGRhIGtleXdvcmQgbyBzdHJpbmdhIEREL01NL1lZWVlcclxuICAgKiBlIGFwcGxpY2EgdW4gZXZlbnR1YWxlIG9mZnNldCB0ZW1wb3JhbGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBwYXJzZVJlZmVyZW5jZURhdGUodmFsdWU6IHN0cmluZywgb2Zmc2V0Pzogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xyXG4gICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgbGV0IGRhdGU6IERhdGU7XHJcblxyXG4gICAgc3dpdGNoICh2YWx1ZT8udG9Mb3dlckNhc2UoKS50cmltKCkpIHtcclxuICAgICAgY2FzZSAndG9kYXknOlxyXG4gICAgICBjYXNlICdvZ2dpJzpcclxuICAgICAgICBkYXRlID0gdG9kYXk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3RvbW9ycm93JzpcclxuICAgICAgY2FzZSAnZG9tYW5pJzpcclxuICAgICAgICBkYXRlID0gYWRkRGF5cyh0b2RheSwgMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3llc3RlcmRheSc6XHJcbiAgICAgIGNhc2UgJ2llcmknOlxyXG4gICAgICAgIGRhdGUgPSBhZGREYXlzKHRvZGF5LCAtMSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6IHtcclxuICAgICAgICAvLyBQcm92YSBERC9NTS9ZWVlZXHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2UodmFsdWUsICdkZC9NTS95eXl5JywgbmV3IERhdGUoKSk7XHJcbiAgICAgICAgaWYgKGlzRGF0ZVZhbGlkKHBhcnNlZCkpIHtcclxuICAgICAgICAgIGRhdGUgPSBzdGFydE9mRGF5KHBhcnNlZCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIC8vIFByb3ZhIFlZWVktTU0tREQgKElTTylcclxuICAgICAgICAgIGNvbnN0IGlzb0RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgICAgICBpZiAoaXNEYXRlVmFsaWQoaXNvRGF0ZSkpIHtcclxuICAgICAgICAgICAgZGF0ZSA9IHN0YXJ0T2ZEYXkoaXNvRGF0ZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2Zmc2V0ID8gdGhpcy5hcHBseURhdGVPZmZzZXQoZGF0ZSwgb2Zmc2V0KSA6IGRhdGU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBcHBsaWNhIHVuIG9mZnNldCB0ZW1wb3JhbGUgYSB1bmEgZGF0YS5cclxuICAgKlxyXG4gICAqIEZvcm1hdG86IGBudW1lcm8gKyB1bml0YWBcclxuICAgKiAtIGB5YC9gYWAgPSBhbm5pLCBgbWAgPSBtZXNpLCBgZ2AvYGRgID0gZ2lvcm5pLCBgc2AvYHdgID0gc2V0dGltYW5lXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhcHBseURhdGVPZmZzZXQoZGF0ZTogRGF0ZSwgb2Zmc2V0OiBzdHJpbmcpOiBEYXRlIHtcclxuICAgIGNvbnN0IG1hdGNoID0gb2Zmc2V0Lm1hdGNoKC9eKC0/XFxkKykoW3lZYUFtTWdHZERzU3dXXSkkLyk7XHJcbiAgICBpZiAoIW1hdGNoKSByZXR1cm4gZGF0ZTtcclxuXHJcbiAgICBjb25zdCBhbW91bnQgPSBwYXJzZUludChtYXRjaFsxXSwgMTApO1xyXG4gICAgc3dpdGNoIChtYXRjaFsyXS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgIGNhc2UgJ3knOlxyXG4gICAgICBjYXNlICdhJzpcclxuICAgICAgICByZXR1cm4gYWRkWWVhcnMoZGF0ZSwgYW1vdW50KTtcclxuICAgICAgY2FzZSAnbSc6XHJcbiAgICAgICAgcmV0dXJuIGFkZE1vbnRocyhkYXRlLCBhbW91bnQpO1xyXG4gICAgICBjYXNlICdnJzpcclxuICAgICAgY2FzZSAnZCc6XHJcbiAgICAgICAgcmV0dXJuIGFkZERheXMoZGF0ZSwgYW1vdW50KTtcclxuICAgICAgY2FzZSAncyc6XHJcbiAgICAgIGNhc2UgJ3cnOlxyXG4gICAgICAgIHJldHVybiBhZGRXZWVrcyhkYXRlLCBhbW91bnQpO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBkYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRSZWZEYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGZvcm1hdChkYXRlLCAnZGQvTU0veXl5eScpO1xyXG4gIH1cclxuXHJcbiAgLy8g4pSA4pSA4pSAIEZpbGUgdmFsaWRhdG9ycyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVGaWxlU2l6ZVZhbGlkYXRvcihtYXhTaXplOiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWxlczogVWlGaWxlRGF0YVtdID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbGVzKSB8fCBmaWxlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3Qgb3ZlcnNpemVkID0gZmlsZXMuZmlsdGVyKChmKSA9PiBmLnNpemUgPiBtYXhTaXplKTtcclxuICAgICAgaWYgKG92ZXJzaXplZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGZpbGVTaXplOiB7XHJcbiAgICAgICAgICAgIG1heFNpemUsXHJcbiAgICAgICAgICAgIG1heFNpemVGb3JtYXR0ZWQ6IHRoaXMuZm9ybWF0RmlsZVNpemUobWF4U2l6ZSksXHJcbiAgICAgICAgICAgIGZpbGVzOiBvdmVyc2l6ZWQubWFwKChmKSA9PiBmLmZpbGVuYW1lKSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZpbGVUeXBlVmFsaWRhdG9yKGFsbG93ZWRUeXBlczogc3RyaW5nW10pOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWxlczogVWlGaWxlRGF0YVtdID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbGVzKSB8fCBmaWxlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3QgaW52YWxpZCA9IGZpbGVzLmZpbHRlcigoZikgPT4ge1xyXG4gICAgICAgIHJldHVybiAhYWxsb3dlZFR5cGVzLnNvbWUoKHR5cGUpID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlLmVuZHNXaXRoKCcvKicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5ID0gdHlwZS5zcGxpdCgnLycpWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gZi5taW1lVHlwZS5zdGFydHNXaXRoKGNhdGVnb3J5ICsgJy8nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBmLm1pbWVUeXBlID09PSB0eXBlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChpbnZhbGlkLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgZmlsZVR5cGU6IHtcclxuICAgICAgICAgICAgYWxsb3dlZFR5cGVzLFxyXG4gICAgICAgICAgICBmaWxlczogaW52YWxpZC5tYXAoKGYpID0+IGYuZmlsZW5hbWUpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmlsZUNvdW50VmFsaWRhdG9yKG1heENvdW50OiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWxlczogVWlGaWxlRGF0YVtdID0gY29udHJvbC52YWx1ZTtcclxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZpbGVzKSkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICBpZiAoZmlsZXMubGVuZ3RoID4gbWF4Q291bnQpIHtcclxuICAgICAgICByZXR1cm4geyBmaWxlQ291bnQ6IHsgbWF4Q291bnQsIGFjdHVhbENvdW50OiBmaWxlcy5sZW5ndGggfSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as locationData from '../../../sources/location-data.opt.json';
|
|
3
|
+
import * as nazioniData from '../../../sources/nazioni.opt.json';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Servizio per la gestione dei dati geografici italiani
|
|
7
|
+
* da file JSON statici ottimizzati.
|
|
8
|
+
*
|
|
9
|
+
* Elimina la necessita di chiamate backend per nazioni,
|
|
10
|
+
* province, comuni e CAP. I dati vengono caricati in memoria
|
|
11
|
+
* al primo accesso e poi serviti dalla cache.
|
|
12
|
+
*
|
|
13
|
+
* @providedIn 'root'
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const nazioni = await this.locationService.getNazioni();
|
|
18
|
+
* const province = await this.locationService.getProvince();
|
|
19
|
+
* const comuni = await this.locationService.getComuniByProvincia('015');
|
|
20
|
+
* const caps = await this.locationService.getCapList('015146');
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export class UiLocationService {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.nazioniCache = new Map();
|
|
26
|
+
this.provinceCache = new Map();
|
|
27
|
+
this.comuniCache = new Map();
|
|
28
|
+
this.nazioniMap = nazioniData;
|
|
29
|
+
this.locationMap = locationData;
|
|
30
|
+
this.initializeCaches();
|
|
31
|
+
}
|
|
32
|
+
// ─── API pubblica ──────────────────────────────────────────────
|
|
33
|
+
/** Elenco completo delle nazioni (Italia prima). */
|
|
34
|
+
async getNazioni() {
|
|
35
|
+
const nazioni = Array.from(this.nazioniCache.values());
|
|
36
|
+
return { data: this.sortNazioniItaliaFirst(nazioni) };
|
|
37
|
+
}
|
|
38
|
+
/** Elenco completo delle province, ordinate alfabeticamente. */
|
|
39
|
+
async getProvince() {
|
|
40
|
+
const province = Array.from(this.provinceCache.values()).sort((a, b) => a.nomeProvincia.localeCompare(b.nomeProvincia, 'it'));
|
|
41
|
+
return { content: province };
|
|
42
|
+
}
|
|
43
|
+
/** Elenco dei comuni per una specifica provincia. */
|
|
44
|
+
async getComuniByProvincia(provinciaId) {
|
|
45
|
+
const comuniMin = this.locationMap.comuniPerProvincia[provinciaId] || [];
|
|
46
|
+
const provincia = this.provinceCache.get(provinciaId);
|
|
47
|
+
if (!provincia)
|
|
48
|
+
return [];
|
|
49
|
+
return comuniMin
|
|
50
|
+
.map((c) => ({
|
|
51
|
+
codiceCatastale: c.x,
|
|
52
|
+
codiceComunePk: c.x,
|
|
53
|
+
comuneSoppresso: false,
|
|
54
|
+
nomeComune: c.d,
|
|
55
|
+
prov: provincia,
|
|
56
|
+
visibile: true,
|
|
57
|
+
}))
|
|
58
|
+
.sort((a, b) => a.nomeComune.localeCompare(b.nomeComune, 'it'));
|
|
59
|
+
}
|
|
60
|
+
/** Elenco dei CAP per un comune. */
|
|
61
|
+
async getCapList(comuneId) {
|
|
62
|
+
for (const comuni of Object.values(this.locationMap.comuniPerProvincia)) {
|
|
63
|
+
const comune = comuni.find((c) => c.x === comuneId);
|
|
64
|
+
if (comune?.c) {
|
|
65
|
+
return Array.isArray(comune.c) ? comune.c : [comune.c];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return [];
|
|
69
|
+
}
|
|
70
|
+
/** Dati completi di una location (nazione, provincia o comune). */
|
|
71
|
+
async getLocationFullData(type, id, provinciaId) {
|
|
72
|
+
switch (type) {
|
|
73
|
+
case 'nazione':
|
|
74
|
+
return this.nazioniCache.get(id) ?? null;
|
|
75
|
+
case 'provincia':
|
|
76
|
+
return this.provinceCache.get(id) ?? null;
|
|
77
|
+
case 'comune': {
|
|
78
|
+
if (!provinciaId)
|
|
79
|
+
return this.comuniCache.get(id) ?? null;
|
|
80
|
+
const comuni = await this.getComuniByProvincia(provinciaId);
|
|
81
|
+
return comuni.find((c) => c.codiceComunePk === id) ?? null;
|
|
82
|
+
}
|
|
83
|
+
default:
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// ─── Inizializzazione cache ────────────────────────────────────
|
|
88
|
+
initializeCaches() {
|
|
89
|
+
// Nazioni
|
|
90
|
+
for (const n of this.nazioniMap.nazioni) {
|
|
91
|
+
this.nazioniCache.set(n.x, {
|
|
92
|
+
codStatoPk: n.x,
|
|
93
|
+
codiceCatastale: n.x,
|
|
94
|
+
descrizione: n.d,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
// Province
|
|
98
|
+
for (const p of this.locationMap.province) {
|
|
99
|
+
this.provinceCache.set(p.x, {
|
|
100
|
+
codiceProvinciaPk: p.x,
|
|
101
|
+
nomeProvincia: p.d,
|
|
102
|
+
siglaProvincia: p.x,
|
|
103
|
+
visibile: true,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// Comuni (con riferimento alla provincia)
|
|
107
|
+
for (const [provinciaId, comuni] of Object.entries(this.locationMap.comuniPerProvincia)) {
|
|
108
|
+
const provincia = this.provinceCache.get(provinciaId);
|
|
109
|
+
if (!provincia)
|
|
110
|
+
continue;
|
|
111
|
+
for (const c of comuni) {
|
|
112
|
+
this.comuniCache.set(c.x, {
|
|
113
|
+
codiceCatastale: c.x,
|
|
114
|
+
codiceComunePk: c.x,
|
|
115
|
+
comuneSoppresso: false,
|
|
116
|
+
nomeComune: c.d,
|
|
117
|
+
prov: provincia,
|
|
118
|
+
visibile: true,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
sortNazioniItaliaFirst(nazioni) {
|
|
124
|
+
return nazioni.sort((a, b) => {
|
|
125
|
+
const aItalia = a.descrizione?.toLowerCase().includes('italia') || a.codStatoPk === 'ITA';
|
|
126
|
+
const bItalia = b.descrizione?.toLowerCase().includes('italia') || b.codStatoPk === 'ITA';
|
|
127
|
+
if (aItalia && !bItalia)
|
|
128
|
+
return -1;
|
|
129
|
+
if (!aItalia && bItalia)
|
|
130
|
+
return 1;
|
|
131
|
+
return (a.descrizione || '').localeCompare(b.descrizione || '', 'it', { sensitivity: 'base' });
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiLocationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
135
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiLocationService, providedIn: 'root' }); }
|
|
136
|
+
}
|
|
137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: UiLocationService, decorators: [{
|
|
138
|
+
type: Injectable,
|
|
139
|
+
args: [{ providedIn: 'root' }]
|
|
140
|
+
}], ctorParameters: () => [] });
|
|
141
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLXVpLXN5c3RlbS9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1idWlsZGVyL3NlcnZpY2VzL2xvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssWUFBWSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hFLE9BQU8sS0FBSyxXQUFXLE1BQU0sbUNBQW1DLENBQUM7O0FBMERqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSCxNQUFNLE9BQU8saUJBQWlCO0lBTzVCO1FBSmlCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7UUFDNUMsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQztRQUMvQyxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO1FBR3pELElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBaUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLFlBQW1CLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGtFQUFrRTtJQUVsRSxvREFBb0Q7SUFDcEQsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsS0FBSyxDQUFDLFdBQVc7UUFDZixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFh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dCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgbG9jYXRpb25EYXRhIGZyb20gJy4uLy4uLy4uL3NvdXJjZXMvbG9jYXRpb24tZGF0YS5vcHQuanNvbic7XHJcbmltcG9ydCAqIGFzIG5hemlvbmlEYXRhIGZyb20gJy4uLy4uLy4uL3NvdXJjZXMvbmF6aW9uaS5vcHQuanNvbic7XHJcblxyXG4vLyDilIDilIDilIAgSW50ZXJmYWNjZSBKU09OIG90dGltaXp6YXRlIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqIFZvY2UgbmF6aW9uZSBuZWwgSlNPTiBvdHRpbWl6emF0by4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBNaW5pZmllZE5hemlvbmVPcHRpb24ge1xyXG4gIC8qKiBDb2RpY2UgbmF6aW9uZSAoZXMuIGAnSVRBJ2ApLiAqL1xyXG4gIHg6IHN0cmluZztcclxuICAvKiogRGVzY3JpemlvbmUgKGVzLiBgJ0l0YWxpYSdgKS4gKi9cclxuICBkOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKiBWb2NlIHByb3ZpbmNpYS9jb211bmUgbmVsIEpTT04gb3R0aW1penphdG8uICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWluaWZpZWRTZWxlY3RPcHRpb24ge1xyXG4gIC8qKiBDb2RpY2UgKHByb3ZpbmNpYSBvIGNvbXVuZSkuICovXHJcbiAgeDogc3RyaW5nO1xyXG4gIC8qKiBEZXNjcml6aW9uZS4gKi9cclxuICBkOiBzdHJpbmc7XHJcbiAgLyoqIENBUCBzaW5nb2xvIG8gbXVsdGlwbGkuICovXHJcbiAgYz86IHN0cmluZyB8IHN0cmluZ1tdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTWluaWZpZWRMb2NhdGlvbk1hcCB7XHJcbiAgcHJvdmluY2U6IE1pbmlmaWVkU2VsZWN0T3B0aW9uW107XHJcbiAgY29tdW5pUGVyUHJvdmluY2lhOiBSZWNvcmQ8c3RyaW5nLCBNaW5pZmllZFNlbGVjdE9wdGlvbltdPjtcclxufVxyXG5cclxuaW50ZXJmYWNlIE1pbmlmaWVkTmF6aW9uaU1hcCB7XHJcbiAgbmF6aW9uaTogTWluaWZpZWROYXppb25lT3B0aW9uW107XHJcbn1cclxuXHJcbi8vIOKUgOKUgOKUgCBJbnRlcmZhY2NlIHB1YmJsaWNoZSAoZm9ybWF0byBsZWdhY3kgY29tcGF0aWJpbGUpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxyXG5cclxuLyoqIE5hemlvbmUuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVWlOYXppb25lIHtcclxuICBjb2RTdGF0b1BrOiBzdHJpbmc7XHJcbiAgY29kaWNlQ2F0YXN0YWxlOiBzdHJpbmc7XHJcbiAgZGVzY3JpemlvbmU6IHN0cmluZztcclxufVxyXG5cclxuLyoqIFByb3ZpbmNpYS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaVByb3ZpbmNpYSB7XHJcbiAgY29kaWNlUHJvdmluY2lhUGs6IHN0cmluZztcclxuICBub21lUHJvdmluY2lhOiBzdHJpbmc7XHJcbiAgc2lnbGFQcm92aW5jaWE6IHN0cmluZztcclxuICB2aXNpYmlsZTogYm9vbGVhbjtcclxufVxyXG5cclxuLyoqIENvbXVuZS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVaUNvbXVuZSB7XHJcbiAgY29kaWNlQ2F0YXN0YWxlOiBzdHJpbmc7XHJcbiAgY29kaWNlQ29tdW5lUGs6IHN0cmluZztcclxuICBjb211bmVTb3BwcmVzc286IGJvb2xlYW47XHJcbiAgbm9tZUNvbXVuZTogc3RyaW5nO1xyXG4gIHByb3Y6IFVpUHJvdmluY2lhO1xyXG4gIHZpc2liaWxlOiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogU2Vydml6aW8gcGVyIGxhIGdlc3Rpb25lIGRlaSBkYXRpIGdlb2dyYWZpY2kgaXRhbGlhbmlcclxuICogZGEgZmlsZSBKU09OIHN0YXRpY2kgb3R0aW1penphdGkuXHJcbiAqXHJcbiAqIEVsaW1pbmEgbGEgbmVjZXNzaXRhIGRpIGNoaWFtYXRlIGJhY2tlbmQgcGVyIG5hemlvbmksXHJcbiAqIHByb3ZpbmNlLCBjb211bmkgZSBDQVAuIEkgZGF0aSB2ZW5nb25vIGNhcmljYXRpIGluIG1lbW9yaWFcclxuICogYWwgcHJpbW8gYWNjZXNzbyBlIHBvaSBzZXJ2aXRpIGRhbGxhIGNhY2hlLlxyXG4gKlxyXG4gKiBAcHJvdmlkZWRJbiAncm9vdCdcclxuICpcclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBuYXppb25pID0gYXdhaXQgdGhpcy5sb2NhdGlvblNlcnZpY2UuZ2V0TmF6aW9uaSgpO1xyXG4gKiBjb25zdCBwcm92aW5jZSA9IGF3YWl0IHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldFByb3ZpbmNlKCk7XHJcbiAqIGNvbnN0IGNvbXVuaSA9IGF3YWl0IHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldENvbXVuaUJ5UHJvdmluY2lhKCcwMTUnKTtcclxuICogY29uc3QgY2FwcyA9IGF3YWl0IHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldENhcExpc3QoJzAxNTE0NicpO1xyXG4gKiBgYGBcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBVaUxvY2F0aW9uU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBuYXppb25pTWFwOiBNaW5pZmllZE5hemlvbmlNYXA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbk1hcDogTWluaWZpZWRMb2NhdGlvbk1hcDtcclxuICBwcml2YXRlIHJlYWRvbmx5IG5hemlvbmlDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBVaU5hemlvbmU+KCk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aW5jZUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFVpUHJvdmluY2lhPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgY29tdW5pQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgVWlDb211bmU+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5uYXppb25pTWFwID0gbmF6aW9uaURhdGEgYXMgTWluaWZpZWROYXppb25pTWFwO1xyXG4gICAgdGhpcy5sb2NhdGlvbk1hcCA9IGxvY2F0aW9uRGF0YSBhcyBhbnk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDYWNoZXMoKTtcclxuICB9XHJcblxyXG4gIC8vIOKUgOKUgOKUgCBBUEkgcHViYmxpY2Eg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXHJcblxyXG4gIC8qKiBFbGVuY28gY29tcGxldG8gZGVsbGUgbmF6aW9uaSAoSXRhbGlhIHByaW1hKS4gKi9cclxuICBhc3luYyBnZXROYXppb25pKCk6IFByb21pc2U8eyBkYXRhOiBVaU5hemlvbmVbXSB9PiB7XHJcbiAgICBjb25zdCBuYXppb25pID0gQXJyYXkuZnJvbSh0aGlzLm5hemlvbmlDYWNoZS52YWx1ZXMoKSk7XHJcbiAgICByZXR1cm4geyBkYXRhOiB0aGlzLnNvcnROYXppb25pSXRhbGlhRmlyc3QobmF6aW9uaSkgfTtcclxuICB9XHJcblxyXG4gIC8qKiBFbGVuY28gY29tcGxldG8gZGVsbGUgcHJvdmluY2UsIG9yZGluYXRlIGFsZmFiZXRpY2FtZW50ZS4gKi9cclxuICBhc3luYyBnZXRQcm92aW5jZSgpOiBQcm9taXNlPHsgY29udGVudDogVWlQcm92aW5jaWFbXSB9PiB7XHJcbiAgICBjb25zdCBwcm92aW5jZSA9IEFycmF5LmZyb20odGhpcy5wcm92aW5jZUNhY2hlLnZhbHVlcygpKS5zb3J0KChhLCBiKSA9PlxyXG4gICAgICBhLm5vbWVQcm92aW5jaWEubG9jYWxlQ29tcGFyZShiLm5vbWVQcm92aW5jaWEsICdpdCcpLFxyXG4gICAgKTtcclxuICAgIHJldHVybiB7IGNvbnRlbnQ6IHByb3ZpbmNlIH07XHJcbiAgfVxyXG5cclxuICAvKiogRWxlbmNvIGRlaSBjb211bmkgcGVyIHVuYSBzcGVjaWZpY2EgcHJvdmluY2lhLiAqL1xyXG4gIGFzeW5jIGdldENvbXVuaUJ5UHJvdmluY2lhKHByb3ZpbmNpYUlkOiBzdHJpbmcpOiBQcm9taXNlPFVpQ29tdW5lW10+IHtcclxuICAgIGNvbnN0IGNvbXVuaU1pbiA9IHRoaXMubG9jYXRpb25NYXAuY29tdW5pUGVyUHJvdmluY2lhW3Byb3ZpbmNpYUlkXSB8fCBbXTtcclxuICAgIGNvbnN0IHByb3ZpbmNpYSA9IHRoaXMucHJvdmluY2VDYWNoZS5nZXQocHJvdmluY2lhSWQpO1xyXG4gICAgaWYgKCFwcm92aW5jaWEpIHJldHVybiBbXTtcclxuXHJcbiAgICByZXR1cm4gY29tdW5pTWluXHJcbiAgICAgIC5tYXAoKGMpID0+ICh7XHJcbiAgICAgICAgY29kaWNlQ2F0YXN0YWxlOiBjLngsXHJcbiAgICAgICAgY29kaWNlQ29tdW5lUGs6IGMueCxcclxuICAgICAgICBjb211bmVTb3BwcmVzc286IGZhbHNlLFxyXG4gICAgICAgIG5vbWVDb211bmU6IGMuZCxcclxuICAgICAgICBwcm92OiBwcm92aW5jaWEsXHJcbiAgICAgICAgdmlzaWJpbGU6IHRydWUsXHJcbiAgICAgIH0pKVxyXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5ub21lQ29tdW5lLmxvY2FsZUNvbXBhcmUoYi5ub21lQ29tdW5lLCAnaXQnKSk7XHJcbiAgfVxyXG5cclxuICAvKiogRWxlbmNvIGRlaSBDQVAgcGVyIHVuIGNvbXVuZS4gKi9cclxuICBhc3luYyBnZXRDYXBMaXN0KGNvbXVuZUlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XHJcbiAgICBmb3IgKGNvbnN0IGNvbXVuaSBvZiBPYmplY3QudmFsdWVzKHRoaXMubG9jYXRpb25NYXAuY29tdW5pUGVyUHJvdmluY2lhKSkge1xyXG4gICAgICBjb25zdCBjb211bmUgPSBjb211bmkuZmluZCgoYykgPT4gYy54ID09PSBjb211bmVJZCk7XHJcbiAgICAgIGlmIChjb211bmU/LmMpIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjb211bmUuYykgPyBjb211bmUuYyA6IFtjb211bmUuY107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIC8qKiBEYXRpIGNvbXBsZXRpIGRpIHVuYSBsb2NhdGlvbiAobmF6aW9uZSwgcHJvdmluY2lhIG8gY29tdW5lKS4gKi9cclxuICBhc3luYyBnZXRMb2NhdGlvbkZ1bGxEYXRhKFxyXG4gICAgdHlwZTogJ25hemlvbmUnIHwgJ3Byb3ZpbmNpYScgfCAnY29tdW5lJyxcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICBwcm92aW5jaWFJZD86IHN0cmluZyxcclxuICApOiBQcm9taXNlPFVpTmF6aW9uZSB8IFVpUHJvdmluY2lhIHwgVWlDb211bmUgfCBudWxsPiB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnbmF6aW9uZSc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubmF6aW9uaUNhY2hlLmdldChpZCkgPz8gbnVsbDtcclxuICAgICAgY2FzZSAncHJvdmluY2lhJzpcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm92aW5jZUNhY2hlLmdldChpZCkgPz8gbnVsbDtcclxuICAgICAgY2FzZSAnY29tdW5lJzoge1xyXG4gICAgICAgIGlmICghcHJvdmluY2lhSWQpIHJldHVybiB0aGlzLmNvbXVuaUNhY2hlLmdldChpZCkgPz8gbnVsbDtcclxuICAgICAgICBjb25zdCBjb211bmkgPSBhd2FpdCB0aGlzLmdldENvbXVuaUJ5UHJvdmluY2lhKHByb3ZpbmNpYUlkKTtcclxuICAgICAgICByZXR1cm4gY29tdW5pLmZpbmQoKGMpID0+IGMuY29kaWNlQ29tdW5lUGsgPT09IGlkKSA/PyBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDilIDilIDilIAgSW5pemlhbGl6emF6aW9uZSBjYWNoZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplQ2FjaGVzKCk6IHZvaWQge1xyXG4gICAgLy8gTmF6aW9uaVxyXG4gICAgZm9yIChjb25zdCBuIG9mIHRoaXMubmF6aW9uaU1hcC5uYXppb25pKSB7XHJcbiAgICAgIHRoaXMubmF6aW9uaUNhY2hlLnNldChuLngsIHtcclxuICAgICAgICBjb2RTdGF0b1BrOiBuLngsXHJcbiAgICAgICAgY29kaWNlQ2F0YXN0YWxlOiBuLngsXHJcbiAgICAgICAgZGVzY3JpemlvbmU6IG4uZCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gUHJvdmluY2VcclxuICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLmxvY2F0aW9uTWFwLnByb3ZpbmNlKSB7XHJcbiAgICAgIHRoaXMucHJvdmluY2VDYWNoZS5zZXQocC54LCB7XHJcbiAgICAgICAgY29kaWNlUHJvdmluY2lhUGs6IHAueCxcclxuICAgICAgICBub21lUHJvdmluY2lhOiBwLmQsXHJcbiAgICAgICAgc2lnbGFQcm92aW5jaWE6IHAueCxcclxuICAgICAgICB2aXNpYmlsZTogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29tdW5pIChjb24gcmlmZXJpbWVudG8gYWxsYSBwcm92aW5jaWEpXHJcbiAgICBmb3IgKGNvbnN0IFtwcm92aW5jaWFJZCwgY29tdW5pXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmxvY2F0aW9uTWFwLmNvbXVuaVBlclByb3ZpbmNpYSkpIHtcclxuICAgICAgY29uc3QgcHJvdmluY2lhID0gdGhpcy5wcm92aW5jZUNhY2hlLmdldChwcm92aW5jaWFJZCk7XHJcbiAgICAgIGlmICghcHJvdmluY2lhKSBjb250aW51ZTtcclxuICAgICAgZm9yIChjb25zdCBjIG9mIGNvbXVuaSkge1xyXG4gICAgICAgIHRoaXMuY29tdW5pQ2FjaGUuc2V0KGMueCwge1xyXG4gICAgICAgICAgY29kaWNlQ2F0YXN0YWxlOiBjLngsXHJcbiAgICAgICAgICBjb2RpY2VDb211bmVQazogYy54LFxyXG4gICAgICAgICAgY29tdW5lU29wcHJlc3NvOiBmYWxzZSxcclxuICAgICAgICAgIG5vbWVDb211bmU6IGMuZCxcclxuICAgICAgICAgIHByb3Y6IHByb3ZpbmNpYSxcclxuICAgICAgICAgIHZpc2liaWxlOiB0cnVlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNvcnROYXppb25pSXRhbGlhRmlyc3QobmF6aW9uaTogVWlOYXppb25lW10pOiBVaU5hemlvbmVbXSB7XHJcbiAgICByZXR1cm4gbmF6aW9uaS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGNvbnN0IGFJdGFsaWEgPSBhLmRlc2NyaXppb25lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdpdGFsaWEnKSB8fCBhLmNvZFN0YXRvUGsgPT09ICdJVEEnO1xyXG4gICAgICBjb25zdCBiSXRhbGlhID0gYi5kZXNjcml6aW9uZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnaXRhbGlhJykgfHwgYi5jb2RTdGF0b1BrID09PSAnSVRBJztcclxuICAgICAgaWYgKGFJdGFsaWEgJiYgIWJJdGFsaWEpIHJldHVybiAtMTtcclxuICAgICAgaWYgKCFhSXRhbGlhICYmIGJJdGFsaWEpIHJldHVybiAxO1xyXG4gICAgICByZXR1cm4gKGEuZGVzY3JpemlvbmUgfHwgJycpLmxvY2FsZUNvbXBhcmUoYi5kZXNjcml6aW9uZSB8fCAnJywgJ2l0JywgeyBzZW5zaXRpdml0eTogJ2Jhc2UnIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|