@colijnit/corecomponents_v12 261.1.1 → 261.20.1
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/{fesm2015/colijnit-corecomponents_v12.js → fesm2022/colijnit-corecomponents_v12.mjs} +20197 -15310
- package/fesm2022/colijnit-corecomponents_v12.mjs.map +1 -0
- package/index.d.ts +3985 -0
- package/lib/components/popup/popup-message-display.component.scss +0 -2
- package/lib/components/scroll-container/style/_layout.scss +68 -0
- package/lib/components/scroll-container/style/_material-definition.scss +0 -0
- package/lib/components/scroll-container/style/_theme.scss +4 -0
- package/lib/components/scroll-container/style/material.scss +4 -0
- package/package.json +17 -13
- package/bundles/colijnit-corecomponents_v12.umd.js +0 -16057
- package/bundles/colijnit-corecomponents_v12.umd.js.map +0 -1
- package/colijnit-corecomponents_v12-261.1.0.tgz +0 -0
- package/colijnit-corecomponents_v12.d.ts +0 -45
- package/colijnit-corecomponents_v12.metadata.json +0 -1
- package/esm2015/colijnit-corecomponents_v12.js +0 -46
- package/esm2015/lib/components/article-tile/article-tile.component.js +0 -81
- package/esm2015/lib/components/article-tile/article-tile.module.js +0 -35
- package/esm2015/lib/components/base/base-input.component.js +0 -849
- package/esm2015/lib/components/base/base.module.js +0 -22
- package/esm2015/lib/components/base/commit-buttons/commit-buttons.component.js +0 -103
- package/esm2015/lib/components/base/commit-buttons/commit-buttons.module.js +0 -21
- package/esm2015/lib/components/base/dialog-base.component.js +0 -6
- package/esm2015/lib/components/base-input-date-picker/base-input-date-picker.directive.js +0 -25
- package/esm2015/lib/components/base-input-time/base-input-time-directive.js +0 -25
- package/esm2015/lib/components/button/button.component.js +0 -79
- package/esm2015/lib/components/button/button.module.js +0 -19
- package/esm2015/lib/components/calendar/calendar-template.component.js +0 -404
- package/esm2015/lib/components/calendar/calendar.component.js +0 -46
- package/esm2015/lib/components/calendar/calendar.module.js +0 -30
- package/esm2015/lib/components/card/card.component.js +0 -72
- package/esm2015/lib/components/card/card.module.js +0 -35
- package/esm2015/lib/components/carousel/carousel.component.js +0 -130
- package/esm2015/lib/components/carousel/carousel.module.js +0 -32
- package/esm2015/lib/components/carousel-3d/carousel-3d.component.js +0 -315
- package/esm2015/lib/components/carousel-3d/carousel-3d.module.js +0 -19
- package/esm2015/lib/components/carousel-3d/carouselItem.js +0 -54
- package/esm2015/lib/components/checkmark-overlay/checkmark-overlay.component.js +0 -87
- package/esm2015/lib/components/checkmark-overlay/checkmark-overlay.module.js +0 -19
- package/esm2015/lib/components/co-dialog/co-dialog.component.js +0 -113
- package/esm2015/lib/components/co-dialog/co-dialog.module.js +0 -19
- package/esm2015/lib/components/co-dialog-wizard/co-dialog-wizard.component.js +0 -51
- package/esm2015/lib/components/co-dialog-wizard/co-dialog-wizard.module.js +0 -17
- package/esm2015/lib/components/collapsible/collapsible.component.js +0 -92
- package/esm2015/lib/components/collapsible/collapsible.module.js +0 -19
- package/esm2015/lib/components/color-picker/color-picker.component.js +0 -41
- package/esm2015/lib/components/color-picker/color-picker.module.js +0 -21
- package/esm2015/lib/components/core-dialog/confirmation-dialog/confirmation-dialog.component.js +0 -79
- package/esm2015/lib/components/core-dialog/core-dialog.module.js +0 -39
- package/esm2015/lib/components/core-dialog/core-dialog.service.js +0 -67
- package/esm2015/lib/components/core-dialog/core-dynamic-component.service.js +0 -93
- package/esm2015/lib/components/double-calendar/double-calendar.component.js +0 -112
- package/esm2015/lib/components/double-calendar/double-calendar.module.js +0 -25
- package/esm2015/lib/components/filter-item/filter-item-viewmodel.js +0 -13
- package/esm2015/lib/components/filter-item/filter-item.component.js +0 -1019
- package/esm2015/lib/components/filter-item/filter-item.module.js +0 -43
- package/esm2015/lib/components/filter-item/filter-viewmodel.js +0 -11
- package/esm2015/lib/components/form/form.component.js +0 -184
- package/esm2015/lib/components/form/form.module.js +0 -23
- package/esm2015/lib/components/grid-toolbar/grid-toolbar.component.js +0 -57
- package/esm2015/lib/components/grid-toolbar/grid-toolbar.module.js +0 -23
- package/esm2015/lib/components/grid-toolbar-button/grid-toolbar-button.component.js +0 -28
- package/esm2015/lib/components/grid-toolbar-button/grid-toolbar-button.module.js +0 -19
- package/esm2015/lib/components/hour-scheduling/components/hour-scheduling-test-object/hour-scheduling-test-object.component.js +0 -22
- package/esm2015/lib/components/hour-scheduling/hour-scheduling.component.js +0 -276
- package/esm2015/lib/components/hour-scheduling/hour-scheduling.module.js +0 -23
- package/esm2015/lib/components/hour-scheduling/model/enum/scheduling-object.interface.js +0 -2
- package/esm2015/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component.js +0 -111
- package/esm2015/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.module.js +0 -20
- package/esm2015/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.component.js +0 -337
- package/esm2015/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.module.js +0 -24
- package/esm2015/lib/components/icon/icon-cache.service.js +0 -52
- package/esm2015/lib/components/icon/icon.component.js +0 -48
- package/esm2015/lib/components/icon/icon.module.js +0 -25
- package/esm2015/lib/components/icon-collapse-handle/icon-collapse-handle.component.js +0 -64
- package/esm2015/lib/components/icon-collapse-handle/icon-collapse-handle.module.js +0 -23
- package/esm2015/lib/components/image/image.component.js +0 -42
- package/esm2015/lib/components/image/image.module.js +0 -14
- package/esm2015/lib/components/input-checkbox/input-checkbox.component.js +0 -79
- package/esm2015/lib/components/input-checkbox/input-checkbox.module.js +0 -19
- package/esm2015/lib/components/input-date-picker/input-date-picker.component.js +0 -145
- package/esm2015/lib/components/input-date-picker/input-date-picker.module.js +0 -28
- package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.component.js +0 -178
- package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.module.js +0 -27
- package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +0 -320
- package/esm2015/lib/components/input-number-picker/input-number-picker.module.js +0 -23
- package/esm2015/lib/components/input-radio-button/input-radio-button.component.js +0 -84
- package/esm2015/lib/components/input-radio-button/input-radio-button.module.js +0 -19
- package/esm2015/lib/components/input-scanner/bar-code-scanner.js +0 -36
- package/esm2015/lib/components/input-scanner/input-scanner.component.js +0 -94
- package/esm2015/lib/components/input-scanner/input-scanner.module.js +0 -21
- package/esm2015/lib/components/input-scanner/scanner.service.js +0 -28
- package/esm2015/lib/components/input-search/input-search.component.js +0 -92
- package/esm2015/lib/components/input-search/input-search.module.js +0 -21
- package/esm2015/lib/components/input-text/input-text.component.js +0 -381
- package/esm2015/lib/components/input-text/input-text.module.js +0 -33
- package/esm2015/lib/components/input-textarea/input-textarea.component.js +0 -78
- package/esm2015/lib/components/input-textarea/input-textarea.module.js +0 -27
- package/esm2015/lib/components/input-time/input-time.component.js +0 -74
- package/esm2015/lib/components/input-time/input-time.module.js +0 -24
- package/esm2015/lib/components/level-indicator/level-indicator-level.enum.js +0 -7
- package/esm2015/lib/components/level-indicator/level-indicator.component.js +0 -36
- package/esm2015/lib/components/level-indicator/level-indicator.module.js +0 -15
- package/esm2015/lib/components/list-of-icons/list-of-icons.component.js +0 -98
- package/esm2015/lib/components/list-of-icons/list-of-icons.module.js +0 -27
- package/esm2015/lib/components/list-of-values/list-of-values-multiselect-popup.component.js +0 -112
- package/esm2015/lib/components/list-of-values/list-of-values-popup.component.js +0 -321
- package/esm2015/lib/components/list-of-values/list-of-values.component.js +0 -344
- package/esm2015/lib/components/list-of-values/list-of-values.module.js +0 -39
- package/esm2015/lib/components/loader/loader.component.js +0 -84
- package/esm2015/lib/components/loader/loader.module.js +0 -19
- package/esm2015/lib/components/pagination/paginate.pipe.js +0 -99
- package/esm2015/lib/components/pagination/pagination-instance.js +0 -2
- package/esm2015/lib/components/pagination/pagination.component.js +0 -126
- package/esm2015/lib/components/pagination/pagination.module.js +0 -28
- package/esm2015/lib/components/pagination/pagination.service.js +0 -88
- package/esm2015/lib/components/pagination-bar/pagination-bar.component.js +0 -151
- package/esm2015/lib/components/pagination-bar/pagination-bar.module.js +0 -19
- package/esm2015/lib/components/popup/const/popup-window-token.js +0 -3
- package/esm2015/lib/components/popup/interface/popup-button.js +0 -8
- package/esm2015/lib/components/popup/interface/popup-close-event.js +0 -2
- package/esm2015/lib/components/popup/interface/popup-settings.js +0 -42
- package/esm2015/lib/components/popup/interface/popup.js +0 -2
- package/esm2015/lib/components/popup/model/popup-button-globals.js +0 -11
- package/esm2015/lib/components/popup/model/popup-window.js +0 -38
- package/esm2015/lib/components/popup/popup-buttons.component.js +0 -53
- package/esm2015/lib/components/popup/popup-message-display.component.js +0 -48
- package/esm2015/lib/components/popup/popup-window-shell.component.js +0 -159
- package/esm2015/lib/components/popup/popup.module.js +0 -49
- package/esm2015/lib/components/popup/service/popup-shower.service.js +0 -90
- package/esm2015/lib/components/popup/service/prompt.service.js +0 -127
- package/esm2015/lib/components/popup/text-input-popup.component.js +0 -36
- package/esm2015/lib/components/responsive-text/responsive-text.component.js +0 -24
- package/esm2015/lib/components/responsive-text/responsive-text.module.js +0 -19
- package/esm2015/lib/components/simple-grid/base-simple-grid.component.js +0 -193
- package/esm2015/lib/components/simple-grid/simple-grid-cell.component.js +0 -172
- package/esm2015/lib/components/simple-grid/simple-grid-column.directive.js +0 -113
- package/esm2015/lib/components/simple-grid/simple-grid.component.js +0 -773
- package/esm2015/lib/components/simple-grid/simple-grid.module.js +0 -47
- package/esm2015/lib/components/tile/tile.component.js +0 -73
- package/esm2015/lib/components/tile/tile.module.js +0 -23
- package/esm2015/lib/components/tile-select/tile-select.component.js +0 -36
- package/esm2015/lib/components/tile-select/tile-select.module.js +0 -21
- package/esm2015/lib/components/tooltip/tooltip.component.js +0 -95
- package/esm2015/lib/components/tooltip/tooltip.module.js +0 -19
- package/esm2015/lib/components/validation-error/validation-error.component.js +0 -38
- package/esm2015/lib/components/validation-error/validation-error.module.js +0 -25
- package/esm2015/lib/components/view-mode-buttons/content-view-mode.enum.js +0 -11
- package/esm2015/lib/components/view-mode-buttons/view-mode-buttons.component.js +0 -64
- package/esm2015/lib/components/view-mode-buttons/view-mode-buttons.module.js +0 -21
- package/esm2015/lib/core/constant/default-upper-bound-for-range-components.js +0 -4
- package/esm2015/lib/core/constant/java-max-int.js +0 -2
- package/esm2015/lib/core/constant/number-inputs-key-down-white-list.js +0 -45
- package/esm2015/lib/core/decorator/input-boolean.decorator.js +0 -34
- package/esm2015/lib/core/enum/co-direction.js +0 -9
- package/esm2015/lib/core/enum/co-document-type.enum.js +0 -11
- package/esm2015/lib/core/enum/co-orientation.js +0 -17
- package/esm2015/lib/core/enum/core-components-icon.enum.js +0 -307
- package/esm2015/lib/core/enum/file-type-internal.enum.js +0 -17
- package/esm2015/lib/core/enum/file-type.enum.js +0 -11
- package/esm2015/lib/core/enum/filterItem-mode.enum.js +0 -49
- package/esm2015/lib/core/enum/input-number-picker-show-mode.enum.js +0 -8
- package/esm2015/lib/core/enum/keyboard-code.enum.js +0 -74
- package/esm2015/lib/core/enum/keyboard-key.enum.js +0 -76
- package/esm2015/lib/core/enum/popup-button-type.enum.js +0 -12
- package/esm2015/lib/core/enum/popup-type.enum.js +0 -11
- package/esm2015/lib/core/function/any-nill.function.js +0 -6
- package/esm2015/lib/core/function/is-nill.function.js +0 -5
- package/esm2015/lib/core/function/none-nill.function.js +0 -17
- package/esm2015/lib/core/function/not-nill.function.js +0 -5
- package/esm2015/lib/core/model/bounds-constrained-number-value.js +0 -171
- package/esm2015/lib/core/model/check-precision-and-scale-result.js +0 -2
- package/esm2015/lib/core/model/check-within-stepped-bounds-result.js +0 -2
- package/esm2015/lib/core/model/core-components-icon-svg.js +0 -306
- package/esm2015/lib/core/model/element-position.js +0 -10
- package/esm2015/lib/core/model/event/string-prompt-result-event.js +0 -8
- package/esm2015/lib/core/service/form-input-user-change-listener.service.js +0 -25
- package/esm2015/lib/core/service/form-master.service.js +0 -102
- package/esm2015/lib/core/service/ng-zone-wrapper.service.js +0 -20
- package/esm2015/lib/core/utils/array-utils.js +0 -264
- package/esm2015/lib/core/utils/browser-utils.js +0 -100
- package/esm2015/lib/core/utils/direction-enum-utils.js +0 -14
- package/esm2015/lib/core/utils/event-utils.js +0 -53
- package/esm2015/lib/core/utils/file-utils.js +0 -267
- package/esm2015/lib/core/utils/number-utils.js +0 -309
- package/esm2015/lib/core/utils/object-utils.js +0 -186
- package/esm2015/lib/core/utils/string-utils.js +0 -94
- package/esm2015/lib/core/validator/email.validator.js +0 -6
- package/esm2015/lib/core/validator/equal.validator.js +0 -11
- package/esm2015/lib/core/validator/max-string-length.validator.js +0 -10
- package/esm2015/lib/core/validator/password.validator.js +0 -31
- package/esm2015/lib/core/validator/precision-scale.validator.js +0 -11
- package/esm2015/lib/core/validator/required.validator.js +0 -5
- package/esm2015/lib/directives/clickoutside/click-outside-master.service.js +0 -57
- package/esm2015/lib/directives/clickoutside/click-outside.directive.js +0 -71
- package/esm2015/lib/directives/clickoutside/clickoutside.module.js +0 -19
- package/esm2015/lib/directives/observe-visibility/observe-visibility.directive.js +0 -53
- package/esm2015/lib/directives/observe-visibility/observe-visibility.module.js +0 -15
- package/esm2015/lib/directives/overlay/overlay-parent.directive.js +0 -19
- package/esm2015/lib/directives/overlay/overlay.directive.js +0 -161
- package/esm2015/lib/directives/overlay/overlay.module.js +0 -18
- package/esm2015/lib/directives/ripple/ripple-ref.js +0 -26
- package/esm2015/lib/directives/ripple/ripple-renderer.js +0 -160
- package/esm2015/lib/directives/ripple/ripple.directive.js +0 -80
- package/esm2015/lib/directives/ripple/ripple.module.js +0 -24
- package/esm2015/lib/directives/ripple/scroll-dispatcher.service.js +0 -108
- package/esm2015/lib/directives/ripple/scrollable.directive.js +0 -40
- package/esm2015/lib/directives/ripple/viewport-ruler.service.js +0 -73
- package/esm2015/lib/directives/screen-configuration/screen-configuration.directive.js +0 -159
- package/esm2015/lib/directives/screen-configuration/screen-configuration.module.js +0 -19
- package/esm2015/lib/directives/stopclick/stop-click.directive.js +0 -38
- package/esm2015/lib/directives/stopclick/stop-click.module.js +0 -15
- package/esm2015/lib/directives/template-wrapper/template-wrapper.directive.js +0 -68
- package/esm2015/lib/directives/template-wrapper/template-wrapper.module.js +0 -15
- package/esm2015/lib/directives/tooltip/tooltip-directive.module.js +0 -19
- package/esm2015/lib/directives/tooltip/tooltip.directive.js +0 -78
- package/esm2015/lib/interfaces/dialog-response.interface.js +0 -2
- package/esm2015/lib/interfaces/scanner-input.interface.js +0 -2
- package/esm2015/lib/interfaces/screen-config-adapter-component-interface-name.js +0 -4
- package/esm2015/lib/interfaces/screen-config-adapter.component.interface.js +0 -2
- package/esm2015/lib/model/enum/app-button-type.enum.js +0 -11
- package/esm2015/lib/model/enum/app-popup-type.enum.js +0 -8
- package/esm2015/lib/model/icon-list-item.js +0 -2
- package/esm2015/lib/pipes/append.pipe.js +0 -17
- package/esm2015/lib/pipes/append.pipe.module.js +0 -15
- package/esm2015/lib/pipes/filter.pipe.js +0 -16
- package/esm2015/lib/pipes/filter.pipe.module.js +0 -15
- package/esm2015/lib/pipes/prepend.pipe.js +0 -17
- package/esm2015/lib/pipes/prepend.pipe.module.js +0 -15
- package/esm2015/lib/pipes/price-display-pipe.module.js +0 -15
- package/esm2015/lib/pipes/price-display.pipe.js +0 -20
- package/esm2015/lib/service/base-module-screen-config.service.js +0 -205
- package/esm2015/lib/service/base-module.service.js +0 -42
- package/esm2015/lib/service/color-sequence.service.js +0 -49
- package/esm2015/lib/service/excel-export.service.js +0 -128
- package/esm2015/lib/service/overlay.service.js +0 -75
- package/esm2015/lib/translation/core-components-translation.module.js +0 -26
- package/esm2015/lib/translation/core-components-translation.service.js +0 -17
- package/esm2015/lib/translation/core-dictionary.service.js +0 -29
- package/esm2015/lib/translation/core-localize.pipe.js +0 -26
- package/esm2015/public-api.js +0 -142
- package/fesm2015/colijnit-corecomponents_v12.js.map +0 -1
- package/lib/components/article-tile/article-tile.component.d.ts +0 -22
- package/lib/components/article-tile/article-tile.module.d.ts +0 -2
- package/lib/components/base/base-input.component.d.ts +0 -189
- package/lib/components/base/base.module.d.ts +0 -2
- package/lib/components/base/commit-buttons/commit-buttons.component.d.ts +0 -21
- package/lib/components/base/commit-buttons/commit-buttons.module.d.ts +0 -2
- package/lib/components/base/dialog-base.component.d.ts +0 -4
- package/lib/components/base-input-date-picker/base-input-date-picker.directive.d.ts +0 -15
- package/lib/components/base-input-time/base-input-time-directive.d.ts +0 -14
- package/lib/components/button/button.component.d.ts +0 -31
- package/lib/components/button/button.module.d.ts +0 -2
- package/lib/components/calendar/calendar-template.component.d.ts +0 -70
- package/lib/components/calendar/calendar.component.d.ts +0 -13
- package/lib/components/calendar/calendar.module.d.ts +0 -2
- package/lib/components/card/card.component.d.ts +0 -23
- package/lib/components/card/card.module.d.ts +0 -2
- package/lib/components/carousel/carousel.component.d.ts +0 -23
- package/lib/components/carousel/carousel.module.d.ts +0 -6
- package/lib/components/carousel-3d/carousel-3d.component.d.ts +0 -55
- package/lib/components/carousel-3d/carousel-3d.module.d.ts +0 -2
- package/lib/components/carousel-3d/carouselItem.d.ts +0 -13
- package/lib/components/checkmark-overlay/checkmark-overlay.component.d.ts +0 -17
- package/lib/components/checkmark-overlay/checkmark-overlay.module.d.ts +0 -2
- package/lib/components/co-dialog/co-dialog.component.d.ts +0 -23
- package/lib/components/co-dialog/co-dialog.module.d.ts +0 -2
- package/lib/components/co-dialog-wizard/co-dialog-wizard.component.d.ts +0 -9
- package/lib/components/co-dialog-wizard/co-dialog-wizard.module.d.ts +0 -2
- package/lib/components/collapsible/collapsible.component.d.ts +0 -22
- package/lib/components/collapsible/collapsible.module.d.ts +0 -2
- package/lib/components/color-picker/color-picker.component.d.ts +0 -6
- package/lib/components/color-picker/color-picker.module.d.ts +0 -2
- package/lib/components/core-dialog/confirmation-dialog/confirmation-dialog.component.d.ts +0 -20
- package/lib/components/core-dialog/core-dialog.module.d.ts +0 -4
- package/lib/components/core-dialog/core-dialog.service.d.ts +0 -15
- package/lib/components/core-dialog/core-dynamic-component.service.d.ts +0 -12
- package/lib/components/double-calendar/double-calendar.component.d.ts +0 -20
- package/lib/components/double-calendar/double-calendar.module.d.ts +0 -2
- package/lib/components/filter-item/filter-item-viewmodel.d.ts +0 -9
- package/lib/components/filter-item/filter-item.component.d.ts +0 -126
- package/lib/components/filter-item/filter-item.module.d.ts +0 -2
- package/lib/components/filter-item/filter-viewmodel.d.ts +0 -8
- package/lib/components/form/form.component.d.ts +0 -39
- package/lib/components/form/form.module.d.ts +0 -2
- package/lib/components/grid-toolbar/grid-toolbar.component.d.ts +0 -19
- package/lib/components/grid-toolbar/grid-toolbar.module.d.ts +0 -2
- package/lib/components/grid-toolbar-button/grid-toolbar-button.component.d.ts +0 -8
- package/lib/components/grid-toolbar-button/grid-toolbar-button.module.d.ts +0 -2
- package/lib/components/hour-scheduling/components/hour-scheduling-test-object/hour-scheduling-test-object.component.d.ts +0 -5
- package/lib/components/hour-scheduling/hour-scheduling.component.d.ts +0 -48
- package/lib/components/hour-scheduling/hour-scheduling.module.d.ts +0 -2
- package/lib/components/hour-scheduling/model/enum/scheduling-object.interface.d.ts +0 -10
- package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.component.d.ts +0 -23
- package/lib/components/hour-scheduling-expandable/components/hour-scheduling-expandable-template/hour-scheduling-expandable-template.module.d.ts +0 -2
- package/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.component.d.ts +0 -78
- package/lib/components/hour-scheduling-expandable/hour-scheduling-expandable.module.d.ts +0 -2
- package/lib/components/icon/icon-cache.service.d.ts +0 -20
- package/lib/components/icon/icon.component.d.ts +0 -17
- package/lib/components/icon/icon.module.d.ts +0 -2
- package/lib/components/icon-collapse-handle/icon-collapse-handle.component.d.ts +0 -21
- package/lib/components/icon-collapse-handle/icon-collapse-handle.module.d.ts +0 -2
- package/lib/components/image/image.component.d.ts +0 -20
- package/lib/components/image/image.module.d.ts +0 -2
- package/lib/components/input-checkbox/input-checkbox.component.d.ts +0 -24
- package/lib/components/input-checkbox/input-checkbox.module.d.ts +0 -2
- package/lib/components/input-date-picker/input-date-picker.component.d.ts +0 -30
- package/lib/components/input-date-picker/input-date-picker.module.d.ts +0 -2
- package/lib/components/input-date-range-picker/input-date-range-picker.component.d.ts +0 -27
- package/lib/components/input-date-range-picker/input-date-range-picker.module.d.ts +0 -2
- package/lib/components/input-number-picker/input-number-picker.component.d.ts +0 -74
- package/lib/components/input-number-picker/input-number-picker.module.d.ts +0 -2
- package/lib/components/input-radio-button/input-radio-button.component.d.ts +0 -19
- package/lib/components/input-radio-button/input-radio-button.module.d.ts +0 -2
- package/lib/components/input-scanner/bar-code-scanner.d.ts +0 -10
- package/lib/components/input-scanner/input-scanner.component.d.ts +0 -29
- package/lib/components/input-scanner/input-scanner.module.d.ts +0 -2
- package/lib/components/input-scanner/scanner.service.d.ts +0 -11
- package/lib/components/input-search/input-search.component.d.ts +0 -22
- package/lib/components/input-search/input-search.module.d.ts +0 -2
- package/lib/components/input-text/input-text.component.d.ts +0 -78
- package/lib/components/input-text/input-text.module.d.ts +0 -2
- package/lib/components/input-textarea/input-textarea.component.d.ts +0 -19
- package/lib/components/input-textarea/input-textarea.module.d.ts +0 -2
- package/lib/components/input-time/input-time.component.d.ts +0 -8
- package/lib/components/input-time/input-time.module.d.ts +0 -2
- package/lib/components/level-indicator/level-indicator-level.enum.d.ts +0 -5
- package/lib/components/level-indicator/level-indicator.component.d.ts +0 -10
- package/lib/components/level-indicator/level-indicator.module.d.ts +0 -2
- package/lib/components/list-of-icons/list-of-icons.component.d.ts +0 -22
- package/lib/components/list-of-icons/list-of-icons.module.d.ts +0 -2
- package/lib/components/list-of-values/list-of-values-multiselect-popup.component.d.ts +0 -25
- package/lib/components/list-of-values/list-of-values-popup.component.d.ts +0 -58
- package/lib/components/list-of-values/list-of-values.component.d.ts +0 -63
- package/lib/components/list-of-values/list-of-values.module.d.ts +0 -2
- package/lib/components/loader/loader.component.d.ts +0 -3
- package/lib/components/loader/loader.module.d.ts +0 -2
- package/lib/components/pagination/paginate.pipe.d.ts +0 -15
- package/lib/components/pagination/pagination-instance.d.ts +0 -14
- package/lib/components/pagination/pagination.component.d.ts +0 -38
- package/lib/components/pagination/pagination.module.d.ts +0 -2
- package/lib/components/pagination/pagination.service.d.ts +0 -24
- package/lib/components/pagination-bar/pagination-bar.component.d.ts +0 -33
- package/lib/components/pagination-bar/pagination-bar.module.d.ts +0 -2
- package/lib/components/popup/const/popup-window-token.d.ts +0 -3
- package/lib/components/popup/interface/popup-button.d.ts +0 -8
- package/lib/components/popup/interface/popup-close-event.d.ts +0 -5
- package/lib/components/popup/interface/popup-settings.d.ts +0 -21
- package/lib/components/popup/interface/popup.d.ts +0 -9
- package/lib/components/popup/model/popup-button-globals.d.ts +0 -9
- package/lib/components/popup/model/popup-window.d.ts +0 -21
- package/lib/components/popup/popup-buttons.component.d.ts +0 -13
- package/lib/components/popup/popup-message-display.component.d.ts +0 -12
- package/lib/components/popup/popup-window-shell.component.d.ts +0 -42
- package/lib/components/popup/popup.module.d.ts +0 -4
- package/lib/components/popup/service/popup-shower.service.d.ts +0 -17
- package/lib/components/popup/service/prompt.service.d.ts +0 -17
- package/lib/components/popup/text-input-popup.component.d.ts +0 -12
- package/lib/components/responsive-text/responsive-text.component.d.ts +0 -4
- package/lib/components/responsive-text/responsive-text.module.d.ts +0 -2
- package/lib/components/simple-grid/base-simple-grid.component.d.ts +0 -59
- package/lib/components/simple-grid/simple-grid-cell.component.d.ts +0 -30
- package/lib/components/simple-grid/simple-grid-column.directive.d.ts +0 -43
- package/lib/components/simple-grid/simple-grid.component.d.ts +0 -87
- package/lib/components/simple-grid/simple-grid.module.d.ts +0 -2
- package/lib/components/tile/tile.component.d.ts +0 -16
- package/lib/components/tile/tile.module.d.ts +0 -2
- package/lib/components/tile-select/tile-select.component.d.ts +0 -8
- package/lib/components/tile-select/tile-select.module.d.ts +0 -2
- package/lib/components/tooltip/tooltip.component.d.ts +0 -23
- package/lib/components/tooltip/tooltip.module.d.ts +0 -2
- package/lib/components/validation-error/validation-error.component.d.ts +0 -12
- package/lib/components/validation-error/validation-error.module.d.ts +0 -2
- package/lib/components/view-mode-buttons/content-view-mode.enum.d.ts +0 -8
- package/lib/components/view-mode-buttons/view-mode-buttons.component.d.ts +0 -17
- package/lib/components/view-mode-buttons/view-mode-buttons.module.d.ts +0 -2
- package/lib/core/constant/default-upper-bound-for-range-components.d.ts +0 -2
- package/lib/core/constant/java-max-int.d.ts +0 -1
- package/lib/core/constant/number-inputs-key-down-white-list.d.ts +0 -2
- package/lib/core/decorator/input-boolean.decorator.d.ts +0 -8
- package/lib/core/enum/co-direction.d.ts +0 -6
- package/lib/core/enum/co-document-type.enum.d.ts +0 -5
- package/lib/core/enum/co-orientation.d.ts +0 -6
- package/lib/core/enum/core-components-icon.enum.d.ts +0 -305
- package/lib/core/enum/file-type-internal.enum.d.ts +0 -15
- package/lib/core/enum/file-type.enum.d.ts +0 -5
- package/lib/core/enum/filterItem-mode.enum.d.ts +0 -17
- package/lib/core/enum/input-number-picker-show-mode.enum.d.ts +0 -5
- package/lib/core/enum/keyboard-code.enum.d.ts +0 -71
- package/lib/core/enum/keyboard-key.enum.d.ts +0 -70
- package/lib/core/enum/popup-button-type.enum.d.ts +0 -9
- package/lib/core/enum/popup-type.enum.d.ts +0 -9
- package/lib/core/function/any-nill.function.d.ts +0 -1
- package/lib/core/function/is-nill.function.d.ts +0 -1
- package/lib/core/function/none-nill.function.d.ts +0 -1
- package/lib/core/function/not-nill.function.d.ts +0 -1
- package/lib/core/model/bounds-constrained-number-value.d.ts +0 -46
- package/lib/core/model/check-precision-and-scale-result.d.ts +0 -4
- package/lib/core/model/check-within-stepped-bounds-result.d.ts +0 -8
- package/lib/core/model/core-components-icon-svg.d.ts +0 -4
- package/lib/core/model/element-position.d.ts +0 -7
- package/lib/core/model/event/string-prompt-result-event.d.ts +0 -6
- package/lib/core/service/form-input-user-change-listener.service.d.ts +0 -10
- package/lib/core/service/form-master.service.d.ts +0 -26
- package/lib/core/service/ng-zone-wrapper.service.d.ts +0 -6
- package/lib/core/utils/array-utils.d.ts +0 -85
- package/lib/core/utils/browser-utils.d.ts +0 -15
- package/lib/core/utils/direction-enum-utils.d.ts +0 -5
- package/lib/core/utils/event-utils.d.ts +0 -12
- package/lib/core/utils/file-utils.d.ts +0 -29
- package/lib/core/utils/number-utils.d.ts +0 -89
- package/lib/core/utils/object-utils.d.ts +0 -31
- package/lib/core/utils/string-utils.d.ts +0 -25
- package/lib/core/validator/email.validator.d.ts +0 -2
- package/lib/core/validator/equal.validator.d.ts +0 -2
- package/lib/core/validator/max-string-length.validator.d.ts +0 -2
- package/lib/core/validator/password.validator.d.ts +0 -3
- package/lib/core/validator/precision-scale.validator.d.ts +0 -2
- package/lib/core/validator/required.validator.d.ts +0 -2
- package/lib/directives/clickoutside/click-outside-master.service.d.ts +0 -15
- package/lib/directives/clickoutside/click-outside.directive.d.ts +0 -18
- package/lib/directives/clickoutside/clickoutside.module.d.ts +0 -2
- package/lib/directives/observe-visibility/observe-visibility.directive.d.ts +0 -14
- package/lib/directives/observe-visibility/observe-visibility.module.d.ts +0 -2
- package/lib/directives/overlay/overlay-parent.directive.d.ts +0 -6
- package/lib/directives/overlay/overlay.directive.d.ts +0 -25
- package/lib/directives/overlay/overlay.module.d.ts +0 -2
- package/lib/directives/ripple/ripple-ref.d.ts +0 -21
- package/lib/directives/ripple/ripple-renderer.d.ts +0 -56
- package/lib/directives/ripple/ripple.directive.d.ts +0 -56
- package/lib/directives/ripple/ripple.module.d.ts +0 -2
- package/lib/directives/ripple/scroll-dispatcher.service.d.ts +0 -51
- package/lib/directives/ripple/scrollable.directive.d.ts +0 -20
- package/lib/directives/ripple/viewport-ruler.service.d.ts +0 -29
- package/lib/directives/screen-configuration/screen-configuration.directive.d.ts +0 -32
- package/lib/directives/screen-configuration/screen-configuration.module.d.ts +0 -2
- package/lib/directives/stopclick/stop-click.directive.d.ts +0 -10
- package/lib/directives/stopclick/stop-click.module.d.ts +0 -2
- package/lib/directives/template-wrapper/template-wrapper.directive.d.ts +0 -13
- package/lib/directives/template-wrapper/template-wrapper.module.d.ts +0 -2
- package/lib/directives/tooltip/tooltip-directive.module.d.ts +0 -2
- package/lib/directives/tooltip/tooltip.directive.d.ts +0 -20
- package/lib/interfaces/dialog-response.interface.d.ts +0 -6
- package/lib/interfaces/scanner-input.interface.d.ts +0 -3
- package/lib/interfaces/screen-config-adapter-component-interface-name.d.ts +0 -3
- package/lib/interfaces/screen-config-adapter.component.interface.d.ts +0 -14
- package/lib/model/enum/app-button-type.enum.d.ts +0 -9
- package/lib/model/enum/app-popup-type.enum.d.ts +0 -6
- package/lib/model/icon-list-item.d.ts +0 -7
- package/lib/pipes/append.pipe.d.ts +0 -4
- package/lib/pipes/append.pipe.module.d.ts +0 -2
- package/lib/pipes/filter.pipe.d.ts +0 -4
- package/lib/pipes/filter.pipe.module.d.ts +0 -2
- package/lib/pipes/prepend.pipe.d.ts +0 -4
- package/lib/pipes/prepend.pipe.module.d.ts +0 -2
- package/lib/pipes/price-display-pipe.module.d.ts +0 -2
- package/lib/pipes/price-display.pipe.d.ts +0 -4
- package/lib/service/base-module-screen-config.service.d.ts +0 -47
- package/lib/service/base-module.service.d.ts +0 -22
- package/lib/service/color-sequence.service.d.ts +0 -7
- package/lib/service/excel-export.service.d.ts +0 -45
- package/lib/service/overlay.service.d.ts +0 -13
- package/lib/translation/core-components-translation.module.d.ts +0 -4
- package/lib/translation/core-components-translation.service.d.ts +0 -6
- package/lib/translation/core-dictionary.service.d.ts +0 -12
- package/lib/translation/core-localize.pipe.d.ts +0 -7
- package/public-api.d.ts +0 -138
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { CoDirection } from "../enum/co-direction";
|
|
2
|
-
// @dynamic
|
|
3
|
-
export class DirectionEnumUtils {
|
|
4
|
-
static OppositeOf(direction) {
|
|
5
|
-
return this._OppositeDirections.get(direction);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
DirectionEnumUtils._OppositeDirections = new Map([
|
|
9
|
-
[CoDirection.Right, CoDirection.Left],
|
|
10
|
-
[CoDirection.Left, CoDirection.Right],
|
|
11
|
-
[CoDirection.Up, CoDirection.Down],
|
|
12
|
-
[CoDirection.Down, CoDirection.Up]
|
|
13
|
-
]);
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlyZWN0aW9uLWVudW0tdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvcmUvdXRpbHMvZGlyZWN0aW9uLWVudW0tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELFdBQVc7QUFDWCxNQUFNLE9BQU8sa0JBQWtCO0lBUXBCLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBc0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7O0FBVHVCLHNDQUFtQixHQUFrQyxJQUFJLEdBQUcsQ0FBMkI7SUFDM0csQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDckMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDckMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUM7Q0FDckMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29EaXJlY3Rpb24gfSBmcm9tIFwiLi4vZW51bS9jby1kaXJlY3Rpb25cIjtcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBEaXJlY3Rpb25FbnVtVXRpbHMge1xyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX09wcG9zaXRlRGlyZWN0aW9uczogTWFwPENvRGlyZWN0aW9uLCBDb0RpcmVjdGlvbj4gPSBuZXcgTWFwPENvRGlyZWN0aW9uLCBDb0RpcmVjdGlvbj4oW1xyXG4gICAgICAgIFtDb0RpcmVjdGlvbi5SaWdodCwgQ29EaXJlY3Rpb24uTGVmdF0sXHJcbiAgICAgICAgW0NvRGlyZWN0aW9uLkxlZnQsIENvRGlyZWN0aW9uLlJpZ2h0XSxcclxuICAgICAgICBbQ29EaXJlY3Rpb24uVXAsIENvRGlyZWN0aW9uLkRvd25dLFxyXG4gICAgICAgIFtDb0RpcmVjdGlvbi5Eb3duLCBDb0RpcmVjdGlvbi5VcF1cclxuICAgIF0pO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgT3Bwb3NpdGVPZihkaXJlY3Rpb246IENvRGlyZWN0aW9uKTogQ29EaXJlY3Rpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9PcHBvc2l0ZURpcmVjdGlvbnMuZ2V0KGRpcmVjdGlvbik7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { isNill } from "../function/is-nill.function";
|
|
2
|
-
// @dynamic
|
|
3
|
-
export class EventUtils {
|
|
4
|
-
static get passiveSupported() {
|
|
5
|
-
if (isNill(EventUtils._passiveSupported)) {
|
|
6
|
-
EventUtils._CheckPassiveSupported();
|
|
7
|
-
}
|
|
8
|
-
return EventUtils._passiveSupported;
|
|
9
|
-
}
|
|
10
|
-
static get passiveBubble() {
|
|
11
|
-
if (isNill(EventUtils._passiveBubble)) {
|
|
12
|
-
EventUtils._passiveBubble = EventUtils.passiveSupported ? { passive: true, capture: false } : false;
|
|
13
|
-
}
|
|
14
|
-
return EventUtils._passiveBubble;
|
|
15
|
-
}
|
|
16
|
-
static get passiveCapture() {
|
|
17
|
-
if (isNill(EventUtils._passiveCapture)) {
|
|
18
|
-
EventUtils._passiveCapture = EventUtils.passiveSupported ? { passive: true, capture: true } : true;
|
|
19
|
-
}
|
|
20
|
-
return EventUtils._passiveCapture;
|
|
21
|
-
}
|
|
22
|
-
static KillEvent(event) {
|
|
23
|
-
if (event) {
|
|
24
|
-
event.preventDefault();
|
|
25
|
-
event.stopPropagation();
|
|
26
|
-
event.stopImmediatePropagation();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
static StopEvent(event) {
|
|
30
|
-
this.KillEvent(event);
|
|
31
|
-
}
|
|
32
|
-
static GetMouseEventOrTouch(originalEvent) {
|
|
33
|
-
return originalEvent instanceof MouseEvent ? originalEvent : originalEvent.touches[0];
|
|
34
|
-
}
|
|
35
|
-
static _CheckPassiveSupported() {
|
|
36
|
-
let passiveSupported = false;
|
|
37
|
-
try {
|
|
38
|
-
const options = Object.defineProperty({}, "passive", {
|
|
39
|
-
get: function () {
|
|
40
|
-
passiveSupported = true;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
window.addEventListener("test", null, options);
|
|
44
|
-
}
|
|
45
|
-
catch (e) {
|
|
46
|
-
}
|
|
47
|
-
this._passiveSupported = passiveSupported;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
EventUtils._passiveSupported = undefined;
|
|
51
|
-
EventUtils._passiveCapture = undefined;
|
|
52
|
-
EventUtils._passiveBubble = undefined;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvcmUvdXRpbHMvZXZlbnQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRXBELFdBQVc7QUFDWCxNQUFNLE9BQU8sVUFBVTtJQUNaLE1BQU0sS0FBSyxnQkFBZ0I7UUFDOUIsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDdEMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDdkM7UUFDRCxPQUFPLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4QyxDQUFDO0lBRU0sTUFBTSxLQUFLLGFBQWE7UUFDM0IsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ25DLFVBQVUsQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDckc7UUFDRCxPQUFPLFVBQVUsQ0FBQyxjQUFjLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sS0FBSyxjQUFjO1FBQzVCLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUNwQyxVQUFVLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3BHO1FBQ0QsT0FBTyxVQUFVLENBQUMsZUFBZSxDQUFDO0lBQ3RDLENBQUM7SUFRTSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVk7UUFDaEMsSUFBSSxLQUFLLEVBQUU7WUFDUCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3hCLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBWTtRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsYUFBc0M7UUFDckUsT0FBTyxhQUFhLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUVPLE1BQU0sQ0FBQyxzQkFBc0I7UUFDakMsSUFBSSxnQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsSUFBSTtZQUNBLE1BQU0sT0FBTyxHQUFRLE1BQU0sQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRTtnQkFDdEQsR0FBRyxFQUFFO29CQUNELGdCQUFnQixHQUFHLElBQUksQ0FBQztnQkFDNUIsQ0FBQzthQUNKLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2xEO1FBQUMsT0FBTyxDQUFDLEVBQUU7U0FDWDtRQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztJQUM5QyxDQUFDOztBQWxDYyw0QkFBaUIsR0FBWSxTQUFTLENBQUM7QUFFdkMsMEJBQWUsR0FBUSxTQUFTLENBQUM7QUFFakMseUJBQWMsR0FBUSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzTmlsbH0gZnJvbSBcIi4uL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb25cIjtcclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBFdmVudFV0aWxzIHtcclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IHBhc3NpdmVTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGlzTmlsbChFdmVudFV0aWxzLl9wYXNzaXZlU3VwcG9ydGVkKSkge1xyXG4gICAgICAgICAgICBFdmVudFV0aWxzLl9DaGVja1Bhc3NpdmVTdXBwb3J0ZWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEV2ZW50VXRpbHMuX3Bhc3NpdmVTdXBwb3J0ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXQgcGFzc2l2ZUJ1YmJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoaXNOaWxsKEV2ZW50VXRpbHMuX3Bhc3NpdmVCdWJibGUpKSB7XHJcbiAgICAgICAgICAgIEV2ZW50VXRpbHMuX3Bhc3NpdmVCdWJibGUgPSBFdmVudFV0aWxzLnBhc3NpdmVTdXBwb3J0ZWQgPyB7cGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogZmFsc2V9IDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBFdmVudFV0aWxzLl9wYXNzaXZlQnViYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IHBhc3NpdmVDYXB0dXJlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmIChpc05pbGwoRXZlbnRVdGlscy5fcGFzc2l2ZUNhcHR1cmUpKSB7XHJcbiAgICAgICAgICAgIEV2ZW50VXRpbHMuX3Bhc3NpdmVDYXB0dXJlID0gRXZlbnRVdGlscy5wYXNzaXZlU3VwcG9ydGVkID8ge3Bhc3NpdmU6IHRydWUsIGNhcHR1cmU6IHRydWV9IDogdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIEV2ZW50VXRpbHMuX3Bhc3NpdmVDYXB0dXJlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIF9wYXNzaXZlU3VwcG9ydGVkOiBib29sZWFuID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIF9wYXNzaXZlQ2FwdHVyZTogYW55ID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIF9wYXNzaXZlQnViYmxlOiBhbnkgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBLaWxsRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBTdG9wRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5LaWxsRXZlbnQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0TW91c2VFdmVudE9yVG91Y2gob3JpZ2luYWxFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBNb3VzZUV2ZW50IHwgVG91Y2gge1xyXG4gICAgICAgIHJldHVybiBvcmlnaW5hbEV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IG9yaWdpbmFsRXZlbnQgOiBvcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF07XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgX0NoZWNrUGFzc2l2ZVN1cHBvcnRlZCgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgcGFzc2l2ZVN1cHBvcnRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgXCJwYXNzaXZlXCIsIHtcclxuICAgICAgICAgICAgICAgIGdldDogZnVuY3Rpb24gKCk6IHZvaWQge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhc3NpdmVTdXBwb3J0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsIG51bGwsIG9wdGlvbnMpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fcGFzc2l2ZVN1cHBvcnRlZCA9IHBhc3NpdmVTdXBwb3J0ZWQ7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { FileTypeInternal } from '../enum/file-type-internal.enum';
|
|
3
|
-
import { CoDocumentType } from '../enum/co-document-type.enum';
|
|
4
|
-
import { FileType } from '../enum/file-type.enum';
|
|
5
|
-
import { StringUtils } from './string-utils';
|
|
6
|
-
import { NumberUtils } from './number-utils';
|
|
7
|
-
import { CoDocument } from '@colijnit/mainapi/build/model/co-document.bo';
|
|
8
|
-
const MaxUploadSize = 3145728; // 3Mb
|
|
9
|
-
// @dynamic
|
|
10
|
-
export class FileUtils {
|
|
11
|
-
// Returns MaxUploadSize in Megabytes.
|
|
12
|
-
static get MaxUploadSizeInMb() {
|
|
13
|
-
return MaxUploadSize / 1024 / 1024;
|
|
14
|
-
}
|
|
15
|
-
static DocumentBodyToDataUri(documentBody, mimeType) {
|
|
16
|
-
return StringUtils.IsStringWithLength(documentBody) ? "data:" + mimeType + ";base64," + documentBody : "";
|
|
17
|
-
}
|
|
18
|
-
// Returns the file type of the given file, by looking at its extension. Returns FileType.Undefined if not recognised.
|
|
19
|
-
static FileNameToFileTypeInternal(fileName) {
|
|
20
|
-
if (!fileName) {
|
|
21
|
-
return FileTypeInternal.Undefined;
|
|
22
|
-
}
|
|
23
|
-
const stringParts = fileName.split(".");
|
|
24
|
-
const extension = stringParts[stringParts.length - 1];
|
|
25
|
-
switch (extension.toLowerCase()) {
|
|
26
|
-
case "pdn":
|
|
27
|
-
case "bmp":
|
|
28
|
-
case "gif":
|
|
29
|
-
case "jpg":
|
|
30
|
-
case "jpeg":
|
|
31
|
-
case "jpe":
|
|
32
|
-
case "jfif":
|
|
33
|
-
case "png":
|
|
34
|
-
case "tif":
|
|
35
|
-
case "tiff":
|
|
36
|
-
case "tga":
|
|
37
|
-
case "dds":
|
|
38
|
-
return FileTypeInternal.Image;
|
|
39
|
-
case "swf":
|
|
40
|
-
return FileTypeInternal.Swf;
|
|
41
|
-
case "xls":
|
|
42
|
-
case "xlsx":
|
|
43
|
-
return FileTypeInternal.ExcelSheet;
|
|
44
|
-
case "doc":
|
|
45
|
-
case "docx":
|
|
46
|
-
return FileTypeInternal.WordDocument;
|
|
47
|
-
case "pdf":
|
|
48
|
-
return FileTypeInternal.Pdf;
|
|
49
|
-
case "txt":
|
|
50
|
-
return FileTypeInternal.TextFile;
|
|
51
|
-
case "exe":
|
|
52
|
-
return FileTypeInternal.Executable;
|
|
53
|
-
default:
|
|
54
|
-
return FileTypeInternal.Undefined;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// Checks if filetype of given file is of type image. Possible filetypes: image/png, image/bmp, image/jpeg, etc.
|
|
58
|
-
static IsImageFile(file) {
|
|
59
|
-
if (!file) {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
let fileName;
|
|
63
|
-
let mimeType;
|
|
64
|
-
if (file instanceof CoDocument) {
|
|
65
|
-
fileName = file.fileName;
|
|
66
|
-
mimeType = file.mimeTypeInternal;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
fileName = file.name;
|
|
70
|
-
mimeType = file.type;
|
|
71
|
-
}
|
|
72
|
-
if (mimeType !== "") {
|
|
73
|
-
return mimeType.startsWith('image/');
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
return (FileUtils.FileNameToFileTypeInternal(fileName) === FileTypeInternal.Image);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Try to determine the file type of given document. First attempt is by filetype, second by file name.
|
|
80
|
-
static GetGlobalFileType(document) {
|
|
81
|
-
if (!document) {
|
|
82
|
-
return FileTypeInternal.Undefined;
|
|
83
|
-
}
|
|
84
|
-
if (document.mimeType !== "") {
|
|
85
|
-
switch (document.mimeType) {
|
|
86
|
-
case "application/pdf":
|
|
87
|
-
return FileTypeInternal.Pdf;
|
|
88
|
-
case "application/msword":
|
|
89
|
-
return FileTypeInternal.WordDocument;
|
|
90
|
-
case "application/excel":
|
|
91
|
-
case "application/vnd.ms-excel":
|
|
92
|
-
case "application/x-excel":
|
|
93
|
-
case "application/x-msexcel":
|
|
94
|
-
return FileTypeInternal.ExcelSheet;
|
|
95
|
-
case "text/plain":
|
|
96
|
-
case "application/plain":
|
|
97
|
-
return FileTypeInternal.TextFile;
|
|
98
|
-
default:
|
|
99
|
-
return FileTypeInternal.Undefined;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
return FileUtils.FileNameToFileTypeInternal(document.fileName);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
// Checks filesize of given file and returns false if size exceeds maximum upload size.
|
|
107
|
-
static CheckMaxUploadSize(file) {
|
|
108
|
-
let fileSize = 0;
|
|
109
|
-
if (file instanceof CoDocument) {
|
|
110
|
-
fileSize = NumberUtils.ParseInt(file.fileSize);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
fileSize = file.size;
|
|
114
|
-
}
|
|
115
|
-
return (fileSize <= MaxUploadSize);
|
|
116
|
-
}
|
|
117
|
-
static ConvertFileToDataUri(file) {
|
|
118
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
-
if (file) {
|
|
120
|
-
return new Promise((resolve) => {
|
|
121
|
-
const fileReader = new FileReader();
|
|
122
|
-
fileReader.onload = () => {
|
|
123
|
-
resolve(fileReader.result);
|
|
124
|
-
};
|
|
125
|
-
fileReader.readAsDataURL(file);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
// Returns the given dataUri string stripped of the mimetype part.
|
|
131
|
-
static StripMimeStringFromDataUri(dataUri) {
|
|
132
|
-
if (!dataUri) {
|
|
133
|
-
return "";
|
|
134
|
-
}
|
|
135
|
-
const mimeString = this.GetMimeStringFromDataUri(dataUri);
|
|
136
|
-
return dataUri.substr(mimeString.length + 1);
|
|
137
|
-
}
|
|
138
|
-
static GetMimeStringFromDataUri(dataUri) {
|
|
139
|
-
if (!dataUri) {
|
|
140
|
-
return "";
|
|
141
|
-
}
|
|
142
|
-
return dataUri.split(',')[0];
|
|
143
|
-
}
|
|
144
|
-
// Converts given string data to an ArrayBuffer.
|
|
145
|
-
static ConvertStringToArrayBuffer(stringData) {
|
|
146
|
-
if (!stringData) {
|
|
147
|
-
return undefined;
|
|
148
|
-
}
|
|
149
|
-
const arrayBuffer = new ArrayBuffer(stringData.length);
|
|
150
|
-
const bufView = new Uint8Array(arrayBuffer);
|
|
151
|
-
for (let i = 0, len = stringData.length; i < len; i++) {
|
|
152
|
-
bufView[i] = stringData.charCodeAt(i);
|
|
153
|
-
}
|
|
154
|
-
return bufView;
|
|
155
|
-
}
|
|
156
|
-
static ConvertByteArrayToString(byteArray) {
|
|
157
|
-
let str = "";
|
|
158
|
-
if (byteArray) {
|
|
159
|
-
for (let i = 0, len = byteArray.length; i < len; i++) {
|
|
160
|
-
str += String.fromCharCode(byteArray[i]);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return str;
|
|
164
|
-
}
|
|
165
|
-
// Returns true if given string contains a data-uri/base64.
|
|
166
|
-
static StringContainsDataUri(str) {
|
|
167
|
-
if (!str) {
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
const mimeString = str.split(',')[0];
|
|
171
|
-
return mimeString.indexOf('base64') > -1;
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* There is some discrepancy regarding locations of h3d objects
|
|
175
|
-
* Therefor we need to (temporarily?!) fix the content url
|
|
176
|
-
* Also we need to change some additionals
|
|
177
|
-
*/
|
|
178
|
-
static FixAssetUrl(assetUrl) {
|
|
179
|
-
if (!assetUrl) {
|
|
180
|
-
return "";
|
|
181
|
-
}
|
|
182
|
-
let fixedUrl;
|
|
183
|
-
if (assetUrl.indexOf('_webplayer') === -1) {
|
|
184
|
-
fixedUrl = assetUrl.replace('.unity3d', '_webplayer.ione3d');
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
fixedUrl = assetUrl.replace('_webplayer.unity3d', '_webplayer.ione3d');
|
|
188
|
-
}
|
|
189
|
-
fixedUrl = fixedUrl.replace('content/', 'content43/');
|
|
190
|
-
if (!fixedUrl.endsWith('.gz')) {
|
|
191
|
-
fixedUrl = fixedUrl.concat('.gz');
|
|
192
|
-
}
|
|
193
|
-
return fixedUrl;
|
|
194
|
-
}
|
|
195
|
-
// Return the mimetype of the given filename.
|
|
196
|
-
static MimeTypeFromFilename(fileName) {
|
|
197
|
-
const regEx = /(?:\.([^.]+))?$/; // regex to find extension
|
|
198
|
-
const extension = regEx.exec(fileName)[1];
|
|
199
|
-
switch (extension) {
|
|
200
|
-
case "jpg":
|
|
201
|
-
case "jpeg":
|
|
202
|
-
return "image/jpeg";
|
|
203
|
-
case "png":
|
|
204
|
-
return "image/png";
|
|
205
|
-
case "bmp":
|
|
206
|
-
return "image/bmp";
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
static DownloadFile(fileName, content, mimeType = "text/plain") {
|
|
210
|
-
const element = document.createElement('a');
|
|
211
|
-
element.setAttribute("href", "data:" + mimeType + ";charset=utf-8," + encodeURIComponent(content));
|
|
212
|
-
element.setAttribute("download", fileName);
|
|
213
|
-
element.style.display = "none";
|
|
214
|
-
document.body.appendChild(element);
|
|
215
|
-
element.click();
|
|
216
|
-
document.body.removeChild(element);
|
|
217
|
-
}
|
|
218
|
-
// Returns the contents of given file as a text string.
|
|
219
|
-
static ReadAsText(file) {
|
|
220
|
-
return new Promise((resolve) => {
|
|
221
|
-
const reader = new FileReader();
|
|
222
|
-
reader.readAsText(file);
|
|
223
|
-
reader.onloadend = (event) => {
|
|
224
|
-
if (event.target.readyState === 2) {
|
|
225
|
-
resolve(event.target.result);
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
static ReadFileAsNewCoDocument(file) {
|
|
231
|
-
return new Promise((resolve) => {
|
|
232
|
-
const reader = new FileReader();
|
|
233
|
-
reader.readAsDataURL(file);
|
|
234
|
-
reader.onloadend = (event) => {
|
|
235
|
-
if (event.target.readyState === 2) {
|
|
236
|
-
const coDocument = new CoDocument();
|
|
237
|
-
coDocument.fileSize = file.size.toString();
|
|
238
|
-
coDocument.mimeTypeInternal = file.type;
|
|
239
|
-
coDocument.mimeType = file.type;
|
|
240
|
-
coDocument.fileName = file.name;
|
|
241
|
-
coDocument.documentType = CoDocumentType.SaveAsDocument;
|
|
242
|
-
coDocument.fileType = FileUtils.IsImageFile(file) ? FileType.Image : FileType.Document;
|
|
243
|
-
coDocument.description = file.name;
|
|
244
|
-
coDocument.documentBody = FileUtils.StripMimeStringFromDataUri(event.target.result);
|
|
245
|
-
resolve(coDocument);
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
static GetExtensionFromDataUri(dataUri) {
|
|
251
|
-
const data = dataUri;
|
|
252
|
-
return data.replace(/(data:image\/)(.*?)(;base64.*)/gi, '$2');
|
|
253
|
-
}
|
|
254
|
-
static CreateDownloadFileNameFromBase64(dataUri) {
|
|
255
|
-
const ext = this.GetExtensionFromDataUri(dataUri);
|
|
256
|
-
return 'preview.' + ext;
|
|
257
|
-
}
|
|
258
|
-
static DownloadFromDataUri(dataUri, fileName) {
|
|
259
|
-
const link = document.createElement("a");
|
|
260
|
-
link.download = fileName;
|
|
261
|
-
link.href = dataUri;
|
|
262
|
-
document.body.appendChild(link);
|
|
263
|
-
link.click();
|
|
264
|
-
document.body.removeChild(link);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmVjb21wb25lbnRzL3NyYy9saWIvY29yZS91dGlscy9maWxlLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBRXhFLE1BQU0sYUFBYSxHQUFXLE9BQU8sQ0FBQyxDQUFDLE1BQU07QUFFN0MsV0FBVztBQUNYLE1BQU0sT0FBTyxTQUFTO0lBRWxCLHNDQUFzQztJQUMvQixNQUFNLEtBQUssaUJBQWlCO1FBQy9CLE9BQU8sYUFBYSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxZQUFvQixFQUFFLFFBQWdCO1FBQ3RFLE9BQU8sV0FBVyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsUUFBUSxHQUFHLFVBQVUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM5RyxDQUFDO0lBRUQsc0hBQXNIO0lBQy9HLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxRQUFnQjtRQUNyRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsT0FBTyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7U0FDckM7UUFDRCxNQUFNLFdBQVcsR0FBYSxRQUFRLENBQUMsS0FB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LENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRXBGLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDdkI7WUFDTCxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxNQUFNLENBQUMsdUJBQXVCLENBQUMsT0FBZTtRQUNqRCxNQUFNLElBQUksR0FBVyxPQUFPLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTSxNQUFNLENBQUMsZ0NBQWdDLENBQUMsT0FBZTtRQUMxRCxNQUFNLEdBQUcsR0FBVyxJQUFJLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUQsT0FBTyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBZSxFQUFFLFFBQWdCO1FBQy9ELE1BQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7UUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZVR5cGVJbnRlcm5hbCB9IGZyb20gJy4uL2VudW0vZmlsZS10eXBlLWludGVybmFsLmVudW0nO1xyXG5pbXBvcnQgeyBDb0RvY3VtZW50VHlwZSB9IGZyb20gJy4uL2VudW0vY28tZG9jdW1lbnQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgRmlsZVR5cGUgfSBmcm9tICcuLi9lbnVtL2ZpbGUtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgU3RyaW5nVXRpbHMgfSBmcm9tICcuL3N0cmluZy11dGlscyc7XHJcbmltcG9ydCB7IE51bWJlclV0aWxzIH0gZnJvbSAnLi9udW1iZXItdXRpbHMnO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50LmJvJztcclxuXHJcbmNvbnN0IE1heFVwbG9hZFNpemU6IG51bWJlciA9IDMxNDU3Mjg7IC8vIDNNYlxyXG5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIEZpbGVVdGlscyB7XHJcblxyXG4gICAgLy8gUmV0dXJucyBNYXhVcGxvYWRTaXplIGluIE1lZ2FieXRlcy5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IE1heFVwbG9hZFNpemVJbk1iKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE1heFVwbG9hZFNpemUgLyAxMDI0IC8gMTAyNDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIERvY3VtZW50Qm9keVRvRGF0YVVyaShkb2N1bWVudEJvZHk6IHN0cmluZywgbWltZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZ1V0aWxzLklzU3RyaW5nV2l0aExlbmd0aChkb2N1bWVudEJvZHkpID8gXCJkYXRhOlwiICsgbWltZVR5cGUgKyBcIjtiYXNlNjQsXCIgKyBkb2N1bWVudEJvZHkgOiBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdGhlIGZpbGUgdHlwZSBvZiB0aGUgZ2l2ZW4gZmlsZSwgYnkgbG9va2luZyBhdCBpdHMgZXh0ZW5zaW9uLiBSZXR1cm5zIEZpbGVUeXBlLlVuZGVmaW5lZCBpZiBub3QgcmVjb2duaXNlZC5cclxuICAgIHB1YmxpYyBzdGF0aWMgRmlsZU5hbWVUb0ZpbGVUeXBlSW50ZXJuYWwoZmlsZU5hbWU6IHN0cmluZyk6IEZpbGVUeXBlSW50ZXJuYWwge1xyXG4gICAgICAgIGlmICghZmlsZU5hbWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuVW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdHJpbmdQYXJ0czogc3RyaW5nW10gPSBmaWxlTmFtZS5zcGxpdChcIi5cIik7XHJcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uOiBzdHJpbmcgPSBzdHJpbmdQYXJ0c1tzdHJpbmdQYXJ0cy5sZW5ndGggLSAxXTtcclxuICAgICAgICBzd2l0Y2ggKGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJwZG5cIjpcclxuICAgICAgICAgICAgY2FzZSBcImJtcFwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiZ2lmXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJqcGdcIjpcclxuICAgICAgICAgICAgY2FzZSBcImpwZWdcIjpcclxuICAgICAgICAgICAgY2FzZSBcImpwZVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiamZpZlwiOlxyXG4gICAgICAgICAgICBjYXNlIFwicG5nXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0aWZcIjpcclxuICAgICAgICAgICAgY2FzZSBcInRpZmZcIjpcclxuICAgICAgICAgICAgY2FzZSBcInRnYVwiOlxyXG4gICAgICAgICAgICBjYXNlIFwiZGRzXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5JbWFnZTtcclxuICAgICAgICAgICAgY2FzZSBcInN3ZlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuU3dmO1xyXG4gICAgICAgICAgICBjYXNlIFwieGxzXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJ4bHN4XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5FeGNlbFNoZWV0O1xyXG4gICAgICAgICAgICBjYXNlIFwiZG9jXCI6XHJcbiAgICAgICAgICAgIGNhc2UgXCJkb2N4XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5Xb3JkRG9jdW1lbnQ7XHJcbiAgICAgICAgICAgIGNhc2UgXCJwZGZcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLlBkZjtcclxuICAgICAgICAgICAgY2FzZSBcInR4dFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuVGV4dEZpbGU7XHJcbiAgICAgICAgICAgIGNhc2UgXCJleGVcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLkV4ZWN1dGFibGU7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5VbmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrcyBpZiBmaWxldHlwZSBvZiBnaXZlbiBmaWxlIGlzIG9mIHR5cGUgaW1hZ2UuIFBvc3NpYmxlIGZpbGV0eXBlczogaW1hZ2UvcG5nLCBpbWFnZS9ibXAsIGltYWdlL2pwZWcsIGV0Yy5cclxuICAgIHB1YmxpYyBzdGF0aWMgSXNJbWFnZUZpbGUoZmlsZTogRmlsZSB8IENvRG9jdW1lbnQpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWZpbGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZmlsZU5hbWU6IHN0cmluZztcclxuICAgICAgICBsZXQgbWltZVR5cGU6IHN0cmluZztcclxuICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIENvRG9jdW1lbnQpIHtcclxuICAgICAgICAgICAgZmlsZU5hbWUgPSBmaWxlLmZpbGVOYW1lO1xyXG4gICAgICAgICAgICBtaW1lVHlwZSA9IGZpbGUubWltZVR5cGVJbnRlcm5hbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmaWxlTmFtZSA9IGZpbGUubmFtZTtcclxuICAgICAgICAgICAgbWltZVR5cGUgPSBmaWxlLnR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChtaW1lVHlwZSAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbWltZVR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChGaWxlVXRpbHMuRmlsZU5hbWVUb0ZpbGVUeXBlSW50ZXJuYWwoZmlsZU5hbWUpID09PSBGaWxlVHlwZUludGVybmFsLkltYWdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVHJ5IHRvIGRldGVybWluZSB0aGUgZmlsZSB0eXBlIG9mIGdpdmVuIGRvY3VtZW50LiBGaXJzdCBhdHRlbXB0IGlzIGJ5IGZpbGV0eXBlLCBzZWNvbmQgYnkgZmlsZSBuYW1lLlxyXG4gICAgcHVibGljIHN0YXRpYyBHZXRHbG9iYWxGaWxlVHlwZShkb2N1bWVudDogQ29Eb2N1bWVudCk6IEZpbGVUeXBlSW50ZXJuYWwge1xyXG4gICAgICAgIGlmICghZG9jdW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuVW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZG9jdW1lbnQubWltZVR5cGUgIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChkb2N1bWVudC5taW1lVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSBcImFwcGxpY2F0aW9uL3BkZlwiOlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZUludGVybmFsLlBkZjtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi9tc3dvcmRcIjpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5Xb3JkRG9jdW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXBwbGljYXRpb24vZXhjZWxcIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWxcIjpcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJhcHBsaWNhdGlvbi94LWV4Y2VsXCI6XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXBwbGljYXRpb24veC1tc2V4Y2VsXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuRXhjZWxTaGVldDtcclxuICAgICAgICAgICAgICAgIGNhc2UgXCJ0ZXh0L3BsYWluXCI6XHJcbiAgICAgICAgICAgICAgICBjYXNlIFwiYXBwbGljYXRpb24vcGxhaW5cIjpcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGVJbnRlcm5hbC5UZXh0RmlsZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlSW50ZXJuYWwuVW5kZWZpbmVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIEZpbGVVdGlscy5GaWxlTmFtZVRvRmlsZVR5cGVJbnRlcm5hbChkb2N1bWVudC5maWxlTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrcyBmaWxlc2l6ZSBvZiBnaXZlbiBmaWxlIGFuZCByZXR1cm5zIGZhbHNlIGlmIHNpemUgZXhjZWVkcyBtYXhpbXVtIHVwbG9hZCBzaXplLlxyXG4gICAgcHVibGljIHN0YXRpYyBDaGVja01heFVwbG9hZFNpemUoZmlsZTogQ29Eb2N1bWVudCB8IEZpbGUpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgZmlsZVNpemU6IG51bWJlciA9IDA7XHJcbiAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBDb0RvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIGZpbGVTaXplID0gTnVtYmVyVXRpbHMuUGFyc2VJbnQoZmlsZS5maWxlU2l6ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsZVNpemUgPSBmaWxlLnNpemU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAoZmlsZVNpemUgPD0gTWF4VXBsb2FkU2l6ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBhc3luYyBDb252ZXJ0RmlsZVRvRGF0YVVyaShmaWxlOiBGaWxlKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKDxzdHJpbmc+IGZpbGVSZWFkZXIucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXR1cm5zIHRoZSBnaXZlbiBkYXRhVXJpIHN0cmluZyBzdHJpcHBlZCBvZiB0aGUgbWltZXR5cGUgcGFydC5cclxuICAgIHB1YmxpYyBzdGF0aWMgU3RyaXBNaW1lU3RyaW5nRnJvbURhdGFVcmkoZGF0YVVyaTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIWRhdGFVcmkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBtaW1lU3RyaW5nOiBzdHJpbmcgPSB0aGlzLkdldE1pbWVTdHJpbmdGcm9tRGF0YVVyaShkYXRhVXJpKTtcclxuICAgICAgICByZXR1cm4gZGF0YVVyaS5zdWJzdHIobWltZVN0cmluZy5sZW5ndGggKyAxKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIEdldE1pbWVTdHJpbmdGcm9tRGF0YVVyaShkYXRhVXJpOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghZGF0YVVyaSkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRhVXJpLnNwbGl0KCcsJylbMF07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQ29udmVydHMgZ2l2ZW4gc3RyaW5nIGRhdGEgdG8gYW4gQXJyYXlCdWZmZXIuXHJcbiAgICBwdWJsaWMgc3RhdGljIENvbnZlcnRTdHJpbmdUb0FycmF5QnVmZmVyKHN0cmluZ0RhdGE6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgIGlmICghc3RyaW5nRGF0YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBhcnJheUJ1ZmZlcjogQXJyYXlCdWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoc3RyaW5nRGF0YS5sZW5ndGgpO1xyXG4gICAgICAgIGNvbnN0IGJ1ZlZpZXc6IFVpbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlcik7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMCwgbGVuOiBudW1iZXIgPSBzdHJpbmdEYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGJ1ZlZpZXdbaV0gPSBzdHJpbmdEYXRhLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBidWZWaWV3O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgQ29udmVydEJ5dGVBcnJheVRvU3RyaW5nKGJ5dGVBcnJheTogbnVtYmVyW10pOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBzdHI6IHN0cmluZyA9IFwiXCI7XHJcbiAgICAgICAgaWYgKGJ5dGVBcnJheSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwLCBsZW46IG51bWJlciA9IGJ5dGVBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZUFycmF5W2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBnaXZlbiBzdHJpbmcgY29udGFpbnMgYSBkYXRhLXVyaS9iYXNlNjQuXHJcbiAgICBwdWJsaWMgc3RhdGljIFN0cmluZ0NvbnRhaW5zRGF0YVVyaShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghc3RyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgbWltZVN0cmluZzogc3RyaW5nID0gc3RyLnNwbGl0KCcsJylbMF07XHJcbiAgICAgICAgcmV0dXJuIG1pbWVTdHJpbmcuaW5kZXhPZignYmFzZTY0JykgPiAtMTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZXJlIGlzIHNvbWUgZGlzY3JlcGFuY3kgcmVnYXJkaW5nIGxvY2F0aW9ucyBvZiBoM2Qgb2JqZWN0c1xyXG4gICAgICogVGhlcmVmb3Igd2UgbmVlZCB0byAodGVtcG9yYXJpbHk/ISkgZml4IHRoZSBjb250ZW50IHVybFxyXG4gICAgICogQWxzbyB3ZSBuZWVkIHRvIGNoYW5nZSBzb21lIGFkZGl0aW9uYWxzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgRml4QXNzZXRVcmwoYXNzZXRVcmw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKCFhc3NldFVybCkge1xyXG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpeGVkVXJsOiBzdHJpbmc7XHJcbiAgICAgICAgaWYgKGFzc2V0VXJsLmluZGV4T2YoJ193ZWJwbGF5ZXInKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgZml4ZWRVcmwgPSBhc3NldFVybC5yZXBsYWNlKCcudW5pdHkzZCcsICdfd2VicGxheWVyLmlvbmUzZCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpeGVkVXJsID0gYXNzZXRVcmwucmVwbGFjZSgnX3dlYnBsYXllci51bml0eTNkJywgJ193ZWJwbGF5ZXIuaW9uZTNkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpeGVkVXJsID0gZml4ZWRVcmwucmVwbGFjZSgnY29udGVudC8nLCAnY29udGVudDQzLycpO1xyXG4gICAgICAgIGlmICghZml4ZWRVcmwuZW5kc1dpdGgoJy5neicpKSB7XHJcbiAgICAgICAgICAgIGZpeGVkVXJsID0gZml4ZWRVcmwuY29uY2F0KCcuZ3onKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZpeGVkVXJsO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJldHVybiB0aGUgbWltZXR5cGUgb2YgdGhlIGdpdmVuIGZpbGVuYW1lLlxyXG4gICAgcHVibGljIHN0YXRpYyBNaW1lVHlwZUZyb21GaWxlbmFtZShmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCByZWdFeDogUmVnRXhwID0gLyg/OlxcLihbXi5dKykpPyQvOyAvLyByZWdleCB0byBmaW5kIGV4dGVuc2lvblxyXG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbjogYW55ID0gcmVnRXguZXhlYyhmaWxlTmFtZSlbMV07XHJcbiAgICAgICAgc3dpdGNoIChleHRlbnNpb24pIHtcclxuICAgICAgICAgICAgY2FzZSBcImpwZ1wiOlxyXG4gICAgICAgICAgICBjYXNlIFwianBlZ1wiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaW1hZ2UvanBlZ1wiO1xyXG4gICAgICAgICAgICBjYXNlIFwicG5nXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJpbWFnZS9wbmdcIjtcclxuICAgICAgICAgICAgY2FzZSBcImJtcFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiaW1hZ2UvYm1wXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgRG93bmxvYWRGaWxlKFxyXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXHJcbiAgICAgICAgY29udGVudDogc3RyaW5nLFxyXG4gICAgICAgIG1pbWVUeXBlOiBzdHJpbmcgPSBcInRleHQvcGxhaW5cIlxyXG4gICAgKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudDogSFRNTEFuY2hvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIFwiZGF0YTpcIiArIG1pbWVUeXBlICsgXCI7Y2hhcnNldD11dGYtOCxcIiArIGVuY29kZVVSSUNvbXBvbmVudChjb250ZW50KSk7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJkb3dubG9hZFwiLCBmaWxlTmFtZSk7XHJcblxyXG4gICAgICAgIGVsZW1lbnQuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGVsZW1lbnQuY2xpY2soKTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXR1cm5zIHRoZSBjb250ZW50cyBvZiBnaXZlbiBmaWxlIGFzIGEgdGV4dCBzdHJpbmcuXHJcbiAgICBwdWJsaWMgc3RhdGljIFJlYWRBc1RleHQoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4oKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlcjogRmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xyXG4gICAgICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQucmVhZHlTdGF0ZSA9PT0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZXZlbnQudGFyZ2V0LnJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBSZWFkRmlsZUFzTmV3Q29Eb2N1bWVudChmaWxlOiBGaWxlKTogUHJvbWlzZTxDb0RvY3VtZW50PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPENvRG9jdW1lbnQ+KChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCByZWFkZXI6IEZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xyXG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZGVuZCA9IChldmVudDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LnJlYWR5U3RhdGUgPT09IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb0RvY3VtZW50OiBDb0RvY3VtZW50ID0gbmV3IENvRG9jdW1lbnQoKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY29Eb2N1bWVudC5maWxlU2l6ZSA9IGZpbGUuc2l6ZS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQubWltZVR5cGVJbnRlcm5hbCA9IGZpbGUudHlwZTtcclxuICAgICAgICAgICAgICAgICAgICBjb0RvY3VtZW50Lm1pbWVUeXBlID0gZmlsZS50eXBlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQuZmlsZU5hbWUgPSBmaWxlLm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29Eb2N1bWVudC5kb2N1bWVudFR5cGUgPSBDb0RvY3VtZW50VHlwZS5TYXZlQXNEb2N1bWVudDtcclxuICAgICAgICAgICAgICAgICAgICBjb0RvY3VtZW50LmZpbGVUeXBlID0gRmlsZVV0aWxzLklzSW1hZ2VGaWxlKGZpbGUpID8gRmlsZVR5cGUuSW1hZ2UgOiBGaWxlVHlwZS5Eb2N1bWVudDtcclxuICAgICAgICAgICAgICAgICAgICBjb0RvY3VtZW50LmRlc2NyaXB0aW9uID0gZmlsZS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvRG9jdW1lbnQuZG9jdW1lbnRCb2R5ID0gRmlsZVV0aWxzLlN0cmlwTWltZVN0cmluZ0Zyb21EYXRhVXJpKGV2ZW50LnRhcmdldC5yZXN1bHQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGNvRG9jdW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgR2V0RXh0ZW5zaW9uRnJvbURhdGFVcmkoZGF0YVVyaTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBkYXRhOiBzdHJpbmcgPSBkYXRhVXJpO1xyXG4gICAgICAgIHJldHVybiBkYXRhLnJlcGxhY2UoLyhkYXRhOmltYWdlXFwvKSguKj8pKDtiYXNlNjQuKikvZ2ksICckMicpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgQ3JlYXRlRG93bmxvYWRGaWxlTmFtZUZyb21CYXNlNjQoZGF0YVVyaTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBjb25zdCBleHQ6IHN0cmluZyA9IHRoaXMuR2V0RXh0ZW5zaW9uRnJvbURhdGFVcmkoZGF0YVVyaSk7XHJcbiAgICAgICAgcmV0dXJuICdwcmV2aWV3LicgKyBleHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBEb3dubG9hZEZyb21EYXRhVXJpKGRhdGFVcmk6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGxpbms6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xyXG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgICBsaW5rLmhyZWYgPSBkYXRhVXJpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgbGluay5jbGljaygpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgICB9XHJcbn1cclxuIl19
|