ngx-register-base 1.3.1 → 1.3.3
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/esm2022/lib/components/checkbox-selector/checkbox-selector.component.mjs +129 -0
- package/esm2022/lib/components/checkbox-selector/checkbox-selector.types.mjs +8 -0
- package/esm2022/lib/components/column-settings/column-settings.component.mjs +249 -0
- package/esm2022/lib/components/column-settings/components/column-settings-template/column-settings-template.component.mjs +80 -0
- package/esm2022/lib/components/column-settings/consts/column-settings.consts.mjs +10 -0
- package/esm2022/lib/components/column-settings/index.mjs +3 -0
- package/esm2022/lib/components/column-settings/types/column-settings.types.mjs +7 -0
- package/esm2022/lib/components/divider/divider.component.mjs +16 -0
- package/esm2022/lib/components/filter-button/filter-button.component.mjs +19 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.mjs +31 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.mjs +57 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.mjs +110 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.mjs +130 -0
- package/esm2022/lib/components/filters/components/filter-list/filter-list.service.mjs +89 -0
- package/esm2022/lib/components/filters/components/filter-list/filters-section/filters-section.component.mjs +41 -0
- package/esm2022/lib/components/filters/components/filter-list.module.mjs +45 -0
- package/esm2022/lib/components/filters/index.mjs +3 -0
- package/esm2022/lib/components/filters/register-table-filter.component.mjs +155 -0
- package/esm2022/lib/components/filters/register-table-filter.module.mjs +39 -0
- package/esm2022/lib/components/index.mjs +11 -0
- package/esm2022/lib/components/inputs/index.mjs +20 -0
- package/esm2022/lib/components/inputs/inputs.module.mjs +166 -0
- package/esm2022/lib/components/inputs/param-calendar-year/param-calendar-year.component.mjs +45 -0
- package/esm2022/lib/components/inputs/param-custom/param-custom.component.mjs +12 -0
- package/esm2022/lib/components/inputs/param-date/param-date.component.mjs +76 -0
- package/esm2022/lib/components/inputs/param-date-range/param-date-range.component.mjs +60 -0
- package/esm2022/lib/components/inputs/param-date-time/param-date-time.component.mjs +86 -0
- package/esm2022/lib/components/inputs/param-date-time-range/param-date-time-range.component.mjs +95 -0
- package/esm2022/lib/components/inputs/param-month/param-month.component.mjs +50 -0
- package/esm2022/lib/components/inputs/param-month-range/param-month-range.component.mjs +62 -0
- package/esm2022/lib/components/inputs/param-multi-select/param-multi-select.component.mjs +309 -0
- package/esm2022/lib/components/inputs/param-select/param-select.component.mjs +233 -0
- package/esm2022/lib/components/inputs/param-switcher/param-switcher.component.mjs +21 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.mjs +28 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/index.mjs +3 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.mjs +105 -0
- package/esm2022/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.mjs +10 -0
- package/esm2022/lib/components/inputs/param-text/param-text.component.mjs +40 -0
- package/esm2022/lib/components/inputs/param-textarea/param-textarea.component.mjs +38 -0
- package/esm2022/lib/components/inputs/param-toggle/param-toggle.component.mjs +20 -0
- package/esm2022/lib/components/inputs/param-tree/consts/param-tree.consts.mjs +37 -0
- package/esm2022/lib/components/inputs/param-tree/index.mjs +8 -0
- package/esm2022/lib/components/inputs/param-tree/param-tree.component.mjs +207 -0
- package/esm2022/lib/components/inputs/param-tree/services/param-tree.service.mjs +116 -0
- package/esm2022/lib/components/inputs/param-tree/services/sync-tree-loader.service.mjs +20 -0
- package/esm2022/lib/components/inputs/param-tree/tokens/param-tree.tokens.mjs +3 -0
- package/esm2022/lib/components/inputs/param-tree/types/param-tree.types.mjs +2 -0
- package/esm2022/lib/components/inputs/param-tree/utils/param-tree.utils.mjs +9 -0
- package/esm2022/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.mjs +80 -0
- package/esm2022/lib/components/inputs/param-tree-select/param-tree-select.component.mjs +85 -0
- package/esm2022/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.mjs +15 -0
- package/esm2022/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.mjs +12 -0
- package/esm2022/lib/components/menu-constructor/index.mjs +5 -0
- package/esm2022/lib/components/menu-constructor/sproc-menu-constructor.component.mjs +559 -0
- package/esm2022/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.mjs +3 -0
- package/esm2022/lib/components/menu-constructor/store/sproc-menu-constructor.consts.mjs +5 -0
- package/esm2022/lib/components/menu-constructor/store/sproc-menu.tokens.mjs +3 -0
- package/esm2022/lib/components/page-menu/index.mjs +6 -0
- package/esm2022/lib/components/page-menu/schema/sproc-page-menu.consts.mjs +9 -0
- package/esm2022/lib/components/page-menu/schema/sproc-page-menu.schema.mjs +2 -0
- package/esm2022/lib/components/page-menu/schema/sproc-page-menu.tokens.mjs +4 -0
- package/esm2022/lib/components/page-menu/schema/sproc-page-menu.types.mjs +3 -0
- package/esm2022/lib/components/page-menu/sproc-page-menu.component.mjs +275 -0
- package/esm2022/lib/components/paginator/paginator.component.mjs +159 -0
- package/esm2022/lib/components/paginator/types/paginator.types.mjs +2 -0
- package/esm2022/lib/components/register-table/consts/register-table.consts.mjs +4 -0
- package/esm2022/lib/components/register-table/directives/cell-template.directive.mjs +19 -0
- package/esm2022/lib/components/register-table/directives/header-template.directive.mjs +18 -0
- package/esm2022/lib/components/register-table/index.mjs +4 -0
- package/esm2022/lib/components/register-table/model/schema.mjs +10 -0
- package/esm2022/lib/components/register-table/pipes/class-by-type.pipe.mjs +33 -0
- package/esm2022/lib/components/register-table/pipes/sticky-column.pipe.mjs +17 -0
- package/esm2022/lib/components/register-table/register-table.component.mjs +544 -0
- package/esm2022/lib/components/reset-settings-form/reset-settings-form.component.mjs +18 -0
- package/esm2022/lib/components/search-input/search-input.component.mjs +28 -0
- package/esm2022/lib/components/sliding-panel/sliding-panel.component.mjs +48 -0
- package/esm2022/lib/components/sliding-panel/sliding-panel.module.mjs +19 -0
- package/esm2022/lib/consts/date-time.consts.mjs +2 -0
- package/esm2022/lib/consts/index.mjs +4 -0
- package/esm2022/lib/consts/inputs.consts.mjs +4 -0
- package/esm2022/lib/consts/month.consts.mjs +77 -0
- package/esm2022/lib/consts/params.consts.mjs +2 -0
- package/esm2022/lib/consts/register-base.consts.mjs +26 -0
- package/esm2022/lib/core/form-group-wrapper/errors-consts.mjs +8 -0
- package/esm2022/lib/core/form-group-wrapper/form-group-wrapper.mjs +81 -0
- package/esm2022/lib/core/form-group-wrapper/index.mjs +2 -0
- package/esm2022/lib/core/index.mjs +5 -0
- package/esm2022/lib/core/input-control/index.mjs +2 -0
- package/esm2022/lib/core/input-control/input-control.mjs +11 -0
- package/esm2022/lib/core/param/index.mjs +6 -0
- package/esm2022/lib/core/param/param-base.mjs +215 -0
- package/esm2022/lib/core/param/param-date-base.mjs +26 -0
- package/esm2022/lib/core/param/param-select-base.mjs +114 -0
- package/esm2022/lib/core/param/param-text-base.mjs +25 -0
- package/esm2022/lib/core/param/param.tokens.mjs +4 -0
- package/esm2022/lib/core/register-base/index.mjs +3 -0
- package/esm2022/lib/core/register-base/register-base.mjs +575 -0
- package/esm2022/lib/core/register-base/register-base.store.mjs +43 -0
- package/esm2022/lib/directives/date/date-time.types.mjs +34 -0
- package/esm2022/lib/directives/date/format-date.pipe.mjs +33 -0
- package/esm2022/lib/directives/index.mjs +3 -0
- package/esm2022/lib/directives/number/number-only.directive.mjs +41 -0
- package/esm2022/lib/directives/sticky/index.mjs +3 -0
- package/esm2022/lib/directives/sticky/sticky-relative.directive.mjs +32 -0
- package/esm2022/lib/directives/sticky/sticky-relative.service.mjs +32 -0
- package/esm2022/lib/directives/sticky/sticky.directive.mjs +169 -0
- package/esm2022/lib/services/date-time.service.mjs +314 -0
- package/esm2022/lib/services/dialog/dialog.service.mjs +53 -0
- package/esm2022/lib/services/dialog/dialog.types.mjs +2 -0
- package/esm2022/lib/services/dialog/index.mjs +3 -0
- package/esm2022/lib/services/dom-intersection.service.mjs +22 -0
- package/esm2022/lib/services/filter/filters-state.service.mjs +65 -0
- package/esm2022/lib/services/filter/filters-transmit.service.mjs +82 -0
- package/esm2022/lib/services/filter/filters.service.mjs +23 -0
- package/esm2022/lib/services/index.mjs +8 -0
- package/esm2022/lib/services/inputs-state.service.mjs +130 -0
- package/esm2022/lib/services/inputs.service.mjs +88 -0
- package/esm2022/lib/services/key-pressed.service.mjs +37 -0
- package/esm2022/lib/services/resize-window-observer.service.mjs +33 -0
- package/esm2022/lib/services/selected-objects-state.service.mjs +123 -0
- package/esm2022/lib/store/fast-query-store.service.mjs +110 -0
- package/esm2022/lib/store/index.mjs +2 -0
- package/esm2022/lib/types/event.types.mjs +2 -0
- package/esm2022/lib/types/hasura.types.mjs +2 -0
- package/esm2022/lib/types/index.mjs +7 -0
- package/esm2022/lib/types/inputs.types.mjs +19 -0
- package/esm2022/lib/types/params.types.mjs +2 -0
- package/esm2022/lib/types/register-base.types.mjs +6 -0
- package/esm2022/lib/types/sub-types.mjs +2 -0
- package/esm2022/lib/types/user-profile.types.mjs +2 -0
- package/esm2022/lib/utils/functions.mjs +10 -0
- package/esm2022/lib/utils/get-url-segment.mjs +35 -0
- package/esm2022/lib/utils/index.mjs +5 -0
- package/esm2022/lib/utils/prizm.shared.module.mjs +284 -0
- package/esm2022/lib/utils/rxjs.mjs +28 -0
- package/esm2022/lib/utils/select-all-utils.mjs +11 -0
- package/esm2022/ngx-register-base.mjs +5 -0
- package/esm2022/public-api.mjs +9 -0
- package/fesm2022/ngx-register-base.mjs +7487 -0
- package/fesm2022/ngx-register-base.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/checkbox-selector/checkbox-selector.component.d.ts +33 -0
- package/lib/components/checkbox-selector/checkbox-selector.types.d.ts +7 -0
- package/lib/components/column-settings/column-settings.component.d.ts +80 -0
- package/lib/components/column-settings/components/column-settings-template/column-settings-template.component.d.ts +24 -0
- package/lib/components/column-settings/consts/column-settings.consts.d.ts +8 -0
- package/lib/components/column-settings/types/column-settings.types.d.ts +22 -0
- package/lib/components/divider/divider.component.d.ts +6 -0
- package/lib/components/filter-button/filter-button.component.d.ts +8 -0
- package/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.d.ts +14 -0
- package/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.d.ts +25 -0
- package/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.d.ts +39 -0
- package/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.d.ts +41 -0
- package/lib/components/filters/components/filter-list/filter-list.service.d.ts +20 -0
- package/lib/components/filters/components/filter-list/filters-section/filters-section.component.d.ts +15 -0
- package/lib/components/filters/components/filter-list.module.d.ts +15 -0
- package/lib/components/filters/register-table-filter.component.d.ts +40 -0
- package/lib/components/filters/register-table-filter.module.d.ts +13 -0
- package/lib/components/inputs/inputs.module.d.ts +31 -0
- package/lib/components/inputs/param-calendar-year/param-calendar-year.component.d.ts +19 -0
- package/lib/components/inputs/param-custom/param-custom.component.d.ts +6 -0
- package/lib/components/inputs/param-date/param-date.component.d.ts +20 -0
- package/lib/components/inputs/param-date-range/param-date-range.component.d.ts +26 -0
- package/lib/components/inputs/param-date-time/param-date-time.component.d.ts +25 -0
- package/lib/components/inputs/param-date-time-range/param-date-time-range.component.d.ts +28 -0
- package/lib/components/inputs/param-month/param-month.component.d.ts +18 -0
- package/lib/components/inputs/param-month-range/param-month-range.component.d.ts +21 -0
- package/lib/components/inputs/param-multi-select/param-multi-select.component.d.ts +46 -0
- package/lib/components/inputs/param-select/param-select.component.d.ts +34 -0
- package/lib/components/inputs/param-switcher/param-switcher.component.d.ts +8 -0
- package/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.d.ts +2 -0
- package/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.d.ts +19 -0
- package/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.d.ts +8 -0
- package/lib/components/inputs/param-text/param-text.component.d.ts +10 -0
- package/lib/components/inputs/param-textarea/param-textarea.component.d.ts +10 -0
- package/lib/components/inputs/param-toggle/param-toggle.component.d.ts +9 -0
- package/lib/components/inputs/param-tree/consts/param-tree.consts.d.ts +7 -0
- package/lib/components/inputs/param-tree/param-tree.component.d.ts +41 -0
- package/lib/components/inputs/param-tree/services/param-tree.service.d.ts +37 -0
- package/lib/components/inputs/param-tree/services/sync-tree-loader.service.d.ts +10 -0
- package/{src/lib/components/inputs/param-tree/tokens/param-tree.tokens.ts → lib/components/inputs/param-tree/tokens/param-tree.tokens.d.ts} +1 -2
- package/lib/components/inputs/param-tree/types/param-tree.types.d.ts +32 -0
- package/lib/components/inputs/param-tree/utils/param-tree.utils.d.ts +7 -0
- package/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.d.ts +31 -0
- package/lib/components/inputs/param-tree-select/param-tree-select.component.d.ts +30 -0
- package/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.d.ts +6 -0
- package/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.d.ts +5 -0
- package/lib/components/menu-constructor/sproc-menu-constructor.component.d.ts +113 -0
- package/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.d.ts +24 -0
- package/lib/components/menu-constructor/store/sproc-menu-constructor.consts.d.ts +36 -0
- package/{src/lib/components/menu-constructor/store/sproc-menu.tokens.ts → lib/components/menu-constructor/store/sproc-menu.tokens.d.ts} +1 -4
- package/lib/components/page-menu/schema/sproc-page-menu.consts.d.ts +7 -0
- package/lib/components/page-menu/schema/sproc-page-menu.schema.d.ts +30 -0
- package/lib/components/page-menu/schema/sproc-page-menu.tokens.d.ts +3 -0
- package/lib/components/page-menu/schema/sproc-page-menu.types.d.ts +36 -0
- package/lib/components/page-menu/sproc-page-menu.component.d.ts +48 -0
- package/lib/components/paginator/paginator.component.d.ts +52 -0
- package/lib/components/paginator/types/paginator.types.d.ts +15 -0
- package/lib/components/register-table/consts/register-table.consts.d.ts +3 -0
- package/lib/components/register-table/directives/cell-template.directive.d.ts +9 -0
- package/lib/components/register-table/directives/header-template.directive.d.ts +9 -0
- package/lib/components/register-table/model/schema.d.ts +52 -0
- package/lib/components/register-table/pipes/class-by-type.pipe.d.ts +8 -0
- package/lib/components/register-table/pipes/sticky-column.pipe.d.ts +7 -0
- package/lib/components/register-table/register-table.component.d.ts +165 -0
- package/lib/components/reset-settings-form/reset-settings-form.component.d.ts +9 -0
- package/lib/components/search-input/search-input.component.d.ts +11 -0
- package/lib/components/sliding-panel/sliding-panel.component.d.ts +14 -0
- package/lib/components/sliding-panel/sliding-panel.module.d.ts +9 -0
- package/lib/consts/date-time.consts.d.ts +1 -0
- package/lib/consts/index.d.ts +3 -0
- package/lib/consts/inputs.consts.d.ts +4 -0
- package/lib/consts/month.consts.d.ts +49 -0
- package/lib/consts/params.consts.d.ts +1 -0
- package/lib/consts/register-base.consts.d.ts +19 -0
- package/lib/core/form-group-wrapper/errors-consts.d.ts +5 -0
- package/lib/core/form-group-wrapper/form-group-wrapper.d.ts +15 -0
- package/lib/core/input-control/input-control.d.ts +11 -0
- package/lib/core/param/param-base.d.ts +68 -0
- package/lib/core/param/param-date-base.d.ts +18 -0
- package/lib/core/param/param-select-base.d.ts +42 -0
- package/lib/core/param/param-text-base.d.ts +15 -0
- package/{src/lib/core/param/param.tokens.ts → lib/core/param/param.tokens.d.ts} +1 -2
- package/lib/core/register-base/register-base.d.ts +168 -0
- package/lib/core/register-base/register-base.store.d.ts +35 -0
- package/lib/directives/date/date-time.types.d.ts +32 -0
- package/lib/directives/date/format-date.pipe.d.ts +10 -0
- package/lib/directives/number/number-only.directive.d.ts +10 -0
- package/lib/directives/sticky/sticky-relative.directive.d.ts +13 -0
- package/lib/directives/sticky/sticky-relative.service.d.ts +15 -0
- package/lib/directives/sticky/sticky.directive.d.ts +27 -0
- package/lib/services/date-time.service.d.ts +80 -0
- package/lib/services/dialog/dialog.service.d.ts +22 -0
- package/{src/lib/services/dialog/dialog.types.ts → lib/services/dialog/dialog.types.d.ts} +4 -8
- package/lib/services/dom-intersection.service.d.ts +8 -0
- package/lib/services/filter/filters-state.service.d.ts +21 -0
- package/lib/services/filter/filters-transmit.service.d.ts +28 -0
- package/lib/services/filter/filters.service.d.ts +12 -0
- package/lib/services/inputs-state.service.d.ts +57 -0
- package/lib/services/inputs.service.d.ts +28 -0
- package/lib/services/key-pressed.service.d.ts +15 -0
- package/lib/services/resize-window-observer.service.d.ts +11 -0
- package/lib/services/selected-objects-state.service.d.ts +47 -0
- package/lib/store/fast-query-store.service.d.ts +19 -0
- package/{src/lib/types/event.types.ts → lib/types/event.types.d.ts} +1 -1
- package/lib/types/hasura.types.d.ts +35 -0
- package/lib/types/inputs.types.d.ts +41 -0
- package/lib/types/params.types.d.ts +27 -0
- package/lib/types/register-base.types.d.ts +123 -0
- package/lib/types/sub-types.d.ts +8 -0
- package/lib/types/user-profile.types.d.ts +17 -0
- package/lib/utils/functions.d.ts +3 -0
- package/lib/utils/get-url-segment.d.ts +7 -0
- package/lib/utils/prizm.shared.module.d.ts +14 -0
- package/lib/utils/rxjs.d.ts +10 -0
- package/lib/utils/select-all-utils.d.ts +8 -0
- package/package.json +15 -12
- package/schematics/ng-update/replace-menu-state-token/index.d.ts +2 -0
- package/schematics/ng-update/replace-menu-state-token/index.js +29 -0
- package/schematics/ng-update/replace-menu-state-token/index.js.map +1 -0
- package/schematics/ng-update/update-prefix/index.d.ts +2 -0
- package/schematics/ng-update/update-prefix/index.js +33 -0
- package/schematics/ng-update/update-prefix/index.js.map +1 -0
- package/schematics/utils/{utils.ts → utils.d.ts} +2 -9
- package/schematics/utils/utils.js +25 -0
- package/schematics/utils/utils.js.map +1 -0
- package/ng-package.json +0 -15
- package/schematics/ng-update/replace-menu-state-token/index.ts +0 -33
- package/schematics/ng-update/update-prefix/index.ts +0 -38
- package/src/lib/components/checkbox-selector/checkbox-selector.component.html +0 -91
- package/src/lib/components/checkbox-selector/checkbox-selector.component.less +0 -67
- package/src/lib/components/checkbox-selector/checkbox-selector.component.ts +0 -176
- package/src/lib/components/checkbox-selector/checkbox-selector.types.ts +0 -8
- package/src/lib/components/column-settings/column-settings.component.html +0 -160
- package/src/lib/components/column-settings/column-settings.component.less +0 -131
- package/src/lib/components/column-settings/column-settings.component.ts +0 -352
- package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.html +0 -65
- package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.less +0 -79
- package/src/lib/components/column-settings/components/column-settings-template/column-settings-template.component.ts +0 -114
- package/src/lib/components/column-settings/consts/column-settings.consts.ts +0 -9
- package/src/lib/components/column-settings/types/column-settings.types.ts +0 -26
- package/src/lib/components/divider/divider.component.html +0 -4
- package/src/lib/components/divider/divider.component.less +0 -10
- package/src/lib/components/divider/divider.component.ts +0 -12
- package/src/lib/components/filter-button/filter-button.component.html +0 -20
- package/src/lib/components/filter-button/filter-button.component.less +0 -41
- package/src/lib/components/filter-button/filter-button.component.ts +0 -18
- package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.html +0 -22
- package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.less +0 -23
- package/src/lib/components/filters/components/filter-list/filter-edit/filter-edit.component.ts +0 -31
- package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.html +0 -49
- package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.less +0 -37
- package/src/lib/components/filters/components/filter-list/filter-list-footer/filter-list-footer.component.ts +0 -66
- package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.html +0 -147
- package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.less +0 -45
- package/src/lib/components/filters/components/filter-list/filter-list-header/filter-list-header.component.ts +0 -114
- package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.html +0 -44
- package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.less +0 -49
- package/src/lib/components/filters/components/filter-list/filter-list-saved/filter-list-saved.component.ts +0 -167
- package/src/lib/components/filters/components/filter-list/filter-list.service.ts +0 -97
- package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.html +0 -18
- package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.less +0 -55
- package/src/lib/components/filters/components/filter-list/filters-section/filters-section.component.ts +0 -69
- package/src/lib/components/filters/components/filter-list.module.ts +0 -29
- package/src/lib/components/filters/register-table-filter.component.html +0 -53
- package/src/lib/components/filters/register-table-filter.component.less +0 -17
- package/src/lib/components/filters/register-table-filter.component.ts +0 -167
- package/src/lib/components/filters/register-table-filter.module.ts +0 -22
- package/src/lib/components/inputs/inputs.module.ts +0 -104
- package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.html +0 -49
- package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.less +0 -70
- package/src/lib/components/inputs/param-calendar-year/param-calendar-year.component.ts +0 -52
- package/src/lib/components/inputs/param-custom/param-custom.component.html +0 -1
- package/src/lib/components/inputs/param-custom/param-custom.component.ts +0 -9
- package/src/lib/components/inputs/param-date/param-date.component.html +0 -55
- package/src/lib/components/inputs/param-date/param-date.component.less +0 -67
- package/src/lib/components/inputs/param-date/param-date.component.ts +0 -77
- package/src/lib/components/inputs/param-date-range/param-date-range.component.html +0 -45
- package/src/lib/components/inputs/param-date-range/param-date-range.component.less +0 -75
- package/src/lib/components/inputs/param-date-range/param-date-range.component.ts +0 -67
- package/src/lib/components/inputs/param-date-time/param-date-time.component.html +0 -70
- package/src/lib/components/inputs/param-date-time/param-date-time.component.less +0 -72
- package/src/lib/components/inputs/param-date-time/param-date-time.component.ts +0 -101
- package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.html +0 -67
- package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.less +0 -103
- package/src/lib/components/inputs/param-date-time-range/param-date-time-range.component.ts +0 -128
- package/src/lib/components/inputs/param-month/param-month.component.html +0 -46
- package/src/lib/components/inputs/param-month/param-month.component.less +0 -72
- package/src/lib/components/inputs/param-month/param-month.component.ts +0 -55
- package/src/lib/components/inputs/param-month-range/param-month-range.component.html +0 -39
- package/src/lib/components/inputs/param-month-range/param-month-range.component.less +0 -71
- package/src/lib/components/inputs/param-month-range/param-month-range.component.ts +0 -76
- package/src/lib/components/inputs/param-multi-select/param-multi-select.component.html +0 -84
- package/src/lib/components/inputs/param-multi-select/param-multi-select.component.less +0 -108
- package/src/lib/components/inputs/param-multi-select/param-multi-select.component.ts +0 -448
- package/src/lib/components/inputs/param-select/param-select.component.html +0 -106
- package/src/lib/components/inputs/param-select/param-select.component.less +0 -26
- package/src/lib/components/inputs/param-select/param-select.component.ts +0 -318
- package/src/lib/components/inputs/param-switcher/param-switcher.component.html +0 -8
- package/src/lib/components/inputs/param-switcher/param-switcher.component.less +0 -53
- package/src/lib/components/inputs/param-switcher/param-switcher.component.ts +0 -13
- package/src/lib/components/inputs/param-switcher-date-time-range/consts/param-switcher-date-time-range.consts.ts +0 -29
- package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.html +0 -19
- package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.less +0 -76
- package/src/lib/components/inputs/param-switcher-date-time-range/param-switcher-date-time-range.component.ts +0 -134
- package/src/lib/components/inputs/param-switcher-date-time-range/types/param-switcher-date-time-range.types.ts +0 -8
- package/src/lib/components/inputs/param-text/param-text.component.html +0 -59
- package/src/lib/components/inputs/param-text/param-text.component.less +0 -33
- package/src/lib/components/inputs/param-text/param-text.component.ts +0 -36
- package/src/lib/components/inputs/param-textarea/param-textarea.component.html +0 -61
- package/src/lib/components/inputs/param-textarea/param-textarea.component.less +0 -21
- package/src/lib/components/inputs/param-textarea/param-textarea.component.ts +0 -33
- package/src/lib/components/inputs/param-toggle/param-toggle.component.html +0 -40
- package/src/lib/components/inputs/param-toggle/param-toggle.component.less +0 -69
- package/src/lib/components/inputs/param-toggle/param-toggle.component.ts +0 -14
- package/src/lib/components/inputs/param-tree/consts/param-tree.consts.ts +0 -59
- package/src/lib/components/inputs/param-tree/param-tree.component.html +0 -51
- package/src/lib/components/inputs/param-tree/param-tree.component.less +0 -3
- package/src/lib/components/inputs/param-tree/param-tree.component.ts +0 -282
- package/src/lib/components/inputs/param-tree/services/param-tree.service.ts +0 -176
- package/src/lib/components/inputs/param-tree/services/sync-tree-loader.service.ts +0 -18
- package/src/lib/components/inputs/param-tree/types/param-tree.types.ts +0 -39
- package/src/lib/components/inputs/param-tree/utils/param-tree.utils.ts +0 -18
- package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.html +0 -78
- package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.less +0 -109
- package/src/lib/components/inputs/param-tree-multi-select/param-tree-multi-select.component.ts +0 -89
- package/src/lib/components/inputs/param-tree-select/param-tree-select.component.html +0 -54
- package/src/lib/components/inputs/param-tree-select/param-tree-select.component.less +0 -56
- package/src/lib/components/inputs/param-tree-select/param-tree-select.component.ts +0 -91
- package/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.html +0 -5
- package/src/lib/components/inputs/sub-components/param-delete-content-icon/param-delete-content-btn.component.ts +0 -13
- package/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.html +0 -4
- package/src/lib/components/inputs/sub-components/param-invalid-icon/param-invalid-icon.component.ts +0 -11
- package/src/lib/components/menu-constructor/sproc-menu-constructor.component.html +0 -95
- package/src/lib/components/menu-constructor/sproc-menu-constructor.component.less +0 -183
- package/src/lib/components/menu-constructor/sproc-menu-constructor.component.ts +0 -687
- package/src/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.ts +0 -32
- package/src/lib/components/menu-constructor/store/sproc-menu-constructor.consts.ts +0 -46
- package/src/lib/components/page-menu/README.md +0 -60
- package/src/lib/components/page-menu/schema/sproc-page-menu.consts.ts +0 -8
- package/src/lib/components/page-menu/schema/sproc-page-menu.schema.ts +0 -35
- package/src/lib/components/page-menu/schema/sproc-page-menu.tokens.ts +0 -5
- package/src/lib/components/page-menu/schema/sproc-page-menu.types.ts +0 -42
- package/src/lib/components/page-menu/sproc-page-menu.component.html +0 -166
- package/src/lib/components/page-menu/sproc-page-menu.component.less +0 -228
- package/src/lib/components/page-menu/sproc-page-menu.component.ts +0 -337
- package/src/lib/components/paginator/paginator.component.html +0 -97
- package/src/lib/components/paginator/paginator.component.less +0 -101
- package/src/lib/components/paginator/paginator.component.ts +0 -192
- package/src/lib/components/paginator/types/paginator.types.ts +0 -16
- package/src/lib/components/register-table/consts/register-table.consts.ts +0 -3
- package/src/lib/components/register-table/directives/cell-template.directive.ts +0 -11
- package/src/lib/components/register-table/directives/header-template.directive.ts +0 -11
- package/src/lib/components/register-table/model/schema.ts +0 -62
- package/src/lib/components/register-table/pipes/class-by-type.pipe.ts +0 -28
- package/src/lib/components/register-table/pipes/sticky-column.pipe.ts +0 -11
- package/src/lib/components/register-table/register-table.component.html +0 -257
- package/src/lib/components/register-table/register-table.component.less +0 -151
- package/src/lib/components/register-table/register-table.component.ts +0 -743
- package/src/lib/components/reset-settings-form/reset-settings-form.component.html +0 -14
- package/src/lib/components/reset-settings-form/reset-settings-form.component.less +0 -26
- package/src/lib/components/reset-settings-form/reset-settings-form.component.ts +0 -15
- package/src/lib/components/search-input/search-input.component.html +0 -6
- package/src/lib/components/search-input/search-input.component.less +0 -17
- package/src/lib/components/search-input/search-input.component.ts +0 -31
- package/src/lib/components/sliding-panel/sliding-panel.component.html +0 -13
- package/src/lib/components/sliding-panel/sliding-panel.component.less +0 -112
- package/src/lib/components/sliding-panel/sliding-panel.component.ts +0 -36
- package/src/lib/components/sliding-panel/sliding-panel.module.ts +0 -11
- package/src/lib/consts/date-time.consts.ts +0 -1
- package/src/lib/consts/index.ts +0 -8
- package/src/lib/consts/inputs.consts.ts +0 -9
- package/src/lib/consts/month.consts.ts +0 -82
- package/src/lib/consts/params.consts.ts +0 -1
- package/src/lib/consts/register-base.consts.ts +0 -40
- package/src/lib/core/form-group-wrapper/errors-consts.ts +0 -6
- package/src/lib/core/form-group-wrapper/form-group-wrapper.ts +0 -109
- package/src/lib/core/input-control/input-control.ts +0 -30
- package/src/lib/core/param/param-base.ts +0 -262
- package/src/lib/core/param/param-date-base.ts +0 -30
- package/src/lib/core/param/param-select-base.ts +0 -118
- package/src/lib/core/param/param-text-base.ts +0 -23
- package/src/lib/core/register-base/register-base.store.ts +0 -84
- package/src/lib/core/register-base/register-base.ts +0 -854
- package/src/lib/directives/date/date-time.types.ts +0 -36
- package/src/lib/directives/date/format-date.pipe.ts +0 -28
- package/src/lib/directives/number/number-only.directive.ts +0 -36
- package/src/lib/directives/sticky/sticky-relative.directive.ts +0 -30
- package/src/lib/directives/sticky/sticky-relative.service.ts +0 -34
- package/src/lib/directives/sticky/sticky.directive.ts +0 -189
- package/src/lib/services/date-time.service.ts +0 -399
- package/src/lib/services/dialog/dialog.service.ts +0 -62
- package/src/lib/services/dom-intersection.service.ts +0 -23
- package/src/lib/services/filter/filters-state.service.ts +0 -83
- package/src/lib/services/filter/filters-transmit.service.ts +0 -105
- package/src/lib/services/filter/filters.service.ts +0 -21
- package/src/lib/services/inputs-state.service.ts +0 -157
- package/src/lib/services/inputs.service.ts +0 -114
- package/src/lib/services/key-pressed.service.ts +0 -40
- package/src/lib/services/resize-window-observer.service.ts +0 -37
- package/src/lib/services/selected-objects-state.service.ts +0 -159
- package/src/lib/store/fast-query-store.service.ts +0 -132
- package/src/lib/types/hasura.types.ts +0 -41
- package/src/lib/types/inputs.types.ts +0 -63
- package/src/lib/types/params.types.ts +0 -42
- package/src/lib/types/register-base.types.ts +0 -161
- package/src/lib/types/sub-types.ts +0 -15
- package/src/lib/types/user-profile.types.ts +0 -18
- package/src/lib/utils/functions.ts +0 -11
- package/src/lib/utils/get-url-segment.ts +0 -46
- package/src/lib/utils/prizm.shared.module.ts +0 -176
- package/src/lib/utils/rxjs.ts +0 -33
- package/src/lib/utils/select-all-utils.ts +0 -16
- package/tsconfig.lib.json +0 -16
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.schematics.json +0 -26
- package/tsconfig.spec.json +0 -15
- /package/{src/lib/components/column-settings/index.ts → lib/components/column-settings/index.d.ts} +0 -0
- /package/{src/lib/components/filters/index.ts → lib/components/filters/index.d.ts} +0 -0
- /package/{src/lib/components/index.ts → lib/components/index.d.ts} +0 -0
- /package/{src/lib/components/inputs/index.ts → lib/components/inputs/index.d.ts} +0 -0
- /package/{src/lib/components/inputs/param-switcher-date-time-range/index.ts → lib/components/inputs/param-switcher-date-time-range/index.d.ts} +0 -0
- /package/{src/lib/components/inputs/param-tree/index.ts → lib/components/inputs/param-tree/index.d.ts} +0 -0
- /package/{src/lib/components/menu-constructor/index.ts → lib/components/menu-constructor/index.d.ts} +0 -0
- /package/{src/lib/components/page-menu/index.ts → lib/components/page-menu/index.d.ts} +0 -0
- /package/{src/lib/components/register-table/index.ts → lib/components/register-table/index.d.ts} +0 -0
- /package/{src/lib/core/form-group-wrapper/index.ts → lib/core/form-group-wrapper/index.d.ts} +0 -0
- /package/{src/lib/core/index.ts → lib/core/index.d.ts} +0 -0
- /package/{src/lib/core/input-control/index.ts → lib/core/input-control/index.d.ts} +0 -0
- /package/{src/lib/core/param/index.ts → lib/core/param/index.d.ts} +0 -0
- /package/{src/lib/core/register-base/index.ts → lib/core/register-base/index.d.ts} +0 -0
- /package/{src/lib/directives/index.ts → lib/directives/index.d.ts} +0 -0
- /package/{src/lib/directives/sticky/index.ts → lib/directives/sticky/index.d.ts} +0 -0
- /package/{src/lib/services/dialog/index.ts → lib/services/dialog/index.d.ts} +0 -0
- /package/{src/lib/services/index.ts → lib/services/index.d.ts} +0 -0
- /package/{src/lib/store/index.ts → lib/store/index.d.ts} +0 -0
- /package/{src/lib/types/index.ts → lib/types/index.d.ts} +0 -0
- /package/{src/lib/utils/index.ts → lib/utils/index.d.ts} +0 -0
- /package/{src/public-api.ts → public-api.d.ts} +0 -0
package/esm2022/lib/components/menu-constructor/store/sproc-abstract-menu-constructor.store.mjs
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class SprocAbstractMenuConstructorStore {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Byb2MtYWJzdHJhY3QtbWVudS1jb25zdHJ1Y3Rvci5zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9tZW51LWNvbnN0cnVjdG9yL3N0b3JlL3Nwcm9jLWFic3RyYWN0LW1lbnUtY29uc3RydWN0b3Iuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFnQixpQ0FBaUM7Q0F3QnREIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJQ2xzTWVudUl0ZW1JbnB1dCB9IGZyb20gJy4vc3Byb2MtbWVudS1jb25zdHJ1Y3Rvci5jb25zdHMnO1xuaW1wb3J0IHsgSUNsc01lbnVJdGVtIH0gZnJvbSAnLi4vLi4vcGFnZS1tZW51JztcbmltcG9ydCB7IEFwb2xsbyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjYWxhclVVSUQgfSBmcm9tICdoYXN1cmEnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3Byb2NBYnN0cmFjdE1lbnVDb25zdHJ1Y3RvclN0b3JlIHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IF9tZW51SXRlbXMkOiBCZWhhdmlvclN1YmplY3Q8SUNsc01lbnVJdGVtW10+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfYXBvbGxvOiBBcG9sbG87XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBfZHI6IERlc3Ryb3lSZWY7XG5cbiAgcHVibGljIGFic3RyYWN0IG1lbnVJdGVtcyQ6IE9ic2VydmFibGU8SUNsc01lbnVJdGVtW10+O1xuICBwdWJsaWMgYWJzdHJhY3QgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHB1YmxpYyBhYnN0cmFjdCBvcmlnaW5hbE1lbnU6IElDbHNNZW51SXRlbVtdO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNZW51KCk6IElDbHNNZW51SXRlbVtdO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCB1cGRhdGVNZW51KFxuICAgIG9iamVjdHNUb1VwZGF0ZToge1xuICAgICAgX3NldDogSUNsc01lbnVJdGVtSW5wdXQ7XG4gICAgICB3aGVyZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgICB9W10sXG4gICAgb2JqZWN0c1RvSW5zZXJ0PzogSUNsc01lbnVJdGVtSW5wdXRbXSxcbiAgICBpZHNUb0RlbGV0ZT86IFNjYWxhclVVSURbXVxuICApOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRMb2FkaW5nKHN0YXRlOiBib29sZWFuKTogdm9pZDtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2ZldGNoTWVudSgpOiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export const ROOT_TITLE = 'root';
|
|
2
|
+
export const NEW_ITEM_PREFIX = 'NEW_';
|
|
3
|
+
export const MIGRATION_HINT = 'Генерирует SQL код для миграции таблицы cls_menu_item. Генерация кода происходит на основе последней версии сохраненного меню.';
|
|
4
|
+
export const EMPTY_UUID = '00000000-0000-0000-0000-000000000000';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Byb2MtbWVudS1jb25zdHJ1Y3Rvci5jb25zdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvbWVudS1jb25zdHJ1Y3Rvci9zdG9yZS9zcHJvYy1tZW51LWNvbnN0cnVjdG9yLmNvbnN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQztBQUVqQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDekIsZ0lBQWdJLENBQUM7QUF3Qm5JLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjYWxhclVVSUQgfSBmcm9tICdoYXN1cmEnO1xuaW1wb3J0IHsgSUNsc01lbnVJdGVtIH0gZnJvbSAnLi4vLi4vcGFnZS1tZW51JztcblxuZXhwb3J0IGludGVyZmFjZSBGbGF0Tm9kZSB7XG4gIGlkOiBTY2FsYXJVVUlEO1xuICBpZF9wYXJlbnQ6IFNjYWxhclVVSUQgfCBudWxsO1xuICB0aXRsZTogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG4gIHJvdXRlOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbiAgb3JkZXJfbnVtOiBudW1iZXI7XG4gIGFsbG93ZWRfcm9sZXM6IHN0cmluZyB8IG51bGw7XG4gIGRlcHRoOiBudW1iZXI7XG4gIGNvbGxhcHNlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBST09UX1RJVExFID0gJ3Jvb3QnO1xuXG5leHBvcnQgY29uc3QgTkVXX0lURU1fUFJFRklYID0gJ05FV18nO1xuXG5leHBvcnQgY29uc3QgTUlHUkFUSU9OX0hJTlQgPVxuICAn0JPQtdC90LXRgNC40YDRg9C10YIgU1FMINC60L7QtCDQtNC70Y8g0LzQuNCz0YDQsNGG0LjQuCDRgtCw0LHQu9C40YbRiyBjbHNfbWVudV9pdGVtLiDQk9C10L3QtdGA0LDRhtC40Y8g0LrQvtC00LAg0L/RgNC+0LjRgdGF0L7QtNC40YIg0L3QsCDQvtGB0L3QvtCy0LUg0L/QvtGB0LvQtdC00L3QtdC5INCy0LXRgNGB0LjQuCDRgdC+0YXRgNCw0L3QtdC90L3QvtCz0L4g0LzQtdC90Y4uJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ2xzTWVudUl0ZW1SZXNwb25zZSB7XG4gIHVzcl9jbHNfbWVudV9pdGVtOiBJQ2xzTWVudUl0ZW1bXTtcbn1cblxuZXhwb3J0IHR5cGUgQWxlcnRBcHBlYXJhbmNlID0gJ2luZm8nIHwgJ25lZ2F0aXZlJyB8ICd3YXJuaW5nJyB8ICdwb3NpdGl2ZScgfCAnbmV1dHJhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNsc01lbnVJdGVtSW5wdXQge1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgcm91dGU6IHN0cmluZyB8IG51bGw7XG4gIGNvZGU6IHN0cmluZyB8IG51bGw7XG4gIGljb246IHN0cmluZyB8IG51bGw7XG4gIG9yZGVyX251bTogbnVtYmVyO1xuICBhbGxvd2VkX3JvbGVzOiBzdHJpbmdbXSB8IG51bGw7XG4gIGlkX3BhcmVudDogU2NhbGFyVVVJRCB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1lbnVDb25zdHJ1Y3RvckVycm9yIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgY29udGVudDogYW55O1xuICBhcHBlYXJhbmNlOiBBbGVydEFwcGVhcmFuY2U7XG59XG5cbmV4cG9ydCBjb25zdCBFTVBUWV9VVUlEID0gJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCc7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const MENU_CONSTRUCTOR_STORE_TOKEN = new InjectionToken('MENU_CONSTRUCTOR_STORE_TOKEN');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Byb2MtbWVudS50b2tlbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvbWVudS1jb25zdHJ1Y3Rvci9zdG9yZS9zcHJvYy1tZW51LnRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUM1RCw4QkFBOEIsQ0FDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTcHJvY0Fic3RyYWN0TWVudUNvbnN0cnVjdG9yU3RvcmUgfSBmcm9tICcuL3Nwcm9jLWFic3RyYWN0LW1lbnUtY29uc3RydWN0b3Iuc3RvcmUnO1xuXG5leHBvcnQgY29uc3QgTUVOVV9DT05TVFJVQ1RPUl9TVE9SRV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTcHJvY0Fic3RyYWN0TWVudUNvbnN0cnVjdG9yU3RvcmU+KFxuICAnTUVOVV9DT05TVFJVQ1RPUl9TVE9SRV9UT0tFTicsXG4pO1xuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { SprocPageMenuComponent } from './sproc-page-menu.component';
|
|
2
|
+
export * from './schema/sproc-page-menu.schema';
|
|
3
|
+
export * from './schema/sproc-page-menu.tokens';
|
|
4
|
+
export * from './schema/sproc-page-menu.consts';
|
|
5
|
+
export * from './schema/sproc-page-menu.types';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvcGFnZS1tZW51L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTcHJvY1BhZ2VNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9zcHJvYy1wYWdlLW1lbnUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hL3Nwcm9jLXBhZ2UtbWVudS5zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEvc3Byb2MtcGFnZS1tZW51LnRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL3NjaGVtYS9zcHJvYy1wYWdlLW1lbnUuY29uc3RzJztcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hL3Nwcm9jLXBhZ2UtbWVudS50eXBlcyc7XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const SIDE_MENU_OPENED_WIDTH = 350;
|
|
2
|
+
export const SIDE_MENU_CLOSED_WIDTH = 48;
|
|
3
|
+
export var EPageMenuIconsSrc;
|
|
4
|
+
(function (EPageMenuIconsSrc) {
|
|
5
|
+
EPageMenuIconsSrc["CHEVRON_RIGHT"] = "assets/ngx-register-base/icons/chevron-right.svg";
|
|
6
|
+
EPageMenuIconsSrc["CHEVRON_UP"] = "assets/ngx-register-base/icons/chevron-up.svg";
|
|
7
|
+
EPageMenuIconsSrc["MENU_CHEVRON"] = "assets/ngx-register-base/icons/chevron-menu.svg";
|
|
8
|
+
})(EPageMenuIconsSrc || (EPageMenuIconsSrc = {}));
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Byb2MtcGFnZS1tZW51LmNvbnN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLW1lbnUvc2NoZW1hL3Nwcm9jLXBhZ2UtbWVudS5jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUV6QyxNQUFNLENBQU4sSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQzNCLHVGQUFrRSxDQUFBO0lBQ2xFLGlGQUE0RCxDQUFBO0lBQzVELHFGQUFnRSxDQUFBO0FBQ2xFLENBQUMsRUFKVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSTVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFNJREVfTUVOVV9PUEVORURfV0lEVEggPSAzNTA7XG5leHBvcnQgY29uc3QgU0lERV9NRU5VX0NMT1NFRF9XSURUSCA9IDQ4O1xuXG5leHBvcnQgZW51bSBFUGFnZU1lbnVJY29uc1NyYyB7XG4gIENIRVZST05fUklHSFQgPSAnYXNzZXRzL25neC1yZWdpc3Rlci1iYXNlL2ljb25zL2NoZXZyb24tcmlnaHQuc3ZnJyxcbiAgQ0hFVlJPTl9VUCA9ICdhc3NldHMvbmd4LXJlZ2lzdGVyLWJhc2UvaWNvbnMvY2hldnJvbi11cC5zdmcnLFxuICBNRU5VX0NIRVZST04gPSAnYXNzZXRzL25neC1yZWdpc3Rlci1iYXNlL2ljb25zL2NoZXZyb24tbWVudS5zdmcnLFxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Byb2MtcGFnZS1tZW51LnNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLW1lbnUvc2NoZW1hL3Nwcm9jLXBhZ2UtbWVudS5zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNjcmVlbiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmF2aWdhdGlvbk1lbnVJdGVtIHtcbiAgdGV4dDogc3RyaW5nO1xuICBleHRyYVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsO1xuICBpY29uPzogc3RyaW5nIHwgbnVsbDtcbiAgaXNHcm91cD86IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogTmF2aWdhdGlvbk1lbnVJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSXRlbSBleHRlbmRzIE5hdmlnYXRpb25NZW51SXRlbSB7XG4gIGlkOiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogQ3VzdG9tSXRlbVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOYXZpZ2F0aW9uQmFzZSBleHRlbmRzIElTY3JlZW4ge1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBJTmF2aWdhdGlvbkJhc2VbXTtcbiAgcm91dGU/OiBzdHJpbmc7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBhY2Nlc3NlZFJvbGVzPzogc3RyaW5nW107IC8vINC10YHQu9C4INC90LUg0LfQsNC00LDQvSwg0YLQviDQtNC+0YHRgtGD0L/QtdC9INC00LvRjyDQstGB0LXRhVxuICBwYXJlbnQ/OiBJTmF2aWdhdGlvbkJhc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5hdmlnYXRpb24gZXh0ZW5kcyBPbWl0PElOYXZpZ2F0aW9uQmFzZSwgJ2lzRXhwYW5kZWQnPiB7XG4gIGNvZGU6IHN0cmluZztcbiAgY2hpbGRyZW4/OiBJTmF2aWdhdGlvbltdO1xuICBwYXJlbnQ/OiBJTmF2aWdhdGlvbjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
export const PAGE_MENU_STATE = new InjectionToken('PAGE_MENU_STATE');
|
|
3
|
+
// export const PAGE_MENU_STORE = new InjectionToken<AbstractMenuStateService>('PAGE_MENU_STATE');
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Byb2MtcGFnZS1tZW51LnRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLW1lbnUvc2NoZW1hL3Nwcm9jLXBhZ2UtbWVudS50b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQTJCLGlCQUFpQixDQUFDLENBQUM7QUFDL0Ysa0dBQWtHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0TWVudVN0YXRlU2VydmljZSB9IGZyb20gJy4vc3Byb2MtcGFnZS1tZW51LnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IFBBR0VfTUVOVV9TVEFURSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBYnN0cmFjdE1lbnVTdGF0ZVNlcnZpY2U+KCdQQUdFX01FTlVfU1RBVEUnKTtcbi8vIGV4cG9ydCBjb25zdCBQQUdFX01FTlVfU1RPUkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48QWJzdHJhY3RNZW51U3RhdGVTZXJ2aWNlPignUEFHRV9NRU5VX1NUQVRFJyk7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export class AbstractMenuStateService {
|
|
2
|
+
}
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Byb2MtcGFnZS1tZW51LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZ2lzdGVyLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2UtbWVudS9zY2hlbWEvc3Byb2MtcGFnZS1tZW51LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxNQUFNLE9BQWdCLHdCQUF3QjtDQXlCN0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTY2FsYXJVVUlEIH0gZnJvbSAnaGFzdXJhJztcblxuZXhwb3J0IGludGVyZmFjZSBJQ2xzTWVudUl0ZW0ge1xuICBjb2RlOiBzdHJpbmc7XG4gIGlkOiBTY2FsYXJVVUlEO1xuICBpZF9wYXJlbnQ6IHN0cmluZztcbiAgcm91dGU6IHN0cmluZyB8IG51bGw7XG4gIHRpdGxlOiBzdHJpbmcgfCBudWxsO1xuICBpY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGFsbG93ZWRfcm9sZXM6IHN0cmluZ1tdIHwgbnVsbDtcbiAgaXNfZGVsZXRlZDogYm9vbGVhbjtcbiAgb3JkZXJfbnVtOiBudW1iZXIgfCBudWxsO1xuICBjaGlsZHJlbj86IElDbHNNZW51SXRlbVtdO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RNZW51U3RhdGVTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE9ic2VydmFibGUsINC+0YLRgNCw0LbQsNGO0YnQuNC5INGC0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDQvNC10L3RjiAo0L7RgtC60YDRi9GC0L4gLyDQt9Cw0LrRgNGL0YLQvilcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpc09wZW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlLCDRgdC40LPQvdCw0LvQuNC30LjRgNGD0Y7RidC40LksINC00L7RgdGC0YPQv9C90L4g0LvQuCDQv9C10YDQtdC60LvRjtGH0LXQvdC40LUg0LzQtdC90Y5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0b2dnbGVEaXNhYmxlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqINCi0LXQutGD0YnQtdC1INGB0LjQvdGF0YDQvtC90L3QvtC1INGB0L7RgdGC0L7Rj9C90LjQtSDQvNC10L3RjlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldCBpc09wZW4oKTogYm9vbGVhbjtcblxuICAvKipcbiAgICog0J/RgNC40L3Rg9C00LjRgtC10LvRjNC90L4g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0YHQvtGB0YLQvtGP0L3QuNC1INC80LXQvdGOXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2V0T3Blbih2YWx1ZTogYm9vbGVhbik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqINCf0LXRgNC10LrQu9GO0YfQuNGC0Ywg0YHQvtGB0YLQvtGP0L3QuNC1INC80LXQvdGOXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdG9nZ2xlKCk6IHZvaWQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, HostBinding, inject, input, signal, } from '@angular/core';
|
|
2
|
+
import { EPageMenuIconsSrc, SIDE_MENU_CLOSED_WIDTH, SIDE_MENU_OPENED_WIDTH, } from './schema/sproc-page-menu.consts';
|
|
3
|
+
import { Router, RouterLink } from '@angular/router';
|
|
4
|
+
import { PAGE_MENU_STATE } from './schema/sproc-page-menu.tokens';
|
|
5
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
6
|
+
import { AsyncPipe, NgClass, NgOptimizedImage, NgTemplateOutlet } from '@angular/common';
|
|
7
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class SprocPageMenuComponent {
|
|
10
|
+
constructor() {
|
|
11
|
+
this.menuItems = input.required();
|
|
12
|
+
this.menuIconsSrc = input('');
|
|
13
|
+
this.openLogoSrc = input('');
|
|
14
|
+
this.closedLogoSrc = input('');
|
|
15
|
+
this.findActiveSection = input.required();
|
|
16
|
+
// TODO Добавить кастомную ширину меню
|
|
17
|
+
this.menuOpenedWidth = `${SIDE_MENU_OPENED_WIDTH}px`;
|
|
18
|
+
this.menuClosedWidth = `${SIDE_MENU_CLOSED_WIDTH}px`;
|
|
19
|
+
this._router = inject(Router);
|
|
20
|
+
this._state = inject(PAGE_MENU_STATE);
|
|
21
|
+
this._dr = inject(DestroyRef);
|
|
22
|
+
this.toggleDisabled$ = this._state.toggleDisabled$;
|
|
23
|
+
this.menuState = toSignal(this._state.isOpen$);
|
|
24
|
+
this.selectedSection = signal('register');
|
|
25
|
+
this.expandedIds = signal(new Set());
|
|
26
|
+
this.selectedItem = computed(() => this.selectedSection() ? this.codeToItem[this.selectedSection()] : null);
|
|
27
|
+
// Хранит parent элементы выбранного пункта меню
|
|
28
|
+
this.parentItems = computed(() => {
|
|
29
|
+
const item = this.selectedItem();
|
|
30
|
+
if (!item) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
const parents = [];
|
|
34
|
+
let current = item.parent;
|
|
35
|
+
while (current) {
|
|
36
|
+
parents.push(current);
|
|
37
|
+
current = current.parent;
|
|
38
|
+
}
|
|
39
|
+
return parents;
|
|
40
|
+
});
|
|
41
|
+
this.parentItemCodes = computed(() => {
|
|
42
|
+
const parentItems = this.parentItems();
|
|
43
|
+
return new Set(parentItems.map((val) => val.code ?? ''));
|
|
44
|
+
});
|
|
45
|
+
this.navigationHierarchy = signal([]);
|
|
46
|
+
this.codeToItem = {};
|
|
47
|
+
this.isOpenServiceVersionInfo = false;
|
|
48
|
+
this.ICONS_SRC = EPageMenuIconsSrc;
|
|
49
|
+
// Построить меню и найти активную секцию
|
|
50
|
+
effect(() => {
|
|
51
|
+
const menuItems = this.menuItems();
|
|
52
|
+
this.buildMenu(menuItems);
|
|
53
|
+
this._findActiveSection();
|
|
54
|
+
}, { allowSignalWrites: true });
|
|
55
|
+
}
|
|
56
|
+
addMenuScrollbar(id) {
|
|
57
|
+
setTimeout(() => {
|
|
58
|
+
// TODO Меню второго уровня есть скролл,третьего нет
|
|
59
|
+
const collapsedMenu = document.querySelector(`[id="${id}"]`);
|
|
60
|
+
const sideMenu = collapsedMenu?.querySelector('#side-menu__subitems');
|
|
61
|
+
const sideMenuLevelTwo = sideMenu?.querySelector('#side-menu__subitems');
|
|
62
|
+
const subitem = sideMenuLevelTwo
|
|
63
|
+
? sideMenuLevelTwo.querySelectorAll('.side-menu__subitem')
|
|
64
|
+
: sideMenu?.querySelectorAll('.side-menu__subitem');
|
|
65
|
+
if (subitem) {
|
|
66
|
+
const lastSubitem = subitem[subitem.length - 1];
|
|
67
|
+
const rect = lastSubitem?.getBoundingClientRect();
|
|
68
|
+
if (sideMenu && window.innerHeight - rect.bottom < 0) {
|
|
69
|
+
// 40 тк высота плашки меню
|
|
70
|
+
sideMenu.style.height = `${subitem.length * 40 + (window.innerHeight - rect.bottom - 1)}px`;
|
|
71
|
+
sideMenu.style.overflowY = 'scroll';
|
|
72
|
+
sideMenu.style.overflowX = 'hidden';
|
|
73
|
+
}
|
|
74
|
+
if (window.innerHeight - rect.bottom < 0 && sideMenuLevelTwo) {
|
|
75
|
+
// 40 тк высота плашки меню
|
|
76
|
+
sideMenuLevelTwo.style.height = `${subitem.length * 40 + (window.innerHeight - rect.bottom - 1)}px`;
|
|
77
|
+
sideMenuLevelTwo.style.overflowY = 'scroll';
|
|
78
|
+
sideMenuLevelTwo.style.overflowX = 'hidden';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}, 0);
|
|
82
|
+
}
|
|
83
|
+
ngOnInit() {
|
|
84
|
+
this._state.isOpen$.subscribe((menuState) => {
|
|
85
|
+
if (menuState) {
|
|
86
|
+
this.findRoute(this.selectedSection());
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
this.collapseMenu();
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
toggleNavigation() {
|
|
94
|
+
this._state.toggle();
|
|
95
|
+
}
|
|
96
|
+
toggleItem(item) {
|
|
97
|
+
this.addMenuScrollbar(item.id || '');
|
|
98
|
+
this.expandedIds.update((currentExpand) => {
|
|
99
|
+
const code = item.code;
|
|
100
|
+
const copy = new Set(currentExpand);
|
|
101
|
+
if (copy.has(code)) {
|
|
102
|
+
copy.delete(code);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
copy.clear();
|
|
106
|
+
copy.add(code);
|
|
107
|
+
const parents = this.getParents(item);
|
|
108
|
+
for (const parent of parents) {
|
|
109
|
+
copy.add(parent.code);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return copy;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
collapseMenu(exception) {
|
|
116
|
+
let codes = [];
|
|
117
|
+
if (exception) {
|
|
118
|
+
const parents = this.getParents(exception);
|
|
119
|
+
codes = [exception.code, ...parents.map((parent) => parent.code)];
|
|
120
|
+
}
|
|
121
|
+
this.expandedIds.set(new Set(codes));
|
|
122
|
+
}
|
|
123
|
+
get isMenuOpened() {
|
|
124
|
+
return this._state.isOpen;
|
|
125
|
+
}
|
|
126
|
+
get isMenuClosed() {
|
|
127
|
+
return !this._state.isOpen;
|
|
128
|
+
}
|
|
129
|
+
isExternalLink(route) {
|
|
130
|
+
if (!route) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
return /^(https?:\/\/|www\.)/i.test(route);
|
|
134
|
+
}
|
|
135
|
+
handleNavigation(item) {
|
|
136
|
+
if (!item.route) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
if (this.isExternalLink(item.route)) {
|
|
140
|
+
window.open(item.route, '_blank');
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this._router.navigate([item.route]);
|
|
144
|
+
this.selectedSection.set(item.code ?? '');
|
|
145
|
+
if (this.isMenuClosed) {
|
|
146
|
+
this.collapseMenu();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
serviceInfoOnActiveZone(active) {
|
|
151
|
+
this.isOpenServiceVersionInfo = active && this.isOpenServiceVersionInfo;
|
|
152
|
+
}
|
|
153
|
+
serviceInfoOnObscured(obscured) {
|
|
154
|
+
if (obscured) {
|
|
155
|
+
this.isOpenServiceVersionInfo = false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
buildMenu(menu) {
|
|
159
|
+
const sortedMenuItems = [...menu].sort((a, b) => (a.order_num ?? 0) - (b.order_num ?? 0));
|
|
160
|
+
const menuHash = {};
|
|
161
|
+
for (const item of sortedMenuItems) {
|
|
162
|
+
menuHash[item.id] = {
|
|
163
|
+
title: item.title ?? '',
|
|
164
|
+
route: item.route ?? '',
|
|
165
|
+
id: item.id,
|
|
166
|
+
children: [],
|
|
167
|
+
code: item.code,
|
|
168
|
+
icon: item.icon,
|
|
169
|
+
accessedRoles: undefined,
|
|
170
|
+
parent: undefined,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
const rootMenuItems = [];
|
|
174
|
+
for (const item of sortedMenuItems) {
|
|
175
|
+
if (item.id_parent && menuHash[item.id_parent]) {
|
|
176
|
+
const parent = menuHash[item.id_parent];
|
|
177
|
+
const child = menuHash[item.id];
|
|
178
|
+
child.parent = parent;
|
|
179
|
+
parent.children?.push(child);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
rootMenuItems.push(menuHash[item.id]);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
this.navigationHierarchy.set(rootMenuItems);
|
|
186
|
+
this.codeToItem = {};
|
|
187
|
+
for (const id of Object.keys(menuHash)) {
|
|
188
|
+
const item = menuHash[id];
|
|
189
|
+
if (item.code) {
|
|
190
|
+
this.codeToItem[item.code] = item;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
findRoute(routeToFind) {
|
|
195
|
+
const routeItem = this.codeToItem[routeToFind];
|
|
196
|
+
if (!routeItem) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (this.isMenuOpened) {
|
|
200
|
+
this.toggleItem(routeItem);
|
|
201
|
+
}
|
|
202
|
+
this.selectedSection.set(routeItem.code ?? '');
|
|
203
|
+
}
|
|
204
|
+
_findActiveSection() {
|
|
205
|
+
this.findActiveSection()(this.resetSelection, this.findRoute);
|
|
206
|
+
}
|
|
207
|
+
getParents(item) {
|
|
208
|
+
const parents = [];
|
|
209
|
+
let current = item.parent;
|
|
210
|
+
while (current) {
|
|
211
|
+
parents.push(current);
|
|
212
|
+
current = current.parent;
|
|
213
|
+
}
|
|
214
|
+
return parents;
|
|
215
|
+
}
|
|
216
|
+
resetSelection() {
|
|
217
|
+
this.expandedIds.set(new Set());
|
|
218
|
+
this.selectedSection.set('');
|
|
219
|
+
}
|
|
220
|
+
collectChildren(item) {
|
|
221
|
+
const result = [];
|
|
222
|
+
const queue = item.children?.slice() ?? [];
|
|
223
|
+
let index = 0;
|
|
224
|
+
while (index < queue.length) {
|
|
225
|
+
const node = queue[index];
|
|
226
|
+
result.push(node);
|
|
227
|
+
if (node.children) {
|
|
228
|
+
queue.push(...node.children);
|
|
229
|
+
}
|
|
230
|
+
index += 1;
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SprocPageMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
235
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SprocPageMenuComponent, isStandalone: true, selector: "sproc-page-menu", inputs: { menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: true, isRequired: true, transformFunction: null }, menuIconsSrc: { classPropertyName: "menuIconsSrc", publicName: "menuIconsSrc", isSignal: true, isRequired: false, transformFunction: null }, openLogoSrc: { classPropertyName: "openLogoSrc", publicName: "openLogoSrc", isSignal: true, isRequired: false, transformFunction: null }, closedLogoSrc: { classPropertyName: "closedLogoSrc", publicName: "closedLogoSrc", isSignal: true, isRequired: false, transformFunction: null }, findActiveSection: { classPropertyName: "findActiveSection", publicName: "findActiveSection", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "style.--page-menu-opened-width": "this.menuOpenedWidth", "style.--page-menu-closed-width": "this.menuClosedWidth" } }, ngImport: i0, template: "<section [class]=\"menuState() ? 'side-menu side-menu_opened' : 'side-menu side-menu_closed'\">\n <div class=\"side-menu__header\">\n <img\n [src]=\"menuState() ? openLogoSrc() : closedLogoSrc()\"\n alt=\"Logo Icon\"\n class=\"side-menu__header__logo\"\n />\n <img\n (click)=\"toggleNavigation()\"\n [class.disabled]=\"toggleDisabled$ | async\"\n [height]=\"16\"\n [ngClass]=\"menuState() ? 'side-menu__header__chevron_opened' : 'side-menu__header__chevron_closed'\"\n [ngSrc]=\"ICONS_SRC.MENU_CHEVRON\" [width]=\"16\" alt=\"Menu Chevron\"/>\n </div>\n\n @if (menuState()) {\n <div class=\"expanded-menu-content\">\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"\n menuItemOpened;\n context: { navigation_item: navigation_item, level: 0 }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-content></ng-content>\n } @else {\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"closedMenu; context: { navigation_item: navigation_item }\"\n ></ng-container>\n }\n }\n</section>\n\n<ng-template #menuItemOpened let-level=\"level\" let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code;\n\n <a\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [@fadeInOut]\n [class.menu-item_selected]=\"isHighlighted\"\n [class.padding-level-0]=\"level === 0\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n [style.padding-left.px]=\"level === 0 ? 0 : 44 + level * 20\"\n class=\"menu-item\"\n >\n @if (icon) {\n <span class=\"menu-item__icon\">\n <img [alt]=\"icon\" [width]=\"16\" [height]=\"16\" [ngSrc]=\"menuIconsSrc() + icon + '.svg'\">\n </span>\n }\n <span class=\"menu-item__title\"> {{ navigation_item.title }} </span>\n @if (childrenCount > 0) {\n <img\n class=\"menu-item__chevron\"\n [class.menu-item__chevron_rotated]=\"!isExpanded\"\n [alt]=\"icon\" [width]=\"16\" [height]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_UP\">\n }\n </a>\n @if (isExpanded && childrenCount > 0) {\n @for (children of navigation_item.children ?? []; track $index) {\n <ng-container\n *ngTemplateOutlet=\"menuItemOpened; context: { navigation_item: children, level: level + 1 }\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #closedMenu let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n\n <div\n (mouseleave)=\"collapseMenu()\"\n [id]=\"navigation_item.id\"\n class=\"collapsed-menu-content\"\n >\n @if (icon) {\n <a\n class=\"menu-item__icon_closed\"\n [class.menu-item_selected]=\"isHighlighted\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n (mouseenter)=\"toggleItem(navigation_item)\">\n <img\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"menuIconsSrc() + icon + '.svg'\" alt=\"Menu Chevron\"/>\n </a>\n }\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: 1, topPadding: 1 }\n \"\n >\n </ng-container>\n @if (isExpanded && childrenCount > 0) {\n <div class=\"static-item\">\n <span class=\"static-item__element\">\n {{ navigation_item.title }}\n </span>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #menuClosedItem let-item=\"item\" let-level=\"level\" let-topPadding=\"topPadding\">\n @let isExpanded = expandedIds().has(item.code);\n <div [id]=\"item.id\">\n @if (isExpanded && item.children.length > 0) {\n <div\n class=\"side-menu__subitems\"\n [class.padding-level-1]=\"level === 1\"\n [style.top.px]=\"topPadding * 40\"\n id=\"side-menu__subitems\"\n >\n @for (navigation_item of item.children; track navigation_item; let index = $index) {\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n <a\n class=\"side-menu__subitem\"\n [class.menu-item_selected]=\"isHighlighted\"\n (mouseenter)=\"childrenCount > 0 ? toggleItem(navigation_item) : collapseMenu(navigation_item)\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n >\n <span\n [class.padding-level-1]=\"level === 1\">{{\n navigation_item.title\n }}</span>\n\n @if (childrenCount > 0) {\n <img\n class=\"chevron-right\"\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_RIGHT\" alt=\"Menu Chevron\"/>\n }\n </a>\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: level + 1, topPadding: index }\n \"\n ></ng-container>\n }\n </div>\n }\n </div>\n</ng-template>\n", styles: [":host{background:var(--page-menu-main);height:100vh;max-height:100vh;z-index:1000;display:flex}:host tui-icon{width:16px;height:16px}:host ::-webkit-scrollbar{width:6px;background:var(--page-menu-main)}:host ::-webkit-scrollbar-thumb{width:6px;background:#c3c7cf;border-radius:2px}:host .side-menu{transition:all var(--page-menu-transition-time);display:flex;color:var(--main-white);flex-direction:column;flex-shrink:0;font-size:14px}:host .side-menu__header{height:64px;width:100%;display:flex;align-items:center;justify-content:space-between}:host .side-menu__header__chevron{cursor:pointer;transition:rotate .15s linear}:host .side-menu__header__chevron_opened{margin:0 8px 0 0;rotate:0deg}:host .side-menu__header__chevron_closed{margin:0 0 0 -4px;rotate:180deg}:host .side-menu__header .disabled{pointer-events:none}:host .side-menu__header__logo{margin-left:8px}:host .side-menu_opened{width:var(--page-menu-opened-width)}:host .side-menu_closed{width:var(--page-menu-closed-width)}:host .side-menu__subitems,:host .side-menu .static-item{position:absolute;display:flex;z-index:3;right:0;top:0;flex-direction:column}:host .side-menu__subitems{width:294px;box-shadow:0 2px 6px #28282840;left:294px}:host .side-menu__subitems.padding-level-1{left:48px}:host .side-menu__subitems .chevron-right{margin-right:16px}:host .side-menu__subitems a span{height:40px;display:flex;align-items:center;padding-left:40px}:host .side-menu__subitems a span .padding-level-1{padding-left:64px}:host .side-menu .static-item{color:var(--main-black);left:48px;top:0}:host .side-menu__subitem,:host .side-menu .static-item__element{box-sizing:border-box;display:flex;align-items:center;color:var(--main-white);height:40px;width:294px;background:var(--page-menu-main);justify-content:space-between}:host .side-menu__subitem:hover{background:var(--page-menu-main-hovered);cursor:pointer}:host .side-menu .static-item__element{justify-content:unset;padding-left:16px}:host .side-menu .expanded-menu-content{height:calc(100vh - 103px);-ms-overflow-style:none;scrollbar-width:none;overflow-y:scroll}:host .side-menu .expanded-menu-content::-webkit-scrollbar{display:none}:host .side-menu .collapsed-menu-content{position:relative}:host .side-menu .menu-item{display:flex;flex-direction:row;cursor:pointer;justify-content:start;align-items:center;box-sizing:border-box;transition:background .9ms;height:40px}:host .side-menu .menu-item_selected{background:var(--page-menu-active)!important;box-shadow:inset 3px 0 var(--main-white)}:host .side-menu .menu-item_selected:hover{background:var(--page-menu-active)!important}:host .side-menu .menu-item__chevron{margin-left:auto;margin-right:8px;transition:rotate .15s linear}:host .side-menu .menu-item__chevron_rotated{rotate:180deg}:host .side-menu .menu-item__title{padding:10px 0 10px 8px;overflow:hidden;color:var(--main-white);font-variant-numeric:lining-nums tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-family:Inter,serif;font-size:14px;font-weight:300}:host .side-menu .menu-item__title .page-menu-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300}:host .side-menu .menu-item__icon{padding:0 8px 0 16px}:host .side-menu .menu-item__icon_closed{display:flex;height:40px;justify-content:center;align-items:center}:host .side-menu .menu-item__icon_closed:hover{background:var(--page-menu-main-hovered);cursor:pointer}:host .side-menu .menu-item:hover{background:var(--page-menu-main-hovered)}:host a{text-decoration:none;color:unset}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], animations: [
|
|
236
|
+
trigger('fadeInOut', [
|
|
237
|
+
transition(':enter', [
|
|
238
|
+
style({
|
|
239
|
+
opacity: 0,
|
|
240
|
+
transform: 'translateY(-10px)',
|
|
241
|
+
transformOrigin: 'top',
|
|
242
|
+
}),
|
|
243
|
+
animate('0.15s ease-in', style({
|
|
244
|
+
opacity: 1,
|
|
245
|
+
transform: 'translateY(0)',
|
|
246
|
+
})),
|
|
247
|
+
]),
|
|
248
|
+
]),
|
|
249
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
250
|
+
}
|
|
251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SprocPageMenuComponent, decorators: [{
|
|
252
|
+
type: Component,
|
|
253
|
+
args: [{ selector: 'sproc-page-menu', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [RouterLink, NgTemplateOutlet, NgClass, AsyncPipe, NgOptimizedImage], animations: [
|
|
254
|
+
trigger('fadeInOut', [
|
|
255
|
+
transition(':enter', [
|
|
256
|
+
style({
|
|
257
|
+
opacity: 0,
|
|
258
|
+
transform: 'translateY(-10px)',
|
|
259
|
+
transformOrigin: 'top',
|
|
260
|
+
}),
|
|
261
|
+
animate('0.15s ease-in', style({
|
|
262
|
+
opacity: 1,
|
|
263
|
+
transform: 'translateY(0)',
|
|
264
|
+
})),
|
|
265
|
+
]),
|
|
266
|
+
]),
|
|
267
|
+
], template: "<section [class]=\"menuState() ? 'side-menu side-menu_opened' : 'side-menu side-menu_closed'\">\n <div class=\"side-menu__header\">\n <img\n [src]=\"menuState() ? openLogoSrc() : closedLogoSrc()\"\n alt=\"Logo Icon\"\n class=\"side-menu__header__logo\"\n />\n <img\n (click)=\"toggleNavigation()\"\n [class.disabled]=\"toggleDisabled$ | async\"\n [height]=\"16\"\n [ngClass]=\"menuState() ? 'side-menu__header__chevron_opened' : 'side-menu__header__chevron_closed'\"\n [ngSrc]=\"ICONS_SRC.MENU_CHEVRON\" [width]=\"16\" alt=\"Menu Chevron\"/>\n </div>\n\n @if (menuState()) {\n <div class=\"expanded-menu-content\">\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"\n menuItemOpened;\n context: { navigation_item: navigation_item, level: 0 }\n \"\n ></ng-container>\n }\n </div>\n\n <ng-content></ng-content>\n } @else {\n @for (navigation_item of navigationHierarchy(); track $index) {\n <ng-container\n *ngTemplateOutlet=\"closedMenu; context: { navigation_item: navigation_item }\"\n ></ng-container>\n }\n }\n</section>\n\n<ng-template #menuItemOpened let-level=\"level\" let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code;\n\n <a\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [@fadeInOut]\n [class.menu-item_selected]=\"isHighlighted\"\n [class.padding-level-0]=\"level === 0\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n [style.padding-left.px]=\"level === 0 ? 0 : 44 + level * 20\"\n class=\"menu-item\"\n >\n @if (icon) {\n <span class=\"menu-item__icon\">\n <img [alt]=\"icon\" [width]=\"16\" [height]=\"16\" [ngSrc]=\"menuIconsSrc() + icon + '.svg'\">\n </span>\n }\n <span class=\"menu-item__title\"> {{ navigation_item.title }} </span>\n @if (childrenCount > 0) {\n <img\n class=\"menu-item__chevron\"\n [class.menu-item__chevron_rotated]=\"!isExpanded\"\n [alt]=\"icon\" [width]=\"16\" [height]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_UP\">\n }\n </a>\n @if (isExpanded && childrenCount > 0) {\n @for (children of navigation_item.children ?? []; track $index) {\n <ng-container\n *ngTemplateOutlet=\"menuItemOpened; context: { navigation_item: children, level: level + 1 }\"\n ></ng-container>\n }\n }\n</ng-template>\n\n<ng-template #closedMenu let-navigation_item=\"navigation_item\">\n @let isExpanded = expandedIds().has(navigation_item.code);\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let icon = navigation_item.icon;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n\n <div\n (mouseleave)=\"collapseMenu()\"\n [id]=\"navigation_item.id\"\n class=\"collapsed-menu-content\"\n >\n @if (icon) {\n <a\n class=\"menu-item__icon_closed\"\n [class.menu-item_selected]=\"isHighlighted\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n (mouseenter)=\"toggleItem(navigation_item)\">\n <img\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"menuIconsSrc() + icon + '.svg'\" alt=\"Menu Chevron\"/>\n </a>\n }\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: 1, topPadding: 1 }\n \"\n >\n </ng-container>\n @if (isExpanded && childrenCount > 0) {\n <div class=\"static-item\">\n <span class=\"static-item__element\">\n {{ navigation_item.title }}\n </span>\n </div>\n }\n </div>\n</ng-template>\n\n<ng-template #menuClosedItem let-item=\"item\" let-level=\"level\" let-topPadding=\"topPadding\">\n @let isExpanded = expandedIds().has(item.code);\n <div [id]=\"item.id\">\n @if (isExpanded && item.children.length > 0) {\n <div\n class=\"side-menu__subitems\"\n [class.padding-level-1]=\"level === 1\"\n [style.top.px]=\"topPadding * 40\"\n id=\"side-menu__subitems\"\n >\n @for (navigation_item of item.children; track navigation_item; let index = $index) {\n @let childrenCount = navigation_item.children.length;\n @let code = navigation_item.code;\n @let route = navigation_item.code;\n @let isHighlighted = selectedSection() === code || parentItemCodes().has(code);\n <a\n class=\"side-menu__subitem\"\n [class.menu-item_selected]=\"isHighlighted\"\n (mouseenter)=\"childrenCount > 0 ? toggleItem(navigation_item) : collapseMenu(navigation_item)\"\n (click)=\"childrenCount === 0 ? handleNavigation(navigation_item) : toggleItem(navigation_item)\"\n [routerLink]=\"childrenCount > 0 || isExternalLink(route) ? undefined : route\"\n >\n <span\n [class.padding-level-1]=\"level === 1\">{{\n navigation_item.title\n }}</span>\n\n @if (childrenCount > 0) {\n <img\n class=\"chevron-right\"\n [height]=\"16\"\n [width]=\"16\"\n [ngSrc]=\"ICONS_SRC.CHEVRON_RIGHT\" alt=\"Menu Chevron\"/>\n }\n </a>\n <ng-container\n *ngTemplateOutlet=\"\n menuClosedItem;\n context: { item: navigation_item, level: level + 1, topPadding: index }\n \"\n ></ng-container>\n }\n </div>\n }\n </div>\n</ng-template>\n", styles: [":host{background:var(--page-menu-main);height:100vh;max-height:100vh;z-index:1000;display:flex}:host tui-icon{width:16px;height:16px}:host ::-webkit-scrollbar{width:6px;background:var(--page-menu-main)}:host ::-webkit-scrollbar-thumb{width:6px;background:#c3c7cf;border-radius:2px}:host .side-menu{transition:all var(--page-menu-transition-time);display:flex;color:var(--main-white);flex-direction:column;flex-shrink:0;font-size:14px}:host .side-menu__header{height:64px;width:100%;display:flex;align-items:center;justify-content:space-between}:host .side-menu__header__chevron{cursor:pointer;transition:rotate .15s linear}:host .side-menu__header__chevron_opened{margin:0 8px 0 0;rotate:0deg}:host .side-menu__header__chevron_closed{margin:0 0 0 -4px;rotate:180deg}:host .side-menu__header .disabled{pointer-events:none}:host .side-menu__header__logo{margin-left:8px}:host .side-menu_opened{width:var(--page-menu-opened-width)}:host .side-menu_closed{width:var(--page-menu-closed-width)}:host .side-menu__subitems,:host .side-menu .static-item{position:absolute;display:flex;z-index:3;right:0;top:0;flex-direction:column}:host .side-menu__subitems{width:294px;box-shadow:0 2px 6px #28282840;left:294px}:host .side-menu__subitems.padding-level-1{left:48px}:host .side-menu__subitems .chevron-right{margin-right:16px}:host .side-menu__subitems a span{height:40px;display:flex;align-items:center;padding-left:40px}:host .side-menu__subitems a span .padding-level-1{padding-left:64px}:host .side-menu .static-item{color:var(--main-black);left:48px;top:0}:host .side-menu__subitem,:host .side-menu .static-item__element{box-sizing:border-box;display:flex;align-items:center;color:var(--main-white);height:40px;width:294px;background:var(--page-menu-main);justify-content:space-between}:host .side-menu__subitem:hover{background:var(--page-menu-main-hovered);cursor:pointer}:host .side-menu .static-item__element{justify-content:unset;padding-left:16px}:host .side-menu .expanded-menu-content{height:calc(100vh - 103px);-ms-overflow-style:none;scrollbar-width:none;overflow-y:scroll}:host .side-menu .expanded-menu-content::-webkit-scrollbar{display:none}:host .side-menu .collapsed-menu-content{position:relative}:host .side-menu .menu-item{display:flex;flex-direction:row;cursor:pointer;justify-content:start;align-items:center;box-sizing:border-box;transition:background .9ms;height:40px}:host .side-menu .menu-item_selected{background:var(--page-menu-active)!important;box-shadow:inset 3px 0 var(--main-white)}:host .side-menu .menu-item_selected:hover{background:var(--page-menu-active)!important}:host .side-menu .menu-item__chevron{margin-left:auto;margin-right:8px;transition:rotate .15s linear}:host .side-menu .menu-item__chevron_rotated{rotate:180deg}:host .side-menu .menu-item__title{padding:10px 0 10px 8px;overflow:hidden;color:var(--main-white);font-variant-numeric:lining-nums tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-family:Inter,serif;font-size:14px;font-weight:300}:host .side-menu .menu-item__title .page-menu-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300}:host .side-menu .menu-item__icon{padding:0 8px 0 16px}:host .side-menu .menu-item__icon_closed{display:flex;height:40px;justify-content:center;align-items:center}:host .side-menu .menu-item__icon_closed:hover{background:var(--page-menu-main-hovered);cursor:pointer}:host .side-menu .menu-item:hover{background:var(--page-menu-main-hovered)}:host a{text-decoration:none;color:unset}\n"] }]
|
|
268
|
+
}], ctorParameters: () => [], propDecorators: { menuOpenedWidth: [{
|
|
269
|
+
type: HostBinding,
|
|
270
|
+
args: ['style.--page-menu-opened-width']
|
|
271
|
+
}], menuClosedWidth: [{
|
|
272
|
+
type: HostBinding,
|
|
273
|
+
args: ['style.--page-menu-closed-width']
|
|
274
|
+
}] } });
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Byb2MtcGFnZS1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLW1lbnUvc3Byb2MtcGFnZS1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlLW1lbnUvc3Byb2MtcGFnZS1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixzQkFBc0IsR0FDdkIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXJELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBNEIxRSxNQUFNLE9BQU8sc0JBQXNCO0lBd0RqQztRQXZETyxjQUFTLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBa0IsQ0FBQztRQUM3QyxpQkFBWSxHQUFHLEtBQUssQ0FBUyxF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QzthQUNILENBQUM7U0FDSDs7NEZBRVUsc0JBQXNCO2tCQTFCbEMsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxjQUNqRTt3QkFDVixPQUFPLENBQUMsV0FBVyxFQUFFOzRCQUNuQixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUM7b0NBQ0osT0FBTyxFQUFFLENBQUM7b0NBQ1YsU0FBUyxFQUFFLG1CQUFtQjtvQ0FDOUIsZUFBZSxFQUFFLEtBQUs7aUNBQ3ZCLENBQUM7Z0NBQ0YsT0FBTyxDQUNMLGVBQWUsRUFDZixLQUFLLENBQUM7b0NBQ0osT0FBTyxFQUFFLENBQUM7b0NBQ1YsU0FBUyxFQUFFLGVBQWU7aUNBQzNCLENBQUMsQ0FDSDs2QkFDRixDQUFDO3lCQUNILENBQUM7cUJBQ0g7d0RBWWUsZUFBZTtzQkFEOUIsV0FBVzt1QkFBQyxnQ0FBZ0M7Z0JBRzdCLGVBQWU7c0JBRDlCLFdBQVc7dUJBQUMsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgSG9zdEJpbmRpbmcsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIE9uSW5pdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEVQYWdlTWVudUljb25zU3JjLFxuICBTSURFX01FTlVfQ0xPU0VEX1dJRFRILFxuICBTSURFX01FTlVfT1BFTkVEX1dJRFRILFxufSBmcm9tICcuL3NjaGVtYS9zcHJvYy1wYWdlLW1lbnUuY29uc3RzJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBYnN0cmFjdE1lbnVTdGF0ZVNlcnZpY2UsIElDbHNNZW51SXRlbSB9IGZyb20gJy4vc2NoZW1hL3Nwcm9jLXBhZ2UtbWVudS50eXBlcyc7XG5pbXBvcnQgeyBQQUdFX01FTlVfU1RBVEUgfSBmcm9tICcuL3NjaGVtYS9zcHJvYy1wYWdlLW1lbnUudG9rZW5zJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSU5hdmlnYXRpb24gfSBmcm9tICcuL3NjaGVtYS9zcHJvYy1wYWdlLW1lbnUuc2NoZW1hJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdPcHRpbWl6ZWRJbWFnZSwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzcHJvYy1wYWdlLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3Byb2MtcGFnZS1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3Byb2MtcGFnZS1tZW51LmNvbXBvbmVudC5sZXNzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbUm91dGVyTGluaywgTmdUZW1wbGF0ZU91dGxldCwgTmdDbGFzcywgQXN5bmNQaXBlLCBOZ09wdGltaXplZEltYWdlXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2ZhZGVJbk91dCcsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoe1xuICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgtMTBweCknLFxuICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogJ3RvcCcsXG4gICAgICAgIH0pLFxuICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICcwLjE1cyBlYXNlLWluJyxcbiAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICBvcGFjaXR5OiAxLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScsXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTcHJvY1BhZ2VNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIG1lbnVJdGVtcyA9IGlucHV0LnJlcXVpcmVkPElDbHNNZW51SXRlbVtdPigpO1xuICBwdWJsaWMgbWVudUljb25zU3JjID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyBvcGVuTG9nb1NyYyA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgY2xvc2VkTG9nb1NyYyA9IGlucHV0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgZmluZEFjdGl2ZVNlY3Rpb24gPVxuICAgIGlucHV0LnJlcXVpcmVkPChyZXNldDogKCkgPT4gdm9pZCwgZmluZFJvdXRlOiAocm91dGVUb0ZpbmQ6IHN0cmluZykgPT4gdm9pZCkgPT4gdm9pZD4oKTtcblxuICAvLyBUT0RPINCU0L7QsdCw0LLQuNGC0Ywg0LrQsNGB0YLQvtC80L3Rg9GOINGI0LjRgNC40L3RgyDQvNC10L3RjlxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLi0tcGFnZS1tZW51LW9wZW5lZC13aWR0aCcpXG4gIHB1YmxpYyByZWFkb25seSBtZW51T3BlbmVkV2lkdGggPSBgJHtTSURFX01FTlVfT1BFTkVEX1dJRFRIfXB4YDtcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLXBhZ2UtbWVudS1jbG9zZWQtd2lkdGgnKVxuICBwdWJsaWMgcmVhZG9ubHkgbWVudUNsb3NlZFdpZHRoID0gYCR7U0lERV9NRU5VX0NMT1NFRF9XSURUSH1weGA7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlID0gaW5qZWN0PEFic3RyYWN0TWVudVN0YXRlU2VydmljZT4oUEFHRV9NRU5VX1NUQVRFKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHIgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvZ2dsZURpc2FibGVkJCA9IHRoaXMuX3N0YXRlLnRvZ2dsZURpc2FibGVkJDtcbiAgcHJvdGVjdGVkIG1lbnVTdGF0ZSA9IHRvU2lnbmFsKHRoaXMuX3N0YXRlLmlzT3BlbiQpO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRTZWN0aW9uID0gc2lnbmFsPHN0cmluZz4oJ3JlZ2lzdGVyJyk7XG4gIHByb3RlY3RlZCBleHBhbmRlZElkcyA9IHNpZ25hbDxTZXQ8c3RyaW5nPj4obmV3IFNldCgpKTtcblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWRJdGVtID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnNlbGVjdGVkU2VjdGlvbigpID8gdGhpcy5jb2RlVG9JdGVtW3RoaXMuc2VsZWN0ZWRTZWN0aW9uKCldIDogbnVsbFxuICApO1xuXG4gIC8vINCl0YDQsNC90LjRgiBwYXJlbnQg0Y3Qu9C10LzQtdC90YLRiyDQstGL0LHRgNCw0L3QvdC+0LPQviDQv9GD0L3QutGC0LAg0LzQtdC90Y5cbiAgcHJvdGVjdGVkIHBhcmVudEl0ZW1zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbSgpO1xuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcmVudHM6IElOYXZpZ2F0aW9uW10gPSBbXTtcbiAgICBsZXQgY3VycmVudCA9IGl0ZW0ucGFyZW50O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBwYXJlbnRzLnB1c2goY3VycmVudCk7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzO1xuICB9KTtcbiAgcHJvdGVjdGVkIHBhcmVudEl0ZW1Db2RlcyA9IGNvbXB1dGVkPFNldDxzdHJpbmc+PigoKSA9PiB7XG4gICAgY29uc3QgcGFyZW50SXRlbXMgPSB0aGlzLnBhcmVudEl0ZW1zKCk7XG5cbiAgICByZXR1cm4gbmV3IFNldChwYXJlbnRJdGVtcy5tYXAoKHZhbCkgPT4gdmFsLmNvZGUgPz8gJycpKTtcbiAgfSk7XG5cbiAgcHVibGljIG5hdmlnYXRpb25IaWVyYXJjaHkgPSBzaWduYWw8SU5hdmlnYXRpb25bXT4oW10pO1xuXG4gIHByb3RlY3RlZCBjb2RlVG9JdGVtOiBSZWNvcmQ8c3RyaW5nLCBJTmF2aWdhdGlvbj4gPSB7fTtcblxuICBwcm90ZWN0ZWQgaXNPcGVuU2VydmljZVZlcnNpb25JbmZvID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IElDT05TX1NSQyA9IEVQYWdlTWVudUljb25zU3JjO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8vINCf0L7RgdGC0YDQvtC40YLRjCDQvNC10L3RjiDQuCDQvdCw0LnRgtC4INCw0LrRgtC40LLQvdGD0Y4g0YHQtdC60YbQuNGOXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBtZW51SXRlbXMgPSB0aGlzLm1lbnVJdGVtcygpO1xuICAgICAgICB0aGlzLmJ1aWxkTWVudShtZW51SXRlbXMpO1xuICAgICAgICB0aGlzLl9maW5kQWN0aXZlU2VjdGlvbigpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYWRkTWVudVNjcm9sbGJhcihpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvLyBUT0RPINCc0LXQvdGOINCy0YLQvtGA0L7Qs9C+INGD0YDQvtCy0L3RjyDQtdGB0YLRjCDRgdC60YDQvtC70Lss0YLRgNC10YLRjNC10LPQviDQvdC10YJcbiAgICAgIGNvbnN0IGNvbGxhcHNlZE1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihgW2lkPVwiJHtpZH1cIl1gKTtcbiAgICAgIGNvbnN0IHNpZGVNZW51ID0gY29sbGFwc2VkTWVudT8ucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJyNzaWRlLW1lbnVfX3N1Yml0ZW1zJyk7XG4gICAgICBjb25zdCBzaWRlTWVudUxldmVsVHdvID0gc2lkZU1lbnU/LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcjc2lkZS1tZW51X19zdWJpdGVtcycpO1xuXG4gICAgICBjb25zdCBzdWJpdGVtID0gc2lkZU1lbnVMZXZlbFR3b1xuICAgICAgICA/IHNpZGVNZW51TGV2ZWxUd28ucXVlcnlTZWxlY3RvckFsbCgnLnNpZGUtbWVudV9fc3ViaXRlbScpXG4gICAgICAgIDogc2lkZU1lbnU/LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zaWRlLW1lbnVfX3N1Yml0ZW0nKTtcbiAgICAgIGlmIChzdWJpdGVtKSB7XG4gICAgICAgIGNvbnN0IGxhc3RTdWJpdGVtID0gc3ViaXRlbVtzdWJpdGVtLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCByZWN0ID0gbGFzdFN1Yml0ZW0/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGlmIChzaWRlTWVudSAmJiB3aW5kb3cuaW5uZXJIZWlnaHQgLSByZWN0LmJvdHRvbSA8IDApIHtcbiAgICAgICAgICAvLyA0MCDRgtC6INCy0YvRgdC+0YLQsCDQv9C70LDRiNC60Lgg0LzQtdC90Y5cbiAgICAgICAgICBzaWRlTWVudS5zdHlsZS5oZWlnaHQgPSBgJHtcbiAgICAgICAgICAgIHN1Yml0ZW0ubGVuZ3RoICogNDAgKyAod2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20gLSAxKVxuICAgICAgICAgIH1weGA7XG4gICAgICAgICAgc2lkZU1lbnUuc3R5bGUub3ZlcmZsb3dZID0gJ3Njcm9sbCc7XG4gICAgICAgICAgc2lkZU1lbnUuc3R5bGUub3ZlcmZsb3dYID0gJ2hpZGRlbic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lckhlaWdodCAtIHJlY3QuYm90dG9tIDwgMCAmJiBzaWRlTWVudUxldmVsVHdvKSB7XG4gICAgICAgICAgLy8gNDAg0YLQuiDQstGL0YHQvtGC0LAg0L/Qu9Cw0YjQutC4INC80LXQvdGOXG4gICAgICAgICAgc2lkZU1lbnVMZXZlbFR3by5zdHlsZS5oZWlnaHQgPSBgJHtcbiAgICAgICAgICAgIHN1Yml0ZW0ubGVuZ3RoICogNDAgKyAod2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20gLSAxKVxuICAgICAgICAgIH1weGA7XG4gICAgICAgICAgc2lkZU1lbnVMZXZlbFR3by5zdHlsZS5vdmVyZmxvd1kgPSAnc2Nyb2xsJztcbiAgICAgICAgICBzaWRlTWVudUxldmVsVHdvLnN0eWxlLm92ZXJmbG93WCA9ICdoaWRkZW4nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3RhdGUuaXNPcGVuJC5zdWJzY3JpYmUoKG1lbnVTdGF0ZSkgPT4ge1xuICAgICAgaWYgKG1lbnVTdGF0ZSkge1xuICAgICAgICB0aGlzLmZpbmRSb3V0ZSh0aGlzLnNlbGVjdGVkU2VjdGlvbigpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VNZW51KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlTmF2aWdhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZS50b2dnbGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGVJdGVtKGl0ZW06IElOYXZpZ2F0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5hZGRNZW51U2Nyb2xsYmFyKGl0ZW0uaWQgfHwgJycpO1xuXG4gICAgdGhpcy5leHBhbmRlZElkcy51cGRhdGUoKGN1cnJlbnRFeHBhbmQpID0+IHtcbiAgICAgIGNvbnN0IGNvZGUgPSBpdGVtLmNvZGU7XG4gICAgICBjb25zdCBjb3B5ID0gbmV3IFNldDxzdHJpbmc+KGN1cnJlbnRFeHBhbmQpO1xuXG4gICAgICBpZiAoY29weS5oYXMoY29kZSkpIHtcbiAgICAgICAgY29weS5kZWxldGUoY29kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3B5LmNsZWFyKCk7XG4gICAgICAgIGNvcHkuYWRkKGNvZGUpO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudHMgPSB0aGlzLmdldFBhcmVudHMoaXRlbSk7XG4gICAgICAgIGZvciAoY29uc3QgcGFyZW50IG9mIHBhcmVudHMpIHtcbiAgICAgICAgICBjb3B5LmFkZChwYXJlbnQuY29kZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvcHk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29sbGFwc2VNZW51KGV4Y2VwdGlvbj86IElOYXZpZ2F0aW9uKTogdm9pZCB7XG4gICAgbGV0IGNvZGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChleGNlcHRpb24pIHtcbiAgICAgIGNvbnN0IHBhcmVudHMgPSB0aGlzLmdldFBhcmVudHMoZXhjZXB0aW9uKTtcbiAgICAgIGNvZGVzID0gW2V4Y2VwdGlvbi5jb2RlLCAuLi5wYXJlbnRzLm1hcCgocGFyZW50KSA9PiBwYXJlbnQuY29kZSldO1xuICAgIH1cblxuICAgIHRoaXMuZXhwYW5kZWRJZHMuc2V0KG5ldyBTZXQ8c3RyaW5nPihjb2RlcykpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBpc01lbnVPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLmlzT3BlbjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgaXNNZW51Q2xvc2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fc3RhdGUuaXNPcGVuO1xuICB9XG5cbiAgcHJvdGVjdGVkIGlzRXh0ZXJuYWxMaW5rKHJvdXRlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgICBpZiAoIXJvdXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiAvXihodHRwcz86XFwvXFwvfHd3d1xcLikvaS50ZXN0KHJvdXRlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVOYXZpZ2F0aW9uKGl0ZW06IElOYXZpZ2F0aW9uKTogdm9pZCB7XG4gICAgaWYgKCFpdGVtLnJvdXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNFeHRlcm5hbExpbmsoaXRlbS5yb3V0ZSkpIHtcbiAgICAgIHdpbmRvdy5vcGVuKGl0ZW0ucm91dGUsICdfYmxhbmsnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlXSk7XG4gICAgICB0aGlzLnNlbGVjdGVkU2VjdGlvbi5zZXQoaXRlbS5jb2RlID8/ICcnKTtcblxuICAgICAgaWYgKHRoaXMuaXNNZW51Q2xvc2VkKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VNZW51KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIHNlcnZpY2VJbmZvT25BY3RpdmVab25lKGFjdGl2ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNPcGVuU2VydmljZVZlcnNpb25JbmZvID0gYWN0aXZlICYmIHRoaXMuaXNPcGVuU2VydmljZVZlcnNpb25JbmZvO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlcnZpY2VJbmZvT25PYnNjdXJlZChvYnNjdXJlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChvYnNjdXJlZCkge1xuICAgICAgdGhpcy5pc09wZW5TZXJ2aWNlVmVyc2lvbkluZm8gPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTWVudShtZW51OiBJQ2xzTWVudUl0ZW1bXSk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRlZE1lbnVJdGVtcyA9IFsuLi5tZW51XS5zb3J0KChhLCBiKSA9PiAoYS5vcmRlcl9udW0gPz8gMCkgLSAoYi5vcmRlcl9udW0gPz8gMCkpO1xuXG4gICAgY29uc3QgbWVudUhhc2g6IFJlY29yZDxzdHJpbmcsIElOYXZpZ2F0aW9uPiA9IHt9O1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBzb3J0ZWRNZW51SXRlbXMpIHtcbiAgICAgIG1lbnVIYXNoW2l0ZW0uaWRdID0ge1xuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSA/PyAnJyxcbiAgICAgICAgcm91dGU6IGl0ZW0ucm91dGUgPz8gJycsXG4gICAgICAgIGlkOiBpdGVtLmlkLFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIGNvZGU6IGl0ZW0uY29kZSxcbiAgICAgICAgaWNvbjogaXRlbS5pY29uLFxuICAgICAgICBhY2Nlc3NlZFJvbGVzOiB1bmRlZmluZWQsXG4gICAgICAgIHBhcmVudDogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByb290TWVudUl0ZW1zOiBJTmF2aWdhdGlvbltdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc29ydGVkTWVudUl0ZW1zKSB7XG4gICAgICBpZiAoaXRlbS5pZF9wYXJlbnQgJiYgbWVudUhhc2hbaXRlbS5pZF9wYXJlbnRdKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IG1lbnVIYXNoW2l0ZW0uaWRfcGFyZW50XTtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBtZW51SGFzaFtpdGVtLmlkXTtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gcGFyZW50O1xuICAgICAgICBwYXJlbnQuY2hpbGRyZW4/LnB1c2goY2hpbGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdE1lbnVJdGVtcy5wdXNoKG1lbnVIYXNoW2l0ZW0uaWRdKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm5hdmlnYXRpb25IaWVyYXJjaHkuc2V0KHJvb3RNZW51SXRlbXMpO1xuXG4gICAgdGhpcy5jb2RlVG9JdGVtID0ge307XG4gICAgZm9yIChjb25zdCBpZCBvZiBPYmplY3Qua2V5cyhtZW51SGFzaCkpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBtZW51SGFzaFtpZF07XG4gICAgICBpZiAoaXRlbS5jb2RlKSB7XG4gICAgICAgIHRoaXMuY29kZVRvSXRlbVtpdGVtLmNvZGVdID0gaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmRSb3V0ZShyb3V0ZVRvRmluZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGVJdGVtID0gdGhpcy5jb2RlVG9JdGVtW3JvdXRlVG9GaW5kXTtcblxuICAgIGlmICghcm91dGVJdGVtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNNZW51T3BlbmVkKSB7XG4gICAgICB0aGlzLnRvZ2dsZUl0ZW0ocm91dGVJdGVtKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkU2VjdGlvbi5zZXQocm91dGVJdGVtLmNvZGUgPz8gJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZmluZEFjdGl2ZVNlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5maW5kQWN0aXZlU2VjdGlvbigpKHRoaXMucmVzZXRTZWxlY3Rpb24sIHRoaXMuZmluZFJvdXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFyZW50cyhpdGVtOiBJTmF2aWdhdGlvbik6IElOYXZpZ2F0aW9uW10ge1xuICAgIGNvbnN0IHBhcmVudHM6IElOYXZpZ2F0aW9uW10gPSBbXTtcbiAgICBsZXQgY3VycmVudCA9IGl0ZW0ucGFyZW50O1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIHBhcmVudHMucHVzaChjdXJyZW50KTtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyZW50cztcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5leHBhbmRlZElkcy5zZXQobmV3IFNldDxzdHJpbmc+KCkpO1xuICAgIHRoaXMuc2VsZWN0ZWRTZWN0aW9uLnNldCgnJyk7XG4gIH1cblxuICBwcml2YXRlIGNvbGxlY3RDaGlsZHJlbihpdGVtOiBJTmF2aWdhdGlvbik6IElOYXZpZ2F0aW9uW10ge1xuICAgIGNvbnN0IHJlc3VsdDogSU5hdmlnYXRpb25bXSA9IFtdO1xuICAgIGNvbnN0IHF1ZXVlOiBJTmF2aWdhdGlvbltdID0gaXRlbS5jaGlsZHJlbj8uc2xpY2UoKSA/PyBbXTtcblxuICAgIGxldCBpbmRleCA9IDA7XG4gICAgd2hpbGUgKGluZGV4IDwgcXVldWUubGVuZ3RoKSB7XG4gICAgICBjb25zdCBub2RlID0gcXVldWVbaW5kZXhdO1xuICAgICAgcmVzdWx0LnB1c2gobm9kZSk7XG5cbiAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHF1ZXVlLnB1c2goLi4ubm9kZS5jaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgIGluZGV4ICs9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufVxuIiwiPHNlY3Rpb24gW2NsYXNzXT1cIm1lbnVTdGF0ZSgpID8gJ3NpZGUtbWVudSBzaWRlLW1lbnVfb3BlbmVkJyA6ICdzaWRlLW1lbnUgc2lkZS1tZW51X2Nsb3NlZCdcIj5cbiAgPGRpdiBjbGFzcz1cInNpZGUtbWVudV9faGVhZGVyXCI+XG4gICAgPGltZ1xuICAgICAgW3NyY109XCJtZW51U3RhdGUoKSA/IG9wZW5Mb2dvU3JjKCkgOiBjbG9zZWRMb2dvU3JjKClcIlxuICAgICAgYWx0PVwiTG9nbyBJY29uXCJcbiAgICAgIGNsYXNzPVwic2lkZS1tZW51X19oZWFkZXJfX2xvZ29cIlxuICAgIC8+XG4gICAgPGltZ1xuICAgICAgKGNsaWNrKT1cInRvZ2dsZU5hdmlnYXRpb24oKVwiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwidG9nZ2xlRGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgW2hlaWdodF09XCIxNlwiXG4gICAgICBbbmdDbGFzc109XCJtZW51U3RhdGUoKSA/ICdzaWRlLW1lbnVfX2hlYWRlcl9fY2hldnJvbl9vcGVuZWQnIDogJ3NpZGUtbWVudV9faGVhZGVyX19jaGV2cm9uX2Nsb3NlZCdcIlxuICAgICAgW25nU3JjXT1cIklDT05TX1NSQy5NRU5VX0NIRVZST05cIiBbd2lkdGhdPVwiMTZcIiBhbHQ9XCJNZW51IENoZXZyb25cIi8+XG4gIDwvZGl2PlxuXG4gIEBpZiAobWVudVN0YXRlKCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kZWQtbWVudS1jb250ZW50XCI+XG4gICAgICBAZm9yIChuYXZpZ2F0aW9uX2l0ZW0gb2YgbmF2aWdhdGlvbkhpZXJhcmNoeSgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBtZW51SXRlbU9wZW5lZDtcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgbmF2aWdhdGlvbl9pdGVtOiBuYXZpZ2F0aW9uX2l0ZW0sIGxldmVsOiAwIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIH0gQGVsc2Uge1xuICAgIEBmb3IgKG5hdmlnYXRpb25faXRlbSBvZiBuYXZpZ2F0aW9uSGllcmFyY2h5KCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNsb3NlZE1lbnU7IGNvbnRleHQ6IHsgbmF2aWdhdGlvbl9pdGVtOiBuYXZpZ2F0aW9uX2l0ZW0gfVwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuICB9XG48L3NlY3Rpb24+XG5cbjxuZy10ZW1wbGF0ZSAjbWVudUl0ZW1PcGVuZWQgbGV0LWxldmVsPVwibGV2ZWxcIiBsZXQtbmF2aWdhdGlvbl9pdGVtPVwibmF2aWdhdGlvbl9pdGVtXCI+XG4gIEBsZXQgaXNFeHBhbmRlZCA9IGV4cGFuZGVkSWRzKCkuaGFzKG5hdmlnYXRpb25faXRlbS5jb2RlKTtcbiAgQGxldCBjaGlsZHJlbkNvdW50ID0gbmF2aWdhdGlvbl9pdGVtLmNoaWxkcmVuLmxlbmd0aDtcbiAgQGxldCBjb2RlID0gbmF2aWdhdGlvbl9pdGVtLmNvZGU7XG4gIEBsZXQgcm91dGUgPSBuYXZpZ2F0aW9uX2l0ZW0uY29kZTtcbiAgQGxldCBpY29uID0gbmF2aWdhdGlvbl9pdGVtLmljb247XG4gIEBsZXQgaXNIaWdobGlnaHRlZCA9IHNlbGVjdGVkU2VjdGlvbigpID09PSBjb2RlO1xuXG4gIDxhXG4gICAgKGNsaWNrKT1cImNoaWxkcmVuQ291bnQgPT09IDAgPyBoYW5kbGVOYXZpZ2F0aW9uKG5hdmlnYXRpb25faXRlbSkgOiB0b2dnbGVJdGVtKG5hdmlnYXRpb25faXRlbSlcIlxuICAgIFtAZmFkZUluT3V0XVxuICAgIFtjbGFzcy5tZW51LWl0ZW1fc2VsZWN0ZWRdPVwiaXNIaWdobGlnaHRlZFwiXG4gICAgW2NsYXNzLnBhZGRpbmctbGV2ZWwtMF09XCJsZXZlbCA9PT0gMFwiXG4gICAgW3JvdXRlckxpbmtdPVwiY2hpbGRyZW5Db3VudCA+IDAgfHwgaXNFeHRlcm5hbExpbmsocm91dGUpID8gdW5kZWZpbmVkIDogcm91dGVcIlxuICAgIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwibGV2ZWwgPT09IDAgPyAwIDogNDQgKyBsZXZlbCAqIDIwXCJcbiAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXG4gID5cbiAgICBAaWYgKGljb24pIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwibWVudS1pdGVtX19pY29uXCI+XG4gICAgICAgIDxpbWcgW2FsdF09XCJpY29uXCIgW3dpZHRoXT1cIjE2XCIgW2hlaWdodF09XCIxNlwiIFtuZ1NyY109XCJtZW51SWNvbnNTcmMoKSArIGljb24gKyAnLnN2ZydcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gICAgPHNwYW4gY2xhc3M9XCJtZW51LWl0ZW1fX3RpdGxlXCI+IHt7IG5hdmlnYXRpb25faXRlbS50aXRsZSB9fSA8L3NwYW4+XG4gICAgQGlmIChjaGlsZHJlbkNvdW50ID4gMCkge1xuICAgICAgPGltZ1xuICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbV9fY2hldnJvblwiXG4gICAgICAgIFtjbGFzcy5tZW51LWl0ZW1fX2NoZXZyb25fcm90YXRlZF09XCIhaXNFeHBhbmRlZFwiXG4gICAgICAgIFthbHRdPVwiaWNvblwiIFt3aWR0aF09XCIxNlwiIFtoZWlnaHRdPVwiMTZcIlxuICAgICAgICBbbmdTcmNdPVwiSUNPTlNfU1JDLkNIRVZST05fVVBcIj5cbiAgICB9XG4gIDwvYT5cbiAgQGlmIChpc0V4cGFuZGVkICYmIGNoaWxkcmVuQ291bnQgPiAwKSB7XG4gICAgQGZvciAoY2hpbGRyZW4gb2YgbmF2aWdhdGlvbl9pdGVtLmNoaWxkcmVuID8/IFtdOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbU9wZW5lZDsgY29udGV4dDogeyBuYXZpZ2F0aW9uX2l0ZW06IGNoaWxkcmVuLCBsZXZlbDogbGV2ZWwgKyAxIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjbG9zZWRNZW51IGxldC1uYXZpZ2F0aW9uX2l0ZW09XCJuYXZpZ2F0aW9uX2l0ZW1cIj5cbiAgQGxldCBpc0V4cGFuZGVkID0gZXhwYW5kZWRJZHMoKS5oYXMobmF2aWdhdGlvbl9pdGVtLmNvZGUpO1xuICBAbGV0IGNoaWxkcmVuQ291bnQgPSBuYXZpZ2F0aW9uX2l0ZW0uY2hpbGRyZW4ubGVuZ3RoO1xuICBAbGV0IGNvZGUgPSBuYXZpZ2F0aW9uX2l0ZW0uY29kZTtcbiAgQGxldCByb3V0ZSA9IG5hdmlnYXRpb25faXRlbS5jb2RlO1xuICBAbGV0IGljb24gPSBuYXZpZ2F0aW9uX2l0ZW0uaWNvbjtcbiAgQGxldCBpc0hpZ2hsaWdodGVkID0gc2VsZWN0ZWRTZWN0aW9uKCkgPT09IGNvZGUgfHwgcGFyZW50SXRlbUNvZGVzKCkuaGFzKGNvZGUpO1xuXG4gIDxkaXZcbiAgICAobW91c2VsZWF2ZSk9XCJjb2xsYXBzZU1lbnUoKVwiXG4gICAgW2lkXT1cIm5hdmlnYXRpb25faXRlbS5pZFwiXG4gICAgY2xhc3M9XCJjb2xsYXBzZWQtbWVudS1jb250ZW50XCJcbiAgPlxuICAgIEBpZiAoaWNvbikge1xuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJtZW51LWl0ZW1fX2ljb25fY2xvc2VkXCJcbiAgICAgICAgW2NsYXNzLm1lbnUtaXRlbV9zZWxlY3RlZF09XCJpc0hpZ2hsaWdodGVkXCJcbiAgICAgICAgKGNsaWNrKT1cImNoaWxkcmVuQ291bnQgPT09IDAgPyBoYW5kbGVOYXZpZ2F0aW9uKG5hdmlnYXRpb25faXRlbSkgOiB0b2dnbGVJdGVtKG5hdmlnYXRpb25faXRlbSlcIlxuICAgICAgICBbcm91dGVyTGlua109XCJjaGlsZHJlbkNvdW50ID4gMCB8fCBpc0V4dGVybmFsTGluayhyb3V0ZSkgPyB1bmRlZmluZWQgOiByb3V0ZVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInRvZ2dsZUl0ZW0obmF2aWdhdGlvbl9pdGVtKVwiPlxuICAgICAgICA8aW1nXG4gICAgICAgICAgW2hlaWdodF09XCIxNlwiXG4gICAgICAgICAgW3dpZHRoXT1cIjE2XCJcbiAgICAgICAgICBbbmdTcmNdPVwibWVudUljb25zU3JjKCkgKyBpY29uICsgJy5zdmcnXCIgYWx0PVwiTWVudSBDaGV2cm9uXCIvPlxuICAgICAgPC9hPlxuICAgIH1cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBtZW51Q2xvc2VkSXRlbTtcbiAgICAgICAgY29udGV4dDogeyBpdGVtOiBuYXZpZ2F0aW9uX2l0ZW0sIGxldmVsOiAxLCB0b3BQYWRkaW5nOiAxIH1cbiAgICAgIFwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIEBpZiAoaXNFeHBhbmRlZCAmJiBjaGlsZHJlbkNvdW50ID4gMCkge1xuICAgICAgPGRpdiBjbGFzcz1cInN0YXRpYy1pdGVtXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdGljLWl0ZW1fX2VsZW1lbnRcIj5cbiAgICAgICAge3sgbmF2aWdhdGlvbl9pdGVtLnRpdGxlIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWVudUNsb3NlZEl0ZW0gbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWxldmVsPVwibGV2ZWxcIiBsZXQtdG9wUGFkZGluZz1cInRvcFBhZGRpbmdcIj5cbiAgQGxldCBpc0V4cGFuZGVkID0gZXhwYW5kZWRJZHMoKS5oYXMoaXRlbS5jb2RlKTtcbiAgPGRpdiBbaWRdPVwiaXRlbS5pZFwiPlxuICAgIEBpZiAoaXNFeHBhbmRlZCAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzaWRlLW1lbnVfX3N1Yml0ZW1zXCJcbiAgICAgICAgW2NsYXNzLnBhZGRpbmctbGV2ZWwtMV09XCJsZXZlbCA9PT0gMVwiXG4gICAgICAgIFtzdHlsZS50b3AucHhdPVwidG9wUGFkZGluZyAqIDQwXCJcbiAgICAgICAgaWQ9XCJzaWRlLW1lbnVfX3N1Yml0ZW1zXCJcbiAgICAgID5cbiAgICAgICAgQGZvciAobmF2aWdhdGlvbl9pdGVtIG9mIGl0ZW0uY2hpbGRyZW47IHRyYWNrIG5hdmlnYXRpb25faXRlbTsgbGV0IGluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgQGxldCBjaGlsZHJlbkNvdW50ID0gbmF2aWdhdGlvbl9pdGVtLmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgICBAbGV0IGNvZGUgPSBuYXZpZ2F0aW9uX2l0ZW0uY29kZTtcbiAgICAgICAgICBAbGV0IHJvdXRlID0gbmF2aWdhdGlvbl9pdGVtLmNvZGU7XG4gICAgICAgICAgQGxldCBpc0hpZ2hsaWdodGVkID0gc2VsZWN0ZWRTZWN0aW9uKCkgPT09IGNvZGUgfHwgcGFyZW50SXRlbUNvZGVzKCkuaGFzKGNvZGUpO1xuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbWVudV9fc3ViaXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MubWVudS1pdGVtX3NlbGVjdGVkXT1cImlzSGlnaGxpZ2h0ZWRcIlxuICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwiY2hpbGRyZW5Db3VudCA+IDAgPyB0b2dnbGVJdGVtKG5hdmlnYXRpb25faXRlbSkgOiBjb2xsYXBzZU1lbnUobmF2aWdhdGlvbl9pdGVtKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hpbGRyZW5Db3VudCA9PT0gMCA/IGhhbmRsZU5hdmlnYXRpb24obmF2aWdhdGlvbl9pdGVtKSA6IHRvZ2dsZUl0ZW0obmF2aWdhdGlvbl9pdGVtKVwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCJjaGlsZHJlbkNvdW50ID4gMCB8fCBpc0V4dGVybmFsTGluayhyb3V0ZSkgPyB1bmRlZmluZWQgOiByb3V0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbY2xhc3MucGFkZGluZy1sZXZlbC0xXT1cImxldmVsID09PSAxXCI+e3tcbiAgICAgICAgICAgICAgbmF2aWdhdGlvbl9pdGVtLnRpdGxlXG4gICAgICAgICAgICB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgQGlmIChjaGlsZHJlbkNvdW50ID4gMCkge1xuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjE2XCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMTZcIlxuICAgICAgICAgICAgICAgIFtuZ1NyY109XCJJQ09OU19TUkMuQ0hFVlJPTl9SSUdIVFwiIGFsdD1cIk1lbnUgQ2hldnJvblwiLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIG1lbnVDbG9zZWRJdGVtO1xuICAgICAgICAgICAgY29udGV4dDogeyBpdGVtOiBuYXZpZ2F0aW9uX2l0ZW0sIGxldmVsOiBsZXZlbCArIDEsIHRvcFBhZGRpbmc6IGluZGV4IH1cbiAgICAgICAgICBcIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|