@acorex/components 16.0.2 → 17.0.1
Sign up to get free protection for your applications and to get access to all the features.
- package/action-sheet/README.md +3 -0
- package/action-sheet/index.d.ts +4 -0
- package/action-sheet/lib/action-sheet.class.d.ts +31 -0
- package/action-sheet/lib/action-sheet.component.d.ts +23 -0
- package/action-sheet/lib/action-sheet.module.d.ts +16 -0
- package/action-sheet/lib/action-sheet.service.d.ts +13 -0
- package/alert/README.md +3 -0
- package/alert/index.d.ts +2 -0
- package/alert/lib/alert.component.d.ts +55 -0
- package/alert/lib/alert.module.d.ts +9 -0
- package/avatar/README.md +3 -0
- package/avatar/index.d.ts +3 -0
- package/avatar/lib/avatar-group.component.d.ts +5 -0
- package/avatar/lib/avatar.component.d.ts +17 -0
- package/avatar/lib/avatar.module.d.ts +9 -0
- package/badge/README.md +3 -0
- package/badge/index.d.ts +2 -0
- package/badge/lib/badge.component.d.ts +8 -0
- package/badge/lib/badge.module.d.ts +8 -0
- package/bottom-navigation/README.md +3 -0
- package/bottom-navigation/index.d.ts +3 -0
- package/bottom-navigation/lib/bottom-navigation-item/bottom-navigation-item.component.d.ts +15 -0
- package/bottom-navigation/lib/bottom-navigation.component.d.ts +17 -0
- package/bottom-navigation/lib/bottom-navigation.module.d.ts +9 -0
- package/breadcrumbs/README.md +3 -0
- package/breadcrumbs/index.d.ts +4 -0
- package/breadcrumbs/lib/breadcrumbs-item.class.d.ts +9 -0
- package/breadcrumbs/lib/breadcrumbs-item.component.d.ts +14 -0
- package/breadcrumbs/lib/breadcrumbs.component.d.ts +9 -0
- package/breadcrumbs/lib/breadcrumbs.module.d.ts +10 -0
- package/button/README.md +3 -0
- package/button/index.d.ts +5 -0
- package/button/lib/button-item-list.component.d.ts +19 -0
- package/button/lib/button-item.class.d.ts +24 -0
- package/button/lib/button-item.component.d.ts +30 -0
- package/button/lib/button.component.d.ts +26 -0
- package/button/lib/button.module.d.ts +13 -0
- package/button-group/README.md +3 -0
- package/button-group/index.d.ts +2 -0
- package/button-group/lib/button-group.component.d.ts +24 -0
- package/button-group/lib/button-group.module.d.ts +8 -0
- package/calendar/README.md +3 -0
- package/calendar/index.d.ts +4 -0
- package/calendar/lib/calendar-range.component.d.ts +31 -0
- package/calendar/lib/calendar.class.d.ts +80 -0
- package/calendar/lib/calendar.component.d.ts +51 -0
- package/calendar/lib/calendar.module.d.ts +11 -0
- package/chat/README.md +3 -0
- package/chat/index.d.ts +13 -0
- package/chat/lib/chat-input/chat-input.component.d.ts +35 -0
- package/chat/lib/chat-input/chat-input.interface.d.ts +10 -0
- package/chat/lib/chat-message/chat-message.component.d.ts +12 -0
- package/chat/lib/chat-messages/chat-message-audio.component.d.ts +7 -0
- package/chat/lib/chat-messages/chat-message-text.component.d.ts +8 -0
- package/chat/lib/chat-view/chat-view.component.d.ts +10 -0
- package/chat/lib/chat-voice/chat-voice.component.d.ts +6 -0
- package/chat/lib/chat.module.d.ts +29 -0
- package/chat/lib/chat.types.d.ts +21 -0
- package/chat/lib/classes/events.interface.d.ts +4 -0
- package/chat/lib/services/chat-message-type-registry.service.d.ts +9 -0
- package/chat/lib/services/chat.service.d.ts +5 -0
- package/chat/lib/services/recording.service.d.ts +20 -0
- package/check-box/README.md +3 -0
- package/check-box/index.d.ts +2 -0
- package/check-box/lib/check-box.component.d.ts +16 -0
- package/check-box/lib/check-box.module.d.ts +10 -0
- package/chips/README.md +3 -0
- package/chips/index.d.ts +2 -0
- package/chips/lib/chips.component.d.ts +11 -0
- package/chips/lib/chips.module.d.ts +8 -0
- package/circular-progress/README.md +3 -0
- package/circular-progress/index.d.ts +2 -0
- package/circular-progress/lib/circular-progress.component.d.ts +33 -0
- package/circular-progress/lib/circular-progress.module.d.ts +7 -0
- package/collapse/README.md +3 -0
- package/collapse/index.d.ts +3 -0
- package/collapse/lib/collapse-group.component.d.ts +30 -0
- package/collapse/lib/collapse.component.d.ts +46 -0
- package/collapse/lib/collapse.module.d.ts +10 -0
- package/color-box/README.md +3 -0
- package/color-box/index.d.ts +2 -0
- package/color-box/lib/color-box.component.d.ts +27 -0
- package/color-box/lib/color-box.module.d.ts +11 -0
- package/color-palette/README.md +3 -0
- package/color-palette/index.d.ts +7 -0
- package/color-palette/lib/color-palette-input.component.d.ts +25 -0
- package/color-palette/lib/color-palette-picker.component.d.ts +35 -0
- package/color-palette/lib/color-palette-preview.component.d.ts +16 -0
- package/color-palette/lib/color-palette-swatches.component.d.ts +21 -0
- package/color-palette/lib/color-palette.class.d.ts +28 -0
- package/color-palette/lib/color-palette.component.d.ts +10 -0
- package/color-palette/lib/color-palette.module.d.ts +20 -0
- package/common/README.md +3 -0
- package/common/index.d.ts +28 -0
- package/common/lib/classes/components.class.d.ts +83 -0
- package/common/lib/classes/datalist.class.d.ts +37 -0
- package/common/lib/classes/datasource.class.d.ts +78 -0
- package/common/lib/classes/events.class.d.ts +96 -0
- package/common/lib/classes/styles.class.d.ts +8 -0
- package/common/lib/common.module.d.ts +10 -0
- package/common/lib/components/base-component.class.d.ts +38 -0
- package/common/lib/components/button-base-component.class.d.ts +35 -0
- package/common/lib/components/color-component.class.d.ts +12 -0
- package/common/lib/components/colorlook-component.class.d.ts +6 -0
- package/common/lib/components/input-base-value-component.class.d.ts +27 -0
- package/common/lib/components/interactive-component.class.d.ts +42 -0
- package/common/lib/components/look-component.class.d.ts +18 -0
- package/common/lib/components/selection-base.component.class.d.ts +48 -0
- package/common/lib/components/value-component.class.d.ts +67 -0
- package/common/lib/directives/auto-focus.directive.d.ts +15 -0
- package/common/lib/directives/delayed-value-changed.directive.d.ts +17 -0
- package/common/lib/directives/hotkey.directive.d.ts +22 -0
- package/common/lib/directives/infinite-scroll.directive.d.ts +25 -0
- package/common/lib/directives/responsive.directive.d.ts +10 -0
- package/common/lib/directives/ripple.directive.d.ts +16 -0
- package/common/lib/services/dom.service.d.ts +6 -0
- package/common/lib/services/hotkey.service.d.ts +31 -0
- package/common/lib/types/direction.d.ts +4 -0
- package/common/lib/types/orientation.d.ts +4 -0
- package/common/lib/types/placement.d.ts +30 -0
- package/common/lib/types/range.d.ts +4 -0
- package/common/lib/types/selection-mode.d.ts +4 -0
- package/data-pager/README.md +3 -0
- package/data-pager/index.d.ts +9 -0
- package/data-pager/lib/data-pager-base.component.d.ts +54 -0
- package/data-pager/lib/data-pager-info.component.d.ts +11 -0
- package/data-pager/lib/data-pager-input-selector.component.d.ts +11 -0
- package/data-pager/lib/data-pager-next-buttons.components.d.ts +10 -0
- package/data-pager/lib/data-pager-numeric-selector.component.d.ts +13 -0
- package/data-pager/lib/data-pager-pagesize-dropdown.component.d.ts +14 -0
- package/data-pager/lib/data-pager-prev-buttons.component.d.ts +10 -0
- package/data-pager/lib/data-pager.component.d.ts +34 -0
- package/data-pager/lib/data-pager.module.d.ts +21 -0
- package/data-table/README.md +3 -0
- package/data-table/index.d.ts +10 -0
- package/data-table/lib/base-data-table.class.d.ts +25 -0
- package/data-table/lib/columns/data-table-column-resizable.directive.d.ts +22 -0
- package/data-table/lib/columns/data-table-column.d.ts +20 -0
- package/data-table/lib/columns/data-text-column.component.d.ts +18 -0
- package/data-table/lib/columns/row-command-column.component.d.ts +40 -0
- package/data-table/lib/columns/row-index-column.component.d.ts +18 -0
- package/data-table/lib/columns/row-select-column.component.d.ts +14 -0
- package/data-table/lib/data-table/data-table.component.d.ts +52 -0
- package/data-table/lib/data-table.module.d.ts +26 -0
- package/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.d.ts +66 -0
- package/datetime-box/README.md +3 -0
- package/datetime-box/index.d.ts +2 -0
- package/datetime-box/lib/datetime-box.component.d.ts +36 -0
- package/datetime-box/lib/datetime-box.module.d.ts +13 -0
- package/datetime-input/README.md +3 -0
- package/datetime-input/index.d.ts +2 -0
- package/datetime-input/lib/datetime-input.component.d.ts +45 -0
- package/datetime-input/lib/datetime-input.module.d.ts +10 -0
- package/datetime-picker/README.md +3 -0
- package/datetime-picker/index.d.ts +3 -0
- package/datetime-picker/lib/datetime-picker.component.d.ts +49 -0
- package/datetime-picker/lib/datetime-picker.config.d.ts +8 -0
- package/datetime-picker/lib/datetime-picker.module.d.ts +15 -0
- package/decorators/README.md +3 -0
- package/decorators/index.d.ts +5 -0
- package/decorators/lib/components/clear-button.component.d.ts +13 -0
- package/decorators/lib/components/close-button.component.d.ts +12 -0
- package/decorators/lib/components/generic-content.component.d.ts +6 -0
- package/decorators/lib/components/icon.component.d.ts +8 -0
- package/decorators/lib/decorators.module.d.ts +11 -0
- package/dialog/README.md +3 -0
- package/dialog/index.d.ts +4 -0
- package/dialog/lib/dialog.class.d.ts +36 -0
- package/dialog/lib/dialog.component.d.ts +19 -0
- package/dialog/lib/dialog.module.d.ts +16 -0
- package/dialog/lib/dialog.service.d.ts +31 -0
- package/drawer/README.md +3 -0
- package/drawer/index.d.ts +3 -0
- package/drawer/lib/drawer-container.component.d.ts +7 -0
- package/drawer/lib/drawer.component.d.ts +39 -0
- package/drawer/lib/drawer.module.d.ts +9 -0
- package/dropdown/README.md +3 -0
- package/dropdown/index.d.ts +4 -0
- package/dropdown/lib/dropdown-box.class.d.ts +15 -0
- package/dropdown/lib/dropdown-box.component.d.ts +30 -0
- package/dropdown/lib/dropdown-panel.component.d.ts +33 -0
- package/dropdown/lib/dropdown.module.d.ts +14 -0
- package/dropdown-button/README.md +3 -0
- package/dropdown-button/index.d.ts +2 -0
- package/dropdown-button/lib/dropdown-button.component.d.ts +28 -0
- package/dropdown-button/lib/dropdown-button.module.d.ts +13 -0
- package/esm2022/action-sheet/acorex-components-action-sheet.mjs +5 -0
- package/esm2022/action-sheet/index.mjs +5 -0
- package/esm2022/action-sheet/lib/action-sheet.class.mjs +2 -0
- package/esm2022/action-sheet/lib/action-sheet.component.mjs +98 -0
- package/esm2022/action-sheet/lib/action-sheet.module.mjs +54 -0
- package/esm2022/action-sheet/lib/action-sheet.service.mjs +57 -0
- package/esm2022/alert/acorex-components-alert.mjs +5 -0
- package/esm2022/alert/index.mjs +3 -0
- package/esm2022/alert/lib/alert.component.mjs +195 -0
- package/esm2022/alert/lib/alert.module.mjs +22 -0
- package/esm2022/avatar/acorex-components-avatar.mjs +5 -0
- package/esm2022/avatar/index.mjs +4 -0
- package/esm2022/avatar/lib/avatar-group.component.mjs +14 -0
- package/esm2022/avatar/lib/avatar.component.mjs +41 -0
- package/esm2022/avatar/lib/avatar.module.mjs +22 -0
- package/esm2022/badge/acorex-components-badge.mjs +5 -0
- package/esm2022/badge/index.mjs +3 -0
- package/esm2022/badge/lib/badge.component.mjs +24 -0
- package/esm2022/badge/lib/badge.module.mjs +19 -0
- package/esm2022/bottom-navigation/acorex-components-bottom-navigation.mjs +5 -0
- package/esm2022/bottom-navigation/index.mjs +4 -0
- package/esm2022/bottom-navigation/lib/bottom-navigation-item/bottom-navigation-item.component.mjs +46 -0
- package/esm2022/bottom-navigation/lib/bottom-navigation.component.mjs +49 -0
- package/esm2022/bottom-navigation/lib/bottom-navigation.module.mjs +27 -0
- package/esm2022/breadcrumbs/acorex-components-breadcrumbs.mjs +5 -0
- package/esm2022/breadcrumbs/index.mjs +5 -0
- package/esm2022/breadcrumbs/lib/breadcrumbs-item.class.mjs +2 -0
- package/esm2022/breadcrumbs/lib/breadcrumbs-item.component.mjs +36 -0
- package/esm2022/breadcrumbs/lib/breadcrumbs.component.mjs +19 -0
- package/esm2022/breadcrumbs/lib/breadcrumbs.module.mjs +21 -0
- package/esm2022/button/acorex-components-button.mjs +5 -0
- package/esm2022/button/index.mjs +6 -0
- package/esm2022/button/lib/button-item-list.component.mjs +114 -0
- package/esm2022/button/lib/button-item.class.mjs +2 -0
- package/esm2022/button/lib/button-item.component.mjs +106 -0
- package/esm2022/button/lib/button.component.mjs +98 -0
- package/esm2022/button/lib/button.module.mjs +47 -0
- package/esm2022/button-group/acorex-components-button-group.mjs +5 -0
- package/esm2022/button-group/index.mjs +3 -0
- package/esm2022/button-group/lib/button-group.component.mjs +118 -0
- package/esm2022/button-group/lib/button-group.module.mjs +21 -0
- package/esm2022/calendar/acorex-components-calendar.mjs +5 -0
- package/esm2022/calendar/index.mjs +5 -0
- package/esm2022/calendar/lib/calendar-range.component.mjs +175 -0
- package/esm2022/calendar/lib/calendar.class.mjs +176 -0
- package/esm2022/calendar/lib/calendar.component.mjs +477 -0
- package/esm2022/calendar/lib/calendar.module.mjs +24 -0
- package/esm2022/chat/acorex-components-chat.mjs +5 -0
- package/esm2022/chat/index.mjs +15 -0
- package/esm2022/chat/lib/chat-input/chat-input.component.mjs +125 -0
- package/esm2022/chat/lib/chat-input/chat-input.interface.mjs +2 -0
- package/esm2022/chat/lib/chat-message/chat-message.component.mjs +30 -0
- package/esm2022/chat/lib/chat-messages/chat-message-audio.component.mjs +17 -0
- package/esm2022/chat/lib/chat-messages/chat-message-text.component.mjs +23 -0
- package/esm2022/chat/lib/chat-view/chat-view.component.mjs +22 -0
- package/esm2022/chat/lib/chat-voice/chat-voice.component.mjs +12 -0
- package/esm2022/chat/lib/chat.module.mjs +125 -0
- package/esm2022/chat/lib/chat.types.mjs +10 -0
- package/esm2022/chat/lib/classes/events.interface.mjs +2 -0
- package/esm2022/chat/lib/services/chat-message-type-registry.service.mjs +20 -0
- package/esm2022/chat/lib/services/chat.service.mjs +10 -0
- package/esm2022/chat/lib/services/recording.service.mjs +78 -0
- package/esm2022/check-box/acorex-components-check-box.mjs +5 -0
- package/esm2022/check-box/index.mjs +3 -0
- package/esm2022/check-box/lib/check-box.component.mjs +100 -0
- package/esm2022/check-box/lib/check-box.module.mjs +21 -0
- package/esm2022/chips/acorex-components-chips.mjs +5 -0
- package/esm2022/chips/index.mjs +3 -0
- package/esm2022/chips/lib/chips.component.mjs +28 -0
- package/esm2022/chips/lib/chips.module.mjs +19 -0
- package/esm2022/circular-progress/acorex-components-circular-progress.mjs +5 -0
- package/esm2022/circular-progress/index.mjs +3 -0
- package/esm2022/circular-progress/lib/circular-progress.component.mjs +96 -0
- package/esm2022/circular-progress/lib/circular-progress.module.mjs +17 -0
- package/esm2022/collapse/acorex-components-collapse.mjs +5 -0
- package/esm2022/collapse/index.mjs +4 -0
- package/esm2022/collapse/lib/collapse-group.component.mjs +131 -0
- package/esm2022/collapse/lib/collapse.component.mjs +146 -0
- package/esm2022/collapse/lib/collapse.module.mjs +21 -0
- package/esm2022/color-box/acorex-components-color-box.mjs +5 -0
- package/esm2022/color-box/index.mjs +3 -0
- package/esm2022/color-box/lib/color-box.component.mjs +71 -0
- package/esm2022/color-box/lib/color-box.module.mjs +32 -0
- package/esm2022/color-palette/acorex-components-color-palette.mjs +5 -0
- package/esm2022/color-palette/index.mjs +8 -0
- package/esm2022/color-palette/lib/color-palette-input.component.mjs +127 -0
- package/esm2022/color-palette/lib/color-palette-picker.component.mjs +175 -0
- package/esm2022/color-palette/lib/color-palette-preview.component.mjs +71 -0
- package/esm2022/color-palette/lib/color-palette-swatches.component.mjs +95 -0
- package/esm2022/color-palette/lib/color-palette.class.mjs +238 -0
- package/esm2022/color-palette/lib/color-palette.component.mjs +66 -0
- package/esm2022/color-palette/lib/color-palette.module.mjs +63 -0
- package/esm2022/common/acorex-components-common.mjs +5 -0
- package/esm2022/common/index.mjs +29 -0
- package/esm2022/common/lib/classes/components.class.mjs +76 -0
- package/esm2022/common/lib/classes/datalist.class.mjs +50 -0
- package/esm2022/common/lib/classes/datasource.class.mjs +133 -0
- package/esm2022/common/lib/classes/events.class.mjs +79 -0
- package/esm2022/common/lib/classes/styles.class.mjs +20 -0
- package/esm2022/common/lib/common.module.mjs +38 -0
- package/esm2022/common/lib/components/base-component.class.mjs +81 -0
- package/esm2022/common/lib/components/button-base-component.class.mjs +67 -0
- package/esm2022/common/lib/components/color-component.class.mjs +25 -0
- package/esm2022/common/lib/components/colorlook-component.class.mjs +6 -0
- package/esm2022/common/lib/components/input-base-value-component.class.mjs +47 -0
- package/esm2022/common/lib/components/interactive-component.class.mjs +107 -0
- package/esm2022/common/lib/components/look-component.class.mjs +33 -0
- package/esm2022/common/lib/components/selection-base.component.class.mjs +196 -0
- package/esm2022/common/lib/components/value-component.class.mjs +223 -0
- package/esm2022/common/lib/directives/auto-focus.directive.mjs +66 -0
- package/esm2022/common/lib/directives/delayed-value-changed.directive.mjs +51 -0
- package/esm2022/common/lib/directives/hotkey.directive.mjs +81 -0
- package/esm2022/common/lib/directives/infinite-scroll.directive.mjs +61 -0
- package/esm2022/common/lib/directives/responsive.directive.mjs +42 -0
- package/esm2022/common/lib/directives/ripple.directive.mjs +62 -0
- package/esm2022/common/lib/services/dom.service.mjs +16 -0
- package/esm2022/common/lib/services/hotkey.service.mjs +53 -0
- package/esm2022/common/lib/types/direction.mjs +2 -0
- package/esm2022/common/lib/types/orientation.mjs +2 -0
- package/esm2022/common/lib/types/placement.mjs +180 -0
- package/esm2022/common/lib/types/range.mjs +2 -0
- package/esm2022/common/lib/types/selection-mode.mjs +5 -0
- package/esm2022/data-pager/acorex-components-data-pager.mjs +5 -0
- package/esm2022/data-pager/index.mjs +10 -0
- package/esm2022/data-pager/lib/data-pager-base.component.mjs +50 -0
- package/esm2022/data-pager/lib/data-pager-info.component.mjs +47 -0
- package/esm2022/data-pager/lib/data-pager-input-selector.component.mjs +73 -0
- package/esm2022/data-pager/lib/data-pager-next-buttons.components.mjs +61 -0
- package/esm2022/data-pager/lib/data-pager-numeric-selector.component.mjs +129 -0
- package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +109 -0
- package/esm2022/data-pager/lib/data-pager-prev-buttons.component.mjs +97 -0
- package/esm2022/data-pager/lib/data-pager.component.mjs +170 -0
- package/esm2022/data-pager/lib/data-pager.module.mjs +70 -0
- package/esm2022/data-table/acorex-components-data-table.mjs +5 -0
- package/esm2022/data-table/index.mjs +11 -0
- package/esm2022/data-table/lib/base-data-table.class.mjs +36 -0
- package/esm2022/data-table/lib/columns/data-table-column-resizable.directive.mjs +59 -0
- package/esm2022/data-table/lib/columns/data-table-column.mjs +38 -0
- package/esm2022/data-table/lib/columns/data-text-column.component.mjs +81 -0
- package/esm2022/data-table/lib/columns/row-command-column.component.mjs +231 -0
- package/esm2022/data-table/lib/columns/row-index-column.component.mjs +71 -0
- package/esm2022/data-table/lib/columns/row-select-column.component.mjs +61 -0
- package/esm2022/data-table/lib/data-table/data-table.component.mjs +233 -0
- package/esm2022/data-table/lib/data-table.module.mjs +107 -0
- package/esm2022/data-table/lib/infinite-scroll-data-table/infinite-scroll-data-table.component.mjs +272 -0
- package/esm2022/datetime-box/acorex-components-datetime-box.mjs +5 -0
- package/esm2022/datetime-box/index.mjs +3 -0
- package/esm2022/datetime-box/lib/datetime-box.component.mjs +110 -0
- package/esm2022/datetime-box/lib/datetime-box.module.mjs +38 -0
- package/esm2022/datetime-input/acorex-components-datetime-input.mjs +5 -0
- package/esm2022/datetime-input/index.mjs +3 -0
- package/esm2022/datetime-input/lib/datetime-input.component.mjs +553 -0
- package/esm2022/datetime-input/lib/datetime-input.module.mjs +23 -0
- package/esm2022/datetime-picker/acorex-components-datetime-picker.mjs +5 -0
- package/esm2022/datetime-picker/index.mjs +4 -0
- package/esm2022/datetime-picker/lib/datetime-picker.component.mjs +266 -0
- package/esm2022/datetime-picker/lib/datetime-picker.config.mjs +22 -0
- package/esm2022/datetime-picker/lib/datetime-picker.module.mjs +44 -0
- package/esm2022/decorators/acorex-components-decorators.mjs +5 -0
- package/esm2022/decorators/index.mjs +6 -0
- package/esm2022/decorators/lib/components/clear-button.component.mjs +70 -0
- package/esm2022/decorators/lib/components/close-button.component.mjs +52 -0
- package/esm2022/decorators/lib/components/generic-content.component.mjs +38 -0
- package/esm2022/decorators/lib/components/icon.component.mjs +25 -0
- package/esm2022/decorators/lib/decorators.module.mjs +35 -0
- package/esm2022/dialog/acorex-components-dialog.mjs +5 -0
- package/esm2022/dialog/index.mjs +5 -0
- package/esm2022/dialog/lib/dialog.class.mjs +2 -0
- package/esm2022/dialog/lib/dialog.component.mjs +62 -0
- package/esm2022/dialog/lib/dialog.module.mjs +48 -0
- package/esm2022/dialog/lib/dialog.service.mjs +164 -0
- package/esm2022/drawer/acorex-components-drawer.mjs +5 -0
- package/esm2022/drawer/index.mjs +4 -0
- package/esm2022/drawer/lib/drawer-container.component.mjs +33 -0
- package/esm2022/drawer/lib/drawer.component.mjs +151 -0
- package/esm2022/drawer/lib/drawer.module.mjs +22 -0
- package/esm2022/dropdown/acorex-components-dropdown.mjs +5 -0
- package/esm2022/dropdown/index.mjs +5 -0
- package/esm2022/dropdown/lib/dropdown-box.class.mjs +38 -0
- package/esm2022/dropdown/lib/dropdown-box.component.mjs +103 -0
- package/esm2022/dropdown/lib/dropdown-panel.component.mjs +145 -0
- package/esm2022/dropdown/lib/dropdown.module.mjs +42 -0
- package/esm2022/dropdown-button/acorex-components-dropdown-button.mjs +5 -0
- package/esm2022/dropdown-button/index.mjs +3 -0
- package/esm2022/dropdown-button/lib/dropdown-button.component.mjs +97 -0
- package/esm2022/dropdown-button/lib/dropdown-button.module.mjs +45 -0
- package/esm2022/form/acorex-components-form.mjs +5 -0
- package/esm2022/form/index.mjs +7 -0
- package/esm2022/form/lib/form-field.component.mjs +40 -0
- package/esm2022/form/lib/form.component.mjs +122 -0
- package/esm2022/form/lib/form.config.mjs +16 -0
- package/esm2022/form/lib/form.module.mjs +60 -0
- package/esm2022/form/lib/validation-rule.directive.mjs +36 -0
- package/esm2022/form/lib/validation-summary.component.mjs +133 -0
- package/esm2022/image/acorex-components-image.mjs +5 -0
- package/esm2022/image/index.mjs +3 -0
- package/esm2022/image/lib/image.component.mjs +72 -0
- package/esm2022/image/lib/image.module.mjs +19 -0
- package/esm2022/index.mjs +2 -158
- package/esm2022/label/acorex-components-label.mjs +5 -0
- package/esm2022/label/index.mjs +3 -0
- package/esm2022/label/lib/label.component.mjs +47 -0
- package/esm2022/label/lib/label.module.mjs +21 -0
- package/esm2022/list/acorex-components-list.mjs +5 -0
- package/esm2022/list/index.mjs +3 -0
- package/esm2022/list/lib/list.component.mjs +184 -0
- package/esm2022/list/lib/list.module.mjs +23 -0
- package/esm2022/loading/acorex-components-loading.mjs +5 -0
- package/esm2022/loading/index.mjs +7 -0
- package/esm2022/loading/lib/loading-spinner.component.mjs +44 -0
- package/esm2022/loading/lib/loading.component.mjs +62 -0
- package/esm2022/loading/lib/loading.config.mjs +17 -0
- package/esm2022/loading/lib/loading.directive.mjs +39 -0
- package/esm2022/loading/lib/loading.module.mjs +35 -0
- package/esm2022/loading/lib/loading.service.mjs +129 -0
- package/esm2022/loading-dialog/acorex-components-loading-dialog.mjs +5 -0
- package/esm2022/loading-dialog/index.mjs +5 -0
- package/esm2022/loading-dialog/lib/loading-dialog.class.mjs +2 -0
- package/esm2022/loading-dialog/lib/loading-dialog.component.mjs +63 -0
- package/esm2022/loading-dialog/lib/loading-dialog.module.mjs +46 -0
- package/esm2022/loading-dialog/lib/loading-dialog.service.mjs +37 -0
- package/esm2022/menu/acorex-components-menu.mjs +5 -0
- package/esm2022/menu/index.mjs +5 -0
- package/esm2022/menu/lib/class/root-menu.class.mjs +3 -0
- package/esm2022/menu/lib/menu-item/menu-item.component.mjs +140 -0
- package/esm2022/menu/lib/menu.component.mjs +48 -0
- package/esm2022/menu/lib/menu.module.mjs +37 -0
- package/esm2022/nav/acorex-components-nav.mjs +5 -0
- package/esm2022/nav/index.mjs +4 -0
- package/esm2022/nav/lib/nav-item/nav-item.component.mjs +41 -0
- package/esm2022/nav/lib/nav.component.mjs +12 -0
- package/esm2022/nav/lib/nav.module.mjs +23 -0
- package/esm2022/navbar/acorex-components-navbar.mjs +5 -0
- package/esm2022/navbar/index.mjs +3 -0
- package/esm2022/navbar/lib/navbar.component.mjs +18 -0
- package/esm2022/navbar/lib/navbar.module.mjs +18 -0
- package/esm2022/notification/acorex-components-notification.mjs +5 -0
- package/esm2022/notification/index.mjs +6 -0
- package/esm2022/notification/lib/notification.class.mjs +2 -0
- package/esm2022/notification/lib/notification.component.mjs +105 -0
- package/esm2022/notification/lib/notification.config.mjs +20 -0
- package/esm2022/notification/lib/notification.module.mjs +42 -0
- package/esm2022/notification/lib/notification.service.mjs +102 -0
- package/esm2022/number-box/acorex-components-number-box.mjs +5 -0
- package/esm2022/number-box/index.mjs +3 -0
- package/esm2022/number-box/lib/number-box.component.mjs +294 -0
- package/esm2022/number-box/lib/number-box.module.mjs +35 -0
- package/esm2022/otp/acorex-components-otp.mjs +5 -0
- package/esm2022/otp/index.mjs +4 -0
- package/esm2022/otp/lib/otp.class.mjs +4 -0
- package/esm2022/otp/lib/otp.component.mjs +158 -0
- package/esm2022/otp/lib/otp.module.mjs +22 -0
- package/esm2022/page/acorex-components-page.mjs +5 -0
- package/esm2022/page/index.mjs +4 -0
- package/esm2022/page/lib/base-page.class.mjs +62 -0
- package/esm2022/page/lib/page.component.mjs +44 -0
- package/esm2022/page/lib/page.module.mjs +18 -0
- package/esm2022/password-box/acorex-components-password-box.mjs +5 -0
- package/esm2022/password-box/index.mjs +3 -0
- package/esm2022/password-box/lib/password-box.component.mjs +94 -0
- package/esm2022/password-box/lib/password-box.module.mjs +24 -0
- package/esm2022/phone-box/acorex-components-phone-box.mjs +5 -0
- package/esm2022/phone-box/index.mjs +3 -0
- package/esm2022/phone-box/lib/phone-box.component.mjs +135 -0
- package/esm2022/phone-box/lib/phone-box.module.mjs +44 -0
- package/esm2022/picker/acorex-components-picker.mjs +5 -0
- package/esm2022/picker/index.mjs +4 -0
- package/esm2022/picker/lib/picker-column.directive.mjs +66 -0
- package/esm2022/picker/lib/picker.component.mjs +164 -0
- package/esm2022/picker/lib/picker.module.mjs +22 -0
- package/esm2022/popover/acorex-components-popover.mjs +5 -0
- package/esm2022/popover/index.mjs +3 -0
- package/esm2022/popover/lib/popover.component.mjs +379 -0
- package/esm2022/popover/lib/popover.module.mjs +19 -0
- package/esm2022/popup/acorex-components-popup.mjs +5 -0
- package/esm2022/popup/index.mjs +5 -0
- package/esm2022/popup/lib/popup.component.mjs +153 -0
- package/esm2022/popup/lib/popup.interface.mjs +2 -0
- package/esm2022/popup/lib/popup.module.mjs +45 -0
- package/esm2022/popup/lib/popup.service.mjs +65 -0
- package/esm2022/progress-bar/acorex-components-progress-bar.mjs +5 -0
- package/esm2022/progress-bar/index.mjs +3 -0
- package/esm2022/progress-bar/lib/progress-bar.component.mjs +57 -0
- package/esm2022/progress-bar/lib/progress-bar.module.mjs +19 -0
- package/esm2022/radio/acorex-components-radio.mjs +5 -0
- package/esm2022/radio/index.mjs +3 -0
- package/esm2022/radio/lib/radio.component.mjs +62 -0
- package/esm2022/radio/lib/radio.module.mjs +22 -0
- package/esm2022/range-slider/acorex-components-range-slider.mjs +5 -0
- package/esm2022/range-slider/index.mjs +3 -0
- package/esm2022/range-slider/lib/range-slider.component.mjs +117 -0
- package/esm2022/range-slider/lib/range-slider.module.mjs +23 -0
- package/esm2022/result/acorex-components-result.mjs +5 -0
- package/esm2022/result/index.mjs +3 -0
- package/esm2022/result/lib/result.component.mjs +27 -0
- package/esm2022/result/lib/result.module.mjs +19 -0
- package/esm2022/routing-progress/acorex-components-routing-progress.mjs +5 -0
- package/esm2022/routing-progress/index.mjs +3 -0
- package/esm2022/routing-progress/lib/routing-progress.component.mjs +57 -0
- package/esm2022/routing-progress/lib/routing-progress.module.mjs +21 -0
- package/esm2022/scheduler/acorex-components-scheduler.mjs +5 -0
- package/esm2022/scheduler/index.mjs +5 -0
- package/esm2022/scheduler/lib/scheduler-month-view.component.mjs +53 -0
- package/esm2022/scheduler/lib/scheduler-week-view.component.mjs +12 -0
- package/esm2022/scheduler/lib/scheduler.component.mjs +43 -0
- package/esm2022/scheduler/lib/scheduler.module.mjs +45 -0
- package/esm2022/scss/acorex-components-scss.mjs +5 -0
- package/esm2022/scss/index.mjs +2 -0
- package/esm2022/scss/lib/scss.module.mjs +15 -0
- package/esm2022/search-box/acorex-components-search-box.mjs +5 -0
- package/esm2022/search-box/index.mjs +3 -0
- package/esm2022/search-box/lib/search-box.component.mjs +87 -0
- package/esm2022/search-box/lib/search-box.module.mjs +46 -0
- package/esm2022/select-box/acorex-components-select-box.mjs +5 -0
- package/esm2022/select-box/index.mjs +3 -0
- package/esm2022/select-box/lib/select-box.component.mjs +299 -0
- package/esm2022/select-box/lib/select-box.module.mjs +69 -0
- package/esm2022/selection-list/acorex-components-selection-list.mjs +5 -0
- package/esm2022/selection-list/index.mjs +3 -0
- package/esm2022/selection-list/lib/selection-list.component.mjs +135 -0
- package/esm2022/selection-list/lib/selection-list.module.mjs +41 -0
- package/esm2022/side-menu/acorex-components-side-menu.mjs +5 -0
- package/esm2022/side-menu/index.mjs +4 -0
- package/esm2022/side-menu/lib/side-menu-item/side-menu-item.compoent.mjs +147 -0
- package/esm2022/side-menu/lib/side-menu.component.mjs +12 -0
- package/esm2022/side-menu/lib/side-menu.module.mjs +25 -0
- package/esm2022/skeleton/acorex-components-skeleton.mjs +5 -0
- package/esm2022/skeleton/index.mjs +3 -0
- package/esm2022/skeleton/lib/skeleton.component.mjs +24 -0
- package/esm2022/skeleton/lib/skeleton.module.mjs +18 -0
- package/esm2022/step-wizard/acorex-components-step-wizard.mjs +5 -0
- package/esm2022/step-wizard/index.mjs +6 -0
- package/esm2022/step-wizard/lib/step-wizard-item/step-wizard-item.component.mjs +66 -0
- package/esm2022/step-wizard/lib/step-wizard.class.mjs +2 -0
- package/esm2022/step-wizard/lib/step-wizard.component.mjs +102 -0
- package/esm2022/step-wizard/lib/step-wizard.directive.mjs +28 -0
- package/esm2022/step-wizard/lib/step-wizard.module.mjs +33 -0
- package/esm2022/switch/acorex-components-switch.mjs +5 -0
- package/esm2022/switch/index.mjs +4 -0
- package/esm2022/switch/lib/switch-content.component.mjs +15 -0
- package/esm2022/switch/lib/switch.component.mjs +51 -0
- package/esm2022/switch/lib/switch.module.mjs +21 -0
- package/esm2022/tabs/acorex-components-tabs.mjs +5 -0
- package/esm2022/tabs/index.mjs +6 -0
- package/esm2022/tabs/lib/tab-content.directive.mjs +28 -0
- package/esm2022/tabs/lib/tab-item.component.mjs +121 -0
- package/esm2022/tabs/lib/tabs.class.mjs +4 -0
- package/esm2022/tabs/lib/tabs.component.mjs +99 -0
- package/esm2022/tabs/lib/tabs.module.mjs +25 -0
- package/esm2022/tag/acorex-components-tag.mjs +5 -0
- package/esm2022/tag/index.mjs +3 -0
- package/esm2022/tag/lib/tag.component.mjs +20 -0
- package/esm2022/tag/lib/tag.module.mjs +19 -0
- package/esm2022/text-area/acorex-components-text-area.mjs +5 -0
- package/esm2022/text-area/index.mjs +3 -0
- package/esm2022/text-area/lib/text-area.component.mjs +65 -0
- package/esm2022/text-area/lib/text-area.module.mjs +19 -0
- package/esm2022/text-box/acorex-components-text-box.mjs +5 -0
- package/esm2022/text-box/index.mjs +4 -0
- package/esm2022/text-box/lib/mask-options.directive.mjs +17 -0
- package/esm2022/text-box/lib/text-box.component.mjs +131 -0
- package/esm2022/text-box/lib/text-box.module.mjs +38 -0
- package/esm2022/toast/acorex-components-toast.mjs +5 -0
- package/esm2022/toast/index.mjs +6 -0
- package/esm2022/toast/lib/toast.class.mjs +2 -0
- package/esm2022/toast/lib/toast.component.mjs +81 -0
- package/esm2022/toast/lib/toast.config.mjs +25 -0
- package/esm2022/toast/lib/toast.module.mjs +39 -0
- package/esm2022/toast/lib/toast.service.mjs +139 -0
- package/esm2022/tooltip/acorex-components-tooltip.mjs +5 -0
- package/esm2022/tooltip/index.mjs +4 -0
- package/esm2022/tooltip/lib/tooltip.component.mjs +16 -0
- package/esm2022/tooltip/lib/tooltip.directive.mjs +80 -0
- package/esm2022/tooltip/lib/tooltip.module.mjs +22 -0
- package/esm2022/uploader/acorex-components-uploader.mjs +5 -0
- package/esm2022/uploader/index.mjs +8 -0
- package/esm2022/uploader/lib/uploader-browse-handle.directive.mjs +27 -0
- package/esm2022/uploader/lib/uploader-dialog-container.component.mjs +40 -0
- package/esm2022/uploader/lib/uploader-drop-zone.component.mjs +14 -0
- package/esm2022/uploader/lib/uploader-list.component.mjs +21 -0
- package/esm2022/uploader/lib/uploader-zone.directive.mjs +79 -0
- package/esm2022/uploader/lib/uploader.models.mjs +68 -0
- package/esm2022/uploader/lib/uploader.module.mjs +84 -0
- package/esm2022/uploader/lib/uploader.service.mjs +86 -0
- package/fesm2022/acorex-components-action-sheet.mjs +205 -0
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -0
- package/fesm2022/acorex-components-alert.mjs +220 -0
- package/fesm2022/acorex-components-alert.mjs.map +1 -0
- package/fesm2022/acorex-components-avatar.mjs +78 -0
- package/fesm2022/acorex-components-avatar.mjs.map +1 -0
- package/fesm2022/acorex-components-badge.mjs +47 -0
- package/fesm2022/acorex-components-badge.mjs.map +1 -0
- package/fesm2022/acorex-components-bottom-navigation.mjs +120 -0
- package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -0
- package/fesm2022/acorex-components-breadcrumbs.mjs +73 -0
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -0
- package/fesm2022/acorex-components-button-group.mjs +143 -0
- package/fesm2022/acorex-components-button-group.mjs.map +1 -0
- package/fesm2022/acorex-components-button.mjs +356 -0
- package/fesm2022/acorex-components-button.mjs.map +1 -0
- package/fesm2022/acorex-components-calendar.mjs +840 -0
- package/fesm2022/acorex-components-calendar.mjs.map +1 -0
- package/fesm2022/acorex-components-chat.mjs +441 -0
- package/fesm2022/acorex-components-chat.mjs.map +1 -0
- package/fesm2022/acorex-components-check-box.mjs +124 -0
- package/fesm2022/acorex-components-check-box.mjs.map +1 -0
- package/fesm2022/acorex-components-chips.mjs +51 -0
- package/fesm2022/acorex-components-chips.mjs.map +1 -0
- package/fesm2022/acorex-components-circular-progress.mjs +117 -0
- package/fesm2022/acorex-components-circular-progress.mjs.map +1 -0
- package/fesm2022/acorex-components-collapse.mjs +296 -0
- package/fesm2022/acorex-components-collapse.mjs.map +1 -0
- package/fesm2022/acorex-components-color-box.mjs +104 -0
- package/fesm2022/acorex-components-color-box.mjs.map +1 -0
- package/fesm2022/acorex-components-color-palette.mjs +800 -0
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -0
- package/fesm2022/acorex-components-common.mjs +1737 -0
- package/fesm2022/acorex-components-common.mjs.map +1 -0
- package/fesm2022/acorex-components-data-pager.mjs +758 -0
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -0
- package/fesm2022/acorex-components-data-table.mjs +1143 -0
- package/fesm2022/acorex-components-data-table.mjs.map +1 -0
- package/fesm2022/acorex-components-datetime-box.mjs +147 -0
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -0
- package/fesm2022/acorex-components-datetime-input.mjs +578 -0
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -0
- package/fesm2022/acorex-components-datetime-picker.mjs +328 -0
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -0
- package/fesm2022/acorex-components-decorators.mjs +210 -0
- package/fesm2022/acorex-components-decorators.mjs.map +1 -0
- package/fesm2022/acorex-components-dialog.mjs +271 -0
- package/fesm2022/acorex-components-dialog.mjs.map +1 -0
- package/fesm2022/acorex-components-drawer.mjs +206 -0
- package/fesm2022/acorex-components-drawer.mjs.map +1 -0
- package/fesm2022/acorex-components-dropdown-button.mjs +145 -0
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -0
- package/fesm2022/acorex-components-dropdown.mjs +319 -0
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -0
- package/fesm2022/acorex-components-form.mjs +394 -0
- package/fesm2022/acorex-components-form.mjs.map +1 -0
- package/fesm2022/acorex-components-image.mjs +95 -0
- package/fesm2022/acorex-components-image.mjs.map +1 -0
- package/fesm2022/acorex-components-label.mjs +72 -0
- package/fesm2022/acorex-components-label.mjs.map +1 -0
- package/fesm2022/acorex-components-list.mjs +210 -0
- package/fesm2022/acorex-components-list.mjs.map +1 -0
- package/fesm2022/acorex-components-loading-dialog.mjs +144 -0
- package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -0
- package/fesm2022/acorex-components-loading.mjs +313 -0
- package/fesm2022/acorex-components-loading.mjs.map +1 -0
- package/fesm2022/acorex-components-menu.mjs +224 -0
- package/fesm2022/acorex-components-menu.mjs.map +1 -0
- package/fesm2022/acorex-components-nav.mjs +75 -0
- package/fesm2022/acorex-components-nav.mjs.map +1 -0
- package/fesm2022/acorex-components-navbar.mjs +40 -0
- package/fesm2022/acorex-components-navbar.mjs.map +1 -0
- package/fesm2022/acorex-components-notification.mjs +264 -0
- package/fesm2022/acorex-components-notification.mjs.map +1 -0
- package/fesm2022/acorex-components-number-box.mjs +331 -0
- package/fesm2022/acorex-components-number-box.mjs.map +1 -0
- package/fesm2022/acorex-components-otp.mjs +186 -0
- package/fesm2022/acorex-components-otp.mjs.map +1 -0
- package/fesm2022/acorex-components-page.mjs +125 -0
- package/fesm2022/acorex-components-page.mjs.map +1 -0
- package/fesm2022/acorex-components-password-box.mjs +121 -0
- package/fesm2022/acorex-components-password-box.mjs.map +1 -0
- package/fesm2022/acorex-components-phone-box.mjs +182 -0
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -0
- package/fesm2022/acorex-components-picker.mjs +251 -0
- package/fesm2022/acorex-components-picker.mjs.map +1 -0
- package/fesm2022/acorex-components-popover.mjs +402 -0
- package/fesm2022/acorex-components-popover.mjs.map +1 -0
- package/fesm2022/acorex-components-popup.mjs +256 -0
- package/fesm2022/acorex-components-popup.mjs.map +1 -0
- package/fesm2022/acorex-components-progress-bar.mjs +80 -0
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -0
- package/fesm2022/acorex-components-radio.mjs +87 -0
- package/fesm2022/acorex-components-radio.mjs.map +1 -0
- package/fesm2022/acorex-components-range-slider.mjs +142 -0
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -0
- package/fesm2022/acorex-components-result.mjs +50 -0
- package/fesm2022/acorex-components-result.mjs.map +1 -0
- package/fesm2022/acorex-components-routing-progress.mjs +82 -0
- package/fesm2022/acorex-components-routing-progress.mjs.map +1 -0
- package/fesm2022/acorex-components-scheduler.mjs +142 -0
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -0
- package/fesm2022/acorex-components-scss.mjs +22 -0
- package/fesm2022/acorex-components-scss.mjs.map +1 -0
- package/fesm2022/acorex-components-search-box.mjs +135 -0
- package/fesm2022/acorex-components-search-box.mjs.map +1 -0
- package/fesm2022/acorex-components-select-box.mjs +368 -0
- package/fesm2022/acorex-components-select-box.mjs.map +1 -0
- package/fesm2022/acorex-components-selection-list.mjs +179 -0
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -0
- package/fesm2022/acorex-components-side-menu.mjs +183 -0
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -0
- package/fesm2022/acorex-components-skeleton.mjs +46 -0
- package/fesm2022/acorex-components-skeleton.mjs.map +1 -0
- package/fesm2022/acorex-components-step-wizard.mjs +224 -0
- package/fesm2022/acorex-components-step-wizard.mjs.map +1 -0
- package/fesm2022/acorex-components-switch.mjs +86 -0
- package/fesm2022/acorex-components-switch.mjs.map +1 -0
- package/fesm2022/acorex-components-tabs.mjs +271 -0
- package/fesm2022/acorex-components-tabs.mjs.map +1 -0
- package/fesm2022/acorex-components-tag.mjs +43 -0
- package/fesm2022/acorex-components-tag.mjs.map +1 -0
- package/fesm2022/acorex-components-text-area.mjs +87 -0
- package/fesm2022/acorex-components-text-area.mjs.map +1 -0
- package/fesm2022/acorex-components-text-box.mjs +184 -0
- package/fesm2022/acorex-components-text-box.mjs.map +1 -0
- package/fesm2022/acorex-components-toast.mjs +280 -0
- package/fesm2022/acorex-components-toast.mjs.map +1 -0
- package/fesm2022/acorex-components-tooltip.mjs +117 -0
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -0
- package/fesm2022/acorex-components-uploader.mjs +399 -0
- package/fesm2022/acorex-components-uploader.mjs.map +1 -0
- package/fesm2022/acorex-components.mjs +2 -17392
- package/fesm2022/acorex-components.mjs.map +1 -1
- package/form/README.md +3 -0
- package/form/index.d.ts +6 -0
- package/form/lib/form-field.component.d.ts +12 -0
- package/form/lib/form.component.d.ts +42 -0
- package/form/lib/form.config.d.ts +7 -0
- package/form/lib/form.module.d.ts +16 -0
- package/form/lib/validation-rule.directive.d.ts +16 -0
- package/form/lib/validation-summary.component.d.ts +25 -0
- package/image/README.md +3 -0
- package/image/index.d.ts +2 -0
- package/image/lib/image.component.d.ts +21 -0
- package/image/lib/image.module.d.ts +8 -0
- package/index.d.ts +1 -155
- package/label/README.md +3 -0
- package/label/index.d.ts +2 -0
- package/label/lib/label.component.d.ts +14 -0
- package/list/README.md +3 -0
- package/list/index.d.ts +2 -0
- package/list/lib/list.component.d.ts +39 -0
- package/list/lib/list.module.d.ts +10 -0
- package/loading/README.md +3 -0
- package/loading/index.d.ts +6 -0
- package/loading/lib/loading-spinner.component.d.ts +10 -0
- package/loading/lib/loading.component.d.ts +18 -0
- package/loading/lib/loading.config.d.ts +8 -0
- package/loading/lib/loading.directive.d.ts +15 -0
- package/loading/lib/loading.module.d.ts +13 -0
- package/loading/lib/loading.service.d.ts +29 -0
- package/loading-dialog/README.md +3 -0
- package/loading-dialog/index.d.ts +4 -0
- package/loading-dialog/lib/loading-dialog.class.d.ts +35 -0
- package/loading-dialog/lib/loading-dialog.component.d.ts +25 -0
- package/loading-dialog/lib/loading-dialog.module.d.ts +14 -0
- package/loading-dialog/lib/loading-dialog.service.d.ts +8 -0
- package/menu/README.md +3 -0
- package/menu/index.d.ts +4 -0
- package/menu/lib/class/root-menu.class.d.ts +6 -0
- package/menu/lib/menu-item/menu-item.component.d.ts +37 -0
- package/menu/lib/menu.component.d.ts +14 -0
- package/menu/lib/menu.module.d.ts +14 -0
- package/nav/README.md +3 -0
- package/nav/index.d.ts +3 -0
- package/nav/lib/nav-item/nav-item.component.d.ts +15 -0
- package/nav/lib/nav.component.d.ts +6 -0
- package/nav/lib/nav.module.d.ts +10 -0
- package/navbar/README.md +3 -0
- package/navbar/index.d.ts +2 -0
- package/navbar/lib/navbar.component.d.ts +7 -0
- package/navbar/lib/navbar.module.d.ts +8 -0
- package/notification/README.md +3 -0
- package/notification/index.d.ts +5 -0
- package/notification/lib/notification.class.d.ts +40 -0
- package/notification/lib/notification.component.d.ts +29 -0
- package/notification/lib/notification.config.d.ts +13 -0
- package/notification/lib/notification.module.d.ts +14 -0
- package/notification/lib/notification.service.d.ts +12 -0
- package/number-box/README.md +3 -0
- package/number-box/index.d.ts +2 -0
- package/number-box/lib/number-box.component.d.ts +80 -0
- package/number-box/lib/number-box.module.d.ts +12 -0
- package/otp/README.md +3 -0
- package/otp/index.d.ts +3 -0
- package/otp/lib/otp.class.d.ts +5 -0
- package/otp/lib/otp.component.d.ts +31 -0
- package/otp/lib/otp.module.d.ts +9 -0
- package/package.json +403 -6
- package/page/README.md +3 -0
- package/page/index.d.ts +3 -0
- package/page/lib/base-page.class.d.ts +22 -0
- package/page/lib/page.component.d.ts +14 -0
- package/page/lib/page.module.d.ts +6 -0
- package/password-box/README.md +3 -0
- package/password-box/index.d.ts +2 -0
- package/password-box/lib/password-box.component.d.ts +29 -0
- package/password-box/lib/password-box.module.d.ts +11 -0
- package/phone-box/README.md +3 -0
- package/phone-box/index.d.ts +2 -0
- package/phone-box/lib/phone-box.component.d.ts +30 -0
- package/phone-box/lib/phone-box.module.d.ts +15 -0
- package/picker/README.md +3 -0
- package/picker/index.d.ts +3 -0
- package/picker/lib/picker-column.directive.d.ts +16 -0
- package/picker/lib/picker.component.d.ts +31 -0
- package/picker/lib/picker.module.d.ts +9 -0
- package/popover/README.md +3 -0
- package/popover/index.d.ts +2 -0
- package/popover/lib/popover.component.d.ts +72 -0
- package/popup/README.md +3 -0
- package/popup/index.d.ts +4 -0
- package/popup/lib/popup.component.d.ts +40 -0
- package/popup/lib/popup.interface.d.ts +28 -0
- package/popup/lib/popup.module.d.ts +15 -0
- package/popup/lib/popup.service.d.ts +21 -0
- package/progress-bar/README.md +3 -0
- package/progress-bar/index.d.ts +2 -0
- package/progress-bar/lib/progress-bar.component.d.ts +25 -0
- package/radio/README.md +3 -0
- package/radio/index.d.ts +2 -0
- package/radio/lib/radio.component.d.ts +16 -0
- package/radio/lib/radio.module.d.ts +9 -0
- package/range-slider/README.md +3 -0
- package/range-slider/index.d.ts +2 -0
- package/range-slider/lib/range-slider.component.d.ts +40 -0
- package/range-slider/lib/range-slider.module.d.ts +10 -0
- package/result/README.md +3 -0
- package/result/index.d.ts +2 -0
- package/result/lib/result.component.d.ts +10 -0
- package/result/lib/result.module.d.ts +8 -0
- package/routing-progress/README.md +3 -0
- package/routing-progress/index.d.ts +2 -0
- package/routing-progress/lib/routing-progress.component.d.ts +14 -0
- package/routing-progress/lib/routing-progress.module.d.ts +8 -0
- package/scheduler/README.md +3 -0
- package/scheduler/index.d.ts +4 -0
- package/scheduler/lib/scheduler-month-view.component.d.ts +21 -0
- package/scheduler/lib/scheduler-week-view.component.d.ts +6 -0
- package/scheduler/lib/scheduler.component.d.ts +17 -0
- package/scheduler/lib/scheduler.module.d.ts +14 -0
- package/scss/README.md +3 -0
- package/scss/index.d.ts +1 -0
- package/scss/lib/scss.module.d.ts +7 -0
- package/search-box/README.md +3 -0
- package/search-box/index.d.ts +2 -0
- package/search-box/lib/search-box.component.d.ts +17 -0
- package/search-box/lib/search-box.module.d.ts +14 -0
- package/select-box/README.md +3 -0
- package/select-box/index.d.ts +2 -0
- package/select-box/lib/select-box.component.d.ts +60 -0
- package/select-box/lib/select-box.module.d.ts +20 -0
- package/selection-list/README.md +3 -0
- package/selection-list/index.d.ts +2 -0
- package/selection-list/lib/selection-list.component.d.ts +30 -0
- package/selection-list/lib/selection-list.module.d.ts +13 -0
- package/side-menu/README.md +3 -0
- package/side-menu/index.d.ts +3 -0
- package/side-menu/lib/side-menu-item/side-menu-item.compoent.d.ts +48 -0
- package/side-menu/lib/side-menu.component.d.ts +6 -0
- package/side-menu/lib/side-menu.module.d.ts +12 -0
- package/skeleton/README.md +3 -0
- package/skeleton/index.d.ts +2 -0
- package/skeleton/lib/skeleton.component.d.ts +8 -0
- package/skeleton/lib/skeleton.module.d.ts +8 -0
- package/step-wizard/README.md +3 -0
- package/step-wizard/index.d.ts +5 -0
- package/step-wizard/lib/step-wizard-item/step-wizard-item.component.d.ts +23 -0
- package/step-wizard/lib/step-wizard.class.d.ts +5 -0
- package/step-wizard/lib/step-wizard.component.d.ts +28 -0
- package/step-wizard/lib/step-wizard.directive.d.ts +11 -0
- package/step-wizard/lib/step-wizard.module.d.ts +12 -0
- package/switch/README.md +3 -0
- package/switch/index.d.ts +3 -0
- package/switch/lib/switch-content.component.d.ts +6 -0
- package/switch/lib/switch.component.d.ts +15 -0
- package/switch/lib/switch.module.d.ts +10 -0
- package/tabs/README.md +3 -0
- package/tabs/index.d.ts +5 -0
- package/tabs/lib/tab-content.directive.d.ts +11 -0
- package/tabs/lib/tab-item.component.d.ts +18 -0
- package/tabs/lib/tabs.class.d.ts +8 -0
- package/tabs/lib/tabs.component.d.ts +27 -0
- package/tabs/lib/tabs.module.d.ts +12 -0
- package/tag/README.md +3 -0
- package/tag/index.d.ts +2 -0
- package/tag/lib/tag.component.d.ts +8 -0
- package/tag/lib/tag.module.d.ts +8 -0
- package/text-area/README.md +3 -0
- package/text-area/index.d.ts +2 -0
- package/text-area/lib/text-area.component.d.ts +19 -0
- package/text-area/lib/text-area.module.d.ts +9 -0
- package/text-box/README.md +3 -0
- package/text-box/index.d.ts +3 -0
- package/text-box/lib/mask-options.directive.d.ts +13 -0
- package/text-box/lib/text-box.component.d.ts +33 -0
- package/text-box/lib/text-box.module.d.ts +13 -0
- package/toast/README.md +3 -0
- package/toast/index.d.ts +5 -0
- package/toast/lib/toast.class.d.ts +24 -0
- package/toast/lib/toast.component.d.ts +27 -0
- package/toast/lib/toast.config.d.ts +12 -0
- package/toast/lib/toast.module.d.ts +13 -0
- package/toast/lib/toast.service.d.ts +21 -0
- package/tooltip/README.md +3 -0
- package/tooltip/index.d.ts +3 -0
- package/tooltip/lib/tooltip.component.d.ts +8 -0
- package/tooltip/lib/tooltip.directive.d.ts +22 -0
- package/tooltip/lib/tooltip.module.d.ts +10 -0
- package/uploader/README.md +3 -0
- package/uploader/index.d.ts +7 -0
- package/uploader/lib/uploader-browse-handle.directive.d.ts +11 -0
- package/uploader/lib/uploader-dialog-container.component.d.ts +9 -0
- package/uploader/lib/uploader-drop-zone.component.d.ts +6 -0
- package/uploader/lib/uploader-list.component.d.ts +8 -0
- package/uploader/lib/uploader-zone.directive.d.ts +24 -0
- package/uploader/lib/uploader.models.d.ts +19 -0
- package/uploader/lib/uploader.module.d.ts +22 -0
- package/uploader/lib/uploader.service.d.ts +21 -0
- package/esm2022/lib/accordion/accordion.component.mjs +0 -45
- package/esm2022/lib/accordion/accordion.module.mjs +0 -20
- package/esm2022/lib/base/base-page.class.mjs +0 -97
- package/esm2022/lib/base/components.class.mjs +0 -17
- package/esm2022/lib/base/element.class.mjs +0 -301
- package/esm2022/lib/base/events.class.mjs +0 -17
- package/esm2022/lib/button/button.component.mjs +0 -74
- package/esm2022/lib/button/button.module.mjs +0 -21
- package/esm2022/lib/calendar/calendar-box/calendar-box.component.mjs +0 -426
- package/esm2022/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
- package/esm2022/lib/calendar/scheduler/scheduler-views.property.mjs +0 -59
- package/esm2022/lib/calendar/scheduler/scheduler.class.mjs +0 -16
- package/esm2022/lib/calendar/scheduler/scheduler.component.mjs +0 -226
- package/esm2022/lib/calendar/scheduler/scheduler.module.mjs +0 -68
- package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -136
- package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
- package/esm2022/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -49
- package/esm2022/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -102
- package/esm2022/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -214
- package/esm2022/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
- package/esm2022/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -85
- package/esm2022/lib/checkbox/checkbox.component.mjs +0 -109
- package/esm2022/lib/checkbox/checkbox.module.mjs +0 -20
- package/esm2022/lib/color-picker/color-box/color-box.component.mjs +0 -423
- package/esm2022/lib/color-picker/color-picker.component.mjs +0 -89
- package/esm2022/lib/color-picker/color-picker.module.mjs +0 -24
- package/esm2022/lib/context-menu/context-menu.component.mjs +0 -68
- package/esm2022/lib/context-menu/context-menu.directive.mjs +0 -146
- package/esm2022/lib/context-menu/context-menu.module.mjs +0 -20
- package/esm2022/lib/data-filter/columns/filter-column-date.component.mjs +0 -140
- package/esm2022/lib/data-filter/columns/filter-column-number.component.mjs +0 -119
- package/esm2022/lib/data-filter/columns/filter-column-selection.component.mjs +0 -75
- package/esm2022/lib/data-filter/columns/filter-column-string.component.mjs +0 -119
- package/esm2022/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -267
- package/esm2022/lib/data-filter/filter.class.mjs +0 -46
- package/esm2022/lib/data-filter/filter.module.mjs +0 -88
- package/esm2022/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -168
- package/esm2022/lib/data-list/core/data-list.component.mjs +0 -37
- package/esm2022/lib/data-list/list/list.component.mjs +0 -134
- package/esm2022/lib/data-list/list/list.module.mjs +0 -22
- package/esm2022/lib/data-list/list/toolbar-list-view.component.mjs +0 -84
- package/esm2022/lib/data-source/datasource.component.mjs +0 -47
- package/esm2022/lib/data-source/datasource.module.mjs +0 -18
- package/esm2022/lib/data-source/read-param.mjs +0 -7
- package/esm2022/lib/date-picker/date-picker.component.mjs +0 -1102
- package/esm2022/lib/date-picker/date-picker.module.mjs +0 -49
- package/esm2022/lib/dialog/dialog.component.mjs +0 -26
- package/esm2022/lib/dialog/dialog.module.mjs +0 -21
- package/esm2022/lib/dialog/dialog.service.mjs +0 -160
- package/esm2022/lib/drawer/content.component.mjs +0 -18
- package/esm2022/lib/drawer/drawer-container.component.mjs +0 -38
- package/esm2022/lib/drawer/drawer.component.mjs +0 -146
- package/esm2022/lib/drawer/drawer.module.mjs +0 -23
- package/esm2022/lib/dropdown/dropdown.component.mjs +0 -186
- package/esm2022/lib/dropdown/dropdown.module.mjs +0 -26
- package/esm2022/lib/fieldset/fieldset.component.mjs +0 -57
- package/esm2022/lib/fieldset/fieldset.module.mjs +0 -19
- package/esm2022/lib/form-group/form-group.component.mjs +0 -37
- package/esm2022/lib/form-group/form-group.module.mjs +0 -21
- package/esm2022/lib/label/label.component.mjs +0 -19
- package/esm2022/lib/label/label.module.mjs +0 -21
- package/esm2022/lib/loading/loading-indicator.component.mjs +0 -18
- package/esm2022/lib/loading/loading-panel.component.mjs +0 -45
- package/esm2022/lib/loading/loading.module.mjs +0 -21
- package/esm2022/lib/loading/loading.service.mjs +0 -47
- package/esm2022/lib/menu/menu-item.component.mjs +0 -50
- package/esm2022/lib/menu/menu.component.mjs +0 -98
- package/esm2022/lib/menu/menu.module.mjs +0 -22
- package/esm2022/lib/menu/menu2.component.mjs +0 -100
- package/esm2022/lib/number-box/number-box.component.mjs +0 -628
- package/esm2022/lib/number-box/number-box.module.mjs +0 -21
- package/esm2022/lib/page/content.component.mjs +0 -27
- package/esm2022/lib/page/footer.component.mjs +0 -19
- package/esm2022/lib/page/page.component.mjs +0 -57
- package/esm2022/lib/page/page.module.mjs +0 -22
- package/esm2022/lib/panel-box/panel-box.component.mjs +0 -87
- package/esm2022/lib/panel-box/panel-box.module.mjs +0 -19
- package/esm2022/lib/password-box/password-box.component.mjs +0 -32
- package/esm2022/lib/password-box/password-box.module.mjs +0 -23
- package/esm2022/lib/popover/custom-cdk-overlay.service.mjs +0 -50
- package/esm2022/lib/popover/overlay.service.mjs +0 -94
- package/esm2022/lib/popover/popover.component.mjs +0 -145
- package/esm2022/lib/popover/popover.module.mjs +0 -19
- package/esm2022/lib/popup/popup.component.mjs +0 -160
- package/esm2022/lib/popup/popup.module.mjs +0 -25
- package/esm2022/lib/popup/popup.service.mjs +0 -94
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +0 -16
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +0 -19
- package/esm2022/lib/property-editor/editors/check-editor/check-editor.mjs +0 -65
- package/esm2022/lib/property-editor/editors/check-editor/check.module.mjs +0 -22
- package/esm2022/lib/property-editor/editors/color-editor/color.editor.mjs +0 -41
- package/esm2022/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
- package/esm2022/lib/property-editor/editors/column-editor/column.editor.mjs +0 -118
- package/esm2022/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
- package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -216
- package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -76
- package/esm2022/lib/property-editor/editors/date-editor/date.editor.mjs +0 -87
- package/esm2022/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
- package/esm2022/lib/property-editor/editors/number-editor/number.editor.mjs +0 -72
- package/esm2022/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
- package/esm2022/lib/property-editor/editors/range-editor/range.editor.mjs +0 -145
- package/esm2022/lib/property-editor/editors/range-editor/range.module.mjs +0 -59
- package/esm2022/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +0 -76
- package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -75
- package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
- package/esm2022/lib/property-editor/editors/selection-editor/selection-editor.mjs +0 -73
- package/esm2022/lib/property-editor/editors/selection-editor/selection.module.mjs +0 -22
- package/esm2022/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -30
- package/esm2022/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
- package/esm2022/lib/property-editor/editors/text-editor/text.editor.mjs +0 -36
- package/esm2022/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
- package/esm2022/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -35
- package/esm2022/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
- package/esm2022/lib/property-editor/editors/time-editor/time.editor.mjs +0 -55
- package/esm2022/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
- package/esm2022/lib/property-editor/property-editor-renderer.directive.mjs +0 -167
- package/esm2022/lib/property-editor/property-editor.class.mjs +0 -108
- package/esm2022/lib/property-editor/property-editor.module.mjs +0 -194
- package/esm2022/lib/query-builder/query-builder-group.component.mjs +0 -129
- package/esm2022/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -177
- package/esm2022/lib/query-builder/query-builder-rule.component.mjs +0 -428
- package/esm2022/lib/query-builder/query-builder.class.mjs +0 -42
- package/esm2022/lib/query-builder/query-builder.component.mjs +0 -92
- package/esm2022/lib/query-builder/query-builder.module.mjs +0 -62
- package/esm2022/lib/query-builder/query-builder.service.mjs +0 -199
- package/esm2022/lib/search-bar/search-bar.component.mjs +0 -293
- package/esm2022/lib/search-bar/search-bar.module.mjs +0 -61
- package/esm2022/lib/searchbox/searchbox.component.mjs +0 -106
- package/esm2022/lib/searchbox/searchbox.module.mjs +0 -24
- package/esm2022/lib/selectbox/selectbox.component.mjs +0 -1135
- package/esm2022/lib/selectbox/selectbox.module.mjs +0 -44
- package/esm2022/lib/selectbox/selectbox2.component.mjs +0 -617
- package/esm2022/lib/selection-list/selection-list.component.mjs +0 -113
- package/esm2022/lib/selection-list/selection-list.module.mjs +0 -21
- package/esm2022/lib/switch/switch.component.mjs +0 -55
- package/esm2022/lib/switch/switch.module.mjs +0 -20
- package/esm2022/lib/tab-page/tab-page-Renderer.component.mjs +0 -75
- package/esm2022/lib/tab-page/tab-page-host.component.mjs +0 -124
- package/esm2022/lib/tab-page/tab-page.module.mjs +0 -21
- package/esm2022/lib/tab-page/tab-page.service.mjs +0 -159
- package/esm2022/lib/tab-strip/tab-strip.component.mjs +0 -38
- package/esm2022/lib/tab-strip/tab-strip.module.mjs +0 -19
- package/esm2022/lib/tab-view/dynamic-tabs.directive.mjs +0 -25
- package/esm2022/lib/tab-view/tab-view.component.mjs +0 -110
- package/esm2022/lib/tab-view/tab-view.module.mjs +0 -21
- package/esm2022/lib/tab-view/tab.component.mjs +0 -33
- package/esm2022/lib/textarea/textarea.component.mjs +0 -27
- package/esm2022/lib/textarea/textarea.module.mjs +0 -21
- package/esm2022/lib/textbox/textbox.component.mjs +0 -42
- package/esm2022/lib/textbox/textbox.module.mjs +0 -36
- package/esm2022/lib/time-picker/time-picker.component.mjs +0 -1107
- package/esm2022/lib/time-picker/time-picker.module.mjs +0 -34
- package/esm2022/lib/toast/toast-message/toast-message.component.mjs +0 -76
- package/esm2022/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
- package/esm2022/lib/toast/toast.module.mjs +0 -21
- package/esm2022/lib/toast/toast.service.mjs +0 -45
- package/esm2022/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -77
- package/esm2022/lib/toolbar/menu/toolbar-menu.component.mjs +0 -62
- package/esm2022/lib/toolbar/search/toolbar-search.component.mjs +0 -56
- package/esm2022/lib/toolbar/title/toolbar-title.component.mjs +0 -37
- package/esm2022/lib/toolbar/toolbar-item.mjs +0 -4
- package/esm2022/lib/toolbar/toolbar.component.mjs +0 -13
- package/esm2022/lib/toolbar/toolbar.module.mjs +0 -40
- package/esm2022/lib/tooltip/tooltip.directive.mjs +0 -104
- package/esm2022/lib/tooltip/tooltip.module.mjs +0 -19
- package/esm2022/lib/tree-side-menu/tree-side-menu.component.mjs +0 -697
- package/esm2022/lib/tree-side-menu/tree-side-menu.module.mjs +0 -33
- package/esm2022/lib/tree-view/tree-view.component.mjs +0 -854
- package/esm2022/lib/tree-view/tree-view.module.mjs +0 -22
- package/esm2022/lib/upload-file/upload-file.component.mjs +0 -226
- package/esm2022/lib/upload-file/upload-file.events.mjs +0 -2
- package/esm2022/lib/upload-file/upload-file.module.mjs +0 -24
- package/esm2022/lib/validation/validation-form.component.mjs +0 -68
- package/esm2022/lib/validation/validation-rule.widget.mjs +0 -114
- package/esm2022/lib/validation/validation.class.mjs +0 -2
- package/esm2022/lib/validation/validation.component.mjs +0 -89
- package/esm2022/lib/validation/validation.module.mjs +0 -34
- package/lib/accordion/accordion.component.d.ts +0 -13
- package/lib/accordion/accordion.module.d.ts +0 -9
- package/lib/base/base-page.class.d.ts +0 -46
- package/lib/base/components.class.d.ts +0 -10
- package/lib/base/element.class.d.ts +0 -106
- package/lib/base/events.class.d.ts +0 -18
- package/lib/button/button.component.d.ts +0 -21
- package/lib/button/button.module.d.ts +0 -8
- package/lib/calendar/calendar-box/calendar-box.component.d.ts +0 -81
- package/lib/calendar/calendar-box/calendar-box.module.d.ts +0 -11
- package/lib/calendar/scheduler/scheduler-views.property.d.ts +0 -19
- package/lib/calendar/scheduler/scheduler.class.d.ts +0 -36
- package/lib/calendar/scheduler/scheduler.component.d.ts +0 -39
- package/lib/calendar/scheduler/scheduler.module.d.ts +0 -21
- package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +0 -25
- package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +0 -14
- package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +0 -16
- package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +0 -26
- package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +0 -37
- package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +0 -28
- package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +0 -24
- package/lib/checkbox/checkbox.component.d.ts +0 -30
- package/lib/checkbox/checkbox.module.d.ts +0 -9
- package/lib/color-picker/color-box/color-box.component.d.ts +0 -25
- package/lib/color-picker/color-picker.component.d.ts +0 -30
- package/lib/color-picker/color-picker.module.d.ts +0 -13
- package/lib/context-menu/context-menu.component.d.ts +0 -22
- package/lib/context-menu/context-menu.directive.d.ts +0 -38
- package/lib/context-menu/context-menu.module.d.ts +0 -9
- package/lib/data-filter/columns/filter-column-date.component.d.ts +0 -22
- package/lib/data-filter/columns/filter-column-number.component.d.ts +0 -15
- package/lib/data-filter/columns/filter-column-selection.component.d.ts +0 -18
- package/lib/data-filter/columns/filter-column-string.component.d.ts +0 -15
- package/lib/data-filter/filter-panel/filter-panel.component.d.ts +0 -45
- package/lib/data-filter/filter.class.d.ts +0 -40
- package/lib/data-filter/filter.module.d.ts +0 -24
- package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +0 -25
- package/lib/data-list/core/data-list.component.d.ts +0 -15
- package/lib/data-list/list/list.component.d.ts +0 -40
- package/lib/data-list/list/list.module.d.ts +0 -11
- package/lib/data-list/list/toolbar-list-view.component.d.ts +0 -17
- package/lib/data-source/datasource.component.d.ts +0 -16
- package/lib/data-source/datasource.module.d.ts +0 -7
- package/lib/data-source/read-param.d.ts +0 -40
- package/lib/date-picker/date-picker.component.d.ts +0 -84
- package/lib/date-picker/date-picker.module.d.ts +0 -14
- package/lib/dialog/dialog.component.d.ts +0 -14
- package/lib/dialog/dialog.module.d.ts +0 -10
- package/lib/dialog/dialog.service.d.ts +0 -36
- package/lib/drawer/content.component.d.ts +0 -7
- package/lib/drawer/drawer-container.component.d.ts +0 -10
- package/lib/drawer/drawer.component.d.ts +0 -34
- package/lib/drawer/drawer.module.d.ts +0 -10
- package/lib/dropdown/dropdown.component.d.ts +0 -38
- package/lib/dropdown/dropdown.module.d.ts +0 -13
- package/lib/fieldset/fieldset.component.d.ts +0 -11
- package/lib/fieldset/fieldset.module.d.ts +0 -8
- package/lib/form-group/form-group.component.d.ts +0 -14
- package/lib/form-group/form-group.module.d.ts +0 -8
- package/lib/label/label.component.d.ts +0 -9
- package/lib/loading/loading-indicator.component.d.ts +0 -9
- package/lib/loading/loading-panel.component.d.ts +0 -13
- package/lib/loading/loading.module.d.ts +0 -10
- package/lib/loading/loading.service.d.ts +0 -13
- package/lib/menu/menu-item.component.d.ts +0 -18
- package/lib/menu/menu.component.d.ts +0 -35
- package/lib/menu/menu.module.d.ts +0 -11
- package/lib/menu/menu2.component.d.ts +0 -21
- package/lib/number-box/number-box.component.d.ts +0 -52
- package/lib/number-box/number-box.module.d.ts +0 -10
- package/lib/page/content.component.d.ts +0 -8
- package/lib/page/footer.component.d.ts +0 -5
- package/lib/page/page.component.d.ts +0 -16
- package/lib/page/page.module.d.ts +0 -11
- package/lib/panel-box/panel-box.component.d.ts +0 -19
- package/lib/panel-box/panel-box.module.d.ts +0 -8
- package/lib/password-box/password-box.component.d.ts +0 -12
- package/lib/password-box/password-box.module.d.ts +0 -10
- package/lib/popover/custom-cdk-overlay.service.d.ts +0 -19
- package/lib/popover/overlay.service.d.ts +0 -32
- package/lib/popover/popover.component.d.ts +0 -35
- package/lib/popup/popup.component.d.ts +0 -40
- package/lib/popup/popup.module.d.ts +0 -13
- package/lib/popup/popup.service.d.ts +0 -22
- package/lib/progress-bar/progress-bar.component.d.ts +0 -7
- package/lib/property-editor/editors/check-editor/check-editor.d.ts +0 -19
- package/lib/property-editor/editors/check-editor/check.module.d.ts +0 -11
- package/lib/property-editor/editors/color-editor/color.editor.d.ts +0 -13
- package/lib/property-editor/editors/color-editor/color.module.d.ts +0 -12
- package/lib/property-editor/editors/column-editor/column.editor.d.ts +0 -34
- package/lib/property-editor/editors/column-editor/column.module.d.ts +0 -20
- package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +0 -44
- package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +0 -19
- package/lib/property-editor/editors/date-editor/date.editor.d.ts +0 -28
- package/lib/property-editor/editors/date-editor/date.module.d.ts +0 -12
- package/lib/property-editor/editors/number-editor/number.editor.d.ts +0 -22
- package/lib/property-editor/editors/number-editor/number.module.d.ts +0 -12
- package/lib/property-editor/editors/range-editor/range.editor.d.ts +0 -29
- package/lib/property-editor/editors/range-editor/range.module.d.ts +0 -18
- package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +0 -29
- package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +0 -28
- package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +0 -14
- package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +0 -25
- package/lib/property-editor/editors/selection-editor/selection.module.d.ts +0 -11
- package/lib/property-editor/editors/switch-editor/number.editor.d.ts +0 -11
- package/lib/property-editor/editors/switch-editor/number.module.d.ts +0 -13
- package/lib/property-editor/editors/text-editor/text.editor.d.ts +0 -18
- package/lib/property-editor/editors/text-editor/text.module.d.ts +0 -12
- package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +0 -17
- package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +0 -12
- package/lib/property-editor/editors/time-editor/time.editor.d.ts +0 -17
- package/lib/property-editor/editors/time-editor/time.module.d.ts +0 -12
- package/lib/property-editor/property-editor-renderer.directive.d.ts +0 -31
- package/lib/property-editor/property-editor.class.d.ts +0 -93
- package/lib/property-editor/property-editor.module.d.ts +0 -21
- package/lib/query-builder/query-builder-group.component.d.ts +0 -33
- package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +0 -35
- package/lib/query-builder/query-builder-rule.component.d.ts +0 -45
- package/lib/query-builder/query-builder.class.d.ts +0 -45
- package/lib/query-builder/query-builder.component.d.ts +0 -29
- package/lib/query-builder/query-builder.module.d.ts +0 -23
- package/lib/query-builder/query-builder.service.d.ts +0 -18
- package/lib/search-bar/search-bar.component.d.ts +0 -62
- package/lib/search-bar/search-bar.module.d.ts +0 -18
- package/lib/searchbox/searchbox.component.d.ts +0 -23
- package/lib/searchbox/searchbox.module.d.ts +0 -13
- package/lib/selectbox/selectbox.component.d.ts +0 -149
- package/lib/selectbox/selectbox.module.d.ts +0 -15
- package/lib/selectbox/selectbox2.component.d.ts +0 -103
- package/lib/selection-list/selection-list.component.d.ts +0 -32
- package/lib/selection-list/selection-list.module.d.ts +0 -10
- package/lib/switch/switch.component.d.ts +0 -20
- package/lib/switch/switch.module.d.ts +0 -9
- package/lib/tab-page/tab-page-Renderer.component.d.ts +0 -16
- package/lib/tab-page/tab-page-host.component.d.ts +0 -24
- package/lib/tab-page/tab-page.module.d.ts +0 -10
- package/lib/tab-page/tab-page.service.d.ts +0 -30
- package/lib/tab-strip/tab-strip.component.d.ts +0 -28
- package/lib/tab-strip/tab-strip.module.d.ts +0 -8
- package/lib/tab-view/dynamic-tabs.directive.d.ts +0 -16
- package/lib/tab-view/tab-view.component.d.ts +0 -26
- package/lib/tab-view/tab-view.module.d.ts +0 -10
- package/lib/tab-view/tab.component.d.ts +0 -12
- package/lib/textarea/textarea.component.d.ts +0 -12
- package/lib/textarea/textarea.module.d.ts +0 -8
- package/lib/textbox/textbox.component.d.ts +0 -16
- package/lib/textbox/textbox.module.d.ts +0 -11
- package/lib/time-picker/time-picker.component.d.ts +0 -53
- package/lib/time-picker/time-picker.module.d.ts +0 -11
- package/lib/toast/toast-message/toast-message.component.d.ts +0 -18
- package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +0 -8
- package/lib/toast/toast.module.d.ts +0 -9
- package/lib/toast/toast.service.d.ts +0 -18
- package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +0 -12
- package/lib/toolbar/menu/toolbar-menu.component.d.ts +0 -24
- package/lib/toolbar/search/toolbar-search.component.d.ts +0 -16
- package/lib/toolbar/title/toolbar-title.component.d.ts +0 -9
- package/lib/toolbar/toolbar-item.d.ts +0 -3
- package/lib/toolbar/toolbar.component.d.ts +0 -8
- package/lib/toolbar/toolbar.module.d.ts +0 -14
- package/lib/tooltip/tooltip.directive.d.ts +0 -21
- package/lib/tooltip/tooltip.module.d.ts +0 -8
- package/lib/tree-side-menu/tree-side-menu.component.d.ts +0 -111
- package/lib/tree-side-menu/tree-side-menu.module.d.ts +0 -11
- package/lib/tree-view/tree-view.component.d.ts +0 -121
- package/lib/tree-view/tree-view.module.d.ts +0 -11
- package/lib/upload-file/upload-file.component.d.ts +0 -42
- package/lib/upload-file/upload-file.events.d.ts +0 -10
- package/lib/upload-file/upload-file.module.d.ts +0 -13
- package/lib/validation/validation-form.component.d.ts +0 -19
- package/lib/validation/validation-rule.widget.d.ts +0 -23
- package/lib/validation/validation.class.d.ts +0 -16
- package/lib/validation/validation.component.d.ts +0 -25
- package/lib/validation/validation.module.d.ts +0 -11
- /package/{lib/label → label/lib}/label.module.d.ts +0 -0
- /package/{lib/popover → popover/lib}/popover.module.d.ts +0 -0
- /package/{lib/progress-bar → progress-bar/lib}/progress-bar.module.d.ts +0 -0
@@ -1,1135 +0,0 @@
|
|
1
|
-
import { AXConfig } from '@acorex/core';
|
2
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Input, NgZone, Output, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core';
|
3
|
-
import { differenceBy } from 'lodash';
|
4
|
-
import { Observable } from 'rxjs';
|
5
|
-
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
6
|
-
import { AXValidatableComponent, } from '../base/element.class';
|
7
|
-
import { AXBaseEvent } from '../base/events.class';
|
8
|
-
import { AXDataSourceComponent } from '../data-source/datasource.component';
|
9
|
-
import { AXDropdownComponent } from '../dropdown/dropdown.component';
|
10
|
-
import { AXSearchBoxComponent } from '../searchbox/searchbox.component';
|
11
|
-
import { AXTextBoxComponent } from '../textbox/textbox.component';
|
12
|
-
import { AXValidation } from '../validation/validation.component';
|
13
|
-
import * as i0 from "@angular/core";
|
14
|
-
import * as i1 from "@angular/common";
|
15
|
-
import * as i2 from "../dropdown/dropdown.component";
|
16
|
-
import * as i3 from "../textbox/textbox.component";
|
17
|
-
import * as i4 from "../checkbox/checkbox.component";
|
18
|
-
import * as i5 from "../searchbox/searchbox.component";
|
19
|
-
import * as i6 from "@acorex/core";
|
20
|
-
export class AXSelectBoxSelectionChangedEvent extends AXBaseEvent {
|
21
|
-
selectedItems;
|
22
|
-
selectedValues;
|
23
|
-
constructor(component, selectedItems, selectedValues) {
|
24
|
-
super();
|
25
|
-
this.selectedItems = selectedItems;
|
26
|
-
this.selectedValues = selectedValues;
|
27
|
-
this.component = component;
|
28
|
-
}
|
29
|
-
}
|
30
|
-
export class AXSelectBoxComponent extends AXValidatableComponent {
|
31
|
-
cdr;
|
32
|
-
ref;
|
33
|
-
zone;
|
34
|
-
showDropDownButton = true;
|
35
|
-
rowTemplate;
|
36
|
-
rowInputTemplate;
|
37
|
-
span;
|
38
|
-
textbox;
|
39
|
-
listContainer;
|
40
|
-
serchBox;
|
41
|
-
textBoxSelectBox;
|
42
|
-
showCheckBox = true;
|
43
|
-
readonly = false;
|
44
|
-
rtl = AXConfig.get('layout.rtl');
|
45
|
-
disabled = false;
|
46
|
-
placeholder;
|
47
|
-
size = 'md';
|
48
|
-
allowNull = true;
|
49
|
-
textAlign = null;
|
50
|
-
bufferSize = 20;
|
51
|
-
remoteOperation = false;
|
52
|
-
fitParent = true;
|
53
|
-
dropdownWidth = '300px';
|
54
|
-
multiLine = false;
|
55
|
-
dropdownToggle = new EventEmitter();
|
56
|
-
// this input is Private and only use in LOV
|
57
|
-
onDemandTranslate = false;
|
58
|
-
currentfocusedIndex = -1;
|
59
|
-
showLoading = false;
|
60
|
-
skip = -1;
|
61
|
-
searchText = '';
|
62
|
-
// @Input()
|
63
|
-
// chipsWidth: string = '';
|
64
|
-
text = '';
|
65
|
-
totalCount = 0;
|
66
|
-
_contentDataSource;
|
67
|
-
_dataSource;
|
68
|
-
get dataSource() {
|
69
|
-
return this._dataSource ? this._dataSource : this._contentDataSource;
|
70
|
-
}
|
71
|
-
set dataSource(v) {
|
72
|
-
this._dataSource = v;
|
73
|
-
}
|
74
|
-
_contentValidation;
|
75
|
-
_validation;
|
76
|
-
get validation() {
|
77
|
-
return this._validation ? this._validation : this._contentValidation;
|
78
|
-
}
|
79
|
-
set validation(v) {
|
80
|
-
this._validation = v;
|
81
|
-
}
|
82
|
-
constructor(cdr, ref, zone) {
|
83
|
-
super();
|
84
|
-
this.cdr = cdr;
|
85
|
-
this.ref = ref;
|
86
|
-
this.zone = zone;
|
87
|
-
}
|
88
|
-
dropdown;
|
89
|
-
disabledCallback;
|
90
|
-
allowSearch = true;
|
91
|
-
textField = 'text';
|
92
|
-
valueField = 'value';
|
93
|
-
disabledField = 'disabled';
|
94
|
-
mode = 'single';
|
95
|
-
itemRemove = false;
|
96
|
-
itemsChange = new EventEmitter();
|
97
|
-
onBlur = new EventEmitter();
|
98
|
-
onFocus = new EventEmitter();
|
99
|
-
_items = [];
|
100
|
-
get items() {
|
101
|
-
return this._items;
|
102
|
-
}
|
103
|
-
set items(v) {
|
104
|
-
this._items = v;
|
105
|
-
if (this.itemsChange) {
|
106
|
-
this.itemsChange.emit(v);
|
107
|
-
}
|
108
|
-
if (this.itemsStatusObserver) {
|
109
|
-
this.itemsStatusObserver.next(this.items.length);
|
110
|
-
}
|
111
|
-
}
|
112
|
-
hasSelectedValue = false;
|
113
|
-
itemsFiltered = [];
|
114
|
-
// #endregion
|
115
|
-
dropDownDisabled = false;
|
116
|
-
selectionChanged = new EventEmitter();
|
117
|
-
selectedItemsChange = new EventEmitter();
|
118
|
-
_selectedItems = [];
|
119
|
-
get selectedItems() {
|
120
|
-
return this._selectedItems || [];
|
121
|
-
}
|
122
|
-
set selectedItems(v) {
|
123
|
-
this.setSelectedItemsChange(v);
|
124
|
-
// if (!v) {
|
125
|
-
// v = [];
|
126
|
-
// }
|
127
|
-
// const old = this.selectedItems;
|
128
|
-
// if (JSON.stringify(old) !== JSON.stringify(v)) {
|
129
|
-
// this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];
|
130
|
-
// this._selectedItems.forEach((c) => (c.selected = true));
|
131
|
-
// this.selectedItemsChange.emit(this._selectedItems);
|
132
|
-
// this.selectedValuesChange.emit(this.selectedValues);
|
133
|
-
// this.clearValidationStyle(this.ref.nativeElement);
|
134
|
-
// this.waitForData(() => {
|
135
|
-
// if (this._selectedItems) {
|
136
|
-
// this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));
|
137
|
-
// }
|
138
|
-
// });
|
139
|
-
// }
|
140
|
-
}
|
141
|
-
setSelectedItemsChange(v, old = this.selectedItems) {
|
142
|
-
if (!v) {
|
143
|
-
v = [];
|
144
|
-
}
|
145
|
-
// const old = this.selectedItems;
|
146
|
-
var f = differenceBy(old, v, this.valueField);
|
147
|
-
var s = differenceBy(v, old, this.valueField);
|
148
|
-
// if (JSON.stringify(old) !== JSON.stringify(v)) {
|
149
|
-
if (f.length != 0 || s.length != 0) {
|
150
|
-
this._selectedItems =
|
151
|
-
this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];
|
152
|
-
this._selectedItems.forEach((c) => (c.selected = true));
|
153
|
-
this.selectedItemsChange.emit(this._selectedItems);
|
154
|
-
this.selectedValuesChange.emit(this.selectedValues);
|
155
|
-
this.clearValidationStyle(this.ref.nativeElement);
|
156
|
-
this.waitForData(() => {
|
157
|
-
if (this._selectedItems) {
|
158
|
-
this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));
|
159
|
-
}
|
160
|
-
});
|
161
|
-
}
|
162
|
-
}
|
163
|
-
ngOnInit() {
|
164
|
-
if (this.rowTemplate === undefined && this.rowInputTemplate != undefined) {
|
165
|
-
this.rowTemplate = this.rowInputTemplate;
|
166
|
-
}
|
167
|
-
if (this.rtl == null) {
|
168
|
-
this.rtl =
|
169
|
-
window
|
170
|
-
.getComputedStyle(this.ref.nativeElement, null)
|
171
|
-
.getPropertyValue('direction') === 'rtl';
|
172
|
-
}
|
173
|
-
}
|
174
|
-
scrolled(e) {
|
175
|
-
if (this.remoteOperation &&
|
176
|
-
this.totalCount > this.items.length &&
|
177
|
-
this.listContainer.nativeElement.scrollHeight != 0 &&
|
178
|
-
this.listContainer.nativeElement.scrollHeight -
|
179
|
-
this.listContainer.nativeElement.scrollTop -
|
180
|
-
300 <
|
181
|
-
50) {
|
182
|
-
if (this.skip !== this.items.length) {
|
183
|
-
this.showLoading = true;
|
184
|
-
this.skip = this.items.length;
|
185
|
-
const params = {};
|
186
|
-
params.skip = this.items.length;
|
187
|
-
params.take = this.bufferSize; //* (Math.floor(this.items.length / this.bufferSize) + 1);
|
188
|
-
if (this.textbox) {
|
189
|
-
params.searchText = this.text;
|
190
|
-
}
|
191
|
-
else {
|
192
|
-
params.searchText = null;
|
193
|
-
}
|
194
|
-
this.fetch(params);
|
195
|
-
}
|
196
|
-
}
|
197
|
-
}
|
198
|
-
setSelectedItems(v, isUserInput) {
|
199
|
-
let changed = false;
|
200
|
-
if (isUserInput) {
|
201
|
-
changed = JSON.stringify(v) !== JSON.stringify(this.selectedItems);
|
202
|
-
}
|
203
|
-
this.selectedItems = v;
|
204
|
-
this.setSelectedIndex();
|
205
|
-
if (isUserInput && changed) {
|
206
|
-
this.emitSelectionChangedEvent();
|
207
|
-
}
|
208
|
-
}
|
209
|
-
searchChangeObserver;
|
210
|
-
delay = 500;
|
211
|
-
textChanged(e) {
|
212
|
-
if ((e.value === null || e.value === undefined || e.value === '') &&
|
213
|
-
(e.oldValue === null || e.oldValue === undefined || e.oldValue === '')) {
|
214
|
-
}
|
215
|
-
else {
|
216
|
-
this.currentfocusedIndex = -1;
|
217
|
-
if (this.remoteOperation) {
|
218
|
-
this.searchText = this.text;
|
219
|
-
// this.searchText = e.value;
|
220
|
-
// this.text = e.value;
|
221
|
-
// this.items = [];
|
222
|
-
if (this.items) {
|
223
|
-
let t = this.items.length;
|
224
|
-
for (let i = 0; i < t; i++) {
|
225
|
-
this.items.pop();
|
226
|
-
}
|
227
|
-
}
|
228
|
-
// this.items.forEach((element) => {
|
229
|
-
// this.items.pop();
|
230
|
-
// });
|
231
|
-
const params = {};
|
232
|
-
params.searchText = this.text;
|
233
|
-
// params.searchText = e.value;
|
234
|
-
params.skip = 0;
|
235
|
-
params.take = this.bufferSize;
|
236
|
-
this.fetch(params);
|
237
|
-
}
|
238
|
-
}
|
239
|
-
}
|
240
|
-
isItemDisabled(item) {
|
241
|
-
if (item[this.disabledField] == true) {
|
242
|
-
return true;
|
243
|
-
}
|
244
|
-
else if (this.disabledCallback) {
|
245
|
-
return this.disabledCallback({ item, index: -1 });
|
246
|
-
}
|
247
|
-
else {
|
248
|
-
return false;
|
249
|
-
}
|
250
|
-
}
|
251
|
-
onButtonClick(e) { }
|
252
|
-
setSelectedIndex(sign = null) {
|
253
|
-
if (sign == null) {
|
254
|
-
if (!this.remoteOperation && this.text && this.text !== '') {
|
255
|
-
this.currentfocusedIndex = this.items
|
256
|
-
.filter((c) => c[this.textField]
|
257
|
-
.toLowerCase()
|
258
|
-
.includes(this.text.toLowerCase()))
|
259
|
-
.indexOf(this.selectedItems[this.selectedItems.length - 1]);
|
260
|
-
}
|
261
|
-
else {
|
262
|
-
this.currentfocusedIndex = this.items.indexOf(this.selectedItems[this.selectedItems.length - 1]);
|
263
|
-
}
|
264
|
-
}
|
265
|
-
else {
|
266
|
-
sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;
|
267
|
-
}
|
268
|
-
if (this.remoteOperation) {
|
269
|
-
this.itemsFiltered = this.items;
|
270
|
-
}
|
271
|
-
else {
|
272
|
-
this.itemsFiltered = this.text
|
273
|
-
? this.items.filter((c) => c[this.textField]
|
274
|
-
.toLowerCase()
|
275
|
-
.includes(this.text.toLowerCase()))
|
276
|
-
: this.items;
|
277
|
-
}
|
278
|
-
this.currentfocusedIndex =
|
279
|
-
this.currentfocusedIndex < 0
|
280
|
-
? 0
|
281
|
-
: this.currentfocusedIndex >= this.itemsFiltered.length
|
282
|
-
? this.itemsFiltered.length - 1
|
283
|
-
: this.currentfocusedIndex;
|
284
|
-
//
|
285
|
-
// set scroll
|
286
|
-
if (this.listContainer) {
|
287
|
-
this.zone.runOutsideAngular(() => {
|
288
|
-
const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);
|
289
|
-
if (itemDiv) {
|
290
|
-
itemDiv.scrollIntoView({ behavior: 'smooth' });
|
291
|
-
}
|
292
|
-
});
|
293
|
-
}
|
294
|
-
}
|
295
|
-
selectedValuesChange = new EventEmitter();
|
296
|
-
get selectedValues() {
|
297
|
-
if (this.mode === 'single') {
|
298
|
-
return this._selectedItems.map((c) => c[this.valueField])[0];
|
299
|
-
}
|
300
|
-
else {
|
301
|
-
return this._selectedItems.map((c) => c[this.valueField]) || [];
|
302
|
-
}
|
303
|
-
}
|
304
|
-
set selectedValues(v) {
|
305
|
-
if (this.compareSelectedValues(v)) {
|
306
|
-
return;
|
307
|
-
}
|
308
|
-
if (v == null) {
|
309
|
-
this.selectedItems = [];
|
310
|
-
}
|
311
|
-
else {
|
312
|
-
if (v !== undefined) {
|
313
|
-
if (v != [] && v != '' && v != null) {
|
314
|
-
this.hasSelectedValue = true;
|
315
|
-
}
|
316
|
-
this.waitForData(() => {
|
317
|
-
if (this.mode === 'single') {
|
318
|
-
if (this.items.filter((c) => v == c[this.valueField])) {
|
319
|
-
this.selectedItems = this.items.filter((c) => v == c[this.valueField]);
|
320
|
-
}
|
321
|
-
else {
|
322
|
-
this.selectedItems = [];
|
323
|
-
}
|
324
|
-
}
|
325
|
-
else {
|
326
|
-
if (Array.isArray(v)) {
|
327
|
-
if (this.selectedItems.length > v.length) {
|
328
|
-
this.selectedItems = this.selectedItems.filter((c) => v.includes(c[this.valueField]));
|
329
|
-
}
|
330
|
-
else {
|
331
|
-
let addId = [];
|
332
|
-
v.forEach((vId) => {
|
333
|
-
addId.push({
|
334
|
-
[this.valueField]: vId,
|
335
|
-
});
|
336
|
-
});
|
337
|
-
let newId = differenceBy(addId, this.selectedItems, this.valueField);
|
338
|
-
let vv = [];
|
339
|
-
newId.forEach((rc) => {
|
340
|
-
vv.push(rc[this.valueField]);
|
341
|
-
});
|
342
|
-
this.items
|
343
|
-
.filter((c) => vv.includes(c[this.valueField]))
|
344
|
-
.forEach((res) => {
|
345
|
-
this.selectedItems.push(res);
|
346
|
-
});
|
347
|
-
// this.selectedItems.push(this.items.filter((c) => vv.includes(c[this.valueField])));
|
348
|
-
this.setSelectedItemsChange(this.selectedItems, vv.length > 0 ? [1] : this.selectedItems);
|
349
|
-
}
|
350
|
-
// this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));
|
351
|
-
}
|
352
|
-
else if (v) {
|
353
|
-
this.selectedItems = this.items.filter((c) => v === c[this.valueField]);
|
354
|
-
}
|
355
|
-
else {
|
356
|
-
this.selectedItems = [];
|
357
|
-
}
|
358
|
-
}
|
359
|
-
this.selectedValuesChange.emit(this.selectedValues);
|
360
|
-
this.cdr.markForCheck();
|
361
|
-
this.cdr.detectChanges();
|
362
|
-
});
|
363
|
-
}
|
364
|
-
}
|
365
|
-
}
|
366
|
-
compareSelectedValues(newValue) {
|
367
|
-
const currentValue = this.selectedValues;
|
368
|
-
return ((currentValue == null && newValue == null) ||
|
369
|
-
JSON.stringify(currentValue) === JSON.stringify(newValue));
|
370
|
-
}
|
371
|
-
setSelectedValues(v, isUserInput) {
|
372
|
-
const changed = isUserInput ? !this.compareSelectedValues(v) : false;
|
373
|
-
this.selectedValues = v;
|
374
|
-
if (isUserInput && changed) {
|
375
|
-
this.emitSelectionChangedEvent();
|
376
|
-
}
|
377
|
-
}
|
378
|
-
emitSelectionChangedEvent() {
|
379
|
-
this.selectedValuesChange.emit(this.selectedValues);
|
380
|
-
this.selectionChanged.emit(new AXSelectBoxSelectionChangedEvent(this, this.selectedItems, this.selectedValues));
|
381
|
-
}
|
382
|
-
ngAfterViewInit() {
|
383
|
-
if (this.bufferSize < 10) {
|
384
|
-
this.bufferSize = 10;
|
385
|
-
}
|
386
|
-
if (this.mode == 'single') {
|
387
|
-
this.showCheckBox = false;
|
388
|
-
}
|
389
|
-
else {
|
390
|
-
this.showCheckBox = true;
|
391
|
-
}
|
392
|
-
if (!this.remoteOperation ||
|
393
|
-
(this.remoteOperation && this.hasSelectedValue)) {
|
394
|
-
this.refresh();
|
395
|
-
}
|
396
|
-
}
|
397
|
-
dropdownToggleSelecBox(e) {
|
398
|
-
this.text = '';
|
399
|
-
if (this.dropdown.isOpen) {
|
400
|
-
this.refresh();
|
401
|
-
setTimeout(() => {
|
402
|
-
if (this.serchBox) {
|
403
|
-
this.serchBox.focus();
|
404
|
-
}
|
405
|
-
}, 1);
|
406
|
-
}
|
407
|
-
else {
|
408
|
-
// this.refresh();
|
409
|
-
}
|
410
|
-
this.dropdownToggle.emit(e);
|
411
|
-
}
|
412
|
-
ngAfterContentInit() {
|
413
|
-
// if (!this.allowSearch) {
|
414
|
-
// if (this.readonly == false) {
|
415
|
-
// this.itemRemove = true;
|
416
|
-
// this.readonly = true;
|
417
|
-
// }
|
418
|
-
// }
|
419
|
-
this.initValidation(this.ref, 'selectedItems', this.validation);
|
420
|
-
if (this.dataSource) {
|
421
|
-
// if (this.allowSearch == false) {
|
422
|
-
// this.fetch();
|
423
|
-
// }
|
424
|
-
this.dataSource.onDataReceived.subscribe((c) => {
|
425
|
-
this.showLoading = false;
|
426
|
-
this.dataReceived(c.data.result);
|
427
|
-
});
|
428
|
-
}
|
429
|
-
this.cdr.markForCheck();
|
430
|
-
this.cdr.detectChanges();
|
431
|
-
}
|
432
|
-
dataReceived(data) {
|
433
|
-
if (this.remoteOperation) {
|
434
|
-
if (this.searchText &&
|
435
|
-
this.searchText != null &&
|
436
|
-
this.searchText !== '') {
|
437
|
-
if (data.totalCount) {
|
438
|
-
this.items = [];
|
439
|
-
if (this.items.length == 0) {
|
440
|
-
//this.items = data.items;
|
441
|
-
data.items.forEach((item) => {
|
442
|
-
this.items.push(item);
|
443
|
-
});
|
444
|
-
}
|
445
|
-
else {
|
446
|
-
data.items.forEach((item) => {
|
447
|
-
this.items.push(item);
|
448
|
-
});
|
449
|
-
// if (this.itemsStatusObserver) {
|
450
|
-
// this.itemsStatusObserver.next(this.items.length);
|
451
|
-
// }
|
452
|
-
}
|
453
|
-
this.totalCount = data.totalCount;
|
454
|
-
}
|
455
|
-
else {
|
456
|
-
if (this.items.length == 0) {
|
457
|
-
this.items = data.items;
|
458
|
-
}
|
459
|
-
else {
|
460
|
-
data.items.forEach((item) => {
|
461
|
-
this.items.push(item);
|
462
|
-
});
|
463
|
-
// if (this.itemsStatusObserver) {
|
464
|
-
// this.itemsStatusObserver.next(this.items.length);
|
465
|
-
// }
|
466
|
-
}
|
467
|
-
this.totalCount = data.items == undefined ? 0 : data.items.length;
|
468
|
-
}
|
469
|
-
}
|
470
|
-
else if (data.items && data.items.length === data.totalCount) {
|
471
|
-
this.items = data.items;
|
472
|
-
this.totalCount = data.items.length;
|
473
|
-
}
|
474
|
-
else if (data.totalCount) {
|
475
|
-
data.items.forEach((elm) => {
|
476
|
-
this.items.push(elm);
|
477
|
-
});
|
478
|
-
// if (this.itemsStatusObserver) {
|
479
|
-
// this.itemsStatusObserver.next(this.items.length);
|
480
|
-
// }
|
481
|
-
this.totalCount = data.totalCount;
|
482
|
-
}
|
483
|
-
else {
|
484
|
-
data.forEach((elm) => {
|
485
|
-
this.items.push(elm);
|
486
|
-
// if (this.itemsStatusObserver) {
|
487
|
-
// this.itemsStatusObserver.next(this.items.length);
|
488
|
-
// }
|
489
|
-
});
|
490
|
-
this.totalCount = data.length;
|
491
|
-
}
|
492
|
-
}
|
493
|
-
else {
|
494
|
-
this.items = data;
|
495
|
-
}
|
496
|
-
this.cdr.markForCheck();
|
497
|
-
this.cdr.detectChanges();
|
498
|
-
this.dropdown.updatePosition();
|
499
|
-
}
|
500
|
-
// private params: AXDataSourceReadParams = {};
|
501
|
-
fetch(params = {}) {
|
502
|
-
// this.params = params;
|
503
|
-
if (this.dataSource) {
|
504
|
-
if (this.onDemandTranslate && params?.searchText) {
|
505
|
-
params.searchText = this.translateSearch(params?.searchText);
|
506
|
-
}
|
507
|
-
this.showLoading = true;
|
508
|
-
this.dataSource.fetch(params);
|
509
|
-
}
|
510
|
-
}
|
511
|
-
translateSearch(searchText) {
|
512
|
-
const latinPattern = /[A-Za-z;'\/\\[\],]/;
|
513
|
-
const asciiToPersianMap = {
|
514
|
-
113: 'ض',
|
515
|
-
119: 'ص',
|
516
|
-
101: 'ث',
|
517
|
-
114: 'ق',
|
518
|
-
116: 'ف',
|
519
|
-
121: 'غ',
|
520
|
-
117: 'ع',
|
521
|
-
105: 'ه',
|
522
|
-
111: 'خ',
|
523
|
-
112: 'ح',
|
524
|
-
97: 'ش',
|
525
|
-
115: 'س',
|
526
|
-
100: 'ی',
|
527
|
-
102: 'ب',
|
528
|
-
103: 'ل',
|
529
|
-
104: 'ا',
|
530
|
-
106: 'ت',
|
531
|
-
107: 'ن',
|
532
|
-
108: 'م',
|
533
|
-
59: 'ک',
|
534
|
-
122: 'ظ',
|
535
|
-
120: 'ط',
|
536
|
-
99: 'ز',
|
537
|
-
118: 'ر',
|
538
|
-
98: 'ذ',
|
539
|
-
110: 'د',
|
540
|
-
44: 'و',
|
541
|
-
39: 'گ',
|
542
|
-
67: 'ژ',
|
543
|
-
93: 'چ',
|
544
|
-
91: 'ج',
|
545
|
-
92: 'پ',
|
546
|
-
109: 'ئ',
|
547
|
-
};
|
548
|
-
if (latinPattern.test(searchText)) {
|
549
|
-
searchText = searchText
|
550
|
-
.split('')
|
551
|
-
.map((char) => {
|
552
|
-
const asciiValue = char.charCodeAt(0);
|
553
|
-
if (asciiToPersianMap[asciiValue]) {
|
554
|
-
return asciiToPersianMap[asciiValue];
|
555
|
-
}
|
556
|
-
else {
|
557
|
-
return char;
|
558
|
-
}
|
559
|
-
})
|
560
|
-
.join('');
|
561
|
-
}
|
562
|
-
return searchText;
|
563
|
-
}
|
564
|
-
refresh() {
|
565
|
-
const params = {};
|
566
|
-
if (this.remoteOperation) {
|
567
|
-
params.skip = 0;
|
568
|
-
this.skip = 0;
|
569
|
-
params.take = this.bufferSize;
|
570
|
-
}
|
571
|
-
if (this.dataSource != undefined) {
|
572
|
-
// this.items = [];
|
573
|
-
// this.items.forEach((element) => {
|
574
|
-
// this.items.pop();
|
575
|
-
// });
|
576
|
-
if (this.items) {
|
577
|
-
let t = this.items.length;
|
578
|
-
for (let i = 0; i < t; i++) {
|
579
|
-
this.items.pop();
|
580
|
-
}
|
581
|
-
}
|
582
|
-
this.fetch(params);
|
583
|
-
}
|
584
|
-
}
|
585
|
-
handleItemRemoveClick(item) {
|
586
|
-
if (this.mode === 'single') {
|
587
|
-
// this.selectedItems = null;
|
588
|
-
this.setSelectedValues(null, true);
|
589
|
-
// this.selectedItemsChange.emit(this._selectedItems);
|
590
|
-
// this.clearValidationStyle(this.ref.nativeElement);
|
591
|
-
}
|
592
|
-
else {
|
593
|
-
// this.selectedItems = this.selectedItems.filter((c) => c !== item);
|
594
|
-
this.setSelectedItems(this.selectedItems.filter((c) => c[this.valueField] !== item[this.valueField]), true);
|
595
|
-
// this._selectedItems = this._selectedItems.filter(c => c !== item);
|
596
|
-
// this.selectedItemsChange.emit(this._selectedItems);
|
597
|
-
// this.clearValidationStyle(this.ref.nativeElement);
|
598
|
-
}
|
599
|
-
// this.text = '';
|
600
|
-
this.validate();
|
601
|
-
this.cdr.markForCheck();
|
602
|
-
}
|
603
|
-
onFocusTextBox(e) { }
|
604
|
-
onTextBoxClick(e) {
|
605
|
-
if (this.disabled == false && this.readonly == false) {
|
606
|
-
this.dropdown.open();
|
607
|
-
}
|
608
|
-
}
|
609
|
-
handleItemClick(e, item) {
|
610
|
-
if (this.isItemDisabled(item) == false) {
|
611
|
-
const value = item[this.valueField];
|
612
|
-
if (this.mode === 'single') {
|
613
|
-
// this.selectedValues = value;
|
614
|
-
this.setSelectedValues(value, true);
|
615
|
-
}
|
616
|
-
else {
|
617
|
-
const exists = this.selectedValues.slice(0);
|
618
|
-
if (exists.includes(value)) {
|
619
|
-
if (this.allowNull == true ||
|
620
|
-
(this.allowNull == false && this.selectedItems.length > 1)) {
|
621
|
-
this.handleItemRemoveClick(item);
|
622
|
-
}
|
623
|
-
}
|
624
|
-
else {
|
625
|
-
exists.push(value);
|
626
|
-
// this.selectedValues = exists;
|
627
|
-
this.setSelectedValues(exists, true);
|
628
|
-
}
|
629
|
-
}
|
630
|
-
if (this.mode == 'single') {
|
631
|
-
this.text = '';
|
632
|
-
this.dropdown.close();
|
633
|
-
this.cdr.markForCheck();
|
634
|
-
}
|
635
|
-
// if (e.stopPropagation() == undefined) {
|
636
|
-
// e.stopPropagation();
|
637
|
-
// }
|
638
|
-
setTimeout(() => {
|
639
|
-
if (this.serchBox) {
|
640
|
-
this.serchBox.focus();
|
641
|
-
}
|
642
|
-
}, 0);
|
643
|
-
}
|
644
|
-
e.stopPropagation();
|
645
|
-
}
|
646
|
-
handleKeyEventSearch(e) {
|
647
|
-
if (this.disabled || this.readonly) {
|
648
|
-
this.dropdown.close();
|
649
|
-
setTimeout(() => {
|
650
|
-
this.textBoxSelectBox.focus();
|
651
|
-
}, 0);
|
652
|
-
return false;
|
653
|
-
}
|
654
|
-
if (e.key === 'Escape') {
|
655
|
-
this.text = null;
|
656
|
-
setTimeout(() => {
|
657
|
-
this.textBoxSelectBox.focus();
|
658
|
-
}, 0);
|
659
|
-
}
|
660
|
-
if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') &&
|
661
|
-
this.getItems().length > 0 &&
|
662
|
-
e.type === 'keydown') {
|
663
|
-
if (this.mode === 'single') {
|
664
|
-
this.currentfocusedIndex =
|
665
|
-
this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1);
|
666
|
-
this.selectedItemByIndex(this.currentfocusedIndex);
|
667
|
-
}
|
668
|
-
else {
|
669
|
-
if (this.dropdown.isOpen) {
|
670
|
-
this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);
|
671
|
-
}
|
672
|
-
else {
|
673
|
-
this.dropdown.open();
|
674
|
-
setTimeout(() => {
|
675
|
-
if (this.serchBox) {
|
676
|
-
this.serchBox.focus();
|
677
|
-
}
|
678
|
-
}, 0);
|
679
|
-
}
|
680
|
-
}
|
681
|
-
}
|
682
|
-
// if (e.key == 'Enter' && this.dropdown.isOpen && this.mode == 'single') {
|
683
|
-
// this.dropdown.close();
|
684
|
-
// setTimeout(() => {
|
685
|
-
// this.dropdown.focus();
|
686
|
-
// }, 0);
|
687
|
-
// }
|
688
|
-
//e.stopPropagation();
|
689
|
-
//e.preventDefault();
|
690
|
-
e.stopImmediatePropagation();
|
691
|
-
if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {
|
692
|
-
if (!this.remoteOperation && this.text && this.text !== '') {
|
693
|
-
this.itemsFiltered = this.items.filter((c) => c[this.textField]
|
694
|
-
.toLowerCase()
|
695
|
-
.includes(this.text.toLowerCase()));
|
696
|
-
if (this.itemsFiltered.length === 1) {
|
697
|
-
this.currentfocusedIndex = 0;
|
698
|
-
}
|
699
|
-
}
|
700
|
-
else {
|
701
|
-
this.itemsFiltered = this.items;
|
702
|
-
}
|
703
|
-
if (this.selectedItems.filter((c) => c[this.valueField] ===
|
704
|
-
this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&
|
705
|
-
this.mode == 'multiple') {
|
706
|
-
if (this.allowNull == true ||
|
707
|
-
(this.allowNull == false && this.selectedItems.length > 1)) {
|
708
|
-
if (!this.remoteOperation && this.text && this.text !== '') {
|
709
|
-
this.selectedItems = this.selectedItems.filter((c) => c !==
|
710
|
-
this.items.filter((c) => c[this.textField]
|
711
|
-
.toLowerCase()
|
712
|
-
.includes(this.text.toLowerCase()))[this.currentfocusedIndex]);
|
713
|
-
}
|
714
|
-
else {
|
715
|
-
this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !==
|
716
|
-
this.items[this.currentfocusedIndex][this.valueField]);
|
717
|
-
}
|
718
|
-
this.emitSelectionChangedEvent();
|
719
|
-
}
|
720
|
-
}
|
721
|
-
else {
|
722
|
-
if (this.mode == 'multiple') {
|
723
|
-
if (this.currentfocusedIndex != -1) {
|
724
|
-
if (!this.remoteOperation && this.text && this.text !== '') {
|
725
|
-
if (this.itemsFiltered.length === 1) {
|
726
|
-
this.selectedItems.push(this.itemsFiltered[0]);
|
727
|
-
}
|
728
|
-
else {
|
729
|
-
this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);
|
730
|
-
}
|
731
|
-
}
|
732
|
-
else {
|
733
|
-
this.selectedItems.push(this.items[this.currentfocusedIndex]);
|
734
|
-
}
|
735
|
-
this.emitSelectionChangedEvent();
|
736
|
-
}
|
737
|
-
}
|
738
|
-
else {
|
739
|
-
if (this.text && this.itemsFiltered?.length === 1) {
|
740
|
-
this.setSelectedItems(this.itemsFiltered, true);
|
741
|
-
}
|
742
|
-
if (this.mode == 'single') {
|
743
|
-
this.dropdown.close();
|
744
|
-
setTimeout(() => {
|
745
|
-
this.textBoxSelectBox.focus();
|
746
|
-
}, 0);
|
747
|
-
}
|
748
|
-
}
|
749
|
-
}
|
750
|
-
e.stopPropagation();
|
751
|
-
e.preventDefault();
|
752
|
-
e.stopImmediatePropagation();
|
753
|
-
}
|
754
|
-
this.cdr.markForCheck();
|
755
|
-
}
|
756
|
-
isChar(str) {
|
757
|
-
if (str.includes('Shift') ||
|
758
|
-
str.includes('Tab') ||
|
759
|
-
str.includes('Control') ||
|
760
|
-
str.includes('Alt') ||
|
761
|
-
str.includes('CapsLock') ||
|
762
|
-
str.includes('Meta') ||
|
763
|
-
str.includes('ContextMenu') ||
|
764
|
-
str.includes('Enter') ||
|
765
|
-
str.includes('Backspace') ||
|
766
|
-
str.includes('PrintScreen') ||
|
767
|
-
str.includes('ScrollLock') ||
|
768
|
-
str.includes('Pause') ||
|
769
|
-
str.includes('Home') ||
|
770
|
-
str.includes('End') ||
|
771
|
-
str.includes('Insert') ||
|
772
|
-
str.includes('PageUp') ||
|
773
|
-
str.includes('Delete') ||
|
774
|
-
str.includes('PageDown') ||
|
775
|
-
str.includes('NumLock') ||
|
776
|
-
str.includes('Escape') ||
|
777
|
-
str.includes('Arrow') ||
|
778
|
-
str.includes('ّF1') ||
|
779
|
-
str.includes('F2') ||
|
780
|
-
str.includes('F3') ||
|
781
|
-
str.includes('F4') ||
|
782
|
-
str.includes('F5') ||
|
783
|
-
str.includes('F6') ||
|
784
|
-
str.includes('F7') ||
|
785
|
-
str.includes('F8') ||
|
786
|
-
str.includes('F9') ||
|
787
|
-
str.includes('F10') ||
|
788
|
-
str.includes('F11') ||
|
789
|
-
str.includes('F12')) {
|
790
|
-
return false;
|
791
|
-
}
|
792
|
-
else {
|
793
|
-
return true;
|
794
|
-
}
|
795
|
-
}
|
796
|
-
handleKeyEvent(e) {
|
797
|
-
// const NumberMinusPattern = /[a-zA-Z0-9\-]/g;
|
798
|
-
// const Farsi = /[پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ\s]+$/;
|
799
|
-
// const inputChar = String.fromCharCode(e.charCode);
|
800
|
-
// const patternEn = /^[a-zA-Z0-9]*$/;
|
801
|
-
// const pattern = /^[\u0600-\u06FF\s]+$/;
|
802
|
-
const inputChar = e.key;
|
803
|
-
if ((inputChar != 'Backspace' &&
|
804
|
-
inputChar != 'Backspace' &&
|
805
|
-
inputChar != 'Tab' &&
|
806
|
-
inputChar != 'Enter' &&
|
807
|
-
inputChar != 'Escape' &&
|
808
|
-
inputChar != 'ArrowDown' &&
|
809
|
-
inputChar != 'ArrowUp') ||
|
810
|
-
e.code === 'Space' ||
|
811
|
-
e.ctrlKey == true) {
|
812
|
-
e.preventDefault();
|
813
|
-
}
|
814
|
-
if (e.key === 'Backspace' &&
|
815
|
-
e.type === 'keydown' &&
|
816
|
-
((this.allowNull === true && this.selectedItems.length > 0) ||
|
817
|
-
(this.allowNull === false && this.selectedItems.length > 1))) {
|
818
|
-
this.selectedItems.pop();
|
819
|
-
this.emitSelectionChangedEvent();
|
820
|
-
}
|
821
|
-
if (this.disabled || this.readonly) {
|
822
|
-
this.dropdown.close();
|
823
|
-
setTimeout(() => {
|
824
|
-
this.textBoxSelectBox.focus();
|
825
|
-
}, 0);
|
826
|
-
return false;
|
827
|
-
}
|
828
|
-
const INPUT = String.fromCharCode(e.keyCode);
|
829
|
-
if (this.isChar(e.key) && this.allowSearch && e.ctrlKey == false) {
|
830
|
-
this.dropdown.open();
|
831
|
-
setTimeout(() => {
|
832
|
-
if (this.serchBox) {
|
833
|
-
this.serchBox.focus();
|
834
|
-
}
|
835
|
-
}, 0);
|
836
|
-
this.text = e.key;
|
837
|
-
}
|
838
|
-
if (e.key === 'Escape') {
|
839
|
-
this.text = null;
|
840
|
-
this.dropdown.close();
|
841
|
-
setTimeout(() => {
|
842
|
-
this.textBoxSelectBox.focus();
|
843
|
-
}, 0);
|
844
|
-
}
|
845
|
-
if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') &&
|
846
|
-
this.getItems().length > 0 &&
|
847
|
-
e.type === 'keydown') {
|
848
|
-
if (this.mode === 'single') {
|
849
|
-
this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));
|
850
|
-
}
|
851
|
-
else {
|
852
|
-
if (this.dropdown.isOpen) {
|
853
|
-
// this.setSelectedIndex((e.key === 'ArrowDown' ? 1 : -1));
|
854
|
-
if (this.allowSearch == false) {
|
855
|
-
this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);
|
856
|
-
}
|
857
|
-
else {
|
858
|
-
setTimeout(() => {
|
859
|
-
if (this.serchBox) {
|
860
|
-
this.serchBox.focus();
|
861
|
-
}
|
862
|
-
}, 0);
|
863
|
-
}
|
864
|
-
}
|
865
|
-
else {
|
866
|
-
this.dropdown.open();
|
867
|
-
if (this.allowSearch == true) {
|
868
|
-
setTimeout(() => {
|
869
|
-
if (this.serchBox) {
|
870
|
-
this.serchBox.focus();
|
871
|
-
}
|
872
|
-
}, 0);
|
873
|
-
}
|
874
|
-
}
|
875
|
-
}
|
876
|
-
}
|
877
|
-
if (this.allowSearch === false) {
|
878
|
-
if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {
|
879
|
-
e.stopImmediatePropagation();
|
880
|
-
if (this.selectedItems.filter((c) => c[this.valueField] ===
|
881
|
-
this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&
|
882
|
-
this.mode == 'multiple') {
|
883
|
-
if (this.allowNull == true ||
|
884
|
-
(this.allowNull == false && this.selectedItems.length > 1)) {
|
885
|
-
if (!this.remoteOperation && this.text && this.text !== '') {
|
886
|
-
this.selectedItems = this.selectedItems.filter((c) => c !==
|
887
|
-
this.items.filter((c) => c[this.textField]
|
888
|
-
.toLowerCase()
|
889
|
-
.includes(this.text.toLowerCase()))[this.currentfocusedIndex]);
|
890
|
-
}
|
891
|
-
else {
|
892
|
-
this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !==
|
893
|
-
this.items[this.currentfocusedIndex][this.valueField]);
|
894
|
-
}
|
895
|
-
this.emitSelectionChangedEvent();
|
896
|
-
}
|
897
|
-
}
|
898
|
-
else {
|
899
|
-
if (this.mode == 'multiple') {
|
900
|
-
if (this.currentfocusedIndex != -1) {
|
901
|
-
if (!this.remoteOperation && this.text && this.text !== '') {
|
902
|
-
if (this.itemsFiltered.length === 1) {
|
903
|
-
this.selectedItems.push(this.itemsFiltered[0]);
|
904
|
-
}
|
905
|
-
else {
|
906
|
-
this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);
|
907
|
-
}
|
908
|
-
}
|
909
|
-
else {
|
910
|
-
this.selectedItems.push(this.items[this.currentfocusedIndex]);
|
911
|
-
}
|
912
|
-
this.emitSelectionChangedEvent();
|
913
|
-
}
|
914
|
-
}
|
915
|
-
else {
|
916
|
-
if (this.text && this.itemsFiltered.length === 1) {
|
917
|
-
this.setSelectedItems(this.itemsFiltered, true);
|
918
|
-
}
|
919
|
-
if (this.mode == 'single') {
|
920
|
-
this.dropdown.close();
|
921
|
-
setTimeout(() => {
|
922
|
-
this.textBoxSelectBox.focus();
|
923
|
-
}, 0);
|
924
|
-
}
|
925
|
-
}
|
926
|
-
}
|
927
|
-
}
|
928
|
-
}
|
929
|
-
this.cdr.markForCheck();
|
930
|
-
}
|
931
|
-
focus() {
|
932
|
-
this.textbox.focus();
|
933
|
-
}
|
934
|
-
selectedItemByIndex(index) {
|
935
|
-
let item = [];
|
936
|
-
if (!this.remoteOperation && this.text && this.text !== '') {
|
937
|
-
this.itemsFiltered = this.items.filter((c) => c[this.textField]
|
938
|
-
.toLowerCase()
|
939
|
-
.includes(this.text.toLowerCase()));
|
940
|
-
item = this.itemsFiltered[index];
|
941
|
-
}
|
942
|
-
else {
|
943
|
-
item = this.items[index];
|
944
|
-
}
|
945
|
-
//
|
946
|
-
// const item = this.text ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[index] : this.items[index];
|
947
|
-
if (item) {
|
948
|
-
this.setSelectedItems([item], true);
|
949
|
-
}
|
950
|
-
this.setSelectedIndex();
|
951
|
-
}
|
952
|
-
noAccentOrigin = {
|
953
|
-
ك: 'ک',
|
954
|
-
ﻷ: 'لا',
|
955
|
-
ؤ: 'و',
|
956
|
-
ى: 'ی',
|
957
|
-
ي: 'ی',
|
958
|
-
ئ: 'ی',
|
959
|
-
أ: 'ا',
|
960
|
-
إ: 'ا',
|
961
|
-
آ: 'ا',
|
962
|
-
ٱ: 'ا',
|
963
|
-
ٳ: 'ا',
|
964
|
-
ة: 'ه',
|
965
|
-
ء: '',
|
966
|
-
'ِ': '',
|
967
|
-
'ْ': '',
|
968
|
-
'ُ': '',
|
969
|
-
'َ': '',
|
970
|
-
'ّ': '',
|
971
|
-
'ٍ': '',
|
972
|
-
'ً': '',
|
973
|
-
'ٌ': '',
|
974
|
-
'ٓ': '',
|
975
|
-
'ٰ': '',
|
976
|
-
'ٔ': '',
|
977
|
-
'�': '',
|
978
|
-
};
|
979
|
-
getItems() {
|
980
|
-
if (this.items == null) {
|
981
|
-
return [];
|
982
|
-
}
|
983
|
-
if (!this.remoteOperation && this.text && this.text !== '') {
|
984
|
-
return this.items.filter((c) => {
|
985
|
-
const convertedTextField = this.convertArabicToPersian(c[this.textField], this.noAccentOrigin);
|
986
|
-
const convertedText = this.convertArabicToPersian(this.text, this.noAccentOrigin);
|
987
|
-
return convertedTextField
|
988
|
-
.toLowerCase()
|
989
|
-
.includes(convertedText.toLowerCase());
|
990
|
-
});
|
991
|
-
}
|
992
|
-
else {
|
993
|
-
return this.items;
|
994
|
-
}
|
995
|
-
}
|
996
|
-
convertArabicToPersian(inputString, conversionMap) {
|
997
|
-
let textConvert = '';
|
998
|
-
for (let i = 0; i < inputString.length; i++) {
|
999
|
-
const currentChar = inputString[i];
|
1000
|
-
if (conversionMap[currentChar]) {
|
1001
|
-
textConvert += conversionMap[currentChar];
|
1002
|
-
}
|
1003
|
-
else {
|
1004
|
-
textConvert += currentChar;
|
1005
|
-
}
|
1006
|
-
}
|
1007
|
-
return textConvert;
|
1008
|
-
}
|
1009
|
-
isItemSelected(item) {
|
1010
|
-
return (this.selectedItems &&
|
1011
|
-
this.selectedItems.filter((c) => c[this.valueField] === item[this.valueField]).length > 0);
|
1012
|
-
}
|
1013
|
-
itemsStatusObserver;
|
1014
|
-
waitForData(callbackfn) {
|
1015
|
-
if (this.items && this.items.length) {
|
1016
|
-
callbackfn();
|
1017
|
-
}
|
1018
|
-
else if (!this.itemsStatusObserver) {
|
1019
|
-
Observable.create((observer) => {
|
1020
|
-
this.itemsStatusObserver = observer;
|
1021
|
-
})
|
1022
|
-
.pipe(debounceTime(100))
|
1023
|
-
.pipe(distinctUntilChanged())
|
1024
|
-
.subscribe((c) => {
|
1025
|
-
callbackfn();
|
1026
|
-
});
|
1027
|
-
}
|
1028
|
-
}
|
1029
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXSelectBoxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
1030
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: { showDropDownButton: "showDropDownButton", rowInputTemplate: "rowInputTemplate", showCheckBox: "showCheckBox", readonly: "readonly", rtl: "rtl", disabled: "disabled", placeholder: "placeholder", size: "size", allowNull: "allowNull", textAlign: "textAlign", bufferSize: "bufferSize", remoteOperation: "remoteOperation", fitParent: "fitParent", dropdownWidth: "dropdownWidth", multiLine: "multiLine", onDemandTranslate: "onDemandTranslate", dataSource: "dataSource", validation: "validation", disabledCallback: "disabledCallback", allowSearch: "allowSearch", textField: "textField", valueField: "valueField", disabledField: "disabledField", mode: "mode", items: "items", selectedItems: "selectedItems", selectedValues: "selectedValues" }, outputs: { dropdownToggle: "dropdownToggle", itemsChange: "itemsChange", onBlur: "onBlur", onFocus: "onFocus", selectionChanged: "selectionChanged", selectedItemsChange: "selectedItemsChange", selectedValuesChange: "selectedValuesChange" }, host: { styleAttribute: "width: 100%" }, providers: [
|
1031
|
-
{ provide: AXValidatableComponent, useExisting: AXSelectBoxComponent },
|
1032
|
-
], queries: [{ propertyName: "rowTemplate", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }, { propertyName: "_contentValidation", first: true, predicate: AXValidation, descendants: true, static: true }], viewQueries: [{ propertyName: "span", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }, { propertyName: "textbox", first: true, predicate: AXTextBoxComponent, descendants: true, static: true }, { propertyName: "listContainer", first: true, predicate: ["listContainer"], descendants: true, static: true }, { propertyName: "serchBox", first: true, predicate: ["serchBox"], descendants: true }, { propertyName: "textBoxSelectBox", first: true, predicate: ["textBoxSelectBox"], descendants: true, static: true }, { propertyName: "dropdown", first: true, predicate: ["d"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ax-drop-down\n #d\n [size]=\"size\"\n [fitParent]=\"fitParent\"\n [dropdownWidth]=\"dropdownWidth\"\n [rtl]=\"rtl\"\n [showDropDownButton]=\"showDropDownButton\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (dropdownToggle)=\"dropdownToggleSelecBox($event)\"\n>\n <ng-container start>\n <ng-content select=\"[start]\"> </ng-content>\n </ng-container>\n <ng-container header>\n <div\n class=\"ax chips-container\"\n [class.multiline]=\"multiLine\"\n [style.padding]=\"selectedItems.length && multiLine ? '0.25rem' : ''\"\n >\n <div\n class=\"chips\"\n [class.chips-blank]=\"mode === 'single'\"\n [title]=\"item[textField]\"\n *ngFor=\"let item of selectedItems\"\n >\n <span\n class=\"chips-text\"\n [ngStyle]=\"{\n width:\n item[textField].length > 15 &&\n this.mode === 'multiple' &&\n !multiLine\n ? '110px'\n : 'auto'\n }\"\n >\n {{ item[textField] }}\n </span>\n <span\n class=\"close-icon\"\n (click)=\"handleItemRemoveClick(item)\"\n *ngIf=\"\n (readonly != true || itemRemove == true) &&\n disabled != true &&\n (allowNull == true || selectedItems.length > 1)\n \"\n >\n <i class=\"far fa-times close\"></i>\n </span>\n </div>\n <div class=\"search-wrapper\" (click)=\"onTextBoxClick($event)\">\n <ax-text-box\n #textBoxSelectBox\n [textAlign]=\"textAlign\"\n [placeholder]=\"selectedItems.length == 0 ? placeholder : ''\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n (onkey)=\"handleKeyEvent($event)\"\n [size]=\"size\"\n (onFocus)=\"onFocusTextBox($event)\"\n >\n </ax-text-box>\n </div>\n </div>\n </ng-container>\n <ng-container end>\n <ng-content select=\"[end]\"> </ng-content>\n </ng-container>\n\n <ng-container panel>\n <div *ngIf=\"allowSearch\" class=\"search-wrapper\" style=\"padding: 0.7em\">\n <ax-search-box\n #serchBox\n [onDemandTranslate]=\"onDemandTranslate\"\n [(value)]=\"text\"\n (onkey)=\"handleKeyEventSearch($event)\"\n (textChanged)=\"textChanged($event)\"\n (onButtonClick)=\"textChanged($event)\"\n >\n </ax-search-box>\n </div>\n <div class=\"ax list-container\">\n <div\n #listContainer\n class=\"list-container-items\"\n (scroll)=\"scrolled($event)\"\n >\n <ng-container\n *ngIf=\"getItems().length > 0; then thenTemplate; else elseTemplate\"\n ></ng-container>\n <ng-template #thenTemplate>\n <div\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\n class=\"list-item\"\n *ngFor=\"let item of getItems(); let i = index\"\n [class.focused]=\"i == currentfocusedIndex\"\n [class.selected]=\"isItemSelected(item)\"\n (click)=\"handleItemClick($event, item)\"\n >\n <div style=\"display: flex\">\n <ax-check-box\n *ngIf=\"showCheckBox\"\n [size]=\"size\"\n [value]=\"isItemSelected(item)\"\n [disabled]=\"\n (!allowNull &&\n selectedItems.length === 1 &&\n isItemSelected(item)) ||\n isItemDisabled(item)\n \"\n (onClick)=\"handleItemClick($event, item)\"\n >\n </ax-check-box>\n <ng-container *ngIf=\"rowTemplate; else elseTemplate\">\n <div\n style=\"\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n \"\n [title]=\"item[textField]\"\n [ngStyle]=\"\n showCheckBox ? { 'padding-inline-start': '0.5rem' } : ''\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: { $implicit: item }\n \"\n >\n </ng-container>\n </div>\n </ng-container>\n <ng-template #elseTemplate>\n <div\n style=\"\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n \"\n [title]=\"item[textField]\"\n [ngStyle]=\"\n showCheckBox ? { 'padding-inline-start': '0.5rem' } : ''\n \"\n >\n {{ item[textField] }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-template>\n <div *ngIf=\"showLoading\" class=\"ax-pad-sm\" style=\"text-align: center\">\n <i\n class=\"far fa-spinner-third fa-pulse fa-2x\"\n style=\"color: var(--ax-primary-color)\"\n ></i>\n </div>\n <!-- <ax-loading-indicator ></ax-loading-indicator> -->\n <ng-template #elseTemplate>\n <ng-container\n *ngIf=\"\n showLoading == true;\n then searchTemplate;\n else noDataTemplate\n \"\n ></ng-container>\n <ng-template #searchTemplate>\n <div class=\"list-item\">\n {{ 'common.search' | trans }}\n </div>\n </ng-template>\n <ng-template #noDataTemplate>\n <div class=\"list-item\">\n {{ 'common.noDataFound' | trans }}\n </div>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </ng-container>\n</ax-drop-down>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.AXDropdownComponent, selector: "ax-drop-down", inputs: ["rtl", "readonly", "loading", "dropdownWidth"], outputs: ["dropdownToggle", "onButtonClick"] }, { kind: "component", type: i3.AXTextBoxComponent, selector: "ax-text-box", inputs: ["mask", "showMask", "type", "maxLength", "maskGuid", "maskPlaceholder", "maskKeepCharPositions"] }, { kind: "component", type: i4.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["readonly", "disabled", "size", "label", "tabIndex", "indeterminate", "value"], outputs: ["onValueChanged", "valueChange", "onClick"] }, { kind: "component", type: i5.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["placeholder", "onDemandTranslate", "text", "delay"], outputs: ["textChanged", "onButtonClick"] }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "trans" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
1033
|
-
}
|
1034
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXSelectBoxComponent, decorators: [{
|
1035
|
-
type: Component,
|
1036
|
-
args: [{ selector: 'ax-select-box', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { style: 'width: 100%' }, providers: [
|
1037
|
-
{ provide: AXValidatableComponent, useExisting: AXSelectBoxComponent },
|
1038
|
-
], template: "<ax-drop-down\n #d\n [size]=\"size\"\n [fitParent]=\"fitParent\"\n [dropdownWidth]=\"dropdownWidth\"\n [rtl]=\"rtl\"\n [showDropDownButton]=\"showDropDownButton\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n (dropdownToggle)=\"dropdownToggleSelecBox($event)\"\n>\n <ng-container start>\n <ng-content select=\"[start]\"> </ng-content>\n </ng-container>\n <ng-container header>\n <div\n class=\"ax chips-container\"\n [class.multiline]=\"multiLine\"\n [style.padding]=\"selectedItems.length && multiLine ? '0.25rem' : ''\"\n >\n <div\n class=\"chips\"\n [class.chips-blank]=\"mode === 'single'\"\n [title]=\"item[textField]\"\n *ngFor=\"let item of selectedItems\"\n >\n <span\n class=\"chips-text\"\n [ngStyle]=\"{\n width:\n item[textField].length > 15 &&\n this.mode === 'multiple' &&\n !multiLine\n ? '110px'\n : 'auto'\n }\"\n >\n {{ item[textField] }}\n </span>\n <span\n class=\"close-icon\"\n (click)=\"handleItemRemoveClick(item)\"\n *ngIf=\"\n (readonly != true || itemRemove == true) &&\n disabled != true &&\n (allowNull == true || selectedItems.length > 1)\n \"\n >\n <i class=\"far fa-times close\"></i>\n </span>\n </div>\n <div class=\"search-wrapper\" (click)=\"onTextBoxClick($event)\">\n <ax-text-box\n #textBoxSelectBox\n [textAlign]=\"textAlign\"\n [placeholder]=\"selectedItems.length == 0 ? placeholder : ''\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n (onkey)=\"handleKeyEvent($event)\"\n [size]=\"size\"\n (onFocus)=\"onFocusTextBox($event)\"\n >\n </ax-text-box>\n </div>\n </div>\n </ng-container>\n <ng-container end>\n <ng-content select=\"[end]\"> </ng-content>\n </ng-container>\n\n <ng-container panel>\n <div *ngIf=\"allowSearch\" class=\"search-wrapper\" style=\"padding: 0.7em\">\n <ax-search-box\n #serchBox\n [onDemandTranslate]=\"onDemandTranslate\"\n [(value)]=\"text\"\n (onkey)=\"handleKeyEventSearch($event)\"\n (textChanged)=\"textChanged($event)\"\n (onButtonClick)=\"textChanged($event)\"\n >\n </ax-search-box>\n </div>\n <div class=\"ax list-container\">\n <div\n #listContainer\n class=\"list-container-items\"\n (scroll)=\"scrolled($event)\"\n >\n <ng-container\n *ngIf=\"getItems().length > 0; then thenTemplate; else elseTemplate\"\n ></ng-container>\n <ng-template #thenTemplate>\n <div\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\n class=\"list-item\"\n *ngFor=\"let item of getItems(); let i = index\"\n [class.focused]=\"i == currentfocusedIndex\"\n [class.selected]=\"isItemSelected(item)\"\n (click)=\"handleItemClick($event, item)\"\n >\n <div style=\"display: flex\">\n <ax-check-box\n *ngIf=\"showCheckBox\"\n [size]=\"size\"\n [value]=\"isItemSelected(item)\"\n [disabled]=\"\n (!allowNull &&\n selectedItems.length === 1 &&\n isItemSelected(item)) ||\n isItemDisabled(item)\n \"\n (onClick)=\"handleItemClick($event, item)\"\n >\n </ax-check-box>\n <ng-container *ngIf=\"rowTemplate; else elseTemplate\">\n <div\n style=\"\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n \"\n [title]=\"item[textField]\"\n [ngStyle]=\"\n showCheckBox ? { 'padding-inline-start': '0.5rem' } : ''\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate;\n context: { $implicit: item }\n \"\n >\n </ng-container>\n </div>\n </ng-container>\n <ng-template #elseTemplate>\n <div\n style=\"\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n flex: 1;\n \"\n [title]=\"item[textField]\"\n [ngStyle]=\"\n showCheckBox ? { 'padding-inline-start': '0.5rem' } : ''\n \"\n >\n {{ item[textField] }}\n </div>\n </ng-template>\n </div>\n </div>\n </ng-template>\n <div *ngIf=\"showLoading\" class=\"ax-pad-sm\" style=\"text-align: center\">\n <i\n class=\"far fa-spinner-third fa-pulse fa-2x\"\n style=\"color: var(--ax-primary-color)\"\n ></i>\n </div>\n <!-- <ax-loading-indicator ></ax-loading-indicator> -->\n <ng-template #elseTemplate>\n <ng-container\n *ngIf=\"\n showLoading == true;\n then searchTemplate;\n else noDataTemplate\n \"\n ></ng-container>\n <ng-template #searchTemplate>\n <div class=\"list-item\">\n {{ 'common.search' | trans }}\n </div>\n </ng-template>\n <ng-template #noDataTemplate>\n <div class=\"list-item\">\n {{ 'common.noDataFound' | trans }}\n </div>\n </ng-template>\n </ng-template>\n </div>\n </div>\n </ng-container>\n</ax-drop-down>\n" }]
|
1039
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { showDropDownButton: [{
|
1040
|
-
type: Input
|
1041
|
-
}], rowTemplate: [{
|
1042
|
-
type: ContentChild,
|
1043
|
-
args: [TemplateRef, { static: true }]
|
1044
|
-
}], rowInputTemplate: [{
|
1045
|
-
type: Input
|
1046
|
-
}], span: [{
|
1047
|
-
type: ViewChild,
|
1048
|
-
args: [AXTextBoxComponent, { static: true }]
|
1049
|
-
}], textbox: [{
|
1050
|
-
type: ViewChild,
|
1051
|
-
args: [AXTextBoxComponent, { static: true }]
|
1052
|
-
}], listContainer: [{
|
1053
|
-
type: ViewChild,
|
1054
|
-
args: ['listContainer', { static: true }]
|
1055
|
-
}], serchBox: [{
|
1056
|
-
type: ViewChild,
|
1057
|
-
args: ['serchBox', { static: false }]
|
1058
|
-
}], textBoxSelectBox: [{
|
1059
|
-
type: ViewChild,
|
1060
|
-
args: ['textBoxSelectBox', { static: true }]
|
1061
|
-
}], showCheckBox: [{
|
1062
|
-
type: Input
|
1063
|
-
}], readonly: [{
|
1064
|
-
type: Input
|
1065
|
-
}], rtl: [{
|
1066
|
-
type: Input
|
1067
|
-
}], disabled: [{
|
1068
|
-
type: Input
|
1069
|
-
}], placeholder: [{
|
1070
|
-
type: Input
|
1071
|
-
}], size: [{
|
1072
|
-
type: Input
|
1073
|
-
}], allowNull: [{
|
1074
|
-
type: Input
|
1075
|
-
}], textAlign: [{
|
1076
|
-
type: Input
|
1077
|
-
}], bufferSize: [{
|
1078
|
-
type: Input
|
1079
|
-
}], remoteOperation: [{
|
1080
|
-
type: Input
|
1081
|
-
}], fitParent: [{
|
1082
|
-
type: Input
|
1083
|
-
}], dropdownWidth: [{
|
1084
|
-
type: Input
|
1085
|
-
}], multiLine: [{
|
1086
|
-
type: Input
|
1087
|
-
}], dropdownToggle: [{
|
1088
|
-
type: Output
|
1089
|
-
}], onDemandTranslate: [{
|
1090
|
-
type: Input
|
1091
|
-
}], _contentDataSource: [{
|
1092
|
-
type: ContentChild,
|
1093
|
-
args: [AXDataSourceComponent, { static: true }]
|
1094
|
-
}], dataSource: [{
|
1095
|
-
type: Input
|
1096
|
-
}], _contentValidation: [{
|
1097
|
-
type: ContentChild,
|
1098
|
-
args: [AXValidation, { static: true }]
|
1099
|
-
}], validation: [{
|
1100
|
-
type: Input
|
1101
|
-
}], dropdown: [{
|
1102
|
-
type: ViewChild,
|
1103
|
-
args: ['d', { static: true }]
|
1104
|
-
}], disabledCallback: [{
|
1105
|
-
type: Input
|
1106
|
-
}], allowSearch: [{
|
1107
|
-
type: Input
|
1108
|
-
}], textField: [{
|
1109
|
-
type: Input
|
1110
|
-
}], valueField: [{
|
1111
|
-
type: Input
|
1112
|
-
}], disabledField: [{
|
1113
|
-
type: Input
|
1114
|
-
}], mode: [{
|
1115
|
-
type: Input
|
1116
|
-
}], itemsChange: [{
|
1117
|
-
type: Output
|
1118
|
-
}], onBlur: [{
|
1119
|
-
type: Output
|
1120
|
-
}], onFocus: [{
|
1121
|
-
type: Output
|
1122
|
-
}], items: [{
|
1123
|
-
type: Input
|
1124
|
-
}], selectionChanged: [{
|
1125
|
-
type: Output
|
1126
|
-
}], selectedItemsChange: [{
|
1127
|
-
type: Output
|
1128
|
-
}], selectedItems: [{
|
1129
|
-
type: Input
|
1130
|
-
}], selectedValuesChange: [{
|
1131
|
-
type: Output
|
1132
|
-
}], selectedValues: [{
|
1133
|
-
type: Input
|
1134
|
-
}] } });
|
1135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3NlbGVjdGJveC9zZWxlY3Rib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvc2VsZWN0Ym94L3NlbGVjdGJveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFJTCxzQkFBc0IsR0FDdkIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFNUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFD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QztZQUN4QixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNwQixHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUMzQixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNyQixHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUN6QixHQUFHLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztZQUMzQixHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUMxQixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNyQixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUNwQixHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNuQixHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUN4QixHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUN2QixHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUNyQixHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztZQUNuQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FB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QUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd2QixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFFRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsT0FBTztzQkFBaEIsTUFBTTtnQkFJSSxLQUFLO3NCQURmLEtBQUs7Z0JBc0JOLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLG1CQUFtQjtzQkFEbEIsTUFBTTtnQkFLSSxhQUFhO3NCQUR2QixLQUFLO2dCQTBNTixvQkFBb0I7c0JBRG5CLE1BQU07Z0JBTUksY0FBYztzQkFEeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkaWZmZXJlbmNlQnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEFYQmFzZUlucHV0Q29tcG9uZW50LFxuICBBWEJhc2VTaXphYmxlQ29tcG9uZW50LFxuICBBWEVsZW1lbnRTaXplLFxuICBBWFZhbGlkYXRhYmxlQ29tcG9uZW50LFxufSBmcm9tICcuLi9iYXNlL2VsZW1lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhCYXNlRXZlbnQgfSBmcm9tICcuLi9iYXNlL2V2ZW50cy5jbGFzcyc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2VDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhLXNvdXJjZS9kYXRhc291cmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2VSZWFkUGFyYW1zIH0gZnJvbSAnLi4vZGF0YS1zb3VyY2UvcmVhZC1wYXJhbSc7XG5pbXBvcnQgeyBBWERyb3Bkb3duQ29tcG9uZW50IH0gZnJvbSAnLi4vZHJvcGRvd24vZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IEFYU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb24gfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24uY29tcG9uZW50JztcbmV4cG9ydCBjbGFzcyBBWFNlbGVjdEJveFNlbGVjdGlvbkNoYW5nZWRFdmVudCBleHRlbmRzIEFYQmFzZUV2ZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgY29tcG9uZW50OiBhbnksXG4gICAgcHVibGljIHNlbGVjdGVkSXRlbXM6IGFueVtdLFxuICAgIHB1YmxpYyBzZWxlY3RlZFZhbHVlczogYW55W10gfCBhbnlcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1zZWxlY3QtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdGJveC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IHN0eWxlOiAnd2lkdGg6IDEwMCUnIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhWYWxpZGF0YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VsZWN0Qm94Q29tcG9uZW50IH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYU2VsZWN0Qm94Q29tcG9uZW50XG4gIGV4dGVuZHMgQVhWYWxpZGF0YWJsZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFYQmFzZVNpemFibGVDb21wb25lbnQsIEFYQmFzZUlucHV0Q29tcG9uZW50XG57XG4gIEBJbnB1dCgpIHNob3dEcm9wRG93bkJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcm93VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KClcbiAgcm93SW5wdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZChBWFRleHRCb3hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNwYW46IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoQVhUZXh0Qm94Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB0ZXh0Ym94OiBBWFRleHRCb3hDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnbGlzdENvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGxpc3RDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlcmNoQm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHNlcmNoQm94OiBBWFNlYXJjaEJveENvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCd0ZXh0Qm94U2VsZWN0Qm94JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgdGV4dEJveFNlbGVjdEJveDogQVhUZXh0Qm94Q29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIHNob3dDaGVja0JveDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBydGw6IGJvb2xlYW4gPSBBWENvbmZpZy5nZXQoJ2xheW91dC5ydGwnKTtcblxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgc2l6ZTogQVhFbGVtZW50U2l6ZSA9ICdtZCc7XG5cbiAgQElucHV0KCkgYWxsb3dOdWxsOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSB0ZXh0QWxpZ246ICdyaWdodCcgfCAnbGVmdCcgfCBudWxsID0gbnVsbDtcblxuICBASW5wdXQoKSBidWZmZXJTaXplOiBudW1iZXIgPSAyMDtcblxuICBASW5wdXQoKSByZW1vdGVPcGVyYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBmaXRQYXJlbnQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGRyb3Bkb3duV2lkdGg6IHN0cmluZyA9ICczMDBweCc7XG5cbiAgQElucHV0KCkgbXVsdGlMaW5lID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIGRyb3Bkb3duVG9nZ2xlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyB0aGlzIGlucHV0IGlzIFByaXZhdGUgYW5kIG9ubHkgdXNlIGluIExPVlxuXG4gIEBJbnB1dCgpIG9uRGVtYW5kVHJhbnNsYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY3VycmVudGZvY3VzZWRJbmRleDogbnVtYmVyID0gLTE7XG4gIHNob3dMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2tpcDogbnVtYmVyID0gLTE7XG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xuICAvLyBASW5wdXQoKVxuICAvLyBjaGlwc1dpZHRoOiBzdHJpbmcgPSAnJztcblxuICB0ZXh0OiBzdHJpbmcgPSAnJztcbiAgdG90YWxDb3VudDogbnVtYmVyID0gMDtcblxuICBAQ29udGVudENoaWxkKEFYRGF0YVNvdXJjZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfY29udGVudERhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcblxuICBwcml2YXRlIF9kYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkYXRhU291cmNlKCk6IEFYRGF0YVNvdXJjZUNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UgPyB0aGlzLl9kYXRhU291cmNlIDogdGhpcy5fY29udGVudERhdGFTb3VyY2U7XG4gIH1cblxuICBwdWJsaWMgc2V0IGRhdGFTb3VyY2UodjogQVhEYXRhU291cmNlQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fZGF0YVNvdXJjZSA9IHY7XG4gIH1cblxuICBAQ29udGVudENoaWxkKEFYVmFsaWRhdGlvbiwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfY29udGVudFZhbGlkYXRpb246IEFYVmFsaWRhdGlvbjtcblxuICBwcml2YXRlIF92YWxpZGF0aW9uOiBBWFZhbGlkYXRpb247XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWxpZGF0aW9uKCk6IEFYVmFsaWRhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRpb24gPyB0aGlzLl92YWxpZGF0aW9uIDogdGhpcy5fY29udGVudFZhbGlkYXRpb247XG4gIH1cblxuICBwdWJsaWMgc2V0IHZhbGlkYXRpb24odjogQVhWYWxpZGF0aW9uKSB7XG4gICAgdGhpcy5fdmFsaWRhdGlvbiA9IHY7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmVcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIEBWaWV3Q2hpbGQoJ2QnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBkcm9wZG93bjogQVhEcm9wZG93bkNvbXBvbmVudDtcblxuICBASW5wdXQoKSBkaXNhYmxlZENhbGxiYWNrOiAoZTogeyBpdGVtOiBhbnk7IGluZGV4OiBudW1iZXIgfSkgPT4gYm9vbGVhbjtcblxuICBASW5wdXQoKSBhbGxvd1NlYXJjaDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHRleHRGaWVsZDogc3RyaW5nID0gJ3RleHQnO1xuICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBzdHJpbmcgPSAndmFsdWUnO1xuICBASW5wdXQoKSBkaXNhYmxlZEZpZWxkOiBzdHJpbmcgPSAnZGlzYWJsZWQnO1xuICBASW5wdXQoKSBtb2RlOiAnc2luZ2xlJyB8ICdtdWx0aXBsZScgPSAnc2luZ2xlJztcbiAgaXRlbVJlbW92ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgaXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIEBPdXRwdXQoKSBvbkJsdXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIG9uRm9jdXM6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJpdmF0ZSBfaXRlbXM6IGFueVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgaXRlbXMoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuICBwdWJsaWMgc2V0IGl0ZW1zKHY6IGFueVtdKSB7XG4gICAgdGhpcy5faXRlbXMgPSB2O1xuICAgIGlmICh0aGlzLml0ZW1zQ2hhbmdlKSB7XG4gICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQodik7XG4gICAgfVxuICAgIGlmICh0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlci5uZXh0KHRoaXMuaXRlbXMubGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBoYXNTZWxlY3RlZFZhbHVlOiBib29sZWFuID0gZmFsc2U7XG4gIGl0ZW1zRmlsdGVyZWQ6IGFueVtdID0gW107XG5cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIGRyb3BEb3duRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYU2VsZWN0Qm94U2VsZWN0aW9uQ2hhbmdlZEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWFNlbGVjdEJveFNlbGVjdGlvbkNoYW5nZWRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRJdGVtc0NoYW5nZTogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBzZWxlY3RlZEl0ZW1zKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcyB8fCBbXTtcbiAgfVxuICBwdWJsaWMgc2V0IHNlbGVjdGVkSXRlbXModjogYW55W10pIHtcbiAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXNDaGFuZ2Uodik7XG4gICAgLy8gaWYgKCF2KSB7XG4gICAgLy8gICB2ID0gW107XG4gICAgLy8gfVxuXG4gICAgLy8gY29uc3Qgb2xkID0gdGhpcy5zZWxlY3RlZEl0ZW1zO1xuICAgIC8vIGlmIChKU09OLnN0cmluZ2lmeShvbGQpICE9PSBKU09OLnN0cmluZ2lmeSh2KSkge1xuICAgIC8vICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMubW9kZSA9PSAnc2luZ2xlJyA/IHYuc2xpY2UoMCwgMSkgOiBbLi4ubmV3IFNldCh2KV07IC8vWy4uLm5ldyBTZXQodlswXSldIDogWy4uLm5ldyBTZXQodildO1xuICAgIC8vICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChjKSA9PiAoYy5zZWxlY3RlZCA9IHRydWUpKTtcbiAgICAvLyAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGVkSXRlbXMpO1xuICAgIC8vICAgdGhpcy5zZWxlY3RlZFZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIC8vICAgdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAvLyAgIHRoaXMud2FpdEZvckRhdGEoKCkgPT4ge1xuICAgIC8vICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtcykge1xuICAgIC8vICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoYykgPT4gKGMuc2VsZWN0ZWQgPSB0aGlzLl9zZWxlY3RlZEl0ZW1zLnNvbWUoKGkpID0+IGlbdGhpcy52YWx1ZUZpZWxkXSA9PSBjW3RoaXMudmFsdWVGaWVsZF0pKSk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH0pO1xuICAgIC8vIH1cbiAgfVxuXG4gIHNldFNlbGVjdGVkSXRlbXNDaGFuZ2UodjogYW55W10sIG9sZDogYW55W10gPSB0aGlzLnNlbGVjdGVkSXRlbXMpIHtcbiAgICBpZiAoIXYpIHtcbiAgICAgIHYgPSBbXTtcbiAgICB9XG4gICAgLy8gY29uc3Qgb2xkID0gdGhpcy5zZWxlY3RlZEl0ZW1zO1xuICAgIHZhciBmID0gZGlmZmVyZW5jZUJ5KG9sZCwgdiwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICB2YXIgcyA9IGRpZmZlcmVuY2VCeSh2LCBvbGQsIHRoaXMudmFsdWVGaWVsZCk7XG4gICAgLy8gaWYgKEpTT04uc3RyaW5naWZ5KG9sZCkgIT09IEpTT04uc3RyaW5naWZ5KHYpKSB7XG4gICAgaWYgKGYubGVuZ3RoICE9IDAgfHwgcy5sZW5ndGggIT0gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9XG4gICAgICAgIHRoaXMubW9kZSA9PSAnc2luZ2xlJyA/IHYuc2xpY2UoMCwgMSkgOiBbLi4ubmV3IFNldCh2KV07IC8vWy4uLm5ldyBTZXQodlswXSldIDogWy4uLm5ldyBTZXQodildO1xuICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChjKSA9PiAoYy5zZWxlY3RlZCA9IHRydWUpKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGVkSXRlbXMpO1xuICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc0NoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWRWYWx1ZXMpO1xuICAgICAgdGhpcy5jbGVhclZhbGlkYXRpb25TdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIHRoaXMud2FpdEZvckRhdGEoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtcykge1xuICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChcbiAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAoYy5zZWxlY3RlZCA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuc29tZShcbiAgICAgICAgICAgICAgICAoaSkgPT4gaVt0aGlzLnZhbHVlRmllbGRdID09IGNbdGhpcy52YWx1ZUZpZWxkXVxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnJvd1RlbXBsYXRlID09PSB1bmRlZmluZWQgJiYgdGhpcy5yb3dJbnB1dFRlbXBsYXRlICE9IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dUZW1wbGF0ZSA9IHRoaXMucm93SW5wdXRUZW1wbGF0ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMucnRsID09IG51bGwpIHtcbiAgICAgIHRoaXMucnRsID1cbiAgICAgICAgd2luZG93XG4gICAgICAgICAgLmdldENvbXB1dGVkU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCwgbnVsbClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnZGlyZWN0aW9uJykgPT09ICdydGwnO1xuICAgIH1cbiAgfVxuXG4gIHNjcm9sbGVkKGUpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJlxuICAgICAgdGhpcy50b3RhbENvdW50ID4gdGhpcy5pdGVtcy5sZW5ndGggJiZcbiAgICAgIHRoaXMubGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodCAhPSAwICYmXG4gICAgICB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLVxuICAgICAgICB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgLVxuICAgICAgICAzMDAgPFxuICAgICAgICA1MFxuICAgICkge1xuICAgICAgaWYgKHRoaXMuc2tpcCAhPT0gdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zaG93TG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2tpcCA9IHRoaXMuaXRlbXMubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcbiAgICAgICAgcGFyYW1zLnNraXAgPSB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICAgICAgcGFyYW1zLnRha2UgPSB0aGlzLmJ1ZmZlclNpemU7IC8vKiAoTWF0aC5mbG9vcih0aGlzLml0ZW1zLmxlbmd0aCAvIHRoaXMuYnVmZmVyU2l6ZSkgKyAxKTtcbiAgICAgICAgaWYgKHRoaXMudGV4dGJveCkge1xuICAgICAgICAgIHBhcmFtcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmFtcy5zZWFyY2hUZXh0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZldGNoKHBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRJdGVtcyh2OiBhbnlbXSwgaXNVc2VySW5wdXQ6IGJvb2xlYW4pIHtcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGlmIChpc1VzZXJJbnB1dCkge1xuICAgICAgY2hhbmdlZCA9IEpTT04uc3RyaW5naWZ5KHYpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB2O1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRJbmRleCgpO1xuICAgIGlmIChpc1VzZXJJbnB1dCAmJiBjaGFuZ2VkKSB7XG4gICAgICB0aGlzLmVtaXRTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaENoYW5nZU9ic2VydmVyOiBhbnk7XG5cbiAgZGVsYXk6IG51bWJlciA9IDUwMDtcblxuICB0ZXh0Q2hhbmdlZChlKSB7XG4gICAgaWYgKFxuICAgICAgKGUudmFsdWUgPT09IG51bGwgfHwgZS52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGUudmFsdWUgPT09ICcnKSAmJlxuICAgICAgKGUub2xkVmFsdWUgPT09IG51bGwgfHwgZS5vbGRWYWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGUub2xkVmFsdWUgPT09ICcnKVxuICAgICkge1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggPSAtMTtcbiAgICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSB0aGlzLnRleHQ7XG4gICAgICAgIC8vICB0aGlzLnNlYXJjaFRleHQgPSBlLnZhbHVlO1xuICAgICAgICAvLyB0aGlzLnRleHQgPSBlLnZhbHVlO1xuICAgICAgICAvLyB0aGlzLml0ZW1zID0gW107XG4gICAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgICAgbGV0IHQgPSB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHQ7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5pdGVtcy5wb3AoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0aGlzLml0ZW1zLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgLy8gICB0aGlzLml0ZW1zLnBvcCgpO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgY29uc3QgcGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XG4gICAgICAgIHBhcmFtcy5zZWFyY2hUZXh0ID0gdGhpcy50ZXh0O1xuICAgICAgICAvLyBwYXJhbXMuc2VhcmNoVGV4dCA9IGUudmFsdWU7XG4gICAgICAgIHBhcmFtcy5za2lwID0gMDtcbiAgICAgICAgcGFyYW1zLnRha2UgPSB0aGlzLmJ1ZmZlclNpemU7XG4gICAgICAgIHRoaXMuZmV0Y2gocGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc0l0ZW1EaXNhYmxlZChpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICBpZiAoaXRlbVt0aGlzLmRpc2FibGVkRmllbGRdID09IHRydWUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kaXNhYmxlZENhbGxiYWNrKSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZENhbGxiYWNrKHsgaXRlbSwgaW5kZXg6IC0xIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgb25CdXR0b25DbGljayhlKSB7fVxuXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRJbmRleChzaWduOiAtMSB8IDEgfCBudWxsID0gbnVsbCk6IHZvaWQge1xuICAgIGlmIChzaWduID09IG51bGwpIHtcbiAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gdGhpcy5pdGVtc1xuICAgICAgICAgIC5maWx0ZXIoKGMpID0+XG4gICAgICAgICAgICAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5pbmRleE9mKHRoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gdGhpcy5pdGVtcy5pbmRleE9mKFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1t0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoIC0gMV1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2lnbiA9PT0gLTEgPyB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXgtLSA6IHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCsrO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy5pdGVtcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy50ZXh0XG4gICAgICAgID8gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+XG4gICAgICAgICAgICAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgKVxuICAgICAgICA6IHRoaXMuaXRlbXM7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID1cbiAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCA8IDBcbiAgICAgICAgPyAwXG4gICAgICAgIDogdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID49IHRoaXMuaXRlbXNGaWx0ZXJlZC5sZW5ndGhcbiAgICAgICAgPyB0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoIC0gMVxuICAgICAgICA6IHRoaXMuY3VycmVudGZvY3VzZWRJbmRleDtcbiAgICAvL1xuICAgIC8vIHNldCBzY3JvbGxcbiAgICBpZiAodGhpcy5saXN0Q29udGFpbmVyKSB7XG4gICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtRGl2ID0gdGhpcy5saXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICBgLmxpc3QtaXRlbTpudGgtY2hpbGQoJHt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXh9KWBcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGl0ZW1EaXYpIHtcbiAgICAgICAgICBpdGVtRGl2LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KClcbiAgc2VsZWN0ZWRWYWx1ZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnlbXSB8IGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIGFueVtdIHwgYW55XG4gID4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkVmFsdWVzKCk6IGFueVtdIHwgYW55IHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKChjKSA9PiBjW3RoaXMudmFsdWVGaWVsZF0pWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtcy5tYXAoKGMpID0+IGNbdGhpcy52YWx1ZUZpZWxkXSkgfHwgW107XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldCBzZWxlY3RlZFZhbHVlcyh2OiBhbnlbXSB8IGFueSkge1xuICAgIGlmICh0aGlzLmNvbXBhcmVTZWxlY3RlZFZhbHVlcyh2KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodiA9PSBudWxsKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodiAhPSBbXSEgJiYgdiAhPSAnJyAmJiB2ICE9IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkVmFsdWUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53YWl0Rm9yRGF0YSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4gdiA9PSBjW3RoaXMudmFsdWVGaWVsZF0pKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjKSA9PiB2ID09IGNbdGhpcy52YWx1ZUZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gdi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKChjKSA9PlxuICAgICAgICAgICAgICAgICAgdi5pbmNsdWRlcyhjW3RoaXMudmFsdWVGaWVsZF0pXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZXQgYWRkSWQgPSBbXTtcbiAgICAgICAgICAgICAgICB2LmZvckVhY2goKHZJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgYWRkSWQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnZhbHVlRmllbGRdOiB2SWQsXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGxldCBuZXdJZCA9IGRpZmZlcmVuY2VCeShcbiAgICAgICAgICAgICAgICAgIGFkZElkLFxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZUZpZWxkXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBsZXQgdnYgPSBbXTtcbiAgICAgICAgICAgICAgICBuZXdJZC5mb3JFYWNoKChyYykgPT4ge1xuICAgICAgICAgICAgICAgICAgdnYucHVzaChyY1t0aGlzLnZhbHVlRmllbGRdKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChjKSA9PiB2di5pbmNsdWRlcyhjW3RoaXMudmFsdWVGaWVsZF0pKVxuICAgICAgICAgICAgICAgICAgLmZvckVhY2goKHJlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChyZXMpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PiB2di5pbmNsdWRlcyhjW3RoaXMudmFsdWVGaWVsZF0pKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zQ2hhbmdlKFxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLFxuICAgICAgICAgICAgICAgICAgdnYubGVuZ3RoID4gMCA/IFsxXSA6IHRoaXMuc2VsZWN0ZWRJdGVtc1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IHYuaW5jbHVkZXMoY1t0aGlzLnZhbHVlRmllbGRdKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHYpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGMpID0+IHYgPT09IGNbdGhpcy52YWx1ZUZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWVzKTtcbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZVNlbGVjdGVkVmFsdWVzKG5ld1ZhbHVlOiBhbnlbXSB8IGFueSkge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXM7XG4gICAgcmV0dXJuIChcbiAgICAgIChjdXJyZW50VmFsdWUgPT0gbnVsbCAmJiBuZXdWYWx1ZSA9PSBudWxsKSB8fFxuICAgICAgSlNPTi5zdHJpbmdpZnkoY3VycmVudFZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2VsZWN0ZWRWYWx1ZXModjogYW55W10gfCBhbnksIGlzVXNlcklucHV0OiBib29sZWFuKSB7XG4gICAgY29uc3QgY2hhbmdlZCA9IGlzVXNlcklucHV0ID8gIXRoaXMuY29tcGFyZVNlbGVjdGVkVmFsdWVzKHYpIDogZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZFZhbHVlcyA9IHY7XG4gICAgaWYgKGlzVXNlcklucHV0ICYmIGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlcyk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoXG4gICAgICBuZXcgQVhTZWxlY3RCb3hTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1xuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYnVmZmVyU2l6ZSA8IDEwKSB7XG4gICAgICB0aGlzLmJ1ZmZlclNpemUgPSAxMDtcbiAgICB9XG4gICAgaWYgKHRoaXMubW9kZSA9PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5zaG93Q2hlY2tCb3ggPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93Q2hlY2tCb3ggPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5yZW1vdGVPcGVyYXRpb24gfHxcbiAgICAgICh0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLmhhc1NlbGVjdGVkVmFsdWUpXG4gICAgKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gIH1cbiAgZHJvcGRvd25Ub2dnbGVTZWxlY0JveChlKSB7XG4gICAgdGhpcy50ZXh0ID0gJyc7XG4gICAgaWYgKHRoaXMuZHJvcGRvd24uaXNPcGVuKSB7XG4gICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZXJjaEJveCkge1xuICAgICAgICAgIHRoaXMuc2VyY2hCb3guZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSwgMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG4gICAgdGhpcy5kcm9wZG93blRvZ2dsZS5lbWl0KGUpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIC8vIGlmICghdGhpcy5hbGxvd1NlYXJjaCkge1xuICAgIC8vICAgICBpZiAodGhpcy5yZWFkb25seSA9PSBmYWxzZSkge1xuICAgIC8vICAgICAgICAgdGhpcy5pdGVtUmVtb3ZlID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgIHRoaXMucmVhZG9ubHkgPSB0cnVlO1xuICAgIC8vICAgICB9XG4gICAgLy8gfVxuICAgIHRoaXMuaW5pdFZhbGlkYXRpb24odGhpcy5yZWYsICdzZWxlY3RlZEl0ZW1zJywgdGhpcy52YWxpZGF0aW9uKTtcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XG4gICAgICAvLyBpZiAodGhpcy5hbGxvd1NlYXJjaCA9PSBmYWxzZSkge1xuICAgICAgLy8gICB0aGlzLmZldGNoKCk7XG4gICAgICAvLyB9XG4gICAgICB0aGlzLmRhdGFTb3VyY2Uub25EYXRhUmVjZWl2ZWQuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kYXRhUmVjZWl2ZWQoYy5kYXRhLnJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBkYXRhUmVjZWl2ZWQoZGF0YTogYW55KSB7XG4gICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuc2VhcmNoVGV4dCAmJlxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgIT0gbnVsbCAmJlxuICAgICAgICB0aGlzLnNlYXJjaFRleHQgIT09ICcnXG4gICAgICApIHtcbiAgICAgICAgaWYgKGRhdGEudG90YWxDb3VudCkge1xuICAgICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgICBpZiAodGhpcy5pdGVtcy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgLy90aGlzLml0ZW1zID0gZGF0YS5pdGVtcztcbiAgICAgICAgICAgIGRhdGEuaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YS5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlcikge1xuICAgICAgICAgICAgLy8gICB0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIubmV4dCh0aGlzLml0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS50b3RhbENvdW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF0YS5pdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gaWYgKHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlcikge1xuICAgICAgICAgICAgLy8gICB0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIubmV4dCh0aGlzLml0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICAvLyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudG90YWxDb3VudCA9IGRhdGEuaXRlbXMgPT0gdW5kZWZpbmVkID8gMCA6IGRhdGEuaXRlbXMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGRhdGEuaXRlbXMgJiYgZGF0YS5pdGVtcy5sZW5ndGggPT09IGRhdGEudG90YWxDb3VudCkge1xuICAgICAgICB0aGlzLml0ZW1zID0gZGF0YS5pdGVtcztcbiAgICAgICAgdGhpcy50b3RhbENvdW50ID0gZGF0YS5pdGVtcy5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEudG90YWxDb3VudCkge1xuICAgICAgICBkYXRhLml0ZW1zLmZvckVhY2goKGVsbSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChlbG0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gaWYgKHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlcikge1xuICAgICAgICAvLyAgIHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlci5uZXh0KHRoaXMuaXRlbXMubGVuZ3RoKTtcbiAgICAgICAgLy8gfVxuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBkYXRhLnRvdGFsQ291bnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRhLmZvckVhY2goKGVsbSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXMucHVzaChlbG0pO1xuICAgICAgICAgIC8vIGlmICh0aGlzLml0ZW1zU3RhdHVzT2JzZXJ2ZXIpIHtcbiAgICAgICAgICAvLyAgIHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlci5uZXh0KHRoaXMuaXRlbXMubGVuZ3RoKTtcbiAgICAgICAgICAvLyB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRvdGFsQ291bnQgPSBkYXRhLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pdGVtcyA9IGRhdGE7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgdGhpcy5kcm9wZG93bi51cGRhdGVQb3NpdGlvbigpO1xuICB9XG5cbiAgLy8gcHJpdmF0ZSBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcblxuICBmZXRjaChwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fSkge1xuICAgIC8vICB0aGlzLnBhcmFtcyA9IHBhcmFtcztcbiAgICBpZiAodGhpcy5kYXRhU291cmNlKSB7XG4gICAgICBpZiAodGhpcy5vbkRlbWFuZFRyYW5zbGF0ZSAmJiBwYXJhbXM/LnNlYXJjaFRleHQpIHtcbiAgICAgICAgcGFyYW1zLnNlYXJjaFRleHQgPSB0aGlzLnRyYW5zbGF0ZVNlYXJjaChwYXJhbXM/LnNlYXJjaFRleHQpO1xuICAgICAgfVxuICAgICAgdGhpcy5zaG93TG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZmV0Y2gocGFyYW1zKTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2xhdGVTZWFyY2goc2VhcmNoVGV4dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBsYXRpblBhdHRlcm4gPSAvW0EtWmEtejsnXFwvXFxcXFtcXF0sXS87XG4gICAgY29uc3QgYXNjaWlUb1BlcnNpYW5NYXAgPSB7XG4gICAgICAxMTM6ICfYticsXG4gICAgICAxMTk6ICfYtScsXG4gICAgICAxMDE6ICfYqycsXG4gICAgICAxMTQ6ICfZgicsXG4gICAgICAxMTY6ICfZgScsXG4gICAgICAxMjE6ICfYuicsXG4gICAgICAxMTc6ICfYuScsXG4gICAgICAxMDU6ICfZhycsXG4gICAgICAxMTE6ICfYricsXG4gICAgICAxMTI6ICfYrScsXG4gICAgICA5NzogJ9i0JyxcbiAgICAgIDExNTogJ9izJyxcbiAgICAgIDEwMDogJ9uMJyxcbiAgICAgIDEwMjogJ9ioJyxcbiAgICAgIDEwMzogJ9mEJyxcbiAgICAgIDEwNDogJ9inJyxcbiAgICAgIDEwNjogJ9iqJyxcbiAgICAgIDEwNzogJ9mGJyxcbiAgICAgIDEwODogJ9mFJyxcbiAgICAgIDU5OiAn2qknLFxuICAgICAgMTIyOiAn2LgnLFxuICAgICAgMTIwOiAn2LcnLFxuICAgICAgOTk6ICfYsicsXG4gICAgICAxMTg6ICfYsScsXG4gICAgICA5ODogJ9iwJyxcbiAgICAgIDExMDogJ9ivJyxcbiAgICAgIDQ0OiAn2YgnLFxuICAgICAgMzk6ICfarycsXG4gICAgICA2NzogJ9qYJyxcbiAgICAgIDkzOiAn2oYnLFxuICAgICAgOTE6ICfYrCcsXG4gICAgICA5MjogJ9m+JyxcbiAgICAgIDEwOTogJ9imJyxcbiAgICB9O1xuICAgIGlmIChsYXRpblBhdHRlcm4udGVzdChzZWFyY2hUZXh0KSkge1xuICAgICAgc2VhcmNoVGV4dCA9IHNlYXJjaFRleHRcbiAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAubWFwKChjaGFyKSA9PiB7XG4gICAgICAgICAgY29uc3QgYXNjaWlWYWx1ZSA9IGNoYXIuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICBpZiAoYXNjaWlUb1BlcnNpYW5NYXBbYXNjaWlWYWx1ZV0pIHtcbiAgICAgICAgICAgIHJldHVybiBhc2NpaVRvUGVyc2lhbk1hcFthc2NpaVZhbHVlXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGNoYXI7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuam9pbignJyk7XG4gICAgfVxuICAgIHJldHVybiBzZWFyY2hUZXh0O1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICBjb25zdCBwYXJhbXM6IEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMgPSB7fTtcbiAgICBpZiAodGhpcy5yZW1vdGVPcGVyYXRpb24pIHtcbiAgICAgIHBhcmFtcy5za2lwID0gMDtcbiAgICAgIHRoaXMuc2tpcCA9IDA7XG4gICAgICBwYXJhbXMudGFrZSA9IHRoaXMuYnVmZmVyU2l6ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YVNvdXJjZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgIC8vIHRoaXMuaXRlbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgLy8gICB0aGlzLml0ZW1zLnBvcCgpO1xuICAgICAgLy8gfSk7XG5cbiAgICAgIGlmICh0aGlzLml0ZW1zKSB7XG4gICAgICAgIGxldCB0ID0gdGhpcy5pdGVtcy5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdDsgaSsrKSB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmZldGNoKHBhcmFtcyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSXRlbVJlbW92ZUNsaWNrKGl0ZW0pIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgLy8gdGhpcy5zZWxlY3RlZEl0ZW1zID0gbnVsbDtcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZXMobnVsbCwgdHJ1ZSk7XG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIC8vIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoKGMpID0+IGMgIT09IGl0ZW0pO1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKFxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgICAgIChjKSA9PiBjW3RoaXMudmFsdWVGaWVsZF0gIT09IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXVxuICAgICAgICApLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgLy8gdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IHRoaXMuX3NlbGVjdGVkSXRlbXMuZmlsdGVyKGMgPT4gYyAhPT0gaXRlbSk7XG4gICAgICAvLyB0aGlzLnNlbGVjdGVkSXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIC8vIHRoaXMuY2xlYXJWYWxpZGF0aW9uU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICAgIC8vIHRoaXMudGV4dCA9ICcnO1xuICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uRm9jdXNUZXh0Qm94KGUpIHt9XG5cbiAgb25UZXh0Qm94Q2xpY2soZSkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkID09IGZhbHNlICYmIHRoaXMucmVhZG9ubHkgPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuZHJvcGRvd24ub3BlbigpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUl0ZW1DbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcbiAgICBpZiAodGhpcy5pc0l0ZW1EaXNhYmxlZChpdGVtKSA9PSBmYWxzZSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBpdGVtW3RoaXMudmFsdWVGaWVsZF07XG5cbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRWYWx1ZXMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlcyh2YWx1ZSwgdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzLnNsaWNlKDApO1xuICAgICAgICBpZiAoZXhpc3RzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuYWxsb3dOdWxsID09IHRydWUgfHxcbiAgICAgICAgICAgICh0aGlzLmFsbG93TnVsbCA9PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlSXRlbVJlbW92ZUNsaWNrKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleGlzdHMucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZFZhbHVlcyA9IGV4aXN0cztcbiAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWVzKGV4aXN0cywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubW9kZSA9PSAnc2luZ2xlJykge1xuICAgICAgICB0aGlzLnRleHQgPSAnJztcbiAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cbiAgICAgIC8vIGlmIChlLnN0b3BQcm9wYWdhdGlvbigpID09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAvLyB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcbiAgICAgICAgICB0aGlzLnNlcmNoQm94LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBoYW5kbGVLZXlFdmVudFNlYXJjaChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudGV4dEJveFNlbGVjdEJveC5mb2N1cygpO1xuICAgICAgfSwgMCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChlLmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMudGV4dCA9IG51bGw7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50ZXh0Qm94U2VsZWN0Qm94LmZvY3VzKCk7XG4gICAgICB9LCAwKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKGUua2V5ID09PSAnQXJyb3dEb3duJyB8fCBlLmtleSA9PT0gJ0Fycm93VXAnKSAmJlxuICAgICAgdGhpcy5nZXRJdGVtcygpLmxlbmd0aCA+IDAgJiZcbiAgICAgIGUudHlwZSA9PT0gJ2tleWRvd24nXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5tb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggPVxuICAgICAgICAgIHRoaXMuY3VycmVudGZvY3VzZWRJbmRleCArIChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUJ5SW5kZXgodGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duLmlzT3Blbikge1xuICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJbmRleChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZHJvcGRvd24ub3BlbigpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZXJjaEJveC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIGlmIChlLmtleSA9PSAnRW50ZXInICYmIHRoaXMuZHJvcGRvd24uaXNPcGVuICYmIHRoaXMubW9kZSA9PSAnc2luZ2xlJykge1xuICAgIC8vICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgLy8gICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgIC8vICAgICAgICAgdGhpcy5kcm9wZG93bi5mb2N1cygpO1xuICAgIC8vICAgICB9LCAwKTtcbiAgICAvLyB9XG4gICAgLy9lLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIC8vZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKGUudHlwZSA9PT0gJ2tleWRvd24nICYmIGUua2V5ID09ICdFbnRlcicgJiYgdGhpcy5kcm9wZG93bi5pc09wZW4pIHtcbiAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcbiAgICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+XG4gICAgICAgICAgKGNbdGhpcy50ZXh0RmllbGRdIGFzIHN0cmluZylcbiAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy5pdGVtcztcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgY1t0aGlzLnZhbHVlRmllbGRdID09PVxuICAgICAgICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1bdGhpcy52YWx1ZUZpZWxkXVxuICAgICAgICApLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGhpcy5tb2RlID09ICdtdWx0aXBsZSdcbiAgICAgICkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdGhpcy5hbGxvd051bGwgPT0gdHJ1ZSB8fFxuICAgICAgICAgICh0aGlzLmFsbG93TnVsbCA9PSBmYWxzZSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICAgKGMpID0+XG4gICAgICAgICAgICAgICAgYyAhPT1cbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT5cbiAgICAgICAgICAgICAgICAgIChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgIC5pbmNsdWRlcyh0aGlzLnRleHQudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgICAgICAgICApW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAgIGNbdGhpcy52YWx1ZUZpZWxkXSAhPT1cbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1bdGhpcy52YWx1ZUZpZWxkXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT0gJ211bHRpcGxlJykge1xuICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXNGaWx0ZXJlZC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zRmlsdGVyZWRbMF0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKFxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy5pdGVtc0ZpbHRlcmVkPy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtcyh0aGlzLml0ZW1zRmlsdGVyZWQsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy5tb2RlID09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy50ZXh0Qm94U2VsZWN0Qm94LmZvY3VzKCk7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGlzQ2hhcihzdHI6IHN0cmluZykge1xuICAgIGlmIChcbiAgICAgIHN0ci5pbmNsdWRlcygnU2hpZnQnKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdUYWInKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdDb250cm9sJykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnQWx0JykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnQ2Fwc0xvY2snKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdNZXRhJykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnQ29udGV4dE1lbnUnKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdFbnRlcicpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0JhY2tzcGFjZScpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ1ByaW50U2NyZWVuJykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnU2Nyb2xsTG9jaycpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ1BhdXNlJykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnSG9tZScpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0VuZCcpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0luc2VydCcpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ1BhZ2VVcCcpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0RlbGV0ZScpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ1BhZ2VEb3duJykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnTnVtTG9jaycpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0VzY2FwZScpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0Fycm93JykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygn2ZFGMScpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0YyJykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnRjMnKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdGNCcpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0Y1JykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnRjYnKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdGNycpIHx8XG4gICAgICBzdHIuaW5jbHVkZXMoJ0Y4JykgfHxcbiAgICAgIHN0ci5pbmNsdWRlcygnRjknKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdGMTAnKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdGMTEnKSB8fFxuICAgICAgc3RyLmluY2x1ZGVzKCdGMTInKVxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlFdmVudChlOiBhbnkpIHtcbiAgICAvLyBjb25zdCBOdW1iZXJNaW51c1BhdHRlcm4gPSAvW2EtekEtWjAtOVxcLV0vZztcbiAgICAvLyBjb25zdCBGYXJzaSA9IC9b2b7ahtis2K3YrtmH2LnYutmB2YLYq9i12LbYtNiz24zYqNmE2KfYqtmG2YXaqdqv2YjYptiv2LDYsdiy2LfYuNqY2KTYpdij2KHZi9mM2Y3ZjtmP2ZDZkVxcc10rJC87XG4gICAgLy8gIGNvbnN0IGlucHV0Q2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS5jaGFyQ29kZSk7XG4gICAgLy8gY29uc3QgcGF0dGVybkVuID0gL15bYS16QS1aMC05XSokLztcbiAgICAvLyBjb25zdCBwYXR0ZXJuID0gL15bXFx1MDYwMC1cXHUwNkZGXFxzXSskLztcbiAgICBjb25zdCBpbnB1dENoYXIgPSBlLmtleTtcbiAgICBpZiAoXG4gICAgICAoaW5wdXRDaGFyICE9ICdCYWNrc3BhY2UnICYmXG4gICAgICAgIGlucHV0Q2hhciAhPSAnQmFja3NwYWNlJyAmJlxuICAgICAgICBpbnB1dENoYXIgIT0gJ1RhYicgJiZcbiAgICAgICAgaW5wdXRDaGFyICE9ICdFbnRlcicgJiZcbiAgICAgICAgaW5wdXRDaGFyICE9ICdFc2NhcGUnICYmXG4gICAgICAgIGlucHV0Q2hhciAhPSAnQXJyb3dEb3duJyAmJlxuICAgICAgICBpbnB1dENoYXIgIT0gJ0Fycm93VXAnKSB8fFxuICAgICAgZS5jb2RlID09PSAnU3BhY2UnIHx8XG4gICAgICBlLmN0cmxLZXkgPT0gdHJ1ZVxuICAgICkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBlLmtleSA9PT0gJ0JhY2tzcGFjZScgJiZcbiAgICAgIGUudHlwZSA9PT0gJ2tleWRvd24nICYmXG4gICAgICAoKHRoaXMuYWxsb3dOdWxsID09PSB0cnVlICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB8fFxuICAgICAgICAodGhpcy5hbGxvd051bGwgPT09IGZhbHNlICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAxKSlcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wb3AoKTtcbiAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy50ZXh0Qm94U2VsZWN0Qm94LmZvY3VzKCk7XG4gICAgICB9LCAwKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgSU5QVVQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZSk7XG4gICAgaWYgKHRoaXMuaXNDaGFyKGUua2V5KSAmJiB0aGlzLmFsbG93U2VhcmNoICYmIGUuY3RybEtleSA9PSBmYWxzZSkge1xuICAgICAgdGhpcy5kcm9wZG93bi5vcGVuKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcbiAgICAgICAgICB0aGlzLnNlcmNoQm94LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0sIDApO1xuICAgICAgdGhpcy50ZXh0ID0gZS5rZXk7XG4gICAgfVxuXG4gICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy50ZXh0ID0gbnVsbDtcbiAgICAgIHRoaXMuZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRleHRCb3hTZWxlY3RCb3guZm9jdXMoKTtcbiAgICAgIH0sIDApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpICYmXG4gICAgICB0aGlzLmdldEl0ZW1zKCkubGVuZ3RoID4gMCAmJlxuICAgICAgZS50eXBlID09PSAna2V5ZG93bidcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQnlJbmRleChcbiAgICAgICAgICB0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggKyAoZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd24uaXNPcGVuKSB7XG4gICAgICAgICAgLy8gIHRoaXMuc2V0U2VsZWN0ZWRJbmRleCgoZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xKSk7XG4gICAgICAgICAgaWYgKHRoaXMuYWxsb3dTZWFyY2ggPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJbmRleChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcmNoQm94LmZvY3VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRyb3Bkb3duLm9wZW4oKTtcbiAgICAgICAgICBpZiAodGhpcy5hbGxvd1NlYXJjaCA9PSB0cnVlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyY2hCb3gpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlcmNoQm94LmZvY3VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmFsbG93U2VhcmNoID09PSBmYWxzZSkge1xuICAgICAgaWYgKGUudHlwZSA9PT0gJ2tleWRvd24nICYmIGUua2V5ID09ICdFbnRlcicgJiYgdGhpcy5kcm9wZG93bi5pc09wZW4pIHtcbiAgICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAoYykgPT5cbiAgICAgICAgICAgICAgY1t0aGlzLnZhbHVlRmllbGRdID09PVxuICAgICAgICAgICAgICB0aGlzLml0ZW1zRmlsdGVyZWRbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XVt0aGlzLnZhbHVlRmllbGRdXG4gICAgICAgICAgKS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgdGhpcy5tb2RlID09ICdtdWx0aXBsZSdcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5hbGxvd051bGwgPT0gdHJ1ZSB8fFxuICAgICAgICAgICAgKHRoaXMuYWxsb3dOdWxsID09IGZhbHNlICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAxKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAgICAgYyAhPT1cbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZmlsdGVyKChjKSA9PlxuICAgICAgICAgICAgICAgICAgICAoY1t0aGlzLnRleHRGaWVsZF0gYXMgc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKHRoaXMudGV4dC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICAgICAgKVt0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSB0aGlzLnNlbGVjdGVkSXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChjKSA9PlxuICAgICAgICAgICAgICAgICAgY1t0aGlzLnZhbHVlRmllbGRdICE9PVxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtc1t0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXhdW3RoaXMudmFsdWVGaWVsZF1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZWRFdmVudCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5tb2RlID09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRmb2N1c2VkSW5kZXggIT0gLTEpIHtcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zRmlsdGVyZWQubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaCh0aGlzLml0ZW1zRmlsdGVyZWRbMF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkW3RoaXMuY3VycmVudGZvY3VzZWRJbmRleF1cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHRoaXMuaXRlbXNbdGhpcy5jdXJyZW50Zm9jdXNlZEluZGV4XSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy5pdGVtc0ZpbHRlcmVkLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbXModGhpcy5pdGVtc0ZpbHRlcmVkLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGUgPT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRleHRCb3hTZWxlY3RCb3guZm9jdXMoKTtcbiAgICAgICAgICAgICAgfSwgMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBmb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnRleHRib3guZm9jdXMoKTtcbiAgfVxuXG4gIHNlbGVjdGVkSXRlbUJ5SW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIGxldCBpdGVtID0gW107XG4gICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLnRleHQgJiYgdGhpcy50ZXh0ICE9PSAnJykge1xuICAgICAgdGhpcy5pdGVtc0ZpbHRlcmVkID0gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+XG4gICAgICAgIChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpXG4gICAgICApO1xuXG4gICAgICBpdGVtID0gdGhpcy5pdGVtc0ZpbHRlcmVkW2luZGV4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSA9IHRoaXMuaXRlbXNbaW5kZXhdO1xuICAgIH1cbiAgICAvL1xuICAgIC8vICBjb25zdCBpdGVtID0gdGhpcy50ZXh0ID8gdGhpcy5pdGVtcy5maWx0ZXIoKGMpID0+IChjW3RoaXMudGV4dEZpZWxkXSBhcyBzdHJpbmcpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy50ZXh0LnRvTG93ZXJDYXNlKCkpKVtpbmRleF0gOiB0aGlzLml0ZW1zW2luZGV4XTtcbiAgICBpZiAoaXRlbSkge1xuICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zKFtpdGVtXSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTZWxlY3RlZEluZGV4KCk7XG4gIH1cblxuICBub0FjY2VudE9yaWdpbiA9IHtcbiAgICDZgzogJ9qpJyxcbiAgICDvu7c6ICfZhNinJyxcbiAgICDYpDogJ9mIJyxcbiAgICDZiTogJ9uMJyxcbiAgICDZijogJ9uMJyxcbiAgICDYpjogJ9uMJyxcbiAgICDYozogJ9inJyxcbiAgICDYpTogJ9inJyxcbiAgICDYojogJ9inJyxcbiAgICDZsTogJ9inJyxcbiAgICDZszogJ9inJyxcbiAgICDYqTogJ9mHJyxcbiAgICDYoTogJycsXG4gICAgJ9mQJzogJycsXG4gICAgJ9mSJzogJycsXG4gICAgJ9mPJzogJycsXG4gICAgJ9mOJzogJycsXG4gICAgJ9mRJzogJycsXG4gICAgJ9mNJzogJycsXG4gICAgJ9mLJzogJycsXG4gICAgJ9mMJzogJycsXG4gICAgJ9mTJzogJycsXG4gICAgJ9mwJzogJycsXG4gICAgJ9mUJzogJycsXG4gICAgJ++/vSc6ICcnLFxuICB9O1xuXG4gIGdldEl0ZW1zKCk6IGFueVtdIHtcbiAgICBpZiAodGhpcy5pdGVtcyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24gJiYgdGhpcy50ZXh0ICYmIHRoaXMudGV4dCAhPT0gJycpIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcigoYykgPT4ge1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRUZXh0RmllbGQgPSB0aGlzLmNvbnZlcnRBcmFiaWNUb1BlcnNpYW4oXG4gICAgICAgICAgY1t0aGlzLnRleHRGaWVsZF0sXG4gICAgICAgICAgdGhpcy5ub0FjY2VudE9yaWdpblxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjb252ZXJ0ZWRUZXh0ID0gdGhpcy5jb252ZXJ0QXJhYmljVG9QZXJzaWFuKFxuICAgICAgICAgIHRoaXMudGV4dCxcbiAgICAgICAgICB0aGlzLm5vQWNjZW50T3JpZ2luXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBjb252ZXJ0ZWRUZXh0RmllbGRcbiAgICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIC5pbmNsdWRlcyhjb252ZXJ0ZWRUZXh0LnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLml0ZW1zO1xuICAgIH1cbiAgfVxuXG4gIGNvbnZlcnRBcmFiaWNUb1BlcnNpYW4oaW5wdXRTdHJpbmcsIGNvbnZlcnNpb25NYXApIHtcbiAgICBsZXQgdGV4dENvbnZlcnQgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0U3RyaW5nLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hhciA9IGlucHV0U3RyaW5nW2ldO1xuICAgICAgaWYgKGNvbnZlcnNpb25NYXBbY3VycmVudENoYXJdKSB7XG4gICAgICAgIHRleHRDb252ZXJ0ICs9IGNvbnZlcnNpb25NYXBbY3VycmVudENoYXJdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGV4dENvbnZlcnQgKz0gY3VycmVudENoYXI7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZXh0Q29udmVydDtcbiAgfVxuXG4gIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgIChjKSA9PiBjW3RoaXMudmFsdWVGaWVsZF0gPT09IGl0ZW1bdGhpcy52YWx1ZUZpZWxkXVxuICAgICAgKS5sZW5ndGggPiAwXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXRlbXNTdGF0dXNPYnNlcnZlcjogYW55O1xuICBwcml2YXRlIHdhaXRGb3JEYXRhKGNhbGxiYWNrZm46ICgpID0+IHZvaWQpIHtcbiAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgY2FsbGJhY2tmbigpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlcikge1xuICAgICAgT2JzZXJ2YWJsZS5jcmVhdGUoKG9ic2VydmVyKSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXNTdGF0dXNPYnNlcnZlciA9IG9ic2VydmVyO1xuICAgICAgfSlcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgICBjYWxsYmFja2ZuKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPGF4LWRyb3AtZG93blxuICAjZFxuICBbc2l6ZV09XCJzaXplXCJcbiAgW2ZpdFBhcmVudF09XCJmaXRQYXJlbnRcIlxuICBbZHJvcGRvd25XaWR0aF09XCJkcm9wZG93bldpZHRoXCJcbiAgW3J0bF09XCJydGxcIlxuICBbc2hvd0Ryb3BEb3duQnV0dG9uXT1cInNob3dEcm9wRG93bkJ1dHRvblwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gIChkcm9wZG93blRvZ2dsZSk9XCJkcm9wZG93blRvZ2dsZVNlbGVjQm94KCRldmVudClcIlxuPlxuICA8bmctY29udGFpbmVyIHN0YXJ0PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGFydF1cIj4gPC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBoZWFkZXI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheCBjaGlwcy1jb250YWluZXJcIlxuICAgICAgW2NsYXNzLm11bHRpbGluZV09XCJtdWx0aUxpbmVcIlxuICAgICAgW3N0eWxlLnBhZGRpbmddPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggJiYgbXVsdGlMaW5lID8gJzAuMjVyZW0nIDogJydcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjaGlwc1wiXG4gICAgICAgIFtjbGFzcy5jaGlwcy1ibGFua109XCJtb2RlID09PSAnc2luZ2xlJ1wiXG4gICAgICAgIFt0aXRsZV09XCJpdGVtW3RleHRGaWVsZF1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImNoaXBzLXRleHRcIlxuICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgIHdpZHRoOlxuICAgICAgICAgICAgICBpdGVtW3RleHRGaWVsZF0ubGVuZ3RoID4gMTUgJiZcbiAgICAgICAgICAgICAgdGhpcy5tb2RlID09PSAnbXVsdGlwbGUnICYmXG4gICAgICAgICAgICAgICFtdWx0aUxpbmVcbiAgICAgICAgICAgICAgICA/ICcxMTBweCdcbiAgICAgICAgICAgICAgICA6ICdhdXRvJ1xuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgaXRlbVt0ZXh0RmllbGRdIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImNsb3NlLWljb25cIlxuICAgICAgICAgIChjbGljayk9XCJoYW5kbGVJdGVtUmVtb3ZlQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAocmVhZG9ubHkgIT0gdHJ1ZSB8fCBpdGVtUmVtb3ZlID09IHRydWUpICYmXG4gICAgICAgICAgICBkaXNhYmxlZCAhPSB0cnVlICYmXG4gICAgICAgICAgICAoYWxsb3dOdWxsID09IHRydWUgfHwgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAxKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS10aW1lcyBjbG9zZVwiPjwvaT5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIiAoY2xpY2spPVwib25UZXh0Qm94Q2xpY2soJGV2ZW50KVwiPlxuICAgICAgICA8YXgtdGV4dC1ib3hcbiAgICAgICAgICAjdGV4dEJveFNlbGVjdEJveFxuICAgICAgICAgIFt0ZXh0QWxpZ25dPVwidGV4dEFsaWduXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VsZWN0ZWRJdGVtcy5sZW5ndGggPT0gMCA/IHBsYWNlaG9sZGVyIDogJydcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJyZWFkb25seVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAob25rZXkpPVwiaGFuZGxlS2V5RXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgW3NpemVdPVwic2l6ZVwiXG4gICAgICAgICAgKG9uRm9jdXMpPVwib25Gb2N1c1RleHRCb3goJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9heC10ZXh0LWJveD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lciBlbmQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2VuZF1cIj4gPC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyIHBhbmVsPlxuICAgIDxkaXYgKm5nSWY9XCJhbGxvd1NlYXJjaFwiIGNsYXNzPVwic2VhcmNoLXdyYXBwZXJcIiBzdHlsZT1cInBhZGRpbmc6IDAuN2VtXCI+XG4gICAgICA8YXgtc2VhcmNoLWJveFxuICAgICAgICAjc2VyY2hCb3hcbiAgICAgICAgW29uRGVtYW5kVHJhbnNsYXRlXT1cIm9uRGVtYW5kVHJhbnNsYXRlXCJcbiAgICAgICAgWyh2YWx1ZSldPVwidGV4dFwiXG4gICAgICAgIChvbmtleSk9XCJoYW5kbGVLZXlFdmVudFNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKHRleHRDaGFuZ2VkKT1cInRleHRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAob25CdXR0b25DbGljayk9XCJ0ZXh0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvYXgtc2VhcmNoLWJveD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYXggbGlzdC1jb250YWluZXJcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI2xpc3RDb250YWluZXJcbiAgICAgICAgY2xhc3M9XCJsaXN0LWNvbnRhaW5lci1pdGVtc1wiXG4gICAgICAgIChzY3JvbGwpPVwic2Nyb2xsZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdJZj1cImdldEl0ZW1zKCkubGVuZ3RoID4gMDsgdGhlbiB0aGVuVGVtcGxhdGU7IGVsc2UgZWxzZVRlbXBsYXRlXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3RoZW5UZW1wbGF0ZT5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQoaXRlbSlcIlxuICAgICAgICAgICAgY2xhc3M9XCJsaXN0LWl0ZW1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICBbY2xhc3MuZm9jdXNlZF09XCJpID09IGN1cnJlbnRmb2N1c2VkSW5kZXhcIlxuICAgICAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVJdGVtQ2xpY2soJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXhcIj5cbiAgICAgICAgICAgICAgPGF4LWNoZWNrLWJveFxuICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0NoZWNrQm94XCJcbiAgICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAgICAgICAgICghYWxsb3dOdWxsICYmXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMubGVuZ3RoID09PSAxICYmXG4gICAgICAgICAgICAgICAgICAgIGlzSXRlbVNlbGVjdGVkKGl0ZW0pKSB8fFxuICAgICAgICAgICAgICAgICAgaXNJdGVtRGlzYWJsZWQoaXRlbSlcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZUl0ZW1DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2F4LWNoZWNrLWJveD5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInJvd1RlbXBsYXRlOyBlbHNlIGVsc2VUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RleHRGaWVsZF1cIlxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIHNob3dDaGVja0JveCA/IHsgJ3BhZGRpbmctaW5saW5lLXN0YXJ0JzogJzAuNXJlbScgfSA6ICcnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgICAgICByb3dUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSB9XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiXG4gICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW3RleHRGaWVsZF1cIlxuICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiXG4gICAgICAgICAgICAgICAgICAgIHNob3dDaGVja0JveCA/IHsgJ3BhZGRpbmctaW5saW5lLXN0YXJ0JzogJzAuNXJlbScgfSA6ICcnXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bdGV4dEZpZWxkXSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93TG9hZGluZ1wiIGNsYXNzPVwiYXgtcGFkLXNtXCIgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgY2xhc3M9XCJmYXIgZmEtc3Bpbm5lci10aGlyZCBmYS1wdWxzZSBmYS0yeFwiXG4gICAgICAgICAgICBzdHlsZT1cImNvbG9yOiB2YXIoLS1heC1wcmltYXJ5LWNvbG9yKVwiXG4gICAgICAgICAgPjwvaT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gPGF4LWxvYWRpbmctaW5kaWNhdG9yID48L2F4LWxvYWRpbmctaW5kaWNhdG9yPiAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlVGVtcGxhdGU+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgc2hvd0xvYWRpbmcgPT0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhlbiBzZWFyY2hUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgZWxzZSBub0RhdGFUZW1wbGF0ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzZWFyY2hUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAge3sgJ2NvbW1vbi5zZWFyY2gnIHwgdHJhbnMgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNub0RhdGFUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAge3sgJ2NvbW1vbi5ub0RhdGFGb3VuZCcgfCB0cmFucyB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYXgtZHJvcC1kb3duPlxuIl19
|