@koobiq/components 18.27.0 → 18.29.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/accordion/accordion-trigger.component.scss +2 -0
- package/actions-panel/actions-panel-container.scss +4 -1
- package/actions-panel/actions-panel-tokens.scss +2 -1
- package/breadcrumbs/breadcrumbs.d.ts +1 -1
- package/checkbox/checkbox.scss +2 -0
- package/core/common-behaviors/clipboard.d.ts +12 -0
- package/core/common-behaviors/index.d.ts +1 -0
- package/core/formatters/filesize/config.d.ts +66 -0
- package/core/formatters/filesize/formatter.d.ts +17 -0
- package/core/{utils/data-size → formatters/filesize}/index.d.ts +1 -1
- package/core/formatters/filesize/size.d.ts +36 -0
- package/core/formatters/index.d.ts +3 -1
- package/core/formatters/number/formatter.d.ts +13 -4
- package/core/locales/formatters.d.ts +9 -1
- package/core/locales/locale-service.d.ts +9 -1
- package/core/locales/types.d.ts +14 -0
- package/core/styles/theming/_components-theming.scss +343 -206
- package/core/utils/public-api.d.ts +0 -1
- package/datepicker/calendar.scss +2 -0
- package/datepicker/datepicker-module.d.ts +1 -1
- package/datepicker/datepicker-tokens.scss +1 -1
- package/dropdown/dropdown-item.component.d.ts +3 -1
- package/empty-state/empty-state.module.d.ts +1 -1
- package/esm2022/accordion/accordion-content.mjs +4 -4
- package/esm2022/accordion/accordion-header.mjs +4 -4
- package/esm2022/accordion/accordion-item.mjs +4 -4
- package/esm2022/accordion/accordion-trigger.component.mjs +6 -6
- package/esm2022/accordion/accordion.component.mjs +4 -4
- package/esm2022/accordion/accordion.module.mjs +5 -5
- package/esm2022/actions-panel/actions-panel-container.mjs +6 -6
- package/esm2022/actions-panel/actions-panel.mjs +13 -13
- package/esm2022/actions-panel/module.mjs +5 -5
- package/esm2022/alert/alert.component.mjs +13 -13
- package/esm2022/alert/alert.module.mjs +5 -5
- package/esm2022/autocomplete/autocomplete-origin.directive.mjs +4 -4
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +4 -4
- package/esm2022/autocomplete/autocomplete.component.mjs +4 -4
- package/esm2022/autocomplete/autocomplete.module.mjs +5 -5
- package/esm2022/badge/badge.component.mjs +10 -10
- package/esm2022/badge/badge.module.mjs +5 -5
- package/esm2022/breadcrumbs/breadcrumbs.mjs +17 -17
- package/esm2022/breadcrumbs/breadcrumbs.module.mjs +5 -5
- package/esm2022/button/button.component.mjs +7 -7
- package/esm2022/button/button.dropdown-trigger.directive.mjs +4 -4
- package/esm2022/button/button.module.mjs +5 -5
- package/esm2022/button-toggle/button-toggle.component.mjs +7 -7
- package/esm2022/button-toggle/button-toggle.module.mjs +5 -5
- package/esm2022/checkbox/checkbox-module.mjs +5 -5
- package/esm2022/checkbox/checkbox-required-validator.mjs +4 -4
- package/esm2022/checkbox/checkbox.mjs +5 -5
- package/esm2022/code-block/code-block-highlight.mjs +4 -4
- package/esm2022/code-block/code-block.mjs +4 -4
- package/esm2022/code-block/code-block.module.mjs +5 -5
- package/esm2022/core/common-behaviors/clipboard.mjs +31 -0
- package/esm2022/core/common-behaviors/color.mjs +4 -4
- package/esm2022/core/common-behaviors/common-module.mjs +5 -5
- package/esm2022/core/common-behaviors/index.mjs +2 -1
- package/esm2022/core/error/error-state-matcher.mjs +10 -10
- package/esm2022/core/formatters/date/formatter.mjs +4 -4
- package/esm2022/core/formatters/date/formatter.pipe.mjs +79 -79
- package/esm2022/core/formatters/filesize/config.mjs +32 -0
- package/esm2022/core/formatters/filesize/formatter.mjs +46 -0
- package/esm2022/core/formatters/filesize/index.mjs +4 -0
- package/esm2022/core/formatters/filesize/size.mjs +67 -0
- package/esm2022/core/formatters/index.mjs +15 -9
- package/esm2022/core/formatters/number/formatter.mjs +38 -36
- package/esm2022/core/forms/forms-module.mjs +5 -5
- package/esm2022/core/forms/forms.directive.mjs +7 -7
- package/esm2022/core/highlight/highlight.pipe.mjs +4 -4
- package/esm2022/core/highlight/index.mjs +5 -5
- package/esm2022/core/line/line.mjs +8 -8
- package/esm2022/core/locales/formatters.mjs +21 -13
- package/esm2022/core/locales/locale-service.mjs +4 -4
- package/esm2022/core/locales/locale-service.module.mjs +5 -5
- package/esm2022/core/locales/types.mjs +1 -1
- package/esm2022/core/option/action.mjs +4 -4
- package/esm2022/core/option/optgroup.mjs +4 -4
- package/esm2022/core/option/option-module.mjs +5 -5
- package/esm2022/core/option/option.mjs +4 -4
- package/esm2022/core/pop-up/pop-up-trigger.mjs +4 -4
- package/esm2022/core/pop-up/pop-up.mjs +4 -4
- package/esm2022/core/select/common.mjs +16 -16
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
- package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +5 -5
- package/esm2022/core/services/measure-scrollbar.service.mjs +4 -4
- package/esm2022/core/services/theme.service.mjs +4 -4
- package/esm2022/core/utils/public-api.mjs +1 -2
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-body.component.mjs +4 -4
- package/esm2022/datepicker/calendar-header.component.mjs +4 -4
- package/esm2022/datepicker/calendar.component.mjs +6 -5
- package/esm2022/datepicker/datepicker-input.directive.mjs +4 -4
- package/esm2022/datepicker/datepicker-intl.mjs +4 -4
- package/esm2022/datepicker/datepicker-module.mjs +5 -8
- package/esm2022/datepicker/datepicker-toggle.component.mjs +7 -7
- package/esm2022/datepicker/datepicker.component.mjs +8 -8
- package/esm2022/datepicker/month-view.component.mjs +4 -4
- package/esm2022/divider/divider.component.mjs +4 -4
- package/esm2022/divider/divider.module.mjs +5 -5
- package/esm2022/dl/dl.component.mjs +10 -10
- package/esm2022/dl/dl.module.mjs +5 -5
- package/esm2022/dropdown/dropdown-content.directive.mjs +4 -4
- package/esm2022/dropdown/dropdown-item.component.mjs +9 -7
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +4 -4
- package/esm2022/dropdown/dropdown.component.mjs +4 -4
- package/esm2022/dropdown/dropdown.module.mjs +5 -5
- package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +8 -8
- package/esm2022/empty-state/empty-state.component.mjs +16 -16
- package/esm2022/empty-state/empty-state.module.mjs +5 -7
- package/esm2022/file-upload/file-drop.mjs +4 -4
- package/esm2022/file-upload/file-upload.module.mjs +5 -5
- package/esm2022/file-upload/multiple-file-upload.component.mjs +5 -5
- package/esm2022/file-upload/single-file-upload.component.mjs +5 -5
- package/esm2022/filter-bar/filter-bar-button.mjs +4 -4
- package/esm2022/filter-bar/filter-bar.mjs +11 -7
- package/esm2022/filter-bar/filter-bar.module.mjs +5 -5
- package/esm2022/filter-bar/filter-bar.types.mjs +32 -1
- package/esm2022/filter-bar/filter-refresher.mjs +4 -4
- package/esm2022/filter-bar/filter-reset.mjs +4 -4
- package/esm2022/filter-bar/filter-search.mjs +4 -4
- package/esm2022/filter-bar/filters.mjs +27 -20
- package/esm2022/filter-bar/pipe-add.mjs +4 -4
- package/esm2022/filter-bar/pipe.directive.mjs +4 -4
- package/esm2022/filter-bar/pipes/base-pipe.mjs +11 -9
- package/esm2022/filter-bar/pipes/pipe-button.mjs +8 -8
- package/esm2022/filter-bar/pipes/pipe-date.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-datetime.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +38 -12
- package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +234 -0
- package/esm2022/filter-bar/pipes/pipe-readonly.mjs +13 -16
- package/esm2022/filter-bar/pipes/pipe-select.mjs +15 -6
- package/esm2022/filter-bar/pipes/pipe-state.mjs +7 -7
- package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -6
- package/esm2022/filter-bar/pipes/pipe-title.mjs +4 -4
- package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +136 -0
- package/esm2022/filter-bar/public-api.mjs +2 -1
- package/esm2022/form-field/cleaner.mjs +4 -4
- package/esm2022/form-field/form-field.mjs +12 -12
- package/esm2022/form-field/form-field.module.mjs +5 -5
- package/esm2022/form-field/hint.mjs +4 -4
- package/esm2022/form-field/password-hint.mjs +9 -7
- package/esm2022/form-field/password-toggle.mjs +4 -4
- package/esm2022/form-field/prefix.mjs +4 -4
- package/esm2022/form-field/stepper.mjs +4 -4
- package/esm2022/form-field/suffix.mjs +4 -4
- package/esm2022/form-field/validate.directive.mjs +4 -4
- package/esm2022/icon/icon-button.component.mjs +4 -4
- package/esm2022/icon/icon-item.component.mjs +4 -4
- package/esm2022/icon/icon.component.mjs +4 -4
- package/esm2022/icon/icon.module.mjs +5 -5
- package/esm2022/input/input-number-validators.mjs +7 -7
- package/esm2022/input/input-number.mjs +13 -12
- package/esm2022/input/input-password.mjs +4 -4
- package/esm2022/input/input.mjs +7 -7
- package/esm2022/input/input.module.mjs +5 -5
- package/esm2022/link/link.component.mjs +4 -4
- package/esm2022/link/link.module.mjs +5 -5
- package/esm2022/list/list-selection.component.mjs +10 -10
- package/esm2022/list/list.component.mjs +7 -7
- package/esm2022/list/list.module.mjs +5 -5
- package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
- package/esm2022/loader-overlay/loader-overlay.module.mjs +5 -5
- package/esm2022/markdown/markdown.component.mjs +6 -6
- package/esm2022/markdown/markdown.module.mjs +5 -5
- package/esm2022/markdown/markdown.service.mjs +4 -4
- package/esm2022/modal/css-unit.pipe.mjs +4 -4
- package/esm2022/modal/modal-control.service.mjs +4 -4
- package/esm2022/modal/modal.component.mjs +4 -4
- package/esm2022/modal/modal.directive.mjs +13 -13
- package/esm2022/modal/modal.module.mjs +5 -5
- package/esm2022/modal/modal.service.mjs +4 -4
- package/esm2022/modal/modal.type.mjs +1 -1
- package/esm2022/navbar/navbar-item.component.mjs +28 -28
- package/esm2022/navbar/navbar.component.mjs +10 -10
- package/esm2022/navbar/navbar.module.mjs +5 -5
- package/esm2022/navbar/vertical-navbar.component.mjs +4 -4
- package/esm2022/overflow-items/module.mjs +5 -5
- package/esm2022/overflow-items/overflow-items.mjs +15 -15
- package/esm2022/popover/popover-confirm.component.mjs +7 -7
- package/esm2022/popover/popover.component.mjs +7 -7
- package/esm2022/popover/popover.module.mjs +5 -5
- package/esm2022/progress-bar/progress-bar.component.mjs +10 -10
- package/esm2022/progress-bar/progress-bar.module.mjs +5 -5
- package/esm2022/progress-spinner/progress-spinner.component.mjs +10 -10
- package/esm2022/progress-spinner/progress-spinner.module.mjs +5 -5
- package/esm2022/radio/radio.component.mjs +7 -7
- package/esm2022/radio/radio.module.mjs +5 -5
- package/esm2022/risk-level/risk-level.component.mjs +4 -4
- package/esm2022/risk-level/risk-level.module.mjs +5 -5
- package/esm2022/scrollbar/scrollbar.component.mjs +4 -4
- package/esm2022/scrollbar/scrollbar.directive.mjs +4 -4
- package/esm2022/scrollbar/scrollbar.module.mjs +5 -5
- package/esm2022/select/select-option.directive.mjs +4 -4
- package/esm2022/select/select.component.mjs +9 -6
- package/esm2022/select/select.module.mjs +5 -5
- package/esm2022/sidebar/sidebar.component.mjs +18 -12
- package/esm2022/sidebar/sidebar.module.mjs +5 -5
- package/esm2022/sidepanel/sidepanel-container.component.mjs +4 -4
- package/esm2022/sidepanel/sidepanel-directives.mjs +16 -16
- package/esm2022/sidepanel/sidepanel.module.mjs +5 -5
- package/esm2022/sidepanel/sidepanel.service.mjs +4 -4
- package/esm2022/splitter/splitter.component.mjs +13 -13
- package/esm2022/splitter/splitter.module.mjs +5 -5
- package/esm2022/table/table.component.mjs +7 -7
- package/esm2022/table/table.module.mjs +5 -5
- package/esm2022/tabs/paginated-tab-header.mjs +4 -4
- package/esm2022/tabs/tab-body.component.mjs +7 -7
- package/esm2022/tabs/tab-content.directive.mjs +4 -4
- package/esm2022/tabs/tab-group.component.mjs +16 -16
- package/esm2022/tabs/tab-header.component.mjs +4 -4
- package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -4
- package/esm2022/tabs/tab-label.directive.mjs +4 -4
- package/esm2022/tabs/tab-nav-bar.mjs +13 -13
- package/esm2022/tabs/tab.component.mjs +4 -4
- package/esm2022/tabs/tabs.module.mjs +5 -5
- package/esm2022/tags/tag-input.mjs +4 -4
- package/esm2022/tags/tag-list.component.mjs +5 -5
- package/esm2022/tags/tag.component.mjs +13 -13
- package/esm2022/tags/tag.module.mjs +5 -5
- package/esm2022/textarea/textarea.component.mjs +8 -7
- package/esm2022/textarea/textarea.module.mjs +5 -5
- package/esm2022/timepicker/timepicker.directive.mjs +4 -4
- package/esm2022/timepicker/timepicker.module.mjs +5 -5
- package/esm2022/timezone/cities-by-filter.pipe.mjs +4 -4
- package/esm2022/timezone/timezone-option.component.mjs +4 -4
- package/esm2022/timezone/timezone-option.directive.mjs +4 -4
- package/esm2022/timezone/timezone-select.component.mjs +9 -9
- package/esm2022/timezone/timezone.module.mjs +5 -5
- package/esm2022/timezone/utc-offset.pipe.mjs +4 -4
- package/esm2022/title/title.directive.mjs +4 -4
- package/esm2022/title/title.module.mjs +5 -5
- package/esm2022/toast/toast-container.component.mjs +4 -4
- package/esm2022/toast/toast.component.mjs +7 -7
- package/esm2022/toast/toast.module.mjs +5 -5
- package/esm2022/toast/toast.service.mjs +4 -4
- package/esm2022/toggle/toggle.component.mjs +4 -4
- package/esm2022/toggle/toggle.module.mjs +5 -5
- package/esm2022/tooltip/tooltip.component.mjs +13 -13
- package/esm2022/tooltip/tooltip.module.mjs +5 -5
- package/esm2022/top-bar/module.mjs +5 -5
- package/esm2022/top-bar/top-bar.mjs +10 -10
- package/esm2022/tree/control/flat-tree-control.filters.mjs +10 -2
- package/esm2022/tree/node.mjs +4 -4
- package/esm2022/tree/outlet.mjs +4 -4
- package/esm2022/tree/padding.directive.mjs +4 -4
- package/esm2022/tree/toggle.mjs +10 -10
- package/esm2022/tree/tree-base.mjs +7 -7
- package/esm2022/tree/tree-option.component.mjs +11 -7
- package/esm2022/tree/tree-selection.component.mjs +6 -4
- package/esm2022/tree/tree.mjs +4 -4
- package/esm2022/tree/tree.module.mjs +5 -5
- package/esm2022/tree-select/tree-select.component.mjs +11 -7
- package/esm2022/tree-select/tree-select.module.mjs +5 -5
- package/fesm2022/koobiq-components-accordion.mjs +21 -21
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +21 -21
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +16 -16
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +13 -13
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +13 -13
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +20 -20
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +10 -10
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +13 -13
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +11 -11
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +10 -10
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +410 -322
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +37 -39
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +7 -7
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +13 -13
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +21 -19
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
- package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-empty-state.mjs +19 -21
- package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +15 -15
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +521 -130
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +44 -42
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +13 -13
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +32 -31
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +7 -7
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +19 -19
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-markdown.mjs +12 -12
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +28 -28
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +43 -43
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +18 -18
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +16 -16
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-risk-level.mjs +7 -7
- package/fesm2022/koobiq-components-risk-level.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
- package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +15 -12
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +21 -15
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +25 -25
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +16 -16
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +10 -10
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +55 -55
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +23 -23
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +11 -10
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +7 -7
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +24 -24
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +16 -16
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +7 -7
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +16 -16
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +13 -13
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +14 -10
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +54 -40
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +94 -17
- package/file-upload/file-upload-tokens.scss +5 -0
- package/file-upload/single-file-upload.component.scss +1 -0
- package/filter-bar/filter-bar.d.ts +4 -2
- package/filter-bar/filter-bar.types.d.ts +33 -5
- package/filter-bar/filters.d.ts +3 -2
- package/filter-bar/filters.scss +4 -0
- package/filter-bar/pipes/base-pipe.d.ts +3 -1
- package/filter-bar/pipes/base-pipe.scss +2 -1
- package/filter-bar/pipes/pipe-multi-select.d.ts +10 -3
- package/filter-bar/pipes/pipe-multi-tree-select.d.ts +57 -0
- package/filter-bar/pipes/pipe-multi-tree-select.scss +19 -0
- package/filter-bar/pipes/pipe-readonly.scss +18 -0
- package/filter-bar/pipes/pipe-select.d.ts +5 -2
- package/filter-bar/pipes/pipe-state.d.ts +1 -1
- package/filter-bar/pipes/pipe-tree-select.d.ts +41 -0
- package/filter-bar/pipes/pipe-tree-select.scss +9 -0
- package/filter-bar/public-api.d.ts +1 -0
- package/form-field/_form-field-theme.scss +12 -12
- package/form-field/form-field.scss +58 -61
- package/input/_input-theme.scss +6 -0
- package/input/input-number.d.ts +1 -0
- package/markdown/markdown.scss +1 -1
- package/modal/modal.type.d.ts +1 -1
- package/overflow-items/overflow-items.d.ts +1 -1
- package/package.json +6 -6
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/schematics/migrations/css-selectors/README.md +1 -1
- package/schematics/migrations/deprecated-icons/README.md +3 -3
- package/schematics/migrations/empty-state-size-attr/README.md +2 -2
- package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
- package/schematics/migrations/new-icons-pack/README.md +3 -3
- package/schematics/ng-add/index.js +8 -8
- package/select/_select-theme.scss +1 -1
- package/select/select.scss +2 -0
- package/tabs/tab-nav-bar.d.ts +1 -1
- package/tags/_tag-theme.scss +5 -0
- package/tags/tag-tokens.scss +17 -0
- package/textarea/textarea.component.d.ts +1 -1
- package/toast/toast.component.scss +2 -1
- package/tree/control/flat-tree-control.filters.d.ts +1 -0
- package/tree/tree-option.component.d.ts +3 -1
- package/core/utils/data-size/config.d.ts +0 -38
- package/core/utils/data-size/data-size.pipe.d.ts +0 -14
- package/core/utils/data-size/size.d.ts +0 -15
- package/esm2022/core/utils/data-size/config.mjs +0 -10
- package/esm2022/core/utils/data-size/data-size.pipe.mjs +0 -45
- package/esm2022/core/utils/data-size/index.mjs +0 -4
- package/esm2022/core/utils/data-size/size.mjs +0 -43
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { enUSFormattersData } from '../../locales';
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated Will be removed in next major release. Use `KbqMeasurementSystem` instead.
|
|
5
|
+
* @docs-private
|
|
6
|
+
*/
|
|
7
|
+
export var MeasurementSystem;
|
|
8
|
+
(function (MeasurementSystem) {
|
|
9
|
+
MeasurementSystem["SI"] = "SI";
|
|
10
|
+
MeasurementSystem["IEC"] = "IEC";
|
|
11
|
+
})(MeasurementSystem || (MeasurementSystem = {}));
|
|
12
|
+
/**
|
|
13
|
+
* Available unit systems for file size formatting.
|
|
14
|
+
* - SI (Metric): 1 KB = 1000 bytes
|
|
15
|
+
* - IEC (Binary): 1 KiB = 1024 bytes
|
|
16
|
+
*/
|
|
17
|
+
export var KbqMeasurementSystem;
|
|
18
|
+
(function (KbqMeasurementSystem) {
|
|
19
|
+
KbqMeasurementSystem["SI"] = "SI";
|
|
20
|
+
KbqMeasurementSystem["IEC"] = "IEC";
|
|
21
|
+
})(KbqMeasurementSystem || (KbqMeasurementSystem = {}));
|
|
22
|
+
export const KBQ_SIZE_UNITS_DEFAULT_CONFIG = enUSFormattersData.sizeUnits;
|
|
23
|
+
/**
|
|
24
|
+
* Configuration for converting sizes in different unit systems.
|
|
25
|
+
*/
|
|
26
|
+
export const KBQ_SIZE_UNITS_CONFIG = new InjectionToken('KbqSizeUnitsConfig');
|
|
27
|
+
/** Utility provider for `KBQ_SIZE_UNITS_CONFIG`. */
|
|
28
|
+
export const kbqFilesizeFormatterConfigurationProvider = (configuration) => ({
|
|
29
|
+
provide: KBQ_SIZE_UNITS_CONFIG,
|
|
30
|
+
useValue: { ...KBQ_SIZE_UNITS_DEFAULT_CONFIG, ...configuration }
|
|
31
|
+
});
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvZmlsZXNpemUvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5EOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLGlCQUdYO0FBSEQsV0FBWSxpQkFBaUI7SUFDekIsOEJBQVMsQ0FBQTtJQUNULGdDQUFXLENBQUE7QUFDZixDQUFDLEVBSFcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUc1QjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQU4sSUFBWSxvQkFHWDtBQUhELFdBQVksb0JBQW9CO0lBQzVCLGlDQUFTLENBQUE7SUFDVCxtQ0FBVyxDQUFBO0FBQ2YsQ0FBQyxFQUhXLG9CQUFvQixLQUFwQixvQkFBb0IsUUFHL0I7QUErQ0QsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQXVCLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztBQUU5Rjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFxQixvQkFBb0IsQ0FBQyxDQUFDO0FBRWxHLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRyxDQUFDLGFBQTBDLEVBQVksRUFBRSxDQUFDLENBQUM7SUFDaEgsT0FBTyxFQUFFLHFCQUFxQjtJQUM5QixRQUFRLEVBQUUsRUFBRSxHQUFHLDZCQUE2QixFQUFFLEdBQUcsYUFBYSxFQUFFO0NBQ25FLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZW5VU0Zvcm1hdHRlcnNEYXRhIH0gZnJvbSAnLi4vLi4vbG9jYWxlcyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgV2lsbCBiZSByZW1vdmVkIGluIG5leHQgbWFqb3IgcmVsZWFzZS4gVXNlIGBLYnFNZWFzdXJlbWVudFN5c3RlbWAgaW5zdGVhZC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGVudW0gTWVhc3VyZW1lbnRTeXN0ZW0ge1xuICAgIFNJID0gJ1NJJyxcbiAgICBJRUMgPSAnSUVDJ1xufVxuXG4vKipcbiAqIEF2YWlsYWJsZSB1bml0IHN5c3RlbXMgZm9yIGZpbGUgc2l6ZSBmb3JtYXR0aW5nLlxuICogLSBTSSAoTWV0cmljKTogMSBLQiA9IDEwMDAgYnl0ZXNcbiAqIC0gSUVDIChCaW5hcnkpOiAxIEtpQiA9IDEwMjQgYnl0ZXNcbiAqL1xuZXhwb3J0IGVudW0gS2JxTWVhc3VyZW1lbnRTeXN0ZW0ge1xuICAgIFNJID0gJ1NJJyxcbiAgICBJRUMgPSAnSUVDJ1xufVxuXG4vKiogVW5pdCBzeXN0ZW1zIGFzIHVuaW9uIHR5cGUgKi9cbmV4cG9ydCB0eXBlIEticU1lYXN1cmVtZW50U3lzdGVtVHlwZSA9IGtleW9mIHR5cGVvZiBLYnFNZWFzdXJlbWVudFN5c3RlbTtcblxuZXhwb3J0IGludGVyZmFjZSBLYnFVbml0U3lzdGVtIHtcbiAgICBhYmJyZXZpYXRpb25zOiBzdHJpbmdbXTtcbiAgICBiYXNlOiBudW1iZXI7XG4gICAgcG93ZXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciByZWxlYXNlLiBVc2UgYEticVNpemVVbml0c0NvbmZpZ2AgaW5zdGVhZC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaXplVW5pdHNDb25maWcge1xuICAgIGRlZmF1bHRVbml0U3lzdGVtOiBzdHJpbmc7XG4gICAgZGVmYXVsdFByZWNpc2lvbjogbnVtYmVyO1xuICAgIHVuaXRTeXN0ZW1zOiB7XG4gICAgICAgIFtNZWFzdXJlbWVudFN5c3RlbS5TSV06IEticVVuaXRTeXN0ZW07XG4gICAgICAgIFtNZWFzdXJlbWVudFN5c3RlbS5JRUNdOiBLYnFVbml0U3lzdGVtO1xuICAgIH07XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgZmlsZSBzaXplIGZvcm1hdHRpbmcgb3B0aW9ucy5cbiAqIERlZmluZXMgdGhlIGRlZmF1bHQgdW5pdCBzeXN0ZW0sIHByZWNpc2lvbiwgYW5kIGF2YWlsYWJsZSB1bml0IHN5c3RlbXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2JxU2l6ZVVuaXRzQ29uZmlnIHtcbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHVuaXQgc3lzdGVtIHRvIHVzZSAoZS5nLiwgJ1NJJyBvciAnSUVDJykuXG4gICAgICogQHNlZSBLYnFNZWFzdXJlbWVudFN5c3RlbVxuICAgICAqL1xuICAgIGRlZmF1bHRVbml0U3lzdGVtOiBLYnFNZWFzdXJlbWVudFN5c3RlbVR5cGU7XG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgdG8gZGlzcGxheSBpbiBmb3JtYXR0ZWQgb3V0cHV0LlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYDJgIOKGkiBcIjEuMjMgS0JcIlxuICAgICAqL1xuICAgIGRlZmF1bHRQcmVjaXNpb246IG51bWJlcjtcbiAgICAvKiogQHNlZSBLYnFNZWFzdXJlbWVudFN5c3RlbSAqL1xuICAgIHVuaXRTeXN0ZW1zOiB7XG4gICAgICAgIFtLYnFNZWFzdXJlbWVudFN5c3RlbS5TSV06IEticVVuaXRTeXN0ZW07XG4gICAgICAgIFtLYnFNZWFzdXJlbWVudFN5c3RlbS5JRUNdOiBLYnFVbml0U3lzdGVtO1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBLQlFfU0laRV9VTklUU19ERUZBVUxUX0NPTkZJRzogS2JxU2l6ZVVuaXRzQ29uZmlnID0gZW5VU0Zvcm1hdHRlcnNEYXRhLnNpemVVbml0cztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBjb252ZXJ0aW5nIHNpemVzIGluIGRpZmZlcmVudCB1bml0IHN5c3RlbXMuXG4gKi9cbmV4cG9ydCBjb25zdCBLQlFfU0laRV9VTklUU19DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48S2JxU2l6ZVVuaXRzQ29uZmlnPignS2JxU2l6ZVVuaXRzQ29uZmlnJyk7XG5cbi8qKiBVdGlsaXR5IHByb3ZpZGVyIGZvciBgS0JRX1NJWkVfVU5JVFNfQ09ORklHYC4gKi9cbmV4cG9ydCBjb25zdCBrYnFGaWxlc2l6ZUZvcm1hdHRlckNvbmZpZ3VyYXRpb25Qcm92aWRlciA9IChjb25maWd1cmF0aW9uOiBQYXJ0aWFsPEticVNpemVVbml0c0NvbmZpZz4pOiBQcm92aWRlciA9PiAoe1xuICAgIHByb3ZpZGU6IEtCUV9TSVpFX1VOSVRTX0NPTkZJRyxcbiAgICB1c2VWYWx1ZTogeyAuLi5LQlFfU0laRV9VTklUU19ERUZBVUxUX0NPTkZJRywgLi4uY29uZmlndXJhdGlvbiB9XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { inject, Pipe } from '@angular/core';
|
|
2
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { KBQ_DEFAULT_LOCALE_ID, KBQ_LOCALE_SERVICE } from '../../locales';
|
|
4
|
+
import { KbqDecimalPipe } from '../number/formatter';
|
|
5
|
+
import { KBQ_SIZE_UNITS_CONFIG, KBQ_SIZE_UNITS_DEFAULT_CONFIG } from './config';
|
|
6
|
+
import { getFormattedSizeParts } from './size';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class KbqDataSizePipe {
|
|
9
|
+
constructor() {
|
|
10
|
+
/** Injects the external configuration for size units, if available. */
|
|
11
|
+
this.externalConfig = inject(KBQ_SIZE_UNITS_CONFIG, { optional: true });
|
|
12
|
+
this.localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });
|
|
13
|
+
this.numberPipe = inject(KbqDecimalPipe, { optional: true });
|
|
14
|
+
this.nonBreakingSpace = '\u00a0';
|
|
15
|
+
this.updateLocaleParams = () => {
|
|
16
|
+
this.config = this.externalConfig || this.localeService?.getParams('sizeUnits');
|
|
17
|
+
};
|
|
18
|
+
this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);
|
|
19
|
+
if (!this.localeService) {
|
|
20
|
+
this.config = this.externalConfig || KBQ_SIZE_UNITS_DEFAULT_CONFIG;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Transforms bytes into localized size string */
|
|
24
|
+
transform(source, precision, unitSystemName, locale) {
|
|
25
|
+
const currentLocale = locale || this.localeService?.id || KBQ_DEFAULT_LOCALE_ID;
|
|
26
|
+
const selectedPrecision = precision ?? this.config.defaultPrecision;
|
|
27
|
+
const resolvedUnitSystems = locale
|
|
28
|
+
? this.localeService?.locales[locale].sizeUnits.unitSystems
|
|
29
|
+
: this.config.unitSystems;
|
|
30
|
+
const unitSystem = resolvedUnitSystems[unitSystemName || this.config.defaultUnitSystem];
|
|
31
|
+
const { value, unit } = getFormattedSizeParts(source, selectedPrecision, unitSystem);
|
|
32
|
+
const formattedValue = this.numberPipe?.transform(value, undefined, currentLocale) || value;
|
|
33
|
+
return formattedValue ? `${formattedValue}${this.nonBreakingSpace}${unit}` : '';
|
|
34
|
+
}
|
|
35
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDataSizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
36
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqDataSizePipe, isStandalone: true, name: "kbqDataSize", pure: false }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDataSizePipe, decorators: [{
|
|
39
|
+
type: Pipe,
|
|
40
|
+
args: [{
|
|
41
|
+
name: 'kbqDataSize',
|
|
42
|
+
standalone: true,
|
|
43
|
+
pure: false
|
|
44
|
+
}]
|
|
45
|
+
}], ctorParameters: () => [] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvZmlsZXNpemUvZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsNkJBQTZCLEVBS2hDLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFPL0MsTUFBTSxPQUFPLGVBQWU7SUFTeEI7UUFSQSx1RUFBdUU7UUFDOUQsbUJBQWMsR0FBRyxNQUFNLENBQUMscUJBQXFCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUzRCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELGVBQVUsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQscUJBQWdCLEdBQUcsUUFBUSxDQUFDO1FBNEJyQyx1QkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BGLENBQUMsQ0FBQztRQTFCRSxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUxRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSw2QkFBNkIsQ0FBQztRQUN2RSxDQUFDO0lBQ0wsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxTQUFTLENBQUMsTUFBYyxFQUFFLFNBQWtCLEVBQUUsY0FBeUMsRUFBRSxNQUFlO1FBQ3BHLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQztRQUNoRixNQUFNLGlCQUFpQixHQUFHLFNBQVMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBRXBFLE1BQU0sbUJBQW1CLEdBQWdELE1BQU07WUFDM0UsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXO1lBQzNELENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUU5QixNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhGLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcscUJBQXFCLENBQUMsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDO1FBRTVGLE9BQU8sY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRixDQUFDO2tJQWhDUSxlQUFlO2dJQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBTDNCLElBQUk7bUJBQUM7b0JBQ0YsSUFBSSxFQUFFLGFBQWE7b0JBQ25CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixJQUFJLEVBQUUsS0FBSztpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgS0JRX0RFRkFVTFRfTE9DQUxFX0lELCBLQlFfTE9DQUxFX1NFUlZJQ0UgfSBmcm9tICcuLi8uLi9sb2NhbGVzJztcbmltcG9ydCB7IEticURlY2ltYWxQaXBlIH0gZnJvbSAnLi4vbnVtYmVyL2Zvcm1hdHRlcic7XG5pbXBvcnQge1xuICAgIEtCUV9TSVpFX1VOSVRTX0NPTkZJRyxcbiAgICBLQlFfU0laRV9VTklUU19ERUZBVUxUX0NPTkZJRyxcbiAgICBLYnFNZWFzdXJlbWVudFN5c3RlbSxcbiAgICBLYnFNZWFzdXJlbWVudFN5c3RlbVR5cGUsXG4gICAgS2JxU2l6ZVVuaXRzQ29uZmlnLFxuICAgIEticVVuaXRTeXN0ZW1cbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzIH0gZnJvbSAnLi9zaXplJztcblxuQFBpcGUoe1xuICAgIG5hbWU6ICdrYnFEYXRhU2l6ZScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwdXJlOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBLYnFEYXRhU2l6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvKiogSW5qZWN0cyB0aGUgZXh0ZXJuYWwgY29uZmlndXJhdGlvbiBmb3Igc2l6ZSB1bml0cywgaWYgYXZhaWxhYmxlLiAqL1xuICAgIHJlYWRvbmx5IGV4dGVybmFsQ29uZmlnID0gaW5qZWN0KEtCUV9TSVpFX1VOSVRTX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxlU2VydmljZSA9IGluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBudW1iZXJQaXBlID0gaW5qZWN0KEticURlY2ltYWxQaXBlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbm9uQnJlYWtpbmdTcGFjZSA9ICdcXHUwMGEwJztcbiAgICBwcml2YXRlIGNvbmZpZzogS2JxU2l6ZVVuaXRzQ29uZmlnO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghdGhpcy5sb2NhbGVTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IHRoaXMuZXh0ZXJuYWxDb25maWcgfHwgS0JRX1NJWkVfVU5JVFNfREVGQVVMVF9DT05GSUc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogVHJhbnNmb3JtcyBieXRlcyBpbnRvIGxvY2FsaXplZCBzaXplIHN0cmluZyAqL1xuICAgIHRyYW5zZm9ybShzb3VyY2U6IG51bWJlciwgcHJlY2lzaW9uPzogbnVtYmVyLCB1bml0U3lzdGVtTmFtZT86IEticU1lYXN1cmVtZW50U3lzdGVtVHlwZSwgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY3VycmVudExvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLmxvY2FsZVNlcnZpY2U/LmlkIHx8IEtCUV9ERUZBVUxUX0xPQ0FMRV9JRDtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQcmVjaXNpb24gPSBwcmVjaXNpb24gPz8gdGhpcy5jb25maWcuZGVmYXVsdFByZWNpc2lvbjtcblxuICAgICAgICBjb25zdCByZXNvbHZlZFVuaXRTeXN0ZW1zOiBSZWNvcmQ8S2JxTWVhc3VyZW1lbnRTeXN0ZW0sIEticVVuaXRTeXN0ZW0+ID0gbG9jYWxlXG4gICAgICAgICAgICA/IHRoaXMubG9jYWxlU2VydmljZT8ubG9jYWxlc1tsb2NhbGVdLnNpemVVbml0cy51bml0U3lzdGVtc1xuICAgICAgICAgICAgOiB0aGlzLmNvbmZpZy51bml0U3lzdGVtcztcblxuICAgICAgICBjb25zdCB1bml0U3lzdGVtID0gcmVzb2x2ZWRVbml0U3lzdGVtc1t1bml0U3lzdGVtTmFtZSB8fCB0aGlzLmNvbmZpZy5kZWZhdWx0VW5pdFN5c3RlbV07XG5cbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgdW5pdCB9ID0gZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzKHNvdXJjZSwgc2VsZWN0ZWRQcmVjaXNpb24sIHVuaXRTeXN0ZW0pO1xuICAgICAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMubnVtYmVyUGlwZT8udHJhbnNmb3JtKHZhbHVlLCB1bmRlZmluZWQsIGN1cnJlbnRMb2NhbGUpIHx8IHZhbHVlO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRWYWx1ZSA/IGAke2Zvcm1hdHRlZFZhbHVlfSR7dGhpcy5ub25CcmVha2luZ1NwYWNlfSR7dW5pdH1gIDogJyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVQYXJhbXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5leHRlcm5hbENvbmZpZyB8fCB0aGlzLmxvY2FsZVNlcnZpY2U/LmdldFBhcmFtcygnc2l6ZVVuaXRzJyk7XG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './config';
|
|
2
|
+
export * from './formatter';
|
|
3
|
+
export * from './size';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvZm9ybWF0dGVycy9maWxlc2l6ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWF0dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc2l6ZSc7XG4iXX0=
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export const KBQ_INVALID_VALUE_ERROR = 'Argument "value" must be a finite number!';
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Will be removed in next major release. Use `getFormattedSizeParts` instead.
|
|
4
|
+
* @docs-private
|
|
5
|
+
*/
|
|
6
|
+
export const formatDataSize = (value, precision, system) => {
|
|
7
|
+
const { result, unit } = getHumanizedBytes(value, system);
|
|
8
|
+
let volume;
|
|
9
|
+
if (system.abbreviations[0] === unit) {
|
|
10
|
+
volume = result.toString();
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
volume = result.toFixed(precision).replace(/\./g, ',');
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
value: volume,
|
|
17
|
+
unit
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Converts a byte value into locale-independent file size parts: numeric value and unit abbreviation.
|
|
22
|
+
*
|
|
23
|
+
* @param value - size in bytes.
|
|
24
|
+
* @param precision - digits after the decimal point (e.g., `2` → "1.02 KB").
|
|
25
|
+
* @param system - unit system defining abbreviations and base scaling (SI/IEC).
|
|
26
|
+
* @returns Object with the formatted size info.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* formatDataSize(1500, 2, 'SI'); // { value: "1.50", unit: "KB" }
|
|
30
|
+
*/
|
|
31
|
+
export const getFormattedSizeParts = (value, precision, system) => {
|
|
32
|
+
const { result, unit } = getHumanizedBytes(value, system);
|
|
33
|
+
return {
|
|
34
|
+
// No precision for bytes (e.g., "512 B")
|
|
35
|
+
value: unit === system.abbreviations[0] ? result.toString() : result.toFixed(precision),
|
|
36
|
+
unit
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Converts bytes to Kb, Mb, Gb
|
|
41
|
+
*
|
|
42
|
+
* @param value the number of bytes
|
|
43
|
+
* @param system the measurement system
|
|
44
|
+
* @param threshold the lower counting threshold
|
|
45
|
+
*/
|
|
46
|
+
export const getHumanizedBytes = (value, system, threshold) => {
|
|
47
|
+
if (!Number.isFinite(value)) {
|
|
48
|
+
throw new Error(KBQ_INVALID_VALUE_ERROR);
|
|
49
|
+
}
|
|
50
|
+
const calculatedThreshold = Number.isFinite(threshold) ? threshold : Math.pow(system.base, system.power);
|
|
51
|
+
const orderOfMagnitude = Math.pow(system.base, system.power);
|
|
52
|
+
let result = value;
|
|
53
|
+
let step = 0;
|
|
54
|
+
const len = system.abbreviations.length - 1;
|
|
55
|
+
while (step < len) {
|
|
56
|
+
if (calculatedThreshold !== undefined && result < calculatedThreshold) {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
step++;
|
|
60
|
+
result = value / Math.pow(orderOfMagnitude, step);
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
result,
|
|
64
|
+
unit: system.abbreviations[step]
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvY29yZS9mb3JtYXR0ZXJzL2ZpbGVzaXplL3NpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsMkNBQTJDLENBQUM7QUFFbkY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQzFCLEtBQWEsRUFDYixTQUFpQixFQUNqQixNQUFxQixFQUNVLEVBQUU7SUFDakMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFjLENBQUM7SUFFbkIsSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztTQUFNLENBQUM7UUFDSixNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxPQUFPO1FBQ0gsS0FBSyxFQUFFLE1BQU07UUFDYixJQUFJO0tBQ1AsQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUNqQyxLQUFhLEVBQ2IsU0FBaUIsRUFDakIsTUFBcUIsRUFDVSxFQUFFO0lBQ2pDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTFELE9BQU87UUFDSCx5Q0FBeUM7UUFDekMsS0FBSyxFQUFFLElBQUksS0FBSyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3ZGLElBQUk7S0FDUCxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FDN0IsS0FBYSxFQUNiLE1BQXFCLEVBQ3JCLFNBQWtCLEVBQ2MsRUFBRTtJQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekcsTUFBTSxnQkFBZ0IsR0FBVyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXJFLElBQUksTUFBTSxHQUFXLEtBQUssQ0FBQztJQUMzQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixNQUFNLEdBQUcsR0FBVyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFcEQsT0FBTyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxtQkFBbUIsS0FBSyxTQUFTLElBQUksTUFBTSxHQUFHLG1CQUFtQixFQUFFLENBQUM7WUFDcEUsTUFBTTtRQUNWLENBQUM7UUFFRCxJQUFJLEVBQUUsQ0FBQztRQUNQLE1BQU0sR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsT0FBTztRQUNILE1BQU07UUFDTixJQUFJLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7S0FDbkMsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEticVVuaXRTeXN0ZW0gfSBmcm9tICcuL2NvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBLQlFfSU5WQUxJRF9WQUxVRV9FUlJPUiA9ICdBcmd1bWVudCBcInZhbHVlXCIgbXVzdCBiZSBhIGZpbml0ZSBudW1iZXIhJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBXaWxsIGJlIHJlbW92ZWQgaW4gbmV4dCBtYWpvciByZWxlYXNlLiBVc2UgYGdldEZvcm1hdHRlZFNpemVQYXJ0c2AgaW5zdGVhZC5cbiAqIEBkb2NzLXByaXZhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IGZvcm1hdERhdGFTaXplID0gKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgcHJlY2lzaW9uOiBudW1iZXIsXG4gICAgc3lzdGVtOiBLYnFVbml0U3lzdGVtXG4pOiB7IHZhbHVlOiBzdHJpbmc7IHVuaXQ6IHN0cmluZyB9ID0+IHtcbiAgICBjb25zdCB7IHJlc3VsdCwgdW5pdCB9ID0gZ2V0SHVtYW5pemVkQnl0ZXModmFsdWUsIHN5c3RlbSk7XG4gICAgbGV0IHZvbHVtZTogc3RyaW5nO1xuXG4gICAgaWYgKHN5c3RlbS5hYmJyZXZpYXRpb25zWzBdID09PSB1bml0KSB7XG4gICAgICAgIHZvbHVtZSA9IHJlc3VsdC50b1N0cmluZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHZvbHVtZSA9IHJlc3VsdC50b0ZpeGVkKHByZWNpc2lvbikucmVwbGFjZSgvXFwuL2csICcsJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZvbHVtZSxcbiAgICAgICAgdW5pdFxuICAgIH07XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgYnl0ZSB2YWx1ZSBpbnRvIGxvY2FsZS1pbmRlcGVuZGVudCBmaWxlIHNpemUgcGFydHM6IG51bWVyaWMgdmFsdWUgYW5kIHVuaXQgYWJicmV2aWF0aW9uLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIHNpemUgaW4gYnl0ZXMuXG4gKiBAcGFyYW0gcHJlY2lzaW9uIC0gZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IChlLmcuLCBgMmAg4oaSIFwiMS4wMiBLQlwiKS5cbiAqIEBwYXJhbSBzeXN0ZW0gLSB1bml0IHN5c3RlbSBkZWZpbmluZyBhYmJyZXZpYXRpb25zIGFuZCBiYXNlIHNjYWxpbmcgKFNJL0lFQykuXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCB0aGUgZm9ybWF0dGVkIHNpemUgaW5mby5cbiAqXG4gKiBAZXhhbXBsZVxuICogZm9ybWF0RGF0YVNpemUoMTUwMCwgMiwgJ1NJJyk7IC8vIHsgdmFsdWU6IFwiMS41MFwiLCB1bml0OiBcIktCXCIgfVxuICovXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkU2l6ZVBhcnRzID0gKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgcHJlY2lzaW9uOiBudW1iZXIsXG4gICAgc3lzdGVtOiBLYnFVbml0U3lzdGVtXG4pOiB7IHZhbHVlOiBzdHJpbmc7IHVuaXQ6IHN0cmluZyB9ID0+IHtcbiAgICBjb25zdCB7IHJlc3VsdCwgdW5pdCB9ID0gZ2V0SHVtYW5pemVkQnl0ZXModmFsdWUsIHN5c3RlbSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBObyBwcmVjaXNpb24gZm9yIGJ5dGVzIChlLmcuLCBcIjUxMiBCXCIpXG4gICAgICAgIHZhbHVlOiB1bml0ID09PSBzeXN0ZW0uYWJicmV2aWF0aW9uc1swXSA/IHJlc3VsdC50b1N0cmluZygpIDogcmVzdWx0LnRvRml4ZWQocHJlY2lzaW9uKSxcbiAgICAgICAgdW5pdFxuICAgIH07XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGJ5dGVzIHRvIEtiLCBNYiwgR2JcbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIG51bWJlciBvZiBieXRlc1xuICogQHBhcmFtIHN5c3RlbSB0aGUgbWVhc3VyZW1lbnQgc3lzdGVtXG4gKiBAcGFyYW0gdGhyZXNob2xkIHRoZSBsb3dlciBjb3VudGluZyB0aHJlc2hvbGRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEh1bWFuaXplZEJ5dGVzID0gKFxuICAgIHZhbHVlOiBudW1iZXIsXG4gICAgc3lzdGVtOiBLYnFVbml0U3lzdGVtLFxuICAgIHRocmVzaG9sZD86IG51bWJlclxuKTogeyByZXN1bHQ6IG51bWJlcjsgdW5pdDogc3RyaW5nIH0gPT4ge1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoS0JRX0lOVkFMSURfVkFMVUVfRVJST1IpO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGN1bGF0ZWRUaHJlc2hvbGQgPSBOdW1iZXIuaXNGaW5pdGUodGhyZXNob2xkKSA/IHRocmVzaG9sZCA6IE1hdGgucG93KHN5c3RlbS5iYXNlLCBzeXN0ZW0ucG93ZXIpO1xuICAgIGNvbnN0IG9yZGVyT2ZNYWduaXR1ZGU6IG51bWJlciA9IE1hdGgucG93KHN5c3RlbS5iYXNlLCBzeXN0ZW0ucG93ZXIpO1xuXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gdmFsdWU7XG4gICAgbGV0IHN0ZXAgPSAwO1xuICAgIGNvbnN0IGxlbjogbnVtYmVyID0gc3lzdGVtLmFiYnJldmlhdGlvbnMubGVuZ3RoIC0gMTtcblxuICAgIHdoaWxlIChzdGVwIDwgbGVuKSB7XG4gICAgICAgIGlmIChjYWxjdWxhdGVkVGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgcmVzdWx0IDwgY2FsY3VsYXRlZFRocmVzaG9sZCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdGVwKys7XG4gICAgICAgIHJlc3VsdCA9IHZhbHVlIC8gTWF0aC5wb3cob3JkZXJPZk1hZ25pdHVkZSwgc3RlcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICB1bml0OiBzeXN0ZW0uYWJicmV2aWF0aW9uc1tzdGVwXVxuICAgIH07XG59O1xuIl19
|
|
@@ -2,11 +2,12 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { DateAdapter, KBQ_DATE_LOCALE } from '../datetime';
|
|
3
3
|
import { DateFormatter } from './date/formatter';
|
|
4
4
|
import { AbsoluteDateFormatterImpurePipe, AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterImpurePipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterImpurePipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterImpurePipe, AbsoluteShortDateTimeFormatterPipe, RangeDateFormatterImpurePipe, RangeDateFormatterPipe, RangeDateTimeFormatterImpurePipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterImpurePipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterImpurePipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterImpurePipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterImpurePipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterImpurePipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterImpurePipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterImpurePipe, RelativeShortDateTimeFormatterPipe } from './date/formatter.pipe';
|
|
5
|
+
import { KbqDataSizePipe } from './filesize';
|
|
5
6
|
import { KbqDecimalPipe, KbqRoundDecimalPipe, KbqTableNumberPipe } from './number/formatter';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export class KbqFormattersModule {
|
|
8
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
9
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
9
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormattersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqFormattersModule, declarations: [KbqDecimalPipe,
|
|
10
11
|
KbqRoundDecimalPipe,
|
|
11
12
|
KbqTableNumberPipe], imports: [AbsoluteDateFormatterPipe,
|
|
12
13
|
AbsoluteDateTimeFormatterPipe,
|
|
@@ -33,7 +34,8 @@ export class KbqFormattersModule {
|
|
|
33
34
|
RangeShortDateFormatterImpurePipe,
|
|
34
35
|
RangeDateTimeFormatterImpurePipe,
|
|
35
36
|
RangeShortDateTimeFormatterImpurePipe,
|
|
36
|
-
RangeMiddleDateTimeFormatterImpurePipe
|
|
37
|
+
RangeMiddleDateTimeFormatterImpurePipe,
|
|
38
|
+
KbqDataSizePipe], exports: [KbqDecimalPipe,
|
|
37
39
|
KbqRoundDecimalPipe,
|
|
38
40
|
KbqTableNumberPipe,
|
|
39
41
|
AbsoluteDateFormatterPipe,
|
|
@@ -61,10 +63,11 @@ export class KbqFormattersModule {
|
|
|
61
63
|
RangeShortDateFormatterImpurePipe,
|
|
62
64
|
RangeDateTimeFormatterImpurePipe,
|
|
63
65
|
RangeShortDateTimeFormatterImpurePipe,
|
|
64
|
-
RangeMiddleDateTimeFormatterImpurePipe
|
|
65
|
-
|
|
66
|
+
RangeMiddleDateTimeFormatterImpurePipe,
|
|
67
|
+
KbqDataSizePipe] }); }
|
|
68
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormattersModule, providers: [{ provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] }] }); }
|
|
66
69
|
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormattersModule, decorators: [{
|
|
68
71
|
type: NgModule,
|
|
69
72
|
args: [{
|
|
70
73
|
imports: [
|
|
@@ -93,7 +96,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
93
96
|
RangeShortDateFormatterImpurePipe,
|
|
94
97
|
RangeDateTimeFormatterImpurePipe,
|
|
95
98
|
RangeShortDateTimeFormatterImpurePipe,
|
|
96
|
-
RangeMiddleDateTimeFormatterImpurePipe
|
|
99
|
+
RangeMiddleDateTimeFormatterImpurePipe,
|
|
100
|
+
KbqDataSizePipe
|
|
97
101
|
],
|
|
98
102
|
declarations: [
|
|
99
103
|
KbqDecimalPipe,
|
|
@@ -129,12 +133,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
129
133
|
RangeShortDateFormatterImpurePipe,
|
|
130
134
|
RangeDateTimeFormatterImpurePipe,
|
|
131
135
|
RangeShortDateTimeFormatterImpurePipe,
|
|
132
|
-
RangeMiddleDateTimeFormatterImpurePipe
|
|
136
|
+
RangeMiddleDateTimeFormatterImpurePipe,
|
|
137
|
+
KbqDataSizePipe
|
|
133
138
|
],
|
|
134
139
|
providers: [{ provide: DateFormatter, deps: [DateAdapter, KBQ_DATE_LOCALE] }]
|
|
135
140
|
}]
|
|
136
141
|
}] });
|
|
137
142
|
export * from './date/formatter';
|
|
138
143
|
export * from './date/formatter.pipe';
|
|
144
|
+
export * from './filesize/index';
|
|
139
145
|
export * from './number/formatter';
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvZm9ybWF0dGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0gsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixvQ0FBb0MsRUFDcEMsOEJBQThCLEVBQzlCLG1DQUFtQyxFQUNuQyw2QkFBNkIsRUFDN0Isd0NBQXdDLEVBQ3hDLGtDQUFrQyxFQUNsQyw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3RCLGdDQUFnQyxFQUNoQywwQkFBMEIsRUFDMUIsc0NBQXNDLEVBQ3RDLGdDQUFnQyxFQUNoQyxpQ0FBaUMsRUFDakMsMkJBQTJCLEVBQzNCLHFDQUFxQyxFQUNyQywrQkFBK0IsRUFDL0IsK0JBQStCLEVBQy9CLHlCQUF5QixFQUN6QixtQ0FBbUMsRUFDbkMsNkJBQTZCLEVBQzdCLG9DQUFvQyxFQUNwQyw4QkFBOEIsRUFDOUIsd0NBQXdDLEVBQ3hDLGtDQUFrQyxFQUNyQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQXVFN0YsTUFBTSxPQUFPLG1CQUFtQjtrSUFBbkIsbUJBQW1CO21JQUFuQixtQkFBbUIsaUJBdEN4QixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLGtCQUFrQixhQS9CbEIseUJBQXlCO1lBQ3pCLDZCQUE2QjtZQUM3Qiw4QkFBOEI7WUFDOUIsa0NBQWtD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Q2hGOztBQUdELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIEtCUV9EQVRFX0xPQ0FMRSB9IGZyb20gJy4uL2RhdGV0aW1lJztcbmltcG9ydCB7IERhdGVGb3JtYXR0ZXIgfSBmcm9tICcuL2RhdGUvZm9ybWF0dGVyJztcbmltcG9ydCB7XG4gICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlclBpcGUsXG4gICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBBYnNvbHV0ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgIFJhbmdlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgIFJhbmdlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSZWxhdGl2ZURhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlRGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgUmVsYXRpdmVTaG9ydERhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICBSZWxhdGl2ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgIFJlbGF0aXZlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGVcbn0gZnJvbSAnLi9kYXRlL2Zvcm1hdHRlci5waXBlJztcbmltcG9ydCB7IEticURhdGFTaXplUGlwZSB9IGZyb20gJy4vZmlsZXNpemUnO1xuaW1wb3J0IHsgS2JxRGVjaW1hbFBpcGUsIEticVJvdW5kRGVjaW1hbFBpcGUsIEticVRhYmxlTnVtYmVyUGlwZSB9IGZyb20gJy4vbnVtYmVyL2Zvcm1hdHRlcic7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBBYnNvbHV0ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlU2hvcnRGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSZWxhdGl2ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJhbmdlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VNaWRkbGVEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEticURhdGFTaXplUGlwZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbXG4gICAgICAgIEticURlY2ltYWxQaXBlLFxuICAgICAgICBLYnFSb3VuZERlY2ltYWxQaXBlLFxuICAgICAgICBLYnFUYWJsZU51bWJlclBpcGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgS2JxRGVjaW1hbFBpcGUsXG4gICAgICAgIEticVJvdW5kRGVjaW1hbFBpcGUsXG4gICAgICAgIEticVRhYmxlTnVtYmVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVNob3J0Rm9ybWF0dGVyUGlwZSxcbiAgICAgICAgQWJzb2x1dGVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmFuZ2VNaWRkbGVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIEFic29sdXRlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBSZWxhdGl2ZVNob3J0RGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlRGF0ZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlU2hvcnREYXRlRm9ybWF0dGVySW1wdXJlUGlwZSxcbiAgICAgICAgUmFuZ2VEYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlU2hvcnREYXRlVGltZUZvcm1hdHRlckltcHVyZVBpcGUsXG4gICAgICAgIFJhbmdlTWlkZGxlRGF0ZVRpbWVGb3JtYXR0ZXJJbXB1cmVQaXBlLFxuICAgICAgICBLYnFEYXRhU2l6ZVBpcGVcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRGF0ZUZvcm1hdHRlciwgZGVwczogW0RhdGVBZGFwdGVyLCBLQlFfREFURV9MT0NBTEVdIH1dXG59KVxuZXhwb3J0IGNsYXNzIEticUZvcm1hdHRlcnNNb2R1bGUge31cblxuZXhwb3J0ICogZnJvbSAnLi9kYXRlL2Zvcm1hdHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUvZm9ybWF0dGVyLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9maWxlc2l6ZS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL251bWJlci9mb3JtYXR0ZXInO1xuIl19
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { coerceNumberProperty } from '@angular/cdk/coercion';
|
|
1
2
|
import { Inject, Injectable, InjectionToken, Optional, Pipe } from '@angular/core';
|
|
2
3
|
import { KBQ_DEFAULT_LOCALE_ID, KBQ_LOCALE_ID, KBQ_LOCALE_SERVICE, KbqLocaleService } from '../../locales';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
@@ -9,17 +10,28 @@ export const KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS = {
|
|
|
9
10
|
minimumFractionDigits: 0,
|
|
10
11
|
maximumFractionDigits: 3
|
|
11
12
|
};
|
|
13
|
+
/** Formats a number value according to locale and formatting options */
|
|
14
|
+
export function formatNumberWithLocale(value, formatter, options) {
|
|
15
|
+
const num = strToNumber(value);
|
|
16
|
+
if (!options?.viewGroupSeparator)
|
|
17
|
+
return formatter.format(num);
|
|
18
|
+
const numberFormatParts = formatter.formatToParts(num);
|
|
19
|
+
for (const numberFormatPart of numberFormatParts) {
|
|
20
|
+
if (numberFormatPart.type === 'group') {
|
|
21
|
+
numberFormatPart.value = options.viewGroupSeparator;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return numberFormatParts.map(({ value }) => value).join('');
|
|
25
|
+
}
|
|
12
26
|
function isEmpty(value) {
|
|
13
27
|
return value == null || value === '' || value !== value;
|
|
14
28
|
}
|
|
15
29
|
function strToNumber(value) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
if (typeof value !== 'number') {
|
|
30
|
+
const coerced = coerceNumberProperty(value, null);
|
|
31
|
+
if (coerced === null) {
|
|
20
32
|
throw new Error(`${value} is not a number`);
|
|
21
33
|
}
|
|
22
|
-
return
|
|
34
|
+
return coerced;
|
|
23
35
|
}
|
|
24
36
|
export const NUMBER_FORMAT_REGEXP = /^(\d+)?\.((\d+)(-(\d+))?(-(true|false))?)?$/;
|
|
25
37
|
const minIntGroupPosition = 1;
|
|
@@ -113,27 +125,23 @@ export class KbqDecimalPipe {
|
|
|
113
125
|
options.useGrouping = false;
|
|
114
126
|
}
|
|
115
127
|
try {
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
* But by default in es-LA locale is used `comma`.
|
|
119
|
-
* To reduce data manipulation, 'ru-RU' locale is used. */
|
|
120
|
-
if (currentLocale === 'es-LA') {
|
|
121
|
-
return Intl.NumberFormat.call(this, 'ru-RU', options).format(num);
|
|
122
|
-
}
|
|
123
|
-
return Intl.NumberFormat.call(this, currentLocale, options).format(num);
|
|
128
|
+
const formatter = new Intl.NumberFormat(currentLocale, options);
|
|
129
|
+
return formatNumberWithLocale(value, formatter, this.localeService?.locales[currentLocale]?.formatters.number.decimal);
|
|
124
130
|
}
|
|
125
131
|
catch (error) {
|
|
126
132
|
throw Error(`InvalidPipeArgument: KbqDecimalPipe for pipe '${JSON.stringify(error.message)}'`);
|
|
127
133
|
}
|
|
128
134
|
}
|
|
129
135
|
isSpecialFormatForRULocale(locale, value, grouping) {
|
|
130
|
-
return ['ru', 'ru-RU'].includes(locale) &&
|
|
136
|
+
return (['ru', 'ru-RU'].includes(locale) &&
|
|
137
|
+
grouping === undefined &&
|
|
138
|
+
Math.abs(value) < defaultValueForGroupingInRULocale);
|
|
131
139
|
}
|
|
132
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
133
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.
|
|
134
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
140
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
141
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, name: "kbqNumber", pure: false }); }
|
|
142
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, providedIn: 'root' }); }
|
|
135
143
|
}
|
|
136
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, decorators: [{
|
|
137
145
|
type: Injectable,
|
|
138
146
|
args: [{ providedIn: 'root' }]
|
|
139
147
|
}, {
|
|
@@ -191,24 +199,18 @@ export class KbqTableNumberPipe {
|
|
|
191
199
|
...parsedDigitsInfo
|
|
192
200
|
};
|
|
193
201
|
try {
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
-
* But by default in es-LA locale is used `comma`.
|
|
197
|
-
* To reduce data manipulation, 'ru-RU' locale is used. */
|
|
198
|
-
if (currentLocale === 'es-LA') {
|
|
199
|
-
return Intl.NumberFormat.call(this, 'ru-RU', options).format(num);
|
|
200
|
-
}
|
|
201
|
-
return Intl.NumberFormat.call(this, currentLocale, options).format(num);
|
|
202
|
+
const formatter = new Intl.NumberFormat(currentLocale, options);
|
|
203
|
+
return formatNumberWithLocale(value, formatter, this.localeService?.locales[currentLocale]?.formatters.number.decimal);
|
|
202
204
|
}
|
|
203
205
|
catch (error) {
|
|
204
206
|
throw Error(`InvalidPipeArgument: KbqTableNumberPipe for pipe '${JSON.stringify(error.message)}'`);
|
|
205
207
|
}
|
|
206
208
|
}
|
|
207
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
208
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.
|
|
209
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
209
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
210
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, name: "kbqTableNumber", pure: false }); }
|
|
211
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, providedIn: 'root' }); }
|
|
210
212
|
}
|
|
211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
213
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, decorators: [{
|
|
212
214
|
type: Injectable,
|
|
213
215
|
args: [{ providedIn: 'root' }]
|
|
214
216
|
}, {
|
|
@@ -244,7 +246,7 @@ export class KbqRoundDecimalPipe {
|
|
|
244
246
|
return null;
|
|
245
247
|
}
|
|
246
248
|
const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;
|
|
247
|
-
this.roundingOptions = this.localeService
|
|
249
|
+
this.roundingOptions = this.localeService?.locales[currentLocale].formatters.number.rounding;
|
|
248
250
|
try {
|
|
249
251
|
const num = strToNumber(value);
|
|
250
252
|
const unit = this.calculateUnit(num);
|
|
@@ -321,11 +323,11 @@ export class KbqRoundDecimalPipe {
|
|
|
321
323
|
});
|
|
322
324
|
return currentUnit;
|
|
323
325
|
}
|
|
324
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
325
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.
|
|
326
|
-
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.
|
|
326
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
327
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, name: "kbqRoundNumber", pure: false }); }
|
|
328
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, providedIn: 'root' }); }
|
|
327
329
|
}
|
|
328
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
330
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, decorators: [{
|
|
329
331
|
type: Injectable,
|
|
330
332
|
args: [{ providedIn: 'root' }]
|
|
331
333
|
}, {
|
|
@@ -342,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
342
344
|
type: Inject,
|
|
343
345
|
args: [KBQ_LOCALE_SERVICE]
|
|
344
346
|
}] }] });
|
|
345
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvbnVtYmVyL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRTNHLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFTLDJCQUEyQixDQUFDLENBQUM7QUFFcEcsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQXFCO0lBQ2xFLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLG9CQUFvQixFQUFFLENBQUM7SUFDdkIscUJBQXFCLEVBQUUsQ0FBQztJQUN4QixxQkFBcUIsRUFBRSxDQUFDO0NBQzNCLENBQUM7QUFFRixTQUFTLE9BQU8sQ0FBQyxLQUFVO0lBQ3ZCLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUM7QUFDNUQsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQXNCO0lBQ3ZDLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pFLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLGtCQUFrQixDQUFD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OzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLQlFfREVGQVVMVF9MT0NBTEVfSUQsIEtCUV9MT0NBTEVfSUQsIEtCUV9MT0NBTEVfU0VSVklDRSwgS2JxTG9jYWxlU2VydmljZSB9IGZyb20gJy4uLy4uL2xvY2FsZXMnO1xuXG5leHBvcnQgY29uc3QgS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdLYnFOdW1iZXJGb3JtYXR0ZXJPcHRpb25zJyk7XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM6IFBhcnNlZERpZ2l0c0luZm8gPSB7XG4gICAgdXNlR3JvdXBpbmc6IHRydWUsXG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IDEsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogM1xufTtcblxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnIHx8IHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gc3RyVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkgLSBwYXJzZUZsb2F0KHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3ZhbHVlfSBpcyBub3QgYSBudW1iZXJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfRk9STUFUX1JFR0VYUCA9IC9eKFxcZCspP1xcLigoXFxkKykoLShcXGQrKSk/KC0odHJ1ZXxmYWxzZSkpPyk/JC87XG5cbmNvbnN0IG1pbkludEdyb3VwUG9zaXRpb24gPSAxO1xuY29uc3QgbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uID0gMztcbmNvbnN0IG1heEZyYWN0aW9uR3JvdXBQb3NpdGlvbiA9IDU7XG5jb25zdCB1c2VHcm91cGluZ1Bvc2l0aW9uID0gNztcblxuaW50ZXJmYWNlIE51bWJlckZvcm1hdE9wdGlvbnMge1xuICAgIHVzZUdyb3VwaW5nOiBib29sZWFuO1xuXG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IG51bWJlcjtcblxuICAgIGxvY2FsZU1hdGNoZXI/OiBzdHJpbmc7XG4gICAgc3R5bGU/OiBzdHJpbmc7XG5cbiAgICBjdXJyZW5jeT86IHN0cmluZztcbiAgICBjdXJyZW5jeURpc3BsYXk/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSb3VuZERlY2ltYWxPcHRpb25zIHtcbiAgICBzZXBhcmF0b3I6IHN0cmluZztcbiAgICBncm91cFNlcGFyYXRvcjogc3RyaW5nO1xuICAgIHRob3VzYW5kcz86IHN0cmluZztcbiAgICB0ZW5UaG91c2FuZD86IHN0cmluZztcbiAgICBtaWxsaW9uPzogc3RyaW5nO1xuICAgIG9uZUh1bmRyZWRNaWxsaW9ucz86IHN0cmluZztcbiAgICBiaWxsaW9uPzogc3RyaW5nO1xuICAgIHRyaWxsaW9uOiBzdHJpbmc7XG4gICAgcnRsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgUk9VTkRJTkdfVU5JVFMgPSB7XG4gICAgdGhvdXNhbmQ6IDFlMyxcbiAgICB0ZW5UaG91c2FuZDogMTAgKiAxZTMsXG4gICAgbWlsbGlvbjogMWU2LFxuICAgIG9uZUh1bmRyZWRNaWxsaW9uczogMTAwICogMWU2LFxuICAgIGJpbGxpb246IDFlOSxcbiAgICB0cmlsbGlvbjogMWUxMlxufTtcblxuY29uc3QgaW50ZXJ2YWxzQ29uZmlnID0ge1xuICAgIHN1cHBvcnRlZExhbmd1YWdlczogWydydS1SVScsICdlbi1VUycsICdlcy1MQScsICdwdC1CUicsICdmYS1JUiddLFxuICAgIGludGVydmFsczogW1xuICAgICAgICB7IHN0YXJ0UmFuZ2U6IDEsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy50aG91c2FuZCB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGVuVGhvdXNhbmQsIHByZWNpc2lvbjogMSB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRlblRob3VzYW5kLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24sIGVuZFJhbmdlOiBST1VORElOR19VTklUUy5taWxsaW9uICogMTAsIHByZWNpc2lvbjogMSB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24gKiAxMCwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLmJpbGxpb24gfVxuICAgIF1cbn07XG5cbmNsYXNzIFBhcnNlZERpZ2l0c0luZm8ge1xuICAgIHVzZUdyb3VwaW5nOiBib29sZWFuO1xuICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiBudW1iZXI7XG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRWYWx1ZUZvckdyb3VwaW5nSW5SVUxvY2FsZTogbnVtYmVyID0gMTAwMDA7XG5cbmZ1bmN0aW9uIHBhcnNlRGlnaXRzSW5mbyhkaWdpdHNJbmZvOiBzdHJpbmcpOiBQYXJzZWREaWdpdHNJbmZvIHtcbiAgICBjb25zdCBwYXJ0cyA9IGRpZ2l0c0luZm8ubWF0Y2goTlVNQkVSX0ZPUk1BVF9SRUdFWFApO1xuXG4gICAgaWYgKHBhcnRzID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtkaWdpdHNJbmZvfSBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbmZvYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWluSW50UGFydCA9IHBhcnRzW21pbkludEdyb3VwUG9zaXRpb25dO1xuICAgIGNvbnN0IG1pbkZyYWN0aW9uUGFydCA9IHBhcnRzW21pbkZyYWN0aW9uR3JvdXBQb3NpdGlvbl07XG4gICAgY29uc3QgbWF4RnJhY3Rpb25QYXJ0ID0gcGFydHNbbWF4RnJhY3Rpb25Hcm91cFBvc2l0aW9uXTtcbiAgICBjb25zdCB1c2VHcm91cGluZ1BhcnQgPSBwYXJ0c1t1c2VHcm91cGluZ1Bvc2l0aW9uXTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBQYXJzZWREaWdpdHNJbmZvKCk7XG5cbiAgICBpZiAobWluSW50UGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IHBhcnNlSW50KG1pbkludFBhcnQpO1xuICAgIH1cblxuICAgIGlmIChtaW5GcmFjdGlvblBhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID0gcGFyc2VJbnQobWluRnJhY3Rpb25QYXJ0KTtcbiAgICB9XG5cbiAgICBpZiAobWF4RnJhY3Rpb25QYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHBhcnNlSW50KG1heEZyYWN0aW9uUGFydCk7XG4gICAgfSBlbHNlIGlmIChtaW5GcmFjdGlvblBhcnQgIT0gbnVsbCAmJiByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID4gcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cykge1xuICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBpZiAodXNlR3JvdXBpbmdQYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0LnVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmdQYXJ0ID09PSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbkBQaXBlKHsgbmFtZTogJ2ticU51bWJlcicsIHB1cmU6IGZhbHNlIH0pXG5leHBvcnQgY2xhc3MgS2JxRGVjaW1hbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWREaWdpdHNJbmZvXG4gICAgKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBAcGFyYW0gZGlnaXRzSW5mbyBEZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9wdGlvbnMsIHNwZWNpZmllZCBieSBhIHN0cmluZ1xuICAgICAqIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ojxicj5cbiAgICAgKiA8Y29kZT57bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9PC9jb2RlPi5cbiAgICAgKiAgIC0gYG1pbkludGVnZXJEaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDFgLlxuICAgICAqICAgLSBgbWluRnJhY3Rpb25EaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDBgLlxuICAgICAqICAgLSBgbWF4RnJhY3Rpb25EaWdpdHNgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDNgLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLlxuICAgICAqIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBgS0JRX0xPQ0FMRV9JRGAsIHdoaWNoIGlzIGBydWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGlnaXRzSW5mbz86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTnVtYmVyRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLnBhcnNlZERpZ2l0c0luZm9cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5pc1NwZWNpYWxGb3JtYXRGb3JSVUxvY2FsZShjdXJyZW50TG9jYWxlLCB2YWx1ZSwgcGFyc2VkRGlnaXRzSW5mbz8udXNlR3JvdXBpbmcpKSB7XG4gICAgICAgICAgICBvcHRpb25zLnVzZUdyb3VwaW5nID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuXG4gICAgICAgICAgICAvKiBHdWlkZWxpbmUgcmVxdWlyZXMgZm9yIGdyb3VwIHNlcGFyYXRvciB0byBiZSBgc3BhY2VgLCBhcyBpbiAncnUtUlUnIGxvY2FsZS5cbiAgICAgICAgICAgICAqIEJ1dCBieSBkZWZhdWx0IGluIGVzLUxBIGxvY2FsZSBpcyB1c2VkIGBjb21tYWAuXG4gICAgICAgICAgICAgKiBUbyByZWR1Y2UgZGF0YSBtYW5pcHVsYXRpb24sICdydS1SVScgbG9jYWxlIGlzIHVzZWQuICovXG4gICAgICAgICAgICBpZiAoY3VycmVudExvY2FsZSA9PT0gJ2VzLUxBJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHRoaXMsICdydS1SVScsIG9wdGlvbnMpLmZvcm1hdChudW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCBvcHRpb25zKS5mb3JtYXQobnVtKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWRQaXBlQXJndW1lbnQ6IEticURlY2ltYWxQaXBlIGZvciBwaXBlICcke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfSdgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU3BlY2lhbEZvcm1hdEZvclJVTG9jYWxlKGxvY2FsZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyLCBncm91cGluZz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFsncnUnLCAncnUtUlUnXS5pbmNsdWRlcyhsb2NhbGUpICYmIGdyb3VwaW5nID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPCBkZWZhdWx0VmFsdWVGb3JHcm91cGluZ0luUlVMb2NhbGU7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxVGFibGVOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticVRhYmxlTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfSUQpIHByaXZhdGUgaWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UpIHByaXZhdGUgbG9jYWxlU2VydmljZTogS2JxTG9jYWxlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFBhcnNlZERpZ2l0c0luZm9cbiAgICApIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zIHx8IEtCUV9OVU1CRVJfRk9STUFUVEVSX0RFRkFVTFRfT1BUSU9OUztcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMuc3Vic2NyaWJlKChuZXdJZDogc3RyaW5nKSA9PiAodGhpcy5pZCA9IG5ld0lkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkLlxuICAgICAqIEBwYXJhbSBkaWdpdHNJbmZvIERlY2ltYWwgcmVwcmVzZW50YXRpb24gb3B0aW9ucywgc3BlY2lmaWVkIGJ5IGEgc3RyaW5nXG4gICAgICogaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6PGJyPlxuICAgICAqIDxjb2RlPnttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c308L2NvZGU+LlxuICAgICAqICAgLSBgbWluSW50ZWdlckRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMWAuXG4gICAgICogICAtIGBtaW5GcmFjdGlvbkRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMGAuXG4gICAgICogICAtIGBtYXhGcmFjdGlvbkRpZ2l0c2A6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgM2AuXG4gICAgICogQHBhcmFtIGxvY2FsZSBBIGxvY2FsZSBjb2RlIGZvciB0aGUgbG9jYWxlIGZvcm1hdCBydWxlcyB0byB1c2UuXG4gICAgICogV2hlbiBub3Qgc3VwcGxpZWQsIHVzZXMgdGhlIHZhbHVlIG9mIGBLQlFfTE9DQUxFX0lEYCwgd2hpY2ggaXMgYHJ1YCBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5pZCB8fCBLQlFfREVGQVVMVF9MT0NBTEVfSUQ7XG5cbiAgICAgICAgbGV0IHBhcnNlZERpZ2l0c0luZm87XG5cbiAgICAgICAgaWYgKGRpZ2l0c0luZm8pIHtcbiAgICAgICAgICAgIHBhcnNlZERpZ2l0c0luZm8gPSBwYXJzZURpZ2l0c0luZm8oZGlnaXRzSW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zOiBOdW1iZXJGb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgLi4ucGFyc2VkRGlnaXRzSW5mb1xuICAgICAgICB9O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBzdHJUb051bWJlcih2YWx1ZSk7XG5cbiAgICAgICAgICAgIC8qIEd1aWRlbGluZSByZXF1aXJlcyBmb3IgZ3JvdXAgc2VwYXJhdG9yIHRvIGJlIGBzcGFjZWAsIGFzIGluICdydS1SVScgbG9jYWxlLlxuICAgICAgICAgICAgICogQnV0IGJ5IGRlZmF1bHQgaW4gZXMtTEEgbG9jYWxlIGlzIHVzZWQgYGNvbW1hYC5cbiAgICAgICAgICAgICAqIFRvIHJlZHVjZSBkYXRhIG1hbmlwdWxhdGlvbiwgJ3J1LVJVJyBsb2NhbGUgaXMgdXNlZC4gKi9cbiAgICAgICAgICAgIGlmIChjdXJyZW50TG9jYWxlID09PSAnZXMtTEEnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEludGwuTnVtYmVyRm9ybWF0LmNhbGwodGhpcywgJ3J1LVJVJywgb3B0aW9ucykuZm9ybWF0KG51bSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHRoaXMsIGN1cnJlbnRMb2NhbGUsIG9wdGlvbnMpLmZvcm1hdChudW0pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogS2JxVGFibGVOdW1iZXJQaXBlIGZvciBwaXBlICcke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfSdgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzV2l0aGluKHN0YXJ0UmFuZ2U6IG51bWJlciwgZW5kUmFuZ2U6IG51bWJlciwgdmFsdWVUb0NoZWNrOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhcnRSYW5nZSA8PSB2YWx1ZVRvQ2hlY2sgJiYgdmFsdWVUb0NoZWNrIDwgZW5kUmFuZ2U7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5AUGlwZSh7IG5hbWU6ICdrYnFSb3VuZE51bWJlcicsIHB1cmU6IGZhbHNlIH0pXG5leHBvcnQgY2xhc3MgS2JxUm91bmREZWNpbWFsUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHJvdW5kaW5nT3B0aW9uczogUm91bmREZWNpbWFsT3B0aW9ucztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfSUQpIHByaXZhdGUgaWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UpIHByaXZhdGUgbG9jYWxlU2VydmljZTogS2JxTG9jYWxlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMuc3Vic2NyaWJlKChuZXdJZDogc3RyaW5nKSA9PiAodGhpcy5pZCA9IG5ld0lkKSk7XG4gICAgfVxuXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGxvY2FsZT86IHN0cmluZyk6IGFueSB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlOiBzdHJpbmcgPSBsb2NhbGUgfHwgdGhpcy5pZCB8fCBLQlFfREVGQVVMVF9MT0NBTEVfSUQ7XG5cbiAgICAgICAgdGhpcy5yb3VuZGluZ09wdGlvbnMgPSB0aGlzLmxvY2FsZVNlcnZpY2UubG9jYWxlc1tjdXJyZW50TG9jYWxlXS5mb3JtYXR0ZXJzLm51bWJlci5yb3VuZGluZztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuY2FsY3VsYXRlVW5pdChudW0pO1xuXG4gICAgICAgICAgICBpZiAoIXVuaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQobnVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcnRzOiB7IG51bT86IG51bWJlcjsgZnJhY3Rpb24/OiBudW1iZXIgfSA9IHt9O1xuXG4gICAgICAgICAgICBpZiAoaW50ZXJ2YWxzQ29uZmlnLnN1cHBvcnRlZExhbmd1YWdlcy5pbmNsdWRlcyhjdXJyZW50TG9jYWxlKSkge1xuICAgICAgICAgICAgICAgIGludGVydmFsc0NvbmZpZy5pbnRlcnZhbHMuZmluZCgoeyBzdGFydFJhbmdlLCBlbmRSYW5nZSwgcHJlY2lzaW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2l0aGluID0gaXNXaXRoaW4oc3RhcnRSYW5nZSwgZW5kUmFuZ2UsIG51bSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWNpc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCA9PT0gJ3Rob3VzYW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiBNYXRoLnRydW5jKG51bSAvIFJPVU5ESU5HX1VOSVRTW3VuaXRdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uOiB0aGlzLmNhbGN1bGF0ZURlY2ltYWwobnVtLCBST1VORElOR19VTklUU1t1bml0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSB7IG51bTogTWF0aC5yb3VuZChudW0gLyBST1VORElOR19VTklUU1t1bml0XSkgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aXRoaW47XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMubnVtXG4gICAgICAgICAgICAgICAgPyBwYXJ0c1xuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIG51bTogTWF0aC50cnVuYyhudW0gLyBST1VORElOR19VTklUU1t1bml0XSksXG4gICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb246IHRoaXMuY2FsY3VsYXRlRGVjaW1hbChudW0sIFJPVU5ESU5HX1VOSVRTW3VuaXRdKVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBhcnRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJ0c1trZXldID0gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQocGFydHNba2V5XSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlZFZhbHVlID0gcGFydHMuZnJhY3Rpb25cbiAgICAgICAgICAgICAgICA/IGAke3BhcnRzLm51bX0ke3RoaXMucm91bmRpbmdPcHRpb25zLmdyb3VwU2VwYXJhdG9yfSR7cGFydHMuZnJhY3Rpb259YFxuICAgICAgICAgICAgICAgIDogYCR7cGFydHMubnVtfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtjYWxjdWxhdGVkVmFsdWV9JHt0aGlzLnJvdW5kaW5nT3B0aW9ucy5zZXBhcmF0b3J9JHt0aGlzLnJvdW5kaW5nT3B0aW9uc1t1bml0XX1gO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogS2JxUm91bmREZWNpbWFsUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZURlY2ltYWwobnVtOiBudW1iZXIsIGRpdmlkZXI6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgoKG51bSAvIGRpdmlkZXIpICUgMSkgKiAxMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMiAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxNTAwLi4uMjUwMClcbiAgICAgKlxuICAgICAqIDIsMCAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxOTUwLi4uMjA1MClcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGRpdmlkZWRWYWx1ZSA9IG51bSAvIFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kO1xuICAgICAgICBjb25zdCBkaXYgPSBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSkgKiBST1VORElOR19VTklUUy50aG91c2FuZDtcbiAgICAgICAgY29uc3QgZmlmdHkgPSA1MDtcblxuICAgICAgICByZXR1cm4gaXNXaXRoaW4oZGl2IC0gZmlmdHksIGRpdiArIGZpZnR5LCBudW0pXG4gICAgICAgICAgICA/IHsgbnVtOiBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSksIGZyYWN0aW9uOiAwIH1cbiAgICAgICAgICAgIDogeyBudW06IE1hdGgucm91bmQoZGl2aWRlZFZhbHVlKSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlVW5pdChudW06IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBjdXJyZW50VW5pdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBsb2NhbGl6ZWRPcHRpb25zID0gT2JqZWN0LmtleXModGhpcy5yb3VuZGluZ09wdGlvbnMpO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKFJPVU5ESU5HX1VOSVRTKS5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvY2FsaXplZE9wdGlvbnMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobnVtIC8gUk9VTkRJTkdfVU5JVFNba2V5XSA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFVuaXQgPSBrZXk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY3VycmVudFVuaXQ7XG4gICAgfVxufVxuIl19
|
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvbnVtYmVyL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUNILHFCQUFxQixFQUNyQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVuQixNQUFNLGVBQWUsQ0FBQzs7O0FBRXZCLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFtQiwyQkFBMkIsQ0FBQyxDQUFDO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFxQjtJQUNsRSxXQUFXLEVBQUUsSUFBSTtJQUNqQixvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIscUJBQXFCLEVBQUUsQ0FBQztDQUMzQixDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsS0FBYyxFQUNkLFNBQTRCLEVBQzVCLE9BQWdDO0lBRWhDLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUvQixJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQjtRQUFFLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvRCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdkQsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDL0MsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUss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O1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO2tJQTdHUSxtQkFBbUIsa0JBSUosYUFBYSw2QkFDYixrQkFBa0I7Z0lBTGpDLG1CQUFtQjtzSUFBbkIsbUJBQW1CLGNBRk4sTUFBTTs7NEZBRW5CLG1CQUFtQjtrQkFGL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7OzBCQUtwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEtCUV9ERUZBVUxUX0xPQ0FMRV9JRCxcbiAgICBLQlFfTE9DQUxFX0lELFxuICAgIEtCUV9MT0NBTEVfU0VSVklDRSxcbiAgICBLYnFMb2NhbGVTZXJ2aWNlLFxuICAgIEticU51bWJlckZvcm1hdE9wdGlvbnNcbn0gZnJvbSAnLi4vLi4vbG9jYWxlcyc7XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFBhcnNlZERpZ2l0c0luZm8+KCdLYnFOdW1iZXJGb3JtYXR0ZXJPcHRpb25zJyk7XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM6IFBhcnNlZERpZ2l0c0luZm8gPSB7XG4gICAgdXNlR3JvdXBpbmc6IHRydWUsXG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IDEsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogM1xufTtcblxuLyoqIEZvcm1hdHMgYSBudW1iZXIgdmFsdWUgYWNjb3JkaW5nIHRvIGxvY2FsZSBhbmQgZm9ybWF0dGluZyBvcHRpb25zICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TnVtYmVyV2l0aExvY2FsZShcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBmb3JtYXR0ZXI6IEludGwuTnVtYmVyRm9ybWF0LFxuICAgIG9wdGlvbnM/OiBLYnFOdW1iZXJGb3JtYXRPcHRpb25zXG4pOiBzdHJpbmcge1xuICAgIGNvbnN0IG51bSA9IHN0clRvTnVtYmVyKHZhbHVlKTtcblxuICAgIGlmICghb3B0aW9ucz8udmlld0dyb3VwU2VwYXJhdG9yKSByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChudW0pO1xuXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0UGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhudW0pO1xuXG4gICAgZm9yIChjb25zdCBudW1iZXJGb3JtYXRQYXJ0IG9mIG51bWJlckZvcm1hdFBhcnRzKSB7XG4gICAgICAgIGlmIChudW1iZXJGb3JtYXRQYXJ0LnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdFBhcnQudmFsdWUgPSBvcHRpb25zLnZpZXdHcm91cFNlcGFyYXRvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudW1iZXJGb3JtYXRQYXJ0cy5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIFNwZWNpYWwgY29udHJhY3QgYmV0d2VlbiBgS2JxRGVjaW1hbFBpcGVgIGFuZCBgS2JxVGFibGVOdW1iZXJQaXBlYCxcbiAqIHNvIHRoZXkgY2FuIGJlIGludGVyY2hhbmdlYWJsZSBpbiB0aGUgY2FzZXMgb2YgdXNhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYnFOdW1lcmljUGlwZSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiB1bmtub3duLCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgIT09IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBzdHJUb051bWJlcih2YWx1ZTogdW5rbm93bik6IG51bWJlciB7XG4gICAgY29uc3QgY29lcmNlZCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCBudWxsKTtcblxuICAgIGlmIChjb2VyY2VkID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt2YWx1ZX0gaXMgbm90IGEgbnVtYmVyYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZXJjZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfRk9STUFUX1JFR0VYUCA9IC9eKFxcZCspP1xcLigoXFxkKykoLShcXGQrKSk/KC0odHJ1ZXxmYWxzZSkpPyk/JC87XG5cbmNvbnN0IG1pbkludEdyb3VwUG9zaXRpb24gPSAxO1xuY29uc3QgbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uID0gMztcbmNvbnN0IG1heEZyYWN0aW9uR3JvdXBQb3NpdGlvbiA9IDU7XG5jb25zdCB1c2VHcm91cGluZ1Bvc2l0aW9uID0gNztcblxuaW50ZXJmYWNlIFJvdW5kRGVjaW1hbE9wdGlvbnMge1xuICAgIHNlcGFyYXRvcjogc3RyaW5nO1xuICAgIGdyb3VwU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgdGhvdXNhbmRzPzogc3RyaW5nO1xuICAgIHRlblRob3VzYW5kPzogc3RyaW5nO1xuICAgIG1pbGxpb24/OiBzdHJpbmc7XG4gICAgb25lSHVuZHJlZE1pbGxpb25zPzogc3RyaW5nO1xuICAgIGJpbGxpb24/OiBzdHJpbmc7XG4gICAgdHJpbGxpb246IHN0cmluZztcbiAgICBydGw/OiBib29sZWFuO1xufVxuXG5jb25zdCBST1VORElOR19VTklUUyA9IHtcbiAgICB0aG91c2FuZDogMWUzLFxuICAgIHRlblRob3VzYW5kOiAxMCAqIDFlMyxcbiAgICBtaWxsaW9uOiAxZTYsXG4gICAgb25lSHVuZHJlZE1pbGxpb25zOiAxMDAgKiAxZTYsXG4gICAgYmlsbGlvbjogMWU5LFxuICAgIHRyaWxsaW9uOiAxZTEyXG59O1xuXG5jb25zdCBpbnRlcnZhbHNDb25maWcgPSB7XG4gICAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBbJ3J1LVJVJywgJ2VuLVVTJywgJ2VzLUxBJywgJ3B0LUJSJywgJ2ZhLUlSJ10sXG4gICAgaW50ZXJ2YWxzOiBbXG4gICAgICAgIHsgc3RhcnRSYW5nZTogMSwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGhvdXNhbmQsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy50ZW5UaG91c2FuZCwgcHJlY2lzaW9uOiAxIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGVuVGhvdXNhbmQsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy5taWxsaW9uIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24gKiAxMCwgcHJlY2lzaW9uOiAxIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiAqIDEwLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMuYmlsbGlvbiB9XG4gICAgXVxufTtcblxuY2xhc3MgUGFyc2VkRGlnaXRzSW5mbyB7XG4gICAgdXNlR3JvdXBpbmc6IGJvb2xlYW47XG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFZhbHVlRm9yR3JvdXBpbmdJblJVTG9jYWxlOiBudW1iZXIgPSAxMDAwMDtcblxuZnVuY3Rpb24gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm86IHN0cmluZyk6IFBhcnNlZERpZ2l0c0luZm8ge1xuICAgIGNvbnN0IHBhcnRzID0gZGlnaXRzSW5mby5tYXRjaChOVU1CRVJfRk9STUFUX1JFR0VYUCk7XG5cbiAgICBpZiAocGFydHMgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2RpZ2l0c0luZm99IGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluZm9gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtaW5JbnRQYXJ0ID0gcGFydHNbbWluSW50R3JvdXBQb3NpdGlvbl07XG4gICAgY29uc3QgbWluRnJhY3Rpb25QYXJ0ID0gcGFydHNbbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uXTtcbiAgICBjb25zdCBtYXhGcmFjdGlvblBhcnQgPSBwYXJ0c1ttYXhGcmFjdGlvbkdyb3VwUG9zaXRpb25dO1xuICAgIGNvbnN0IHVzZUdyb3VwaW5nUGFydCA9IHBhcnRzW3VzZUdyb3VwaW5nUG9zaXRpb25dO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFBhcnNlZERpZ2l0c0luZm8oKTtcblxuICAgIGlmIChtaW5JbnRQYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gcGFyc2VJbnQobWluSW50UGFydCk7XG4gICAgfVxuXG4gICAgaWYgKG1pbkZyYWN0aW9uUGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBwYXJzZUludChtaW5GcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIGlmIChtYXhGcmFjdGlvblBhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gcGFyc2VJbnQobWF4RnJhY3Rpb25QYXJ0KTtcbiAgICB9IGVsc2UgaWYgKG1pbkZyYWN0aW9uUGFydCAhPSBudWxsICYmIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPiByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7XG4gICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIGlmICh1c2VHcm91cGluZ1BhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQudXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZ1BhcnQgPT09ICd0cnVlJztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxTnVtYmVyJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBLYnFEZWNpbWFsUGlwZSBpbXBsZW1lbnRzIEticU51bWVyaWNQaXBlLCBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWREaWdpdHNJbmZvXG4gICAgKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBAcGFyYW0gZGlnaXRzSW5mbyBEZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9wdGlvbnMsIHNwZWNpZmllZCBieSBhIHN0cmluZ1xuICAgICAqIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ojxicj5cbiAgICAgKiA8Y29kZT57bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9PC9jb2RlPi5cbiAgICAgKiAgIC0gYG1pbkludGVnZXJEaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDFgLlxuICAgICAqICAgLSBgbWluRnJhY3Rpb25EaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDBgLlxuICAgICAqICAgLSBgbWF4RnJhY3Rpb25EaWdpdHNgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDNgLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLlxuICAgICAqIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBgS0JRX0xPQ0FMRV9JRGAsIHdoaWNoIGlzIGBydWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGlnaXRzSW5mbz86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvOiBQYXJzZWREaWdpdHNJbmZvIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgLi4ucGFyc2VkRGlnaXRzSW5mb1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzU3BlY2lhbEZvcm1hdEZvclJVTG9jYWxlKGN1cnJlbnRMb2NhbGUsIHZhbHVlLCBwYXJzZWREaWdpdHNJbmZvPy51c2VHcm91cGluZykpIHtcbiAgICAgICAgICAgIG9wdGlvbnMudXNlR3JvdXBpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoY3VycmVudExvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJXaXRoTG9jYWxlKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmxvY2FsZXNbY3VycmVudExvY2FsZV0/LmZvcm1hdHRlcnMubnVtYmVyLmRlY2ltYWxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiBLYnFEZWNpbWFsUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NwZWNpYWxGb3JtYXRGb3JSVUxvY2FsZShsb2NhbGU6IHN0cmluZywgdmFsdWU6IG51bWJlciwgZ3JvdXBpbmc/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBbJ3J1JywgJ3J1LVJVJ10uaW5jbHVkZXMobG9jYWxlKSAmJlxuICAgICAgICAgICAgZ3JvdXBpbmcgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgTWF0aC5hYnModmFsdWUpIDwgZGVmYXVsdFZhbHVlRm9yR3JvdXBpbmdJblJVTG9jYWxlXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxVGFibGVOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticVRhYmxlTnVtYmVyUGlwZSBpbXBsZW1lbnRzIEticU51bWVyaWNQaXBlLCBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWREaWdpdHNJbmZvXG4gICAgKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBAcGFyYW0gZGlnaXRzSW5mbyBEZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9wdGlvbnMsIHNwZWNpZmllZCBieSBhIHN0cmluZ1xuICAgICAqIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ojxicj5cbiAgICAgKiA8Y29kZT57bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9PC9jb2RlPi5cbiAgICAgKiAgIC0gYG1pbkludGVnZXJEaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDFgLlxuICAgICAqICAgLSBgbWluRnJhY3Rpb25EaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDBgLlxuICAgICAqICAgLSBgbWF4RnJhY3Rpb25EaWdpdHNgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDNgLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLlxuICAgICAqIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBgS0JRX0xPQ0FMRV9JRGAsIHdoaWNoIGlzIGBydWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGlnaXRzSW5mbz86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvOiBQYXJzZWREaWdpdHNJbmZvIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgLi4ucGFyc2VkRGlnaXRzSW5mb1xuICAgICAgICB9O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoY3VycmVudExvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJXaXRoTG9jYWxlKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmxvY2FsZXNbY3VycmVudExvY2FsZV0/LmZvcm1hdHRlcnMubnVtYmVyLmRlY2ltYWxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiBLYnFUYWJsZU51bWJlclBpcGUgZm9yIHBpcGUgJyR7SlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZSl9J2ApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaXRoaW4oc3RhcnRSYW5nZTogbnVtYmVyLCBlbmRSYW5nZTogbnVtYmVyLCB2YWx1ZVRvQ2hlY2s6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGFydFJhbmdlIDw9IHZhbHVlVG9DaGVjayAmJiB2YWx1ZVRvQ2hlY2sgPCBlbmRSYW5nZTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbkBQaXBlKHsgbmFtZTogJ2ticVJvdW5kTnVtYmVyJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBLYnFSb3VuZERlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcm91bmRpbmdPcHRpb25zOiBSb3VuZERlY2ltYWxPcHRpb25zO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9JRCkgcHJpdmF0ZSBpZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBLYnFMb2NhbGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5zdWJzY3JpYmUoKG5ld0lkOiBzdHJpbmcpID0+ICh0aGlzLmlkID0gbmV3SWQpKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgbG9jYWxlPzogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbGU6IHN0cmluZyA9IGxvY2FsZSB8fCB0aGlzLmlkIHx8IEtCUV9ERUZBVUxUX0xPQ0FMRV9JRDtcblxuICAgICAgICB0aGlzLnJvdW5kaW5nT3B0aW9ucyA9IHRoaXMubG9jYWxlU2VydmljZT8ubG9jYWxlc1tjdXJyZW50TG9jYWxlXS5mb3JtYXR0ZXJzLm51bWJlci5yb3VuZGluZztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuY2FsY3VsYXRlVW5pdChudW0pO1xuXG4gICAgICAgICAgICBpZiAoIXVuaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQobnVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcnRzOiB7IG51bT86IG51bWJlcjsgZnJhY3Rpb24/OiBudW1iZXIgfSA9IHt9O1xuXG4gICAgICAgICAgICBpZiAoaW50ZXJ2YWxzQ29uZmlnLnN1cHBvcnRlZExhbmd1YWdlcy5pbmNsdWRlcyhjdXJyZW50TG9jYWxlKSkge1xuICAgICAgICAgICAgICAgIGludGVydmFsc0NvbmZpZy5pbnRlcnZhbHMuZmluZCgoeyBzdGFydFJhbmdlLCBlbmRSYW5nZSwgcHJlY2lzaW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2l0aGluID0gaXNXaXRoaW4oc3RhcnRSYW5nZSwgZW5kUmFuZ2UsIG51bSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWNpc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCA9PT0gJ3Rob3VzYW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiBNYXRoLnRydW5jKG51bSAvIFJPVU5ESU5HX1VOSVRTW3VuaXRdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uOiB0aGlzLmNhbGN1bGF0ZURlY2ltYWwobnVtLCBST1VORElOR19VTklUU1t1bml0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSB7IG51bTogTWF0aC5yb3VuZChudW0gLyBST1VORElOR19VTklUU1t1bml0XSkgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aXRoaW47XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMubnVtXG4gICAgICAgICAgICAgICAgPyBwYXJ0c1xuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIG51bTogTWF0aC50cnVuYyhudW0gLyBST1VORElOR19VTklUU1t1bml0XSksXG4gICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb246IHRoaXMuY2FsY3VsYXRlRGVjaW1hbChudW0sIFJPVU5ESU5HX1VOSVRTW3VuaXRdKVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBhcnRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJ0c1trZXldID0gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQocGFydHNba2V5XSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlZFZhbHVlID0gcGFydHMuZnJhY3Rpb25cbiAgICAgICAgICAgICAgICA/IGAke3BhcnRzLm51bX0ke3RoaXMucm91bmRpbmdPcHRpb25zLmdyb3VwU2VwYXJhdG9yfSR7cGFydHMuZnJhY3Rpb259YFxuICAgICAgICAgICAgICAgIDogYCR7cGFydHMubnVtfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtjYWxjdWxhdGVkVmFsdWV9JHt0aGlzLnJvdW5kaW5nT3B0aW9ucy5zZXBhcmF0b3J9JHt0aGlzLnJvdW5kaW5nT3B0aW9uc1t1bml0XX1gO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogS2JxUm91bmREZWNpbWFsUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZURlY2ltYWwobnVtOiBudW1iZXIsIGRpdmlkZXI6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgoKG51bSAvIGRpdmlkZXIpICUgMSkgKiAxMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMiAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxNTAwLi4uMjUwMClcbiAgICAgKlxuICAgICAqIDIsMCAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxOTUwLi4uMjA1MClcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGRpdmlkZWRWYWx1ZSA9IG51bSAvIFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kO1xuICAgICAgICBjb25zdCBkaXYgPSBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSkgKiBST1VORElOR19VTklUUy50aG91c2FuZDtcbiAgICAgICAgY29uc3QgZmlmdHkgPSA1MDtcblxuICAgICAgICByZXR1cm4gaXNXaXRoaW4oZGl2IC0gZmlmdHksIGRpdiArIGZpZnR5LCBudW0pXG4gICAgICAgICAgICA/IHsgbnVtOiBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSksIGZyYWN0aW9uOiAwIH1cbiAgICAgICAgICAgIDogeyBudW06IE1hdGgucm91bmQoZGl2aWRlZFZhbHVlKSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlVW5pdChudW06IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBjdXJyZW50VW5pdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBsb2NhbGl6ZWRPcHRpb25zID0gT2JqZWN0LmtleXModGhpcy5yb3VuZGluZ09wdGlvbnMpO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKFJPVU5ESU5HX1VOSVRTKS5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvY2FsaXplZE9wdGlvbnMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobnVtIC8gUk9VTkRJTkdfVU5JVFNba2V5XSA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFVuaXQgPSBrZXk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY3VycmVudFVuaXQ7XG4gICAgfVxufVxuIl19
|
|
@@ -2,13 +2,13 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { KbqForm, KbqFormElement } from './forms.directive';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class KbqFormsModule {
|
|
5
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.
|
|
6
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.
|
|
5
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, declarations: [KbqForm,
|
|
7
7
|
KbqFormElement], exports: [KbqForm,
|
|
8
8
|
KbqFormElement] }); }
|
|
9
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.
|
|
9
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule }); }
|
|
10
10
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, decorators: [{
|
|
12
12
|
type: NgModule,
|
|
13
13
|
args: [{
|
|
14
14
|
exports: [
|
|
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
|
|
|
21
21
|
]
|
|
22
22
|
}]
|
|
23
23
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1zL2Zvcm1zLW1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBWTVELE1BQU0sT0FBTyxjQUFjO2tJQUFkLGNBQWM7bUlBQWQsY0FBYyxpQkFKbkIsT0FBTztZQUNQLGNBQWMsYUFMZCxPQUFPO1lBQ1AsY0FBYzttSUFPVCxjQUFjOzs0RkFBZCxjQUFjO2tCQVYxQixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxPQUFPO3dCQUNQLGNBQWM7cUJBQ2pCO29CQUNELFlBQVksRUFBRTt3QkFDVixPQUFPO3dCQUNQLGNBQWM7cUJBQ2pCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEticUZvcm0sIEticUZvcm1FbGVtZW50IH0gZnJvbSAnLi9mb3Jtcy5kaXJlY3RpdmUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgS2JxRm9ybSxcbiAgICAgICAgS2JxRm9ybUVsZW1lbnRcbiAgICBdLFxuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBLYnFGb3JtLFxuICAgICAgICBLYnFGb3JtRWxlbWVudFxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRm9ybXNNb2R1bGUge31cbiJdfQ==
|