@elderbyte/ngx-starter 18.15.2 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/elderbyte-ngx-starter.mjs +1097 -1125
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/forms/elder-form-field-control-base.directive.d.ts +1 -1
- package/lib/common/forms/elder-from-field-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-customizable-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-entity-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-multi-entity-base.d.ts +1 -1
- package/lib/common/forms/form-field-base.component.d.ts +1 -1
- package/lib/common/forms/multi-model-base.component.d.ts +1 -1
- package/lib/common/forms/template-composite-control.d.ts +1 -1
- package/lib/common/forms/value-accessor-base.d.ts +1 -1
- package/lib/common/reactive-map.d.ts +1 -1
- package/lib/components/data-view/base/elder-data-view-base.d.ts +1 -1
- package/lib/components/forms/directives/base/elder-class-hostbinding-base.d.ts +1 -1
- package/lib/components/iframes/typed-event-message.d.ts +1 -1
- package/lib/components/panels/elder-panel.module.d.ts +5 -7
- package/lib/components/select/elder-select-base.d.ts +1 -1
- package/lib/components/select/multi/elder-multi-select-base.d.ts +1 -1
- package/lib/components/select/multi/elder-multi-select-form-field.d.ts +1 -1
- package/lib/components/select/single/elder-select-form-field.d.ts +1 -1
- package/package.json +6 -8
- package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +2 -3
- package/src/lib/components/shell/header/elder-app-header/elder-app-header.component.scss +3 -0
- package/esm2022/elderbyte-ngx-starter.mjs +0 -5
- package/esm2022/lib/common/arrays.mjs +0 -29
- package/esm2022/lib/common/async/public_api.mjs +0 -2
- package/esm2022/lib/common/async/refreshing-entity.mjs +0 -88
- package/esm2022/lib/common/csv/csv-serializer.mjs +0 -55
- package/esm2022/lib/common/csv/csv-spec.mjs +0 -99
- package/esm2022/lib/common/csv/public_api.mjs +0 -3
- package/esm2022/lib/common/data/continuable-listing.mjs +0 -10
- package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +0 -131
- package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +0 -78
- package/esm2022/lib/common/data/data-context/data-context-base.mjs +0 -339
- package/esm2022/lib/common/data/data-context/data-context-builder.mjs +0 -245
- package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +0 -67
- package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +0 -142
- package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +0 -146
- package/esm2022/lib/common/data/data-context/data-context-life-cycle-binding.mjs +0 -32
- package/esm2022/lib/common/data/data-context/data-context-simple.mjs +0 -61
- package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +0 -63
- package/esm2022/lib/common/data/data-context/data-context-status.mjs +0 -46
- package/esm2022/lib/common/data/data-context/data-context.mjs +0 -30
- package/esm2022/lib/common/data/data-context/indexed-entities.mjs +0 -153
- package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +0 -145
- package/esm2022/lib/common/data/data-context/public_api.mjs +0 -15
- package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +0 -59
- package/esm2022/lib/common/data/datasource/data-source-base.mjs +0 -38
- package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +0 -34
- package/esm2022/lib/common/data/datasource/data-source-processor.mjs +0 -198
- package/esm2022/lib/common/data/datasource/data-source.mjs +0 -23
- package/esm2022/lib/common/data/datasource/entity-id-util.mjs +0 -11
- package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +0 -127
- package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +0 -153
- package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +0 -75
- package/esm2022/lib/common/data/datasource/patch/deep-partial-patcher.mjs +0 -58
- package/esm2022/lib/common/data/datasource/public_api.mjs +0 -10
- package/esm2022/lib/common/data/datasource/rest/public_api.mjs +0 -2
- package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +0 -290
- package/esm2022/lib/common/data/entity-set-patch.mjs +0 -161
- package/esm2022/lib/common/data/field-comparator.mjs +0 -108
- package/esm2022/lib/common/data/filters/filter-commons.mjs +0 -12
- package/esm2022/lib/common/data/filters/filter-context.mjs +0 -135
- package/esm2022/lib/common/data/filters/filter-value.mjs +0 -2
- package/esm2022/lib/common/data/filters/filter.mjs +0 -104
- package/esm2022/lib/common/data/http-params-builder.mjs +0 -116
- package/esm2022/lib/common/data/page.mjs +0 -58
- package/esm2022/lib/common/data/public_api.mjs +0 -12
- package/esm2022/lib/common/data/required-filter-evaluator.mjs +0 -71
- package/esm2022/lib/common/data/sort-context.mjs +0 -73
- package/esm2022/lib/common/data/sort.mjs +0 -11
- package/esm2022/lib/common/data/token-chunk-request.mjs +0 -8
- package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +0 -84
- package/esm2022/lib/common/enums/public_api.mjs +0 -2
- package/esm2022/lib/common/errors/exception-detail.mjs +0 -2
- package/esm2022/lib/common/errors/public_api.mjs +0 -3
- package/esm2022/lib/common/errors/standard-error-detail.mjs +0 -2
- package/esm2022/lib/common/exceptions/public_api.mjs +0 -2
- package/esm2022/lib/common/exceptions/unreachable-case-error.mjs +0 -8
- package/esm2022/lib/common/format/bytes-format.mjs +0 -15
- package/esm2022/lib/common/format/bytes-per-second-format.mjs +0 -41
- package/esm2022/lib/common/format/curency-format-util.mjs +0 -43
- package/esm2022/lib/common/format/duration-format-util.mjs +0 -44
- package/esm2022/lib/common/format/iso-interval-format-util.mjs +0 -111
- package/esm2022/lib/common/format/public_api.mjs +0 -6
- package/esm2022/lib/common/forms/elder-entity-value-accessor.mjs +0 -22
- package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +0 -188
- package/esm2022/lib/common/forms/elder-from-field-base.mjs +0 -94
- package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +0 -52
- package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +0 -39
- package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +0 -47
- package/esm2022/lib/common/forms/elder-multi-entity-value-accessor.mjs +0 -22
- package/esm2022/lib/common/forms/form-field-base.component.mjs +0 -111
- package/esm2022/lib/common/forms/multi-model-base.component.mjs +0 -32
- package/esm2022/lib/common/forms/public_api.mjs +0 -12
- package/esm2022/lib/common/forms/template-composite-control.mjs +0 -136
- package/esm2022/lib/common/forms/value-accessor-base.mjs +0 -146
- package/esm2022/lib/common/forms/view-providers.mjs +0 -30
- package/esm2022/lib/common/http/http-client-builder.service.mjs +0 -14
- package/esm2022/lib/common/http/http-client-pristine.mjs +0 -21
- package/esm2022/lib/common/http/public_api.mjs +0 -5
- package/esm2022/lib/common/http/transfer/data-transfer-base.mjs +0 -77
- package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +0 -106
- package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +0 -60
- package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +0 -17
- package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +0 -82
- package/esm2022/lib/common/http/transfer/data-transfer-status.mjs +0 -24
- package/esm2022/lib/common/http/transfer/data-transfer.mjs +0 -2
- package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +0 -132
- package/esm2022/lib/common/http/transfer/public_api.mjs +0 -7
- package/esm2022/lib/common/http/upload/file-upload-client.mjs +0 -42
- package/esm2022/lib/common/i18n/entity/elder-multi-translate-loader.mjs +0 -53
- package/esm2022/lib/common/i18n/entity/impl/i18n-base.mjs +0 -6
- package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +0 -16
- package/esm2022/lib/common/i18n/entity/impl/translated.mjs +0 -15
- package/esm2022/lib/common/i18n/entity/language-tag.mjs +0 -12
- package/esm2022/lib/common/i18n/entity/locale.mjs +0 -12
- package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +0 -30
- package/esm2022/lib/common/i18n/entity/localized.mjs +0 -2
- package/esm2022/lib/common/i18n/entity/public_api.mjs +0 -10
- package/esm2022/lib/common/i18n/entity/translated-converter.mjs +0 -18
- package/esm2022/lib/common/i18n/entity/translated.mjs +0 -2
- package/esm2022/lib/common/i18n/public_api.mjs +0 -2
- package/esm2022/lib/common/json-map.mjs +0 -17
- package/esm2022/lib/common/objects.mjs +0 -43
- package/esm2022/lib/common/public_api.mjs +0 -23
- package/esm2022/lib/common/reactive-map.mjs +0 -69
- package/esm2022/lib/common/rxjs/operators/lazy-sample.mjs +0 -34
- package/esm2022/lib/common/rxjs/public_api.mjs +0 -2
- package/esm2022/lib/common/selection/public_api.mjs +0 -2
- package/esm2022/lib/common/selection/selection-model.mjs +0 -213
- package/esm2022/lib/common/sets.mjs +0 -45
- package/esm2022/lib/common/suggestion-provider.mjs +0 -12
- package/esm2022/lib/common/templates/template-slot-manager.mjs +0 -135
- package/esm2022/lib/common/theme-sizes.mjs +0 -2
- package/esm2022/lib/common/time/date-util.mjs +0 -91
- package/esm2022/lib/common/time/interval-coerce.mjs +0 -30
- package/esm2022/lib/common/time/interval.mjs +0 -442
- package/esm2022/lib/common/time/period-duration.mjs +0 -133
- package/esm2022/lib/common/time/public_api.mjs +0 -8
- package/esm2022/lib/common/time/temporal-plain-date-interval.mjs +0 -34
- package/esm2022/lib/common/time/temporal-util.mjs +0 -205
- package/esm2022/lib/common/time/time-util.mjs +0 -38
- package/esm2022/lib/common/url/elder-router.service.mjs +0 -54
- package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +0 -117
- package/esm2022/lib/common/url/public_api.mjs +0 -4
- package/esm2022/lib/common/url/url-query-params.mjs +0 -133
- package/esm2022/lib/common/utils/batcher.mjs +0 -35
- package/esm2022/lib/common/utils/collection-util.mjs +0 -111
- package/esm2022/lib/common/utils/filter-util.mjs +0 -133
- package/esm2022/lib/common/utils/focus-util.mjs +0 -23
- package/esm2022/lib/common/utils/input-utils.mjs +0 -6
- package/esm2022/lib/common/utils/next-number-util.mjs +0 -89
- package/esm2022/lib/common/utils/ng-zone-utils.mjs +0 -16
- package/esm2022/lib/common/utils/parse-util.mjs +0 -17
- package/esm2022/lib/common/utils/property-path-util.mjs +0 -28
- package/esm2022/lib/common/utils/public_api.mjs +0 -14
- package/esm2022/lib/common/utils/query-list-binding.mjs +0 -68
- package/esm2022/lib/common/utils/signal-input.mjs +0 -3
- package/esm2022/lib/common/utils/sort-util.mjs +0 -42
- package/esm2022/lib/common/utils/url-builder.mjs +0 -275
- package/esm2022/lib/common/utils/uuid-util.mjs +0 -28
- package/esm2022/lib/common/utils/value-wrapper.mjs +0 -19
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +0 -15
- package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +0 -20
- package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +0 -50
- package/esm2022/lib/components/auditing/elder-audit.module.mjs +0 -40
- package/esm2022/lib/components/auditing/i-audited-entity.mjs +0 -3
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +0 -162
- package/esm2022/lib/components/badge/elder-badge.directive.mjs +0 -124
- package/esm2022/lib/components/badge/elder-badge.module.mjs +0 -58
- package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +0 -13
- package/esm2022/lib/components/button-group/elder-button-group.module.mjs +0 -21
- package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +0 -118
- package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +0 -18
- package/esm2022/lib/components/card-organizer/card-organizer-data.mjs +0 -93
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +0 -220
- package/esm2022/lib/components/card-organizer/card-stack.mjs +0 -176
- package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +0 -62
- package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +0 -17
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +0 -167
- package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +0 -71
- package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +0 -171
- package/esm2022/lib/components/chips/elder-chips.module.mjs +0 -45
- package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +0 -57
- package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +0 -61
- package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +0 -46
- package/esm2022/lib/components/connectivity/public_api.mjs +0 -3
- package/esm2022/lib/components/containers/elder-containers.module.mjs +0 -18
- package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +0 -24
- package/esm2022/lib/components/containers/public_api.mjs +0 -2
- package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +0 -77
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.mjs +0 -38
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +0 -38
- package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +0 -114
- package/esm2022/lib/components/csv/elder-csv.module.mjs +0 -24
- package/esm2022/lib/components/currency/elder-currency.module.mjs +0 -18
- package/esm2022/lib/components/currency/elder-currency.pipe.mjs +0 -37
- package/esm2022/lib/components/currency/model/currency-code.mjs +0 -38
- package/esm2022/lib/components/currency/model/currency-unit-registry.mjs +0 -30
- package/esm2022/lib/components/currency/model/currency-unit.mjs +0 -10
- package/esm2022/lib/components/currency/model/currency.mjs +0 -15
- package/esm2022/lib/components/currency/public_api.mjs +0 -7
- package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +0 -91
- package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +0 -93
- package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +0 -102
- package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +0 -34
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +0 -57
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +0 -34
- package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +0 -69
- package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +0 -265
- package/esm2022/lib/components/data-view/base/elder-data-view-options-provider.mjs +0 -44
- package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +0 -45
- package/esm2022/lib/components/data-view/base/elder-data-view.mjs +0 -3
- package/esm2022/lib/components/data-view/base/public_api.mjs +0 -6
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-context.mjs +0 -30
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +0 -55
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort.mjs +0 -68
- package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +0 -101
- package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +0 -45
- package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +0 -125
- package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +0 -140
- package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +0 -100
- package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +0 -103
- package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +0 -36
- package/esm2022/lib/components/data-view/common/selection/master-selection-state.mjs +0 -10
- package/esm2022/lib/components/data-view/elder-data-view-interaction-mode.mjs +0 -2
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +0 -345
- package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +0 -91
- package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +0 -75
- package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +0 -50
- package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +0 -79
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-mode.mjs +0 -2
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +0 -20
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +0 -119
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +0 -116
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +0 -89
- package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/master-detail/master-detail-activation-event.mjs +0 -12
- package/esm2022/lib/components/data-view/public_api.mjs +0 -7
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +0 -18
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +0 -104
- package/esm2022/lib/components/data-view/table/activation/activation-event-source.mjs +0 -7
- package/esm2022/lib/components/data-view/table/activation/elder-activation-context.mjs +0 -2
- package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +0 -114
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation-options.mjs +0 -2
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +0 -315
- package/esm2022/lib/components/data-view/table/activation/item-activation-event.mjs +0 -8
- package/esm2022/lib/components/data-view/table/activation/item-activation-options.mjs +0 -7
- package/esm2022/lib/components/data-view/table/activation/public_api.mjs +0 -8
- package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +0 -30
- package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +0 -73
- package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +0 -21
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +0 -338
- package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +0 -18
- package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +0 -92
- package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +0 -26
- package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +0 -156
- package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/table/elder-table.module.mjs +0 -184
- package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +0 -110
- package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +0 -85
- package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +0 -40
- package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +0 -89
- package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +0 -167
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +0 -37
- package/esm2022/lib/components/dialogs/elder-dialog-config.mjs +0 -3
- package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +0 -87
- package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +0 -199
- package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +0 -57
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +0 -43
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +0 -47
- package/esm2022/lib/components/errors/elder-error.module.mjs +0 -39
- package/esm2022/lib/components/errors/error-util.mjs +0 -94
- package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +0 -77
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +0 -55
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +0 -35
- package/esm2022/lib/components/files/blob-url.mjs +0 -10
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +0 -224
- package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +0 -44
- package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +0 -84
- package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +0 -145
- package/esm2022/lib/components/files/elder-file-select-input.mjs +0 -119
- package/esm2022/lib/components/files/elder-file-select.directive.mjs +0 -167
- package/esm2022/lib/components/files/elder-file.module.mjs +0 -85
- package/esm2022/lib/components/files/file-select/file-select.component.mjs +0 -54
- package/esm2022/lib/components/files/file-system-api.mjs +0 -100
- package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +0 -80
- package/esm2022/lib/components/files/listing/file-entry.mjs +0 -92
- package/esm2022/lib/components/files/listing/file-listing-rx.mjs +0 -64
- package/esm2022/lib/components/files/listing/file-listing-system-handle.mjs +0 -35
- package/esm2022/lib/components/files/listing/file-listing-webkit.mjs +0 -76
- package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +0 -51
- package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +0 -34
- package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox-controller.mjs +0 -97
- package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox.directive.mjs +0 -50
- package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox-controller.mjs +0 -102
- package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox.directive.mjs +0 -50
- package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +0 -38
- package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +0 -43
- package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +0 -83
- package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +0 -84
- package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +0 -42
- package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +0 -35
- package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +0 -142
- package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +0 -67
- package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +0 -78
- package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +0 -112
- package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +0 -102
- package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +0 -37
- package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +0 -30
- package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +0 -161
- package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +0 -28
- package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +0 -88
- package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +0 -47
- package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +0 -48
- package/esm2022/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +0 -6
- package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +0 -53
- package/esm2022/lib/components/forms/directives/validation/validation-message-strategy.mjs +0 -2
- package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +0 -36
- package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +0 -36
- package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +0 -112
- package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +0 -69
- package/esm2022/lib/components/forms/elder-forms.module.mjs +0 -22
- package/esm2022/lib/components/forms/public_api.mjs +0 -6
- package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +0 -73
- package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +0 -42
- package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +0 -2
- package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +0 -88
- package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +0 -2
- package/esm2022/lib/components/forms/search/domain/input/simple-search-input.mjs +0 -50
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +0 -92
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +0 -166
- package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +0 -81
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +0 -256
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +0 -258
- package/esm2022/lib/components/forms/search/elder-search.module.mjs +0 -115
- package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +0 -45
- package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +0 -2
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +0 -131
- package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +0 -24
- package/esm2022/lib/components/global-search/elder-global-search.component.mjs +0 -136
- package/esm2022/lib/components/global-search/elder-global-search.module.mjs +0 -47
- package/esm2022/lib/components/global-search/elder-global-search.service.mjs +0 -95
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +0 -90
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +0 -19
- package/esm2022/lib/components/graph/elder-progress-bar/sub-bar.mjs +0 -7
- package/esm2022/lib/components/graph/public_api.mjs +0 -2
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +0 -29
- package/esm2022/lib/components/headers/elder-header.module.mjs +0 -42
- package/esm2022/lib/components/http-support/elder-http-client.service.mjs +0 -63
- package/esm2022/lib/components/http-support/public_api.mjs +0 -2
- package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +0 -125
- package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +0 -157
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +0 -39
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +0 -30
- package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +0 -177
- package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +0 -31
- package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +0 -56
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +0 -40
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +0 -31
- package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +0 -74
- package/esm2022/lib/components/i18n/language/elder-language-config.mjs +0 -3
- package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +0 -70
- package/esm2022/lib/components/i18n/language/elder-language.module.mjs +0 -73
- package/esm2022/lib/components/i18n/language/elder-language.service.mjs +0 -120
- package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +0 -79
- package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +0 -53
- package/esm2022/lib/components/i18n/public_api.mjs +0 -4
- package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +0 -129
- package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +0 -141
- package/esm2022/lib/components/iframes/elder-iframe.module.mjs +0 -106
- package/esm2022/lib/components/iframes/iframe-close.directive.mjs +0 -41
- package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +0 -51
- package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +0 -144
- package/esm2022/lib/components/iframes/iframe-messages.mjs +0 -5
- package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +0 -80
- package/esm2022/lib/components/iframes/iframe.service.mjs +0 -54
- package/esm2022/lib/components/iframes/typed-event-message.mjs +0 -42
- package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +0 -65
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +0 -166
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +0 -20
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +0 -9
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +0 -233
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +0 -202
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +0 -120
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +0 -61
- package/esm2022/lib/components/input/autocomplete/many/word-position-finder.mjs +0 -58
- package/esm2022/lib/components/input/public_api.mjs +0 -2
- package/esm2022/lib/components/labels/elder-labels.module.mjs +0 -50
- package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +0 -239
- package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +0 -268
- package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +0 -92
- package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +0 -65
- package/esm2022/lib/components/measures/elder-measures.module.mjs +0 -130
- package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +0 -31
- package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +0 -43
- package/esm2022/lib/components/measures/elder-unit.service.mjs +0 -113
- package/esm2022/lib/components/measures/model/dimensions.mjs +0 -17
- package/esm2022/lib/components/measures/model/quantity.mjs +0 -12
- package/esm2022/lib/components/measures/model/unit-dimension.mjs +0 -14
- package/esm2022/lib/components/measures/model/unit-registry.mjs +0 -81
- package/esm2022/lib/components/measures/model/unit.mjs +0 -143
- package/esm2022/lib/components/measures/public_api.mjs +0 -8
- package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +0 -44
- package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +0 -173
- package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +0 -84
- package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +0 -73
- package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +0 -341
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +0 -184
- package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +0 -59
- package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +0 -37
- package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +0 -60
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +0 -121
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +0 -174
- package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +0 -68
- package/esm2022/lib/components/navigation/public_api.mjs +0 -4
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +0 -48
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +0 -83
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +0 -68
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +0 -71
- package/esm2022/lib/components/navigation/toolbar/toolbar-column-position.mjs +0 -2
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +0 -39
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +0 -86
- package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +0 -44
- package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +0 -41
- package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +0 -73
- package/esm2022/lib/components/overlays/elder-overlay.component.mjs +0 -232
- package/esm2022/lib/components/overlays/elder-overlay.module.mjs +0 -35
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +0 -20
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +0 -129
- package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +0 -25
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +0 -29
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +0 -26
- package/esm2022/lib/components/page/public_api.mjs +0 -2
- package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +0 -12
- package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +0 -12
- package/esm2022/lib/components/panels/elder-panel.module.mjs +0 -60
- package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +0 -26
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +0 -70
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +0 -74
- package/esm2022/lib/components/public_api.mjs +0 -43
- package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +0 -63
- package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +0 -17
- package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +0 -95
- package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +0 -38
- package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +0 -64
- package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +0 -55
- package/esm2022/lib/components/select/elder-select-base.mjs +0 -333
- package/esm2022/lib/components/select/elder-select-chip.directive.mjs +0 -48
- package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +0 -139
- package/esm2022/lib/components/select/elder-select-value.directive.mjs +0 -18
- package/esm2022/lib/components/select/elder-select.module.mjs +0 -229
- package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +0 -74
- package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +0 -148
- package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +0 -51
- package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +0 -61
- package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +0 -160
- package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +0 -16
- package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +0 -386
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +0 -87
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +0 -263
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/select-option-chip-spec.mjs +0 -15
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +0 -274
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.mjs +0 -15
- package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +0 -86
- package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +0 -34
- package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +0 -146
- package/esm2022/lib/components/select/multi/public_api.mjs +0 -5
- package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +0 -89
- package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +0 -126
- package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +0 -58
- package/esm2022/lib/components/select/public_api.mjs +0 -5
- package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +0 -60
- package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +0 -444
- package/esm2022/lib/components/select/single/elder-select-form-field.mjs +0 -45
- package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +0 -148
- package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +0 -46
- package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +0 -64
- package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +0 -119
- package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +0 -128
- package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +0 -47
- package/esm2022/lib/components/shell/elder-shell.module.mjs +0 -101
- package/esm2022/lib/components/shell/elder-shell.service.mjs +0 -142
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +0 -75
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +0 -238
- package/esm2022/lib/components/shell/shell-content-slot.mjs +0 -2
- package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +0 -137
- package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +0 -26
- package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +0 -257
- package/esm2022/lib/components/tabs/elder-tab.module.mjs +0 -21
- package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +0 -62
- package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +0 -73
- package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +0 -74
- package/esm2022/lib/components/theme/elder-theme.directive.mjs +0 -64
- package/esm2022/lib/components/theme/elder-theme.module.mjs +0 -68
- package/esm2022/lib/components/theme/elder-theme.service.mjs +0 -121
- package/esm2022/lib/components/theme/known-elder-themes.mjs +0 -6
- package/esm2022/lib/components/theme/public_api.mjs +0 -2
- package/esm2022/lib/components/theme/theme-spec.mjs +0 -11
- package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +0 -43
- package/esm2022/lib/components/time/date-formats/locale-date-formats.mjs +0 -28
- package/esm2022/lib/components/time/duration/duration-bucket.mjs +0 -68
- package/esm2022/lib/components/time/duration/duration-format.mjs +0 -271
- package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +0 -110
- package/esm2022/lib/components/time/duration/iso-duration-str.mjs +0 -2
- package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +0 -96
- package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +0 -98
- package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +0 -217
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.mjs +0 -21
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.mjs +0 -24
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-controller.mjs +0 -43
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-form-controller.mjs +0 -69
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-select-controller.mjs +0 -117
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +0 -44
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +0 -198
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +0 -41
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +0 -144
- package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +0 -93
- package/esm2022/lib/components/time/elder-interval-picker/model/anchor-state.mjs +0 -54
- package/esm2022/lib/components/time/elder-interval-picker/model/interval-state.mjs +0 -37
- package/esm2022/lib/components/time/elder-interval-picker/model/smart-shift-state.mjs +0 -10
- package/esm2022/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.mjs +0 -96
- package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +0 -194
- package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +0 -268
- package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +0 -85
- package/esm2022/lib/components/time/elder-time.module.mjs +0 -154
- package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +0 -118
- package/esm2022/lib/components/time/period/period-bucket.mjs +0 -31
- package/esm2022/lib/components/time/period/period-format.mjs +0 -89
- package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +0 -39
- package/esm2022/lib/components/time/public_api.mjs +0 -8
- package/esm2022/lib/components/toasts/elder-toast.module.mjs +0 -36
- package/esm2022/lib/components/toasts/elder-toast.service.mjs +0 -170
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +0 -80
- package/esm2022/lib/components/toasts/toast-type.mjs +0 -7
- package/esm2022/lib/components/toasts/toast.mjs +0 -2
- package/esm2022/lib/components/url-fragment/elder-url-fragment.mjs +0 -9
- package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +0 -52
- package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +0 -95
- package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +0 -64
- package/esm2022/lib/components/viewers/elder-viewers.module.mjs +0 -18
- package/esm2022/lib/features/event-source/fetch/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +0 -219
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +0 -53
- package/esm2022/lib/features/event-source/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +0 -56
- package/esm2022/lib/features/event-source/standard/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +0 -199
- package/esm2022/lib/features/kafent/access-token-provider.mjs +0 -20
- package/esm2022/lib/features/kafent/kafent-config.mjs +0 -24
- package/esm2022/lib/features/kafent/kafent-event-stream.mjs +0 -25
- package/esm2022/lib/features/kafent/kafent-event.mjs +0 -3
- package/esm2022/lib/features/kafent/kafent-event.service.mjs +0 -115
- package/esm2022/lib/features/kafent/kafent-live-event-request.mjs +0 -2
- package/esm2022/lib/features/kafent/kafent.module.mjs +0 -58
- package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +0 -131
- package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +0 -97
- package/esm2022/lib/features/public_api.mjs +0 -3
- package/esm2022/lib/pipes/bytes.pipe.mjs +0 -27
- package/esm2022/lib/pipes/elder-pipes.module.mjs +0 -114
- package/esm2022/lib/pipes/elder-repeat.pipe.mjs +0 -24
- package/esm2022/lib/pipes/elder-round.pipe.mjs +0 -36
- package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +0 -21
- package/esm2022/lib/pipes/elder-truncate.pipe.mjs +0 -41
- package/esm2022/lib/pipes/iso-duration.pipe.mjs +0 -41
- package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +0 -49
- package/esm2022/lib/pipes/iso-interval.pipe.mjs +0 -62
- package/esm2022/lib/pipes/public_api.mjs +0 -2
- package/esm2022/lib/pipes/time-ago.pipe.mjs +0 -110
- package/esm2022/lib/pipes/time-duration.pipe.mjs +0 -101
- package/esm2022/lib/pipes/weight.pipe.mjs +0 -60
- package/esm2022/public_api.mjs +0 -8
- package/lib/components/panels/flat/elder-panel.component.d.ts +0 -15
- package/src/lib/components/panels/flat/elder-panel.component.scss +0 -3
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { Temporal } from '@js-temporal/polyfill';
|
|
2
|
-
import { Interval } from '../../../../common/time/interval';
|
|
3
|
-
import { TemporalUtil } from '../../../../common/time/temporal-util';
|
|
4
|
-
import { TimeUtil } from '../../../../common/time/time-util';
|
|
5
|
-
import IntervalState from '../model/interval-state';
|
|
6
|
-
export default class IntervalPickerUtil {
|
|
7
|
-
static createElderInterval(intervalState) {
|
|
8
|
-
let startInstant;
|
|
9
|
-
let endInstant;
|
|
10
|
-
try {
|
|
11
|
-
const startDateTimeJS = TemporalUtil.getJSDateFromPlainDateTime(intervalState.startDateTime);
|
|
12
|
-
startInstant = TimeUtil.instant(startDateTimeJS);
|
|
13
|
-
}
|
|
14
|
-
catch (e) {
|
|
15
|
-
startInstant = null;
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
const endDateTimeJS = TemporalUtil.getJSDateFromPlainDateTime(intervalState.endDateTime);
|
|
19
|
-
endInstant = TimeUtil.instant(endDateTimeJS);
|
|
20
|
-
}
|
|
21
|
-
catch (e) {
|
|
22
|
-
endInstant = null;
|
|
23
|
-
}
|
|
24
|
-
return new Interval(startInstant, endInstant);
|
|
25
|
-
}
|
|
26
|
-
static transformToIntervalState(interval) {
|
|
27
|
-
if (!interval) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
const startDateTimeJS = interval.start ? TimeUtil.date(interval.start) : null;
|
|
31
|
-
const endDateTimeJS = interval.end ? TimeUtil.date(interval.end) : null;
|
|
32
|
-
let startDate = null;
|
|
33
|
-
let endDate = null;
|
|
34
|
-
let startTime = null;
|
|
35
|
-
let endTime = null;
|
|
36
|
-
try {
|
|
37
|
-
const startDateTime = TemporalUtil.getPlainDateTimeFromJSDate(startDateTimeJS);
|
|
38
|
-
startDate = startDateTime.toPlainDate();
|
|
39
|
-
startTime = startDateTime.toPlainTime();
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
startDate = null;
|
|
43
|
-
startTime = null;
|
|
44
|
-
}
|
|
45
|
-
try {
|
|
46
|
-
const endDateTime = TemporalUtil.getPlainDateTimeFromJSDate(endDateTimeJS);
|
|
47
|
-
endDate = endDateTime.toPlainDate();
|
|
48
|
-
endTime = endDateTime.toPlainTime();
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
endDate = null;
|
|
52
|
-
endTime = null;
|
|
53
|
-
}
|
|
54
|
-
return new IntervalState(startDate, endDate, startTime, endTime);
|
|
55
|
-
}
|
|
56
|
-
static createTemporalDateTime(date, time) {
|
|
57
|
-
if (!date) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
return Temporal.PlainDateTime.from({
|
|
61
|
-
year: date.year,
|
|
62
|
-
month: date.month,
|
|
63
|
-
day: date.day,
|
|
64
|
-
hour: time.hour,
|
|
65
|
-
minute: time.minute,
|
|
66
|
-
second: time.second,
|
|
67
|
-
millisecond: time.millisecond,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
static isIntervalEquals(interval1, interval2) {
|
|
71
|
-
if (!interval1 && !interval2) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
if (!interval1 || !interval2) {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
return (this.isEquals(interval1.startDate, interval2.startDate) &&
|
|
78
|
-
this.isEquals(interval1.endDate, interval2.endDate) &&
|
|
79
|
-
this.isEquals(interval1.startTime, interval2.startTime) &&
|
|
80
|
-
this.isEquals(interval1.endTime, interval2.endTime));
|
|
81
|
-
}
|
|
82
|
-
static isEquals(x, y) {
|
|
83
|
-
if (!x && !y) {
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
if (!x || !y) {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
return x.equals(y);
|
|
90
|
-
}
|
|
91
|
-
static isIntervalWithStartAndEnd(interval) {
|
|
92
|
-
return !!interval?.startDate && !!interval?.endDate;
|
|
93
|
-
}
|
|
94
|
-
static isOpenInterval(interval) {
|
|
95
|
-
if (!interval) {
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
return ((!!interval.startDate && !interval.endDate) || (!interval.startDate && !!interval.endDate));
|
|
99
|
-
}
|
|
100
|
-
static getDeltaHumanReadable(interval) {
|
|
101
|
-
if (IntervalPickerUtil.isOpenInterval(interval)) {
|
|
102
|
-
return '∞';
|
|
103
|
-
}
|
|
104
|
-
if (!IntervalPickerUtil.isIntervalWithStartAndEnd(interval)) {
|
|
105
|
-
return '-';
|
|
106
|
-
}
|
|
107
|
-
const duration = interval.startDateTime.until(interval.endDateTime);
|
|
108
|
-
const tmp = [];
|
|
109
|
-
if (duration.days) {
|
|
110
|
-
tmp.push(`${duration.days}d`);
|
|
111
|
-
}
|
|
112
|
-
if (duration.hours) {
|
|
113
|
-
tmp.push(`${duration.hours}h`);
|
|
114
|
-
}
|
|
115
|
-
if (duration.minutes) {
|
|
116
|
-
tmp.push(`${duration.minutes}min`);
|
|
117
|
-
}
|
|
118
|
-
if (duration.seconds) {
|
|
119
|
-
tmp.push(`${duration.seconds}s`);
|
|
120
|
-
}
|
|
121
|
-
if (!tmp.length) {
|
|
122
|
-
return '0s';
|
|
123
|
-
}
|
|
124
|
-
return tmp.join(', ');
|
|
125
|
-
}
|
|
126
|
-
static getSmartShiftMessage(mode, dateInterval) {
|
|
127
|
-
if (!dateInterval) {
|
|
128
|
-
return '-';
|
|
129
|
-
}
|
|
130
|
-
const startDate = dateInterval.startDate;
|
|
131
|
-
const endDate = dateInterval.endDate;
|
|
132
|
-
switch (mode) {
|
|
133
|
-
case 'years':
|
|
134
|
-
return `1y (${startDate.year})`;
|
|
135
|
-
case 'quarters':
|
|
136
|
-
return `Q${TemporalUtil.getQuarterForDate(startDate)}, ${startDate.year}`;
|
|
137
|
-
case 'months':
|
|
138
|
-
return `1m (${startDate.monthCode}, ${startDate.year})`;
|
|
139
|
-
case 'weeks':
|
|
140
|
-
return `1w (CW ${startDate.weekOfYear}, ${endDate.year})`;
|
|
141
|
-
case 'days':
|
|
142
|
-
return `${startDate.until(endDate).days}d`;
|
|
143
|
-
case 'time':
|
|
144
|
-
return `${this.getDeltaHumanReadable(dateInterval)}`;
|
|
145
|
-
default:
|
|
146
|
-
return `${startDate.until(endDate).days}d`;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
static isTimeSetAndNotMidnight(time) {
|
|
150
|
-
if (!time) {
|
|
151
|
-
return false;
|
|
152
|
-
}
|
|
153
|
-
if (time.hour === 0 && time.minute === 0 && time.second === 0) {
|
|
154
|
-
return false;
|
|
155
|
-
}
|
|
156
|
-
return true;
|
|
157
|
-
}
|
|
158
|
-
static setMillisecondsToZero(interval) {
|
|
159
|
-
return new IntervalState(interval.startDate, interval.endDate, interval.startTime.with({ millisecond: 0, microsecond: 0, nanosecond: 0 }), interval.endTime.with({ millisecond: 0, microsecond: 0, nanosecond: 0 }));
|
|
160
|
-
}
|
|
161
|
-
static roundUpToSeconds(time) {
|
|
162
|
-
return time.with({
|
|
163
|
-
second: time.second + 1,
|
|
164
|
-
millisecond: 0,
|
|
165
|
-
microsecond: 0,
|
|
166
|
-
nanosecond: 0,
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
static updateMatCalendarActiveDate(calendarStart, calendarEnd, startDate, endDate) {
|
|
170
|
-
if (!calendarStart || !calendarEnd) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
if (!startDate && !endDate) {
|
|
174
|
-
return;
|
|
175
|
-
}
|
|
176
|
-
setTimeout(() => {
|
|
177
|
-
// timeout is needed to run calendar update last, otherwise there are issues
|
|
178
|
-
if (startDate) {
|
|
179
|
-
calendarStart.activeDate = TemporalUtil.getJSDateFromPlainDateTime(startDate);
|
|
180
|
-
}
|
|
181
|
-
if (endDate) {
|
|
182
|
-
calendarEnd.activeDate = TemporalUtil.getJSDateFromPlainDateTime(endDate);
|
|
183
|
-
}
|
|
184
|
-
}, 0);
|
|
185
|
-
}
|
|
186
|
-
static updateMatCalendarTodayDate(calendarStart, calendarEnd) {
|
|
187
|
-
if (!calendarStart || !calendarEnd) {
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
calendarStart.updateTodaysDate();
|
|
191
|
-
calendarEnd.updateTodaysDate();
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtcGlja2VyLXV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItaW50ZXJ2YWwtcGlja2VyL3V0aWwvaW50ZXJ2YWwtcGlja2VyLXV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzVELE9BQU8sYUFBYSxNQUFNLHlCQUF5QixDQUFBO0FBRW5ELE1BQU0sQ0FBQyxPQUFPLE9BQU8sa0JBQWtCO0lBQzlCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxhQUE0QjtRQUM1RCxJQUFJLFlBQXFCLENBQUE7UUFDekIsSUFBSSxVQUFtQixDQUFBO1FBRXZCLElBQUksQ0FBQztZQUNILE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUE7WUFDNUYsWUFBWSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDbEQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQ3JCLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsMEJBQTBCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3hGLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQzlDLENBQUM7UUFB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QUFDO1lBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixXQUFXLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUMzRSxDQUFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ1AsQ0FBQztJQUVNLE1BQU0sQ0FBQywwQkFBMEIsQ0FDdEMsYUFBNEMsRUFDNUMsV0FBMEM7UUFFMUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLE9BQU07UUFDUixDQUFDO1FBRUQsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUE7UUFDaEMsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUE7SUFDaEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF0Q2FsZW5kYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJ1xuaW1wb3J0IHsgSW5zdGFudCB9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnXG5pbXBvcnQgeyBUZW1wb3JhbCB9IGZyb20gJ0Bqcy10ZW1wb3JhbC9wb2x5ZmlsbCdcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL3RpbWUvaW50ZXJ2YWwnXG5pbXBvcnQgeyBUZW1wb3JhbFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdGltZS90ZW1wb3JhbC11dGlsJ1xuaW1wb3J0IHsgVGltZVV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdGltZS90aW1lLXV0aWwnXG5pbXBvcnQgSW50ZXJ2YWxTdGF0ZSBmcm9tICcuLi9tb2RlbC9pbnRlcnZhbC1zdGF0ZSdcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW50ZXJ2YWxQaWNrZXJVdGlsIHtcbiAgcHVibGljIHN0YXRpYyBjcmVhdGVFbGRlckludGVydmFsKGludGVydmFsU3RhdGU6IEludGVydmFsU3RhdGUpOiBJbnRlcnZhbCB7XG4gICAgbGV0IHN0YXJ0SW5zdGFudDogSW5zdGFudFxuICAgIGxldCBlbmRJbnN0YW50OiBJbnN0YW50XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhcnREYXRlVGltZUpTID0gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKGludGVydmFsU3RhdGUuc3RhcnREYXRlVGltZSlcbiAgICAgIHN0YXJ0SW5zdGFudCA9IFRpbWVVdGlsLmluc3RhbnQoc3RhcnREYXRlVGltZUpTKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHN0YXJ0SW5zdGFudCA9IG51bGxcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZW5kRGF0ZVRpbWVKUyA9IFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZShpbnRlcnZhbFN0YXRlLmVuZERhdGVUaW1lKVxuICAgICAgZW5kSW5zdGFudCA9IFRpbWVVdGlsLmluc3RhbnQoZW5kRGF0ZVRpbWVKUylcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlbmRJbnN0YW50ID0gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW50ZXJ2YWwoc3RhcnRJbnN0YW50LCBlbmRJbnN0YW50KVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0cmFuc2Zvcm1Ub0ludGVydmFsU3RhdGUoaW50ZXJ2YWw6IEludGVydmFsKTogSW50ZXJ2YWxTdGF0ZSB7XG4gICAgaWYgKCFpbnRlcnZhbCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydERhdGVUaW1lSlMgPSBpbnRlcnZhbC5zdGFydCA/IFRpbWVVdGlsLmRhdGUoaW50ZXJ2YWwuc3RhcnQpIDogbnVsbFxuICAgIGNvbnN0IGVuZERhdGVUaW1lSlMgPSBpbnRlcnZhbC5lbmQgPyBUaW1lVXRpbC5kYXRlKGludGVydmFsLmVuZCkgOiBudWxsXG5cbiAgICBsZXQgc3RhcnREYXRlOiBUZW1wb3JhbC5QbGFpbkRhdGUgPSBudWxsXG4gICAgbGV0IGVuZERhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSA9IG51bGxcbiAgICBsZXQgc3RhcnRUaW1lOiBUZW1wb3JhbC5QbGFpblRpbWUgPSBudWxsXG4gICAgbGV0IGVuZFRpbWU6IFRlbXBvcmFsLlBsYWluVGltZSA9IG51bGxcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGFydERhdGVUaW1lID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZVRpbWVGcm9tSlNEYXRlKHN0YXJ0RGF0ZVRpbWVKUylcbiAgICAgIHN0YXJ0RGF0ZSA9IHN0YXJ0RGF0ZVRpbWUudG9QbGFpbkRhdGUoKVxuICAgICAgc3RhcnRUaW1lID0gc3RhcnREYXRlVGltZS50b1BsYWluVGltZSgpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc3RhcnREYXRlID0gbnVsbFxuICAgICAgc3RhcnRUaW1lID0gbnVsbFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbmREYXRlVGltZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVUaW1lRnJvbUpTRGF0ZShlbmREYXRlVGltZUpTKVxuICAgICAgZW5kRGF0ZSA9IGVuZERhdGVUaW1lLnRvUGxhaW5EYXRlKClcbiAgICAgIGVuZFRpbWUgPSBlbmREYXRlVGltZS50b1BsYWluVGltZSgpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZW5kRGF0ZSA9IG51bGxcbiAgICAgIGVuZFRpbWUgPSBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbnRlcnZhbFN0YXRlKHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc3RhcnRUaW1lLCBlbmRUaW1lKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVUZW1wb3JhbERhdGVUaW1lKFxuICAgIGRhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZSxcbiAgICB0aW1lOiBUZW1wb3JhbC5QbGFpblRpbWVcbiAgKTogVGVtcG9yYWwuUGxhaW5EYXRlVGltZSB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lLmZyb20oe1xuICAgICAgeWVhcjogZGF0ZS55ZWFyLFxuICAgICAgbW9udGg6IGRhdGUubW9udGgsXG4gICAgICBkYXk6IGRhdGUuZGF5LFxuICAgICAgaG91cjogdGltZS5ob3VyLFxuICAgICAgbWludXRlOiB0aW1lLm1pbnV0ZSxcbiAgICAgIHNlY29uZDogdGltZS5zZWNvbmQsXG4gICAgICBtaWxsaXNlY29uZDogdGltZS5taWxsaXNlY29uZCxcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0ludGVydmFsRXF1YWxzKGludGVydmFsMTogSW50ZXJ2YWxTdGF0ZSwgaW50ZXJ2YWwyOiBJbnRlcnZhbFN0YXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpbnRlcnZhbDEgJiYgIWludGVydmFsMikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAoIWludGVydmFsMSB8fCAhaW50ZXJ2YWwyKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pc0VxdWFscyhpbnRlcnZhbDEuc3RhcnREYXRlLCBpbnRlcnZhbDIuc3RhcnREYXRlKSAmJlxuICAgICAgdGhpcy5pc0VxdWFscyhpbnRlcnZhbDEuZW5kRGF0ZSwgaW50ZXJ2YWwyLmVuZERhdGUpICYmXG4gICAgICB0aGlzLmlzRXF1YWxzKGludGVydmFsMS5zdGFydFRpbWUsIGludGVydmFsMi5zdGFydFRpbWUpICYmXG4gICAgICB0aGlzLmlzRXF1YWxzKGludGVydmFsMS5lbmRUaW1lLCBpbnRlcnZhbDIuZW5kVGltZSlcbiAgICApXG4gIH1cblxuICBzdGF0aWMgaXNFcXVhbHMoXG4gICAgeDogVGVtcG9yYWwuUGxhaW5EYXRlIHwgVGVtcG9yYWwuUGxhaW5UaW1lIHwgVGVtcG9yYWwuUGxhaW5EYXRlVGltZSxcbiAgICB5OiBUZW1wb3JhbC5QbGFpbkRhdGUgfCBUZW1wb3JhbC5QbGFpblRpbWUgfCBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lXG4gICk6IGJvb2xlYW4ge1xuICAgIGlmICgheCAmJiAheSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAoIXggfHwgIXkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB4LmVxdWFscyh5KVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc0ludGVydmFsV2l0aFN0YXJ0QW5kRW5kKGludGVydmFsOiBJbnRlcnZhbFN0YXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhaW50ZXJ2YWw/LnN0YXJ0RGF0ZSAmJiAhIWludGVydmFsPy5lbmREYXRlXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzT3BlbkludGVydmFsKGludGVydmFsOiBJbnRlcnZhbFN0YXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFpbnRlcnZhbCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiAoXG4gICAgICAoISFpbnRlcnZhbC5zdGFydERhdGUgJiYgIWludGVydmFsLmVuZERhdGUpIHx8ICghaW50ZXJ2YWwuc3RhcnREYXRlICYmICEhaW50ZXJ2YWwuZW5kRGF0ZSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldERlbHRhSHVtYW5SZWFkYWJsZShpbnRlcnZhbDogSW50ZXJ2YWxTdGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKEludGVydmFsUGlja2VyVXRpbC5pc09wZW5JbnRlcnZhbChpbnRlcnZhbCkpIHtcbiAgICAgIHJldHVybiAn4oieJ1xuICAgIH1cblxuICAgIGlmICghSW50ZXJ2YWxQaWNrZXJVdGlsLmlzSW50ZXJ2YWxXaXRoU3RhcnRBbmRFbmQoaW50ZXJ2YWwpKSB7XG4gICAgICByZXR1cm4gJy0nXG4gICAgfVxuXG4gICAgY29uc3QgZHVyYXRpb24gPSBpbnRlcnZhbC5zdGFydERhdGVUaW1lLnVudGlsKGludGVydmFsLmVuZERhdGVUaW1lKVxuXG4gICAgY29uc3QgdG1wID0gW11cbiAgICBpZiAoZHVyYXRpb24uZGF5cykge1xuICAgICAgdG1wLnB1c2goYCR7ZHVyYXRpb24uZGF5c31kYClcbiAgICB9XG4gICAgaWYgKGR1cmF0aW9uLmhvdXJzKSB7XG4gICAgICB0bXAucHVzaChgJHtkdXJhdGlvbi5ob3Vyc31oYClcbiAgICB9XG4gICAgaWYgKGR1cmF0aW9uLm1pbnV0ZXMpIHtcbiAgICAgIHRtcC5wdXNoKGAke2R1cmF0aW9uLm1pbnV0ZXN9bWluYClcbiAgICB9XG4gICAgaWYgKGR1cmF0aW9uLnNlY29uZHMpIHtcbiAgICAgIHRtcC5wdXNoKGAke2R1cmF0aW9uLnNlY29uZHN9c2ApXG4gICAgfVxuXG4gICAgaWYgKCF0bXAubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gJzBzJ1xuICAgIH1cblxuICAgIHJldHVybiB0bXAuam9pbignLCAnKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTbWFydFNoaWZ0TWVzc2FnZShtb2RlOiBzdHJpbmcsIGRhdGVJbnRlcnZhbDogSW50ZXJ2YWxTdGF0ZSk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRlSW50ZXJ2YWwpIHtcbiAgICAgIHJldHVybiAnLSdcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydERhdGUgPSBkYXRlSW50ZXJ2YWwuc3RhcnREYXRlXG4gICAgY29uc3QgZW5kRGF0ZSA9IGRhdGVJbnRlcnZhbC5lbmREYXRlXG5cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ3llYXJzJzpcbiAgICAgICAgcmV0dXJuIGAxeSAoJHtzdGFydERhdGUueWVhcn0pYFxuICAgICAgY2FzZSAncXVhcnRlcnMnOlxuICAgICAgICByZXR1cm4gYFEke1RlbXBvcmFsVXRpbC5nZXRRdWFydGVyRm9yRGF0ZShzdGFydERhdGUpfSwgJHtzdGFydERhdGUueWVhcn1gXG4gICAgICBjYXNlICdtb250aHMnOlxuICAgICAgICByZXR1cm4gYDFtICgke3N0YXJ0RGF0ZS5tb250aENvZGV9LCAke3N0YXJ0RGF0ZS55ZWFyfSlgXG4gICAgICBjYXNlICd3ZWVrcyc6XG4gICAgICAgIHJldHVybiBgMXcgKENXICR7c3RhcnREYXRlLndlZWtPZlllYXJ9LCAke2VuZERhdGUueWVhcn0pYFxuICAgICAgY2FzZSAnZGF5cyc6XG4gICAgICAgIHJldHVybiBgJHtzdGFydERhdGUudW50aWwoZW5kRGF0ZSkuZGF5c31kYFxuICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldERlbHRhSHVtYW5SZWFkYWJsZShkYXRlSW50ZXJ2YWwpfWBcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBgJHtzdGFydERhdGUudW50aWwoZW5kRGF0ZSkuZGF5c31kYFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNUaW1lU2V0QW5kTm90TWlkbmlnaHQodGltZTogVGVtcG9yYWwuUGxhaW5UaW1lKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gICAgaWYgKHRpbWUuaG91ciA9PT0gMCAmJiB0aW1lLm1pbnV0ZSA9PT0gMCAmJiB0aW1lLnNlY29uZCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldE1pbGxpc2Vjb25kc1RvWmVybyhpbnRlcnZhbDogSW50ZXJ2YWxTdGF0ZSk6IEludGVydmFsU3RhdGUge1xuICAgIHJldHVybiBuZXcgSW50ZXJ2YWxTdGF0ZShcbiAgICAgIGludGVydmFsLnN0YXJ0RGF0ZSxcbiAgICAgIGludGVydmFsLmVuZERhdGUsXG4gICAgICBpbnRlcnZhbC5zdGFydFRpbWUud2l0aCh7IG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29uZDogMCwgbmFub3NlY29uZDogMCB9KSxcbiAgICAgIGludGVydmFsLmVuZFRpbWUud2l0aCh7IG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29uZDogMCwgbmFub3NlY29uZDogMCB9KVxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcm91bmRVcFRvU2Vjb25kczxUIGV4dGVuZHMgVGVtcG9yYWwuUGxhaW5UaW1lIHwgVGVtcG9yYWwuUGxhaW5EYXRlVGltZT4oXG4gICAgdGltZTogVFxuICApOiBUIHtcbiAgICByZXR1cm4gdGltZS53aXRoKHtcbiAgICAgIHNlY29uZDogdGltZS5zZWNvbmQgKyAxLFxuICAgICAgbWlsbGlzZWNvbmQ6IDAsXG4gICAgICBtaWNyb3NlY29uZDogMCxcbiAgICAgIG5hbm9zZWNvbmQ6IDAsXG4gICAgfSkgYXMgVFxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB1cGRhdGVNYXRDYWxlbmRhckFjdGl2ZURhdGUoXG4gICAgY2FsZW5kYXJTdGFydDogTWF0Q2FsZW5kYXI8RGF0ZT4gfCB1bmRlZmluZWQsXG4gICAgY2FsZW5kYXJFbmQ6IE1hdENhbGVuZGFyPERhdGU+IHwgdW5kZWZpbmVkLFxuICAgIHN0YXJ0RGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlLFxuICAgIGVuZERhdGU6IFRlbXBvcmFsLlBsYWluRGF0ZVxuICApOiB2b2lkIHtcbiAgICBpZiAoIWNhbGVuZGFyU3RhcnQgfHwgIWNhbGVuZGFyRW5kKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXN0YXJ0RGF0ZSAmJiAhZW5kRGF0ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyB0aW1lb3V0IGlzIG5lZWRlZCB0byBydW4gY2FsZW5kYXIgdXBkYXRlIGxhc3QsIG90aGVyd2lzZSB0aGVyZSBhcmUgaXNzdWVzXG4gICAgICBpZiAoc3RhcnREYXRlKSB7XG4gICAgICAgIGNhbGVuZGFyU3RhcnQuYWN0aXZlRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZShzdGFydERhdGUpXG4gICAgICB9XG5cbiAgICAgIGlmIChlbmREYXRlKSB7XG4gICAgICAgIGNhbGVuZGFyRW5kLmFjdGl2ZURhdGUgPSBUZW1wb3JhbFV0aWwuZ2V0SlNEYXRlRnJvbVBsYWluRGF0ZVRpbWUoZW5kRGF0ZSlcbiAgICAgIH1cbiAgICB9LCAwKVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyB1cGRhdGVNYXRDYWxlbmRhclRvZGF5RGF0ZShcbiAgICBjYWxlbmRhclN0YXJ0OiBNYXRDYWxlbmRhcjxEYXRlPiB8IHVuZGVmaW5lZCxcbiAgICBjYWxlbmRhckVuZDogTWF0Q2FsZW5kYXI8RGF0ZT4gfCB1bmRlZmluZWRcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjYWxlbmRhclN0YXJ0IHx8ICFjYWxlbmRhckVuZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY2FsZW5kYXJTdGFydC51cGRhdGVUb2RheXNEYXRlKClcbiAgICBjYWxlbmRhckVuZC51cGRhdGVUb2RheXNEYXRlKClcbiAgfVxufVxuIl19
|
package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, Output, Input, ViewChild, } from '@angular/core';
|
|
2
|
-
import { LocalDate, ZoneId } from '@js-joda/core';
|
|
3
|
-
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
4
|
-
import { combineLatest, of, Subject } from 'rxjs';
|
|
5
|
-
import { catchError, map } from 'rxjs/operators';
|
|
6
|
-
import { MatDatepicker, MatDatepickerInput, MatDatepickerToggle, MatDatepickerToggleIcon, } from '@angular/material/datepicker';
|
|
7
|
-
import { TimeUtil } from '../../../common/time/time-util';
|
|
8
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
9
|
-
import { ElderFormFieldControlBase } from '../../../common/forms/elder-form-field-control-base.directive';
|
|
10
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
11
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
12
|
-
import { FormsModule } from '@angular/forms';
|
|
13
|
-
import { ElderStopEventPropagationDirective } from '../../forms/directives/elder-stop-event-propagation.directive';
|
|
14
|
-
import { ElderFormFieldNoSpinnerDirective } from '../../forms/directives/elder-form-field-no-spinner.directive';
|
|
15
|
-
import { MatInput } from '@angular/material/input';
|
|
16
|
-
import { MatIcon } from '@angular/material/icon';
|
|
17
|
-
import { MatIconButton } from '@angular/material/button';
|
|
18
|
-
import { NgIf, AsyncPipe, DatePipe } from '@angular/common';
|
|
19
|
-
import * as i0 from "@angular/core";
|
|
20
|
-
import * as i1 from "@angular/forms";
|
|
21
|
-
import * as i2 from "@ngx-translate/core";
|
|
22
|
-
export class ElderLocalDateInputComponent extends ElderFormFieldControlBase {
|
|
23
|
-
/***************************************************************************
|
|
24
|
-
* *
|
|
25
|
-
* Constructor *
|
|
26
|
-
* *
|
|
27
|
-
**************************************************************************/
|
|
28
|
-
constructor() {
|
|
29
|
-
super('local-date-input');
|
|
30
|
-
/***************************************************************************
|
|
31
|
-
* *
|
|
32
|
-
* Fields *
|
|
33
|
-
* *
|
|
34
|
-
**************************************************************************/
|
|
35
|
-
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
36
|
-
this._allowNull = false;
|
|
37
|
-
this.zone = ZoneId.systemDefault();
|
|
38
|
-
/** If true, date picker functionality is enabled. */
|
|
39
|
-
this._datePickerEnabled = true;
|
|
40
|
-
this._arrows = false;
|
|
41
|
-
this._today = false;
|
|
42
|
-
this._autoDatePicker = false;
|
|
43
|
-
this._datePickerTouchUi = false;
|
|
44
|
-
this._center = false;
|
|
45
|
-
this.blurred = new Subject();
|
|
46
|
-
this.date$ = this.mapIgnoreErrorObservable(this.value$, (v) => TimeUtil.localDateToDate(v, this.zone));
|
|
47
|
-
this.valueUpdatedBlur = combineLatest([this.valueUpdated, this.blurred]).pipe(map(([value, focusEvent]) => value));
|
|
48
|
-
}
|
|
49
|
-
/***************************************************************************
|
|
50
|
-
* *
|
|
51
|
-
* Properties *
|
|
52
|
-
* *
|
|
53
|
-
**************************************************************************/
|
|
54
|
-
set autoDatePicker(val) {
|
|
55
|
-
this._autoDatePicker = coerceBooleanProperty(val);
|
|
56
|
-
}
|
|
57
|
-
get autoDatePicker() {
|
|
58
|
-
return this._autoDatePicker;
|
|
59
|
-
}
|
|
60
|
-
set arrows(val) {
|
|
61
|
-
this._arrows = coerceBooleanProperty(val);
|
|
62
|
-
}
|
|
63
|
-
get arrows() {
|
|
64
|
-
return this._arrows;
|
|
65
|
-
}
|
|
66
|
-
set today(val) {
|
|
67
|
-
this._today = coerceBooleanProperty(val);
|
|
68
|
-
}
|
|
69
|
-
get today() {
|
|
70
|
-
return this._today;
|
|
71
|
-
}
|
|
72
|
-
set center(center) {
|
|
73
|
-
this._center = coerceBooleanProperty(center);
|
|
74
|
-
}
|
|
75
|
-
get center() {
|
|
76
|
-
return this._center;
|
|
77
|
-
}
|
|
78
|
-
/** If true, touch optimized mode of date picker is enabled. */
|
|
79
|
-
set datePickerTouchUi(enabled) {
|
|
80
|
-
this._datePickerTouchUi = coerceBooleanProperty(enabled);
|
|
81
|
-
}
|
|
82
|
-
get datePickerTouchUi() {
|
|
83
|
-
return this._datePickerTouchUi;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Allows the user to select 'nothing' / null.
|
|
87
|
-
*/
|
|
88
|
-
set allowNull(val) {
|
|
89
|
-
this._allowNull = coerceBooleanProperty(val);
|
|
90
|
-
}
|
|
91
|
-
get allowNull() {
|
|
92
|
-
return this._allowNull;
|
|
93
|
-
}
|
|
94
|
-
set datePickerEnabled(enabled) {
|
|
95
|
-
this._datePickerEnabled = coerceBooleanProperty(enabled);
|
|
96
|
-
}
|
|
97
|
-
get datePickerEnabled() {
|
|
98
|
-
return this._datePickerEnabled;
|
|
99
|
-
}
|
|
100
|
-
get isoValueChange() {
|
|
101
|
-
return this.mapIgnoreErrorObservable(this.valueChange, (d) => d.toJSON());
|
|
102
|
-
}
|
|
103
|
-
set isoValue(value) {
|
|
104
|
-
this.value = this.mapIgnoreError(value, (d) => LocalDate.parse(d));
|
|
105
|
-
}
|
|
106
|
-
get dateValueChange() {
|
|
107
|
-
return this.mapIgnoreErrorObservable(this.valueChange, (d) => TimeUtil.localDateToDate(d));
|
|
108
|
-
}
|
|
109
|
-
set dateValue(value) {
|
|
110
|
-
this.value = this.mapIgnoreError(value, (d) => TimeUtil.dateToLocalDate(d));
|
|
111
|
-
}
|
|
112
|
-
get isoDateValueChange() {
|
|
113
|
-
return this.mapIgnoreErrorObservable(this.valueChange, (d) => TimeUtil.localDateToDate(d).toISOString());
|
|
114
|
-
}
|
|
115
|
-
set isoDateValue(value) {
|
|
116
|
-
this.value = this.mapIgnoreError(value, (d) => TimeUtil.dateToLocalDate(new Date(d)));
|
|
117
|
-
}
|
|
118
|
-
get shouldLabelFloat() {
|
|
119
|
-
return true;
|
|
120
|
-
}
|
|
121
|
-
/***************************************************************************
|
|
122
|
-
* *
|
|
123
|
-
* Public API *
|
|
124
|
-
* *
|
|
125
|
-
**************************************************************************/
|
|
126
|
-
previousDay() {
|
|
127
|
-
this.updateValue(this.value.minusDays(1));
|
|
128
|
-
}
|
|
129
|
-
nextDay() {
|
|
130
|
-
this.updateValue(this.value.plusDays(1));
|
|
131
|
-
}
|
|
132
|
-
currentDay() {
|
|
133
|
-
this.updateValue(LocalDate.now());
|
|
134
|
-
}
|
|
135
|
-
focus(options) {
|
|
136
|
-
this.inputRef?.nativeElement?.focus(options);
|
|
137
|
-
}
|
|
138
|
-
blur() {
|
|
139
|
-
this.inputRef?.nativeElement?.blur();
|
|
140
|
-
}
|
|
141
|
-
clear(event) {
|
|
142
|
-
this.updateValue(null);
|
|
143
|
-
}
|
|
144
|
-
openDatePicker() {
|
|
145
|
-
this.picker.open();
|
|
146
|
-
}
|
|
147
|
-
onDateInputChanged(newDate) {
|
|
148
|
-
try {
|
|
149
|
-
this.logger.debug('onDateInputChanged: "' + newDate + '"');
|
|
150
|
-
if (newDate === '' || newDate.startsWith('0')) {
|
|
151
|
-
return;
|
|
152
|
-
} // Ignore while updating the year
|
|
153
|
-
this.setDateStrInternally(newDate);
|
|
154
|
-
}
|
|
155
|
-
catch (err) {
|
|
156
|
-
this.logger.error('Failed to parse from date-input-changed event: ' + newDate, err);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
onDatepickerInputChange(event) {
|
|
160
|
-
this.logger.debug('Datepicker Input has changed: ' + event.value);
|
|
161
|
-
this.setDateInternally(event.value);
|
|
162
|
-
}
|
|
163
|
-
onDateInputClicked(event) {
|
|
164
|
-
if (this.autoDatePicker) {
|
|
165
|
-
this.openDatePicker();
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/***************************************************************************
|
|
169
|
-
* *
|
|
170
|
-
* Private methods *
|
|
171
|
-
* *
|
|
172
|
-
**************************************************************************/
|
|
173
|
-
mapIgnoreError(value, conversionFn) {
|
|
174
|
-
try {
|
|
175
|
-
const ld = value ? conversionFn(value) : null;
|
|
176
|
-
this.logger.info('Setting local date: ' + ld);
|
|
177
|
-
return ld;
|
|
178
|
-
}
|
|
179
|
-
catch (err) {
|
|
180
|
-
this.logger.warn('Failed to apply value to dateValue: ' + value, err);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
mapIgnoreErrorObservable(date, conversionFn) {
|
|
184
|
-
return date.pipe(map((localDate) => (localDate ? conversionFn(localDate) : null)), catchError((err) => {
|
|
185
|
-
this.logger.error('Failed to convert local date!', err);
|
|
186
|
-
return of(null);
|
|
187
|
-
}));
|
|
188
|
-
}
|
|
189
|
-
setDateStrInternally(date) {
|
|
190
|
-
if (date) {
|
|
191
|
-
this.updateValue(LocalDate.parse(date));
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
this.updateValue(null);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
setDateInternally(date) {
|
|
198
|
-
if (date) {
|
|
199
|
-
this.updateValue(TimeUtil.dateToLocalDate(date));
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
this.updateValue(null);
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
valuesEquals(a, b) {
|
|
206
|
-
return a && b ? a.equals(b) : a === b;
|
|
207
|
-
}
|
|
208
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderLocalDateInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
209
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ElderLocalDateInputComponent, isStandalone: true, selector: "elder-local-date-input", inputs: { zone: "zone", autoDatePicker: "autoDatePicker", arrows: "arrows", today: "today", center: "center", datePickerTouchUi: "datePickerTouchUi", allowNull: "allowNull", datePickerEnabled: "datePickerEnabled", isoValue: "isoValue", dateValue: "dateValue", isoDateValue: "isoDateValue" }, outputs: { blurred: "blurred", valueUpdatedBlur: "valueUpdatedBlur", isoValueChange: "isoValueChange", dateValueChange: "dateValueChange", isoDateValueChange: "isoDateValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderLocalDateInputComponent }], viewQueries: [{ propertyName: "picker", first: true, predicate: MatDatepicker, descendants: true, static: true }, { propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-center elder-flex-control\">\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"previousDay()\"\n >\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <input\n matInput\n elderNoSpinner\n class=\"flex elder-mdc-input-fix elder-local-date-input\"\n #input\n type=\"date\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [required]=\"!!required\"\n [readonly]=\"readonly || autoDatePicker\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholderS() | translate\"\n [ngModel]=\"date$ | async | date: 'yyyy-MM-dd'\"\n (ngModelChange)=\"onDateInputChanged($event)\"\n (blur)=\"blurred.next($event)\"\n [class.elder-auto-date-picker]=\"autoDatePicker\"\n [class.noselect]=\"autoDatePicker\"\n [class.center]=\"center || arrows\"\n (click)=\"onDateInputClicked($event)\"\n />\n <input\n style=\"display: none\"\n [matDatepicker]=\"picker\"\n (dateChange)=\"onDatepickerInputChange($event)\"\n />\n\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"nextDay()\"\n >\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"today\"\n class=\"elder-control-icon-button\"\n style=\"margin-left: 4px\"\n [disabled]=\"isLocked\"\n (click)=\"currentDay()\"\n >\n <mat-icon>today</mat-icon>\n </button>\n\n <mat-datepicker-toggle\n class=\"elder-control-icon-button\"\n *ngIf=\"datePickerEnabled && (!allowNull || (value$ | async) === null)\"\n [disabled]=\"isLocked\"\n [for]=\"picker\"\n >\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n *ngIf=\"allowNull && (value$ | async)\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-datepicker [touchUi]=\"datePickerTouchUi\" #picker></mat-datepicker>\n</div>\n", styles: ["input::-webkit-calendar-picker-indicator{display:none}.elder-auto-date-picker{cursor:pointer}.elder-local-date-input.center{text-align:center}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
210
|
-
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderLocalDateInputComponent, decorators: [{
|
|
212
|
-
type: Component,
|
|
213
|
-
args: [{ selector: 'elder-local-date-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderLocalDateInputComponent }], standalone: true, imports: [
|
|
214
|
-
NgIf,
|
|
215
|
-
MatIconButton,
|
|
216
|
-
MatIcon,
|
|
217
|
-
MatInput,
|
|
218
|
-
ElderFormFieldNoSpinnerDirective,
|
|
219
|
-
FormsModule,
|
|
220
|
-
MatDatepickerInput,
|
|
221
|
-
MatDatepickerToggle,
|
|
222
|
-
MatDatepickerToggleIcon,
|
|
223
|
-
ElderStopEventPropagationDirective,
|
|
224
|
-
MatDatepicker,
|
|
225
|
-
AsyncPipe,
|
|
226
|
-
DatePipe,
|
|
227
|
-
TranslateModule,
|
|
228
|
-
], template: "<div class=\"layout-row place-start-center elder-flex-control\">\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"previousDay()\"\n >\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <input\n matInput\n elderNoSpinner\n class=\"flex elder-mdc-input-fix elder-local-date-input\"\n #input\n type=\"date\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [required]=\"!!required\"\n [readonly]=\"readonly || autoDatePicker\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholderS() | translate\"\n [ngModel]=\"date$ | async | date: 'yyyy-MM-dd'\"\n (ngModelChange)=\"onDateInputChanged($event)\"\n (blur)=\"blurred.next($event)\"\n [class.elder-auto-date-picker]=\"autoDatePicker\"\n [class.noselect]=\"autoDatePicker\"\n [class.center]=\"center || arrows\"\n (click)=\"onDateInputClicked($event)\"\n />\n <input\n style=\"display: none\"\n [matDatepicker]=\"picker\"\n (dateChange)=\"onDatepickerInputChange($event)\"\n />\n\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"nextDay()\"\n >\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"today\"\n class=\"elder-control-icon-button\"\n style=\"margin-left: 4px\"\n [disabled]=\"isLocked\"\n (click)=\"currentDay()\"\n >\n <mat-icon>today</mat-icon>\n </button>\n\n <mat-datepicker-toggle\n class=\"elder-control-icon-button\"\n *ngIf=\"datePickerEnabled && (!allowNull || (value$ | async) === null)\"\n [disabled]=\"isLocked\"\n [for]=\"picker\"\n >\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n *ngIf=\"allowNull && (value$ | async)\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-datepicker [touchUi]=\"datePickerTouchUi\" #picker></mat-datepicker>\n</div>\n", styles: ["input::-webkit-calendar-picker-indicator{display:none}.elder-auto-date-picker{cursor:pointer}.elder-local-date-input.center{text-align:center}\n"] }]
|
|
229
|
-
}], ctorParameters: () => [], propDecorators: { zone: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}], picker: [{
|
|
232
|
-
type: ViewChild,
|
|
233
|
-
args: [MatDatepicker, { static: true }]
|
|
234
|
-
}], inputRef: [{
|
|
235
|
-
type: ViewChild,
|
|
236
|
-
args: ['input']
|
|
237
|
-
}], blurred: [{
|
|
238
|
-
type: Output
|
|
239
|
-
}], valueUpdatedBlur: [{
|
|
240
|
-
type: Output
|
|
241
|
-
}], autoDatePicker: [{
|
|
242
|
-
type: Input
|
|
243
|
-
}], arrows: [{
|
|
244
|
-
type: Input
|
|
245
|
-
}], today: [{
|
|
246
|
-
type: Input
|
|
247
|
-
}], center: [{
|
|
248
|
-
type: Input
|
|
249
|
-
}], datePickerTouchUi: [{
|
|
250
|
-
type: Input
|
|
251
|
-
}], allowNull: [{
|
|
252
|
-
type: Input
|
|
253
|
-
}], datePickerEnabled: [{
|
|
254
|
-
type: Input
|
|
255
|
-
}], isoValueChange: [{
|
|
256
|
-
type: Output
|
|
257
|
-
}], isoValue: [{
|
|
258
|
-
type: Input
|
|
259
|
-
}], dateValueChange: [{
|
|
260
|
-
type: Output
|
|
261
|
-
}], dateValue: [{
|
|
262
|
-
type: Input
|
|
263
|
-
}], isoDateValueChange: [{
|
|
264
|
-
type: Output
|
|
265
|
-
}], isoDateValue: [{
|
|
266
|
-
type: Input
|
|
267
|
-
}] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItbG9jYWwtZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3RpbWUvZWxkZXItbG9jYWwtZGF0ZS1pbnB1dC9lbGRlci1sb2NhbC1kYXRlLWlucHV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1sb2NhbC1kYXRlLWlucHV0L2VsZGVyLWxvY2FsLWRhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsTUFBTSxFQUNOLEtBQUssRUFDTCxTQUFTLEdBS1YsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ2hELE9BQU8sRUFDTCxhQUFhLEVBRWIsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQix1QkFBdUIsR0FDeEIsTUFBTSw4QkFBOEIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFFekQsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzNFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtEQUErRCxDQUFBO0FB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Q25CLHVCQUF1Qjt3QkFDdkIsa0NBQWtDO3dCQUNsQyxhQUFhO3dCQUNiLFNBQVM7d0JBQ1QsUUFBUTt3QkFDUixlQUFlO3FCQUNoQjt3REFjTSxJQUFJO3NCQURWLEtBQUs7Z0JBWUMsTUFBTTtzQkFEWixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSW5DLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxPQUFPO2dCQU1GLE9BQU87c0JBRHRCLE1BQU07Z0JBUVMsZ0JBQWdCO3NCQUQvQixNQUFNO2dCQTBCSSxjQUFjO3NCQUR4QixLQUFLO2dCQVVLLE1BQU07c0JBRGhCLEtBQUs7Z0JBVUssS0FBSztzQkFEZixLQUFLO2dCQVVLLE1BQU07c0JBRGhCLEtBQUs7Z0JBV0ssaUJBQWlCO3NCQUQzQixLQUFLO2dCQWFLLFNBQVM7c0JBRG5CLEtBQUs7Z0JBVUssaUJBQWlCO3NCQUQzQixLQUFLO2dCQVVLLGNBQWM7c0JBRHhCLE1BQU07Z0JBTUksUUFBUTtzQkFEbEIsS0FBSztnQkFNSyxlQUFlO3NCQUR6QixNQUFNO2dCQVFJLFNBQVM7c0JBRG5CLEtBQUs7Z0JBTUssa0JBQWtCO3NCQUQ1QixNQUFNO2dCQVFJLFlBQVk7c0JBRHRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBPdXRwdXQsXG4gIElucHV0LFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIE5nWm9uZSxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBMb2NhbERhdGUsIFpvbmVJZCB9IGZyb20gJ0Bqcy1qb2RhL2NvcmUnXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcbmltcG9ydCB7XG4gIE1hdERhdGVwaWNrZXIsXG4gIE1hdERhdGVwaWNrZXJJbnB1dEV2ZW50LFxuICBNYXREYXRlcGlja2VySW5wdXQsXG4gIE1hdERhdGVwaWNrZXJUb2dnbGUsXG4gIE1hdERhdGVwaWNrZXJUb2dnbGVJY29uLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJ1xuaW1wb3J0IHsgVGltZVV0aWwgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vdGltZS90aW1lLXV0aWwnXG5pbXBvcnQgeyBJc29EYXRlU3RyIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3RpbWUvZGF0ZS11dGlsJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBFbGRlckZvcm1GaWVsZENvbnRyb2xCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2Zvcm1zL2VsZGVyLWZvcm0tZmllbGQtY29udHJvbC1iYXNlLmRpcmVjdGl2ZSdcbmltcG9ydCB7IE1hdEZvcm1GaWVsZENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJ1xuaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJ1xuaW1wb3J0IHsgTmdDb250cm9sLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJ1xuaW1wb3J0IHsgRWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItc3RvcC1ldmVudC1wcm9wYWdhdGlvbi5kaXJlY3RpdmUnXG5pbXBvcnQgeyBFbGRlckZvcm1GaWVsZE5vU3Bpbm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2Zvcm1zL2RpcmVjdGl2ZXMvZWxkZXItZm9ybS1maWVsZC1uby1zcGlubmVyLmRpcmVjdGl2ZSdcbmltcG9ydCB7IE1hdElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnXG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbidcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nXG5pbXBvcnQgeyBOZ0lmLCBBc3luY1BpcGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbGRlci1sb2NhbC1kYXRlLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLWxvY2FsLWRhdGUtaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbGRlci1sb2NhbC1kYXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1hdEZvcm1GaWVsZENvbnRyb2wsIHVzZUV4aXN0aW5nOiBFbGRlckxvY2FsRGF0ZUlucHV0Q29tcG9uZW50IH1dLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdJZixcbiAgICBNYXRJY29uQnV0dG9uLFxuICAgIE1hdEljb24sXG4gICAgTWF0SW5wdXQsXG4gICAgRWxkZXJGb3JtRmllbGROb1NwaW5uZXJEaXJlY3RpdmUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlcklucHV0LFxuICAgIE1hdERhdGVwaWNrZXJUb2dnbGUsXG4gICAgTWF0RGF0ZXBpY2tlclRvZ2dsZUljb24sXG4gICAgRWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvbkRpcmVjdGl2ZSxcbiAgICBNYXREYXRlcGlja2VyLFxuICAgIEFzeW5jUGlwZSxcbiAgICBEYXRlUGlwZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEVsZGVyTG9jYWxEYXRlSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBFbGRlckZvcm1GaWVsZENvbnRyb2xCYXNlPExvY2FsRGF0ZT4ge1xuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSlcblxuICBwcml2YXRlIF9hbGxvd051bGwgPSBmYWxzZVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB6b25lID0gWm9uZUlkLnN5c3RlbURlZmF1bHQoKVxuXG4gIC8qKiBJZiB0cnVlLCBkYXRlIHBpY2tlciBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQuICovXG4gIHByaXZhdGUgX2RhdGVQaWNrZXJFbmFibGVkID0gdHJ1ZVxuICBwcml2YXRlIF9hcnJvd3MgPSBmYWxzZVxuICBwcml2YXRlIF90b2RheSA9IGZhbHNlXG4gIHByaXZhdGUgX2F1dG9EYXRlUGlja2VyID0gZmFsc2VcbiAgcHJpdmF0ZSBfZGF0ZVBpY2tlclRvdWNoVWkgPSBmYWxzZVxuICBwcml2YXRlIF9jZW50ZXIgPSBmYWxzZVxuXG4gIEBWaWV3Q2hpbGQoTWF0RGF0ZXBpY2tlciwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxEYXRlPlxuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0JylcbiAgcHVibGljIGlucHV0UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+XG5cbiAgcHVibGljIHJlYWRvbmx5IGRhdGUkOiBPYnNlcnZhYmxlPERhdGU+XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBibHVycmVkID0gbmV3IFN1YmplY3Q8Rm9jdXNFdmVudD4oKVxuXG4gIC8qKlxuICAgKiBFbWl0cyB0aGUgdXBkYXRlZCB2YWx1ZSBhZnRlciB0aGUgY29udHJvbCBibHVycmVkLlxuICAgKiAodXBkYXRlICYgYmx1cikgZXZlbnRzIG11c3QgaGF2ZSBoYXBwZW5lZC5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVVcGRhdGVkQmx1cjogT2JzZXJ2YWJsZTxMb2NhbERhdGU+XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoJ2xvY2FsLWRhdGUtaW5wdXQnKVxuICAgIHRoaXMuZGF0ZSQgPSB0aGlzLm1hcElnbm9yZUVycm9yT2JzZXJ2YWJsZSh0aGlzLnZhbHVlJCwgKHY6IExvY2FsRGF0ZSkgPT5cbiAgICAgIFRpbWVVdGlsLmxvY2FsRGF0ZVRvRGF0ZSh2LCB0aGlzLnpvbmUpXG4gICAgKVxuICAgIHRoaXMudmFsdWVVcGRhdGVkQmx1ciA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudmFsdWVVcGRhdGVkLCB0aGlzLmJsdXJyZWRdKS5waXBlKFxuICAgICAgbWFwKChbdmFsdWUsIGZvY3VzRXZlbnRdKSA9PiB2YWx1ZSlcbiAgICApXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGF1dG9EYXRlUGlja2VyKHZhbDogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fYXV0b0RhdGVQaWNrZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKVxuICB9XG5cbiAgcHVibGljIGdldCBhdXRvRGF0ZVBpY2tlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0b0RhdGVQaWNrZXJcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgYXJyb3dzKHZhbDogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fYXJyb3dzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJyb3dzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hcnJvd3NcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdG9kYXkodmFsOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl90b2RheSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpXG4gIH1cblxuICBwdWJsaWMgZ2V0IHRvZGF5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90b2RheVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjZW50ZXIoY2VudGVyOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9jZW50ZXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoY2VudGVyKVxuICB9XG5cbiAgcHVibGljIGdldCBjZW50ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2NlbnRlclxuICB9XG5cbiAgLyoqIElmIHRydWUsIHRvdWNoIG9wdGltaXplZCBtb2RlIG9mIGRhdGUgcGlja2VyIGlzIGVuYWJsZWQuICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGF0ZVBpY2tlclRvdWNoVWkoZW5hYmxlZDogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGF0ZVBpY2tlclRvdWNoVWkgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkoZW5hYmxlZClcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGF0ZVBpY2tlclRvdWNoVWkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVQaWNrZXJUb3VjaFVpXG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIHRoZSB1c2VyIHRvIHNlbGVjdCAnbm90aGluZycgLyBudWxsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhbGxvd051bGwodmFsOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9hbGxvd051bGwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsKVxuICB9XG5cbiAgcHVibGljIGdldCBhbGxvd051bGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2FsbG93TnVsbFxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRlUGlja2VyRW5hYmxlZChlbmFibGVkOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kYXRlUGlja2VyRW5hYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShlbmFibGVkKVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRlUGlja2VyRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZVBpY2tlckVuYWJsZWRcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZ2V0IGlzb1ZhbHVlQ2hhbmdlKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLm1hcElnbm9yZUVycm9yT2JzZXJ2YWJsZSh0aGlzLnZhbHVlQ2hhbmdlLCAoZDogTG9jYWxEYXRlKSA9PiBkLnRvSlNPTigpKVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpc29WYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLm1hcElnbm9yZUVycm9yKHZhbHVlLCAoZDogc3RyaW5nKSA9PiBMb2NhbERhdGUucGFyc2UoZCkpXG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBkYXRlVmFsdWVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxEYXRlIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLm1hcElnbm9yZUVycm9yT2JzZXJ2YWJsZSh0aGlzLnZhbHVlQ2hhbmdlLCAoZDogTG9jYWxEYXRlKSA9PlxuICAgICAgVGltZVV0aWwubG9jYWxEYXRlVG9EYXRlKGQpXG4gICAgKVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRlVmFsdWUodmFsdWU6IERhdGUgfCBudWxsKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMubWFwSWdub3JlRXJyb3IodmFsdWUsIChkOiBEYXRlKSA9PiBUaW1lVXRpbC5kYXRlVG9Mb2NhbERhdGUoZCkpXG4gIH1cblxuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBpc29EYXRlVmFsdWVDaGFuZ2UoKTogT2JzZXJ2YWJsZTxJc29EYXRlU3RyIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLm1hcElnbm9yZUVycm9yT2JzZXJ2YWJsZSh0aGlzLnZhbHVlQ2hhbmdlLCAoZDogTG9jYWxEYXRlKSA9PlxuICAgICAgVGltZVV0aWwubG9jYWxEYXRlVG9EYXRlKGQpLnRvSVNPU3RyaW5nKClcbiAgICApXG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGlzb0RhdGVWYWx1ZSh2YWx1ZTogSXNvRGF0ZVN0ciB8IG51bGwpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5tYXBJZ25vcmVFcnJvcih2YWx1ZSwgKGQ6IElzb0RhdGVTdHIpID0+XG4gICAgICBUaW1lVXRpbC5kYXRlVG9Mb2NhbERhdGUobmV3IERhdGUoZCkpXG4gICAgKVxuICB9XG5cbiAgcHVibGljIGdldCBzaG91bGRMYWJlbEZsb2F0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgcHJldmlvdXNEYXkoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnZhbHVlLm1pbnVzRGF5cygxKSlcbiAgfVxuXG4gIHB1YmxpYyBuZXh0RGF5KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy52YWx1ZS5wbHVzRGF5cygxKSlcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50RGF5KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVmFsdWUoTG9jYWxEYXRlLm5vdygpKVxuICB9XG5cbiAgcHVibGljIGZvY3VzKG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0UmVmPy5uYXRpdmVFbGVtZW50Py5mb2N1cyhvcHRpb25zKVxuICB9XG5cbiAgcHVibGljIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uYmx1cigpXG4gIH1cblxuICBwdWJsaWMgY2xlYXIoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKVxuICB9XG5cbiAgcHVibGljIG9wZW5EYXRlUGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMucGlja2VyLm9wZW4oKVxuICB9XG5cbiAgcHVibGljIG9uRGF0ZUlucHV0Q2hhbmdlZChuZXdEYXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ29uRGF0ZUlucHV0Q2hhbmdlZDogXCInICsgbmV3RGF0ZSArICdcIicpXG5cbiAgICAgIGlmIChuZXdEYXRlID09PSAnJyB8fCBuZXdEYXRlLnN0YXJ0c1dpdGgoJzAnKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH0gLy8gSWdub3JlIHdoaWxlIHVwZGF0aW5nIHRoZSB5ZWFyXG4gICAgICB0aGlzLnNldERhdGVTdHJJbnRlcm5hbGx5KG5ld0RhdGUpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIGZyb20gZGF0ZS1pbnB1dC1jaGFuZ2VkIGV2ZW50OiAnICsgbmV3RGF0ZSwgZXJyKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGVwaWNrZXJJbnB1dENoYW5nZShldmVudDogTWF0RGF0ZXBpY2tlcklucHV0RXZlbnQ8RGF0ZT4pOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnRGF0ZXBpY2tlciBJbnB1dCBoYXMgY2hhbmdlZDogJyArIGV2ZW50LnZhbHVlKVxuICAgIHRoaXMuc2V0RGF0ZUludGVybmFsbHkoZXZlbnQudmFsdWUpXG4gIH1cblxuICBwdWJsaWMgb25EYXRlSW5wdXRDbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0RhdGVQaWNrZXIpIHtcbiAgICAgIHRoaXMub3BlbkRhdGVQaWNrZXIoKVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgbWFwSWdub3JlRXJyb3I8VD4odmFsdWU6IFQgfCBudWxsLCBjb252ZXJzaW9uRm46IChkOiBUIHwgbnVsbCkgPT4gTG9jYWxEYXRlKTogTG9jYWxEYXRlIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbGQgPSB2YWx1ZSA/IGNvbnZlcnNpb25Gbih2YWx1ZSkgOiBudWxsXG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKCdTZXR0aW5nIGxvY2FsIGRhdGU6ICcgKyBsZClcbiAgICAgIHJldHVybiBsZFxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2dnZXIud2FybignRmFpbGVkIHRvIGFwcGx5IHZhbHVlIHRvIGRhdGVWYWx1ZTogJyArIHZhbHVlLCBlcnIpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBJZ25vcmVFcnJvck9ic2VydmFibGU8VD4oXG4gICAgZGF0ZTogT2JzZXJ2YWJsZTxMb2NhbERhdGU+LFxuICAgIGNvbnZlcnNpb25GbjogKGQ6IExvY2FsRGF0ZSkgPT4gVFxuICApOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB7XG4gICAgcmV0dXJuIGRhdGUucGlwZShcbiAgICAgIG1hcCgobG9jYWxEYXRlKSA9PiAobG9jYWxEYXRlID8gY29udmVyc2lvbkZuKGxvY2FsRGF0ZSkgOiBudWxsKSksXG4gICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBjb252ZXJ0IGxvY2FsIGRhdGUhJywgZXJyKVxuICAgICAgICByZXR1cm4gb2YobnVsbClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXRlU3RySW50ZXJuYWxseShkYXRlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShMb2NhbERhdGUucGFyc2UoZGF0ZSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldERhdGVJbnRlcm5hbGx5KGRhdGU6IERhdGUpOiB2b2lkIHtcbiAgICBpZiAoZGF0ZSkge1xuICAgICAgdGhpcy51cGRhdGVWYWx1ZShUaW1lVXRpbC5kYXRlVG9Mb2NhbERhdGUoZGF0ZSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbClcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdmFsdWVzRXF1YWxzKGE6IExvY2FsRGF0ZSwgYjogTG9jYWxEYXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGEgJiYgYiA/IGEuZXF1YWxzKGIpIDogYSA9PT0gYlxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgZWxkZXItZmxleC1jb250cm9sXCI+XG4gIDxidXR0b25cbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAqbmdJZj1cImFycm93c1wiXG4gICAgY2xhc3M9XCJlbGRlci1jb250cm9sLWljb24tYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwiaXNMb2NrZWQgfHwgIXZhbHVlXCJcbiAgICAoY2xpY2spPVwicHJldmlvdXNEYXkoKVwiXG4gID5cbiAgICA8bWF0LWljb24+a2V5Ym9hcmRfYXJyb3dfbGVmdDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIDxpbnB1dFxuICAgIG1hdElucHV0XG4gICAgZWxkZXJOb1NwaW5uZXJcbiAgICBjbGFzcz1cImZsZXggZWxkZXItbWRjLWlucHV0LWZpeCBlbGRlci1sb2NhbC1kYXRlLWlucHV0XCJcbiAgICAjaW5wdXRcbiAgICB0eXBlPVwiZGF0ZVwiXG4gICAgW25hbWVdPVwibmdDb250cm9sPy5uYW1lICsgJy1pbm5lci1pbnB1dCdcIlxuICAgIFtyZXF1aXJlZF09XCIhIXJlcXVpcmVkXCJcbiAgICBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgYXV0b0RhdGVQaWNrZXJcIlxuICAgIFtkaXNhYmxlZF09XCIhIWRpc2FibGVkXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJTKCkgfCB0cmFuc2xhdGVcIlxuICAgIFtuZ01vZGVsXT1cImRhdGUkIHwgYXN5bmMgfCBkYXRlOiAneXl5eS1NTS1kZCdcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uRGF0ZUlucHV0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAoYmx1cik9XCJibHVycmVkLm5leHQoJGV2ZW50KVwiXG4gICAgW2NsYXNzLmVsZGVyLWF1dG8tZGF0ZS1waWNrZXJdPVwiYXV0b0RhdGVQaWNrZXJcIlxuICAgIFtjbGFzcy5ub3NlbGVjdF09XCJhdXRvRGF0ZVBpY2tlclwiXG4gICAgW2NsYXNzLmNlbnRlcl09XCJjZW50ZXIgfHwgYXJyb3dzXCJcbiAgICAoY2xpY2spPVwib25EYXRlSW5wdXRDbGlja2VkKCRldmVudClcIlxuICAvPlxuICA8aW5wdXRcbiAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiXG4gICAgKGRhdGVDaGFuZ2UpPVwib25EYXRlcGlja2VySW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gIC8+XG5cbiAgPGJ1dHRvblxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgICpuZ0lmPVwiYXJyb3dzXCJcbiAgICBjbGFzcz1cImVsZGVyLWNvbnRyb2wtaWNvbi1idXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCJpc0xvY2tlZCB8fCAhdmFsdWVcIlxuICAgIChjbGljayk9XCJuZXh0RGF5KClcIlxuICA+XG4gICAgPG1hdC1pY29uPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvblxuICAgIG1hdC1pY29uLWJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgICpuZ0lmPVwidG9kYXlcIlxuICAgIGNsYXNzPVwiZWxkZXItY29udHJvbC1pY29uLWJ1dHRvblwiXG4gICAgc3R5bGU9XCJtYXJnaW4tbGVmdDogNHB4XCJcbiAgICBbZGlzYWJsZWRdPVwiaXNMb2NrZWRcIlxuICAgIChjbGljayk9XCJjdXJyZW50RGF5KClcIlxuICA+XG4gICAgPG1hdC1pY29uPnRvZGF5PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG5cbiAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZVxuICAgIGNsYXNzPVwiZWxkZXItY29udHJvbC1pY29uLWJ1dHRvblwiXG4gICAgKm5nSWY9XCJkYXRlUGlja2VyRW5hYmxlZCAmJiAoIWFsbG93TnVsbCB8fCAodmFsdWUkIHwgYXN5bmMpID09PSBudWxsKVwiXG4gICAgW2Rpc2FibGVkXT1cImlzTG9ja2VkXCJcbiAgICBbZm9yXT1cInBpY2tlclwiXG4gID5cbiAgICA8bWF0LWljb24gbWF0RGF0ZXBpY2tlclRvZ2dsZUljb24+Y2FsZW5kYXJfbW9udGg8L21hdC1pY29uPlxuICA8L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cblxuICA8YnV0dG9uXG4gICAgbWF0LWljb24tYnV0dG9uXG4gICAgdHlwZT1cImJ1dHRvblwiXG4gICAgY2xhc3M9XCJlbGRlci1jb250cm9sLWljb24tYnV0dG9uXCJcbiAgICAqbmdJZj1cImFsbG93TnVsbCAmJiAodmFsdWUkIHwgYXN5bmMpXCJcbiAgICBbZGlzYWJsZWRdPVwiaXNMb2NrZWRcIlxuICAgIChjbGljayk9XCJjbGVhcigkZXZlbnQpXCJcbiAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgIGVsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25cbiAgPlxuICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIDxtYXQtZGF0ZXBpY2tlciBbdG91Y2hVaV09XCJkYXRlUGlja2VyVG91Y2hVaVwiICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbjwvZGl2PlxuIl19
|