@theseam/ui-common 0.2.11 → 0.2.15
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/assets/vendor/intl-tel-input/js/utils.js +255 -254
- package/bundles/theseam-ui-common-asset-reader.umd.js +7 -9
- package/bundles/theseam-ui-common-asset-reader.umd.js.map +1 -1
- package/bundles/theseam-ui-common-breadcrumbs.umd.js +6 -8
- package/bundles/theseam-ui-common-breadcrumbs.umd.js.map +1 -1
- package/bundles/theseam-ui-common-buttons.umd.js +5 -5
- package/bundles/theseam-ui-common-buttons.umd.js.map +1 -1
- package/bundles/theseam-ui-common-card.umd.js +6 -6
- package/bundles/theseam-ui-common-card.umd.js.map +1 -1
- package/bundles/theseam-ui-common-checkbox.umd.js +4 -4
- package/bundles/theseam-ui-common-checkbox.umd.js.map +1 -1
- package/bundles/theseam-ui-common-confirm-dialog.umd.js +4 -4
- package/bundles/theseam-ui-common-confirm-dialog.umd.js.map +1 -1
- package/bundles/theseam-ui-common-core.umd.js +4 -4
- package/bundles/theseam-ui-common-core.umd.js.map +1 -1
- package/bundles/theseam-ui-common-data-exporter.umd.js +5 -5
- package/bundles/theseam-ui-common-data-filters.umd.js +9 -6
- package/bundles/theseam-ui-common-data-filters.umd.js.map +1 -1
- package/bundles/theseam-ui-common-datatable-dynamic.umd.js +7 -7
- package/bundles/theseam-ui-common-datatable-dynamic.umd.js.map +1 -1
- package/bundles/theseam-ui-common-datatable.umd.js +1314 -378
- package/bundles/theseam-ui-common-datatable.umd.js.map +1 -1
- package/bundles/theseam-ui-common-dynamic-component-loader.umd.js +5 -7
- package/bundles/theseam-ui-common-dynamic-component-loader.umd.js.map +1 -1
- package/bundles/theseam-ui-common-dynamic.umd.js +7 -9
- package/bundles/theseam-ui-common-dynamic.umd.js.map +1 -1
- package/bundles/theseam-ui-common-footer-bar.umd.js +3 -3
- package/bundles/theseam-ui-common-form-field-error.umd.js +5 -5
- package/bundles/theseam-ui-common-form-field-error.umd.js.map +1 -1
- package/bundles/theseam-ui-common-form-field.umd.js +5 -5
- package/bundles/theseam-ui-common-form-field.umd.js.map +1 -1
- package/bundles/theseam-ui-common-framework.umd.js +27 -29
- package/bundles/theseam-ui-common-framework.umd.js.map +1 -1
- package/bundles/theseam-ui-common-graphql.umd.js +958 -8
- package/bundles/theseam-ui-common-graphql.umd.js.map +1 -1
- package/bundles/theseam-ui-common-icon.umd.js +5 -5
- package/bundles/theseam-ui-common-icon.umd.js.map +1 -1
- package/bundles/theseam-ui-common-layout.umd.js +5 -7
- package/bundles/theseam-ui-common-layout.umd.js.map +1 -1
- package/bundles/theseam-ui-common-loading.umd.js +4 -4
- package/bundles/theseam-ui-common-menu.umd.js +5 -5
- package/bundles/theseam-ui-common-menu.umd.js.map +1 -1
- package/bundles/theseam-ui-common-modal.umd.js +6 -6
- package/bundles/theseam-ui-common-modal.umd.js.map +1 -1
- package/bundles/theseam-ui-common-models.umd.js +3 -3
- package/bundles/theseam-ui-common-popover.umd.js +4 -4
- package/bundles/theseam-ui-common-progress.umd.js +5 -5
- package/bundles/theseam-ui-common-progress.umd.js.map +1 -1
- package/bundles/theseam-ui-common-scrollbar.umd.js +7 -9
- package/bundles/theseam-ui-common-scrollbar.umd.js.map +1 -1
- package/bundles/theseam-ui-common-services.umd.js +6 -8
- package/bundles/theseam-ui-common-services.umd.js.map +1 -1
- package/bundles/theseam-ui-common-shared.umd.js +4 -4
- package/bundles/theseam-ui-common-shared.umd.js.map +1 -1
- package/bundles/theseam-ui-common-storage.umd.js +5 -7
- package/bundles/theseam-ui-common-storage.umd.js.map +1 -1
- package/bundles/theseam-ui-common-story-helpers.umd.js +4 -4
- package/bundles/theseam-ui-common-story-helpers.umd.js.map +1 -1
- package/bundles/theseam-ui-common-tabbed.umd.js +5 -5
- package/bundles/theseam-ui-common-tabbed.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table-cell-type.umd.js +5 -7
- package/bundles/theseam-ui-common-table-cell-type.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table-cell-types.umd.js +258 -32
- package/bundles/theseam-ui-common-table-cell-types.umd.js.map +1 -1
- package/bundles/theseam-ui-common-table.umd.js +5 -5
- package/bundles/theseam-ui-common-table.umd.js.map +1 -1
- package/bundles/theseam-ui-common-tel-input.umd.js +6 -6
- package/bundles/theseam-ui-common-tel-input.umd.js.map +1 -1
- package/bundles/theseam-ui-common-testing.umd.js +568 -0
- package/bundles/theseam-ui-common-testing.umd.js.map +1 -0
- package/bundles/theseam-ui-common-tiled-select.umd.js +56 -39
- package/bundles/theseam-ui-common-tiled-select.umd.js.map +1 -1
- package/bundles/theseam-ui-common-toggle-edit.umd.js +8 -10
- package/bundles/theseam-ui-common-toggle-edit.umd.js.map +1 -1
- package/bundles/theseam-ui-common-toggle-group.umd.js +4 -4
- package/bundles/theseam-ui-common-toggle-group.umd.js.map +1 -1
- package/bundles/theseam-ui-common-unsaved-changes-dialog.umd.js +5 -7
- package/bundles/theseam-ui-common-unsaved-changes-dialog.umd.js.map +1 -1
- package/bundles/theseam-ui-common-utils.umd.js +174 -81
- package/bundles/theseam-ui-common-utils.umd.js.map +1 -1
- package/bundles/theseam-ui-common-validators.umd.js +3 -3
- package/bundles/theseam-ui-common-viewers.umd.js +6 -8
- package/bundles/theseam-ui-common-viewers.umd.js.map +1 -1
- package/bundles/theseam-ui-common-widget.umd.js +18 -20
- package/bundles/theseam-ui-common-widget.umd.js.map +1 -1
- package/bundles/theseam-ui-common.umd.js +2 -2
- package/buttons/theseam-ui-common-buttons.metadata.json +1 -1
- package/card/theseam-ui-common-card.metadata.json +1 -1
- package/data-filters/data-filter.d.ts +10 -6
- package/data-filters/theseam-ui-common-data-filters.metadata.json +1 -1
- package/datatable/datatable/datatable.component.d.ts +46 -32
- package/datatable/datatable-column/datatable-column.component.d.ts +26 -25
- package/datatable/datatable-column-preferences/datatable-column-preferences.component.d.ts +7 -5
- package/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.d.ts +7 -1
- package/datatable/datatable-menu-bar/datatable-menu-bar.component.d.ts +1 -1
- package/datatable/directives/datatable-filter.directive.d.ts +1 -1
- package/datatable/models/columns-alteration.d.ts +61 -0
- package/datatable/models/columns-alterations/hide-column.columns-alteration.d.ts +15 -0
- package/datatable/models/columns-alterations/order.columns-alteration.d.ts +20 -0
- package/datatable/models/columns-alterations/sort.columns-alteration.d.ts +14 -0
- package/datatable/models/columns-alterations/width.columns-alteration.d.ts +16 -0
- package/datatable/models/datatable-accessor.d.ts +5 -3
- package/datatable/models/internal-column-props.d.ts +7 -0
- package/datatable/models/page-info.d.ts +12 -0
- package/datatable/models/preferences-accessor.d.ts +1 -1
- package/datatable/models/preferences.d.ts +11 -3
- package/datatable/models/sort-item.d.ts +2 -1
- package/datatable/services/columns-alterations-manager.service.d.ts +39 -0
- package/datatable/services/columns-manager.service.d.ts +55 -0
- package/datatable/services/datatable-preferences.service.d.ts +10 -7
- package/datatable/theseam-ui-common-datatable.d.ts +2 -0
- package/datatable/theseam-ui-common-datatable.metadata.json +1 -1
- package/datatable/tokens/datatable-preferences-accessor.d.ts +2 -2
- package/datatable/utils/create-action-menu-column.d.ts +3 -0
- package/datatable/utils/create-checkbox-column.d.ts +3 -0
- package/datatable/utils/get-column-prop.d.ts +5 -0
- package/datatable/utils/map-columns-alterations-states.d.ts +2 -0
- package/datatable/utils/remove-unused-diffs.d.ts +7 -0
- package/datatable/utils/set-column-defaults.d.ts +2 -0
- package/datatable/utils/translate-templates.d.ts +2 -0
- package/datatable/utils/with-stored-column-info.d.ts +2 -2
- package/datatable-dynamic/theseam-ui-common-datatable-dynamic.metadata.json +1 -1
- package/esm2015/buttons/progress-circle-button/progress-circle-button.component.js +1 -1
- package/esm2015/card/card-action/card-action.component.js +1 -1
- package/esm2015/card/card-body/card-body.component.js +1 -1
- package/esm2015/data-filters/data-filter.js +5 -2
- package/esm2015/data-filters/filters/data-filter-search/data-filter-search.component.js +1 -1
- package/esm2015/data-filters/filters/data-filter-text/data-filter-text.component.js +1 -1
- package/esm2015/datatable/datatable/datatable.component.js +195 -211
- package/esm2015/datatable/datatable-action-menu/datatable-action-menu.component.js +1 -1
- package/esm2015/datatable/datatable-column/datatable-column.component.js +1 -1
- package/esm2015/datatable/datatable-column-preferences/datatable-column-preferences.component.js +42 -19
- package/esm2015/datatable/datatable-column-preferences-button/datatable-column-preferences-button.component.js +38 -4
- package/esm2015/datatable/datatable-export-button/datatable-export-button.component.js +9 -6
- package/esm2015/datatable/datatable-menu-bar/datatable-menu-bar.component.js +1 -1
- package/esm2015/datatable/datatable-menu-bar-column-center/datatable-menu-bar-column-center.component.js +1 -1
- package/esm2015/datatable/datatable-menu-bar-column-left/datatable-menu-bar-column-left.component.js +1 -1
- package/esm2015/datatable/datatable-menu-bar-column-right/datatable-menu-bar-column-right.component.js +1 -1
- package/esm2015/datatable/datatable-menu-bar-row/datatable-menu-bar-row.component.js +1 -1
- package/esm2015/datatable/models/columns-alteration.js +38 -0
- package/esm2015/datatable/models/columns-alterations/hide-column.columns-alteration.js +38 -0
- package/esm2015/datatable/models/columns-alterations/order.columns-alteration.js +81 -0
- package/esm2015/datatable/models/columns-alterations/sort.columns-alteration.js +33 -0
- package/esm2015/datatable/models/columns-alterations/width.columns-alteration.js +41 -0
- package/esm2015/datatable/models/datatable-accessor.js +1 -1
- package/esm2015/datatable/models/internal-column-props.js +15 -0
- package/esm2015/datatable/models/page-info.js +1 -1
- package/esm2015/datatable/models/preferences-accessor.js +1 -1
- package/esm2015/datatable/models/preferences.js +6 -2
- package/esm2015/datatable/models/sort-item.js +1 -1
- package/esm2015/datatable/services/columns-alterations-manager.service.js +134 -0
- package/esm2015/datatable/services/columns-manager.service.js +257 -0
- package/esm2015/datatable/services/datatable-preferences.service.js +78 -32
- package/esm2015/datatable/theseam-ui-common-datatable.js +3 -1
- package/esm2015/datatable/tokens/datatable-preferences-accessor.js +2 -2
- package/esm2015/datatable/utils/create-action-menu-column.js +18 -0
- package/esm2015/datatable/utils/create-checkbox-column.js +15 -0
- package/esm2015/datatable/utils/get-column-prop.js +9 -0
- package/esm2015/datatable/utils/map-columns-alterations-states.js +39 -0
- package/esm2015/datatable/utils/remove-unused-diffs.js +9 -0
- package/esm2015/datatable/utils/set-column-defaults.js +10 -0
- package/esm2015/datatable/utils/translate-templates.js +12 -0
- package/esm2015/datatable/utils/with-stored-column-info.js +1 -1
- package/esm2015/datatable-dynamic/datatable-dynamic-action-menu/datatable-dynamic-action-menu.component.js +1 -1
- package/esm2015/datatable-dynamic/datatable-dynamic-filter-container/datatable-dynamic-filter-container.component.js +1 -1
- package/esm2015/datatable-dynamic/datatable-dynamic.component.js +1 -1
- package/esm2015/form-field/form-field.component.js +1 -1
- package/esm2015/form-field-error/form-field-error/form-field-error.component.js +1 -1
- package/esm2015/framework/base-layout/base-layout.component.js +1 -1
- package/esm2015/framework/dashboard/dashboard-widgets/dashboard-widgets.component.js +1 -1
- package/esm2015/framework/dynamic-router/hierarchy-router-outlet/hierarchy-router-outlet.component.js +1 -1
- package/esm2015/framework/schema-form-controls/schema-form-input/schema-form-input.component.js +1 -1
- package/esm2015/framework/schema-form-controls/schema-form-number/schema-form-number.component.js +1 -1
- package/esm2015/framework/schema-form-controls/schema-form-select/schema-form-select.component.js +1 -1
- package/esm2015/framework/schema-form-controls/schema-form-submit-split/schema-form-submit-split.component.js +1 -1
- package/esm2015/framework/side-nav/side-nav-item/side-nav-item.component.js +1 -1
- package/esm2015/framework/side-nav/side-nav-toggle/side-nav-toggle.component.js +1 -1
- package/esm2015/framework/side-nav/side-nav.component.js +1 -1
- package/esm2015/framework/top-bar/top-bar-menu-button/top-bar-menu-button.component.js +1 -1
- package/esm2015/framework/top-bar/top-bar-title/top-bar-title.component.js +1 -1
- package/esm2015/framework/top-bar/top-bar.component.js +1 -1
- package/esm2015/graphql/datatable/create-page-info-observable.js +38 -0
- package/esm2015/graphql/datatable/datatable-graphql-query-ref.js +236 -0
- package/esm2015/graphql/datatable/datatable-graphql.service.js +35 -0
- package/esm2015/graphql/datatable/datatable-helpers.js +170 -0
- package/esm2015/graphql/datatable/get-page-info.js +11 -0
- package/esm2015/graphql/datatable/index.js +7 -0
- package/esm2015/graphql/datatable/map-filter-states.js +64 -0
- package/esm2015/graphql/datatable/map-page-info.js +14 -0
- package/esm2015/graphql/datatable/mapper-context.js +2 -0
- package/esm2015/graphql/models/gql-datatable-accessor.js +2 -0
- package/esm2015/graphql/models/index.js +2 -1
- package/esm2015/graphql/models/query-processing-config.js +1 -1
- package/esm2015/graphql/public-api.js +2 -1
- package/esm2015/graphql/utils/parse-hints.js +3 -3
- package/esm2015/icon/icon/icon.component.js +1 -1
- package/esm2015/loading/loading/loading.component.js +1 -1
- package/esm2015/menu/menu.component.js +1 -1
- package/esm2015/modal/modal-body/modal-body.component.js +1 -1
- package/esm2015/modal/modal-container/modal-container.component.js +1 -1
- package/esm2015/popover/popover/popover.component.js +1 -1
- package/esm2015/progress/progress-circle/progress-circle.component.js +1 -1
- package/esm2015/tabbed/tabbed.component.js +1 -1
- package/esm2015/table/table/table.component.js +1 -1
- package/esm2015/table-cell-types/public-api.js +8 -1
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.js +2 -0
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.js +74 -0
- package/esm2015/table-cell-types/table-cell-type-currency/table-cell-type-currency.js +2 -0
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.js +73 -0
- package/esm2015/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.js +2 -0
- package/esm2015/table-cell-types/table-cell-type-icon/table-cell-type-icon.component.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.js +1 -1
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.js +71 -0
- package/esm2015/table-cell-types/table-cell-type-integer/table-cell-type-integer.js +2 -0
- package/esm2015/table-cell-types/table-cell-type-manifests.js +29 -17
- package/esm2015/table-cell-types/table-cell-type-progress-circle/table-cell-type-progress-circle.component.js +1 -1
- package/esm2015/table-cell-types/table-cell-types.module.js +9 -2
- package/esm2015/tel-input/tel-input/tel-input.component.js +1 -1
- package/esm2015/testing/current-tick-time.js +16 -0
- package/esm2015/testing/fake-toastr.js +29 -0
- package/esm2015/testing/get-harness.js +16 -0
- package/esm2015/testing/public-api.js +7 -0
- package/esm2015/testing/render-story.js +12 -0
- package/esm2015/testing/story-expect.js +39 -0
- package/esm2015/testing/theseam-ui-common-testing.js +5 -0
- package/esm2015/testing/tick-helper.js +74 -0
- package/esm2015/tiled-select/components/tiled-select/tiled-select.component.js +25 -17
- package/esm2015/tiled-select/components/tiled-select-tile/tiled-select-tile.component.js +5 -2
- package/esm2015/tiled-select/components/tiled-select-tile-icon/tiled-select-tile-icon.component.js +1 -1
- package/esm2015/tiled-select/public-api.js +2 -1
- package/esm2015/tiled-select/tiled-select.models.js +1 -1
- package/esm2015/tiled-select/tiled-select.module.js +4 -4
- package/esm2015/toggle-edit/toggle-edit-actions-container/toggle-edit-actions-container.component.js +1 -1
- package/esm2015/toggle-edit/toggle-edit.component.js +1 -1
- package/esm2015/utils/array-move.js +62 -0
- package/esm2015/utils/public-api.js +2 -1
- package/esm2015/utils/router/is-empty-url-route.js +1 -1
- package/esm2015/utils/subscriber-count.js +31 -4
- package/esm2015/widget/widget/widget.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-button-group/widget-button-group.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-content-header/widget-content-header.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-empty-label/widget-empty-label.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-footer-link/widget-footer-link.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-footer-text/widget-footer-text.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-header-badge/widget-header-badge.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-tile/widget-tile-footer-item/widget-tile-footer-item.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-tile/widget-tile-group/widget-tile-group.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-tile/widget-tile.component.js +1 -1
- package/esm2015/widget/widget-content-components/widget-tile-list/widget-tile-list.component.js +1 -1
- package/esm2015/widget/widget-footer/widget-footer.component.js +1 -1
- package/fesm2015/theseam-ui-common-buttons.js +1 -1
- package/fesm2015/theseam-ui-common-card.js +2 -2
- package/fesm2015/theseam-ui-common-data-filters.js +6 -3
- package/fesm2015/theseam-ui-common-data-filters.js.map +1 -1
- package/fesm2015/theseam-ui-common-datatable-dynamic.js +3 -3
- package/fesm2015/theseam-ui-common-datatable.js +1106 -319
- package/fesm2015/theseam-ui-common-datatable.js.map +1 -1
- package/fesm2015/theseam-ui-common-form-field-error.js +1 -1
- package/fesm2015/theseam-ui-common-form-field.js +1 -1
- package/fesm2015/theseam-ui-common-framework.js +13 -13
- package/fesm2015/theseam-ui-common-graphql.js +555 -5
- package/fesm2015/theseam-ui-common-graphql.js.map +1 -1
- package/fesm2015/theseam-ui-common-icon.js +1 -1
- package/fesm2015/theseam-ui-common-loading.js +1 -1
- package/fesm2015/theseam-ui-common-menu.js +1 -1
- package/fesm2015/theseam-ui-common-modal.js +2 -2
- package/fesm2015/theseam-ui-common-popover.js +1 -1
- package/fesm2015/theseam-ui-common-progress.js +1 -1
- package/fesm2015/theseam-ui-common-tabbed.js +1 -1
- package/fesm2015/theseam-ui-common-table-cell-types.js +234 -22
- package/fesm2015/theseam-ui-common-table-cell-types.js.map +1 -1
- package/fesm2015/theseam-ui-common-table.js +1 -1
- package/fesm2015/theseam-ui-common-tel-input.js +1 -1
- package/fesm2015/theseam-ui-common-testing.js +191 -0
- package/fesm2015/theseam-ui-common-testing.js.map +1 -0
- package/fesm2015/theseam-ui-common-tiled-select.js +34 -21
- package/fesm2015/theseam-ui-common-tiled-select.js.map +1 -1
- package/fesm2015/theseam-ui-common-toggle-edit.js +2 -2
- package/fesm2015/theseam-ui-common-utils.js +92 -4
- package/fesm2015/theseam-ui-common-utils.js.map +1 -1
- package/fesm2015/theseam-ui-common-widget.js +12 -12
- package/form-field/theseam-ui-common-form-field.metadata.json +1 -1
- package/form-field-error/theseam-ui-common-form-field-error.metadata.json +1 -1
- package/framework/theseam-ui-common-framework.metadata.json +1 -1
- package/graphql/datatable/create-page-info-observable.d.ts +4 -0
- package/graphql/datatable/datatable-graphql-query-ref.d.ts +65 -0
- package/graphql/datatable/datatable-graphql.service.d.ts +26 -0
- package/graphql/datatable/datatable-helpers.d.ts +12 -0
- package/graphql/datatable/get-page-info.d.ts +4 -0
- package/graphql/datatable/index.d.ts +6 -0
- package/graphql/datatable/map-filter-states.d.ts +18 -0
- package/graphql/datatable/map-page-info.d.ts +11 -0
- package/graphql/datatable/mapper-context.d.ts +6 -0
- package/graphql/models/gql-datatable-accessor.d.ts +9 -0
- package/graphql/models/index.d.ts +1 -0
- package/graphql/models/query-processing-config.d.ts +4 -0
- package/graphql/public-api.d.ts +1 -0
- package/graphql/theseam-ui-common-graphql.metadata.json +1 -1
- package/icon/theseam-ui-common-icon.metadata.json +1 -1
- package/loading/theseam-ui-common-loading.metadata.json +1 -1
- package/menu/theseam-ui-common-menu.metadata.json +1 -1
- package/modal/theseam-ui-common-modal.metadata.json +1 -1
- package/package.json +1 -1
- package/popover/theseam-ui-common-popover.metadata.json +1 -1
- package/progress/theseam-ui-common-progress.metadata.json +1 -1
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +54 -52
- package/tabbed/theseam-ui-common-tabbed.metadata.json +1 -1
- package/table/theseam-ui-common-table.metadata.json +1 -1
- package/table-cell-types/public-api.d.ts +7 -0
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency-config.d.ts +39 -0
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency.component.d.ts +19 -0
- package/table-cell-types/table-cell-type-currency/table-cell-type-currency.d.ts +3 -0
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal-config.d.ts +31 -1
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.component.d.ts +19 -0
- package/table-cell-types/table-cell-type-decimal/table-cell-type-decimal.d.ts +3 -0
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer-config.d.ts +23 -1
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer.component.d.ts +19 -0
- package/table-cell-types/table-cell-type-integer/table-cell-type-integer.d.ts +3 -0
- package/table-cell-types/table-cell-type-manifests.d.ts +2 -1
- package/table-cell-types/theseam-ui-common-table-cell-types.metadata.json +1 -1
- package/tel-input/theseam-ui-common-tel-input.metadata.json +1 -1
- package/testing/current-tick-time.d.ts +13 -0
- package/testing/fake-toastr.d.ts +30 -0
- package/testing/get-harness.d.ts +7 -0
- package/testing/package.json +11 -0
- package/testing/public-api.d.ts +6 -0
- package/testing/render-story.d.ts +2 -0
- package/testing/story-expect.d.ts +5 -0
- package/{test-helpers/theseam-ui-common-test-helpers.d.ts → testing/theseam-ui-common-testing.d.ts} +0 -0
- package/testing/theseam-ui-common-testing.metadata.json +1 -0
- package/{test-helpers → testing}/tick-helper.d.ts +0 -0
- package/tiled-select/components/tiled-select/tiled-select.component.d.ts +7 -3
- package/tiled-select/components/tiled-select-tile/tiled-select-tile.component.d.ts +1 -0
- package/tiled-select/theseam-ui-common-tiled-select.metadata.json +1 -1
- package/tiled-select/tiled-select.models.d.ts +3 -1
- package/toggle-edit/theseam-ui-common-toggle-edit.metadata.json +1 -1
- package/utils/array-move.d.ts +49 -0
- package/utils/public-api.d.ts +1 -0
- package/utils/subscriber-count.d.ts +13 -1
- package/utils/theseam-ui-common-utils.metadata.json +1 -1
- package/widget/theseam-ui-common-widget.metadata.json +1 -1
- package/bundles/theseam-ui-common-test-helpers.umd.js +0 -94
- package/bundles/theseam-ui-common-test-helpers.umd.js.map +0 -1
- package/esm2015/test-helpers/public-api.js +0 -2
- package/esm2015/test-helpers/theseam-ui-common-test-helpers.js +0 -5
- package/esm2015/test-helpers/tick-helper.js +0 -74
- package/fesm2015/theseam-ui-common-test-helpers.js +0 -81
- package/fesm2015/theseam-ui-common-test-helpers.js.map +0 -1
- package/test-helpers/package.json +0 -11
- package/test-helpers/public-api.d.ts +0 -1
- package/test-helpers/theseam-ui-common-test-helpers.metadata.json +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SortType } from '@marklb/ngx-datatable';
|
|
2
|
+
import { notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
3
|
+
import { ColumnsAlteration } from '../columns-alteration';
|
|
4
|
+
export class SortColumnsAlteration extends ColumnsAlteration {
|
|
5
|
+
constructor(state, persistent) {
|
|
6
|
+
super(state, persistent);
|
|
7
|
+
this.type = 'sort';
|
|
8
|
+
if (!this._isValidState(state)) {
|
|
9
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
10
|
+
}
|
|
11
|
+
this.id = `${this.type}`;
|
|
12
|
+
}
|
|
13
|
+
apply(columns, datatable) {
|
|
14
|
+
if (datatable.sortType === SortType.single) {
|
|
15
|
+
datatable.sorts = this.state.sorts.length > 0 ? [this.state.sorts[0]] : [];
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
datatable.sorts = this.state.sorts;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
_isValidState(state) {
|
|
22
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
23
|
+
// because the state may have been loaded from an invalid persistant
|
|
24
|
+
// storage.
|
|
25
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
26
|
+
// when retrieved from storage.
|
|
27
|
+
if (!notNullOrUndefined(state.sorts)) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5jb2x1bW5zLWFsdGVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL3NvcnQuY29sdW1ucy1hbHRlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUc3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQWF6RCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsaUJBQTZDO0lBS3RGLFlBQ0UsS0FBaUMsRUFDakMsVUFBbUI7UUFFbkIsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQTtRQU5WLFNBQUksR0FBVyxNQUFNLENBQUE7UUFRbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUIsTUFBTSxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ3ZEO1FBRUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQTJDLEVBQUUsU0FBbUM7UUFDM0YsSUFBSSxTQUFTLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDMUMsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtTQUM3RTthQUFNO1lBQ0wsU0FBUyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQTtTQUNuQztJQUNILENBQUM7SUFFTyxhQUFhLENBQUMsS0FBaUM7UUFDckQsd0VBQXdFO1FBQ3hFLG9FQUFvRTtRQUNwRSxXQUFXO1FBRVgsd0VBQXdFO1FBQ3hFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNvcnRUeXBlIH0gZnJvbSAnQG1hcmtsYi9uZ3gtZGF0YXRhYmxlJ1xyXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXHJcblxyXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJy4uL3NvcnQtaXRlbSdcclxuaW1wb3J0IHsgQ29sdW1uc0FsdGVyYXRpb24gfSBmcm9tICcuLi9jb2x1bW5zLWFsdGVyYXRpb24nXHJcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVBY2Nlc3NvciB9IGZyb20gJy4uL2RhdGF0YWJsZS1hY2Nlc3NvcidcclxuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4uL3RhYmxlLWNvbHVtbidcclxuXHJcbi8vIE5PVEU6IFRoaXMgZG9lc24ndCBhY3Qgb24gYSBzaW5nbGUgU29ydEl0ZW0sIGJlY2F1c2UgZGVhbGluZyB3aXRoIGNvbmZsaWN0c1xyXG4vLyBiZXR3ZWVuIGlmIGEgc29ydCB3YXMgYWRkZWQgYnkgYW4gYWx0ZXJhdGlvbiBvciBkYXRhdGFibGUgaW5wdXQgaXMgZGlmZmljdWx0XHJcbi8vIHRvIGRldGVybWluZS4gVGhlcmUgbWF5IGJlIHNvbWUgZ29vZCBhc3N1bXB0aW9ucyBmb3IgaGFuZGxpbmcgdGhlIGlzc3VlcywgYnV0XHJcbi8vIGZvciBub3cgSSB0aGluayBpdCBpcyBzYWZlc3QgdG8ganVzdCBzdG9yZSB0aGUgd2hvbGUgc29ydHMgYXJyYXkgYXMgYW5cclxuLy8gYWx0ZXJhdGlvbi5cclxuZXhwb3J0IGludGVyZmFjZSBTb3J0Q29sdW1uc0FsdGVyYXRpb25TdGF0ZSB7XHJcbiAgc29ydHM6IFNvcnRJdGVtW11cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNvcnRDb2x1bW5zQWx0ZXJhdGlvbiBleHRlbmRzIENvbHVtbnNBbHRlcmF0aW9uPFNvcnRDb2x1bW5zQWx0ZXJhdGlvblN0YXRlPiB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmdcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IHR5cGU6IHN0cmluZyA9ICdzb3J0J1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHN0YXRlOiBTb3J0Q29sdW1uc0FsdGVyYXRpb25TdGF0ZSxcclxuICAgIHBlcnNpc3RlbnQ6IGJvb2xlYW5cclxuICApIHtcclxuICAgIHN1cGVyKHN0YXRlLCBwZXJzaXN0ZW50KVxyXG5cclxuICAgIGlmICghdGhpcy5faXNWYWxpZFN0YXRlKHN0YXRlKSkge1xyXG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBzdGF0ZTogJHtKU09OLnN0cmluZ2lmeShzdGF0ZSl9YClcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlkID0gYCR7dGhpcy50eXBlfWBcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseShjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uPGFueSwgYW55PltdLCBkYXRhdGFibGU6IFRoZVNlYW1EYXRhdGFibGVBY2Nlc3Nvcik6IHZvaWQge1xyXG4gICAgaWYgKGRhdGF0YWJsZS5zb3J0VHlwZSA9PT0gU29ydFR5cGUuc2luZ2xlKSB7XHJcbiAgICAgIGRhdGF0YWJsZS5zb3J0cyA9IHRoaXMuc3RhdGUuc29ydHMubGVuZ3RoID4gMCA/IFsgdGhpcy5zdGF0ZS5zb3J0c1swXSBdIDogW11cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRhdGF0YWJsZS5zb3J0cyA9IHRoaXMuc3RhdGUuc29ydHNcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lzVmFsaWRTdGF0ZShzdGF0ZTogU29ydENvbHVtbnNBbHRlcmF0aW9uU3RhdGUpOiBib29sZWFuIHtcclxuICAgIC8vIE5PVEU6IENoZWNraW5nIG51bGwgb3IgdW5kZWZpbmVkLCBldmVuIHRob3VnaCB0aGUgdHlwZSBkb2Vzbid0IGFsbG93LFxyXG4gICAgLy8gYmVjYXVzZSB0aGUgc3RhdGUgbWF5IGhhdmUgYmVlbiBsb2FkZWQgZnJvbSBhbiBpbnZhbGlkIHBlcnNpc3RhbnRcclxuICAgIC8vIHN0b3JhZ2UuXHJcblxyXG4gICAgLy8gVE9ETzogUmVtb3ZlIHdoZW4gc3RhdGUgdmFsaWRhdGlvbi9taWdyYXRpb24gaXMgaW1wbGVtZW50ZWQgdG8gaGFwcGVuXHJcbiAgICAvLyB3aGVuIHJldHJpZXZlZCBmcm9tIHN0b3JhZ2UuXHJcbiAgICBpZiAoIW5vdE51bGxPclVuZGVmaW5lZChzdGF0ZS5zb3J0cykpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
2
|
+
import { getColumnProp } from '../../utils/get-column-prop';
|
|
3
|
+
import { ColumnsAlteration } from '../columns-alteration';
|
|
4
|
+
export class WidthColumnsAlteration extends ColumnsAlteration {
|
|
5
|
+
constructor(state, persistent) {
|
|
6
|
+
super(state, persistent);
|
|
7
|
+
this.type = 'width';
|
|
8
|
+
if (!this._isValidState(state)) {
|
|
9
|
+
throw Error(`Invalid state: ${JSON.stringify(state)}`);
|
|
10
|
+
}
|
|
11
|
+
this.id = `${this.type}--${state.columnProp}`;
|
|
12
|
+
}
|
|
13
|
+
apply(columns, datatable) {
|
|
14
|
+
for (const col of columns) {
|
|
15
|
+
const prop = getColumnProp(col);
|
|
16
|
+
if (prop === this.state.columnProp) {
|
|
17
|
+
col.canAutoResize = this.state.canAutoResize;
|
|
18
|
+
if (notNullOrUndefined(this.state.width)) {
|
|
19
|
+
col.width = this.state.width;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
_isValidState(state) {
|
|
25
|
+
// NOTE: Checking null or undefined, even though the type doesn't allow,
|
|
26
|
+
// because the state may have been loaded from an invalid persistant
|
|
27
|
+
// storage.
|
|
28
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
29
|
+
// when retrieved from storage.
|
|
30
|
+
if (!notNullOrUndefined(state.columnProp)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
// TODO: Remove when state validation/migration is implemented to happen
|
|
34
|
+
// when retrieved from storage.
|
|
35
|
+
if (!notNullOrUndefined(state.canAutoResize)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkdGguY29sdW1ucy1hbHRlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvY29sdW1ucy1hbHRlcmF0aW9ucy93aWR0aC5jb2x1bW5zLWFsdGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBVXpELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxpQkFBOEM7SUFLeEYsWUFDRSxLQUFrQyxFQUNsQyxVQUFtQjtRQUVuQixLQUFLLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBTlYsU0FBSSxHQUFXLE9BQU8sQ0FBQTtRQVFwQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM5QixNQUFNLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7U0FDdkQ7UUFFRCxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDL0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUEyQyxFQUFFLFNBQW1DO1FBQzNGLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUMvQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtnQkFDbEMsR0FBRyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQTtnQkFDNUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFO29CQUN4QyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFBO2lCQUM3QjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQWtDO1FBQ3RELHdFQUF3RTtRQUN4RSxvRUFBb0U7UUFDcEUsV0FBVztRQUVYLHdFQUF3RTtRQUN4RSwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN6QyxPQUFPLEtBQUssQ0FBQTtTQUNiO1FBRUQsd0VBQXdFO1FBQ3hFLCtCQUErQjtRQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzVDLE9BQU8sS0FBSyxDQUFBO1NBQ2I7UUFFRCxPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhYmxlQ29sdW1uUHJvcCB9IGZyb20gJ0BtYXJrbGIvbmd4LWRhdGF0YWJsZSdcclxuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL3V0aWxzJ1xyXG5cclxuaW1wb3J0IHsgZ2V0Q29sdW1uUHJvcCB9IGZyb20gJy4uLy4uL3V0aWxzL2dldC1jb2x1bW4tcHJvcCdcclxuaW1wb3J0IHsgQ29sdW1uc0FsdGVyYXRpb24gfSBmcm9tICcuLi9jb2x1bW5zLWFsdGVyYXRpb24nXHJcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVBY2Nlc3NvciB9IGZyb20gJy4uL2RhdGF0YWJsZS1hY2Nlc3NvcidcclxuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4uL3RhYmxlLWNvbHVtbidcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV2lkdGhDb2x1bW5zQWx0ZXJhdGlvblN0YXRlIHtcclxuICBjb2x1bW5Qcm9wOiBUYWJsZUNvbHVtblByb3BcclxuICB3aWR0aD86IG51bWJlclxyXG4gIGNhbkF1dG9SZXNpemU6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdpZHRoQ29sdW1uc0FsdGVyYXRpb24gZXh0ZW5kcyBDb2x1bW5zQWx0ZXJhdGlvbjxXaWR0aENvbHVtbnNBbHRlcmF0aW9uU3RhdGU+IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZ1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgdHlwZTogc3RyaW5nID0gJ3dpZHRoJ1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHN0YXRlOiBXaWR0aENvbHVtbnNBbHRlcmF0aW9uU3RhdGUsXHJcbiAgICBwZXJzaXN0ZW50OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBzdXBlcihzdGF0ZSwgcGVyc2lzdGVudClcclxuXHJcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWRTdGF0ZShzdGF0ZSkpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWQgc3RhdGU6ICR7SlNPTi5zdHJpbmdpZnkoc3RhdGUpfWApXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pZCA9IGAke3RoaXMudHlwZX0tLSR7c3RhdGUuY29sdW1uUHJvcH1gXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXBwbHkoY29sdW1uczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbjxhbnksIGFueT5bXSwgZGF0YXRhYmxlOiBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IpOiB2b2lkIHtcclxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgICAgY29uc3QgcHJvcCA9IGdldENvbHVtblByb3AoY29sKVxyXG4gICAgICBpZiAocHJvcCA9PT0gdGhpcy5zdGF0ZS5jb2x1bW5Qcm9wKSB7XHJcbiAgICAgICAgY29sLmNhbkF1dG9SZXNpemUgPSB0aGlzLnN0YXRlLmNhbkF1dG9SZXNpemVcclxuICAgICAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKHRoaXMuc3RhdGUud2lkdGgpKSB7XHJcbiAgICAgICAgICBjb2wud2lkdGggPSB0aGlzLnN0YXRlLndpZHRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc1ZhbGlkU3RhdGUoc3RhdGU6IFdpZHRoQ29sdW1uc0FsdGVyYXRpb25TdGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgLy8gTk9URTogQ2hlY2tpbmcgbnVsbCBvciB1bmRlZmluZWQsIGV2ZW4gdGhvdWdoIHRoZSB0eXBlIGRvZXNuJ3QgYWxsb3csXHJcbiAgICAvLyBiZWNhdXNlIHRoZSBzdGF0ZSBtYXkgaGF2ZSBiZWVuIGxvYWRlZCBmcm9tIGFuIGludmFsaWQgcGVyc2lzdGFudFxyXG4gICAgLy8gc3RvcmFnZS5cclxuXHJcbiAgICAvLyBUT0RPOiBSZW1vdmUgd2hlbiBzdGF0ZSB2YWxpZGF0aW9uL21pZ3JhdGlvbiBpcyBpbXBsZW1lbnRlZCB0byBoYXBwZW5cclxuICAgIC8vIHdoZW4gcmV0cmlldmVkIGZyb20gc3RvcmFnZS5cclxuICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKHN0YXRlLmNvbHVtblByb3ApKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IFJlbW92ZSB3aGVuIHN0YXRlIHZhbGlkYXRpb24vbWlncmF0aW9uIGlzIGltcGxlbWVudGVkIHRvIGhhcHBlblxyXG4gICAgLy8gd2hlbiByZXRyaWV2ZWQgZnJvbSBzdG9yYWdlLlxyXG4gICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQoc3RhdGUuY2FuQXV0b1Jlc2l6ZSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWFjY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcblxuaW1wb3J0IHsgRGF0YUZpbHRlclN0YXRlLCBEYXRhRmlsdGVyIH0gZnJvbSAnQHRoZXNlYW0vdWktY29tbW9uL2RhdGEtZmlsdGVycydcblxuaW1wb3J0IHsgVGhlU2VhbVBhZ2VJbmZvIH0gZnJvbSAnLi9wYWdlLWluZm8nXG5pbXBvcnQgeyBTb3J0RXZlbnQgfSBmcm9tICcuL3NvcnQtZXZlbnQnXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJy4vc29ydC1pdGVtJ1xuaW1wb3J0IHsgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB9IGZyb20gJy4vdGFibGUtY29sdW1uJ1xuaW1wb3J0IHsgU29ydFR5cGUgfSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5cbi8vIFRPRE86IFJlcGxhY2UgQmVoYXZpb3JTdWJqZWN0IGJhc2VkIG9ic2VydmFibGVzIHdpdGggY2hhbmdlIG9ubHkgZW1pdHRpbmdcbi8vIG9ic2VydmFibGVzLlxuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3Ige1xuXG4gIGNvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXVxuXG4gIHJlYWRvbmx5IGNvbHVtbnMkOiBPYnNlcnZhYmxlPFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT5cblxuICByb3dzOiBhbnlbXVxuXG4gIHJlYWRvbmx5IHJvd3MkOiBPYnNlcnZhYmxlPGFueVtdPlxuXG4gIGZpbHRlcnM6IERhdGFGaWx0ZXJbXVxuXG4gIHJlYWRvbmx5IGZpbHRlcnMkOiBPYnNlcnZhYmxlPERhdGFGaWx0ZXJbXT5cblxuICBzb3J0VHlwZTogU29ydFR5cGVcblxuICBzb3J0czogU29ydEl0ZW1bXVxuXG4gIC8vIHJlYWRvbmx5IHNvcnRzJDogT2JzZXJ2YWJsZTxTb3J0SXRlbVtdPlxuXG4gIHNvcnQ6IE9ic2VydmFibGU8U29ydEV2ZW50PlxuXG4gIHJlYWRvbmx5IGZpbHRlclN0YXRlczogT2JzZXJ2YWJsZTxEYXRhRmlsdGVyU3RhdGVbXT5cblxuICByZWFkb25seSBwYWdlOiBPYnNlcnZhYmxlPFRoZVNlYW1QYWdlSW5mbz5cblxuICBwYWdlSW5mbzogVGhlU2VhbVBhZ2VJbmZvXG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ACTION_MENU_COLUMN_PROP } from '../utils/create-action-menu-column';
|
|
2
|
+
import { CHECKBOX_COLUMN_PROP } from '../utils/create-checkbox-column';
|
|
3
|
+
import { getColumnProp } from '../utils/get-column-prop';
|
|
4
|
+
/**
|
|
5
|
+
* Strings used for columns created and managed
|
|
6
|
+
* by the datatable.
|
|
7
|
+
*/
|
|
8
|
+
export const INTERNAL_COLUMN_PROPS = [
|
|
9
|
+
ACTION_MENU_COLUMN_PROP,
|
|
10
|
+
CHECKBOX_COLUMN_PROP
|
|
11
|
+
];
|
|
12
|
+
export function isInternalColumn(column) {
|
|
13
|
+
return INTERNAL_COLUMN_PROPS.findIndex(p => getColumnProp(column) === p) !== -1;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwtY29sdW1uLXByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvaW50ZXJuYWwtY29sdW1uLXByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUd4RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBYTtJQUM3Qyx1QkFBdUI7SUFDdkIsb0JBQW9CO0NBQ3JCLENBQUE7QUFHRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsTUFBOEI7SUFDN0QsT0FBTyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7QUFDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFDVElPTl9NRU5VX0NPTFVNTl9QUk9QIH0gZnJvbSAnLi4vdXRpbHMvY3JlYXRlLWFjdGlvbi1tZW51LWNvbHVtbidcclxuaW1wb3J0IHsgQ0hFQ0tCT1hfQ09MVU1OX1BST1AgfSBmcm9tICcuLi91dGlscy9jcmVhdGUtY2hlY2tib3gtY29sdW1uJ1xyXG5pbXBvcnQgeyBnZXRDb2x1bW5Qcm9wIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LWNvbHVtbi1wcm9wJ1xyXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4nXHJcblxyXG4vKipcclxuICogU3RyaW5ncyB1c2VkIGZvciBjb2x1bW5zIGNyZWF0ZWQgYW5kIG1hbmFnZWRcclxuICogYnkgdGhlIGRhdGF0YWJsZS5cclxuICovXHJcbmV4cG9ydCBjb25zdCBJTlRFUk5BTF9DT0xVTU5fUFJPUFM6IHN0cmluZ1tdID0gW1xyXG4gIEFDVElPTl9NRU5VX0NPTFVNTl9QUk9QLFxyXG4gIENIRUNLQk9YX0NPTFVNTl9QUk9QXHJcbl1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlcm5hbENvbHVtbihjb2x1bW46IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4pOiBib29sZWFuIHtcclxuICByZXR1cm4gSU5URVJOQUxfQ09MVU1OX1BST1BTLmZpbmRJbmRleChwID0+IGdldENvbHVtblByb3AoY29sdW1uKSA9PT0gcCkgIT09IC0xXHJcbn1cclxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvcGFnZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFRoZVNlYW1QYWdlSW5mbyB7XG4gIC8qKlxuICAgKiBJbmRleCBvZiBwYWdlLlxuICAgKi9cbiAgb2Zmc2V0OiBudW1iZXJcbiAgLyoqXG4gICAqIFNpemUgb2YgYSBwYWdlLlxuICAgKi9cbiAgcGFnZVNpemU6IG51bWJlclxuICAvKipcbiAgICogTWF4IHBhZ2Ugc2l6ZS5cbiAgICovXG4gIGxpbWl0PzogbnVtYmVyXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygcm93cy5cbiAgICovXG4gIGNvdW50OiBudW1iZXJcbn1cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL21vZGVscy9wcmVmZXJlbmNlcy1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzQWNjZXNzb3Ige1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgcHJlZmVyZW5jZS5cbiAgICovXG4gIGdldChuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICAvKipcbiAgICogVXBkYXRlIGEgcHJlZmVyZW5jZS5cbiAgICovXG4gIHVwZGF0ZShuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICAvKipcbiAgICogRGVsZXRlIGEgcHJlZmVyZW5jZS5cbiAgICovXG4gIGRlbGV0ZShuYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+XG5cbn1cbiJdfQ==
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export const CURRENT_DATATABLE_PREFERENCES_VERSION = 2;
|
|
2
|
+
export const EMPTY_DATATABLE_PREFERENCES = {
|
|
3
|
+
version: 2,
|
|
4
|
+
alterations: []
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL21vZGVscy9wcmVmZXJlbmNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsTUFBTSxDQUFDLE1BQU0scUNBQXFDLEdBQUcsQ0FBQyxDQUFBO0FBRXRELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFnQztJQUN0RSxPQUFPLEVBQUUsQ0FBQztJQUNWLFdBQVcsRUFBRSxFQUFFO0NBQ2hCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2x1bW5zQWx0ZXJhdGlvblN0YXRlIH0gZnJvbSAnLi9jb2x1bW5zLWFsdGVyYXRpb24nXG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzQ29sdW1uIHtcbiAgcHJvcDogc3RyaW5nXG4gIHdpZHRoPzogbnVtYmVyXG4gIGNhbkF1dG9SZXNpemU/OiBib29sZWFuXG4gIGhpZGRlbj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXNfdjEge1xuICBjb2x1bW5zPzogVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzQ29sdW1uW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXNfdjIge1xuICB2ZXJzaW9uOiAyXG4gIGFsdGVyYXRpb25zOiBDb2x1bW5zQWx0ZXJhdGlvblN0YXRlW11cbn1cblxuZXhwb3J0IHR5cGUgVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzID0gVGhlU2VhbURhdGF0YWJsZVByZWZlcmVuY2VzX3YyXG5cbmV4cG9ydCBjb25zdCBDVVJSRU5UX0RBVEFUQUJMRV9QUkVGRVJFTkNFU19WRVJTSU9OID0gMlxuXG5leHBvcnQgY29uc3QgRU1QVFlfREFUQVRBQkxFX1BSRUZFUkVOQ0VTOiBUaGVTZWFtRGF0YXRhYmxlUHJlZmVyZW5jZXMgPSB7XG4gIHZlcnNpb246IDIsXG4gIGFsdGVyYXRpb25zOiBbXVxufVxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2RhdGF0YWJsZS9tb2RlbHMvc29ydC1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZUNvbHVtblByb3AgfSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydEl0ZW0geyBwcm9wOiBUYWJsZUNvbHVtblByb3AsICBkaXI6ICdhc2MnIHwgJ2Rlc2MnIH1cbiJdfQ==
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
4
|
+
import { HideColumnColumnsAlteration } from '../models/columns-alterations/hide-column.columns-alteration';
|
|
5
|
+
import { SortColumnsAlteration } from '../models/columns-alterations/sort.columns-alteration';
|
|
6
|
+
import { WidthColumnsAlteration } from '../models/columns-alterations/width.columns-alteration';
|
|
7
|
+
export class ColumnsAlterationsManagerService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._changesSubject = new Subject();
|
|
10
|
+
this._alterations = [];
|
|
11
|
+
this.changes = this._changesSubject.asObservable();
|
|
12
|
+
}
|
|
13
|
+
get() {
|
|
14
|
+
return [...this._alterations];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Adds alterations to be applied to columns.
|
|
18
|
+
*
|
|
19
|
+
* If an alteration with the same `id` already exists then the existing
|
|
20
|
+
* alteration will be removed and the new one added.
|
|
21
|
+
*
|
|
22
|
+
* NOTE: When there is a duplicate alteration the old alteration is removed,
|
|
23
|
+
* instead of updated, to maintain the order alterations are applied.
|
|
24
|
+
*/
|
|
25
|
+
add(alterations, options) {
|
|
26
|
+
// console.log('add', alterations)
|
|
27
|
+
const removed = this.remove(alterations, { emitEvent: false });
|
|
28
|
+
this._alterations = [...this._alterations, ...alterations];
|
|
29
|
+
const changes = [
|
|
30
|
+
...removed,
|
|
31
|
+
...alterations.map(a => {
|
|
32
|
+
const record = {
|
|
33
|
+
type: 'added',
|
|
34
|
+
alteration: a
|
|
35
|
+
};
|
|
36
|
+
return record;
|
|
37
|
+
})
|
|
38
|
+
];
|
|
39
|
+
if (notNullOrUndefined(options === null || options === void 0 ? void 0 : options.emitEvent) && !(options === null || options === void 0 ? void 0 : options.emitEvent)) {
|
|
40
|
+
return changes;
|
|
41
|
+
}
|
|
42
|
+
this._emitChanges(changes);
|
|
43
|
+
return changes;
|
|
44
|
+
}
|
|
45
|
+
remove(alterations, options) {
|
|
46
|
+
// console.log('remove', alterations)
|
|
47
|
+
const removed = [];
|
|
48
|
+
this._alterations = this._alterations.filter(x => {
|
|
49
|
+
const found = alterations.findIndex(y => y.id === x.id) !== -1;
|
|
50
|
+
if (found) {
|
|
51
|
+
const eventRecord = {
|
|
52
|
+
type: 'removed',
|
|
53
|
+
alteration: x
|
|
54
|
+
};
|
|
55
|
+
removed.push(eventRecord);
|
|
56
|
+
}
|
|
57
|
+
return !found;
|
|
58
|
+
});
|
|
59
|
+
// console.log('removed', removed, this._alterations)
|
|
60
|
+
if (notNullOrUndefined(options === null || options === void 0 ? void 0 : options.emitEvent) && !(options === null || options === void 0 ? void 0 : options.emitEvent)) {
|
|
61
|
+
return removed;
|
|
62
|
+
}
|
|
63
|
+
this._emitChanges(removed);
|
|
64
|
+
return removed;
|
|
65
|
+
}
|
|
66
|
+
apply(columns, datatable) {
|
|
67
|
+
for (const a of this._alterations) {
|
|
68
|
+
a.apply(columns, datatable);
|
|
69
|
+
}
|
|
70
|
+
this._removeNonPersistant();
|
|
71
|
+
}
|
|
72
|
+
// TODO: Make aware of original column order and properties. This is tricky,
|
|
73
|
+
// because the datatable does not deal with immutable column/row records and
|
|
74
|
+
// it is hard to know where changes happened. Just serializing the columns
|
|
75
|
+
// input is not enough, because the columns input is called anytime the user
|
|
76
|
+
// makes a column change. We can probably come up with a mostly accurate
|
|
77
|
+
// implementation, such as "reset original columns cache when preferencesKey
|
|
78
|
+
// changes" or "number of columns change". There are issues with those rules,
|
|
79
|
+
// but with some testing/experimenting I think there should be a "good enough"
|
|
80
|
+
// solution.
|
|
81
|
+
//
|
|
82
|
+
// TODO: Find a generic way to clear alterations. I would like to add an
|
|
83
|
+
// `unapply` method to `ColumnsAlteration`, but since the alterations
|
|
84
|
+
// themselves are not too generic it may be tricky.
|
|
85
|
+
clear(options) {
|
|
86
|
+
const changes = [];
|
|
87
|
+
for (const colAlt of this._alterations) {
|
|
88
|
+
switch (colAlt.type) {
|
|
89
|
+
case 'hide-column': {
|
|
90
|
+
const alteration = new HideColumnColumnsAlteration({ columnProp: colAlt.state.columnProp, hidden: false }, false);
|
|
91
|
+
changes.push(...this.add([alteration]));
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
case 'order': {
|
|
95
|
+
changes.push(...this.remove([colAlt]));
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
case 'sort': {
|
|
99
|
+
const alteration = new SortColumnsAlteration({ sorts: [] }, false);
|
|
100
|
+
changes.push(...this.add([alteration]));
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
case 'width': {
|
|
104
|
+
const alteration = new WidthColumnsAlteration({ columnProp: colAlt.state.columnProp, canAutoResize: true }, false);
|
|
105
|
+
changes.push(...this.add([alteration]));
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (notNullOrUndefined(options === null || options === void 0 ? void 0 : options.emitEvent) && !(options === null || options === void 0 ? void 0 : options.emitEvent)) {
|
|
111
|
+
return changes;
|
|
112
|
+
}
|
|
113
|
+
this._emitChanges(changes);
|
|
114
|
+
return changes;
|
|
115
|
+
}
|
|
116
|
+
_removeNonPersistant() {
|
|
117
|
+
const nonPersistent = this._alterations.filter(x => !x.persistent);
|
|
118
|
+
this.remove(nonPersistent, { emitEvent: false });
|
|
119
|
+
}
|
|
120
|
+
_emitChanges(changes) {
|
|
121
|
+
if (changes.length === 0) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const event = {
|
|
125
|
+
changes
|
|
126
|
+
};
|
|
127
|
+
this._changesSubject.next(event);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
ColumnsAlterationsManagerService.decorators = [
|
|
131
|
+
{ type: Injectable }
|
|
132
|
+
];
|
|
133
|
+
ColumnsAlterationsManagerService.ctorParameters = () => [];
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1hbHRlcmF0aW9ucy1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL3NlcnZpY2VzL2NvbHVtbnMtYWx0ZXJhdGlvbnMtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUUxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUs3RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQTtBQUMxRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQTtBQUM3RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQTtBQVkvRixNQUFNLE9BQU8sZ0NBQWdDO0lBTzNDO1FBTGlCLG9CQUFlLEdBQUcsSUFBSSxPQUFPLEVBQWtDLENBQUE7UUFDeEUsaUJBQVksR0FBd0IsRUFBRSxDQUFBO1FBSzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUNwRCxDQUFDO0lBRU0sR0FBRztRQUNSLE9BQU8sQ0FBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxHQUFHLENBQUMsV0FBZ0MsRUFBRSxPQUFpQztRQUM1RSxrQ0FBa0M7UUFDbEMsTUFBTSxPQUFPLEdBQXNDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDakcsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVks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LE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDbEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRU8sWUFBWSxDQUFDLE9BQTBDO1FBQzdELElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTTtTQUNQO1FBRUQsTUFBTSxLQUFLLEdBQW1DO1lBQzVDLE9BQU87U0FDUixDQUFBO1FBRUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEMsQ0FBQzs7O1lBbkpGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnXHJcblxyXG5pbXBvcnQgeyBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXHJcblxyXG5pbXBvcnQgeyBDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb24nXHJcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY29sdW1uJ1xyXG5pbXBvcnQgeyBUaGVTZWFtRGF0YXRhYmxlQWNjZXNzb3IgfSBmcm9tICcuLi9tb2RlbHMvZGF0YXRhYmxlLWFjY2Vzc29yJ1xyXG5pbXBvcnQgeyBIaWRlQ29sdW1uQ29sdW1uc0FsdGVyYXRpb24gfSBmcm9tICcuLi9tb2RlbHMvY29sdW1ucy1hbHRlcmF0aW9ucy9oaWRlLWNvbHVtbi5jb2x1bW5zLWFsdGVyYXRpb24nXHJcbmltcG9ydCB7IFNvcnRDb2x1bW5zQWx0ZXJhdGlvbiB9IGZyb20gJy4uL21vZGVscy9jb2x1bW5zLWFsdGVyYXRpb25zL3NvcnQuY29sdW1ucy1hbHRlcmF0aW9uJ1xyXG5pbXBvcnQgeyBXaWR0aENvbHVtbnNBbHRlcmF0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbHVtbnMtYWx0ZXJhdGlvbnMvd2lkdGguY29sdW1ucy1hbHRlcmF0aW9uJ1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkIHtcclxuICB0eXBlOiAnYWRkZWQnIHwgJ3JlbW92ZWQnXHJcbiAgYWx0ZXJhdGlvbjogQ29sdW1uc0FsdGVyYXRpb25cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkRXZlbnQge1xyXG4gIGNoYW5nZXM6IENvbHVtbnNBbHRlcmF0aW9uc0NoYW5nZWRSZWNvcmRbXVxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb2x1bW5zQWx0ZXJhdGlvbnNNYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZXNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8Q29sdW1uc0FsdGVyYXRpb25zQ2hhbmdlZEV2ZW50PigpXHJcbiAgcHJpdmF0ZSBfYWx0ZXJhdGlvbnM6IENvbHVtbnNBbHRlcmF0aW9uW10gPSBbXVxyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgY2hhbmdlczogT2JzZXJ2YWJsZTxDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkRXZlbnQ+XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5jaGFuZ2VzID0gdGhpcy5fY2hhbmdlc1N1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQoKTogQ29sdW1uc0FsdGVyYXRpb25bXSB7XHJcbiAgICByZXR1cm4gWyAuLi50aGlzLl9hbHRlcmF0aW9ucyBdXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGRzIGFsdGVyYXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gY29sdW1ucy5cclxuICAgKlxyXG4gICAqIElmIGFuIGFsdGVyYXRpb24gd2l0aCB0aGUgc2FtZSBgaWRgIGFscmVhZHkgZXhpc3RzIHRoZW4gdGhlIGV4aXN0aW5nXHJcbiAgICogYWx0ZXJhdGlvbiB3aWxsIGJlIHJlbW92ZWQgYW5kIHRoZSBuZXcgb25lIGFkZGVkLlxyXG4gICAqXHJcbiAgICogTk9URTogV2hlbiB0aGVyZSBpcyBhIGR1cGxpY2F0ZSBhbHRlcmF0aW9uIHRoZSBvbGQgYWx0ZXJhdGlvbiBpcyByZW1vdmVkLFxyXG4gICAqIGluc3RlYWQgb2YgdXBkYXRlZCwgdG8gbWFpbnRhaW4gdGhlIG9yZGVyIGFsdGVyYXRpb25zIGFyZSBhcHBsaWVkLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBhZGQoYWx0ZXJhdGlvbnM6IENvbHVtbnNBbHRlcmF0aW9uW10sIG9wdGlvbnM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IENvbHVtbnNBbHRlcmF0aW9uc0NoYW5nZWRSZWNvcmRbXSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnYWRkJywgYWx0ZXJhdGlvbnMpXHJcbiAgICBjb25zdCByZW1vdmVkOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10gPSB0aGlzLnJlbW92ZShhbHRlcmF0aW9ucywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXHJcbiAgICB0aGlzLl9hbHRlcmF0aW9ucyA9IFsgLi4udGhpcy5fYWx0ZXJhdGlvbnMsIC4uLmFsdGVyYXRpb25zIF1cclxuXHJcbiAgICBjb25zdCBjaGFuZ2VzOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10gPSBbXHJcbiAgICAgIC4uLnJlbW92ZWQsXHJcbiAgICAgIC4uLmFsdGVyYXRpb25zLm1hcChhID0+IHtcclxuICAgICAgICBjb25zdCByZWNvcmQ6IENvbHVtbnNBbHRlcmF0aW9uc0NoYW5nZWRSZWNvcmQgPSB7XHJcbiAgICAgICAgICB0eXBlOiAnYWRkZWQnLFxyXG4gICAgICAgICAgYWx0ZXJhdGlvbjogYVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVjb3JkXHJcbiAgICAgIH0pXHJcbiAgICBdXHJcblxyXG4gICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZChvcHRpb25zPy5lbWl0RXZlbnQpICYmICFvcHRpb25zPy5lbWl0RXZlbnQpIHtcclxuICAgICAgcmV0dXJuIGNoYW5nZXNcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9lbWl0Q2hhbmdlcyhjaGFuZ2VzKVxyXG5cclxuICAgIHJldHVybiBjaGFuZ2VzXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlKGFsdGVyYXRpb25zOiBDb2x1bW5zQWx0ZXJhdGlvbltdLCBvcHRpb25zPzogeyBlbWl0RXZlbnQ/OiBib29sZWFuIH0pOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10ge1xyXG4gICAgLy8gY29uc29sZS5sb2coJ3JlbW92ZScsIGFsdGVyYXRpb25zKVxyXG4gICAgY29uc3QgcmVtb3ZlZDogQ29sdW1uc0FsdGVyYXRpb25zQ2hhbmdlZFJlY29yZFtdID0gW11cclxuICAgIHRoaXMuX2FsdGVyYXRpb25zID0gdGhpcy5fYWx0ZXJhdGlvbnMuZmlsdGVyKHggPT4ge1xyXG4gICAgICBjb25zdCBmb3VuZCA9IGFsdGVyYXRpb25zLmZpbmRJbmRleCh5ID0+IHkuaWQgPT09IHguaWQpICE9PSAtMVxyXG4gICAgICBpZiAoZm91bmQpIHtcclxuICAgICAgICBjb25zdCBldmVudFJlY29yZDogQ29sdW1uc0FsdGVyYXRpb25zQ2hhbmdlZFJlY29yZCA9IHtcclxuICAgICAgICAgIHR5cGU6ICdyZW1vdmVkJyxcclxuICAgICAgICAgIGFsdGVyYXRpb246IHhcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVtb3ZlZC5wdXNoKGV2ZW50UmVjb3JkKVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAhZm91bmRcclxuICAgIH0pXHJcblxyXG4gICAgLy8gY29uc29sZS5sb2coJ3JlbW92ZWQnLCByZW1vdmVkLCB0aGlzLl9hbHRlcmF0aW9ucylcclxuXHJcbiAgICBpZiAobm90TnVsbE9yVW5kZWZpbmVkKG9wdGlvbnM/LmVtaXRFdmVudCkgJiYgIW9wdGlvbnM/LmVtaXRFdmVudCkge1xyXG4gICAgICByZXR1cm4gcmVtb3ZlZFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2VtaXRDaGFuZ2VzKHJlbW92ZWQpXHJcblxyXG4gICAgcmV0dXJuIHJlbW92ZWRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhcHBseShjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10sIGRhdGF0YWJsZTogVGhlU2VhbURhdGF0YWJsZUFjY2Vzc29yKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGEgb2YgdGhpcy5fYWx0ZXJhdGlvbnMpIHtcclxuICAgICAgYS5hcHBseShjb2x1bW5zLCBkYXRhdGFibGUpXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fcmVtb3ZlTm9uUGVyc2lzdGFudCgpXHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiBNYWtlIGF3YXJlIG9mIG9yaWdpbmFsIGNvbHVtbiBvcmRlciBhbmQgcHJvcGVydGllcy4gVGhpcyBpcyB0cmlja3ksXHJcbiAgLy8gYmVjYXVzZSB0aGUgZGF0YXRhYmxlIGRvZXMgbm90IGRlYWwgd2l0aCBpbW11dGFibGUgY29sdW1uL3JvdyByZWNvcmRzIGFuZFxyXG4gIC8vIGl0IGlzIGhhcmQgdG8ga25vdyB3aGVyZSBjaGFuZ2VzIGhhcHBlbmVkLiBKdXN0IHNlcmlhbGl6aW5nIHRoZSBjb2x1bW5zXHJcbiAgLy8gaW5wdXQgaXMgbm90IGVub3VnaCwgYmVjYXVzZSB0aGUgY29sdW1ucyBpbnB1dCBpcyBjYWxsZWQgYW55dGltZSB0aGUgdXNlclxyXG4gIC8vIG1ha2VzIGEgY29sdW1uIGNoYW5nZS4gV2UgY2FuIHByb2JhYmx5IGNvbWUgdXAgd2l0aCBhIG1vc3RseSBhY2N1cmF0ZVxyXG4gIC8vIGltcGxlbWVudGF0aW9uLCBzdWNoIGFzIFwicmVzZXQgb3JpZ2luYWwgY29sdW1ucyBjYWNoZSB3aGVuIHByZWZlcmVuY2VzS2V5XHJcbiAgLy8gY2hhbmdlc1wiIG9yIFwibnVtYmVyIG9mIGNvbHVtbnMgY2hhbmdlXCIuIFRoZXJlIGFyZSBpc3N1ZXMgd2l0aCB0aG9zZSBydWxlcyxcclxuICAvLyBidXQgd2l0aCBzb21lIHRlc3RpbmcvZXhwZXJpbWVudGluZyBJIHRoaW5rIHRoZXJlIHNob3VsZCBiZSBhIFwiZ29vZCBlbm91Z2hcIlxyXG4gIC8vIHNvbHV0aW9uLlxyXG4gIC8vXHJcbiAgLy8gVE9ETzogRmluZCBhIGdlbmVyaWMgd2F5IHRvIGNsZWFyIGFsdGVyYXRpb25zLiBJIHdvdWxkIGxpa2UgdG8gYWRkIGFuXHJcbiAgLy8gYHVuYXBwbHlgIG1ldGhvZCB0byBgQ29sdW1uc0FsdGVyYXRpb25gLCBidXQgc2luY2UgdGhlIGFsdGVyYXRpb25zXHJcbiAgLy8gdGhlbXNlbHZlcyBhcmUgbm90IHRvbyBnZW5lcmljIGl0IG1heSBiZSB0cmlja3kuXHJcbiAgcHVibGljIGNsZWFyKG9wdGlvbnM/OiB7IGVtaXRFdmVudD86IGJvb2xlYW4gfSk6IENvbHVtbnNBbHRlcmF0aW9uc0NoYW5nZWRSZWNvcmRbXSB7XHJcbiAgICBjb25zdCBjaGFuZ2VzOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10gPSBbXVxyXG4gICAgZm9yIChjb25zdCBjb2xBbHQgb2YgdGhpcy5fYWx0ZXJhdGlvbnMpIHtcclxuICAgICAgc3dpdGNoIChjb2xBbHQudHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2hpZGUtY29sdW1uJzoge1xyXG4gICAgICAgICAgY29uc3QgYWx0ZXJhdGlvbiA9IG5ldyBIaWRlQ29sdW1uQ29sdW1uc0FsdGVyYXRpb24oeyBjb2x1bW5Qcm9wOiBjb2xBbHQuc3RhdGUuY29sdW1uUHJvcCwgaGlkZGVuOiBmYWxzZSB9LCBmYWxzZSlcclxuICAgICAgICAgIGNoYW5nZXMucHVzaCguLi50aGlzLmFkZChbIGFsdGVyYXRpb24gXSkpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnb3JkZXInOiB7XHJcbiAgICAgICAgICBjaGFuZ2VzLnB1c2goLi4udGhpcy5yZW1vdmUoWyBjb2xBbHQgXSkpXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSAnc29ydCc6IHtcclxuICAgICAgICAgIGNvbnN0IGFsdGVyYXRpb24gPSBuZXcgU29ydENvbHVtbnNBbHRlcmF0aW9uKHsgc29ydHM6IFtdIH0sIGZhbHNlKVxyXG4gICAgICAgICAgY2hhbmdlcy5wdXNoKC4uLnRoaXMuYWRkKFsgYWx0ZXJhdGlvbiBdKSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXNlICd3aWR0aCc6IHtcclxuICAgICAgICAgIGNvbnN0IGFsdGVyYXRpb24gPSBuZXcgV2lkdGhDb2x1bW5zQWx0ZXJhdGlvbih7IGNvbHVtblByb3A6IGNvbEFsdC5zdGF0ZS5jb2x1bW5Qcm9wLCBjYW5BdXRvUmVzaXplOiB0cnVlIH0sIGZhbHNlKVxyXG4gICAgICAgICAgY2hhbmdlcy5wdXNoKC4uLnRoaXMuYWRkKFsgYWx0ZXJhdGlvbiBdKSlcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChub3ROdWxsT3JVbmRlZmluZWQob3B0aW9ucz8uZW1pdEV2ZW50KSAmJiAhb3B0aW9ucz8uZW1pdEV2ZW50KSB7XHJcbiAgICAgIHJldHVybiBjaGFuZ2VzXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZW1pdENoYW5nZXMoY2hhbmdlcylcclxuXHJcbiAgICByZXR1cm4gY2hhbmdlc1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVtb3ZlTm9uUGVyc2lzdGFudCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5vblBlcnNpc3RlbnQgPSB0aGlzLl9hbHRlcmF0aW9ucy5maWx0ZXIoeCA9PiAheC5wZXJzaXN0ZW50KVxyXG4gICAgdGhpcy5yZW1vdmUobm9uUGVyc2lzdGVudCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9lbWl0Q2hhbmdlcyhjaGFuZ2VzOiBDb2x1bW5zQWx0ZXJhdGlvbnNDaGFuZ2VkUmVjb3JkW10pOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBldmVudDogQ29sdW1uc0FsdGVyYXRpb25zQ2hhbmdlZEV2ZW50ID0ge1xyXG4gICAgICBjaGFuZ2VzXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlc1N1YmplY3QubmV4dChldmVudClcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import { Injectable, KeyValueDiffers } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, combineLatest, defer, EMPTY, of, Subject } from 'rxjs';
|
|
3
|
+
import { auditTime, map, shareReplay, startWith, switchMap } from 'rxjs/operators';
|
|
4
|
+
import { SelectionType, } from '@marklb/ngx-datatable';
|
|
5
|
+
import { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
6
|
+
import { createActionMenuColumn } from '../utils/create-action-menu-column';
|
|
7
|
+
import { createCheckboxColumn } from '../utils/create-checkbox-column';
|
|
8
|
+
import { getColumnProp } from '../utils/get-column-prop';
|
|
9
|
+
import { setColumnDefaults } from '../utils/set-column-defaults';
|
|
10
|
+
import { translateTemplateColumns } from '../utils/translate-templates';
|
|
11
|
+
import { DatatableColumnChangesService } from './datatable-column-changes.service';
|
|
12
|
+
var ColumnsTypes;
|
|
13
|
+
(function (ColumnsTypes) {
|
|
14
|
+
ColumnsTypes[ColumnsTypes["Input"] = 0] = "Input";
|
|
15
|
+
ColumnsTypes[ColumnsTypes["Template"] = 1] = "Template";
|
|
16
|
+
ColumnsTypes[ColumnsTypes["Result"] = 2] = "Result";
|
|
17
|
+
})(ColumnsTypes || (ColumnsTypes = {}));
|
|
18
|
+
export class ColumnsManagerService {
|
|
19
|
+
constructor(_differs, _columnChangesService) {
|
|
20
|
+
this._differs = _differs;
|
|
21
|
+
this._columnChangesService = _columnChangesService;
|
|
22
|
+
this._updateColumns = new Subject();
|
|
23
|
+
this._inputColumns = new BehaviorSubject([]);
|
|
24
|
+
this._templateColumns = new BehaviorSubject([]);
|
|
25
|
+
this._inpColDiffersMap = new Map();
|
|
26
|
+
this._tplColDiffersMap = new Map();
|
|
27
|
+
this._resultColDiffersMap = new Map();
|
|
28
|
+
const templateColumns$ = this._columnChangesService.columnInputChanges$.pipe(startWith(undefined), switchMap(() => {
|
|
29
|
+
return this._templateColumns.asObservable().pipe(map(translateTemplateColumns));
|
|
30
|
+
}));
|
|
31
|
+
this.columns$ = defer(() => {
|
|
32
|
+
let isFirst = true;
|
|
33
|
+
return combineLatest([
|
|
34
|
+
this._inputColumns.asObservable(),
|
|
35
|
+
templateColumns$,
|
|
36
|
+
this._updateColumns.asObservable().pipe(auditTime(0), startWith(undefined))
|
|
37
|
+
]).pipe(switchMap(([inputColumns, templateColumns]) => {
|
|
38
|
+
const cols = this._mergeColumns(inputColumns, templateColumns);
|
|
39
|
+
const hasColumnsChanged = this._hasColumnsChanged(cols);
|
|
40
|
+
// TODO: Look for columns added/removed and remove the removed columns
|
|
41
|
+
// differs, not just changes to columns.
|
|
42
|
+
const hasAddedOrRemovedColumns = this._hasAddedOrRemovedColumns(cols);
|
|
43
|
+
// NOTE: Both checks need to be run, even though only one needs to be
|
|
44
|
+
// true, because their differs need to be called.
|
|
45
|
+
if (hasColumnsChanged || hasAddedOrRemovedColumns || isFirst) {
|
|
46
|
+
isFirst = false;
|
|
47
|
+
return of(cols);
|
|
48
|
+
}
|
|
49
|
+
return EMPTY;
|
|
50
|
+
}));
|
|
51
|
+
}).pipe(shareReplay({ refCount: true, bufferSize: 1 }));
|
|
52
|
+
}
|
|
53
|
+
setInputColumns(columns) {
|
|
54
|
+
this._inputColumns.next(columns);
|
|
55
|
+
}
|
|
56
|
+
setTemplateColumns(columns) {
|
|
57
|
+
this._templateColumns.next(columns);
|
|
58
|
+
}
|
|
59
|
+
setInternalColumnsGetter(getter) {
|
|
60
|
+
this._internalColumnsGetter = getter || undefined;
|
|
61
|
+
this._updateColumns.next(undefined);
|
|
62
|
+
}
|
|
63
|
+
setSelectionType(selectionType) {
|
|
64
|
+
const changed = this._selectionType !== selectionType;
|
|
65
|
+
this._selectionType = selectionType;
|
|
66
|
+
if (changed) {
|
|
67
|
+
this._updateColumns.next(undefined);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
getSelectionType() {
|
|
71
|
+
return this._selectionType;
|
|
72
|
+
}
|
|
73
|
+
setRowActionItem(rowActionItem) {
|
|
74
|
+
const changed = this._rowActionItem !== rowActionItem;
|
|
75
|
+
this._rowActionItem = rowActionItem;
|
|
76
|
+
if (changed) {
|
|
77
|
+
this._updateColumns.next(undefined);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
setActionMenuCellTpl(actionMenuCellTpl) {
|
|
81
|
+
const changed = this._actionMenuCellTpl !== actionMenuCellTpl;
|
|
82
|
+
this._actionMenuCellTpl = actionMenuCellTpl;
|
|
83
|
+
if (changed) {
|
|
84
|
+
this._updateColumns.next(undefined);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
setBlankHeaderTpl(blankHeaderTpl) {
|
|
88
|
+
const changed = this._blankHeaderTpl !== blankHeaderTpl;
|
|
89
|
+
this._blankHeaderTpl = blankHeaderTpl;
|
|
90
|
+
if (changed) {
|
|
91
|
+
this._updateColumns.next(undefined);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
setTreeToggleTpl(treeToggleTpl) {
|
|
95
|
+
const changed = this._treeToggleTpl !== treeToggleTpl;
|
|
96
|
+
this._treeToggleTpl = treeToggleTpl;
|
|
97
|
+
if (changed) {
|
|
98
|
+
this._updateColumns.next(undefined);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
setHeaderTpl(headerTpl) {
|
|
102
|
+
const changed = this._headerTpl !== headerTpl;
|
|
103
|
+
this._headerTpl = headerTpl;
|
|
104
|
+
if (changed) {
|
|
105
|
+
this._updateColumns.next(undefined);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
setCellTypeSelectorTpl(cellTypeSelectorTpl) {
|
|
109
|
+
const changed = this._cellTypeSelectorTpl !== cellTypeSelectorTpl;
|
|
110
|
+
this._cellTypeSelectorTpl = cellTypeSelectorTpl;
|
|
111
|
+
if (changed) {
|
|
112
|
+
this._updateColumns.next(undefined);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
_mergeColumns(inputColumns, templateColumns) {
|
|
116
|
+
const cols = [];
|
|
117
|
+
// Add the first column checkbox if 'checkbox' selection is enabled.
|
|
118
|
+
if (this._shouldAddCheckboxColumn()) {
|
|
119
|
+
cols.push(createCheckboxColumn());
|
|
120
|
+
}
|
|
121
|
+
// Column needs to be provided in the inputColumns, so iterate the
|
|
122
|
+
// inputColumns.
|
|
123
|
+
for (const inpCol of inputColumns) {
|
|
124
|
+
const prop = getColumnProp(inpCol);
|
|
125
|
+
if (!notNullOrUndefined(prop)) {
|
|
126
|
+
throw Error(`Column may have 'prop' or 'name' defined.`);
|
|
127
|
+
}
|
|
128
|
+
const internalCol = this._getInternalColumn(prop);
|
|
129
|
+
const inpColDif = this._getColDif(inpCol, ColumnsTypes.Input);
|
|
130
|
+
if (notNullOrUndefined(inpColDif)) {
|
|
131
|
+
this._updateColDif(inpColDif, internalCol, inpCol);
|
|
132
|
+
}
|
|
133
|
+
const tplCol = this._findColumnByProp(prop, templateColumns);
|
|
134
|
+
if (tplCol !== undefined) {
|
|
135
|
+
const tplColDif = this._getColDif(tplCol, ColumnsTypes.Template);
|
|
136
|
+
if (notNullOrUndefined(tplColDif)) {
|
|
137
|
+
this._updateColDif(tplColDif, internalCol, tplCol);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const _col = Object.assign(Object.assign(Object.assign({}, (internalCol || {})), inpCol), (tplCol || {}));
|
|
141
|
+
if (this._shouldAddTreeToggleColumn(_col)) {
|
|
142
|
+
_col.treeToggleTemplate = this._treeToggleTpl;
|
|
143
|
+
}
|
|
144
|
+
if (this._shouldAddHeaderTemplate(_col)) {
|
|
145
|
+
_col.headerTemplate = this._headerTpl;
|
|
146
|
+
}
|
|
147
|
+
if (this._shouldAddCellTypeSelectorTpl(_col)) {
|
|
148
|
+
_col.cellTemplate = this._cellTypeSelectorTpl;
|
|
149
|
+
}
|
|
150
|
+
cols.push(_col);
|
|
151
|
+
}
|
|
152
|
+
if (this._shouldAddRowActionColumn()) {
|
|
153
|
+
cols.push(createActionMenuColumn(this._actionMenuCellTpl, this._blankHeaderTpl));
|
|
154
|
+
}
|
|
155
|
+
// Make sure the default for any missing props are set.
|
|
156
|
+
// TODO: Determine if this should be done earlier, because I don't like
|
|
157
|
+
// how this is done after dif checks.
|
|
158
|
+
setColumnDefaults(cols);
|
|
159
|
+
return cols;
|
|
160
|
+
}
|
|
161
|
+
_getInternalColumns() {
|
|
162
|
+
if (this._internalColumnsGetter === undefined) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
return this._internalColumnsGetter();
|
|
166
|
+
}
|
|
167
|
+
_getInternalColumn(prop) {
|
|
168
|
+
const internalCols = this._getInternalColumns();
|
|
169
|
+
if (internalCols === undefined) {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
return internalCols.find(c => getColumnProp(c) === prop);
|
|
173
|
+
}
|
|
174
|
+
_findColumnByProp(prop, columns) {
|
|
175
|
+
return columns.find(c => getColumnProp(c) === prop);
|
|
176
|
+
}
|
|
177
|
+
_getDifMapForColumnsType(columnsType) {
|
|
178
|
+
switch (columnsType) {
|
|
179
|
+
case ColumnsTypes.Input: return this._inpColDiffersMap;
|
|
180
|
+
case ColumnsTypes.Template: return this._tplColDiffersMap;
|
|
181
|
+
case ColumnsTypes.Result: return this._resultColDiffersMap;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
_getColumnDiffer(prop, colsType) {
|
|
185
|
+
const difMap = this._getDifMapForColumnsType(colsType);
|
|
186
|
+
if (difMap === null) {
|
|
187
|
+
throw Error(`Invalid columns type.`);
|
|
188
|
+
}
|
|
189
|
+
if (!difMap.has(prop)) {
|
|
190
|
+
difMap.set(prop, this._differs.find({}).create());
|
|
191
|
+
}
|
|
192
|
+
const differ = difMap.get(prop);
|
|
193
|
+
if (differ === undefined) {
|
|
194
|
+
throw Error(`Differ not found. New differ should have been created.`);
|
|
195
|
+
}
|
|
196
|
+
return differ;
|
|
197
|
+
}
|
|
198
|
+
_getColDif(col, colsType) {
|
|
199
|
+
const prop = getColumnProp(col);
|
|
200
|
+
if (prop === undefined) {
|
|
201
|
+
throw Error(`Column prop not found.`);
|
|
202
|
+
}
|
|
203
|
+
return this._getColumnDiffer(prop, colsType).diff(col);
|
|
204
|
+
}
|
|
205
|
+
_updateColDif(colDif, internalColumn, col) {
|
|
206
|
+
colDif.forEachRemovedItem(r => {
|
|
207
|
+
if (internalColumn && internalColumn.hasOwnProperty(r.key)) {
|
|
208
|
+
const k = r.key;
|
|
209
|
+
delete internalColumn[k];
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
colDif.forEachAddedItem(r => col[r.key] = r.currentValue);
|
|
213
|
+
colDif.forEachChangedItem(r => col[r.key] = r.currentValue);
|
|
214
|
+
}
|
|
215
|
+
_hasAddedOrRemovedColumns(columns) {
|
|
216
|
+
if (!this._colPropsDiffer) {
|
|
217
|
+
this._colPropsDiffer = this._differs.find([]).create();
|
|
218
|
+
}
|
|
219
|
+
const props = columns.map(c => getColumnProp(c));
|
|
220
|
+
return this._colPropsDiffer.diff(props) !== null;
|
|
221
|
+
}
|
|
222
|
+
_hasColumnsChanged(columns) {
|
|
223
|
+
let colChanged = false;
|
|
224
|
+
for (const col of columns) {
|
|
225
|
+
const resultDif = this._getColDif(col, ColumnsTypes.Result);
|
|
226
|
+
if (resultDif) {
|
|
227
|
+
// NOTE: Can't return early, because the differs need to be updated.
|
|
228
|
+
colChanged = true;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return colChanged;
|
|
232
|
+
}
|
|
233
|
+
_shouldAddCheckboxColumn() {
|
|
234
|
+
return this._selectionType === SelectionType.checkbox;
|
|
235
|
+
}
|
|
236
|
+
_shouldAddRowActionColumn() {
|
|
237
|
+
return this._rowActionItem !== undefined;
|
|
238
|
+
}
|
|
239
|
+
_shouldAddTreeToggleColumn(column) {
|
|
240
|
+
return column.isTreeColumn !== undefined && column.isTreeColumn &&
|
|
241
|
+
(!hasProperty(column, 'treeToggleTemplate') || !notNullOrUndefined(column.treeToggleTemplate));
|
|
242
|
+
}
|
|
243
|
+
_shouldAddHeaderTemplate(column) {
|
|
244
|
+
return !hasProperty(column, 'headerTemplate');
|
|
245
|
+
}
|
|
246
|
+
_shouldAddCellTypeSelectorTpl(column) {
|
|
247
|
+
return hasProperty(column, 'cellType');
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
ColumnsManagerService.decorators = [
|
|
251
|
+
{ type: Injectable }
|
|
252
|
+
];
|
|
253
|
+
ColumnsManagerService.ctorParameters = () => [
|
|
254
|
+
{ type: KeyValueDiffers },
|
|
255
|
+
{ type: DatatableColumnChangesService }
|
|
256
|
+
];
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1ucy1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZGF0YXRhYmxlL3NlcnZpY2VzL2NvbHVtbnMtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW1DLGVBQWUsRUFBZSxNQUFNLGVBQWUsQ0FBQTtBQUN6RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDNUYsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVsRixPQUFPLEVBSUwsYUFBYSxHQUdkLE1BQU0sdUJBQXVCLENBQUE7QUFFOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBSzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNoRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUVsRixJQUFLLFlBSUo7QUFKRCxXQUFLLFlBQVk7SUFDZixpREFBSyxDQUFBO0lBQ0wsdURBQVEsQ0FBQTtJQUNSLG1EQUFNLENBQUE7QUFDUixDQUFDLEVBSkksWUFBWSxLQUFaLFlBQVksUUFJaEI7QUFLRCxNQUFNLE9B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QUE7WUFDM0QsSUFBSSxTQUFTLEVBQUU7Z0JBQ2Isb0VBQW9FO2dCQUNwRSxVQUFVLEdBQUcsSUFBSSxDQUFBO2FBQ2xCO1NBQ0Y7UUFDRCxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxhQUFhLENBQUMsUUFBUSxDQUFBO0lBQ3ZELENBQUM7SUFFTyx5QkFBeUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsQ0FBQTtJQUMxQyxDQUFDO0lBRU8sMEJBQTBCLENBQUMsTUFBOEI7UUFDL0QsT0FBTyxNQUFNLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsWUFBWTtZQUM3RCxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBRU8sd0JBQXdCLENBQUMsTUFBOEI7UUFDN0QsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRU8sNkJBQTZCLENBQUMsTUFBOEI7UUFDbEUsT0FBTyxXQUFXLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7OztZQXRVRixVQUFVOzs7WUFqQzJDLGVBQWU7WUF1QjVELDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEtleVZhbHVlQ2hhbmdlcywgS2V5VmFsdWVEaWZmZXIsIEtleVZhbHVlRGlmZmVycywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWZlciwgRU1QVFksIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGF1ZGl0VGltZSwgbWFwLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHtcbiAgRGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGUsXG4gIERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZSxcbiAgRGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlLFxuICBTZWxlY3Rpb25UeXBlLFxuICBUYWJsZUNvbHVtbixcbiAgVGFibGVDb2x1bW5Qcm9wLFxufSBmcm9tICdAbWFya2xiL25neC1kYXRhdGFibGUnXG5cbmltcG9ydCB7IGhhc1Byb3BlcnR5LCBub3ROdWxsT3JVbmRlZmluZWQgfSBmcm9tICdAdGhlc2VhbS91aS1jb21tb24vdXRpbHMnXG5cbmltcG9ydCB7IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGF0YWJsZS1jb2x1bW4vZGF0YXRhYmxlLWNvbHVtbi5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRhdGFibGUtcm93LWFjdGlvbi1pdGVtLmRpcmVjdGl2ZSdcbmltcG9ydCB7IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfSBmcm9tICcuLi9tb2RlbHMvdGFibGUtY29sdW1uJ1xuaW1wb3J0IHsgY3JlYXRlQWN0aW9uTWVudUNvbHVtbiB9IGZyb20gJy4uL3V0aWxzL2NyZWF0ZS1hY3Rpb24tbWVudS1jb2x1bW4nXG5pbXBvcnQgeyBjcmVhdGVDaGVja2JveENvbHVtbiB9IGZyb20gJy4uL3V0aWxzL2NyZWF0ZS1jaGVja2JveC1jb2x1bW4nXG5pbXBvcnQgeyBnZXRDb2x1bW5Qcm9wIH0gZnJvbSAnLi4vdXRpbHMvZ2V0LWNvbHVtbi1wcm9wJ1xuaW1wb3J0IHsgc2V0Q29sdW1uRGVmYXVsdHMgfSBmcm9tICcuLi91dGlscy9zZXQtY29sdW1uLWRlZmF1bHRzJ1xuaW1wb3J0IHsgdHJhbnNsYXRlVGVtcGxhdGVDb2x1bW5zIH0gZnJvbSAnLi4vdXRpbHMvdHJhbnNsYXRlLXRlbXBsYXRlcydcbmltcG9ydCB7IERhdGF0YWJsZUNvbHVtbkNoYW5nZXNTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhdGFibGUtY29sdW1uLWNoYW5nZXMuc2VydmljZSdcblxuZW51bSBDb2x1bW5zVHlwZXMge1xuICBJbnB1dCxcbiAgVGVtcGxhdGUsXG4gIFJlc3VsdCxcbn1cblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxDb2x1bW5zR2V0dGVyID0gKCkgPT4gVGFibGVDb2x1bW5bXVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29sdW1uc01hbmFnZXJTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXBkYXRlQ29sdW1ucyA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnB1dENvbHVtbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXT4oW10pXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbXBsYXRlQ29sdW1ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50W10+KFtdKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucENvbERpZmZlcnNNYXAgPSBuZXcgTWFwPFRhYmxlQ29sdW1uUHJvcCwgS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+PigpXG4gIHByaXZhdGUgcmVhZG9ubHkgX3RwbENvbERpZmZlcnNNYXAgPSBuZXcgTWFwPFRhYmxlQ29sdW1uUHJvcCwgS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+PigpXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3VsdENvbERpZmZlcnNNYXAgPSBuZXcgTWFwPFRhYmxlQ29sdW1uUHJvcCwgS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+PigpXG4gIHByaXZhdGUgX2NvbFByb3BzRGlmZmVyPzogS2V5VmFsdWVEaWZmZXI8YW55LCBhbnk+XG5cbiAgcHJpdmF0ZSBfaW50ZXJuYWxDb2x1bW5zR2V0dGVyPzogSW50ZXJuYWxDb2x1bW5zR2V0dGVyXG5cbiAgcHJpdmF0ZSBfc2VsZWN0aW9uVHlwZTogU2VsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9yb3dBY3Rpb25JdGVtOiBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX2FjdGlvbk1lbnVDZWxsVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX2JsYW5rSGVhZGVyVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX3RyZWVUb2dnbGVUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkNlbGxUcmVlVG9nZ2xlPiB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9oZWFkZXJUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBfY2VsbFR5cGVTZWxlY3RvclRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZFxuXG4gIC8vIFRPRE86IENvbnNpZGVyIG1ha2luZyB0aGlzIGEgY29sdW1ucyBjaGFuZ2VkIG9iZXJ2YWJsZSwgdG8gbWFrZSBjaGFuZ2VzIG1vcmUgcHJlZGljdGFibGUuXG4gIHB1YmxpYyByZWFkb25seSBjb2x1bW5zJDogT2JzZXJ2YWJsZTxUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10+XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGlmZmVyczogS2V5VmFsdWVEaWZmZXJzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2NvbHVtbkNoYW5nZXNTZXJ2aWNlOiBEYXRhdGFibGVDb2x1bW5DaGFuZ2VzU2VydmljZSxcbiAgKSB7XG4gICAgY29uc3QgdGVtcGxhdGVDb2x1bW5zJCA9IHRoaXMuX2NvbHVtbkNoYW5nZXNTZXJ2aWNlLmNvbHVtbklucHV0Q2hhbmdlcyQucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlQ29sdW1ucy5hc09ic2VydmFibGUoKS5waXBlKG1hcCh0cmFuc2xhdGVUZW1wbGF0ZUNvbHVtbnMpKVxuICAgICAgfSlcbiAgICApXG5cbiAgICB0aGlzLmNvbHVtbnMkID0gZGVmZXIoKCkgPT4ge1xuICAgICAgbGV0IGlzRmlyc3QgPSB0cnVlXG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuX2lucHV0Q29sdW1ucy5hc09ic2VydmFibGUoKSxcbiAgICAgICAgdGVtcGxhdGVDb2x1bW5zJCxcbiAgICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5hc09ic2VydmFibGUoKS5waXBlKGF1ZGl0VGltZSgwKSwgc3RhcnRXaXRoKHVuZGVmaW5lZCkpXG4gICAgICBdKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKFsgaW5wdXRDb2x1bW5zLCB0ZW1wbGF0ZUNvbHVtbnMgXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbHMgPSB0aGlzLl9tZXJnZUNvbHVtbnMoaW5wdXRDb2x1bW5zLCB0ZW1wbGF0ZUNvbHVtbnMpXG5cbiAgICAgICAgICBjb25zdCBoYXNDb2x1bW5zQ2hhbmdlZCA9IHRoaXMuX2hhc0NvbHVtbnNDaGFuZ2VkKGNvbHMpXG5cbiAgICAgICAgICAvLyBUT0RPOiBMb29rIGZvciBjb2x1bW5zIGFkZGVkL3JlbW92ZWQgYW5kIHJlbW92ZSB0aGUgcmVtb3ZlZCBjb2x1bW5zXG4gICAgICAgICAgLy8gZGlmZmVycywgbm90IGp1c3QgY2hhbmdlcyB0byBjb2x1bW5zLlxuICAgICAgICAgIGNvbnN0IGhhc0FkZGVkT3JSZW1vdmVkQ29sdW1ucyA9IHRoaXMuX2hhc0FkZGVkT3JSZW1vdmVkQ29sdW1ucyhjb2xzKVxuXG4gICAgICAgICAgLy8gTk9URTogQm90aCBjaGVja3MgbmVlZCB0byBiZSBydW4sIGV2ZW4gdGhvdWdoIG9ubHkgb25lIG5lZWRzIHRvIGJlXG4gICAgICAgICAgLy8gdHJ1ZSwgYmVjYXVzZSB0aGVpciBkaWZmZXJzIG5lZWQgdG8gYmUgY2FsbGVkLlxuICAgICAgICAgIGlmIChoYXNDb2x1bW5zQ2hhbmdlZCB8fCBoYXNBZGRlZE9yUmVtb3ZlZENvbHVtbnMgfHwgaXNGaXJzdCkge1xuICAgICAgICAgICAgaXNGaXJzdCA9IGZhbHNlXG4gICAgICAgICAgICByZXR1cm4gb2YoY29scylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gRU1QVFlcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgfSkucGlwZShcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSlcbiAgICApXG4gIH1cblxuICBwdWJsaWMgc2V0SW5wdXRDb2x1bW5zKGNvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSk6IHZvaWQge1xuICAgIHRoaXMuX2lucHV0Q29sdW1ucy5uZXh0KGNvbHVtbnMpXG4gIH1cblxuICBwdWJsaWMgc2V0VGVtcGxhdGVDb2x1bW5zKGNvbHVtbnM6IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudFtdKTogdm9pZCB7XG4gICAgdGhpcy5fdGVtcGxhdGVDb2x1bW5zLm5leHQoY29sdW1ucylcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbnRlcm5hbENvbHVtbnNHZXR0ZXIoZ2V0dGVyOiBJbnRlcm5hbENvbHVtbnNHZXR0ZXIgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5faW50ZXJuYWxDb2x1bW5zR2V0dGVyID0gZ2V0dGVyIHx8IHVuZGVmaW5lZFxuICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMubmV4dCh1bmRlZmluZWQpXG4gIH1cblxuICBwdWJsaWMgc2V0U2VsZWN0aW9uVHlwZShzZWxlY3Rpb25UeXBlOiBTZWxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX3NlbGVjdGlvblR5cGUgIT09IHNlbGVjdGlvblR5cGVcbiAgICB0aGlzLl9zZWxlY3Rpb25UeXBlID0gc2VsZWN0aW9uVHlwZVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zLm5leHQodW5kZWZpbmVkKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3Rpb25UeXBlKCk6IFNlbGVjdGlvblR5cGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25UeXBlXG4gIH1cblxuICBwdWJsaWMgc2V0Um93QWN0aW9uSXRlbShyb3dBY3Rpb25JdGVtOiBEYXRhdGFibGVSb3dBY3Rpb25JdGVtRGlyZWN0aXZlIHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX3Jvd0FjdGlvbkl0ZW0gIT09IHJvd0FjdGlvbkl0ZW1cbiAgICB0aGlzLl9yb3dBY3Rpb25JdGVtID0gcm93QWN0aW9uSXRlbVxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zLm5leHQodW5kZWZpbmVkKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRBY3Rpb25NZW51Q2VsbFRwbChhY3Rpb25NZW51Q2VsbFRwbDogVGVtcGxhdGVSZWY8RGF0YVRhYmxlQ29sdW1uRGlyZWN0aXZlPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9hY3Rpb25NZW51Q2VsbFRwbCAhPT0gYWN0aW9uTWVudUNlbGxUcGxcbiAgICB0aGlzLl9hY3Rpb25NZW51Q2VsbFRwbCA9IGFjdGlvbk1lbnVDZWxsVHBsXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEJsYW5rSGVhZGVyVHBsKGJsYW5rSGVhZGVyVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5IZWFkZXJEaXJlY3RpdmU+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX2JsYW5rSGVhZGVyVHBsICE9PSBibGFua0hlYWRlclRwbFxuICAgIHRoaXMuX2JsYW5rSGVhZGVyVHBsID0gYmxhbmtIZWFkZXJUcGxcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VHJlZVRvZ2dsZVRwbCh0cmVlVG9nZ2xlVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5DZWxsVHJlZVRvZ2dsZT4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5fdHJlZVRvZ2dsZVRwbCAhPT0gdHJlZVRvZ2dsZVRwbFxuICAgIHRoaXMuX3RyZWVUb2dnbGVUcGwgPSB0cmVlVG9nZ2xlVHBsXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvbHVtbnMubmV4dCh1bmRlZmluZWQpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldEhlYWRlclRwbChoZWFkZXJUcGw6IFRlbXBsYXRlUmVmPERhdGFUYWJsZUNvbHVtbkhlYWRlckRpcmVjdGl2ZT4gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5faGVhZGVyVHBsICE9PSBoZWFkZXJUcGxcbiAgICB0aGlzLl9oZWFkZXJUcGwgPSBoZWFkZXJUcGxcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5fdXBkYXRlQ29sdW1ucy5uZXh0KHVuZGVmaW5lZClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0Q2VsbFR5cGVTZWxlY3RvclRwbChjZWxsVHlwZVNlbGVjdG9yVHBsOiBUZW1wbGF0ZVJlZjxEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmU+IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX2NlbGxUeXBlU2VsZWN0b3JUcGwgIT09IGNlbGxUeXBlU2VsZWN0b3JUcGxcbiAgICB0aGlzLl9jZWxsVHlwZVNlbGVjdG9yVHBsID0gY2VsbFR5cGVTZWxlY3RvclRwbFxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLl91cGRhdGVDb2x1bW5zLm5leHQodW5kZWZpbmVkKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX21lcmdlQ29sdW1ucyhcbiAgICBpbnB1dENvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSxcbiAgICB0ZW1wbGF0ZUNvbHVtbnM6IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudFtdXG4gICk6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSB7XG4gICAgY29uc3QgY29sczogVGhlU2VhbURhdGF0YWJsZUNvbHVtbltdID0gW11cblxuICAgIC8vIEFkZCB0aGUgZmlyc3QgY29sdW1uIGNoZWNrYm94IGlmICdjaGVja2JveCcgc2VsZWN0aW9uIGlzIGVuYWJsZWQuXG4gICAgaWYgKHRoaXMuX3Nob3VsZEFkZENoZWNrYm94Q29sdW1uKCkpIHtcbiAgICAgIGNvbHMucHVzaChjcmVhdGVDaGVja2JveENvbHVtbigpKVxuICAgIH1cblxuICAgIC8vIENvbHVtbiBuZWVkcyB0byBiZSBwcm92aWRlZCBpbiB0aGUgaW5wdXRDb2x1bW5zLCBzbyBpdGVyYXRlIHRoZVxuICAgIC8vIGlucHV0Q29sdW1ucy5cbiAgICBmb3IgKGNvbnN0IGlucENvbCBvZiBpbnB1dENvbHVtbnMpIHtcbiAgICAgIGNvbnN0IHByb3AgPSBnZXRDb2x1bW5Qcm9wKGlucENvbClcbiAgICAgIGlmICghbm90TnVsbE9yVW5kZWZpbmVkKHByb3ApKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBDb2x1bW4gbWF5IGhhdmUgJ3Byb3AnIG9yICduYW1lJyBkZWZpbmVkLmApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGludGVybmFsQ29sID0gdGhpcy5fZ2V0SW50ZXJuYWxDb2x1bW4ocHJvcClcblxuICAgICAgY29uc3QgaW5wQ29sRGlmID0gdGhpcy5fZ2V0Q29sRGlmKGlucENvbCwgQ29sdW1uc1R5cGVzLklucHV0KVxuICAgICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZChpbnBDb2xEaWYpKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbERpZihpbnBDb2xEaWYsIGludGVybmFsQ29sLCBpbnBDb2wpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRwbENvbCA9IHRoaXMuX2ZpbmRDb2x1bW5CeVByb3AocHJvcCwgdGVtcGxhdGVDb2x1bW5zKVxuICAgICAgaWYgKHRwbENvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IHRwbENvbERpZiA9IHRoaXMuX2dldENvbERpZih0cGxDb2wsIENvbHVtbnNUeXBlcy5UZW1wbGF0ZSlcbiAgICAgICAgaWYgKG5vdE51bGxPclVuZGVmaW5lZCh0cGxDb2xEaWYpKSB7XG4gICAgICAgICAgdGhpcy5fdXBkYXRlQ29sRGlmKHRwbENvbERpZiwgaW50ZXJuYWxDb2wsIHRwbENvbClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBfY29sOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uID0ge1xuICAgICAgICAuLi4oaW50ZXJuYWxDb2wgfHwge30pLFxuICAgICAgICAuLi5pbnBDb2wsXG4gICAgICAgIC8vIFRPRE86IFJldGhpbmsgdGhpcywgYmVjYXVzZSBJIGRvbid0IGtub3cgaWYgdGhpcyBpcyBjb3JyZWN0LlxuICAgICAgICAuLi4odHBsQ29sIGFzIGFueSB8fCB7fSlcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3Nob3VsZEFkZFRyZWVUb2dnbGVDb2x1bW4oX2NvbCkpIHtcbiAgICAgICAgX2NvbC50cmVlVG9nZ2xlVGVtcGxhdGUgPSB0aGlzLl90cmVlVG9nZ2xlVHBsXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9zaG91bGRBZGRIZWFkZXJUZW1wbGF0ZShfY29sKSkge1xuICAgICAgICBfY29sLmhlYWRlclRlbXBsYXRlID0gdGhpcy5faGVhZGVyVHBsXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9zaG91bGRBZGRDZWxsVHlwZVNlbGVjdG9yVHBsKF9jb2wpKSB7XG4gICAgICAgIF9jb2wuY2VsbFRlbXBsYXRlID0gdGhpcy5fY2VsbFR5cGVTZWxlY3RvclRwbFxuICAgICAgfVxuXG4gICAgICBjb2xzLnB1c2goX2NvbClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc2hvdWxkQWRkUm93QWN0aW9uQ29sdW1uKCkpIHtcbiAgICAgIGNvbHMucHVzaChjcmVhdGVBY3Rpb25NZW51Q29sdW1uKHRoaXMuX2FjdGlvbk1lbnVDZWxsVHBsLCB0aGlzLl9ibGFua0hlYWRlclRwbCkpXG4gICAgfVxuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBkZWZhdWx0IGZvciBhbnkgbWlzc2luZyBwcm9wcyBhcmUgc2V0LlxuICAgIC8vIFRPRE86IERldGVybWluZSBpZiB0aGlzIHNob3VsZCBiZSBkb25lIGVhcmxpZXIsIGJlY2F1c2UgSSBkb24ndCBsaWtlXG4gICAgLy8gaG93IHRoaXMgaXMgZG9uZSBhZnRlciBkaWYgY2hlY2tzLlxuICAgIHNldENvbHVtbkRlZmF1bHRzKGNvbHMpXG5cbiAgICByZXR1cm4gY29sc1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SW50ZXJuYWxDb2x1bW5zKCk6IFRhYmxlQ29sdW1uW10gfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLl9pbnRlcm5hbENvbHVtbnNHZXR0ZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbENvbHVtbnNHZXR0ZXIoKVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SW50ZXJuYWxDb2x1bW4ocHJvcDogVGFibGVDb2x1bW5Qcm9wKTogVGFibGVDb2x1bW4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGludGVybmFsQ29scyA9IHRoaXMuX2dldEludGVybmFsQ29sdW1ucygpXG5cbiAgICBpZiAoaW50ZXJuYWxDb2xzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICByZXR1cm4gaW50ZXJuYWxDb2xzLmZpbmQoYyA9PiBnZXRDb2x1bW5Qcm9wKGMpID09PSBwcm9wKVxuICB9XG5cbiAgcHJpdmF0ZSBfZmluZENvbHVtbkJ5UHJvcDxUIGV4dGVuZHMgVGhlU2VhbURhdGF0YWJsZUNvbHVtbiB8IERhdGF0YWJsZUNvbHVtbkNvbXBvbmVudD4oXG4gICAgcHJvcDogVGFibGVDb2x1bW5Qcm9wLFxuICAgIGNvbHVtbnM6IFRbXVxuICApOiBUIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gY29sdW1ucy5maW5kKGMgPT4gZ2V0Q29sdW1uUHJvcChjKSA9PT0gcHJvcClcbiAgfVxuXG4gIHByaXZhdGUgX2dldERpZk1hcEZvckNvbHVtbnNUeXBlKGNvbHVtbnNUeXBlOiBDb2x1bW5zVHlwZXMpOiBNYXA8VGFibGVDb2x1bW5Qcm9wLCBLZXlWYWx1ZURpZmZlcjxhbnksIGFueT4+ICB7XG4gICAgc3dpdGNoIChjb2x1bW5zVHlwZSkge1xuICAgICAgY2FzZSBDb2x1bW5zVHlwZXMuSW5wdXQ6IHJldHVybiB0aGlzLl9pbnBDb2xEaWZmZXJzTWFwXG4gICAgICBjYXNlIENvbHVtbnNUeXBlcy5UZW1wbGF0ZTogcmV0dXJuIHRoaXMuX3RwbENvbERpZmZlcnNNYXBcbiAgICAgIGNhc2UgQ29sdW1uc1R5cGVzLlJlc3VsdDogcmV0dXJuIHRoaXMuX3Jlc3VsdENvbERpZmZlcnNNYXBcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb2x1bW5EaWZmZXIocHJvcDogVGFibGVDb2x1bW5Qcm9wLCBjb2xzVHlwZTogQ29sdW1uc1R5cGVzKTogS2V5VmFsdWVEaWZmZXI8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCBkaWZNYXAgPSB0aGlzLl9nZXREaWZNYXBGb3JDb2x1bW5zVHlwZShjb2xzVHlwZSlcbiAgICBpZiAoZGlmTWFwID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBFcnJvcihgSW52YWxpZCBjb2x1bW5zIHR5cGUuYClcbiAgICB9XG5cbiAgICBpZiAoIWRpZk1hcC5oYXMocHJvcCkpIHtcbiAgICAgIGRpZk1hcC5zZXQocHJvcCwgdGhpcy5fZGlmZmVycy5maW5kKHt9KS5jcmVhdGUoKSlcbiAgICB9XG5cbiAgICBjb25zdCBkaWZmZXIgPSBkaWZNYXAuZ2V0KHByb3ApXG4gICAgaWYgKGRpZmZlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBFcnJvcihgRGlmZmVyIG5vdCBmb3VuZC4gTmV3IGRpZmZlciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQuYClcbiAgICB9XG5cbiAgICByZXR1cm4gZGlmZmVyXG4gIH1cblxuICBwcml2YXRlIF9nZXRDb2xEaWYoXG4gICAgY29sOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uIHwgRGF0YXRhYmxlQ29sdW1uQ29tcG9uZW50LFxuICAgIGNvbHNUeXBlOiBDb2x1bW5zVHlwZXNcbiAgKTogS2V5VmFsdWVDaGFuZ2VzPHN0cmluZywgYW55PiB8IG51bGwge1xuICAgIGNvbnN0IHByb3AgPSBnZXRDb2x1bW5Qcm9wKGNvbClcbiAgICBpZiAocHJvcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBFcnJvcihgQ29sdW1uIHByb3Agbm90IGZvdW5kLmApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2dldENvbHVtbkRpZmZlcihwcm9wLCBjb2xzVHlwZSkuZGlmZihjb2wpXG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVDb2xEaWYoXG4gICAgY29sRGlmOiBLZXlWYWx1ZUNoYW5nZXM8c3RyaW5nLCBhbnk+LFxuICAgIGludGVybmFsQ29sdW1uOiBUYWJsZUNvbHVtbiB8IHVuZGVmaW5lZCxcbiAgICBjb2w6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW4gfCBEYXRhdGFibGVDb2x1bW5Db21wb25lbnRcbiAgKTogdm9pZCB7XG4gICAgY29sRGlmLmZvckVhY2hSZW1vdmVkSXRlbShyID0+IHtcbiAgICAgIGlmIChpbnRlcm5hbENvbHVtbiAmJiBpbnRlcm5hbENvbHVtbi5oYXNPd25Qcm9wZXJ0eShyLmtleSkpIHtcbiAgICAgICAgY29uc3QgayA9IHIua2V5IGFzIGtleW9mIFRhYmxlQ29sdW1uXG4gICAgICAgIGRlbGV0ZSBpbnRlcm5hbENvbHVtbltrXVxuICAgICAgfVxuICAgIH0pXG4gICAgY29sRGlmLmZvckVhY2hBZGRlZEl0ZW0ociA9PiAoY29sIGFzIGFueSlbci5rZXldID0gci5jdXJyZW50VmFsdWUpXG4gICAgY29sRGlmLmZvckVhY2hDaGFuZ2VkSXRlbShyID0+IChjb2wgYXMgYW55KVtyLmtleV0gPSByLmN1cnJlbnRWYWx1ZSlcbiAgfVxuXG4gIHByaXZhdGUgX2hhc0FkZGVkT3JSZW1vdmVkQ29sdW1ucyhjb2x1bW5zOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uW10pOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuX2NvbFByb3BzRGlmZmVyKSB7XG4gICAgICB0aGlzLl9jb2xQcm9wc0RpZmZlciA9IHRoaXMuX2RpZmZlcnMuZmluZChbXSkuY3JlYXRlKClcbiAgICB9XG5cbiAgICBjb25zdCBwcm9wcyA9IGNvbHVtbnMubWFwKGMgPT4gZ2V0Q29sdW1uUHJvcChjKSlcbiAgICByZXR1cm4gdGhpcy5fY29sUHJvcHNEaWZmZXIuZGlmZihwcm9wcykgIT09IG51bGxcbiAgfVxuXG4gIHByaXZhdGUgX2hhc0NvbHVtbnNDaGFuZ2VkKGNvbHVtbnM6IFRoZVNlYW1EYXRhdGFibGVDb2x1bW5bXSk6IGJvb2xlYW4ge1xuICAgIGxldCBjb2xDaGFuZ2VkID0gZmFsc2VcbiAgICBmb3IgKGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCByZXN1bHREaWYgPSB0aGlzLl9nZXRDb2xEaWYoY29sLCBDb2x1bW5zVHlwZXMuUmVzdWx0KVxuICAgICAgaWYgKHJlc3VsdERpZikge1xuICAgICAgICAvLyBOT1RFOiBDYW4ndCByZXR1cm4gZWFybHksIGJlY2F1c2UgdGhlIGRpZmZlcnMgbmVlZCB0byBiZSB1cGRhdGVkLlxuICAgICAgICBjb2xDaGFuZ2VkID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29sQ2hhbmdlZFxuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkQWRkQ2hlY2tib3hDb2x1bW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblR5cGUgPT09IFNlbGVjdGlvblR5cGUuY2hlY2tib3hcbiAgfVxuXG4gIHByaXZhdGUgX3Nob3VsZEFkZFJvd0FjdGlvbkNvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcm93QWN0aW9uSXRlbSAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICBwcml2YXRlIF9zaG91bGRBZGRUcmVlVG9nZ2xlQ29sdW1uKGNvbHVtbjogVGhlU2VhbURhdGF0YWJsZUNvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb2x1bW4uaXNUcmVlQ29sdW1uICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLmlzVHJlZUNvbHVtbiAmJlxuICAgICAgKCFoYXNQcm9wZXJ0eShjb2x1bW4sICd0cmVlVG9nZ2xlVGVtcGxhdGUnKSB8fCAhbm90TnVsbE9yVW5kZWZpbmVkKGNvbHVtbi50cmVlVG9nZ2xlVGVtcGxhdGUpKVxuICB9XG5cbiAgcHJpdmF0ZSBfc2hvdWxkQWRkSGVhZGVyVGVtcGxhdGUoY29sdW1uOiBUaGVTZWFtRGF0YXRhYmxlQ29sdW1uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFoYXNQcm9wZXJ0eShjb2x1bW4sICdoZWFkZXJUZW1wbGF0ZScpXG4gIH1cblxuICBwcml2YXRlIF9zaG91bGRBZGRDZWxsVHlwZVNlbGVjdG9yVHBsKGNvbHVtbjogVGhlU2VhbURhdGF0YWJsZUNvbHVtbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXNQcm9wZXJ0eShjb2x1bW4sICdjZWxsVHlwZScpXG4gIH1cblxufVxuIl19
|