@koobiq/components 16.0.0-beta.6 → 16.0.0-beta.8
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/autocomplete/autocomplete-trigger.directive.d.ts +5 -15
- package/button-toggle/_button-toggle-theme.scss +26 -45
- package/button-toggle/button-toggle.component.d.ts +2 -2
- package/button-toggle/button-toggle.scss +40 -87
- package/card/_card-theme.scss +1 -1
- package/checkbox/_checkbox-theme.scss +10 -2
- package/checkbox/checkbox.d.ts +1 -1
- package/code-block/README.md +14 -14
- package/code-block/_code-block-theme.scss +8 -0
- package/code-block/code-block.component.d.ts +1 -1
- package/core/animation/index.d.ts +1 -1
- package/core/animation/select-animations.d.ts +1 -1
- package/core/formatters/index.d.ts +1 -1
- package/core/formatters/number/formatter.d.ts +56 -1
- package/core/forms/forms.directive.d.ts +2 -2
- package/core/locales/en-US.d.ts +19 -1
- package/core/locales/es-LA.d.ts +27 -0
- package/core/locales/fa-IR.d.ts +28 -0
- package/core/locales/locale-service.d.ts +148 -3
- package/core/locales/pt-BR.d.ts +27 -0
- package/core/locales/ru-RU.d.ts +20 -1
- package/core/locales/zh-CN.d.ts +26 -0
- package/core/option/_optgroup-theme.scss +1 -1
- package/core/option/_option-theme.scss +2 -2
- package/core/option/action.d.ts +1 -1
- package/core/option/optgroup.d.ts +1 -1
- package/core/option/option.d.ts +37 -8
- package/core/option/option.scss +4 -4
- package/core/overlay/overlay-position-map.d.ts +7 -1
- package/core/pop-up/constants.d.ts +2 -1
- package/core/public-api.d.ts +1 -0
- package/core/select/constants.d.ts +2 -2
- package/core/services/theme.service.d.ts +23 -0
- package/core/styles/_koobiq-theme.scss +6 -0
- package/core/styles/_variables.scss +1 -0
- package/core/styles/common/_animation.scss +10 -6
- package/core/styles/common/_overlay.scss +1 -1
- package/core/styles/common/_select.scss +79 -65
- package/core/styles/theming/_components-theming.scss +205 -23
- package/core/styles/theming/_theming.scss +2 -2
- package/datepicker/_datepicker-theme.scss +43 -57
- package/datepicker/calendar-body.component.d.ts +1 -1
- package/datepicker/calendar-body.scss +11 -26
- package/datepicker/calendar-header.component.d.ts +9 -3
- package/datepicker/calendar-header.scss +7 -31
- package/datepicker/calendar.component.d.ts +4 -5
- package/datepicker/calendar.scss +20 -25
- package/datepicker/datepicker-animations.d.ts +1 -1
- package/datepicker/datepicker-content.scss +17 -10
- package/datepicker/datepicker-input.directive.d.ts +4 -4
- package/datepicker/datepicker-input.scss +1 -1
- package/datepicker/datepicker-toggle.component.d.ts +3 -3
- package/datepicker/datepicker.component.d.ts +2 -2
- package/datepicker/month-view.component.d.ts +5 -6
- package/dl/_dl-theme.scss +2 -56
- package/dl/dl.component.d.ts +1 -2
- package/dl/dl.scss +10 -47
- package/dropdown/_dropdown-theme.scss +2 -2
- package/dropdown/dropdown-animations.d.ts +1 -1
- package/dropdown/dropdown-content.directive.d.ts +1 -1
- package/dropdown/dropdown-item.component.d.ts +1 -1
- package/dropdown/dropdown-item.scss +1 -1
- package/dropdown/dropdown-trigger.directive.d.ts +2 -2
- package/dropdown/dropdown.component.d.ts +1 -1
- package/dropdown/dropdown.types.d.ts +1 -1
- package/esm2022/alert/alert.component.mjs +2 -2
- package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +27 -24
- package/esm2022/button/button.component.mjs +3 -2
- package/esm2022/button-toggle/button-toggle.component.mjs +15 -15
- package/esm2022/checkbox/checkbox.mjs +3 -3
- package/esm2022/code-block/actionbar.component.mjs +1 -1
- package/esm2022/code-block/code-block.component.mjs +3 -3
- package/esm2022/core/animation/index.mjs +2 -2
- package/esm2022/core/animation/select-animations.mjs +4 -4
- package/esm2022/core/formatters/index.mjs +10 -2
- package/esm2022/core/formatters/number/formatter.mjs +224 -3
- package/esm2022/core/forms/forms.directive.mjs +5 -5
- package/esm2022/core/locales/en-US.mjs +22 -4
- package/esm2022/core/locales/es-LA.mjs +31 -2
- package/esm2022/core/locales/fa-IR.mjs +30 -2
- package/esm2022/core/locales/locale-service.mjs +4 -4
- package/esm2022/core/locales/pt-BR.mjs +29 -2
- package/esm2022/core/locales/ru-RU.mjs +23 -2
- package/esm2022/core/locales/zh-CN.mjs +28 -2
- package/esm2022/core/option/action.mjs +3 -3
- package/esm2022/core/option/optgroup.mjs +3 -3
- package/esm2022/core/option/option.mjs +47 -10
- package/esm2022/core/overlay/overlay-position-map.mjs +7 -1
- package/esm2022/core/pop-up/constants.mjs +2 -1
- package/esm2022/core/pop-up/pop-up-trigger.mjs +12 -3
- package/esm2022/core/public-api.mjs +2 -1
- package/esm2022/core/select/constants.mjs +3 -3
- package/esm2022/core/services/theme.service.mjs +60 -0
- package/esm2022/core/version.mjs +2 -2
- package/esm2022/datepicker/calendar-body.component.mjs +7 -5
- package/esm2022/datepicker/calendar-header.component.mjs +9 -8
- package/esm2022/datepicker/calendar.component.mjs +8 -17
- package/esm2022/datepicker/datepicker-animations.mjs +2 -2
- package/esm2022/datepicker/datepicker-input.directive.mjs +29 -20
- package/esm2022/datepicker/datepicker-toggle.component.mjs +6 -6
- package/esm2022/datepicker/datepicker.component.mjs +12 -12
- package/esm2022/datepicker/month-view.component.mjs +9 -18
- package/esm2022/dl/dl.component.mjs +3 -7
- package/esm2022/dropdown/dropdown-animations.mjs +4 -4
- package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
- package/esm2022/dropdown/dropdown-errors.mjs +6 -6
- package/esm2022/dropdown/dropdown-item.component.mjs +5 -5
- package/esm2022/dropdown/dropdown-trigger.directive.mjs +10 -9
- package/esm2022/dropdown/dropdown.component.mjs +8 -8
- package/esm2022/dropdown/dropdown.types.mjs +1 -1
- package/esm2022/file-upload/file-drop.mjs +4 -4
- package/esm2022/file-upload/multiple-file-upload.component.mjs +13 -9
- package/esm2022/file-upload/single-file-upload.component.mjs +16 -13
- package/esm2022/form-field/cleaner.mjs +3 -3
- package/esm2022/form-field/form-field.mjs +7 -7
- package/esm2022/form-field/hint.mjs +4 -4
- package/esm2022/form-field/password-hint.mjs +11 -11
- package/esm2022/form-field/password-toggle.mjs +21 -8
- package/esm2022/form-field/suffix.mjs +3 -3
- package/esm2022/form-field/validate.directive.mjs +4 -4
- package/esm2022/input/input-number.mjs +259 -43
- package/esm2022/link/link.component.mjs +3 -3
- package/esm2022/list/list-selection.component.mjs +8 -8
- package/esm2022/list/list.component.mjs +2 -2
- package/esm2022/loader-overlay/loader-overlay.component.mjs +2 -2
- package/esm2022/modal/modal-control.service.mjs +5 -5
- package/esm2022/modal/modal-ref.class.mjs +1 -1
- package/esm2022/modal/modal.component.mjs +124 -111
- package/esm2022/modal/modal.service.mjs +23 -23
- package/esm2022/modal/modal.type.mjs +1 -3
- package/esm2022/navbar/navbar-item.component.mjs +6 -6
- package/esm2022/navbar/navbar.component.mjs +18 -9
- package/esm2022/navbar/vertical-navbar.component.mjs +9 -6
- package/esm2022/popover/popover-animations.mjs +2 -2
- package/esm2022/popover/popover-confirm.component.mjs +9 -9
- package/esm2022/popover/popover.component.mjs +24 -24
- package/esm2022/radio/radio.component.mjs +10 -8
- package/esm2022/select/select-option.directive.mjs +15 -3
- package/esm2022/select/select.component.mjs +37 -21
- package/esm2022/sidebar/sidebar-animations.mjs +2 -2
- package/esm2022/sidebar/sidebar.component.mjs +9 -9
- package/esm2022/sidepanel/sidepanel-container.component.mjs +3 -3
- package/esm2022/sidepanel/sidepanel-directives.mjs +2 -2
- package/esm2022/splitter/splitter.component.mjs +3 -3
- package/esm2022/table/table.component.mjs +3 -3
- package/esm2022/tabs/tab-body.component.mjs +7 -7
- package/esm2022/tabs/tab-content.directive.mjs +3 -3
- package/esm2022/tabs/tab-group.component.mjs +3 -3
- package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +6 -6
- package/esm2022/tabs/tab.component.mjs +14 -5
- package/esm2022/tabs/tabs-animations.mjs +2 -2
- package/esm2022/tags/tag-input.mjs +3 -3
- package/esm2022/tags/tag-list.component.mjs +5 -5
- package/esm2022/tags/tag.component.mjs +10 -10
- package/esm2022/timepicker/timepicker.directive.mjs +10 -10
- package/esm2022/timezone/timezone-option.component.mjs +4 -4
- package/esm2022/timezone/timezone-select.component.mjs +5 -5
- package/esm2022/title/title.directive.mjs +5 -5
- package/esm2022/toast/toast.module.mjs +10 -4
- package/esm2022/toggle/toggle.component.mjs +4 -4
- package/esm2022/tooltip/tooltip.component.mjs +18 -17
- package/esm2022/tree/control/base-tree-control.mjs +1 -1
- package/esm2022/tree/control/flat-tree-control.mjs +4 -4
- package/esm2022/tree/control/tree-control.mjs +1 -1
- package/esm2022/tree/node.mjs +5 -5
- package/esm2022/tree/outlet.mjs +3 -3
- package/esm2022/tree/padding.directive.mjs +7 -7
- package/esm2022/tree/toggle.mjs +9 -11
- package/esm2022/tree/tree-base.mjs +3 -3
- package/esm2022/tree/tree-option.component.mjs +8 -5
- package/esm2022/tree/tree-selection.component.mjs +8 -6
- package/esm2022/tree/tree.mjs +3 -3
- package/esm2022/tree-select/tree-select.component.mjs +14 -15
- package/fesm2022/koobiq-components-alert.mjs +2 -2
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +27 -24
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +14 -14
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +2 -1
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +2 -2
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +3 -3
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +526 -39
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +72 -78
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +2 -6
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +30 -29
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +26 -19
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +46 -34
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +257 -43
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +2 -2
- package/fesm2022/koobiq-components-link.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +9 -9
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +149 -140
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +28 -20
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +31 -31
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +9 -7
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +50 -22
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +8 -8
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +2 -2
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +2 -2
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +29 -20
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +15 -15
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +9 -9
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +7 -7
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +4 -4
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +8 -2
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +3 -3
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +17 -16
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +13 -14
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +42 -38
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +54 -40
- package/file-upload/file-drop.d.ts +1 -1
- package/file-upload/file-upload.scss +2 -9
- package/file-upload/multiple-file-upload.component.d.ts +4 -3
- package/file-upload/multiple-file-upload.component.scss +170 -59
- package/file-upload/single-file-upload.component.d.ts +4 -3
- package/file-upload/single-file-upload.component.scss +42 -22
- package/form-field/_hint-theme.scss +1 -1
- package/form-field/cleaner.d.ts +1 -1
- package/form-field/form-field.d.ts +2 -2
- package/form-field/form-field.scss +2 -2
- package/form-field/hint.d.ts +1 -1
- package/form-field/password-hint.d.ts +2 -1
- package/form-field/password-toggle.d.ts +11 -6
- package/form-field/suffix.d.ts +1 -1
- package/form-field/validate.directive.d.ts +1 -1
- package/icon/_icon-theme.scss +12 -22
- package/input/input-number.d.ts +61 -10
- package/link/_link-theme.scss +6 -2
- package/link/link.component.d.ts +1 -1
- package/list/_list-theme.scss +2 -2
- package/list/list-selection.component.d.ts +1 -1
- package/list/list.scss +1 -5
- package/loader-overlay/loader-overlay.scss +3 -0
- package/markdown/_markdown-theme.scss +2 -2
- package/modal/README.md +5 -5
- package/modal/_modal-theme.scss +10 -18
- package/modal/modal-ref.class.d.ts +2 -2
- package/modal/modal.component.d.ts +51 -47
- package/modal/modal.scss +0 -1
- package/modal/modal.type.d.ts +35 -36
- package/navbar/_navbar-theme.scss +1 -1
- package/navbar/navbar-item.component.d.ts +2 -2
- package/navbar/navbar.component.d.ts +5 -2
- package/navbar/vertical-navbar.component.d.ts +4 -2
- package/package.json +28 -30
- package/popover/README.md +14 -14
- package/popover/_popover-theme.scss +15 -78
- package/popover/popover-animations.d.ts +1 -1
- package/popover/popover-confirm.component.d.ts +1 -1
- package/popover/popover.component.d.ts +3 -3
- package/popover/popover.scss +60 -50
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/radio/_radio-theme.scss +17 -4
- package/radio/radio.component.d.ts +2 -2
- package/radio/radio.scss +13 -0
- package/select/_select-theme.scss +1 -1
- package/select/select-option.directive.d.ts +2 -0
- package/select/select.component.d.ts +14 -11
- package/sidebar/sidebar-animations.d.ts +1 -1
- package/sidebar/sidebar.component.d.ts +3 -3
- package/sidepanel/_sidepanel-theme.scss +5 -0
- package/splitter/splitter.component.d.ts +1 -1
- package/table/_table-theme.scss +1 -1
- package/table/table.component.d.ts +1 -1
- package/tabs/tab-body.component.d.ts +1 -1
- package/tabs/tab-content.directive.d.ts +1 -1
- package/tabs/tab-nav-bar/tab-nav-bar.d.ts +2 -2
- package/tabs/tab.component.d.ts +1 -1
- package/tabs/tabs-animations.d.ts +1 -1
- package/tags/_tag-theme.scss +1 -1
- package/tags/tag-input.d.ts +2 -2
- package/tags/tag-list.component.d.ts +2 -2
- package/tags/tag-list.scss +2 -0
- package/tags/tag.component.d.ts +3 -3
- package/timepicker/timepicker.directive.d.ts +2 -2
- package/timezone/timezone-option.component.d.ts +1 -1
- package/timezone/timezone-select.component.d.ts +1 -1
- package/title/title.directive.d.ts +1 -1
- package/toggle/_toggle-theme.scss +9 -1
- package/toggle/toggle.component.d.ts +1 -1
- package/toggle/toggle.scss +5 -2
- package/tooltip/tooltip.component.d.ts +3 -3
- package/tree/_tree-theme.scss +2 -2
- package/tree/control/base-tree-control.d.ts +1 -1
- package/tree/control/tree-control.d.ts +1 -1
- package/tree/node.d.ts +1 -1
- package/tree/outlet.d.ts +1 -1
- package/tree/padding.directive.d.ts +1 -1
- package/tree/toggle.d.ts +3 -3
- package/tree/tree-base.d.ts +1 -1
- package/tree/tree-option.component.d.ts +1 -1
- package/tree/tree-option.scss +2 -0
- package/tree/tree-selection.component.d.ts +1 -1
- package/tree/tree.d.ts +1 -1
- package/tree-select/_tree-select-theme.scss +1 -1
- package/tree-select/tree-select.component.d.ts +1 -1
|
@@ -123,11 +123,11 @@ export class KbqCodeBlockComponent {
|
|
|
123
123
|
return `${fileName}.${extension}`;
|
|
124
124
|
}
|
|
125
125
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCodeBlockComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.Clipboard }, { token: i0.Renderer2 }, { token: KBQ_CODE_BLOCK_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCodeBlockComponent, selector: "kbq-code-block", inputs: { lineNumbers: "lineNumbers", codeFiles: "codeFiles", lessContrast: "lessContrast", maxHeight: "maxHeight", softWrap: "softWrap" }, host: { listeners: { "window:resize": "resizeStream.next($event)" }, properties: { "class.kbq-code-block_less-contrast": "lessContrast", "class.kbq-code-block_hide-line-numbers": "!lineNumbers", "class.kbq-code-block_single-file": "singleFile", "class.kbq-code-block_no-header": "noHeader" }, classAttribute: "kbq-code-block" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: KbqTabGroup, descendants: true }], exportAs: ["
|
|
126
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.5", type: KbqCodeBlockComponent, selector: "kbq-code-block", inputs: { lineNumbers: "lineNumbers", codeFiles: "codeFiles", lessContrast: "lessContrast", maxHeight: "maxHeight", softWrap: "softWrap" }, host: { listeners: { "window:resize": "resizeStream.next($event)" }, properties: { "class.kbq-code-block_less-contrast": "lessContrast", "class.kbq-code-block_hide-line-numbers": "!lineNumbers", "class.kbq-code-block_single-file": "singleFile", "class.kbq-code-block_no-header": "noHeader" }, classAttribute: "kbq-code-block" }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: KbqTabGroup, descendants: true }], exportAs: ["kbqCodeBlock"], ngImport: i0, template: "<kbq-tab-group (selectedTabChange)=\"onSelectTab($event)\">\n <kbq-tab\n *ngFor=\"let codeFile of codeFiles; let i = index\"\n [disabled]=\"singleFile\">\n\n <ng-template kbq-tab-label>{{ codeFile.filename }}</ng-template>\n\n <pre class=\"kbq-code-block__code kbq-scrollbar\"\n #codeContent\n [style.max-height]=\"getMaxHeight()\"\n [class.kbq-code-block__code_soft-wrap]=\"softWrap\"\n [class.kbq-code-block__code_view-all]=\"viewAll\"\n ><code class=\"hljs\"\n [id]=\"codeFile.filename + '_' + i\"\n [class.hljs-line-numbers]=\"lineNumbers\"\n [highlight]=\"codeFiles[i].content\"\n [lineNumbers]=\"true\"\n (highlighted)=\"onHighlighted()\">\n </code><kbq-actionbar-block\n [class.kbq-actionbar-block_floating]=\"noHeader\"\n [config]=\"config\"\n [codeFiles]=\"codeFiles\"\n [selectedTabIndex]=\"selectedTabIndex\"\n [lessContrast]=\"lessContrast\"\n [multiLine]=\"multiLine\"\n [softWrap]=\"softWrap\"\n (toggleSoftWrap)=\"toggleSoftWrap()\"\n (downloadCode)=\"downloadCode()\"\n (copyCode)=\"copyCode()\"\n (openExternalSystem)=\"openExternalSystem()\">\n </kbq-actionbar-block></pre>\n\n <button\n class=\"kbq-button_transparent kbq-code-block__show-more\"\n kbq-button\n *ngIf=\"viewAll || codeContent.offsetHeight < codeContent.scrollHeight\"\n (click)=\"toggleViewAll()\">\n\n {{ viewAll ? config.viewLessText : config.viewAllText}}\n <i class=\"mc mc-angle-down-S_16\" *ngIf=\"!viewAll\"></i>\n <i class=\"mc kbq-angle-up-S_16\" *ngIf=\"viewAll\"></i>\n </button>\n </kbq-tab>\n</kbq-tab-group>\n", styles: [".kbq-code-block{display:block;position:relative;box-sizing:border-box;hyphens:none;-ms-hyphens:none;-moz-hyphens:none;-webkit-hyphens:none;border-width:1px;border-style:solid;border-radius:8px}.kbq-code-block:not(.kbq-code-block_no-header) .kbq-tab-group:after{content:\"\";position:absolute;top:39px;left:0;right:0;height:1px}.kbq-code-block .kbq-tab-header{margin-right:152px}.kbq-code-block.kbq-code-block_hide-line-numbers .hljs-ln-line.hljs-ln-numbers{display:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:before{content:none}.kbq-code-block.kbq-code-block_single-file .kbq-tab-label:hover{background:transparent!important}.kbq-code-block.kbq-code-block_no-header .kbq-code-block__code{position:relative}.kbq-code-block.kbq-code-block_no-header .kbq-tab-header{display:none}.kbq-code-block pre{margin:0}.kbq-code-block .kbq-tab-body__wrapper{flex-direction:column;position:unset}.kbq-code-block .kbq-tab-body.kbq-tab-body__active{position:unset}.kbq-code-block__code{overflow-y:hidden}.kbq-code-block__code.kbq-code-block__code_view-all{max-height:unset;overflow-y:unset}.kbq-code-block__code.kbq-code-block__code_soft-wrap{white-space:pre-wrap}.kbq-code-block__code>code{padding:12px!important}.kbq-code-block__code .hljs-ln{border-collapse:unset}.kbq-code-block__code .hljs-ln .hljs{padding:0}.kbq-code-block__code .hljs-ln-numbers{border-right-width:0;padding:2px 12px 0 0;vertical-align:baseline;text-align:right}.kbq-code-block__code .hljs-ln-n:before{white-space:nowrap}.kbq-code-block__show-more{overflow:hidden;width:100%;border-top-style:solid!important;border-top-width:1px!important;border-top-left-radius:0!important;border-top-right-radius:0!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqButton, selector: "[kbq-button]", inputs: ["color", "tabIndex", "kbqStyle", "disabled"] }, { kind: "directive", type: i3.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "directive", type: i4.Highlight, selector: "[highlight]", inputs: ["highlight", "languages", "lineNumbers"], outputs: ["highlighted"] }, { kind: "component", type: i5.KbqTabGroup, selector: "kbq-tab-group", inputs: ["disabled", "transparent", "onSurface", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["kbqTabGroup"] }, { kind: "directive", type: i5.KbqTabLabel, selector: "[kbq-tab-label], [kbqTabLabel]" }, { kind: "component", type: i5.KbqTab, selector: "kbq-tab", inputs: ["disabled", "tooltipTitle", "tooltipPlacement", "label", "empty", "tabId"], exportAs: ["kbqTab"] }, { kind: "component", type: i6.KbqActionBarComponent, selector: "kbq-actionbar-block", inputs: ["config", "codeFiles", "lessContrast", "selectedTabIndex", "multiLine", "softWrap"], outputs: ["toggleSoftWrap", "downloadCode", "copyCode", "openExternalSystem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
127
127
|
}
|
|
128
128
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqCodeBlockComponent, decorators: [{
|
|
129
129
|
type: Component,
|
|
130
|
-
args: [{ selector: 'kbq-code-block', exportAs: '
|
|
130
|
+
args: [{ selector: 'kbq-code-block', exportAs: 'kbqCodeBlock', host: {
|
|
131
131
|
class: 'kbq-code-block',
|
|
132
132
|
'[class.kbq-code-block_less-contrast]': 'lessContrast',
|
|
133
133
|
'[class.kbq-code-block_hide-line-numbers]': '!lineNumbers',
|
|
@@ -154,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
154
154
|
}], softWrap: [{
|
|
155
155
|
type: Input
|
|
156
156
|
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFDUixVQUFVLEVBQ1YsaUJBQWlCLEVBRWpCLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBUTlDLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDaEMsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsSUFBSTtJQUNWLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE1BQU0sRUFBRSxJQUFJO0lBQ1osSUFBSSxFQUFFLElBQUk7SUFDVixDQUFDLEVBQUUsR0FBRztJQUNO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Q3RELDBDQUEwQyxFQUFFLGNBQWM7d0JBQzFELG9DQUFvQyxFQUFFLFlBQVk7d0JBQ2xELGtDQUFrQyxFQUFFLFVBQVU7d0JBQzlDLGlCQUFpQixFQUFFLDJCQUEyQjtxQkFDakQsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OzBCQW1DaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7NENBL0I1QixRQUFRO3NCQUEvQixTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBJbnB1dCxcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgT3B0aW9uYWwsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkLFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEticVRhYkNoYW5nZUV2ZW50LCBLYnFUYWJHcm91cCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEticUNvZGVCbG9ja0NvbmZpZ3VyYXRpb24sXG4gICAgS2JxQ29kZUZpbGVcbn0gZnJvbSAnLi9jb2RlLWJsb2NrLnR5cGVzJztcblxuXG5leHBvcnQgY29uc3QgQ09QSUVEX01FU1NBR0VfVE9PTFRJUF9USU1FT1VUID0gMTAwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhURU5TSU9OID0gJ3R4dCc7XG5leHBvcnQgY29uc3QgTEFOR1VBR0VTX0VYVEVOU0lPTlMgPSB7XG4gICAgaHRtbDogJ2h0bWwnLFxuICAgIGNzczogJ2NzcycsXG4gICAgcGhwOiAncGhwJyxcbiAgICBqYXZhOiAnamF2YScsXG4gICAgYmFzaDogJ3NoJyxcbiAgICBqYXZhc2NyaXB0OiAnanMnLFxuICAgIHR5cGVzY3JpcHQ6ICd0cycsXG4gICAgcHl0aG9uOiAncHknLFxuICAgIHJ1Ynk6ICdyYicsXG4gICAgYzogJ2MnLFxuICAgICdjKysnOiAnY3BwJyxcbiAgICAnYyMnOiAnY3MnLFxuICAgIGNzaGFycDogJ2NzJyxcbiAgICBsdWE6ICdsdWEnLFxuICAgIHhtbDogJ3htbCcsXG4gICAganNvbjogJ2pzb24nXG59O1xuXG5leHBvcnQgY29uc3QgS0JRX0NPREVfQkxPQ0tfQ09ORklHVVJBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdLYnFDb2RlQmxvY2tDb25maWd1cmF0aW9uJyk7XG5cbmV4cG9ydCBjb25zdCBLQlFfQ09ERV9CTE9DS19ERUZBVUxUX0NPTkZJR1VSQVRJT04gPSB7XG4gICAgc29mdFdyYXBPblRvb2x0aXA6ICfQktC60LvRjtGH0LjRgtGMINC/0LXRgNC10L3QvtGBINC/0L4g0YHQu9C+0LLQsNC8JyxcbiAgICBzb2Z0V3JhcE9mZlRvb2x0aXA6ICfQktGL0LrQu9GO0YfQuNGC0Ywg0L/QtdGA0LXQvdC+0YEg0L/QviDRgdC70L7QstCw0LwnLFxuICAgIGRvd25sb2FkVG9vbHRpcDogJ9Ch0LrQsNGH0LDRgtGMJyxcbiAgICBjb3BpZWRUb29sdGlwOiAn4pyTINCh0LrQvtC/0LjRgNC+0LLQsNC90L4nLFxuICAgIGNvcHlUb29sdGlwOiAn0KHQutC+0L/QuNGA0L7QstCw0YLRjCcsXG4gICAgdmlld0FsbFRleHQ6ICfQn9C+0LrQsNC30LDRgtGMINCy0YHQtScsXG4gICAgdmlld0xlc3NUZXh0OiAn0KHQstC10YDQvdGD0YLRjCcsXG4gICAgb3BlbkV4dGVybmFsU3lzdGVtVG9vbHRpcDogJ9Ce0YLQutGA0YvRgtGMINCy0L4g0LLQvdC10YjQvdC10Lkg0YHQuNGB0YLQtdC80LUnXG59O1xuXG5cbmNvbnN0IGFjdGlvbkJhckJsb2NrTGVmdE1hcmdpbiA9IDI0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1jb2RlLWJsb2NrJyxcbiAgICBleHBvcnRBczogJ21jQ29kZUJsb2NrJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29kZS1ibG9jay5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29kZS1ibG9jay5zY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1jb2RlLWJsb2NrJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19sZXNzLWNvbnRyYXN0XSc6ICdsZXNzQ29udHJhc3QnLFxuICAgICAgICAnW2NsYXNzLmticS1jb2RlLWJsb2NrX2hpZGUtbGluZS1udW1iZXJzXSc6ICchbGluZU51bWJlcnMnLFxuICAgICAgICAnW2NsYXNzLmticS1jb2RlLWJsb2NrX3NpbmdsZS1maWxlXSc6ICdzaW5nbGVGaWxlJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19uby1oZWFkZXJdJzogJ25vSGVhZGVyJyxcbiAgICAgICAgJyh3aW5kb3c6cmVzaXplKSc6ICdyZXNpemVTdHJlYW0ubmV4dCgkZXZlbnQpJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBLYnFDb2RlQmxvY2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuXG4gICAgQFZpZXdDaGlsZChLYnFUYWJHcm91cCkgdGFiR3JvdXA6IEticVRhYkdyb3VwO1xuXG4gICAgQElucHV0KCkgbGluZU51bWJlcnMgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGNvZGVGaWxlczogS2JxQ29kZUZpbGVbXTtcbiAgICBASW5wdXQoKSBsZXNzQ29udHJhc3Q6IGJvb2xlYW47XG4gICAgQElucHV0KCkgbWF4SGVpZ2h0OiBudW1iZXI7XG4gICAgQElucHV0KCkgc29mdFdyYXA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGdldCBub0hlYWRlcigpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2RlRmlsZXMubGVuZ3RoID09PSAxICYmICF0aGlzLmNvZGVGaWxlc1swXS5maWxlbmFtZTtcbiAgICB9XG5cbiAgICBnZXQgc2luZ2xlRmlsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29kZUZpbGVzLmxlbmd0aCA9PT0gMTtcbiAgICB9XG5cbiAgICBzZWxlY3RlZFRhYkluZGV4ID0gMDtcbiAgICBjb3BpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICB2aWV3QWxsOiBib29sZWFuID0gZmFsc2U7XG4gICAgbXVsdGlMaW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSByZXNpemVTdHJlYW0gPSBuZXcgU3ViamVjdDxFdmVudD4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzaXplRGVib3VuY2VJbnRlcnZhbDogbnVtYmVyID0gMTAwO1xuICAgIHByaXZhdGUgcmVzaXplU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgY2xpcGJvYXJkOiBDbGlwYm9hcmQsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfQ09ERV9CTE9DS19DT05GSUdVUkFUSU9OKSBwdWJsaWMgY29uZmlnOiBLYnFDb2RlQmxvY2tDb25maWd1cmF0aW9uXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gY29uZmlnIHx8IEtCUV9DT0RFX0JMT0NLX0RFRkFVTFRfQ09ORklHVVJBVElPTjtcblxuICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbiA9IHRoaXMucmVzaXplU3RyZWFtXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUodGhpcy5yZXNpemVEZWJvdW5jZUludGVydmFsKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy51cGRhdGVIZWFkZXIpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlc2l6ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUhlYWRlciA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgY2xpZW50V2lkdGg6IG51bWJlciA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2ticS1hY3Rpb25iYXItYmxvY2snKS5jbGllbnRXaWR0aDtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgdGhpcy50YWJHcm91cC50YWJIZWFkZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgJ21hcmdpbi1yaWdodCcsXG4gICAgICAgICAgICBgJHthY3Rpb25CYXJCbG9ja0xlZnRNYXJnaW4gKyBjbGllbnRXaWR0aH1weGBcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHRvZ2dsZVNvZnRXcmFwKCkge1xuICAgICAgICB0aGlzLnNvZnRXcmFwID0gIXRoaXMuc29mdFdyYXA7XG4gICAgfVxuXG4gICAgdG9nZ2xlVmlld0FsbCgpIHtcbiAgICAgICAgdGhpcy52aWV3QWxsID0gIXRoaXMudmlld0FsbDtcbiAgICB9XG5cbiAgICBkb3dubG9hZENvZGUoKSB7XG4gICAgICAgIGNvbnN0IGNvZGVGaWxlID0gdGhpcy5jb2RlRmlsZXNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XTtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjb2RlRmlsZS5jb250ZW50XSwgeyB0eXBlOiAndGV4dC9wbGFpbicgfSk7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgYCR7dGhpcy5nZXRGdWxsRmlsZU5hbWUoY29kZUZpbGUpfWApO1xuICAgICAgICBsaW5rLmNsaWNrKCk7XG4gICAgfVxuXG4gICAgY29weUNvZGUoKSB7XG4gICAgICAgIHRoaXMuY2xpcGJvYXJkLmNvcHkodGhpcy5jb2RlRmlsZXNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XS5jb250ZW50KTtcbiAgICAgICAgdGhpcy5jb3BpZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9wZW5FeHRlcm5hbFN5c3RlbSgpIHtcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxMaW5rID0gdGhpcy5jb2RlRmlsZXNbdGhpcy5zZWxlY3RlZFRhYkluZGV4XS5saW5rO1xuICAgICAgICB3aW5kb3cub3BlbihleHRlcm5hbExpbmssICdfYmxhbmsnKTtcbiAgICB9XG5cbiAgICBvbkhpZ2hsaWdodGVkKCkge1xuICAgICAgICBzZXRUaW1lb3V0KHRoaXMudXBkYXRlTXVsdGlsaW5lLCAxKTtcbiAgICB9XG5cbiAgICBnZXRNYXhIZWlnaHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWF4SGVpZ2h0ID4gMCAmJiAhdGhpcy52aWV3QWxsID8gYCR7dGhpcy5tYXhIZWlnaHR9cHhgIDogJ25vbmUnO1xuICAgIH1cblxuICAgIG9uU2VsZWN0VGFiKCRldmVudDogS2JxVGFiQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkluZGV4ID0gJGV2ZW50LmluZGV4O1xuICAgICAgICB0aGlzLnVwZGF0ZU11bHRpbGluZSgpO1xuXG4gICAgICAgIHNldFRpbWVvdXQodGhpcy51cGRhdGVIZWFkZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTXVsdGlsaW5lID0gKCkgPT4ge1xuICAgICAgICB0aGlzLm11bHRpTGluZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgnLmhsanMtbG4tbnVtYmVycycpLmxlbmd0aCA+IDE7XG5cbiAgICAgICAgdGhpcy51cGRhdGVIZWFkZXIoKTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RnVsbEZpbGVOYW1lKGNvZGVGaWxlOiBLYnFDb2RlRmlsZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gY29kZUZpbGUuZmlsZW5hbWUgfHwgJ2NvZGUnO1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBMQU5HVUFHRVNfRVhURU5TSU9OU1tjb2RlRmlsZS5sYW5ndWFnZV0gfHwgREVGQVVMVF9FWFRFTlNJT047XG5cbiAgICAgICAgcmV0dXJuIGAke2ZpbGVOYW1lfS4ke2V4dGVuc2lvbn1gO1xuICAgIH1cbn1cbiIsIjxrYnEtdGFiLWdyb3VwIChzZWxlY3RlZFRhYkNoYW5nZSk9XCJvblNlbGVjdFRhYigkZXZlbnQpXCI+XG4gICAgPGticS10YWJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvZGVGaWxlIG9mIGNvZGVGaWxlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJzaW5nbGVGaWxlXCI+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlIGticS10YWItbGFiZWw+e3sgY29kZUZpbGUuZmlsZW5hbWUgfX08L25nLXRlbXBsYXRlPlxuXG4gICAgICAgIDxwcmUgY2xhc3M9XCJrYnEtY29kZS1ibG9ja19fY29kZSBrYnEtc2Nyb2xsYmFyXCJcbiAgICAgICAgICAgICAjY29kZUNvbnRlbnRcbiAgICAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodF09XCJnZXRNYXhIZWlnaHQoKVwiXG4gICAgICAgICAgICAgW2NsYXNzLmticS1jb2RlLWJsb2NrX19jb2RlX3NvZnQtd3JhcF09XCJzb2Z0V3JhcFwiXG4gICAgICAgICAgICAgW2NsYXNzLmticS1jb2RlLWJsb2NrX19jb2RlX3ZpZXctYWxsXT1cInZpZXdBbGxcIlxuICAgICAgICAgICAgPjxjb2RlIGNsYXNzPVwiaGxqc1wiXG4gICAgICAgICAgICAgICBbaWRdPVwiY29kZUZpbGUuZmlsZW5hbWUgKyAnXycgKyBpXCJcbiAgICAgICAgICAgICAgIFtjbGFzcy5obGpzLWxpbmUtbnVtYmVyc109XCJsaW5lTnVtYmVyc1wiXG4gICAgICAgICAgICAgICBbaGlnaGxpZ2h0XT1cImNvZGVGaWxlc1tpXS5jb250ZW50XCJcbiAgICAgICAgICAgICAgIFtsaW5lTnVtYmVyc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgIChoaWdobGlnaHRlZCk9XCJvbkhpZ2hsaWdodGVkKClcIj5cbiAgICAgICAgICAgIDwvY29kZT48a2JxLWFjdGlvbmJhci1ibG9ja1xuICAgICAgICAgICAgICAgIFtjbGFzcy5rYnEtYWN0aW9uYmFyLWJsb2NrX2Zsb2F0aW5nXT1cIm5vSGVhZGVyXCJcbiAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgW2NvZGVGaWxlc109XCJjb2RlRmlsZXNcIlxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZFRhYkluZGV4XT1cInNlbGVjdGVkVGFiSW5kZXhcIlxuICAgICAgICAgICAgICAgIFtsZXNzQ29udHJhc3RdPVwibGVzc0NvbnRyYXN0XCJcbiAgICAgICAgICAgICAgICBbbXVsdGlMaW5lXT1cIm11bHRpTGluZVwiXG4gICAgICAgICAgICAgICAgW3NvZnRXcmFwXT1cInNvZnRXcmFwXCJcbiAgICAgICAgICAgICAgICAodG9nZ2xlU29mdFdyYXApPVwidG9nZ2xlU29mdFdyYXAoKVwiXG4gICAgICAgICAgICAgICAgKGRvd25sb2FkQ29kZSk9XCJkb3dubG9hZENvZGUoKVwiXG4gICAgICAgICAgICAgICAgKGNvcHlDb2RlKT1cImNvcHlDb2RlKClcIlxuICAgICAgICAgICAgICAgIChvcGVuRXh0ZXJuYWxTeXN0ZW0pPVwib3BlbkV4dGVybmFsU3lzdGVtKClcIj5cbiAgICAgICAgICAgIDwva2JxLWFjdGlvbmJhci1ibG9jaz48L3ByZT5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImticS1idXR0b25fdHJhbnNwYXJlbnQga2JxLWNvZGUtYmxvY2tfX3Nob3ctbW9yZVwiXG4gICAgICAgICAgICBrYnEtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInZpZXdBbGwgfHwgY29kZUNvbnRlbnQub2Zmc2V0SGVpZ2h0IDwgY29kZUNvbnRlbnQuc2Nyb2xsSGVpZ2h0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVWaWV3QWxsKClcIj5cblxuICAgICAgICAgICAge3sgdmlld0FsbCA/IGNvbmZpZy52aWV3TGVzc1RleHQgOiBjb25maWcudmlld0FsbFRleHR9fVxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtYyBtYy1hbmdsZS1kb3duLVNfMTZcIiAqbmdJZj1cIiF2aWV3QWxsXCI+PC9pPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJtYyBrYnEtYW5nbGUtdXAtU18xNlwiICpuZ0lmPVwidmlld0FsbFwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9rYnEtdGFiPlxuPC9rYnEtdGFiLWdyb3VwPlxuIl19
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvZGUtYmxvY2svY29kZS1ibG9jay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUNILFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFDTixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLFFBQVEsRUFDUixVQUFVLEVBQ1YsaUJBQWlCLEVBRWpCLFNBQVMsRUFDVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBUTlDLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLEdBQUcsQ0FBQztBQUNsRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDaEMsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsSUFBSTtJQUNWLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLE1BQU0sRUFBRSxJQUFJO0lBQ1osSUFBSSxFQUFFLElBQUk7SUFDVixDQUFDLEVBQUUsR0FBRztJQUNO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Q3RELDBDQUEwQyxFQUFFLGNBQWM7d0JBQzFELG9DQUFvQyxFQUFFLFlBQVk7d0JBQ2xELGtDQUFrQyxFQUFFLFVBQVU7d0JBQzlDLGlCQUFpQixFQUFFLDJCQUEyQjtxQkFDakQsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7OzBCQW1DaEMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyw0QkFBNEI7NENBL0I1QixRQUFRO3NCQUEvQixTQUFTO3VCQUFDLFdBQVc7Z0JBRWIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBJbnB1dCxcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0aW9uVG9rZW4sXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgT3B0aW9uYWwsXG4gICAgRWxlbWVudFJlZixcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgVmlld0NoaWxkLFxuICAgIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEticVRhYkNoYW5nZUV2ZW50LCBLYnFUYWJHcm91cCB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy90YWJzJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICAgIEticUNvZGVCbG9ja0NvbmZpZ3VyYXRpb24sXG4gICAgS2JxQ29kZUZpbGVcbn0gZnJvbSAnLi9jb2RlLWJsb2NrLnR5cGVzJztcblxuXG5leHBvcnQgY29uc3QgQ09QSUVEX01FU1NBR0VfVE9PTFRJUF9USU1FT1VUID0gMTAwO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfRVhURU5TSU9OID0gJ3R4dCc7XG5leHBvcnQgY29uc3QgTEFOR1VBR0VTX0VYVEVOU0lPTlMgPSB7XG4gICAgaHRtbDogJ2h0bWwnLFxuICAgIGNzczogJ2NzcycsXG4gICAgcGhwOiAncGhwJyxcbiAgICBqYXZhOiAnamF2YScsXG4gICAgYmFzaDogJ3NoJyxcbiAgICBqYXZhc2NyaXB0OiAnanMnLFxuICAgIHR5cGVzY3JpcHQ6ICd0cycsXG4gICAgcHl0aG9uOiAncHknLFxuICAgIHJ1Ynk6ICdyYicsXG4gICAgYzogJ2MnLFxuICAgICdjKysnOiAnY3BwJyxcbiAgICAnYyMnOiAnY3MnLFxuICAgIGNzaGFycDogJ2NzJyxcbiAgICBsdWE6ICdsdWEnLFxuICAgIHhtbDogJ3htbCcsXG4gICAganNvbjogJ2pzb24nXG59O1xuXG5leHBvcnQgY29uc3QgS0JRX0NPREVfQkxPQ0tfQ09ORklHVVJBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxhbnk+KCdLYnFDb2RlQmxvY2tDb25maWd1cmF0aW9uJyk7XG5cbmV4cG9ydCBjb25zdCBLQlFfQ09ERV9CTE9DS19ERUZBVUxUX0NPTkZJR1VSQVRJT04gPSB7XG4gICAgc29mdFdyYXBPblRvb2x0aXA6ICfQktC60LvRjtGH0LjRgtGMINC/0LXRgNC10L3QvtGBINC/0L4g0YHQu9C+0LLQsNC8JyxcbiAgICBzb2Z0V3JhcE9mZlRvb2x0aXA6ICfQktGL0LrQu9GO0YfQuNGC0Ywg0L/QtdGA0LXQvdC+0YEg0L/QviDRgdC70L7QstCw0LwnLFxuICAgIGRvd25sb2FkVG9vbHRpcDogJ9Ch0LrQsNGH0LDRgtGMJyxcbiAgICBjb3BpZWRUb29sdGlwOiAn4pyTINCh0LrQvtC/0LjRgNC+0LLQsNC90L4nLFxuICAgIGNvcHlUb29sdGlwOiAn0KHQutC+0L/QuNGA0L7QstCw0YLRjCcsXG4gICAgdmlld0FsbFRleHQ6ICfQn9C+0LrQsNC30LDRgtGMINCy0YHQtScsXG4gICAgdmlld0xlc3NUZXh0OiAn0KHQstC10YDQvdGD0YLRjCcsXG4gICAgb3BlbkV4dGVybmFsU3lzdGVtVG9vbHRpcDogJ9Ce0YLQutGA0YvRgtGMINCy0L4g0LLQvdC10YjQvdC10Lkg0YHQuNGB0YLQtdC80LUnXG59O1xuXG5cbmNvbnN0IGFjdGlvbkJhckJsb2NrTGVmdE1hcmdpbiA9IDI0O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1jb2RlLWJsb2NrJyxcbiAgICBleHBvcnRBczogJ2ticUNvZGVCbG9jaycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvZGUtYmxvY2suY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvZGUtYmxvY2suc2NzcyddLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtY29kZS1ibG9jaycsXG4gICAgICAgICdbY2xhc3Mua2JxLWNvZGUtYmxvY2tfbGVzcy1jb250cmFzdF0nOiAnbGVzc0NvbnRyYXN0JyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19oaWRlLWxpbmUtbnVtYmVyc10nOiAnIWxpbmVOdW1iZXJzJyxcbiAgICAgICAgJ1tjbGFzcy5rYnEtY29kZS1ibG9ja19zaW5nbGUtZmlsZV0nOiAnc2luZ2xlRmlsZScsXG4gICAgICAgICdbY2xhc3Mua2JxLWNvZGUtYmxvY2tfbm8taGVhZGVyXSc6ICdub0hlYWRlcicsXG4gICAgICAgICcod2luZG93OnJlc2l6ZSknOiAncmVzaXplU3RyZWFtLm5leHQoJGV2ZW50KSdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgS2JxQ29kZUJsb2NrQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcblxuICAgIEBWaWV3Q2hpbGQoS2JxVGFiR3JvdXApIHRhYkdyb3VwOiBLYnFUYWJHcm91cDtcblxuICAgIEBJbnB1dCgpIGxpbmVOdW1iZXJzID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBjb2RlRmlsZXM6IEticUNvZGVGaWxlW107XG4gICAgQElucHV0KCkgbGVzc0NvbnRyYXN0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIG1heEhlaWdodDogbnVtYmVyO1xuICAgIEBJbnB1dCgpIHNvZnRXcmFwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBnZXQgbm9IZWFkZXIoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29kZUZpbGVzLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5jb2RlRmlsZXNbMF0uZmlsZW5hbWU7XG4gICAgfVxuXG4gICAgZ2V0IHNpbmdsZUZpbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvZGVGaWxlcy5sZW5ndGggPT09IDE7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRUYWJJbmRleCA9IDA7XG4gICAgY29waWVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmlld0FsbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIG11bHRpTGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgcmVhZG9ubHkgcmVzaXplU3RyZWFtID0gbmV3IFN1YmplY3Q8RXZlbnQ+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc2l6ZURlYm91bmNlSW50ZXJ2YWw6IG51bWJlciA9IDEwMDtcbiAgICBwcml2YXRlIHJlc2l6ZVN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGNsaXBib2FyZDogQ2xpcGJvYXJkLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0NPREVfQkxPQ0tfQ09ORklHVVJBVElPTikgcHVibGljIGNvbmZpZzogS2JxQ29kZUJsb2NrQ29uZmlndXJhdGlvblxuICAgICkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZyB8fCBLQlFfQ09ERV9CTE9DS19ERUZBVUxUX0NPTkZJR1VSQVRJT047XG5cbiAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24gPSB0aGlzLnJlc2l6ZVN0cmVhbVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMucmVzaXplRGVib3VuY2VJbnRlcnZhbCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHRoaXMudXBkYXRlSGVhZGVyKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNpemVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB1cGRhdGVIZWFkZXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWVudFdpZHRoOiBudW1iZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdrYnEtYWN0aW9uYmFyLWJsb2NrJykuY2xpZW50V2lkdGg7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIHRoaXMudGFiR3JvdXAudGFiSGVhZGVyLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICdtYXJnaW4tcmlnaHQnLFxuICAgICAgICAgICAgYCR7YWN0aW9uQmFyQmxvY2tMZWZ0TWFyZ2luICsgY2xpZW50V2lkdGh9cHhgXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICB0b2dnbGVTb2Z0V3JhcCgpIHtcbiAgICAgICAgdGhpcy5zb2Z0V3JhcCA9ICF0aGlzLnNvZnRXcmFwO1xuICAgIH1cblxuICAgIHRvZ2dsZVZpZXdBbGwoKSB7XG4gICAgICAgIHRoaXMudmlld0FsbCA9ICF0aGlzLnZpZXdBbGw7XG4gICAgfVxuXG4gICAgZG93bmxvYWRDb2RlKCkge1xuICAgICAgICBjb25zdCBjb2RlRmlsZSA9IHRoaXMuY29kZUZpbGVzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF07XG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbY29kZUZpbGUuY29udGVudF0sIHsgdHlwZTogJ3RleHQvcGxhaW4nIH0pO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHVybCk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGAke3RoaXMuZ2V0RnVsbEZpbGVOYW1lKGNvZGVGaWxlKX1gKTtcbiAgICAgICAgbGluay5jbGljaygpO1xuICAgIH1cblxuICAgIGNvcHlDb2RlKCkge1xuICAgICAgICB0aGlzLmNsaXBib2FyZC5jb3B5KHRoaXMuY29kZUZpbGVzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF0uY29udGVudCk7XG4gICAgICAgIHRoaXMuY29waWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvcGVuRXh0ZXJuYWxTeXN0ZW0oKSB7XG4gICAgICAgIGNvbnN0IGV4dGVybmFsTGluayA9IHRoaXMuY29kZUZpbGVzW3RoaXMuc2VsZWN0ZWRUYWJJbmRleF0ubGluaztcbiAgICAgICAgd2luZG93Lm9wZW4oZXh0ZXJuYWxMaW5rLCAnX2JsYW5rJyk7XG4gICAgfVxuXG4gICAgb25IaWdobGlnaHRlZCgpIHtcbiAgICAgICAgc2V0VGltZW91dCh0aGlzLnVwZGF0ZU11bHRpbGluZSwgMSk7XG4gICAgfVxuXG4gICAgZ2V0TWF4SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heEhlaWdodCA+IDAgJiYgIXRoaXMudmlld0FsbCA/IGAke3RoaXMubWF4SGVpZ2h0fXB4YCA6ICdub25lJztcbiAgICB9XG5cbiAgICBvblNlbGVjdFRhYigkZXZlbnQ6IEticVRhYkNoYW5nZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJJbmRleCA9ICRldmVudC5pbmRleDtcbiAgICAgICAgdGhpcy51cGRhdGVNdWx0aWxpbmUoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KHRoaXMudXBkYXRlSGVhZGVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU11bHRpbGluZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5tdWx0aUxpbmUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudFxuICAgICAgICAgICAgLnF1ZXJ5U2VsZWN0b3JBbGwoJy5obGpzLWxuLW51bWJlcnMnKS5sZW5ndGggPiAxO1xuXG4gICAgICAgIHRoaXMudXBkYXRlSGVhZGVyKCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZ1bGxGaWxlTmFtZShjb2RlRmlsZTogS2JxQ29kZUZpbGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGNvZGVGaWxlLmZpbGVuYW1lIHx8ICdjb2RlJztcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gTEFOR1VBR0VTX0VYVEVOU0lPTlNbY29kZUZpbGUubGFuZ3VhZ2VdIHx8IERFRkFVTFRfRVhURU5TSU9OO1xuXG4gICAgICAgIHJldHVybiBgJHtmaWxlTmFtZX0uJHtleHRlbnNpb259YDtcbiAgICB9XG59XG4iLCI8a2JxLXRhYi1ncm91cCAoc2VsZWN0ZWRUYWJDaGFuZ2UpPVwib25TZWxlY3RUYWIoJGV2ZW50KVwiPlxuICAgIDxrYnEtdGFiXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2RlRmlsZSBvZiBjb2RlRmlsZXM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBbZGlzYWJsZWRdPVwic2luZ2xlRmlsZVwiPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBrYnEtdGFiLWxhYmVsPnt7IGNvZGVGaWxlLmZpbGVuYW1lIH19PC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8cHJlIGNsYXNzPVwia2JxLWNvZGUtYmxvY2tfX2NvZGUga2JxLXNjcm9sbGJhclwiXG4gICAgICAgICAgICAgI2NvZGVDb250ZW50XG4gICAgICAgICAgICAgW3N0eWxlLm1heC1oZWlnaHRdPVwiZ2V0TWF4SGVpZ2h0KClcIlxuICAgICAgICAgICAgIFtjbGFzcy5rYnEtY29kZS1ibG9ja19fY29kZV9zb2Z0LXdyYXBdPVwic29mdFdyYXBcIlxuICAgICAgICAgICAgIFtjbGFzcy5rYnEtY29kZS1ibG9ja19fY29kZV92aWV3LWFsbF09XCJ2aWV3QWxsXCJcbiAgICAgICAgICAgID48Y29kZSBjbGFzcz1cImhsanNcIlxuICAgICAgICAgICAgICAgW2lkXT1cImNvZGVGaWxlLmZpbGVuYW1lICsgJ18nICsgaVwiXG4gICAgICAgICAgICAgICBbY2xhc3MuaGxqcy1saW5lLW51bWJlcnNdPVwibGluZU51bWJlcnNcIlxuICAgICAgICAgICAgICAgW2hpZ2hsaWdodF09XCJjb2RlRmlsZXNbaV0uY29udGVudFwiXG4gICAgICAgICAgICAgICBbbGluZU51bWJlcnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAoaGlnaGxpZ2h0ZWQpPVwib25IaWdobGlnaHRlZCgpXCI+XG4gICAgICAgICAgICA8L2NvZGU+PGticS1hY3Rpb25iYXItYmxvY2tcbiAgICAgICAgICAgICAgICBbY2xhc3Mua2JxLWFjdGlvbmJhci1ibG9ja19mbG9hdGluZ109XCJub0hlYWRlclwiXG4gICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgICAgIFtjb2RlRmlsZXNdPVwiY29kZUZpbGVzXCJcbiAgICAgICAgICAgICAgICBbc2VsZWN0ZWRUYWJJbmRleF09XCJzZWxlY3RlZFRhYkluZGV4XCJcbiAgICAgICAgICAgICAgICBbbGVzc0NvbnRyYXN0XT1cImxlc3NDb250cmFzdFwiXG4gICAgICAgICAgICAgICAgW211bHRpTGluZV09XCJtdWx0aUxpbmVcIlxuICAgICAgICAgICAgICAgIFtzb2Z0V3JhcF09XCJzb2Z0V3JhcFwiXG4gICAgICAgICAgICAgICAgKHRvZ2dsZVNvZnRXcmFwKT1cInRvZ2dsZVNvZnRXcmFwKClcIlxuICAgICAgICAgICAgICAgIChkb3dubG9hZENvZGUpPVwiZG93bmxvYWRDb2RlKClcIlxuICAgICAgICAgICAgICAgIChjb3B5Q29kZSk9XCJjb3B5Q29kZSgpXCJcbiAgICAgICAgICAgICAgICAob3BlbkV4dGVybmFsU3lzdGVtKT1cIm9wZW5FeHRlcm5hbFN5c3RlbSgpXCI+XG4gICAgICAgICAgICA8L2ticS1hY3Rpb25iYXItYmxvY2s+PC9wcmU+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJrYnEtYnV0dG9uX3RyYW5zcGFyZW50IGticS1jb2RlLWJsb2NrX19zaG93LW1vcmVcIlxuICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJ2aWV3QWxsIHx8IGNvZGVDb250ZW50Lm9mZnNldEhlaWdodCA8IGNvZGVDb250ZW50LnNjcm9sbEhlaWdodFwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVmlld0FsbCgpXCI+XG5cbiAgICAgICAgICAgIHt7IHZpZXdBbGwgPyBjb25maWcudmlld0xlc3NUZXh0IDogY29uZmlnLnZpZXdBbGxUZXh0fX1cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWMgbWMtYW5nbGUtZG93bi1TXzE2XCIgKm5nSWY9XCIhdmlld0FsbFwiPjwvaT5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwibWMga2JxLWFuZ2xlLXVwLVNfMTZcIiAqbmdJZj1cInZpZXdBbGxcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwva2JxLXRhYj5cbjwva2JxLXRhYi1ncm91cD5cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { fadeAnimation } from './fade-animations';
|
|
2
2
|
export * from './animation';
|
|
3
|
-
export {
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
export { kbqSelectAnimations } from './select-animations';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvYW5pbWF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxjQUFjLGFBQWEsQ0FBQztBQUM1QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGZhZGVBbmltYXRpb24gfSBmcm9tICcuL2ZhZGUtYW5pbWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2FuaW1hdGlvbic7XG5leHBvcnQgeyBrYnFTZWxlY3RBbmltYXRpb25zIH0gZnJvbSAnLi9zZWxlY3QtYW5pbWF0aW9ucyc7XG4iXX0=
|
|
@@ -4,7 +4,7 @@ import { animate, state, style, transition, trigger, group } from '@angular/anim
|
|
|
4
4
|
* const containing the metadata for one animation.
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
|
-
export const
|
|
7
|
+
export const kbqSelectAnimations = {
|
|
8
8
|
/**
|
|
9
9
|
* This animation transforms the select's overlay panel on and off the page.
|
|
10
10
|
*
|
|
@@ -40,6 +40,6 @@ export const mcSelectAnimations = {
|
|
|
40
40
|
])
|
|
41
41
|
])
|
|
42
42
|
};
|
|
43
|
-
export const transformPanel =
|
|
44
|
-
export const fadeInContent =
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
export const transformPanel = kbqSelectAnimations.transformPanel;
|
|
44
|
+
export const fadeInContent = kbqSelectAnimations.fadeInContent;
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWFuaW1hdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvYW5pbWF0aW9uL3NlbGVjdC1hbmltYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxPQUFPLEVBRVAsS0FBSyxFQUNMLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNQLEtBQUssRUFDUixNQUFNLHFCQUFxQixDQUFDO0FBRzdCOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FHNUI7SUFDQTs7Ozs7Ozs7T0FRRztJQUNILGNBQWMsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7UUFDdEMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDaEIsU0FBUyxFQUFFLFdBQVc7WUFDdEIsUUFBUSxFQUFFLE1BQU07WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDYixDQUFDLENBQUM7UUFDSCxVQUFVLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztZQUMxQixPQUFPLENBQUMsd0NBQXdDLENBQUM7U0FDcEQsQ0FBQyxDQUFDO1FBQ0gsVUFBVSxDQUFDLFdBQVcsRUFBRTtZQUNwQixPQUFPLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdkQsQ0FBQztLQUNMLENBQUM7SUFFRjs7OztPQUlHO0lBQ0gsYUFBYSxFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUU7UUFDcEMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QyxVQUFVLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQztTQUMxRCxDQUFDO0tBQ0wsQ0FBQztDQUNMLENBQUM7QUFHRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsY0FBYyxDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIGFuaW1hdGUsXG4gICAgQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhLFxuICAgIHN0YXRlLFxuICAgIHN0eWxlLFxuICAgIHRyYW5zaXRpb24sXG4gICAgdHJpZ2dlcixcbiAgICBncm91cFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuXG4vKipcbiAqIFRoZSBmb2xsb3dpbmcgYXJlIGFsbCB0aGUgYW5pbWF0aW9ucyBmb3IgdGhlIGticS1zZWxlY3QgY29tcG9uZW50LCB3aXRoIGVhY2hcbiAqIGNvbnN0IGNvbnRhaW5pbmcgdGhlIG1ldGFkYXRhIGZvciBvbmUgYW5pbWF0aW9uLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGticVNlbGVjdEFuaW1hdGlvbnM6IHtcbiAgICByZWFkb25seSB0cmFuc2Zvcm1QYW5lbDogQW5pbWF0aW9uVHJpZ2dlck1ldGFkYXRhO1xuICAgIHJlYWRvbmx5IGZhZGVJbkNvbnRlbnQ6IEFuaW1hdGlvblRyaWdnZXJNZXRhZGF0YTtcbn0gPSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBhbmltYXRpb24gdHJhbnNmb3JtcyB0aGUgc2VsZWN0J3Mgb3ZlcmxheSBwYW5lbCBvbiBhbmQgb2ZmIHRoZSBwYWdlLlxuICAgICAqXG4gICAgICogV2hlbiB0aGUgcGFuZWwgaXMgYXR0YWNoZWQgdG8gdGhlIERPTSwgaXQgZXhwYW5kcyBpdHMgd2lkdGggYnkgdGhlIGFtb3VudCBvZiBwYWRkaW5nLCBzY2FsZXMgaXRcbiAgICAgKiB1cCB0byAxMDAlIG9uIHRoZSBZIGF4aXMsIGZhZGVzIGluIGl0cyBib3JkZXIsIGFuZCB0cmFuc2xhdGVzIHNsaWdodGx5IHVwIGFuZCB0byB0aGVcbiAgICAgKiBzaWRlIHRvIGVuc3VyZSB0aGUgb3B0aW9uIHRleHQgY29ycmVjdGx5IG92ZXJsYXBzIHRoZSB0cmlnZ2VyIHRleHQuXG4gICAgICpcbiAgICAgKiBXaGVuIHRoZSBwYW5lbCBpcyByZW1vdmVkIGZyb20gdGhlIERPTSwgaXQgc2ltcGx5IGZhZGVzIG91dCBsaW5lYXJseS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1QYW5lbDogdHJpZ2dlcigndHJhbnNmb3JtUGFuZWwnLCBbXG4gICAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe1xuICAgICAgICAgICAgdHJhbnNmb3JtOiAnc2NhbGVZKDApJyxcbiAgICAgICAgICAgIG1pbldpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgIH0pKSxcbiAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiAqJywgZ3JvdXAoW1xuICAgICAgICAgICAgYW5pbWF0ZSgnMTUwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSknKVxuICAgICAgICBdKSksXG4gICAgICAgIHRyYW5zaXRpb24oJyogPT4gdm9pZCcsIFtcbiAgICAgICAgICAgIGFuaW1hdGUoJzI1MG1zIDEwMG1zIGxpbmVhcicsIHN0eWxlKHsgb3BhY2l0eTogMCB9KSlcbiAgICAgICAgXSlcbiAgICBdKSxcblxuICAgIC8qKlxuICAgICAqIFRoaXMgYW5pbWF0aW9uIGZhZGVzIGluIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIGFuZCB0ZXh0IGNvbnRlbnQgb2YgdGhlXG4gICAgICogc2VsZWN0J3Mgb3B0aW9ucy4gSXQgaXMgdGltZSBkZWxheWVkIHRvIG9jY3VyIDEwMG1zIGFmdGVyIHRoZSBvdmVybGF5XG4gICAgICogcGFuZWwgaGFzIHRyYW5zZm9ybWVkIGluLlxuICAgICAqL1xuICAgIGZhZGVJbkNvbnRlbnQ6IHRyaWdnZXIoJ2ZhZGVJbkNvbnRlbnQnLCBbXG4gICAgICAgIHN0YXRlKCdzaG93aW5nJywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKSxcbiAgICAgICAgdHJhbnNpdGlvbigndm9pZCA9PiBzaG93aW5nJywgW1xuICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwIH0pLFxuICAgICAgICAgICAgYW5pbWF0ZSgnMTUwbXMgMTAwbXMgY3ViaWMtYmV6aWVyKDAuNTUsIDAsIDAuNTUsIDAuMiknKVxuICAgICAgICBdKVxuICAgIF0pXG59O1xuXG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1QYW5lbCA9IGticVNlbGVjdEFuaW1hdGlvbnMudHJhbnNmb3JtUGFuZWw7XG5cbmV4cG9ydCBjb25zdCBmYWRlSW5Db250ZW50ID0ga2JxU2VsZWN0QW5pbWF0aW9ucy5mYWRlSW5Db250ZW50O1xuIl19
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { NgModule } from '@angular/core';
|
|
2
2
|
import { DateFormatter } from './date/formatter';
|
|
3
3
|
import { AbsoluteDateFormatterPipe, AbsoluteDateShortFormatterPipe, AbsoluteDateTimeFormatterPipe, AbsoluteShortDateTimeFormatterPipe, RangeDateFormatterPipe, RangeDateTimeFormatterPipe, RangeMiddleDateTimeFormatterPipe, RangeShortDateFormatterPipe, RangeShortDateTimeFormatterPipe, RelativeDateFormatterPipe, RelativeDateTimeFormatterPipe, RelativeShortDateFormatterPipe, RelativeShortDateTimeFormatterPipe } from './date/formatter.pipe';
|
|
4
|
-
import { KbqDecimalPipe } from './number/formatter';
|
|
4
|
+
import { KbqDecimalPipe, KbqRoundDecimalPipe, KbqTableNumberPipe } from './number/formatter';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class KbqFormattersModule {
|
|
7
7
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqFormattersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
8
|
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqFormattersModule, declarations: [KbqDecimalPipe,
|
|
9
|
+
KbqRoundDecimalPipe,
|
|
10
|
+
KbqTableNumberPipe,
|
|
9
11
|
AbsoluteDateFormatterPipe,
|
|
10
12
|
AbsoluteDateTimeFormatterPipe,
|
|
11
13
|
AbsoluteDateShortFormatterPipe,
|
|
@@ -19,6 +21,8 @@ export class KbqFormattersModule {
|
|
|
19
21
|
RangeDateTimeFormatterPipe,
|
|
20
22
|
RangeShortDateTimeFormatterPipe,
|
|
21
23
|
RangeMiddleDateTimeFormatterPipe], exports: [KbqDecimalPipe,
|
|
24
|
+
KbqRoundDecimalPipe,
|
|
25
|
+
KbqTableNumberPipe,
|
|
22
26
|
AbsoluteDateFormatterPipe,
|
|
23
27
|
AbsoluteDateTimeFormatterPipe,
|
|
24
28
|
AbsoluteDateShortFormatterPipe,
|
|
@@ -39,6 +43,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
39
43
|
args: [{
|
|
40
44
|
declarations: [
|
|
41
45
|
KbqDecimalPipe,
|
|
46
|
+
KbqRoundDecimalPipe,
|
|
47
|
+
KbqTableNumberPipe,
|
|
42
48
|
AbsoluteDateFormatterPipe,
|
|
43
49
|
AbsoluteDateTimeFormatterPipe,
|
|
44
50
|
AbsoluteDateShortFormatterPipe,
|
|
@@ -55,6 +61,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
55
61
|
],
|
|
56
62
|
exports: [
|
|
57
63
|
KbqDecimalPipe,
|
|
64
|
+
KbqRoundDecimalPipe,
|
|
65
|
+
KbqTableNumberPipe,
|
|
58
66
|
AbsoluteDateFormatterPipe,
|
|
59
67
|
AbsoluteDateTimeFormatterPipe,
|
|
60
68
|
AbsoluteDateShortFormatterPipe,
|
|
@@ -75,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
75
83
|
export * from './number/formatter';
|
|
76
84
|
export * from './date/formatter';
|
|
77
85
|
export * from './date/formatter.pipe';
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvZm9ybWF0dGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQ0gseUJBQXlCLEVBQ3pCLDhCQUE4QixFQUM5Qiw2QkFBNkIsRUFDN0Isa0NBQWtDLEVBQ2xDLHNCQUFzQixFQUN0QiwwQkFBMEIsRUFDMUIsZ0NBQWdDLEVBQ2hDLDJCQUEyQixFQUMzQiwrQkFBK0IsRUFDL0IseUJBQXlCLEVBQ3pCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsa0NBQWtDLEVBQ3JDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQWdEN0YsTUFBTSxPQUFPLG1CQUFtQjtpSUFBbkIsbUJBQW1CO2tJQUFuQixtQkFBbUIsaUJBM0N4QixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUVsQix5QkFBeUI7WUFDekIsNkJBQTZCO1lBQzdCLDhCQUE4QjtZQUM5QixrQ0FBa0M7WUFFbEMseUJBQXlCO1lBQ3pCLDZCQUE2QjtZQUM3Qiw4QkFBOEI7WUFDOUIsa0NBQWtDO1lBRWxDLHNCQUFzQjtZQUN0QiwyQkFBMkI7WUFDM0IsMEJBQTBCO1lBQzFCLCtCQUErQjtZQUMvQixnQ0FBZ0MsYUFHaEMsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFFbEIseUJBQXlCO1lBQ3pCLDZCQUE2QjtZQUM3Qiw4QkFBOEI7WUFDOUIsa0NBQWtDO1lBRWxDLHlCQUF5QjtZQUN6Qiw2QkFBNkI7WUFDN0IsOEJBQThCO1lBQzlCLGtDQUFrQztZQUVsQyxzQkFBc0I7WUFDdEIsMkJBQTJCO1lBQzNCLDBCQUEwQjtZQUMxQiwrQkFBK0I7WUFDL0IsZ0NBQWdDO2tJQUkzQixtQkFBbUIsYUFGakIsQ0FBQyxhQUFhLENBQUM7OzJGQUVqQixtQkFBbUI7a0JBN0MvQixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRTt3QkFDVixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUVsQix5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsOEJBQThCO3dCQUM5QixrQ0FBa0M7d0JBRWxDLHlCQUF5Qjt3QkFDekIsNkJBQTZCO3dCQUM3Qiw4QkFBOEI7d0JBQzlCLGtDQUFrQzt3QkFFbEMsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIsK0JBQStCO3dCQUMvQixnQ0FBZ0M7cUJBQ25DO29CQUNELE9BQU8sRUFBRTt3QkFDTCxjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUVsQix5QkFBeUI7d0JBQ3pCLDZCQUE2Qjt3QkFDN0IsOEJBQThCO3dCQUM5QixrQ0FBa0M7d0JBRWxDLHlCQUF5Qjt3QkFDekIsNkJBQTZCO3dCQUM3Qiw4QkFBOEI7d0JBQzlCLGtDQUFrQzt3QkFFbEMsc0JBQXNCO3dCQUN0QiwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIsK0JBQStCO3dCQUMvQixnQ0FBZ0M7cUJBQ25DO29CQUNELFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQztpQkFDN0I7O0FBSUQsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEYXRlRm9ybWF0dGVyIH0gZnJvbSAnLi9kYXRlL2Zvcm1hdHRlcic7XG5pbXBvcnQge1xuICAgIEFic29sdXRlRGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgQWJzb2x1dGVEYXRlU2hvcnRGb3JtYXR0ZXJQaXBlLFxuICAgIEFic29sdXRlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgIEFic29sdXRlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgUmFuZ2VEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgUmFuZ2VTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcbiAgICBSZWxhdGl2ZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgIFJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICBSZWxhdGl2ZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlXG59IGZyb20gJy4vZGF0ZS9mb3JtYXR0ZXIucGlwZSc7XG5pbXBvcnQgeyBLYnFEZWNpbWFsUGlwZSwgS2JxUm91bmREZWNpbWFsUGlwZSwgS2JxVGFibGVOdW1iZXJQaXBlIH0gZnJvbSAnLi9udW1iZXIvZm9ybWF0dGVyJztcblxuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBLYnFEZWNpbWFsUGlwZSxcbiAgICAgICAgS2JxUm91bmREZWNpbWFsUGlwZSxcbiAgICAgICAgS2JxVGFibGVOdW1iZXJQaXBlLFxuXG4gICAgICAgIEFic29sdXRlRGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGUsXG5cbiAgICAgICAgUmVsYXRpdmVEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcblxuICAgICAgICBSYW5nZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJhbmdlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBLYnFEZWNpbWFsUGlwZSxcbiAgICAgICAgS2JxUm91bmREZWNpbWFsUGlwZSxcbiAgICAgICAgS2JxVGFibGVOdW1iZXJQaXBlLFxuXG4gICAgICAgIEFic29sdXRlRGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBBYnNvbHV0ZURhdGVTaG9ydEZvcm1hdHRlclBpcGUsXG4gICAgICAgIEFic29sdXRlU2hvcnREYXRlVGltZUZvcm1hdHRlclBpcGUsXG5cbiAgICAgICAgUmVsYXRpdmVEYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJlbGF0aXZlU2hvcnREYXRlRm9ybWF0dGVyUGlwZSxcbiAgICAgICAgUmVsYXRpdmVTaG9ydERhdGVUaW1lRm9ybWF0dGVyUGlwZSxcblxuICAgICAgICBSYW5nZURhdGVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZUZvcm1hdHRlclBpcGUsXG4gICAgICAgIFJhbmdlRGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZVNob3J0RGF0ZVRpbWVGb3JtYXR0ZXJQaXBlLFxuICAgICAgICBSYW5nZU1pZGRsZURhdGVUaW1lRm9ybWF0dGVyUGlwZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbRGF0ZUZvcm1hdHRlcl1cbn0pXG5leHBvcnQgY2xhc3MgS2JxRm9ybWF0dGVyc01vZHVsZSB7fVxuXG5cbmV4cG9ydCAqIGZyb20gJy4vbnVtYmVyL2Zvcm1hdHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUvZm9ybWF0dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS9mb3JtYXR0ZXIucGlwZSc7XG4iXX0=
|
|
@@ -27,8 +27,29 @@ const minIntGroupPosition = 1;
|
|
|
27
27
|
const minFractionGroupPosition = 3;
|
|
28
28
|
const maxFractionGroupPosition = 5;
|
|
29
29
|
const useGroupingPosition = 7;
|
|
30
|
+
// tslint:disable:no-magic-numbers
|
|
31
|
+
const ROUNDING_UNITS = {
|
|
32
|
+
thousand: 1e3,
|
|
33
|
+
tenThousand: 10 * 1e3,
|
|
34
|
+
million: 1e6,
|
|
35
|
+
oneHundredMillions: 100 * 1e6,
|
|
36
|
+
billion: 1e9,
|
|
37
|
+
trillion: 1e12
|
|
38
|
+
};
|
|
39
|
+
const intervalsConfig = {
|
|
40
|
+
supportedLanguages: ['ru-RU', 'en-US', 'es-LA', 'pt-BR', 'fa-IR'],
|
|
41
|
+
intervals: [
|
|
42
|
+
{ startRange: 1, endRange: ROUNDING_UNITS.thousand },
|
|
43
|
+
{ startRange: ROUNDING_UNITS.thousand, endRange: ROUNDING_UNITS.tenThousand, precision: 1 },
|
|
44
|
+
{ startRange: ROUNDING_UNITS.tenThousand, endRange: ROUNDING_UNITS.million },
|
|
45
|
+
{ startRange: ROUNDING_UNITS.million, endRange: ROUNDING_UNITS.million * 10, precision: 1 },
|
|
46
|
+
{ startRange: ROUNDING_UNITS.million * 10, endRange: ROUNDING_UNITS.billion }
|
|
47
|
+
]
|
|
48
|
+
};
|
|
49
|
+
// tslint:enable:no-magic-numbers
|
|
30
50
|
class ParsedDigitsInfo {
|
|
31
51
|
}
|
|
52
|
+
const defaultValueForGroupingInRULocale = 10000;
|
|
32
53
|
function parseDigitsInfo(digitsInfo) {
|
|
33
54
|
const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);
|
|
34
55
|
if (parts === null) {
|
|
@@ -92,16 +113,28 @@ export class KbqDecimalPipe {
|
|
|
92
113
|
...this.options,
|
|
93
114
|
...parsedDigitsInfo
|
|
94
115
|
};
|
|
116
|
+
if (this.isSpecialFormatForRULocale(currentLocale, value, parsedDigitsInfo?.useGrouping)) {
|
|
117
|
+
options.useGrouping = false;
|
|
118
|
+
}
|
|
95
119
|
try {
|
|
96
120
|
const num = strToNumber(value);
|
|
121
|
+
/* Guideline requires for group separator to be `space`, as in 'ru-RU' locale.
|
|
122
|
+
* But by default in es-LA locale is used `comma`.
|
|
123
|
+
* To reduce data manipulation, 'ru-RU' locale is used. */
|
|
124
|
+
if (currentLocale === 'es-LA') {
|
|
125
|
+
return Intl.NumberFormat.call(this, 'ru-RU', options).format(num);
|
|
126
|
+
}
|
|
97
127
|
return Intl.NumberFormat.call(this, currentLocale, options).format(num);
|
|
98
128
|
}
|
|
99
129
|
catch (error) {
|
|
100
130
|
throw Error(`InvalidPipeArgument: KbqDecimalPipe for pipe '${JSON.stringify(error.message)}'`);
|
|
101
131
|
}
|
|
102
132
|
}
|
|
133
|
+
isSpecialFormatForRULocale(locale, value, grouping) {
|
|
134
|
+
return ['ru', 'ru-RU'].includes(locale) && grouping === undefined && value < defaultValueForGroupingInRULocale;
|
|
135
|
+
}
|
|
103
136
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", 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 }); }
|
|
104
|
-
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, name: "
|
|
137
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, name: "kbqNumber", pure: false }); }
|
|
105
138
|
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, providedIn: 'root' }); }
|
|
106
139
|
}
|
|
107
140
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqDecimalPipe, decorators: [{
|
|
@@ -109,7 +142,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
109
142
|
args: [{ providedIn: 'root' }]
|
|
110
143
|
}, {
|
|
111
144
|
type: Pipe,
|
|
112
|
-
args: [{ name: '
|
|
145
|
+
args: [{ name: 'kbqNumber', pure: false }]
|
|
146
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
147
|
+
type: Optional
|
|
148
|
+
}, {
|
|
149
|
+
type: Inject,
|
|
150
|
+
args: [KBQ_LOCALE_ID]
|
|
151
|
+
}] }, { type: i1.KbqLocaleService, decorators: [{
|
|
152
|
+
type: Optional
|
|
153
|
+
}, {
|
|
154
|
+
type: Inject,
|
|
155
|
+
args: [KBQ_LOCALE_SERVICE]
|
|
156
|
+
}] }, { type: ParsedDigitsInfo, decorators: [{
|
|
157
|
+
type: Optional
|
|
158
|
+
}, {
|
|
159
|
+
type: Inject,
|
|
160
|
+
args: [KBQ_NUMBER_FORMATTER_OPTIONS]
|
|
161
|
+
}] }]; } });
|
|
162
|
+
export class KbqTableNumberPipe {
|
|
163
|
+
constructor(id, localeService, options) {
|
|
164
|
+
this.id = id;
|
|
165
|
+
this.localeService = localeService;
|
|
166
|
+
this.options = options;
|
|
167
|
+
this.options = this.options || KBQ_NUMBER_FORMATTER_DEFAULT_OPTIONS;
|
|
168
|
+
this.localeService?.changes
|
|
169
|
+
.subscribe((newId) => this.id = newId);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* @param value The number to be formatted.
|
|
173
|
+
* @param digitsInfo Decimal representation options, specified by a string
|
|
174
|
+
* in the following format:<br>
|
|
175
|
+
* <code>{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}</code>.
|
|
176
|
+
* - `minIntegerDigits`: The minimum number of integer digits before the decimal point.
|
|
177
|
+
* Default is `1`.
|
|
178
|
+
* - `minFractionDigits`: The minimum number of digits after the decimal point.
|
|
179
|
+
* Default is `0`.
|
|
180
|
+
* - `maxFractionDigits`: The maximum number of digits after the decimal point.
|
|
181
|
+
* Default is `3`.
|
|
182
|
+
* @param locale A locale code for the locale format rules to use.
|
|
183
|
+
* When not supplied, uses the value of `KBQ_LOCALE_ID`, which is `ru` by default.
|
|
184
|
+
*/
|
|
185
|
+
transform(value, digitsInfo, locale) {
|
|
186
|
+
if (isEmpty(value)) {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;
|
|
190
|
+
let parsedDigitsInfo;
|
|
191
|
+
if (digitsInfo) {
|
|
192
|
+
parsedDigitsInfo = parseDigitsInfo(digitsInfo);
|
|
193
|
+
}
|
|
194
|
+
const options = {
|
|
195
|
+
...this.options,
|
|
196
|
+
...parsedDigitsInfo
|
|
197
|
+
};
|
|
198
|
+
try {
|
|
199
|
+
const num = strToNumber(value);
|
|
200
|
+
/* Guideline requires for group separator to be `space`, as in 'ru-RU' locale.
|
|
201
|
+
* But by default in es-LA locale is used `comma`.
|
|
202
|
+
* To reduce data manipulation, 'ru-RU' locale is used. */
|
|
203
|
+
if (currentLocale === 'es-LA') {
|
|
204
|
+
return Intl.NumberFormat.call(this, 'ru-RU', options).format(num);
|
|
205
|
+
}
|
|
206
|
+
return Intl.NumberFormat.call(this, currentLocale, options).format(num);
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
throw Error(`InvalidPipeArgument: KbqTableNumberPipe for pipe '${JSON.stringify(error.message)}'`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", 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 }); }
|
|
213
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqTableNumberPipe, name: "kbqTableNumber", pure: false }); }
|
|
214
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTableNumberPipe, providedIn: 'root' }); }
|
|
215
|
+
}
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqTableNumberPipe, decorators: [{
|
|
217
|
+
type: Injectable,
|
|
218
|
+
args: [{ providedIn: 'root' }]
|
|
219
|
+
}, {
|
|
220
|
+
type: Pipe,
|
|
221
|
+
args: [{ name: 'kbqTableNumber', pure: false }]
|
|
113
222
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
114
223
|
type: Optional
|
|
115
224
|
}, {
|
|
@@ -126,4 +235,116 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImpor
|
|
|
126
235
|
type: Inject,
|
|
127
236
|
args: [KBQ_NUMBER_FORMATTER_OPTIONS]
|
|
128
237
|
}] }]; } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvbnVtYmVyL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBc0M7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWxHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUczRyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBUywyQkFBMkIsQ0FBQyxDQUFDO0FBRXBHLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFxQjtJQUNsRSxXQUFXLEVBQUUsSUFBSTtJQUNqQixvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIscUJBQXFCLEVBQUUsQ0FBQztDQUMzQixDQUFDO0FBR0YsU0FBUyxPQUFPLENBQUMsS0FBVTtJQUN2QixPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDO0FBQzVELENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFzQjtJQUN2QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDeEUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDeEI7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxrQkFBa0IsQ0FBQyxD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O1lBQ2YsR0FBRyxnQkFBZ0I7U0FDdEIsQ0FBQztRQUVGLElBQUk7WUFDQSxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFL0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzRTtRQUFDLE9BQU8sS0FBVSxFQUFFO1lBQ2pCLE1BQU0sS0FBSyxDQUFDLGlEQUFpRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbEc7SUFDTCxDQUFDO2lJQWpEUSxjQUFjLGtCQUVDLGFBQWEsNkJBQ2Isa0JBQWtCLDZCQUNsQiw0QkFBNEI7K0hBSjNDLGNBQWM7cUlBQWQsY0FBYyxjQUZELE1BQU07OzJGQUVuQixjQUFjO2tCQUYxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7a0JBQ2pDLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7OzBCQUc5QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3JDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bmFtaW5nLWNvbnZlbnRpb24gKi9cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEtCUV9ERUZBVUxUX0xPQ0FMRV9JRCwgS0JRX0xPQ0FMRV9JRCwgS0JRX0xPQ0FMRV9TRVJWSUNFLCBLYnFMb2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vbG9jYWxlcyc7XG5cblxuZXhwb3J0IGNvbnN0IEtCUV9OVU1CRVJfRk9STUFUVEVSX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nPignS2JxTnVtYmVyRm9ybWF0dGVyT3B0aW9ucycpO1xuXG5leHBvcnQgY29uc3QgS0JRX05VTUJFUl9GT1JNQVRURVJfREVGQVVMVF9PUFRJT05TOiBQYXJzZWREaWdpdHNJbmZvID0ge1xuICAgIHVzZUdyb3VwaW5nOiB0cnVlLFxuICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiAxLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMCxcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDNcbn07XG5cblxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09ICcnIHx8IHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gc3RyVG9OdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZyk6IG51bWJlciB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWlzTmFOKE51bWJlcih2YWx1ZSkgLSBwYXJzZUZsb2F0KHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3ZhbHVlfSBpcyBub3QgYSBudW1iZXJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfRk9STUFUX1JFR0VYUCA9IC9eKFxcZCspP1xcLigoXFxkKykoLShcXGQrKSk/KC0odHJ1ZXxmYWxzZSkpPyk/JC87XG5cbmNvbnN0IG1pbkludEdyb3VwUG9zaXRpb24gPSAxO1xuY29uc3QgbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uID0gMztcbmNvbnN0IG1heEZyYWN0aW9uR3JvdXBQb3NpdGlvbiA9IDU7XG5jb25zdCB1c2VHcm91cGluZ1Bvc2l0aW9uID0gNztcblxuaW50ZXJmYWNlIE51bWJlckZvcm1hdE9wdGlvbnMge1xuICAgIHVzZUdyb3VwaW5nOiBib29sZWFuO1xuXG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtU2lnbmlmaWNhbnREaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHM6IG51bWJlcjtcblxuICAgIGxvY2FsZU1hdGNoZXI/OiBzdHJpbmc7XG4gICAgc3R5bGU/OiBzdHJpbmc7XG5cbiAgICBjdXJyZW5jeT86IHN0cmluZztcbiAgICBjdXJyZW5jeURpc3BsYXk/OiBzdHJpbmc7XG59XG5cbmNsYXNzIFBhcnNlZERpZ2l0c0luZm8ge1xuICAgIHVzZUdyb3VwaW5nOiBib29sZWFuO1xuICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiBudW1iZXI7XG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRGlnaXRzSW5mbyhkaWdpdHNJbmZvOiBzdHJpbmcpOiBQYXJzZWREaWdpdHNJbmZvIHtcbiAgICBjb25zdCBwYXJ0cyA9IGRpZ2l0c0luZm8ubWF0Y2goTlVNQkVSX0ZPUk1BVF9SRUdFWFApO1xuXG4gICAgaWYgKHBhcnRzID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtkaWdpdHNJbmZvfSBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbmZvYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWluSW50UGFydCA9IHBhcnRzW21pbkludEdyb3VwUG9zaXRpb25dO1xuICAgIGNvbnN0IG1pbkZyYWN0aW9uUGFydCA9IHBhcnRzW21pbkZyYWN0aW9uR3JvdXBQb3NpdGlvbl07XG4gICAgY29uc3QgbWF4RnJhY3Rpb25QYXJ0ID0gcGFydHNbbWF4RnJhY3Rpb25Hcm91cFBvc2l0aW9uXTtcbiAgICBjb25zdCB1c2VHcm91cGluZ1BhcnQgPSBwYXJ0c1t1c2VHcm91cGluZ1Bvc2l0aW9uXTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBQYXJzZWREaWdpdHNJbmZvKCk7XG5cbiAgICBpZiAobWluSW50UGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IHBhcnNlSW50KG1pbkludFBhcnQpO1xuICAgIH1cblxuICAgIGlmIChtaW5GcmFjdGlvblBhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID0gcGFyc2VJbnQobWluRnJhY3Rpb25QYXJ0KTtcbiAgICB9XG5cbiAgICBpZiAobWF4RnJhY3Rpb25QYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHBhcnNlSW50KG1heEZyYWN0aW9uUGFydCk7XG4gICAgfSBlbHNlIGlmIChtaW5GcmFjdGlvblBhcnQgIT0gbnVsbCAmJiByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID4gcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cykge1xuICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cztcbiAgICB9XG5cbiAgICBpZiAodXNlR3JvdXBpbmdQYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0LnVzZUdyb3VwaW5nID0gdXNlR3JvdXBpbmdQYXJ0ID09PSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAnbWNOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticURlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9JRCkgcHJpdmF0ZSBpZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBLYnFMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9OVU1CRVJfRk9STUFUVEVSX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogUGFyc2VkRGlnaXRzSW5mb1xuICAgICkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgfHwgS0JRX05VTUJFUl9GT1JNQVRURVJfREVGQVVMVF9PUFRJT05TO1xuXG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlc1xuICAgICAgICAgICAgLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gdGhpcy5pZCA9IG5ld0lkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIG51bWJlciB0byBiZSBmb3JtYXR0ZWQuXG4gICAgICogQHBhcmFtIGRpZ2l0c0luZm8gRGVjaW1hbCByZXByZXNlbnRhdGlvbiBvcHRpb25zLCBzcGVjaWZpZWQgYnkgYSBzdHJpbmdcbiAgICAgKiBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDo8YnI+XG4gICAgICogPGNvZGU+e21pbkludGVnZXJEaWdpdHN9LnttaW5GcmFjdGlvbkRpZ2l0c30te21heEZyYWN0aW9uRGlnaXRzfTwvY29kZT4uXG4gICAgICogICAtIGBtaW5JbnRlZ2VyRGlnaXRzYDogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC5cbiAgICAgKiBEZWZhdWx0IGlzIGAxYC5cbiAgICAgKiAgIC0gYG1pbkZyYWN0aW9uRGlnaXRzYDogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC5cbiAgICAgKiBEZWZhdWx0IGlzIGAwYC5cbiAgICAgKiAgIC0gYG1heEZyYWN0aW9uRGlnaXRzYDogVGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC5cbiAgICAgKiBEZWZhdWx0IGlzIGAzYC5cbiAgICAgKiBAcGFyYW0gbG9jYWxlIEEgbG9jYWxlIGNvZGUgZm9yIHRoZSBsb2NhbGUgZm9ybWF0IHJ1bGVzIHRvIHVzZS5cbiAgICAgKiBXaGVuIG5vdCBzdXBwbGllZCwgdXNlcyB0aGUgdmFsdWUgb2YgYEtCUV9MT0NBTEVfSURgLCB3aGljaCBpcyBgcnVgIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGRpZ2l0c0luZm8/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHsgcmV0dXJuIG51bGw7IH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTnVtYmVyRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLnBhcnNlZERpZ2l0c0luZm9cbiAgICAgICAgfTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuXG4gICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCBvcHRpb25zKS5mb3JtYXQobnVtKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWRQaXBlQXJndW1lbnQ6IEticURlY2ltYWxQaXBlIGZvciBwaXBlICcke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfSdgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
238
|
+
export function isWithin(startRange, endRange, valueToCheck) {
|
|
239
|
+
return startRange <= valueToCheck && valueToCheck < endRange;
|
|
240
|
+
}
|
|
241
|
+
export class KbqRoundDecimalPipe {
|
|
242
|
+
constructor(id, localeService) {
|
|
243
|
+
this.id = id;
|
|
244
|
+
this.localeService = localeService;
|
|
245
|
+
this.localeService?.changes
|
|
246
|
+
.subscribe((newId) => this.id = newId);
|
|
247
|
+
}
|
|
248
|
+
transform(value, locale) {
|
|
249
|
+
if (isEmpty(value)) {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
const currentLocale = locale || this.id || KBQ_DEFAULT_LOCALE_ID;
|
|
253
|
+
this.roundingOptions = this.localeService.locales[currentLocale].formatters.number.rounding;
|
|
254
|
+
try {
|
|
255
|
+
const num = strToNumber(value);
|
|
256
|
+
const unit = this.calculateUnit(num);
|
|
257
|
+
if (!unit) {
|
|
258
|
+
return Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(num);
|
|
259
|
+
}
|
|
260
|
+
let parts = {};
|
|
261
|
+
if (intervalsConfig.supportedLanguages.includes(currentLocale)) {
|
|
262
|
+
intervalsConfig.intervals
|
|
263
|
+
.find(({ startRange, endRange, precision }) => {
|
|
264
|
+
const within = isWithin(startRange, endRange, num);
|
|
265
|
+
if (within) {
|
|
266
|
+
if (precision) {
|
|
267
|
+
parts = unit === 'thousand' ?
|
|
268
|
+
this.calculatePartsForThousands(num) :
|
|
269
|
+
{
|
|
270
|
+
num: Math.trunc(num / ROUNDING_UNITS[unit]),
|
|
271
|
+
fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
parts = { num: Math.round(num / ROUNDING_UNITS[unit]) };
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return within;
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
parts = parts.num ? parts : {
|
|
282
|
+
num: Math.trunc(num / ROUNDING_UNITS[unit]),
|
|
283
|
+
fraction: this.calculateDecimal(num, ROUNDING_UNITS[unit])
|
|
284
|
+
};
|
|
285
|
+
Object.keys(parts).forEach((key) => {
|
|
286
|
+
parts[key] = Intl.NumberFormat.call(this, currentLocale, { useGrouping: false }).format(parts[key]);
|
|
287
|
+
});
|
|
288
|
+
const calculatedValue = parts.fraction
|
|
289
|
+
? `${parts.num}${this.roundingOptions.groupSeparator}${parts.fraction}`
|
|
290
|
+
: `${parts.num}`;
|
|
291
|
+
return `${calculatedValue}${this.roundingOptions.separator}${this.roundingOptions[unit]}`;
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
throw Error(`InvalidPipeArgument: KbqRoundDecimalPipe for pipe '${JSON.stringify(error.message)}'`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
calculateDecimal(num, divider) {
|
|
298
|
+
/* tslint:disable-next-line:no-magic-numbers */
|
|
299
|
+
return Math.round(num / divider % 1 * 10);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* 2 * 1000 is a number in the interval of [1500...2500)
|
|
303
|
+
*
|
|
304
|
+
* 2,0 * 1000 is a number in the interval of [1950...2050)
|
|
305
|
+
*/
|
|
306
|
+
calculatePartsForThousands(num) {
|
|
307
|
+
const dividedValue = num / ROUNDING_UNITS.thousand;
|
|
308
|
+
const div = Math.round(dividedValue) * ROUNDING_UNITS.thousand;
|
|
309
|
+
const fifty = 50;
|
|
310
|
+
return isWithin(div - fifty, div + fifty, num)
|
|
311
|
+
? { num: Math.round(dividedValue), fraction: 0 }
|
|
312
|
+
: { num: Math.round(dividedValue) };
|
|
313
|
+
}
|
|
314
|
+
calculateUnit(num) {
|
|
315
|
+
let currentUnit;
|
|
316
|
+
const localizedOptions = Object.keys(this.roundingOptions);
|
|
317
|
+
Object.keys(ROUNDING_UNITS).every((key) => {
|
|
318
|
+
if (!localizedOptions.includes(key)) {
|
|
319
|
+
return true;
|
|
320
|
+
}
|
|
321
|
+
if (num / ROUNDING_UNITS[key] >= 1) {
|
|
322
|
+
currentUnit = key;
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
return false;
|
|
326
|
+
});
|
|
327
|
+
return currentUnit;
|
|
328
|
+
}
|
|
329
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqRoundDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
330
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.5", ngImport: i0, type: KbqRoundDecimalPipe, name: "kbqRoundNumber", pure: false }); }
|
|
331
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqRoundDecimalPipe, providedIn: 'root' }); }
|
|
332
|
+
}
|
|
333
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.5", ngImport: i0, type: KbqRoundDecimalPipe, decorators: [{
|
|
334
|
+
type: Injectable,
|
|
335
|
+
args: [{ providedIn: 'root' }]
|
|
336
|
+
}, {
|
|
337
|
+
type: Pipe,
|
|
338
|
+
args: [{ name: 'kbqRoundNumber', pure: false }]
|
|
339
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
340
|
+
type: Optional
|
|
341
|
+
}, {
|
|
342
|
+
type: Inject,
|
|
343
|
+
args: [KBQ_LOCALE_ID]
|
|
344
|
+
}] }, { type: i1.KbqLocaleService, decorators: [{
|
|
345
|
+
type: Optional
|
|
346
|
+
}, {
|
|
347
|
+
type: Inject,
|
|
348
|
+
args: [KBQ_LOCALE_SERVICE]
|
|
349
|
+
}] }]; } });
|
|
350
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvbnVtYmVyL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBc0M7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWxHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUczRyxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLGNBQWMsQ0FBUywyQkFBMkIsQ0FBQyxDQUFDO0FBRXBHLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFxQjtJQUNsRSxXQUFXLEVBQUUsSUFBSTtJQUNqQixvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIscUJBQXFCLEVBQUUsQ0FBQztDQUMzQixDQUFDO0FBR0YsU0FBUyxPQUFPLENBQUMsS0FBVTtJQUN2QixPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDO0FBQzVELENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxLQUFzQjtJQUN2QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDeEUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDeEI7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxrQkFBa0IsQ0FBQyxD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cEMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzRCxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQUUsT0FBTyxJQUFJLENBQUM7YUFBRTtZQUNyRCxJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNoQyxXQUFXLEdBQUcsR0FBRyxDQUFDO2dCQUVsQixPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO2lJQXBHUSxtQkFBbUIsa0JBS0osYUFBYSw2QkFDYixrQkFBa0I7K0hBTmpDLG1CQUFtQjtxSUFBbkIsbUJBQW1CLGNBRk4sTUFBTTs7MkZBRW5CLG1CQUFtQjtrQkFGL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7OzBCQU1wQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlOm5hbWluZy1jb252ZW50aW9uICovXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBLQlFfREVGQVVMVF9MT0NBTEVfSUQsIEtCUV9MT0NBTEVfSUQsIEtCUV9MT0NBTEVfU0VSVklDRSwgS2JxTG9jYWxlU2VydmljZSB9IGZyb20gJy4uLy4uL2xvY2FsZXMnO1xuXG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0ticU51bWJlckZvcm1hdHRlck9wdGlvbnMnKTtcblxuZXhwb3J0IGNvbnN0IEtCUV9OVU1CRVJfRk9STUFUVEVSX0RFRkFVTFRfT1BUSU9OUzogUGFyc2VkRGlnaXRzSW5mbyA9IHtcbiAgICB1c2VHcm91cGluZzogdHJ1ZSxcbiAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMSxcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAzXG59O1xuXG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyB8fCB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHN0clRvTnVtYmVyKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpOiBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt2YWx1ZX0gaXMgbm90IGEgbnVtYmVyYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG5leHBvcnQgY29uc3QgTlVNQkVSX0ZPUk1BVF9SRUdFWFAgPSAvXihcXGQrKT9cXC4oKFxcZCspKC0oXFxkKykpPygtKHRydWV8ZmFsc2UpKT8pPyQvO1xuXG5jb25zdCBtaW5JbnRHcm91cFBvc2l0aW9uID0gMTtcbmNvbnN0IG1pbkZyYWN0aW9uR3JvdXBQb3NpdGlvbiA9IDM7XG5jb25zdCBtYXhGcmFjdGlvbkdyb3VwUG9zaXRpb24gPSA1O1xuY29uc3QgdXNlR3JvdXBpbmdQb3NpdGlvbiA9IDc7XG5cbmludGVyZmFjZSBOdW1iZXJGb3JtYXRPcHRpb25zIHtcbiAgICB1c2VHcm91cGluZzogYm9vbGVhbjtcblxuICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzOiBudW1iZXI7XG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBudW1iZXI7XG4gICAgbWluaW11bVNpZ25pZmljYW50RGlnaXRzOiBudW1iZXI7XG4gICAgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzOiBudW1iZXI7XG5cbiAgICBsb2NhbGVNYXRjaGVyPzogc3RyaW5nO1xuICAgIHN0eWxlPzogc3RyaW5nO1xuXG4gICAgY3VycmVuY3k/OiBzdHJpbmc7XG4gICAgY3VycmVuY3lEaXNwbGF5Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUm91bmREZWNpbWFsT3B0aW9ucyB7XG4gICAgc2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgZ3JvdXBTZXBhcmF0b3I6IHN0cmluZztcbiAgICB0aG91c2FuZHM/OiBzdHJpbmc7XG4gICAgdGVuVGhvdXNhbmQ/OiBzdHJpbmc7XG4gICAgbWlsbGlvbj86IHN0cmluZztcbiAgICBvbmVIdW5kcmVkTWlsbGlvbnM/OiBzdHJpbmc7XG4gICAgYmlsbGlvbj86IHN0cmluZztcbiAgICB0cmlsbGlvbjogc3RyaW5nO1xuICAgIHJ0bD86IGJvb2xlYW47XG59XG5cblxuLy8gdHNsaW50OmRpc2FibGU6bm8tbWFnaWMtbnVtYmVyc1xuY29uc3QgUk9VTkRJTkdfVU5JVFMgPSB7XG4gICAgdGhvdXNhbmQ6IDFlMyxcbiAgICB0ZW5UaG91c2FuZDogMTAgKiAxZTMsXG4gICAgbWlsbGlvbjogMWU2LFxuICAgIG9uZUh1bmRyZWRNaWxsaW9uczogMTAwICogMWU2LFxuICAgIGJpbGxpb246IDFlOSxcbiAgICB0cmlsbGlvbjogMWUxMlxufTtcblxuY29uc3QgaW50ZXJ2YWxzQ29uZmlnID0ge1xuICAgIHN1cHBvcnRlZExhbmd1YWdlczogWydydS1SVScsICdlbi1VUycsICdlcy1MQScsICdwdC1CUicsICdmYS1JUiddLFxuICAgIGludGVydmFsczogW1xuICAgICAgICB7IHN0YXJ0UmFuZ2U6IDEsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy50aG91c2FuZCB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGVuVGhvdXNhbmQsIHByZWNpc2lvbjogMSB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRlblRob3VzYW5kLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24sIGVuZFJhbmdlOiBST1VORElOR19VTklUUy5taWxsaW9uICogMTAsIHByZWNpc2lvbjogMSB9LFxuICAgICAgICB7IHN0YXJ0UmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24gKiAxMCwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLmJpbGxpb24gfVxuICAgIF1cbn07XG4vLyB0c2xpbnQ6ZW5hYmxlOm5vLW1hZ2ljLW51bWJlcnNcblxuY2xhc3MgUGFyc2VkRGlnaXRzSW5mbyB7XG4gICAgdXNlR3JvdXBpbmc6IGJvb2xlYW47XG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFZhbHVlRm9yR3JvdXBpbmdJblJVTG9jYWxlOiBudW1iZXIgPSAxMDAwMDtcblxuZnVuY3Rpb24gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm86IHN0cmluZyk6IFBhcnNlZERpZ2l0c0luZm8ge1xuICAgIGNvbnN0IHBhcnRzID0gZGlnaXRzSW5mby5tYXRjaChOVU1CRVJfRk9STUFUX1JFR0VYUCk7XG5cbiAgICBpZiAocGFydHMgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2RpZ2l0c0luZm99IGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluZm9gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtaW5JbnRQYXJ0ID0gcGFydHNbbWluSW50R3JvdXBQb3NpdGlvbl07XG4gICAgY29uc3QgbWluRnJhY3Rpb25QYXJ0ID0gcGFydHNbbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uXTtcbiAgICBjb25zdCBtYXhGcmFjdGlvblBhcnQgPSBwYXJ0c1ttYXhGcmFjdGlvbkdyb3VwUG9zaXRpb25dO1xuICAgIGNvbnN0IHVzZUdyb3VwaW5nUGFydCA9IHBhcnRzW3VzZUdyb3VwaW5nUG9zaXRpb25dO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFBhcnNlZERpZ2l0c0luZm8oKTtcblxuICAgIGlmIChtaW5JbnRQYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gcGFyc2VJbnQobWluSW50UGFydCk7XG4gICAgfVxuXG4gICAgaWYgKG1pbkZyYWN0aW9uUGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBwYXJzZUludChtaW5GcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIGlmIChtYXhGcmFjdGlvblBhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gcGFyc2VJbnQobWF4RnJhY3Rpb25QYXJ0KTtcbiAgICB9IGVsc2UgaWYgKG1pbkZyYWN0aW9uUGFydCAhPSBudWxsICYmIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPiByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7XG4gICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIGlmICh1c2VHcm91cGluZ1BhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQudXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZ1BhcnQgPT09ICd0cnVlJztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5AUGlwZSh7IG5hbWU6ICdrYnFOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticURlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9JRCkgcHJpdmF0ZSBpZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBLYnFMb2NhbGVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9OVU1CRVJfRk9STUFUVEVSX09QVElPTlMpIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogUGFyc2VkRGlnaXRzSW5mb1xuICAgICkge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgfHwgS0JRX05VTUJFUl9GT1JNQVRURVJfREVGQVVMVF9PUFRJT05TO1xuXG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlc1xuICAgICAgICAgICAgLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gdGhpcy5pZCA9IG5ld0lkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIG51bWJlciB0byBiZSBmb3JtYXR0ZWQuXG4gICAgICogQHBhcmFtIGRpZ2l0c0luZm8gRGVjaW1hbCByZXByZXNlbnRhdGlvbiBvcHRpb25zLCBzcGVjaWZpZWQgYnkgYSBzdHJpbmdcbiAgICAgKiBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdDo8YnI+XG4gICAgICogPGNvZGU+e21pbkludGVnZXJEaWdpdHN9LnttaW5GcmFjdGlvbkRpZ2l0c30te21heEZyYWN0aW9uRGlnaXRzfTwvY29kZT4uXG4gICAgICogICAtIGBtaW5JbnRlZ2VyRGlnaXRzYDogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC5cbiAgICAgKiBEZWZhdWx0IGlzIGAxYC5cbiAgICAgKiAgIC0gYG1pbkZyYWN0aW9uRGlnaXRzYDogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC5cbiAgICAgKiBEZWZhdWx0IGlzIGAwYC5cbiAgICAgKiAgIC0gYG1heEZyYWN0aW9uRGlnaXRzYDogVGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBwb2ludC5cbiAgICAgKiBEZWZhdWx0IGlzIGAzYC5cbiAgICAgKiBAcGFyYW0gbG9jYWxlIEEgbG9jYWxlIGNvZGUgZm9yIHRoZSBsb2NhbGUgZm9ybWF0IHJ1bGVzIHRvIHVzZS5cbiAgICAgKiBXaGVuIG5vdCBzdXBwbGllZCwgdXNlcyB0aGUgdmFsdWUgb2YgYEtCUV9MT0NBTEVfSURgLCB3aGljaCBpcyBgcnVgIGJ5IGRlZmF1bHQuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIGRpZ2l0c0luZm8/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHsgcmV0dXJuIG51bGw7IH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTnVtYmVyRm9ybWF0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLnBhcnNlZERpZ2l0c0luZm9cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodGhpcy5pc1NwZWNpYWxGb3JtYXRGb3JSVUxvY2FsZShjdXJyZW50TG9jYWxlLCB2YWx1ZSwgcGFyc2VkRGlnaXRzSW5mbz8udXNlR3JvdXBpbmcpKSB7XG4gICAgICAgICAgICBvcHRpb25zLnVzZUdyb3VwaW5nID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuXG4gICAgICAgICAgICAvKiBHdWlkZWxpbmUgcmVxdWlyZXMgZm9yIGdyb3VwIHNlcGFyYXRvciB0byBiZSBgc3BhY2VgLCBhcyBpbiAncnUtUlUnIGxvY2FsZS5cbiAgICAgICAgICAgICAqIEJ1dCBieSBkZWZhdWx0IGluIGVzLUxBIGxvY2FsZSBpcyB1c2VkIGBjb21tYWAuXG4gICAgICAgICAgICAgKiBUbyByZWR1Y2UgZGF0YSBtYW5pcHVsYXRpb24sICdydS1SVScgbG9jYWxlIGlzIHVzZWQuICovXG4gICAgICAgICAgICBpZiAoY3VycmVudExvY2FsZSA9PT0gJ2VzLUxBJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHRoaXMsICdydS1SVScsIG9wdGlvbnMpLmZvcm1hdChudW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCBvcHRpb25zKS5mb3JtYXQobnVtKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWRQaXBlQXJndW1lbnQ6IEticURlY2ltYWxQaXBlIGZvciBwaXBlICcke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfSdgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU3BlY2lhbEZvcm1hdEZvclJVTG9jYWxlKGxvY2FsZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyLCBncm91cGluZz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIFsncnUnLCAncnUtUlUnXS5pbmNsdWRlcyhsb2NhbGUpICYmIGdyb3VwaW5nID09PSB1bmRlZmluZWQgJiYgdmFsdWUgPCBkZWZhdWx0VmFsdWVGb3JHcm91cGluZ0luUlVMb2NhbGU7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxVGFibGVOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticVRhYmxlTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfSUQpIHByaXZhdGUgaWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UpIHByaXZhdGUgbG9jYWxlU2VydmljZTogS2JxTG9jYWxlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFBhcnNlZERpZ2l0c0luZm9cbiAgICApIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zIHx8IEtCUV9OVU1CRVJfRk9STUFUVEVSX0RFRkFVTFRfT1BUSU9OUztcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXNcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG5ld0lkOiBzdHJpbmcpID0+IHRoaXMuaWQgPSBuZXdJZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkLlxuICAgICAqIEBwYXJhbSBkaWdpdHNJbmZvIERlY2ltYWwgcmVwcmVzZW50YXRpb24gb3B0aW9ucywgc3BlY2lmaWVkIGJ5IGEgc3RyaW5nXG4gICAgICogaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6PGJyPlxuICAgICAqIDxjb2RlPnttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c308L2NvZGU+LlxuICAgICAqICAgLSBgbWluSW50ZWdlckRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMWAuXG4gICAgICogICAtIGBtaW5GcmFjdGlvbkRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMGAuXG4gICAgICogICAtIGBtYXhGcmFjdGlvbkRpZ2l0c2A6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgM2AuXG4gICAgICogQHBhcmFtIGxvY2FsZSBBIGxvY2FsZSBjb2RlIGZvciB0aGUgbG9jYWxlIGZvcm1hdCBydWxlcyB0byB1c2UuXG4gICAgICogV2hlbiBub3Qgc3VwcGxpZWQsIHVzZXMgdGhlIHZhbHVlIG9mIGBLQlFfTE9DQUxFX0lEYCwgd2hpY2ggaXMgYHJ1YCBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7IHJldHVybiBudWxsOyB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudExvY2FsZSA9IGxvY2FsZSB8fCB0aGlzLmlkIHx8IEtCUV9ERUZBVUxUX0xPQ0FMRV9JRDtcblxuICAgICAgICBsZXQgcGFyc2VkRGlnaXRzSW5mbztcblxuICAgICAgICBpZiAoZGlnaXRzSW5mbykge1xuICAgICAgICAgICAgcGFyc2VkRGlnaXRzSW5mbyA9IHBhcnNlRGlnaXRzSW5mbyhkaWdpdHNJbmZvKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IE51bWJlckZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICAuLi5wYXJzZWREaWdpdHNJbmZvXG4gICAgICAgIH07XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IHN0clRvTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICAgICAgLyogR3VpZGVsaW5lIHJlcXVpcmVzIGZvciBncm91cCBzZXBhcmF0b3IgdG8gYmUgYHNwYWNlYCwgYXMgaW4gJ3J1LVJVJyBsb2NhbGUuXG4gICAgICAgICAgICAgKiBCdXQgYnkgZGVmYXVsdCBpbiBlcy1MQSBsb2NhbGUgaXMgdXNlZCBgY29tbWFgLlxuICAgICAgICAgICAgICogVG8gcmVkdWNlIGRhdGEgbWFuaXB1bGF0aW9uLCAncnUtUlUnIGxvY2FsZSBpcyB1c2VkLiAqL1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRMb2NhbGUgPT09ICdlcy1MQScpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCAncnUtUlUnLCBvcHRpb25zKS5mb3JtYXQobnVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIEludGwuTnVtYmVyRm9ybWF0LmNhbGwodGhpcywgY3VycmVudExvY2FsZSwgb3B0aW9ucykuZm9ybWF0KG51bSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiBLYnFUYWJsZU51bWJlclBpcGUgZm9yIHBpcGUgJyR7SlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZSl9J2ApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaXRoaW4oc3RhcnRSYW5nZTogbnVtYmVyLCBlbmRSYW5nZTogbnVtYmVyLCB2YWx1ZVRvQ2hlY2s6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGFydFJhbmdlIDw9IHZhbHVlVG9DaGVjayAmJiB2YWx1ZVRvQ2hlY2sgPCBlbmRSYW5nZTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbkBQaXBlKHsgbmFtZTogJ2ticVJvdW5kTnVtYmVyJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBLYnFSb3VuZERlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICByb3VuZGluZ09wdGlvbnM6IFJvdW5kRGVjaW1hbE9wdGlvbnM7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuZXdJZDogc3RyaW5nKSA9PiB0aGlzLmlkID0gbmV3SWQpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBsb2NhbGU/OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHsgcmV0dXJuIG51bGw7IH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlOiBzdHJpbmcgPSBsb2NhbGUgfHwgdGhpcy5pZCB8fCBLQlFfREVGQVVMVF9MT0NBTEVfSUQ7XG4gICAgICAgIHRoaXMucm91bmRpbmdPcHRpb25zID0gdGhpcy5sb2NhbGVTZXJ2aWNlLmxvY2FsZXNbY3VycmVudExvY2FsZV0uZm9ybWF0dGVycy5udW1iZXIucm91bmRpbmc7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IHN0clRvTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IHVuaXQgPSB0aGlzLmNhbGN1bGF0ZVVuaXQobnVtKTtcbiAgICAgICAgICAgIGlmICghdW5pdCkgeyByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQobnVtKTsgfVxuXG4gICAgICAgICAgICBsZXQgcGFydHM6IHsgbnVtPzogbnVtYmVyOyBmcmFjdGlvbj86IG51bWJlciB9ID0ge307XG5cbiAgICAgICAgICAgIGlmIChpbnRlcnZhbHNDb25maWcuc3VwcG9ydGVkTGFuZ3VhZ2VzLmluY2x1ZGVzKGN1cnJlbnRMb2NhbGUpKSB7XG4gICAgICAgICAgICAgICAgaW50ZXJ2YWxzQ29uZmlnLmludGVydmFsc1xuICAgICAgICAgICAgICAgICAgICAuZmluZCgoeyBzdGFydFJhbmdlLCBlbmRSYW5nZSwgcHJlY2lzaW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpdGhpbiA9IGlzV2l0aGluKHN0YXJ0UmFuZ2UsIGVuZFJhbmdlLCBudW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjaXNpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSB1bml0ID09PSAndGhvdXNhbmQnID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUGFydHNGb3JUaG91c2FuZHMobnVtKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiBNYXRoLnRydW5jKG51bSAvIFJPVU5ESU5HX1VOSVRTW3VuaXRdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbjogdGhpcy5jYWxjdWxhdGVEZWNpbWFsKG51bSwgUk9VTkRJTkdfVU5JVFNbdW5pdF0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID0geyBudW06IE1hdGgucm91bmQobnVtIC8gUk9VTkRJTkdfVU5JVFNbdW5pdF0pIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2l0aGluO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFydHMgPSBwYXJ0cy5udW0gPyBwYXJ0cyA6IHtcbiAgICAgICAgICAgICAgICBudW06IE1hdGgudHJ1bmMobnVtIC8gUk9VTkRJTkdfVU5JVFNbdW5pdF0pLFxuICAgICAgICAgICAgICAgIGZyYWN0aW9uOiB0aGlzLmNhbGN1bGF0ZURlY2ltYWwobnVtLCBST1VORElOR19VTklUU1t1bml0XSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwYXJ0cykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgcGFydHNba2V5XSA9IEludGwuTnVtYmVyRm9ybWF0LmNhbGwodGhpcywgY3VycmVudExvY2FsZSwgeyB1c2VHcm91cGluZzogZmFsc2UgfSkuZm9ybWF0KHBhcnRzW2tleV0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRWYWx1ZSA9IHBhcnRzLmZyYWN0aW9uXG4gICAgICAgICAgICAgICAgPyBgJHtwYXJ0cy5udW19JHt0aGlzLnJvdW5kaW5nT3B0aW9ucy5ncm91cFNlcGFyYXRvcn0ke3BhcnRzLmZyYWN0aW9ufWBcbiAgICAgICAgICAgICAgICA6IGAke3BhcnRzLm51bX1gO1xuXG4gICAgICAgICAgICByZXR1cm4gYCR7Y2FsY3VsYXRlZFZhbHVlfSR7dGhpcy5yb3VuZGluZ09wdGlvbnMuc2VwYXJhdG9yfSR7dGhpcy5yb3VuZGluZ09wdGlvbnNbdW5pdF19YDtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWRQaXBlQXJndW1lbnQ6IEticVJvdW5kRGVjaW1hbFBpcGUgZm9yIHBpcGUgJyR7SlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZSl9J2ApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVEZWNpbWFsKG51bTogbnVtYmVyLCBkaXZpZGVyOiBudW1iZXIpIHtcbiAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW1hZ2ljLW51bWJlcnMgKi9cbiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobnVtIC8gZGl2aWRlciAlIDEgKiAxMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMiAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxNTAwLi4uMjUwMClcbiAgICAgKlxuICAgICAqIDIsMCAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxOTUwLi4uMjA1MClcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGRpdmlkZWRWYWx1ZSA9IG51bSAvIFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kO1xuICAgICAgICBjb25zdCBkaXYgPSBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSkgKiBST1VORElOR19VTklUUy50aG91c2FuZDtcbiAgICAgICAgY29uc3QgZmlmdHkgPSA1MDtcblxuICAgICAgICByZXR1cm4gaXNXaXRoaW4oZGl2IC0gZmlmdHksIGRpdiArIGZpZnR5LCBudW0pXG4gICAgICAgICAgICA/IHsgbnVtOiBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSksIGZyYWN0aW9uOiAwIH1cbiAgICAgICAgICAgIDogeyBudW06IE1hdGgucm91bmQoZGl2aWRlZFZhbHVlKSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlVW5pdChudW06IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBjdXJyZW50VW5pdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBsb2NhbGl6ZWRPcHRpb25zID0gT2JqZWN0LmtleXModGhpcy5yb3VuZGluZ09wdGlvbnMpO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKFJPVU5ESU5HX1VOSVRTKS5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvY2FsaXplZE9wdGlvbnMuaW5jbHVkZXMoa2V5KSkgeyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgICAgICAgaWYgKG51bSAvIFJPVU5ESU5HX1VOSVRTW2tleV0gPj0gMSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRVbml0ID0ga2V5O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRVbml0O1xuICAgIH1cbn1cbiJdfQ==
|