@elderbyte/ngx-starter 18.12.2 → 18.12.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +3 -3
- package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +3 -3
- package/esm2022/lib/common/forms/elder-from-field-base.mjs +3 -3
- package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +3 -3
- package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +3 -3
- package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +3 -3
- package/esm2022/lib/common/forms/form-field-base.component.mjs +3 -3
- package/esm2022/lib/common/forms/multi-model-base.component.mjs +3 -3
- package/esm2022/lib/common/forms/template-composite-control.mjs +3 -3
- package/esm2022/lib/common/forms/value-accessor-base.mjs +3 -3
- package/esm2022/lib/common/http/http-client-builder.service.mjs +3 -3
- package/esm2022/lib/common/http/http-client-pristine.mjs +3 -3
- package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +3 -3
- package/esm2022/lib/common/time/temporal-util.mjs +13 -1
- package/esm2022/lib/common/url/elder-router.service.mjs +3 -3
- package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +3 -3
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +3 -3
- package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +4 -4
- package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +3 -3
- package/esm2022/lib/components/auditing/elder-audit.module.mjs +4 -4
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +9 -9
- package/esm2022/lib/components/badge/elder-badge.directive.mjs +3 -3
- package/esm2022/lib/components/badge/elder-badge.module.mjs +4 -4
- package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +3 -3
- package/esm2022/lib/components/button-group/elder-button-group.module.mjs +4 -4
- package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +3 -3
- package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +3 -3
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +3 -3
- package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +4 -4
- package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +3 -3
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +18 -18
- package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +4 -4
- package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +3 -3
- package/esm2022/lib/components/chips/elder-chips.module.mjs +4 -4
- package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +4 -4
- package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +3 -3
- package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +3 -3
- package/esm2022/lib/components/containers/elder-containers.module.mjs +4 -4
- package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +3 -3
- package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +3 -3
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +3 -3
- package/esm2022/lib/components/csv/elder-csv.module.mjs +4 -4
- package/esm2022/lib/components/currency/elder-currency.module.mjs +4 -4
- package/esm2022/lib/components/currency/elder-currency.pipe.mjs +3 -3
- package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +4 -4
- package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +3 -3
- package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +3 -3
- package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +3 -3
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +3 -3
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +3 -3
- package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +3 -3
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +3 -3
- package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +3 -3
- package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +4 -4
- package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +6 -6
- package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +3 -3
- package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +3 -3
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +9 -9
- package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +4 -4
- package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +3 -3
- package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +3 -3
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +4 -4
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +3 -3
- package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +3 -3
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +4 -4
- package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +3 -3
- package/esm2022/lib/components/data-view/table/elder-table.module.mjs +4 -4
- package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +3 -3
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +4 -4
- package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +3 -3
- package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +3 -3
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +3 -3
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +3 -3
- package/esm2022/lib/components/errors/elder-error.module.mjs +4 -4
- package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +3 -3
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +3 -3
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +4 -4
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +3 -3
- package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +3 -3
- package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +3 -3
- package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +3 -3
- package/esm2022/lib/components/files/elder-file-select.directive.mjs +3 -3
- package/esm2022/lib/components/files/elder-file.module.mjs +4 -4
- package/esm2022/lib/components/files/file-select/file-select.component.mjs +3 -3
- package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +3 -3
- package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +3 -3
- package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +4 -4
- package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/elder-triple-state-checkbox.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +3 -3
- package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +3 -3
- package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +3 -3
- package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +3 -3
- package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +3 -3
- package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +3 -3
- package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +3 -3
- package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +3 -3
- package/esm2022/lib/components/forms/elder-forms.module.mjs +4 -4
- package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +3 -3
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +3 -3
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +3 -3
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +3 -3
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +3 -3
- package/esm2022/lib/components/forms/search/elder-search.module.mjs +4 -4
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +3 -3
- package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +3 -3
- package/esm2022/lib/components/global-search/elder-global-search.component.mjs +3 -3
- package/esm2022/lib/components/global-search/elder-global-search.module.mjs +4 -4
- package/esm2022/lib/components/global-search/elder-global-search.service.mjs +3 -3
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +3 -3
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +4 -4
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +3 -3
- package/esm2022/lib/components/headers/elder-header.module.mjs +4 -4
- package/esm2022/lib/components/http-support/elder-http-client.service.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +4 -4
- package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +3 -3
- package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +3 -3
- package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +3 -3
- package/esm2022/lib/components/i18n/language/elder-language.module.mjs +4 -4
- package/esm2022/lib/components/i18n/language/elder-language.service.mjs +3 -3
- package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +3 -3
- package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +4 -4
- package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +3 -3
- package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +3 -3
- package/esm2022/lib/components/iframes/elder-iframe.module.mjs +4 -4
- package/esm2022/lib/components/iframes/iframe-close.directive.mjs +3 -3
- package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +3 -3
- package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +3 -3
- package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +3 -3
- package/esm2022/lib/components/iframes/iframe.service.mjs +3 -3
- package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +3 -3
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +3 -3
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +4 -4
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +3 -3
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +3 -3
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +3 -3
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +4 -4
- package/esm2022/lib/components/labels/elder-labels.module.mjs +4 -4
- package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +3 -3
- package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +3 -3
- package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +3 -3
- package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +3 -3
- package/esm2022/lib/components/measures/elder-measures.module.mjs +8 -8
- package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +3 -3
- package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +3 -3
- package/esm2022/lib/components/measures/elder-unit.service.mjs +3 -3
- package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +3 -3
- package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +3 -3
- package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +3 -3
- package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +3 -3
- package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +3 -3
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +3 -3
- package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +4 -4
- package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +4 -4
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +3 -3
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +3 -3
- package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +3 -3
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +3 -3
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +4 -4
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +3 -3
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +3 -3
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +3 -3
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +3 -3
- package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +3 -3
- package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +3 -3
- package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +3 -3
- package/esm2022/lib/components/overlays/elder-overlay.component.mjs +3 -3
- package/esm2022/lib/components/overlays/elder-overlay.module.mjs +4 -4
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +4 -4
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +3 -3
- package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +3 -3
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +3 -3
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +3 -3
- package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +3 -3
- package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +3 -3
- package/esm2022/lib/components/panels/elder-panel.module.mjs +4 -4
- package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +3 -3
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +3 -3
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +9 -9
- package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +3 -3
- package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +4 -4
- package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +3 -3
- package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +3 -3
- package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +3 -3
- package/esm2022/lib/components/select/elder-select-base.mjs +3 -3
- package/esm2022/lib/components/select/elder-select-chip.directive.mjs +9 -9
- package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +3 -3
- package/esm2022/lib/components/select/elder-select-value.directive.mjs +3 -3
- package/esm2022/lib/components/select/elder-select.module.mjs +4 -4
- package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +3 -3
- package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +3 -3
- package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +3 -3
- package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +3 -3
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +3 -3
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +3 -3
- package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +3 -3
- package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +3 -3
- package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +3 -3
- package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +3 -3
- package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +3 -3
- package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +3 -3
- package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +3 -3
- package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +3 -3
- package/esm2022/lib/components/select/single/elder-select-form-field.mjs +3 -3
- package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +3 -3
- package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +4 -4
- package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +3 -3
- package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +3 -3
- package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +3 -3
- package/esm2022/lib/components/shell/elder-shell.module.mjs +4 -4
- package/esm2022/lib/components/shell/elder-shell.service.mjs +3 -3
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +3 -3
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +12 -12
- package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +3 -3
- package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +3 -3
- package/esm2022/lib/components/tabs/elder-tab.module.mjs +4 -4
- package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +3 -3
- package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +3 -3
- package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +3 -3
- package/esm2022/lib/components/theme/elder-theme.directive.mjs +3 -3
- package/esm2022/lib/components/theme/elder-theme.module.mjs +4 -4
- package/esm2022/lib/components/theme/elder-theme.service.mjs +3 -3
- package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +3 -3
- package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +3 -3
- package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +3 -3
- package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +3 -3
- package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +3 -3
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.mjs +7 -12
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.mjs +83 -81
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +82 -99
- package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.mjs +284 -0
- package/esm2022/lib/components/time/elder-interval-picker/model/interval-picker-model.mjs +445 -0
- package/esm2022/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.mjs +37 -0
- package/esm2022/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.mjs +25 -0
- package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +3 -3
- package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +3 -3
- package/esm2022/lib/components/time/elder-time.module.mjs +4 -4
- package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +3 -3
- package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +3 -3
- package/esm2022/lib/components/toasts/elder-toast.module.mjs +4 -4
- package/esm2022/lib/components/toasts/elder-toast.service.mjs +3 -3
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +3 -3
- package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +4 -4
- package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +3 -3
- package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +3 -3
- package/esm2022/lib/components/viewers/elder-viewers.module.mjs +4 -4
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +3 -3
- package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +3 -3
- package/esm2022/lib/features/kafent/access-token-provider.mjs +3 -3
- package/esm2022/lib/features/kafent/kafent-config.mjs +3 -3
- package/esm2022/lib/features/kafent/kafent-event-stream.mjs +3 -3
- package/esm2022/lib/features/kafent/kafent-event.service.mjs +3 -3
- package/esm2022/lib/features/kafent/kafent.module.mjs +4 -4
- package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +3 -3
- package/esm2022/lib/pipes/bytes.pipe.mjs +3 -3
- package/esm2022/lib/pipes/elder-pipes.module.mjs +10 -10
- package/esm2022/lib/pipes/elder-repeat.pipe.mjs +3 -3
- package/esm2022/lib/pipes/elder-round.pipe.mjs +3 -3
- package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +3 -3
- package/esm2022/lib/pipes/elder-truncate.pipe.mjs +3 -3
- package/esm2022/lib/pipes/iso-duration.pipe.mjs +3 -3
- package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +3 -3
- package/esm2022/lib/pipes/iso-interval.pipe.mjs +3 -3
- package/esm2022/lib/pipes/time-ago.pipe.mjs +3 -3
- package/esm2022/lib/pipes/time-duration.pipe.mjs +3 -3
- package/esm2022/lib/pipes/weight.pipe.mjs +3 -3
- package/fesm2022/elderbyte-ngx-starter.mjs +1643 -1575
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/time/temporal-util.d.ts +2 -0
- package/lib/components/time/elder-interval-picker/elder-interval-picker-binding.directive.d.ts +3 -6
- package/lib/components/time/elder-interval-picker/elder-interval-picker-toggle/elder-interval-picker-toggle.component.d.ts +25 -18
- package/lib/components/time/elder-interval-picker/elder-interval-picker.component.d.ts +19 -25
- package/lib/components/time/elder-interval-picker/model/interval-picker-model-editor.d.ts +77 -0
- package/lib/components/time/elder-interval-picker/model/interval-picker-model.d.ts +113 -0
- package/lib/components/time/elder-interval-picker/model/plain-date-interval-message-renderer.d.ts +7 -0
- package/lib/components/time/elder-interval-picker/model/plain-temporal-duration-message-renderer.d.ts +4 -0
- package/package.json +1 -1
- package/src/assets/i18n/fr.json +123 -0
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.service.mjs +0 -708
- package/lib/components/time/elder-interval-picker/elder-interval-picker.service.d.ts +0 -132
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import { computed, effect, EventEmitter, Injectable, signal, untracked } from '@angular/core';
|
|
2
|
+
import { DateRange } from '@angular/material/datepicker';
|
|
3
|
+
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
4
|
+
import { Temporal } from '@js-temporal/polyfill';
|
|
5
|
+
import { Interval } from '../../../../common/time/interval';
|
|
6
|
+
import { TemporalPlainDateInterval } from '../../../../common/time/temporal-plain-date-interval';
|
|
7
|
+
import { TemporalUtil } from '../../../../common/time/temporal-util';
|
|
8
|
+
import { TimeUtil } from '../../../../common/time/time-util';
|
|
9
|
+
import { IntervalPickerModelEditor } from './interval-picker-model-editor';
|
|
10
|
+
import { PlainDateIntervalMessageRenderer } from './plain-date-interval-message-renderer';
|
|
11
|
+
import { PlainTemporalDurationMessageRenderer } from './plain-temporal-duration-message-renderer';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
const defaultCalendarMode = 'days';
|
|
14
|
+
export class IntervalPickerModel {
|
|
15
|
+
/***************************************************************************
|
|
16
|
+
* *
|
|
17
|
+
* Constructor *
|
|
18
|
+
* *
|
|
19
|
+
**************************************************************************/
|
|
20
|
+
constructor() {
|
|
21
|
+
/***************************************************************************
|
|
22
|
+
* *
|
|
23
|
+
* Fields *
|
|
24
|
+
* *
|
|
25
|
+
**************************************************************************/
|
|
26
|
+
this.log = LoggerFactory.getLogger(this.constructor.name);
|
|
27
|
+
this._dateChangeEmitter = new EventEmitter();
|
|
28
|
+
this.calendarMode = signal(defaultCalendarMode);
|
|
29
|
+
this._startDate = signal(null);
|
|
30
|
+
this._endDate = signal(null);
|
|
31
|
+
this._startTime = signal(Temporal.PlainTime.from('00:00'));
|
|
32
|
+
this._endTime = signal(Temporal.PlainTime.from('00:00'));
|
|
33
|
+
// Anchor
|
|
34
|
+
this.baseReferenceDate = signal(Temporal.Now.plainDateISO());
|
|
35
|
+
this.baseReferenceTime = signal(Temporal.Now.plainTimeISO());
|
|
36
|
+
this.fixedAnchorDate = signal(null);
|
|
37
|
+
this.fixedAnchorTime = signal(Temporal.PlainTime.from('00:00'));
|
|
38
|
+
this.isEmittingOnChange = signal(true);
|
|
39
|
+
this.isUpdatingIntervalOnAnchorChange = signal(false);
|
|
40
|
+
this._isInitialized = false;
|
|
41
|
+
this.isFixedAnchorDateSet = computed(() => {
|
|
42
|
+
return !!this.fixedAnchorDate();
|
|
43
|
+
});
|
|
44
|
+
this.anchorDate = computed(() => {
|
|
45
|
+
if (this.fixedAnchorDate()) {
|
|
46
|
+
return this.fixedAnchorDate();
|
|
47
|
+
}
|
|
48
|
+
return this.baseReferenceDate();
|
|
49
|
+
});
|
|
50
|
+
this.anchorTime = computed(() => {
|
|
51
|
+
if (this.fixedAnchorDate() && this.fixedAnchorTime()) {
|
|
52
|
+
return this.fixedAnchorTime();
|
|
53
|
+
}
|
|
54
|
+
return this.baseReferenceTime();
|
|
55
|
+
});
|
|
56
|
+
this.anchorDateTime = computed(() => {
|
|
57
|
+
return this.anchorDate().toPlainDateTime(this.anchorTime());
|
|
58
|
+
});
|
|
59
|
+
this.dateRange = computed(() => {
|
|
60
|
+
if (!this.isStartAndEndDatesSet()) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return new TemporalPlainDateInterval(this.startDate(), this.endDate());
|
|
64
|
+
});
|
|
65
|
+
this.dateRangeForCalendar = computed(() => {
|
|
66
|
+
if (!this.isStartAndEndDatesSet()) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const startDate = TemporalUtil.getJSDateFromPlainDateTime(this.startDate());
|
|
70
|
+
const endDate = TemporalUtil.getJSDateFromPlainDateTime(this.endDate());
|
|
71
|
+
return new DateRange(startDate, endDate);
|
|
72
|
+
});
|
|
73
|
+
this.isStartAndEndDatesEmpty = computed(() => {
|
|
74
|
+
return !this.startDate() && !this.endDate();
|
|
75
|
+
});
|
|
76
|
+
this.isStartAndEndDatesSet = computed(() => {
|
|
77
|
+
return !!(this.startDate() && this.endDate());
|
|
78
|
+
});
|
|
79
|
+
this.isRangeNotSet = computed(() => {
|
|
80
|
+
return !this.isStartAndEndDatesSet();
|
|
81
|
+
});
|
|
82
|
+
this.startDateTime = computed(() => {
|
|
83
|
+
if (!this.startDate()) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
if (this.startTime()) {
|
|
87
|
+
return this.startDate().toPlainDateTime(this.startTime());
|
|
88
|
+
}
|
|
89
|
+
return this.startDate();
|
|
90
|
+
});
|
|
91
|
+
this.endDateTime = computed(() => {
|
|
92
|
+
if (!this.endDate()) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
if (this.endTime()) {
|
|
96
|
+
return this.endDate().toPlainDateTime(this.endTime());
|
|
97
|
+
}
|
|
98
|
+
return this.endDate();
|
|
99
|
+
});
|
|
100
|
+
this.startDateAsJSDate = computed(() => {
|
|
101
|
+
if (!this.startDate()) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return TemporalUtil.getJSDateFromPlainDateTime(this.startDate());
|
|
105
|
+
});
|
|
106
|
+
this.endDateAsJSDate = computed(() => {
|
|
107
|
+
if (!this.endDate()) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return TemporalUtil.getJSDateFromPlainDateTime(this.endDate());
|
|
111
|
+
});
|
|
112
|
+
this.startDateTimeAsJSDate = computed(() => {
|
|
113
|
+
if (!this.startDateTime()) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
return TemporalUtil.getJSDateFromPlainDateTime(this.startDateTime());
|
|
117
|
+
});
|
|
118
|
+
this.endDateTimeAsJSDate = computed(() => {
|
|
119
|
+
if (!this.endDateTime()) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return TemporalUtil.getJSDateFromPlainDateTime(this.endDateTime());
|
|
123
|
+
});
|
|
124
|
+
this.viewIntervalMessage = computed(() => PlainDateIntervalMessageRenderer.toMessage(this.calendarMode(), this.dateRange()));
|
|
125
|
+
this.deltaHumanReadable = computed(() => {
|
|
126
|
+
if (this.isStartAndEndDatesEmpty()) {
|
|
127
|
+
return '';
|
|
128
|
+
}
|
|
129
|
+
const duration = this.deltaAsTemporalDuration(this.startDateTime(), this.endDateTime());
|
|
130
|
+
return PlainTemporalDurationMessageRenderer.toMessage(duration);
|
|
131
|
+
});
|
|
132
|
+
this.getStartTimeString = computed(() => {
|
|
133
|
+
return TemporalUtil.getHtmlTimeStringFromPlainTime(this.startTime());
|
|
134
|
+
});
|
|
135
|
+
this.getEndTimeString = computed(() => {
|
|
136
|
+
return TemporalUtil.getHtmlTimeStringFromPlainTime(this.endTime());
|
|
137
|
+
});
|
|
138
|
+
this.getAnchorTimeString = computed(() => {
|
|
139
|
+
return TemporalUtil.getHtmlTimeStringFromPlainTime(this.fixedAnchorTime());
|
|
140
|
+
});
|
|
141
|
+
this.getAnchorPointAsLocaleDate = computed(() => {
|
|
142
|
+
const anchorPoint = this.fixedAnchorDate();
|
|
143
|
+
if (!anchorPoint) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const jsDate = TemporalUtil.getJSDateFromPlainDateTime(anchorPoint);
|
|
147
|
+
const localeDate = TimeUtil.dateToLocalDate(jsDate);
|
|
148
|
+
return localeDate;
|
|
149
|
+
});
|
|
150
|
+
this.startDateHtmlString = computed(() => {
|
|
151
|
+
return TemporalUtil.getHtmlDateString(this.startDateTime());
|
|
152
|
+
});
|
|
153
|
+
this.endDateHtmlString = computed(() => {
|
|
154
|
+
return TemporalUtil.getHtmlDateString(this.endDateTime());
|
|
155
|
+
});
|
|
156
|
+
this.isStartTimeSetAndNotMidnight = computed(() => {
|
|
157
|
+
if (!this.startTime()) {
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
return (this.startTime().hour !== 0 || this.startTime().minute !== 0 || this.startTime().second !== 0);
|
|
161
|
+
});
|
|
162
|
+
this.isEndTimeSetAndNotMidnight = computed(() => {
|
|
163
|
+
if (!this.endTime()) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
return this.endTime().hour !== 0 || this.endTime().minute !== 0 || this.endTime().second !== 0;
|
|
167
|
+
});
|
|
168
|
+
this.isFixedAnchorTimeSetAndNotMidnight = computed(() => {
|
|
169
|
+
if (!this.fixedAnchorTime()) {
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
return (this.fixedAnchorTime().hour !== 0 ||
|
|
173
|
+
this.fixedAnchorTime().minute !== 0 ||
|
|
174
|
+
this.fixedAnchorTime().second !== 0);
|
|
175
|
+
});
|
|
176
|
+
this.editor = new IntervalPickerModelEditor(this);
|
|
177
|
+
effect(() => {
|
|
178
|
+
const startDateTime = this.startDateTime();
|
|
179
|
+
const endDateTime = this.endDateTime();
|
|
180
|
+
if (this.isEmittingOnChange()) {
|
|
181
|
+
this.emitMainDates(); // TODO Only emit if changed
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/***************************************************************************
|
|
186
|
+
* *
|
|
187
|
+
* Properties *
|
|
188
|
+
* *
|
|
189
|
+
**************************************************************************/
|
|
190
|
+
startDate() {
|
|
191
|
+
return this._startDate();
|
|
192
|
+
}
|
|
193
|
+
endDate() {
|
|
194
|
+
return this._endDate();
|
|
195
|
+
}
|
|
196
|
+
startTime() {
|
|
197
|
+
return this._startTime();
|
|
198
|
+
}
|
|
199
|
+
endTime() {
|
|
200
|
+
return this._endTime();
|
|
201
|
+
}
|
|
202
|
+
/***************************************************************************
|
|
203
|
+
* *
|
|
204
|
+
* Public API *
|
|
205
|
+
* *
|
|
206
|
+
**************************************************************************/
|
|
207
|
+
setInitialized() {
|
|
208
|
+
this._isInitialized = true;
|
|
209
|
+
}
|
|
210
|
+
setStartDate(value) {
|
|
211
|
+
const current = untracked(this._startDate);
|
|
212
|
+
if (!TemporalUtil.equalPlainDates(current, value)) {
|
|
213
|
+
this._startDate.set(value);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
setEndDate(value) {
|
|
217
|
+
const current = untracked(this._endDate);
|
|
218
|
+
if (!TemporalUtil.equalPlainDates(current, value)) {
|
|
219
|
+
this._endDate.set(value);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
setStartTime(value) {
|
|
223
|
+
const current = untracked(this._startTime);
|
|
224
|
+
if (!TemporalUtil.equalPlainTimes(current, value)) {
|
|
225
|
+
this._startTime.set(value);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
setEndTime(value) {
|
|
229
|
+
const current = untracked(this._endTime);
|
|
230
|
+
if (!TemporalUtil.equalPlainTimes(current, value)) {
|
|
231
|
+
this._endTime.set(value);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
setStartDateFromHtmlString(htmlString) {
|
|
235
|
+
const date = TemporalUtil.getPlainDateFromHtmlDateString(htmlString);
|
|
236
|
+
if (!date) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
this.calendarMode.set('days');
|
|
240
|
+
this.setStartDate(date);
|
|
241
|
+
}
|
|
242
|
+
setEndDateFromHtmlString(htmlString) {
|
|
243
|
+
const date = TemporalUtil.getPlainDateFromHtmlDateString(htmlString);
|
|
244
|
+
if (!date) {
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
this.calendarMode.set('days');
|
|
248
|
+
this.setEndDate(date);
|
|
249
|
+
}
|
|
250
|
+
setInterval(value) {
|
|
251
|
+
this.setDateTimesFromElderInterval(value);
|
|
252
|
+
}
|
|
253
|
+
setAnchorDateTime(value) {
|
|
254
|
+
this.setAnchorDateTimeFromJsDate(value);
|
|
255
|
+
}
|
|
256
|
+
setupEventEmitter(e) {
|
|
257
|
+
this._dateChangeEmitter = e;
|
|
258
|
+
}
|
|
259
|
+
setStartTimeFromString(timeStr) {
|
|
260
|
+
const time = TemporalUtil.getPlainTimeFromHtmlTimeString(timeStr);
|
|
261
|
+
if (time) {
|
|
262
|
+
this.setStartTime(time);
|
|
263
|
+
}
|
|
264
|
+
if (!untracked(this._startDate)) {
|
|
265
|
+
this.setStartDate(Temporal.Now.plainDateISO());
|
|
266
|
+
}
|
|
267
|
+
this.calendarMode.set('days');
|
|
268
|
+
}
|
|
269
|
+
setEndTimeFromString(timeStr) {
|
|
270
|
+
const time = TemporalUtil.getPlainTimeFromHtmlTimeString(timeStr);
|
|
271
|
+
if (time) {
|
|
272
|
+
this.setEndTime(time);
|
|
273
|
+
}
|
|
274
|
+
if (!untracked(this._endDate)) {
|
|
275
|
+
this.setEndDate(Temporal.Now.plainDateISO());
|
|
276
|
+
}
|
|
277
|
+
this.calendarMode.set('days');
|
|
278
|
+
}
|
|
279
|
+
resetCalendarMode() {
|
|
280
|
+
this.calendarMode.set(defaultCalendarMode);
|
|
281
|
+
}
|
|
282
|
+
setAnchorDateTimeFromJsDate(dateTime) {
|
|
283
|
+
if (!dateTime) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const date = TemporalUtil.getPlainDateFromJSDate(dateTime);
|
|
287
|
+
const time = TemporalUtil.getPlainTimeFromJSDate(dateTime);
|
|
288
|
+
this.fixedAnchorDate.set(date);
|
|
289
|
+
this.fixedAnchorTime.set(time);
|
|
290
|
+
}
|
|
291
|
+
setFixedAnchorPointToStartDateTime() {
|
|
292
|
+
if (!this.startDate()) {
|
|
293
|
+
this.resetFixedAnchorPoint();
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
if (this.startDate()) {
|
|
297
|
+
this.fixedAnchorDate.set(this.startDate());
|
|
298
|
+
}
|
|
299
|
+
if (this.startTime()) {
|
|
300
|
+
this.fixedAnchorTime.set(this.startTime());
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
setFixedAnchorPointToEndDateTime() {
|
|
304
|
+
if (!this.endDate()) {
|
|
305
|
+
this.resetFixedAnchorPoint();
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
if (this.endDate()) {
|
|
309
|
+
this.fixedAnchorDate.set(this.endDate());
|
|
310
|
+
}
|
|
311
|
+
if (this.endTime()) {
|
|
312
|
+
this.fixedAnchorTime.set(this.endTime());
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
resetFixedAnchorPoint() {
|
|
316
|
+
this.fixedAnchorDate.set(null);
|
|
317
|
+
this.fixedAnchorTime.set(Temporal.PlainTime.from('00:00'));
|
|
318
|
+
if (this.isUpdatingIntervalOnAnchorChange() && this.isStartAndEndDatesSet()) {
|
|
319
|
+
this.shiftRangeEndToToday();
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
setAnchorDateFromForm(dateArg) {
|
|
323
|
+
if (!dateArg) {
|
|
324
|
+
this.fixedAnchorDate.set(null);
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const jsDate = TimeUtil.localDateToDate(dateArg);
|
|
328
|
+
const plainDate = TemporalUtil.getPlainDateFromJSDate(jsDate);
|
|
329
|
+
if (!plainDate) {
|
|
330
|
+
this.log.warn('Invalid date', plainDate);
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
333
|
+
this.fixedAnchorDate.set(plainDate);
|
|
334
|
+
if (!this.isUpdatingIntervalOnAnchorChange()) {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
if (this.fixedAnchorDate()) {
|
|
338
|
+
this.editor.shiftSelectionToAnchorDate();
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
clearStartDateTime() {
|
|
342
|
+
this.setStartDate(null);
|
|
343
|
+
this.setStartTime(null);
|
|
344
|
+
}
|
|
345
|
+
clearEndDateTime() {
|
|
346
|
+
this.setEndDate(null);
|
|
347
|
+
this.setEndTime(null);
|
|
348
|
+
}
|
|
349
|
+
clearStartTime() {
|
|
350
|
+
this.setStartTime(null);
|
|
351
|
+
}
|
|
352
|
+
clearEndTime() {
|
|
353
|
+
this.setEndTime(null);
|
|
354
|
+
}
|
|
355
|
+
resetFixedAnchorTime() {
|
|
356
|
+
this.fixedAnchorTime.set(Temporal.PlainTime.from('00:00'));
|
|
357
|
+
}
|
|
358
|
+
setAnchorTimeFromForm(htmlString) {
|
|
359
|
+
const time = TemporalUtil.getPlainTimeFromHtmlTimeString(htmlString);
|
|
360
|
+
if (!time) {
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
if (!this.fixedAnchorDate()) {
|
|
364
|
+
this.fixedAnchorDate.set(Temporal.Now.plainDateISO());
|
|
365
|
+
}
|
|
366
|
+
this.fixedAnchorTime.set(time);
|
|
367
|
+
if (!this.isUpdatingIntervalOnAnchorChange()) {
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
if (this.fixedAnchorTime()) {
|
|
371
|
+
this.editor.shiftSelectionToAnchorTime();
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
emitMainDates() {
|
|
375
|
+
if (!this._isInitialized) {
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
const interval = this.createElderInterval();
|
|
379
|
+
this._dateChangeEmitter.emit(interval);
|
|
380
|
+
}
|
|
381
|
+
/***************************************************************************
|
|
382
|
+
* *
|
|
383
|
+
* Private methods *
|
|
384
|
+
* *
|
|
385
|
+
**************************************************************************/
|
|
386
|
+
setDateTimesFromElderInterval(interval) {
|
|
387
|
+
if (!interval) {
|
|
388
|
+
this.setStartDate(null);
|
|
389
|
+
this.setEndDate(null);
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
if (interval.start) {
|
|
393
|
+
const startDateAsJSDate = TimeUtil.date(interval.start);
|
|
394
|
+
this.setStartDate(TemporalUtil.getPlainDateFromJSDate(startDateAsJSDate));
|
|
395
|
+
this.setStartTime(TemporalUtil.getPlainTimeFromJSDate(startDateAsJSDate));
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
this.setStartDate(null);
|
|
399
|
+
}
|
|
400
|
+
if (interval.end) {
|
|
401
|
+
const endDateAsJSDate = TimeUtil.date(interval.end);
|
|
402
|
+
this.setEndDate(TemporalUtil.getPlainDateFromJSDate(endDateAsJSDate));
|
|
403
|
+
this.setEndTime(TemporalUtil.getPlainTimeFromJSDate(endDateAsJSDate));
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
this.setEndDate(null);
|
|
407
|
+
}
|
|
408
|
+
this.log.debug('Applied interval to picker model:', interval);
|
|
409
|
+
}
|
|
410
|
+
createElderInterval() {
|
|
411
|
+
let start, end = null;
|
|
412
|
+
if (this.startDateTime()) {
|
|
413
|
+
const jsDate = TemporalUtil.getJSDateFromPlainDateTime(this.startDateTime());
|
|
414
|
+
start = TimeUtil.instant(jsDate);
|
|
415
|
+
}
|
|
416
|
+
if (this.endDateTime()) {
|
|
417
|
+
const jsDate = TemporalUtil.getJSDateFromPlainDateTime(this.endDateTime());
|
|
418
|
+
end = TimeUtil.instant(jsDate);
|
|
419
|
+
}
|
|
420
|
+
if (!start && !end) {
|
|
421
|
+
return new Interval(null, null);
|
|
422
|
+
}
|
|
423
|
+
return new Interval(start, end);
|
|
424
|
+
}
|
|
425
|
+
shiftRangeEndToToday() {
|
|
426
|
+
if (!this.isStartAndEndDatesSet()) {
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
const duration = this.startDate().until(this.endDate());
|
|
430
|
+
this.setEndDate(Temporal.Now.plainDateISO());
|
|
431
|
+
this.setStartDate(this.endDate().subtract(duration));
|
|
432
|
+
}
|
|
433
|
+
deltaAsTemporalDuration(startDateTime, endDateTime) {
|
|
434
|
+
if (!startDateTime || !endDateTime) {
|
|
435
|
+
return null;
|
|
436
|
+
}
|
|
437
|
+
return startDateTime.until(endDateTime);
|
|
438
|
+
}
|
|
439
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: IntervalPickerModel, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
440
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: IntervalPickerModel }); }
|
|
441
|
+
}
|
|
442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: IntervalPickerModel, decorators: [{
|
|
443
|
+
type: Injectable
|
|
444
|
+
}], ctorParameters: () => [] });
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJ2YWwtcGlja2VyLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLXBpY2tlci9tb2RlbC9pbnRlcnZhbC1waWNrZXItbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzdGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQTtBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQTtBQUNoRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQzVELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQ3pGLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDRDQUE0QyxDQUFBOztBQUdqRyxNQUFNLG1CQUFtQixHQUFpQixNQUFNLENBQUE7QUFHaEQsTUFBTSxPQUFPLG1CQUFtQjtJQXNNOUI7Ozs7Z0ZBSTRFO0lBRTVFO1FBM01BOzs7O29GQUk0RTtRQUUzRCxRQUFHLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJ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QyxDQUFBO0lBQ3RELENBQUM7SUFFTyx1QkFBdUIsQ0FDN0IsYUFBMEQsRUFDMUQsV0FBd0Q7UUFFeEQsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN6QyxDQUFDOzhHQTFnQlUsbUJBQW1CO2tIQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wdXRlZCwgZWZmZWN0LCBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInXG5pbXBvcnQgeyBMb2dnZXJGYWN0b3J5IH0gZnJvbSAnQGVsZGVyYnl0ZS90cy1sb2dnZXInXG5pbXBvcnQgeyBMb2NhbERhdGUgfSBmcm9tICdAanMtam9kYS9jb3JlJ1xuaW1wb3J0IHsgVGVtcG9yYWwgfSBmcm9tICdAanMtdGVtcG9yYWwvcG9seWZpbGwnXG5pbXBvcnQgeyBJbnRlcnZhbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi90aW1lL2ludGVydmFsJ1xuaW1wb3J0IHsgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi90aW1lL3RlbXBvcmFsLXBsYWluLWRhdGUtaW50ZXJ2YWwnXG5pbXBvcnQgeyBUZW1wb3JhbFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdGltZS90ZW1wb3JhbC11dGlsJ1xuaW1wb3J0IHsgVGltZVV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdGltZS90aW1lLXV0aWwnXG5pbXBvcnQgeyBJbnRlcnZhbFBpY2tlck1vZGVsRWRpdG9yIH0gZnJvbSAnLi9pbnRlcnZhbC1waWNrZXItbW9kZWwtZWRpdG9yJ1xuaW1wb3J0IHsgUGxhaW5EYXRlSW50ZXJ2YWxNZXNzYWdlUmVuZGVyZXIgfSBmcm9tICcuL3BsYWluLWRhdGUtaW50ZXJ2YWwtbWVzc2FnZS1yZW5kZXJlcidcbmltcG9ydCB7IFBsYWluVGVtcG9yYWxEdXJhdGlvbk1lc3NhZ2VSZW5kZXJlciB9IGZyb20gJy4vcGxhaW4tdGVtcG9yYWwtZHVyYXRpb24tbWVzc2FnZS1yZW5kZXJlcidcblxuZXhwb3J0IHR5cGUgQ2FsZW5kYXJNb2RlID0gJ2RheXMnIHwgJ3dlZWtzJyB8ICdtb250aHMnIHwgJ3F1YXJ0ZXJzJyB8ICd5ZWFycydcbmNvbnN0IGRlZmF1bHRDYWxlbmRhck1vZGU6IENhbGVuZGFyTW9kZSA9ICdkYXlzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSW50ZXJ2YWxQaWNrZXJNb2RlbCB7XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIHByaXZhdGUgX2RhdGVDaGFuZ2VFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxJbnRlcnZhbD4oKVxuXG4gIHJlYWRvbmx5IGNhbGVuZGFyTW9kZSA9IHNpZ25hbDxDYWxlbmRhck1vZGU+KGRlZmF1bHRDYWxlbmRhck1vZGUpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnREYXRlID0gc2lnbmFsPFRlbXBvcmFsLlBsYWluRGF0ZT4obnVsbClcbiAgcHJpdmF0ZSByZWFkb25seSBfZW5kRGF0ZSA9IHNpZ25hbDxUZW1wb3JhbC5QbGFpbkRhdGU+KG51bGwpXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXJ0VGltZSA9IHNpZ25hbChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcbiAgcHJpdmF0ZSByZWFkb25seSBfZW5kVGltZSA9IHNpZ25hbChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcblxuICAvLyBBbmNob3JcbiAgcmVhZG9ubHkgYmFzZVJlZmVyZW5jZURhdGUgPSBzaWduYWwoVGVtcG9yYWwuTm93LnBsYWluRGF0ZUlTTygpKVxuICByZWFkb25seSBiYXNlUmVmZXJlbmNlVGltZSA9IHNpZ25hbChUZW1wb3JhbC5Ob3cucGxhaW5UaW1lSVNPKCkpXG4gIHJlYWRvbmx5IGZpeGVkQW5jaG9yRGF0ZSA9IHNpZ25hbDxUZW1wb3JhbC5QbGFpbkRhdGU+KG51bGwpXG4gIHJlYWRvbmx5IGZpeGVkQW5jaG9yVGltZSA9IHNpZ25hbChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDA6MDAnKSlcblxuICByZWFkb25seSBpc0VtaXR0aW5nT25DaGFuZ2UgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSlcbiAgcmVhZG9ubHkgaXNVcGRhdGluZ0ludGVydmFsT25BbmNob3JDaGFuZ2UgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZCA9IGZhbHNlXG5cbiAgcmVhZG9ubHkgaXNGaXhlZEFuY2hvckRhdGVTZXQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuICEhdGhpcy5maXhlZEFuY2hvckRhdGUoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGFuY2hvckRhdGUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpbkRhdGU+KCgpID0+IHtcbiAgICBpZiAodGhpcy5maXhlZEFuY2hvckRhdGUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZml4ZWRBbmNob3JEYXRlKClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYmFzZVJlZmVyZW5jZURhdGUoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGFuY2hvclRpbWUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpblRpbWU+KCgpID0+IHtcbiAgICBpZiAodGhpcy5maXhlZEFuY2hvckRhdGUoKSAmJiB0aGlzLmZpeGVkQW5jaG9yVGltZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5maXhlZEFuY2hvclRpbWUoKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iYXNlUmVmZXJlbmNlVGltZSgpXG4gIH0pXG5cbiAgcmVhZG9ubHkgYW5jaG9yRGF0ZVRpbWUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpbkRhdGVUaW1lPigoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYW5jaG9yRGF0ZSgpLnRvUGxhaW5EYXRlVGltZSh0aGlzLmFuY2hvclRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBkYXRlUmFuZ2UgPSBjb21wdXRlZDxUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKHRoaXMuc3RhcnREYXRlKCksIHRoaXMuZW5kRGF0ZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGRhdGVSYW5nZUZvckNhbGVuZGFyID0gY29tcHV0ZWQ8RGF0ZVJhbmdlPERhdGU+IHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgY29uc3Qgc3RhcnREYXRlID0gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuc3RhcnREYXRlKCkpXG4gICAgY29uc3QgZW5kRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLmVuZERhdGUoKSlcbiAgICByZXR1cm4gbmV3IERhdGVSYW5nZShzdGFydERhdGUsIGVuZERhdGUpXG4gIH0pXG5cbiAgcmVhZG9ubHkgaXNTdGFydEFuZEVuZERhdGVzRW1wdHkgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgcmV0dXJuICF0aGlzLnN0YXJ0RGF0ZSgpICYmICF0aGlzLmVuZERhdGUoKVxuICB9KVxuXG4gIHJlYWRvbmx5IGlzU3RhcnRBbmRFbmREYXRlc1NldCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICByZXR1cm4gISEodGhpcy5zdGFydERhdGUoKSAmJiB0aGlzLmVuZERhdGUoKSlcbiAgfSlcblxuICByZWFkb25seSBpc1JhbmdlTm90U2V0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIHJldHVybiAhdGhpcy5pc1N0YXJ0QW5kRW5kRGF0ZXNTZXQoKVxuICB9KVxuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZVRpbWUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpbkRhdGUgfCBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBpZiAodGhpcy5zdGFydFRpbWUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhcnREYXRlKCkudG9QbGFpbkRhdGVUaW1lKHRoaXMuc3RhcnRUaW1lKCkpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0YXJ0RGF0ZSgpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZW5kRGF0ZVRpbWUgPSBjb21wdXRlZDxUZW1wb3JhbC5QbGFpbkRhdGUgfCBUZW1wb3JhbC5QbGFpbkRhdGVUaW1lPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmVuZERhdGUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kVGltZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmREYXRlKCkudG9QbGFpbkRhdGVUaW1lKHRoaXMuZW5kVGltZSgpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lbmREYXRlKClcbiAgfSlcblxuICByZWFkb25seSBzdGFydERhdGVBc0pTRGF0ZSA9IGNvbXB1dGVkPERhdGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuc3RhcnREYXRlKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgZW5kRGF0ZUFzSlNEYXRlID0gY29tcHV0ZWQ8RGF0ZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuZW5kRGF0ZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZVRpbWVBc0pTRGF0ZSA9IGNvbXB1dGVkPERhdGUgfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnN0YXJ0RGF0ZVRpbWUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLnN0YXJ0RGF0ZVRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBlbmREYXRlVGltZUFzSlNEYXRlID0gY29tcHV0ZWQ8RGF0ZSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZW5kRGF0ZVRpbWUoKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZSh0aGlzLmVuZERhdGVUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgdmlld0ludGVydmFsTWVzc2FnZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT5cbiAgICBQbGFpbkRhdGVJbnRlcnZhbE1lc3NhZ2VSZW5kZXJlci50b01lc3NhZ2UodGhpcy5jYWxlbmRhck1vZGUoKSwgdGhpcy5kYXRlUmFuZ2UoKSlcbiAgKVxuXG4gIHJlYWRvbmx5IGRlbHRhSHVtYW5SZWFkYWJsZSA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmlzU3RhcnRBbmRFbmREYXRlc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuZGVsdGFBc1RlbXBvcmFsRHVyYXRpb24odGhpcy5zdGFydERhdGVUaW1lKCksIHRoaXMuZW5kRGF0ZVRpbWUoKSlcbiAgICByZXR1cm4gUGxhaW5UZW1wb3JhbER1cmF0aW9uTWVzc2FnZVJlbmRlcmVyLnRvTWVzc2FnZShkdXJhdGlvbilcbiAgfSlcblxuICByZWFkb25seSBnZXRTdGFydFRpbWVTdHJpbmcgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEh0bWxUaW1lU3RyaW5nRnJvbVBsYWluVGltZSh0aGlzLnN0YXJ0VGltZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGdldEVuZFRpbWVTdHJpbmcgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEh0bWxUaW1lU3RyaW5nRnJvbVBsYWluVGltZSh0aGlzLmVuZFRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBnZXRBbmNob3JUaW1lU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sVGltZVN0cmluZ0Zyb21QbGFpblRpbWUodGhpcy5maXhlZEFuY2hvclRpbWUoKSlcbiAgfSlcblxuICByZWFkb25seSBnZXRBbmNob3JQb2ludEFzTG9jYWxlRGF0ZSA9IGNvbXB1dGVkPExvY2FsRGF0ZT4oKCkgPT4ge1xuICAgIGNvbnN0IGFuY2hvclBvaW50ID0gdGhpcy5maXhlZEFuY2hvckRhdGUoKVxuICAgIGlmICghYW5jaG9yUG9pbnQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIGNvbnN0IGpzRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRKU0RhdGVGcm9tUGxhaW5EYXRlVGltZShhbmNob3JQb2ludClcbiAgICBjb25zdCBsb2NhbGVEYXRlID0gVGltZVV0aWwuZGF0ZVRvTG9jYWxEYXRlKGpzRGF0ZSlcbiAgICByZXR1cm4gbG9jYWxlRGF0ZVxuICB9KVxuXG4gIHJlYWRvbmx5IHN0YXJ0RGF0ZUh0bWxTdHJpbmcgPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gVGVtcG9yYWxVdGlsLmdldEh0bWxEYXRlU3RyaW5nKHRoaXMuc3RhcnREYXRlVGltZSgpKVxuICB9KVxuXG4gIHJlYWRvbmx5IGVuZERhdGVIdG1sU3RyaW5nID0gY29tcHV0ZWQ8c3RyaW5nPigoKSA9PiB7XG4gICAgcmV0dXJuIFRlbXBvcmFsVXRpbC5nZXRIdG1sRGF0ZVN0cmluZyh0aGlzLmVuZERhdGVUaW1lKCkpXG4gIH0pXG5cbiAgcmVhZG9ubHkgaXNTdGFydFRpbWVTZXRBbmROb3RNaWRuaWdodCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuc3RhcnRUaW1lKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5zdGFydFRpbWUoKS5ob3VyICE9PSAwIHx8IHRoaXMuc3RhcnRUaW1lKCkubWludXRlICE9PSAwIHx8IHRoaXMuc3RhcnRUaW1lKCkuc2Vjb25kICE9PSAwXG4gICAgKVxuICB9KVxuXG4gIHJlYWRvbmx5IGlzRW5kVGltZVNldEFuZE5vdE1pZG5pZ2h0ID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgIGlmICghdGhpcy5lbmRUaW1lKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5lbmRUaW1lKCkuaG91ciAhPT0gMCB8fCB0aGlzLmVuZFRpbWUoKS5taW51dGUgIT09IDAgfHwgdGhpcy5lbmRUaW1lKCkuc2Vjb25kICE9PSAwXG4gIH0pXG5cbiAgcmVhZG9ubHkgaXNGaXhlZEFuY2hvclRpbWVTZXRBbmROb3RNaWRuaWdodCA9IGNvbXB1dGVkPGJvb2xlYW4+KCgpID0+IHtcbiAgICBpZiAoIXRoaXMuZml4ZWRBbmNob3JUaW1lKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5maXhlZEFuY2hvclRpbWUoKS5ob3VyICE9PSAwIHx8XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yVGltZSgpLm1pbnV0ZSAhPT0gMCB8fFxuICAgICAgdGhpcy5maXhlZEFuY2hvclRpbWUoKS5zZWNvbmQgIT09IDBcbiAgICApXG4gIH0pXG5cbiAgcHVibGljIHJlYWRvbmx5IGVkaXRvcjogSW50ZXJ2YWxQaWNrZXJNb2RlbEVkaXRvclxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBDb25zdHJ1Y3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZWRpdG9yID0gbmV3IEludGVydmFsUGlja2VyTW9kZWxFZGl0b3IodGhpcylcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzdGFydERhdGVUaW1lID0gdGhpcy5zdGFydERhdGVUaW1lKClcbiAgICAgIGNvbnN0IGVuZERhdGVUaW1lID0gdGhpcy5lbmREYXRlVGltZSgpXG5cbiAgICAgIGlmICh0aGlzLmlzRW1pdHRpbmdPbkNoYW5nZSgpKSB7XG4gICAgICAgIHRoaXMuZW1pdE1haW5EYXRlcygpIC8vIFRPRE8gT25seSBlbWl0IGlmIGNoYW5nZWRcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByb3BlcnRpZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIHN0YXJ0RGF0ZSgpOiBUZW1wb3JhbC5QbGFpbkRhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGFydERhdGUoKVxuICB9XG5cbiAgcHVibGljIGVuZERhdGUoKTogVGVtcG9yYWwuUGxhaW5EYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kRGF0ZSgpXG4gIH1cblxuICBwdWJsaWMgc3RhcnRUaW1lKCk6IFRlbXBvcmFsLlBsYWluVGltZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZSgpXG4gIH1cblxuICBwdWJsaWMgZW5kVGltZSgpOiBUZW1wb3JhbC5QbGFpblRpbWUge1xuICAgIHJldHVybiB0aGlzLl9lbmRUaW1lKClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQdWJsaWMgQVBJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBzZXRJbml0aWFsaXplZCgpOiB2b2lkIHtcbiAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZVxuICB9XG5cbiAgcHVibGljIHNldFN0YXJ0RGF0ZSh2YWx1ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHVudHJhY2tlZCh0aGlzLl9zdGFydERhdGUpXG4gICAgaWYgKCFUZW1wb3JhbFV0aWwuZXF1YWxQbGFpbkRhdGVzKGN1cnJlbnQsIHZhbHVlKSkge1xuICAgICAgdGhpcy5fc3RhcnREYXRlLnNldCh2YWx1ZSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0RW5kRGF0ZSh2YWx1ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudCA9IHVudHJhY2tlZCh0aGlzLl9lbmREYXRlKVxuICAgIGlmICghVGVtcG9yYWxVdGlsLmVxdWFsUGxhaW5EYXRlcyhjdXJyZW50LCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX2VuZERhdGUuc2V0KHZhbHVlKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRTdGFydFRpbWUodmFsdWU6IFRlbXBvcmFsLlBsYWluVGltZSk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB1bnRyYWNrZWQodGhpcy5fc3RhcnRUaW1lKVxuICAgIGlmICghVGVtcG9yYWxVdGlsLmVxdWFsUGxhaW5UaW1lcyhjdXJyZW50LCB2YWx1ZSkpIHtcbiAgICAgIHRoaXMuX3N0YXJ0VGltZS5zZXQodmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEVuZFRpbWUodmFsdWU6IFRlbXBvcmFsLlBsYWluVGltZSk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB1bnRyYWNrZWQodGhpcy5fZW5kVGltZSlcbiAgICBpZiAoIVRlbXBvcmFsVXRpbC5lcXVhbFBsYWluVGltZXMoY3VycmVudCwgdmFsdWUpKSB7XG4gICAgICB0aGlzLl9lbmRUaW1lLnNldCh2YWx1ZSlcbiAgICB9XG4gIH1cblxuICBzZXRTdGFydERhdGVGcm9tSHRtbFN0cmluZyhodG1sU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21IdG1sRGF0ZVN0cmluZyhodG1sU3RyaW5nKVxuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5zZXRTdGFydERhdGUoZGF0ZSlcbiAgfVxuXG4gIHNldEVuZERhdGVGcm9tSHRtbFN0cmluZyhodG1sU3RyaW5nOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRlID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21IdG1sRGF0ZVN0cmluZyhodG1sU3RyaW5nKVxuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gICAgdGhpcy5zZXRFbmREYXRlKGRhdGUpXG4gIH1cblxuICBwdWJsaWMgc2V0SW50ZXJ2YWwodmFsdWU6IEludGVydmFsKTogdm9pZCB7XG4gICAgdGhpcy5zZXREYXRlVGltZXNGcm9tRWxkZXJJbnRlcnZhbCh2YWx1ZSlcbiAgfVxuXG4gIHB1YmxpYyBzZXRBbmNob3JEYXRlVGltZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuc2V0QW5jaG9yRGF0ZVRpbWVGcm9tSnNEYXRlKHZhbHVlKVxuICB9XG5cbiAgc2V0dXBFdmVudEVtaXR0ZXIoZTogRXZlbnRFbWl0dGVyPEludGVydmFsPik6IHZvaWQge1xuICAgIHRoaXMuX2RhdGVDaGFuZ2VFbWl0dGVyID0gZVxuICB9XG5cbiAgc2V0U3RhcnRUaW1lRnJvbVN0cmluZyh0aW1lU3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0aW1lID0gVGVtcG9yYWxVdGlsLmdldFBsYWluVGltZUZyb21IdG1sVGltZVN0cmluZyh0aW1lU3RyKVxuICAgIGlmICh0aW1lKSB7XG4gICAgICB0aGlzLnNldFN0YXJ0VGltZSh0aW1lKVxuICAgIH1cbiAgICBpZiAoIXVudHJhY2tlZCh0aGlzLl9zdGFydERhdGUpKSB7XG4gICAgICB0aGlzLnNldFN0YXJ0RGF0ZShUZW1wb3JhbC5Ob3cucGxhaW5EYXRlSVNPKCkpXG4gICAgfVxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gIH1cblxuICBzZXRFbmRUaW1lRnJvbVN0cmluZyh0aW1lU3RyOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0aW1lID0gVGVtcG9yYWxVdGlsLmdldFBsYWluVGltZUZyb21IdG1sVGltZVN0cmluZyh0aW1lU3RyKVxuXG4gICAgaWYgKHRpbWUpIHtcbiAgICAgIHRoaXMuc2V0RW5kVGltZSh0aW1lKVxuICAgIH1cblxuICAgIGlmICghdW50cmFja2VkKHRoaXMuX2VuZERhdGUpKSB7XG4gICAgICB0aGlzLnNldEVuZERhdGUoVGVtcG9yYWwuTm93LnBsYWluRGF0ZUlTTygpKVxuICAgIH1cblxuICAgIHRoaXMuY2FsZW5kYXJNb2RlLnNldCgnZGF5cycpXG4gIH1cblxuICByZXNldENhbGVuZGFyTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGVuZGFyTW9kZS5zZXQoZGVmYXVsdENhbGVuZGFyTW9kZSlcbiAgfVxuXG4gIHNldEFuY2hvckRhdGVUaW1lRnJvbUpzRGF0ZShkYXRlVGltZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICghZGF0ZVRpbWUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBkYXRlID0gVGVtcG9yYWxVdGlsLmdldFBsYWluRGF0ZUZyb21KU0RhdGUoZGF0ZVRpbWUpXG4gICAgY29uc3QgdGltZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSlNEYXRlKGRhdGVUaW1lKVxuICAgIHRoaXMuZml4ZWRBbmNob3JEYXRlLnNldChkYXRlKVxuICAgIHRoaXMuZml4ZWRBbmNob3JUaW1lLnNldCh0aW1lKVxuICB9XG5cbiAgc2V0Rml4ZWRBbmNob3JQb2ludFRvU3RhcnREYXRlVGltZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RhcnREYXRlKCkpIHtcbiAgICAgIHRoaXMucmVzZXRGaXhlZEFuY2hvclBvaW50KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAodGhpcy5zdGFydERhdGUoKSkge1xuICAgICAgdGhpcy5maXhlZEFuY2hvckRhdGUuc2V0KHRoaXMuc3RhcnREYXRlKCkpXG4gICAgfVxuICAgIGlmICh0aGlzLnN0YXJ0VGltZSgpKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yVGltZS5zZXQodGhpcy5zdGFydFRpbWUoKSlcbiAgICB9XG4gIH1cblxuICBzZXRGaXhlZEFuY2hvclBvaW50VG9FbmREYXRlVGltZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICB0aGlzLnJlc2V0Rml4ZWRBbmNob3JQb2ludCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kRGF0ZSgpKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQodGhpcy5lbmREYXRlKCkpXG4gICAgfVxuICAgIGlmICh0aGlzLmVuZFRpbWUoKSkge1xuICAgICAgdGhpcy5maXhlZEFuY2hvclRpbWUuc2V0KHRoaXMuZW5kVGltZSgpKVxuICAgIH1cbiAgfVxuXG4gIHJlc2V0Rml4ZWRBbmNob3JQb2ludCgpOiB2b2lkIHtcbiAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQobnVsbClcbiAgICB0aGlzLmZpeGVkQW5jaG9yVGltZS5zZXQoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAwOjAwJykpXG4gICAgaWYgKHRoaXMuaXNVcGRhdGluZ0ludGVydmFsT25BbmNob3JDaGFuZ2UoKSAmJiB0aGlzLmlzU3RhcnRBbmRFbmREYXRlc1NldCgpKSB7XG4gICAgICB0aGlzLnNoaWZ0UmFuZ2VFbmRUb1RvZGF5KClcbiAgICB9XG4gIH1cblxuICBzZXRBbmNob3JEYXRlRnJvbUZvcm0oZGF0ZUFyZzogTG9jYWxEYXRlKTogdm9pZCB7XG4gICAgaWYgKCFkYXRlQXJnKSB7XG4gICAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQobnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGpzRGF0ZSA9IFRpbWVVdGlsLmxvY2FsRGF0ZVRvRGF0ZShkYXRlQXJnKVxuICAgIGNvbnN0IHBsYWluRGF0ZSA9IFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVGcm9tSlNEYXRlKGpzRGF0ZSlcblxuICAgIGlmICghcGxhaW5EYXRlKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKCdJbnZhbGlkIGRhdGUnLCBwbGFpbkRhdGUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmZpeGVkQW5jaG9yRGF0ZS5zZXQocGxhaW5EYXRlKVxuXG4gICAgaWYgKCF0aGlzLmlzVXBkYXRpbmdJbnRlcnZhbE9uQW5jaG9yQ2hhbmdlKCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICh0aGlzLmZpeGVkQW5jaG9yRGF0ZSgpKSB7XG4gICAgICB0aGlzLmVkaXRvci5zaGlmdFNlbGVjdGlvblRvQW5jaG9yRGF0ZSgpXG4gICAgfVxuICB9XG5cbiAgY2xlYXJTdGFydERhdGVUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3RhcnREYXRlKG51bGwpXG4gICAgdGhpcy5zZXRTdGFydFRpbWUobnVsbClcbiAgfVxuXG4gIGNsZWFyRW5kRGF0ZVRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRFbmREYXRlKG51bGwpXG4gICAgdGhpcy5zZXRFbmRUaW1lKG51bGwpXG4gIH1cblxuICBjbGVhclN0YXJ0VGltZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXJ0VGltZShudWxsKVxuICB9XG5cbiAgY2xlYXJFbmRUaW1lKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RW5kVGltZShudWxsKVxuICB9XG5cbiAgcmVzZXRGaXhlZEFuY2hvclRpbWUoKTogdm9pZCB7XG4gICAgdGhpcy5maXhlZEFuY2hvclRpbWUuc2V0KFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMDowMCcpKVxuICB9XG5cbiAgc2V0QW5jaG9yVGltZUZyb21Gb3JtKGh0bWxTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRpbWUgPSBUZW1wb3JhbFV0aWwuZ2V0UGxhaW5UaW1lRnJvbUh0bWxUaW1lU3RyaW5nKGh0bWxTdHJpbmcpXG4gICAgaWYgKCF0aW1lKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZml4ZWRBbmNob3JEYXRlKCkpIHtcbiAgICAgIHRoaXMuZml4ZWRBbmNob3JEYXRlLnNldChUZW1wb3JhbC5Ob3cucGxhaW5EYXRlSVNPKCkpXG4gICAgfVxuXG4gICAgdGhpcy5maXhlZEFuY2hvclRpbWUuc2V0KHRpbWUpXG5cbiAgICBpZiAoIXRoaXMuaXNVcGRhdGluZ0ludGVydmFsT25BbmNob3JDaGFuZ2UoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZml4ZWRBbmNob3JUaW1lKCkpIHtcbiAgICAgIHRoaXMuZWRpdG9yLnNoaWZ0U2VsZWN0aW9uVG9BbmNob3JUaW1lKClcbiAgICB9XG4gIH1cblxuICBlbWl0TWFpbkRhdGVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNJbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGludGVydmFsID0gdGhpcy5jcmVhdGVFbGRlckludGVydmFsKClcbiAgICB0aGlzLl9kYXRlQ2hhbmdlRW1pdHRlci5lbWl0KGludGVydmFsKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFByaXZhdGUgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJpdmF0ZSBzZXREYXRlVGltZXNGcm9tRWxkZXJJbnRlcnZhbChpbnRlcnZhbDogSW50ZXJ2YWwpOiB2b2lkIHtcbiAgICBpZiAoIWludGVydmFsKSB7XG4gICAgICB0aGlzLnNldFN0YXJ0RGF0ZShudWxsKVxuICAgICAgdGhpcy5zZXRFbmREYXRlKG51bGwpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoaW50ZXJ2YWwuc3RhcnQpIHtcbiAgICAgIGNvbnN0IHN0YXJ0RGF0ZUFzSlNEYXRlID0gVGltZVV0aWwuZGF0ZShpbnRlcnZhbC5zdGFydClcbiAgICAgIHRoaXMuc2V0U3RhcnREYXRlKFRlbXBvcmFsVXRpbC5nZXRQbGFpbkRhdGVGcm9tSlNEYXRlKHN0YXJ0RGF0ZUFzSlNEYXRlKSlcbiAgICAgIHRoaXMuc2V0U3RhcnRUaW1lKFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSlNEYXRlKHN0YXJ0RGF0ZUFzSlNEYXRlKSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGFydERhdGUobnVsbClcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJ2YWwuZW5kKSB7XG4gICAgICBjb25zdCBlbmREYXRlQXNKU0RhdGUgPSBUaW1lVXRpbC5kYXRlKGludGVydmFsLmVuZClcbiAgICAgIHRoaXMuc2V0RW5kRGF0ZShUZW1wb3JhbFV0aWwuZ2V0UGxhaW5EYXRlRnJvbUpTRGF0ZShlbmREYXRlQXNKU0RhdGUpKVxuICAgICAgdGhpcy5zZXRFbmRUaW1lKFRlbXBvcmFsVXRpbC5nZXRQbGFpblRpbWVGcm9tSlNEYXRlKGVuZERhdGVBc0pTRGF0ZSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RW5kRGF0ZShudWxsKVxuICAgIH1cblxuICAgIHRoaXMubG9nLmRlYnVnKCdBcHBsaWVkIGludGVydmFsIHRvIHBpY2tlciBtb2RlbDonLCBpbnRlcnZhbClcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRWxkZXJJbnRlcnZhbCgpOiBJbnRlcnZhbCB7XG4gICAgbGV0IHN0YXJ0LFxuICAgICAgZW5kID0gbnVsbFxuICAgIGlmICh0aGlzLnN0YXJ0RGF0ZVRpbWUoKSkge1xuICAgICAgY29uc3QganNEYXRlID0gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuc3RhcnREYXRlVGltZSgpKVxuICAgICAgc3RhcnQgPSBUaW1lVXRpbC5pbnN0YW50KGpzRGF0ZSlcbiAgICB9XG4gICAgaWYgKHRoaXMuZW5kRGF0ZVRpbWUoKSkge1xuICAgICAgY29uc3QganNEYXRlID0gVGVtcG9yYWxVdGlsLmdldEpTRGF0ZUZyb21QbGFpbkRhdGVUaW1lKHRoaXMuZW5kRGF0ZVRpbWUoKSlcbiAgICAgIGVuZCA9IFRpbWVVdGlsLmluc3RhbnQoanNEYXRlKVxuICAgIH1cbiAgICBpZiAoIXN0YXJ0ICYmICFlbmQpIHtcbiAgICAgIHJldHVybiBuZXcgSW50ZXJ2YWwobnVsbCwgbnVsbClcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbnRlcnZhbChzdGFydCwgZW5kKVxuICB9XG5cbiAgcHJpdmF0ZSBzaGlmdFJhbmdlRW5kVG9Ub2RheSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNTdGFydEFuZEVuZERhdGVzU2V0KCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuc3RhcnREYXRlKCkudW50aWwodGhpcy5lbmREYXRlKCkpXG4gICAgdGhpcy5zZXRFbmREYXRlKFRlbXBvcmFsLk5vdy5wbGFpbkRhdGVJU08oKSlcbiAgICB0aGlzLnNldFN0YXJ0RGF0ZSh0aGlzLmVuZERhdGUoKS5zdWJ0cmFjdChkdXJhdGlvbikpXG4gIH1cblxuICBwcml2YXRlIGRlbHRhQXNUZW1wb3JhbER1cmF0aW9uKFxuICAgIHN0YXJ0RGF0ZVRpbWU6IFRlbXBvcmFsLlBsYWluRGF0ZSB8IFRlbXBvcmFsLlBsYWluRGF0ZVRpbWUsXG4gICAgZW5kRGF0ZVRpbWU6IFRlbXBvcmFsLlBsYWluRGF0ZSB8IFRlbXBvcmFsLlBsYWluRGF0ZVRpbWVcbiAgKTogVGVtcG9yYWwuRHVyYXRpb24ge1xuICAgIGlmICghc3RhcnREYXRlVGltZSB8fCAhZW5kRGF0ZVRpbWUpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBzdGFydERhdGVUaW1lLnVudGlsKGVuZERhdGVUaW1lKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { TemporalUtil } from '../../../../common/time/temporal-util';
|
|
2
|
+
export class PlainDateIntervalMessageRenderer {
|
|
3
|
+
static toMessage(mode, dateInterval) {
|
|
4
|
+
if (!dateInterval) {
|
|
5
|
+
return '-';
|
|
6
|
+
}
|
|
7
|
+
const startDate = dateInterval.start;
|
|
8
|
+
const endDate = dateInterval.end;
|
|
9
|
+
switch (mode) {
|
|
10
|
+
case 'years':
|
|
11
|
+
return `1y (${startDate.year})`;
|
|
12
|
+
case 'quarters':
|
|
13
|
+
return `Q${TemporalUtil.getQuarterForDate(startDate)}, ${startDate.year}`;
|
|
14
|
+
case 'months':
|
|
15
|
+
return `1m (${startDate.monthCode}, ${startDate.year})`;
|
|
16
|
+
case 'weeks':
|
|
17
|
+
return `1w (CW ${this.calendarWeek(startDate)}, ${endDate.year})`;
|
|
18
|
+
case 'days':
|
|
19
|
+
return `${this.dateRangeInDays(dateInterval)}d`;
|
|
20
|
+
default:
|
|
21
|
+
return '?';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
static calendarWeek(date) {
|
|
25
|
+
if (!date) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return date.weekOfYear;
|
|
29
|
+
}
|
|
30
|
+
static dateRangeInDays(dateInterval) {
|
|
31
|
+
if (!dateInterval) {
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
return dateInterval.getDurationInDays();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaW4tZGF0ZS1pbnRlcnZhbC1tZXNzYWdlLXJlbmRlcmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZWxkZXJieXRlL25neC1zdGFydGVyL3NyYy9saWIvY29tcG9uZW50cy90aW1lL2VsZGVyLWludGVydmFsLXBpY2tlci9tb2RlbC9wbGFpbi1kYXRlLWludGVydmFsLW1lc3NhZ2UtcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBR3BFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFDcEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFrQixFQUFFLFlBQXVDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFBO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUE7UUFFaEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssT0FBTztnQkFDVixPQUFPLE9BQU8sU0FBUyxDQUFDLElBQUksR0FBRyxDQUFBO1lBQ2pDLEtBQUssVUFBVTtnQkFDYixPQUFPLElBQUksWUFBWSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUMzRSxLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxPQUFPLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksR0FBRyxDQUFBO1lBQ3pELEtBQUssT0FBTztnQkFDVixPQUFPLFVBQVUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUE7WUFDbkUsS0FBSyxNQUFNO2dCQUNULE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUE7WUFDakQ7Z0JBQ0UsT0FBTyxHQUFHLENBQUE7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBd0I7UUFDbEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFTyxNQUFNLENBQUMsZUFBZSxDQUFDLFlBQXVDO1FBQ3BFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsQ0FBQTtRQUNWLENBQUM7UUFDRCxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBvcmFsIH0gZnJvbSAnQGpzLXRlbXBvcmFsL3BvbHlmaWxsJ1xuaW1wb3J0IHsgQ2FsZW5kYXJNb2RlIH0gZnJvbSAnLi9pbnRlcnZhbC1waWNrZXItbW9kZWwnXG5pbXBvcnQgeyBUZW1wb3JhbFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24vdGltZS90ZW1wb3JhbC11dGlsJ1xuaW1wb3J0IHsgVGVtcG9yYWxQbGFpbkRhdGVJbnRlcnZhbCB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi90aW1lL3RlbXBvcmFsLXBsYWluLWRhdGUtaW50ZXJ2YWwnXG5cbmV4cG9ydCBjbGFzcyBQbGFpbkRhdGVJbnRlcnZhbE1lc3NhZ2VSZW5kZXJlciB7XG4gIHB1YmxpYyBzdGF0aWMgdG9NZXNzYWdlKG1vZGU6IENhbGVuZGFyTW9kZSwgZGF0ZUludGVydmFsOiBUZW1wb3JhbFBsYWluRGF0ZUludGVydmFsKTogc3RyaW5nIHtcbiAgICBpZiAoIWRhdGVJbnRlcnZhbCkge1xuICAgICAgcmV0dXJuICctJ1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IGRhdGVJbnRlcnZhbC5zdGFydFxuICAgIGNvbnN0IGVuZERhdGUgPSBkYXRlSW50ZXJ2YWwuZW5kXG5cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgIGNhc2UgJ3llYXJzJzpcbiAgICAgICAgcmV0dXJuIGAxeSAoJHtzdGFydERhdGUueWVhcn0pYFxuICAgICAgY2FzZSAncXVhcnRlcnMnOlxuICAgICAgICByZXR1cm4gYFEke1RlbXBvcmFsVXRpbC5nZXRRdWFydGVyRm9yRGF0ZShzdGFydERhdGUpfSwgJHtzdGFydERhdGUueWVhcn1gXG4gICAgICBjYXNlICdtb250aHMnOlxuICAgICAgICByZXR1cm4gYDFtICgke3N0YXJ0RGF0ZS5tb250aENvZGV9LCAke3N0YXJ0RGF0ZS55ZWFyfSlgXG4gICAgICBjYXNlICd3ZWVrcyc6XG4gICAgICAgIHJldHVybiBgMXcgKENXICR7dGhpcy5jYWxlbmRhcldlZWsoc3RhcnREYXRlKX0sICR7ZW5kRGF0ZS55ZWFyfSlgXG4gICAgICBjYXNlICdkYXlzJzpcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZGF0ZVJhbmdlSW5EYXlzKGRhdGVJbnRlcnZhbCl9ZGBcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnPydcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjYWxlbmRhcldlZWsoZGF0ZTogVGVtcG9yYWwuUGxhaW5EYXRlKTogbnVtYmVyIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHJldHVybiBkYXRlLndlZWtPZlllYXJcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGRhdGVSYW5nZUluRGF5cyhkYXRlSW50ZXJ2YWw6IFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJ2YWwpOiBudW1iZXIge1xuICAgIGlmICghZGF0ZUludGVydmFsKSB7XG4gICAgICByZXR1cm4gMFxuICAgIH1cbiAgICByZXR1cm4gZGF0ZUludGVydmFsLmdldER1cmF0aW9uSW5EYXlzKClcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export class PlainTemporalDurationMessageRenderer {
|
|
2
|
+
static toMessage(duration) {
|
|
3
|
+
if (!duration) {
|
|
4
|
+
return '∞';
|
|
5
|
+
}
|
|
6
|
+
const tmp = [];
|
|
7
|
+
if (duration.days) {
|
|
8
|
+
tmp.push(`${duration.days}d`);
|
|
9
|
+
}
|
|
10
|
+
if (duration.hours) {
|
|
11
|
+
tmp.push(`${duration.hours}h`);
|
|
12
|
+
}
|
|
13
|
+
if (duration.minutes) {
|
|
14
|
+
tmp.push(`${duration.minutes}min`);
|
|
15
|
+
}
|
|
16
|
+
if (duration.seconds) {
|
|
17
|
+
tmp.push(`${duration.seconds}s`);
|
|
18
|
+
}
|
|
19
|
+
if (!tmp.length) {
|
|
20
|
+
return '0s';
|
|
21
|
+
}
|
|
22
|
+
return tmp.join(', ');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhaW4tdGVtcG9yYWwtZHVyYXRpb24tbWVzc2FnZS1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvdGltZS9lbGRlci1pbnRlcnZhbC1waWNrZXIvbW9kZWwvcGxhaW4tdGVtcG9yYWwtZHVyYXRpb24tbWVzc2FnZS1yZW5kZXJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sb0NBQW9DO0lBQ3hDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBMkI7UUFDakQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ2QsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFBO1FBQy9CLENBQUM7UUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUE7UUFDaEMsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQTtRQUNwQyxDQUFDO1FBQ0QsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFBO1FBQ2xDLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wb3JhbCB9IGZyb20gJ0Bqcy10ZW1wb3JhbC9wb2x5ZmlsbCdcblxuZXhwb3J0IGNsYXNzIFBsYWluVGVtcG9yYWxEdXJhdGlvbk1lc3NhZ2VSZW5kZXJlciB7XG4gIHB1YmxpYyBzdGF0aWMgdG9NZXNzYWdlKGR1cmF0aW9uOiBUZW1wb3JhbC5EdXJhdGlvbik6IHN0cmluZyB7XG4gICAgaWYgKCFkdXJhdGlvbikge1xuICAgICAgcmV0dXJuICfiiJ4nXG4gICAgfVxuICAgIGNvbnN0IHRtcCA9IFtdXG4gICAgaWYgKGR1cmF0aW9uLmRheXMpIHtcbiAgICAgIHRtcC5wdXNoKGAke2R1cmF0aW9uLmRheXN9ZGApXG4gICAgfVxuICAgIGlmIChkdXJhdGlvbi5ob3Vycykge1xuICAgICAgdG1wLnB1c2goYCR7ZHVyYXRpb24uaG91cnN9aGApXG4gICAgfVxuICAgIGlmIChkdXJhdGlvbi5taW51dGVzKSB7XG4gICAgICB0bXAucHVzaChgJHtkdXJhdGlvbi5taW51dGVzfW1pbmApXG4gICAgfVxuICAgIGlmIChkdXJhdGlvbi5zZWNvbmRzKSB7XG4gICAgICB0bXAucHVzaChgJHtkdXJhdGlvbi5zZWNvbmRzfXNgKVxuICAgIH1cblxuICAgIGlmICghdG1wLmxlbmd0aCkge1xuICAgICAgcmV0dXJuICcwcydcbiAgICB9XG5cbiAgICByZXR1cm4gdG1wLmpvaW4oJywgJylcbiAgfVxufVxuIl19
|
package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs
CHANGED
|
@@ -207,10 +207,10 @@ export class ElderLocalDateInputComponent extends ElderFormFieldControlBase {
|
|
|
207
207
|
valuesEquals(a, b) {
|
|
208
208
|
return a && b ? a.equals(b) : a === b;
|
|
209
209
|
}
|
|
210
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
211
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.
|
|
210
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderLocalDateInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: i2.TranslateService }, { token: i3.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
211
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ElderLocalDateInputComponent, isStandalone: true, selector: "elder-local-date-input", inputs: { zone: "zone", autoDatePicker: "autoDatePicker", arrows: "arrows", today: "today", center: "center", datePickerTouchUi: "datePickerTouchUi", allowNull: "allowNull", datePickerEnabled: "datePickerEnabled", isoValue: "isoValue", dateValue: "dateValue", isoDateValue: "isoDateValue" }, outputs: { blurred: "blurred", valueUpdatedBlur: "valueUpdatedBlur", isoValueChange: "isoValueChange", dateValueChange: "dateValueChange", isoDateValueChange: "isoDateValueChange" }, providers: [{ provide: MatFormFieldControl, useExisting: ElderLocalDateInputComponent }], viewQueries: [{ propertyName: "picker", first: true, predicate: MatDatepicker, descendants: true, static: true }, { propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"layout-row place-start-center elder-flex-control\">\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"previousDay()\"\n >\n <mat-icon>keyboard_arrow_left</mat-icon>\n </button>\n\n <input\n matInput\n elderNoSpinner\n class=\"flex elder-mdc-input-fix elder-local-date-input\"\n #input\n type=\"date\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [required]=\"!!required\"\n [readonly]=\"readonly || autoDatePicker\"\n [disabled]=\"!!disabled\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"date$ | async | date: 'yyyy-MM-dd'\"\n (ngModelChange)=\"onDateInputChanged($event)\"\n (blur)=\"blurred.next($event)\"\n [class.elder-auto-date-picker]=\"autoDatePicker\"\n [class.noselect]=\"autoDatePicker\"\n [class.center]=\"center || arrows\"\n (click)=\"onDateInputClicked($event)\"\n />\n <input\n style=\"display: none\"\n [matDatepicker]=\"picker\"\n (dateChange)=\"onDatepickerInputChange($event)\"\n />\n\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"arrows\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked || !value\"\n (click)=\"nextDay()\"\n >\n <mat-icon>keyboard_arrow_right</mat-icon>\n </button>\n\n <button\n mat-icon-button\n type=\"button\"\n *ngIf=\"today\"\n class=\"elder-control-icon-button\"\n style=\"margin-left: 4px\"\n [disabled]=\"isLocked\"\n (click)=\"currentDay()\"\n >\n <mat-icon>today</mat-icon>\n </button>\n\n <mat-datepicker-toggle\n class=\"elder-control-icon-button\"\n *ngIf=\"datePickerEnabled && (!allowNull || (value$ | async) === null)\"\n [disabled]=\"isLocked\"\n [for]=\"picker\"\n >\n <mat-icon matDatepickerToggleIcon>calendar_month</mat-icon>\n </mat-datepicker-toggle>\n\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n *ngIf=\"allowNull && (value$ | async)\"\n [disabled]=\"isLocked\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n >\n <mat-icon>close</mat-icon>\n </button>\n\n <mat-datepicker [touchUi]=\"datePickerTouchUi\" #picker></mat-datepicker>\n</div>\n", styles: ["input::-webkit-calendar-picker-indicator{display:none}.elder-auto-date-picker{cursor:pointer}.elder-local-date-input.center{text-align:center}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: ElderFormFieldNoSpinnerDirective, selector: "input[elderNoSpinner]", inputs: ["elderNoSpinner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: MatDatepickerToggleIcon, selector: "[matDatepickerToggleIcon]" }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "component", type: MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
212
212
|
}
|
|
213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
213
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ElderLocalDateInputComponent, decorators: [{
|
|
214
214
|
type: Component,
|
|
215
215
|
args: [{ selector: 'elder-local-date-input', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MatFormFieldControl, useExisting: ElderLocalDateInputComponent }], standalone: true, imports: [
|
|
216
216
|
NgIf,
|