@ng-atomic/common 18.11.0 → 18.13.0-preview-v19e.1
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/directives/molecules/column/column.molecule.d.ts +67 -0
- package/directives/molecules/column/index.d.ts +1 -0
- package/directives/resize-column/index.d.ts +1 -0
- package/directives/resize-column/resize-column.directive.d.ts +21 -0
- package/directives/resize-column/resize-handle.component.d.ts +5 -0
- package/fesm2022/ng-atomic-common-directives-fallback-src.mjs +3 -3
- package/fesm2022/ng-atomic-common-directives-fallback-src.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs +9 -8
- package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-molecules-column.mjs +125 -0
- package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-directives-resize-column.mjs +79 -0
- package/fesm2022/ng-atomic-common-directives-resize-column.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +3 -4
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-throttle.mjs +6 -6
- package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-token.mjs +3 -3
- package/fesm2022/ng-atomic-common-interceptors-token.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors.mjs +4 -4
- package/fesm2022/ng-atomic-common-interceptors.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-actions.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-auto-columns.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-auto-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-columns.mjs +5 -4
- package/fesm2022/ng-atomic-common-pipes-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-domain.mjs +13 -27
- package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-error.mjs +3 -4
- package/fesm2022/ng-atomic-common-pipes-error.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-expression.mjs +25 -0
- package/fesm2022/ng-atomic-common-pipes-expression.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-index-length.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-index-length.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-index.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-keys.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-keys.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-map.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-map.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-page.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-page.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-pagination.mjs +4 -4
- package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-query.mjs +4 -4
- package/fesm2022/ng-atomic-common-pipes-query.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-resolve-columns.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-resolve-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-secret.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-secret.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-select-id.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-select-id.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-signal.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-signal.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +18 -7
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort-by.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-style.mjs +48 -0
- package/fesm2022/ng-atomic-common-pipes-style.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-pipes-yen.mjs +3 -3
- package/fesm2022/ng-atomic-common-pipes-yen.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-app.mjs +6 -6
- package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-auth.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-breakpoint.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-breakpoint.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-chips-manager.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-chips-manager.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-csv.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-csv.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-fab.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-_index.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-form-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-columns.mjs +30 -23
- package/fesm2022/ng-atomic-common-services-form-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +77 -59
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-pagination.mjs +6 -6
- package/fesm2022/ng-atomic-common-services-form-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-sort.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-initializer.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-language.mjs +46 -0
- package/fesm2022/ng-atomic-common-services-language.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-services-loading.mjs +7 -7
- package/fesm2022/ng-atomic-common-services-loading.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-navigation-history.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-navigation-history.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-query-resolver.mjs +9 -9
- package/fesm2022/ng-atomic-common-services-query-resolver.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-root-property.mjs +14 -15
- package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-router.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-secret.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-secret.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs +4 -4
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets.mjs +7 -7
- package/fesm2022/ng-atomic-common-services-sheets.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-app.mjs +6 -6
- package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs +3 -3
- package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-snack-bar.mjs +35 -17
- package/fesm2022/ng-atomic-common-services-snack-bar.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs +758 -0
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -0
- package/fesm2022/ng-atomic-common-services-ui.mjs +18 -11
- package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entities.mjs +9 -9
- package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entity.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-pagination.mjs +3 -3
- package/fesm2022/ng-atomic-common-stores-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-query.mjs +4 -4
- package/fesm2022/ng-atomic-common-stores-query.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-selection.mjs +3 -3
- package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-sort.mjs +3 -3
- package/fesm2022/ng-atomic-common-stores-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-utils.mjs +41 -22
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/fesm2022/ng-atomic-common.mjs +11 -11
- package/fesm2022/ng-atomic-common.mjs.map +1 -1
- package/models/index.d.ts +2 -1
- package/package.json +51 -146
- package/pipes/actions/actions.pipe.d.ts +2 -1
- package/pipes/columns/columns.pipe.d.ts +1 -0
- package/pipes/data-accessor/data-accessor.pipe.d.ts +1 -1
- package/pipes/domain/domain.pipe.d.ts +3 -5
- package/pipes/expression/expression.pipe.d.ts +9 -0
- package/pipes/expression/index.d.ts +1 -0
- package/pipes/index/index.pipe.d.ts +1 -1
- package/pipes/index-length/index-length.pipe.d.ts +1 -1
- package/pipes/smart-field/smart-field.pipe.d.ts +2 -2
- package/pipes/style/index.d.ts +1 -0
- package/pipes/style/style.pipe.d.ts +18 -0
- package/services/form/_index/index.service.d.ts +4 -4
- package/services/form/columns/columns.service.d.ts +5 -2
- package/services/form/json-schema/json-schema.service.d.ts +9 -1
- package/services/form/pagination/pagination.service.d.ts +5 -5
- package/services/language/index.d.ts +1 -0
- package/services/language/language.service.d.ts +12 -0
- package/services/query-resolver/query-resolver.service.d.ts +2 -2
- package/services/snack-bar/snack-bar.service.d.ts +5 -3
- package/services/spreadsheet/directives/grid-cell.directive.d.ts +41 -0
- package/services/spreadsheet/directives/index.d.ts +1 -0
- package/services/spreadsheet/features/clipboard.service.d.ts +15 -0
- package/services/spreadsheet/features/data.service.d.ts +16 -0
- package/services/spreadsheet/features/editor.service.d.ts +22 -0
- package/services/spreadsheet/features/grid.service.d.ts +17 -0
- package/services/spreadsheet/features/index.d.ts +7 -0
- package/services/spreadsheet/features/navigation.service.d.ts +17 -0
- package/services/spreadsheet/features/protection.service.d.ts +24 -0
- package/services/spreadsheet/features/selection.service.d.ts +40 -0
- package/services/spreadsheet/index.d.ts +4 -0
- package/services/spreadsheet/models/cell.model.d.ts +17 -0
- package/services/spreadsheet/models/index.d.ts +1 -0
- package/services/spreadsheet/spreadsheet.service.d.ts +29 -0
- package/services/ui/ui.helpers.d.ts +1 -1
- package/utils/expression/expression.transformer.d.ts +12 -0
- package/utils/expression/index.d.ts +1 -0
- package/utils/index.d.ts +1 -1
- package/utils/inject/inject.d.ts +2 -2
- package/esm2022/common.module.mjs +0 -34
- package/esm2022/directives/fallback-src/fallback-src.directive.mjs +0 -25
- package/esm2022/directives/fallback-src/index.mjs +0 -2
- package/esm2022/directives/fallback-src/ng-atomic-common-directives-fallback-src.mjs +0 -5
- package/esm2022/directives/ios-safari-scroll-buggyfill/index.mjs +0 -3
- package/esm2022/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.directive.mjs +0 -24
- package/esm2022/directives/ios-safari-scroll-buggyfill/ios-safari-scroll-buggyfill.module.mjs +0 -24
- package/esm2022/directives/ios-safari-scroll-buggyfill/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/interceptors/authorization/authorization.interceptor.mjs +0 -39
- package/esm2022/interceptors/authorization/index.mjs +0 -2
- package/esm2022/interceptors/authorization/ng-atomic-common-interceptors-authorization.mjs +0 -5
- package/esm2022/interceptors/index.mjs +0 -2
- package/esm2022/interceptors/interceptors.module.mjs +0 -44
- package/esm2022/interceptors/ng-atomic-common-interceptors.mjs +0 -5
- package/esm2022/interceptors/throttle/index.mjs +0 -2
- package/esm2022/interceptors/throttle/ng-atomic-common-interceptors-throttle.mjs +0 -5
- package/esm2022/interceptors/throttle/throttle.interceptor.mjs +0 -63
- package/esm2022/interceptors/token/authorization.interceptor.mjs +0 -26
- package/esm2022/interceptors/token/index.mjs +0 -2
- package/esm2022/interceptors/token/ng-atomic-common-interceptors-token.mjs +0 -5
- package/esm2022/models/index.mjs +0 -2
- package/esm2022/models/menu-item.mjs +0 -2
- package/esm2022/models/ng-atomic-common-models.mjs +0 -5
- package/esm2022/ng-atomic-common.mjs +0 -5
- package/esm2022/pipes/actions/actions.pipe.mjs +0 -19
- package/esm2022/pipes/actions/index.mjs +0 -2
- package/esm2022/pipes/actions/ng-atomic-common-pipes-actions.mjs +0 -5
- package/esm2022/pipes/auto-columns/auto-columns.pipe.mjs +0 -20
- package/esm2022/pipes/auto-columns/index.mjs +0 -2
- package/esm2022/pipes/auto-columns/ng-atomic-common-pipes-auto-columns.mjs +0 -5
- package/esm2022/pipes/columns/columns.pipe.mjs +0 -17
- package/esm2022/pipes/columns/index.mjs +0 -2
- package/esm2022/pipes/columns/ng-atomic-common-pipes-columns.mjs +0 -5
- package/esm2022/pipes/data-accessor/data-accessor.pipe.mjs +0 -46
- package/esm2022/pipes/data-accessor/index.mjs +0 -2
- package/esm2022/pipes/data-accessor/ng-atomic-common-pipes-data-accessor.mjs +0 -5
- package/esm2022/pipes/domain/domain.pipe.mjs +0 -85
- package/esm2022/pipes/domain/index.mjs +0 -2
- package/esm2022/pipes/domain/ng-atomic-common-pipes-domain.mjs +0 -5
- package/esm2022/pipes/error/error.pipe.mjs +0 -47
- package/esm2022/pipes/error/index.mjs +0 -2
- package/esm2022/pipes/error/ng-atomic-common-pipes-error.mjs +0 -5
- package/esm2022/pipes/grouped-by/grouped-by.pipe.mjs +0 -29
- package/esm2022/pipes/grouped-by/index.mjs +0 -2
- package/esm2022/pipes/grouped-by/ng-atomic-common-pipes-grouped-by.mjs +0 -5
- package/esm2022/pipes/index/index.mjs +0 -2
- package/esm2022/pipes/index/index.pipe.mjs +0 -29
- package/esm2022/pipes/index/ng-atomic-common-pipes-index.mjs +0 -5
- package/esm2022/pipes/index-length/index-length.pipe.mjs +0 -22
- package/esm2022/pipes/index-length/index.mjs +0 -2
- package/esm2022/pipes/index-length/ng-atomic-common-pipes-index-length.mjs +0 -5
- package/esm2022/pipes/keys/index.mjs +0 -2
- package/esm2022/pipes/keys/keys.pipe.mjs +0 -18
- package/esm2022/pipes/keys/ng-atomic-common-pipes-keys.mjs +0 -5
- package/esm2022/pipes/map/index.mjs +0 -2
- package/esm2022/pipes/map/map.pipe.mjs +0 -17
- package/esm2022/pipes/map/ng-atomic-common-pipes-map.mjs +0 -5
- package/esm2022/pipes/page/index.mjs +0 -2
- package/esm2022/pipes/page/ng-atomic-common-pipes-page.mjs +0 -5
- package/esm2022/pipes/page/page.pipe.mjs +0 -25
- package/esm2022/pipes/pagination/index.mjs +0 -2
- package/esm2022/pipes/pagination/ng-atomic-common-pipes-pagination.mjs +0 -5
- package/esm2022/pipes/pagination/pagination.pipe.mjs +0 -32
- package/esm2022/pipes/query/index.mjs +0 -2
- package/esm2022/pipes/query/ng-atomic-common-pipes-query.mjs +0 -5
- package/esm2022/pipes/query/query.pipe.mjs +0 -33
- package/esm2022/pipes/resolve-columns/index.mjs +0 -2
- package/esm2022/pipes/resolve-columns/ng-atomic-common-pipes-resolve-columns.mjs +0 -5
- package/esm2022/pipes/resolve-columns/resolve-columns.pipe.mjs +0 -24
- package/esm2022/pipes/secret/index.mjs +0 -2
- package/esm2022/pipes/secret/ng-atomic-common-pipes-secret.mjs +0 -5
- package/esm2022/pipes/secret/secret.pipe.mjs +0 -21
- package/esm2022/pipes/select-id/index.mjs +0 -2
- package/esm2022/pipes/select-id/ng-atomic-common-pipes-select-id.mjs +0 -5
- package/esm2022/pipes/select-id/select-id.pipe.mjs +0 -29
- package/esm2022/pipes/signal/index.mjs +0 -2
- package/esm2022/pipes/signal/ng-atomic-common-pipes-signal.mjs +0 -5
- package/esm2022/pipes/signal/signal.pipe.mjs +0 -23
- package/esm2022/pipes/smart-exp/index.mjs +0 -3
- package/esm2022/pipes/smart-exp/ng-atomic-common-pipes-smart-exp.mjs +0 -5
- package/esm2022/pipes/smart-exp/smart-exp.module.mjs +0 -16
- package/esm2022/pipes/smart-exp/smart-exp.pipe.mjs +0 -27
- package/esm2022/pipes/smart-field/index.mjs +0 -2
- package/esm2022/pipes/smart-field/ng-atomic-common-pipes-smart-field.mjs +0 -5
- package/esm2022/pipes/smart-field/smart-field.pipe.mjs +0 -33
- package/esm2022/pipes/sort/index.mjs +0 -2
- package/esm2022/pipes/sort/ng-atomic-common-pipes-sort.mjs +0 -5
- package/esm2022/pipes/sort/sort.pipe.mjs +0 -14
- package/esm2022/pipes/sort-by/index.mjs +0 -2
- package/esm2022/pipes/sort-by/ng-atomic-common-pipes-sort-by.mjs +0 -5
- package/esm2022/pipes/sort-by/sort-by.pipe.mjs +0 -32
- package/esm2022/pipes/yen/index.mjs +0 -2
- package/esm2022/pipes/yen/ng-atomic-common-pipes-yen.mjs +0 -5
- package/esm2022/pipes/yen/yen.pipe.mjs +0 -20
- package/esm2022/services/app/app.service.mjs +0 -78
- package/esm2022/services/app/index.mjs +0 -2
- package/esm2022/services/app/ng-atomic-common-services-app.mjs +0 -5
- package/esm2022/services/auth/auth.service.mjs +0 -66
- package/esm2022/services/auth/index.mjs +0 -2
- package/esm2022/services/auth/ng-atomic-common-services-auth.mjs +0 -5
- package/esm2022/services/breakpoint/breakpoint.service.mjs +0 -57
- package/esm2022/services/breakpoint/index.mjs +0 -2
- package/esm2022/services/breakpoint/ng-atomic-common-services-breakpoint.mjs +0 -5
- package/esm2022/services/chips-manager/chips.manager.mjs +0 -29
- package/esm2022/services/chips-manager/index.mjs +0 -2
- package/esm2022/services/chips-manager/ng-atomic-common-services-chips-manager.mjs +0 -5
- package/esm2022/services/csv/csv.service.mjs +0 -25
- package/esm2022/services/csv/index.mjs +0 -2
- package/esm2022/services/csv/ng-atomic-common-services-csv.mjs +0 -5
- package/esm2022/services/fab/fab.service.mjs +0 -46
- package/esm2022/services/fab/index.mjs +0 -2
- package/esm2022/services/fab/ng-atomic-common-services-fab.mjs +0 -5
- package/esm2022/services/form/_index/index.mjs +0 -2
- package/esm2022/services/form/_index/index.service.mjs +0 -51
- package/esm2022/services/form/_index/ng-atomic-common-services-form-_index.mjs +0 -5
- package/esm2022/services/form/columns/columns.service.mjs +0 -138
- package/esm2022/services/form/columns/index.mjs +0 -2
- package/esm2022/services/form/columns/ng-atomic-common-services-form-columns.mjs +0 -5
- package/esm2022/services/form/form.service.mjs +0 -38
- package/esm2022/services/form/index.mjs +0 -2
- package/esm2022/services/form/json-schema/index.mjs +0 -2
- package/esm2022/services/form/json-schema/json-schema.mjs +0 -51
- package/esm2022/services/form/json-schema/json-schema.service.mjs +0 -160
- package/esm2022/services/form/json-schema/ng-atomic-common-services-form-json-schema.mjs +0 -5
- package/esm2022/services/form/ng-atomic-common-services-form.mjs +0 -5
- package/esm2022/services/form/pagination/index.mjs +0 -2
- package/esm2022/services/form/pagination/ng-atomic-common-services-form-pagination.mjs +0 -5
- package/esm2022/services/form/pagination/pagination.service.mjs +0 -24
- package/esm2022/services/form/sort/index.mjs +0 -2
- package/esm2022/services/form/sort/ng-atomic-common-services-form-sort.mjs +0 -5
- package/esm2022/services/form/sort/sort.service.mjs +0 -33
- package/esm2022/services/initializer/index.mjs +0 -2
- package/esm2022/services/initializer/initializer.service.mjs +0 -44
- package/esm2022/services/initializer/ng-atomic-common-services-initializer.mjs +0 -5
- package/esm2022/services/loading/index.mjs +0 -2
- package/esm2022/services/loading/loading.service.mjs +0 -62
- package/esm2022/services/loading/ng-atomic-common-services-loading.mjs +0 -5
- package/esm2022/services/navigation-history/index.mjs +0 -2
- package/esm2022/services/navigation-history/navigation-history.service.mjs +0 -50
- package/esm2022/services/navigation-history/ng-atomic-common-services-navigation-history.mjs +0 -5
- package/esm2022/services/query-resolver/index.mjs +0 -2
- package/esm2022/services/query-resolver/ng-atomic-common-services-query-resolver.mjs +0 -5
- package/esm2022/services/query-resolver/query-resolver.service.mjs +0 -95
- package/esm2022/services/root-property/index.mjs +0 -3
- package/esm2022/services/root-property/ng-atomic-common-services-root-property.mjs +0 -5
- package/esm2022/services/root-property/root-property.di.mjs +0 -15
- package/esm2022/services/root-property/root-property.service.mjs +0 -169
- package/esm2022/services/router/index.mjs +0 -2
- package/esm2022/services/router/ng-atomic-common-services-router.mjs +0 -5
- package/esm2022/services/router/router.service.mjs +0 -25
- package/esm2022/services/secret/index.mjs +0 -2
- package/esm2022/services/secret/ng-atomic-common-services-secret.mjs +0 -5
- package/esm2022/services/secret/secret.service.mjs +0 -16
- package/esm2022/services/sheets/actions/actions.sheet.mjs +0 -45
- package/esm2022/services/sheets/actions/index.mjs +0 -2
- package/esm2022/services/sheets/actions/ng-atomic-common-services-sheets-actions.mjs +0 -5
- package/esm2022/services/sheets/index.mjs +0 -3
- package/esm2022/services/sheets/ng-atomic-common-services-sheets.mjs +0 -5
- package/esm2022/services/sheets/sheets.module.mjs +0 -25
- package/esm2022/services/sheets/sheets.service.mjs +0 -22
- package/esm2022/services/side-app/index.mjs +0 -2
- package/esm2022/services/side-app/ng-atomic-common-services-side-app.mjs +0 -5
- package/esm2022/services/side-app/side-app.service.mjs +0 -55
- package/esm2022/services/side-nav-mode/index.mjs +0 -2
- package/esm2022/services/side-nav-mode/ng-atomic-common-services-side-nav-mode.mjs +0 -5
- package/esm2022/services/side-nav-mode/side-nav-mode.service.mjs +0 -27
- package/esm2022/services/snack-bar/index.mjs +0 -3
- package/esm2022/services/snack-bar/ng-atomic-common-services-snack-bar.mjs +0 -5
- package/esm2022/services/snack-bar/snack-bar.module.mjs +0 -22
- package/esm2022/services/snack-bar/snack-bar.service.mjs +0 -23
- package/esm2022/services/ui/index.mjs +0 -3
- package/esm2022/services/ui/ng-atomic-common-services-ui.mjs +0 -5
- package/esm2022/services/ui/ui.helpers.mjs +0 -234
- package/esm2022/services/ui/ui.service.mjs +0 -30
- package/esm2022/stores/entities/di.mjs +0 -64
- package/esm2022/stores/entities/entity-store-adapter.mjs +0 -34
- package/esm2022/stores/entities/entity-store-manager.mjs +0 -25
- package/esm2022/stores/entities/entity-store.mjs +0 -121
- package/esm2022/stores/entities/index.mjs +0 -7
- package/esm2022/stores/entities/ng-atomic-common-stores-entities.mjs +0 -5
- package/esm2022/stores/entities/proxy-id.service.mjs +0 -29
- package/esm2022/stores/entities/task-composer.mjs +0 -71
- package/esm2022/stores/entity/entity.store.mjs +0 -34
- package/esm2022/stores/entity/index.mjs +0 -2
- package/esm2022/stores/entity/ng-atomic-common-stores-entity.mjs +0 -5
- package/esm2022/stores/pagination/index.mjs +0 -2
- package/esm2022/stores/pagination/ng-atomic-common-stores-pagination.mjs +0 -5
- package/esm2022/stores/pagination/pagination.store.mjs +0 -23
- package/esm2022/stores/query/index.mjs +0 -2
- package/esm2022/stores/query/ng-atomic-common-stores-query.mjs +0 -5
- package/esm2022/stores/query/query.store.mjs +0 -31
- package/esm2022/stores/selection/index.mjs +0 -2
- package/esm2022/stores/selection/ng-atomic-common-stores-selection.mjs +0 -5
- package/esm2022/stores/selection/selection.store.mjs +0 -29
- package/esm2022/stores/sort/index.mjs +0 -2
- package/esm2022/stores/sort/ng-atomic-common-stores-sort.mjs +0 -5
- package/esm2022/stores/sort/sort.store.mjs +0 -27
- package/esm2022/utils/comma/comma.mjs +0 -4
- package/esm2022/utils/comma/index.mjs +0 -2
- package/esm2022/utils/compare-by-id/compare-by-id.mjs +0 -5
- package/esm2022/utils/compare-by-id/index.mjs +0 -2
- package/esm2022/utils/date-utils/date-utils.mjs +0 -13
- package/esm2022/utils/date-utils/index.mjs +0 -2
- package/esm2022/utils/diff/diff.mjs +0 -7
- package/esm2022/utils/diff/index.mjs +0 -2
- package/esm2022/utils/form/form.mjs +0 -26
- package/esm2022/utils/form/index.mjs +0 -2
- package/esm2022/utils/get/get.mjs +0 -6
- package/esm2022/utils/get/index.mjs +0 -2
- package/esm2022/utils/index.mjs +0 -15
- package/esm2022/utils/inject/index.mjs +0 -2
- package/esm2022/utils/inject/inject.mjs +0 -177
- package/esm2022/utils/mat-dayjs-date/dayjs-date.adapter.mjs +0 -191
- package/esm2022/utils/mat-dayjs-date/dayjs-date.formats.mjs +0 -15
- package/esm2022/utils/mat-dayjs-date/dayjs-date.module.mjs +0 -37
- package/esm2022/utils/mat-dayjs-date/dayjs-jp-providers.mjs +0 -20
- package/esm2022/utils/mat-dayjs-date/index.mjs +0 -5
- package/esm2022/utils/ng-atomic-common-utils.mjs +0 -5
- package/esm2022/utils/page/index.mjs +0 -2
- package/esm2022/utils/page/page.mjs +0 -20
- package/esm2022/utils/router/index.mjs +0 -2
- package/esm2022/utils/router/router.mjs +0 -54
- package/esm2022/utils/smart-exp-transformer/index.mjs +0 -2
- package/esm2022/utils/smart-exp-transformer/smart-exp-transformer.mjs +0 -18
- package/esm2022/utils/time.mjs +0 -8
- package/esm2022/utils/to-object/index.mjs +0 -2
- package/esm2022/utils/to-object/to-object.mjs +0 -10
- package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs +0 -47
- package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs.map +0 -1
- package/pipes/smart-exp/index.d.ts +0 -2
- package/pipes/smart-exp/smart-exp.module.d.ts +0 -7
- package/pipes/smart-exp/smart-exp.pipe.d.ts +0 -11
- package/utils/smart-exp-transformer/index.d.ts +0 -1
- package/utils/smart-exp-transformer/smart-exp-transformer.d.ts +0 -6
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { computed, inject, Injectable, isSignal, signal } from '@angular/core';
|
|
2
|
-
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
|
3
|
-
import { computedAsync } from 'ngxtension/computed-async';
|
|
4
|
-
import { filter, map, switchMap } from 'rxjs';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class FabService {
|
|
7
|
-
constructor() {
|
|
8
|
-
this.hidden = signal(false);
|
|
9
|
-
this.router = inject(Router);
|
|
10
|
-
this.route = inject(ActivatedRoute);
|
|
11
|
-
this.route$ = this.router.events.pipe(filter(event => event instanceof NavigationEnd), map(() => this.findLastChild(this.route)));
|
|
12
|
-
this.data = computedAsync(() => {
|
|
13
|
-
return this.route$.pipe(switchMap((route) => route.data));
|
|
14
|
-
});
|
|
15
|
-
this.actions = computed(() => {
|
|
16
|
-
return isSignal(this.data()?.fabActions)
|
|
17
|
-
? this.data().fabActions()
|
|
18
|
-
: this.data()?.fabActions || [];
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
findLastChild(route) {
|
|
22
|
-
let child = route;
|
|
23
|
-
while (child.firstChild) {
|
|
24
|
-
child = child.firstChild;
|
|
25
|
-
}
|
|
26
|
-
return child;
|
|
27
|
-
}
|
|
28
|
-
show() {
|
|
29
|
-
this.hidden.set(false);
|
|
30
|
-
}
|
|
31
|
-
hide() {
|
|
32
|
-
this.hidden.set(true);
|
|
33
|
-
}
|
|
34
|
-
toggle() {
|
|
35
|
-
this.hidden.update(hidden => !hidden);
|
|
36
|
-
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FabService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
38
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FabService, providedIn: 'root' }); }
|
|
39
|
-
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: FabService, decorators: [{
|
|
41
|
-
type: Injectable,
|
|
42
|
-
args: [{
|
|
43
|
-
providedIn: 'root'
|
|
44
|
-
}]
|
|
45
|
-
}] });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2ZhYi9mYWIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDOztBQUsvRCxNQUFNLE9BQU8sVUFBVTtJQUh2QjtRQUlXLFdBQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDekMsV0FBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDdkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxFQUMvQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDMUMsQ0FBQztRQUVPLFNBQUksR0FBRyxhQUFhLENBQUMsR0FBRyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3JCLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUNqQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFTSxZQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUMvQixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxDQUFDO2dCQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRTtnQkFDMUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0tBcUJKO0lBbkJTLGFBQWEsQ0FBQyxLQUFxQjtRQUN6QyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbEIsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDM0IsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7OEdBdkNVLFVBQVU7a0hBQVYsVUFBVSxjQUZULE1BQU07OzJGQUVQLFVBQVU7a0JBSHRCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgSW5qZWN0YWJsZSwgaXNTaWduYWwsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5nLWF0b21pYy9jb3JlJztcbmltcG9ydCB7IGNvbXB1dGVkQXN5bmMgfSBmcm9tICduZ3h0ZW5zaW9uL2NvbXB1dGVkLWFzeW5jJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGYWJTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgaGlkZGVuID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICByZWFkb25seSByb3V0ZSQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICBtYXAoKCkgPT4gdGhpcy5maW5kTGFzdENoaWxkKHRoaXMucm91dGUpKSxcbiAgKTtcblxuICByZWFkb25seSBkYXRhID0gY29tcHV0ZWRBc3luYygoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGUkLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHJvdXRlKSA9PiByb3V0ZS5kYXRhKSxcbiAgICApO1xuICB9KTtcblxuICByZWFkb25seSBhY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBpc1NpZ25hbCh0aGlzLmRhdGEoKT8uZmFiQWN0aW9ucylcbiAgICAgID8gdGhpcy5kYXRhKCkuZmFiQWN0aW9ucygpXG4gICAgICA6IHRoaXMuZGF0YSgpPy5mYWJBY3Rpb25zIHx8IFtdO1xuICB9KTtcblxuICBwcml2YXRlIGZpbmRMYXN0Q2hpbGQocm91dGU6IEFjdGl2YXRlZFJvdXRlKTogQWN0aXZhdGVkUm91dGUge1xuICAgIGxldCBjaGlsZCA9IHJvdXRlO1xuICAgIHdoaWxlIChjaGlsZC5maXJzdENoaWxkKSB7XG4gICAgICBjaGlsZCA9IGNoaWxkLmZpcnN0Q2hpbGQ7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHNob3coKSB7XG4gICAgdGhpcy5oaWRkZW4uc2V0KGZhbHNlKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5oaWRkZW4uc2V0KHRydWUpO1xuICB9XG5cbiAgdG9nZ2xlKCkge1xuICAgIHRoaXMuaGlkZGVuLnVwZGF0ZShoaWRkZW4gPT4gIWhpZGRlbik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './fab.service';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2ZhYi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZmFiLnNlcnZpY2UnO1xuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1mYWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2ZhYi9uZy1hdG9taWMtY29tbW9uLXNlcnZpY2VzLWZhYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './index.service';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0vX2luZGV4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2luZGV4LnNlcnZpY2UnOyJdfQ==
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from "@angular/core";
|
|
2
|
-
import { FormBuilder } from "@angular/forms";
|
|
3
|
-
import { PaginationService } from "@ng-atomic/common/services/form/pagination";
|
|
4
|
-
import { SortService } from "@ng-atomic/common/services/form/sort";
|
|
5
|
-
import { injectProps } from "@ng-atomic/common/pipes/domain";
|
|
6
|
-
import { ColumnsFormBuilder, buildColumns } from "@ng-atomic/common/services/form/columns";
|
|
7
|
-
import { omitBy } from "lodash-es";
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export { buildColumns };
|
|
10
|
-
export class IndexFormBuilder {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.columns = inject(ColumnsFormBuilder);
|
|
13
|
-
this.sort = inject(SortService);
|
|
14
|
-
this.pagination = inject(PaginationService);
|
|
15
|
-
this.fb = inject(FormBuilder);
|
|
16
|
-
}
|
|
17
|
-
build({ query = undefined, sort = {}, page, columns = buildColumns(['__checkbox', ...injectProps()(), '__actions']) } = {}) {
|
|
18
|
-
const omit = (obj) => omitBy(obj, value => value === undefined);
|
|
19
|
-
return this.fb.group(omit({
|
|
20
|
-
query: typeof query !== 'undefined' ? this.fb.control(query) : undefined,
|
|
21
|
-
page: page ? this.pagination.build(page) : undefined,
|
|
22
|
-
sort: this.sort.build(sort),
|
|
23
|
-
columns: this.columns.build(columns),
|
|
24
|
-
}));
|
|
25
|
-
}
|
|
26
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
27
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexFormBuilder, providedIn: 'root' }); }
|
|
28
|
-
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: IndexFormBuilder, decorators: [{
|
|
30
|
-
type: Injectable,
|
|
31
|
-
args: [{ providedIn: 'root' }]
|
|
32
|
-
}] });
|
|
33
|
-
export function injectIndexFormBuilder() {
|
|
34
|
-
return inject(IndexFormBuilder);
|
|
35
|
-
}
|
|
36
|
-
export function injectIndexForm({ columns = undefined, sort = undefined, query = undefined, page = undefined } = {}) {
|
|
37
|
-
return injectIndexFormBuilder().build({
|
|
38
|
-
columns,
|
|
39
|
-
sort,
|
|
40
|
-
query,
|
|
41
|
-
page,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
export {
|
|
45
|
-
/** @deprecates use instead `IndexFormBuilder` */
|
|
46
|
-
IndexFormBuilder as IndexTemplateFormBuilder,
|
|
47
|
-
/** @deprecates use instead `injectIndexForm` */
|
|
48
|
-
injectIndexForm as injectIndexTemplateForm,
|
|
49
|
-
/** @deprecates use instead `injectIndexFormBuilder` */
|
|
50
|
-
injectIndexFormBuilder as injectIndexTemplateFormBuilder, };
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9faW5kZXgvaW5kZXguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BHLE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQW9CLE1BQU0seUNBQXlDLENBQUM7QUFDN0csT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBR3hCLE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFVyxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7UUFDdEMsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztLQXFCbkM7SUFuQkMsS0FBSyxDQUFDLEVBQ0osS0FBSyxHQUFHLFNBQVMsRUFDakIsSUFBSSxHQUFHLEVBQUUsRUFDVCxJQUFJLEVBQ0osT0FBTyxHQUFHLFlBQVksQ0FBQyxDQUFDLFlBQVksRUFBRSxHQUFHLFdBQVcsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsS0FNckUsRUFBRTtRQUNKLE1BQU0sSUFBSSxHQUFHLENBQW1CLEdBQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQU0sQ0FBQztRQUMxRixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUN4QixLQUFLLEVBQUUsT0FBTyxLQUFLLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN4RSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNwRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDckMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDOzhHQXhCVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQURILE1BQU07OzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQTZCbEMsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLEVBQzlCLE9BQU8sR0FBRyxTQUFTLEVBQ25CLElBQUksR0FBRyxTQUFTLEVBQ2hCLEtBQUssR0FBRyxTQUFTLEVBQ2pCLElBQUksR0FBRyxTQUFTLEtBTWQsRUFBRTtJQUNKLE9BQU8sc0JBQXNCLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDcEMsT0FBTztRQUNQLElBQUk7UUFDSixLQUFLO1FBQ0wsSUFBSTtLQUNMLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxPQUFPO0FBQ0wsaURBQWlEO0FBQ2pELGdCQUFnQixJQUFJLHdCQUF3QjtBQUM1QyxnREFBZ0Q7QUFDaEQsZUFBZSxJQUFJLHVCQUF1QjtBQUMxQyx1REFBdUQ7QUFDdkQsc0JBQXNCLElBQUksOEJBQThCLEdBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IFBhZ2luYXRpb25Gb3JtVmFsdWUsIFBhZ2luYXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2Zvcm0vcGFnaW5hdGlvblwiO1xuaW1wb3J0IHsgU29ydEZvcm1WYWx1ZSwgU29ydFNlcnZpY2UgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvZm9ybS9zb3J0XCI7XG5pbXBvcnQgeyBpbmplY3RQcm9wcyB9IGZyb20gXCJAbmctYXRvbWljL2NvbW1vbi9waXBlcy9kb21haW5cIjtcbmltcG9ydCB7IENvbHVtbnNGb3JtQnVpbGRlciwgYnVpbGRDb2x1bW5zLCBDb2x1bW5zRm9ybVZhbHVlIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2Zvcm0vY29sdW1uc1wiO1xuaW1wb3J0IHsgb21pdEJ5IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuZXhwb3J0IHsgYnVpbGRDb2x1bW5zIH07IFxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEluZGV4Rm9ybUJ1aWxkZXIge1xuICByZWFkb25seSBjb2x1bW5zID0gaW5qZWN0KENvbHVtbnNGb3JtQnVpbGRlcik7XG4gIHJlYWRvbmx5IHNvcnQgPSBpbmplY3QoU29ydFNlcnZpY2UpO1xuICByZWFkb25seSBwYWdpbmF0aW9uID0gaW5qZWN0KFBhZ2luYXRpb25TZXJ2aWNlKVxuICByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG5cbiAgYnVpbGQoe1xuICAgIHF1ZXJ5ID0gdW5kZWZpbmVkLFxuICAgIHNvcnQgPSB7fSxcbiAgICBwYWdlLFxuICAgIGNvbHVtbnMgPSBidWlsZENvbHVtbnMoWydfX2NoZWNrYm94JywgLi4uaW5qZWN0UHJvcHMoKSgpLCAnX19hY3Rpb25zJ10pXG4gIH06IHtcbiAgICBxdWVyeT86IHN0cmluZyxcbiAgICBwYWdlPzogUGFydGlhbDxQYWdpbmF0aW9uRm9ybVZhbHVlPixcbiAgICBzb3J0PzogUGFydGlhbDxTb3J0Rm9ybVZhbHVlPixcbiAgICBjb2x1bW5zPzogQ29sdW1uc0Zvcm1WYWx1ZSxcbiAgfSA9IHt9KSB7XG4gICAgY29uc3Qgb21pdCA9IDxUIGV4dGVuZHMgb2JqZWN0PihvYmo6IFQpID0+IG9taXRCeShvYmosIHZhbHVlID0+IHZhbHVlID09PSB1bmRlZmluZWQpIGFzIFQ7XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAob21pdCh7XG4gICAgICBxdWVyeTogdHlwZW9mIHF1ZXJ5ICE9PSAndW5kZWZpbmVkJyA/IHRoaXMuZmIuY29udHJvbChxdWVyeSkgOiB1bmRlZmluZWQsXG4gICAgICBwYWdlOiBwYWdlID8gdGhpcy5wYWdpbmF0aW9uLmJ1aWxkKHBhZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgc29ydDogdGhpcy5zb3J0LmJ1aWxkKHNvcnQpLFxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLmJ1aWxkKGNvbHVtbnMpLFxuICAgIH0pKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJbmRleEZvcm1CdWlsZGVyKCkge1xuICByZXR1cm4gaW5qZWN0KEluZGV4Rm9ybUJ1aWxkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SW5kZXhGb3JtKHtcbiAgY29sdW1ucyA9IHVuZGVmaW5lZCxcbiAgc29ydCA9IHVuZGVmaW5lZCxcbiAgcXVlcnkgPSB1bmRlZmluZWQsXG4gIHBhZ2UgPSB1bmRlZmluZWRcbn06IHtcbiAgY29sdW1ucz86IENvbHVtbnNGb3JtVmFsdWUsXG4gIHNvcnQ/OiBQYXJ0aWFsPFNvcnRGb3JtVmFsdWU+LFxuICBxdWVyeT86IHN0cmluZyxcbiAgcGFnZT86IFBhcnRpYWw8UGFnaW5hdGlvbkZvcm1WYWx1ZT4sXG59ID0ge30pIHtcbiAgcmV0dXJuIGluamVjdEluZGV4Rm9ybUJ1aWxkZXIoKS5idWlsZCh7XG4gICAgY29sdW1ucyxcbiAgICBzb3J0LFxuICAgIHF1ZXJ5LFxuICAgIHBhZ2UsXG4gIH0pO1xufVxuXG5leHBvcnQge1xuICAvKiogQGRlcHJlY2F0ZXMgdXNlIGluc3RlYWQgYEluZGV4Rm9ybUJ1aWxkZXJgICovXG4gIEluZGV4Rm9ybUJ1aWxkZXIgYXMgSW5kZXhUZW1wbGF0ZUZvcm1CdWlsZGVyLFxuICAvKiogQGRlcHJlY2F0ZXMgdXNlIGluc3RlYWQgYGluamVjdEluZGV4Rm9ybWAgKi9cbiAgaW5qZWN0SW5kZXhGb3JtIGFzIGluamVjdEluZGV4VGVtcGxhdGVGb3JtLFxuICAvKiogQGRlcHJlY2F0ZXMgdXNlIGluc3RlYWQgYGluamVjdEluZGV4Rm9ybUJ1aWxkZXJgICovXG4gIGluamVjdEluZGV4Rm9ybUJ1aWxkZXIgYXMgaW5qZWN0SW5kZXhUZW1wbGF0ZUZvcm1CdWlsZGVyLFxufTtcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1mb3JtLV9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9faW5kZXgvbmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1mb3JtLV9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { inject, Injectable } from "@angular/core";
|
|
2
|
-
import { FormBuilder, Validators } from "@angular/forms";
|
|
3
|
-
import { wrapActions } from "@ng-atomic/core";
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class ColumnsFormBuilder {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.fb = inject(FormBuilder).nonNullable;
|
|
8
|
-
}
|
|
9
|
-
build(columns = {
|
|
10
|
-
ids: ['id', 'user'],
|
|
11
|
-
map: {
|
|
12
|
-
user: {
|
|
13
|
-
type: 'text',
|
|
14
|
-
headerText: 'User',
|
|
15
|
-
width: 80,
|
|
16
|
-
visible: true,
|
|
17
|
-
},
|
|
18
|
-
id: {
|
|
19
|
-
type: 'text',
|
|
20
|
-
headerText: 'ID',
|
|
21
|
-
width: 80,
|
|
22
|
-
visible: true,
|
|
23
|
-
},
|
|
24
|
-
},
|
|
25
|
-
}) {
|
|
26
|
-
return this.fb.group({
|
|
27
|
-
ids: this.fb.control(columns.ids, Validators.required),
|
|
28
|
-
map: this.fb.group(Object.entries(columns.map).reduce((obj, [key, value]) => ({
|
|
29
|
-
...obj,
|
|
30
|
-
[key]: this.buildColumnForm(value),
|
|
31
|
-
}), {})),
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
buildColumnForm(column) {
|
|
35
|
-
switch (column.type) {
|
|
36
|
-
case 'tree':
|
|
37
|
-
return this.fb.group({
|
|
38
|
-
type: this.fb.control({ value: 'tree', disabled: true }),
|
|
39
|
-
headerText: this.fb.control(column.headerText),
|
|
40
|
-
visible: this.fb.control(column.visible),
|
|
41
|
-
width: this.fb.control(column.width),
|
|
42
|
-
sticky: this.fb.control(column.sticky),
|
|
43
|
-
});
|
|
44
|
-
case 'text':
|
|
45
|
-
return this.fb.group({
|
|
46
|
-
type: this.fb.control({ value: 'text', disabled: true }),
|
|
47
|
-
visible: this.fb.control(column.visible),
|
|
48
|
-
width: this.fb.control(column.width),
|
|
49
|
-
sticky: this.fb.control(column.sticky),
|
|
50
|
-
});
|
|
51
|
-
case 'checkbox':
|
|
52
|
-
return this.fb.group({
|
|
53
|
-
type: this.fb.control({ value: 'checkbox', disabled: true }),
|
|
54
|
-
visible: this.fb.control(column.visible),
|
|
55
|
-
width: this.fb.control(column.width),
|
|
56
|
-
sticky: this.fb.control(column.sticky),
|
|
57
|
-
});
|
|
58
|
-
case 'actions':
|
|
59
|
-
return this.fb.group({
|
|
60
|
-
type: this.fb.control({ value: 'actions', disabled: true }),
|
|
61
|
-
visible: this.fb.control(column.visible),
|
|
62
|
-
width: this.fb.control(column.width),
|
|
63
|
-
actions: this.fb.control(column.actions),
|
|
64
|
-
sticky: this.fb.control(column.sticky),
|
|
65
|
-
});
|
|
66
|
-
default:
|
|
67
|
-
throw new Error(`Unknown column type: ${column.type}`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ColumnsFormBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
71
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ColumnsFormBuilder, providedIn: 'root' }); }
|
|
72
|
-
}
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ColumnsFormBuilder, decorators: [{
|
|
74
|
-
type: Injectable,
|
|
75
|
-
args: [{ providedIn: 'root' }]
|
|
76
|
-
}] });
|
|
77
|
-
export function injectColumnsForm() {
|
|
78
|
-
return inject(ColumnsFormBuilder).build();
|
|
79
|
-
}
|
|
80
|
-
function toColumns(column, i, sticky) {
|
|
81
|
-
if (typeof column === 'string') {
|
|
82
|
-
if (column === '__actions') {
|
|
83
|
-
return {
|
|
84
|
-
type: 'actions',
|
|
85
|
-
name: `actions_${i}`,
|
|
86
|
-
visible: true,
|
|
87
|
-
width: 80,
|
|
88
|
-
sticky,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
else if (column === '__checkbox') {
|
|
92
|
-
return {
|
|
93
|
-
type: 'checkbox',
|
|
94
|
-
name: 'checkbox',
|
|
95
|
-
visible: true,
|
|
96
|
-
width: 24,
|
|
97
|
-
sticky,
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
else if (column.startsWith('__tree')) {
|
|
101
|
-
return {
|
|
102
|
-
type: 'tree',
|
|
103
|
-
name: column.split('__tree_')?.[1] ?? '__tree',
|
|
104
|
-
headerText: column.split('__tree_')?.[1] ?? '',
|
|
105
|
-
visible: true,
|
|
106
|
-
width: 320,
|
|
107
|
-
sticky,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
return {
|
|
112
|
-
type: 'text',
|
|
113
|
-
name: column,
|
|
114
|
-
visible: true,
|
|
115
|
-
width: 80,
|
|
116
|
-
sticky,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
return {
|
|
122
|
-
type: 'actions',
|
|
123
|
-
name: `actions_${i}`,
|
|
124
|
-
visible: true,
|
|
125
|
-
width: 80,
|
|
126
|
-
sticky,
|
|
127
|
-
actions: wrapActions(column),
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
export function buildColumns(columns, { stickyStart = 0, stickyEnd = 0, } = {}) {
|
|
132
|
-
const _columns = columns.map((column, i) => toColumns(column, i, i < stickyStart || i >= columns.length - stickyEnd));
|
|
133
|
-
return {
|
|
134
|
-
ids: _columns.map((column) => column.name),
|
|
135
|
-
map: _columns.reduce((obj, column) => ({ ...obj, [column.name]: column }), {}),
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9mb3JtL2NvbHVtbnMvY29sdW1ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYSxXQUFXLEVBQXNDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBVyxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUF5Q3ZELE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUM7S0FnRXpEO0lBOURDLEtBQUssQ0FBQyxVQUE0QjtRQUNoQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1FBQ25CLEdBQUcsRUFBRTtZQUNILElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsTUFBZTtnQkFDckIsVUFBVSxFQUFFLE1BQU07Z0JBQ2xCLEtBQUssRUFBRSxFQUFFO2dCQUNULE9BQU8sRUFBRSxJQUFJO2FBQ2Q7WUFDRCxFQUFFLEVBQUU7Z0JBQ0YsSUFBSSxFQUFFLE1BQU07Z0JBQ1osVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLEtBQUssRUFBRSxFQUFFO2dCQUNULE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRjtLQUNGO1FBQ0MsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3RELEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FB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QyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQzFDLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0tBQzdFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1SZWNvcmQsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEFjdGlvbnMsIHdyYXBBY3Rpb25zIH0gZnJvbSBcIkBuZy1hdG9taWMvY29yZVwiO1xuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL21vZGVsc1wiO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25zQ29sdW1uRm9ybSA9IEZvcm1Hcm91cDx7XG4gIHR5cGU6IEZvcm1Db250cm9sPCdhY3Rpb25zJz4sXG4gIHZpc2libGU6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxuICB3aWR0aDogRm9ybUNvbnRyb2w8bnVtYmVyPixcbiAgYWN0aW9uczogRm9ybUNvbnRyb2w8YW55PixcbiAgc3RpY2t5OiBGb3JtQ29udHJvbDxib29sZWFuPixcbn0+O1xuXG5leHBvcnQgdHlwZSBDaGVja2JveENvbHVtbkZvcm0gPSBGb3JtR3JvdXA8e1xuICB0eXBlOiBGb3JtQ29udHJvbDwnY2hlY2tib3gnPixcbiAgdmlzaWJsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHdpZHRoOiBGb3JtQ29udHJvbDxudW1iZXI+LFxuICBzdGlja3k6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxufT47XG5cbmV4cG9ydCB0eXBlIFRleHRDb2x1bW5Gb3JtID0gRm9ybUdyb3VwPHtcbiAgdHlwZTogRm9ybUNvbnRyb2w8J3RleHQnPixcbiAgdmlzaWJsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHdpZHRoOiBGb3JtQ29udHJvbDxudW1iZXI+LFxuICBzdGlja3k6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxufT47XG5cbmV4cG9ydCB0eXBlIFRyZWVDb2x1bW5Gb3JtID0gRm9ybUdyb3VwPHtcbiAgdHlwZTogRm9ybUNvbnRyb2w8J3RyZWUnPixcbiAgaGVhZGVyVGV4dDogRm9ybUNvbnRyb2w8c3RyaW5nPixcbiAgdmlzaWJsZTogRm9ybUNvbnRyb2w8Ym9vbGVhbj4sXG4gIHdpZHRoOiBGb3JtQ29udHJvbDxudW1iZXI+LFxuICBzdGlja3k6IEZvcm1Db250cm9sPGJvb2xlYW4+LFxufT47XG5cbmV4cG9ydCB0eXBlIENvbHVtbnNGb3JtID0gRm9ybUFycmF5PEZvcm1SZWNvcmQ8QWN0aW9uc0NvbHVtbkZvcm0gfCBDaGVja2JveENvbHVtbkZvcm0gfCBUZXh0Q29sdW1uRm9ybSB8IFRyZWVDb2x1bW5Gb3JtPj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uc0Zvcm1WYWx1ZSB7XG4gIGlkczogc3RyaW5nW10sXG4gIG1hcDogeyBba2V5OiBzdHJpbmddOiBDb2x1bW4gfSxcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgQ29sdW1uc0Zvcm1CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZTtcblxuICBidWlsZChjb2x1bW5zOiBDb2x1bW5zRm9ybVZhbHVlID0ge1xuICAgIGlkczogWydpZCcsICd1c2VyJ10sXG4gICAgbWFwOiB7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIHR5cGU6ICd0ZXh0JyBhcyBjb25zdCxcbiAgICAgICAgaGVhZGVyVGV4dDogJ1VzZXInLFxuICAgICAgICB3aWR0aDogODAsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgaWQ6IHtcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBoZWFkZXJUZXh0OiAnSUQnLFxuICAgICAgICB3aWR0aDogODAsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pIHtcbiAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZHM6IHRoaXMuZmIuY29udHJvbChjb2x1bW5zLmlkcywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICBtYXA6IHRoaXMuZmIuZ3JvdXAoT2JqZWN0LmVudHJpZXMoY29sdW1ucy5tYXApLnJlZHVjZSgob2JqLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIC4uLm9iaixcbiAgICAgICAgW2tleV06IHRoaXMuYnVpbGRDb2x1bW5Gb3JtKHZhbHVlKSxcbiAgICAgIH0pLCB7fSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGJ1aWxkQ29sdW1uRm9ybShjb2x1bW46IENvbHVtbikge1xuICAgIHN3aXRjaCAoY29sdW1uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RyZWUnOlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5mYi5jb250cm9sKHt2YWx1ZTogJ3RyZWUnIGFzIGNvbnN0LCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgICAgICAgIGhlYWRlclRleHQ6IHRoaXMuZmIuY29udHJvbChjb2x1bW4uaGVhZGVyVGV4dCksXG4gICAgICAgICAgdmlzaWJsZTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi52aXNpYmxlKSxcbiAgICAgICAgICB3aWR0aDogdGhpcy5mYi5jb250cm9sKGNvbHVtbi53aWR0aCksXG4gICAgICAgICAgc3RpY2t5OiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLnN0aWNreSksXG4gICAgICAgIH0pIGFzIFRyZWVDb2x1bW5Gb3JtO1xuICAgICAgY2FzZSAndGV4dCc6IFxuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5mYi5jb250cm9sKHt2YWx1ZTogJ3RleHQnIGFzIGNvbnN0LCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgICAgICAgIHZpc2libGU6IHRoaXMuZmIuY29udHJvbChjb2x1bW4udmlzaWJsZSksXG4gICAgICAgICAgd2lkdGg6IHRoaXMuZmIuY29udHJvbChjb2x1bW4ud2lkdGgpLFxuICAgICAgICAgIHN0aWNreTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi5zdGlja3kpLFxuICAgICAgICB9KSBhcyBUZXh0Q29sdW1uRm9ybTtcbiAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgIHR5cGU6IHRoaXMuZmIuY29udHJvbCh7dmFsdWU6ICdjaGVja2JveCcgYXMgY29uc3QsIGRpc2FibGVkOiB0cnVlfSksXG4gICAgICAgICAgdmlzaWJsZTogdGhpcy5mYi5jb250cm9sKGNvbHVtbi52aXNpYmxlKSxcbiAgICAgICAgICB3aWR0aDogdGhpcy5mYi5jb250cm9sKGNvbHVtbi53aWR0aCksXG4gICAgICAgICAgc3RpY2t5OiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLnN0aWNreSksXG4gICAgICAgIH0pIGFzIENoZWNrYm94Q29sdW1uRm9ybTtcbiAgICAgIGNhc2UgJ2FjdGlvbnMnOlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgdHlwZTogdGhpcy5mYi5jb250cm9sKHt2YWx1ZTogJ2FjdGlvbnMnIGFzIGNvbnN0LCBkaXNhYmxlZDogdHJ1ZX0pLFxuICAgICAgICAgIHZpc2libGU6IHRoaXMuZmIuY29udHJvbChjb2x1bW4udmlzaWJsZSksXG4gICAgICAgICAgd2lkdGg6IHRoaXMuZmIuY29udHJvbChjb2x1bW4ud2lkdGgpLFxuICAgICAgICAgIGFjdGlvbnM6IHRoaXMuZmIuY29udHJvbChjb2x1bW4uYWN0aW9ucyksXG4gICAgICAgICAgc3RpY2t5OiB0aGlzLmZiLmNvbnRyb2woY29sdW1uLnN0aWNreSksXG4gICAgICAgIH0pIGFzIEFjdGlvbnNDb2x1bW5Gb3JtO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGNvbHVtbiB0eXBlOiAkeyhjb2x1bW4gYXMgYW55KS50eXBlfWApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q29sdW1uc0Zvcm0oKSB7XG4gIHJldHVybiBpbmplY3QoQ29sdW1uc0Zvcm1CdWlsZGVyKS5idWlsZCgpO1xufVxuXG5mdW5jdGlvbiB0b0NvbHVtbnMoY29sdW1uOiAoc3RyaW5nIHwgQWN0aW9ucyksIGk6IG51bWJlciwgc3RpY2t5OiBib29sZWFuKTogQ29sdW1uIHtcbiAgaWYgKHR5cGVvZiBjb2x1bW4gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKGNvbHVtbiA9PT0gJ19fYWN0aW9ucycpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdhY3Rpb25zJyxcbiAgICAgICAgbmFtZTogYGFjdGlvbnNfJHtpfWAsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiA4MCxcbiAgICAgICAgc3RpY2t5LFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29sdW1uID09PSAnX19jaGVja2JveCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgICAgIG5hbWU6ICdjaGVja2JveCcsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiAyNCxcbiAgICAgICAgc3RpY2t5LFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY29sdW1uLnN0YXJ0c1dpdGgoJ19fdHJlZScpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAndHJlZScsXG4gICAgICAgIG5hbWU6IGNvbHVtbi5zcGxpdCgnX190cmVlXycpPy5bMV0gPz8gJ19fdHJlZScsXG4gICAgICAgIGhlYWRlclRleHQ6IGNvbHVtbi5zcGxpdCgnX190cmVlXycpPy5bMV0gPz8gJycsXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiAzMjAsXG4gICAgICAgIHN0aWNreSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICBuYW1lOiBjb2x1bW4sXG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiA4MCxcbiAgICAgICAgc3RpY2t5LFxuICAgICAgfTtcbiAgICB9ICAgICAgXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6ICdhY3Rpb25zJyxcbiAgICAgIG5hbWU6IGBhY3Rpb25zXyR7aX1gLFxuICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgIHdpZHRoOiA4MCxcbiAgICAgIHN0aWNreSxcbiAgICAgIGFjdGlvbnM6IHdyYXBBY3Rpb25zKGNvbHVtbiksXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRDb2x1bW5zKGNvbHVtbnM6IChzdHJpbmcgfCBBY3Rpb25zKVtdLCB7XG4gIHN0aWNreVN0YXJ0ID0gMCxcbiAgc3RpY2t5RW5kID0gMCxcbn06IHtcbiAgc3RpY2t5U3RhcnQ/OiBudW1iZXIsXG4gIHN0aWNreUVuZD86IG51bWJlcixcbn0gPSB7fSk6IHtpZHM6IHN0cmluZ1tdLCBtYXA6IHtba2V5OiBzdHJpbmddOiBDb2x1bW59fSB7XG4gIGNvbnN0IF9jb2x1bW5zID0gY29sdW1ucy5tYXAoKGNvbHVtbiwgaSkgPT4gdG9Db2x1bW5zKGNvbHVtbiwgaSwgaSA8IHN0aWNreVN0YXJ0IHx8IGkgPj0gY29sdW1ucy5sZW5ndGggLSBzdGlja3lFbmQpKTtcbiAgcmV0dXJuIHtcbiAgICBpZHM6IF9jb2x1bW5zLm1hcCgoY29sdW1uKSA9PiBjb2x1bW4ubmFtZSksXG4gICAgbWFwOiBfY29sdW1ucy5yZWR1Y2UoKG9iaiwgY29sdW1uKSA9PiAoey4uLm9iaiwgW2NvbHVtbi5uYW1lXTogY29sdW1ufSksIHt9KSxcbiAgfTtcbn0iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './columns.service';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0vY29sdW1ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb2x1bW5zLnNlcnZpY2UnOyJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1mb3JtLWNvbHVtbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0vY29sdW1ucy9uZy1hdG9taWMtY29tbW9uLXNlcnZpY2VzLWZvcm0tY29sdW1ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { toObject, isIsoString } from '@ng-atomic/common/utils';
|
|
2
|
-
import dayjs from 'dayjs';
|
|
3
|
-
import { unflatten, flatten } from 'flat';
|
|
4
|
-
import { omit, pick } from 'lodash-es';
|
|
5
|
-
const isNumeric = (v) => !isNaN(Number(v));
|
|
6
|
-
const parseQueryString = (v, key) => key.match(/id$/i)
|
|
7
|
-
? v
|
|
8
|
-
: typeof v === 'string' && isIsoString(v)
|
|
9
|
-
? dayjs(v)
|
|
10
|
-
: v === ''
|
|
11
|
-
? v
|
|
12
|
-
: isNumeric(v)
|
|
13
|
-
? Number(v)
|
|
14
|
-
: v;
|
|
15
|
-
export class BaseFormService {
|
|
16
|
-
static fromQueryParams(obj) {
|
|
17
|
-
return Object.entries(unflatten(obj)?.form ?? {}).reduce((m, [k, v]) => ({
|
|
18
|
-
...m, [k]: parseQueryString(v, k),
|
|
19
|
-
}), {});
|
|
20
|
-
}
|
|
21
|
-
static toQueryParams(obj) {
|
|
22
|
-
return flatten({ form: Object.entries(obj).reduce((m, [k, v]) => ({
|
|
23
|
-
...m, [k]: dayjs.isDayjs(v) ? v.isValid() ? v.toISOString() : null : v,
|
|
24
|
-
}), {}) });
|
|
25
|
-
}
|
|
26
|
-
static dayjsKeys(object) {
|
|
27
|
-
return Object.entries(object).filter(([_, v]) => dayjs.isDayjs(v)).map(([k]) => k);
|
|
28
|
-
}
|
|
29
|
-
static toValue(object) {
|
|
30
|
-
const keys = this.dayjsKeys(object);
|
|
31
|
-
return { ...flatten(omit(toObject(object), keys)), ...pick(toObject(object), keys) };
|
|
32
|
-
}
|
|
33
|
-
static fromValue(value) {
|
|
34
|
-
const keys = this.dayjsKeys(value);
|
|
35
|
-
return { ...unflatten(omit(value, keys)), ...pick(value, keys) };
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9mb3JtL2Zvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV2QyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVMsRUFBVyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFNUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQVMsRUFBRSxHQUFXLEVBQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3pFLENBQUMsQ0FBQyxDQUFDO0lBQ0gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFO1lBQ1YsQ0FBQyxDQUFDLENBQUM7WUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDZCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRU4sTUFBTSxPQUFPLGVBQWU7SUFDMUIsTUFBTSxDQUFDLGVBQWUsQ0FBSSxHQUFNO1FBQzlCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBRSxTQUFTLENBQUMsR0FBRyxDQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2xDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFJLEdBQVc7UUFDakMsT0FBTyxPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9ELEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN2RSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBYztRQUM3QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFjO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsT0FBTyxFQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQzVCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkMsT0FBTyxFQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b09iamVjdCwgaXNJc29TdHJpbmcgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi91dGlscyc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgdW5mbGF0dGVuLCBmbGF0dGVuIH0gZnJvbSAnZmxhdCc7XG5pbXBvcnQgeyBvbWl0LCBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuY29uc3QgaXNOdW1lcmljID0gKHY6IHN0cmluZyk6IGJvb2xlYW4gPT4gIWlzTmFOKE51bWJlcih2KSk7XG5cbmNvbnN0IHBhcnNlUXVlcnlTdHJpbmcgPSAodjogc3RyaW5nLCBrZXk6IHN0cmluZyk6IGFueSA9PiBrZXkubWF0Y2goL2lkJC9pKSBcbiAgPyB2XG4gIDogdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIGlzSXNvU3RyaW5nKHYpIFxuICA/IGRheWpzKHYpIFxuICA6IHYgPT09ICcnXG4gID8gdlxuICA6IGlzTnVtZXJpYyh2KVxuICA/IE51bWJlcih2KVxuICA6IHY7XG5cbmV4cG9ydCBjbGFzcyBCYXNlRm9ybVNlcnZpY2Uge1xuICBzdGF0aWMgZnJvbVF1ZXJ5UGFyYW1zPFQ+KG9iajogVCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKCh1bmZsYXR0ZW4ob2JqKSBhcyBhbnkpPy5mb3JtID8/IHt9KS5yZWR1Y2UoKG0sIFtrLCB2XTogW3N0cmluZywgc3RyaW5nXSkgPT4gKHtcbiAgICAgIC4uLm0sIFtrXTogcGFyc2VRdWVyeVN0cmluZyh2LCBrKSxcbiAgICB9KSwge30pO1xuICB9XG5cbiAgc3RhdGljIHRvUXVlcnlQYXJhbXM8VD4ob2JqOiBvYmplY3QpOiBUIHsgICAgXG4gICAgcmV0dXJuIGZsYXR0ZW4oe2Zvcm06IE9iamVjdC5lbnRyaWVzKG9iaikucmVkdWNlKChtLCBbaywgdl0pID0+ICh7XG4gICAgICAuLi5tLCBba106IGRheWpzLmlzRGF5anModikgPyB2LmlzVmFsaWQoKSA/IHYudG9JU09TdHJpbmcoKSA6IG51bGwgOiB2LFxuICAgIH0pLCB7fSl9KTtcbiAgfVxuXG4gIHN0YXRpYyBkYXlqc0tleXMob2JqZWN0OiBvYmplY3QpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG9iamVjdCkuZmlsdGVyKChbXywgdl0pID0+IGRheWpzLmlzRGF5anModikpLm1hcCgoW2tdKSA9PiBrKTtcbiAgfVxuXG4gIHN0YXRpYyB0b1ZhbHVlKG9iamVjdDogb2JqZWN0KTogb2JqZWN0IHtcbiAgICBjb25zdCBrZXlzID0gdGhpcy5kYXlqc0tleXMob2JqZWN0KTtcbiAgICByZXR1cm4gey4uLmZsYXR0ZW4ob21pdCh0b09iamVjdChvYmplY3QpLCBrZXlzKSksIC4uLnBpY2sodG9PYmplY3Qob2JqZWN0KSwga2V5cyl9O1xuICB9XG5cbiAgc3RhdGljIGZyb21WYWx1ZSh2YWx1ZTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICBjb25zdCBrZXlzID0gdGhpcy5kYXlqc0tleXModmFsdWUpO1xuICAgIHJldHVybiB7Li4udW5mbGF0dGVuKG9taXQodmFsdWUsIGtleXMpKSwgLi4ucGljayh2YWx1ZSwga2V5cyl9O1xuICB9XG59Il19
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './form.service';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9ybS5zZXJ2aWNlJztcbiJdfQ==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export * from './json-schema.service';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0vanNvbi1zY2hlbWEvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vanNvbi1zY2hlbWEuc2VydmljZSc7Il19
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { ValidationTypes } from "class-validator";
|
|
2
|
-
import { targetConstructorToSchema as _targetConstructorToSchema } from "class-validator-jsonschema";
|
|
3
|
-
// TODO(@NozomuMiyamoto): fix
|
|
4
|
-
// @ts-ignore
|
|
5
|
-
// const { defaultMetadataStorage } = require('class-transformer/cjs/storage');
|
|
6
|
-
import { defaultMetadataStorage } from 'class-transformer/esm5/storage';
|
|
7
|
-
function getPropType(target, property) {
|
|
8
|
-
return Reflect.getMetadata('design:type', target, property);
|
|
9
|
-
}
|
|
10
|
-
function targetToSchema(type, options) {
|
|
11
|
-
if (typeof type === 'function') {
|
|
12
|
-
if (type.prototype === String.prototype ||
|
|
13
|
-
type.prototype === Symbol.prototype) {
|
|
14
|
-
return { type: 'string' };
|
|
15
|
-
}
|
|
16
|
-
else if (type.prototype === Number.prototype) {
|
|
17
|
-
return { type: 'number' };
|
|
18
|
-
}
|
|
19
|
-
else if (type.prototype === Boolean.prototype) {
|
|
20
|
-
return { type: 'boolean' };
|
|
21
|
-
}
|
|
22
|
-
return targetConstructorToSchema(type, options);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
const additionalConverters = {
|
|
26
|
-
[ValidationTypes.NESTED_VALIDATION]: (meta, options) => {
|
|
27
|
-
if (typeof meta.target === 'function') {
|
|
28
|
-
const typeMeta = options.classTransformerMetadataStorage
|
|
29
|
-
? options.classTransformerMetadataStorage.findTypeMetadata(meta.target, meta.propertyName)
|
|
30
|
-
: null;
|
|
31
|
-
const childType = typeMeta
|
|
32
|
-
? typeMeta.typeFunction()
|
|
33
|
-
: getPropType(meta.target.prototype, meta.propertyName);
|
|
34
|
-
return targetToSchema(childType, options);
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
isDayjs: (meta) => {
|
|
38
|
-
return {
|
|
39
|
-
type: 'string',
|
|
40
|
-
format: 'date-time', // JSON Schemaで日付型を指定
|
|
41
|
-
};
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
export function targetConstructorToSchema(target, options = {}) {
|
|
45
|
-
return _targetConstructorToSchema(target, {
|
|
46
|
-
...options,
|
|
47
|
-
additionalConverters,
|
|
48
|
-
classTransformerMetadataStorage: defaultMetadataStorage,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2Zvcm0vanNvbi1zY2hlbWEvanNvbi1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ2pELE9BQU8sRUFBRSx5QkFBeUIsSUFBSSwwQkFBMEIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBR3BHLDZCQUE2QjtBQUM3QixhQUFhO0FBQ2IsK0VBQStFO0FBQy9FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhFLFNBQVMsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUFnQjtJQUNuRCxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUM3RCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQ3JCLElBQVMsRUFDVCxPQUFZO0lBRVosSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMvQixJQUNFLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLFNBQVM7WUFDbkMsSUFBSSxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUNuQyxDQUFDO1lBQ0QsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQTtRQUMzQixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO1FBQzNCLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hELE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUE7UUFDNUIsQ0FBQztRQUVELE9BQU8seUJBQXlCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ2pELENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxvQkFBb0IsR0FBRTtJQUMxQixDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsSUFBUyxFQUFFLE9BQVksRUFBRSxFQUFFO1FBQy9ELElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQywrQkFBK0I7Z0JBQ3RELENBQUMsQ0FBQyxPQUFPLENBQUMsK0JBQStCLENBQUMsZ0JBQWdCLENBQ3RELElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLFlBQVksQ0FDbEI7Z0JBQ0gsQ0FBQyxDQUFDLElBQUksQ0FBQTtZQUNSLE1BQU0sU0FBUyxHQUFHLFFBQVE7Z0JBQ3hCLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO2dCQUN6QixDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtZQUN6RCxPQUFPLGNBQWMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQyxJQUFTLEVBQWUsRUFBRTtRQUNsQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVE7WUFDZCxNQUFNLEVBQUUsV0FBVyxFQUFFLHFCQUFxQjtTQUMzQyxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUM7QUFFRixNQUFNLFVBQVUseUJBQXlCLENBQUMsTUFBZ0IsRUFBRSxVQUE2QixFQUFFO0lBQ3pGLE9BQU8sMEJBQTBCLENBQUMsTUFBTSxFQUFFO1FBQ3hDLEdBQUcsT0FBTztRQUNWLG9CQUFvQjtRQUNwQiwrQkFBK0IsRUFBRSxzQkFBc0I7S0FDeEQsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRpb25UeXBlcyB9IGZyb20gXCJjbGFzcy12YWxpZGF0b3JcIlxuaW1wb3J0IHsgdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSBhcyBfdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSB9IGZyb20gXCJjbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYVwiXG5pbXBvcnQgeyBJT3B0aW9ucyB9IGZyb20gXCJjbGFzcy12YWxpZGF0b3ItanNvbnNjaGVtYS9idWlsZC9vcHRpb25zXCI7XG5pbXBvcnQgeyBKU09OU2NoZW1hNyB9IGZyb20gJ2pzb24tc2NoZW1hJztcbi8vIFRPRE8oQE5vem9tdU1peWFtb3RvKTogZml4XG4vLyBAdHMtaWdub3JlXG4vLyBjb25zdCB7IGRlZmF1bHRNZXRhZGF0YVN0b3JhZ2UgfSA9IHJlcXVpcmUoJ2NsYXNzLXRyYW5zZm9ybWVyL2Nqcy9zdG9yYWdlJyk7XG5pbXBvcnQgeyBkZWZhdWx0TWV0YWRhdGFTdG9yYWdlIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXIvZXNtNS9zdG9yYWdlJztcblxuZnVuY3Rpb24gZ2V0UHJvcFR5cGUodGFyZ2V0OiBvYmplY3QsIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIFJlZmxlY3QuZ2V0TWV0YWRhdGEoJ2Rlc2lnbjp0eXBlJywgdGFyZ2V0LCBwcm9wZXJ0eSlcbn1cblxuZnVuY3Rpb24gdGFyZ2V0VG9TY2hlbWEoXG4gIHR5cGU6IGFueSxcbiAgb3B0aW9uczogYW55XG4pOiBhbnkge1xuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoXG4gICAgICB0eXBlLnByb3RvdHlwZSA9PT0gU3RyaW5nLnByb3RvdHlwZSB8fFxuICAgICAgdHlwZS5wcm90b3R5cGUgPT09IFN5bWJvbC5wcm90b3R5cGVcbiAgICApIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdzdHJpbmcnIH1cbiAgICB9IGVsc2UgaWYgKHR5cGUucHJvdG90eXBlID09PSBOdW1iZXIucHJvdG90eXBlKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiAnbnVtYmVyJyB9XG4gICAgfSBlbHNlIGlmICh0eXBlLnByb3RvdHlwZSA9PT0gQm9vbGVhbi5wcm90b3R5cGUpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6ICdib29sZWFuJyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEodHlwZSwgb3B0aW9ucylcbiAgfVxufVxuXG5jb25zdCBhZGRpdGlvbmFsQ29udmVydGVycz0ge1xuICBbVmFsaWRhdGlvblR5cGVzLk5FU1RFRF9WQUxJREFUSU9OXTogKG1ldGE6IGFueSwgb3B0aW9uczogYW55KSA9PiB7XG4gICAgaWYgKHR5cGVvZiBtZXRhLnRhcmdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uc3QgdHlwZU1ldGEgPSBvcHRpb25zLmNsYXNzVHJhbnNmb3JtZXJNZXRhZGF0YVN0b3JhZ2VcbiAgICAgICAgPyBvcHRpb25zLmNsYXNzVHJhbnNmb3JtZXJNZXRhZGF0YVN0b3JhZ2UuZmluZFR5cGVNZXRhZGF0YShcbiAgICAgICAgICAgIG1ldGEudGFyZ2V0LFxuICAgICAgICAgICAgbWV0YS5wcm9wZXJ0eU5hbWVcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbFxuICAgICAgY29uc3QgY2hpbGRUeXBlID0gdHlwZU1ldGFcbiAgICAgICAgPyB0eXBlTWV0YS50eXBlRnVuY3Rpb24oKVxuICAgICAgICA6IGdldFByb3BUeXBlKG1ldGEudGFyZ2V0LnByb3RvdHlwZSwgbWV0YS5wcm9wZXJ0eU5hbWUpXG4gICAgICByZXR1cm4gdGFyZ2V0VG9TY2hlbWEoY2hpbGRUeXBlLCBvcHRpb25zKVxuICAgIH1cbiAgfSxcbiAgaXNEYXlqczogKG1ldGE6IGFueSk6IEpTT05TY2hlbWE3ID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICBmb3JtYXQ6ICdkYXRlLXRpbWUnLCAvLyBKU09OIFNjaGVtYeOBp+aXpeS7mOWei+OCkuaMh+WumlxuICAgIH07XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSh0YXJnZXQ6IEZ1bmN0aW9uLCBvcHRpb25zOiBQYXJ0aWFsPElPcHRpb25zPiA9IHt9KSB7XG4gIHJldHVybiBfdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYSh0YXJnZXQsIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGFkZGl0aW9uYWxDb252ZXJ0ZXJzLFxuICAgIGNsYXNzVHJhbnNmb3JtZXJNZXRhZGF0YVN0b3JhZ2U6IGRlZmF1bHRNZXRhZGF0YVN0b3JhZ2UsXG4gIH0pO1xufVxuIl19
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { Injectable, inject } from "@angular/core";
|
|
2
|
-
import { FormBuilder, Validators } from "@angular/forms";
|
|
3
|
-
import { targetConstructorToSchema } from './json-schema';
|
|
4
|
-
import { merge } from "lodash-es";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class JsonSchemaFormUtils {
|
|
7
|
-
static removeObjectPercent(value) {
|
|
8
|
-
return Object.entries(value).reduce((acc, [key, value]) => {
|
|
9
|
-
if (typeof value === 'string' && value.startsWith('%') && value.endsWith('%')) {
|
|
10
|
-
acc[key] = value.slice(1, -1);
|
|
11
|
-
}
|
|
12
|
-
else if (typeof value === 'string' && value.startsWith('%')) {
|
|
13
|
-
acc[key] = value.slice(1);
|
|
14
|
-
}
|
|
15
|
-
else if (typeof value === 'string' && value.endsWith('%')) {
|
|
16
|
-
acc[key] = value.slice(0, -1);
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
acc[key] = value;
|
|
20
|
-
}
|
|
21
|
-
return acc;
|
|
22
|
-
}, {});
|
|
23
|
-
}
|
|
24
|
-
static buildFormGroupByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, } = {}) {
|
|
25
|
-
console.debug('[buildFormGroupByJsonSchema] schema:', schema);
|
|
26
|
-
if (!schema || !schema?.properties) {
|
|
27
|
-
return fb.group({});
|
|
28
|
-
}
|
|
29
|
-
const group = {};
|
|
30
|
-
for (const key in schema.properties) {
|
|
31
|
-
const property = schema.properties[key];
|
|
32
|
-
const validators = [];
|
|
33
|
-
if (schema.required && schema.required.includes(key)) {
|
|
34
|
-
validators.push(Validators.required);
|
|
35
|
-
}
|
|
36
|
-
group[key] = this.buildFormByJsonSchemaProperty(property, { fb, value: value?.[key], validators });
|
|
37
|
-
}
|
|
38
|
-
return fb.group(group);
|
|
39
|
-
}
|
|
40
|
-
static buildFormArrayByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = [], } = {}) {
|
|
41
|
-
if (!schema || !schema.items) {
|
|
42
|
-
return fb.array([]);
|
|
43
|
-
}
|
|
44
|
-
console.debug('[buildFormArrayByJsonSchema] schema:', schema);
|
|
45
|
-
const array = fb.array([
|
|
46
|
-
this.buildFormGroupByJsonSchema(schema.items, { fb }),
|
|
47
|
-
]);
|
|
48
|
-
return array;
|
|
49
|
-
}
|
|
50
|
-
static buildFormByJsonSchemaProperty(property, { fb = inject(FormBuilder).nonNullable, value = null, validators = [], } = {}) {
|
|
51
|
-
if (property.type === 'string') {
|
|
52
|
-
if (property.format === 'date-time') {
|
|
53
|
-
return fb.control(value ?? property.default ?? null, validators);
|
|
54
|
-
}
|
|
55
|
-
else if (property.format === 'binary') {
|
|
56
|
-
return fb.control(value ?? property.default ?? null, validators);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
return fb.control(value ?? property.default ?? '', validators);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
else if (property.type === 'integer') {
|
|
63
|
-
return fb.control(value ?? property.default ?? 0, validators);
|
|
64
|
-
}
|
|
65
|
-
else if (property.type === 'number') {
|
|
66
|
-
return fb.control(value ?? property.default ?? 0, validators);
|
|
67
|
-
}
|
|
68
|
-
else if (property.type === 'object') {
|
|
69
|
-
return this.buildFormGroupByJsonSchema(property, { fb, value: (value || {}) });
|
|
70
|
-
}
|
|
71
|
-
else if (property.type === 'array') {
|
|
72
|
-
return this.buildFormArrayByJsonSchema(property, { fb, value: (value || []) });
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
static buildFormByJsonSchema(schema, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
76
|
-
return {
|
|
77
|
-
form: this.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
78
|
-
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
static buildFormFieldMapByJsonSchema(schema, options = {}) {
|
|
82
|
-
if (!schema || !schema.properties) {
|
|
83
|
-
return {
|
|
84
|
-
id: { type: 'hidden' },
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
const fieldMap = {};
|
|
88
|
-
for (const key in schema.properties) {
|
|
89
|
-
const property = schema.properties[key];
|
|
90
|
-
if (property.type === 'string') {
|
|
91
|
-
if (property.enum) {
|
|
92
|
-
fieldMap[key] = { type: 'select', options: property.enum.map((v) => ({ value: v, name: v })) };
|
|
93
|
-
}
|
|
94
|
-
else if (property.format === 'date-time') {
|
|
95
|
-
fieldMap[key] = { type: 'date' };
|
|
96
|
-
}
|
|
97
|
-
else if (property.format === 'binary') {
|
|
98
|
-
fieldMap[key] = { type: 'file' };
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
fieldMap[key] = { type: 'text' };
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
else if (property.type === 'object') {
|
|
105
|
-
const childFieldMap = this.buildFormFieldMapByJsonSchema(property, options);
|
|
106
|
-
for (const childKey in childFieldMap) {
|
|
107
|
-
fieldMap[`${key}.${childKey}`] = childFieldMap[childKey];
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
else if (property.type === 'array') {
|
|
111
|
-
const childFieldMap = this.buildFormFieldMapByJsonSchema(property.items, options);
|
|
112
|
-
for (const childKey in childFieldMap) {
|
|
113
|
-
// TODO: 正規表現でパスマッチを判定できるようにする。
|
|
114
|
-
fieldMap[`${key}.\\d+.${childKey}`] = childFieldMap[childKey];
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
fieldMap[key] = { type: property.type };
|
|
119
|
-
}
|
|
120
|
-
// const type = ? 'date' : property.type;
|
|
121
|
-
}
|
|
122
|
-
console.debug('[buildFormFieldMapByJsonSchema] fieldMap:', fieldMap);
|
|
123
|
-
console.debug('[buildFormFieldMapByJsonSchema] options.merge:', options.merge);
|
|
124
|
-
return { ...fieldMap, ...options.merge };
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
export function buildFormGroup(klass, { fb = inject(FormBuilder).nonNullable, value, }) {
|
|
128
|
-
const schema = targetConstructorToSchema(klass);
|
|
129
|
-
return this.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
130
|
-
}
|
|
131
|
-
export function buildFormFieldMap(klass, options) {
|
|
132
|
-
const schema = targetConstructorToSchema(klass);
|
|
133
|
-
const map = this.buildFormFieldMapByJsonSchema(schema, options);
|
|
134
|
-
return merge(map, options.merge);
|
|
135
|
-
}
|
|
136
|
-
export function buildForm(klass, { fb = inject(FormBuilder).nonNullable, value = {}, fieldMap = {}, } = {}) {
|
|
137
|
-
const schema = targetConstructorToSchema(klass);
|
|
138
|
-
return {
|
|
139
|
-
form: this.buildFormGroupByJsonSchema(schema, { fb, value }),
|
|
140
|
-
fieldMap: this.buildFormFieldMapByJsonSchema(schema, { merge: fieldMap }),
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
export class JsonSchemaFormService {
|
|
144
|
-
constructor() {
|
|
145
|
-
this.fb = inject(FormBuilder).nonNullable;
|
|
146
|
-
}
|
|
147
|
-
build(schema, { fb = this.fb, value = {}, } = {}) {
|
|
148
|
-
return JsonSchemaFormUtils.buildFormGroupByJsonSchema(schema, { fb, value });
|
|
149
|
-
}
|
|
150
|
-
buildFieldMap(schema, options = {}) {
|
|
151
|
-
return JsonSchemaFormUtils.buildFormFieldMapByJsonSchema(schema, options);
|
|
152
|
-
}
|
|
153
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
154
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, providedIn: 'root' }); }
|
|
155
|
-
}
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: JsonSchemaFormService, decorators: [{
|
|
157
|
-
type: Injectable,
|
|
158
|
-
args: [{ providedIn: 'root' }]
|
|
159
|
-
}] });
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbi1zY2hlbWEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZm9ybS9qc29uLXNjaGVtYS9qc29uLXNjaGVtYS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQXFDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQUVsQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBbUIsS0FBUTtRQUNuRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDeEQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5RCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMs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R0FBRyxFQUFFLEVBQ1YsUUFBUSxHQUFHLEVBQUUsTUFLWCxFQUFFO0lBQ0osTUFBTSxNQUFNLEdBQUcseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQzFELFFBQVEsRUFBRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsTUFBTSxFQUFFLEVBQUMsS0FBSyxFQUFFLFFBQVEsRUFBQyxDQUFDO0tBQ3hFLENBQUM7QUFDSixDQUFDO0FBSUQsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVVLE9BQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDO0tBb0I5QztJQWxCQyxLQUFLLENBQUMsTUFBa0IsRUFBRSxFQUN4QixFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFDWixLQUFLLEdBQUcsRUFBRSxNQUlSLEVBQUU7UUFDSixPQUFPLG1CQUFtQixDQUFDLDBCQUEwQixDQUFDLE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxhQUFhLENBQ1gsTUFBa0IsRUFDbEIsVUFFSSxFQUFFO1FBRU4sT0FBTyxtQkFBbUIsQ0FBQyw2QkFBNkIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs4R0FwQlUscUJBQXFCO2tIQUFyQixxQkFBcUIsY0FEUixNQUFNOzsyRkFDbkIscUJBQXFCO2tCQURqQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBKc29uU2NoZW1hIH0gZnJvbSBcImpzb24tc2NoZW1hLWxpYnJhcnlcIjtcbmltcG9ydCB7IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEgfSBmcm9tICcuL2pzb24tc2NoZW1hJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5leHBvcnQgY2xhc3MgSnNvblNjaGVtYUZvcm1VdGlscyB7XG4gIHN0YXRpYyByZW1vdmVPYmplY3RQZXJjZW50PFQgZXh0ZW5kcyBvYmplY3Q+KHZhbHVlOiBUKTogYW55IHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWUpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnN0YXJ0c1dpdGgoJyUnKSAmJiB2YWx1ZS5lbmRzV2l0aCgnJScpKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWUuc2xpY2UoMSwgLTEpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnN0YXJ0c1dpdGgoJyUnKSkge1xuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlLnNsaWNlKDEpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmVuZHNXaXRoKCclJykpIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZS5zbGljZSgwLCAtMSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhY2Nba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hOiBKc29uU2NoZW1hLCB7XG4gICAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICAgIHZhbHVlID0ge30sXG4gIH06IHtcbiAgICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgICB2YWx1ZT86IG9iamVjdCxcbiAgfSA9IHt9KTogRm9ybUdyb3VwIHtcbiAgICBjb25zb2xlLmRlYnVnKCdbYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWFdIHNjaGVtYTonLCBzY2hlbWEpO1xuICAgIGlmICghc2NoZW1hIHx8ICFzY2hlbWE/LnByb3BlcnRpZXMpIHtcbiAgICAgIHJldHVybiBmYi5ncm91cCh7fSk7XG4gICAgfVxuICAgIGNvbnN0IGdyb3VwOiBhbnkgPSB7fTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgY29uc3QgcHJvcGVydHkgPSBzY2hlbWEucHJvcGVydGllc1trZXldO1xuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuICBcbiAgICAgIGlmIChzY2hlbWEucmVxdWlyZWQgJiYgc2NoZW1hLnJlcXVpcmVkLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgfVxuICAgICAgZ3JvdXBba2V5XSA9IHRoaXMuYnVpbGRGb3JtQnlKc29uU2NoZW1hUHJvcGVydHkocHJvcGVydHksIHtmYiwgdmFsdWU6IHZhbHVlPy5ba2V5XSwgdmFsaWRhdG9yc30pO1xuICAgIH1cbiAgICByZXR1cm4gZmIuZ3JvdXAoZ3JvdXApO1xuICB9XG4gIFxuICBzdGF0aWMgYnVpbGRGb3JtQXJyYXlCeUpzb25TY2hlbWEoc2NoZW1hOiBKc29uU2NoZW1hLCB7XG4gICAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpLm5vbk51bGxhYmxlLFxuICAgIHZhbHVlID0gW10sXG4gIH06IHtcbiAgICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgICB2YWx1ZT86IGFueVtdLFxuICB9ID0ge30pOiBhbnkge1xuICAgIGlmICghc2NoZW1hIHx8ICFzY2hlbWEuaXRlbXMpIHtcbiAgICAgIHJldHVybiBmYi5hcnJheShbXSk7XG4gICAgfVxuICAgIGNvbnNvbGUuZGVidWcoJ1tidWlsZEZvcm1BcnJheUJ5SnNvblNjaGVtYV0gc2NoZW1hOicsIHNjaGVtYSk7XG4gICAgY29uc3QgYXJyYXkgPSBmYi5hcnJheShbXG4gICAgICB0aGlzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYS5pdGVtcywge2ZifSksXG4gICAgXSlcbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cbiAgXG4gIHN0YXRpYyBidWlsZEZvcm1CeUpzb25TY2hlbWFQcm9wZXJ0eShwcm9wZXJ0eTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IG51bGwsXG4gICAgdmFsaWRhdG9ycyA9IFtdLFxuICB9OiB7XG4gICAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gICAgdmFsdWU/OiBvYmplY3QgfCBvYmplY3RbXSxcbiAgICB2YWxpZGF0b3JzPzogYW55W10sXG4gIH0gPSB7fSk6IGFueSB7XG4gICAgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IG51bGwsIHZhbGlkYXRvcnMpO1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS5mb3JtYXQgPT09ICdiaW5hcnknKSB7XG4gICAgICAgIHJldHVybiBmYi5jb250cm9sKHZhbHVlID8/IHByb3BlcnR5LmRlZmF1bHQgPz8gbnVsbCwgdmFsaWRhdG9ycyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/ICcnLCB2YWxpZGF0b3JzKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdpbnRlZ2VyJykge1xuICAgICAgcmV0dXJuIGZiLmNvbnRyb2wodmFsdWUgPz8gcHJvcGVydHkuZGVmYXVsdCA/PyAwLCB2YWxpZGF0b3JzKTtcbiAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gZmIuY29udHJvbCh2YWx1ZSA/PyBwcm9wZXJ0eS5kZWZhdWx0ID8/IDAsIHZhbGlkYXRvcnMpO1xuICAgIH0gZWxzZSBpZiAocHJvcGVydHkudHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHByb3BlcnR5LCB7ZmIsIHZhbHVlOiAodmFsdWUgfHwge30pIGFzIG9iamVjdH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZEZvcm1BcnJheUJ5SnNvblNjaGVtYShwcm9wZXJ0eSwge2ZiLCB2YWx1ZTogKHZhbHVlIHx8IFtdKSBhcyBhbnlbXX0pO1xuICAgIH1cbiAgfVxuICBcblxuICBzdGF0aWMgYnVpbGRGb3JtQnlKc29uU2NoZW1hKHNjaGVtYTogSnNvblNjaGVtYSwge1xuICAgIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgICB2YWx1ZSA9IHt9LFxuICAgIGZpZWxkTWFwID0ge30sXG4gIH06IHtcbiAgICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgICB2YWx1ZT86IG9iamVjdCxcbiAgICBmaWVsZE1hcD86IG9iamVjdCxcbiAgfSA9IHt9KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZm9ybTogdGhpcy5idWlsZEZvcm1Hcm91cEJ5SnNvblNjaGVtYShzY2hlbWEsIHtmYiwgdmFsdWV9KSxcbiAgICAgIGZpZWxkTWFwOiB0aGlzLmJ1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hKHNjaGVtYSwge21lcmdlOiBmaWVsZE1hcH0pLFxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoXG4gICAgc2NoZW1hOiBKc29uU2NoZW1hLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIG1lcmdlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICB9ID0ge30sXG4gICk6IGFueSB7XG4gICAgaWYgKCFzY2hlbWEgfHwgIXNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogeyB0eXBlOiAnaGlkZGVuJyB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgZmllbGRNYXA6IGFueSA9IHt9O1xuICAgIFxuICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYS5wcm9wZXJ0aWVzKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IHNjaGVtYS5wcm9wZXJ0aWVzW2tleV07XG4gICAgICBpZiAocHJvcGVydHkudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHByb3BlcnR5LmVudW0pIHtcbiAgICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnc2VsZWN0Jywgb3B0aW9uczogcHJvcGVydHkuZW51bS5tYXAoKHY6IHN0cmluZykgPT4gKHsgdmFsdWU6IHYsIG5hbWU6IHYgfSkpIH07XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHkuZm9ybWF0ID09PSAnZGF0ZS10aW1lJykge1xuICAgICAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6ICdkYXRlJyB9O1xuICAgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LmZvcm1hdCA9PT0gJ2JpbmFyeScpIHtcbiAgICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAnZmlsZScgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZE1hcFtrZXldID0geyB0eXBlOiAndGV4dCcgfTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBjb25zdCBjaGlsZEZpZWxkTWFwID0gdGhpcy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShwcm9wZXJ0eSwgb3B0aW9ucyk7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRLZXkgaW4gY2hpbGRGaWVsZE1hcCkge1xuICAgICAgICAgIGZpZWxkTWFwW2Ake2tleX0uJHtjaGlsZEtleX1gXSA9IGNoaWxkRmllbGRNYXBbY2hpbGRLZXldO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5LnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgY29uc3QgY2hpbGRGaWVsZE1hcCA9IHRoaXMuYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEocHJvcGVydHkuaXRlbXMsIG9wdGlvbnMpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkS2V5IGluIGNoaWxkRmllbGRNYXApIHtcbiAgICAgICAgICAvLyBUT0RPOiDmraPopo/ooajnj77jgafjg5Hjgrnjg57jg4Pjg4HjgpLliKTlrprjgafjgY3jgovjgojjgYbjgavjgZnjgovjgIJcbiAgICAgICAgICBmaWVsZE1hcFtgJHtrZXl9LlxcXFxkKy4ke2NoaWxkS2V5fWBdID0gY2hpbGRGaWVsZE1hcFtjaGlsZEtleV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkTWFwW2tleV0gPSB7IHR5cGU6IHByb3BlcnR5LnR5cGUgfTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnN0IHR5cGUgPSAgPyAnZGF0ZScgOiBwcm9wZXJ0eS50eXBlO1xuICAgIH1cbiAgXG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hXSBmaWVsZE1hcDonLCBmaWVsZE1hcCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2J1aWxkRm9ybUZpZWxkTWFwQnlKc29uU2NoZW1hXSBvcHRpb25zLm1lcmdlOicsIG9wdGlvbnMubWVyZ2UpO1xuICBcbiAgICByZXR1cm4gey4uLmZpZWxkTWFwLCAuLi5vcHRpb25zLm1lcmdlfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtR3JvdXAoa2xhc3M6IG5ldygpID0+IGFueSwge1xuICBmYiA9IGluamVjdChGb3JtQnVpbGRlcikubm9uTnVsbGFibGUsXG4gIHZhbHVlLFxufToge1xuICBmYj86IEZvcm1CdWlsZGVyIHwgTm9uTnVsbGFibGVGb3JtQnVpbGRlcixcbiAgdmFsdWU/OiBvYmplY3QsXG59KTogRm9ybUdyb3VwIHtcbiAgY29uc3Qgc2NoZW1hID0gdGFyZ2V0Q29uc3RydWN0b3JUb1NjaGVtYShrbGFzcyk7XG4gIHJldHVybiB0aGlzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEZvcm1GaWVsZE1hcChrbGFzczogbmV3KCkgPT4gYW55LCBvcHRpb25zOiB7XG4gIG1lcmdlPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbn0pOiBhbnkge1xuICBjb25zdCBzY2hlbWEgPSB0YXJnZXRDb25zdHJ1Y3RvclRvU2NoZW1hKGtsYXNzKTtcbiAgY29uc3QgbWFwID0gdGhpcy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICByZXR1cm4gbWVyZ2UobWFwLCBvcHRpb25zLm1lcmdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybShrbGFzczogbmV3KCkgPT4gYW55LCB7XG4gIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZSxcbiAgdmFsdWUgPSB7fSxcbiAgZmllbGRNYXAgPSB7fSxcbn06IHtcbiAgZmI/OiBGb3JtQnVpbGRlciB8IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXG4gIHZhbHVlPzogb2JqZWN0LFxuICBmaWVsZE1hcD86IG9iamVjdCxcbn0gPSB7fSk6IGFueSB7XG4gIGNvbnN0IHNjaGVtYSA9IHRhcmdldENvbnN0cnVjdG9yVG9TY2hlbWEoa2xhc3MpO1xuICByZXR1cm4ge1xuICAgIGZvcm06IHRoaXMuYnVpbGRGb3JtR3JvdXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7ZmIsIHZhbHVlfSksXG4gICAgZmllbGRNYXA6IHRoaXMuYnVpbGRGb3JtRmllbGRNYXBCeUpzb25TY2hlbWEoc2NoZW1hLCB7bWVyZ2U6IGZpZWxkTWFwfSksXG4gIH07XG59XG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBKc29uU2NoZW1hRm9ybVNlcnZpY2Uge1xuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ub25OdWxsYWJsZTtcblxuICBidWlsZChzY2hlbWE6IEpzb25TY2hlbWEsIHtcbiAgICBmYiA9IHRoaXMuZmIsXG4gICAgdmFsdWUgPSB7fSxcbiAgfToge1xuICAgIGZiPzogRm9ybUJ1aWxkZXIgfCBOb25OdWxsYWJsZUZvcm1CdWlsZGVyLFxuICAgIHZhbHVlPzogb2JqZWN0LFxuICB9ID0ge30pOiBGb3JtR3JvdXAge1xuICAgIHJldHVybiBKc29uU2NoZW1hRm9ybVV0aWxzLmJ1aWxkRm9ybUdyb3VwQnlKc29uU2NoZW1hKHNjaGVtYSwge2ZiLCB2YWx1ZX0pO1xuICB9XG5cbiAgYnVpbGRGaWVsZE1hcChcbiAgICBzY2hlbWE6IEpzb25TY2hlbWEsXG4gICAgb3B0aW9uczoge1xuICAgICAgbWVyZ2U/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIH0gPSB7fSxcbiAgKTogYW55IHtcbiAgICByZXR1cm4gSnNvblNjaGVtYUZvcm1VdGlscy5idWlsZEZvcm1GaWVsZE1hcEJ5SnNvblNjaGVtYShzY2hlbWEsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
|