@acorex/components 6.5.29 → 6.5.31
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 +3 -3
- package/acorex-components.d.ts +5 -5
- package/esm2020/acorex-components.mjs +4 -4
- package/esm2020/lib/accordion/accordion.component.mjs +44 -44
- package/esm2020/lib/accordion/accordion.module.mjs +20 -20
- package/esm2020/lib/base/base-page.class.mjs +94 -94
- package/esm2020/lib/base/components.class.mjs +17 -17
- package/esm2020/lib/base/element.class.mjs +294 -294
- package/esm2020/lib/base/events.class.mjs +11 -11
- package/esm2020/lib/button/button.component.mjs +71 -71
- package/esm2020/lib/button/button.module.mjs +21 -21
- package/esm2020/lib/calendar/calendar-box/calendar-box.component.mjs +413 -413
- package/esm2020/lib/calendar/calendar-box/calendar-box.module.mjs +22 -22
- package/esm2020/lib/calendar/scheduler/scheduler-views.property.mjs +54 -54
- package/esm2020/lib/calendar/scheduler/scheduler.class.mjs +18 -18
- package/esm2020/lib/calendar/scheduler/scheduler.component.mjs +213 -213
- package/esm2020/lib/calendar/scheduler/scheduler.module.mjs +68 -68
- package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.mjs +132 -132
- package/esm2020/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.mjs +37 -37
- package/esm2020/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.mjs +47 -47
- package/esm2020/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.mjs +95 -95
- package/esm2020/lib/calendar/scheduler/views/month/scheduler-month-view.component.mjs +204 -204
- package/esm2020/lib/calendar/scheduler/views/scheduler-view.component.mjs +99 -99
- package/esm2020/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.mjs +77 -77
- package/esm2020/lib/checkbox/checkbox.component.mjs +98 -98
- package/esm2020/lib/checkbox/checkbox.module.mjs +20 -20
- package/esm2020/lib/color-picker/color-box/color-box.component.mjs +422 -422
- package/esm2020/lib/color-picker/color-picker.component.mjs +82 -82
- package/esm2020/lib/color-picker/color-picker.module.mjs +24 -24
- package/esm2020/lib/context-menu/context-menu.component.mjs +65 -65
- package/esm2020/lib/context-menu/context-menu.directive.mjs +135 -135
- package/esm2020/lib/context-menu/context-menu.module.mjs +20 -20
- package/esm2020/lib/data-filter/columns/filter-column-date.component.mjs +138 -138
- package/esm2020/lib/data-filter/columns/filter-column-number.component.mjs +117 -117
- package/esm2020/lib/data-filter/columns/filter-column-selection.component.mjs +74 -74
- package/esm2020/lib/data-filter/columns/filter-column-string.component.mjs +117 -117
- package/esm2020/lib/data-filter/filter-panel/filter-panel.component.mjs +258 -258
- package/esm2020/lib/data-filter/filter.class.mjs +44 -44
- package/esm2020/lib/data-filter/filter.module.mjs +90 -90
- package/esm2020/lib/data-filter/toolbar/filter-toolbar.component.mjs +166 -166
- package/esm2020/lib/data-list/core/data-list.component.mjs +40 -40
- package/esm2020/lib/data-list/list/list.component.mjs +124 -124
- package/esm2020/lib/data-list/list/list.module.mjs +22 -22
- package/esm2020/lib/data-list/list/toolbar-list-view.component.mjs +85 -85
- package/esm2020/lib/data-source/datasource.component.mjs +47 -47
- package/esm2020/lib/data-source/datasource.module.mjs +18 -18
- package/esm2020/lib/data-source/read-param.mjs +5 -5
- package/esm2020/lib/date-picker/date-picker.component.mjs +702 -702
- package/esm2020/lib/date-picker/date-picker.module.mjs +25 -25
- package/esm2020/lib/dialog/dialog.component.mjs +24 -24
- package/esm2020/lib/dialog/dialog.module.mjs +21 -21
- package/esm2020/lib/dialog/dialog.service.mjs +150 -150
- package/esm2020/lib/drawer/content.component.mjs +18 -18
- package/esm2020/lib/drawer/drawer-container.component.mjs +36 -36
- package/esm2020/lib/drawer/drawer.component.mjs +142 -142
- package/esm2020/lib/drawer/drawer.module.mjs +23 -23
- package/esm2020/lib/dropdown/dropdown.component.mjs +176 -176
- package/esm2020/lib/dropdown/dropdown.module.mjs +26 -26
- package/esm2020/lib/fieldset/fieldset.component.mjs +59 -59
- package/esm2020/lib/fieldset/fieldset.module.mjs +19 -19
- package/esm2020/lib/form-group/form-group.component.mjs +34 -34
- package/esm2020/lib/form-group/form-group.module.mjs +21 -21
- package/esm2020/lib/label/label.component.mjs +19 -19
- package/esm2020/lib/label/label.module.mjs +21 -21
- package/esm2020/lib/loading/loading-indicator.component.mjs +17 -17
- package/esm2020/lib/loading/loading-panel.component.mjs +44 -44
- package/esm2020/lib/loading/loading.module.mjs +21 -21
- package/esm2020/lib/loading/loading.service.mjs +45 -45
- package/esm2020/lib/menu/menu-item.component.mjs +47 -47
- package/esm2020/lib/menu/menu.component.mjs +86 -86
- package/esm2020/lib/menu/menu.module.mjs +22 -22
- package/esm2020/lib/menu/menu2.component.mjs +96 -96
- package/esm2020/lib/number-box/number-box.component.mjs +622 -622
- package/esm2020/lib/number-box/number-box.module.mjs +21 -21
- package/esm2020/lib/page/content.component.mjs +32 -32
- package/esm2020/lib/page/footer.component.mjs +19 -19
- package/esm2020/lib/page/page.component.mjs +53 -53
- package/esm2020/lib/page/page.module.mjs +22 -22
- package/esm2020/lib/panel-box/panel-box.component.mjs +88 -88
- package/esm2020/lib/panel-box/panel-box.module.mjs +19 -19
- package/esm2020/lib/password-box/password-box.component.mjs +31 -31
- package/esm2020/lib/password-box/password-box.module.mjs +23 -23
- package/esm2020/lib/popover/custom-cdk-overlay.service.mjs +48 -48
- package/esm2020/lib/popover/overlay.service.mjs +90 -90
- package/esm2020/lib/popover/popover.component.mjs +127 -127
- package/esm2020/lib/popover/popover.module.mjs +19 -19
- package/esm2020/lib/popup/popup.component.mjs +147 -147
- package/esm2020/lib/popup/popup.module.mjs +25 -25
- package/esm2020/lib/popup/popup.service.mjs +93 -93
- package/esm2020/lib/progress-bar/progress-bar.component.mjs +19 -19
- package/esm2020/lib/progress-bar/progress-bar.module.mjs +19 -19
- package/esm2020/lib/property-editor/editors/check-editor/check-editor.mjs +61 -61
- package/esm2020/lib/property-editor/editors/check-editor/check.module.mjs +22 -22
- package/esm2020/lib/property-editor/editors/color-editor/color.editor.mjs +38 -38
- package/esm2020/lib/property-editor/editors/color-editor/color.module.mjs +24 -24
- package/esm2020/lib/property-editor/editors/column-editor/column.editor.mjs +115 -115
- package/esm2020/lib/property-editor/editors/column-editor/column.module.mjs +32 -32
- package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.mjs +211 -211
- package/esm2020/lib/property-editor/editors/conditional-color-editor/conditional-color.module.mjs +78 -78
- package/esm2020/lib/property-editor/editors/date-editor/date.editor.mjs +51 -51
- package/esm2020/lib/property-editor/editors/date-editor/date.module.mjs +24 -24
- package/esm2020/lib/property-editor/editors/number-editor/number.editor.mjs +63 -63
- package/esm2020/lib/property-editor/editors/number-editor/number.module.mjs +24 -24
- package/esm2020/lib/property-editor/editors/range-editor/range.editor.mjs +140 -140
- package/esm2020/lib/property-editor/editors/range-editor/range.module.mjs +61 -61
- package/esm2020/lib/property-editor/editors/searchbar-selectbox-editor/searchbar-selectbox-editor.mjs +72 -72
- package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.editor.mjs +71 -71
- package/esm2020/lib/property-editor/editors/selectbox-editor/selectbox.module.mjs +25 -25
- package/esm2020/lib/property-editor/editors/selection-editor/selection-editor.mjs +69 -69
- package/esm2020/lib/property-editor/editors/selection-editor/selection.module.mjs +22 -22
- package/esm2020/lib/property-editor/editors/switch-editor/number.editor.mjs +29 -29
- package/esm2020/lib/property-editor/editors/switch-editor/number.module.mjs +25 -25
- package/esm2020/lib/property-editor/editors/text-editor/text.editor.mjs +32 -32
- package/esm2020/lib/property-editor/editors/text-editor/text.module.mjs +24 -24
- package/esm2020/lib/property-editor/editors/textarea-editor/textarea.editor.mjs +32 -32
- package/esm2020/lib/property-editor/editors/textarea-editor/textarea.module.mjs +24 -24
- package/esm2020/lib/property-editor/editors/time-editor/time.editor.mjs +43 -43
- package/esm2020/lib/property-editor/editors/time-editor/time.module.mjs +24 -24
- package/esm2020/lib/property-editor/property-editor-renderer.directive.mjs +154 -154
- package/esm2020/lib/property-editor/property-editor.class.mjs +101 -101
- package/esm2020/lib/property-editor/property-editor.module.mjs +196 -196
- package/esm2020/lib/query-builder/query-builder-group.component.mjs +124 -124
- package/esm2020/lib/query-builder/query-builder-popup/query-builder-popup.component.mjs +171 -171
- package/esm2020/lib/query-builder/query-builder-rule.component.mjs +395 -395
- package/esm2020/lib/query-builder/query-builder.class.mjs +20 -20
- package/esm2020/lib/query-builder/query-builder.component.mjs +82 -82
- package/esm2020/lib/query-builder/query-builder.module.mjs +62 -62
- package/esm2020/lib/query-builder/query-builder.service.mjs +197 -197
- package/esm2020/lib/search-bar/search-bar.component.mjs +283 -283
- package/esm2020/lib/search-bar/search-bar.module.mjs +63 -63
- package/esm2020/lib/searchbox/searchbox.component.mjs +79 -79
- package/esm2020/lib/searchbox/searchbox.module.mjs +24 -24
- package/esm2020/lib/selectbox/selectbox.component.mjs +961 -961
- package/esm2020/lib/selectbox/selectbox.module.mjs +44 -44
- package/esm2020/lib/selectbox/selectbox2.component.mjs +574 -574
- package/esm2020/lib/selection-list/selection-list.component.mjs +108 -108
- package/esm2020/lib/selection-list/selection-list.module.mjs +21 -21
- package/esm2020/lib/switch/switch.component.mjs +51 -51
- package/esm2020/lib/switch/switch.module.mjs +20 -20
- package/esm2020/lib/tab-page/tab-page-Renderer.component.mjs +71 -71
- package/esm2020/lib/tab-page/tab-page-host.component.mjs +116 -116
- package/esm2020/lib/tab-page/tab-page.module.mjs +21 -21
- package/esm2020/lib/tab-page/tab-page.service.mjs +156 -156
- package/esm2020/lib/tab-strip/tab-strip.component.mjs +36 -36
- package/esm2020/lib/tab-strip/tab-strip.module.mjs +19 -19
- package/esm2020/lib/tab-view/dynamic-tabs.directive.mjs +24 -24
- package/esm2020/lib/tab-view/tab-view.component.mjs +105 -105
- package/esm2020/lib/tab-view/tab-view.module.mjs +21 -21
- package/esm2020/lib/tab-view/tab.component.mjs +30 -30
- package/esm2020/lib/textarea/textarea.component.mjs +26 -26
- package/esm2020/lib/textarea/textarea.module.mjs +21 -21
- package/esm2020/lib/textbox/textbox.component.mjs +39 -39
- package/esm2020/lib/textbox/textbox.module.mjs +24 -24
- package/esm2020/lib/time-picker/time-picker.component.mjs +943 -943
- package/esm2020/lib/time-picker/time-picker.module.mjs +22 -22
- package/esm2020/lib/toast/toast-message/toast-message.component.mjs +74 -74
- package/esm2020/lib/toast/toast-wrapper/toast-wrapper.component.mjs +13 -13
- package/esm2020/lib/toast/toast.module.mjs +21 -21
- package/esm2020/lib/toast/toast.service.mjs +44 -44
- package/esm2020/lib/toolbar/group-button/toolbar-group-button.component.mjs +78 -78
- package/esm2020/lib/toolbar/menu/toolbar-menu.component.mjs +57 -57
- package/esm2020/lib/toolbar/search/toolbar-search.component.mjs +54 -54
- package/esm2020/lib/toolbar/title/toolbar-title.component.mjs +47 -47
- package/esm2020/lib/toolbar/toolbar-item.mjs +6 -6
- package/esm2020/lib/toolbar/toolbar.component.mjs +13 -13
- package/esm2020/lib/toolbar/toolbar.module.mjs +40 -40
- package/esm2020/lib/tooltip/tooltip.directive.mjs +100 -100
- package/esm2020/lib/tooltip/tooltip.module.mjs +19 -19
- package/esm2020/lib/tree-side-menu/tree-side-menu.component.mjs +646 -646
- package/esm2020/lib/tree-side-menu/tree-side-menu.module.mjs +35 -35
- package/esm2020/lib/tree-view/tree-view.component.mjs +775 -775
- package/esm2020/lib/tree-view/tree-view.module.mjs +22 -22
- package/esm2020/lib/upload-file/upload-file.component.mjs +208 -208
- package/esm2020/lib/upload-file/upload-file.events.mjs +2 -2
- package/esm2020/lib/upload-file/upload-file.module.mjs +24 -24
- package/esm2020/lib/validation/validation-form.component.mjs +65 -65
- package/esm2020/lib/validation/validation-rule.widget.mjs +111 -111
- package/esm2020/lib/validation/validation.class.mjs +2 -2
- package/esm2020/lib/validation/validation.component.mjs +89 -89
- package/esm2020/lib/validation/validation.module.mjs +34 -34
- package/esm2020/public-api.mjs +158 -158
- package/fesm2015/acorex-components.mjs +15616 -15616
- package/fesm2015/acorex-components.mjs.map +1 -1
- package/fesm2020/acorex-components.mjs +15552 -15552
- package/fesm2020/acorex-components.mjs.map +1 -1
- 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 +31 -31
- package/lib/popover/popover.component.d.ts +34 -34
- 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 +20 -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 +30 -30
- package/lib/property-editor/property-editor.class.d.ts +92 -92
- 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 +27 -27
- 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 +61 -61
- package/lib/search-bar/search-bar.module.d.ts +18 -18
- package/lib/searchbox/searchbox.component.d.ts +22 -22
- package/lib/searchbox/searchbox.module.d.ts +13 -13
- package/lib/selectbox/selectbox.component.d.ts +118 -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 +25 -25
- 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 +52 -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 +1 -1
- package/public-api.d.ts +155 -155
@@ -1,283 +1,283 @@
|
|
1
|
-
import { AXConfig, AXDateTime } from '@acorex/core';
|
2
|
-
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';
|
3
|
-
import * as _ from 'lodash';
|
4
|
-
import { AXPopoverComponent } from '../popover/popover.component';
|
5
|
-
import { AXPropertyEditorRendererDirective } from '../property-editor/property-editor-renderer.directive';
|
6
|
-
import { AXValidationFormComponent } from '../validation/validation-form.component';
|
7
|
-
import * as i0 from "@angular/core";
|
8
|
-
import * as i1 from "../button/button.component";
|
9
|
-
import * as i2 from "../popover/popover.component";
|
10
|
-
import * as i3 from "../validation/validation-form.component";
|
11
|
-
import * as i4 from "../label/label.component";
|
12
|
-
import * as i5 from "@angular/common";
|
13
|
-
import * as i6 from "../property-editor/property-editor-renderer.directive";
|
14
|
-
import * as i7 from "@acorex/core";
|
15
|
-
export class AXSearchBarComponent {
|
16
|
-
constructor(cdr, ref) {
|
17
|
-
this.cdr = cdr;
|
18
|
-
this.ref = ref;
|
19
|
-
this.sizeButton = 'md';
|
20
|
-
this.size = 'sm';
|
21
|
-
this.disabled = false;
|
22
|
-
this.fitParent = false;
|
23
|
-
this.popoverWidth = '65vw';
|
24
|
-
this.rtl = AXConfig.get('layout.rtl');
|
25
|
-
this.loadOnInit = false;
|
26
|
-
this.block = false;
|
27
|
-
this.onValueChange = new EventEmitter();
|
28
|
-
this.onSearchValue = new EventEmitter();
|
29
|
-
this._items = [];
|
30
|
-
this._filterItems = [];
|
31
|
-
this._filterItemsClone = [];
|
32
|
-
this._defultValueCount = [];
|
33
|
-
this._context = {};
|
34
|
-
this._isEmitted = false;
|
35
|
-
}
|
36
|
-
set items(v) {
|
37
|
-
this._defultValueCount = v.filter((x) => x.value);
|
38
|
-
v.forEach((el) => {
|
39
|
-
el.property.uniqueNumber = Math.random();
|
40
|
-
if (el.value != null) {
|
41
|
-
this._filterItems.push({
|
42
|
-
name: el.property.name,
|
43
|
-
title: el.property.title,
|
44
|
-
textValue: this._handleTextValue(el),
|
45
|
-
value: el.value ? this._handleDefultVlaue(el) : null,
|
46
|
-
component: el
|
47
|
-
});
|
48
|
-
}
|
49
|
-
});
|
50
|
-
this._items = _.chain(v)
|
51
|
-
.groupBy((x) => x.property.row)
|
52
|
-
.map((value, key) => ({ row: key, items: value }))
|
53
|
-
.value();
|
54
|
-
}
|
55
|
-
clearItem(name) {
|
56
|
-
this._editors.find((x) => x.property.property.name === name).clear();
|
57
|
-
}
|
58
|
-
ngOnInit() {
|
59
|
-
if (this.rtl == null) {
|
60
|
-
this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';
|
61
|
-
}
|
62
|
-
}
|
63
|
-
refresh() {
|
64
|
-
this.loadOnInit = true;
|
65
|
-
this._defultValueCount = [];
|
66
|
-
this._filterItems = [];
|
67
|
-
this._filterItemsClone = [];
|
68
|
-
this.items = this._items[0].items;
|
69
|
-
this.form.widgets = [];
|
70
|
-
this.form.widgetsQuery.forEach((el) => {
|
71
|
-
this.form.widgets.push(el);
|
72
|
-
});
|
73
|
-
this.cdr.detectChanges();
|
74
|
-
}
|
75
|
-
handleButtonClick() {
|
76
|
-
this.searchPopover.open();
|
77
|
-
}
|
78
|
-
async handleValueChange(e) {
|
79
|
-
await this._handleInitVlaue(e);
|
80
|
-
this.onValueChange.emit(e);
|
81
|
-
}
|
82
|
-
handleItemRemoveClick(item) {
|
83
|
-
this._editors.forEach((e) => {
|
84
|
-
if (e.property.property.name == item.name) {
|
85
|
-
e.clear();
|
86
|
-
}
|
87
|
-
});
|
88
|
-
this._filterItems = this._filterItems.filter((el) => el.name != item.name);
|
89
|
-
}
|
90
|
-
search() {
|
91
|
-
this.form.validate().then((c) => {
|
92
|
-
if (c.result) {
|
93
|
-
this._filterItems = JSON.parse(JSON.stringify(this._filterItemsClone.filter((el) => el.value === 0 || el.value != null && el.value != '')));
|
94
|
-
this._searchCount = this._filterItems.filter((x) => x.component.property.visible != false).length;
|
95
|
-
this.searchPopover.close();
|
96
|
-
this.onSearchValue.emit(this._filterItems);
|
97
|
-
}
|
98
|
-
});
|
99
|
-
}
|
100
|
-
clear() {
|
101
|
-
this._editors.forEach((e) => {
|
102
|
-
e.clear();
|
103
|
-
});
|
104
|
-
this._filterItems = [];
|
105
|
-
this._filterItemsClone = [];
|
106
|
-
this.searchPopover.close();
|
107
|
-
this._searchCount = null;
|
108
|
-
this.onSearchValue.emit(this._filterItems);
|
109
|
-
}
|
110
|
-
renderCol(e) {
|
111
|
-
let className = [];
|
112
|
-
if (typeof e == 'number') {
|
113
|
-
className.push(`col-${e}`);
|
114
|
-
}
|
115
|
-
else {
|
116
|
-
for (const key in e) {
|
117
|
-
switch (key) {
|
118
|
-
case 'lg':
|
119
|
-
className.push(`col-lg-${e[key]}`);
|
120
|
-
break;
|
121
|
-
case 'md':
|
122
|
-
className.push(`col-md-${e[key]}`);
|
123
|
-
break;
|
124
|
-
case 'sm':
|
125
|
-
className.push(`col-sm-${e[key]}`);
|
126
|
-
break;
|
127
|
-
case 'xs':
|
128
|
-
className.push(`col-xs-${e[key]}`);
|
129
|
-
break;
|
130
|
-
}
|
131
|
-
}
|
132
|
-
}
|
133
|
-
return className.toString().replace(/,/g, ' ');
|
134
|
-
}
|
135
|
-
_handleShowTitleSelected(item) {
|
136
|
-
if (item.title) {
|
137
|
-
return item.title + ':';
|
138
|
-
}
|
139
|
-
}
|
140
|
-
_handleShowValueSelected(item) {
|
141
|
-
if (item.component.property.editorClass === 'ax/editors/check') {
|
142
|
-
return item.component.property.editorOptions.label;
|
143
|
-
}
|
144
|
-
else {
|
145
|
-
return item.textValue;
|
146
|
-
}
|
147
|
-
}
|
148
|
-
_handleTextValue(dataItem) {
|
149
|
-
let text = '';
|
150
|
-
if (Array.isArray(dataItem.value)) {
|
151
|
-
if (dataItem.value.length) {
|
152
|
-
dataItem.value.forEach((element, index) => {
|
153
|
-
text +=
|
154
|
-
index === dataItem.value.length - 1
|
155
|
-
? element[dataItem.property.editorOptions.textField]
|
156
|
-
: element[dataItem.property.editorOptions.textField] + ',';
|
157
|
-
});
|
158
|
-
}
|
159
|
-
return text;
|
160
|
-
}
|
161
|
-
else if (dataItem.property.editorClass === 'ax/editors/date') {
|
162
|
-
if (dataItem.value) {
|
163
|
-
return new AXDateTime(dataItem.value, 'jalali').format('yyyy/MM/DD');
|
164
|
-
}
|
165
|
-
else {
|
166
|
-
return;
|
167
|
-
}
|
168
|
-
}
|
169
|
-
else {
|
170
|
-
return;
|
171
|
-
}
|
172
|
-
}
|
173
|
-
async _handleDefultVlaue(dataItem) {
|
174
|
-
await this._handleInitVlaue(dataItem);
|
175
|
-
this._filterItems = JSON.parse(JSON.stringify(this._filterItemsClone.filter((el) => el.value === 0 || el.value != null && el.value != '')));
|
176
|
-
if (this._filterItems.length === this._defultValueCount.length && this.loadOnInit && !this._isEmitted) {
|
177
|
-
this._isEmitted = true;
|
178
|
-
this._searchCount = this._filterItems.filter((x) => x.component.property.visible != false).length;
|
179
|
-
setTimeout(() => {
|
180
|
-
this.onSearchValue.emit(this._filterItems);
|
181
|
-
});
|
182
|
-
}
|
183
|
-
}
|
184
|
-
async _handleInitVlaue(e) {
|
185
|
-
let value = [];
|
186
|
-
let text = [];
|
187
|
-
if (e.property.editorOptions?.valueField && e.value != null) {
|
188
|
-
if (e.property.editorOptions.returnAllData) {
|
189
|
-
value = e.value;
|
190
|
-
text = await this._handleTextValue(e);
|
191
|
-
}
|
192
|
-
else if (e.property.editorOptions?.mode == 'multiple') {
|
193
|
-
e.value.forEach((element) => {
|
194
|
-
value.push(element[e.property.editorOptions.valueField]);
|
195
|
-
text.push(element[e.property.editorOptions.textField]);
|
196
|
-
});
|
197
|
-
}
|
198
|
-
else {
|
199
|
-
if (e.value.length) {
|
200
|
-
value = e.value[0][e.property.editorOptions.valueField];
|
201
|
-
text = e.value[0][e.property.editorOptions.textField];
|
202
|
-
}
|
203
|
-
}
|
204
|
-
}
|
205
|
-
else {
|
206
|
-
value = e.value;
|
207
|
-
text = e.value;
|
208
|
-
}
|
209
|
-
const findEl = this._filterItemsClone.find((el) => el.uniqueNumber == e.property.uniqueNumber);
|
210
|
-
if (findEl) {
|
211
|
-
findEl.value = value;
|
212
|
-
findEl.textValue = e.property.editorClass === 'ax/editors/date' ? new AXDateTime(text, 'jalali').format('yyyy/MM/DD') : text;
|
213
|
-
}
|
214
|
-
else if (e.value != null) {
|
215
|
-
this._filterItemsClone.push({
|
216
|
-
name: e.property.name,
|
217
|
-
title: e.property.title,
|
218
|
-
uniqueNumber: e.property.uniqueNumber,
|
219
|
-
value,
|
220
|
-
textValue: e.property.editorClass === 'ax/editors/date' ? new AXDateTime(text, 'jalali').format('yyyy/MM/DD') : text,
|
221
|
-
component: e,
|
222
|
-
filterOptions: {
|
223
|
-
filters: e.property?.filterOptions?.filters ? e.property.filterOptions.filters : [],
|
224
|
-
logic: e.property?.filterOptions?.logic ? e.property.filterOptions.logic : 'and',
|
225
|
-
ignoreCase: e.property?.filterOptions?.ignoreCase ? e.property.filterOptions.ignoreCase : true,
|
226
|
-
joinType: e.property?.filterOptions?.joinType ? e.property.filterOptions.joinType : 'INNER',
|
227
|
-
operator: e.property?.filterOptions?.operator ? e.property.filterOptions.operator : null,
|
228
|
-
truncateDate: e.property?.filterOptions?.truncateDate ? e.property.filterOptions.truncateDate : true
|
229
|
-
}
|
230
|
-
});
|
231
|
-
}
|
232
|
-
}
|
233
|
-
open() {
|
234
|
-
setTimeout(() => {
|
235
|
-
this.searchPopover.open();
|
236
|
-
this.cdr.detectChanges();
|
237
|
-
this.cdr.markForCheck();
|
238
|
-
}, 100);
|
239
|
-
}
|
240
|
-
close() {
|
241
|
-
this.searchPopover.close();
|
242
|
-
}
|
243
|
-
}
|
244
|
-
AXSearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXSearchBarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
245
|
-
AXSearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXSearchBarComponent, selector: "ax-search-bar", inputs: { sizeButton: "sizeButton", size: "size", disabled: "disabled", fitParent: "fitParent", popoverWidth: "popoverWidth", rtl: "rtl", loadOnInit: "loadOnInit", caption: "caption", block: "block", items: "items" }, outputs: { onValueChange: "onValueChange", onSearchValue: "onSearchValue" }, viewQueries: [{ propertyName: "searchPopover", first: true, predicate: ["searchPop"], descendants: true }, { propertyName: "form", first: true, predicate: AXValidationFormComponent, descendants: true }, { propertyName: "_editors", predicate: AXPropertyEditorRendererDirective, descendants: true }], ngImport: i0, template: "<ax-button [block]=\"block\" end icon=\"far fa-sliders-h icon\" [selected]=\"_searchCount? true:false\"\
|
246
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXSearchBarComponent, decorators: [{
|
247
|
-
type: Component,
|
248
|
-
args: [{ selector: 'ax-search-bar', template: "<ax-button [block]=\"block\" end icon=\"far fa-sliders-h icon\" [selected]=\"_searchCount? true:false\"\
|
249
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { searchPopover: [{
|
250
|
-
type: ViewChild,
|
251
|
-
args: ['searchPop']
|
252
|
-
}], _editors: [{
|
253
|
-
type: ViewChildren,
|
254
|
-
args: [AXPropertyEditorRendererDirective]
|
255
|
-
}], form: [{
|
256
|
-
type: ViewChild,
|
257
|
-
args: [AXValidationFormComponent]
|
258
|
-
}], sizeButton: [{
|
259
|
-
type: Input
|
260
|
-
}], size: [{
|
261
|
-
type: Input
|
262
|
-
}], disabled: [{
|
263
|
-
type: Input
|
264
|
-
}], fitParent: [{
|
265
|
-
type: Input
|
266
|
-
}], popoverWidth: [{
|
267
|
-
type: Input
|
268
|
-
}], rtl: [{
|
269
|
-
type: Input
|
270
|
-
}], loadOnInit: [{
|
271
|
-
type: Input
|
272
|
-
}], caption: [{
|
273
|
-
type: Input
|
274
|
-
}], block: [{
|
275
|
-
type: Input
|
276
|
-
}], items: [{
|
277
|
-
type: Input
|
278
|
-
}], onValueChange: [{
|
279
|
-
type: Output
|
280
|
-
}], onSearchValue: [{
|
281
|
-
type: Output
|
282
|
-
}] } });
|
283
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUUxRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7O0FBaUJwRixNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLEdBQXNCLEVBQVMsR0FBK0I7UUFBOUQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUE0QjtRQU9sRixlQUFVLEdBQWtCLElBQUksQ0FBQztRQUdqQyxTQUFJLEdBQWdDLElBQUksQ0FBQztRQUd6QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsaUJBQVksR0FBVyxNQUFNLENBQUM7UUFHOUIsUUFBRyxHQUFZLFFBQVEsQ0FBQyxHQUFH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c0JBREgsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSUssS0FBSztzQkFEZixLQUFLO2dCQXNCTixhQUFhO3NCQURaLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb25maWcsIEFYRGF0ZVRpbWUgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkLCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBBWEVsZW1lbnRTaXplIH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcclxuaW1wb3J0IHsgQVhQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFYUHJvcGVydHlFZGl0b3JSZW5kZXJlckRpcmVjdGl2ZSB9IGZyb20gJy4uL3Byb3BlcnR5LWVkaXRvci9wcm9wZXJ0eS1lZGl0b3ItcmVuZGVyZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgQVhQcm9wZXJ0eUNvbERlZiwgQVhQcm9wZXJ0eUNvbmZpZywgQVhQcm9wZXJ5RWRpdG9yVmFsdWVDaGFuZ2VFdmVudCwgRmlsdGVyTW9kZWwgfSBmcm9tICcuLi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktZWRpdG9yLmNsYXNzJztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL3ZhbGlkYXRpb24vdmFsaWRhdGlvbi1mb3JtLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclRleHRJdGVtc01vZGVsIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICB2YWx1ZTogYW55O1xyXG4gIHRleHRWYWx1ZTogc3RyaW5nO1xyXG4gIGZpbHRlck9wdGlvbnM/OiBGaWx0ZXJNb2RlbDtcclxuICBjb21wb25lbnQ6IEFYUHJvcGVydHlDb25maWc7XHJcbiAgdW5pcXVlTnVtYmVyPzogbnVtYmVyO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LXNlYXJjaC1iYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtYmFyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFYU2VhcmNoQmFyQ29tcG9uZW50IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyByZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+KSB7IH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnc2VhcmNoUG9wJykgc2VhcmNoUG9wb3ZlcjogQVhQb3BvdmVyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGRyZW4oQVhQcm9wZXJ0eUVkaXRvclJlbmRlcmVyRGlyZWN0aXZlKSBfZWRpdG9yczogUXVlcnlMaXN0PEFYUHJvcGVydHlFZGl0b3JSZW5kZXJlckRpcmVjdGl2ZT47XHJcbiAgQFZpZXdDaGlsZChBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50KSBmb3JtOiBBWFZhbGlkYXRpb25Gb3JtQ29tcG9uZW50O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNpemVCdXR0b246IEFYRWxlbWVudFNpemUgPSAnbWQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICdmdWxsJyA9ICdzbSc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBmaXRQYXJlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwb3BvdmVyV2lkdGg6IHN0cmluZyA9ICc2NXZ3JztcclxuXHJcbiAgQElucHV0KClcclxuICBydGw6IGJvb2xlYW4gPSBBWENvbmZpZy5nZXQoJ2xheW91dC5ydGwnKTtcclxuXHJcbiAgQElucHV0KClcclxuICBsb2FkT25Jbml0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY2FwdGlvbjogc3RyaW5nXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgYmxvY2s6IGJvb2xlYW4gPSBmYWxzZVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgaXRlbXModjogQVhQcm9wZXJ0eUNvbmZpZ1tdKSB7XHJcbiAgICB0aGlzLl9kZWZ1bHRWYWx1ZUNvdW50ID0gdi5maWx0ZXIoKHgpID0+IHgudmFsdWUpO1xyXG4gICAgdi5mb3JFYWNoKChlbCkgPT4ge1xyXG4gICAgICBlbC5wcm9wZXJ0eS51bmlxdWVOdW1iZXIgPSBNYXRoLnJhbmRvbSgpO1xyXG4gICAgICBpZiAoZWwudmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX2ZpbHRlckl0ZW1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogZWwucHJvcGVydHkubmFtZSxcclxuICAgICAgICAgIHRpdGxlOiBlbC5wcm9wZXJ0eS50aXRsZSxcclxuICAgICAgICAgIHRleHRWYWx1ZTogdGhpcy5faGFuZGxlVGV4dFZhbHVlKGVsKSxcclxuICAgICAgICAgIHZhbHVlOiBlbC52YWx1ZSA/IHRoaXMuX2hhbmRsZURlZnVsdFZsYXVlKGVsKSA6IG51bGwsXHJcbiAgICAgICAgICBjb21wb25lbnQ6IGVsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5faXRlbXMgPSBfLmNoYWluKHYpXHJcbiAgICAgIC5ncm91cEJ5KCh4KSA9PiB4LnByb3BlcnR5LnJvdylcclxuICAgICAgLm1hcCgodmFsdWUsIGtleSkgPT4gKHsgcm93OiBrZXksIGl0ZW1zOiB2YWx1ZSB9KSlcclxuICAgICAgLnZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25TZWFyY2hWYWx1ZTogRXZlbnRFbWl0dGVyPEZpbHRlclRleHRJdGVtc01vZGVsW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBfaXRlbXM6IGFueVtdID0gW107XHJcbiAgX2ZpbHRlckl0ZW1zOiBGaWx0ZXJUZXh0SXRlbXNNb2RlbFtdID0gW107XHJcbiAgX2ZpbHRlckl0ZW1zQ2xvbmU6IEZpbHRlclRleHRJdGVtc01vZGVsW10gPSBbXTtcclxuICBfZGVmdWx0VmFsdWVDb3VudDogYW55ID0gW107XHJcbiAgX2NvbnRleHQ6IGFueSA9IHt9O1xyXG4gIF9pc0VtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBfc2VhcmNoQ291bnQ6IG51bWJlclxyXG4gIHB1YmxpYyBjbGVhckl0ZW0obmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9lZGl0b3JzLmZpbmQoKHgpID0+IHgucHJvcGVydHkucHJvcGVydHkubmFtZSA9PT0gbmFtZSkuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMucnRsID09IG51bGwpIHtcclxuICAgICAgdGhpcy5ydGwgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLnJlZi5uYXRpdmVFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdkaXJlY3Rpb24nKSA9PT0gJ3J0bCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVmcmVzaCgpIHtcclxuICAgIHRoaXMubG9hZE9uSW5pdCA9IHRydWU7XHJcbiAgICB0aGlzLl9kZWZ1bHRWYWx1ZUNvdW50ID0gW107XHJcbiAgICB0aGlzLl9maWx0ZXJJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5fZmlsdGVySXRlbXNDbG9uZSA9IFtdO1xyXG4gICAgdGhpcy5pdGVtcyA9IHRoaXMuX2l0ZW1zWzBdLml0ZW1zO1xyXG4gICAgKHRoaXMuZm9ybSBhcyBhbnkpLndpZGdldHMgPSBbXTtcclxuICAgICh0aGlzLmZvcm0gYXMgYW55KS53aWRnZXRzUXVlcnkuZm9yRWFjaCgoZWwpID0+IHtcclxuICAgICAgKHRoaXMuZm9ybSBhcyBhbnkpLndpZGdldHMucHVzaChlbCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUJ1dHRvbkNsaWNrKCkge1xyXG4gICAgdGhpcy5zZWFyY2hQb3BvdmVyLm9wZW4oKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZVZhbHVlQ2hhbmdlKGU6IEFYUHJvcGVyeUVkaXRvclZhbHVlQ2hhbmdlRXZlbnQpIHtcclxuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUluaXRWbGF1ZShlKTtcclxuICAgIHRoaXMub25WYWx1ZUNoYW5nZS5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSXRlbVJlbW92ZUNsaWNrKGl0ZW06IEZpbHRlclRleHRJdGVtc01vZGVsKSB7XHJcbiAgICB0aGlzLl9lZGl0b3JzLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgaWYgKGUucHJvcGVydHkucHJvcGVydHkubmFtZSA9PSBpdGVtLm5hbWUpIHtcclxuICAgICAgICBlLmNsZWFyKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5fZmlsdGVySXRlbXMgPSB0aGlzLl9maWx0ZXJJdGVtcy5maWx0ZXIoKGVsKSA9PiBlbC5uYW1lICE9IGl0ZW0ubmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VhcmNoKCkge1xyXG4gICAgdGhpcy5mb3JtLnZhbGlkYXRlKCkudGhlbigoYykgPT4ge1xyXG4gICAgICBpZiAoYy5yZXN1bHQpIHtcclxuICAgICAgICB0aGlzLl9maWx0ZXJJdGVtcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5fZmlsdGVySXRlbXNDbG9uZS5maWx0ZXIoKGVsKSA9PiBlbC52YWx1ZSA9PT0gMCB8fCBlbC52YWx1ZSAhPSBudWxsICYmIGVsLnZhbHVlICE9ICcnKSkpO1xyXG4gICAgICAgIHRoaXMuX3NlYXJjaENvdW50ID0gdGhpcy5fZmlsdGVySXRlbXMuZmlsdGVyKCh4KSA9PiB4LmNvbXBvbmVudC5wcm9wZXJ0eS52aXNpYmxlICE9IGZhbHNlKS5sZW5ndGhcclxuICAgICAgICB0aGlzLnNlYXJjaFBvcG92ZXIuY2xvc2UoKTtcclxuICAgICAgICB0aGlzLm9uU2VhcmNoVmFsdWUuZW1pdCh0aGlzLl9maWx0ZXJJdGVtcyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLl9lZGl0b3JzLmZvckVhY2goKGUpID0+IHtcclxuICAgICAgZS5jbGVhcigpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9maWx0ZXJJdGVtcyA9IFtdO1xyXG4gICAgdGhpcy5fZmlsdGVySXRlbXNDbG9uZSA9IFtdO1xyXG4gICAgdGhpcy5zZWFyY2hQb3BvdmVyLmNsb3NlKCk7XHJcbiAgICB0aGlzLl9zZWFyY2hDb3VudCA9IG51bGxcclxuICAgIHRoaXMub25TZWFyY2hWYWx1ZS5lbWl0KHRoaXMuX2ZpbHRlckl0ZW1zKTtcclxuICB9XHJcblxyXG4gIHJlbmRlckNvbChlOiBudW1iZXIgfCBBWFByb3BlcnR5Q29sRGVmKSB7XHJcbiAgICBsZXQgY2xhc3NOYW1lOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgaWYgKHR5cGVvZiBlID09ICdudW1iZXInKSB7XHJcbiAgICAgIGNsYXNzTmFtZS5wdXNoKGBjb2wtJHtlfWApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZSkge1xyXG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgICBjYXNlICdsZyc6XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZS5wdXNoKGBjb2wtbGctJHtlW2tleV19YCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnbWQnOlxyXG4gICAgICAgICAgICBjbGFzc05hbWUucHVzaChgY29sLW1kLSR7ZVtrZXldfWApO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgJ3NtJzpcclxuICAgICAgICAgICAgY2xhc3NOYW1lLnB1c2goYGNvbC1zbS0ke2Vba2V5XX1gKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICd4cyc6XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZS5wdXNoKGBjb2wteHMtJHtlW2tleV19YCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNsYXNzTmFtZS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJyAnKTtcclxuICB9XHJcblxyXG4gIF9oYW5kbGVTaG93VGl0bGVTZWxlY3RlZChpdGVtKSB7XHJcbiAgICBpZiAoaXRlbS50aXRsZSkge1xyXG4gICAgICByZXR1cm4gaXRlbS50aXRsZSArICc6JztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9oYW5kbGVTaG93VmFsdWVTZWxlY3RlZChpdGVtKSB7XHJcbiAgICBpZiAoaXRlbS5jb21wb25lbnQucHJvcGVydHkuZWRpdG9yQ2xhc3MgPT09ICdheC9lZGl0b3JzL2NoZWNrJykge1xyXG4gICAgICByZXR1cm4gaXRlbS5jb21wb25lbnQucHJvcGVydHkuZWRpdG9yT3B0aW9ucy5sYWJlbDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBpdGVtLnRleHRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2hhbmRsZVRleHRWYWx1ZShkYXRhSXRlbTogYW55KSB7XHJcbiAgICBsZXQgdGV4dCA9ICcnO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YUl0ZW0udmFsdWUpKSB7XHJcbiAgICAgIGlmIChkYXRhSXRlbS52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBkYXRhSXRlbS52YWx1ZS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgdGV4dCArPVxyXG4gICAgICAgICAgICBpbmRleCA9PT0gZGF0YUl0ZW0udmFsdWUubGVuZ3RoIC0gMVxyXG4gICAgICAgICAgICAgID8gZWxlbWVudFtkYXRhSXRlbS5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zLnRleHRGaWVsZF1cclxuICAgICAgICAgICAgICA6IGVsZW1lbnRbZGF0YUl0ZW0ucHJvcGVydHkuZWRpdG9yT3B0aW9ucy50ZXh0RmllbGRdICsgJywnO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgfSBlbHNlIGlmIChkYXRhSXRlbS5wcm9wZXJ0eS5lZGl0b3JDbGFzcyA9PT0gJ2F4L2VkaXRvcnMvZGF0ZScpIHtcclxuICAgICAgaWYgKGRhdGFJdGVtLnZhbHVlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGRhdGFJdGVtLnZhbHVlLCAnamFsYWxpJykuZm9ybWF0KCd5eXl5L01NL0REJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVEZWZ1bHRWbGF1ZShkYXRhSXRlbTogYW55KSB7XHJcbiAgICBhd2FpdCB0aGlzLl9oYW5kbGVJbml0VmxhdWUoZGF0YUl0ZW0pO1xyXG4gICAgdGhpcy5fZmlsdGVySXRlbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2ZpbHRlckl0ZW1zQ2xvbmUuZmlsdGVyKChlbCkgPT4gZWwudmFsdWUgPT09IDAgfHwgZWwudmFsdWUgIT0gbnVsbCAmJiBlbC52YWx1ZSAhPSAnJykpKTtcclxuICAgIGlmICh0aGlzLl9maWx0ZXJJdGVtcy5sZW5ndGggPT09IHRoaXMuX2RlZnVsdFZhbHVlQ291bnQubGVuZ3RoICYmIHRoaXMubG9hZE9uSW5pdCAmJiAhdGhpcy5faXNFbWl0dGVkKSB7XHJcbiAgICAgIHRoaXMuX2lzRW1pdHRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuX3NlYXJjaENvdW50ID0gdGhpcy5fZmlsdGVySXRlbXMuZmlsdGVyKCh4KSA9PiB4LmNvbXBvbmVudC5wcm9wZXJ0eS52aXNpYmxlICE9IGZhbHNlKS5sZW5ndGhcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5vblNlYXJjaFZhbHVlLmVtaXQodGhpcy5fZmlsdGVySXRlbXMpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2hhbmRsZUluaXRWbGF1ZShlKSB7XHJcbiAgICBsZXQgdmFsdWUgPSBbXTtcclxuICAgIGxldCB0ZXh0OiBhbnkgPSBbXTtcclxuICAgIGlmIChlLnByb3BlcnR5LmVkaXRvck9wdGlvbnM/LnZhbHVlRmllbGQgJiYgZS52YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChlLnByb3BlcnR5LmVkaXRvck9wdGlvbnMucmV0dXJuQWxsRGF0YSkge1xyXG4gICAgICAgIHZhbHVlID0gZS52YWx1ZTtcclxuICAgICAgICB0ZXh0ID0gYXdhaXQgdGhpcy5faGFuZGxlVGV4dFZhbHVlKGUpO1xyXG4gICAgICB9IGVsc2UgaWYgKGUucHJvcGVydHkuZWRpdG9yT3B0aW9ucz8ubW9kZSA9PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgZS52YWx1ZS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICB2YWx1ZS5wdXNoKGVsZW1lbnRbZS5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgIHRleHQucHVzaChlbGVtZW50W2UucHJvcGVydHkuZWRpdG9yT3B0aW9ucy50ZXh0RmllbGRdKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoZS52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICAgIHZhbHVlID0gZS52YWx1ZVswXVtlLnByb3BlcnR5LmVkaXRvck9wdGlvbnMudmFsdWVGaWVsZF07XHJcbiAgICAgICAgICB0ZXh0ID0gZS52YWx1ZVswXVtlLnByb3BlcnR5LmVkaXRvck9wdGlvbnMudGV4dEZpZWxkXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhbHVlID0gZS52YWx1ZTtcclxuICAgICAgdGV4dCA9IGUudmFsdWU7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmaW5kRWwgPSB0aGlzLl9maWx0ZXJJdGVtc0Nsb25lLmZpbmQoKGVsKSA9PiBlbC51bmlxdWVOdW1iZXIgPT0gZS5wcm9wZXJ0eS51bmlxdWVOdW1iZXIpO1xyXG4gICAgaWYgKGZpbmRFbCkge1xyXG4gICAgICBmaW5kRWwudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgZmluZEVsLnRleHRWYWx1ZSA9IGUucHJvcGVydHkuZWRpdG9yQ2xhc3MgPT09ICdheC9lZGl0b3JzL2RhdGUnID8gbmV3IEFYRGF0ZVRpbWUodGV4dCwgJ2phbGFsaScpLmZvcm1hdCgneXl5eS9NTS9ERCcpIDogdGV4dDtcclxuICAgIH0gZWxzZSBpZiAoZS52YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2ZpbHRlckl0ZW1zQ2xvbmUucHVzaCh7XHJcbiAgICAgICAgbmFtZTogZS5wcm9wZXJ0eS5uYW1lLFxyXG4gICAgICAgIHRpdGxlOiBlLnByb3BlcnR5LnRpdGxlLFxyXG4gICAgICAgIHVuaXF1ZU51bWJlcjogZS5wcm9wZXJ0eS51bmlxdWVOdW1iZXIsXHJcbiAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgdGV4dFZhbHVlOiBlLnByb3BlcnR5LmVkaXRvckNsYXNzID09PSAnYXgvZWRpdG9ycy9kYXRlJyA/IG5ldyBBWERhdGVUaW1lKHRleHQsICdqYWxhbGknKS5mb3JtYXQoJ3l5eXkvTU0vREQnKSA6IHRleHQsXHJcbiAgICAgICAgY29tcG9uZW50OiBlLFxyXG4gICAgICAgIGZpbHRlck9wdGlvbnM6IHtcclxuICAgICAgICAgIGZpbHRlcnM6IGUucHJvcGVydHk/LmZpbHRlck9wdGlvbnM/LmZpbHRlcnMgPyBlLnByb3BlcnR5LmZpbHRlck9wdGlvbnMuZmlsdGVycyA6IFtdLFxyXG4gICAgICAgICAgbG9naWM6IGUucHJvcGVydHk/LmZpbHRlck9wdGlvbnM/LmxvZ2ljID8gZS5wcm9wZXJ0eS5maWx0ZXJPcHRpb25zLmxvZ2ljIDogJ2FuZCcsXHJcbiAgICAgICAgICBpZ25vcmVDYXNlOiBlLnByb3BlcnR5Py5maWx0ZXJPcHRpb25zPy5pZ25vcmVDYXNlID8gZS5wcm9wZXJ0eS5maWx0ZXJPcHRpb25zLmlnbm9yZUNhc2UgOiB0cnVlLFxyXG4gICAgICAgICAgam9pblR5cGU6IGUucHJvcGVydHk/LmZpbHRlck9wdGlvbnM/LmpvaW5UeXBlID8gZS5wcm9wZXJ0eS5maWx0ZXJPcHRpb25zLmpvaW5UeXBlIDogJ0lOTkVSJyxcclxuICAgICAgICAgIG9wZXJhdG9yOiBlLnByb3BlcnR5Py5maWx0ZXJPcHRpb25zPy5vcGVyYXRvciA/IGUucHJvcGVydHkuZmlsdGVyT3B0aW9ucy5vcGVyYXRvciA6IG51bGwsXHJcbiAgICAgICAgICB0cnVuY2F0ZURhdGU6IGUucHJvcGVydHk/LmZpbHRlck9wdGlvbnM/LnRydW5jYXRlRGF0ZSA/IGUucHJvcGVydHkuZmlsdGVyT3B0aW9ucy50cnVuY2F0ZURhdGUgOiB0cnVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2VhcmNoUG9wb3Zlci5vcGVuKCk7XHJcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlKCkge1xyXG4gICAgdGhpcy5zZWFyY2hQb3BvdmVyLmNsb3NlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxheC1idXR0b24gW2Jsb2NrXT1cImJsb2NrXCIgZW5kIGljb249XCJmYXIgZmEtc2xpZGVycy1oIGljb25cIiBbc2VsZWN0ZWRdPVwiX3NlYXJjaENvdW50PyB0cnVlOmZhbHNlXCJcclxuICAgIFt0eXBlXT1cIiBfc2VhcmNoQ291bnQgPyAncHJpbWFyeSc6J3ByaW1hcnkgb3V0bGluZSdcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbc2l6ZV09XCJzaXplQnV0dG9uXCIgW3RhYkluZGV4XT1cIi0xXCJcclxuICAgIChjbGljayk9XCJoYW5kbGVCdXR0b25DbGljaygpXCI+IHt7Y2FwdGlvbj8gY2FwdGlvbjonY29tbW9uLnNlYXJjaCcgfCB0cmFuc319XHJcbiAgICA8c3BhbiAqbmdJZj1cIl9zZWFyY2hDb3VudFwiIGNsYXNzPVwic2VhcmNoLWNvdW50XCI+e3tfc2VhcmNoQ291bnR9fTwvc3Bhbj48L2F4LWJ1dHRvbj5cclxuXHJcblxyXG48YXgtcG9wb3ZlciAjc2VhcmNoUG9wIFt0YXJnZXRdPVwicmVmXCIgW3J0bF09XCJydGxcIlxyXG4gICAgW3Bvc2l0aW9uXT1cIntvcmlnaW5YOidlbmQnLG9yaWdpblk6J2JvdHRvbScsb3ZlcmxheVg6J2VuZCcsb3ZlcmxheVk6J3RvcCcsb2Zmc2V0WToxMH1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib3ggYXgtZHJvcGRvd24tY29udGFpbmVyLWJvcmRlcmVkIHt7c2l6ZX19XCI+XHJcbiAgICAgICAgPGF4LXZhbGlkYXRpb24tZm9ybSAjZm9ybT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9wIG9mIGl0ZW0uaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AucHJvcGVydHkudmlzaWJsZSAhPSBmYWxzZVwiIGNsYXNzPVwie3tyZW5kZXJDb2wocHJvcC5wcm9wZXJ0eS5jb2wpfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWxhYmVsPnt7cHJvcC5wcm9wZXJ0eS50aXRsZX19PC9heC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGF4LXByb3BlcnR5LWVkaXRvci1yZW5kZXJlciBbdmFsaWRhdGlvbkZvcm1dPVwiZm9ybVwiIFtwcm9wZXJ0eV09XCJwcm9wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRleHRdPVwiX2NvbnRleHRcIiAob25WYWx1ZUNoYW5nZSk9XCJoYW5kbGVWYWx1ZUNoYW5nZSgkZXZlbnQpXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIChjbGljayk9XCJzZWFyY2goKVwiPnt7J2NvbW1vbi5zZWFyY2gnIHwgdHJhbnN9fTwvYXgtYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiB0eXBlPVwiYmxhbmsgZGFuZ2VyXCIgKGNsaWNrKT1cImNsZWFyKClcIj57eydjb21tb24ucmVzZXQnIHwgdHJhbnN9fTwvYXgtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2F4LXZhbGlkYXRpb24tZm9ybT5cclxuICAgIDwvZGl2PlxyXG48L2F4LXBvcG92ZXI+Il19
|
1
|
+
import { AXConfig, AXDateTime } from '@acorex/core';
|
2
|
+
import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';
|
3
|
+
import * as _ from 'lodash';
|
4
|
+
import { AXPopoverComponent } from '../popover/popover.component';
|
5
|
+
import { AXPropertyEditorRendererDirective } from '../property-editor/property-editor-renderer.directive';
|
6
|
+
import { AXValidationFormComponent } from '../validation/validation-form.component';
|
7
|
+
import * as i0 from "@angular/core";
|
8
|
+
import * as i1 from "../button/button.component";
|
9
|
+
import * as i2 from "../popover/popover.component";
|
10
|
+
import * as i3 from "../validation/validation-form.component";
|
11
|
+
import * as i4 from "../label/label.component";
|
12
|
+
import * as i5 from "@angular/common";
|
13
|
+
import * as i6 from "../property-editor/property-editor-renderer.directive";
|
14
|
+
import * as i7 from "@acorex/core";
|
15
|
+
export class AXSearchBarComponent {
|
16
|
+
constructor(cdr, ref) {
|
17
|
+
this.cdr = cdr;
|
18
|
+
this.ref = ref;
|
19
|
+
this.sizeButton = 'md';
|
20
|
+
this.size = 'sm';
|
21
|
+
this.disabled = false;
|
22
|
+
this.fitParent = false;
|
23
|
+
this.popoverWidth = '65vw';
|
24
|
+
this.rtl = AXConfig.get('layout.rtl');
|
25
|
+
this.loadOnInit = false;
|
26
|
+
this.block = false;
|
27
|
+
this.onValueChange = new EventEmitter();
|
28
|
+
this.onSearchValue = new EventEmitter();
|
29
|
+
this._items = [];
|
30
|
+
this._filterItems = [];
|
31
|
+
this._filterItemsClone = [];
|
32
|
+
this._defultValueCount = [];
|
33
|
+
this._context = {};
|
34
|
+
this._isEmitted = false;
|
35
|
+
}
|
36
|
+
set items(v) {
|
37
|
+
this._defultValueCount = v.filter((x) => x.value);
|
38
|
+
v.forEach((el) => {
|
39
|
+
el.property.uniqueNumber = Math.random();
|
40
|
+
if (el.value != null) {
|
41
|
+
this._filterItems.push({
|
42
|
+
name: el.property.name,
|
43
|
+
title: el.property.title,
|
44
|
+
textValue: this._handleTextValue(el),
|
45
|
+
value: el.value ? this._handleDefultVlaue(el) : null,
|
46
|
+
component: el
|
47
|
+
});
|
48
|
+
}
|
49
|
+
});
|
50
|
+
this._items = _.chain(v)
|
51
|
+
.groupBy((x) => x.property.row)
|
52
|
+
.map((value, key) => ({ row: key, items: value }))
|
53
|
+
.value();
|
54
|
+
}
|
55
|
+
clearItem(name) {
|
56
|
+
this._editors.find((x) => x.property.property.name === name).clear();
|
57
|
+
}
|
58
|
+
ngOnInit() {
|
59
|
+
if (this.rtl == null) {
|
60
|
+
this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';
|
61
|
+
}
|
62
|
+
}
|
63
|
+
refresh() {
|
64
|
+
this.loadOnInit = true;
|
65
|
+
this._defultValueCount = [];
|
66
|
+
this._filterItems = [];
|
67
|
+
this._filterItemsClone = [];
|
68
|
+
this.items = this._items[0].items;
|
69
|
+
this.form.widgets = [];
|
70
|
+
this.form.widgetsQuery.forEach((el) => {
|
71
|
+
this.form.widgets.push(el);
|
72
|
+
});
|
73
|
+
this.cdr.detectChanges();
|
74
|
+
}
|
75
|
+
handleButtonClick() {
|
76
|
+
this.searchPopover.open();
|
77
|
+
}
|
78
|
+
async handleValueChange(e) {
|
79
|
+
await this._handleInitVlaue(e);
|
80
|
+
this.onValueChange.emit(e);
|
81
|
+
}
|
82
|
+
handleItemRemoveClick(item) {
|
83
|
+
this._editors.forEach((e) => {
|
84
|
+
if (e.property.property.name == item.name) {
|
85
|
+
e.clear();
|
86
|
+
}
|
87
|
+
});
|
88
|
+
this._filterItems = this._filterItems.filter((el) => el.name != item.name);
|
89
|
+
}
|
90
|
+
search() {
|
91
|
+
this.form.validate().then((c) => {
|
92
|
+
if (c.result) {
|
93
|
+
this._filterItems = JSON.parse(JSON.stringify(this._filterItemsClone.filter((el) => el.value === 0 || el.value != null && el.value != '')));
|
94
|
+
this._searchCount = this._filterItems.filter((x) => x.component.property.visible != false).length;
|
95
|
+
this.searchPopover.close();
|
96
|
+
this.onSearchValue.emit(this._filterItems);
|
97
|
+
}
|
98
|
+
});
|
99
|
+
}
|
100
|
+
clear() {
|
101
|
+
this._editors.forEach((e) => {
|
102
|
+
e.clear();
|
103
|
+
});
|
104
|
+
this._filterItems = [];
|
105
|
+
this._filterItemsClone = [];
|
106
|
+
this.searchPopover.close();
|
107
|
+
this._searchCount = null;
|
108
|
+
this.onSearchValue.emit(this._filterItems);
|
109
|
+
}
|
110
|
+
renderCol(e) {
|
111
|
+
let className = [];
|
112
|
+
if (typeof e == 'number') {
|
113
|
+
className.push(`col-${e}`);
|
114
|
+
}
|
115
|
+
else {
|
116
|
+
for (const key in e) {
|
117
|
+
switch (key) {
|
118
|
+
case 'lg':
|
119
|
+
className.push(`col-lg-${e[key]}`);
|
120
|
+
break;
|
121
|
+
case 'md':
|
122
|
+
className.push(`col-md-${e[key]}`);
|
123
|
+
break;
|
124
|
+
case 'sm':
|
125
|
+
className.push(`col-sm-${e[key]}`);
|
126
|
+
break;
|
127
|
+
case 'xs':
|
128
|
+
className.push(`col-xs-${e[key]}`);
|
129
|
+
break;
|
130
|
+
}
|
131
|
+
}
|
132
|
+
}
|
133
|
+
return className.toString().replace(/,/g, ' ');
|
134
|
+
}
|
135
|
+
_handleShowTitleSelected(item) {
|
136
|
+
if (item.title) {
|
137
|
+
return item.title + ':';
|
138
|
+
}
|
139
|
+
}
|
140
|
+
_handleShowValueSelected(item) {
|
141
|
+
if (item.component.property.editorClass === 'ax/editors/check') {
|
142
|
+
return item.component.property.editorOptions.label;
|
143
|
+
}
|
144
|
+
else {
|
145
|
+
return item.textValue;
|
146
|
+
}
|
147
|
+
}
|
148
|
+
_handleTextValue(dataItem) {
|
149
|
+
let text = '';
|
150
|
+
if (Array.isArray(dataItem.value)) {
|
151
|
+
if (dataItem.value.length) {
|
152
|
+
dataItem.value.forEach((element, index) => {
|
153
|
+
text +=
|
154
|
+
index === dataItem.value.length - 1
|
155
|
+
? element[dataItem.property.editorOptions.textField]
|
156
|
+
: element[dataItem.property.editorOptions.textField] + ',';
|
157
|
+
});
|
158
|
+
}
|
159
|
+
return text;
|
160
|
+
}
|
161
|
+
else if (dataItem.property.editorClass === 'ax/editors/date') {
|
162
|
+
if (dataItem.value) {
|
163
|
+
return new AXDateTime(dataItem.value, 'jalali').format('yyyy/MM/DD');
|
164
|
+
}
|
165
|
+
else {
|
166
|
+
return;
|
167
|
+
}
|
168
|
+
}
|
169
|
+
else {
|
170
|
+
return;
|
171
|
+
}
|
172
|
+
}
|
173
|
+
async _handleDefultVlaue(dataItem) {
|
174
|
+
await this._handleInitVlaue(dataItem);
|
175
|
+
this._filterItems = JSON.parse(JSON.stringify(this._filterItemsClone.filter((el) => el.value === 0 || el.value != null && el.value != '')));
|
176
|
+
if (this._filterItems.length === this._defultValueCount.length && this.loadOnInit && !this._isEmitted) {
|
177
|
+
this._isEmitted = true;
|
178
|
+
this._searchCount = this._filterItems.filter((x) => x.component.property.visible != false).length;
|
179
|
+
setTimeout(() => {
|
180
|
+
this.onSearchValue.emit(this._filterItems);
|
181
|
+
});
|
182
|
+
}
|
183
|
+
}
|
184
|
+
async _handleInitVlaue(e) {
|
185
|
+
let value = [];
|
186
|
+
let text = [];
|
187
|
+
if (e.property.editorOptions?.valueField && e.value != null) {
|
188
|
+
if (e.property.editorOptions.returnAllData) {
|
189
|
+
value = e.value;
|
190
|
+
text = await this._handleTextValue(e);
|
191
|
+
}
|
192
|
+
else if (e.property.editorOptions?.mode == 'multiple') {
|
193
|
+
e.value.forEach((element) => {
|
194
|
+
value.push(element[e.property.editorOptions.valueField]);
|
195
|
+
text.push(element[e.property.editorOptions.textField]);
|
196
|
+
});
|
197
|
+
}
|
198
|
+
else {
|
199
|
+
if (e.value.length) {
|
200
|
+
value = e.value[0][e.property.editorOptions.valueField];
|
201
|
+
text = e.value[0][e.property.editorOptions.textField];
|
202
|
+
}
|
203
|
+
}
|
204
|
+
}
|
205
|
+
else {
|
206
|
+
value = e.value;
|
207
|
+
text = e.value;
|
208
|
+
}
|
209
|
+
const findEl = this._filterItemsClone.find((el) => el.uniqueNumber == e.property.uniqueNumber);
|
210
|
+
if (findEl) {
|
211
|
+
findEl.value = value;
|
212
|
+
findEl.textValue = e.property.editorClass === 'ax/editors/date' ? new AXDateTime(text, 'jalali').format('yyyy/MM/DD') : text;
|
213
|
+
}
|
214
|
+
else if (e.value != null) {
|
215
|
+
this._filterItemsClone.push({
|
216
|
+
name: e.property.name,
|
217
|
+
title: e.property.title,
|
218
|
+
uniqueNumber: e.property.uniqueNumber,
|
219
|
+
value,
|
220
|
+
textValue: e.property.editorClass === 'ax/editors/date' ? new AXDateTime(text, 'jalali').format('yyyy/MM/DD') : text,
|
221
|
+
component: e,
|
222
|
+
filterOptions: {
|
223
|
+
filters: e.property?.filterOptions?.filters ? e.property.filterOptions.filters : [],
|
224
|
+
logic: e.property?.filterOptions?.logic ? e.property.filterOptions.logic : 'and',
|
225
|
+
ignoreCase: e.property?.filterOptions?.ignoreCase ? e.property.filterOptions.ignoreCase : true,
|
226
|
+
joinType: e.property?.filterOptions?.joinType ? e.property.filterOptions.joinType : 'INNER',
|
227
|
+
operator: e.property?.filterOptions?.operator ? e.property.filterOptions.operator : null,
|
228
|
+
truncateDate: e.property?.filterOptions?.truncateDate ? e.property.filterOptions.truncateDate : true
|
229
|
+
}
|
230
|
+
});
|
231
|
+
}
|
232
|
+
}
|
233
|
+
open() {
|
234
|
+
setTimeout(() => {
|
235
|
+
this.searchPopover.open();
|
236
|
+
this.cdr.detectChanges();
|
237
|
+
this.cdr.markForCheck();
|
238
|
+
}, 100);
|
239
|
+
}
|
240
|
+
close() {
|
241
|
+
this.searchPopover.close();
|
242
|
+
}
|
243
|
+
}
|
244
|
+
AXSearchBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXSearchBarComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
245
|
+
AXSearchBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: AXSearchBarComponent, selector: "ax-search-bar", inputs: { sizeButton: "sizeButton", size: "size", disabled: "disabled", fitParent: "fitParent", popoverWidth: "popoverWidth", rtl: "rtl", loadOnInit: "loadOnInit", caption: "caption", block: "block", items: "items" }, outputs: { onValueChange: "onValueChange", onSearchValue: "onSearchValue" }, viewQueries: [{ propertyName: "searchPopover", first: true, predicate: ["searchPop"], descendants: true }, { propertyName: "form", first: true, predicate: AXValidationFormComponent, descendants: true }, { propertyName: "_editors", predicate: AXPropertyEditorRendererDirective, descendants: true }], ngImport: i0, template: "<ax-button [block]=\"block\" end icon=\"far fa-sliders-h icon\" [selected]=\"_searchCount? true:false\"\n [type]=\" _searchCount ? 'primary':'primary outline'\" [disabled]=\"disabled\" [size]=\"sizeButton\" [tabIndex]=\"-1\"\n (click)=\"handleButtonClick()\"> {{caption? caption:'common.search' | trans}}\n <span *ngIf=\"_searchCount\" class=\"search-count\">{{_searchCount}}</span></ax-button>\n\n\n<ax-popover #searchPop [target]=\"ref\" [rtl]=\"rtl\"\n [position]=\"{originX:'end',originY:'bottom',overlayX:'end',overlayY:'top',offsetY:10}\">\n <div class=\"panel-box ax-dropdown-container-bordered {{size}}\">\n <ax-validation-form #form>\n <ng-container *ngFor=\"let item of _items\">\n <div class=\"row\">\n <ng-container *ngFor=\"let prop of item.items\">\n <div *ngIf=\"prop.property.visible != false\" class=\"{{renderCol(prop.property.col)}}\">\n <div>\n <ax-label>{{prop.property.title}}</ax-label>\n <ng-container ax-property-editor-renderer [validationForm]=\"form\" [property]=\"prop\"\n [context]=\"_context\" (onValueChange)=\"handleValueChange($event)\"></ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <div class=\"footer-button\">\n <ax-button (click)=\"search()\">{{'common.search' | trans}}</ax-button>\n <ax-button type=\"blank danger\" (click)=\"clear()\">{{'common.reset' | trans}}</ax-button>\n </div>\n </ax-validation-form>\n </div>\n</ax-popover>", styles: [".panel-box{padding:1rem}.panel-box.ax-dropdown-container-bordered{background:var(--ax-white-color);border:1px solid;border-color:var(--ax-border-color);border-radius:var(--ax-border-radius-size);box-shadow:0 5px 10px #0000004d}.panel-box .footer-button{margin-top:1rem;display:flex;align-items:center;gap:.5rem}.panel-box.sm{width:30vw}.panel-box.md{width:50vw}.panel-box.lg{width:70vw}.panel-box.full{width:80vw}@media all and (min-width: 1280px){.panel-box.sm{width:420px!important}.panel-box.md{width:680px!important}.panel-box.lg{width:1024px!important}}@media all and (min-width: 1024px) and (max-width: 1279px){.panel-box.sm{width:100vw;max-height:100vh}.panel-box.md{width:500px!important}.panel-box.lg{width:900px!important}}@media all and (min-width: 768px) and (max-width: 1023px){.panel-box.sm{width:100vw;max-height:100vh}.panel-box.md{width:500px!important}.panel-box.lg{width:700px!important}}@media all and (min-width: 425px) and (max-width: 767px){.panel-box.sm{width:100vw;max-height:100vh}.panel-box.md,.panel-box.lg{width:460px!important}}@media all and (min-width: 0px) and (max-width: 424px){.panel-box.sm,.panel-box.md,.panel-box.lg{width:100vw;max-height:100vh}}.search-count{background:rgba(255,255,255,.2);border-radius:50%;color:var(--ax-white-color);padding:.125rem;width:1.75rem;height:1.75rem;font-size:.875rem;display:inline-flex;align-items:center;justify-content:center;-webkit-margin-start:.5rem;margin-inline-start:.5rem}\n"], components: [{ type: i1.AXButtonComponent, selector: "ax-button", inputs: ["type", "icon", "submitBehavior", "cancelBehavior", "block", "loading", "selected"] }, { type: i2.AXPopoverComponent, selector: "ax-popover", inputs: ["target", "position", "openMode", "closeMode", "rtl", "visible"] }, { type: i3.AXValidationFormComponent, selector: "ax-validation-form", inputs: ["validateOn"], outputs: ["onInit"] }, { type: i4.AXLabelComponent, selector: "ax-label", inputs: ["size"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.AXPropertyEditorRendererDirective, selector: "[ax-property-editor-renderer]", inputs: ["property", "validationForm", "context", "host", "groupId"], outputs: ["onValueChange"] }], pipes: { "trans": i7.AXTranslatorPipe } });
|
246
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: AXSearchBarComponent, decorators: [{
|
247
|
+
type: Component,
|
248
|
+
args: [{ selector: 'ax-search-bar', template: "<ax-button [block]=\"block\" end icon=\"far fa-sliders-h icon\" [selected]=\"_searchCount? true:false\"\n [type]=\" _searchCount ? 'primary':'primary outline'\" [disabled]=\"disabled\" [size]=\"sizeButton\" [tabIndex]=\"-1\"\n (click)=\"handleButtonClick()\"> {{caption? caption:'common.search' | trans}}\n <span *ngIf=\"_searchCount\" class=\"search-count\">{{_searchCount}}</span></ax-button>\n\n\n<ax-popover #searchPop [target]=\"ref\" [rtl]=\"rtl\"\n [position]=\"{originX:'end',originY:'bottom',overlayX:'end',overlayY:'top',offsetY:10}\">\n <div class=\"panel-box ax-dropdown-container-bordered {{size}}\">\n <ax-validation-form #form>\n <ng-container *ngFor=\"let item of _items\">\n <div class=\"row\">\n <ng-container *ngFor=\"let prop of item.items\">\n <div *ngIf=\"prop.property.visible != false\" class=\"{{renderCol(prop.property.col)}}\">\n <div>\n <ax-label>{{prop.property.title}}</ax-label>\n <ng-container ax-property-editor-renderer [validationForm]=\"form\" [property]=\"prop\"\n [context]=\"_context\" (onValueChange)=\"handleValueChange($event)\"></ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n <div class=\"footer-button\">\n <ax-button (click)=\"search()\">{{'common.search' | trans}}</ax-button>\n <ax-button type=\"blank danger\" (click)=\"clear()\">{{'common.reset' | trans}}</ax-button>\n </div>\n </ax-validation-form>\n </div>\n</ax-popover>", styles: [".panel-box{padding:1rem}.panel-box.ax-dropdown-container-bordered{background:var(--ax-white-color);border:1px solid;border-color:var(--ax-border-color);border-radius:var(--ax-border-radius-size);box-shadow:0 5px 10px #0000004d}.panel-box .footer-button{margin-top:1rem;display:flex;align-items:center;gap:.5rem}.panel-box.sm{width:30vw}.panel-box.md{width:50vw}.panel-box.lg{width:70vw}.panel-box.full{width:80vw}@media all and (min-width: 1280px){.panel-box.sm{width:420px!important}.panel-box.md{width:680px!important}.panel-box.lg{width:1024px!important}}@media all and (min-width: 1024px) and (max-width: 1279px){.panel-box.sm{width:100vw;max-height:100vh}.panel-box.md{width:500px!important}.panel-box.lg{width:900px!important}}@media all and (min-width: 768px) and (max-width: 1023px){.panel-box.sm{width:100vw;max-height:100vh}.panel-box.md{width:500px!important}.panel-box.lg{width:700px!important}}@media all and (min-width: 425px) and (max-width: 767px){.panel-box.sm{width:100vw;max-height:100vh}.panel-box.md,.panel-box.lg{width:460px!important}}@media all and (min-width: 0px) and (max-width: 424px){.panel-box.sm,.panel-box.md,.panel-box.lg{width:100vw;max-height:100vh}}.search-count{background:rgba(255,255,255,.2);border-radius:50%;color:var(--ax-white-color);padding:.125rem;width:1.75rem;height:1.75rem;font-size:.875rem;display:inline-flex;align-items:center;justify-content:center;-webkit-margin-start:.5rem;margin-inline-start:.5rem}\n"] }]
|
249
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { searchPopover: [{
|
250
|
+
type: ViewChild,
|
251
|
+
args: ['searchPop']
|
252
|
+
}], _editors: [{
|
253
|
+
type: ViewChildren,
|
254
|
+
args: [AXPropertyEditorRendererDirective]
|
255
|
+
}], form: [{
|
256
|
+
type: ViewChild,
|
257
|
+
args: [AXValidationFormComponent]
|
258
|
+
}], sizeButton: [{
|
259
|
+
type: Input
|
260
|
+
}], size: [{
|
261
|
+
type: Input
|
262
|
+
}], disabled: [{
|
263
|
+
type: Input
|
264
|
+
}], fitParent: [{
|
265
|
+
type: Input
|
266
|
+
}], popoverWidth: [{
|
267
|
+
type: Input
|
268
|
+
}], rtl: [{
|
269
|
+
type: Input
|
270
|
+
}], loadOnInit: [{
|
271
|
+
type: Input
|
272
|
+
}], caption: [{
|
273
|
+
type: Input
|
274
|
+
}], block: [{
|
275
|
+
type: Input
|
276
|
+
}], items: [{
|
277
|
+
type: Input
|
278
|
+
}], onValueChange: [{
|
279
|
+
type: Output
|
280
|
+
}], onSearchValue: [{
|
281
|
+
type: Output
|
282
|
+
}] } });
|
283
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlYXJjaC1iYXIvc2VhcmNoLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUUxRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7Ozs7O0FBaUJwRixNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLEdBQXNCLEVBQVMsR0FBK0I7UUFBOUQsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUE0QjtRQU9sRixlQUFVLEdBQWtCLElBQUksQ0FBQztRQUdqQyxTQUFJLEdBQWdDLElBQUksQ0FBQztRQUd6QyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsaUJBQVksR0FBVyxNQUFNLENBQUM7UUFHOUIsUUFBRyxHQUFZLFFBQVEsQ0FBQyxHQUFH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c0JBREgsS0FBSztnQkFJTixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixHQUFHO3NCQURGLEtBQUs7Z0JBSU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSUssS0FBSztzQkFEZixLQUFLO2dCQXNCTixhQUFhO3NCQURaLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDb25maWcsIEFYRGF0ZVRpbWUgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBBWEVsZW1lbnRTaXplIH0gZnJvbSAnLi4vYmFzZS9lbGVtZW50LmNsYXNzJztcbmltcG9ydCB7IEFYUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXIvcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhQcm9wZXJ0eUVkaXRvclJlbmRlcmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vcHJvcGVydHktZWRpdG9yL3Byb3BlcnR5LWVkaXRvci1yZW5kZXJlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQVhQcm9wZXJ0eUNvbERlZiwgQVhQcm9wZXJ0eUNvbmZpZywgQVhQcm9wZXJ5RWRpdG9yVmFsdWVDaGFuZ2VFdmVudCwgRmlsdGVyTW9kZWwgfSBmcm9tICcuLi9wcm9wZXJ0eS1lZGl0b3IvcHJvcGVydHktZWRpdG9yLmNsYXNzJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQgfSBmcm9tICcuLi92YWxpZGF0aW9uL3ZhbGlkYXRpb24tZm9ybS5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlclRleHRJdGVtc01vZGVsIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuICB0ZXh0VmFsdWU6IHN0cmluZztcbiAgZmlsdGVyT3B0aW9ucz86IEZpbHRlck1vZGVsO1xuICBjb21wb25lbnQ6IEFYUHJvcGVydHlDb25maWc7XG4gIHVuaXF1ZU51bWJlcj86IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtc2VhcmNoLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VhcmNoLWJhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFYU2VhcmNoQmFyQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgcmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PikgeyB9XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoUG9wJykgc2VhcmNoUG9wb3ZlcjogQVhQb3BvdmVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkcmVuKEFYUHJvcGVydHlFZGl0b3JSZW5kZXJlckRpcmVjdGl2ZSkgX2VkaXRvcnM6IFF1ZXJ5TGlzdDxBWFByb3BlcnR5RWRpdG9yUmVuZGVyZXJEaXJlY3RpdmU+O1xuICBAVmlld0NoaWxkKEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQpIGZvcm06IEFYVmFsaWRhdGlvbkZvcm1Db21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgc2l6ZUJ1dHRvbjogQVhFbGVtZW50U2l6ZSA9ICdtZCc7XG5cbiAgQElucHV0KClcbiAgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ2Z1bGwnID0gJ3NtJztcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGZpdFBhcmVudDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHBvcG92ZXJXaWR0aDogc3RyaW5nID0gJzY1dncnO1xuXG4gIEBJbnB1dCgpXG4gIHJ0bDogYm9vbGVhbiA9IEFYQ29uZmlnLmdldCgnbGF5b3V0LnJ0bCcpO1xuXG4gIEBJbnB1dCgpXG4gIGxvYWRPbkluaXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjYXB0aW9uOiBzdHJpbmdcblxuICBASW5wdXQoKVxuICBibG9jazogYm9vbGVhbiA9IGZhbHNlXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBpdGVtcyh2OiBBWFByb3BlcnR5Q29uZmlnW10pIHtcbiAgICB0aGlzLl9kZWZ1bHRWYWx1ZUNvdW50ID0gdi5maWx0ZXIoKHgpID0+IHgudmFsdWUpO1xuICAgIHYuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAgIGVsLnByb3BlcnR5LnVuaXF1ZU51bWJlciA9IE1hdGgucmFuZG9tKCk7XG4gICAgICBpZiAoZWwudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9maWx0ZXJJdGVtcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBlbC5wcm9wZXJ0eS5uYW1lLFxuICAgICAgICAgIHRpdGxlOiBlbC5wcm9wZXJ0eS50aXRsZSxcbiAgICAgICAgICB0ZXh0VmFsdWU6IHRoaXMuX2hhbmRsZVRleHRWYWx1ZShlbCksXG4gICAgICAgICAgdmFsdWU6IGVsLnZhbHVlID8gdGhpcy5faGFuZGxlRGVmdWx0VmxhdWUoZWwpIDogbnVsbCxcbiAgICAgICAgICBjb21wb25lbnQ6IGVsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2l0ZW1zID0gXy5jaGFpbih2KVxuICAgICAgLmdyb3VwQnkoKHgpID0+IHgucHJvcGVydHkucm93KVxuICAgICAgLm1hcCgodmFsdWUsIGtleSkgPT4gKHsgcm93OiBrZXksIGl0ZW1zOiB2YWx1ZSB9KSlcbiAgICAgIC52YWx1ZSgpO1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIG9uVmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblNlYXJjaFZhbHVlOiBFdmVudEVtaXR0ZXI8RmlsdGVyVGV4dEl0ZW1zTW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgX2l0ZW1zOiBhbnlbXSA9IFtdO1xuICBfZmlsdGVySXRlbXM6IEZpbHRlclRleHRJdGVtc01vZGVsW10gPSBbXTtcbiAgX2ZpbHRlckl0ZW1zQ2xvbmU6IEZpbHRlclRleHRJdGVtc01vZGVsW10gPSBbXTtcbiAgX2RlZnVsdFZhbHVlQ291bnQ6IGFueSA9IFtdO1xuICBfY29udGV4dDogYW55ID0ge307XG4gIF9pc0VtaXR0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX3NlYXJjaENvdW50OiBudW1iZXJcbiAgcHVibGljIGNsZWFySXRlbShuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lZGl0b3JzLmZpbmQoKHgpID0+IHgucHJvcGVydHkucHJvcGVydHkubmFtZSA9PT0gbmFtZSkuY2xlYXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJ0bCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnJ0bCA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2RpcmVjdGlvbicpID09PSAncnRsJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmxvYWRPbkluaXQgPSB0cnVlO1xuICAgIHRoaXMuX2RlZnVsdFZhbHVlQ291bnQgPSBbXTtcbiAgICB0aGlzLl9maWx0ZXJJdGVtcyA9IFtdO1xuICAgIHRoaXMuX2ZpbHRlckl0ZW1zQ2xvbmUgPSBbXTtcbiAgICB0aGlzLml0ZW1zID0gdGhpcy5faXRlbXNbMF0uaXRlbXM7XG4gICAgKHRoaXMuZm9ybSBhcyBhbnkpLndpZGdldHMgPSBbXTtcbiAgICAodGhpcy5mb3JtIGFzIGFueSkud2lkZ2V0c1F1ZXJ5LmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAodGhpcy5mb3JtIGFzIGFueSkud2lkZ2V0cy5wdXNoKGVsKTtcbiAgICB9KTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBoYW5kbGVCdXR0b25DbGljaygpIHtcbiAgICB0aGlzLnNlYXJjaFBvcG92ZXIub3BlbigpO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlVmFsdWVDaGFuZ2UoZTogQVhQcm9wZXJ5RWRpdG9yVmFsdWVDaGFuZ2VFdmVudCkge1xuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUluaXRWbGF1ZShlKTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdChlKTtcbiAgfVxuXG4gIGhhbmRsZUl0ZW1SZW1vdmVDbGljayhpdGVtOiBGaWx0ZXJUZXh0SXRlbXNNb2RlbCkge1xuICAgIHRoaXMuX2VkaXRvcnMuZm9yRWFjaCgoZSkgPT4ge1xuICAgICAgaWYgKGUucHJvcGVydHkucHJvcGVydHkubmFtZSA9PSBpdGVtLm5hbWUpIHtcbiAgICAgICAgZS5jbGVhcigpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX2ZpbHRlckl0ZW1zID0gdGhpcy5fZmlsdGVySXRlbXMuZmlsdGVyKChlbCkgPT4gZWwubmFtZSAhPSBpdGVtLm5hbWUpO1xuICB9XG5cbiAgcHVibGljIHNlYXJjaCgpIHtcbiAgICB0aGlzLmZvcm0udmFsaWRhdGUoKS50aGVuKChjKSA9PiB7XG4gICAgICBpZiAoYy5yZXN1bHQpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVySXRlbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2ZpbHRlckl0ZW1zQ2xvbmUuZmlsdGVyKChlbCkgPT4gZWwudmFsdWUgPT09IDAgfHwgZWwudmFsdWUgIT0gbnVsbCAmJiBlbC52YWx1ZSAhPSAnJykpKTtcbiAgICAgICAgdGhpcy5fc2VhcmNoQ291bnQgPSB0aGlzLl9maWx0ZXJJdGVtcy5maWx0ZXIoKHgpID0+IHguY29tcG9uZW50LnByb3BlcnR5LnZpc2libGUgIT0gZmFsc2UpLmxlbmd0aFxuICAgICAgICB0aGlzLnNlYXJjaFBvcG92ZXIuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5vblNlYXJjaFZhbHVlLmVtaXQodGhpcy5fZmlsdGVySXRlbXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5fZWRpdG9ycy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICBlLmNsZWFyKCk7XG4gICAgfSk7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMgPSBbXTtcbiAgICB0aGlzLl9maWx0ZXJJdGVtc0Nsb25lID0gW107XG4gICAgdGhpcy5zZWFyY2hQb3BvdmVyLmNsb3NlKCk7XG4gICAgdGhpcy5fc2VhcmNoQ291bnQgPSBudWxsXG4gICAgdGhpcy5vblNlYXJjaFZhbHVlLmVtaXQodGhpcy5fZmlsdGVySXRlbXMpO1xuICB9XG5cbiAgcmVuZGVyQ29sKGU6IG51bWJlciB8IEFYUHJvcGVydHlDb2xEZWYpIHtcbiAgICBsZXQgY2xhc3NOYW1lOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0eXBlb2YgZSA9PSAnbnVtYmVyJykge1xuICAgICAgY2xhc3NOYW1lLnB1c2goYGNvbC0ke2V9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIGUpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICBjYXNlICdsZyc6XG4gICAgICAgICAgICBjbGFzc05hbWUucHVzaChgY29sLWxnLSR7ZVtrZXldfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWQnOlxuICAgICAgICAgICAgY2xhc3NOYW1lLnB1c2goYGNvbC1tZC0ke2Vba2V5XX1gKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3NtJzpcbiAgICAgICAgICAgIGNsYXNzTmFtZS5wdXNoKGBjb2wtc20tJHtlW2tleV19YCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd4cyc6XG4gICAgICAgICAgICBjbGFzc05hbWUucHVzaChgY29sLXhzLSR7ZVtrZXldfWApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNsYXNzTmFtZS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJyAnKTtcbiAgfVxuXG4gIF9oYW5kbGVTaG93VGl0bGVTZWxlY3RlZChpdGVtKSB7XG4gICAgaWYgKGl0ZW0udGl0bGUpIHtcbiAgICAgIHJldHVybiBpdGVtLnRpdGxlICsgJzonO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVTaG93VmFsdWVTZWxlY3RlZChpdGVtKSB7XG4gICAgaWYgKGl0ZW0uY29tcG9uZW50LnByb3BlcnR5LmVkaXRvckNsYXNzID09PSAnYXgvZWRpdG9ycy9jaGVjaycpIHtcbiAgICAgIHJldHVybiBpdGVtLmNvbXBvbmVudC5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zLmxhYmVsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gaXRlbS50ZXh0VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlVGV4dFZhbHVlKGRhdGFJdGVtOiBhbnkpIHtcbiAgICBsZXQgdGV4dCA9ICcnO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFJdGVtLnZhbHVlKSkge1xuICAgICAgaWYgKGRhdGFJdGVtLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICBkYXRhSXRlbS52YWx1ZS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgIHRleHQgKz1cbiAgICAgICAgICAgIGluZGV4ID09PSBkYXRhSXRlbS52YWx1ZS5sZW5ndGggLSAxXG4gICAgICAgICAgICAgID8gZWxlbWVudFtkYXRhSXRlbS5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zLnRleHRGaWVsZF1cbiAgICAgICAgICAgICAgOiBlbGVtZW50W2RhdGFJdGVtLnByb3BlcnR5LmVkaXRvck9wdGlvbnMudGV4dEZpZWxkXSArICcsJztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9IGVsc2UgaWYgKGRhdGFJdGVtLnByb3BlcnR5LmVkaXRvckNsYXNzID09PSAnYXgvZWRpdG9ycy9kYXRlJykge1xuICAgICAgaWYgKGRhdGFJdGVtLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShkYXRhSXRlbS52YWx1ZSwgJ2phbGFsaScpLmZvcm1hdCgneXl5eS9NTS9ERCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfaGFuZGxlRGVmdWx0VmxhdWUoZGF0YUl0ZW06IGFueSkge1xuICAgIGF3YWl0IHRoaXMuX2hhbmRsZUluaXRWbGF1ZShkYXRhSXRlbSk7XG4gICAgdGhpcy5fZmlsdGVySXRlbXMgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2ZpbHRlckl0ZW1zQ2xvbmUuZmlsdGVyKChlbCkgPT4gZWwudmFsdWUgPT09IDAgfHwgZWwudmFsdWUgIT0gbnVsbCAmJiBlbC52YWx1ZSAhPSAnJykpKTtcbiAgICBpZiAodGhpcy5fZmlsdGVySXRlbXMubGVuZ3RoID09PSB0aGlzLl9kZWZ1bHRWYWx1ZUNvdW50Lmxlbmd0aCAmJiB0aGlzLmxvYWRPbkluaXQgJiYgIXRoaXMuX2lzRW1pdHRlZCkge1xuICAgICAgdGhpcy5faXNFbWl0dGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlYXJjaENvdW50ID0gdGhpcy5fZmlsdGVySXRlbXMuZmlsdGVyKCh4KSA9PiB4LmNvbXBvbmVudC5wcm9wZXJ0eS52aXNpYmxlICE9IGZhbHNlKS5sZW5ndGhcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLm9uU2VhcmNoVmFsdWUuZW1pdCh0aGlzLl9maWx0ZXJJdGVtcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVJbml0VmxhdWUoZSkge1xuICAgIGxldCB2YWx1ZSA9IFtdO1xuICAgIGxldCB0ZXh0OiBhbnkgPSBbXTtcbiAgICBpZiAoZS5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zPy52YWx1ZUZpZWxkICYmIGUudmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKGUucHJvcGVydHkuZWRpdG9yT3B0aW9ucy5yZXR1cm5BbGxEYXRhKSB7XG4gICAgICAgIHZhbHVlID0gZS52YWx1ZTtcbiAgICAgICAgdGV4dCA9IGF3YWl0IHRoaXMuX2hhbmRsZVRleHRWYWx1ZShlKTtcbiAgICAgIH0gZWxzZSBpZiAoZS5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zPy5tb2RlID09ICdtdWx0aXBsZScpIHtcbiAgICAgICAgZS52YWx1ZS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgdmFsdWUucHVzaChlbGVtZW50W2UucHJvcGVydHkuZWRpdG9yT3B0aW9ucy52YWx1ZUZpZWxkXSk7XG4gICAgICAgICAgdGV4dC5wdXNoKGVsZW1lbnRbZS5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zLnRleHRGaWVsZF0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlLnZhbHVlLmxlbmd0aCkge1xuICAgICAgICAgIHZhbHVlID0gZS52YWx1ZVswXVtlLnByb3BlcnR5LmVkaXRvck9wdGlvbnMudmFsdWVGaWVsZF07XG4gICAgICAgICAgdGV4dCA9IGUudmFsdWVbMF1bZS5wcm9wZXJ0eS5lZGl0b3JPcHRpb25zLnRleHRGaWVsZF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBlLnZhbHVlO1xuICAgICAgdGV4dCA9IGUudmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IGZpbmRFbCA9IHRoaXMuX2ZpbHRlckl0ZW1zQ2xvbmUuZmluZCgoZWwpID0+IGVsLnVuaXF1ZU51bWJlciA9PSBlLnByb3BlcnR5LnVuaXF1ZU51bWJlcik7XG4gICAgaWYgKGZpbmRFbCkge1xuICAgICAgZmluZEVsLnZhbHVlID0gdmFsdWU7XG4gICAgICBmaW5kRWwudGV4dFZhbHVlID0gZS5wcm9wZXJ0eS5lZGl0b3JDbGFzcyA9PT0gJ2F4L2VkaXRvcnMvZGF0ZScgPyBuZXcgQVhEYXRlVGltZSh0ZXh0LCAnamFsYWxpJykuZm9ybWF0KCd5eXl5L01NL0REJykgOiB0ZXh0O1xuICAgIH0gZWxzZSBpZiAoZS52YWx1ZSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl9maWx0ZXJJdGVtc0Nsb25lLnB1c2goe1xuICAgICAgICBuYW1lOiBlLnByb3BlcnR5Lm5hbWUsXG4gICAgICAgIHRpdGxlOiBlLnByb3BlcnR5LnRpdGxlLFxuICAgICAgICB1bmlxdWVOdW1iZXI6IGUucHJvcGVydHkudW5pcXVlTnVtYmVyLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgdGV4dFZhbHVlOiBlLnByb3BlcnR5LmVkaXRvckNsYXNzID09PSAnYXgvZWRpdG9ycy9kYXRlJyA/IG5ldyBBWERhdGVUaW1lKHRleHQsICdqYWxhbGknKS5mb3JtYXQoJ3l5eXkvTU0vREQnKSA6IHRleHQsXG4gICAgICAgIGNvbXBvbmVudDogZSxcbiAgICAgICAgZmlsdGVyT3B0aW9uczoge1xuICAgICAgICAgIGZpbHRlcnM6IGUucHJvcGVydHk/LmZpbHRlck9wdGlvbnM/LmZpbHRlcnMgPyBlLnByb3BlcnR5LmZpbHRlck9wdGlvbnMuZmlsdGVycyA6IFtdLFxuICAgICAgICAgIGxvZ2ljOiBlLnByb3BlcnR5Py5maWx0ZXJPcHRpb25zPy5sb2dpYyA/IGUucHJvcGVydHkuZmlsdGVyT3B0aW9ucy5sb2dpYyA6ICdhbmQnLFxuICAgICAgICAgIGlnbm9yZUNhc2U6IGUucHJvcGVydHk/LmZpbHRlck9wdGlvbnM/Lmlnbm9yZUNhc2UgPyBlLnByb3BlcnR5LmZpbHRlck9wdGlvbnMuaWdub3JlQ2FzZSA6IHRydWUsXG4gICAgICAgICAgam9pblR5cGU6IGUucHJvcGVydHk/LmZpbHRlck9wdGlvbnM/LmpvaW5UeXBlID8gZS5wcm9wZXJ0eS5maWx0ZXJPcHRpb25zLmpvaW5UeXBlIDogJ0lOTkVSJyxcbiAgICAgICAgICBvcGVyYXRvcjogZS5wcm9wZXJ0eT8uZmlsdGVyT3B0aW9ucz8ub3BlcmF0b3IgPyBlLnByb3BlcnR5LmZpbHRlck9wdGlvbnMub3BlcmF0b3IgOiBudWxsLFxuICAgICAgICAgIHRydW5jYXRlRGF0ZTogZS5wcm9wZXJ0eT8uZmlsdGVyT3B0aW9ucz8udHJ1bmNhdGVEYXRlID8gZS5wcm9wZXJ0eS5maWx0ZXJPcHRpb25zLnRydW5jYXRlRGF0ZSA6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9wZW4oKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlYXJjaFBvcG92ZXIub3BlbigpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZSgpIHtcbiAgICB0aGlzLnNlYXJjaFBvcG92ZXIuY2xvc2UoKTtcbiAgfVxufVxuIiwiPGF4LWJ1dHRvbiBbYmxvY2tdPVwiYmxvY2tcIiBlbmQgaWNvbj1cImZhciBmYS1zbGlkZXJzLWggaWNvblwiIFtzZWxlY3RlZF09XCJfc2VhcmNoQ291bnQ/IHRydWU6ZmFsc2VcIlxuICAgIFt0eXBlXT1cIiBfc2VhcmNoQ291bnQgPyAncHJpbWFyeSc6J3ByaW1hcnkgb3V0bGluZSdcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbc2l6ZV09XCJzaXplQnV0dG9uXCIgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlQnV0dG9uQ2xpY2soKVwiPiB7e2NhcHRpb24/IGNhcHRpb246J2NvbW1vbi5zZWFyY2gnIHwgdHJhbnN9fVxuICAgIDxzcGFuICpuZ0lmPVwiX3NlYXJjaENvdW50XCIgY2xhc3M9XCJzZWFyY2gtY291bnRcIj57e19zZWFyY2hDb3VudH19PC9zcGFuPjwvYXgtYnV0dG9uPlxuXG5cbjxheC1wb3BvdmVyICNzZWFyY2hQb3AgW3RhcmdldF09XCJyZWZcIiBbcnRsXT1cInJ0bFwiXG4gICAgW3Bvc2l0aW9uXT1cIntvcmlnaW5YOidlbmQnLG9yaWdpblk6J2JvdHRvbScsb3ZlcmxheVg6J2VuZCcsb3ZlcmxheVk6J3RvcCcsb2Zmc2V0WToxMH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm94IGF4LWRyb3Bkb3duLWNvbnRhaW5lci1ib3JkZXJlZCB7e3NpemV9fVwiPlxuICAgICAgICA8YXgtdmFsaWRhdGlvbi1mb3JtICNmb3JtPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBfaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb3Agb2YgaXRlbS5pdGVtc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb3AucHJvcGVydHkudmlzaWJsZSAhPSBmYWxzZVwiIGNsYXNzPVwie3tyZW5kZXJDb2wocHJvcC5wcm9wZXJ0eS5jb2wpfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtbGFiZWw+e3twcm9wLnByb3BlcnR5LnRpdGxlfX08L2F4LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGF4LXByb3BlcnR5LWVkaXRvci1yZW5kZXJlciBbdmFsaWRhdGlvbkZvcm1dPVwiZm9ybVwiIFtwcm9wZXJ0eV09XCJwcm9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZXh0XT1cIl9jb250ZXh0XCIgKG9uVmFsdWVDaGFuZ2UpPVwiaGFuZGxlVmFsdWVDaGFuZ2UoJGV2ZW50KVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxheC1idXR0b24gKGNsaWNrKT1cInNlYXJjaCgpXCI+e3snY29tbW9uLnNlYXJjaCcgfCB0cmFuc319PC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiB0eXBlPVwiYmxhbmsgZGFuZ2VyXCIgKGNsaWNrKT1cImNsZWFyKClcIj57eydjb21tb24ucmVzZXQnIHwgdHJhbnN9fTwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXgtdmFsaWRhdGlvbi1mb3JtPlxuICAgIDwvZGl2PlxuPC9heC1wb3BvdmVyPiJdfQ==
|