@acorex/components 6.5.91 → 6.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/esm2022/acorex-components.mjs +5 -0
- package/esm2022/index.mjs +158 -0
- package/esm2022/lib/accordion/accordion.component.mjs +45 -0
- package/esm2022/lib/accordion/accordion.module.mjs +20 -0
- package/esm2022/lib/base/base-page.class.mjs +97 -0
- package/esm2022/lib/base/components.class.mjs +17 -0
- package/esm2022/lib/base/element.class.mjs +301 -0
- package/esm2022/lib/base/events.class.mjs +17 -0
- package/esm2022/lib/button/button.component.mjs +74 -0
- package/esm2022/lib/button/button.module.mjs +21 -0
- package/esm2022/lib/calendar/calendar-box/calendar-box.component.mjs +426 -0
- package/esm2022/lib/calendar/calendar-box/calendar-box.module.mjs +22 -0
- package/esm2022/lib/calendar/scheduler/scheduler-views.property.mjs +59 -0
- package/esm2022/lib/calendar/scheduler/scheduler.class.mjs +16 -0
- package/esm2022/lib/calendar/scheduler/scheduler.component.mjs +226 -0
- package/esm2022/lib/calendar/scheduler/scheduler.module.mjs +68 -0
- package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +136 -0
- package/esm2022/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +37 -0
- package/esm2022/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +49 -0
- package/esm2022/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +102 -0
- package/esm2022/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +214 -0
- package/esm2022/lib/calendar/scheduler/views/scheduler-view.component.mjs +99 -0
- package/esm2022/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +85 -0
- package/esm2022/lib/checkbox/checkbox.component.mjs +102 -0
- package/esm2022/lib/checkbox/checkbox.module.mjs +20 -0
- package/esm2022/lib/color-picker/color-box/color-box.component.mjs +423 -0
- package/esm2022/lib/color-picker/color-picker.component.mjs +89 -0
- package/esm2022/lib/color-picker/color-picker.module.mjs +24 -0
- package/esm2022/lib/context-menu/context-menu.component.mjs +68 -0
- package/esm2022/lib/context-menu/context-menu.directive.mjs +146 -0
- package/esm2022/lib/context-menu/context-menu.module.mjs +20 -0
- package/esm2022/lib/data-filter/columns/filter-column-date.component.mjs +140 -0
- package/esm2022/lib/data-filter/columns/filter-column-number.component.mjs +119 -0
- package/esm2022/lib/data-filter/columns/filter-column-selection.component.mjs +75 -0
- package/esm2022/lib/data-filter/columns/filter-column-string.component.mjs +119 -0
- package/esm2022/lib/data-filter/filter-panel/filter-panel.component.mjs +267 -0
- package/esm2022/lib/data-filter/filter.class.mjs +46 -0
- package/esm2022/lib/data-filter/filter.module.mjs +88 -0
- package/esm2022/lib/data-filter/toolbar/filter-toolbar.component.mjs +168 -0
- package/esm2022/lib/data-list/core/data-list.component.mjs +37 -0
- package/esm2022/lib/data-list/list/list.component.mjs +134 -0
- package/esm2022/lib/data-list/list/list.module.mjs +22 -0
- package/esm2022/lib/data-list/list/toolbar-list-view.component.mjs +84 -0
- package/esm2022/lib/data-source/datasource.component.mjs +47 -0
- package/esm2022/lib/data-source/datasource.module.mjs +18 -0
- package/esm2022/lib/data-source/read-param.mjs +7 -0
- package/esm2022/lib/date-picker/date-picker.component.mjs +1093 -0
- package/esm2022/lib/date-picker/date-picker.module.mjs +49 -0
- package/esm2022/lib/dialog/dialog.component.mjs +26 -0
- package/esm2022/lib/dialog/dialog.module.mjs +21 -0
- package/esm2022/lib/dialog/dialog.service.mjs +160 -0
- package/esm2022/lib/drawer/content.component.mjs +18 -0
- package/esm2022/lib/drawer/drawer-container.component.mjs +38 -0
- package/esm2022/lib/drawer/drawer.component.mjs +146 -0
- package/esm2022/lib/drawer/drawer.module.mjs +23 -0
- package/esm2022/lib/dropdown/dropdown.component.mjs +186 -0
- package/esm2022/lib/dropdown/dropdown.module.mjs +26 -0
- package/esm2022/lib/fieldset/fieldset.component.mjs +57 -0
- package/esm2022/lib/fieldset/fieldset.module.mjs +19 -0
- package/esm2022/lib/form-group/form-group.component.mjs +37 -0
- package/esm2022/lib/form-group/form-group.module.mjs +21 -0
- package/esm2022/lib/label/label.component.mjs +19 -0
- package/esm2022/lib/label/label.module.mjs +21 -0
- package/esm2022/lib/loading/loading-indicator.component.mjs +18 -0
- package/esm2022/lib/loading/loading-panel.component.mjs +45 -0
- package/esm2022/lib/loading/loading.module.mjs +21 -0
- package/esm2022/lib/loading/loading.service.mjs +47 -0
- package/esm2022/lib/menu/menu-item.component.mjs +50 -0
- package/esm2022/lib/menu/menu.component.mjs +98 -0
- package/esm2022/lib/menu/menu.module.mjs +22 -0
- package/esm2022/lib/menu/menu2.component.mjs +100 -0
- package/esm2022/lib/number-box/number-box.component.mjs +628 -0
- package/esm2022/lib/number-box/number-box.module.mjs +21 -0
- package/esm2022/lib/page/content.component.mjs +27 -0
- package/esm2022/lib/page/footer.component.mjs +19 -0
- package/esm2022/lib/page/page.component.mjs +57 -0
- package/esm2022/lib/page/page.module.mjs +22 -0
- package/esm2022/lib/panel-box/panel-box.component.mjs +87 -0
- package/esm2022/lib/panel-box/panel-box.module.mjs +19 -0
- package/esm2022/lib/password-box/password-box.component.mjs +32 -0
- package/esm2022/lib/password-box/password-box.module.mjs +23 -0
- package/esm2022/lib/popover/custom-cdk-overlay.service.mjs +50 -0
- package/esm2022/lib/popover/overlay.service.mjs +94 -0
- package/esm2022/lib/popover/popover.component.mjs +145 -0
- package/esm2022/lib/popover/popover.module.mjs +19 -0
- package/esm2022/lib/popup/popup.component.mjs +160 -0
- package/esm2022/lib/popup/popup.module.mjs +25 -0
- package/esm2022/lib/popup/popup.service.mjs +94 -0
- package/esm2022/lib/progress-bar/progress-bar.component.mjs +16 -0
- package/esm2022/lib/progress-bar/progress-bar.module.mjs +19 -0
- package/esm2022/lib/property-editor/editors/check-editor/check-editor.mjs +65 -0
- package/esm2022/lib/property-editor/editors/check-editor/check.module.mjs +22 -0
- package/esm2022/lib/property-editor/editors/color-editor/color.editor.mjs +41 -0
- package/esm2022/lib/property-editor/editors/color-editor/color.module.mjs +24 -0
- package/esm2022/lib/property-editor/editors/column-editor/column.editor.mjs +118 -0
- package/esm2022/lib/property-editor/editors/column-editor/column.module.mjs +32 -0
- package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +216 -0
- package/esm2022/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +76 -0
- package/esm2022/lib/property-editor/editors/date-editor/date.editor.mjs +87 -0
- package/esm2022/lib/property-editor/editors/date-editor/date.module.mjs +24 -0
- package/esm2022/lib/property-editor/editors/number-editor/number.editor.mjs +69 -0
- package/esm2022/lib/property-editor/editors/number-editor/number.module.mjs +24 -0
- package/esm2022/lib/property-editor/editors/range-editor/range.editor.mjs +145 -0
- package/esm2022/lib/property-editor/editors/range-editor/range.module.mjs +59 -0
- package/esm2022/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +76 -0
- package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +75 -0
- package/esm2022/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +25 -0
- package/esm2022/lib/property-editor/editors/selection-editor/selection-editor.mjs +73 -0
- package/esm2022/lib/property-editor/editors/selection-editor/selection.module.mjs +22 -0
- package/esm2022/lib/property-editor/editors/switch-editor/number.editor.mjs +30 -0
- package/esm2022/lib/property-editor/editors/switch-editor/number.module.mjs +25 -0
- package/esm2022/lib/property-editor/editors/text-editor/text.editor.mjs +36 -0
- package/esm2022/lib/property-editor/editors/text-editor/text.module.mjs +24 -0
- package/esm2022/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +35 -0
- package/esm2022/lib/property-editor/editors/textarea-editor/textarea.module.mjs +24 -0
- package/esm2022/lib/property-editor/editors/time-editor/time.editor.mjs +47 -0
- package/esm2022/lib/property-editor/editors/time-editor/time.module.mjs +24 -0
- package/esm2022/lib/property-editor/property-editor-renderer.directive.mjs +167 -0
- package/esm2022/lib/property-editor/property-editor.class.mjs +108 -0
- package/esm2022/lib/property-editor/property-editor.module.mjs +194 -0
- package/esm2022/lib/query-builder/query-builder-group.component.mjs +129 -0
- package/esm2022/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +177 -0
- package/esm2022/lib/query-builder/query-builder-rule.component.mjs +428 -0
- package/esm2022/lib/query-builder/query-builder.class.mjs +42 -0
- package/esm2022/lib/query-builder/query-builder.component.mjs +92 -0
- package/esm2022/lib/query-builder/query-builder.module.mjs +62 -0
- package/esm2022/lib/query-builder/query-builder.service.mjs +199 -0
- package/esm2022/lib/search-bar/search-bar.component.mjs +293 -0
- package/esm2022/lib/search-bar/search-bar.module.mjs +61 -0
- package/esm2022/lib/searchbox/searchbox.component.mjs +106 -0
- package/esm2022/lib/searchbox/searchbox.module.mjs +24 -0
- package/esm2022/lib/selectbox/selectbox.component.mjs +1134 -0
- package/esm2022/lib/selectbox/selectbox.module.mjs +44 -0
- package/esm2022/lib/selectbox/selectbox2.component.mjs +617 -0
- package/esm2022/lib/selection-list/selection-list.component.mjs +113 -0
- package/esm2022/lib/selection-list/selection-list.module.mjs +21 -0
- package/esm2022/lib/switch/switch.component.mjs +55 -0
- package/esm2022/lib/switch/switch.module.mjs +20 -0
- package/esm2022/lib/tab-page/tab-page-Renderer.component.mjs +75 -0
- package/esm2022/lib/tab-page/tab-page-host.component.mjs +124 -0
- package/esm2022/lib/tab-page/tab-page.module.mjs +21 -0
- package/esm2022/lib/tab-page/tab-page.service.mjs +159 -0
- package/esm2022/lib/tab-strip/tab-strip.component.mjs +38 -0
- package/esm2022/lib/tab-strip/tab-strip.module.mjs +19 -0
- package/esm2022/lib/tab-view/dynamic-tabs.directive.mjs +25 -0
- package/esm2022/lib/tab-view/tab-view.component.mjs +110 -0
- package/esm2022/lib/tab-view/tab-view.module.mjs +21 -0
- package/esm2022/lib/tab-view/tab.component.mjs +33 -0
- package/esm2022/lib/textarea/textarea.component.mjs +27 -0
- package/esm2022/lib/textarea/textarea.module.mjs +21 -0
- package/esm2022/lib/textbox/textbox.component.mjs +42 -0
- package/esm2022/lib/textbox/textbox.module.mjs +36 -0
- package/esm2022/lib/time-picker/time-picker.component.mjs +1107 -0
- package/esm2022/lib/time-picker/time-picker.module.mjs +34 -0
- package/esm2022/lib/toast/toast-message/toast-message.component.mjs +76 -0
- package/esm2022/lib/toast/toast-wrapper/toast-wrapper.component.mjs +13 -0
- package/esm2022/lib/toast/toast.module.mjs +21 -0
- package/esm2022/lib/toast/toast.service.mjs +45 -0
- package/esm2022/lib/toolbar/group-button/toolbar-group-button.component.mjs +77 -0
- package/esm2022/lib/toolbar/menu/toolbar-menu.component.mjs +62 -0
- package/esm2022/lib/toolbar/search/toolbar-search.component.mjs +56 -0
- package/esm2022/lib/toolbar/title/toolbar-title.component.mjs +37 -0
- package/esm2022/lib/toolbar/toolbar-item.mjs +4 -0
- package/esm2022/lib/toolbar/toolbar.component.mjs +13 -0
- package/esm2022/lib/toolbar/toolbar.module.mjs +40 -0
- package/esm2022/lib/tooltip/tooltip.directive.mjs +104 -0
- package/esm2022/lib/tooltip/tooltip.module.mjs +19 -0
- package/esm2022/lib/tree-side-menu/tree-side-menu.component.mjs +697 -0
- package/esm2022/lib/tree-side-menu/tree-side-menu.module.mjs +33 -0
- package/esm2022/lib/tree-view/tree-view.component.mjs +854 -0
- package/esm2022/lib/tree-view/tree-view.module.mjs +22 -0
- package/esm2022/lib/upload-file/upload-file.component.mjs +226 -0
- package/esm2022/lib/upload-file/upload-file.events.mjs +2 -0
- package/esm2022/lib/upload-file/upload-file.module.mjs +24 -0
- package/esm2022/lib/validation/validation-form.component.mjs +68 -0
- package/esm2022/lib/validation/validation-rule.widget.mjs +114 -0
- package/esm2022/lib/validation/validation.class.mjs +2 -0
- package/esm2022/lib/validation/validation.component.mjs +89 -0
- package/esm2022/lib/validation/validation.module.mjs +34 -0
- package/{fesm2020 → fesm2022}/acorex-components.mjs +17004 -15581
- package/fesm2022/acorex-components.mjs.map +1 -0
- package/{public-api.d.ts → index.d.ts} +155 -155
- package/lib/accordion/accordion.component.d.ts +13 -13
- package/lib/accordion/accordion.module.d.ts +9 -9
- package/lib/base/base-page.class.d.ts +46 -46
- package/lib/base/components.class.d.ts +10 -10
- package/lib/base/element.class.d.ts +106 -106
- package/lib/base/events.class.d.ts +18 -18
- package/lib/button/button.component.d.ts +21 -21
- package/lib/button/button.module.d.ts +8 -8
- package/lib/calendar/calendar-box/calendar-box.component.d.ts +81 -81
- package/lib/calendar/calendar-box/calendar-box.module.d.ts +11 -11
- package/lib/calendar/scheduler/scheduler-views.property.d.ts +19 -19
- package/lib/calendar/scheduler/scheduler.class.d.ts +36 -36
- package/lib/calendar/scheduler/scheduler.component.d.ts +39 -39
- package/lib/calendar/scheduler/scheduler.module.d.ts +21 -21
- package/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.d.ts +25 -25
- package/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.d.ts +14 -14
- package/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.d.ts +16 -16
- package/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.d.ts +26 -26
- package/lib/calendar/scheduler/views/month/scheduler-month-view.component.d.ts +37 -37
- package/lib/calendar/scheduler/views/scheduler-view.component.d.ts +28 -28
- package/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.d.ts +24 -24
- package/lib/checkbox/checkbox.component.d.ts +30 -30
- package/lib/checkbox/checkbox.module.d.ts +9 -9
- package/lib/color-picker/color-box/color-box.component.d.ts +25 -25
- package/lib/color-picker/color-picker.component.d.ts +30 -30
- package/lib/color-picker/color-picker.module.d.ts +13 -13
- package/lib/context-menu/context-menu.component.d.ts +22 -22
- package/lib/context-menu/context-menu.directive.d.ts +38 -38
- package/lib/context-menu/context-menu.module.d.ts +9 -9
- package/lib/data-filter/columns/filter-column-date.component.d.ts +22 -22
- package/lib/data-filter/columns/filter-column-number.component.d.ts +15 -15
- package/lib/data-filter/columns/filter-column-selection.component.d.ts +18 -18
- package/lib/data-filter/columns/filter-column-string.component.d.ts +15 -15
- package/lib/data-filter/filter-panel/filter-panel.component.d.ts +45 -45
- package/lib/data-filter/filter.class.d.ts +40 -40
- package/lib/data-filter/filter.module.d.ts +24 -24
- package/lib/data-filter/toolbar/filter-toolbar.component.d.ts +25 -25
- package/lib/data-list/core/data-list.component.d.ts +15 -15
- package/lib/data-list/list/list.component.d.ts +40 -40
- package/lib/data-list/list/list.module.d.ts +11 -11
- package/lib/data-list/list/toolbar-list-view.component.d.ts +17 -17
- package/lib/data-source/datasource.component.d.ts +16 -16
- package/lib/data-source/datasource.module.d.ts +7 -7
- package/lib/data-source/read-param.d.ts +40 -40
- package/lib/date-picker/date-picker.component.d.ts +81 -81
- package/lib/date-picker/date-picker.module.d.ts +14 -14
- package/lib/dialog/dialog.component.d.ts +14 -14
- package/lib/dialog/dialog.module.d.ts +10 -10
- package/lib/dialog/dialog.service.d.ts +36 -36
- package/lib/drawer/content.component.d.ts +7 -7
- package/lib/drawer/drawer-container.component.d.ts +10 -10
- package/lib/drawer/drawer.component.d.ts +34 -34
- package/lib/drawer/drawer.module.d.ts +10 -10
- package/lib/dropdown/dropdown.component.d.ts +38 -38
- package/lib/dropdown/dropdown.module.d.ts +13 -13
- package/lib/fieldset/fieldset.component.d.ts +11 -11
- package/lib/fieldset/fieldset.module.d.ts +8 -8
- package/lib/form-group/form-group.component.d.ts +14 -14
- package/lib/form-group/form-group.module.d.ts +8 -8
- package/lib/label/label.component.d.ts +9 -9
- package/lib/label/label.module.d.ts +8 -8
- package/lib/loading/loading-indicator.component.d.ts +9 -9
- package/lib/loading/loading-panel.component.d.ts +13 -13
- package/lib/loading/loading.module.d.ts +10 -10
- package/lib/loading/loading.service.d.ts +13 -13
- package/lib/menu/menu-item.component.d.ts +18 -18
- package/lib/menu/menu.component.d.ts +35 -35
- package/lib/menu/menu.module.d.ts +11 -11
- package/lib/menu/menu2.component.d.ts +21 -21
- package/lib/number-box/number-box.component.d.ts +52 -52
- package/lib/number-box/number-box.module.d.ts +10 -10
- package/lib/page/content.component.d.ts +8 -8
- package/lib/page/footer.component.d.ts +5 -5
- package/lib/page/page.component.d.ts +16 -16
- package/lib/page/page.module.d.ts +11 -11
- package/lib/panel-box/panel-box.component.d.ts +19 -19
- package/lib/panel-box/panel-box.module.d.ts +8 -8
- package/lib/password-box/password-box.component.d.ts +12 -12
- package/lib/password-box/password-box.module.d.ts +10 -10
- package/lib/popover/custom-cdk-overlay.service.d.ts +19 -19
- package/lib/popover/overlay.service.d.ts +32 -32
- package/lib/popover/popover.component.d.ts +35 -35
- package/lib/popover/popover.module.d.ts +8 -8
- package/lib/popup/popup.component.d.ts +40 -40
- package/lib/popup/popup.module.d.ts +13 -13
- package/lib/popup/popup.service.d.ts +22 -22
- package/lib/progress-bar/progress-bar.component.d.ts +7 -7
- package/lib/progress-bar/progress-bar.module.d.ts +8 -8
- package/lib/property-editor/editors/check-editor/check-editor.d.ts +19 -19
- package/lib/property-editor/editors/check-editor/check.module.d.ts +11 -11
- package/lib/property-editor/editors/color-editor/color.editor.d.ts +13 -13
- package/lib/property-editor/editors/color-editor/color.module.d.ts +12 -12
- package/lib/property-editor/editors/column-editor/column.editor.d.ts +34 -34
- package/lib/property-editor/editors/column-editor/column.module.d.ts +20 -20
- package/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.d.ts +44 -44
- package/lib/property-editor/editors/conditional-color-editor/conditional-color.module.d.ts +19 -19
- package/lib/property-editor/editors/date-editor/date.editor.d.ts +28 -28
- package/lib/property-editor/editors/date-editor/date.module.d.ts +12 -12
- package/lib/property-editor/editors/number-editor/number.editor.d.ts +21 -20
- package/lib/property-editor/editors/number-editor/number.module.d.ts +12 -12
- package/lib/property-editor/editors/range-editor/range.editor.d.ts +29 -29
- package/lib/property-editor/editors/range-editor/range.module.d.ts +18 -18
- package/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.d.ts +29 -29
- package/lib/property-editor/editors/selectbox-editor/selectbox.editor.d.ts +28 -28
- package/lib/property-editor/editors/selectbox-editor/selectbox.module.d.ts +14 -14
- package/lib/property-editor/editors/selection-editor/selection-editor.d.ts +25 -25
- package/lib/property-editor/editors/selection-editor/selection.module.d.ts +11 -11
- package/lib/property-editor/editors/switch-editor/number.editor.d.ts +11 -11
- package/lib/property-editor/editors/switch-editor/number.module.d.ts +13 -13
- package/lib/property-editor/editors/text-editor/text.editor.d.ts +18 -18
- package/lib/property-editor/editors/text-editor/text.module.d.ts +12 -12
- package/lib/property-editor/editors/textarea-editor/textarea.editor.d.ts +17 -17
- package/lib/property-editor/editors/textarea-editor/textarea.module.d.ts +12 -12
- package/lib/property-editor/editors/time-editor/time.editor.d.ts +17 -17
- package/lib/property-editor/editors/time-editor/time.module.d.ts +12 -12
- package/lib/property-editor/property-editor-renderer.directive.d.ts +31 -31
- package/lib/property-editor/property-editor.class.d.ts +93 -93
- package/lib/property-editor/property-editor.module.d.ts +21 -21
- package/lib/query-builder/query-builder-group.component.d.ts +33 -33
- package/lib/query-builder/query-builder-popup/query-builder-popup.component.d.ts +35 -35
- package/lib/query-builder/query-builder-rule.component.d.ts +45 -45
- package/lib/query-builder/query-builder.class.d.ts +45 -45
- package/lib/query-builder/query-builder.component.d.ts +29 -29
- package/lib/query-builder/query-builder.module.d.ts +23 -23
- package/lib/query-builder/query-builder.service.d.ts +18 -18
- package/lib/search-bar/search-bar.component.d.ts +62 -62
- package/lib/search-bar/search-bar.module.d.ts +18 -18
- package/lib/searchbox/searchbox.component.d.ts +23 -22
- package/lib/searchbox/searchbox.module.d.ts +13 -13
- package/lib/selectbox/selectbox.component.d.ts +149 -118
- package/lib/selectbox/selectbox.module.d.ts +15 -15
- package/lib/selectbox/selectbox2.component.d.ts +103 -103
- package/lib/selection-list/selection-list.component.d.ts +32 -32
- package/lib/selection-list/selection-list.module.d.ts +10 -10
- package/lib/switch/switch.component.d.ts +20 -20
- package/lib/switch/switch.module.d.ts +9 -9
- package/lib/tab-page/tab-page-Renderer.component.d.ts +16 -16
- package/lib/tab-page/tab-page-host.component.d.ts +24 -24
- package/lib/tab-page/tab-page.module.d.ts +10 -10
- package/lib/tab-page/tab-page.service.d.ts +30 -30
- package/lib/tab-strip/tab-strip.component.d.ts +28 -28
- package/lib/tab-strip/tab-strip.module.d.ts +8 -8
- package/lib/tab-view/dynamic-tabs.directive.d.ts +16 -16
- package/lib/tab-view/tab-view.component.d.ts +26 -26
- package/lib/tab-view/tab-view.module.d.ts +10 -10
- package/lib/tab-view/tab.component.d.ts +12 -12
- package/lib/textarea/textarea.component.d.ts +12 -12
- package/lib/textarea/textarea.module.d.ts +8 -8
- package/lib/textbox/textbox.component.d.ts +16 -16
- package/lib/textbox/textbox.module.d.ts +11 -11
- package/lib/time-picker/time-picker.component.d.ts +53 -52
- package/lib/time-picker/time-picker.module.d.ts +11 -11
- package/lib/toast/toast-message/toast-message.component.d.ts +18 -18
- package/lib/toast/toast-wrapper/toast-wrapper.component.d.ts +8 -8
- package/lib/toast/toast.module.d.ts +9 -9
- package/lib/toast/toast.service.d.ts +18 -18
- package/lib/toolbar/group-button/toolbar-group-button.component.d.ts +12 -12
- package/lib/toolbar/menu/toolbar-menu.component.d.ts +24 -24
- package/lib/toolbar/search/toolbar-search.component.d.ts +16 -16
- package/lib/toolbar/title/toolbar-title.component.d.ts +9 -9
- package/lib/toolbar/toolbar-item.d.ts +3 -3
- package/lib/toolbar/toolbar.component.d.ts +8 -8
- package/lib/toolbar/toolbar.module.d.ts +14 -14
- package/lib/tooltip/tooltip.directive.d.ts +21 -21
- package/lib/tooltip/tooltip.module.d.ts +8 -8
- package/lib/tree-side-menu/tree-side-menu.component.d.ts +111 -111
- package/lib/tree-side-menu/tree-side-menu.module.d.ts +11 -11
- package/lib/tree-view/tree-view.component.d.ts +121 -121
- package/lib/tree-view/tree-view.module.d.ts +11 -11
- package/lib/upload-file/upload-file.component.d.ts +42 -42
- package/lib/upload-file/upload-file.events.d.ts +10 -10
- package/lib/upload-file/upload-file.module.d.ts +13 -13
- package/lib/validation/validation-form.component.d.ts +19 -19
- package/lib/validation/validation-rule.widget.d.ts +23 -23
- package/lib/validation/validation.class.d.ts +16 -16
- package/lib/validation/validation.component.d.ts +25 -25
- package/lib/validation/validation.module.d.ts +11 -11
- package/package.json +15 -20
- package/acorex-components.d.ts +0 -5
- package/esm2020/acorex-components.mjs +0 -5
- package/esm2020/lib/accordion/accordion.component.mjs +0 -44
- package/esm2020/lib/accordion/accordion.module.mjs +0 -20
- package/esm2020/lib/base/base-page.class.mjs +0 -94
- package/esm2020/lib/base/components.class.mjs +0 -17
- package/esm2020/lib/base/element.class.mjs +0 -294
- package/esm2020/lib/base/events.class.mjs +0 -11
- package/esm2020/lib/button/button.component.mjs +0 -71
- package/esm2020/lib/button/button.module.mjs +0 -21
- package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +0 -413
- package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +0 -22
- package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +0 -54
- package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +0 -18
- package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +0 -213
- package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +0 -68
- package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +0 -132
- package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +0 -37
- package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +0 -47
- package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +0 -95
- package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +0 -204
- package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +0 -99
- package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +0 -77
- package/esm2020/lib/checkbox/checkbox.component.mjs +0 -98
- package/esm2020/lib/checkbox/checkbox.module.mjs +0 -20
- package/esm2020/lib/color-picker/color-box/color-box.component.mjs +0 -422
- package/esm2020/lib/color-picker/color-picker.component.mjs +0 -82
- package/esm2020/lib/color-picker/color-picker.module.mjs +0 -24
- package/esm2020/lib/context-menu/context-menu.component.mjs +0 -65
- package/esm2020/lib/context-menu/context-menu.directive.mjs +0 -135
- package/esm2020/lib/context-menu/context-menu.module.mjs +0 -20
- package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +0 -138
- package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +0 -117
- package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +0 -74
- package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +0 -117
- package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +0 -258
- package/esm2020/lib/data-filter/filter.class.mjs +0 -44
- package/esm2020/lib/data-filter/filter.module.mjs +0 -90
- package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +0 -166
- package/esm2020/lib/data-list/core/data-list.component.mjs +0 -40
- package/esm2020/lib/data-list/list/list.component.mjs +0 -124
- package/esm2020/lib/data-list/list/list.module.mjs +0 -22
- package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +0 -85
- package/esm2020/lib/data-source/datasource.component.mjs +0 -47
- package/esm2020/lib/data-source/datasource.module.mjs +0 -18
- package/esm2020/lib/data-source/read-param.mjs +0 -5
- package/esm2020/lib/date-picker/date-picker.component.mjs +0 -702
- package/esm2020/lib/date-picker/date-picker.module.mjs +0 -25
- package/esm2020/lib/dialog/dialog.component.mjs +0 -24
- package/esm2020/lib/dialog/dialog.module.mjs +0 -21
- package/esm2020/lib/dialog/dialog.service.mjs +0 -150
- package/esm2020/lib/drawer/content.component.mjs +0 -18
- package/esm2020/lib/drawer/drawer-container.component.mjs +0 -36
- package/esm2020/lib/drawer/drawer.component.mjs +0 -142
- package/esm2020/lib/drawer/drawer.module.mjs +0 -23
- package/esm2020/lib/dropdown/dropdown.component.mjs +0 -176
- package/esm2020/lib/dropdown/dropdown.module.mjs +0 -26
- package/esm2020/lib/fieldset/fieldset.component.mjs +0 -59
- package/esm2020/lib/fieldset/fieldset.module.mjs +0 -19
- package/esm2020/lib/form-group/form-group.component.mjs +0 -34
- package/esm2020/lib/form-group/form-group.module.mjs +0 -21
- package/esm2020/lib/label/label.component.mjs +0 -19
- package/esm2020/lib/label/label.module.mjs +0 -21
- package/esm2020/lib/loading/loading-indicator.component.mjs +0 -17
- package/esm2020/lib/loading/loading-panel.component.mjs +0 -44
- package/esm2020/lib/loading/loading.module.mjs +0 -21
- package/esm2020/lib/loading/loading.service.mjs +0 -45
- package/esm2020/lib/menu/menu-item.component.mjs +0 -47
- package/esm2020/lib/menu/menu.component.mjs +0 -86
- package/esm2020/lib/menu/menu.module.mjs +0 -22
- package/esm2020/lib/menu/menu2.component.mjs +0 -96
- package/esm2020/lib/number-box/number-box.component.mjs +0 -622
- package/esm2020/lib/number-box/number-box.module.mjs +0 -21
- package/esm2020/lib/page/content.component.mjs +0 -32
- package/esm2020/lib/page/footer.component.mjs +0 -19
- package/esm2020/lib/page/page.component.mjs +0 -53
- package/esm2020/lib/page/page.module.mjs +0 -22
- package/esm2020/lib/panel-box/panel-box.component.mjs +0 -88
- package/esm2020/lib/panel-box/panel-box.module.mjs +0 -19
- package/esm2020/lib/password-box/password-box.component.mjs +0 -31
- package/esm2020/lib/password-box/password-box.module.mjs +0 -23
- package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +0 -48
- package/esm2020/lib/popover/overlay.service.mjs +0 -91
- package/esm2020/lib/popover/popover.component.mjs +0 -133
- package/esm2020/lib/popover/popover.module.mjs +0 -19
- package/esm2020/lib/popup/popup.component.mjs +0 -147
- package/esm2020/lib/popup/popup.module.mjs +0 -25
- package/esm2020/lib/popup/popup.service.mjs +0 -93
- package/esm2020/lib/progress-bar/progress-bar.component.mjs +0 -19
- package/esm2020/lib/progress-bar/progress-bar.module.mjs +0 -19
- package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +0 -61
- package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +0 -22
- package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +0 -38
- package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +0 -24
- package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +0 -115
- package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +0 -32
- package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +0 -211
- package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +0 -78
- package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +0 -51
- package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +0 -24
- package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +0 -63
- package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +0 -24
- package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +0 -140
- package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +0 -61
- package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +0 -72
- package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +0 -71
- package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +0 -25
- package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +0 -69
- package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +0 -22
- package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +0 -29
- package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +0 -25
- package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +0 -32
- package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +0 -24
- package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +0 -32
- package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +0 -24
- package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +0 -43
- package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +0 -24
- package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +0 -157
- package/esm2020/lib/property-editor/property-editor.class.mjs +0 -102
- package/esm2020/lib/property-editor/property-editor.module.mjs +0 -196
- package/esm2020/lib/query-builder/query-builder-group.component.mjs +0 -124
- package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +0 -172
- package/esm2020/lib/query-builder/query-builder-rule.component.mjs +0 -399
- package/esm2020/lib/query-builder/query-builder.class.mjs +0 -20
- package/esm2020/lib/query-builder/query-builder.component.mjs +0 -87
- package/esm2020/lib/query-builder/query-builder.module.mjs +0 -62
- package/esm2020/lib/query-builder/query-builder.service.mjs +0 -197
- package/esm2020/lib/search-bar/search-bar.component.mjs +0 -286
- package/esm2020/lib/search-bar/search-bar.module.mjs +0 -63
- package/esm2020/lib/searchbox/searchbox.component.mjs +0 -81
- package/esm2020/lib/searchbox/searchbox.module.mjs +0 -24
- package/esm2020/lib/selectbox/selectbox.component.mjs +0 -961
- package/esm2020/lib/selectbox/selectbox.module.mjs +0 -44
- package/esm2020/lib/selectbox/selectbox2.component.mjs +0 -574
- package/esm2020/lib/selection-list/selection-list.component.mjs +0 -108
- package/esm2020/lib/selection-list/selection-list.module.mjs +0 -21
- package/esm2020/lib/switch/switch.component.mjs +0 -51
- package/esm2020/lib/switch/switch.module.mjs +0 -20
- package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +0 -71
- package/esm2020/lib/tab-page/tab-page-host.component.mjs +0 -114
- package/esm2020/lib/tab-page/tab-page.module.mjs +0 -21
- package/esm2020/lib/tab-page/tab-page.service.mjs +0 -160
- package/esm2020/lib/tab-strip/tab-strip.component.mjs +0 -36
- package/esm2020/lib/tab-strip/tab-strip.module.mjs +0 -19
- package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +0 -24
- package/esm2020/lib/tab-view/tab-view.component.mjs +0 -105
- package/esm2020/lib/tab-view/tab-view.module.mjs +0 -21
- package/esm2020/lib/tab-view/tab.component.mjs +0 -30
- package/esm2020/lib/textarea/textarea.component.mjs +0 -26
- package/esm2020/lib/textarea/textarea.module.mjs +0 -21
- package/esm2020/lib/textbox/textbox.component.mjs +0 -39
- package/esm2020/lib/textbox/textbox.module.mjs +0 -24
- package/esm2020/lib/time-picker/time-picker.component.mjs +0 -943
- package/esm2020/lib/time-picker/time-picker.module.mjs +0 -22
- package/esm2020/lib/toast/toast-message/toast-message.component.mjs +0 -74
- package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +0 -13
- package/esm2020/lib/toast/toast.module.mjs +0 -21
- package/esm2020/lib/toast/toast.service.mjs +0 -44
- package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +0 -78
- package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +0 -57
- package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +0 -54
- package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +0 -47
- package/esm2020/lib/toolbar/toolbar-item.mjs +0 -6
- package/esm2020/lib/toolbar/toolbar.component.mjs +0 -13
- package/esm2020/lib/toolbar/toolbar.module.mjs +0 -40
- package/esm2020/lib/tooltip/tooltip.directive.mjs +0 -100
- package/esm2020/lib/tooltip/tooltip.module.mjs +0 -19
- package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +0 -646
- package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +0 -35
- package/esm2020/lib/tree-view/tree-view.component.mjs +0 -775
- package/esm2020/lib/tree-view/tree-view.module.mjs +0 -22
- package/esm2020/lib/upload-file/upload-file.component.mjs +0 -208
- package/esm2020/lib/upload-file/upload-file.events.mjs +0 -2
- package/esm2020/lib/upload-file/upload-file.module.mjs +0 -24
- package/esm2020/lib/validation/validation-form.component.mjs +0 -65
- package/esm2020/lib/validation/validation-rule.widget.mjs +0 -111
- package/esm2020/lib/validation/validation.class.mjs +0 -2
- package/esm2020/lib/validation/validation.component.mjs +0 -89
- package/esm2020/lib/validation/validation.module.mjs +0 -34
- package/esm2020/public-api.mjs +0 -158
- package/fesm2015/acorex-components.mjs +0 -16013
- package/fesm2015/acorex-components.mjs.map +0 -1
- package/fesm2020/acorex-components.mjs.map +0 -1
@@ -0,0 +1,697 @@
|
|
1
|
+
import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ElementRef, TemplateRef, } from '@angular/core';
|
2
|
+
import { AXDataSourceComponent } from '../data-source/datasource.component';
|
3
|
+
import { AXHtmlEvent, AXValueEvent } from '../base/events.class';
|
4
|
+
import { AXBaseComponent } from '../base/element.class';
|
5
|
+
import * as i0 from "@angular/core";
|
6
|
+
import * as i1 from "@angular/common";
|
7
|
+
export class AXTreeSideMenuNode {
|
8
|
+
children;
|
9
|
+
itemData = new AXTreeSideMenuItemData();
|
10
|
+
parent;
|
11
|
+
}
|
12
|
+
export class AXTreeSideMenuItemData {
|
13
|
+
selected;
|
14
|
+
key;
|
15
|
+
disabled;
|
16
|
+
open;
|
17
|
+
hasChild;
|
18
|
+
item;
|
19
|
+
}
|
20
|
+
export class AXTreeSideMenuItemMovedEvent {
|
21
|
+
source;
|
22
|
+
target;
|
23
|
+
resolve;
|
24
|
+
}
|
25
|
+
export class AXTreeSideMenuSelectionChangedEvent extends AXValueEvent {
|
26
|
+
}
|
27
|
+
export class AXTreeSideMenuItemClick extends AXHtmlEvent {
|
28
|
+
}
|
29
|
+
export class AXTreeSideMenuComponent extends AXBaseComponent {
|
30
|
+
ref;
|
31
|
+
nodeTemplate;
|
32
|
+
_contentDataSource;
|
33
|
+
cssClass = 'single';
|
34
|
+
selectionMode = 'single';
|
35
|
+
selectionLevel = 'all';
|
36
|
+
selectedFieldName = null;
|
37
|
+
selectNodesRecursive = true;
|
38
|
+
seletedKeyFields = [];
|
39
|
+
keyField = 'id';
|
40
|
+
textField = 'title';
|
41
|
+
hasChildField = 'child';
|
42
|
+
bordered = false;
|
43
|
+
lazyLoading = true;
|
44
|
+
allowDrag = false;
|
45
|
+
size = 'md';
|
46
|
+
iconStart = true;
|
47
|
+
closeIconName = 'fal fa-plus';
|
48
|
+
openIconName = 'fal fa-minus';
|
49
|
+
selectionChanged = new EventEmitter();
|
50
|
+
onItemOpening = new EventEmitter();
|
51
|
+
onItemClick = new EventEmitter();
|
52
|
+
onItemClosing = new EventEmitter();
|
53
|
+
onItemDrag = new EventEmitter();
|
54
|
+
onItemMoved = new EventEmitter();
|
55
|
+
onContextMenuItemClick = new EventEmitter();
|
56
|
+
showSelectBox = false;
|
57
|
+
loading = false;
|
58
|
+
list = [];
|
59
|
+
itemRow;
|
60
|
+
selectedItems = [];
|
61
|
+
selectedParents = [];
|
62
|
+
loadAllChildren = false;
|
63
|
+
listLoad = [];
|
64
|
+
itemDrop;
|
65
|
+
itemDrag;
|
66
|
+
validDrop = true;
|
67
|
+
lockedDrag = false;
|
68
|
+
childField = 'childeren';
|
69
|
+
showContextMenu = false;
|
70
|
+
contextMenuItems;
|
71
|
+
constructor(ref) {
|
72
|
+
super();
|
73
|
+
this.ref = ref;
|
74
|
+
}
|
75
|
+
handleOnContextMenuItem(e) {
|
76
|
+
this.onContextMenuItemClick.emit(e);
|
77
|
+
}
|
78
|
+
refresh() {
|
79
|
+
this.list = [];
|
80
|
+
this._contentDataSource.fetch(null);
|
81
|
+
}
|
82
|
+
internalSelectItem(item, userChange = true) {
|
83
|
+
if (item[this.hasChildField] === false || this.selectionMode === 'single') {
|
84
|
+
item.select = !item.select;
|
85
|
+
if (item.parentNode && this.selectionMode !== 'single') {
|
86
|
+
this.changeParentSelect(item.parentNode);
|
87
|
+
}
|
88
|
+
if (item.select === true) {
|
89
|
+
if (this.selectionMode === 'single') {
|
90
|
+
this.selectedItems.forEach((e) => {
|
91
|
+
e.select = false;
|
92
|
+
});
|
93
|
+
this.selectedItems = [];
|
94
|
+
this.selectedItems.push(item);
|
95
|
+
}
|
96
|
+
else {
|
97
|
+
this.selectedItems.push(item);
|
98
|
+
}
|
99
|
+
}
|
100
|
+
else {
|
101
|
+
this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
else {
|
105
|
+
item.select = !item.select;
|
106
|
+
if (item.parentNode && this.selectionMode === 'multiple') {
|
107
|
+
this.changeParentSelect(item.parentNode);
|
108
|
+
}
|
109
|
+
if (this.selectionMode === 'multiple') {
|
110
|
+
this.changeChildSelect(item, item.select);
|
111
|
+
}
|
112
|
+
if (item.select == true) {
|
113
|
+
if (this.selectionMode === 'multiple') {
|
114
|
+
this.selectedParents.push(item);
|
115
|
+
}
|
116
|
+
else {
|
117
|
+
this.selectedParents.forEach((e) => {
|
118
|
+
e.select = false;
|
119
|
+
});
|
120
|
+
this.selectedParents = [];
|
121
|
+
this.selectedParents.push(item);
|
122
|
+
}
|
123
|
+
}
|
124
|
+
else {
|
125
|
+
this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);
|
126
|
+
}
|
127
|
+
}
|
128
|
+
if (userChange) {
|
129
|
+
this.selectionChanged.emit({
|
130
|
+
component: this,
|
131
|
+
value: this.makeNode(item),
|
132
|
+
htmlElement: this.ref.nativeElement,
|
133
|
+
});
|
134
|
+
}
|
135
|
+
}
|
136
|
+
makeNode(item, addChildren = true) {
|
137
|
+
const node = new AXTreeSideMenuNode();
|
138
|
+
if (addChildren) {
|
139
|
+
node.children =
|
140
|
+
item[this.childField] === undefined
|
141
|
+
? []
|
142
|
+
: item[this.childField]?.map((m) => this.makeNode(m));
|
143
|
+
}
|
144
|
+
node.itemData.disabled = item.disabled === true ? item.disabled : false;
|
145
|
+
node.itemData.open = item.open === true ? item.open : false;
|
146
|
+
node.itemData.key = item[this.keyField];
|
147
|
+
const c = [];
|
148
|
+
let i = 0;
|
149
|
+
for (var k in item) {
|
150
|
+
i = i + 1;
|
151
|
+
if (k != 'select' &&
|
152
|
+
k != 'hasChild' &&
|
153
|
+
k != 'loading' &&
|
154
|
+
k != 'requestId' &&
|
155
|
+
k != 'disabled' &&
|
156
|
+
k != 'open' &&
|
157
|
+
k != 'parentNode' &&
|
158
|
+
k != 'toggle' &&
|
159
|
+
k != 'loaded' &&
|
160
|
+
k != 'indeterminate' &&
|
161
|
+
k != this.childField) {
|
162
|
+
//c.push({ k: item[k] });
|
163
|
+
c[k] = item[k];
|
164
|
+
}
|
165
|
+
}
|
166
|
+
node.itemData.item = c; //TO DO
|
167
|
+
node.itemData.selected = item.select === true ? item.select : false;
|
168
|
+
node.itemData.hasChild = item[this.hasChildField];
|
169
|
+
node.parent =
|
170
|
+
item.parentNode === undefined
|
171
|
+
? null
|
172
|
+
: this.makeNode(item.parentNode, false);
|
173
|
+
return node;
|
174
|
+
}
|
175
|
+
changeChildSelect(item, s) {
|
176
|
+
if (this.selectNodesRecursive) {
|
177
|
+
item.select = s;
|
178
|
+
if (item[this.hasChildField] === true &&
|
179
|
+
item[this.childField] &&
|
180
|
+
item[this.childField].length > 0) {
|
181
|
+
item[this.childField].forEach((elm) => {
|
182
|
+
if (elm[this.hasChildField] === true) {
|
183
|
+
elm.select = s;
|
184
|
+
if (s === true && this.selectionMode !== 'single') {
|
185
|
+
this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);
|
186
|
+
this.selectedParents.push(elm);
|
187
|
+
}
|
188
|
+
if (s === false && this.selectionMode !== 'single') {
|
189
|
+
this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);
|
190
|
+
}
|
191
|
+
this.changeChildSelect(elm, s);
|
192
|
+
}
|
193
|
+
else {
|
194
|
+
elm.select = s;
|
195
|
+
if (s === true && this.selectionMode !== 'single') {
|
196
|
+
this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);
|
197
|
+
this.selectedItems.push(elm);
|
198
|
+
}
|
199
|
+
if (s === false && this.selectionMode !== 'single') {
|
200
|
+
this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);
|
201
|
+
}
|
202
|
+
}
|
203
|
+
});
|
204
|
+
}
|
205
|
+
else {
|
206
|
+
item.select = s;
|
207
|
+
}
|
208
|
+
}
|
209
|
+
}
|
210
|
+
changeParentSelect(item) {
|
211
|
+
if (this.selectNodesRecursive) {
|
212
|
+
let allselect = true;
|
213
|
+
let alldeselect = true;
|
214
|
+
let oneselect = false;
|
215
|
+
let isindeterminate = false;
|
216
|
+
if (item[this.childField]) {
|
217
|
+
for (let index = 0; index < item[this.childField].length; index++) {
|
218
|
+
if (item[this.childField][index].select === true) {
|
219
|
+
alldeselect = false;
|
220
|
+
oneselect = true;
|
221
|
+
}
|
222
|
+
if (item[this.childField][index].select === false ||
|
223
|
+
item[this.childField][index].select === undefined) {
|
224
|
+
allselect = false;
|
225
|
+
}
|
226
|
+
if (item[this.childField][index].select === null) {
|
227
|
+
isindeterminate = true;
|
228
|
+
alldeselect = false;
|
229
|
+
oneselect = true;
|
230
|
+
allselect = false;
|
231
|
+
}
|
232
|
+
}
|
233
|
+
}
|
234
|
+
if (oneselect || (isindeterminate && !allselect)) {
|
235
|
+
item.select = null;
|
236
|
+
}
|
237
|
+
if (allselect === true) {
|
238
|
+
item.select = true;
|
239
|
+
}
|
240
|
+
if (alldeselect === true) {
|
241
|
+
item.select = false;
|
242
|
+
}
|
243
|
+
if (item.parentNode &&
|
244
|
+
item.parentNode[this.childField] &&
|
245
|
+
item.parentNode[this.childField].length > 0) {
|
246
|
+
this.changeParentSelect(item.parentNode);
|
247
|
+
}
|
248
|
+
}
|
249
|
+
}
|
250
|
+
ngOnInit() {
|
251
|
+
this.onItemClick.subscribe((data) => {
|
252
|
+
if (!data.cancel) {
|
253
|
+
this.toggleNode(data.item, data.flag);
|
254
|
+
}
|
255
|
+
});
|
256
|
+
}
|
257
|
+
itemdbClick(e, item) {
|
258
|
+
if (this.selectionMode == 'single') {
|
259
|
+
this.handleOnNodeClick(e, item, true);
|
260
|
+
}
|
261
|
+
}
|
262
|
+
handleOnNodeClick(e, item, flag = false) {
|
263
|
+
this.onItemClick.emit({
|
264
|
+
component: this,
|
265
|
+
htmlEvent: e,
|
266
|
+
item,
|
267
|
+
flag,
|
268
|
+
});
|
269
|
+
e.stopPropagation();
|
270
|
+
e.preventDefault();
|
271
|
+
}
|
272
|
+
toggleNode(item, flag = false) {
|
273
|
+
//item[this.hasChildField] === false &&
|
274
|
+
if (this.selectionMode === 'single' && !flag) {
|
275
|
+
if (this.selectionLevel == 'nodes' && item.hasChild == true) {
|
276
|
+
}
|
277
|
+
else {
|
278
|
+
this.internalSelectItem(item);
|
279
|
+
}
|
280
|
+
}
|
281
|
+
else {
|
282
|
+
if (item[this.hasChildField] == true) {
|
283
|
+
item.toggle = !item.toggle;
|
284
|
+
}
|
285
|
+
if (this.selectionMode === 'single') {
|
286
|
+
if (this.selectionLevel == 'nodes' && item.hasChild == true) {
|
287
|
+
}
|
288
|
+
else {
|
289
|
+
this.internalSelectItem(item);
|
290
|
+
}
|
291
|
+
}
|
292
|
+
if (item[this.hasChildField] === true &&
|
293
|
+
item.loaded !== true &&
|
294
|
+
this.lazyLoading) {
|
295
|
+
this.itemRow = item;
|
296
|
+
const uid = Math.floor(Math.random() * 100000000);
|
297
|
+
item.requestId = uid;
|
298
|
+
this.listLoad.push(item);
|
299
|
+
this._contentDataSource.fetch(item);
|
300
|
+
this.showLoading(this.itemRow);
|
301
|
+
}
|
302
|
+
if (item.toggle && item[this.hasChildField] === true) {
|
303
|
+
item.open = true;
|
304
|
+
this.onItemOpening.emit(this.makeNode(item));
|
305
|
+
}
|
306
|
+
else if (!item.toggle && item[this.hasChildField] === true) {
|
307
|
+
item.open = false;
|
308
|
+
this.onItemClosing.emit(this.makeNode(item));
|
309
|
+
}
|
310
|
+
}
|
311
|
+
}
|
312
|
+
ngAfterContentInit() {
|
313
|
+
this._contentDataSource.fetch(null);
|
314
|
+
this._contentDataSource.onDataReceived.subscribe((_data) => {
|
315
|
+
if (this.list.length === 0) {
|
316
|
+
this.hideLoading(null);
|
317
|
+
this.list = _data.data.result;
|
318
|
+
this.list.forEach((el) => {
|
319
|
+
el.select = false;
|
320
|
+
if (this.selectionLevel == 'nodes' &&
|
321
|
+
el[this.hasChildField] == true) {
|
322
|
+
el.disabledCheckBox = true;
|
323
|
+
}
|
324
|
+
if (this.selectionLevel == 'parents' &&
|
325
|
+
el[this.hasChildField] == false) {
|
326
|
+
el.disabledCheckBox = true;
|
327
|
+
}
|
328
|
+
if (this.seletedKeyFields.length > 0) {
|
329
|
+
this.seletedKeyFields.forEach((n) => {
|
330
|
+
if (n.includes(el[this.keyField])) {
|
331
|
+
if (el[this.hasChildField] == true) {
|
332
|
+
// if (this.selectNodesRecursive) {
|
333
|
+
this.open(el);
|
334
|
+
// }
|
335
|
+
}
|
336
|
+
else {
|
337
|
+
this.selectItem(el);
|
338
|
+
}
|
339
|
+
}
|
340
|
+
});
|
341
|
+
}
|
342
|
+
else if (this.selectedFieldName != null) {
|
343
|
+
if (el[this.hasChildField] == true &&
|
344
|
+
el[this.selectedFieldName] == true) {
|
345
|
+
// if (this.selectNodesRecursive) {
|
346
|
+
this.open(el);
|
347
|
+
// }
|
348
|
+
}
|
349
|
+
else if (el[this.selectedFieldName] == true) {
|
350
|
+
this.selectItem(el);
|
351
|
+
}
|
352
|
+
}
|
353
|
+
});
|
354
|
+
}
|
355
|
+
else {
|
356
|
+
this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];
|
357
|
+
this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);
|
358
|
+
if (this.itemRow !== undefined) {
|
359
|
+
this.hideLoading(this.itemRow);
|
360
|
+
const result = _data.data.result;
|
361
|
+
if (this.list.length !== 0) {
|
362
|
+
if (this.itemRow[this.childField] &&
|
363
|
+
this.itemRow[this.childField].length > 0) {
|
364
|
+
result.forEach((el) => {
|
365
|
+
this.itemRow[this.childField][this.itemRow[this.childField].length] = el;
|
366
|
+
});
|
367
|
+
}
|
368
|
+
else {
|
369
|
+
this.itemRow[this.childField] = result;
|
370
|
+
}
|
371
|
+
for (let i = 0; i < result.length; i++) {
|
372
|
+
if (this.selectionLevel == 'nodes' &&
|
373
|
+
result[i][this.hasChildField] == true) {
|
374
|
+
result[i].disabledCheckBox = true;
|
375
|
+
}
|
376
|
+
if (this.selectionLevel == 'parents' &&
|
377
|
+
result[i][this.hasChildField] == false) {
|
378
|
+
result[i].disabledCheckBox = true;
|
379
|
+
}
|
380
|
+
if (this.selectionMode !== 'single' &&
|
381
|
+
this.selectNodesRecursive) {
|
382
|
+
result[i].select =
|
383
|
+
this.itemRow.select === (undefined || null)
|
384
|
+
? false
|
385
|
+
: this.itemRow.select;
|
386
|
+
if (this.itemRow.select === true &&
|
387
|
+
this.selectionMode == 'multiple' &&
|
388
|
+
result[i][this.hasChildField] === false) {
|
389
|
+
this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);
|
390
|
+
this.selectedItems.push(result[i]);
|
391
|
+
}
|
392
|
+
}
|
393
|
+
else {
|
394
|
+
result[i].select = false;
|
395
|
+
}
|
396
|
+
result[i].parentNode = this.itemRow;
|
397
|
+
if (this.seletedKeyFields.length > 0) {
|
398
|
+
this.seletedKeyFields.forEach((n) => {
|
399
|
+
if (n.includes(result[i][this.keyField])) {
|
400
|
+
if (result[i][this.hasChildField] == true) {
|
401
|
+
// if (this.selectNodesRecursive) {
|
402
|
+
this.open(result[i]);
|
403
|
+
// }
|
404
|
+
}
|
405
|
+
else {
|
406
|
+
this.selectItem(result[i]);
|
407
|
+
}
|
408
|
+
}
|
409
|
+
});
|
410
|
+
}
|
411
|
+
else if (this.selectedFieldName != null) {
|
412
|
+
if (result[i][this.hasChildField] == true &&
|
413
|
+
result[i][this.selectedFieldName] == true) {
|
414
|
+
// if (this.selectNodesRecursive) {
|
415
|
+
this.open(result[i]);
|
416
|
+
// }
|
417
|
+
}
|
418
|
+
else if (result[i][this.selectedFieldName] == true) {
|
419
|
+
this.selectItem(result[i]);
|
420
|
+
}
|
421
|
+
}
|
422
|
+
}
|
423
|
+
this.itemRow.loaded = true;
|
424
|
+
}
|
425
|
+
}
|
426
|
+
}
|
427
|
+
});
|
428
|
+
}
|
429
|
+
ngAfterViewInit() {
|
430
|
+
if (this.selectionMode !== 'single') {
|
431
|
+
this.showSelectBox = true;
|
432
|
+
}
|
433
|
+
this.showContextMenu = true;
|
434
|
+
}
|
435
|
+
// onItemClick(e, v) {
|
436
|
+
// }
|
437
|
+
onDragStart(e, v) {
|
438
|
+
if (!this.lockedDrag) {
|
439
|
+
this.itemDrag = v;
|
440
|
+
this.onItemDrag.emit(v);
|
441
|
+
}
|
442
|
+
e.stopImmediatePropagation();
|
443
|
+
}
|
444
|
+
onDragEnd(e, v) {
|
445
|
+
if (!this.lockedDrag) {
|
446
|
+
this.itemDrop = v;
|
447
|
+
}
|
448
|
+
e.stopImmediatePropagation();
|
449
|
+
}
|
450
|
+
drop(e) {
|
451
|
+
// this.onItemDrop.emit(this.itemDrop);
|
452
|
+
if (!this.lockedDrag) {
|
453
|
+
this.validDrop = true;
|
454
|
+
this.sameChilde(this.itemDrag, this.itemDrop);
|
455
|
+
if (this.validDrop &&
|
456
|
+
this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] &&
|
457
|
+
this.itemDrag.parentNode !== this.itemDrop) {
|
458
|
+
const movedEvent = new AXTreeSideMenuItemMovedEvent();
|
459
|
+
movedEvent.source = this.makeNode(this.itemDrag);
|
460
|
+
movedEvent.target = this.makeNode(this.itemDrop);
|
461
|
+
this.lockedDrag = true;
|
462
|
+
this.showLoading(this.itemDrag);
|
463
|
+
this.showLoading(this.itemDrop);
|
464
|
+
movedEvent.resolve = (value) => {
|
465
|
+
this.hideLoading(this.itemDrag);
|
466
|
+
this.hideLoading(this.itemDrop);
|
467
|
+
if (value) {
|
468
|
+
this.dragDropItem(this.itemDrag, this.itemDrop);
|
469
|
+
}
|
470
|
+
else {
|
471
|
+
this.lockedDrag = false;
|
472
|
+
}
|
473
|
+
};
|
474
|
+
this.onItemMoved.emit(movedEvent);
|
475
|
+
}
|
476
|
+
}
|
477
|
+
e.stopImmediatePropagation();
|
478
|
+
}
|
479
|
+
sameChilde(parent, child) {
|
480
|
+
if (parent[this.childField] && parent[this.childField].length > 0) {
|
481
|
+
for (let index = 0; index < parent[this.childField].length; index++) {
|
482
|
+
if (parent[this.childField][index][this.keyField] == child[this.keyField]) {
|
483
|
+
this.validDrop = false;
|
484
|
+
}
|
485
|
+
if (parent[this.childField][index][this.childField] &&
|
486
|
+
parent[this.childField][index][this.childField].length > 0) {
|
487
|
+
this.sameChilde(parent[this.childField][index], child);
|
488
|
+
}
|
489
|
+
}
|
490
|
+
}
|
491
|
+
else if (parent[this.keyField] == child[this.keyField]) {
|
492
|
+
this.validDrop = false;
|
493
|
+
}
|
494
|
+
}
|
495
|
+
dragDropItem(itemChild, itemParent) {
|
496
|
+
if (this.selectionLevel == 'nodes') {
|
497
|
+
itemParent.disabledCheckBox = true;
|
498
|
+
}
|
499
|
+
if (itemChild.parentNode) {
|
500
|
+
itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);
|
501
|
+
}
|
502
|
+
else {
|
503
|
+
this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);
|
504
|
+
}
|
505
|
+
itemChild.parentNode = itemParent;
|
506
|
+
if (itemParent[this.childField] && itemParent[this.childField].length > 0) {
|
507
|
+
itemParent[this.childField][itemParent[this.childField].length] =
|
508
|
+
itemChild;
|
509
|
+
}
|
510
|
+
else {
|
511
|
+
itemParent[this.childField] = [];
|
512
|
+
itemParent[this.childField][0] = itemChild;
|
513
|
+
if (itemParent[this.hasChildField] === true) {
|
514
|
+
this.toggleNode(itemParent);
|
515
|
+
}
|
516
|
+
else {
|
517
|
+
itemParent.toggle = !itemParent.toggle;
|
518
|
+
itemParent.loaded = true;
|
519
|
+
}
|
520
|
+
itemParent[this.hasChildField] = true;
|
521
|
+
}
|
522
|
+
if (itemChild.parentNode && this.selectionMode !== 'single') {
|
523
|
+
this.changeParentSelect(itemChild.parentNode);
|
524
|
+
}
|
525
|
+
this.lockedDrag = false;
|
526
|
+
}
|
527
|
+
listChange(field, value) {
|
528
|
+
for (let index = 0; index < this.list.length; index++) {
|
529
|
+
this.changeChiled(this.list[index], field, value);
|
530
|
+
}
|
531
|
+
this.loadAllChildren = false;
|
532
|
+
}
|
533
|
+
changeChiled(item, field, value) {
|
534
|
+
if (field === 'toggle' &&
|
535
|
+
(item.loaded === false || item.loaded === undefined)) {
|
536
|
+
if (this.loadAllChildren === true) {
|
537
|
+
this.toggleNode(item);
|
538
|
+
item[field] = value;
|
539
|
+
}
|
540
|
+
}
|
541
|
+
else {
|
542
|
+
item[field] = value;
|
543
|
+
if (field === 'select' &&
|
544
|
+
item[this.hasChildField] === false &&
|
545
|
+
value === true) {
|
546
|
+
this.selectedItems.push(item);
|
547
|
+
}
|
548
|
+
}
|
549
|
+
if (field === 'select') {
|
550
|
+
item.indeterminate = false;
|
551
|
+
}
|
552
|
+
if (item[this.hasChildField] === true &&
|
553
|
+
item[this.childField] &&
|
554
|
+
item[this.childField].length > 0) {
|
555
|
+
item[this.childField].forEach((element) => {
|
556
|
+
this.changeChiled(element, field, value);
|
557
|
+
});
|
558
|
+
}
|
559
|
+
}
|
560
|
+
showLoading(item) {
|
561
|
+
item.loading = true;
|
562
|
+
}
|
563
|
+
hideLoading(item) {
|
564
|
+
if (item != null) {
|
565
|
+
item.loading = false;
|
566
|
+
}
|
567
|
+
}
|
568
|
+
openAll(loadAll = false) {
|
569
|
+
// if (loadAll) {
|
570
|
+
// this.loadAllChildren = true;
|
571
|
+
// this.listChange('toggle', true);
|
572
|
+
//} else {
|
573
|
+
this.listChange('toggle', true);
|
574
|
+
// }
|
575
|
+
}
|
576
|
+
selectItem(item) {
|
577
|
+
if (item['select'] != true) {
|
578
|
+
this.internalSelectItem(item, false);
|
579
|
+
}
|
580
|
+
}
|
581
|
+
open(item) {
|
582
|
+
if (item['toggle'] !== true) {
|
583
|
+
this.toggleNode(item, true);
|
584
|
+
}
|
585
|
+
}
|
586
|
+
scrolIntoView(item) {
|
587
|
+
let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);
|
588
|
+
element.scrollIntoView();
|
589
|
+
}
|
590
|
+
closeAll() {
|
591
|
+
this.listChange('toggle', false);
|
592
|
+
}
|
593
|
+
selectAll() {
|
594
|
+
if (this.selectionMode !== 'single') {
|
595
|
+
this.listChange('select', true);
|
596
|
+
}
|
597
|
+
}
|
598
|
+
unSelectAll() {
|
599
|
+
if (this.selectionMode !== 'single') {
|
600
|
+
this.listChange('select', false);
|
601
|
+
}
|
602
|
+
this.selectedItems = [];
|
603
|
+
}
|
604
|
+
getSelectedNodes() {
|
605
|
+
const selectItemsNode = [];
|
606
|
+
this.selectedItems.forEach((e) => {
|
607
|
+
selectItemsNode.push(this.makeNode(e));
|
608
|
+
});
|
609
|
+
return selectItemsNode;
|
610
|
+
}
|
611
|
+
getSelectedParents() {
|
612
|
+
const selectItemsParent = [];
|
613
|
+
this.selectedParents.forEach((e) => {
|
614
|
+
selectItemsParent.push(this.makeNode(e));
|
615
|
+
});
|
616
|
+
return selectItemsParent;
|
617
|
+
}
|
618
|
+
getParentsId(item) {
|
619
|
+
let keyFields = [];
|
620
|
+
keyFields.push(item[this.keyField]);
|
621
|
+
if (item.parentNode) {
|
622
|
+
keyFields.push(...this.getParentsId(item.parentNode));
|
623
|
+
}
|
624
|
+
return keyFields;
|
625
|
+
}
|
626
|
+
getSelectedKeyFields() {
|
627
|
+
let keyFields = [];
|
628
|
+
this.selectedItems.forEach((elm) => {
|
629
|
+
var Ids = this.getParentsId(elm);
|
630
|
+
if (Ids) {
|
631
|
+
keyFields.push(Ids);
|
632
|
+
}
|
633
|
+
});
|
634
|
+
return keyFields;
|
635
|
+
}
|
636
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTreeSideMenuComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
637
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AXTreeSideMenuComponent, selector: "ax-tree-side-menu", inputs: { cssClass: "cssClass", selectionMode: "selectionMode", selectionLevel: "selectionLevel", selectedFieldName: "selectedFieldName", selectNodesRecursive: "selectNodesRecursive", seletedKeyFields: "seletedKeyFields", keyField: "keyField", textField: "textField", hasChildField: "hasChildField", bordered: "bordered", lazyLoading: "lazyLoading", allowDrag: "allowDrag", size: "size", iconStart: "iconStart", closeIconName: "closeIconName", openIconName: "openIconName", contextMenuItems: "contextMenuItems" }, outputs: { selectionChanged: "selectionChanged", onItemOpening: "onItemOpening", onItemClick: "onItemClick", onItemClosing: "onItemClosing", onItemDrag: "onItemDrag", onItemMoved: "onItemMoved", onContextMenuItemClick: "onContextMenuItemClick" }, queries: [{ propertyName: "nodeTemplate", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ul class=\"ax-tree-side-menu {{size}} {{cssClass}}\">\n <ng-template #recursiveList let-list>\n <ng-container *ngFor=\"let item of list\">\n <li (click)=\"handleOnNodeClick($event,item,true)\"\n class=\"{{item[hasChildField] ? '':'node'}} {{!!item.toggle ? 'active':''}}\" style=\"display: flex;\"\n [class.selected]=\"item.select\">\n <div class=\"ax-tree-side-menu-item\" (click)=\"handleOnNodeClick($event,item,true)\">\n\n \n\n <div (click)=\"handleOnNodeClick($event,item,true)\" (dblclick)=\"itemdbClick($event,item)\">\n <ng-container *ngIf=\"nodeTemplate; else elseTemplate\">\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{ $implicit: item }\"></ng-container>\n </ng-container>\n <ng-template #elseTemplate>\n {{item[textField]}}\n </ng-template>\n </div>\n\n <div class=\"start-side\" *ngIf=\"iconStart\">\n <div *ngIf=\"item[hasChildField]\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n\n <div class=\"start-side\" *ngIf=\"!iconStart\">\n <div *ngIf=\"item[hasChildField]\" (click)=\"handleOnNodeClick($event,item,true)\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n </div>\n <ul class=\"ax-tree-side-menu-child\" *ngIf=\"item.toggle\">\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: item.childeren }\"></ng-container>\n </ul>\n </li>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: list }\"></ng-container>\n</ul>", 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"] }], encapsulation: i0.ViewEncapsulation.None });
|
638
|
+
}
|
639
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AXTreeSideMenuComponent, decorators: [{
|
640
|
+
type: Component,
|
641
|
+
args: [{ selector: 'ax-tree-side-menu', encapsulation: ViewEncapsulation.None, template: "<ul class=\"ax-tree-side-menu {{size}} {{cssClass}}\">\n <ng-template #recursiveList let-list>\n <ng-container *ngFor=\"let item of list\">\n <li (click)=\"handleOnNodeClick($event,item,true)\"\n class=\"{{item[hasChildField] ? '':'node'}} {{!!item.toggle ? 'active':''}}\" style=\"display: flex;\"\n [class.selected]=\"item.select\">\n <div class=\"ax-tree-side-menu-item\" (click)=\"handleOnNodeClick($event,item,true)\">\n\n \n\n <div (click)=\"handleOnNodeClick($event,item,true)\" (dblclick)=\"itemdbClick($event,item)\">\n <ng-container *ngIf=\"nodeTemplate; else elseTemplate\">\n <ng-container *ngTemplateOutlet=\"nodeTemplate; context:{ $implicit: item }\"></ng-container>\n </ng-container>\n <ng-template #elseTemplate>\n {{item[textField]}}\n </ng-template>\n </div>\n\n <div class=\"start-side\" *ngIf=\"iconStart\">\n <div *ngIf=\"item[hasChildField]\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n\n <div class=\"start-side\" *ngIf=\"!iconStart\">\n <div *ngIf=\"item[hasChildField]\" (click)=\"handleOnNodeClick($event,item,true)\">\n <i class=\"{{openIconName}}\" *ngIf=\" !!item.toggle && !item.loading\"></i>\n <i class=\"{{closeIconName}}\" *ngIf=\"!item.toggle && !item.loading\"></i>\n <i class=\"fal fa-spinner fa-spin\" *ngIf=\"item.loading\"></i>\n </div>\n </div>\n </div>\n <ul class=\"ax-tree-side-menu-child\" *ngIf=\"item.toggle\">\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: item.childeren }\"></ng-container>\n </ul>\n </li>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"recursiveList; context:{ $implicit: list }\"></ng-container>\n</ul>" }]
|
642
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { nodeTemplate: [{
|
643
|
+
type: ContentChild,
|
644
|
+
args: [TemplateRef, { static: true }]
|
645
|
+
}], _contentDataSource: [{
|
646
|
+
type: ContentChild,
|
647
|
+
args: [AXDataSourceComponent, { static: true }]
|
648
|
+
}], cssClass: [{
|
649
|
+
type: Input
|
650
|
+
}], selectionMode: [{
|
651
|
+
type: Input
|
652
|
+
}], selectionLevel: [{
|
653
|
+
type: Input
|
654
|
+
}], selectedFieldName: [{
|
655
|
+
type: Input
|
656
|
+
}], selectNodesRecursive: [{
|
657
|
+
type: Input
|
658
|
+
}], seletedKeyFields: [{
|
659
|
+
type: Input
|
660
|
+
}], keyField: [{
|
661
|
+
type: Input
|
662
|
+
}], textField: [{
|
663
|
+
type: Input
|
664
|
+
}], hasChildField: [{
|
665
|
+
type: Input
|
666
|
+
}], bordered: [{
|
667
|
+
type: Input
|
668
|
+
}], lazyLoading: [{
|
669
|
+
type: Input
|
670
|
+
}], allowDrag: [{
|
671
|
+
type: Input
|
672
|
+
}], size: [{
|
673
|
+
type: Input
|
674
|
+
}], iconStart: [{
|
675
|
+
type: Input
|
676
|
+
}], closeIconName: [{
|
677
|
+
type: Input
|
678
|
+
}], openIconName: [{
|
679
|
+
type: Input
|
680
|
+
}], selectionChanged: [{
|
681
|
+
type: Output
|
682
|
+
}], onItemOpening: [{
|
683
|
+
type: Output
|
684
|
+
}], onItemClick: [{
|
685
|
+
type: Output
|
686
|
+
}], onItemClosing: [{
|
687
|
+
type: Output
|
688
|
+
}], onItemDrag: [{
|
689
|
+
type: Output
|
690
|
+
}], onItemMoved: [{
|
691
|
+
type: Output
|
692
|
+
}], onContextMenuItemClick: [{
|
693
|
+
type: Output
|
694
|
+
}], contextMenuItems: [{
|
695
|
+
type: Input
|
696
|
+
}] } });
|
697
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zaWRlLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdHJlZS1zaWRlLW1lbnUvdHJlZS1zaWRlLW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdHJlZS1zaWRlLW1lbnUvdHJlZS1zaWRlLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsS0FBSyxFQUNMLFlBQVksRUFDWixNQUFNLEVBQ04sWUFBWSxFQUVaLFVBQVUsRUFDVixXQUFXLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFlLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQVF4RCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFFBQVEsQ0FBdUI7SUFDL0IsUUFBUSxHQUEyQixJQUFJLHNCQUFzQixFQUFFLENBQUM7SUFDaEUsTUFBTSxDQUFxQjtDQUM1QjtBQUVELE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsUUFBUSxDQUFVO0lBQ2xCLEdBQUcsQ0FBUztJQUNaLFFBQVEsQ0FBVTtJQUNsQixJQUFJLENBQVU7SUFDZCxRQUFRLENBQVU7SUFDbEIsSUFBSSxDQUFNO0NBQ1g7QUFFRCxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLE1BQU0sQ0FBcUI7SUFDM0IsTUFBTSxDQUFxQjtJQUMzQixPQUFPLENBQTJCO0NBQ25DO0FBRUQsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLFlBQWdDO0NBRXhGO0FBRUQsTUFBTSxPQUFPLHVCQUF3QixTQUFR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O3NCQURSLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUlQLFVBQVU7c0JBRFQsTUFBTTtnQkFJUCxXQUFXO3NCQURWLE1BQU07Z0JBS1Asc0JBQXNCO3NCQURyQixNQUFNO2dCQW1CUCxnQkFBZ0I7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LFxuICBDb250ZW50Q2hpbGQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYRGF0YVNvdXJjZUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGEtc291cmNlL2RhdGFzb3VyY2UuY29tcG9uZW50JztcbmltcG9ydCB7IEFYRGF0YUV2ZW50LCBBWEh0bWxFdmVudCwgQVhWYWx1ZUV2ZW50IH0gZnJvbSAnLi4vYmFzZS9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcbmltcG9ydCB7XG4gIEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudCxcbiAgQVhDb250ZXh0TWVudVByb21pc2VGdW5jdGlvbixcbiAgQVhDb250ZXh0TWVudUZ1bmN0aW9uLFxufSBmcm9tICcuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWE1lbnVJdGVtIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcblxuZXhwb3J0IGNsYXNzIEFYVHJlZVNpZGVNZW51Tm9kZSB7XG4gIGNoaWxkcmVuOiBBWFRyZWVTaWRlTWVudU5vZGVbXTtcbiAgaXRlbURhdGE6IEFYVHJlZVNpZGVNZW51SXRlbURhdGEgPSBuZXcgQVhUcmVlU2lkZU1lbnVJdGVtRGF0YSgpO1xuICBwYXJlbnQ6IEFYVHJlZVNpZGVNZW51Tm9kZTtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJlZVNpZGVNZW51SXRlbURhdGEge1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAga2V5OiBzdHJpbmc7XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICBvcGVuOiBib29sZWFuO1xuICBoYXNDaGlsZDogYm9vbGVhbjtcbiAgaXRlbTogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgQVhUcmVlU2lkZU1lbnVJdGVtTW92ZWRFdmVudCB7XG4gIHNvdXJjZTogQVhUcmVlU2lkZU1lbnVOb2RlO1xuICB0YXJnZXQ6IEFYVHJlZVNpZGVNZW51Tm9kZTtcbiAgcmVzb2x2ZTogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgQVhUcmVlU2lkZU1lbnVTZWxlY3Rpb25DaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWFZhbHVlRXZlbnQ8QVhUcmVlU2lkZU1lbnVOb2RlPiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWFRyZWVTaWRlTWVudUNvbXBvbmVudDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJlZVNpZGVNZW51SXRlbUNsaWNrIGV4dGVuZHMgQVhIdG1sRXZlbnQ8TW91c2VFdmVudD4ge1xuICBkZWNsYXJlIGNvbXBvbmVudDogQVhUcmVlU2lkZU1lbnVDb21wb25lbnQ7XG4gIGRlY2xhcmUgaXRlbTogYW55O1xuICBkZWNsYXJlIGZsYWc6IGJvb2xlYW47XG4gIGRlY2xhcmUgY2FuY2VsPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtdHJlZS1zaWRlLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1zaWRlLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWFRyZWVTaWRlTWVudUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudCB7XG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pXG4gIG5vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKEFYRGF0YVNvdXJjZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHJpdmF0ZSBfY29udGVudERhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBjc3NDbGFzczogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0aW9uTGV2ZWw6ICdhbGwnIHwgJ25vZGVzJyB8ICdwYXJlbnRzJyA9ICdhbGwnO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGVkRmllbGROYW1lOiBzdHJpbmcgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdE5vZGVzUmVjdXJzaXZlOiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzZWxldGVkS2V5RmllbGRzOiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIGtleUZpZWxkOiBzdHJpbmcgPSAnaWQnO1xuXG4gIEBJbnB1dCgpXG4gIHRleHRGaWVsZDogc3RyaW5nID0gJ3RpdGxlJztcblxuICBASW5wdXQoKVxuICBoYXNDaGlsZEZpZWxkOiBzdHJpbmcgPSAnY2hpbGQnO1xuXG4gIEBJbnB1dCgpXG4gIGJvcmRlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbGF6eUxvYWRpbmc6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGFsbG93RHJhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHNpemU6ICdtZCcgfCAnc20nID0gJ21kJztcblxuICBASW5wdXQoKVxuICBpY29uU3RhcnQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGNsb3NlSWNvbk5hbWU6IHN0cmluZyA9ICdmYWwgZmEtcGx1cyc7XG5cbiAgQElucHV0KClcbiAgb3Blbkljb25OYW1lOiBzdHJpbmcgPSAnZmFsIGZhLW1pbnVzJztcblxuICBAT3V0cHV0KClcbiAgc2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYVHJlZVNpZGVNZW51U2VsZWN0aW9uQ2hhbmdlZEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWFRyZWVTaWRlTWVudVNlbGVjdGlvbkNoYW5nZWRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JdGVtT3BlbmluZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgb25JdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWFRyZWVTaWRlTWVudUl0ZW1DbGljaz4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlU2lkZU1lbnVJdGVtQ2xpY2s+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSXRlbUNsb3Npbmc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSXRlbURyYWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uSXRlbU1vdmVkOiBFdmVudEVtaXR0ZXI8QVhUcmVlU2lkZU1lbnVJdGVtTW92ZWRFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhUcmVlU2lkZU1lbnVJdGVtTW92ZWRFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgb25Db250ZXh0TWVudUl0ZW1DbGljazogRXZlbnRFbWl0dGVyPEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhDb250ZXh0TWVudUl0ZW1DbGlja0V2ZW50PigpO1xuXG4gIHNob3dTZWxlY3RCb3g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBsaXN0OiBhbnlbXSA9IFtdO1xuICBpdGVtUm93OiBhbnk7XG4gIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUGFyZW50czogYW55W10gPSBbXTtcbiAgbG9hZEFsbENoaWxkcmVuOiBib29sZWFuID0gZmFsc2U7XG4gIGxpc3RMb2FkOiBhbnlbXSA9IFtdO1xuICBpdGVtRHJvcDogYW55O1xuICBpdGVtRHJhZzogYW55O1xuICB2YWxpZERyb3A6IGJvb2xlYW4gPSB0cnVlO1xuICBsb2NrZWREcmFnOiBib29sZWFuID0gZmFsc2U7XG4gIGNoaWxkRmllbGQ6IHN0cmluZyA9ICdjaGlsZGVyZW4nO1xuICBzaG93Q29udGV4dE1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KClcbiAgY29udGV4dE1lbnVJdGVtczpcbiAgICB8IEFYTWVudUl0ZW1bXVxuICAgIHwgQVhDb250ZXh0TWVudVByb21pc2VGdW5jdGlvblxuICAgIHwgQVhDb250ZXh0TWVudUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGhhbmRsZU9uQ29udGV4dE1lbnVJdGVtKGU6IEFYQ29udGV4dE1lbnVJdGVtQ2xpY2tFdmVudCkge1xuICAgIHRoaXMub25Db250ZXh0TWVudUl0ZW1DbGljay5lbWl0KGUpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmxpc3QgPSBbXTtcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChudWxsKTtcbiAgfVxuXG4gIGludGVybmFsU2VsZWN0SXRlbShpdGVtLCB1c2VyQ2hhbmdlOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmIChpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlIHx8IHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIGl0ZW0uc2VsZWN0ID0gIWl0ZW0uc2VsZWN0O1xuICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW0ucGFyZW50Tm9kZSk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5zZWxlY3QgPT09IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgICAgICAgZS5zZWxlY3QgPSBmYWxzZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtLnNlbGVjdCA9ICFpdGVtLnNlbGVjdDtcblxuICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3QoaXRlbS5wYXJlbnROb2RlKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VDaGlsZFNlbGVjdChpdGVtLCBpdGVtLnNlbGVjdCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLnNlbGVjdCA9PSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZvckVhY2goKGUpID0+IHtcbiAgICAgICAgICAgIGUuc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSBbXTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcihcbiAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gaXRlbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodXNlckNoYW5nZSkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIHZhbHVlOiB0aGlzLm1ha2VOb2RlKGl0ZW0pLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFrZU5vZGUoaXRlbSwgYWRkQ2hpbGRyZW46IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3Qgbm9kZTogQVhUcmVlU2lkZU1lbnVOb2RlID0gbmV3IEFYVHJlZVNpZGVNZW51Tm9kZSgpO1xuICAgIGlmIChhZGRDaGlsZHJlbikge1xuICAgICAgbm9kZS5jaGlsZHJlbiA9XG4gICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBbXVxuICAgICAgICAgIDogaXRlbVt0aGlzLmNoaWxkRmllbGRdPy5tYXAoKG0pID0+IHRoaXMubWFrZU5vZGUobSkpO1xuICAgIH1cbiAgICBub2RlLml0ZW1EYXRhLmRpc2FibGVkID0gaXRlbS5kaXNhYmxlZCA9PT0gdHJ1ZSA/IGl0ZW0uZGlzYWJsZWQgOiBmYWxzZTtcbiAgICBub2RlLml0ZW1EYXRhLm9wZW4gPSBpdGVtLm9wZW4gPT09IHRydWUgPyBpdGVtLm9wZW4gOiBmYWxzZTtcbiAgICBub2RlLml0ZW1EYXRhLmtleSA9IGl0ZW1bdGhpcy5rZXlGaWVsZF07XG5cbiAgICBjb25zdCBjID0gW107XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAodmFyIGsgaW4gaXRlbSkge1xuICAgICAgaSA9IGkgKyAxO1xuICAgICAgaWYgKFxuICAgICAgICBrICE9ICdzZWxlY3QnICYmXG4gICAgICAgIGsgIT0gJ2hhc0NoaWxkJyAmJlxuICAgICAgICBrICE9ICdsb2FkaW5nJyAmJlxuICAgICAgICBrICE9ICdyZXF1ZXN0SWQnICYmXG4gICAgICAgIGsgIT0gJ2Rpc2FibGVkJyAmJlxuICAgICAgICBrICE9ICdvcGVuJyAmJlxuICAgICAgICBrICE9ICdwYXJlbnROb2RlJyAmJlxuICAgICAgICBrICE9ICd0b2dnbGUnICYmXG4gICAgICAgIGsgIT0gJ2xvYWRlZCcgJiZcbiAgICAgICAgayAhPSAnaW5kZXRlcm1pbmF0ZScgJiZcbiAgICAgICAgayAhPSB0aGlzLmNoaWxkRmllbGRcbiAgICAgICkge1xuICAgICAgICAvL2MucHVzaCh7IGs6IGl0ZW1ba10gfSk7XG4gICAgICAgIGNba10gPSBpdGVtW2tdO1xuICAgICAgfVxuICAgIH1cbiAgICBub2RlLml0ZW1EYXRhLml0ZW0gPSBjOyAvL1RPIERPXG4gICAgbm9kZS5pdGVtRGF0YS5zZWxlY3RlZCA9IGl0ZW0uc2VsZWN0ID09PSB0cnVlID8gaXRlbS5zZWxlY3QgOiBmYWxzZTtcbiAgICBub2RlLml0ZW1EYXRhLmhhc0NoaWxkID0gaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdO1xuICAgIG5vZGUucGFyZW50ID1cbiAgICAgIGl0ZW0ucGFyZW50Tm9kZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHRoaXMubWFrZU5vZGUoaXRlbS5wYXJlbnROb2RlLCBmYWxzZSk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUNoaWxkU2VsZWN0KGl0ZW0sIHMpIHtcbiAgICBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xuICAgICAgaXRlbS5zZWxlY3QgPSBzO1xuICAgICAgaWYgKFxuICAgICAgICBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUgJiZcbiAgICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdICYmXG4gICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwXG4gICAgICApIHtcbiAgICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmZvckVhY2goKGVsbSkgPT4ge1xuICAgICAgICAgIGlmIChlbG1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgZWxtLnNlbGVjdCA9IHM7XG5cbiAgICAgICAgICAgIGlmIChzID09PSB0cnVlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFBhcmVudHMgPSB0aGlzLnNlbGVjdGVkUGFyZW50cy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5wdXNoKGVsbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocyA9PT0gZmFsc2UgJiYgdGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUGFyZW50cyA9IHRoaXMuc2VsZWN0ZWRQYXJlbnRzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlQ2hpbGRTZWxlY3QoZWxtLCBzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxtLnNlbGVjdCA9IHM7XG4gICAgICAgICAgICBpZiAocyA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGVsbVt0aGlzLmtleUZpZWxkXVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChlbG0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMgPT09IGZhbHNlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPT0gZWxtW3RoaXMua2V5RmllbGRdXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZVBhcmVudFNlbGVjdChpdGVtKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcbiAgICAgIGxldCBhbGxzZWxlY3QgPSB0cnVlO1xuICAgICAgbGV0IGFsbGRlc2VsZWN0ID0gdHJ1ZTtcbiAgICAgIGxldCBvbmVzZWxlY3QgPSBmYWxzZTtcbiAgICAgIGxldCBpc2luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICAgICAgaWYgKGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSkge1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgYWxsZGVzZWxlY3QgPSBmYWxzZTtcbiAgICAgICAgICAgIG9uZXNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXVtpbmRleF0uc2VsZWN0ID09PSBmYWxzZSB8fFxuICAgICAgICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdW2luZGV4XS5zZWxlY3QgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgYWxsc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdGVtW3RoaXMuY2hpbGRGaWVsZF1baW5kZXhdLnNlbGVjdCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgaXNpbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIGFsbGRlc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICBvbmVzZWxlY3QgPSB0cnVlO1xuICAgICAgICAgICAgYWxsc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvbmVzZWxlY3QgfHwgKGlzaW5kZXRlcm1pbmF0ZSAmJiAhYWxsc2VsZWN0KSkge1xuICAgICAgICBpdGVtLnNlbGVjdCA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYWxsc2VsZWN0ID09PSB0cnVlKSB7XG4gICAgICAgIGl0ZW0uc2VsZWN0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChhbGxkZXNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICBpdGVtLnNlbGVjdCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBpdGVtLnBhcmVudE5vZGUgJiZcbiAgICAgICAgaXRlbS5wYXJlbnROb2RlW3RoaXMuY2hpbGRGaWVsZF0gJiZcbiAgICAgICAgaXRlbS5wYXJlbnROb2RlW3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW0ucGFyZW50Tm9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vbkl0ZW1DbGljay5zdWJzY3JpYmUoKGRhdGE6IEFYVHJlZVNpZGVNZW51SXRlbUNsaWNrKSA9PiB7XG4gICAgICBpZiAoIWRhdGEuY2FuY2VsKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlTm9kZShkYXRhLml0ZW0sIGRhdGEuZmxhZyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpdGVtZGJDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5oYW5kbGVPbk5vZGVDbGljayhlLCBpdGVtLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbk5vZGVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtLCBmbGFnID0gZmFsc2UpIHtcbiAgICB0aGlzLm9uSXRlbUNsaWNrLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEV2ZW50OiBlLFxuICAgICAgaXRlbSxcbiAgICAgIGZsYWcsXG4gICAgfSk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICB0b2dnbGVOb2RlKGl0ZW0sIGZsYWcgPSBmYWxzZSkge1xuICAgIC8vaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdID09PSBmYWxzZSAmJlxuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnICYmICFmbGFnKSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnICYmIGl0ZW0uaGFzQ2hpbGQgPT0gdHJ1ZSkge1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbFNlbGVjdEl0ZW0oaXRlbSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSkge1xuICAgICAgICBpdGVtLnRvZ2dsZSA9ICFpdGVtLnRvZ2dsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJiBpdGVtLmhhc0NoaWxkID09IHRydWUpIHtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsU2VsZWN0SXRlbShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSAmJlxuICAgICAgICBpdGVtLmxvYWRlZCAhPT0gdHJ1ZSAmJlxuICAgICAgICB0aGlzLmxhenlMb2FkaW5nXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pdGVtUm93ID0gaXRlbTtcbiAgICAgICAgY29uc3QgdWlkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwKTtcbiAgICAgICAgaXRlbS5yZXF1ZXN0SWQgPSB1aWQ7XG4gICAgICAgIHRoaXMubGlzdExvYWQucHVzaChpdGVtKTtcbiAgICAgICAgdGhpcy5fY29udGVudERhdGFTb3VyY2UuZmV0Y2goaXRlbSk7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtUm93KTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnRvZ2dsZSAmJiBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcbiAgICAgICAgaXRlbS5vcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkl0ZW1PcGVuaW5nLmVtaXQodGhpcy5tYWtlTm9kZShpdGVtKSk7XG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLnRvZ2dsZSAmJiBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUpIHtcbiAgICAgICAgaXRlbS5vcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25JdGVtQ2xvc2luZy5lbWl0KHRoaXMubWFrZU5vZGUoaXRlbSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5mZXRjaChudWxsKTtcbiAgICB0aGlzLl9jb250ZW50RGF0YVNvdXJjZS5vbkRhdGFSZWNlaXZlZC5zdWJzY3JpYmUoKF9kYXRhKSA9PiB7XG4gICAgICBpZiAodGhpcy5saXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmhpZGVMb2FkaW5nKG51bGwpO1xuICAgICAgICB0aGlzLmxpc3QgPSBfZGF0YS5kYXRhLnJlc3VsdDtcblxuICAgICAgICB0aGlzLmxpc3QuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgICAgICBlbC5zZWxlY3QgPSBmYWxzZTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTGV2ZWwgPT0gJ25vZGVzJyAmJlxuICAgICAgICAgICAgZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSB0cnVlXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBlbC5kaXNhYmxlZENoZWNrQm94ID0gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkxldmVsID09ICdwYXJlbnRzJyAmJlxuICAgICAgICAgICAgZWxbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSBmYWxzZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZWwuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZXRlZEtleUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGV0ZWRLZXlGaWVsZHMuZm9yRWFjaCgobjogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChuLmluY2x1ZGVzKGVsW3RoaXMua2V5RmllbGRdKSkge1xuICAgICAgICAgICAgICAgIGlmIChlbFt0aGlzLmhhc0NoaWxkRmllbGRdID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgIC8vICBpZiAodGhpcy5zZWxlY3ROb2Rlc1JlY3Vyc2l2ZSkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKGVsKTtcbiAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEZpZWxkTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGVsW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSAmJlxuICAgICAgICAgICAgICBlbFt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgLy8gaWYgKHRoaXMuc2VsZWN0Tm9kZXNSZWN1cnNpdmUpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuKGVsKTtcbiAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChlbFt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXRlbVJvdyA9IHRoaXMubGlzdExvYWQuZmlsdGVyKFxuICAgICAgICAgIChjKSA9PiBjLnJlcXVlc3RJZCA9PT0gX2RhdGEuZGF0YS5yZXF1ZXN0SWRcbiAgICAgICAgKVswXTtcbiAgICAgICAgdGhpcy5saXN0TG9hZCA9IHRoaXMubGlzdExvYWQuZmlsdGVyKFxuICAgICAgICAgIChjKSA9PiBjLnJlcXVlc3RJZCAhPT0gX2RhdGEuZGF0YS5yZXF1ZXN0SWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuaXRlbVJvdyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Sb3cpO1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IF9kYXRhLmRhdGEucmVzdWx0O1xuXG4gICAgICAgICAgaWYgKHRoaXMubGlzdC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0gJiZcbiAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoID4gMFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJlc3VsdC5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdW1xuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtUm93W3RoaXMuY2hpbGRGaWVsZF0ubGVuZ3RoXG4gICAgICAgICAgICAgICAgXSA9IGVsO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuaXRlbVJvd1t0aGlzLmNoaWxkRmllbGRdID0gcmVzdWx0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAnbm9kZXMnICYmXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25MZXZlbCA9PSAncGFyZW50cycgJiZcbiAgICAgICAgICAgICAgICByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PSBmYWxzZVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpXS5zZWxlY3QgPVxuICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtUm93LnNlbGVjdCA9PT0gKHVuZGVmaW5lZCB8fCBudWxsKVxuICAgICAgICAgICAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5pdGVtUm93LnNlbGVjdDtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVJvdy5zZWxlY3QgPT09IHRydWUgJiZcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAnbXVsdGlwbGUnICYmXG4gICAgICAgICAgICAgICAgICByZXN1bHRbaV1bdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gZmFsc2VcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSByZXN1bHRbaV1bdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChyZXN1bHRbaV0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0uc2VsZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmVzdWx0W2ldLnBhcmVudE5vZGUgPSB0aGlzLml0ZW1Sb3c7XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZXRlZEtleUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxldGVkS2V5RmllbGRzLmZvckVhY2goKG46IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKG4uaW5jbHVkZXMocmVzdWx0W2ldW3RoaXMua2V5RmllbGRdKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKHJlc3VsdFtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShyZXN1bHRbaV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEZpZWxkTmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT0gdHJ1ZSAmJlxuICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldW3RoaXMuc2VsZWN0ZWRGaWVsZE5hbWVdID09IHRydWVcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnNlbGVjdE5vZGVzUmVjdXJzaXZlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm9wZW4ocmVzdWx0W2ldKTtcbiAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdFtpXVt0aGlzLnNlbGVjdGVkRmllbGROYW1lXSA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0ocmVzdWx0W2ldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pdGVtUm93LmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMuc2hvd1NlbGVjdEJveCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIG9uSXRlbUNsaWNrKGUsIHYpIHtcblxuICAvLyB9XG5cbiAgb25EcmFnU3RhcnQoZTogRXZlbnQsIHYpIHtcbiAgICBpZiAoIXRoaXMubG9ja2VkRHJhZykge1xuICAgICAgdGhpcy5pdGVtRHJhZyA9IHY7XG4gICAgICB0aGlzLm9uSXRlbURyYWcuZW1pdCh2KTtcbiAgICB9XG4gICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG9uRHJhZ0VuZChlLCB2KSB7XG4gICAgaWYgKCF0aGlzLmxvY2tlZERyYWcpIHtcbiAgICAgIHRoaXMuaXRlbURyb3AgPSB2O1xuICAgIH1cbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgZHJvcChlKSB7XG4gICAgLy8gIHRoaXMub25JdGVtRHJvcC5lbWl0KHRoaXMuaXRlbURyb3ApO1xuICAgIGlmICghdGhpcy5sb2NrZWREcmFnKSB7XG4gICAgICB0aGlzLnZhbGlkRHJvcCA9IHRydWU7XG4gICAgICB0aGlzLnNhbWVDaGlsZGUodGhpcy5pdGVtRHJhZywgdGhpcy5pdGVtRHJvcCk7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudmFsaWREcm9wICYmXG4gICAgICAgIHRoaXMuaXRlbURyYWdbdGhpcy5rZXlGaWVsZF0gIT09IHRoaXMuaXRlbURyb3BbdGhpcy5rZXlGaWVsZF0gJiZcbiAgICAgICAgdGhpcy5pdGVtRHJhZy5wYXJlbnROb2RlICE9PSB0aGlzLml0ZW1Ecm9wXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgbW92ZWRFdmVudDogQVhUcmVlU2lkZU1lbnVJdGVtTW92ZWRFdmVudCA9XG4gICAgICAgICAgbmV3IEFYVHJlZVNpZGVNZW51SXRlbU1vdmVkRXZlbnQoKTtcbiAgICAgICAgbW92ZWRFdmVudC5zb3VyY2UgPSB0aGlzLm1ha2VOb2RlKHRoaXMuaXRlbURyYWcpO1xuICAgICAgICBtb3ZlZEV2ZW50LnRhcmdldCA9IHRoaXMubWFrZU5vZGUodGhpcy5pdGVtRHJvcCk7XG4gICAgICAgIHRoaXMubG9ja2VkRHJhZyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtRHJhZyk7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRpbmcodGhpcy5pdGVtRHJvcCk7XG4gICAgICAgIG1vdmVkRXZlbnQucmVzb2x2ZSA9ICh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZUxvYWRpbmcodGhpcy5pdGVtRHJhZyk7XG4gICAgICAgICAgdGhpcy5oaWRlTG9hZGluZyh0aGlzLml0ZW1Ecm9wKTtcbiAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BJdGVtKHRoaXMuaXRlbURyYWcsIHRoaXMuaXRlbURyb3ApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvY2tlZERyYWcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25JdGVtTW92ZWQuZW1pdChtb3ZlZEV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgc2FtZUNoaWxkZShwYXJlbnQsIGNoaWxkKSB7XG4gICAgaWYgKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdICYmIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmtleUZpZWxkXSA9PSBjaGlsZFt0aGlzLmtleUZpZWxkXVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnZhbGlkRHJvcCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBwYXJlbnRbdGhpcy5jaGlsZEZpZWxkXVtpbmRleF1bdGhpcy5jaGlsZEZpZWxkXSAmJlxuICAgICAgICAgIHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5zYW1lQ2hpbGRlKHBhcmVudFt0aGlzLmNoaWxkRmllbGRdW2luZGV4XSwgY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwYXJlbnRbdGhpcy5rZXlGaWVsZF0gPT0gY2hpbGRbdGhpcy5rZXlGaWVsZF0pIHtcbiAgICAgIHRoaXMudmFsaWREcm9wID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZHJhZ0Ryb3BJdGVtKGl0ZW1DaGlsZCwgaXRlbVBhcmVudCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbkxldmVsID09ICdub2RlcycpIHtcbiAgICAgIGl0ZW1QYXJlbnQuZGlzYWJsZWRDaGVja0JveCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW1DaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICBpdGVtQ2hpbGQucGFyZW50Tm9kZVt0aGlzLmNoaWxkRmllbGRdID0gaXRlbUNoaWxkLnBhcmVudE5vZGVbXG4gICAgICAgIHRoaXMuY2hpbGRGaWVsZFxuICAgICAgXS5maWx0ZXIoKGMpID0+IGNbdGhpcy5rZXlGaWVsZF0gIT09IGl0ZW1DaGlsZFt0aGlzLmtleUZpZWxkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdCA9IHRoaXMubGlzdC5maWx0ZXIoXG4gICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9PSBpdGVtQ2hpbGRbdGhpcy5rZXlGaWVsZF1cbiAgICAgICk7XG4gICAgfVxuICAgIGl0ZW1DaGlsZC5wYXJlbnROb2RlID0gaXRlbVBhcmVudDtcbiAgICBpZiAoaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdICYmIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXS5sZW5ndGggPiAwKSB7XG4gICAgICBpdGVtUGFyZW50W3RoaXMuY2hpbGRGaWVsZF1baXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aF0gPVxuICAgICAgICBpdGVtQ2hpbGQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1QYXJlbnRbdGhpcy5jaGlsZEZpZWxkXSA9IFtdO1xuICAgICAgaXRlbVBhcmVudFt0aGlzLmNoaWxkRmllbGRdWzBdID0gaXRlbUNoaWxkO1xuICAgICAgaWYgKGl0ZW1QYXJlbnRbdGhpcy5oYXNDaGlsZEZpZWxkXSA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbVBhcmVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtUGFyZW50LnRvZ2dsZSA9ICFpdGVtUGFyZW50LnRvZ2dsZTtcbiAgICAgICAgaXRlbVBhcmVudC5sb2FkZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaXRlbVBhcmVudFt0aGlzLmhhc0NoaWxkRmllbGRdID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGl0ZW1DaGlsZC5wYXJlbnROb2RlICYmIHRoaXMuc2VsZWN0aW9uTW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFyZW50U2VsZWN0KGl0ZW1DaGlsZC5wYXJlbnROb2RlKTtcbiAgICB9XG4gICAgdGhpcy5sb2NrZWREcmFnID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGxpc3RDaGFuZ2UoZmllbGQsIHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGlzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIHRoaXMuY2hhbmdlQ2hpbGVkKHRoaXMubGlzdFtpbmRleF0sIGZpZWxkLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMubG9hZEFsbENoaWxkcmVuID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUNoaWxlZChpdGVtLCBmaWVsZCwgdmFsdWUpIHtcbiAgICBpZiAoXG4gICAgICBmaWVsZCA9PT0gJ3RvZ2dsZScgJiZcbiAgICAgIChpdGVtLmxvYWRlZCA9PT0gZmFsc2UgfHwgaXRlbS5sb2FkZWQgPT09IHVuZGVmaW5lZClcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLmxvYWRBbGxDaGlsZHJlbiA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbSk7XG4gICAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW1bZmllbGRdID0gdmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgIGZpZWxkID09PSAnc2VsZWN0JyAmJlxuICAgICAgICBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IGZhbHNlICYmXG4gICAgICAgIHZhbHVlID09PSB0cnVlXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChmaWVsZCA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgIGl0ZW0uaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBpdGVtW3RoaXMuaGFzQ2hpbGRGaWVsZF0gPT09IHRydWUgJiZcbiAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXSAmJlxuICAgICAgaXRlbVt0aGlzLmNoaWxkRmllbGRdLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIGl0ZW1bdGhpcy5jaGlsZEZpZWxkXS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIHRoaXMuY2hhbmdlQ2hpbGVkKGVsZW1lbnQsIGZpZWxkLCB2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNob3dMb2FkaW5nKGl0ZW0pOiB2b2lkIHtcbiAgICBpdGVtLmxvYWRpbmcgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlTG9hZGluZyhpdGVtKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0gIT0gbnVsbCkge1xuICAgICAgaXRlbS5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW5BbGwobG9hZEFsbDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgLy8gaWYgKGxvYWRBbGwpIHtcbiAgICAvLyB0aGlzLmxvYWRBbGxDaGlsZHJlbiA9IHRydWU7XG4gICAgLy8gdGhpcy5saXN0Q2hhbmdlKCd0b2dnbGUnLCB0cnVlKTtcbiAgICAvL30gZWxzZSB7XG4gICAgdGhpcy5saXN0Q2hhbmdlKCd0b2dnbGUnLCB0cnVlKTtcbiAgICAvLyB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0SXRlbShpdGVtKSB7XG4gICAgaWYgKGl0ZW1bJ3NlbGVjdCddICE9IHRydWUpIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxTZWxlY3RJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb3BlbihpdGVtKSB7XG4gICAgaWYgKGl0ZW1bJ3RvZ2dsZSddICE9PSB0cnVlKSB7XG4gICAgICB0aGlzLnRvZ2dsZU5vZGUoaXRlbSwgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNjcm9sSW50b1ZpZXcoaXRlbSkge1xuICAgIGxldCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGBsaVtkYXRhLWlkPScke2l0ZW1bdGhpcy5rZXlGaWVsZF19J11gXG4gICAgKTtcbiAgICBlbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VBbGwoKSB7XG4gICAgdGhpcy5saXN0Q2hhbmdlKCd0b2dnbGUnLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsKCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLmxpc3RDaGFuZ2UoJ3NlbGVjdCcsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1blNlbGVjdEFsbCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5saXN0Q2hhbmdlKCdzZWxlY3QnLCBmYWxzZSk7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkTm9kZXMoKTogQVhUcmVlU2lkZU1lbnVOb2RlW10ge1xuICAgIGNvbnN0IHNlbGVjdEl0ZW1zTm9kZSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBzZWxlY3RJdGVtc05vZGUucHVzaCh0aGlzLm1ha2VOb2RlKGUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0SXRlbXNOb2RlO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkUGFyZW50cygpOiBBWFRyZWVTaWRlTWVudU5vZGVbXSB7XG4gICAgY29uc3Qgc2VsZWN0SXRlbXNQYXJlbnQgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUGFyZW50cy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBzZWxlY3RJdGVtc1BhcmVudC5wdXNoKHRoaXMubWFrZU5vZGUoZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RJdGVtc1BhcmVudDtcbiAgfVxuXG4gIGdldFBhcmVudHNJZChpdGVtKSB7XG4gICAgbGV0IGtleUZpZWxkcyA9IFtdO1xuICAgIGtleUZpZWxkcy5wdXNoKGl0ZW1bdGhpcy5rZXlGaWVsZF0pO1xuICAgIGlmIChpdGVtLnBhcmVudE5vZGUpIHtcbiAgICAgIGtleUZpZWxkcy5wdXNoKC4uLnRoaXMuZ2V0UGFyZW50c0lkKGl0ZW0ucGFyZW50Tm9kZSkpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5RmllbGRzO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkS2V5RmllbGRzKCkge1xuICAgIGxldCBrZXlGaWVsZHMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZm9yRWFjaCgoZWxtKSA9PiB7XG4gICAgICB2YXIgSWRzID0gdGhpcy5nZXRQYXJlbnRzSWQoZWxtKTtcbiAgICAgIGlmIChJZHMpIHtcbiAgICAgICAga2V5RmllbGRzLnB1c2goSWRzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ga2V5RmllbGRzO1xuICB9XG59XG4iLCI8dWwgY2xhc3M9XCJheC10cmVlLXNpZGUtbWVudSB7e3NpemV9fSB7e2Nzc0NsYXNzfX1cIj5cbiAgPG5nLXRlbXBsYXRlICNyZWN1cnNpdmVMaXN0IGxldC1saXN0PlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdFwiPlxuICAgICAgPGxpIChjbGljayk9XCJoYW5kbGVPbk5vZGVDbGljaygkZXZlbnQsaXRlbSx0cnVlKVwiXG4gICAgICAgIGNsYXNzPVwie3tpdGVtW2hhc0NoaWxkRmllbGRdID8gJyc6J25vZGUnfX0ge3shIWl0ZW0udG9nZ2xlICA/ICdhY3RpdmUnOicnfX1cIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCJcbiAgICAgICAgW2NsYXNzLnNlbGVjdGVkXT1cIml0ZW0uc2VsZWN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJheC10cmVlLXNpZGUtbWVudS1pdGVtXCIgKGNsaWNrKT1cImhhbmRsZU9uTm9kZUNsaWNrKCRldmVudCxpdGVtLHRydWUpXCI+XG5cbiAgICAgICAgXG5cbiAgICAgICAgICA8ZGl2IChjbGljayk9XCJoYW5kbGVPbk5vZGVDbGljaygkZXZlbnQsaXRlbSx0cnVlKVwiIChkYmxjbGljayk9XCJpdGVtZGJDbGljaygkZXZlbnQsaXRlbSlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJub2RlVGVtcGxhdGU7IGVsc2UgZWxzZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub2RlVGVtcGxhdGU7IGNvbnRleHQ6eyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Vsc2VUZW1wbGF0ZT5cbiAgICAgICAgICAgICAge3tpdGVtW3RleHRGaWVsZF19fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFydC1zaWRlXCIgKm5nSWY9XCJpY29uU3RhcnRcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtW2hhc0NoaWxkRmllbGRdXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tvcGVuSWNvbk5hbWV9fVwiICpuZ0lmPVwiICEhaXRlbS50b2dnbGUgJiYgIWl0ZW0ubG9hZGluZ1wiPjwvaT5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2Nsb3NlSWNvbk5hbWV9fVwiICpuZ0lmPVwiIWl0ZW0udG9nZ2xlICYmICFpdGVtLmxvYWRpbmdcIj48L2k+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLXNwaW5uZXIgZmEtc3BpblwiICpuZ0lmPVwiaXRlbS5sb2FkaW5nXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhcnQtc2lkZVwiICpuZ0lmPVwiIWljb25TdGFydFwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW1baGFzQ2hpbGRGaWVsZF1cIiAoY2xpY2spPVwiaGFuZGxlT25Ob2RlQ2xpY2soJGV2ZW50LGl0ZW0sdHJ1ZSlcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e29wZW5JY29uTmFtZX19XCIgKm5nSWY9XCIgISFpdGVtLnRvZ2dsZSAmJiAhaXRlbS5sb2FkaW5nXCI+PC9pPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7Y2xvc2VJY29uTmFtZX19XCIgKm5nSWY9XCIhaXRlbS50b2dnbGUgJiYgIWl0ZW0ubG9hZGluZ1wiPjwvaT5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtc3Bpbm5lciBmYS1zcGluXCIgKm5nSWY9XCJpdGVtLmxvYWRpbmdcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx1bCBjbGFzcz1cImF4LXRyZWUtc2lkZS1tZW51LWNoaWxkXCIgKm5nSWY9XCJpdGVtLnRvZ2dsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWN1cnNpdmVMaXN0OyBjb250ZXh0OnsgJGltcGxpY2l0OiBpdGVtLmNoaWxkZXJlbiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2xpPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLXRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVjdXJzaXZlTGlzdDsgY29udGV4dDp7ICRpbXBsaWNpdDogbGlzdCB9XCI+PC9uZy1jb250YWluZXI+XG48L3VsPiJdfQ==
|