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
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal, untracked, } from '@angular/core';
|
|
2
|
+
import { SelectionTypes } from './checkbox-selector.types';
|
|
3
|
+
import { TuiButtonLoading, TuiCheckbox, TuiInputNumber, TuiTooltip } from '@taiga-ui/kit';
|
|
4
|
+
import { TuiButton, TuiDropdown, TuiIcon, TuiTextfield } from '@taiga-ui/core';
|
|
5
|
+
import { FormsModule } from '@angular/forms';
|
|
6
|
+
import { TuiTextfieldControllerModule } from '@taiga-ui/legacy';
|
|
7
|
+
import { ERegisterObjectState } from '../../types';
|
|
8
|
+
import { SelectedObjectsStateService } from '../../services';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@taiga-ui/core";
|
|
11
|
+
import * as i2 from "@angular/forms";
|
|
12
|
+
import * as i3 from "@taiga-ui/legacy";
|
|
13
|
+
import * as i4 from "@taiga-ui/kit";
|
|
14
|
+
export class CheckboxSelectorComponent {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.totalRecords = input();
|
|
17
|
+
/** @deprecated используйте stateObjects */
|
|
18
|
+
this.selected = input(new Set());
|
|
19
|
+
this.disabled = input(false);
|
|
20
|
+
this.loading = input(false);
|
|
21
|
+
this.inputMaxValue = input(null);
|
|
22
|
+
this.onApply = output();
|
|
23
|
+
this._selectedService = inject(SelectedObjectsStateService, { optional: true });
|
|
24
|
+
this.ESelectionTypes = SelectionTypes;
|
|
25
|
+
this.isOpen = signal(false);
|
|
26
|
+
this.selectedElement = signal(null);
|
|
27
|
+
this.inputValue = signal(null);
|
|
28
|
+
this.inputDescription = computed(() => {
|
|
29
|
+
const max = this.inputMaxValue();
|
|
30
|
+
if (max === null) {
|
|
31
|
+
return '';
|
|
32
|
+
}
|
|
33
|
+
return `Максимум для ввода - ${max}`;
|
|
34
|
+
});
|
|
35
|
+
this.stateObjects = this._selectedService?.state;
|
|
36
|
+
this.stateUnfetchedObjects = this._selectedService?.stateUnfetchedObjects;
|
|
37
|
+
effect(() => {
|
|
38
|
+
const loading = this.loading();
|
|
39
|
+
const isOpen = this.loading();
|
|
40
|
+
if (loading === false && isOpen) {
|
|
41
|
+
untracked(() => {
|
|
42
|
+
this.close();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
selectElement(newElement) {
|
|
48
|
+
this.selectedElement.update((currentElement) => currentElement === newElement ? null : newElement);
|
|
49
|
+
}
|
|
50
|
+
onInputFocus() {
|
|
51
|
+
this.selectedElement.set(SelectionTypes.COUNT);
|
|
52
|
+
}
|
|
53
|
+
applySelection() {
|
|
54
|
+
let result = this.selectedElement();
|
|
55
|
+
if (!result) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (result === SelectionTypes.COUNT) {
|
|
59
|
+
result = this.inputValue();
|
|
60
|
+
}
|
|
61
|
+
this.onApply.emit(result);
|
|
62
|
+
this.close();
|
|
63
|
+
}
|
|
64
|
+
toggle() {
|
|
65
|
+
if (!this.disabled()) {
|
|
66
|
+
this.isOpen.update((isOpen) => !isOpen);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
calcIndeterminate() {
|
|
70
|
+
const state = this.stateObjects?.();
|
|
71
|
+
if (state) {
|
|
72
|
+
const fetchedObjects = [...state.values()];
|
|
73
|
+
const selectedObjects = fetchedObjects.filter((obj) => obj.state === ERegisterObjectState.SELECTED);
|
|
74
|
+
const someFetchedIsNotSelected = fetchedObjects.length !== selectedObjects.length;
|
|
75
|
+
const fetchedIsAll = fetchedObjects.length === this.totalRecords();
|
|
76
|
+
const unfetchedAreSelected = this.stateUnfetchedObjects() === ERegisterObjectState.SELECTED;
|
|
77
|
+
if (selectedObjects.length > 0) {
|
|
78
|
+
return someFetchedIsNotSelected || !(fetchedIsAll || unfetchedAreSelected);
|
|
79
|
+
}
|
|
80
|
+
return !fetchedIsAll && unfetchedAreSelected;
|
|
81
|
+
}
|
|
82
|
+
return this.selected().size > 0 && this.selected().size !== this.totalRecords();
|
|
83
|
+
}
|
|
84
|
+
calcChecked() {
|
|
85
|
+
const state = this.stateObjects?.();
|
|
86
|
+
if (state) {
|
|
87
|
+
const fetchedObjects = [...state.values()];
|
|
88
|
+
const selectedObjects = fetchedObjects.filter((obj) => obj.state === ERegisterObjectState.SELECTED);
|
|
89
|
+
const fetchedAreSelected = fetchedObjects.length === selectedObjects.length;
|
|
90
|
+
const selectedIsAll = selectedObjects.length === this.totalRecords();
|
|
91
|
+
const unfetchedAreSelected = this.stateUnfetchedObjects() === ERegisterObjectState.SELECTED;
|
|
92
|
+
return (selectedObjects.length > 0 && fetchedAreSelected && (selectedIsAll || unfetchedAreSelected));
|
|
93
|
+
}
|
|
94
|
+
return this.selected().size > 0 && this.selected().size === this.totalRecords();
|
|
95
|
+
}
|
|
96
|
+
close() {
|
|
97
|
+
if (!this.disabled()) {
|
|
98
|
+
this.isOpen.set(false);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
inputValueChanges(value) {
|
|
102
|
+
this.selectedElement.set(SelectionTypes.COUNT);
|
|
103
|
+
this.inputValue.set(value);
|
|
104
|
+
}
|
|
105
|
+
dropSelection() {
|
|
106
|
+
this.inputValue.set(null);
|
|
107
|
+
this.selectedElement.set(null);
|
|
108
|
+
this.onApply.emit(null);
|
|
109
|
+
this.close();
|
|
110
|
+
}
|
|
111
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckboxSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
112
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: CheckboxSelectorComponent, isStandalone: true, selector: "sproc-checkbox-selector", inputs: { totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, inputMaxValue: { classPropertyName: "inputMaxValue", publicName: "inputMaxValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onApply: "onApply" }, ngImport: i0, template: "<div class=\"checkbox__container\" (click)=\"toggle(); $event.stopImmediatePropagation()\">\n @let indeterminate = calcIndeterminate();\n @let checked = calcChecked();\n\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n [indeterminate]=\"indeterminate\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen()\"\n [checked]=\"checked\"\n />\n</div>\n\n<ng-template #dropdown>\n <section class=\"dropdown__content\" id=\"checkbox__dropdown__content\">\n @let selected = selectedElement();\n\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.ALL\"\n (click)=\"selectElement(ESelectionTypes.ALL)\"\n >\n \u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.VISIBLE\"\n (click)=\"selectElement(ESelectionTypes.VISIBLE)\"\n >\n \u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0438\u0434\u0438\u043C\u043E\u0435\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.INVERSE\"\n (click)=\"selectElement(ESelectionTypes.INVERSE)\"\n >\n \u041A\u0440\u043E\u043C\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E\n </span>\n <div\n class=\"dropdown__select-value\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.COUNT\"\n >\n <span>\u0412\u044B\u0431\u0440\u0430\u0442\u044C</span>\n <tui-textfield\n tuiTextfieldSize=\"s\"\n tuiTextfieldAppearance=\"textfield\"\n [tuiTextfieldCleaner]=\"true\"\n class=\"flex-1\"\n >\n <input\n tuiInputNumber\n placeholder=\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E\"\n [max]=\"inputMaxValue()\"\n [ngModel]=\"inputValue()\"\n (ngModelChange)=\"inputValueChanges($event)\"\n (focusin)=\"onInputFocus()\"\n />\n\n @if (inputDescription()) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-question-empty.svg\"\n [tuiTooltip]=\"inputDescription()\"\n />\n }\n </tui-textfield>\n </div>\n <div class=\"dropdown__footer\">\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__apply\"\n size=\"m\"\n appearance=\"outline\"\n [loading]=\"loading()\"\n (click)=\"applySelection()\"\n >\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__cancel\"\n size=\"m\"\n appearance=\"outline-grayscale\"\n (click)=\"dropSelection()\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n </section>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.dropdown__content{display:flex;flex-direction:column;padding:8px 0;width:260px}.dropdown__element,.dropdown__select-value,.dropdown__button{padding:8px 16px}.dropdown__button{padding:2px 0;flex:1;width:109px}.dropdown__element{cursor:pointer;overflow:hidden;font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.dropdown__element:hover{background:#f7f9fa;color:var(--text-main)}.dropdown__element_selected{background:#d0edff}.dropdown__select-value{display:flex;align-items:center;padding:4px 16px;gap:8px}.dropdown__select-value span{cursor:default;font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.dropdown__select-value tui-textfield input{font:var(--input-text-14px)!important}.dropdown__footer{padding:0 16px;display:flex;justify-content:center;gap:10px;margin-top:4px}.flex-1{display:flex;flex:1}\n"], dependencies: [{ kind: "component", type: TuiCheckbox, selector: "input[type=\"checkbox\"][tuiCheckbox]", inputs: ["size"] }, { kind: "directive", type: i1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i1.TuiDropdownManual, selector: "[tuiDropdownManual]", inputs: ["tuiDropdownManual"] }, { kind: "component", type: i1.TuiTextfieldComponent, selector: "tui-textfield:not([multi])" }, { kind: "directive", type: i1.TuiTextfieldOptionsDirective, selector: "[tuiTextfieldAppearance],[tuiTextfieldSize],[tuiTextfieldCleaner]", inputs: ["tuiTextfieldAppearance", "tuiTextfieldSize", "tuiTextfieldCleaner"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TuiTextfieldControllerModule }, { kind: "directive", type: i3.TuiTextfieldAppearanceDirective, selector: "[tuiTextfieldAppearance]", inputs: ["tuiTextfieldAppearance"] }, { kind: "directive", type: i3.TuiTextfieldCleanerDirective, selector: "[tuiTextfieldCleaner]", inputs: ["tuiTextfieldCleaner"] }, { kind: "directive", type: i3.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiButtonLoading, selector: "[tuiButton][loading],[tuiIconButton][loading]", inputs: ["size", "loading"] }, { kind: "directive", type: i4.TuiInputNumberDirective, selector: "input[tuiInputNumber]", inputs: ["min", "max", "prefix", "postfix"] }, { kind: "directive", type: TuiTooltip, selector: "tui-icon[tuiTooltip]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
113
|
+
}
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CheckboxSelectorComponent, decorators: [{
|
|
115
|
+
type: Component,
|
|
116
|
+
args: [{ selector: 'sproc-checkbox-selector', standalone: true, imports: [
|
|
117
|
+
TuiCheckbox,
|
|
118
|
+
TuiDropdown,
|
|
119
|
+
TuiTextfield,
|
|
120
|
+
FormsModule,
|
|
121
|
+
TuiTextfieldControllerModule,
|
|
122
|
+
TuiButton,
|
|
123
|
+
TuiButtonLoading,
|
|
124
|
+
TuiInputNumber,
|
|
125
|
+
TuiTooltip,
|
|
126
|
+
TuiIcon,
|
|
127
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"checkbox__container\" (click)=\"toggle(); $event.stopImmediatePropagation()\">\n @let indeterminate = calcIndeterminate();\n @let checked = calcChecked();\n\n <input\n tuiCheckbox\n size=\"s\"\n type=\"checkbox\"\n [indeterminate]=\"indeterminate\"\n [tuiDropdown]=\"dropdown\"\n [tuiDropdownManual]=\"isOpen()\"\n [checked]=\"checked\"\n />\n</div>\n\n<ng-template #dropdown>\n <section class=\"dropdown__content\" id=\"checkbox__dropdown__content\">\n @let selected = selectedElement();\n\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.ALL\"\n (click)=\"selectElement(ESelectionTypes.ALL)\"\n >\n \u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0441\u0435\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.VISIBLE\"\n (click)=\"selectElement(ESelectionTypes.VISIBLE)\"\n >\n \u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0432\u0438\u0434\u0438\u043C\u043E\u0435\n </span>\n <span\n class=\"dropdown__element\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.INVERSE\"\n (click)=\"selectElement(ESelectionTypes.INVERSE)\"\n >\n \u041A\u0440\u043E\u043C\u0435 \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u043E\u0433\u043E\n </span>\n <div\n class=\"dropdown__select-value\"\n [class.dropdown__element_selected]=\"selected === ESelectionTypes.COUNT\"\n >\n <span>\u0412\u044B\u0431\u0440\u0430\u0442\u044C</span>\n <tui-textfield\n tuiTextfieldSize=\"s\"\n tuiTextfieldAppearance=\"textfield\"\n [tuiTextfieldCleaner]=\"true\"\n class=\"flex-1\"\n >\n <input\n tuiInputNumber\n placeholder=\"\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0447\u0438\u0441\u043B\u043E\"\n [max]=\"inputMaxValue()\"\n [ngModel]=\"inputValue()\"\n (ngModelChange)=\"inputValueChanges($event)\"\n (focusin)=\"onInputFocus()\"\n />\n\n @if (inputDescription()) {\n <tui-icon\n icon=\"assets/ngx-register-base/icons/circle-question-empty.svg\"\n [tuiTooltip]=\"inputDescription()\"\n />\n }\n </tui-textfield>\n </div>\n <div class=\"dropdown__footer\">\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__apply\"\n size=\"m\"\n appearance=\"outline\"\n [loading]=\"loading()\"\n (click)=\"applySelection()\"\n >\n \u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C\n </button>\n <button\n tuiButton\n class=\"dropdown__button dropdown__button__cancel\"\n size=\"m\"\n appearance=\"outline-grayscale\"\n (click)=\"dropSelection()\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n </section>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.dropdown__content{display:flex;flex-direction:column;padding:8px 0;width:260px}.dropdown__element,.dropdown__select-value,.dropdown__button{padding:8px 16px}.dropdown__button{padding:2px 0;flex:1;width:109px}.dropdown__element{cursor:pointer;overflow:hidden;font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.dropdown__element:hover{background:#f7f9fa;color:var(--text-main)}.dropdown__element_selected{background:#d0edff}.dropdown__select-value{display:flex;align-items:center;padding:4px 16px;gap:8px}.dropdown__select-value span{cursor:default;font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.dropdown__select-value tui-textfield input{font:var(--input-text-14px)!important}.dropdown__footer{padding:0 16px;display:flex;justify-content:center;gap:10px;margin-top:4px}.flex-1{display:flex;flex:1}\n"] }]
|
|
128
|
+
}], ctorParameters: () => [] });
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlZ2lzdGVyLWJhc2Uvc3JjL2xpYi9jb21wb25lbnRzL2NoZWNrYm94LXNlbGVjdG9yL2NoZWNrYm94LXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jaGVja2JveC1zZWxlY3Rvci9jaGVja2JveC1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBdUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNoRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQXFCN0QsTUFBTSxPQUFPLHlCQUF5QjtJQStCcEM7UUE5Qk8saUJBQVksR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUN0Qywy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QUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQzsrR0F2SVUseUJBQXlCO21HQUF6Qix5QkFBeUIsNnhCQ3ZDdEMsNDhGQTJGQSxrb0dEakVJLFdBQVcseXJCQUdYLFdBQVcsOG1CQUNYLDRCQUE0QixxYUFDNUIsU0FBUyxvSUFDVCxnQkFBZ0IsZ1FBRWhCLFVBQVUsbUZBQ1YsT0FBTzs7NEZBSUUseUJBQXlCO2tCQW5CckMsU0FBUzsrQkFDRSx5QkFBeUIsY0FHdkIsSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsNEJBQTRCO3dCQUM1QixTQUFTO3dCQUNULGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLE9BQU87cUJBQ1IsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgdW50cmFja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNlbGVjdGlvblR5cGVzLCBBcHBseVNlbGVjdGlvblR5cGVzIH0gZnJvbSAnLi9jaGVja2JveC1zZWxlY3Rvci50eXBlcyc7XG5pbXBvcnQgeyBUdWlCdXR0b25Mb2FkaW5nLCBUdWlDaGVja2JveCwgVHVpSW5wdXROdW1iZXIsIFR1aVRvb2x0aXAgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpRHJvcGRvd24sIFR1aUljb24sIFR1aVRleHRmaWVsZCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgU2NhbGFyVVVJRCB9IGZyb20gJ2hhc3VyYSc7XG5pbXBvcnQgeyBFUmVnaXN0ZXJPYmplY3RTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IFNlbGVjdGVkT2JqZWN0c1N0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Byb2MtY2hlY2tib3gtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1zZWxlY3Rvci5jb21wb25lbnQubGVzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgVHVpQ2hlY2tib3gsXG4gICAgVHVpRHJvcGRvd24sXG4gICAgVHVpVGV4dGZpZWxkLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgVHVpQnV0dG9uLFxuICAgIFR1aUJ1dHRvbkxvYWRpbmcsXG4gICAgVHVpSW5wdXROdW1iZXIsXG4gICAgVHVpVG9vbHRpcCxcbiAgICBUdWlJY29uLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hTZWxlY3RvckNvbXBvbmVudCB7XG4gIHB1YmxpYyB0b3RhbFJlY29yZHMgPSBpbnB1dDxudW1iZXI+KCk7XG4gIC8qKiBAZGVwcmVjYXRlZCDQuNGB0L/QvtC70YzQt9GD0LnRgtC1IHN0YXRlT2JqZWN0cyAqL1xuICBwdWJsaWMgc2VsZWN0ZWQgPSBpbnB1dChuZXcgU2V0PFNjYWxhclVVSUQ+KCkpO1xuICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHB1YmxpYyBsb2FkaW5nID0gaW5wdXQ8Ym9vbGVhbiB8IG51bGw+KGZhbHNlKTtcbiAgcHVibGljIGlucHV0TWF4VmFsdWUgPSBpbnB1dDxudW1iZXIgfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgb25BcHBseSA9IG91dHB1dDxBcHBseVNlbGVjdGlvblR5cGVzPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGVkU2VydmljZSA9IGluamVjdChTZWxlY3RlZE9iamVjdHNTdGF0ZVNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IEVTZWxlY3Rpb25UeXBlcyA9IFNlbGVjdGlvblR5cGVzO1xuXG4gIHByb3RlY3RlZCBpc09wZW4gPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRFbGVtZW50ID0gc2lnbmFsPFNlbGVjdGlvblR5cGVzIHwgbnVsbD4obnVsbCk7XG4gIHByb3RlY3RlZCBpbnB1dFZhbHVlID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpbnB1dERlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IG1heCA9IHRoaXMuaW5wdXRNYXhWYWx1ZSgpO1xuXG4gICAgaWYgKG1heCA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBg0JzQsNC60YHQuNC80YPQvCDQtNC70Y8g0LLQstC+0LTQsCAtICR7bWF4fWA7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBzdGF0ZU9iamVjdHMgPSB0aGlzLl9zZWxlY3RlZFNlcnZpY2U/LnN0YXRlO1xuICBwcm90ZWN0ZWQgc3RhdGVVbmZldGNoZWRPYmplY3RzID0gdGhpcy5fc2VsZWN0ZWRTZXJ2aWNlPy5zdGF0ZVVuZmV0Y2hlZE9iamVjdHM7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGxvYWRpbmcgPSB0aGlzLmxvYWRpbmcoKTtcbiAgICAgIGNvbnN0IGlzT3BlbiA9IHRoaXMubG9hZGluZygpO1xuXG4gICAgICBpZiAobG9hZGluZyA9PT0gZmFsc2UgJiYgaXNPcGVuKSB7XG4gICAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZWxlY3RFbGVtZW50KG5ld0VsZW1lbnQ6IFNlbGVjdGlvblR5cGVzKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnQudXBkYXRlKChjdXJyZW50RWxlbWVudCkgPT5cbiAgICAgIGN1cnJlbnRFbGVtZW50ID09PSBuZXdFbGVtZW50ID8gbnVsbCA6IG5ld0VsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uSW5wdXRGb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQoU2VsZWN0aW9uVHlwZXMuQ09VTlQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFwcGx5U2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCByZXN1bHQ6IFNlbGVjdGlvblR5cGVzIHwgbnVtYmVyIHwgbnVsbCA9IHRoaXMuc2VsZWN0ZWRFbGVtZW50KCk7XG5cbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChyZXN1bHQgPT09IFNlbGVjdGlvblR5cGVzLkNPVU5UKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLmlucHV0VmFsdWUoKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQXBwbHkuZW1pdChyZXN1bHQpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuaXNPcGVuLnVwZGF0ZSgoaXNPcGVuKSA9PiAhaXNPcGVuKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY0luZGV0ZXJtaW5hdGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLnN0YXRlT2JqZWN0cz8uKCk7XG5cbiAgICBpZiAoc3RhdGUpIHtcbiAgICAgIGNvbnN0IGZldGNoZWRPYmplY3RzID0gWy4uLnN0YXRlLnZhbHVlcygpXTtcbiAgICAgIGNvbnN0IHNlbGVjdGVkT2JqZWN0cyA9IGZldGNoZWRPYmplY3RzLmZpbHRlcihcbiAgICAgICAgKG9iaikgPT4gb2JqLnN0YXRlID09PSBFUmVnaXN0ZXJPYmplY3RTdGF0ZS5TRUxFQ1RFRFxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc29tZUZldGNoZWRJc05vdFNlbGVjdGVkID0gZmV0Y2hlZE9iamVjdHMubGVuZ3RoICE9PSBzZWxlY3RlZE9iamVjdHMubGVuZ3RoO1xuICAgICAgY29uc3QgZmV0Y2hlZElzQWxsID0gZmV0Y2hlZE9iamVjdHMubGVuZ3RoID09PSB0aGlzLnRvdGFsUmVjb3JkcygpO1xuICAgICAgY29uc3QgdW5mZXRjaGVkQXJlU2VsZWN0ZWQgPSB0aGlzLnN0YXRlVW5mZXRjaGVkT2JqZWN0cyEoKSA9PT0gRVJlZ2lzdGVyT2JqZWN0U3RhdGUuU0VMRUNURUQ7XG5cbiAgICAgIGlmIChzZWxlY3RlZE9iamVjdHMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gc29tZUZldGNoZWRJc05vdFNlbGVjdGVkIHx8ICEoZmV0Y2hlZElzQWxsIHx8IHVuZmV0Y2hlZEFyZVNlbGVjdGVkKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFmZXRjaGVkSXNBbGwgJiYgdW5mZXRjaGVkQXJlU2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQoKS5zaXplID4gMCAmJiB0aGlzLnNlbGVjdGVkKCkuc2l6ZSAhPT0gdGhpcy50b3RhbFJlY29yZHMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxjQ2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuc3RhdGVPYmplY3RzPy4oKTtcblxuICAgIGlmIChzdGF0ZSkge1xuICAgICAgY29uc3QgZmV0Y2hlZE9iamVjdHMgPSBbLi4uc3RhdGUudmFsdWVzKCldO1xuICAgICAgY29uc3Qgc2VsZWN0ZWRPYmplY3RzID0gZmV0Y2hlZE9iamVjdHMuZmlsdGVyKFxuICAgICAgICAob2JqKSA9PiBvYmouc3RhdGUgPT09IEVSZWdpc3Rlck9iamVjdFN0YXRlLlNFTEVDVEVEXG4gICAgICApO1xuXG4gICAgICBjb25zdCBmZXRjaGVkQXJlU2VsZWN0ZWQgPSBmZXRjaGVkT2JqZWN0cy5sZW5ndGggPT09IHNlbGVjdGVkT2JqZWN0cy5sZW5ndGg7XG4gICAgICBjb25zdCBzZWxlY3RlZElzQWxsID0gc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA9PT0gdGhpcy50b3RhbFJlY29yZHMoKTtcbiAgICAgIGNvbnN0IHVuZmV0Y2hlZEFyZVNlbGVjdGVkID0gdGhpcy5zdGF0ZVVuZmV0Y2hlZE9iamVjdHMhKCkgPT09IEVSZWdpc3Rlck9iamVjdFN0YXRlLlNFTEVDVEVEO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBzZWxlY3RlZE9iamVjdHMubGVuZ3RoID4gMCAmJiBmZXRjaGVkQXJlU2VsZWN0ZWQgJiYgKHNlbGVjdGVkSXNBbGwgfHwgdW5mZXRjaGVkQXJlU2VsZWN0ZWQpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkKCkuc2l6ZSA+IDAgJiYgdGhpcy5zZWxlY3RlZCgpLnNpemUgPT09IHRoaXMudG90YWxSZWNvcmRzKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xvc2UoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuaXNPcGVuLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGlucHV0VmFsdWVDaGFuZ2VzKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQoU2VsZWN0aW9uVHlwZXMuQ09VTlQpO1xuICAgIHRoaXMuaW5wdXRWYWx1ZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRyb3BTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dFZhbHVlLnNldChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGVkRWxlbWVudC5zZXQobnVsbCk7XG4gICAgdGhpcy5vbkFwcGx5LmVtaXQobnVsbCk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2hlY2tib3hfX2NvbnRhaW5lclwiIChjbGljayk9XCJ0b2dnbGUoKTsgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpXCI+XG4gIEBsZXQgaW5kZXRlcm1pbmF0ZSA9IGNhbGNJbmRldGVybWluYXRlKCk7XG4gIEBsZXQgY2hlY2tlZCA9IGNhbGNDaGVja2VkKCk7XG5cbiAgPGlucHV0XG4gICAgdHVpQ2hlY2tib3hcbiAgICBzaXplPVwic1wiXG4gICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICBbaW5kZXRlcm1pbmF0ZV09XCJpbmRldGVybWluYXRlXCJcbiAgICBbdHVpRHJvcGRvd25dPVwiZHJvcGRvd25cIlxuICAgIFt0dWlEcm9wZG93bk1hbnVhbF09XCJpc09wZW4oKVwiXG4gICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gIC8+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgPHNlY3Rpb24gY2xhc3M9XCJkcm9wZG93bl9fY29udGVudFwiIGlkPVwiY2hlY2tib3hfX2Ryb3Bkb3duX19jb250ZW50XCI+XG4gICAgQGxldCBzZWxlY3RlZCA9IHNlbGVjdGVkRWxlbWVudCgpO1xuXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZHJvcGRvd25fX2VsZW1lbnRcIlxuICAgICAgW2NsYXNzLmRyb3Bkb3duX19lbGVtZW50X3NlbGVjdGVkXT1cInNlbGVjdGVkID09PSBFU2VsZWN0aW9uVHlwZXMuQUxMXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RFbGVtZW50KEVTZWxlY3Rpb25UeXBlcy5BTEwpXCJcbiAgICA+XG4gICAgICDQktGL0LHRgNCw0YLRjCDQstGB0LVcbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgIGNsYXNzPVwiZHJvcGRvd25fX2VsZW1lbnRcIlxuICAgICAgW2NsYXNzLmRyb3Bkb3duX19lbGVtZW50X3NlbGVjdGVkXT1cInNlbGVjdGVkID09PSBFU2VsZWN0aW9uVHlwZXMuVklTSUJMRVwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0RWxlbWVudChFU2VsZWN0aW9uVHlwZXMuVklTSUJMRSlcIlxuICAgID5cbiAgICAgINCS0YvQsdGA0LDRgtGMINCy0LjQtNC40LzQvtC1XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICBjbGFzcz1cImRyb3Bkb3duX19lbGVtZW50XCJcbiAgICAgIFtjbGFzcy5kcm9wZG93bl9fZWxlbWVudF9zZWxlY3RlZF09XCJzZWxlY3RlZCA9PT0gRVNlbGVjdGlvblR5cGVzLklOVkVSU0VcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdEVsZW1lbnQoRVNlbGVjdGlvblR5cGVzLklOVkVSU0UpXCJcbiAgICA+XG4gICAgICDQmtGA0L7QvNC1INCy0YvQtNC10LvQtdC90L3QvtCz0L5cbiAgICA8L3NwYW4+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkcm9wZG93bl9fc2VsZWN0LXZhbHVlXCJcbiAgICAgIFtjbGFzcy5kcm9wZG93bl9fZWxlbWVudF9zZWxlY3RlZF09XCJzZWxlY3RlZCA9PT0gRVNlbGVjdGlvblR5cGVzLkNPVU5UXCJcbiAgICA+XG4gICAgICA8c3Bhbj7QktGL0LHRgNCw0YLRjDwvc3Bhbj5cbiAgICAgIDx0dWktdGV4dGZpZWxkXG4gICAgICAgIHR1aVRleHRmaWVsZFNpemU9XCJzXCJcbiAgICAgICAgdHVpVGV4dGZpZWxkQXBwZWFyYW5jZT1cInRleHRmaWVsZFwiXG4gICAgICAgIFt0dWlUZXh0ZmllbGRDbGVhbmVyXT1cInRydWVcIlxuICAgICAgICBjbGFzcz1cImZsZXgtMVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR1aUlucHV0TnVtYmVyXG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCLQktCy0LXQtNC40YLQtSDRh9C40YHQu9C+XCJcbiAgICAgICAgICBbbWF4XT1cImlucHV0TWF4VmFsdWUoKVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwiaW5wdXRWYWx1ZSgpXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJpbnB1dFZhbHVlQ2hhbmdlcygkZXZlbnQpXCJcbiAgICAgICAgICAoZm9jdXNpbik9XCJvbklucHV0Rm9jdXMoKVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGlmIChpbnB1dERlc2NyaXB0aW9uKCkpIHtcbiAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgIGljb249XCJhc3NldHMvbmd4LXJlZ2lzdGVyLWJhc2UvaWNvbnMvY2lyY2xlLXF1ZXN0aW9uLWVtcHR5LnN2Z1wiXG4gICAgICAgICAgICBbdHVpVG9vbHRpcF09XCJpbnB1dERlc2NyaXB0aW9uKClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIDwvdHVpLXRleHRmaWVsZD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25fX2Zvb3RlclwiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgY2xhc3M9XCJkcm9wZG93bl9fYnV0dG9uIGRyb3Bkb3duX19idXR0b25fX2FwcGx5XCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmcoKVwiXG4gICAgICAgIChjbGljayk9XCJhcHBseVNlbGVjdGlvbigpXCJcbiAgICAgID5cbiAgICAgICAg0J/RgNC40LzQtdC90LjRgtGMXG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgIGNsYXNzPVwiZHJvcGRvd25fX2J1dHRvbiBkcm9wZG93bl9fYnV0dG9uX19jYW5jZWxcIlxuICAgICAgICBzaXplPVwibVwiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lLWdyYXlzY2FsZVwiXG4gICAgICAgIChjbGljayk9XCJkcm9wU2VsZWN0aW9uKClcIlxuICAgICAgPlxuICAgICAgICDQntGC0LzQtdC90LBcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var SelectionTypes;
|
|
2
|
+
(function (SelectionTypes) {
|
|
3
|
+
SelectionTypes["ALL"] = "ALL";
|
|
4
|
+
SelectionTypes["VISIBLE"] = "VISIBLE";
|
|
5
|
+
SelectionTypes["INVERSE"] = "INVERSE";
|
|
6
|
+
SelectionTypes["COUNT"] = "COUNT";
|
|
7
|
+
})(SelectionTypes || (SelectionTypes = {}));
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtc2VsZWN0b3IudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvY2hlY2tib3gtc2VsZWN0b3IvY2hlY2tib3gtc2VsZWN0b3IudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFOLElBQVksY0FLWDtBQUxELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gscUNBQW1CLENBQUE7SUFDbkIscUNBQW1CLENBQUE7SUFDbkIsaUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBTFcsY0FBYyxLQUFkLGNBQWMsUUFLekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBBcHBseVNlbGVjdGlvblR5cGVzID0gT21pdDxTZWxlY3Rpb25UeXBlcywgU2VsZWN0aW9uVHlwZXMuQ09VTlQ+IHwgbnVtYmVyIHwgbnVsbDtcblxuZXhwb3J0IGVudW0gU2VsZWN0aW9uVHlwZXMge1xuICBBTEwgPSAnQUxMJyxcbiAgVklTSUJMRSA9ICdWSVNJQkxFJyxcbiAgSU5WRVJTRSA9ICdJTlZFUlNFJyxcbiAgQ09VTlQgPSAnQ09VTlQnLFxufVxuIl19
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, DestroyRef, effect, inject, input, signal, TemplateRef, untracked, viewChild, } from '@angular/core';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { filter, map, skip } from 'rxjs';
|
|
4
|
+
import { TuiButton, TuiIcon, TuiPopup, TuiScrollbar } from '@taiga-ui/core';
|
|
5
|
+
import { TuiDrawer } from '@taiga-ui/kit';
|
|
6
|
+
import { CdkDropList, CdkDropListGroup, moveItemInArray, transferArrayItem, } from '@angular/cdk/drag-drop';
|
|
7
|
+
import { outputFromObservable, takeUntilDestroyed, toObservable, toSignal, } from '@angular/core/rxjs-interop';
|
|
8
|
+
import { EColumnStatus, } from './types/column-settings.types';
|
|
9
|
+
import { WaResizeObserver } from '@ng-web-apis/resize-observer';
|
|
10
|
+
import { ColumnSettingsTemplateComponent } from './components/column-settings-template/column-settings-template.component';
|
|
11
|
+
import { ICON_CANCEL_CLOSE, ICON_ERASER, ICON_SETTINGS } from './consts/column-settings.consts';
|
|
12
|
+
import { DialogService, ResizeWindowObserverService } from '../../services';
|
|
13
|
+
import { getLastSegmentOfPathName, isNonNull } from '../../utils';
|
|
14
|
+
import { SETTINGS_TYPE, USER_PROFILE_LOADER, USER_SETTINGS_LOADER } from '../../consts';
|
|
15
|
+
import { ResetSettingsFormComponent } from '../reset-settings-form/reset-settings-form.component';
|
|
16
|
+
import { DividerComponent } from '../divider/divider.component';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
export class ColumnSettingsComponent {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.resetColumnSettingsRef = viewChild('resetSettings', { read: (TemplateRef) });
|
|
21
|
+
this.resetColumnSettingsFooter = viewChild('resetSettingsFooter', {
|
|
22
|
+
read: (TemplateRef),
|
|
23
|
+
});
|
|
24
|
+
this.defaultSettings = input.required();
|
|
25
|
+
/** Высота всего компонента настроек */
|
|
26
|
+
this.height = input();
|
|
27
|
+
this.disabled = input(false);
|
|
28
|
+
/** показ заголовка листа фикс. слева колонок */
|
|
29
|
+
this.showLeftListHeader = input(true);
|
|
30
|
+
/** показ заголовка листа фикс. справа колонок */
|
|
31
|
+
this.showRightListHeader = input(true);
|
|
32
|
+
/** заголовок листа с колонками (нефиксированные) */
|
|
33
|
+
this.columnsListHeader = input('Колонки');
|
|
34
|
+
/** показ фикс. справа колонок */
|
|
35
|
+
this.showFixedRightList = input(false);
|
|
36
|
+
/** функция предикат - возможность добавления элемента в лист фикс. слева колонок */
|
|
37
|
+
this.fixedLeftListEnterPredicate = input(() => true);
|
|
38
|
+
/** функция предикат - возможность добавления элемента в лист колонок (нефиксированные) */
|
|
39
|
+
this.columnsListEnterPredicate = input(() => true);
|
|
40
|
+
/** функция предикат - возможность добавления элемента в лист фикс. справа колонок */
|
|
41
|
+
this.fixedRightListEnterPredicate = input(() => true);
|
|
42
|
+
this.openSettings = signal(false);
|
|
43
|
+
this.inputSettings = signal(null);
|
|
44
|
+
this.fixedLeftColumns = computed(() => this.inputSettings()?.stickyLeft ?? []);
|
|
45
|
+
this.columns = computed(() => this.inputSettings()?.columns ?? []);
|
|
46
|
+
this.fixedRightColumns = computed(() => this.inputSettings()?.stickyRight ?? []);
|
|
47
|
+
this.columnsChanges = outputFromObservable(toObservable(this.inputSettings).pipe(skip(1), map((settings) => ({ settings }))));
|
|
48
|
+
this.settingsStore = inject(USER_SETTINGS_LOADER);
|
|
49
|
+
this._dr = inject(DestroyRef);
|
|
50
|
+
this._router = inject(Router);
|
|
51
|
+
this._userProfileService = inject(USER_PROFILE_LOADER);
|
|
52
|
+
this._dialogService = inject(DialogService);
|
|
53
|
+
this._resizeWindowObserver = inject(ResizeWindowObserverService);
|
|
54
|
+
this.iconSettings = ICON_SETTINGS;
|
|
55
|
+
this.iconEraser = ICON_ERASER;
|
|
56
|
+
this.iconCancelClose = ICON_CANCEL_CLOSE;
|
|
57
|
+
this.columnSettingsHeaderHeightPx = 40;
|
|
58
|
+
this.columnSettingsSubtitleHeightPx = 32;
|
|
59
|
+
this.scrollBoxFixedColumnsHeightPx = signal(0);
|
|
60
|
+
this.scrollBoxRightFixedColumnsHeightPx = signal(0);
|
|
61
|
+
this.scrollBoxFixedColumnsMaxHeightPx = 287;
|
|
62
|
+
this.scrollBoxColumnsMaxHeightPx = signal(0);
|
|
63
|
+
this.columnSettingsFooterHeightPx = 48;
|
|
64
|
+
this.columnListHeightPx = toSignal(this._resizeWindowObserver.innerHeight$.pipe(skip(1), map((innerHeight) => this._calcColumnListHeightPx(innerHeight))), {
|
|
65
|
+
initialValue: this._calcColumnListHeightPx(this._resizeWindowObserver.innerHeight()),
|
|
66
|
+
});
|
|
67
|
+
this.columnListBottomPaddingPx = 8;
|
|
68
|
+
this._idUser = this._userProfileService.getUserProfile().id;
|
|
69
|
+
this._moduleName = getLastSegmentOfPathName(this._router.url);
|
|
70
|
+
this.setDefaultSettings();
|
|
71
|
+
this._effectOnSetScrollBoxColumnsMaxHeight();
|
|
72
|
+
}
|
|
73
|
+
setDefaultSettings() {
|
|
74
|
+
effect(() => {
|
|
75
|
+
const defaultSettings = this.defaultSettings();
|
|
76
|
+
const clonedSettings = JSON.parse(JSON.stringify(defaultSettings));
|
|
77
|
+
untracked(() => {
|
|
78
|
+
this.inputSettings.set(clonedSettings);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
_effectOnSetScrollBoxColumnsMaxHeight() {
|
|
83
|
+
effect(() => {
|
|
84
|
+
const parentHeightPx = this.columnListHeightPx();
|
|
85
|
+
const fixedHeightPx = this.scrollBoxFixedColumnsHeightPx();
|
|
86
|
+
const rightFixedHeightPx = this.scrollBoxRightFixedColumnsHeightPx();
|
|
87
|
+
const sumFixedHeightPx = fixedHeightPx + rightFixedHeightPx;
|
|
88
|
+
untracked(() => {
|
|
89
|
+
const newHeightPx = this._calcScrollBoxColumnsMaxHeightPx(parentHeightPx, sumFixedHeightPx);
|
|
90
|
+
this.scrollBoxColumnsMaxHeightPx.set(newHeightPx);
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
ngOnInit() {
|
|
95
|
+
this.subscribeOnSettings();
|
|
96
|
+
this.fetchSettings(this._idUser, this._moduleName);
|
|
97
|
+
}
|
|
98
|
+
fetchSettings(userId, moduleName) {
|
|
99
|
+
this.settingsStore.fetchUserSettingsByUserId({
|
|
100
|
+
userId,
|
|
101
|
+
settingsType: SETTINGS_TYPE.COLUMNS,
|
|
102
|
+
moduleName,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
subscribeOnSettings() {
|
|
106
|
+
this.settingsStore.settings$
|
|
107
|
+
.pipe(filter((settings) => settings.length > 0), map(([settings]) => settings), filter((settings) => isNonNull(settings)), takeUntilDestroyed(this._dr))
|
|
108
|
+
.subscribe((settings) => {
|
|
109
|
+
this._columnsSettings = settings;
|
|
110
|
+
const { tableFields } = settings.settings;
|
|
111
|
+
if (tableFields) {
|
|
112
|
+
this.inputSettings.set(tableFields);
|
|
113
|
+
this.close();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
deleteSettings() {
|
|
118
|
+
const clonedSettings = JSON.parse(JSON.stringify(this.defaultSettings()));
|
|
119
|
+
this.inputSettings.set(clonedSettings);
|
|
120
|
+
if (this._columnsSettings) {
|
|
121
|
+
this.settingsStore.deleteUserSettingsById({
|
|
122
|
+
id: this._columnsSettings?.id,
|
|
123
|
+
updateSettings: true,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
this.close();
|
|
127
|
+
}
|
|
128
|
+
saveSettings(settings) {
|
|
129
|
+
this.settingsStore.upsertUserSettingsByUserId({
|
|
130
|
+
settings: {
|
|
131
|
+
id: this._columnsSettings?.id,
|
|
132
|
+
module_name: this._moduleName,
|
|
133
|
+
settings: {
|
|
134
|
+
...this._columnsSettings?.settings,
|
|
135
|
+
tableFields: settings,
|
|
136
|
+
},
|
|
137
|
+
settings_type: SETTINGS_TYPE.COLUMNS,
|
|
138
|
+
},
|
|
139
|
+
updateSettings: true,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
saveTableSettings() {
|
|
143
|
+
this.saveSettings({
|
|
144
|
+
stickyLeft: this.fixedLeftColumns(),
|
|
145
|
+
columns: this.columns(),
|
|
146
|
+
stickyRight: this.fixedRightColumns(),
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
openResetDialog() {
|
|
150
|
+
this._dialogService
|
|
151
|
+
.openModal(this.resetColumnSettingsRef(), {
|
|
152
|
+
closeable: true,
|
|
153
|
+
width: 466,
|
|
154
|
+
footer: this.resetColumnSettingsFooter(),
|
|
155
|
+
dismissible: true,
|
|
156
|
+
})
|
|
157
|
+
.subscribe();
|
|
158
|
+
}
|
|
159
|
+
toggle() {
|
|
160
|
+
this.openSettings.update((isOpen) => !isOpen);
|
|
161
|
+
}
|
|
162
|
+
close() {
|
|
163
|
+
this.openSettings.set(false);
|
|
164
|
+
}
|
|
165
|
+
dropIntoFixedLeft(event) {
|
|
166
|
+
const droppedElement = event.previousContainer.data[event.previousIndex];
|
|
167
|
+
this._setStatusRecursive(droppedElement, EColumnStatus.STICKY);
|
|
168
|
+
this._moveDroppedItem(event);
|
|
169
|
+
}
|
|
170
|
+
dropIntoColumns(event) {
|
|
171
|
+
const fromOther = event.previousContainer !== event.container;
|
|
172
|
+
if (fromOther) {
|
|
173
|
+
const droppedElement = event.previousContainer.data[event.previousIndex];
|
|
174
|
+
this._setStatusRecursive(droppedElement, EColumnStatus.DEFAULT);
|
|
175
|
+
}
|
|
176
|
+
this._moveDroppedItem(event);
|
|
177
|
+
}
|
|
178
|
+
_moveDroppedItem(event) {
|
|
179
|
+
if (event.previousContainer === event.container) {
|
|
180
|
+
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
toggleVisibility(col) {
|
|
187
|
+
const isHidden = col.status === EColumnStatus.HIDDEN;
|
|
188
|
+
col.status = isHidden ? EColumnStatus.DEFAULT : EColumnStatus.HIDDEN;
|
|
189
|
+
}
|
|
190
|
+
showAllColumns() {
|
|
191
|
+
const settings = this.inputSettings();
|
|
192
|
+
if (!settings) {
|
|
193
|
+
throw new Error('Настройки таблицы не инициализированы');
|
|
194
|
+
}
|
|
195
|
+
this._setColumnsStatusRecursive(settings.columns, EColumnStatus.DEFAULT);
|
|
196
|
+
}
|
|
197
|
+
isHiddenColumn(column) {
|
|
198
|
+
return column.status === EColumnStatus.HIDDEN;
|
|
199
|
+
}
|
|
200
|
+
onFixedScrollbarResize([fixedScrollbar]) {
|
|
201
|
+
this.scrollBoxFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);
|
|
202
|
+
}
|
|
203
|
+
onRightFixedScrollbarResize([fixedScrollbar]) {
|
|
204
|
+
this.scrollBoxRightFixedColumnsHeightPx.set(fixedScrollbar.contentRect.height);
|
|
205
|
+
}
|
|
206
|
+
_calcColumnListHeightPx(windowInnerHeight) {
|
|
207
|
+
const mainHeaderPx = 52;
|
|
208
|
+
const columnSettingsHeaderFooterSumHeightPx = this.columnSettingsHeaderHeightPx + this.columnSettingsFooterHeightPx;
|
|
209
|
+
return windowInnerHeight - mainHeaderPx - columnSettingsHeaderFooterSumHeightPx;
|
|
210
|
+
}
|
|
211
|
+
_calcScrollBoxColumnsMaxHeightPx(parentHeightPx, fixedScrollbarHeightPx) {
|
|
212
|
+
const twoSubtitleHeightPx = 2 * this.columnSettingsSubtitleHeightPx;
|
|
213
|
+
const bottomPaddingPx = this.columnListBottomPaddingPx;
|
|
214
|
+
return parentHeightPx - twoSubtitleHeightPx - fixedScrollbarHeightPx - bottomPaddingPx;
|
|
215
|
+
}
|
|
216
|
+
_setStatusRecursive(column, status) {
|
|
217
|
+
column.status = status;
|
|
218
|
+
if (column.children) {
|
|
219
|
+
this._setColumnsStatusRecursive(column.children, status);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
_setColumnsStatusRecursive(columns, status) {
|
|
223
|
+
for (const [index, col] of columns.entries()) {
|
|
224
|
+
columns[index] = { ...col, status };
|
|
225
|
+
if (col.children) {
|
|
226
|
+
this._setColumnsStatusRecursive(col.children, status);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ColumnSettingsComponent, isStandalone: true, selector: "sproc-column-settings", inputs: { defaultSettings: { classPropertyName: "defaultSettings", publicName: "defaultSettings", isSignal: true, isRequired: true, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, showLeftListHeader: { classPropertyName: "showLeftListHeader", publicName: "showLeftListHeader", isSignal: true, isRequired: false, transformFunction: null }, showRightListHeader: { classPropertyName: "showRightListHeader", publicName: "showRightListHeader", isSignal: true, isRequired: false, transformFunction: null }, columnsListHeader: { classPropertyName: "columnsListHeader", publicName: "columnsListHeader", isSignal: true, isRequired: false, transformFunction: null }, showFixedRightList: { classPropertyName: "showFixedRightList", publicName: "showFixedRightList", isSignal: true, isRequired: false, transformFunction: null }, fixedLeftListEnterPredicate: { classPropertyName: "fixedLeftListEnterPredicate", publicName: "fixedLeftListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null }, columnsListEnterPredicate: { classPropertyName: "columnsListEnterPredicate", publicName: "columnsListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null }, fixedRightListEnterPredicate: { classPropertyName: "fixedRightListEnterPredicate", publicName: "fixedRightListEnterPredicate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { columnsChanges: "columnsChanges" }, providers: [ResizeWindowObserverService], viewQueries: [{ propertyName: "resetColumnSettingsRef", first: true, predicate: ["resetSettings"], descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "resetColumnSettingsFooter", first: true, predicate: ["resetSettingsFooter"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\"></tui-icon>\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\"></tui-icon>\n </button>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\"></tui-icon>\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n \u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043B\u0435\u0432\u0430\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template\n [column]=\"fixedLeftColumn\"\n ></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043F\u0440\u0430\u0432\u0430</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </footer>\n</tui-drawer>\n\n<ng-template #resetSettings>\n <sproc-reset-settings-form></sproc-reset-settings-form>\n</ng-template>\n\n<ng-template #resetSettingsFooter let-completeWith=\"completeWith\">\n <div style=\"width: 100%; display: flex; justify-content: center; gap: 8px\">\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"primary-destructive\"\n size=\"l\"\n (click)=\"deleteSettings(); completeWith(true)\"\n >\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C\n </button>\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"outline-grayscale\"\n size=\"l\"\n (click)=\"completeWith(false)\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.gray{color:var(--gray-icon)}.column-settings__main-button{width:var(--top-bar-button-width);height:var(--top-bar-button-height);border-radius:2px;padding:10px}.column-settings__main-button:disabled{filter:grayscale(100%)!important;cursor:not-allowed}.column-settings__icon{font-size:16px}.column-settings__popup{top:var(--header-height);width:302px;border-radius:2px 2px 0 0;box-shadow:-1px 0 12px #4753263b}.column-settings__popup .header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 0 0 16px;gap:8px;border-radius:2px 2px 0 0;border-bottom:1px solid var(--stroke1);background:var(--table-header);box-shadow:unset}.column-settings__popup .header__title{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px;color:var(--main-black)}.column-settings__popup .header__buttons{display:flex;align-items:center;gap:4px}.column-settings__popup .header__buttons .reset-button{color:var(--gray-icon)}.column-settings__popup .header__buttons .reset-button:hover{color:var(--main-black)}.column-settings__popup .header__buttons sproc-divider{height:24px}.column-settings__popup .header__buttons .close-button{color:var(--brand-danger-active)}.column-settings__popup .header__buttons .close-button:hover{color:var(--brand-danger-hovered)}.column-settings__popup .column-container{display:flex;flex-direction:column;padding-top:8px;overflow:hidden}.column-settings__popup .column-container .subtitle{display:flex;align-items:center;color:var(--main-black);font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.column-settings__popup .column-container .subtitle--flex-grow-1{flex-grow:1}.column-settings__popup .column-container .show-all{color:var(--text-secondary);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.column-settings__popup .column-container .show-all:hover{cursor:pointer;color:var(--main-black)}.column-settings__popup .footer{display:flex;padding:8px 16px;align-items:center}.column-settings__popup .footer .save-button{width:100%}.column-list{display:flex;flex-direction:column}.column-list__label-container{display:flex;flex-direction:row;align-items:center;padding:0 8px 0 12px;cursor:default}::ng-deep .column-list.cdk-drop-list-dragging .column-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }, { kind: "component", type: TuiDrawer, selector: "tui-drawer", inputs: ["direction", "overlay"] }, { kind: "directive", type: TuiPopup, selector: "ng-template[tuiPopup]", inputs: ["tuiPopup"] }, { kind: "component", type: DividerComponent, selector: "sproc-divider", inputs: ["layout"] }, { kind: "component", type: ResetSettingsFormComponent, selector: "sproc-reset-settings-form" }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar", inputs: ["hidden"] }, { kind: "directive", type: WaResizeObserver, selector: "[waResizeObserver]", inputs: ["box"], outputs: ["waResizeObserver"] }, { kind: "component", type: ColumnSettingsTemplateComponent, selector: "sproc-column-settings-template", inputs: ["column", "parent", "expand"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
232
|
+
}
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ColumnSettingsComponent, decorators: [{
|
|
234
|
+
type: Component,
|
|
235
|
+
args: [{ selector: 'sproc-column-settings', standalone: true, imports: [
|
|
236
|
+
TuiButton,
|
|
237
|
+
TuiIcon,
|
|
238
|
+
TuiDrawer,
|
|
239
|
+
TuiPopup,
|
|
240
|
+
DividerComponent,
|
|
241
|
+
ResetSettingsFormComponent,
|
|
242
|
+
CdkDropList,
|
|
243
|
+
CdkDropListGroup,
|
|
244
|
+
TuiScrollbar,
|
|
245
|
+
WaResizeObserver,
|
|
246
|
+
ColumnSettingsTemplateComponent,
|
|
247
|
+
], providers: [ResizeWindowObserverService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n tuiButton\n class=\"column-settings__main-button\"\n appearance=\"outline-grayscale\"\n size=\"m\"\n [disabled]=\"disabled()\"\n (click)=\"toggle()\"\n>\n <tui-icon class=\"column-settings__icon gray\" [icon]=\"iconSettings\"></tui-icon>\n</button>\n\n<tui-drawer\n *tuiPopup=\"openSettings()\"\n class=\"column-settings__popup\"\n direction=\"right\"\n [overlay]=\"true\"\n (click.self)=\"close()\"\n>\n <header class=\"header\" [style.height.px]=\"columnSettingsHeaderHeightPx\">\n <span class=\"header__title\">\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430 \u0442\u0430\u0431\u043B\u0438\u0446\u044B</span>\n <div class=\"header__buttons\">\n <button\n tuiIconButton\n class=\"reset-button\"\n appearance=\"flat\"\n size=\"m\"\n (click)=\"openResetDialog()\"\n >\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconEraser\"></tui-icon>\n </button>\n <sproc-divider layout=\"vertical\"></sproc-divider>\n <button tuiIconButton class=\"close-button\" appearance=\"flat\" size=\"m\" (click)=\"close()\">\n <tui-icon class=\"column-settings__icon\" [icon]=\"iconCancelClose\"></tui-icon>\n </button>\n </div>\n </header>\n <div\n cdkDropListGroup\n class=\"column-container tui__t-content--no-default-padding\"\n [style.height.px]=\"columnListHeightPx()\"\n >\n <div\n cdkDropList\n class=\"column-list\"\n [cdkDropListData]=\"fixedLeftColumns()\"\n (cdkDropListDropped)=\"dropIntoFixedLeft($event)\"\n [cdkDropListEnterPredicate]=\"fixedLeftListEnterPredicate()\"\n >\n @if (showLeftListHeader()) {\n <div class=\"column-list__label-container\">\n <span class=\"subtitle\" [style.height.px]=\"columnSettingsSubtitleHeightPx\">\n \u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043B\u0435\u0432\u0430\n </span>\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onFixedScrollbarResize($event)\"\n >\n @for (fixedLeftColumn of fixedLeftColumns(); track fixedLeftColumn.id) {\n <sproc-column-settings-template\n [column]=\"fixedLeftColumn\"\n ></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"columns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"columnsListEnterPredicate()\"\n >\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >{{ columnsListHeader() }}</span\n >\n <span class=\"show-all\" (click)=\"showAllColumns()\">\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0432\u0441\u0435</span>\n </div>\n <tui-scrollbar [style.max-height.px]=\"scrollBoxColumnsMaxHeightPx()\">\n @for (column of columns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n @if (showFixedRightList()) {\n <sproc-divider></sproc-divider>\n <div\n cdkDropList\n class=\"column-list\"\n [style.padding-bottom.px]=\"columnListBottomPaddingPx\"\n [cdkDropListData]=\"fixedRightColumns()\"\n (cdkDropListDropped)=\"dropIntoColumns($event)\"\n [cdkDropListEnterPredicate]=\"fixedRightListEnterPredicate()\"\n >\n @if (showRightListHeader()) {\n <div class=\"column-list__label-container\">\n <span\n class=\"subtitle subtitle--flex-grow-1\"\n [style.height.px]=\"columnSettingsSubtitleHeightPx\"\n >\u0424\u0438\u043A\u0441\u0438\u0440\u043E\u0432\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 \u0441\u043F\u0440\u0430\u0432\u0430</span\n >\n </div>\n }\n\n <tui-scrollbar\n [style.max-height.px]=\"scrollBoxFixedColumnsMaxHeightPx\"\n (waResizeObserver)=\"onRightFixedScrollbarResize($event)\"\n >\n @for (column of fixedRightColumns(); track column.id) {\n <sproc-column-settings-template [column]=\"column\"></sproc-column-settings-template>\n }\n </tui-scrollbar>\n </div>\n }\n </div>\n <footer class=\"footer\" [style.height.px]=\"columnSettingsFooterHeightPx\">\n <button\n tuiButton\n class=\"save-button\"\n size=\"m\"\n appearance=\"primary\"\n (click)=\"saveTableSettings()\"\n >\n \u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C\n </button>\n </footer>\n</tui-drawer>\n\n<ng-template #resetSettings>\n <sproc-reset-settings-form></sproc-reset-settings-form>\n</ng-template>\n\n<ng-template #resetSettingsFooter let-completeWith=\"completeWith\">\n <div style=\"width: 100%; display: flex; justify-content: center; gap: 8px\">\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"primary-destructive\"\n size=\"l\"\n (click)=\"deleteSettings(); completeWith(true)\"\n >\n \u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C\n </button>\n <button\n tuiButton\n style=\"width: 196px\"\n appearance=\"outline-grayscale\"\n size=\"l\"\n (click)=\"completeWith(false)\"\n >\n \u041E\u0442\u043C\u0435\u043D\u0430\n </button>\n </div>\n</ng-template>\n", styles: [".input-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-text-12px,.body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.table-heading-12px{font-family:Inter,serif;font-size:12px;font-weight:500;line-height:16px}.table-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.table-text-12px-400{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:16px}.table-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.button-links-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.button-links-12px-600{font-family:Inter,serif;font-size:12px;font-weight:600;line-height:16px}.button-links-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:16px}.input-label{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:16px}.input-area{font-family:Inter,serif;font-size:12px;font-weight:400;line-height:20px}.static-title-h3{font-family:Inter,serif;font-size:16px;font-weight:600;line-height:20px}.static-title-h4{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.dynamic-title-h4{font-family:Inter,serif;font-size:14px;font-weight:800;line-height:20px}.main-body-text-12px{font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.main-body-text-14px{font-family:Inter,serif;font-size:14px;font-weight:300;line-height:20px}.main-subscription{font-family:Inter,serif;font-size:10px;font-weight:400;line-height:12px}.input-helper-9px{font-family:Inter,serif;font-size:9px;font-weight:300;line-height:12px}.typography-content-text{font-family:Inter,serif;font-size:12px;font-weight:350;line-height:16px}.main-subtitle,.card-content-text{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.filter-header-text{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px}.btn-14px{font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.search-11px{font-family:Inter,serif;font-size:11px;font-weight:300;line-height:12px}:root{--input-text-12px: normal 300 12px / 16px \"Inter\";--input-text-14px: normal 300 14px / 16px \"Inter\"}.gray{color:var(--gray-icon)}.column-settings__main-button{width:var(--top-bar-button-width);height:var(--top-bar-button-height);border-radius:2px;padding:10px}.column-settings__main-button:disabled{filter:grayscale(100%)!important;cursor:not-allowed}.column-settings__icon{font-size:16px}.column-settings__popup{top:var(--header-height);width:302px;border-radius:2px 2px 0 0;box-shadow:-1px 0 12px #4753263b}.column-settings__popup .header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:0 0 0 16px;gap:8px;border-radius:2px 2px 0 0;border-bottom:1px solid var(--stroke1);background:var(--table-header);box-shadow:unset}.column-settings__popup .header__title{font-family:Inter,serif;font-size:14px;font-weight:500;line-height:18px;color:var(--main-black)}.column-settings__popup .header__buttons{display:flex;align-items:center;gap:4px}.column-settings__popup .header__buttons .reset-button{color:var(--gray-icon)}.column-settings__popup .header__buttons .reset-button:hover{color:var(--main-black)}.column-settings__popup .header__buttons sproc-divider{height:24px}.column-settings__popup .header__buttons .close-button{color:var(--brand-danger-active)}.column-settings__popup .header__buttons .close-button:hover{color:var(--brand-danger-hovered)}.column-settings__popup .column-container{display:flex;flex-direction:column;padding-top:8px;overflow:hidden}.column-settings__popup .column-container .subtitle{display:flex;align-items:center;color:var(--main-black);font-family:Inter,serif;font-size:14px;font-weight:400;line-height:16px}.column-settings__popup .column-container .subtitle--flex-grow-1{flex-grow:1}.column-settings__popup .column-container .show-all{color:var(--text-secondary);font-family:Inter,serif;font-size:12px;font-weight:300;line-height:20px}.column-settings__popup .column-container .show-all:hover{cursor:pointer;color:var(--main-black)}.column-settings__popup .footer{display:flex;padding:8px 16px;align-items:center}.column-settings__popup .footer .save-button{width:100%}.column-list{display:flex;flex-direction:column}.column-list__label-container{display:flex;flex-direction:row;align-items:center;padding:0 8px 0 12px;cursor:default}::ng-deep .column-list.cdk-drop-list-dragging .column-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
248
|
+
}], ctorParameters: () => [] });
|
|
249
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2V0dGluZ3MvY29sdW1uLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFDUixVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUVMLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLGlCQUFpQixHQUNsQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixRQUFRLEdBQ1QsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQ0wsYUFBYSxHQUlkLE1BQU0sK0JBQStCLENBQUM7QUFDdkMsT0FBTyxF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QUF1QjttR0FBdkIsdUJBQXVCLHVyREFIdkIsQ0FBQywyQkFBMkIsQ0FBQyw4SEFJMkIsV0FBVywySUFFdEUsV0FBVyw2Q0N2RXJCLHlyTEFnS0EsNGxKRDNHSSxTQUFTLG9JQUNULE9BQU8scUZBQ1AsU0FBUyx5RkFDVCxRQUFRLHdGQUNSLGdCQUFnQiw4RUFDaEIsMEJBQTBCLHNFQUMxQixXQUFXLDhmQUNYLGdCQUFnQixxSUFDaEIsWUFBWSw4RUFDWixnQkFBZ0IsK0dBQ2hCLCtCQUErQjs7NEZBS3RCLHVCQUF1QjtrQkFyQm5DLFNBQVM7K0JBQ0UsdUJBQXVCLGNBQ3JCLElBQUksV0FHUDt3QkFDUCxTQUFTO3dCQUNULE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxRQUFRO3dCQUNSLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLCtCQUErQjtxQkFDaEMsYUFDVSxDQUFDLDJCQUEyQixDQUFDLG1CQUN2Qix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIGVmZmVjdCxcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT25Jbml0LFxuICBzaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxuICB1bnRyYWNrZWQsXG4gIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHNraXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpSWNvbiwgVHVpUG9wdXAsIFR1aVNjcm9sbGJhciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aURyYXdlciB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHtcbiAgQ2RrRHJhZ0Ryb3AsXG4gIENka0Ryb3BMaXN0LFxuICBDZGtEcm9wTGlzdEdyb3VwLFxuICBtb3ZlSXRlbUluQXJyYXksXG4gIHRyYW5zZmVyQXJyYXlJdGVtLFxufSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIG91dHB1dEZyb21PYnNlcnZhYmxlLFxuICB0YWtlVW50aWxEZXN0cm95ZWQsXG4gIHRvT2JzZXJ2YWJsZSxcbiAgdG9TaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEVDb2x1bW5TdGF0dXMsXG4gIElDb2x1bW5TZXR0aW5ncyxcbiAgSUNvbHVtblNldHRpbmdzQ2hhbmdlcyxcbiAgSVRhYmxlQ29sdW1uU2V0dGluZ3MsXG59IGZyb20gJy4vdHlwZXMvY29sdW1uLXNldHRpbmdzLnR5cGVzJztcbmltcG9ydCB7IFdhUmVzaXplT2JzZXJ2ZXIgfSBmcm9tICdAbmctd2ViLWFwaXMvcmVzaXplLW9ic2VydmVyJztcbmltcG9ydCB7IENvbHVtblNldHRpbmdzVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlL2NvbHVtbi1zZXR0aW5ncy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUNPTl9DQU5DRUxfQ0xPU0UsIElDT05fRVJBU0VSLCBJQ09OX1NFVFRJTkdTIH0gZnJvbSAnLi9jb25zdHMvY29sdW1uLXNldHRpbmdzLmNvbnN0cyc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBSZXNpemVXaW5kb3dPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBnZXRMYXN0U2VnbWVudE9mUGF0aE5hbWUsIGlzTm9uTnVsbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNFVFRJTkdTX1RZUEUsIFVTRVJfUFJPRklMRV9MT0FERVIsIFVTRVJfU0VUVElOR1NfTE9BREVSIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcbmltcG9ydCB7IFJlc2V0U2V0dGluZ3NGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVzZXQtc2V0dGluZ3MtZm9ybS9yZXNldC1zZXR0aW5ncy1mb3JtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGl2aWRlci9kaXZpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJVHBVc2VyU2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Nwcm9jLWNvbHVtbi1zZXR0aW5ncycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4tc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tc2V0dGluZ3MuY29tcG9uZW50Lmxlc3MnXSxcbiAgaW1wb3J0czogW1xuICAgIFR1aUJ1dHRvbixcbiAgICBUdWlJY29uLFxuICAgIFR1aURyYXdlcixcbiAgICBUdWlQb3B1cCxcbiAgICBEaXZpZGVyQ29tcG9uZW50LFxuICAgIFJlc2V0U2V0dGluZ3NGb3JtQ29tcG9uZW50LFxuICAgIENka0Ryb3BMaXN0LFxuICAgIENka0Ryb3BMaXN0R3JvdXAsXG4gICAgVHVpU2Nyb2xsYmFyLFxuICAgIFdhUmVzaXplT2JzZXJ2ZXIsXG4gICAgQ29sdW1uU2V0dGluZ3NUZW1wbGF0ZUNvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbUmVzaXplV2luZG93T2JzZXJ2ZXJTZXJ2aWNlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIHJlc2V0Q29sdW1uU2V0dGluZ3NSZWYgPSB2aWV3Q2hpbGQoJ3Jlc2V0U2V0dGluZ3MnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmPHVua25vd24+IH0pO1xuICBwdWJsaWMgcmVzZXRDb2x1bW5TZXR0aW5nc0Zvb3RlciA9IHZpZXdDaGlsZCgncmVzZXRTZXR0aW5nc0Zvb3RlcicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZjx1bmtub3duPixcbiAgfSk7XG5cbiAgcHVibGljIGRlZmF1bHRTZXR0aW5ncyA9IGlucHV0LnJlcXVpcmVkPElUYWJsZUNvbHVtblNldHRpbmdzPigpO1xuICAvKiog0JLRi9GB0L7RgtCwINCy0YHQtdCz0L4g0LrQvtC80L/QvtC90LXQvdGC0LAg0L3QsNGB0YLRgNC+0LXQuiAqL1xuICBwdWJsaWMgaGVpZ2h0ID0gaW5wdXQ8bnVtYmVyIHwgdW5kZWZpbmVkPigpO1xuICBwdWJsaWMgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIC8qKiDQv9C+0LrQsNC3INC30LDQs9C+0LvQvtCy0LrQsCDQu9C40YHRgtCwINGE0LjQutGBLiDRgdC70LXQstCwINC60L7Qu9C+0L3QvtC6ICovXG4gIHB1YmxpYyBzaG93TGVmdExpc3RIZWFkZXIgPSBpbnB1dCh0cnVlKTtcbiAgLyoqINC/0L7QutCw0Lcg0LfQsNCz0L7Qu9C+0LLQutCwINC70LjRgdGC0LAg0YTQuNC60YEuINGB0L/RgNCw0LLQsCDQutC+0LvQvtC90L7QuiAqL1xuICBwdWJsaWMgc2hvd1JpZ2h0TGlzdEhlYWRlciA9IGlucHV0KHRydWUpO1xuICAvKiog0LfQsNCz0L7Qu9C+0LLQvtC6INC70LjRgdGC0LAg0YEg0LrQvtC70L7QvdC60LDQvNC4ICjQvdC10YTQuNC60YHQuNGA0L7QstCw0L3QvdGL0LUpICovXG4gIHB1YmxpYyBjb2x1bW5zTGlzdEhlYWRlciA9IGlucHV0KCfQmtC+0LvQvtC90LrQuCcpO1xuICAvKiog0L/QvtC60LDQtyDRhNC40LrRgS4g0YHQv9GA0LDQstCwINC60L7Qu9C+0L3QvtC6ICovXG4gIHB1YmxpYyBzaG93Rml4ZWRSaWdodExpc3QgPSBpbnB1dChmYWxzZSk7XG4gIC8qKiDRhNGD0L3QutGG0LjRjyDQv9GA0LXQtNC40LrQsNGCIC0g0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQtNC+0LHQsNCy0LvQtdC90LjRjyDRjdC70LXQvNC10L3RgtCwINCyINC70LjRgdGCINGE0LjQutGBLiDRgdC70LXQstCwINC60L7Qu9C+0L3QvtC6ICovXG4gIHB1YmxpYyBmaXhlZExlZnRMaXN0RW50ZXJQcmVkaWNhdGUgPSBpbnB1dDwoKSA9PiBib29sZWFuPigoKSA9PiB0cnVlKTtcbiAgLyoqINGE0YPQvdC60YbQuNGPINC/0YDQtdC00LjQutCw0YIgLSDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC00L7QsdCw0LLQu9C10L3QuNGPINGN0LvQtdC80LXQvdGC0LAg0LIg0LvQuNGB0YIg0LrQvtC70L7QvdC+0LogKNC90LXRhNC40LrRgdC40YDQvtCy0LDQvdC90YvQtSkgKi9cbiAgcHVibGljIGNvbHVtbnNMaXN0RW50ZXJQcmVkaWNhdGUgPSBpbnB1dDwoKSA9PiBib29sZWFuPigoKSA9PiB0cnVlKTtcbiAgLyoqINGE0YPQvdC60YbQuNGPINC/0YDQtdC00LjQutCw0YIgLSDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC00L7QsdCw0LLQu9C10L3QuNGPINGN0LvQtdC80LXQvdGC0LAg0LIg0LvQuNGB0YIg0YTQuNC60YEuINGB0L/RgNCw0LLQsCDQutC+0LvQvtC90L7QuiAqL1xuICBwdWJsaWMgZml4ZWRSaWdodExpc3RFbnRlclByZWRpY2F0ZSA9IGlucHV0PCgpID0+IGJvb2xlYW4+KCgpID0+IHRydWUpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBvcGVuU2V0dGluZ3MgPSBzaWduYWwoZmFsc2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXRTZXR0aW5ncyA9IHNpZ25hbDxJVGFibGVDb2x1bW5TZXR0aW5ncyB8IG51bGw+KG51bGwpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZml4ZWRMZWZ0Q29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW5wdXRTZXR0aW5ncygpPy5zdGlja3lMZWZ0ID8/IFtdKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmlucHV0U2V0dGluZ3MoKT8uY29sdW1ucyA/PyBbXSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmaXhlZFJpZ2h0Q29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaW5wdXRTZXR0aW5ncygpPy5zdGlja3lSaWdodCA/PyBbXSk7XG5cbiAgcHVibGljIGNvbHVtbnNDaGFuZ2VzID0gb3V0cHV0RnJvbU9ic2VydmFibGU8SUNvbHVtblNldHRpbmdzQ2hhbmdlcz4oXG4gICAgdG9PYnNlcnZhYmxlKHRoaXMuaW5wdXRTZXR0aW5ncykucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBtYXAoKHNldHRpbmdzKSA9PiAoeyBzZXR0aW5ncyB9KSlcbiAgICApXG4gICk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHNldHRpbmdzU3RvcmUgPSBpbmplY3QoVVNFUl9TRVRUSU5HU19MT0FERVIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RyID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXNlclByb2ZpbGVTZXJ2aWNlID0gaW5qZWN0KFVTRVJfUFJPRklMRV9MT0FERVIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNpemVXaW5kb3dPYnNlcnZlciA9IGluamVjdChSZXNpemVXaW5kb3dPYnNlcnZlclNlcnZpY2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBpY29uU2V0dGluZ3MgPSBJQ09OX1NFVFRJTkdTO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbkVyYXNlciA9IElDT05fRVJBU0VSO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbkNhbmNlbENsb3NlID0gSUNPTl9DQU5DRUxfQ0xPU0U7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbHVtblNldHRpbmdzSGVhZGVySGVpZ2h0UHggPSA0MDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbHVtblNldHRpbmdzU3VidGl0bGVIZWlnaHRQeCA9IDMyO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsQm94Rml4ZWRDb2x1bW5zSGVpZ2h0UHggPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxCb3hSaWdodEZpeGVkQ29sdW1uc0hlaWdodFB4ID0gc2lnbmFsKDApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsQm94Rml4ZWRDb2x1bW5zTWF4SGVpZ2h0UHggPSAyODc7XG4gIHByb3RlY3RlZCByZWFkb25seSBzY3JvbGxCb3hDb2x1bW5zTWF4SGVpZ2h0UHggPSBzaWduYWwoMCk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5TZXR0aW5nc0Zvb3RlckhlaWdodFB4ID0gNDg7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5MaXN0SGVpZ2h0UHggPSB0b1NpZ25hbChcbiAgICB0aGlzLl9yZXNpemVXaW5kb3dPYnNlcnZlci5pbm5lckhlaWdodCQucGlwZShcbiAgICAgIHNraXAoMSksXG4gICAgICBtYXAoKGlubmVySGVpZ2h0KSA9PiB0aGlzLl9jYWxjQ29sdW1uTGlzdEhlaWdodFB4KGlubmVySGVpZ2h0KSlcbiAgICApLFxuICAgIHtcbiAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy5fY2FsY0NvbHVtbkxpc3RIZWlnaHRQeCh0aGlzLl9yZXNpemVXaW5kb3dPYnNlcnZlci5pbm5lckhlaWdodCgpKSxcbiAgICB9XG4gICk7XG4gIHByb3RlY3RlZCByZWFkb25seSBjb2x1bW5MaXN0Qm90dG9tUGFkZGluZ1B4ID0gODtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pZFVzZXIgPSB0aGlzLl91c2VyUHJvZmlsZVNlcnZpY2UuZ2V0VXNlclByb2ZpbGUoKS5pZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kdWxlTmFtZSA9IGdldExhc3RTZWdtZW50T2ZQYXRoTmFtZSh0aGlzLl9yb3V0ZXIudXJsKTtcblxuICBwcml2YXRlIF9jb2x1bW5zU2V0dGluZ3M6IElUcFVzZXJTZXR0aW5ncyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnNldERlZmF1bHRTZXR0aW5ncygpO1xuICAgIHRoaXMuX2VmZmVjdE9uU2V0U2Nyb2xsQm94Q29sdW1uc01heEhlaWdodCgpO1xuICB9XG5cbiAgcHVibGljIHNldERlZmF1bHRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFNldHRpbmdzID0gdGhpcy5kZWZhdWx0U2V0dGluZ3MoKTtcbiAgICAgIGNvbnN0IGNsb25lZFNldHRpbmdzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWZhdWx0U2V0dGluZ3MpKTtcblxuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgdGhpcy5pbnB1dFNldHRpbmdzLnNldChjbG9uZWRTZXR0aW5ncyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2VmZmVjdE9uU2V0U2Nyb2xsQm94Q29sdW1uc01heEhlaWdodCgpOiB2b2lkIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgcGFyZW50SGVpZ2h0UHggPSB0aGlzLmNvbHVtbkxpc3RIZWlnaHRQeCgpO1xuICAgICAgY29uc3QgZml4ZWRIZWlnaHRQeCA9IHRoaXMuc2Nyb2xsQm94Rml4ZWRDb2x1bW5zSGVpZ2h0UHgoKTtcbiAgICAgIGNvbnN0IHJpZ2h0Rml4ZWRIZWlnaHRQeCA9IHRoaXMuc2Nyb2xsQm94UmlnaHRGaXhlZENvbHVtbnNIZWlnaHRQeCgpO1xuICAgICAgY29uc3Qgc3VtRml4ZWRIZWlnaHRQeCA9IGZpeGVkSGVpZ2h0UHggKyByaWdodEZpeGVkSGVpZ2h0UHg7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0hlaWdodFB4ID0gdGhpcy5fY2FsY1Njcm9sbEJveENvbHVtbnNNYXhIZWlnaHRQeChwYXJlbnRIZWlnaHRQeCwgc3VtRml4ZWRIZWlnaHRQeCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsQm94Q29sdW1uc01heEhlaWdodFB4LnNldChuZXdIZWlnaHRQeCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmliZU9uU2V0dGluZ3MoKTtcbiAgICB0aGlzLmZldGNoU2V0dGluZ3ModGhpcy5faWRVc2VyLCB0aGlzLl9tb2R1bGVOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTZXR0aW5ncyh1c2VySWQ6IHN0cmluZywgbW9kdWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZXR0aW5nc1N0b3JlLmZldGNoVXNlclNldHRpbmdzQnlVc2VySWQoe1xuICAgICAgdXNlcklkLFxuICAgICAgc2V0dGluZ3NUeXBlOiBTRVRUSU5HU19UWVBFLkNPTFVNTlMsXG4gICAgICBtb2R1bGVOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVPblNldHRpbmdzKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3NTdG9yZS5zZXR0aW5ncyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKHNldHRpbmdzKSA9PiBzZXR0aW5ncy5sZW5ndGggPiAwKSxcbiAgICAgICAgbWFwKChbc2V0dGluZ3NdKSA9PiBzZXR0aW5ncyksXG4gICAgICAgIGZpbHRlcigoc2V0dGluZ3MpID0+IGlzTm9uTnVsbChzZXR0aW5ncykpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZHIpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChzZXR0aW5ncykgPT4ge1xuICAgICAgICB0aGlzLl9jb2x1bW5zU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICAgICAgY29uc3QgeyB0YWJsZUZpZWxkcyB9ID0gc2V0dGluZ3Muc2V0dGluZ3M7XG5cbiAgICAgICAgaWYgKHRhYmxlRmllbGRzKSB7XG4gICAgICAgICAgdGhpcy5pbnB1dFNldHRpbmdzLnNldCh0YWJsZUZpZWxkcyk7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBkZWxldGVTZXR0aW5ncygpOiB2b2lkIHtcbiAgICBjb25zdCBjbG9uZWRTZXR0aW5ncyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0U2V0dGluZ3MoKSkpO1xuICAgIHRoaXMuaW5wdXRTZXR0aW5ncy5zZXQoY2xvbmVkU2V0dGluZ3MpO1xuXG4gICAgaWYgKHRoaXMuX2NvbHVtbnNTZXR0aW5ncykge1xuICAgICAgdGhpcy5zZXR0aW5nc1N0b3JlLmRlbGV0ZVVzZXJTZXR0aW5nc0J5SWQoe1xuICAgICAgICBpZDogdGhpcy5fY29sdW1uc1NldHRpbmdzPy5pZCxcbiAgICAgICAgdXBkYXRlU2V0dGluZ3M6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2F2ZVNldHRpbmdzKHNldHRpbmdzOiBJVGFibGVDb2x1bW5TZXR0aW5ncyk6IHZvaWQge1xuICAgIHRoaXMuc2V0dGluZ3NTdG9yZS51cHNlcnRVc2VyU2V0dGluZ3NCeVVzZXJJZCh7XG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBpZDogdGhpcy5fY29sdW1uc1NldHRpbmdzPy5pZCxcbiAgICAgICAgbW9kdWxlX25hbWU6IHRoaXMuX21vZHVsZU5hbWUsXG4gICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgLi4udGhpcy5fY29sdW1uc1NldHRpbmdzPy5zZXR0aW5ncyxcbiAgICAgICAgICB0YWJsZUZpZWxkczogc2V0dGluZ3MsXG4gICAgICAgIH0sXG4gICAgICAgIHNldHRpbmdzX3R5cGU6IFNFVFRJTkdTX1RZUEUuQ09MVU1OUyxcbiAgICAgIH0sXG4gICAgICB1cGRhdGVTZXR0aW5nczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzYXZlVGFibGVTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVTZXR0aW5ncyh7XG4gICAgICBzdGlja3lMZWZ0OiB0aGlzLmZpeGVkTGVmdENvbHVtbnMoKSxcbiAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucygpLFxuICAgICAgc3RpY2t5UmlnaHQ6IHRoaXMuZml4ZWRSaWdodENvbHVtbnMoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvcGVuUmVzZXREaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxuICAgICAgLm9wZW5Nb2RhbCh0aGlzLnJlc2V0Q29sdW1uU2V0dGluZ3NSZWYoKSwge1xuICAgICAgICBjbG9zZWFibGU6IHRydWUsXG4gICAgICAgIHdpZHRoOiA0NjYsXG4gICAgICAgIGZvb3RlcjogdGhpcy5yZXNldENvbHVtblNldHRpbmdzRm9vdGVyKCksXG4gICAgICAgIGRpc21pc3NpYmxlOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b2dnbGUoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuU2V0dGluZ3MudXBkYXRlKChpc09wZW4pID0+ICFpc09wZW4pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMub3BlblNldHRpbmdzLnNldChmYWxzZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZHJvcEludG9GaXhlZExlZnQoZXZlbnQ6IENka0RyYWdEcm9wPElDb2x1bW5TZXR0aW5nc1tdPik6IHZvaWQge1xuICAgIGNvbnN0IGRyb3BwZWRFbGVtZW50ID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XTtcbiAgICB0aGlzLl9zZXRTdGF0dXNSZWN1cnNpdmUoZHJvcHBlZEVsZW1lbnQsIEVDb2x1bW5TdGF0dXMuU1RJQ0tZKTtcbiAgICB0aGlzLl9tb3ZlRHJvcHBlZEl0ZW0oZXZlbnQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRyb3BJbnRvQ29sdW1ucyhldmVudDogQ2RrRHJhZ0Ryb3A8SUNvbHVtblNldHRpbmdzW10+KTogdm9pZCB7XG4gICAgY29uc3QgZnJvbU90aGVyID0gZXZlbnQucHJldmlvdXNDb250YWluZXIgIT09IGV2ZW50LmNvbnRhaW5lcjtcblxuICAgIGlmIChmcm9tT3RoZXIpIHtcbiAgICAgIGNvbnN0IGRyb3BwZWRFbGVtZW50ID0gZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XTtcbiAgICAgIHRoaXMuX3NldFN0YXR1c1JlY3Vyc2l2ZShkcm9wcGVkRWxlbWVudCwgRUNvbHVtblN0YXR1cy5ERUZBVUxUKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tb3ZlRHJvcHBlZEl0ZW0oZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbW92ZURyb3BwZWRJdGVtKGV2ZW50OiBDZGtEcmFnRHJvcDxJQ29sdW1uU2V0dGluZ3NbXT4pOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgdG9nZ2xlVmlzaWJpbGl0eShjb2w6IElDb2x1bW5TZXR0aW5ncyk6IHZvaWQge1xuICAgIGNvbnN0IGlzSGlkZGVuID0gY29sLnN0YXR1cyA9PT0gRUNvbHVtblN0YXR1cy5ISURERU47XG4gICAgY29sLnN0YXR1cyA9IGlzSGlkZGVuID8gRUNvbHVtblN0YXR1cy5ERUZBVUxUIDogRUNvbHVtblN0YXR1cy5ISURERU47XG4gIH1cblxuICBwcm90ZWN0ZWQgc2hvd0FsbENvbHVtbnMoKTogdm9pZCB7XG4gICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLmlucHV0U2V0dGluZ3MoKTtcblxuICAgIGlmICghc2V0dGluZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcign0J3QsNGB0YLRgNC+0LnQutC4INGC0LDQsdC70LjRhtGLINC90LUg0LjQvdC40YbQuNCw0LvQuNC30LjRgNC+0LLQsNC90YsnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRDb2x1bW5zU3RhdHVzUmVjdXJzaXZlKHNldHRpbmdzLmNvbHVtbnMsIEVDb2x1bW5TdGF0dXMuREVGQVVMVCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNIaWRkZW5Db2x1bW4oY29sdW1uOiBJQ29sdW1uU2V0dGluZ3MpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29sdW1uLnN0YXR1cyA9PT0gRUNvbHVtblN0YXR1cy5ISURERU47XG4gIH1cblxuICBwcm90ZWN0ZWQgb25GaXhlZFNjcm9sbGJhclJlc2l6ZShbZml4ZWRTY3JvbGxiYXJdOiByZWFkb25seSBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbEJveEZpeGVkQ29sdW1uc0hlaWdodFB4LnNldChmaXhlZFNjcm9sbGJhci5jb250ZW50UmVjdC5oZWlnaHQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uUmlnaHRGaXhlZFNjcm9sbGJhclJlc2l6ZShbZml4ZWRTY3JvbGxiYXJdOiByZWFkb25seSBSZXNpemVPYnNlcnZlckVudHJ5W10pOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbEJveFJpZ2h0Rml4ZWRDb2x1bW5zSGVpZ2h0UHguc2V0KGZpeGVkU2Nyb2xsYmFyLmNvbnRlbnRSZWN0LmhlaWdodCk7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjQ29sdW1uTGlzdEhlaWdodFB4KHdpbmRvd0lubmVySGVpZ2h0OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1haW5IZWFkZXJQeCA9IDUyO1xuICAgIGNvbnN0IGNvbHVtblNldHRpbmdzSGVhZGVyRm9vdGVyU3VtSGVpZ2h0UHggPVxuICAgICAgdGhpcy5jb2x1bW5TZXR0aW5nc0hlYWRlckhlaWdodFB4ICsgdGhpcy5jb2x1bW5TZXR0aW5nc0Zvb3RlckhlaWdodFB4O1xuXG4gICAgcmV0dXJuIHdpbmRvd0lubmVySGVpZ2h0IC0gbWFpbkhlYWRlclB4IC0gY29sdW1uU2V0dGluZ3NIZWFkZXJGb290ZXJTdW1IZWlnaHRQeDtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGNTY3JvbGxCb3hDb2x1bW5zTWF4SGVpZ2h0UHgoXG4gICAgcGFyZW50SGVpZ2h0UHg6IG51bWJlcixcbiAgICBmaXhlZFNjcm9sbGJhckhlaWdodFB4OiBudW1iZXJcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCB0d29TdWJ0aXRsZUhlaWdodFB4ID0gMiAqIHRoaXMuY29sdW1uU2V0dGluZ3NTdWJ0aXRsZUhlaWdodFB4O1xuICAgIGNvbnN0IGJvdHRvbVBhZGRpbmdQeCA9IHRoaXMuY29sdW1uTGlzdEJvdHRvbVBhZGRpbmdQeDtcblxuICAgIHJldHVybiBwYXJlbnRIZWlnaHRQeCAtIHR3b1N1YnRpdGxlSGVpZ2h0UHggLSBmaXhlZFNjcm9sbGJhckhlaWdodFB4IC0gYm90dG9tUGFkZGluZ1B4O1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U3RhdHVzUmVjdXJzaXZlKGNvbHVtbjogSUNvbHVtblNldHRpbmdzLCBzdGF0dXM6IEVDb2x1bW5TdGF0dXMpOiB2b2lkIHtcbiAgICBjb2x1bW4uc3RhdHVzID0gc3RhdHVzO1xuXG4gICAgaWYgKGNvbHVtbi5jaGlsZHJlbikge1xuICAgICAgdGhpcy5fc2V0Q29sdW1uc1N0YXR1c1JlY3Vyc2l2ZShjb2x1bW4uY2hpbGRyZW4sIHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0Q29sdW1uc1N0YXR1c1JlY3Vyc2l2ZShjb2x1bW5zOiBJQ29sdW1uU2V0dGluZ3NbXSwgc3RhdHVzOiBFQ29sdW1uU3RhdHVzKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbaW5kZXgsIGNvbF0gb2YgY29sdW1ucy5lbnRyaWVzKCkpIHtcbiAgICAgIGNvbHVtbnNbaW5kZXhdID0geyAuLi5jb2wsIHN0YXR1cyB9O1xuXG4gICAgICBpZiAoY29sLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuX3NldENvbHVtbnNTdGF0dXNSZWN1cnNpdmUoY29sLmNoaWxkcmVuLCBzdGF0dXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0dWlCdXR0b25cbiAgY2xhc3M9XCJjb2x1bW4tc2V0dGluZ3NfX21haW4tYnV0dG9uXCJcbiAgYXBwZWFyYW5jZT1cIm91dGxpbmUtZ3JheXNjYWxlXCJcbiAgc2l6ZT1cIm1cIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQoKVwiXG4gIChjbGljayk9XCJ0b2dnbGUoKVwiXG4+XG4gIDx0dWktaWNvbiBjbGFzcz1cImNvbHVtbi1zZXR0aW5nc19faWNvbiBncmF5XCIgW2ljb25dPVwiaWNvblNldHRpbmdzXCI+PC90dWktaWNvbj5cbjwvYnV0dG9uPlxuXG48dHVpLWRyYXdlclxuICAqdHVpUG9wdXA9XCJvcGVuU2V0dGluZ3MoKVwiXG4gIGNsYXNzPVwiY29sdW1uLXNldHRpbmdzX19wb3B1cFwiXG4gIGRpcmVjdGlvbj1cInJpZ2h0XCJcbiAgW292ZXJsYXldPVwidHJ1ZVwiXG4gIChjbGljay5zZWxmKT1cImNsb3NlKClcIlxuPlxuICA8aGVhZGVyIGNsYXNzPVwiaGVhZGVyXCIgW3N0eWxlLmhlaWdodC5weF09XCJjb2x1bW5TZXR0aW5nc0hlYWRlckhlaWdodFB4XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJoZWFkZXJfX3RpdGxlXCI+0J3QsNGB0YLRgNC+0LnQutCwINGC0LDQsdC70LjRhtGLPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2J1dHRvbnNcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICBjbGFzcz1cInJlc2V0LWJ1dHRvblwiXG4gICAgICAgIGFwcGVhcmFuY2U9XCJmbGF0XCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAoY2xpY2spPVwib3BlblJlc2V0RGlhbG9nKClcIlxuICAgICAgPlxuICAgICAgICA8dHVpLWljb24gY2xhc3M9XCJjb2x1bW4tc2V0dGluZ3NfX2ljb25cIiBbaWNvbl09XCJpY29uRXJhc2VyXCI+PC90dWktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPHNwcm9jLWRpdmlkZXIgbGF5b3V0PVwidmVydGljYWxcIj48L3Nwcm9jLWRpdmlkZXI+XG4gICAgICA8YnV0dG9uIHR1aUljb25CdXR0b24gY2xhc3M9XCJjbG9zZS1idXR0b25cIiBhcHBlYXJhbmNlPVwiZmxhdFwiIHNpemU9XCJtXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPHR1aS1pY29uIGNsYXNzPVwiY29sdW1uLXNldHRpbmdzX19pY29uXCIgW2ljb25dPVwiaWNvbkNhbmNlbENsb3NlXCI+PC90dWktaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2hlYWRlcj5cbiAgPGRpdlxuICAgIGNka0Ryb3BMaXN0R3JvdXBcbiAgICBjbGFzcz1cImNvbHVtbi1jb250YWluZXIgdHVpX190LWNvbnRlbnQtLW5vLWRlZmF1bHQtcGFkZGluZ1wiXG4gICAgW3N0eWxlLmhlaWdodC5weF09XCJjb2x1bW5MaXN0SGVpZ2h0UHgoKVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjZGtEcm9wTGlzdFxuICAgICAgY2xhc3M9XCJjb2x1bW4tbGlzdFwiXG4gICAgICBbY2RrRHJvcExpc3REYXRhXT1cImZpeGVkTGVmdENvbHVtbnMoKVwiXG4gICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BJbnRvRml4ZWRMZWZ0KCRldmVudClcIlxuICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiZml4ZWRMZWZ0TGlzdEVudGVyUHJlZGljYXRlKClcIlxuICAgID5cbiAgICAgIEBpZiAoc2hvd0xlZnRMaXN0SGVhZGVyKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1saXN0X19sYWJlbC1jb250YWluZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1YnRpdGxlXCIgW3N0eWxlLmhlaWdodC5weF09XCJjb2x1bW5TZXR0aW5nc1N1YnRpdGxlSGVpZ2h0UHhcIj5cbiAgICAgICAgICAgINCk0LjQutGB0LjRgNC+0LLQsNC90L3Ri9C1INC60L7Qu9C+0L3QutC4INGB0LvQtdCy0LBcbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8dHVpLXNjcm9sbGJhclxuICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJzY3JvbGxCb3hGaXhlZENvbHVtbnNNYXhIZWlnaHRQeFwiXG4gICAgICAgICh3YVJlc2l6ZU9ic2VydmVyKT1cIm9uRml4ZWRTY3JvbGxiYXJSZXNpemUoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIEBmb3IgKGZpeGVkTGVmdENvbHVtbiBvZiBmaXhlZExlZnRDb2x1bW5zKCk7IHRyYWNrIGZpeGVkTGVmdENvbHVtbi5pZCkge1xuICAgICAgICAgIDxzcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGVcbiAgICAgICAgICAgIFtjb2x1bW5dPVwiZml4ZWRMZWZ0Q29sdW1uXCJcbiAgICAgICAgICA+PC9zcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGU+XG4gICAgICAgIH1cbiAgICAgIDwvdHVpLXNjcm9sbGJhcj5cbiAgICA8L2Rpdj5cbiAgICA8c3Byb2MtZGl2aWRlcj48L3Nwcm9jLWRpdmlkZXI+XG4gICAgPGRpdlxuICAgICAgY2RrRHJvcExpc3RcbiAgICAgIGNsYXNzPVwiY29sdW1uLWxpc3RcIlxuICAgICAgW3N0eWxlLnBhZGRpbmctYm90dG9tLnB4XT1cImNvbHVtbkxpc3RCb3R0b21QYWRkaW5nUHhcIlxuICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJjb2x1bW5zKClcIlxuICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wSW50b0NvbHVtbnMoJGV2ZW50KVwiXG4gICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJjb2x1bW5zTGlzdEVudGVyUHJlZGljYXRlKClcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tbGlzdF9fbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJzdWJ0aXRsZSBzdWJ0aXRsZS0tZmxleC1ncm93LTFcIlxuICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY29sdW1uU2V0dGluZ3NTdWJ0aXRsZUhlaWdodFB4XCJcbiAgICAgICAgICA+e3sgY29sdW1uc0xpc3RIZWFkZXIoKSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2hvdy1hbGxcIiAoY2xpY2spPVwic2hvd0FsbENvbHVtbnMoKVwiPtCf0L7QutCw0LfQsNGC0Ywg0LLRgdC1PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8dHVpLXNjcm9sbGJhciBbc3R5bGUubWF4LWhlaWdodC5weF09XCJzY3JvbGxCb3hDb2x1bW5zTWF4SGVpZ2h0UHgoKVwiPlxuICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1ucygpOyB0cmFjayBjb2x1bW4uaWQpIHtcbiAgICAgICAgICA8c3Byb2MtY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlIFtjb2x1bW5dPVwiY29sdW1uXCI+PC9zcHJvYy1jb2x1bW4tc2V0dGluZ3MtdGVtcGxhdGU+XG4gICAgICAgIH1cbiAgICAgIDwvdHVpLXNjcm9sbGJhcj5cbiAgICA8L2Rpdj5cbiAgICBAaWYgKHNob3dGaXhlZFJpZ2h0TGlzdCgpKSB7XG4gICAgICA8c3Byb2MtZGl2aWRlcj48L3Nwcm9jLWRpdmlkZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgIGNsYXNzPVwiY29sdW1uLWxpc3RcIlxuICAgICAgICBbc3R5bGUucGFkZGluZy1ib3R0b20ucHhdPVwiY29sdW1uTGlzdEJvdHRvbVBhZGRpbmdQeFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZml4ZWRSaWdodENvbHVtbnMoKVwiXG4gICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEludG9Db2x1bW5zKCRldmVudClcIlxuICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJmaXhlZFJpZ2h0TGlzdEVudGVyUHJlZGljYXRlKClcIlxuICAgICAgPlxuICAgICAgICBAaWYgKHNob3dSaWdodExpc3RIZWFkZXIoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tbGlzdF9fbGFiZWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInN1YnRpdGxlIHN1YnRpdGxlLS1mbGV4LWdyb3ctMVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwiY29sdW1uU2V0dGluZ3NTdWJ0aXRsZUhlaWdodFB4XCJcbiAgICAgICAgICAgICAgPtCk0LjQutGB0LjRgNC+0LLQsNC90L3Ri9C1INC60L7Qu9C+0L3QutC4INGB0L/RgNCw0LLQsDwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPHR1aS1zY3JvbGxiYXJcbiAgICAgICAgICBbc3R5bGUubWF4LWhlaWdodC5weF09XCJzY3JvbGxCb3hGaXhlZENvbHVtbnNNYXhIZWlnaHRQeFwiXG4gICAgICAgICAgKHdhUmVzaXplT2JzZXJ2ZXIpPVwib25SaWdodEZpeGVkU2Nyb2xsYmFyUmVzaXplKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgQGZvciAoY29sdW1uIG9mIGZpeGVkUmlnaHRDb2x1bW5zKCk7IHRyYWNrIGNvbHVtbi5pZCkge1xuICAgICAgICAgICAgPHNwcm9jLWNvbHVtbi1zZXR0aW5ncy10ZW1wbGF0ZSBbY29sdW1uXT1cImNvbHVtblwiPjwvc3Byb2MtY29sdW1uLXNldHRpbmdzLXRlbXBsYXRlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC90dWktc2Nyb2xsYmFyPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbiAgPGZvb3RlciBjbGFzcz1cImZvb3RlclwiIFtzdHlsZS5oZWlnaHQucHhdPVwiY29sdW1uU2V0dGluZ3NGb290ZXJIZWlnaHRQeFwiPlxuICAgIDxidXR0b25cbiAgICAgIHR1aUJ1dHRvblxuICAgICAgY2xhc3M9XCJzYXZlLWJ1dHRvblwiXG4gICAgICBzaXplPVwibVwiXG4gICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAoY2xpY2spPVwic2F2ZVRhYmxlU2V0dGluZ3MoKVwiXG4gICAgPlxuICAgICAg0KHQvtGF0YDQsNC90LjRgtGMXG4gICAgPC9idXR0b24+XG4gIDwvZm9vdGVyPlxuPC90dWktZHJhd2VyPlxuXG48bmctdGVtcGxhdGUgI3Jlc2V0U2V0dGluZ3M+XG4gIDxzcHJvYy1yZXNldC1zZXR0aW5ncy1mb3JtPjwvc3Byb2MtcmVzZXQtc2V0dGluZ3MtZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjcmVzZXRTZXR0aW5nc0Zvb3RlciBsZXQtY29tcGxldGVXaXRoPVwiY29tcGxldGVXaXRoXCI+XG4gIDxkaXYgc3R5bGU9XCJ3aWR0aDogMTAwJTsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogOHB4XCI+XG4gICAgPGJ1dHRvblxuICAgICAgdHVpQnV0dG9uXG4gICAgICBzdHlsZT1cIndpZHRoOiAxOTZweFwiXG4gICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeS1kZXN0cnVjdGl2ZVwiXG4gICAgICBzaXplPVwibFwiXG4gICAgICAoY2xpY2spPVwiZGVsZXRlU2V0dGluZ3MoKTsgY29tcGxldGVXaXRoKHRydWUpXCJcbiAgICA+XG4gICAgICDQodCx0YDQvtGB0LjRgtGMXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHVpQnV0dG9uXG4gICAgICBzdHlsZT1cIndpZHRoOiAxOTZweFwiXG4gICAgICBhcHBlYXJhbmNlPVwib3V0bGluZS1ncmF5c2NhbGVcIlxuICAgICAgc2l6ZT1cImxcIlxuICAgICAgKGNsaWNrKT1cImNvbXBsZXRlV2l0aChmYWxzZSlcIlxuICAgID5cbiAgICAgINCe0YLQvNC10L3QsFxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|