@elderbyte/ngx-starter 15.19.3 → 16.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/esm2022/lib/common/async/refreshing-entity.mjs +86 -0
- package/esm2022/lib/common/csv/csv-spec.mjs +99 -0
- package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +76 -0
- package/esm2022/lib/common/data/data-context/data-context-builder.mjs +247 -0
- package/esm2022/lib/common/data/data-context/data-context-status.mjs +46 -0
- package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +139 -0
- package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +55 -0
- package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +24 -0
- package/esm2022/lib/common/data/datasource/data-source-processor.mjs +199 -0
- package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +127 -0
- package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +141 -0
- package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +73 -0
- package/esm2022/lib/common/data/entity-set-patch.mjs +164 -0
- package/esm2022/lib/common/data/field-comparator.mjs +99 -0
- package/esm2022/lib/common/data/http-params-builder.mjs +118 -0
- package/esm2022/lib/common/data/sort.mjs +11 -0
- package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +81 -0
- package/esm2022/lib/common/format/bytes-format.mjs +22 -0
- package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +181 -0
- package/esm2022/lib/common/forms/elder-from-field-base.mjs +94 -0
- package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +52 -0
- package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +39 -0
- package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +47 -0
- package/esm2022/lib/common/forms/form-field-base.component.mjs +112 -0
- package/esm2022/lib/common/forms/multi-model-base.component.mjs +32 -0
- package/esm2022/lib/common/forms/template-composite-control.mjs +133 -0
- package/esm2022/lib/common/forms/value-accessor-base.mjs +146 -0
- package/esm2022/lib/common/forms/view-providers.mjs +30 -0
- package/esm2022/lib/common/http/http-client-builder.service.mjs +14 -0
- package/esm2022/lib/common/http/http-client-pristine.mjs +21 -0
- package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +95 -0
- package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +49 -0
- package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +17 -0
- package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +82 -0
- package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +132 -0
- package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +16 -0
- package/esm2022/lib/common/i18n/entity/locale.mjs +12 -0
- package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +30 -0
- package/esm2022/lib/common/objects.mjs +41 -0
- package/esm2022/lib/common/selection/selection-model.mjs +212 -0
- package/esm2022/lib/common/suggestion-provider.mjs +12 -0
- package/esm2022/lib/common/time/date-util.mjs +93 -0
- package/esm2022/lib/common/time/time-util.mjs +41 -0
- package/esm2022/lib/common/url/elder-router.service.mjs +54 -0
- package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +119 -0
- package/esm2022/lib/common/url/url-query-params.mjs +133 -0
- package/esm2022/lib/common/utils/collection-util.mjs +109 -0
- package/esm2022/lib/common/utils/filter-util.mjs +52 -0
- package/esm2022/lib/common/utils/focus-util.mjs +23 -0
- package/esm2022/lib/common/utils/query-list-binding.mjs +67 -0
- package/esm2022/lib/common/utils/url-builder.mjs +275 -0
- package/esm2022/lib/common/utils/value-wrapper.mjs +19 -0
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +16 -0
- package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +30 -0
- package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +39 -0
- package/esm2022/lib/components/auditing/elder-audit.module.mjs +42 -0
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +39 -0
- package/esm2022/lib/components/badge/elder-badge.directive.mjs +48 -0
- package/esm2022/lib/components/badge/elder-badge.module.mjs +40 -0
- package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +15 -0
- package/esm2022/lib/components/button-group/elder-button-group.module.mjs +35 -0
- package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +123 -0
- package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +15 -0
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +211 -0
- package/esm2022/lib/components/card-organizer/card-stack.mjs +176 -0
- package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +49 -0
- package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +17 -0
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +145 -0
- package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +66 -0
- package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +170 -0
- package/esm2022/lib/components/chips/elder-chips.module.mjs +48 -0
- package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +56 -0
- package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +63 -0
- package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +46 -0
- package/esm2022/lib/components/containers/elder-containers.module.mjs +25 -0
- package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +24 -0
- package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +77 -0
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +38 -0
- package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +114 -0
- package/esm2022/lib/components/csv/elder-csv.module.mjs +37 -0
- package/esm2022/lib/components/currency/elder-currency.module.mjs +24 -0
- package/esm2022/lib/components/currency/elder-currency.pipe.mjs +33 -0
- package/esm2022/lib/components/currency/model/currency-unit.mjs +10 -0
- package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +76 -0
- package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +91 -0
- package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +91 -0
- package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +34 -0
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +47 -0
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +26 -0
- package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +67 -0
- package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +266 -0
- package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +45 -0
- package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +45 -0
- package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +90 -0
- package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +137 -0
- package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +89 -0
- package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +98 -0
- package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +38 -0
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +307 -0
- package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +82 -0
- package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +69 -0
- package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +49 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +76 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +20 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +125 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +116 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +88 -0
- package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +22 -0
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +19 -0
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +78 -0
- package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +113 -0
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +299 -0
- package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +29 -0
- package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +72 -0
- package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +18 -0
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +325 -0
- package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +17 -0
- package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +96 -0
- package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +29 -0
- package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +153 -0
- package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +20 -0
- package/esm2022/lib/components/data-view/table/elder-table.module.mjs +146 -0
- package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +110 -0
- package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +81 -0
- package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +40 -0
- package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +87 -0
- package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +165 -0
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +25 -0
- package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +64 -0
- package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +202 -0
- package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +43 -0
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +43 -0
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +46 -0
- package/esm2022/lib/components/errors/elder-error.module.mjs +41 -0
- package/esm2022/lib/components/errors/error-util.mjs +94 -0
- package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +66 -0
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +55 -0
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +28 -0
- package/esm2022/lib/components/files/blob-url.mjs +10 -0
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +225 -0
- package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +43 -0
- package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +84 -0
- package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +144 -0
- package/esm2022/lib/components/files/elder-file-select.directive.mjs +166 -0
- package/esm2022/lib/components/files/elder-file.module.mjs +77 -0
- package/esm2022/lib/components/files/file-select/file-select.component.mjs +55 -0
- package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +67 -0
- package/esm2022/lib/components/files/listing/file-entry.mjs +76 -0
- package/esm2022/lib/components/files/listing/file-listing-rx.mjs +104 -0
- package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +51 -0
- package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +34 -0
- package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +35 -0
- package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +42 -0
- package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +82 -0
- package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +83 -0
- package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +41 -0
- package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +34 -0
- package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +132 -0
- package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +77 -0
- package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +111 -0
- package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +101 -0
- package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +36 -0
- package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +29 -0
- package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +157 -0
- package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +27 -0
- package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +108 -0
- package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +85 -0
- package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +47 -0
- package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +48 -0
- package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +55 -0
- package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +40 -0
- package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +40 -0
- package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +96 -0
- package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +68 -0
- package/esm2022/lib/components/forms/elder-forms.module.mjs +22 -0
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +146 -0
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +185 -0
- package/esm2022/lib/components/forms/search/elder-search.module.mjs +66 -0
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +125 -0
- package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +16 -0
- package/esm2022/lib/components/global-search/elder-global-search.component.mjs +126 -0
- package/esm2022/lib/components/global-search/elder-global-search.module.mjs +32 -0
- package/esm2022/lib/components/global-search/elder-global-search.service.mjs +93 -0
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +90 -0
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +26 -0
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +28 -0
- package/esm2022/lib/components/headers/elder-header.module.mjs +43 -0
- package/esm2022/lib/components/http-support/elder-http-client.service.mjs +68 -0
- package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +123 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +144 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +29 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +30 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +152 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +28 -0
- package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +56 -0
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +39 -0
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +30 -0
- package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +74 -0
- package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +69 -0
- package/esm2022/lib/components/i18n/language/elder-language.module.mjs +72 -0
- package/esm2022/lib/components/i18n/language/elder-language.service.mjs +121 -0
- package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +65 -0
- package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +53 -0
- package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +130 -0
- package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +138 -0
- package/esm2022/lib/components/iframes/elder-iframe.module.mjs +103 -0
- package/esm2022/lib/components/iframes/iframe-close.directive.mjs +41 -0
- package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +51 -0
- package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +136 -0
- package/esm2022/lib/components/iframes/iframe-messages.mjs +5 -0
- package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +78 -0
- package/esm2022/lib/components/iframes/iframe.service.mjs +52 -0
- package/esm2022/lib/components/iframes/typed-event-message.mjs +42 -0
- package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +61 -0
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +158 -0
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +29 -0
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +186 -0
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +197 -0
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +114 -0
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +58 -0
- package/esm2022/lib/components/labels/elder-labels.module.mjs +30 -0
- package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +229 -0
- package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +273 -0
- package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +91 -0
- package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +64 -0
- package/esm2022/lib/components/measures/elder-measures.module.mjs +140 -0
- package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +41 -0
- package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +73 -0
- package/esm2022/lib/components/measures/elder-unit.service.mjs +115 -0
- package/esm2022/lib/components/measures/model/unit-registry.mjs +81 -0
- package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +33 -0
- package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +176 -0
- package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +87 -0
- package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +76 -0
- package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +237 -0
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +164 -0
- package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +55 -0
- package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +37 -0
- package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +53 -0
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +127 -0
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +161 -0
- package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +68 -0
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +46 -0
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +76 -0
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +68 -0
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +66 -0
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +39 -0
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +85 -0
- package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +43 -0
- package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +72 -0
- package/esm2022/lib/components/overlays/elder-overlay.component.mjs +204 -0
- package/esm2022/lib/components/overlays/elder-overlay.module.mjs +41 -0
- package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +12 -0
- package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +12 -0
- package/esm2022/lib/components/panels/elder-panel.module.mjs +58 -0
- package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +26 -0
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +69 -0
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +68 -0
- package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +62 -0
- package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +17 -0
- package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +77 -0
- package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +62 -0
- package/esm2022/lib/components/select/elder-select-base.mjs +284 -0
- package/esm2022/lib/components/select/elder-select-chip.directive.mjs +45 -0
- package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +133 -0
- package/esm2022/lib/components/select/elder-select-value.directive.mjs +15 -0
- package/esm2022/lib/components/select/elder-select.module.mjs +146 -0
- package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +350 -0
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +287 -0
- package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +91 -0
- package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +86 -0
- package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +126 -0
- package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +47 -0
- package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +57 -0
- package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +443 -0
- package/esm2022/lib/components/select/single/elder-select-form-field.mjs +45 -0
- package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +149 -0
- package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +48 -0
- package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +60 -0
- package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +117 -0
- package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +128 -0
- package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +46 -0
- package/esm2022/lib/components/shell/elder-shell.module.mjs +96 -0
- package/esm2022/lib/components/shell/elder-shell.service.mjs +145 -0
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +73 -0
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +209 -0
- package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +137 -0
- package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +25 -0
- package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +256 -0
- package/esm2022/lib/components/tabs/elder-tab.module.mjs +32 -0
- package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +62 -0
- package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +74 -0
- package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +74 -0
- package/esm2022/lib/components/theme/elder-theme.directive.mjs +61 -0
- package/esm2022/lib/components/theme/elder-theme.module.mjs +74 -0
- package/esm2022/lib/components/theme/elder-theme.service.mjs +123 -0
- package/esm2022/lib/components/theme/known-elder-themes.mjs +6 -0
- package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +23 -0
- package/esm2022/lib/components/time/duration/duration-format.mjs +271 -0
- package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +122 -0
- package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +89 -0
- package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +108 -0
- package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +173 -0
- package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +264 -0
- package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +95 -0
- package/esm2022/lib/components/time/elder-time.module.mjs +120 -0
- package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +131 -0
- package/esm2022/lib/components/time/period/period-format.mjs +89 -0
- package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +38 -0
- package/esm2022/lib/components/toasts/elder-toast.module.mjs +23 -0
- package/esm2022/lib/components/toasts/elder-toast.service.mjs +171 -0
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +74 -0
- package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +54 -0
- package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +84 -0
- package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +65 -0
- package/esm2022/lib/components/viewers/elder-viewers.module.mjs +25 -0
- package/esm2022/lib/features/event-source/elder-event-source.service.mjs +56 -0
- package/esm2022/lib/features/event-source/reactive-event-source.mjs +198 -0
- package/esm2022/lib/features/kafent/access-token-provider.mjs +20 -0
- package/esm2022/lib/features/kafent/kafent-config.mjs +24 -0
- package/esm2022/lib/features/kafent/kafent-event-stream.mjs +25 -0
- package/esm2022/lib/features/kafent/kafent-event.service.mjs +107 -0
- package/esm2022/lib/features/kafent/kafent.module.mjs +61 -0
- package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +128 -0
- package/esm2022/lib/pipes/bytes.pipe.mjs +24 -0
- package/esm2022/lib/pipes/elder-pipes.module.mjs +67 -0
- package/esm2022/lib/pipes/elder-repeat.pipe.mjs +21 -0
- package/esm2022/lib/pipes/elder-round.pipe.mjs +35 -0
- package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +20 -0
- package/esm2022/lib/pipes/elder-truncate.pipe.mjs +40 -0
- package/esm2022/lib/pipes/iso-duration.pipe.mjs +58 -0
- package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +49 -0
- package/esm2022/lib/pipes/iso-interval.pipe.mjs +110 -0
- package/esm2022/lib/pipes/time-ago.pipe.mjs +104 -0
- package/esm2022/lib/pipes/time-duration.pipe.mjs +98 -0
- package/esm2022/lib/pipes/weight.pipe.mjs +56 -0
- package/fesm2022/elderbyte-ngx-starter.mjs +30269 -0
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -0
- package/lib/common/data/field-comparator.d.ts +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/form-field-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/i18n/entity/language-tag.d.ts +1 -1
- package/lib/common/i18n/entity/translated.d.ts +1 -1
- package/lib/common/json-map.d.ts +1 -1
- package/lib/common/selection/selection-model.d.ts +1 -1
- package/lib/common/theme-sizes.d.ts +1 -1
- package/lib/common/time/date-util.d.ts +1 -1
- package/lib/common/time/interval.d.ts +1 -1
- package/lib/components/auditing/audited-entity/elder-audited-entity.component.d.ts +1 -1
- package/lib/components/badge/elder-badge/elder-badge.component.d.ts +1 -1
- package/lib/components/badge/elder-badge.directive.d.ts +1 -1
- package/lib/components/card-organizer/card-organizer/elder-card-organizer.component.d.ts +1 -1
- package/lib/components/card-organizer/card-stack/elder-card-stack.component.d.ts +1 -1
- package/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.d.ts +1 -1
- package/lib/components/cards/elder-card/elder-card.component.d.ts +3 -3
- package/lib/components/chips/elder-chip-label.directive.d.ts +4 -4
- package/lib/components/containers/elder-scroll-container/elder-scroll-container.component.d.ts +2 -2
- package/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.d.ts +1 -1
- package/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.d.ts +1 -1
- package/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.d.ts +1 -1
- package/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.d.ts +1 -1
- package/lib/components/data-view/base/elder-data-view-base.d.ts +1 -1
- package/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.d.ts +1 -1
- package/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.d.ts +3 -3
- package/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.d.ts +1 -1
- package/lib/components/data-view/common/selection/data-context-selection.directive.d.ts +1 -1
- package/lib/components/data-view/elder-data-view-interaction-mode.d.ts +1 -1
- package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +1 -1
- package/lib/components/data-view/master-detail/elder-master-detail-mode.d.ts +1 -1
- package/lib/components/data-view/master-detail/elder-master-detail.component.d.ts +1 -1
- package/lib/components/data-view/table/activation/elder-delete-active.directive.d.ts +1 -1
- package/lib/components/data-view/table/activation/elder-table-activation-options.d.ts +2 -2
- package/lib/components/data-view/table/activation/elder-table-activation.directive.d.ts +1 -1
- package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +1 -1
- package/lib/components/data-view/table/elder-table-extension.directive.d.ts +1 -1
- package/lib/components/data-view/table/elder-table-row.directive.d.ts +1 -1
- package/lib/components/data-view/table/model/elder-column-layout.d.ts +1 -1
- package/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.d.ts +1 -1
- package/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.d.ts +1 -1
- package/lib/components/errors/exception-detail/elder-exception-detail.component.d.ts +1 -1
- package/lib/components/expand-toggle-button/elder-expand-toggle-button.component.d.ts +1 -1
- package/lib/components/files/blob-viewer/elder-blob-viewer.component.d.ts +1 -1
- package/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.d.ts +1 -1
- package/lib/components/files/elder-file-drop-zone.directive.d.ts +1 -1
- package/lib/components/files/elder-file-select.directive.d.ts +1 -1
- package/lib/components/files/file-select/file-select.component.d.ts +1 -1
- package/lib/components/files/file-upload/file-upload.component.d.ts +1 -1
- package/lib/components/forms/directives/elder-clipboard-put.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-delayed-focus.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-form-field-dense.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-form-field-label.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-form-field-no-hint.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-form-field-no-spinner.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-input-pattern.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-key-event.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-next-focusable.directive.d.ts +1 -1
- package/lib/components/forms/directives/elder-tab-focus-trap.directive.d.ts +1 -1
- package/lib/components/forms/directives/validation/validators/elder-max.validator.d.ts +1 -1
- package/lib/components/forms/directives/validation/validators/elder-min.validator.d.ts +1 -1
- package/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.d.ts +1 -1
- package/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.d.ts +1 -1
- package/lib/components/forms/search/elder-search-context.directive.d.ts +1 -1
- package/lib/components/forms/search/elder-search-input.directive.d.ts +1 -1
- package/lib/components/forms/search/search-box/elder-search-box.component.d.ts +1 -1
- package/lib/components/global-search/elder-global-search.component.d.ts +1 -1
- package/lib/components/graph/elder-progress-bar/elder-progress-bar.component.d.ts +1 -1
- package/lib/components/headers/elder-header/elder-header.component.d.ts +1 -1
- package/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.d.ts +1 -1
- package/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.d.ts +1 -1
- package/lib/components/i18n/entities/elder-localized-text-column.directive.d.ts +1 -1
- package/lib/components/i18n/language/language-switcher/elder-language-switcher.component.d.ts +1 -1
- package/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.d.ts +1 -1
- package/lib/components/iframes/iframe-close.directive.d.ts +1 -1
- package/lib/components/iframes/iframe-host/iframe-host.component.d.ts +2 -2
- package/lib/components/iframes/typed-event-message.d.ts +1 -1
- package/lib/components/infinitescroll/elder-infinite-scroll.directive.d.ts +1 -1
- package/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.d.ts +2 -2
- package/lib/components/input/autocomplete/elder-autocomplete-many.directive.d.ts +1 -1
- package/lib/components/input/autocomplete/elder-autocomplete.directive.d.ts +1 -1
- package/lib/components/labels/labels-input/labels-input.component.d.ts +1 -1
- package/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.d.ts +2 -2
- package/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.d.ts +1 -1
- package/lib/components/measures/directives/elder-unit-select.directive.d.ts +1 -1
- package/lib/components/measures/model/unit.d.ts +1 -1
- package/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.d.ts +1 -1
- package/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.d.ts +1 -1
- package/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.d.ts +1 -1
- package/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.d.ts +1 -1
- package/lib/components/navigation/nav/nav-group/elder-nav-group.component.d.ts +1 -1
- package/lib/components/navigation/nav/nav-link/elder-nav-link.component.d.ts +1 -1
- package/lib/components/navigation/nav/nav-list/elder-nav-list.component.d.ts +1 -1
- package/lib/components/navigation/toolbar/elder-toolbar-column.directive.d.ts +1 -1
- package/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.d.ts +1 -1
- package/lib/components/navigation/toolbar/toolbar-column-position.d.ts +1 -1
- package/lib/components/overlays/elder-overlay-origin.directive.d.ts +1 -1
- package/lib/components/overlays/elder-overlay-trigger.directive.d.ts +1 -1
- package/lib/components/overlays/elder-overlay.component.d.ts +1 -1
- package/lib/components/panels/flat/elder-panel.component.d.ts +1 -1
- package/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.d.ts +1 -1
- package/lib/components/scrollbar/elder-scrollbar.directive.d.ts +1 -1
- package/lib/components/select/auto/elder-auto-select-first.directive.d.ts +1 -1
- package/lib/components/select/elder-select-base.d.ts +2 -2
- package/lib/components/select/multi/elder-multi-select-base.d.ts +1 -1
- package/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.d.ts +1 -1
- package/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.d.ts +1 -1
- package/lib/components/select/popup/selection-model-popup.directive.d.ts +1 -1
- package/lib/components/select/single/elder-select/elder-select.component.d.ts +1 -1
- package/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.d.ts +1 -1
- package/lib/components/shell/elder-shell-slot.directive.d.ts +1 -1
- package/lib/components/shell/header/elder-app-header/elder-app-header.component.d.ts +1 -1
- package/lib/components/shell/shell/elder-shell.component.d.ts +1 -1
- package/lib/components/shell/shell-content-slot.d.ts +1 -1
- package/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.d.ts +1 -1
- package/lib/components/tabs/elder-tab/elder-tab.directive.d.ts +1 -1
- package/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.d.ts +1 -1
- package/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.d.ts +2 -2
- package/lib/components/time/duration/elder-duration-input/elder-duration-input.component.d.ts +1 -1
- package/lib/components/time/duration/iso-duration-str.d.ts +1 -1
- package/lib/components/time/elder-date-switcher/elder-date-switcher.component.d.ts +1 -1
- package/lib/components/time/elder-date-time-input/elder-date-time-input.component.d.ts +1 -1
- package/lib/components/time/elder-interval-input/elder-interval-input.component.d.ts +2 -2
- package/lib/components/time/elder-local-date-input/elder-local-date-input.component.d.ts +1 -1
- package/lib/components/time/elder-local-time-input/elder-local-time-input.component.d.ts +1 -1
- package/lib/components/time/period/elder-period-input/elder-period-input.component.d.ts +1 -1
- package/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.d.ts +1 -1
- package/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.d.ts +1 -1
- package/lib/pipes/elder-truncate.pipe.d.ts +1 -1
- package/package.json +12 -18
- package/esm2020/lib/common/async/refreshing-entity.mjs +0 -86
- package/esm2020/lib/common/csv/csv-spec.mjs +0 -99
- package/esm2020/lib/common/data/data-context/data-context-auto-starter.mjs +0 -76
- package/esm2020/lib/common/data/data-context/data-context-builder.mjs +0 -247
- package/esm2020/lib/common/data/data-context/data-context-status.mjs +0 -46
- package/esm2020/lib/common/data/data-context/mat-table-data-context-binding.mjs +0 -139
- package/esm2020/lib/common/data/datasource/data-source-adapter.mjs +0 -55
- package/esm2020/lib/common/data/datasource/data-source-change-event.mjs +0 -24
- package/esm2020/lib/common/data/datasource/data-source-processor.mjs +0 -199
- package/esm2020/lib/common/data/datasource/fetcher/delegate-data-source.mjs +0 -127
- package/esm2020/lib/common/data/datasource/local/local-list-data-source.mjs +0 -141
- package/esm2020/lib/common/data/datasource/local/local-paged-data-source.mjs +0 -73
- package/esm2020/lib/common/data/entity-set-patch.mjs +0 -164
- package/esm2020/lib/common/data/field-comparator.mjs +0 -99
- package/esm2020/lib/common/data/http-params-builder.mjs +0 -118
- package/esm2020/lib/common/data/sort.mjs +0 -11
- package/esm2020/lib/common/enums/elder-enum-translation.service.mjs +0 -81
- package/esm2020/lib/common/format/bytes-format.mjs +0 -22
- package/esm2020/lib/common/forms/elder-form-field-control-base.directive.mjs +0 -181
- package/esm2020/lib/common/forms/elder-from-field-base.mjs +0 -94
- package/esm2020/lib/common/forms/elder-from-field-customizable-base.mjs +0 -52
- package/esm2020/lib/common/forms/elder-from-field-entity-base.mjs +0 -39
- package/esm2020/lib/common/forms/elder-from-field-multi-entity-base.mjs +0 -47
- package/esm2020/lib/common/forms/form-field-base.component.mjs +0 -112
- package/esm2020/lib/common/forms/multi-model-base.component.mjs +0 -32
- package/esm2020/lib/common/forms/template-composite-control.mjs +0 -133
- package/esm2020/lib/common/forms/value-accessor-base.mjs +0 -146
- package/esm2020/lib/common/forms/view-providers.mjs +0 -30
- package/esm2020/lib/common/http/http-client-builder.service.mjs +0 -14
- package/esm2020/lib/common/http/http-client-pristine.mjs +0 -21
- package/esm2020/lib/common/http/transfer/data-transfer-factory.mjs +0 -95
- package/esm2020/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +0 -49
- package/esm2020/lib/common/http/transfer/data-transfer-progress.mjs +0 -17
- package/esm2020/lib/common/http/transfer/data-transfer-state.mjs +0 -82
- package/esm2020/lib/common/http/transfer/http-data-transfer.mjs +0 -132
- package/esm2020/lib/common/i18n/entity/impl/i18n-text.mjs +0 -16
- package/esm2020/lib/common/i18n/entity/locale.mjs +0 -12
- package/esm2020/lib/common/i18n/entity/localisation-picker.mjs +0 -30
- package/esm2020/lib/common/objects.mjs +0 -41
- package/esm2020/lib/common/selection/selection-model.mjs +0 -212
- package/esm2020/lib/common/suggestion-provider.mjs +0 -12
- package/esm2020/lib/common/time/date-util.mjs +0 -93
- package/esm2020/lib/common/time/time-util.mjs +0 -41
- package/esm2020/lib/common/url/elder-router.service.mjs +0 -54
- package/esm2020/lib/common/url/elder-url-fragment-params.service.mjs +0 -119
- package/esm2020/lib/common/url/url-query-params.mjs +0 -133
- package/esm2020/lib/common/utils/collection-util.mjs +0 -109
- package/esm2020/lib/common/utils/filter-util.mjs +0 -52
- package/esm2020/lib/common/utils/focus-util.mjs +0 -23
- package/esm2020/lib/common/utils/query-list-binding.mjs +0 -67
- package/esm2020/lib/common/utils/url-builder.mjs +0 -275
- package/esm2020/lib/common/utils/value-wrapper.mjs +0 -19
- package/esm2020/lib/components/access-denied/elder-access-denied.component.mjs +0 -16
- package/esm2020/lib/components/access-denied/elder-access-denied.module.mjs +0 -30
- package/esm2020/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +0 -39
- package/esm2020/lib/components/auditing/elder-audit.module.mjs +0 -42
- package/esm2020/lib/components/badge/elder-badge/elder-badge.component.mjs +0 -39
- package/esm2020/lib/components/badge/elder-badge.directive.mjs +0 -48
- package/esm2020/lib/components/badge/elder-badge.module.mjs +0 -40
- package/esm2020/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +0 -15
- package/esm2020/lib/components/button-group/elder-button-group.module.mjs +0 -35
- package/esm2020/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +0 -123
- package/esm2020/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +0 -15
- package/esm2020/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +0 -211
- package/esm2020/lib/components/card-organizer/card-stack.mjs +0 -176
- package/esm2020/lib/components/card-organizer/elder-card-organizer.module.mjs +0 -49
- package/esm2020/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +0 -17
- package/esm2020/lib/components/cards/elder-card/elder-card.component.mjs +0 -145
- package/esm2020/lib/components/cards/elder-card/elder-card.module.mjs +0 -66
- package/esm2020/lib/components/chips/elder-chip-label.directive.mjs +0 -170
- package/esm2020/lib/components/chips/elder-chips.module.mjs +0 -48
- package/esm2020/lib/components/connectivity/elder-connectivity.module.mjs +0 -56
- package/esm2020/lib/components/connectivity/elder-connectivity.service.mjs +0 -63
- package/esm2020/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +0 -46
- package/esm2020/lib/components/containers/elder-containers.module.mjs +0 -25
- package/esm2020/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +0 -24
- package/esm2020/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +0 -77
- package/esm2020/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +0 -38
- package/esm2020/lib/components/csv/elder-csv-stream-exporter.mjs +0 -114
- package/esm2020/lib/components/csv/elder-csv.module.mjs +0 -37
- package/esm2020/lib/components/currency/elder-currency.module.mjs +0 -24
- package/esm2020/lib/components/currency/elder-currency.pipe.mjs +0 -33
- package/esm2020/lib/components/currency/model/currency-unit.mjs +0 -10
- package/esm2020/lib/components/data-transfer/elder-data-transfer.module.mjs +0 -76
- package/esm2020/lib/components/data-transfer/elder-data-transfer.service.mjs +0 -91
- package/esm2020/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +0 -91
- package/esm2020/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +0 -34
- package/esm2020/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +0 -47
- package/esm2020/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +0 -26
- package/esm2020/lib/components/data-view/base/data-view-options-provider-binding.mjs +0 -67
- package/esm2020/lib/components/data-view/base/elder-data-view-base.mjs +0 -266
- package/esm2020/lib/components/data-view/base/elder-data-view-options.mjs +0 -45
- package/esm2020/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +0 -45
- package/esm2020/lib/components/data-view/common/elder-data-common.module.mjs +0 -90
- package/esm2020/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +0 -137
- package/esm2020/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +0 -89
- package/esm2020/lib/components/data-view/common/selection/data-context-selection.directive.mjs +0 -98
- package/esm2020/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +0 -38
- package/esm2020/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +0 -307
- package/esm2020/lib/components/data-view/grid/elder-grid.module.mjs +0 -82
- package/esm2020/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +0 -69
- package/esm2020/lib/components/data-view/master-detail/elder-detail.directive.mjs +0 -49
- package/esm2020/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +0 -76
- package/esm2020/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +0 -20
- package/esm2020/lib/components/data-view/master-detail/elder-master-detail.component.mjs +0 -125
- package/esm2020/lib/components/data-view/master-detail/elder-master-detail.module.mjs +0 -116
- package/esm2020/lib/components/data-view/master-detail/elder-master-detail.service.mjs +0 -88
- package/esm2020/lib/components/data-view/master-detail/elder-master.directive.mjs +0 -22
- package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +0 -19
- package/esm2020/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +0 -78
- package/esm2020/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +0 -113
- package/esm2020/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +0 -299
- package/esm2020/lib/components/data-view/table/elder-number-cell.directive.mjs +0 -29
- package/esm2020/lib/components/data-view/table/elder-paginator-intl.mjs +0 -72
- package/esm2020/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +0 -18
- package/esm2020/lib/components/data-view/table/elder-table/elder-table.component.mjs +0 -325
- package/esm2020/lib/components/data-view/table/elder-table-column.directive.mjs +0 -17
- package/esm2020/lib/components/data-view/table/elder-table-extension.directive.mjs +0 -96
- package/esm2020/lib/components/data-view/table/elder-table-root.directive.mjs +0 -29
- package/esm2020/lib/components/data-view/table/elder-table-row.directive.mjs +0 -151
- package/esm2020/lib/components/data-view/table/elder-table-sort.directive.mjs +0 -20
- package/esm2020/lib/components/data-view/table/elder-table.module.mjs +0 -146
- package/esm2020/lib/components/data-view/table/model/elder-column-layout.mjs +0 -110
- package/esm2020/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +0 -81
- package/esm2020/lib/components/data-view/table/model/elder-table-model-provider.mjs +0 -40
- package/esm2020/lib/components/data-view/table/model/elder-table-model-query-group.mjs +0 -87
- package/esm2020/lib/components/data-view/table/model/elder-table-model.mjs +0 -165
- package/esm2020/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +0 -25
- package/esm2020/lib/components/dialogs/elder-dialog.module.mjs +0 -64
- package/esm2020/lib/components/dialogs/elder-dialog.service.mjs +0 -202
- package/esm2020/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +0 -43
- package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +0 -43
- package/esm2020/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +0 -46
- package/esm2020/lib/components/errors/elder-error.module.mjs +0 -41
- package/esm2020/lib/components/errors/error-util.mjs +0 -94
- package/esm2020/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +0 -66
- package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +0 -55
- package/esm2020/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +0 -28
- package/esm2020/lib/components/files/blob-url.mjs +0 -10
- package/esm2020/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +0 -225
- package/esm2020/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +0 -43
- package/esm2020/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +0 -84
- package/esm2020/lib/components/files/elder-file-drop-zone.directive.mjs +0 -144
- package/esm2020/lib/components/files/elder-file-select.directive.mjs +0 -166
- package/esm2020/lib/components/files/elder-file.module.mjs +0 -77
- package/esm2020/lib/components/files/file-select/file-select.component.mjs +0 -55
- package/esm2020/lib/components/files/file-upload/file-upload.component.mjs +0 -67
- package/esm2020/lib/components/files/listing/file-entry.mjs +0 -76
- package/esm2020/lib/components/files/listing/file-listing-rx.mjs +0 -104
- package/esm2020/lib/components/forms/clipboard/elder-clipboard.service.mjs +0 -51
- package/esm2020/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +0 -34
- package/esm2020/lib/components/forms/directives/elder-clipboard-put.directive.mjs +0 -35
- package/esm2020/lib/components/forms/directives/elder-delayed-focus.directive.mjs +0 -42
- package/esm2020/lib/components/forms/directives/elder-form-field-dense.directive.mjs +0 -82
- package/esm2020/lib/components/forms/directives/elder-form-field-label.directive.mjs +0 -83
- package/esm2020/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +0 -41
- package/esm2020/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +0 -34
- package/esm2020/lib/components/forms/directives/elder-forms-directives.module.mjs +0 -132
- package/esm2020/lib/components/forms/directives/elder-input-pattern.directive.mjs +0 -77
- package/esm2020/lib/components/forms/directives/elder-key-event.directive.mjs +0 -111
- package/esm2020/lib/components/forms/directives/elder-next-focusable.directive.mjs +0 -101
- package/esm2020/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +0 -36
- package/esm2020/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +0 -29
- package/esm2020/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +0 -157
- package/esm2020/lib/components/forms/directives/elder-touched.directive.mjs +0 -27
- package/esm2020/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +0 -108
- package/esm2020/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +0 -85
- package/esm2020/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +0 -47
- package/esm2020/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +0 -48
- package/esm2020/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +0 -55
- package/esm2020/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +0 -40
- package/esm2020/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +0 -40
- package/esm2020/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +0 -96
- package/esm2020/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +0 -68
- package/esm2020/lib/components/forms/elder-forms.module.mjs +0 -22
- package/esm2020/lib/components/forms/search/elder-search-context.directive.mjs +0 -146
- package/esm2020/lib/components/forms/search/elder-search-input.directive.mjs +0 -185
- package/esm2020/lib/components/forms/search/elder-search.module.mjs +0 -66
- package/esm2020/lib/components/forms/search/search-box/elder-search-box.component.mjs +0 -125
- package/esm2020/lib/components/forms/search/search-box/elder-search-panel.component.mjs +0 -16
- package/esm2020/lib/components/global-search/elder-global-search.component.mjs +0 -126
- package/esm2020/lib/components/global-search/elder-global-search.module.mjs +0 -32
- package/esm2020/lib/components/global-search/elder-global-search.service.mjs +0 -93
- package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +0 -90
- package/esm2020/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +0 -26
- package/esm2020/lib/components/headers/elder-header/elder-header.component.mjs +0 -28
- package/esm2020/lib/components/headers/elder-header.module.mjs +0 -43
- package/esm2020/lib/components/http-support/elder-http-client.service.mjs +0 -68
- package/esm2020/lib/components/i18n/entities/elder-i18n-entities.module.mjs +0 -123
- package/esm2020/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +0 -144
- package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +0 -29
- package/esm2020/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +0 -30
- package/esm2020/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +0 -152
- package/esm2020/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +0 -28
- package/esm2020/lib/components/i18n/entities/elder-localized-texts.directive.mjs +0 -56
- package/esm2020/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +0 -39
- package/esm2020/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +0 -30
- package/esm2020/lib/components/i18n/entities/picker/localisation-picker.service.mjs +0 -74
- package/esm2020/lib/components/i18n/language/elder-language-interceptor.mjs +0 -69
- package/esm2020/lib/components/i18n/language/elder-language.module.mjs +0 -72
- package/esm2020/lib/components/i18n/language/elder-language.service.mjs +0 -121
- package/esm2020/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +0 -65
- package/esm2020/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +0 -53
- package/esm2020/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +0 -130
- package/esm2020/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +0 -138
- package/esm2020/lib/components/iframes/elder-iframe.module.mjs +0 -103
- package/esm2020/lib/components/iframes/iframe-close.directive.mjs +0 -41
- package/esm2020/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +0 -51
- package/esm2020/lib/components/iframes/iframe-host/iframe-host.component.mjs +0 -136
- package/esm2020/lib/components/iframes/iframe-messages.mjs +0 -5
- package/esm2020/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +0 -78
- package/esm2020/lib/components/iframes/iframe.service.mjs +0 -52
- package/esm2020/lib/components/iframes/typed-event-message.mjs +0 -42
- package/esm2020/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +0 -61
- package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +0 -158
- package/esm2020/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +0 -29
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete.component.mjs +0 -186
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +0 -197
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +0 -114
- package/esm2020/lib/components/input/autocomplete/elder-autocomplete.module.mjs +0 -58
- package/esm2020/lib/components/labels/elder-labels.module.mjs +0 -30
- package/esm2020/lib/components/labels/labels-input/labels-input.component.mjs +0 -229
- package/esm2020/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +0 -273
- package/esm2020/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +0 -91
- package/esm2020/lib/components/measures/directives/elder-unit-select.directive.mjs +0 -64
- package/esm2020/lib/components/measures/elder-measures.module.mjs +0 -140
- package/esm2020/lib/components/measures/elder-quantity-transform.pipe.mjs +0 -41
- package/esm2020/lib/components/measures/elder-quantity.pipe.mjs +0 -73
- package/esm2020/lib/components/measures/elder-unit.service.mjs +0 -115
- package/esm2020/lib/components/measures/model/unit-registry.mjs +0 -81
- package/esm2020/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +0 -33
- package/esm2020/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +0 -176
- package/esm2020/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +0 -87
- package/esm2020/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +0 -76
- package/esm2020/lib/components/measures/util/elder-quantity.service.mjs +0 -237
- package/esm2020/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +0 -164
- package/esm2020/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +0 -55
- package/esm2020/lib/components/navigation/bread-crumbs/path/path.mjs +0 -37
- package/esm2020/lib/components/navigation/nav/elder-nav.module.mjs +0 -53
- package/esm2020/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +0 -127
- package/esm2020/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +0 -161
- package/esm2020/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +0 -68
- package/esm2020/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +0 -46
- package/esm2020/lib/components/navigation/toolbar/elder-toolbar.module.mjs +0 -76
- package/esm2020/lib/components/navigation/toolbar/elder-toolbar.service.mjs +0 -68
- package/esm2020/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +0 -66
- package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +0 -39
- package/esm2020/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +0 -85
- package/esm2020/lib/components/overlays/elder-overlay-origin.directive.mjs +0 -43
- package/esm2020/lib/components/overlays/elder-overlay-trigger.directive.mjs +0 -72
- package/esm2020/lib/components/overlays/elder-overlay.component.mjs +0 -204
- package/esm2020/lib/components/overlays/elder-overlay.module.mjs +0 -41
- package/esm2020/lib/components/panels/card-panel/elder-card-panel.component.mjs +0 -12
- package/esm2020/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +0 -12
- package/esm2020/lib/components/panels/elder-panel.module.mjs +0 -58
- package/esm2020/lib/components/panels/flat/elder-panel.component.mjs +0 -26
- package/esm2020/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +0 -69
- package/esm2020/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +0 -68
- package/esm2020/lib/components/scrollbar/elder-scrollbar.directive.mjs +0 -62
- package/esm2020/lib/components/scrollbar/elder-scrollbar.module.mjs +0 -17
- package/esm2020/lib/components/select/auto/elder-auto-select-first.directive.mjs +0 -77
- package/esm2020/lib/components/select/auto/elder-select-first-util.mjs +0 -62
- package/esm2020/lib/components/select/elder-select-base.mjs +0 -284
- package/esm2020/lib/components/select/elder-select-chip.directive.mjs +0 -45
- package/esm2020/lib/components/select/elder-select-on-tab.directive.mjs +0 -133
- package/esm2020/lib/components/select/elder-select-value.directive.mjs +0 -15
- package/esm2020/lib/components/select/elder-select.module.mjs +0 -146
- package/esm2020/lib/components/select/multi/elder-multi-select-base.mjs +0 -350
- package/esm2020/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +0 -287
- package/esm2020/lib/components/select/multi/elder-multi-select-form-field.mjs +0 -91
- package/esm2020/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +0 -86
- package/esm2020/lib/components/select/popup/selection-model-popup.directive.mjs +0 -126
- package/esm2020/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +0 -47
- package/esm2020/lib/components/select/single/elder-clear-select.directive.mjs +0 -57
- package/esm2020/lib/components/select/single/elder-select/elder-select.component.mjs +0 -443
- package/esm2020/lib/components/select/single/elder-select-form-field.mjs +0 -45
- package/esm2020/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +0 -149
- package/esm2020/lib/components/select-chip-list/elder-chip-list-select.module.mjs +0 -48
- package/esm2020/lib/components/shell/drawers/drawer-outlet-binding.mjs +0 -60
- package/esm2020/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +0 -117
- package/esm2020/lib/components/shell/drawers/elder-router-outlet.service.mjs +0 -128
- package/esm2020/lib/components/shell/elder-shell-slot.directive.mjs +0 -46
- package/esm2020/lib/components/shell/elder-shell.module.mjs +0 -96
- package/esm2020/lib/components/shell/elder-shell.service.mjs +0 -145
- package/esm2020/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +0 -73
- package/esm2020/lib/components/shell/shell/elder-shell.component.mjs +0 -209
- package/esm2020/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +0 -137
- package/esm2020/lib/components/tabs/elder-tab/elder-tab.directive.mjs +0 -25
- package/esm2020/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +0 -256
- package/esm2020/lib/components/tabs/elder-tab.module.mjs +0 -32
- package/esm2020/lib/components/theme/elder-theme-applier.directive.mjs +0 -62
- package/esm2020/lib/components/theme/elder-theme-preference.service.mjs +0 -74
- package/esm2020/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +0 -74
- package/esm2020/lib/components/theme/elder-theme.directive.mjs +0 -61
- package/esm2020/lib/components/theme/elder-theme.module.mjs +0 -74
- package/esm2020/lib/components/theme/elder-theme.service.mjs +0 -123
- package/esm2020/lib/components/theme/known-elder-themes.mjs +0 -6
- package/esm2020/lib/components/time/date-adapters/custom-date-adapter.mjs +0 -23
- package/esm2020/lib/components/time/duration/duration-format.mjs +0 -271
- package/esm2020/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +0 -122
- package/esm2020/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +0 -89
- package/esm2020/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +0 -108
- package/esm2020/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +0 -173
- package/esm2020/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +0 -264
- package/esm2020/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +0 -95
- package/esm2020/lib/components/time/elder-time.module.mjs +0 -120
- package/esm2020/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +0 -131
- package/esm2020/lib/components/time/period/period-format.mjs +0 -89
- package/esm2020/lib/components/time/pipes/to-iso-date-string.pipe.mjs +0 -38
- package/esm2020/lib/components/toasts/elder-toast.module.mjs +0 -23
- package/esm2020/lib/components/toasts/elder-toast.service.mjs +0 -171
- package/esm2020/lib/components/toasts/standard-toast/standard-toast.component.mjs +0 -74
- package/esm2020/lib/components/url-fragment/elder-url-fragment.module.mjs +0 -54
- package/esm2020/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +0 -84
- package/esm2020/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +0 -65
- package/esm2020/lib/components/viewers/elder-viewers.module.mjs +0 -25
- package/esm2020/lib/features/event-source/elder-event-source.service.mjs +0 -56
- package/esm2020/lib/features/event-source/reactive-event-source.mjs +0 -198
- package/esm2020/lib/features/kafent/access-token-provider.mjs +0 -20
- package/esm2020/lib/features/kafent/kafent-config.mjs +0 -24
- package/esm2020/lib/features/kafent/kafent-event-stream.mjs +0 -25
- package/esm2020/lib/features/kafent/kafent-event.service.mjs +0 -107
- package/esm2020/lib/features/kafent/kafent.module.mjs +0 -61
- package/esm2020/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +0 -128
- package/esm2020/lib/pipes/bytes.pipe.mjs +0 -24
- package/esm2020/lib/pipes/elder-pipes.module.mjs +0 -67
- package/esm2020/lib/pipes/elder-repeat.pipe.mjs +0 -21
- package/esm2020/lib/pipes/elder-round.pipe.mjs +0 -35
- package/esm2020/lib/pipes/elder-safe-url.pipe.mjs +0 -20
- package/esm2020/lib/pipes/elder-truncate.pipe.mjs +0 -40
- package/esm2020/lib/pipes/iso-duration.pipe.mjs +0 -58
- package/esm2020/lib/pipes/iso-interval-parse.pipe.mjs +0 -49
- package/esm2020/lib/pipes/iso-interval.pipe.mjs +0 -110
- package/esm2020/lib/pipes/time-ago.pipe.mjs +0 -104
- package/esm2020/lib/pipes/time-duration.pipe.mjs +0 -98
- package/esm2020/lib/pipes/weight.pipe.mjs +0 -56
- package/fesm2015/elderbyte-ngx-starter.mjs +0 -30441
- package/fesm2015/elderbyte-ngx-starter.mjs.map +0 -1
- package/fesm2020/elderbyte-ngx-starter.mjs +0 -30267
- package/fesm2020/elderbyte-ngx-starter.mjs.map +0 -1
- /package/{esm2020 → esm2022}/elderbyte-ngx-starter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/arrays.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/async/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/csv/csv-serializer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/csv/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/continuable-listing.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-active-page.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-continuable-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-continuable-paged.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-continuable-token.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-life-cycle-binding.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-simple.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context-source-event-binding.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/data-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/indexed-entities.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/data-context/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/data-source-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/data-source.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/entity-id-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/rest/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/datasource/rest/rest-client.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/filters/filter-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/filters/filter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/page.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/required-filter-evaluator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/sort-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/data/token-chunk-request.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/enums/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/errors/exception-detail.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/errors/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/errors/standard-error-detail.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/format/bytes-per-second-format.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/format/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/forms/elder-entity-value-accessor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/forms/elder-multi-entity-value-accessor.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/forms/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/transfer/data-transfer-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/transfer/data-transfer-status.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/transfer/data-transfer.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/transfer/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/http/upload/file-upload-client.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/impl/i18n-base.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/impl/translated.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/language-tag.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/localized.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/translated-converter.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/entity/translated.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/i18n/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/json-map.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/reactive-map.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/rxjs/operators/lazy-sample.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/rxjs/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/selection/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/sets.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/templates/template-slot-manager.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/theme-sizes.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/time/interval.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/time/period-duration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/time/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/url/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/batcher.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/next-number-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/ng-zone-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/parse-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/property-path-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/sort-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/common/utils/uuid-util.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/auditing/i-audited-entity.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/card-organizer/card-organizer-data.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/connectivity/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/containers/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/csv/elder-csv-stream-exporter-builder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/currency/model/currency-code.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/currency/model/currency-unit-registry.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/currency/model/currency.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/currency/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/base/elder-data-view-options-provider.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/base/elder-data-view.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/base/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/common/selection/master-selection-state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/elder-data-view-interaction-mode.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/master-detail/elder-master-detail-mode.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/master-detail/master-detail-activation-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/activation-event-source.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/elder-activation-context.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/elder-table-activation-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/item-activation-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/item-activation-options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/data-view/table/activation/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/dialogs/elder-dialog-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/directives/validation/validation-message-strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/search/model/search-input-state.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/forms/search/model/search-input.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/graph/elder-progress-bar/sub-bar.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/graph/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/http-support/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/i18n/language/elder-language-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/i18n/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input/autocomplete/many/word-position-finder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/input/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/model/dimensions.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/model/quantity.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/model/unit-dimension.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/model/unit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/measures/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/navigation/toolbar/toolbar-column-position.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/select/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/shell/shell-content-slot.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/theme/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/theme/theme-spec.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/time/duration/duration-bucket.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/time/duration/iso-duration-str.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/time/period/period-bucket.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/time/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toasts/toast-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/toasts/toast.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/url-fragment/elder-url-fragment.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/event-source/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/kafent/kafent-event.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/kafent/kafent-live-event-request.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/kafent/sse/kafent-topic-sse.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/features/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/pipes/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
2
|
+
import { HttpEventType } from '@angular/common/http';
|
|
3
|
+
import { catchError, takeUntil, tap } from 'rxjs/operators';
|
|
4
|
+
import { DataTransferProgress } from './data-transfer-progress';
|
|
5
|
+
import { DataTransferState } from './data-transfer-state';
|
|
6
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
7
|
+
import { DataTransferBase } from './data-transfer-base';
|
|
8
|
+
/**
|
|
9
|
+
* Represents a Http data transfer, either a download or upload.
|
|
10
|
+
*/
|
|
11
|
+
export class HttpDataTransfer extends DataTransferBase {
|
|
12
|
+
/***************************************************************************
|
|
13
|
+
* *
|
|
14
|
+
* Static Builder *
|
|
15
|
+
* *
|
|
16
|
+
**************************************************************************/
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new HttpDataTransfer from a HttpClient HttpRequest.
|
|
19
|
+
* @param httpRequest
|
|
20
|
+
* @param name Name of this transfer
|
|
21
|
+
* @param totalBytes The total expected bytes
|
|
22
|
+
*/
|
|
23
|
+
static fromRequest(httpRequest, name, totalBytes) {
|
|
24
|
+
return new HttpDataTransfer(httpRequest, name, totalBytes);
|
|
25
|
+
}
|
|
26
|
+
/***************************************************************************
|
|
27
|
+
* *
|
|
28
|
+
* Constructor *
|
|
29
|
+
* *
|
|
30
|
+
**************************************************************************/
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new HttpDataTransfer
|
|
33
|
+
* @param httpRequest The http request.
|
|
34
|
+
* @param name The name of this transfer (usually the file name)
|
|
35
|
+
* @param totalBytes The total bytes of the transfer. (If not set, will be auto discovered if possible)
|
|
36
|
+
*/
|
|
37
|
+
constructor(httpRequest, name, totalBytes) {
|
|
38
|
+
super(DataTransferState.pending(totalBytes), name);
|
|
39
|
+
/***************************************************************************
|
|
40
|
+
* *
|
|
41
|
+
* Fields *
|
|
42
|
+
* *
|
|
43
|
+
**************************************************************************/
|
|
44
|
+
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
45
|
+
this._oldBytes = 0;
|
|
46
|
+
this._httpRequest = httpRequest;
|
|
47
|
+
}
|
|
48
|
+
/***************************************************************************
|
|
49
|
+
* *
|
|
50
|
+
* Public API *
|
|
51
|
+
* *
|
|
52
|
+
**************************************************************************/
|
|
53
|
+
/**
|
|
54
|
+
* Starts the data transfer
|
|
55
|
+
*/
|
|
56
|
+
start() {
|
|
57
|
+
return this._httpRequest.pipe(takeUntil(this.abort$), tap({
|
|
58
|
+
next: event => {
|
|
59
|
+
switch (event.type) {
|
|
60
|
+
case HttpEventType.Sent:
|
|
61
|
+
this.onStart(event);
|
|
62
|
+
break;
|
|
63
|
+
case HttpEventType.UploadProgress:
|
|
64
|
+
case HttpEventType.DownloadProgress:
|
|
65
|
+
this.onProgress(event);
|
|
66
|
+
break;
|
|
67
|
+
case HttpEventType.Response:
|
|
68
|
+
this.onComplete(event);
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
error: err => this.onError(err),
|
|
73
|
+
finalize: () => this.finally()
|
|
74
|
+
}), catchError(err => {
|
|
75
|
+
return of(err);
|
|
76
|
+
}));
|
|
77
|
+
}
|
|
78
|
+
/***************************************************************************
|
|
79
|
+
* *
|
|
80
|
+
* Private methods *
|
|
81
|
+
* *
|
|
82
|
+
**************************************************************************/
|
|
83
|
+
onStart(event) {
|
|
84
|
+
this.emitState(DataTransferState.started(this.stateSnapshot.progress.totalBytes));
|
|
85
|
+
}
|
|
86
|
+
onProgress(event) {
|
|
87
|
+
const progress = this.transferProgress(event);
|
|
88
|
+
this.emitState(DataTransferState.transferring(progress));
|
|
89
|
+
}
|
|
90
|
+
onComplete(event) {
|
|
91
|
+
this.emitState(DataTransferState.completed(this.transferProgressFromResponse(event, this.stateSnapshot.progress)));
|
|
92
|
+
}
|
|
93
|
+
onError(error) {
|
|
94
|
+
this.emitState(DataTransferState.failed(error, this.stateSnapshot.progress));
|
|
95
|
+
}
|
|
96
|
+
finally() {
|
|
97
|
+
this._endTimeMs = new Date().getTime();
|
|
98
|
+
if (!this.stateSnapshot.isDone) {
|
|
99
|
+
this.logger.warn('DataTransfer did not reach done-state! Completing Transfer now...');
|
|
100
|
+
this.emitState(DataTransferState.completed(this.stateSnapshot.progress));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
transferProgressFromResponse(event, previous) {
|
|
104
|
+
return new DataTransferProgress(previous ? previous.totalBytes : 0, previous ? previous.bytesPerSec : 0, previous ? previous.avgBytesPerSec : 0, previous ? previous.totalBytes : 0, 100);
|
|
105
|
+
}
|
|
106
|
+
transferProgress(event) {
|
|
107
|
+
this._currTimeMs = new Date().getTime();
|
|
108
|
+
// setting start time
|
|
109
|
+
if (!this._startTimeMs) {
|
|
110
|
+
this._startTimeMs = new Date().getTime();
|
|
111
|
+
this._prevTimeMs = this._startTimeMs;
|
|
112
|
+
}
|
|
113
|
+
// tracking how much data is received and
|
|
114
|
+
const bytesReceivedTotal = event.loaded;
|
|
115
|
+
const bytesReceived = bytesReceivedTotal - this._oldBytes;
|
|
116
|
+
const durationMs = (this._currTimeMs - this._prevTimeMs);
|
|
117
|
+
const durationSec = durationMs / 1000;
|
|
118
|
+
// Calc transfer speed per percent data received
|
|
119
|
+
const bytesPerSec = bytesReceived / durationSec;
|
|
120
|
+
// updating previous values
|
|
121
|
+
this._prevTimeMs = this._currTimeMs;
|
|
122
|
+
this._oldBytes = bytesReceivedTotal;
|
|
123
|
+
// Calc avg speed
|
|
124
|
+
const durationSinceStartMs = (this._currTimeMs - this._startTimeMs);
|
|
125
|
+
const durationSinceStartSec = durationSinceStartMs / 1000;
|
|
126
|
+
const avgBytesPerSec = event.loaded / durationSinceStartSec;
|
|
127
|
+
// Calc progress if possible
|
|
128
|
+
const percentDone = event.total ? Math.round(100 * event.loaded / event.total) : undefined;
|
|
129
|
+
return new DataTransferProgress(event.loaded, bytesPerSec, avgBytesPerSec, event.total, percentDone);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1kYXRhLXRyYW5zZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL2h0dHAvdHJhbnNmZXIvaHR0cC1kYXRhLXRyYW5zZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBOEIsRUFBRSxFQUFVLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBWSxhQUFhLEVBQWlELE1BQU0sc0JBQXNCLENBQUM7QUFDOUcsT0FBTyxFQUFDLFVBQVUsRUFBc0IsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlFLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzlELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUd0RDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUFrQnBEOzs7O2dGQUk0RTtJQUU1RTs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQ3ZCLFdBQXVDLEVBQ3ZDLElBQWEsRUFDYixVQUFtQjtRQUVuQixPQUFPLElBQUksZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRTVFOzs7OztPQUtHO0lBQ0gsWUFDRSxXQUF1QyxFQUN2QyxJQUFhLEVBQ2IsVUFBbUI7UUFFbkIsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQXJEckQ7Ozs7b0ZBSTRFO1FBRXBFLFdBQU0s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QUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEUsTUFBTSxxQkFBcUIsR0FBRyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDMUQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQztRQUU1RCw0QkFBNEI7UUFDNUIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUUzRixPQUFPLElBQUksb0JBQW9CLENBQzdCLEtBQUssQ0FBQyxNQUFNLEVBQ1osV0FBVyxFQUNYLGNBQWMsRUFDZCxLQUFLLENBQUMsS0FBSyxFQUNYLFdBQVcsQ0FDWixDQUFDO0lBQ0osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7SHR0cEV2ZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUHJvZ3Jlc3NFdmVudCwgSHR0cFJlc3BvbnNlLCBIdHRwU2VudEV2ZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbHRlciwgZmlyc3QsIG1hcCwgdGFrZVVudGlsLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RGF0YVRyYW5zZmVyUHJvZ3Jlc3N9IGZyb20gJy4vZGF0YS10cmFuc2Zlci1wcm9ncmVzcyc7XG5pbXBvcnQge0RhdGFUcmFuc2ZlclN0YXRlfSBmcm9tICcuL2RhdGEtdHJhbnNmZXItc3RhdGUnO1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5pbXBvcnQge0RhdGFUcmFuc2ZlckJhc2V9IGZyb20gJy4vZGF0YS10cmFuc2Zlci1iYXNlJztcblxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBIdHRwIGRhdGEgdHJhbnNmZXIsIGVpdGhlciBhIGRvd25sb2FkIG9yIHVwbG9hZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEh0dHBEYXRhVHJhbnNmZXIgZXh0ZW5kcyBEYXRhVHJhbnNmZXJCYXNlIHtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogRmllbGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwcml2YXRlIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHRoaXMuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaHR0cFJlcXVlc3Q6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xuXG4gIHByaXZhdGUgX3N0YXJ0VGltZU1zOiBudW1iZXI7XG4gIHByaXZhdGUgX2VuZFRpbWVNczogbnVtYmVyO1xuICBwcml2YXRlIF9jdXJyVGltZU1zOiBudW1iZXI7XG4gIHByaXZhdGUgX3ByZXZUaW1lTXM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfb2xkQnl0ZXMgPSAwO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBTdGF0aWMgQnVpbGRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEh0dHBEYXRhVHJhbnNmZXIgZnJvbSBhIEh0dHBDbGllbnQgSHR0cFJlcXVlc3QuXG4gICAqIEBwYXJhbSBodHRwUmVxdWVzdFxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoaXMgdHJhbnNmZXJcbiAgICogQHBhcmFtIHRvdGFsQnl0ZXMgVGhlIHRvdGFsIGV4cGVjdGVkIGJ5dGVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21SZXF1ZXN0KFxuICAgIGh0dHBSZXF1ZXN0OiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PixcbiAgICBuYW1lPzogc3RyaW5nLFxuICAgIHRvdGFsQnl0ZXM/OiBudW1iZXJcbiAgKTogSHR0cERhdGFUcmFuc2ZlciB7XG4gICAgcmV0dXJuIG5ldyBIdHRwRGF0YVRyYW5zZmVyKGh0dHBSZXF1ZXN0LCBuYW1lLCB0b3RhbEJ5dGVzKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEh0dHBEYXRhVHJhbnNmZXJcbiAgICogQHBhcmFtIGh0dHBSZXF1ZXN0IFRoZSBodHRwIHJlcXVlc3QuXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoaXMgdHJhbnNmZXIgKHVzdWFsbHkgdGhlIGZpbGUgbmFtZSlcbiAgICogQHBhcmFtIHRvdGFsQnl0ZXMgVGhlIHRvdGFsIGJ5dGVzIG9mIHRoZSB0cmFuc2Zlci4gKElmIG5vdCBzZXQsIHdpbGwgYmUgYXV0byBkaXNjb3ZlcmVkIGlmIHBvc3NpYmxlKVxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBodHRwUmVxdWVzdDogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4sXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICB0b3RhbEJ5dGVzPzogbnVtYmVyXG4gICkge1xuICAgIHN1cGVyKERhdGFUcmFuc2ZlclN0YXRlLnBlbmRpbmcodG90YWxCeXRlcyksIG5hbWUpO1xuICAgIHRoaXMuX2h0dHBSZXF1ZXN0ID0gaHR0cFJlcXVlc3Q7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHVibGljIEFQSSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSBkYXRhIHRyYW5zZmVyXG4gICAqL1xuICBwdWJsaWMgc3RhcnQoKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwUmVxdWVzdC5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuYWJvcnQkKSxcbiAgICAgIHRhcCh7XG4gICAgICAgICAgbmV4dDogZXZlbnQgPT4ge1xuICAgICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5TZW50OlxuICAgICAgICAgICAgICAgIHRoaXMub25TdGFydChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzczpcbiAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLkRvd25sb2FkUHJvZ3Jlc3M6XG4gICAgICAgICAgICAgICAgdGhpcy5vblByb2dyZXNzKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxuICAgICAgICAgICAgICAgIHRoaXMub25Db21wbGV0ZShldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnJvcjogZXJyID0+IHRoaXMub25FcnJvcihlcnIpLFxuICAgICAgICAgIGZpbmFsaXplOiAoKSA9PiB0aGlzLmZpbmFsbHkoKVxuICAgICAgICB9XG4gICAgICApLFxuICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICByZXR1cm4gb2YoZXJyKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgb25TdGFydChldmVudDogSHR0cFNlbnRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuZW1pdFN0YXRlKFxuICAgICAgRGF0YVRyYW5zZmVyU3RhdGUuc3RhcnRlZCh0aGlzLnN0YXRlU25hcHNob3QucHJvZ3Jlc3MudG90YWxCeXRlcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvblByb2dyZXNzKGV2ZW50OiBIdHRwUHJvZ3Jlc3NFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHByb2dyZXNzID0gdGhpcy50cmFuc2ZlclByb2dyZXNzKGV2ZW50KTtcbiAgICB0aGlzLmVtaXRTdGF0ZShcbiAgICAgIERhdGFUcmFuc2ZlclN0YXRlLnRyYW5zZmVycmluZyhwcm9ncmVzcylcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNvbXBsZXRlKGV2ZW50OiBIdHRwUmVzcG9uc2U8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuZW1pdFN0YXRlKFxuICAgICAgRGF0YVRyYW5zZmVyU3RhdGUuY29tcGxldGVkKFxuICAgICAgICB0aGlzLnRyYW5zZmVyUHJvZ3Jlc3NGcm9tUmVzcG9uc2UoZXZlbnQsIHRoaXMuc3RhdGVTbmFwc2hvdC5wcm9ncmVzcylcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRTdGF0ZShcbiAgICAgIERhdGFUcmFuc2ZlclN0YXRlLmZhaWxlZChlcnJvciwgdGhpcy5zdGF0ZVNuYXBzaG90LnByb2dyZXNzKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbmFsbHkoKTogdm9pZCB7XG4gICAgdGhpcy5fZW5kVGltZU1zID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgaWYgKCF0aGlzLnN0YXRlU25hcHNob3QuaXNEb25lKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdEYXRhVHJhbnNmZXIgZGlkIG5vdCByZWFjaCBkb25lLXN0YXRlISBDb21wbGV0aW5nIFRyYW5zZmVyIG5vdy4uLicpO1xuICAgICAgdGhpcy5lbWl0U3RhdGUoXG4gICAgICAgIERhdGFUcmFuc2ZlclN0YXRlLmNvbXBsZXRlZCh0aGlzLnN0YXRlU25hcHNob3QucHJvZ3Jlc3MpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmZXJQcm9ncmVzc0Zyb21SZXNwb25zZShcbiAgICBldmVudDogSHR0cFJlc3BvbnNlPGFueT4sXG4gICAgcHJldmlvdXM/OiBEYXRhVHJhbnNmZXJQcm9ncmVzc1xuICApOiBEYXRhVHJhbnNmZXJQcm9ncmVzcyB7XG5cbiAgICByZXR1cm4gbmV3IERhdGFUcmFuc2ZlclByb2dyZXNzKFxuICAgICAgcHJldmlvdXMgPyBwcmV2aW91cy50b3RhbEJ5dGVzIDogMCxcbiAgICAgIHByZXZpb3VzID8gcHJldmlvdXMuYnl0ZXNQZXJTZWMgOiAwLFxuICAgICAgcHJldmlvdXMgPyBwcmV2aW91cy5hdmdCeXRlc1BlclNlYyA6IDAsXG4gICAgICBwcmV2aW91cyA/IHByZXZpb3VzLnRvdGFsQnl0ZXMgOiAwLFxuICAgICAgMTAwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmZXJQcm9ncmVzcyhldmVudDogSHR0cFByb2dyZXNzRXZlbnQpOiBEYXRhVHJhbnNmZXJQcm9ncmVzcyB7XG5cbiAgICB0aGlzLl9jdXJyVGltZU1zID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbiAgICAvLyBzZXR0aW5nIHN0YXJ0IHRpbWVcbiAgICBpZiAoIXRoaXMuX3N0YXJ0VGltZU1zKSB7XG4gICAgICB0aGlzLl9zdGFydFRpbWVNcyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgdGhpcy5fcHJldlRpbWVNcyA9IHRoaXMuX3N0YXJ0VGltZU1zO1xuICAgIH1cblxuICAgIC8vIHRyYWNraW5nIGhvdyBtdWNoIGRhdGEgaXMgcmVjZWl2ZWQgYW5kXG4gICAgY29uc3QgYnl0ZXNSZWNlaXZlZFRvdGFsID0gZXZlbnQubG9hZGVkO1xuICAgIGNvbnN0IGJ5dGVzUmVjZWl2ZWQgPSBieXRlc1JlY2VpdmVkVG90YWwgLSB0aGlzLl9vbGRCeXRlcztcblxuICAgIGNvbnN0IGR1cmF0aW9uTXMgPSAodGhpcy5fY3VyclRpbWVNcyAtIHRoaXMuX3ByZXZUaW1lTXMpO1xuICAgIGNvbnN0IGR1cmF0aW9uU2VjID0gZHVyYXRpb25NcyAvIDEwMDA7XG5cbiAgICAvLyBDYWxjIHRyYW5zZmVyIHNwZWVkIHBlciBwZXJjZW50IGRhdGEgcmVjZWl2ZWRcbiAgICBjb25zdCBieXRlc1BlclNlYyA9IGJ5dGVzUmVjZWl2ZWQgLyBkdXJhdGlvblNlYztcblxuICAgIC8vIHVwZGF0aW5nIHByZXZpb3VzIHZhbHVlc1xuICAgIHRoaXMuX3ByZXZUaW1lTXMgPSB0aGlzLl9jdXJyVGltZU1zO1xuICAgIHRoaXMuX29sZEJ5dGVzID0gYnl0ZXNSZWNlaXZlZFRvdGFsO1xuXG4gICAgLy8gQ2FsYyBhdmcgc3BlZWRcbiAgICBjb25zdCBkdXJhdGlvblNpbmNlU3RhcnRNcyA9ICh0aGlzLl9jdXJyVGltZU1zIC0gdGhpcy5fc3RhcnRUaW1lTXMpO1xuICAgIGNvbnN0IGR1cmF0aW9uU2luY2VTdGFydFNlYyA9IGR1cmF0aW9uU2luY2VTdGFydE1zIC8gMTAwMDtcbiAgICBjb25zdCBhdmdCeXRlc1BlclNlYyA9IGV2ZW50LmxvYWRlZCAvIGR1cmF0aW9uU2luY2VTdGFydFNlYztcblxuICAgIC8vIENhbGMgcHJvZ3Jlc3MgaWYgcG9zc2libGVcbiAgICBjb25zdCBwZXJjZW50RG9uZSA9IGV2ZW50LnRvdGFsID8gTWF0aC5yb3VuZCgxMDAgKiBldmVudC5sb2FkZWQgLyBldmVudC50b3RhbCkgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gbmV3IERhdGFUcmFuc2ZlclByb2dyZXNzKFxuICAgICAgZXZlbnQubG9hZGVkLFxuICAgICAgYnl0ZXNQZXJTZWMsXG4gICAgICBhdmdCeXRlc1BlclNlYyxcbiAgICAgIGV2ZW50LnRvdGFsLFxuICAgICAgcGVyY2VudERvbmVcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { I18nBase } from './i18n-base';
|
|
2
|
+
import { SimpleLocalisationPicker } from '../localisation-picker';
|
|
3
|
+
/**
|
|
4
|
+
* Represents a text in a specific locale.
|
|
5
|
+
*/
|
|
6
|
+
export class I18nText extends I18nBase {
|
|
7
|
+
static { this.localisationPicker = SimpleLocalisationPicker.Instance; }
|
|
8
|
+
static findBestText(choices, desired) {
|
|
9
|
+
return I18nText.localisationPicker.findBest(choices, desired)?.text;
|
|
10
|
+
}
|
|
11
|
+
constructor(locale, text) {
|
|
12
|
+
super(locale);
|
|
13
|
+
this.text = text;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi10ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL2kxOG4vZW50aXR5L2ltcGwvaTE4bi10ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFFaEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUyxTQUFRLFFBQVE7YUFFWix1QkFBa0IsR0FBRyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7SUFFeEUsTUFBTSxDQUFDLFlBQVksQ0FDeEIsT0FBbUIsRUFDbkIsT0FBb0I7UUFFcEIsT0FBTyxRQUFRLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUM7SUFDdEUsQ0FBQztJQUVELFlBQ0UsTUFBbUIsRUFDWixJQUFZO1FBRW5CLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUZQLFNBQUksR0FBSixJQUFJLENBQVE7SUFHckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGFuZ3VhZ2VUYWd9IGZyb20gJy4uL2xhbmd1YWdlLXRhZyc7XG5pbXBvcnQge0kxOG5CYXNlfSBmcm9tICcuL2kxOG4tYmFzZSc7XG5pbXBvcnQge1NpbXBsZUxvY2FsaXNhdGlvblBpY2tlcn0gZnJvbSAnLi4vbG9jYWxpc2F0aW9uLXBpY2tlcic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHRleHQgaW4gYSBzcGVjaWZpYyBsb2NhbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBJMThuVGV4dCBleHRlbmRzIEkxOG5CYXNlIHtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBsb2NhbGlzYXRpb25QaWNrZXIgPSBTaW1wbGVMb2NhbGlzYXRpb25QaWNrZXIuSW5zdGFuY2U7XG5cbiAgcHVibGljIHN0YXRpYyBmaW5kQmVzdFRleHQoXG4gICAgY2hvaWNlczogSTE4blRleHRbXSxcbiAgICBkZXNpcmVkOiBMYW5ndWFnZVRhZ1xuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBJMThuVGV4dC5sb2NhbGlzYXRpb25QaWNrZXIuZmluZEJlc3QoY2hvaWNlcywgZGVzaXJlZCk/LnRleHQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBsb2NhbGU6IExhbmd1YWdlVGFnLFxuICAgIHB1YmxpYyB0ZXh0OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobG9jYWxlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class Locale {
|
|
2
|
+
static parse(tag) {
|
|
3
|
+
const parts = tag.split('-');
|
|
4
|
+
return new Locale(parts[0], parts[1], parts[2]);
|
|
5
|
+
}
|
|
6
|
+
constructor(language, country, variant) {
|
|
7
|
+
this.language = language;
|
|
8
|
+
this.country = country;
|
|
9
|
+
this.variant = variant;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL2kxOG4vZW50aXR5L2xvY2FsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sTUFBTTtJQUVWLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBZ0I7UUFDbEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixPQUFPLElBQUksTUFBTSxDQUNmLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDUixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ1IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQsWUFDa0IsUUFBZ0IsRUFDaEIsT0FBZ0IsRUFDaEIsT0FBZ0I7UUFGaEIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDOUIsQ0FBQztDQUNOIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMYW5ndWFnZVRhZ30gZnJvbSAnLi9sYW5ndWFnZS10YWcnO1xuXG5cbmV4cG9ydCBjbGFzcyBMb2NhbGUge1xuXG4gIHB1YmxpYyBzdGF0aWMgcGFyc2UodGFnOiBMYW5ndWFnZVRhZyk6IExvY2FsZSB7XG4gICAgY29uc3QgcGFydHMgPSB0YWcuc3BsaXQoJy0nKTtcbiAgICByZXR1cm4gbmV3IExvY2FsZShcbiAgICAgIHBhcnRzWzBdLFxuICAgICAgcGFydHNbMV0sXG4gICAgICBwYXJ0c1syXSxcbiAgICApO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGxhbmd1YWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IGNvdW50cnk/OiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHZhcmlhbnQ/OiBzdHJpbmdcbiAgKSB7IH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Locale } from './locale';
|
|
2
|
+
export class SimpleLocalisationPicker {
|
|
3
|
+
static { this.Instance = new SimpleLocalisationPicker(); }
|
|
4
|
+
findBest(choices, desiredTag) {
|
|
5
|
+
if (!choices || choices.length === 0) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
// 1. Attempt exact / full match
|
|
9
|
+
let match = choices.find(c => c.locale === desiredTag);
|
|
10
|
+
if (match) {
|
|
11
|
+
return match;
|
|
12
|
+
}
|
|
13
|
+
const desired = Locale.parse(desiredTag);
|
|
14
|
+
// 2. Attempt language match
|
|
15
|
+
match = choices.find(c => Locale.parse(c.locale).language === desired.language);
|
|
16
|
+
if (match) {
|
|
17
|
+
return match;
|
|
18
|
+
}
|
|
19
|
+
// 2. Attempt country match
|
|
20
|
+
if (desired.country) {
|
|
21
|
+
match = choices.find(c => Locale.parse(c.locale).country === desired.country);
|
|
22
|
+
if (match) {
|
|
23
|
+
return match;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Otherwise, return the first available choice
|
|
27
|
+
return choices[0];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpc2F0aW9uLXBpY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9pMThuL2VudGl0eS9sb2NhbGlzYXRpb24tcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFpQmhDLE1BQU0sT0FBTyx3QkFBd0I7YUFFWixhQUFRLEdBQXVCLElBQUksd0JBQXdCLEVBQUUsQ0FBQztJQUU5RSxRQUFRLENBQ2IsT0FBWSxFQUNaLFVBQXVCO1FBR3ZCLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFBRSxPQUFPLFNBQVMsQ0FBQztTQUFFO1FBRTNELGdDQUFnQztRQUNoQyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQztRQUN2RCxJQUFJLEtBQUssRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1NBQUU7UUFFNUIsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV6Qyw0QkFBNEI7UUFDNUIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hGLElBQUksS0FBSyxFQUFFO1lBQUUsT0FBTyxLQUFLLENBQUM7U0FBRTtRQUU1QiwyQkFBMkI7UUFDM0IsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RSxJQUFJLEtBQUssRUFBRTtnQkFBRSxPQUFPLEtBQUssQ0FBQzthQUFFO1NBQzdCO1FBRUQsK0NBQStDO1FBQy9DLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xhbmd1YWdlVGFnfSBmcm9tICcuL2xhbmd1YWdlLXRhZyc7XG5pbXBvcnQge0xvY2FsaXplZH0gZnJvbSAnLi9sb2NhbGl6ZWQnO1xuaW1wb3J0IHtMb2NhbGV9IGZyb20gJy4vbG9jYWxlJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbGlzYXRpb25QaWNrZXIge1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBiZXN0IG1hdGNoIG9mIHRoZSBnaXZlbiBjaG9pY2VzIGZvciB0aGUgZ2l2ZW4gZGVzaXJlZCBsYW5ndWFnZSB0YWcuXG4gICAqIEBwYXJhbSBjaG9pY2VzXG4gICAqIEBwYXJhbSBkZXNpcmVkXG4gICAqL1xuICBmaW5kQmVzdDxUIGV4dGVuZHMgTG9jYWxpemVkPihcbiAgICBjaG9pY2VzOiBUW10sXG4gICAgZGVzaXJlZDogTGFuZ3VhZ2VUYWdcbiAgKTogVCB8IHVuZGVmaW5lZDtcblxufVxuXG5cbmV4cG9ydCBjbGFzcyBTaW1wbGVMb2NhbGlzYXRpb25QaWNrZXIgaW1wbGVtZW50cyBMb2NhbGlzYXRpb25QaWNrZXIge1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSW5zdGFuY2U6IExvY2FsaXNhdGlvblBpY2tlciA9IG5ldyBTaW1wbGVMb2NhbGlzYXRpb25QaWNrZXIoKTtcblxuICBwdWJsaWMgZmluZEJlc3Q8VCBleHRlbmRzIExvY2FsaXplZD4oXG4gICAgY2hvaWNlczogVFtdLFxuICAgIGRlc2lyZWRUYWc6IExhbmd1YWdlVGFnXG4gICk6IFQgfCB1bmRlZmluZWQge1xuXG4gICAgaWYgKCFjaG9pY2VzIHx8IGNob2ljZXMubGVuZ3RoID09PSAwKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICAgIC8vIDEuIEF0dGVtcHQgZXhhY3QgLyBmdWxsIG1hdGNoXG4gICAgbGV0IG1hdGNoID0gY2hvaWNlcy5maW5kKGMgPT4gYy5sb2NhbGUgPT09IGRlc2lyZWRUYWcpO1xuICAgIGlmIChtYXRjaCkgeyByZXR1cm4gbWF0Y2g7IH1cblxuICAgIGNvbnN0IGRlc2lyZWQgPSBMb2NhbGUucGFyc2UoZGVzaXJlZFRhZyk7XG5cbiAgICAvLyAyLiBBdHRlbXB0IGxhbmd1YWdlIG1hdGNoXG4gICAgbWF0Y2ggPSBjaG9pY2VzLmZpbmQoYyA9PiBMb2NhbGUucGFyc2UoYy5sb2NhbGUpLmxhbmd1YWdlID09PSBkZXNpcmVkLmxhbmd1YWdlKTtcbiAgICBpZiAobWF0Y2gpIHsgcmV0dXJuIG1hdGNoOyB9XG5cbiAgICAvLyAyLiBBdHRlbXB0IGNvdW50cnkgbWF0Y2hcbiAgICBpZiAoZGVzaXJlZC5jb3VudHJ5KSB7XG4gICAgICBtYXRjaCA9IGNob2ljZXMuZmluZChjID0+IExvY2FsZS5wYXJzZShjLmxvY2FsZSkuY291bnRyeSA9PT0gZGVzaXJlZC5jb3VudHJ5KTtcbiAgICAgIGlmIChtYXRjaCkgeyByZXR1cm4gbWF0Y2g7IH1cbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgZmlyc3QgYXZhaWxhYmxlIGNob2ljZVxuICAgIHJldHVybiBjaG9pY2VzWzBdO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provides common used object utils
|
|
3
|
+
*/
|
|
4
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
5
|
+
export class Objects {
|
|
6
|
+
static { this.logger = LoggerFactory.getLogger('Objects'); }
|
|
7
|
+
/**
|
|
8
|
+
* Checks if the given value is non null / nun undefined
|
|
9
|
+
*/
|
|
10
|
+
static nonNull(value) {
|
|
11
|
+
return value !== null && value !== undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Checks if the given value is null or undefined
|
|
15
|
+
*/
|
|
16
|
+
static isNull(value) {
|
|
17
|
+
return value === null || value === undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates a copy of the object data.
|
|
21
|
+
*/
|
|
22
|
+
static cloneData(src) {
|
|
23
|
+
if (!src) {
|
|
24
|
+
return src;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
const json = JSON.stringify(src);
|
|
28
|
+
return JSON.parse(json);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
throw new Error('Failed to clone object! ' + err.message);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Checks if the two given objects have the same data
|
|
36
|
+
*/
|
|
37
|
+
static dataEquals(a, b) {
|
|
38
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9vYmplY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE1BQU0sT0FBTyxPQUFPO2FBRVEsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFcEU7O09BRUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQVU7UUFDNUIsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFVO1FBQzNCLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUksR0FBTTtRQUU3QixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQUUsT0FBTyxHQUFHLENBQUM7U0FBRTtRQUV6QixJQUFJO1lBQ0EsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFNLENBQUM7U0FDaEM7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdEO0lBRUwsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBSSxDQUFJLEVBQUUsQ0FBSTtRQUNsQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm92aWRlcyBjb21tb24gdXNlZCBvYmplY3QgdXRpbHNcbiAqL1xuaW1wb3J0IHtMb2dnZXJGYWN0b3J5fSBmcm9tICdAZWxkZXJieXRlL3RzLWxvZ2dlcic7XG5cbmV4cG9ydCBjbGFzcyBPYmplY3RzIHtcblxuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdPYmplY3RzJyk7XG5cbiAgICAvKipcbiAgICAgKiBDaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIG5vbiBudWxsIC8gbnVuIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbm9uTnVsbCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGlzTnVsbCh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBvYmplY3QgZGF0YS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNsb25lRGF0YTxUPihzcmM6IFQpOiBUIHtcblxuICAgICAgICBpZiAoIXNyYykgeyByZXR1cm4gc3JjOyB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShzcmMpO1xuICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoanNvbikgYXMgVDtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjbG9uZSBvYmplY3QhICcgKyBlcnIubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrcyBpZiB0aGUgdHdvIGdpdmVuIG9iamVjdHMgaGF2ZSB0aGUgc2FtZSBkYXRhXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBkYXRhRXF1YWxzPFQ+KGE6IFQsIGI6IFQpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGEpID09PSBKU09OLnN0cmluZ2lmeShiKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { map, skip } from 'rxjs/operators';
|
|
3
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
4
|
+
/**
|
|
5
|
+
* Provides a model of a selection.
|
|
6
|
+
* Supports single and multi selection.
|
|
7
|
+
*
|
|
8
|
+
* Supports custom selection equality (default by object value)
|
|
9
|
+
*/
|
|
10
|
+
export class SelectionModel {
|
|
11
|
+
static { this.FallbackKeyGetterFn = ((a) => a); }
|
|
12
|
+
/***************************************************************************
|
|
13
|
+
* *
|
|
14
|
+
* Constructor *
|
|
15
|
+
* *
|
|
16
|
+
**************************************************************************/
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new SelectionModel
|
|
19
|
+
*
|
|
20
|
+
* @param multiple Support multi selection?
|
|
21
|
+
* @param initial the initial selection
|
|
22
|
+
* @param keyGetter value identity - default to value object equality
|
|
23
|
+
* @param selectableEvaluatorFn function to evaluate if the element in question is selectable
|
|
24
|
+
*/
|
|
25
|
+
constructor(multiple = false, initial, keyGetter = SelectionModel.FallbackKeyGetterFn, selectableEvaluatorFn = () => true) {
|
|
26
|
+
/***************************************************************************
|
|
27
|
+
* *
|
|
28
|
+
* Fields *
|
|
29
|
+
* *
|
|
30
|
+
**************************************************************************/
|
|
31
|
+
this.log = LoggerFactory.getLogger(this.constructor.name);
|
|
32
|
+
this._selectionMap = new Map();
|
|
33
|
+
this._selection = new BehaviorSubject([]);
|
|
34
|
+
this._multiple = multiple;
|
|
35
|
+
this._keyGetterFn = keyGetter;
|
|
36
|
+
this._selectableEvaluatorFn = selectableEvaluatorFn;
|
|
37
|
+
if (initial) {
|
|
38
|
+
this.replaceSelection(initial);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/***************************************************************************
|
|
42
|
+
* *
|
|
43
|
+
* Properties *
|
|
44
|
+
* *
|
|
45
|
+
**************************************************************************/
|
|
46
|
+
get changed() {
|
|
47
|
+
return this.selection.pipe(skip(1) // Skip the initial value
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
get selection() {
|
|
51
|
+
return this._selection.asObservable();
|
|
52
|
+
}
|
|
53
|
+
get selectionSnapshot() {
|
|
54
|
+
return this._selection.getValue();
|
|
55
|
+
}
|
|
56
|
+
set selectableEvaluatorFn(fn) {
|
|
57
|
+
this._selectableEvaluatorFn = fn;
|
|
58
|
+
this.replaceSelection(this.selectionSnapshot);
|
|
59
|
+
}
|
|
60
|
+
set keyGetterFn(fn) {
|
|
61
|
+
this._keyGetterFn = fn;
|
|
62
|
+
this.replaceSelection(this.selectionSnapshot);
|
|
63
|
+
}
|
|
64
|
+
/***************************************************************************
|
|
65
|
+
* *
|
|
66
|
+
* Public API *
|
|
67
|
+
* *
|
|
68
|
+
**************************************************************************/
|
|
69
|
+
/**
|
|
70
|
+
* Evaluates if the given item is selectable based on the initially set 'selectable' function.
|
|
71
|
+
* If no function has been set (or function is null), all items are selectable by default.
|
|
72
|
+
*/
|
|
73
|
+
isSelectable(item) {
|
|
74
|
+
if (this._selectableEvaluatorFn) {
|
|
75
|
+
return this._selectableEvaluatorFn(item);
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
clear() {
|
|
80
|
+
if (this._selectionMap.size > 0) {
|
|
81
|
+
this._selectionMap.clear();
|
|
82
|
+
this.selectionChanged('clear');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
replaceSelection(newSelection) {
|
|
86
|
+
if (newSelection.length > 0) {
|
|
87
|
+
this._selectionMap.clear();
|
|
88
|
+
this.select(newSelection);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.clear();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
select(values) {
|
|
95
|
+
if (this.selectInternal(values)) {
|
|
96
|
+
this.selectionChanged('selectInternal[has-changes]');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
deselect(values) {
|
|
100
|
+
this.deselectIds(values.map(v => this._keyGetterFn(v)));
|
|
101
|
+
}
|
|
102
|
+
deselectIds(ids) {
|
|
103
|
+
let anyChange = false;
|
|
104
|
+
ids.forEach(key => {
|
|
105
|
+
if (this._selectionMap.delete(key)) {
|
|
106
|
+
anyChange = true;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
if (anyChange) {
|
|
110
|
+
this.selectionChanged('deselectIds');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
toggle(value) {
|
|
114
|
+
this.log.debug('toggling selection of value id:' + this._keyGetterFn(value));
|
|
115
|
+
if (this.isSelected(value)) {
|
|
116
|
+
this.deselect([value]);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.select([value]);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
isSelected(value) {
|
|
123
|
+
const key = this._keyGetterFn(value);
|
|
124
|
+
return this._selectionMap.has(key);
|
|
125
|
+
}
|
|
126
|
+
observeSelection(value) {
|
|
127
|
+
const key = this._keyGetterFn(value);
|
|
128
|
+
return this._selection.pipe(map(selected => this._selectionMap.has(key)));
|
|
129
|
+
}
|
|
130
|
+
get count() {
|
|
131
|
+
return this._selectionMap.size;
|
|
132
|
+
}
|
|
133
|
+
get isEmpty() {
|
|
134
|
+
return this._selectionMap.size === 0;
|
|
135
|
+
}
|
|
136
|
+
get hasValue() {
|
|
137
|
+
return this._selectionMap.size > 0;
|
|
138
|
+
}
|
|
139
|
+
get hasSingleValue() {
|
|
140
|
+
return this._selectionMap.size === 1;
|
|
141
|
+
}
|
|
142
|
+
get hasMultipleValues() {
|
|
143
|
+
return this._selectionMap.size > 1;
|
|
144
|
+
}
|
|
145
|
+
get isMultipleSelection() {
|
|
146
|
+
return this._multiple;
|
|
147
|
+
}
|
|
148
|
+
set isMultipleSelection(multiple) {
|
|
149
|
+
if (multiple !== this._multiple) {
|
|
150
|
+
this._multiple = multiple;
|
|
151
|
+
if (!this._multiple) {
|
|
152
|
+
const selected = this.selectionSnapshot;
|
|
153
|
+
if (selected.length > 1) {
|
|
154
|
+
this.log.debug('Multiple selection was deactivated but there where more than one selected items present, fixing now!');
|
|
155
|
+
this.select([selected[0]]);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
this.selectionChanged('multi-selection-toggle');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/***************************************************************************
|
|
162
|
+
* *
|
|
163
|
+
* Private methods *
|
|
164
|
+
* *
|
|
165
|
+
**************************************************************************/
|
|
166
|
+
selectionChanged(origin) {
|
|
167
|
+
this.log.debug('selectionChanged triggerd by ' + origin);
|
|
168
|
+
this._selection.next(Array.from(this._selectionMap.values()));
|
|
169
|
+
}
|
|
170
|
+
selectInternal(values) {
|
|
171
|
+
values = values.filter(v => this.isSelectable(v));
|
|
172
|
+
if (values && values.length > 0) {
|
|
173
|
+
if (this._multiple) {
|
|
174
|
+
// Multi selection
|
|
175
|
+
return this.ensureSelectedMulti(values);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
// Single selection
|
|
179
|
+
const single = values[0]; // Maybe last is better?
|
|
180
|
+
return this.ensureSelectedSingle(single);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
ensureSelectedMulti(values) {
|
|
186
|
+
if (!this.isAlreadySelected(values)) {
|
|
187
|
+
values.forEach(value => {
|
|
188
|
+
this._selectionMap.set(this._keyGetterFn(value), value);
|
|
189
|
+
});
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
isExclusiveSelected(value) {
|
|
195
|
+
return this.isSelected(value) && this._selectionMap.size === 1;
|
|
196
|
+
}
|
|
197
|
+
isAlreadySelected(values) {
|
|
198
|
+
if (this._selectionMap.size >= values.length) {
|
|
199
|
+
return values.every(v => this.isSelected(v));
|
|
200
|
+
}
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
ensureSelectedSingle(value) {
|
|
204
|
+
if (!this.isExclusiveSelected(value)) {
|
|
205
|
+
this._selectionMap.clear();
|
|
206
|
+
this._selectionMap.set(this._keyGetterFn(value), value);
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tbW9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNqRCxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUluRDs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxjQUFjO2FBZ0JGLHdCQUFtQixHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxBQUFsQixDQUFtQjtJQUU3RDs7OztnRkFJNEU7SUFHNUU7Ozs7Ozs7T0FPRztJQUNILFlBQ0UsUUFBUSxHQUFHLEtBQUssRUFDaEIsT0FBYSxFQUNiLFlBQTRCLGNBQWMsQ0FBQyxtQkFBbUIsRUFDOUQsd0JBQWdELEdBQUcsRUFBRSxDQUFDLElBQUk7UUFuQzVEOzs7O29GQUk0RTtRQUUzRCxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBR3JELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNsQyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUEyQnpELElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQztRQUNwRCxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENB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WUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4RCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHNraXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7TG9nZ2VyRmFjdG9yeX0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInO1xuXG5leHBvcnQgdHlwZSBLZXlHZXR0ZXJGbjxUPiA9ICgoaXRlbTogVCkgPT4gYW55KTtcblxuLyoqXG4gKiBQcm92aWRlcyBhIG1vZGVsIG9mIGEgc2VsZWN0aW9uLlxuICogU3VwcG9ydHMgc2luZ2xlIGFuZCBtdWx0aSBzZWxlY3Rpb24uXG4gKlxuICogU3VwcG9ydHMgY3VzdG9tIHNlbGVjdGlvbiBlcXVhbGl0eSAoZGVmYXVsdCBieSBvYmplY3QgdmFsdWUpXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25Nb2RlbDxUPiB7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEZpZWxkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSByZWFkb25seSBsb2cgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcih0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuXG4gIHByaXZhdGUgX211bHRpcGxlOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3Rpb25NYXAgPSBuZXcgTWFwPGFueSwgVD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0aW9uID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcbiAgcHJpdmF0ZSBfa2V5R2V0dGVyRm46IEtleUdldHRlckZuPFQ+O1xuICBwcml2YXRlIF9zZWxlY3RhYmxlRXZhbHVhdG9yRm46ICgoaXRlbTogVCkgPT4gYm9vbGVhbik7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGYWxsYmFja0tleUdldHRlckZuID0gKChhOiBhbnkpID0+IGEpO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgU2VsZWN0aW9uTW9kZWxcbiAgICpcbiAgICogQHBhcmFtIG11bHRpcGxlIFN1cHBvcnQgbXVsdGkgc2VsZWN0aW9uP1xuICAgKiBAcGFyYW0gaW5pdGlhbCB0aGUgaW5pdGlhbCBzZWxlY3Rpb25cbiAgICogQHBhcmFtIGtleUdldHRlciB2YWx1ZSBpZGVudGl0eSAtIGRlZmF1bHQgdG8gdmFsdWUgb2JqZWN0IGVxdWFsaXR5XG4gICAqIEBwYXJhbSBzZWxlY3RhYmxlRXZhbHVhdG9yRm4gZnVuY3Rpb24gdG8gZXZhbHVhdGUgaWYgdGhlIGVsZW1lbnQgaW4gcXVlc3Rpb24gaXMgc2VsZWN0YWJsZVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgbXVsdGlwbGUgPSBmYWxzZSxcbiAgICBpbml0aWFsPzogVFtdLFxuICAgIGtleUdldHRlcjogS2V5R2V0dGVyRm48VD4gPSBTZWxlY3Rpb25Nb2RlbC5GYWxsYmFja0tleUdldHRlckZuLFxuICAgIHNlbGVjdGFibGVFdmFsdWF0b3JGbjogKChpdGVtOiBUKSA9PiBib29sZWFuKSA9ICgpID0+IHRydWVcbiAgKSB7XG4gICAgdGhpcy5fbXVsdGlwbGUgPSBtdWx0aXBsZTtcbiAgICB0aGlzLl9rZXlHZXR0ZXJGbiA9IGtleUdldHRlcjtcbiAgICB0aGlzLl9zZWxlY3RhYmxlRXZhbHVhdG9yRm4gPSBzZWxlY3RhYmxlRXZhbHVhdG9yRm47XG4gICAgaWYgKGluaXRpYWwpIHtcbiAgICAgIHRoaXMucmVwbGFjZVNlbGVjdGlvbihpbml0aWFsKTtcbiAgICB9XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBwdWJsaWMgZ2V0IGNoYW5nZWQoKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24ucGlwZShcbiAgICAgIHNraXAoMSkgLy8gU2tpcCB0aGUgaW5pdGlhbCB2YWx1ZVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGlvbigpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb24uYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGlvblNuYXBzaG90KCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbi5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RhYmxlRXZhbHVhdG9yRm4oZm46IChpdGVtOiBUKSA9PiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2VsZWN0YWJsZUV2YWx1YXRvckZuID0gZm47XG4gICAgdGhpcy5yZXBsYWNlU2VsZWN0aW9uKHRoaXMuc2VsZWN0aW9uU25hcHNob3QpO1xuICB9XG5cbiAgcHVibGljIHNldCBrZXlHZXR0ZXJGbihmbjogS2V5R2V0dGVyRm48VD4pIHtcbiAgICB0aGlzLl9rZXlHZXR0ZXJGbiA9IGZuO1xuICAgIHRoaXMucmVwbGFjZVNlbGVjdGlvbih0aGlzLnNlbGVjdGlvblNuYXBzaG90KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBFdmFsdWF0ZXMgaWYgdGhlIGdpdmVuIGl0ZW0gaXMgc2VsZWN0YWJsZSBiYXNlZCBvbiB0aGUgaW5pdGlhbGx5IHNldCAnc2VsZWN0YWJsZScgZnVuY3Rpb24uXG4gICAqIElmIG5vIGZ1bmN0aW9uIGhhcyBiZWVuIHNldCAob3IgZnVuY3Rpb24gaXMgbnVsbCksIGFsbCBpdGVtcyBhcmUgc2VsZWN0YWJsZSBieSBkZWZhdWx0LlxuICAgKi9cbiAgcHVibGljIGlzU2VsZWN0YWJsZShpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGFibGVFdmFsdWF0b3JGbikge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGFibGVFdmFsdWF0b3JGbihpdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1hcC5zaXplID4gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTWFwLmNsZWFyKCk7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQoJ2NsZWFyJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlcGxhY2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uOiBUW10pOiB2b2lkIHtcbiAgICBpZiAobmV3U2VsZWN0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1hcC5jbGVhcigpO1xuICAgICAgdGhpcy5zZWxlY3QobmV3U2VsZWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3QodmFsdWVzOiBUW10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RJbnRlcm5hbCh2YWx1ZXMpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQoJ3NlbGVjdEludGVybmFsW2hhcy1jaGFuZ2VzXScpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZXNlbGVjdCh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIHRoaXMuZGVzZWxlY3RJZHMoXG4gICAgICB2YWx1ZXMubWFwKHYgPT4gdGhpcy5fa2V5R2V0dGVyRm4odikpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXNlbGVjdElkcyhpZHM6IGFueVtdKTogdm9pZCB7XG5cbiAgICBsZXQgYW55Q2hhbmdlID0gZmFsc2U7XG5cbiAgICBpZHMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1hcC5kZWxldGUoa2V5KSkge1xuICAgICAgICBhbnlDaGFuZ2UgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKGFueUNoYW5nZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkKCdkZXNlbGVjdElkcycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGUodmFsdWU6IFQpOiB2b2lkIHtcblxuICAgIHRoaXMubG9nLmRlYnVnKCd0b2dnbGluZyBzZWxlY3Rpb24gb2YgdmFsdWUgaWQ6JyArIHRoaXMuX2tleUdldHRlckZuKHZhbHVlKSk7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5kZXNlbGVjdChbdmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3QoW3ZhbHVlXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzU2VsZWN0ZWQodmFsdWU6IFQpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLl9rZXlHZXR0ZXJGbih2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1hcC5oYXMoa2V5KTtcbiAgfVxuXG5cbiAgcHVibGljIG9ic2VydmVTZWxlY3Rpb24odmFsdWU6IFQpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLl9rZXlHZXR0ZXJGbih2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbi5waXBlKFxuICAgICAgbWFwKHNlbGVjdGVkID0+IHRoaXMuX3NlbGVjdGlvbk1hcC5oYXMoa2V5KSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTWFwLnNpemU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1hcC5zaXplID09PSAwO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTWFwLnNpemUgPiAwO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNTaW5nbGVWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTWFwLnNpemUgPT09IDE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc011bHRpcGxlVmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25NYXAuc2l6ZSA+IDE7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTXVsdGlwbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG5cbiAgcHVibGljIHNldCBpc011bHRpcGxlU2VsZWN0aW9uKG11bHRpcGxlOiBib29sZWFuKSB7XG4gICAgaWYgKG11bHRpcGxlICE9PSB0aGlzLl9tdWx0aXBsZSkge1xuICAgICAgdGhpcy5fbXVsdGlwbGUgPSBtdWx0aXBsZTtcbiAgICAgIGlmICghdGhpcy5fbXVsdGlwbGUpIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGlvblNuYXBzaG90O1xuICAgICAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHRoaXMubG9nLmRlYnVnKCdNdWx0aXBsZSBzZWxlY3Rpb24gd2FzIGRlYWN0aXZhdGVkIGJ1dCB0aGVyZSB3aGVyZSBtb3JlIHRoYW4gb25lIHNlbGVjdGVkIGl0ZW1zIHByZXNlbnQsIGZpeGluZyBub3chJyk7XG4gICAgICAgICAgdGhpcy5zZWxlY3QoW3NlbGVjdGVkWzBdXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZCgnbXVsdGktc2VsZWN0aW9uLXRvZ2dsZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgc2VsZWN0aW9uQ2hhbmdlZChvcmlnaW46IHN0cmluZyk6IHZvaWQge1xuXG4gICAgdGhpcy5sb2cuZGVidWcoJ3NlbGVjdGlvbkNoYW5nZWQgdHJpZ2dlcmQgYnkgJyArIG9yaWdpbik7XG5cbiAgICB0aGlzLl9zZWxlY3Rpb24ubmV4dChcbiAgICAgIEFycmF5LmZyb20odGhpcy5fc2VsZWN0aW9uTWFwLnZhbHVlcygpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEludGVybmFsKHZhbHVlczogVFtdKTogYm9vbGVhbiB7XG5cbiAgICB2YWx1ZXMgPSB2YWx1ZXMuZmlsdGVyKHYgPT4gdGhpcy5pc1NlbGVjdGFibGUodikpO1xuXG4gICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHRoaXMuX211bHRpcGxlKSB7XG4gICAgICAgIC8vIE11bHRpIHNlbGVjdGlvblxuICAgICAgICByZXR1cm4gdGhpcy5lbnN1cmVTZWxlY3RlZE11bHRpKHZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTaW5nbGUgc2VsZWN0aW9uXG4gICAgICAgIGNvbnN0IHNpbmdsZSA9IHZhbHVlc1swXTsgLy8gTWF5YmUgbGFzdCBpcyBiZXR0ZXI/XG4gICAgICAgIHJldHVybiB0aGlzLmVuc3VyZVNlbGVjdGVkU2luZ2xlKHNpbmdsZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlU2VsZWN0ZWRNdWx0aSh2YWx1ZXM6IFRbXSk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5pc0FscmVhZHlTZWxlY3RlZCh2YWx1ZXMpKSB7XG4gICAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTWFwLnNldCh0aGlzLl9rZXlHZXR0ZXJGbih2YWx1ZSksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4Y2x1c2l2ZVNlbGVjdGVkKHZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWxlY3RlZCh2YWx1ZSkgJiYgdGhpcy5fc2VsZWN0aW9uTWFwLnNpemUgPT09IDE7XG4gIH1cblxuICBwcml2YXRlIGlzQWxyZWFkeVNlbGVjdGVkKHZhbHVlczogVFtdKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1hcC5zaXplID49IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB2YWx1ZXMuZXZlcnkodiA9PiB0aGlzLmlzU2VsZWN0ZWQodikpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZVNlbGVjdGVkU2luZ2xlKHZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmlzRXhjbHVzaXZlU2VsZWN0ZWQodmFsdWUpKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25NYXAuY2xlYXIoKTtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1hcC5zZXQodGhpcy5fa2V5R2V0dGVyRm4odmFsdWUpLCB2YWx1ZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class SuggestionProvider {
|
|
2
|
+
static build(provider) {
|
|
3
|
+
return new SuggestionProvider(provider);
|
|
4
|
+
}
|
|
5
|
+
constructor(provider) {
|
|
6
|
+
this.provider = provider;
|
|
7
|
+
}
|
|
8
|
+
loadSuggestions(filter) {
|
|
9
|
+
return this.provider(filter);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VnZ2VzdGlvbi1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbW1vbi9zdWdnZXN0aW9uLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sT0FBTyxrQkFBa0I7SUFFdEIsTUFBTSxDQUFDLEtBQUssQ0FBSSxRQUE2QztRQUNsRSxPQUFPLElBQUksa0JBQWtCLENBQUksUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFlBQ1UsUUFBNkM7UUFBN0MsYUFBUSxHQUFSLFFBQVEsQ0FBcUM7SUFDdkQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdWdnZXN0aW9uUHJvdmlkZXI8VD4ge1xuXG4gIC8qKlxuICAgKiBMb2FkcyBhbGwgc3VnZ2VzdGlvbnMsIGZpbHRlcmVkIGJ5IHRoZSBnaXZlbiBmaWx0ZXIgc3RyaW5nLlxuICAgKi9cbiAgbG9hZFN1Z2dlc3Rpb25zKGZpbHRlcjogc3RyaW5nIHwgbnVsbCk6IE9ic2VydmFibGU8VFtdPjtcbn1cblxuXG5leHBvcnQgY2xhc3MgU3VnZ2VzdGlvblByb3ZpZGVyPFQ+IGltcGxlbWVudHMgSVN1Z2dlc3Rpb25Qcm92aWRlcjxUPiB7XG5cbiAgcHVibGljIHN0YXRpYyBidWlsZDxUPihwcm92aWRlcjogKGZpbHRlcjogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPFRbXT4pOiBJU3VnZ2VzdGlvblByb3ZpZGVyPFQ+IHtcbiAgICByZXR1cm4gbmV3IFN1Z2dlc3Rpb25Qcm92aWRlcjxUPihwcm92aWRlcik7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHByb3ZpZGVyOiAoZmlsdGVyOiBzdHJpbmcpID0+IE9ic2VydmFibGU8VFtdPikge1xuICB9XG5cbiAgcHVibGljIGxvYWRTdWdnZXN0aW9ucyhmaWx0ZXI6IHN0cmluZyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgcmV0dXJuIHRoaXMucHJvdmlkZXIoZmlsdGVyKTtcbiAgfVxufVxuXG5cblxuIl19
|