@colijnit/corecomponents_v12 12.2.23 → 12.2.25
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/.browserslistrc +17 -0
- package/.editorconfig +16 -0
- package/.idea/CoreComponents_v12.iml +12 -0
- package/.idea/misc.xml +9 -0
- package/.idea/modules.xml +8 -0
- package/.idea/vcs.xml +6 -0
- package/CoreComponents_v12.iml +12 -0
- package/README.md +12 -9
- package/angular.json +149 -0
- package/dist/corecomponentstest/favicon.ico +0 -0
- package/dist/corecomponentstest/index.html +13 -0
- package/dist/corecomponentstest/main.js +24187 -0
- package/dist/corecomponentstest/main.js.map +1 -0
- package/dist/corecomponentstest/polyfills.js +2891 -0
- package/dist/corecomponentstest/polyfills.js.map +1 -0
- package/dist/corecomponentstest/runtime.js +161 -0
- package/dist/corecomponentstest/runtime.js.map +1 -0
- package/dist/corecomponentstest/styles.css +2926 -0
- package/dist/corecomponentstest/styles.css.map +1 -0
- package/dist/corecomponentstest/vendor.js +118790 -0
- package/dist/corecomponentstest/vendor.js.map +1 -0
- package/karma.conf.js +44 -0
- package/move-assets.js +14 -0
- package/package.json +43 -22
- package/projects/corecomponents/README.md +24 -0
- package/projects/corecomponents/karma.conf.js +44 -0
- package/projects/corecomponents/ng-package.json +10 -0
- package/projects/corecomponents/package-lock.json +13 -0
- package/projects/corecomponents/package.json +19 -0
- package/projects/corecomponents/src/lib/components/article-tile/article-tile.component.ts +95 -0
- package/projects/corecomponents/src/lib/components/article-tile/article-tile.module.ts +34 -0
- package/projects/corecomponents/src/lib/components/base/base-input.component.ts +988 -0
- package/projects/corecomponents/src/lib/components/base/base.module.ts +22 -0
- package/projects/corecomponents/src/lib/components/base/commit-buttons/commit-buttons.component.ts +120 -0
- package/projects/corecomponents/src/lib/components/base/commit-buttons/commit-buttons.module.ts +19 -0
- package/projects/corecomponents/src/lib/components/base/dialog-base.component.ts +8 -0
- package/projects/corecomponents/src/lib/components/base-input-date-picker/base-input-date-picker.directive.ts +32 -0
- package/projects/corecomponents/src/lib/components/base-input-time/base-input-time-directive.ts +31 -0
- package/projects/corecomponents/src/lib/components/button/button.component.ts +117 -0
- package/projects/corecomponents/src/lib/components/button/button.module.ts +18 -0
- package/projects/corecomponents/src/lib/components/calendar/calendar-template.component.ts +392 -0
- package/projects/corecomponents/src/lib/components/calendar/calendar.component.ts +54 -0
- package/projects/corecomponents/src/lib/components/calendar/calendar.module.ts +26 -0
- package/projects/corecomponents/src/lib/components/card/card.component.ts +94 -0
- package/projects/corecomponents/src/lib/components/card/card.module.ts +34 -0
- package/projects/corecomponents/src/lib/components/carousel/carousel.component.ts +128 -0
- package/projects/corecomponents/src/lib/components/carousel/carousel.module.ts +28 -0
- package/projects/corecomponents/src/lib/components/carousel-3d/carousel-3d.component.ts +392 -0
- package/projects/corecomponents/src/lib/components/carousel-3d/carousel-3d.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/carousel-3d/carouselItem.ts +77 -0
- package/projects/corecomponents/src/lib/components/checkmark-overlay/checkmark-overlay.component.ts +99 -0
- package/projects/corecomponents/src/lib/components/checkmark-overlay/checkmark-overlay.module.ts +18 -0
- package/projects/corecomponents/src/lib/components/co-dialog/animation.ts +2 -0
- package/projects/corecomponents/src/lib/components/co-dialog/co-dialog.component.ts +130 -0
- package/projects/corecomponents/src/lib/components/co-dialog/co-dialog.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/co-dialog-wizard/co-dialog-wizard.component.ts +50 -0
- package/projects/corecomponents/src/lib/components/co-dialog-wizard/co-dialog-wizard.module.ts +15 -0
- package/projects/corecomponents/src/lib/components/collapsible/collapsible.component.ts +114 -0
- package/projects/corecomponents/src/lib/components/collapsible/collapsible.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/color-picker/color-picker.component.ts +40 -0
- package/projects/corecomponents/src/lib/components/color-picker/color-picker.module.ts +19 -0
- package/projects/corecomponents/src/lib/components/core-dialog/confirmation-dialog/confirmation-dialog.component.ts +86 -0
- package/projects/corecomponents/src/lib/components/core-dialog/core-dialog.module.ts +37 -0
- package/projects/corecomponents/src/lib/components/core-dialog/core-dialog.service.ts +61 -0
- package/projects/corecomponents/src/lib/components/core-dialog/core-dynamic-component.service.ts +101 -0
- package/projects/corecomponents/src/lib/components/double-calendar/double-calendar.component.ts +102 -0
- package/projects/corecomponents/src/lib/components/double-calendar/double-calendar.module.ts +23 -0
- package/projects/corecomponents/src/lib/components/filter-item/filter-item-viewmodel.ts +20 -0
- package/projects/corecomponents/src/lib/components/filter-item/filter-item.component.ts +715 -0
- package/projects/corecomponents/src/lib/components/filter-item/filter-item.module.ts +42 -0
- package/projects/corecomponents/src/lib/components/filter-item/filter-viewmodel.ts +11 -0
- package/projects/corecomponents/src/lib/components/form/form.component.ts +211 -0
- package/projects/corecomponents/src/lib/components/form/form.module.ts +22 -0
- package/projects/corecomponents/src/lib/components/grid-toolbar/grid-toolbar.component.ts +62 -0
- package/projects/corecomponents/src/lib/components/grid-toolbar/grid-toolbar.module.ts +21 -0
- package/projects/corecomponents/src/lib/components/grid-toolbar-button/grid-toolbar-button.component.ts +28 -0
- package/projects/corecomponents/src/lib/components/grid-toolbar-button/grid-toolbar-button.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/icon/icon-cache.service.ts +57 -0
- package/projects/corecomponents/src/lib/components/icon/icon.component.ts +54 -0
- package/projects/corecomponents/src/lib/components/icon/icon.module.ts +24 -0
- package/projects/corecomponents/src/lib/components/icon-collapse-handle/icon-collapse-handle.component.ts +75 -0
- package/projects/corecomponents/src/lib/components/icon-collapse-handle/icon-collapse-handle.module.ts +21 -0
- package/projects/corecomponents/src/lib/components/image/image.component.ts +51 -0
- package/projects/corecomponents/src/lib/components/image/image.module.ts +12 -0
- package/projects/corecomponents/src/lib/components/input-checkbox/input-checkbox.component.ts +85 -0
- package/projects/corecomponents/src/lib/components/input-checkbox/input-checkbox.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/input-date-picker/input-date-picker.component.ts +103 -0
- package/projects/corecomponents/src/lib/components/input-date-picker/input-date-picker.module.ts +24 -0
- package/projects/corecomponents/src/lib/components/input-date-range-picker/input-date-range-picker.component.ts +155 -0
- package/projects/corecomponents/src/lib/components/input-date-range-picker/input-date-range-picker.module.ts +25 -0
- package/projects/corecomponents/src/lib/components/input-number-picker/input-number-picker.component.ts +378 -0
- package/projects/corecomponents/src/lib/components/input-number-picker/input-number-picker.module.ts +20 -0
- package/projects/corecomponents/src/lib/components/input-radio-button/input-radio-button.component.ts +86 -0
- package/projects/corecomponents/src/lib/components/input-radio-button/input-radio-button.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/input-scanner/bar-code-scanner.ts +25 -0
- package/projects/corecomponents/src/lib/components/input-scanner/input-scanner.component.ts +89 -0
- package/projects/corecomponents/src/lib/components/input-scanner/input-scanner.module.ts +19 -0
- package/projects/corecomponents/src/lib/components/input-scanner/scanner.service.ts +28 -0
- package/projects/corecomponents/src/lib/components/input-search/input-search.component.ts +85 -0
- package/projects/corecomponents/src/lib/components/input-search/input-search.module.ts +20 -0
- package/projects/corecomponents/src/lib/components/input-text/input-text.component.ts +294 -0
- package/projects/corecomponents/src/lib/components/input-text/input-text.module.ts +31 -0
- package/projects/corecomponents/src/lib/components/input-textarea/input-textarea.component.ts +81 -0
- package/projects/corecomponents/src/lib/components/input-textarea/input-textarea.module.ts +25 -0
- package/projects/corecomponents/src/lib/components/input-time/input-time.component.ts +72 -0
- package/projects/corecomponents/src/lib/components/input-time/input-time.module.ts +22 -0
- package/projects/corecomponents/src/lib/components/level-indicator/level-indicator-level.enum.ts +5 -0
- package/projects/corecomponents/src/lib/components/level-indicator/level-indicator.component.ts +42 -0
- package/projects/corecomponents/src/lib/components/level-indicator/level-indicator.module.ts +13 -0
- package/projects/corecomponents/src/lib/components/list-of-values/list-of-values-multiselect-popup.component.ts +132 -0
- package/projects/corecomponents/src/lib/components/list-of-values/list-of-values-popup.component.ts +281 -0
- package/projects/corecomponents/src/lib/components/list-of-values/list-of-values.component.ts +257 -0
- package/projects/corecomponents/src/lib/components/list-of-values/list-of-values.module.ts +35 -0
- package/projects/corecomponents/src/lib/components/loader/loader.component.ts +82 -0
- package/projects/corecomponents/src/lib/components/loader/loader.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/pagination/paginate.pipe.ts +116 -0
- package/projects/corecomponents/src/lib/components/pagination/pagination-instance.ts +18 -0
- package/projects/corecomponents/src/lib/components/pagination/pagination.component.ts +160 -0
- package/projects/corecomponents/src/lib/components/pagination/pagination.module.ts +26 -0
- package/projects/corecomponents/src/lib/components/pagination/pagination.service.ts +99 -0
- package/projects/corecomponents/src/lib/components/pagination-bar/pagination-bar.component.ts +178 -0
- package/projects/corecomponents/src/lib/components/pagination-bar/pagination-bar.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/popup/const/popup-window-token.ts +4 -0
- package/projects/corecomponents/src/lib/components/popup/interface/popup-button.ts +14 -0
- package/projects/corecomponents/src/lib/components/popup/interface/popup-close-event.ts +8 -0
- package/projects/corecomponents/src/lib/components/popup/interface/popup-settings.ts +70 -0
- package/projects/corecomponents/src/lib/components/popup/interface/popup.ts +17 -0
- package/projects/corecomponents/src/lib/components/popup/model/popup-button-globals.ts +11 -0
- package/projects/corecomponents/src/lib/components/popup/model/popup-window.ts +51 -0
- package/projects/corecomponents/src/lib/components/popup/popup-buttons.component.ts +61 -0
- package/projects/corecomponents/src/lib/components/popup/popup-message-display.component.ts +49 -0
- package/projects/corecomponents/src/lib/components/popup/popup-window-shell.component.ts +222 -0
- package/projects/corecomponents/src/lib/components/popup/popup.module.ts +48 -0
- package/projects/corecomponents/src/lib/components/popup/service/popup-shower.service.ts +98 -0
- package/projects/corecomponents/src/lib/components/popup/service/prompt.service.ts +127 -0
- package/projects/corecomponents/src/lib/components/popup/text-input-popup.component.ts +36 -0
- package/projects/corecomponents/src/lib/components/responsive-text/responsive-text.component.ts +24 -0
- package/projects/corecomponents/src/lib/components/responsive-text/responsive-text.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/simple-grid/base-simple-grid.component.ts +194 -0
- package/projects/corecomponents/src/lib/components/simple-grid/simple-grid-cell.component.ts +192 -0
- package/projects/corecomponents/src/lib/components/simple-grid/simple-grid-column.directive.ts +143 -0
- package/projects/corecomponents/src/lib/components/simple-grid/simple-grid.component.ts +489 -0
- package/projects/corecomponents/src/lib/components/simple-grid/simple-grid.module.ts +38 -0
- package/projects/corecomponents/src/lib/components/tile/tile.component.ts +71 -0
- package/projects/corecomponents/src/lib/components/tile/tile.module.ts +21 -0
- package/projects/corecomponents/src/lib/components/tile-select/tile-select.component.ts +36 -0
- package/projects/corecomponents/src/lib/components/tile-select/tile-select.module.ts +19 -0
- package/projects/corecomponents/src/lib/components/tooltip/tooltip.component.ts +96 -0
- package/projects/corecomponents/src/lib/components/tooltip/tooltip.module.ts +17 -0
- package/projects/corecomponents/src/lib/components/validation-error/validation-error.component.ts +45 -0
- package/projects/corecomponents/src/lib/components/validation-error/validation-error.module.ts +24 -0
- package/projects/corecomponents/src/lib/components/view-mode-buttons/content-view-mode.enum.ts +9 -0
- package/projects/corecomponents/src/lib/components/view-mode-buttons/view-mode-buttons.component.ts +63 -0
- package/projects/corecomponents/src/lib/components/view-mode-buttons/view-mode-buttons.module.ts +19 -0
- package/projects/corecomponents/src/lib/core/abstract/collection-based-component.ts +488 -0
- package/projects/corecomponents/src/lib/core/config/device-environment.ts +26 -0
- package/projects/corecomponents/src/lib/core/constant/default-upper-bound-for-range-components.ts +4 -0
- package/projects/corecomponents/src/lib/core/constant/java-max-int.ts +1 -0
- package/projects/corecomponents/src/lib/core/constant/number-inputs-key-down-white-list.ts +46 -0
- package/projects/corecomponents/src/lib/core/decorator/input-boolean.decorator.ts +35 -0
- package/projects/corecomponents/src/lib/core/enum/co-direction.ts +7 -0
- package/projects/corecomponents/src/lib/core/enum/co-document-image-display-kind.enum.ts +5 -0
- package/projects/corecomponents/src/lib/core/enum/co-document-type.enum.ts +9 -0
- package/projects/corecomponents/src/lib/core/enum/co-orientation.ts +18 -0
- package/projects/corecomponents/src/lib/core/enum/collection-based-component-input-driver-prop.enum.ts +10 -0
- package/projects/corecomponents/src/lib/core/enum/color-sequence-name.enum.ts +5 -0
- package/projects/corecomponents/src/lib/core/enum/core-components-icon.enum.ts +299 -0
- package/projects/corecomponents/src/lib/core/enum/file-type-internal.enum.ts +15 -0
- package/projects/corecomponents/src/lib/core/enum/file-type.enum.ts +9 -0
- package/projects/corecomponents/src/lib/core/enum/filterItem-mode.enum.ts +57 -0
- package/projects/corecomponents/src/lib/core/enum/float-label-type.enum.ts +5 -0
- package/projects/corecomponents/src/lib/core/enum/input-number-picker-show-mode.enum.ts +6 -0
- package/projects/corecomponents/src/lib/core/enum/input-text-type.enum.ts +4 -0
- package/projects/corecomponents/src/lib/core/enum/keyboard-code.enum.ts +72 -0
- package/projects/corecomponents/src/lib/core/enum/keyboard-key.enum.ts +78 -0
- package/projects/corecomponents/src/lib/core/enum/logical-operator-type.enum.ts +5 -0
- package/projects/corecomponents/src/lib/core/enum/object-right-type.enum.ts +5 -0
- package/projects/corecomponents/src/lib/core/enum/popup-button-type.enum.ts +10 -0
- package/projects/corecomponents/src/lib/core/enum/popup-type.enum.ts +9 -0
- package/projects/corecomponents/src/lib/core/enum/schedule-view.enum.ts +14 -0
- package/projects/corecomponents/src/lib/core/enum/search-data-type.ts +4 -0
- package/projects/corecomponents/src/lib/core/enum/search-property-state.ts +5 -0
- package/projects/corecomponents/src/lib/core/enum/sort-data-type.ts +6 -0
- package/projects/corecomponents/src/lib/core/enum/sort-direction.ts +9 -0
- package/projects/corecomponents/src/lib/core/enum/table-name.enum.ts +79 -0
- package/projects/corecomponents/src/lib/core/enum/value-comparison-type.ts +11 -0
- package/projects/corecomponents/src/lib/core/function/any-nill.function.ts +6 -0
- package/projects/corecomponents/src/lib/core/function/is-nill.function.ts +4 -0
- package/projects/corecomponents/src/lib/core/function/none-nill.function.ts +16 -0
- package/projects/corecomponents/src/lib/core/function/not-nill.function.ts +4 -0
- package/projects/corecomponents/src/lib/core/interface/search-property.ts +15 -0
- package/projects/corecomponents/src/lib/core/interface/sort-property.ts +16 -0
- package/projects/corecomponents/src/lib/core/model/bounds-constrained-number-value.ts +222 -0
- package/projects/corecomponents/src/lib/core/model/check-precision-and-scale-result.ts +5 -0
- package/projects/corecomponents/src/lib/core/model/check-within-stepped-bounds-result.ts +8 -0
- package/projects/corecomponents/src/lib/core/model/co-document-right.bo.ts +9 -0
- package/projects/corecomponents/src/lib/core/model/co-document.bo.ts +193 -0
- package/projects/corecomponents/src/lib/core/model/color-sequence.ts +39 -0
- package/projects/corecomponents/src/lib/core/model/color.ts +29 -0
- package/projects/corecomponents/src/lib/core/model/core-components-icon-svg.ts +299 -0
- package/projects/corecomponents/src/lib/core/model/element-position.ts +14 -0
- package/projects/corecomponents/src/lib/core/model/event/number-prompt-result-event.ts +10 -0
- package/projects/corecomponents/src/lib/core/model/event/string-prompt-result-event.ts +10 -0
- package/projects/corecomponents/src/lib/core/model/numerical-range.ts +19 -0
- package/projects/corecomponents/src/lib/core/service/form-input-user-change-listener.service.ts +31 -0
- package/projects/corecomponents/src/lib/core/service/form-master.service.ts +119 -0
- package/projects/corecomponents/src/lib/core/service/ng-zone-wrapper.service.ts +15 -0
- package/projects/corecomponents/src/lib/core/utils/array-utils.spec.ts +588 -0
- package/projects/corecomponents/src/lib/core/utils/array-utils.ts +301 -0
- package/projects/corecomponents/src/lib/core/utils/browser-utils.ts +123 -0
- package/projects/corecomponents/src/lib/core/utils/business-object-utils.ts +42 -0
- package/projects/corecomponents/src/lib/core/utils/css-utils.ts +276 -0
- package/projects/corecomponents/src/lib/core/utils/direction-enum-utils.ts +15 -0
- package/projects/corecomponents/src/lib/core/utils/element-ref.utils.ts +12 -0
- package/projects/corecomponents/src/lib/core/utils/event-utils.ts +61 -0
- package/projects/corecomponents/src/lib/core/utils/file-utils.ts +291 -0
- package/projects/corecomponents/src/lib/core/utils/number-utils.spec.ts +657 -0
- package/projects/corecomponents/src/lib/core/utils/number-utils.ts +350 -0
- package/projects/corecomponents/src/lib/core/utils/object-utils.ts +205 -0
- package/projects/corecomponents/src/lib/core/utils/parameter-value-conversion-utils.ts +116 -0
- package/projects/corecomponents/src/lib/core/utils/search-utils.ts +121 -0
- package/projects/corecomponents/src/lib/core/utils/sort-utils.ts +108 -0
- package/projects/corecomponents/src/lib/core/utils/string-utils.ts +100 -0
- package/projects/corecomponents/src/lib/core/validator/email.validator.ts +10 -0
- package/projects/corecomponents/src/lib/core/validator/equal.validator.ts +14 -0
- package/projects/corecomponents/src/lib/core/validator/max-string-length.validator.ts +11 -0
- package/projects/corecomponents/src/lib/core/validator/password.validator.ts +35 -0
- package/projects/corecomponents/src/lib/core/validator/precision-scale.validator.ts +14 -0
- package/projects/corecomponents/src/lib/core/validator/required.validator.ts +9 -0
- package/projects/corecomponents/src/lib/directives/align-with/align-with.directive.ts +158 -0
- package/projects/corecomponents/src/lib/directives/align-with/align-with.module.ts +13 -0
- package/projects/corecomponents/src/lib/directives/clickoutside/click-outside-master.service.ts +64 -0
- package/projects/corecomponents/src/lib/directives/clickoutside/click-outside.directive.ts +72 -0
- package/projects/corecomponents/src/lib/directives/clickoutside/clickoutside.module.ts +17 -0
- package/projects/corecomponents/src/lib/directives/observe-visibility/observe-visibility.directive.ts +55 -0
- package/projects/corecomponents/src/lib/directives/observe-visibility/observe-visibility.module.ts +13 -0
- package/projects/corecomponents/src/lib/directives/overlay/overlay-parent.directive.ts +20 -0
- package/projects/corecomponents/src/lib/directives/overlay/overlay.directive.ts +170 -0
- package/projects/corecomponents/src/lib/directives/overlay/overlay.module.ts +16 -0
- package/projects/corecomponents/src/lib/directives/parsevalue/parse-value.directive.ts +42 -0
- package/projects/corecomponents/src/lib/directives/parsevalue/parse-value.module.ts +13 -0
- package/projects/corecomponents/src/lib/directives/resize/resize-detect.directive.ts +54 -0
- package/projects/corecomponents/src/lib/directives/resize/resize-detect.module.ts +13 -0
- package/projects/corecomponents/src/lib/directives/ripple/ripple-ref.ts +28 -0
- package/projects/corecomponents/src/lib/directives/ripple/ripple-renderer.ts +217 -0
- package/projects/corecomponents/src/lib/directives/ripple/ripple.directive.ts +116 -0
- package/projects/corecomponents/src/lib/directives/ripple/ripple.module.ts +24 -0
- package/projects/corecomponents/src/lib/directives/ripple/scroll-dispatcher.service.ts +129 -0
- package/projects/corecomponents/src/lib/directives/ripple/scrollable.directive.ts +37 -0
- package/projects/corecomponents/src/lib/directives/ripple/viewport-ruler.service.ts +84 -0
- package/projects/corecomponents/src/lib/directives/screen-configuration/screen-configuration.directive.ts +170 -0
- package/projects/corecomponents/src/lib/directives/screen-configuration/screen-configuration.module.ts +16 -0
- package/projects/corecomponents/src/lib/directives/stopclick/stop-click.directive.ts +35 -0
- package/projects/corecomponents/src/lib/directives/stopclick/stop-click.module.ts +14 -0
- package/projects/corecomponents/src/lib/directives/template-wrapper/template-wrapper.directive.ts +71 -0
- package/projects/corecomponents/src/lib/directives/template-wrapper/template-wrapper.module.ts +13 -0
- package/projects/corecomponents/src/lib/directives/tooltip/tooltip-directive.module.ts +17 -0
- package/projects/corecomponents/src/lib/directives/tooltip/tooltip.directive.ts +94 -0
- package/projects/corecomponents/src/lib/interfaces/dialog-response.interface.ts +7 -0
- package/projects/corecomponents/src/lib/interfaces/lov-options.component.interface.ts +4 -0
- package/projects/corecomponents/src/lib/interfaces/scanner-input.interface.ts +3 -0
- package/projects/corecomponents/src/lib/interfaces/screen-config-adapter-component-interface-name.ts +6 -0
- package/projects/corecomponents/src/lib/interfaces/screen-config-adapter.component.interface.ts +10 -0
- package/projects/corecomponents/src/lib/model/data-item.ts +9 -0
- package/projects/corecomponents/src/lib/model/enum/app-button-type.enum.ts +9 -0
- package/projects/corecomponents/src/lib/model/enum/app-popup-type.enum.ts +6 -0
- package/projects/corecomponents/src/lib/model/enum/currency-code.enum.ts +7 -0
- package/projects/corecomponents/src/lib/model/enum/language-code.enum.ts +8 -0
- package/projects/corecomponents/src/lib/model/map/currencies.map.ts +6 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/drag-drop-container.component.ts +115 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/drag-drop-container.css +34 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/drag-drop-manager.service.ts +414 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/drag-drop.module.ts +20 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/draggable.directive.ts +70 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/model/co-drag-event.ts +5 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/model/co-drop-event.ts +9 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/model/drag-drop-container-element.ts +7 -0
- package/projects/corecomponents/src/lib/modules/drag-drop/model/drag-drop-container.ts +9 -0
- package/projects/corecomponents/src/lib/modules/media-monitor/flex-layout-breakpoint.enum.ts +5 -0
- package/projects/corecomponents/src/lib/modules/media-monitor/media-monitor.module.ts +14 -0
- package/projects/corecomponents/src/lib/modules/media-monitor/media-monitor.service.ts +36 -0
- package/projects/corecomponents/src/lib/modules/pagination/paginate.pipe.ts +116 -0
- package/projects/corecomponents/src/lib/modules/pagination/pagination-instance.ts +18 -0
- package/projects/corecomponents/src/lib/modules/pagination/pagination.component.ts +229 -0
- package/projects/corecomponents/src/lib/modules/pagination/pagination.module.ts +25 -0
- package/projects/corecomponents/src/lib/modules/pagination/pagination.service.ts +98 -0
- package/projects/corecomponents/src/lib/pipes/append.pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/append.pipe.ts +17 -0
- package/projects/corecomponents/src/lib/pipes/co-currency-pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/co-currency.pipe.ts +45 -0
- package/projects/corecomponents/src/lib/pipes/emun-keys.pipe.ts +20 -0
- package/projects/corecomponents/src/lib/pipes/enum-keys-pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/file-type-image-pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/file-type-image.pipe.ts +45 -0
- package/projects/corecomponents/src/lib/pipes/filter.pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/filter.pipe.ts +14 -0
- package/projects/corecomponents/src/lib/pipes/master-pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/master.pipe.ts +71 -0
- package/projects/corecomponents/src/lib/pipes/prepend.pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/prepend.pipe.ts +17 -0
- package/projects/corecomponents/src/lib/pipes/price-display-pipe.module.ts +14 -0
- package/projects/corecomponents/src/lib/pipes/price-display.pipe.ts +20 -0
- package/projects/corecomponents/src/lib/pipes/safe-style.pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/safe-style.pipe.ts +14 -0
- package/projects/corecomponents/src/lib/pipes/ucfirst-pipe.module.ts +13 -0
- package/projects/corecomponents/src/lib/pipes/ucfirst.pipe.ts +14 -0
- package/projects/corecomponents/src/lib/service/base-module-screen-config.service.ts +241 -0
- package/projects/corecomponents/src/lib/service/base-module.service.ts +50 -0
- package/projects/corecomponents/src/lib/service/color-sequence.service.ts +20 -0
- package/projects/corecomponents/src/lib/service/overlay.service.ts +81 -0
- package/projects/corecomponents/src/lib/translation/core-components-translation.module.ts +27 -0
- package/projects/corecomponents/src/lib/translation/core-components-translation.service.ts +15 -0
- package/projects/corecomponents/src/lib/translation/core-dictionary.service.ts +27 -0
- package/projects/corecomponents/src/lib/translation/core-localize.pipe.ts +21 -0
- package/projects/corecomponents/src/public-api.ts +137 -0
- package/projects/corecomponents/src/res/icons/Barcode.svg +1 -0
- package/projects/corecomponents/src/res/icons/CashRegister.svg +1 -0
- package/projects/corecomponents/src/res/icons/CirclePlusSkinny.svg +1 -0
- package/projects/corecomponents/src/res/icons/CrossSkinny.svg +1 -0
- package/projects/corecomponents/src/res/icons/FolderArrow.svg +1 -0
- package/projects/corecomponents/src/res/icons/Home.svg +1 -0
- package/projects/corecomponents/src/res/icons/POS.svg +1 -0
- package/projects/corecomponents/src/res/icons/Shop.svg +1 -0
- package/projects/corecomponents/src/res/icons/SinglePerson.svg +1 -0
- package/projects/corecomponents/src/res/icons/Star.svg +1 -0
- package/projects/corecomponents/src/res/icons/TrashBin.svg +1 -0
- package/projects/corecomponents/src/res/icons/account.svg +1 -0
- package/projects/corecomponents/src/res/icons/account_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/activities.svg +1 -0
- package/projects/corecomponents/src/res/icons/add_to_cart_drop.svg +1 -0
- package/projects/corecomponents/src/res/icons/arrow_down.svg +1 -0
- package/projects/corecomponents/src/res/icons/arrow_fat_left.svg +1 -0
- package/projects/corecomponents/src/res/icons/arrow_fat_right.svg +1 -0
- package/projects/corecomponents/src/res/icons/arrow_left.svg +4 -0
- package/projects/corecomponents/src/res/icons/arrow_left_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/arrow_point_down.svg +6 -0
- package/projects/corecomponents/src/res/icons/arrow_point_left.svg +8 -0
- package/projects/corecomponents/src/res/icons/arrow_point_right.svg +8 -0
- package/projects/corecomponents/src/res/icons/arrow_point_up.svg +8 -0
- package/projects/corecomponents/src/res/icons/arrow_right_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/arrow_scroll_down.svg +6 -0
- package/projects/corecomponents/src/res/icons/arrow_scroll_left.svg +22 -0
- package/projects/corecomponents/src/res/icons/arrow_scroll_right.svg +22 -0
- package/projects/corecomponents/src/res/icons/arrow_scroll_up.svg +6 -0
- package/projects/corecomponents/src/res/icons/arrow_up.svg +3 -0
- package/projects/corecomponents/src/res/icons/article.svg +1 -0
- package/projects/corecomponents/src/res/icons/article_with_fold.svg +1 -0
- package/projects/corecomponents/src/res/icons/asterisk_small.svg +1 -0
- package/projects/corecomponents/src/res/icons/attachments.svg +1 -0
- package/projects/corecomponents/src/res/icons/back_to_top.svg +1 -0
- package/projects/corecomponents/src/res/icons/big_mac.svg +6 -0
- package/projects/corecomponents/src/res/icons/boxes.svg +1 -0
- package/projects/corecomponents/src/res/icons/brush.svg +1 -0
- package/projects/corecomponents/src/res/icons/brush_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/building_columns.svg +1 -0
- package/projects/corecomponents/src/res/icons/businessrules.svg +1 -0
- package/projects/corecomponents/src/res/icons/calendar.svg +1 -0
- package/projects/corecomponents/src/res/icons/calendar_day.svg +37 -0
- package/projects/corecomponents/src/res/icons/calendar_day_regular.svg +1 -0
- package/projects/corecomponents/src/res/icons/calendar_empty.svg +16 -0
- package/projects/corecomponents/src/res/icons/calendar_range.svg +1 -0
- package/projects/corecomponents/src/res/icons/calendar_round_open.svg +16 -0
- package/projects/corecomponents/src/res/icons/camera.svg +1 -0
- package/projects/corecomponents/src/res/icons/cancel.svg +1 -0
- package/projects/corecomponents/src/res/icons/cancel_round_filled.svg +1 -0
- package/projects/corecomponents/src/res/icons/cancel_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/cart.svg +1 -0
- package/projects/corecomponents/src/res/icons/cart_open.svg +8 -0
- package/projects/corecomponents/src/res/icons/case_manager.svg +1 -0
- package/projects/corecomponents/src/res/icons/cash_register_simple.svg +1 -0
- package/projects/corecomponents/src/res/icons/change_location.svg +1 -0
- package/projects/corecomponents/src/res/icons/check.svg +1 -0
- package/projects/corecomponents/src/res/icons/check_duotone.svg +1 -0
- package/projects/corecomponents/src/res/icons/check_round.svg +1 -0
- package/projects/corecomponents/src/res/icons/check_round_open.svg +10 -0
- package/projects/corecomponents/src/res/icons/check_simple.svg +3 -0
- package/projects/corecomponents/src/res/icons/check_thin.svg +1 -0
- package/projects/corecomponents/src/res/icons/chevron_down_regular.svg +1 -0
- package/projects/corecomponents/src/res/icons/chevron_up_regular.svg +1 -0
- package/projects/corecomponents/src/res/icons/client.svg +1 -0
- package/projects/corecomponents/src/res/icons/clock.svg +1 -0
- package/projects/corecomponents/src/res/icons/clockArrow.svg +1 -0
- package/projects/corecomponents/src/res/icons/cogWheelPlus.svg +1 -0
- package/projects/corecomponents/src/res/icons/cogWheels.svg +1 -0
- package/projects/corecomponents/src/res/icons/column_options.svg +18 -0
- package/projects/corecomponents/src/res/icons/company.svg +1 -0
- package/projects/corecomponents/src/res/icons/company_flat.svg +4 -0
- package/projects/corecomponents/src/res/icons/configurable.svg +1 -0
- package/projects/corecomponents/src/res/icons/consultant.svg +1 -0
- package/projects/corecomponents/src/res/icons/copy.svg +1 -0
- package/projects/corecomponents/src/res/icons/crosshair_1.svg +1 -0
- package/projects/corecomponents/src/res/icons/dashboard.svg +1 -0
- package/projects/corecomponents/src/res/icons/delivery_method.svg +32 -0
- package/projects/corecomponents/src/res/icons/delivery_status_uncheck.svg +9 -0
- package/projects/corecomponents/src/res/icons/delivery_truck.svg +1 -0
- package/projects/corecomponents/src/res/icons/detail_record.svg +1 -0
- package/projects/corecomponents/src/res/icons/detail_view.svg +1 -0
- package/projects/corecomponents/src/res/icons/dictionary.svg +1 -0
- package/projects/corecomponents/src/res/icons/documentWrench.svg +1 -0
- package/projects/corecomponents/src/res/icons/documents.svg +1 -0
- package/projects/corecomponents/src/res/icons/dollar.svg +1 -0
- package/projects/corecomponents/src/res/icons/download.svg +1 -0
- package/projects/corecomponents/src/res/icons/dropdown.svg +4 -0
- package/projects/corecomponents/src/res/icons/dropzone.svg +1 -0
- package/projects/corecomponents/src/res/icons/edit_pencil.svg +1 -0
- package/projects/corecomponents/src/res/icons/edit_pencil_circle.svg +1 -0
- package/projects/corecomponents/src/res/icons/edit_pencil_round.svg +11 -0
- package/projects/corecomponents/src/res/icons/edit_pencil_simple.svg +16 -0
- package/projects/corecomponents/src/res/icons/email.svg +1 -0
- package/projects/corecomponents/src/res/icons/email_round_open.svg +6 -0
- package/projects/corecomponents/src/res/icons/employee.svg +1 -0
- package/projects/corecomponents/src/res/icons/employee_two.svg +1 -0
- package/projects/corecomponents/src/res/icons/employer.svg +1 -0
- package/projects/corecomponents/src/res/icons/employment.svg +1 -0
- package/projects/corecomponents/src/res/icons/employment_end.svg +7 -0
- package/projects/corecomponents/src/res/icons/equal.svg +1 -0
- package/projects/corecomponents/src/res/icons/euro.svg +1 -0
- package/projects/corecomponents/src/res/icons/exclamation.svg +1 -0
- package/projects/corecomponents/src/res/icons/exclamation_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/eye_circle.svg +1 -0
- package/projects/corecomponents/src/res/icons/eye_circle_large.svg +1 -0
- package/projects/corecomponents/src/res/icons/eye_round_filled.svg +11 -0
- package/projects/corecomponents/src/res/icons/factory.svg +1 -0
- package/projects/corecomponents/src/res/icons/fasttrack.svg +1 -0
- package/projects/corecomponents/src/res/icons/filter.svg +1 -0
- package/projects/corecomponents/src/res/icons/finish.svg +1 -0
- package/projects/corecomponents/src/res/icons/fixed_option_value_tree.svg +1 -0
- package/projects/corecomponents/src/res/icons/fixed_tree_option_value.svg +1 -0
- package/projects/corecomponents/src/res/icons/floppy_disk_solid.svg +1 -0
- package/projects/corecomponents/src/res/icons/folder_arrow_in.svg +8 -0
- package/projects/corecomponents/src/res/icons/formula.svg +1 -0
- package/projects/corecomponents/src/res/icons/fullscreen.svg +6 -0
- package/projects/corecomponents/src/res/icons/gear_double.svg +21 -0
- package/projects/corecomponents/src/res/icons/global_search.svg +45 -0
- package/projects/corecomponents/src/res/icons/globe.svg +1 -0
- package/projects/corecomponents/src/res/icons/greater_than.svg +1 -0
- package/projects/corecomponents/src/res/icons/groupby.svg +1 -0
- package/projects/corecomponents/src/res/icons/hamburger.svg +1 -0
- package/projects/corecomponents/src/res/icons/hand_pointer.svg +1 -0
- package/projects/corecomponents/src/res/icons/hbarchart.svg +6 -0
- package/projects/corecomponents/src/res/icons/home_circle.svg +9 -0
- package/projects/corecomponents/src/res/icons/home_open.svg +7 -0
- package/projects/corecomponents/src/res/icons/home_round_open.svg +11 -0
- package/projects/corecomponents/src/res/icons/hourglass.svg +1 -0
- package/projects/corecomponents/src/res/icons/icon_3d.svg +1 -0
- package/projects/corecomponents/src/res/icons/id.svg +1 -0
- package/projects/corecomponents/src/res/icons/image.svg +1 -0
- package/projects/corecomponents/src/res/icons/incoming_storage.svg +1 -0
- package/projects/corecomponents/src/res/icons/information.svg +1 -0
- package/projects/corecomponents/src/res/icons/information_round_open.svg +6 -0
- package/projects/corecomponents/src/res/icons/input_multiplechoice.svg +1 -0
- package/projects/corecomponents/src/res/icons/input_text.svg +1 -0
- package/projects/corecomponents/src/res/icons/input_textarea.svg +1 -0
- package/projects/corecomponents/src/res/icons/inventory.svg +1 -0
- package/projects/corecomponents/src/res/icons/invoice.svg +20 -0
- package/projects/corecomponents/src/res/icons/ione_logo.svg +1 -0
- package/projects/corecomponents/src/res/icons/ione_logo_fat.svg +1 -0
- package/projects/corecomponents/src/res/icons/ione_status_next.svg +43 -0
- package/projects/corecomponents/src/res/icons/ione_workflow.svg +62 -0
- package/projects/corecomponents/src/res/icons/keyboard.svg +1 -0
- package/projects/corecomponents/src/res/icons/keychain.svg +1 -0
- package/projects/corecomponents/src/res/icons/label.svg +5 -0
- package/projects/corecomponents/src/res/icons/label_round_open.svg +6 -0
- package/projects/corecomponents/src/res/icons/landmark_flag.svg +1 -0
- package/projects/corecomponents/src/res/icons/library.svg +21 -0
- package/projects/corecomponents/src/res/icons/linechart.svg +1 -0
- package/projects/corecomponents/src/res/icons/link_circle.svg +1 -0
- package/projects/corecomponents/src/res/icons/linked_products.svg +1 -0
- package/projects/corecomponents/src/res/icons/list_view.svg +8 -0
- package/projects/corecomponents/src/res/icons/location.svg +1 -0
- package/projects/corecomponents/src/res/icons/lock.svg +1 -0
- package/projects/corecomponents/src/res/icons/lock_round_open.svg +8 -0
- package/projects/corecomponents/src/res/icons/logo.svg +1 -0
- package/projects/corecomponents/src/res/icons/logout.svg +1 -0
- package/projects/corecomponents/src/res/icons/magic_wand.svg +1 -0
- package/projects/corecomponents/src/res/icons/magnifier.svg +5 -0
- package/projects/corecomponents/src/res/icons/manager.svg +12 -0
- package/projects/corecomponents/src/res/icons/mask.svg +1 -0
- package/projects/corecomponents/src/res/icons/master_detail.svg +1 -0
- package/projects/corecomponents/src/res/icons/material_circle_large.svg +1 -0
- package/projects/corecomponents/src/res/icons/medal_bronze.svg +23 -0
- package/projects/corecomponents/src/res/icons/medal_gold.svg +23 -0
- package/projects/corecomponents/src/res/icons/medal_silver.svg +23 -0
- package/projects/corecomponents/src/res/icons/medical_officer.svg +14 -0
- package/projects/corecomponents/src/res/icons/microphone.svg +1 -0
- package/projects/corecomponents/src/res/icons/minus_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/minus_simple.svg +1 -0
- package/projects/corecomponents/src/res/icons/mobile.svg +1 -0
- package/projects/corecomponents/src/res/icons/multi_select_check.svg +10 -0
- package/projects/corecomponents/src/res/icons/new_task.svg +1 -0
- package/projects/corecomponents/src/res/icons/not_equal.svg +4 -0
- package/projects/corecomponents/src/res/icons/note.svg +1 -0
- package/projects/corecomponents/src/res/icons/note_bordered.svg +1 -0
- package/projects/corecomponents/src/res/icons/notification.svg +1 -0
- package/projects/corecomponents/src/res/icons/option.svg +1 -0
- package/projects/corecomponents/src/res/icons/optionset.svg +1 -0
- package/projects/corecomponents/src/res/icons/order.svg +1 -0
- package/projects/corecomponents/src/res/icons/orderpicking.svg +1 -0
- package/projects/corecomponents/src/res/icons/outgoing_storage.svg +1 -0
- package/projects/corecomponents/src/res/icons/over_booking.svg +1 -0
- package/projects/corecomponents/src/res/icons/pause_circle.svg +12 -0
- package/projects/corecomponents/src/res/icons/pen_to_square_solid.svg +1 -0
- package/projects/corecomponents/src/res/icons/pencil_round_open.svg +10 -0
- package/projects/corecomponents/src/res/icons/phone.svg +1 -0
- package/projects/corecomponents/src/res/icons/phone_round_open.svg +10 -0
- package/projects/corecomponents/src/res/icons/piechart.svg +24 -0
- package/projects/corecomponents/src/res/icons/pin.svg +9 -0
- package/projects/corecomponents/src/res/icons/pin_round_open.svg +11 -0
- package/projects/corecomponents/src/res/icons/play_circle.svg +1 -0
- package/projects/corecomponents/src/res/icons/plus_round.svg +9 -0
- package/projects/corecomponents/src/res/icons/plus_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/plus_simple.svg +1 -0
- package/projects/corecomponents/src/res/icons/plus_skinny.svg +8 -0
- package/projects/corecomponents/src/res/icons/plus_solid.svg +1 -0
- package/projects/corecomponents/src/res/icons/plus_stars.svg +1 -0
- package/projects/corecomponents/src/res/icons/pointer.svg +7 -0
- package/projects/corecomponents/src/res/icons/pointer_3d.svg +8 -0
- package/projects/corecomponents/src/res/icons/pointer_filled.svg +6 -0
- package/projects/corecomponents/src/res/icons/positioning.svg +1 -0
- package/projects/corecomponents/src/res/icons/pregnancy.svg +18 -0
- package/projects/corecomponents/src/res/icons/preset.svg +1 -0
- package/projects/corecomponents/src/res/icons/print.svg +1 -0
- package/projects/corecomponents/src/res/icons/product_properties.svg +1 -0
- package/projects/corecomponents/src/res/icons/purchase.svg +15 -0
- package/projects/corecomponents/src/res/icons/qrcode.svg +59 -0
- package/projects/corecomponents/src/res/icons/question.svg +1 -0
- package/projects/corecomponents/src/res/icons/radio_uncheck.svg +1 -0
- package/projects/corecomponents/src/res/icons/range.svg +1 -0
- package/projects/corecomponents/src/res/icons/range_select.svg +1 -0
- package/projects/corecomponents/src/res/icons/rectangles.svg +15 -0
- package/projects/corecomponents/src/res/icons/refresh.svg +1 -0
- package/projects/corecomponents/src/res/icons/relations.svg +20 -0
- package/projects/corecomponents/src/res/icons/remark.svg +1 -0
- package/projects/corecomponents/src/res/icons/remark_round_open.svg +6 -0
- package/projects/corecomponents/src/res/icons/report_in_type.svg +1 -0
- package/projects/corecomponents/src/res/icons/resize.svg +3 -0
- package/projects/corecomponents/src/res/icons/resize_down.svg +1 -0
- package/projects/corecomponents/src/res/icons/resize_up.svg +1 -0
- package/projects/corecomponents/src/res/icons/return_goods.svg +4 -0
- package/projects/corecomponents/src/res/icons/returns.svg +1 -0
- package/projects/corecomponents/src/res/icons/rotate_left_solid.svg +1 -0
- package/projects/corecomponents/src/res/icons/save_disk.svg +15 -0
- package/projects/corecomponents/src/res/icons/save_skinny.svg +3 -0
- package/projects/corecomponents/src/res/icons/scale_balanced.svg +1 -0
- package/projects/corecomponents/src/res/icons/scanner.svg +1 -0
- package/projects/corecomponents/src/res/icons/search_round_open.svg +9 -0
- package/projects/corecomponents/src/res/icons/sections.svg +1 -0
- package/projects/corecomponents/src/res/icons/select_all_round.svg +5 -0
- package/projects/corecomponents/src/res/icons/services.svg +1 -0
- package/projects/corecomponents/src/res/icons/settings.svg +20 -0
- package/projects/corecomponents/src/res/icons/shopping_cart.svg +1 -0
- package/projects/corecomponents/src/res/icons/shopping_cart_nr.svg +1 -0
- package/projects/corecomponents/src/res/icons/shortcut.svg +1 -0
- package/projects/corecomponents/src/res/icons/skills.svg +1 -0
- package/projects/corecomponents/src/res/icons/slide_in.svg +1 -0
- package/projects/corecomponents/src/res/icons/slider_panel.svg +7 -0
- package/projects/corecomponents/src/res/icons/small_tiles.svg +1 -0
- package/projects/corecomponents/src/res/icons/smaller_than.svg +1 -0
- package/projects/corecomponents/src/res/icons/sort_asc.svg +1 -0
- package/projects/corecomponents/src/res/icons/sort_desc.svg +1 -0
- package/projects/corecomponents/src/res/icons/star_round_open.svg +6 -0
- package/projects/corecomponents/src/res/icons/status_active.svg +1 -0
- package/projects/corecomponents/src/res/icons/status_adoption.svg +1 -0
- package/projects/corecomponents/src/res/icons/status_fostercare.svg +1 -0
- package/projects/corecomponents/src/res/icons/status_ill.svg +10 -0
- package/projects/corecomponents/src/res/icons/status_leave.svg +1 -0
- package/projects/corecomponents/src/res/icons/status_pregnancy.svg +10 -0
- package/projects/corecomponents/src/res/icons/stock.svg +1 -0
- package/projects/corecomponents/src/res/icons/stock_management.svg +25 -0
- package/projects/corecomponents/src/res/icons/storage.svg +1 -0
- package/projects/corecomponents/src/res/icons/supervisor.svg +1 -0
- package/projects/corecomponents/src/res/icons/supplier.svg +18 -0
- package/projects/corecomponents/src/res/icons/surgery.svg +35 -0
- package/projects/corecomponents/src/res/icons/tablechart.svg +15 -0
- package/projects/corecomponents/src/res/icons/tag.svg +1 -0
- package/projects/corecomponents/src/res/icons/talk_too_much.svg +7 -0
- package/projects/corecomponents/src/res/icons/target.svg +1 -0
- package/projects/corecomponents/src/res/icons/task.svg +1 -0
- package/projects/corecomponents/src/res/icons/thick_lines.svg +1 -0
- package/projects/corecomponents/src/res/icons/thin_lines.svg +1 -0
- package/projects/corecomponents/src/res/icons/three_sixty_view.svg +1 -0
- package/projects/corecomponents/src/res/icons/thumb_bronze.svg +29 -0
- package/projects/corecomponents/src/res/icons/thumb_gold.svg +29 -0
- package/projects/corecomponents/src/res/icons/thumb_silver.svg +29 -0
- package/projects/corecomponents/src/res/icons/timeline.svg +1 -0
- package/projects/corecomponents/src/res/icons/transaction_detail.svg +19 -0
- package/projects/corecomponents/src/res/icons/transactions.svg +12 -0
- package/projects/corecomponents/src/res/icons/trash_can_solid.svg +1 -0
- package/projects/corecomponents/src/res/icons/triangle_down.svg +1 -0
- package/projects/corecomponents/src/res/icons/triangle_large.svg +5 -0
- package/projects/corecomponents/src/res/icons/triangle_left.svg +1 -0
- package/projects/corecomponents/src/res/icons/triangle_right.svg +1 -0
- package/projects/corecomponents/src/res/icons/triangle_up.svg +1 -0
- package/projects/corecomponents/src/res/icons/truck.svg +1 -0
- package/projects/corecomponents/src/res/icons/truck_calendar.svg +15 -0
- package/projects/corecomponents/src/res/icons/undo_round_open.svg +1 -0
- package/projects/corecomponents/src/res/icons/user.svg +9 -0
- package/projects/corecomponents/src/res/icons/variants.svg +1 -0
- package/projects/corecomponents/src/res/icons/vbarchart.svg +6 -0
- package/projects/corecomponents/src/res/icons/view.svg +1 -0
- package/projects/corecomponents/src/res/icons/warehouse.svg +1 -0
- package/projects/corecomponents/src/res/icons/watermark.svg +10 -0
- package/projects/corecomponents/src/res/icons/website.svg +1 -0
- package/projects/corecomponents/src/res/icons/wizard.svg +18 -0
- package/projects/corecomponents/src/res/icons/wms.svg +24 -0
- package/projects/corecomponents/src/res/icons/work_in_progress.svg +10 -0
- package/projects/corecomponents/src/res/icons/work_in_progress_round_open.svg +9 -0
- package/projects/corecomponents/src/res/icons/wrench.svg +4 -0
- package/projects/corecomponents/src/res/icons/x_axis.svg +5 -0
- package/projects/corecomponents/src/res/icons/y_axis.svg +5 -0
- package/projects/corecomponents/src/test.ts +28 -0
- package/projects/corecomponents/tsconfig.lib.json +20 -0
- package/projects/corecomponents/tsconfig.lib.prod.json +16 -0
- package/projects/corecomponents/tsconfig.spec.json +17 -0
- package/scripts/export.bat +9 -0
- package/scripts/merge-icons.js +39 -0
- package/scripts/publish.bat +6 -0
- package/src/app/app.component.scss +36 -0
- package/src/app/app.component.spec.ts +31 -0
- package/src/app/app.component.ts +559 -0
- package/src/app/app.module.ts +145 -0
- package/src/app/components/button-showcase.component.ts +82 -0
- package/src/app/components/carousel-3d-showcase.component.ts +70 -0
- package/src/app/components/checkbox-showcase.component.ts +56 -0
- package/src/app/components/co-dialog-showcase.component.ts +189 -0
- package/src/app/components/co-simple-grid-test.component.ts +146 -0
- package/src/app/components/filter-item-showcase.component.ts +178 -0
- package/src/app/components/forms-showcase.component.ts +703 -0
- package/src/app/components/icon-showcase.component.ts +72 -0
- package/src/app/components/input-checkbox-showcase.component.ts +87 -0
- package/src/app/components/input-date-picker-showcase.component.ts +90 -0
- package/src/app/components/input-number-picker-showcase.component.ts +125 -0
- package/src/app/components/input-radio-button-showcase.component.ts +87 -0
- package/src/app/components/input-scanner-showcase.component.ts +35 -0
- package/src/app/components/input-text-showcase.component.ts +200 -0
- package/src/app/components/input-time-showcase.component.ts +104 -0
- package/src/app/components/number-picker-showcase.component.ts +17 -0
- package/src/app/components/simple-grid-showcase.component.ts +60 -0
- package/src/app/model/data-item.ts +9 -0
- package/src/app/model/enum/currency-code.enum.ts +7 -0
- package/src/app/model/enum/language-code.enum.ts +8 -0
- package/src/app/model/map/currencies.map.ts +6 -0
- package/src/app/service/showcase-data.service.ts +1110 -0
- package/src/assets/.gitkeep +0 -0
- package/src/environments/environment.prod.ts +3 -0
- package/src/environments/environment.ts +16 -0
- package/src/favicon.ico +0 -0
- package/src/index.html +13 -0
- package/src/main.ts +12 -0
- package/src/polyfills.ts +65 -0
- package/src/styles.scss +56 -0
- package/src/test.ts +27 -0
- package/tsconfig.app.json +15 -0
- package/tsconfig.json +37 -0
- package/tsconfig.spec.json +18 -0
- package/bundles/colijnit-corecomponents_v12.umd.js +0 -14029
- package/bundles/colijnit-corecomponents_v12.umd.js.map +0 -1
- package/colijnit-corecomponents_v12.d.ts +0 -43
- package/colijnit-corecomponents_v12.metadata.json +0 -1
- package/esm2015/colijnit-corecomponents_v12.js +0 -44
- package/esm2015/lib/components/article-tile/article-tile.component.js +0 -80
- package/esm2015/lib/components/article-tile/article-tile.module.js +0 -35
- package/esm2015/lib/components/base/base-input.component.js +0 -834
- 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/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 -342
- package/esm2015/lib/components/calendar/calendar.component.js +0 -45
- package/esm2015/lib/components/calendar/calendar.module.js +0 -28
- 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 -80
- 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 -646
- 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/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 -91
- package/esm2015/lib/components/input-date-picker/input-date-picker.module.js +0 -26
- package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.component.js +0 -134
- 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 -314
- 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 -23
- package/esm2015/lib/components/input-scanner/input-scanner.component.js +0 -69
- 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 -76
- package/esm2015/lib/components/input-search/input-search.module.js +0 -21
- package/esm2015/lib/components/input-text/input-text.component.js +0 -224
- 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/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-values/list-of-values-multiselect-popup.component.js +0 -112
- package/esm2015/lib/components/list-of-values/list-of-values-popup.component.js +0 -242
- package/esm2015/lib/components/list-of-values/list-of-values.component.js +0 -233
- package/esm2015/lib/components/list-of-values/list-of-values.module.js +0 -38
- 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 -47
- 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 -164
- 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 -111
- package/esm2015/lib/components/simple-grid/simple-grid.component.js +0 -465
- package/esm2015/lib/components/simple-grid/simple-grid.module.js +0 -41
- 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 -77
- 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 -61
- 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-image-display-kind.enum.js +0 -7
- 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 -300
- 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 -43
- 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/object-right-type.enum.js +0 -7
- 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/enum/table-name.enum.js +0 -81
- 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/co-document-right.bo.js +0 -3
- package/esm2015/lib/core/model/co-document.bo.js +0 -121
- package/esm2015/lib/core/model/core-components-icon-svg.js +0 -299
- 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 -158
- 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/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 -23
- package/esm2015/lib/service/overlay.service.js +0 -73
- package/esm2015/lib/translation/core-components-translation.module.js +0 -29
- 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 -130
- package/fesm2015/colijnit-corecomponents_v12.js +0 -13366
- 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 -182
- 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/button/button.component.d.ts +0 -29
- package/lib/components/button/button.module.d.ts +0 -2
- package/lib/components/calendar/calendar-template.component.d.ts +0 -60
- 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 -18
- 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 -80
- 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/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 -12
- 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 -20
- 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 -73
- 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 -7
- package/lib/components/input-scanner/input-scanner.component.d.ts +0 -23
- 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 -18
- package/lib/components/input-search/input-search.module.d.ts +0 -2
- package/lib/components/input-text/input-text.component.d.ts +0 -62
- 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/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-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 -47
- package/lib/components/list-of-values/list-of-values.component.d.ts +0 -37
- 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 -52
- 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 -42
- package/lib/components/simple-grid/simple-grid.component.d.ts +0 -64
- 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 -18
- 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-image-display-kind.enum.d.ts +0 -5
- 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 -298
- 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 -15
- 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/object-right-type.enum.d.ts +0 -5
- 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/enum/table-name.enum.d.ts +0 -79
- 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/co-document-right.bo.d.ts +0 -6
- package/lib/core/model/co-document.bo.d.ts +0 -61
- 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 -10
- 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/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 -4
- 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 -126
- /package/{lib → projects/corecomponents/src/lib}/components/article-tile/article-tile.component.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/base/commit-buttons/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/base/commit-buttons/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/base/commit-buttons/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/base/commit-buttons/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/button/style/_co-ripple.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/button/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/button/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/button/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/button/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/calendar/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/calendar/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/calendar/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/calendar/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/card/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/card/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/card/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/card/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/carousel/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/carousel/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/carousel/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/carousel/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/carousel-3d/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/carousel-3d/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/carousel-3d/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/carousel-3d/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/checkmark-overlay/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/checkmark-overlay/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/checkmark-overlay/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/checkmark-overlay/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/co-dialog/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/co-dialog/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/co-dialog/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/co-dialog/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/co-dialog-wizard/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/co-dialog-wizard/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/co-dialog-wizard/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/co-dialog-wizard/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/collapsible/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/collapsible/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/collapsible/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/collapsible/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/color-picker/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/color-picker/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/color-picker/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/color-picker/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/core-dialog/confirmation-dialog/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/core-dialog/confirmation-dialog/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/core-dialog/confirmation-dialog/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/core-dialog/confirmation-dialog/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/core-dialog/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/core-dialog/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/core-dialog/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/core-dialog/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/double-calendar/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/double-calendar/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/double-calendar/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/double-calendar/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/filter-item/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/filter-item/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/filter-item/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/filter-item/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/grid-toolbar/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/grid-toolbar/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/grid-toolbar/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/grid-toolbar/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/grid-toolbar-button/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/grid-toolbar-button/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/grid-toolbar-button/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/grid-toolbar-button/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/icon/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/icon/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/icon/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/icon/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/icon-collapse-handle/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/icon-collapse-handle/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/icon-collapse-handle/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/icon-collapse-handle/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/image/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/image/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/image/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/image/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-checkbox/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-checkbox/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-checkbox/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-checkbox/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-date-picker/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-date-picker/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-date-picker/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-date-picker/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-date-range-picker/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-date-range-picker/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-date-range-picker/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-date-range-picker/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-number-picker/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-number-picker/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-number-picker/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-number-picker/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-radio-button/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-radio-button/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-radio-button/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-radio-button/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-scanner/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-scanner/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-scanner/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-scanner/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-search/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-search/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-search/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-search/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-text/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-text/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-text/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-text/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-textarea/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-textarea/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-textarea/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/input-textarea/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/level-indicator/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/level-indicator/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/level-indicator/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/level-indicator/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/list-of-values/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/list-of-values/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/list-of-values/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/list-of-values/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/loader/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/loader/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/loader/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/loader/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/pagination/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/pagination/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/pagination/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/pagination/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/pagination-bar/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/pagination-bar/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/pagination-bar/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/pagination-bar/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/popup/popup-buttons.component.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/popup/popup-window-shell.component.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/responsive-text/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/responsive-text/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/responsive-text/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/responsive-text/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/simple-grid/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/simple-grid/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/simple-grid/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/simple-grid/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tile/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tile/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tile/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tile/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tile-select/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tile-select/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tile-select/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tile-select/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tooltip/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tooltip/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tooltip/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/tooltip/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/validation-error/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/validation-error/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/validation-error/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/validation-error/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/view-mode-buttons/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/view-mode-buttons/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/view-mode-buttons/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/components/view-mode-buttons/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/modules/pagination/style/_layout.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/modules/pagination/style/_material-definition.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/modules/pagination/style/_theme.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/modules/pagination/style/material.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/_input.mixins.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/_mixin.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/_variables.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/corecomponents-globals.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/_core.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/_material2-scss-barrel.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/ripple/_co-ripple.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/style/_elevation.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/style/_list-common.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/style/_variables.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/theming/_palette.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/theming/_theming.scss +0 -0
- /package/{lib → projects/corecomponents/src/lib}/style/material2/typography/_typography.scss +0 -0
|
@@ -1,834 +0,0 @@
|
|
|
1
|
-
import { __awaiter, __decorate } from "tslib";
|
|
2
|
-
import { ChangeDetectorRef, ComponentFactoryResolver, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Injectable, Input, Optional, Output, ViewChild, ViewContainerRef } from "@angular/core";
|
|
3
|
-
import { NgModel } from "@angular/forms";
|
|
4
|
-
import { isNill } from "../../core/function/is-nill.function";
|
|
5
|
-
import { notNill } from "../../core/function/not-nill.function";
|
|
6
|
-
import { InputBoolean, InputBooleanDecorator } from "../../core/decorator/input-boolean.decorator";
|
|
7
|
-
import { requiredValidator } from "../../core/validator/required.validator";
|
|
8
|
-
import { precisionScaleValidator } from "../../core/validator/precision-scale.validator";
|
|
9
|
-
import { maxStringLengthValidator } from "../../core/validator/max-string-length.validator";
|
|
10
|
-
import { StringUtils } from "../../core/utils/string-utils";
|
|
11
|
-
import { FormInputUserModelChangeListenerService } from "../../core/service/form-input-user-change-listener.service";
|
|
12
|
-
import { NumberUtils } from "../../core/utils/number-utils";
|
|
13
|
-
import { NgZoneWrapperService } from "../../core/service/ng-zone-wrapper.service";
|
|
14
|
-
import { CoreComponentsIcon } from "../../core/enum/core-components-icon.enum";
|
|
15
|
-
import { ValidationErrorComponent } from "../validation-error/validation-error.component";
|
|
16
|
-
import { OverlayService } from '../../service/overlay.service';
|
|
17
|
-
import { CommitButtonsComponent } from './commit-buttons/commit-buttons.component';
|
|
18
|
-
/**
|
|
19
|
-
* Abstract base class for all concrete form input components that contain a native <input> element. Provides common data and functionality, such as
|
|
20
|
-
* adding self as a control to the parent form.
|
|
21
|
-
*/
|
|
22
|
-
export class BaseInputComponent {
|
|
23
|
-
constructor(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef) {
|
|
24
|
-
this.changeDetector = changeDetector;
|
|
25
|
-
this.componentFactoryResolver = componentFactoryResolver;
|
|
26
|
-
this.overlayService = overlayService;
|
|
27
|
-
this.formUserChangeListener = formUserChangeListener;
|
|
28
|
-
this.ngZoneWrapper = ngZoneWrapper;
|
|
29
|
-
this.elementRef = elementRef;
|
|
30
|
-
this.icons = CoreComponentsIcon;
|
|
31
|
-
this.showSaveCancel = false;
|
|
32
|
-
this.noValidation = false;
|
|
33
|
-
this.forceRequired = false; // a force outside of [cfgName]'s influence
|
|
34
|
-
// Goal: ability to emulate the red background of input fields (form-submitted invalid state)
|
|
35
|
-
this.redErrorBackground = false;
|
|
36
|
-
this.commitOnBlur = true;
|
|
37
|
-
// @Output()
|
|
38
|
-
// public commit: EventEmitter<any> = new EventEmitter<any>();
|
|
39
|
-
this.nativeBlur = new EventEmitter();
|
|
40
|
-
this.blur = new EventEmitter();
|
|
41
|
-
// emits when the enter button on keyboard was pressed while this form input had focussed
|
|
42
|
-
this.enter = new EventEmitter();
|
|
43
|
-
this.focus = new EventEmitter();
|
|
44
|
-
this.keyDown = new EventEmitter();
|
|
45
|
-
this.keyUp = new EventEmitter();
|
|
46
|
-
this.modelChange = new EventEmitter();
|
|
47
|
-
this.userModelChange = new EventEmitter();
|
|
48
|
-
this.hiddenChange = new EventEmitter();
|
|
49
|
-
this.focused = false;
|
|
50
|
-
this.formInput = true;
|
|
51
|
-
this.customWidth = false;
|
|
52
|
-
this.customHeight = false;
|
|
53
|
-
this.noTriangleGraphic = false;
|
|
54
|
-
this.keepFocussed = false;
|
|
55
|
-
this.halfWidth = false;
|
|
56
|
-
this.fullWidth = false;
|
|
57
|
-
this.excludeUserModelChange = false;
|
|
58
|
-
this.noFormGroupControl = false;
|
|
59
|
-
this.keepFocus = false;
|
|
60
|
-
this.validationError = "";
|
|
61
|
-
this._markedAsUserTouched = false;
|
|
62
|
-
this._destroyed = false;
|
|
63
|
-
this._hasOnPushCdStrategy = false;
|
|
64
|
-
this._modelDirtyForCommit = false;
|
|
65
|
-
this._initialModelSet = false;
|
|
66
|
-
this._forceReadonly = undefined;
|
|
67
|
-
this._validators = [];
|
|
68
|
-
this._asyncValidators = [];
|
|
69
|
-
this._canSaveOrCancel = false;
|
|
70
|
-
// descendents should override this
|
|
71
|
-
this.commit = (model) => __awaiter(this, void 0, void 0, function* () {
|
|
72
|
-
return Promise.resolve(true);
|
|
73
|
-
});
|
|
74
|
-
BaseInputComponent.BaseFormInputComponentIndex++;
|
|
75
|
-
this.name = BaseInputComponent.BaseFormInputComponentIndex.toString();
|
|
76
|
-
if (this.formUserChangeListener) {
|
|
77
|
-
this._clearMarkedAsUserTouchedSub = this.formUserChangeListener.clearAllMarkedAsUserTouched.subscribe(() => {
|
|
78
|
-
this._markedAsUserTouched = false;
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
get ngModel() {
|
|
83
|
-
if (this._myFormInputInstance) {
|
|
84
|
-
return this._myFormInputInstance.ngModel;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
return this._ngModel;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
set model(value) {
|
|
91
|
-
if (!this._initialModelSet) {
|
|
92
|
-
this._initialModel = this._model;
|
|
93
|
-
this._initialModelSet = true;
|
|
94
|
-
}
|
|
95
|
-
this._model = value;
|
|
96
|
-
this.canSaveOrCancel = this._model !== this._initialModel;
|
|
97
|
-
this._modelDirtyForCommit = this._model !== this._initialModel;
|
|
98
|
-
this._clearErrorComponent();
|
|
99
|
-
this.modelSet();
|
|
100
|
-
}
|
|
101
|
-
get model() {
|
|
102
|
-
return this._model;
|
|
103
|
-
}
|
|
104
|
-
set disabled(disabled) {
|
|
105
|
-
if (disabled === this._disabled) {
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
this._disabled = InputBooleanDecorator.InputValueToBoolean(disabled);
|
|
109
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
110
|
-
}
|
|
111
|
-
get disabled() {
|
|
112
|
-
return this._disabled;
|
|
113
|
-
}
|
|
114
|
-
set maxLength(maxLength) {
|
|
115
|
-
this.setMaxLength(maxLength);
|
|
116
|
-
}
|
|
117
|
-
get maxLength() {
|
|
118
|
-
return notNill(this.forcedMaxLength) ? this.forcedMaxLength : this._maxLength;
|
|
119
|
-
}
|
|
120
|
-
set readonly(readonly) {
|
|
121
|
-
if (this._forceReadonly !== undefined || readonly === this._readonly) {
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
this._readonly = InputBooleanDecorator.InputValueToBoolean(readonly);
|
|
125
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
126
|
-
if (this._hasOnPushCdStrategy) {
|
|
127
|
-
this.detectChanges();
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
get readonly() {
|
|
131
|
-
return this.forceReadonly || this._readonly;
|
|
132
|
-
}
|
|
133
|
-
set forceReadonly(forceReadonly) {
|
|
134
|
-
if (forceReadonly === this._forceReadonly) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
this._forceReadonly = InputBooleanDecorator.InputValueToBoolean(forceReadonly);
|
|
138
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
139
|
-
}
|
|
140
|
-
get forceReadonly() {
|
|
141
|
-
return this._forceReadonly;
|
|
142
|
-
}
|
|
143
|
-
set required(required) {
|
|
144
|
-
if (required === this._required) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
this._required = InputBooleanDecorator.InputValueToBoolean(required);
|
|
148
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
149
|
-
}
|
|
150
|
-
get required() {
|
|
151
|
-
return this.forceRequired || this._required;
|
|
152
|
-
}
|
|
153
|
-
set validators(validators) {
|
|
154
|
-
if (validators === this._validators) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
this._validators = validators;
|
|
158
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
159
|
-
}
|
|
160
|
-
get validators() {
|
|
161
|
-
return this._validators;
|
|
162
|
-
}
|
|
163
|
-
set asyncValidators(validators) {
|
|
164
|
-
this._asyncValidators = validators;
|
|
165
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
166
|
-
}
|
|
167
|
-
get asyncValidators() {
|
|
168
|
-
return this._asyncValidators;
|
|
169
|
-
}
|
|
170
|
-
set hidden(hidden) {
|
|
171
|
-
if (hidden === this._hidden) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
this._hidden = hidden;
|
|
175
|
-
this._addOrRemoveSelfFromForm();
|
|
176
|
-
if (!this._destroyed) {
|
|
177
|
-
if (hidden) {
|
|
178
|
-
this.changeDetector.detach();
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
this.changeDetector.reattach();
|
|
182
|
-
if (this._hasOnPushCdStrategy) {
|
|
183
|
-
this.detectChangesAfterAngular();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
this.hiddenChange.emit(hidden);
|
|
188
|
-
}
|
|
189
|
-
get hidden() {
|
|
190
|
-
return this._hidden;
|
|
191
|
-
}
|
|
192
|
-
// no custom setter logic as with the other 'screen config props', because concrete form input components handle this themselves.
|
|
193
|
-
set decimals(value) {
|
|
194
|
-
this._decimals = value;
|
|
195
|
-
}
|
|
196
|
-
get decimals() {
|
|
197
|
-
return this._decimals;
|
|
198
|
-
}
|
|
199
|
-
set myFormInputInstance(value) {
|
|
200
|
-
if (value === this._myFormInputInstance) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
this._myFormInputInstance = value;
|
|
204
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
205
|
-
}
|
|
206
|
-
get myFormInputInstance() {
|
|
207
|
-
return this._myFormInputInstance;
|
|
208
|
-
}
|
|
209
|
-
get formSubmitted() {
|
|
210
|
-
return this.formComponent && this.formComponent.submitted;
|
|
211
|
-
}
|
|
212
|
-
get hasNoLabel() {
|
|
213
|
-
return isNill(this.label);
|
|
214
|
-
}
|
|
215
|
-
get hasValue() {
|
|
216
|
-
return (!Array.isArray(this.model) && !!this.model || StringUtils.IsStringWithLength(this.model) || NumberUtils.IsNumber(this.model)) ||
|
|
217
|
-
(Array.isArray(this.model) && this.model.length > 0);
|
|
218
|
-
}
|
|
219
|
-
get invalid() {
|
|
220
|
-
return this._checkState() && !this.control.valid;
|
|
221
|
-
}
|
|
222
|
-
get isDisabled() {
|
|
223
|
-
return this._disabled;
|
|
224
|
-
}
|
|
225
|
-
get isReadonly() {
|
|
226
|
-
return this.readonly;
|
|
227
|
-
}
|
|
228
|
-
get isRequired() {
|
|
229
|
-
return this.required;
|
|
230
|
-
}
|
|
231
|
-
get touchedInvalid() {
|
|
232
|
-
return this._controlExists() && this.control.touched && !this.control.valid;
|
|
233
|
-
}
|
|
234
|
-
get valid() {
|
|
235
|
-
return this._checkState() && this.control.valid;
|
|
236
|
-
}
|
|
237
|
-
get validationDisabled() {
|
|
238
|
-
return this.readonly || this.disabled || this.noValidation;
|
|
239
|
-
}
|
|
240
|
-
onClick(event) {
|
|
241
|
-
if (this.canChange && !this.noClickFocus) {
|
|
242
|
-
this.requestFocus();
|
|
243
|
-
if (!this.excludeUserModelChange) {
|
|
244
|
-
this.markAsUserTouched();
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
onFocusIn() {
|
|
249
|
-
if (!this.excludeUserModelChange) {
|
|
250
|
-
this.markAsUserTouched();
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
// @HostListener("document:scroll")
|
|
254
|
-
// public handleDocumentScroll(): void {
|
|
255
|
-
// this._positionValidationError();
|
|
256
|
-
// }
|
|
257
|
-
// @HostListener("window:resize")
|
|
258
|
-
// public handleWindowResize(): void {
|
|
259
|
-
// this._positionValidationError();
|
|
260
|
-
// }
|
|
261
|
-
handleKeyDown(event) {
|
|
262
|
-
this.keyDown.next(event);
|
|
263
|
-
if (this.showSaveCancel && this.canSaveOrCancel) {
|
|
264
|
-
this._handleKeyDown(event);
|
|
265
|
-
}
|
|
266
|
-
// this._positionValidationError();
|
|
267
|
-
}
|
|
268
|
-
get canChange() {
|
|
269
|
-
return !this.readonly && !this.disabled;
|
|
270
|
-
}
|
|
271
|
-
get control() {
|
|
272
|
-
return this._myFormInputInstance ? this._myFormInputInstance.control : this.ngModel && this.ngModel.control;
|
|
273
|
-
}
|
|
274
|
-
get formInputInstance() {
|
|
275
|
-
return this._myFormInputInstance || this;
|
|
276
|
-
}
|
|
277
|
-
get isDestroyed() {
|
|
278
|
-
return this._destroyed;
|
|
279
|
-
}
|
|
280
|
-
set canSaveOrCancel(value) {
|
|
281
|
-
this._canSaveOrCancel = value;
|
|
282
|
-
if (this.showSaveCancel && this.focused && this._canSaveOrCancel) {
|
|
283
|
-
if (!this._commitButtonsComponentRef) {
|
|
284
|
-
this._commitButtonsComponentRef = this.overlayService.createComponent(CommitButtonsComponent, {
|
|
285
|
-
parentForOverlay: this.elementRef,
|
|
286
|
-
committing: false,
|
|
287
|
-
commitFinished: false
|
|
288
|
-
}, {
|
|
289
|
-
commitClick: (event) => this._handleCommit(event),
|
|
290
|
-
cancelClick: (event) => this.cancelClick(event)
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
this.overlayService.removeComponent(this._commitButtonsComponentRef);
|
|
296
|
-
this._commitButtonsComponentRef = undefined;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
get canSaveOrCancel() {
|
|
300
|
-
return this._canSaveOrCancel;
|
|
301
|
-
}
|
|
302
|
-
ngOnInit() {
|
|
303
|
-
this._modelChangeSub = this.modelChange.subscribe((val) => {
|
|
304
|
-
this.model = val;
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
ngAfterViewInit() {
|
|
308
|
-
this._prepareInput();
|
|
309
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
310
|
-
this._addOrRemoveSelfFromForm();
|
|
311
|
-
if (this.formComponent) {
|
|
312
|
-
this.readonly = this.readonly || this.formComponent.readonly;
|
|
313
|
-
this._formReadonlyChangeSub = this.formComponent.readonlyChange.subscribe((isFormReadonly) => {
|
|
314
|
-
this.readonly = isFormReadonly;
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
if (this.initFocus) {
|
|
318
|
-
setTimeout(this.requestFocus.bind(this));
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
ngOnDestroy() {
|
|
322
|
-
this._removeSelfFromForm();
|
|
323
|
-
if (this.input) {
|
|
324
|
-
this.input.removeEventListener('blur', (event) => this.doBlur(event));
|
|
325
|
-
this.input.removeEventListener('focus', (event) => this.doFocus(event));
|
|
326
|
-
}
|
|
327
|
-
this._destroyed = true;
|
|
328
|
-
this._clearErrorComponent();
|
|
329
|
-
// if (this.tooltipManager && this.elementRef) {
|
|
330
|
-
// this.tooltipManager.destroyErrorTooltipOfElement(this.elementRef.nativeElement);
|
|
331
|
-
// }
|
|
332
|
-
if (this._modelChangeSub) {
|
|
333
|
-
this._modelChangeSub.unsubscribe();
|
|
334
|
-
}
|
|
335
|
-
if (this._speechSub) {
|
|
336
|
-
this._speechSub.unsubscribe();
|
|
337
|
-
}
|
|
338
|
-
if (this._formAnySubmitSub) {
|
|
339
|
-
this._formAnySubmitSub.unsubscribe();
|
|
340
|
-
}
|
|
341
|
-
if (this._formReadonlyChangeSub) {
|
|
342
|
-
this._formReadonlyChangeSub.unsubscribe();
|
|
343
|
-
}
|
|
344
|
-
if (this._clearMarkedAsUserTouchedSub) {
|
|
345
|
-
this._clearMarkedAsUserTouchedSub.unsubscribe();
|
|
346
|
-
}
|
|
347
|
-
// this._removeSelfFromForm();
|
|
348
|
-
this.elementRef = undefined;
|
|
349
|
-
this.changeDetector = undefined;
|
|
350
|
-
this.input = undefined;
|
|
351
|
-
}
|
|
352
|
-
cancelClick(event) {
|
|
353
|
-
this.keepFocus = true;
|
|
354
|
-
if (this._initialModelSet) {
|
|
355
|
-
this.model = this._initialModel;
|
|
356
|
-
}
|
|
357
|
-
this.keepFocus = false;
|
|
358
|
-
}
|
|
359
|
-
showValidationError(error) {
|
|
360
|
-
this.validationError = error;
|
|
361
|
-
this._validationComponentRef = this.overlayService.createComponent(ValidationErrorComponent, { parentForOverlay: this.elementRef, error: error });
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* Emits a modelChange event with given value, indicating that the model of this form input
|
|
365
|
-
* has changed and its new value is given value. Also emits userModelChange if markedAsUserTouched.
|
|
366
|
-
*/
|
|
367
|
-
setModel(value) {
|
|
368
|
-
this.model = value;
|
|
369
|
-
this.modelChange.emit(value);
|
|
370
|
-
if (this.control) {
|
|
371
|
-
this.control.markAsDirty({ onlySelf: true });
|
|
372
|
-
}
|
|
373
|
-
if (this.formComponent) {
|
|
374
|
-
this.formComponent.formGroup.markAsDirty({ onlySelf: true });
|
|
375
|
-
}
|
|
376
|
-
if (this._markedAsUserTouched && this.formUserChangeListener) {
|
|
377
|
-
this.formUserChangeListener.userModelChange.next(value);
|
|
378
|
-
this.userModelChange.next(value);
|
|
379
|
-
}
|
|
380
|
-
if (this._hasOnPushCdStrategy) {
|
|
381
|
-
this.detectChanges();
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
requestFocus() {
|
|
385
|
-
if (this.canChange && this.input) {
|
|
386
|
-
this.input.focus();
|
|
387
|
-
this.focused = true;
|
|
388
|
-
if (this._hasOnPushCdStrategy) {
|
|
389
|
-
this.markForCheck();
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
doFocus(event) {
|
|
394
|
-
if (this.disabled) {
|
|
395
|
-
return;
|
|
396
|
-
}
|
|
397
|
-
this._initialModelSet = false;
|
|
398
|
-
this.focused = true;
|
|
399
|
-
this.canSaveOrCancel = false;
|
|
400
|
-
if (this._hasOnPushCdStrategy) {
|
|
401
|
-
this.markForCheck();
|
|
402
|
-
}
|
|
403
|
-
this.focus.next();
|
|
404
|
-
}
|
|
405
|
-
doBlur(event, handleCommit = true) {
|
|
406
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
407
|
-
if (this.showSaveCancel && handleCommit && this._modelDirtyForCommit) {
|
|
408
|
-
yield this._handleCommit(event, false);
|
|
409
|
-
}
|
|
410
|
-
setTimeout(() => {
|
|
411
|
-
if (this.keepFocus || this.keepFocussed) {
|
|
412
|
-
if (event) {
|
|
413
|
-
event.preventDefault;
|
|
414
|
-
}
|
|
415
|
-
return false;
|
|
416
|
-
}
|
|
417
|
-
this.focused = false;
|
|
418
|
-
if (this._hasOnPushCdStrategy) {
|
|
419
|
-
this.markForCheck();
|
|
420
|
-
}
|
|
421
|
-
if (this.input) {
|
|
422
|
-
this.input.blur();
|
|
423
|
-
}
|
|
424
|
-
this.blur.next();
|
|
425
|
-
}, 200);
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
detectChanges() {
|
|
429
|
-
if (!this._destroyed) {
|
|
430
|
-
this.changeDetector.detectChanges();
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
markForCheck() {
|
|
434
|
-
if (!this._destroyed) {
|
|
435
|
-
this.changeDetector.markForCheck();
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
detectChangesAfterAngular() {
|
|
439
|
-
if (!!this.ngZoneWrapper) {
|
|
440
|
-
this.ngZoneWrapper.setTimeoutOutsideAngular(() => {
|
|
441
|
-
if (!this._destroyed) {
|
|
442
|
-
if (this._hasOnPushCdStrategy) {
|
|
443
|
-
this.changeDetector.markForCheck();
|
|
444
|
-
}
|
|
445
|
-
this.changeDetector.detectChanges();
|
|
446
|
-
}
|
|
447
|
-
});
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
/**
|
|
451
|
-
* Links the given formComp.submit event to the firing of detectChanges() of given change detector. This is a 'utility-like' method,
|
|
452
|
-
* but we manage the actual subscription (with UNSUBSCRIBE()!) on this base class.
|
|
453
|
-
* @param formComp The form whose submit we want to link with the call of .detectChanges() on given change detector ref.
|
|
454
|
-
* @param changeDetectorRef This should be given as param. I choose not to make this part of our (BaseFormInputComponent) constructor,
|
|
455
|
-
* because we already have 21 extenders.
|
|
456
|
-
*/
|
|
457
|
-
// public linkFormAnySubmitWithDetectChanges(formComp: FormComponent, changeDetectorRef: ChangeDetectorRef): void {
|
|
458
|
-
// if (formComp && changeDetectorRef) {
|
|
459
|
-
// this._formAnySubmitSub = formComp.anySubmit.subscribe((() => {
|
|
460
|
-
// if (!this._destroyed) {
|
|
461
|
-
// changeDetectorRef.detectChanges();
|
|
462
|
-
// }
|
|
463
|
-
// }));
|
|
464
|
-
// }
|
|
465
|
-
// }
|
|
466
|
-
markAsUserTouched() {
|
|
467
|
-
this._markedAsUserTouched = true;
|
|
468
|
-
this.redErrorBackground = false; // not sure if this is the right place to do that
|
|
469
|
-
}
|
|
470
|
-
clearMarkedAsUserTouched() {
|
|
471
|
-
this._markedAsUserTouched = false;
|
|
472
|
-
}
|
|
473
|
-
modelSet() {
|
|
474
|
-
}
|
|
475
|
-
//used for descendents, because descendents can't set super properties, see InputNumberComponent
|
|
476
|
-
setMaxLength(maxLength) {
|
|
477
|
-
if (notNill(this.forcedMaxLength) || maxLength === this._maxLength) {
|
|
478
|
-
return;
|
|
479
|
-
}
|
|
480
|
-
if (!isNaN(maxLength)) {
|
|
481
|
-
this._maxLength = maxLength;
|
|
482
|
-
this._updateControlValidatorsAndOwnFlags();
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
_markAsOnPush() {
|
|
486
|
-
this._hasOnPushCdStrategy = true;
|
|
487
|
-
}
|
|
488
|
-
_checkState() {
|
|
489
|
-
if (this.ngModel) {
|
|
490
|
-
return this.formSubmitted || (this._controlExists() && this.control.touched);
|
|
491
|
-
}
|
|
492
|
-
else {
|
|
493
|
-
return false;
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
// Place validators onto our Angular's FormControl.
|
|
497
|
-
_updateControlValidatorsAndOwnFlags() {
|
|
498
|
-
const er = this.myFormInputInstance ? this.myFormInputInstance.elementRef : this.elementRef;
|
|
499
|
-
// if (this.tooltipManager && er) {
|
|
500
|
-
// this.tooltipManager.destroyErrorTooltipOfElement(er.nativeElement);
|
|
501
|
-
// }
|
|
502
|
-
this._setNativeRequired(this.required);
|
|
503
|
-
this._setNativeMaxLength(this.maxLength);
|
|
504
|
-
this._setNativeDisabled(this.disabled);
|
|
505
|
-
this._setNativeReadOnly(this.readonly || this.forceReadonly);
|
|
506
|
-
this.redErrorBackground = false;
|
|
507
|
-
if (this._controlExists()) {
|
|
508
|
-
const validators = [];
|
|
509
|
-
// add required
|
|
510
|
-
if (this.required) {
|
|
511
|
-
validators.push(requiredValidator);
|
|
512
|
-
}
|
|
513
|
-
// add maxlength
|
|
514
|
-
if (notNill(this._maxLength)) {
|
|
515
|
-
if (this.decimals) {
|
|
516
|
-
validators.push(precisionScaleValidator(this._maxLength, this.decimals));
|
|
517
|
-
}
|
|
518
|
-
else {
|
|
519
|
-
validators.push(maxStringLengthValidator(this._maxLength));
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
// add @Input()-ed validators
|
|
523
|
-
validators.push(...this._validators);
|
|
524
|
-
if (this._validators) {
|
|
525
|
-
this._validators.forEach(validator => {
|
|
526
|
-
if (validator === requiredValidator) {
|
|
527
|
-
this._required = true;
|
|
528
|
-
this._setNativeRequired(true);
|
|
529
|
-
}
|
|
530
|
-
});
|
|
531
|
-
}
|
|
532
|
-
this.control.setValidators(validators);
|
|
533
|
-
this.control.setAsyncValidators(this._asyncValidators);
|
|
534
|
-
this.control.updateValueAndValidity();
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
_handleCommit(event, doBlur = true) {
|
|
538
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
539
|
-
if (!this.showSaveCancel || (!this._modelDirtyForCommit)) {
|
|
540
|
-
return true;
|
|
541
|
-
}
|
|
542
|
-
this.keepFocus = true;
|
|
543
|
-
if (this._commitButtonsComponentRef) {
|
|
544
|
-
this._commitButtonsComponentRef.instance.commitFinished = false;
|
|
545
|
-
this._commitButtonsComponentRef.instance.committing = true;
|
|
546
|
-
}
|
|
547
|
-
this._modelDirtyForCommit = false;
|
|
548
|
-
const success = yield this.commit(this.model);
|
|
549
|
-
this.keepFocus = false;
|
|
550
|
-
yield this._commitFinished();
|
|
551
|
-
if (success && doBlur) {
|
|
552
|
-
this.doBlur(event, false);
|
|
553
|
-
}
|
|
554
|
-
return success;
|
|
555
|
-
});
|
|
556
|
-
}
|
|
557
|
-
_commitFinished() {
|
|
558
|
-
return new Promise((resolve) => {
|
|
559
|
-
if (this._commitButtonsComponentRef) {
|
|
560
|
-
this._commitButtonsComponentRef.instance.commitFinished = true;
|
|
561
|
-
this._commitButtonsComponentRef.instance.committing = false;
|
|
562
|
-
setTimeout(() => {
|
|
563
|
-
// this._commitButtonsComponentRef.instance.commitFinished = false;
|
|
564
|
-
this.overlayService.removeComponent(this._commitButtonsComponentRef);
|
|
565
|
-
resolve();
|
|
566
|
-
}, 800);
|
|
567
|
-
}
|
|
568
|
-
else {
|
|
569
|
-
resolve();
|
|
570
|
-
}
|
|
571
|
-
});
|
|
572
|
-
}
|
|
573
|
-
_clearErrorComponent() {
|
|
574
|
-
this.overlayService.removeComponent(this._validationComponentRef);
|
|
575
|
-
}
|
|
576
|
-
// whether this.ngModel.control has safe access
|
|
577
|
-
_controlExists() {
|
|
578
|
-
return this.ngModel && !!this.control;
|
|
579
|
-
}
|
|
580
|
-
_controlIsValid() {
|
|
581
|
-
return this._controlExists() && this.control.valid;
|
|
582
|
-
}
|
|
583
|
-
_setNativeDisabled(disabled) {
|
|
584
|
-
if (this.input) {
|
|
585
|
-
this.input.disabled = disabled;
|
|
586
|
-
}
|
|
587
|
-
}
|
|
588
|
-
_setNativeMaxLength(maxlength) {
|
|
589
|
-
if (this.input && !isNaN(maxlength)) {
|
|
590
|
-
this.input.maxLength = maxlength;
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
_setNativeReadOnly(readonly) {
|
|
594
|
-
if (this.input) {
|
|
595
|
-
this.input.readOnly = readonly;
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
_setNativeRequired(required) {
|
|
599
|
-
if (this.input) {
|
|
600
|
-
this.input.required = required;
|
|
601
|
-
}
|
|
602
|
-
}
|
|
603
|
-
_subscribeToSpeechInput() {
|
|
604
|
-
// this._speechSub = this.speechInput.speechInput.subscribe((data) => {
|
|
605
|
-
// if (this.focused && this._controlExists()) {
|
|
606
|
-
// const val: string = this.control.value;
|
|
607
|
-
// this.setModel((StringUtils.IsString(val) ? val : '') + data);
|
|
608
|
-
// }
|
|
609
|
-
// });
|
|
610
|
-
}
|
|
611
|
-
_addOrRemoveSelfFromForm() {
|
|
612
|
-
if (this.hidden) {
|
|
613
|
-
this._removeSelfFromForm();
|
|
614
|
-
}
|
|
615
|
-
else {
|
|
616
|
-
this._addSelfToForm();
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
_updateSelfInForm() {
|
|
620
|
-
if (this.formComponent) {
|
|
621
|
-
this.formComponent.updateFormInput(this);
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
_removeSelfFromForm() {
|
|
625
|
-
if (this.formComponent && this.ngModel) {
|
|
626
|
-
this.formComponent.removeFormInput(this);
|
|
627
|
-
}
|
|
628
|
-
}
|
|
629
|
-
_addSelfToForm() {
|
|
630
|
-
if (this.formComponent && this.ngModel && !this.noFormGroupControl) {
|
|
631
|
-
this.formComponent.removeFormInput(this); // preventing there are two controls in formgroup when myFormInputInstance is (being) set
|
|
632
|
-
this.formComponent.addFormInput(this.myFormInputInstance ? this.myFormInputInstance : this);
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
_prepareInput() {
|
|
636
|
-
if (this.elementRef && this.elementRef.nativeElement) {
|
|
637
|
-
//try to find input element
|
|
638
|
-
this._findInputNode(this.elementRef.nativeElement.children);
|
|
639
|
-
if (this.input) {
|
|
640
|
-
this.input.addEventListener('blur', (event) => this.doBlur(event));
|
|
641
|
-
this.input.addEventListener('focus', (event) => this.doFocus(event));
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
_findInputNode(nodes) {
|
|
646
|
-
for (let i = 0; i < nodes.length; i++) {
|
|
647
|
-
const node = nodes[i];
|
|
648
|
-
if (node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement) {
|
|
649
|
-
this.input = node;
|
|
650
|
-
break;
|
|
651
|
-
}
|
|
652
|
-
else if (node.children.length > 0) {
|
|
653
|
-
this._findInputNode(node.children);
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
}
|
|
657
|
-
_positionValidationError() {
|
|
658
|
-
if (this.elementRef && this.elementRef.nativeElement && this._errorValidationComponent) {
|
|
659
|
-
const clientRect = this.elementRef.nativeElement.getBoundingClientRect();
|
|
660
|
-
this._errorValidationComponent.instance.top = clientRect.bottom;
|
|
661
|
-
this._errorValidationComponent.instance.left = clientRect.left;
|
|
662
|
-
}
|
|
663
|
-
}
|
|
664
|
-
_handleKeyDown(event) {
|
|
665
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
666
|
-
switch (event.code) {
|
|
667
|
-
case 'Enter':
|
|
668
|
-
case 'NumpadEnter':
|
|
669
|
-
if (!event.shiftKey) {
|
|
670
|
-
event.preventDefault();
|
|
671
|
-
yield this._handleCommit();
|
|
672
|
-
return false;
|
|
673
|
-
}
|
|
674
|
-
return true;
|
|
675
|
-
case 'Tab':
|
|
676
|
-
const nextSiblingToFocus = event.shiftKey ? event.currentTarget.previousSibling : event.currentTarget.nextSibling;
|
|
677
|
-
event.preventDefault();
|
|
678
|
-
const success = yield this._handleCommit();
|
|
679
|
-
if (success) {
|
|
680
|
-
if (nextSiblingToFocus) {
|
|
681
|
-
try {
|
|
682
|
-
this._setFocusOnNextPossibleInput(nextSiblingToFocus, event.shiftKey);
|
|
683
|
-
}
|
|
684
|
-
catch (e) {
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
}
|
|
688
|
-
return false;
|
|
689
|
-
case 'Escape':
|
|
690
|
-
this.cancelClick();
|
|
691
|
-
event.preventDefault();
|
|
692
|
-
return false;
|
|
693
|
-
}
|
|
694
|
-
});
|
|
695
|
-
}
|
|
696
|
-
_createNewFocusEvent(element) {
|
|
697
|
-
let eventType = "onfocusin" in element ? "focusin" : "focus", bubbles = "onfocusin" in element, focusEvent;
|
|
698
|
-
if ("createEvent" in document) {
|
|
699
|
-
focusEvent = document.createEvent("Event");
|
|
700
|
-
focusEvent.initEvent(eventType, bubbles, true);
|
|
701
|
-
}
|
|
702
|
-
else if ("Event" in window) {
|
|
703
|
-
focusEvent = new Event(eventType, { bubbles: bubbles, cancelable: true });
|
|
704
|
-
}
|
|
705
|
-
return focusEvent;
|
|
706
|
-
}
|
|
707
|
-
_setFocusOnNextPossibleInput(element, previous) {
|
|
708
|
-
let elementColl = element.getElementsByTagName('input');
|
|
709
|
-
if (!elementColl || elementColl.length < 1) {
|
|
710
|
-
elementColl = element.getElementsByTagName('textarea');
|
|
711
|
-
}
|
|
712
|
-
if (elementColl && elementColl.length > 0) {
|
|
713
|
-
const inputElement = elementColl[0];
|
|
714
|
-
if (inputElement.disabled || inputElement.readOnly) {
|
|
715
|
-
this._setFocusOnNextPossibleInput(previous ? element.previousSibling : element.nextSibling, previous);
|
|
716
|
-
}
|
|
717
|
-
else {
|
|
718
|
-
const focusEvent = this._createNewFocusEvent(element);
|
|
719
|
-
inputElement.focus();
|
|
720
|
-
inputElement.dispatchEvent(focusEvent);
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
}
|
|
724
|
-
}
|
|
725
|
-
BaseInputComponent.BaseFormInputComponentIndex = 0;
|
|
726
|
-
BaseInputComponent.HiddenClass = "hidden";
|
|
727
|
-
BaseInputComponent.decorators = [
|
|
728
|
-
{ type: Directive },
|
|
729
|
-
{ type: Injectable }
|
|
730
|
-
];
|
|
731
|
-
BaseInputComponent.ctorParameters = () => [
|
|
732
|
-
{ type: ChangeDetectorRef },
|
|
733
|
-
{ type: ComponentFactoryResolver },
|
|
734
|
-
{ type: OverlayService },
|
|
735
|
-
{ type: FormInputUserModelChangeListenerService, decorators: [{ type: Optional }] },
|
|
736
|
-
{ type: NgZoneWrapperService, decorators: [{ type: Optional }] },
|
|
737
|
-
{ type: ElementRef, decorators: [{ type: Optional }] }
|
|
738
|
-
];
|
|
739
|
-
BaseInputComponent.propDecorators = {
|
|
740
|
-
validationErrorContainer: [{ type: ViewChild, args: ["validationError", { read: ViewContainerRef },] }],
|
|
741
|
-
_ngModel: [{ type: ViewChild, args: [NgModel, { static: true },] }],
|
|
742
|
-
showSaveCancel: [{ type: Input }],
|
|
743
|
-
model: [{ type: Input }],
|
|
744
|
-
label: [{ type: Input }],
|
|
745
|
-
noValidation: [{ type: Input }],
|
|
746
|
-
initFocus: [{ type: Input }],
|
|
747
|
-
noClickFocus: [{ type: Input }],
|
|
748
|
-
businessObjectId: [{ type: Input }],
|
|
749
|
-
disabled: [{ type: Input }],
|
|
750
|
-
maxLength: [{ type: Input }],
|
|
751
|
-
forcedMaxLength: [{ type: Input }],
|
|
752
|
-
readonly: [{ type: Input }],
|
|
753
|
-
forceReadonly: [{ type: Input }],
|
|
754
|
-
required: [{ type: Input }],
|
|
755
|
-
forceRequired: [{ type: Input }],
|
|
756
|
-
validators: [{ type: Input }],
|
|
757
|
-
asyncValidators: [{ type: Input }],
|
|
758
|
-
hidden: [{ type: Input }, { type: HostBinding, args: ["class." + BaseInputComponent.HiddenClass,] }],
|
|
759
|
-
decimals: [{ type: Input }],
|
|
760
|
-
icon: [{ type: Input }],
|
|
761
|
-
customCssClass: [{ type: Input }],
|
|
762
|
-
redErrorBackground: [{ type: Input }, { type: HostBinding, args: ["class.cc-red-error-background",] }],
|
|
763
|
-
myFormInputInstance: [{ type: Input }],
|
|
764
|
-
commitOnBlur: [{ type: Input }],
|
|
765
|
-
nativeBlur: [{ type: Output }],
|
|
766
|
-
blur: [{ type: Output }],
|
|
767
|
-
enter: [{ type: Output }],
|
|
768
|
-
focus: [{ type: Output }],
|
|
769
|
-
keyDown: [{ type: Output }],
|
|
770
|
-
keyUp: [{ type: Output }],
|
|
771
|
-
modelChange: [{ type: Output }],
|
|
772
|
-
userModelChange: [{ type: Output }],
|
|
773
|
-
hiddenChange: [{ type: Output }],
|
|
774
|
-
focused: [{ type: HostBinding, args: ["class.cc-input-focused",] }],
|
|
775
|
-
formInput: [{ type: HostBinding, args: ["class.form-input",] }],
|
|
776
|
-
customWidth: [{ type: Input }, { type: HostBinding, args: ["class.custom-width",] }],
|
|
777
|
-
customHeight: [{ type: Input }, { type: HostBinding, args: ['class.custom-height',] }],
|
|
778
|
-
noTriangleGraphic: [{ type: Input }],
|
|
779
|
-
keepFocussed: [{ type: Input }],
|
|
780
|
-
halfWidth: [{ type: Input }, { type: HostBinding, args: ["class.half-width",] }],
|
|
781
|
-
fullWidth: [{ type: Input }, { type: HostBinding, args: ["class.full-width-important",] }],
|
|
782
|
-
excludeUserModelChange: [{ type: Input }],
|
|
783
|
-
noFormGroupControl: [{ type: Input }],
|
|
784
|
-
formSubmitted: [{ type: HostBinding, args: ["class.form-submitted",] }],
|
|
785
|
-
hasNoLabel: [{ type: HostBinding, args: ["class.hasnolabel",] }],
|
|
786
|
-
hasValue: [{ type: HostBinding, args: ["class.hasvalue",] }],
|
|
787
|
-
invalid: [{ type: HostBinding, args: ["class.invalid",] }],
|
|
788
|
-
isDisabled: [{ type: HostBinding, args: ["class.disabled",] }],
|
|
789
|
-
isReadonly: [{ type: HostBinding, args: ["class.read-only",] }],
|
|
790
|
-
isRequired: [{ type: HostBinding, args: ["class.required",] }],
|
|
791
|
-
touchedInvalid: [{ type: HostBinding, args: ["class.cc-touched-invalid",] }],
|
|
792
|
-
valid: [{ type: HostBinding, args: ["class.valid",] }],
|
|
793
|
-
validationDisabled: [{ type: HostBinding, args: ["class.no-validation",] }],
|
|
794
|
-
onClick: [{ type: HostListener, args: ["click", ["$event"],] }],
|
|
795
|
-
onFocusIn: [{ type: HostListener, args: ["focusin",] }],
|
|
796
|
-
handleKeyDown: [{ type: HostListener, args: ["keydown", ["$event"],] }]
|
|
797
|
-
};
|
|
798
|
-
__decorate([
|
|
799
|
-
InputBoolean()
|
|
800
|
-
], BaseInputComponent.prototype, "noValidation", void 0);
|
|
801
|
-
__decorate([
|
|
802
|
-
InputBoolean()
|
|
803
|
-
], BaseInputComponent.prototype, "initFocus", void 0);
|
|
804
|
-
__decorate([
|
|
805
|
-
InputBoolean()
|
|
806
|
-
], BaseInputComponent.prototype, "noClickFocus", void 0);
|
|
807
|
-
__decorate([
|
|
808
|
-
InputBoolean()
|
|
809
|
-
], BaseInputComponent.prototype, "forceRequired", void 0);
|
|
810
|
-
__decorate([
|
|
811
|
-
InputBoolean()
|
|
812
|
-
], BaseInputComponent.prototype, "customWidth", void 0);
|
|
813
|
-
__decorate([
|
|
814
|
-
InputBoolean()
|
|
815
|
-
], BaseInputComponent.prototype, "customHeight", void 0);
|
|
816
|
-
__decorate([
|
|
817
|
-
InputBoolean()
|
|
818
|
-
], BaseInputComponent.prototype, "noTriangleGraphic", void 0);
|
|
819
|
-
__decorate([
|
|
820
|
-
InputBoolean()
|
|
821
|
-
], BaseInputComponent.prototype, "keepFocussed", void 0);
|
|
822
|
-
__decorate([
|
|
823
|
-
InputBoolean()
|
|
824
|
-
], BaseInputComponent.prototype, "halfWidth", void 0);
|
|
825
|
-
__decorate([
|
|
826
|
-
InputBoolean()
|
|
827
|
-
], BaseInputComponent.prototype, "fullWidth", void 0);
|
|
828
|
-
__decorate([
|
|
829
|
-
InputBoolean()
|
|
830
|
-
], BaseInputComponent.prototype, "excludeUserModelChange", void 0);
|
|
831
|
-
__decorate([
|
|
832
|
-
InputBoolean()
|
|
833
|
-
], BaseInputComponent.prototype, "noFormGroupControl", void 0);
|
|
834
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9iYXNlLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUVqQix3QkFBd0IsRUFFeEIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULGdCQUFnQixFQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdDLE9BQU8sRUFBYyxNQUFNLGdCQUFnQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDOUQsT0FBTyxFQUFDLFlBQVksRUFBRSxxQkFBcUIsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pHLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUUxRCxPQUFPLEVBQUMsdUNBQXVDLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNuSCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkNBQTJDLENBQUM7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QUFrQjt3QkFHdkQsS0FBSyxZQUFvQixXQUFXLFNBQUMsNEJBQTRCO3FDQUdqRSxLQUFLO2lDQUdMLEtBQUs7NEJBR0wsV0FBVyxTQUFDLHNCQUFzQjt5QkFLbEMsV0FBVyxTQUFDLGtCQUFrQjt1QkFLOUIsV0FBVyxTQUFDLGdCQUFnQjtzQkFNNUIsV0FBVyxTQUFDLGVBQWU7eUJBSzNCLFdBQVcsU0FBQyxnQkFBZ0I7eUJBSzVCLFdBQVcsU0FBQyxpQkFBaUI7eUJBSzdCLFdBQVcsU0FBQyxnQkFBZ0I7NkJBSzVCLFdBQVcsU0FBQywwQkFBMEI7b0JBS3RDLFdBQVcsU0FBQyxhQUFhO2lDQUt6QixXQUFXLFNBQUMscUJBQXFCO3NCQUtqQyxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO3dCQVVoQyxZQUFZLFNBQUMsU0FBUzs0QkFpQnRCLFlBQVksU0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBM1RuQztJQURVLFlBQVksRUFBRTt3REFDYTtBQUdyQztJQURVLFlBQVksRUFBRTtxREFDRTtBQUcxQjtJQURVLFlBQVksRUFBRTt3REFDSztBQStFN0I7SUFEVSxZQUFZLEVBQUU7eURBQ2M7QUFpSXRDO0lBRFUsWUFBWSxFQUFFO3VEQUNZO0FBR3BDO0lBRFUsWUFBWSxFQUFFO3dEQUNhO0FBR3JDO0lBRFUsWUFBWSxFQUFFOzZEQUNrQjtBQUcxQztJQURVLFlBQVksRUFBRTt3REFDYTtBQUdyQztJQURVLFlBQVksRUFBRTtxREFDVTtBQUdsQztJQURVLFlBQVksRUFBRTtxREFDVTtBQUdsQztJQURVLFlBQVksRUFBRTtrRUFDdUI7QUFHL0M7SUFEVSxZQUFZLEVBQUU7OERBQ21CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudEZhY3RvcnksXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZiwgQ29udGVudENoaWxkLFxyXG4gIERpcmVjdGl2ZSxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0YWJsZSxcclxuICBJbnB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVmlld0NvbnRhaW5lclJlZlxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QXN5bmNWYWxpZGF0b3JGbiwgRm9ybUNvbnRyb2wsIE5nTW9kZWwsIFZhbGlkYXRvckZufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtpc05pbGx9IGZyb20gXCIuLi8uLi9jb3JlL2Z1bmN0aW9uL2lzLW5pbGwuZnVuY3Rpb25cIjtcclxuaW1wb3J0IHtub3ROaWxsfSBmcm9tIFwiLi4vLi4vY29yZS9mdW5jdGlvbi9ub3QtbmlsbC5mdW5jdGlvblwiO1xyXG5pbXBvcnQge0lucHV0Qm9vbGVhbiwgSW5wdXRCb29sZWFuRGVjb3JhdG9yfSBmcm9tIFwiLi4vLi4vY29yZS9kZWNvcmF0b3IvaW5wdXQtYm9vbGVhbi5kZWNvcmF0b3JcIjtcclxuaW1wb3J0IHtyZXF1aXJlZFZhbGlkYXRvcn0gZnJvbSBcIi4uLy4uL2NvcmUvdmFsaWRhdG9yL3JlcXVpcmVkLnZhbGlkYXRvclwiO1xyXG5pbXBvcnQge3ByZWNpc2lvblNjYWxlVmFsaWRhdG9yfSBmcm9tIFwiLi4vLi4vY29yZS92YWxpZGF0b3IvcHJlY2lzaW9uLXNjYWxlLnZhbGlkYXRvclwiO1xyXG5pbXBvcnQge21heFN0cmluZ0xlbmd0aFZhbGlkYXRvcn0gZnJvbSBcIi4uLy4uL2NvcmUvdmFsaWRhdG9yL21heC1zdHJpbmctbGVuZ3RoLnZhbGlkYXRvclwiO1xyXG5pbXBvcnQge1N0cmluZ1V0aWxzfSBmcm9tIFwiLi4vLi4vY29yZS91dGlscy9zdHJpbmctdXRpbHNcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Rm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vY29yZS9zZXJ2aWNlL2Zvcm0taW5wdXQtdXNlci1jaGFuZ2UtbGlzdGVuZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge051bWJlclV0aWxzfSBmcm9tIFwiLi4vLi4vY29yZS91dGlscy9udW1iZXItdXRpbHNcIjtcclxuaW1wb3J0IHtOZ1pvbmVXcmFwcGVyU2VydmljZX0gZnJvbSBcIi4uLy4uL2NvcmUvc2VydmljZS9uZy16b25lLXdyYXBwZXIuc2VydmljZVwiO1xyXG5pbXBvcnQge0NvcmVDb21wb25lbnRzSWNvbn0gZnJvbSBcIi4uLy4uL2NvcmUvZW51bS9jb3JlLWNvbXBvbmVudHMtaWNvbi5lbnVtXCI7XHJcbmltcG9ydCB7Rm9ybUNvbXBvbmVudH0gZnJvbSBcIi4uL2Zvcm0vZm9ybS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtWYWxpZGF0aW9uRXJyb3JDb21wb25lbnR9IGZyb20gXCIuLi92YWxpZGF0aW9uLWVycm9yL3ZhbGlkYXRpb24tZXJyb3IuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7U2NyZWVuQ29uZmlnQWRhcHRlckNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvc2NyZWVuLWNvbmZpZy1hZGFwdGVyLmNvbXBvbmVudC5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtPdmVybGF5U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZS9vdmVybGF5LnNlcnZpY2UnO1xyXG5pbXBvcnQge0NvbW1pdEJ1dHRvbnNDb21wb25lbnR9IGZyb20gJy4vY29tbWl0LWJ1dHRvbnMvY29tbWl0LWJ1dHRvbnMuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBhbGwgY29uY3JldGUgZm9ybSBpbnB1dCBjb21wb25lbnRzIHRoYXQgY29udGFpbiBhIG5hdGl2ZSA8aW5wdXQ+IGVsZW1lbnQuIFByb3ZpZGVzIGNvbW1vbiBkYXRhIGFuZCBmdW5jdGlvbmFsaXR5LCBzdWNoIGFzXHJcbiAqIGFkZGluZyBzZWxmIGFzIGEgY29udHJvbCB0byB0aGUgcGFyZW50IGZvcm0uXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUlucHV0Q29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIFNjcmVlbkNvbmZpZ0FkYXB0ZXJDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgQFZpZXdDaGlsZChcInZhbGlkYXRpb25FcnJvclwiLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pXHJcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvckNvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxuXHJcbiAgQFZpZXdDaGlsZChOZ01vZGVsLCB7c3RhdGljOiB0cnVlfSlcclxuICBwdWJsaWMgX25nTW9kZWw6IE5nTW9kZWw7XHJcblxyXG4gIHB1YmxpYyBnZXQgbmdNb2RlbCgpOiBOZ01vZGVsIHtcclxuICAgIGlmICh0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlLm5nTW9kZWw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5fbmdNb2RlbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgQmFzZUZvcm1JbnB1dENvbXBvbmVudEluZGV4OiBudW1iZXIgPSAwO1xyXG4gIHB1YmxpYyBzdGF0aWMgSGlkZGVuQ2xhc3M6IHN0cmluZyA9IFwiaGlkZGVuXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dTYXZlQ2FuY2VsOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBtb2RlbCh2YWx1ZTogVCkge1xyXG4gICAgaWYgKCF0aGlzLl9pbml0aWFsTW9kZWxTZXQpIHtcclxuICAgICAgdGhpcy5faW5pdGlhbE1vZGVsID0gdGhpcy5fbW9kZWw7XHJcbiAgICAgIHRoaXMuX2luaXRpYWxNb2RlbFNldCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9tb2RlbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5jYW5TYXZlT3JDYW5jZWwgPSB0aGlzLl9tb2RlbCAhPT0gdGhpcy5faW5pdGlhbE1vZGVsO1xyXG4gICAgdGhpcy5fbW9kZWxEaXJ0eUZvckNvbW1pdCA9IHRoaXMuX21vZGVsICE9PSB0aGlzLl9pbml0aWFsTW9kZWw7XHJcbiAgICB0aGlzLl9jbGVhckVycm9yQ29tcG9uZW50KCk7XHJcbiAgICB0aGlzLm1vZGVsU2V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG1vZGVsKCk6IFQge1xyXG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbGFiZWw6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpXHJcbiAgcHVibGljIG5vVmFsaWRhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgaW5pdEZvY3VzOiBib29sZWFuO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMgbm9DbGlja0ZvY3VzOiBib29sZWFuO1xyXG5cclxuICAvLyB1c2VkIHRvIGxpbmsgZmllbGQgdG8gYnVzaW5lc3Mgb2JqZWN0IGZvciBkZWVwLXZhbGlkYXRpb25cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBidXNpbmVzc09iamVjdElkOiBhbnk7XHJcblxyXG4gIC8vIEBJbnB1dCgpXHJcbiAgLy8gcHVibGljIGVycm9yTWVzc2FnZTogVmFsaWRhdGlvbk1lc3NhZ2U7XHJcblxyXG4gIHB1YmxpYyBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGRpc2FibGVkID09PSB0aGlzLl9kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kaXNhYmxlZCA9IElucHV0Qm9vbGVhbkRlY29yYXRvci5JbnB1dFZhbHVlVG9Cb29sZWFuKGRpc2FibGVkKTtcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgbWF4TGVuZ3RoKG1heExlbmd0aDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnNldE1heExlbmd0aChtYXhMZW5ndGgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBtYXhMZW5ndGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBub3ROaWxsKHRoaXMuZm9yY2VkTWF4TGVuZ3RoKSA/IHRoaXMuZm9yY2VkTWF4TGVuZ3RoIDogdGhpcy5fbWF4TGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZm9yY2VkTWF4TGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCByZWFkb25seShyZWFkb25seTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuX2ZvcmNlUmVhZG9ubHkgIT09IHVuZGVmaW5lZCB8fCByZWFkb25seSA9PT0gdGhpcy5fcmVhZG9ubHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcmVhZG9ubHkgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihyZWFkb25seSk7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JjZVJlYWRvbmx5IHx8IHRoaXMuX3JlYWRvbmx5O1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGZvcmNlUmVhZG9ubHkoZm9yY2VSZWFkb25seTogYm9vbGVhbikge1xyXG4gICAgaWYgKGZvcmNlUmVhZG9ubHkgPT09IHRoaXMuX2ZvcmNlUmVhZG9ubHkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZm9yY2VSZWFkb25seSA9IElucHV0Qm9vbGVhbkRlY29yYXRvci5JbnB1dFZhbHVlVG9Cb29sZWFuKGZvcmNlUmVhZG9ubHkpO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmb3JjZVJlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVhZG9ubHk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVxdWlyZWQocmVxdWlyZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmIChyZXF1aXJlZCA9PT0gdGhpcy5fcmVxdWlyZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fcmVxdWlyZWQgPSBJbnB1dEJvb2xlYW5EZWNvcmF0b3IuSW5wdXRWYWx1ZVRvQm9vbGVhbihyZXF1aXJlZCk7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9yY2VSZXF1aXJlZCB8fCB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBmb3JjZVJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7ICAvLyBhIGZvcmNlIG91dHNpZGUgb2YgW2NmZ05hbWVdJ3MgaW5mbHVlbmNlXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCB2YWxpZGF0b3JzKHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10pIHtcclxuICAgIGlmICh2YWxpZGF0b3JzID09PSB0aGlzLl92YWxpZGF0b3JzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX3ZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzO1xyXG4gICAgdGhpcy5fdXBkYXRlQ29udHJvbFZhbGlkYXRvcnNBbmRPd25GbGFncygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCB2YWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvcnM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgYXN5bmNWYWxpZGF0b3JzKHZhbGlkYXRvcnM6IEFzeW5jVmFsaWRhdG9yRm5bXSkge1xyXG4gICAgdGhpcy5fYXN5bmNWYWxpZGF0b3JzID0gdmFsaWRhdG9ycztcclxuICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgYXN5bmNWYWxpZGF0b3JzKCk6IEFzeW5jVmFsaWRhdG9yRm5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXN5bmNWYWxpZGF0b3JzO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgQEhvc3RCaW5kaW5nKFwiY2xhc3MuXCIgKyBCYXNlSW5wdXRDb21wb25lbnQuSGlkZGVuQ2xhc3MpXHJcbiAgcHVibGljIHNldCBoaWRkZW4oaGlkZGVuOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaGlkZGVuID09PSB0aGlzLl9oaWRkZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2hpZGRlbiA9IGhpZGRlbjtcclxuXHJcbiAgICB0aGlzLl9hZGRPclJlbW92ZVNlbGZGcm9tRm9ybSgpO1xyXG5cclxuICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XHJcbiAgICAgIGlmIChoaWRkZW4pIHtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGFjaCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IucmVhdHRhY2goKTtcclxuICAgICAgICBpZiAodGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSkge1xyXG4gICAgICAgICAgdGhpcy5kZXRlY3RDaGFuZ2VzQWZ0ZXJBbmd1bGFyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oaWRkZW5DaGFuZ2UuZW1pdChoaWRkZW4pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBoaWRkZW4oKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faGlkZGVuO1xyXG4gIH1cclxuXHJcbiAgLy8gbm8gY3VzdG9tIHNldHRlciBsb2dpYyBhcyB3aXRoIHRoZSBvdGhlciAnc2NyZWVuIGNvbmZpZyBwcm9wcycsIGJlY2F1c2UgY29uY3JldGUgZm9ybSBpbnB1dCBjb21wb25lbnRzIGhhbmRsZSB0aGlzIHRoZW1zZWx2ZXMuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGRlY2ltYWxzKHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2RlY2ltYWxzID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGRlY2ltYWxzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVjaW1hbHM7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpY29uOiBDb3JlQ29tcG9uZW50c0ljb247XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN1c3RvbUNzc0NsYXNzOiBzdHJpbmc7XHJcblxyXG4gIC8vIEdvYWw6IGFiaWxpdHkgdG8gZW11bGF0ZSB0aGUgcmVkIGJhY2tncm91bmQgb2YgaW5wdXQgZmllbGRzIChmb3JtLXN1Ym1pdHRlZCBpbnZhbGlkIHN0YXRlKVxyXG4gIEBJbnB1dCgpIEBIb3N0QmluZGluZyhcImNsYXNzLmNjLXJlZC1lcnJvci1iYWNrZ3JvdW5kXCIpXHJcbiAgcHVibGljIHJlZEVycm9yQmFja2dyb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBteUZvcm1JbnB1dEluc3RhbmNlKHZhbHVlOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4pIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlID0gdmFsdWU7XHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbXlGb3JtSW5wdXRJbnN0YW5jZSgpOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBjb21taXRPbkJsdXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvLyBAT3V0cHV0KClcclxuICAvLyBwdWJsaWMgY29tbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgbmF0aXZlQmx1cjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBibHVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gZW1pdHMgd2hlbiB0aGUgZW50ZXIgYnV0dG9uIG9uIGtleWJvYXJkIHdhcyBwcmVzc2VkIHdoaWxlIHRoaXMgZm9ybSBpbnB1dCBoYWQgZm9jdXNzZWRcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZW50ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkgZm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgcmVhZG9ubHkga2V5RG93bjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBrZXlVcDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByZWFkb25seSBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IHVzZXJNb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlYWRvbmx5IGhpZGRlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jYy1pbnB1dC1mb2N1c2VkXCIpXHJcbiAgcHVibGljIGZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGZvcm1Db21wb25lbnQ6IEZvcm1Db21wb25lbnQ7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmZvcm0taW5wdXRcIilcclxuICBwdWJsaWMgZm9ybUlucHV0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIEBIb3N0QmluZGluZyhcImNsYXNzLmN1c3RvbS13aWR0aFwiKVxyXG4gIHB1YmxpYyBjdXN0b21XaWR0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgQEhvc3RCaW5kaW5nKCdjbGFzcy5jdXN0b20taGVpZ2h0JylcclxuICBwdWJsaWMgY3VzdG9tSGVpZ2h0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBub1RyaWFuZ2xlR3JhcGhpYzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKClcclxuICBwdWJsaWMga2VlcEZvY3Vzc2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBASG9zdEJpbmRpbmcoXCJjbGFzcy5oYWxmLXdpZHRoXCIpXHJcbiAgcHVibGljIGhhbGZXaWR0aDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZnVsbC13aWR0aC1pbXBvcnRhbnRcIilcclxuICBwdWJsaWMgZnVsbFdpZHRoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBleGNsdWRlVXNlck1vZGVsQ2hhbmdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKVxyXG4gIHB1YmxpYyBub0Zvcm1Hcm91cENvbnRyb2w6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuZm9ybS1zdWJtaXR0ZWRcIilcclxuICBwdWJsaWMgZ2V0IGZvcm1TdWJtaXR0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtQ29tcG9uZW50ICYmIHRoaXMuZm9ybUNvbXBvbmVudC5zdWJtaXR0ZWQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5oYXNub2xhYmVsXCIpXHJcbiAgcHVibGljIGdldCBoYXNOb0xhYmVsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzTmlsbCh0aGlzLmxhYmVsKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmhhc3ZhbHVlXCIpXHJcbiAgcHVibGljIGdldCBoYXNWYWx1ZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoIUFycmF5LmlzQXJyYXkodGhpcy5tb2RlbCkgJiYgISF0aGlzLm1vZGVsIHx8IFN0cmluZ1V0aWxzLklzU3RyaW5nV2l0aExlbmd0aCh0aGlzLm1vZGVsKSB8fCBOdW1iZXJVdGlscy5Jc051bWJlcih0aGlzLm1vZGVsKSkgfHxcclxuICAgICAgICAoQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSAmJiB0aGlzLm1vZGVsLmxlbmd0aCA+IDApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaW52YWxpZFwiKVxyXG4gIHB1YmxpYyBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGVja1N0YXRlKCkgJiYgIXRoaXMuY29udHJvbC52YWxpZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmRpc2FibGVkXCIpXHJcbiAgcHVibGljIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MucmVhZC1vbmx5XCIpXHJcbiAgcHVibGljIGdldCBpc1JlYWRvbmx5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5yZXF1aXJlZFwiKVxyXG4gIHB1YmxpYyBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnJlcXVpcmVkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY2MtdG91Y2hlZC1pbnZhbGlkXCIpXHJcbiAgcHVibGljIGdldCB0b3VjaGVkSW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sRXhpc3RzKCkgJiYgdGhpcy5jb250cm9sLnRvdWNoZWQgJiYgIXRoaXMuY29udHJvbC52YWxpZDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLnZhbGlkXCIpXHJcbiAgcHVibGljIGdldCB2YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jaGVja1N0YXRlKCkgJiYgdGhpcy5jb250cm9sLnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3Mubm8tdmFsaWRhdGlvblwiKVxyXG4gIHB1YmxpYyBnZXQgdmFsaWRhdGlvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLm5vVmFsaWRhdGlvbjtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoXCJjbGlja1wiLCBbXCIkZXZlbnRcIl0pXHJcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY2FuQ2hhbmdlICYmICF0aGlzLm5vQ2xpY2tGb2N1cykge1xyXG4gICAgICB0aGlzLnJlcXVlc3RGb2N1cygpO1xyXG4gICAgICBpZiAoIXRoaXMuZXhjbHVkZVVzZXJNb2RlbENoYW5nZSkge1xyXG4gICAgICAgIHRoaXMubWFya0FzVXNlclRvdWNoZWQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcihcImZvY3VzaW5cIilcclxuICBvbkZvY3VzSW4oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuZXhjbHVkZVVzZXJNb2RlbENoYW5nZSkge1xyXG4gICAgICB0aGlzLm1hcmtBc1VzZXJUb3VjaGVkKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6c2Nyb2xsXCIpXHJcbiAgLy8gcHVibGljIGhhbmRsZURvY3VtZW50U2Nyb2xsKCk6IHZvaWQge1xyXG4gIC8vICAgdGhpcy5fcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTtcclxuICAvLyB9XHJcblxyXG4gIC8vIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXHJcbiAgLy8gcHVibGljIGhhbmRsZVdpbmRvd1Jlc2l6ZSgpOiB2b2lkIHtcclxuICAvLyAgIHRoaXMuX3Bvc2l0aW9uVmFsaWRhdGlvbkVycm9yKCk7XHJcbiAgLy8gfVxyXG5cclxuICBASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXHJcbiAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMua2V5RG93bi5uZXh0KGV2ZW50KTtcclxuICAgIGlmICh0aGlzLnNob3dTYXZlQ2FuY2VsICYmIHRoaXMuY2FuU2F2ZU9yQ2FuY2VsKSB7XHJcbiAgICAgIHRoaXMuX2hhbmRsZUtleURvd24oZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy5fcG9zaXRpb25WYWxpZGF0aW9uRXJyb3IoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2FuQ2hhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLnJlYWRvbmx5ICYmICF0aGlzLmRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjb250cm9sKCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLl9teUZvcm1JbnB1dEluc3RhbmNlID8gdGhpcy5fbXlGb3JtSW5wdXRJbnN0YW5jZS5jb250cm9sIDogdGhpcy5uZ01vZGVsICYmIHRoaXMubmdNb2RlbC5jb250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmb3JtSW5wdXRJbnN0YW5jZSgpOiBCYXNlSW5wdXRDb21wb25lbnQ8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX215Rm9ybUlucHV0SW5zdGFuY2UgfHwgdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNEZXN0cm95ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveWVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlucHV0OiBIVE1MSW5wdXRFbGVtZW50IHwgSFRNTFRleHRBcmVhRWxlbWVudDtcclxuXHJcbiAgcHVibGljIGtlZXBGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgc2V0IGNhblNhdmVPckNhbmNlbCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fY2FuU2F2ZU9yQ2FuY2VsID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5zaG93U2F2ZUNhbmNlbCAmJiB0aGlzLmZvY3VzZWQgJiYgdGhpcy5fY2FuU2F2ZU9yQ2FuY2VsKSB7XHJcbiAgICAgIGlmICghdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZikge1xyXG4gICAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYgPSB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChDb21taXRCdXR0b25zQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFyZW50Rm9yT3ZlcmxheTogdGhpcy5lbGVtZW50UmVmLFxyXG4gICAgICAgICAgICAgIGNvbW1pdHRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGNvbW1pdEZpbmlzaGVkOiBmYWxzZVxyXG4gICAgICAgICAgICB9LCB7XHJcbiAgICAgICAgICAgICAgY29tbWl0Q2xpY2s6IChldmVudCkgPT4gdGhpcy5faGFuZGxlQ29tbWl0KGV2ZW50KSxcclxuICAgICAgICAgICAgICBjYW5jZWxDbGljazogKGV2ZW50KSA9PiB0aGlzLmNhbmNlbENsaWNrKGV2ZW50KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5yZW1vdmVDb21wb25lbnQodGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZik7XHJcbiAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNhblNhdmVPckNhbmNlbCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jYW5TYXZlT3JDYW5jZWw7XHJcbiAgfVxyXG5cclxuICAvLyBAaW1wbGVtZW50cyBDb25maWd1cmF0aW9uQWRhcHRlckNvbXBvbmVudFxyXG4gIHB1YmxpYyBvYmplY3RDb25maWdOYW1lOiBzdHJpbmc7XHJcbiAgcHVibGljIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHJvdGVjdGVkIF9tYXJrZWRBc1VzZXJUb3VjaGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByb3RlY3RlZCBfZGVzdHJveWVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIF9oYXNPblB1c2hDZFN0cmF0ZWd5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJvdGVjdGVkIF9tb2RlbDogVDtcclxuICBwcm90ZWN0ZWQgX21vZGVsRGlydHlGb3JDb21taXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcm90ZWN0ZWQgX2luaXRpYWxNb2RlbDogVDtcclxuICBwcm90ZWN0ZWQgX2luaXRpYWxNb2RlbFNldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9teUZvcm1JbnB1dEluc3RhbmNlOiBCYXNlSW5wdXRDb21wb25lbnQ8VD47XHJcbiAgcHJpdmF0ZSBfZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50OiBDb21wb25lbnRSZWY8VmFsaWRhdGlvbkVycm9yQ29tcG9uZW50PjtcclxuICBwcml2YXRlIF9kZWNpbWFsczogbnVtYmVyO1xyXG4gIHByaXZhdGUgX2hpZGRlbjogYm9vbGVhbjtcclxuICBwcml2YXRlIF9kaXNhYmxlZDogYm9vbGVhbjtcclxuICBwcml2YXRlIF9tYXhMZW5ndGg6IG51bWJlcjtcclxuICBwcml2YXRlIF9yZWFkb25seTogYm9vbGVhbjtcclxuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbjtcclxuXHJcbiAgcHJpdmF0ZSBfZm9yY2VSZWFkb25seTogYm9vbGVhbiA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJpdmF0ZSBfdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gIHByaXZhdGUgX2FzeW5jVmFsaWRhdG9yczogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgX3NwZWVjaFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX21vZGVsQ2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBfZm9ybUFueVN1Ym1pdFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2Zvcm1SZWFkb25seUNoYW5nZVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2NsZWFyTWFya2VkQXNVc2VyVG91Y2hlZFN1YjogU3Vic2NyaXB0aW9uO1xyXG4gIHByaXZhdGUgX2NhblNhdmVPckNhbmNlbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcclxuICBwcml2YXRlIF92YWxpZGF0aW9uQ29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8YW55PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJvdGVjdGVkIG92ZXJsYXlTZXJ2aWNlOiBPdmVybGF5U2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBmb3JtVXNlckNoYW5nZUxpc3RlbmVyPzogRm9ybUlucHV0VXNlck1vZGVsQ2hhbmdlTGlzdGVuZXJTZXJ2aWNlLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIG5nWm9uZVdyYXBwZXI/OiBOZ1pvbmVXcmFwcGVyU2VydmljZSxcclxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBlbGVtZW50UmVmPzogRWxlbWVudFJlZixcclxuICApIHtcclxuICAgIEJhc2VJbnB1dENvbXBvbmVudC5CYXNlRm9ybUlucHV0Q29tcG9uZW50SW5kZXgrKztcclxuICAgIHRoaXMubmFtZSA9IEJhc2VJbnB1dENvbXBvbmVudC5CYXNlRm9ybUlucHV0Q29tcG9uZW50SW5kZXgudG9TdHJpbmcoKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtVXNlckNoYW5nZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuX2NsZWFyTWFya2VkQXNVc2VyVG91Y2hlZFN1YiA9IHRoaXMuZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lci5jbGVhckFsbE1hcmtlZEFzVXNlclRvdWNoZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLl9tYXJrZWRBc1VzZXJUb3VjaGVkID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tb2RlbENoYW5nZVN1YiA9IHRoaXMubW9kZWxDaGFuZ2Uuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm1vZGVsID0gdmFsO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wcmVwYXJlSW5wdXQoKTtcclxuXHJcbiAgICB0aGlzLl91cGRhdGVDb250cm9sVmFsaWRhdG9yc0FuZE93bkZsYWdzKCk7XHJcblxyXG4gICAgdGhpcy5fYWRkT3JSZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMucmVhZG9ubHkgPSB0aGlzLnJlYWRvbmx5IHx8IHRoaXMuZm9ybUNvbXBvbmVudC5yZWFkb25seTtcclxuICAgICAgdGhpcy5fZm9ybVJlYWRvbmx5Q2hhbmdlU3ViID0gdGhpcy5mb3JtQ29tcG9uZW50LnJlYWRvbmx5Q2hhbmdlLnN1YnNjcmliZSgoaXNGb3JtUmVhZG9ubHk6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gaXNGb3JtUmVhZG9ubHk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmluaXRGb2N1cykge1xyXG4gICAgICBzZXRUaW1lb3V0KHRoaXMucmVxdWVzdEZvY3VzLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW1vdmVTZWxmRnJvbUZvcm0oKTtcclxuXHJcbiAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZXZlbnQpID0+IHRoaXMuZG9CbHVyKGV2ZW50KSk7XHJcbiAgICAgIHRoaXMuaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCAoZXZlbnQpID0+IHRoaXMuZG9Gb2N1cyhldmVudCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XHJcbiAgICB0aGlzLl9jbGVhckVycm9yQ29tcG9uZW50KCk7XHJcblxyXG4gICAgLy8gaWYgKHRoaXMudG9vbHRpcE1hbmFnZXIgJiYgdGhpcy5lbGVtZW50UmVmKSB7XHJcbiAgICAvLyAgICAgdGhpcy50b29sdGlwTWFuYWdlci5kZXN0cm95RXJyb3JUb29sdGlwT2ZFbGVtZW50KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAodGhpcy5fbW9kZWxDaGFuZ2VTdWIpIHtcclxuICAgICAgdGhpcy5fbW9kZWxDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLl9zcGVlY2hTdWIpIHtcclxuICAgICAgdGhpcy5fc3BlZWNoU3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fZm9ybUFueVN1Ym1pdFN1Yikge1xyXG4gICAgICB0aGlzLl9mb3JtQW55U3VibWl0U3ViLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fZm9ybVJlYWRvbmx5Q2hhbmdlU3ViKSB7XHJcbiAgICAgIHRoaXMuX2Zvcm1SZWFkb25seUNoYW5nZVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2NsZWFyTWFya2VkQXNVc2VyVG91Y2hlZFN1Yikge1xyXG4gICAgICB0aGlzLl9jbGVhck1hcmtlZEFzVXNlclRvdWNoZWRTdWIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuX3JlbW92ZVNlbGZGcm9tRm9ybSgpO1xyXG4gICAgdGhpcy5lbGVtZW50UmVmID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvciA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuaW5wdXQgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICAvLyBkZXNjZW5kZW50cyBzaG91bGQgb3ZlcnJpZGUgdGhpc1xyXG4gIHB1YmxpYyBjb21taXQgPSBhc3luYyAobW9kZWw6IGFueSk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWxDbGljayhldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMua2VlcEZvY3VzID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLl9pbml0aWFsTW9kZWxTZXQpIHtcclxuICAgICAgdGhpcy5tb2RlbCA9IHRoaXMuX2luaXRpYWxNb2RlbDtcclxuICAgIH1cclxuICAgIHRoaXMua2VlcEZvY3VzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd1ZhbGlkYXRpb25FcnJvcihlcnJvcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvciA9IGVycm9yO1xyXG4gICAgdGhpcy5fdmFsaWRhdGlvbkNvbXBvbmVudFJlZiA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlQ29tcG9uZW50KFZhbGlkYXRpb25FcnJvckNvbXBvbmVudCwge3BhcmVudEZvck92ZXJsYXk6IHRoaXMuZWxlbWVudFJlZiwgZXJyb3I6IGVycm9yfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbWl0cyBhIG1vZGVsQ2hhbmdlIGV2ZW50IHdpdGggZ2l2ZW4gdmFsdWUsIGluZGljYXRpbmcgdGhhdCB0aGUgbW9kZWwgb2YgdGhpcyBmb3JtIGlucHV0XHJcbiAgICogaGFzIGNoYW5nZWQgYW5kIGl0cyBuZXcgdmFsdWUgaXMgZ2l2ZW4gdmFsdWUuIEFsc28gZW1pdHMgdXNlck1vZGVsQ2hhbmdlIGlmIG1hcmtlZEFzVXNlclRvdWNoZWQuXHJcbiAgICovXHJcbiAgcHVibGljIHNldE1vZGVsKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMubW9kZWwgPSB2YWx1ZTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wubWFya0FzRGlydHkoe29ubHlTZWxmOiB0cnVlfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5mb3JtQ29tcG9uZW50KSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC5mb3JtR3JvdXAubWFya0FzRGlydHkoe29ubHlTZWxmOiB0cnVlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgJiYgdGhpcy5mb3JtVXNlckNoYW5nZUxpc3RlbmVyKSB7XHJcbiAgICAgIHRoaXMuZm9ybVVzZXJDaGFuZ2VMaXN0ZW5lci51c2VyTW9kZWxDaGFuZ2UubmV4dCh2YWx1ZSk7XHJcbiAgICAgIHRoaXMudXNlck1vZGVsQ2hhbmdlLm5leHQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgIHRoaXMuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlcXVlc3RGb2N1cygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmNhbkNoYW5nZSAmJiB0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcclxuICAgICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZG9Gb2N1cyhldmVudD86IGFueSk6IGFueSB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9pbml0aWFsTW9kZWxTZXQgPSBmYWxzZTtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XHJcbiAgICB0aGlzLmNhblNhdmVPckNhbmNlbCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2hhc09uUHVzaENkU3RyYXRlZ3kpIHtcclxuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9jdXMubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRvQmx1cihldmVudD86IGFueSwgaGFuZGxlQ29tbWl0OiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAodGhpcy5zaG93U2F2ZUNhbmNlbCAmJiBoYW5kbGVDb21taXQgJiYgdGhpcy5fbW9kZWxEaXJ0eUZvckNvbW1pdCkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9oYW5kbGVDb21taXQoZXZlbnQsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5rZWVwRm9jdXMgfHwgdGhpcy5rZWVwRm9jdXNzZWQpIHtcclxuICAgICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICAgIHRoaXMuaW5wdXQuYmx1cigpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYmx1ci5uZXh0KCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRldGVjdENoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYXJrRm9yQ2hlY2soKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuX2Rlc3Ryb3llZCkge1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGRldGVjdENoYW5nZXNBZnRlckFuZ3VsYXIoKTogdm9pZCB7XHJcbiAgICBpZiAoISF0aGlzLm5nWm9uZVdyYXBwZXIpIHtcclxuICAgICAgdGhpcy5uZ1pvbmVXcmFwcGVyLnNldFRpbWVvdXRPdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9kZXN0cm95ZWQpIHtcclxuICAgICAgICAgIGlmICh0aGlzLl9oYXNPblB1c2hDZFN0cmF0ZWd5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTGlua3MgdGhlIGdpdmVuIGZvcm1Db21wLnN1Ym1pdCBldmVudCB0byB0aGUgZmlyaW5nIG9mIGRldGVjdENoYW5nZXMoKSBvZiBnaXZlbiBjaGFuZ2UgZGV0ZWN0b3IuIFRoaXMgaXMgYSAndXRpbGl0eS1saWtlJyBtZXRob2QsXHJcbiAgICogYnV0IHdlIG1hbmFnZSB0aGUgYWN0dWFsIHN1YnNjcmlwdGlvbiAod2l0aCBVTlNVQlNDUklCRSgpISkgb24gdGhpcyBiYXNlIGNsYXNzLlxyXG4gICAqIEBwYXJhbSBmb3JtQ29tcCBUaGUgZm9ybSB3aG9zZSBzdWJtaXQgd2Ugd2FudCB0byBsaW5rIHdpdGggdGhlIGNhbGwgb2YgLmRldGVjdENoYW5nZXMoKSBvbiBnaXZlbiBjaGFuZ2UgZGV0ZWN0b3IgcmVmLlxyXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBUaGlzIHNob3VsZCBiZSBnaXZlbiBhcyBwYXJhbS4gSSBjaG9vc2Ugbm90IHRvIG1ha2UgdGhpcyBwYXJ0IG9mIG91ciAoQmFzZUZvcm1JbnB1dENvbXBvbmVudCkgY29uc3RydWN0b3IsXHJcbiAgICogYmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUgMjEgZXh0ZW5kZXJzLlxyXG4gICAqL1xyXG4gIC8vIHB1YmxpYyBsaW5rRm9ybUFueVN1Ym1pdFdpdGhEZXRlY3RDaGFuZ2VzKGZvcm1Db21wOiBGb3JtQ29tcG9uZW50LCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuICAvLyAgICAgaWYgKGZvcm1Db21wICYmIGNoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgLy8gICAgICAgICB0aGlzLl9mb3JtQW55U3VibWl0U3ViID0gZm9ybUNvbXAuYW55U3VibWl0LnN1YnNjcmliZSgoKCkgPT4ge1xyXG4gIC8vICAgICAgICAgICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIGNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAvLyAgICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBtYXJrQXNVc2VyVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5yZWRFcnJvckJhY2tncm91bmQgPSBmYWxzZTsgLy8gbm90IHN1cmUgaWYgdGhpcyBpcyB0aGUgcmlnaHQgcGxhY2UgdG8gZG8gdGhhdFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyTWFya2VkQXNVc2VyVG91Y2hlZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX21hcmtlZEFzVXNlclRvdWNoZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBtb2RlbFNldCgpOiB2b2lkIHtcclxuXHJcbiAgfVxyXG5cclxuICAvL3VzZWQgZm9yIGRlc2NlbmRlbnRzLCBiZWNhdXNlIGRlc2NlbmRlbnRzIGNhbid0IHNldCBzdXBlciBwcm9wZXJ0aWVzLCBzZWUgSW5wdXROdW1iZXJDb21wb25lbnRcclxuICBwcm90ZWN0ZWQgc2V0TWF4TGVuZ3RoKG1heExlbmd0aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAobm90TmlsbCh0aGlzLmZvcmNlZE1heExlbmd0aCkgfHwgbWF4TGVuZ3RoID09PSB0aGlzLl9tYXhMZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghaXNOYU4obWF4TGVuZ3RoKSkge1xyXG4gICAgICB0aGlzLl9tYXhMZW5ndGggPSBtYXhMZW5ndGg7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBfbWFya0FzT25QdXNoKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faGFzT25QdXNoQ2RTdHJhdGVneSA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX2NoZWNrU3RhdGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5uZ01vZGVsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZvcm1TdWJtaXR0ZWQgfHwgKHRoaXMuX2NvbnRyb2xFeGlzdHMoKSAmJiB0aGlzLmNvbnRyb2wudG91Y2hlZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBQbGFjZSB2YWxpZGF0b3JzIG9udG8gb3VyIEFuZ3VsYXIncyBGb3JtQ29udHJvbC5cclxuICBwcm90ZWN0ZWQgX3VwZGF0ZUNvbnRyb2xWYWxpZGF0b3JzQW5kT3duRmxhZ3MoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlcjogRWxlbWVudFJlZiA9IHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZSA/IHRoaXMubXlGb3JtSW5wdXRJbnN0YW5jZS5lbGVtZW50UmVmIDogdGhpcy5lbGVtZW50UmVmO1xyXG4gICAgLy8gaWYgKHRoaXMudG9vbHRpcE1hbmFnZXIgJiYgZXIpIHtcclxuICAgIC8vICAgICB0aGlzLnRvb2x0aXBNYW5hZ2VyLmRlc3Ryb3lFcnJvclRvb2x0aXBPZkVsZW1lbnQoZXIubmF0aXZlRWxlbWVudCk7XHJcbiAgICAvLyB9XHJcbiAgICB0aGlzLl9zZXROYXRpdmVSZXF1aXJlZCh0aGlzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuX3NldE5hdGl2ZU1heExlbmd0aCh0aGlzLm1heExlbmd0aCk7XHJcbiAgICB0aGlzLl9zZXROYXRpdmVEaXNhYmxlZCh0aGlzLmRpc2FibGVkKTtcclxuICAgIHRoaXMuX3NldE5hdGl2ZVJlYWRPbmx5KHRoaXMucmVhZG9ubHkgfHwgdGhpcy5mb3JjZVJlYWRvbmx5KTtcclxuXHJcbiAgICB0aGlzLnJlZEVycm9yQmFja2dyb3VuZCA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuX2NvbnRyb2xFeGlzdHMoKSkge1xyXG4gICAgICBjb25zdCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcblxyXG4gICAgICAvLyBhZGQgcmVxdWlyZWRcclxuICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgICB2YWxpZGF0b3JzLnB1c2gocmVxdWlyZWRWYWxpZGF0b3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBhZGQgbWF4bGVuZ3RoXHJcbiAgICAgIGlmIChub3ROaWxsKHRoaXMuX21heExlbmd0aCkpIHtcclxuICAgICAgICBpZiAodGhpcy5kZWNpbWFscykge1xyXG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKHByZWNpc2lvblNjYWxlVmFsaWRhdG9yKHRoaXMuX21heExlbmd0aCwgdGhpcy5kZWNpbWFscykpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2gobWF4U3RyaW5nTGVuZ3RoVmFsaWRhdG9yKHRoaXMuX21heExlbmd0aCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gYWRkIEBJbnB1dCgpLWVkIHZhbGlkYXRvcnNcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKC4uLnRoaXMuX3ZhbGlkYXRvcnMpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRvcnMpIHtcclxuICAgICAgICB0aGlzLl92YWxpZGF0b3JzLmZvckVhY2godmFsaWRhdG9yID0+IHtcclxuICAgICAgICAgIGlmICh2YWxpZGF0b3IgPT09IHJlcXVpcmVkVmFsaWRhdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fc2V0TmF0aXZlUmVxdWlyZWQodHJ1ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0QXN5bmNWYWxpZGF0b3JzKHRoaXMuX2FzeW5jVmFsaWRhdG9ycyk7XHJcbiAgICAgIHRoaXMuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVDb21taXQoZXZlbnQ/OiBNb3VzZUV2ZW50LCBkb0JsdXI6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBpZiAoIXRoaXMuc2hvd1NhdmVDYW5jZWwgfHwgKCF0aGlzLl9tb2RlbERpcnR5Rm9yQ29tbWl0KSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMua2VlcEZvY3VzID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLl9jb21taXRCdXR0b25zQ29tcG9uZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYuaW5zdGFuY2UuY29tbWl0RmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21taXR0aW5nID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX21vZGVsRGlydHlGb3JDb21taXQgPSBmYWxzZTtcclxuICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLmNvbW1pdCh0aGlzLm1vZGVsKTtcclxuICAgIHRoaXMua2VlcEZvY3VzID0gZmFsc2U7XHJcbiAgICBhd2FpdCB0aGlzLl9jb21taXRGaW5pc2hlZCgpO1xyXG4gICAgaWYgKHN1Y2Nlc3MgJiYgZG9CbHVyKSB7XHJcbiAgICAgIHRoaXMuZG9CbHVyKGV2ZW50LCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2VzcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvbW1pdEZpbmlzaGVkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlOiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZikge1xyXG4gICAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYuaW5zdGFuY2UuY29tbWl0RmluaXNoZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2NvbW1pdEJ1dHRvbnNDb21wb25lbnRSZWYuaW5zdGFuY2UuY29tbWl0dGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgLy8gdGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZi5pbnN0YW5jZS5jb21taXRGaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5vdmVybGF5U2VydmljZS5yZW1vdmVDb21wb25lbnQodGhpcy5fY29tbWl0QnV0dG9uc0NvbXBvbmVudFJlZik7XHJcbiAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgfSwgODAwKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2xlYXJFcnJvckNvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMub3ZlcmxheVNlcnZpY2UucmVtb3ZlQ29tcG9uZW50KHRoaXMuX3ZhbGlkYXRpb25Db21wb25lbnRSZWYpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIHdoZXRoZXIgdGhpcy5uZ01vZGVsLmNvbnRyb2wgaGFzIHNhZmUgYWNjZXNzXHJcbiAgcHJpdmF0ZSBfY29udHJvbEV4aXN0cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLm5nTW9kZWwgJiYgISF0aGlzLmNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jb250cm9sSXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sRXhpc3RzKCkgJiYgdGhpcy5jb250cm9sLnZhbGlkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0TmF0aXZlRGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmlucHV0KSB7XHJcbiAgICAgIHRoaXMuaW5wdXQuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE5hdGl2ZU1heExlbmd0aChtYXhsZW5ndGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQgJiYgIWlzTmFOKG1heGxlbmd0aCkpIHtcclxuICAgICAgdGhpcy5pbnB1dC5tYXhMZW5ndGggPSBtYXhsZW5ndGg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgX3NldE5hdGl2ZVJlYWRPbmx5KHJlYWRvbmx5OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbnB1dCkge1xyXG4gICAgICB0aGlzLmlucHV0LnJlYWRPbmx5ID0gcmVhZG9ubHk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXROYXRpdmVSZXF1aXJlZChyZXF1aXJlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgdGhpcy5pbnB1dC5yZXF1aXJlZCA9IHJlcXVpcmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9TcGVlY2hJbnB1dCgpOiB2b2lkIHtcclxuICAgIC8vIHRoaXMuX3NwZWVjaFN1YiA9IHRoaXMuc3BlZWNoSW5wdXQuc3BlZWNoSW5wdXQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKHRoaXMuZm9jdXNlZCAmJiB0aGlzLl9jb250cm9sRXhpc3RzKCkpIHtcclxuICAgIC8vICAgICAgICAgY29uc3QgdmFsOiBzdHJpbmcgPSB0aGlzLmNvbnRyb2wudmFsdWU7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuc2V0TW9kZWwoKFN0cmluZ1V0aWxzLklzU3RyaW5nKHZhbCkgPyB2YWwgOiAnJykgKyBkYXRhKTtcclxuICAgIC8vICAgICB9XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2FkZE9yUmVtb3ZlU2VsZkZyb21Gb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaGlkZGVuKSB7XHJcbiAgICAgIHRoaXMuX3JlbW92ZVNlbGZGcm9tRm9ybSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fYWRkU2VsZlRvRm9ybSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlU2VsZkluRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQpIHtcclxuICAgICAgdGhpcy5mb3JtQ29tcG9uZW50LnVwZGF0ZUZvcm1JbnB1dCh0aGlzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3JlbW92ZVNlbGZGcm9tRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQgJiYgdGhpcy5uZ01vZGVsKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC5yZW1vdmVGb3JtSW5wdXQodGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9hZGRTZWxmVG9Gb3JtKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCAmJiB0aGlzLm5nTW9kZWwgJiYgIXRoaXMubm9Gb3JtR3JvdXBDb250cm9sKSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC5yZW1vdmVGb3JtSW5wdXQodGhpcyk7IC8vIHByZXZlbnRpbmcgdGhlcmUgYXJlIHR3byBjb250cm9scyBpbiBmb3JtZ3JvdXAgd2hlbiBteUZvcm1JbnB1dEluc3RhbmNlIGlzIChiZWluZykgc2V0XHJcbiAgICAgIHRoaXMuZm9ybUNvbXBvbmVudC5hZGRGb3JtSW5wdXQodGhpcy5teUZvcm1JbnB1dEluc3RhbmNlID8gdGhpcy5teUZvcm1JbnB1dEluc3RhbmNlIDogdGhpcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlSW5wdXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5lbGVtZW50UmVmICYmIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgIC8vdHJ5IHRvIGZpbmQgaW5wdXQgZWxlbWVudFxyXG4gICAgICB0aGlzLl9maW5kSW5wdXROb2RlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuKTtcclxuICAgICAgaWYgKHRoaXMuaW5wdXQpIHtcclxuICAgICAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCAoZXZlbnQpID0+IHRoaXMuZG9CbHVyKGV2ZW50KSk7XHJcbiAgICAgICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIChldmVudCkgPT4gdGhpcy5kb0ZvY3VzKGV2ZW50KSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2ZpbmRJbnB1dE5vZGUobm9kZXMpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IG5vZGVzW2ldO1xyXG4gICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLmlucHV0ID0gbm9kZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfSBlbHNlIGlmIChub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLl9maW5kSW5wdXROb2RlKG5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wb3NpdGlvblZhbGlkYXRpb25FcnJvcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVsZW1lbnRSZWYgJiYgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiYgdGhpcy5fZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50KSB7XHJcbiAgICAgIGNvbnN0IGNsaWVudFJlY3Q6IENsaWVudFJlY3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgdGhpcy5fZXJyb3JWYWxpZGF0aW9uQ29tcG9uZW50Lmluc3RhbmNlLnRvcCA9IGNsaWVudFJlY3QuYm90dG9tO1xyXG4gICAgICB0aGlzLl9lcnJvclZhbGlkYXRpb25Db21wb25lbnQuaW5zdGFuY2UubGVmdCA9IGNsaWVudFJlY3QubGVmdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBfaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IFByb21pc2U8YW55PiB7XHJcbiAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcclxuICAgICAgY2FzZSAnRW50ZXInOlxyXG4gICAgICBjYXNlICdOdW1wYWRFbnRlcic6XHJcbiAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSkge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9oYW5kbGVDb21taXQoKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgY2FzZSAnVGFiJzpcclxuICAgICAgICBjb25zdCBuZXh0U2libGluZ1RvRm9jdXMgPSBldmVudC5zaGlmdEtleSA/IChldmVudC5jdXJyZW50VGFyZ2V0IGFzIGFueSkucHJldmlvdXNTaWJsaW5nIDogKGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgYW55KS5uZXh0U2libGluZztcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3M6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLl9oYW5kbGVDb21taXQoKTtcclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgaWYgKG5leHRTaWJsaW5nVG9Gb2N1cykge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3NldEZvY3VzT25OZXh0UG9zc2libGVJbnB1dChuZXh0U2libGluZ1RvRm9jdXMsIGV2ZW50LnNoaWZ0S2V5KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICB0aGlzLmNhbmNlbENsaWNrKCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVOZXdGb2N1c0V2ZW50KGVsZW1lbnQ6IGFueSk6IEV2ZW50IHtcclxuICAgIGxldCBldmVudFR5cGUgPSBcIm9uZm9jdXNpblwiIGluIGVsZW1lbnQgPyBcImZvY3VzaW5cIiA6IFwiZm9jdXNcIixcclxuICAgICAgYnViYmxlcyA9IFwib25mb2N1c2luXCIgaW4gZWxlbWVudCxcclxuICAgICAgZm9jdXNFdmVudDtcclxuXHJcbiAgICBpZiAoXCJjcmVhdGVFdmVudFwiIGluIGRvY3VtZW50KSB7XHJcbiAgICAgIGZvY3VzRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50XCIpO1xyXG4gICAgICBmb2N1c0V2ZW50LmluaXRFdmVudChldmVudFR5cGUsIGJ1YmJsZXMsIHRydWUpO1xyXG4gICAgfSBlbHNlIGlmIChcIkV2ZW50XCIgaW4gd2luZG93KSB7XHJcbiAgICAgIGZvY3VzRXZlbnQgPSBuZXcgRXZlbnQoZXZlbnRUeXBlLCB7IGJ1YmJsZXM6IGJ1YmJsZXMsIGNhbmNlbGFibGU6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9jdXNFdmVudDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldEZvY3VzT25OZXh0UG9zc2libGVJbnB1dChlbGVtZW50OiBhbnksIHByZXZpb3VzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZWxlbWVudENvbGwgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpO1xyXG4gICAgaWYgKCFlbGVtZW50Q29sbCB8fCBlbGVtZW50Q29sbC5sZW5ndGggPCAxKSB7XHJcbiAgICAgZWxlbWVudENvbGwgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZXh0YXJlYScpO1xyXG4gICAgfVxyXG4gICAgaWYgKGVsZW1lbnRDb2xsICYmIGVsZW1lbnRDb2xsLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZWxlbWVudENvbGxbMF07XHJcbiAgICAgIGlmIChpbnB1dEVsZW1lbnQuZGlzYWJsZWQgfHwgaW5wdXRFbGVtZW50LnJlYWRPbmx5KSB7XHJcbiAgICAgICAgdGhpcy5fc2V0Rm9jdXNPbk5leHRQb3NzaWJsZUlucHV0KHByZXZpb3VzID8gZWxlbWVudC5wcmV2aW91c1NpYmxpbmcgOiBlbGVtZW50Lm5leHRTaWJsaW5nLCBwcmV2aW91cyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZm9jdXNFdmVudCA9IHRoaXMuX2NyZWF0ZU5ld0ZvY3VzRXZlbnQoZWxlbWVudCk7XHJcbiAgICAgICAgaW5wdXRFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgaW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQoZm9jdXNFdmVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|