@theseam/ui-common 0.2.9 → 0.2.13
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 +1353 -375
- 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 +28 -30
- 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 +48 -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-footer/datatable-footer-tpl.directive.d.ts +5 -0
- package/datatable/datatable-footer/datatable-footer.directive.d.ts +6 -0
- 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/public-api.d.ts +2 -0
- 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 +197 -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 +1 -1
- package/esm2015/datatable/datatable-footer/datatable-footer-tpl.directive.js +15 -0
- package/esm2015/datatable/datatable-footer/datatable-footer.directive.js +18 -0
- 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/datatable.module.js +7 -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/public-api.js +3 -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 +3 -3
- 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/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 +1136 -316
- 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 +14 -14
- package/fesm2015/theseam-ui-common-framework.js.map +1 -1
- 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/side-nav/side-nav-item/side-nav-item.component.scss +36 -9
- 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/common/_table.scss +0 -5
- package/styles/vendor/ngx-datatable/_ngx-datatable.scss +478 -87
- package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +174 -0
- package/styles/vendor/ngx-datatable/_themes/dark/_variables.scss +166 -0
- package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +165 -0
- package/styles/vendor/ngx-datatable/_variables.scss +3 -0
- 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,236 @@
|
|
|
1
|
+
import { BehaviorSubject, defer, from, isObservable, Observable, of, Subject } from 'rxjs';
|
|
2
|
+
import { auditTime, filter, finalize, map, shareReplay, skip, startWith, switchMap, take, tap } from 'rxjs/operators';
|
|
3
|
+
import { NetworkStatus } from '@apollo/client/core';
|
|
4
|
+
import { hasProperty, notNullOrUndefined } from '@theseam/ui-common/utils';
|
|
5
|
+
import { DEFAULT_PAGE_SIZE } from './get-page-info';
|
|
6
|
+
/**
|
|
7
|
+
* Partially wraps ApolloClient's QueryRef with some of our datatable boilerplate.
|
|
8
|
+
*
|
|
9
|
+
* TODO: Decide how to handle/display errors.
|
|
10
|
+
*/
|
|
11
|
+
export class DatatableGraphQLQueryRef {
|
|
12
|
+
constructor(
|
|
13
|
+
/** Original ApolloClient's QueryRef. */
|
|
14
|
+
_queryRef,
|
|
15
|
+
/**
|
|
16
|
+
* How long to wait before refetching from an update to the query or variables.
|
|
17
|
+
*/
|
|
18
|
+
_updatesPollDelay = 500) {
|
|
19
|
+
this._queryRef = _queryRef;
|
|
20
|
+
this._updatesPollDelay = _updatesPollDelay;
|
|
21
|
+
this._variablesSubject = new BehaviorSubject({});
|
|
22
|
+
this._observingChangesSubject = new BehaviorSubject(false);
|
|
23
|
+
/**
|
|
24
|
+
* Temporary way of tracking total count when paging is disabled.
|
|
25
|
+
*/
|
|
26
|
+
this._totalCount = DEFAULT_PAGE_SIZE;
|
|
27
|
+
this._variablesUpdatePending = false;
|
|
28
|
+
this._variablesSubject.next(this._queryRef.obsQuery.options.variables || {});
|
|
29
|
+
// this._getValueChanges().subscribe(v => this._logNetworkStatus(v.networkStatus))
|
|
30
|
+
this._valueChanges = defer(() => {
|
|
31
|
+
// console.log('Observing value changes')
|
|
32
|
+
const varChangesSub = this._variablesSubject.pipe(skip(1), tap(() => {
|
|
33
|
+
this._variablesUpdatePending = true;
|
|
34
|
+
}), auditTime(this._updatesPollDelay), finalize(() => {
|
|
35
|
+
// If the query stopped being observed before setting the pending
|
|
36
|
+
// variables, set them now.
|
|
37
|
+
if (this._variablesUpdatePending) {
|
|
38
|
+
this.refetch();
|
|
39
|
+
this._variablesUpdatePending = false;
|
|
40
|
+
}
|
|
41
|
+
})).subscribe(variables => {
|
|
42
|
+
// console.log('set vars', variables)
|
|
43
|
+
this._setVariablesImmediate(variables);
|
|
44
|
+
// this.refetch()
|
|
45
|
+
this._variablesUpdatePending = false;
|
|
46
|
+
});
|
|
47
|
+
this._observingChanges = true;
|
|
48
|
+
return this._queryRef.valueChanges.pipe(
|
|
49
|
+
// tap(v => {
|
|
50
|
+
// console.log('v', v)
|
|
51
|
+
// }),
|
|
52
|
+
filter(v => v.networkStatus === NetworkStatus.ready), finalize(() => {
|
|
53
|
+
// console.log('Done observing value changes')
|
|
54
|
+
varChangesSub.unsubscribe();
|
|
55
|
+
this._observingChanges = false;
|
|
56
|
+
}));
|
|
57
|
+
}).pipe(
|
|
58
|
+
// share()
|
|
59
|
+
shareReplay({ bufferSize: 1, refCount: true }));
|
|
60
|
+
this.loading$ = this._observingChangesSubject.pipe(switchMap(observingChanges => {
|
|
61
|
+
if (!observingChanges) {
|
|
62
|
+
return of(false);
|
|
63
|
+
}
|
|
64
|
+
return this._valueChanges.pipe(map(result => result.loading), startWith(this._queryRef.getCurrentResult().loading), auditTime(0), shareReplay({ bufferSize: 1, refCount: true }));
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
get _observingChanges() { return this._observingChangesSubject.value; }
|
|
68
|
+
set _observingChanges(value) { this._observingChangesSubject.next(value); }
|
|
69
|
+
get updatesPollDelay() { return this._updatesPollDelay; }
|
|
70
|
+
get variablesUpdatePending() { return this._variablesUpdatePending; }
|
|
71
|
+
_logNetworkStatus(status) {
|
|
72
|
+
switch (status) {
|
|
73
|
+
case NetworkStatus.loading:
|
|
74
|
+
console.log('%cNetworkStatus: ', 'color:limegreen', 'Loading');
|
|
75
|
+
break;
|
|
76
|
+
case NetworkStatus.setVariables:
|
|
77
|
+
console.log('%cNetworkStatus: ', 'color:limegreen', 'SetVariables');
|
|
78
|
+
break;
|
|
79
|
+
case NetworkStatus.fetchMore:
|
|
80
|
+
console.log('%cNetworkStatus: ', 'color:limegreen', 'FetchMore');
|
|
81
|
+
break;
|
|
82
|
+
case NetworkStatus.refetch:
|
|
83
|
+
console.log('%cNetworkStatus: ', 'color:limegreen', 'Refetch');
|
|
84
|
+
break;
|
|
85
|
+
case NetworkStatus.poll:
|
|
86
|
+
console.log('%cNetworkStatus: ', 'color:limegreen', 'Poll');
|
|
87
|
+
break;
|
|
88
|
+
case NetworkStatus.ready:
|
|
89
|
+
console.log('%cNetworkStatus: ', 'color:limegreen', 'Ready');
|
|
90
|
+
break;
|
|
91
|
+
case NetworkStatus.error:
|
|
92
|
+
console.log('%cNetworkStatus: ', 'color:limegreen', 'Error');
|
|
93
|
+
break;
|
|
94
|
+
default: console.log('%cNetworkStatus: ', 'color:red', 'Unknown');
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
rows(mapper) {
|
|
98
|
+
return this._rowsObservable(mapper);
|
|
99
|
+
}
|
|
100
|
+
_rowsObservable(mapper) {
|
|
101
|
+
return new Observable((subscriber) => {
|
|
102
|
+
// const rowsBufferSubject = new BehaviorSubject<TRow[]>([])
|
|
103
|
+
// console.log('obs _rowsObservable')
|
|
104
|
+
let rowsBuffer = [];
|
|
105
|
+
// const rowsBufferSubject = new ReplaySubject<TRow[]>()
|
|
106
|
+
const rowsBufferSubject = new Subject();
|
|
107
|
+
const querySub = this._valueChanges.pipe(switchMap(result => {
|
|
108
|
+
if (result.data === undefined) {
|
|
109
|
+
return of([]);
|
|
110
|
+
}
|
|
111
|
+
return this._resolveRowMapper(mapper(result.data)).pipe(tap(mapperResult => {
|
|
112
|
+
var _a, _b;
|
|
113
|
+
// console.log('mapperResult', mapperResult)
|
|
114
|
+
if (this._needsToRequeryWithAllRecords(mapperResult)) {
|
|
115
|
+
this.patchVariables({ take: mapperResult.totalCount });
|
|
116
|
+
}
|
|
117
|
+
if (hasProperty(mapperResult, 'totalCount')) {
|
|
118
|
+
this._totalCount = mapperResult.totalCount;
|
|
119
|
+
}
|
|
120
|
+
// let rows = rowsBufferSubject.value || []
|
|
121
|
+
let rows = rowsBuffer || [];
|
|
122
|
+
const hasTotalCount = mapperResult.totalCount !== undefined && mapperResult.totalCount !== null;
|
|
123
|
+
// If the rows buffer is not the same size as the totalCount, create a
|
|
124
|
+
// new buffer.
|
|
125
|
+
//
|
|
126
|
+
// TODO: Find out if this is resetting the buffer too eagerly.
|
|
127
|
+
// ApolloClient may have a better solution.
|
|
128
|
+
if (hasTotalCount) {
|
|
129
|
+
if (mapperResult.totalCount !== rows.length) {
|
|
130
|
+
rows = new Array(mapperResult.totalCount || 0);
|
|
131
|
+
}
|
|
132
|
+
let startIndex = (_a = this.getVariables().skip) !== null && _a !== void 0 ? _a : 0;
|
|
133
|
+
if ((_b = this.getQueryProcessingConfig()) === null || _b === void 0 ? void 0 : _b.disablePaging) {
|
|
134
|
+
startIndex = 0;
|
|
135
|
+
}
|
|
136
|
+
// Insert rows into buffer location.
|
|
137
|
+
rows.splice(startIndex, mapperResult.rows.length, ...mapperResult.rows);
|
|
138
|
+
rows = [...rows];
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
rows = [...mapperResult.rows];
|
|
142
|
+
}
|
|
143
|
+
rowsBuffer = rows;
|
|
144
|
+
rowsBufferSubject.next(rows);
|
|
145
|
+
}));
|
|
146
|
+
})).subscribe();
|
|
147
|
+
const rowsSub = rowsBufferSubject.subscribe(subscriber);
|
|
148
|
+
return () => {
|
|
149
|
+
// console.log('unsub')
|
|
150
|
+
querySub.unsubscribe();
|
|
151
|
+
rowsSub.unsubscribe();
|
|
152
|
+
rowsBufferSubject.next([]);
|
|
153
|
+
rowsBufferSubject.complete();
|
|
154
|
+
};
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
_needsToRequeryWithAllRecords(data) {
|
|
158
|
+
var _a;
|
|
159
|
+
if (!((_a = this.getQueryProcessingConfig()) === null || _a === void 0 ? void 0 : _a.disablePaging)) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
return hasProperty(data, 'totalCount') &&
|
|
163
|
+
hasProperty(data, 'rows') &&
|
|
164
|
+
Array.isArray(data.rows) &&
|
|
165
|
+
data.totalCount > data.rows.length &&
|
|
166
|
+
this._totalCount !== data.totalCount;
|
|
167
|
+
}
|
|
168
|
+
_resolveRowMapper(mapperReturn) {
|
|
169
|
+
if (isObservable(mapperReturn)) {
|
|
170
|
+
return mapperReturn.pipe(take(1));
|
|
171
|
+
}
|
|
172
|
+
return from(Promise.resolve(mapperReturn));
|
|
173
|
+
}
|
|
174
|
+
getVariables() {
|
|
175
|
+
// The types aren't accurate or Apollo has a bug, so I had to use `any`.
|
|
176
|
+
// return (this._queryRef as any).obsQuery.options.variables || {}
|
|
177
|
+
// TODO: Look into debouncing our variable setting, while still depending on Apollo for managing them.
|
|
178
|
+
return this._variablesSubject.value;
|
|
179
|
+
}
|
|
180
|
+
_setVariablesImmediate(variables) {
|
|
181
|
+
const _vars = this._withVariableOverrides(variables);
|
|
182
|
+
return this._queryRef.setVariables(_vars || {});
|
|
183
|
+
}
|
|
184
|
+
_patchVariablesImmediate(variables) {
|
|
185
|
+
const _variables = Object.assign(Object.assign({}, this.getVariables()), variables);
|
|
186
|
+
const _vars = this._withVariableOverrides(_variables);
|
|
187
|
+
return this._queryRef.setVariables(_vars || {});
|
|
188
|
+
}
|
|
189
|
+
setVariables(variables) {
|
|
190
|
+
this._variablesSubject.next(variables);
|
|
191
|
+
if (!this._observingChanges) {
|
|
192
|
+
this._setVariablesImmediate(variables);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
patchVariables(variables) {
|
|
196
|
+
const _variables = Object.assign(Object.assign({}, this.getVariables()), variables);
|
|
197
|
+
this._variablesSubject.next(_variables);
|
|
198
|
+
if (!this._observingChanges) {
|
|
199
|
+
this._setVariablesImmediate(_variables);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
refetch(variables) {
|
|
203
|
+
const _vars = this._withVariableOverrides(variables);
|
|
204
|
+
return this._queryRef.refetch(_vars);
|
|
205
|
+
}
|
|
206
|
+
setQuery(query, triggerRefetch = false) {
|
|
207
|
+
this._queryRef.setOptions({ query });
|
|
208
|
+
if (triggerRefetch) {
|
|
209
|
+
// TODO: Consider refactoring the refetch process. I can't call Apollo's
|
|
210
|
+
// refetch directly, because I want it to share the update triggered
|
|
211
|
+
// polling delay with the setting of variables.
|
|
212
|
+
// this._queryRef.refetch(this.getVariables())
|
|
213
|
+
// Fake variables update to trigger a refetch that shares it's refetch delay.
|
|
214
|
+
this.setVariables(this.getVariables());
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
getOptions() {
|
|
218
|
+
return this._queryRef.obsQuery.options;
|
|
219
|
+
}
|
|
220
|
+
getQueryProcessingConfig() {
|
|
221
|
+
var _a, _b;
|
|
222
|
+
return (_b = (_a = this.getOptions()) === null || _a === void 0 ? void 0 : _a.context) === null || _b === void 0 ? void 0 : _b.queryProcessingConfig;
|
|
223
|
+
}
|
|
224
|
+
_withVariableOverrides(variables) {
|
|
225
|
+
var _a, _b;
|
|
226
|
+
if (!notNullOrUndefined(variables) && !((_a = this.getQueryProcessingConfig()) === null || _a === void 0 ? void 0 : _a.disablePaging)) {
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
const _vars = Object.assign({}, (variables || {}));
|
|
230
|
+
if ((_b = this.getQueryProcessingConfig()) === null || _b === void 0 ? void 0 : _b.disablePaging) {
|
|
231
|
+
_vars.take = this._totalCount;
|
|
232
|
+
}
|
|
233
|
+
return _vars;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWdyYXBocWwtcXVlcnktcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tbW9uL2dyYXBocWwvZGF0YXRhYmxlL2RhdGF0YWJsZS1ncmFwaHFsLXF1ZXJ5LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQWlCLE9BQU8sRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUNySCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFTLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFFNUgsT0FBTyxFQUFtQyxhQUFhLEVBQXFCLE1BQU0scUJBQXFCLENBQUE7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBcUIsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUs3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQXFCbkQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFzQm5DO0lBQ0Usd0NBQXdDO0lBQ3ZCLFNBQXNDO0lBQ3ZEOztPQUVHO0lBQ2Msb0JBQTRCLEdBQUc7UUFKL0IsY0FBUyxHQUFULFNBQVMsQ0FBNkI7UUFJdEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFjO1FBMUJqQyxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBYSxFQUFnQixDQUFDLENBQUE7UUFDckUsNkJBQXdCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUE7UUFFL0U7O1dBRUc7UUFDSyxnQkFBVyxHQUFXLGlCQUFpQixDQUFBO1FBS3ZDLDRCQUF1QixHQUFHLEtBQUssQ0FBQTtRQWlCckMsSUFB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RSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ3BDLElBQUksY0FBYyxFQUFFO1lBQ2xCLHdFQUF3RTtZQUN4RSxvRUFBb0U7WUFDcEUsK0NBQStDO1lBQy9DLDhDQUE4QztZQUU5Qyw2RUFBNkU7WUFDN0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQTtTQUN2QztJQUNILENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBUSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFBO0lBQ2pELENBQUM7SUFFTSx3QkFBd0I7O1FBQzdCLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxVQUFVLEVBQUUsMENBQUUsT0FBTywwQ0FBRSxxQkFBcUIsQ0FBQTtJQUMxRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsU0FBc0I7O1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBQSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsMENBQUUsYUFBYSxDQUFDLEVBQUU7WUFDdkYsT0FBTyxTQUFTLENBQUE7U0FDakI7UUFFRCxNQUFNLEtBQUssR0FBRyxrQkFBSyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBZ0IsQ0FBQTtRQUNwRCxJQUFJLE1BQUEsSUFBSSxDQUFDLHdCQUF3QixFQUFFLDBDQUFFLGFBQWEsRUFBRTtZQUNsRCxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUE7U0FDOUI7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVmZXIsIGZyb20sIGlzT2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmliZXIgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBmaWx0ZXIsIGZpbmFsaXplLCBtYXAsIHNoYXJlLCBzaGFyZVJlcGxheSwgc2tpcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBBcG9sbG9RdWVyeVJlc3VsdCwgRG9jdW1lbnROb2RlLCBOZXR3b3JrU3RhdHVzLCBUeXBlZERvY3VtZW50Tm9kZSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnXG5pbXBvcnQgeyBoYXNQcm9wZXJ0eSwgaXNOdWxsT3JVbmRlZmluZWQsIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcbmltcG9ydCB7IFF1ZXJ5UmVmIH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXInXG5pbXBvcnQgeyBFbXB0eU9iamVjdCwgV2F0Y2hRdWVyeU9wdGlvbnMgfSBmcm9tICdhcG9sbG8tYW5ndWxhci90eXBlcydcblxuaW1wb3J0IHsgUXVlcnlQcm9jZXNzaW5nQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWxzJ1xuaW1wb3J0IHsgREVGQVVMVF9QQUdFX1NJWkUgfSBmcm9tICcuL2dldC1wYWdlLWluZm8nXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXJSZXN1bHQ8VFJvdyA9IEVtcHR5T2JqZWN0PiB7XG4gIHJvd3M6IFRSb3dbXVxuXG4gIC8qKlxuICAgKiBJZiBkYXRhIGlzIHBhZ2VkLCB0aGlzIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YgdW5wYWdlZCByb3dzLlxuICAgKi9cbiAgdG90YWxDb3VudD86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBEYXRhdGFibGVHcmFwaFFMRGF0YU1hcHBlcjxURGF0YSwgVFJvdyA9IEVtcHR5T2JqZWN0PiA9IChkYXRhOiBURGF0YSkgPT5cbiAgICAoRGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXJSZXN1bHQ8VFJvdz4gfFxuICAgIFByb21pc2U8RGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXJSZXN1bHQ8VFJvdz4+IHxcbiAgICBPYnNlcnZhYmxlPERhdGF0YWJsZUdyYXBoUUxEYXRhTWFwcGVyUmVzdWx0PFRSb3c+PilcblxuZXhwb3J0IHR5cGUgRGF0YXRhYmxlR3JhcGhRTFZhcmlhYmxlcyA9IHtcbiAgc2tpcD86IG51bWJlclxuICB0YWtlPzogbnVtYmVyXG59ICYgRW1wdHlPYmplY3RcblxuLyoqXG4gKiBQYXJ0aWFsbHkgd3JhcHMgQXBvbGxvQ2xpZW50J3MgUXVlcnlSZWYgd2l0aCBzb21lIG9mIG91ciBkYXRhdGFibGUgYm9pbGVycGxhdGUuXG4gKlxuICogVE9ETzogRGVjaWRlIGhvdyB0byBoYW5kbGUvZGlzcGxheSBlcnJvcnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhdGFibGVHcmFwaFFMUXVlcnlSZWY8VERhdGEsIFRWYXJpYWJsZXMgZXh0ZW5kcyBEYXRhdGFibGVHcmFwaFFMVmFyaWFibGVzID0gRW1wdHlPYmplY3QsIFRSb3cgPSBFbXB0eU9iamVjdD4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZhcmlhYmxlc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRWYXJpYWJsZXM+KHt9IGFzIFRWYXJpYWJsZXMpXG4gIHByaXZhdGUgcmVhZG9ubHkgX29ic2VydmluZ0NoYW5nZXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSlcblxuICAvKipcbiAgICogVGVtcG9yYXJ5IHdheSBvZiB0cmFja2luZyB0b3RhbCBjb3VudCB3aGVuIHBhZ2luZyBpcyBkaXNhYmxlZC5cbiAgICovXG4gIHByaXZhdGUgX3RvdGFsQ291bnQ6IG51bWJlciA9IERFRkFVTFRfUEFHRV9TSVpFXG5cbiAgcHJpdmF0ZSBnZXQgX29ic2VydmluZ0NoYW5nZXMoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9vYnNlcnZpbmdDaGFuZ2VzU3ViamVjdC52YWx1ZSB9XG4gIHByaXZhdGUgc2V0IF9vYnNlcnZpbmdDaGFuZ2VzKHZhbHVlOiBib29sZWFuKSB7IHRoaXMuX29ic2VydmluZ0NoYW5nZXNTdWJqZWN0Lm5leHQodmFsdWUpIH1cblxuICBwcml2YXRlIF92YXJpYWJsZXNVcGRhdGVQZW5kaW5nID0gZmFsc2VcblxuICBwcml2YXRlIHJlYWRvbmx5IF92YWx1ZUNoYW5nZXM6IE9ic2VydmFibGU8QXBvbGxvUXVlcnlSZXN1bHQ8VERhdGE+PlxuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPlxuXG4gIHB1YmxpYyBnZXQgdXBkYXRlc1BvbGxEZWxheSgpOiBudW1iZXIgeyByZXR1cm4gdGhpcy5fdXBkYXRlc1BvbGxEZWxheSB9XG4gIHB1YmxpYyBnZXQgdmFyaWFibGVzVXBkYXRlUGVuZGluZygpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX3ZhcmlhYmxlc1VwZGF0ZVBlbmRpbmcgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBPcmlnaW5hbCBBcG9sbG9DbGllbnQncyBRdWVyeVJlZi4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9xdWVyeVJlZjogUXVlcnlSZWY8VERhdGEsIFRWYXJpYWJsZXM+LFxuICAgIC8qKlxuICAgICAqIEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHJlZmV0Y2hpbmcgZnJvbSBhbiB1cGRhdGUgdG8gdGhlIHF1ZXJ5IG9yIHZhcmlhYmxlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVzUG9sbERlbGF5OiBudW1iZXIgPSA1MDBcbiAgKSB7XG4gICAgdGhpcy5fdmFyaWFibGVzU3ViamVjdC5uZXh0KCh0aGlzLl9xdWVyeVJlZiBhcyBhbnkpLm9ic1F1ZXJ5Lm9wdGlvbnMudmFyaWFibGVzIHx8IHt9KVxuICAgIC8vIHRoaXMuX2dldFZhbHVlQ2hhbmdlcygpLnN1YnNjcmliZSh2ID0+IHRoaXMuX2xvZ05ldHdvcmtTdGF0dXModi5uZXR3b3JrU3RhdHVzKSlcblxuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlcyA9IGRlZmVyKCgpID0+IHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdPYnNlcnZpbmcgdmFsdWUgY2hhbmdlcycpXG4gICAgICBjb25zdCB2YXJDaGFuZ2VzU3ViID0gdGhpcy5fdmFyaWFibGVzU3ViamVjdC5waXBlKFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZhcmlhYmxlc1VwZGF0ZVBlbmRpbmcgPSB0cnVlXG4gICAgICAgIH0pLFxuICAgICAgICBhdWRpdFRpbWUodGhpcy5fdXBkYXRlc1BvbGxEZWxheSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAvLyBJZiB0aGUgcXVlcnkgc3RvcHBlZCBiZWluZyBvYnNlcnZlZCBiZWZvcmUgc2V0dGluZyB0aGUgcGVuZGluZ1xuICAgICAgICAgIC8vIHZhcmlhYmxlcywgc2V0IHRoZW0gbm93LlxuICAgICAgICAgIGlmICh0aGlzLl92YXJpYWJsZXNVcGRhdGVQZW5kaW5nKSB7XG4gICAgICAgICAgICB0aGlzLnJlZmV0Y2goKVxuICAgICAgICAgICAgdGhpcy5fdmFyaWFibGVzVXBkYXRlUGVuZGluZyA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUodmFyaWFibGVzID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ3NldCB2YXJzJywgdmFyaWFibGVzKVxuICAgICAgICB0aGlzLl9zZXRWYXJpYWJsZXNJbW1lZGlhdGUodmFyaWFibGVzKVxuICAgICAgICAvLyB0aGlzLnJlZmV0Y2goKVxuICAgICAgICB0aGlzLl92YXJpYWJsZXNVcGRhdGVQZW5kaW5nID0gZmFsc2VcbiAgICAgIH0pXG4gICAgICB0aGlzLl9vYnNlcnZpbmdDaGFuZ2VzID0gdHJ1ZVxuXG4gICAgICByZXR1cm4gdGhpcy5fcXVlcnlSZWYudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgIC8vIHRhcCh2ID0+IHtcbiAgICAgICAgLy8gICBjb25zb2xlLmxvZygndicsIHYpXG4gICAgICAgIC8vIH0pLFxuICAgICAgICBmaWx0ZXIodiA9PiB2Lm5ldHdvcmtTdGF0dXMgPT09IE5ldHdvcmtTdGF0dXMucmVhZHkpLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgLy8gY29uc29sZS5sb2coJ0RvbmUgb2JzZXJ2aW5nIHZhbHVlIGNoYW5nZXMnKVxuICAgICAgICAgIHZhckNoYW5nZXNTdWIudW5zdWJzY3JpYmUoKVxuICAgICAgICAgIHRoaXMuX29ic2VydmluZ0NoYW5nZXMgPSBmYWxzZVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH0pLnBpcGUoXG4gICAgICAvLyBzaGFyZSgpXG4gICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgKVxuXG4gICAgdGhpcy5sb2FkaW5nJCA9IHRoaXMuX29ic2VydmluZ0NoYW5nZXNTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAob2JzZXJ2aW5nQ2hhbmdlcyA9PiB7XG4gICAgICAgIGlmICghb2JzZXJ2aW5nQ2hhbmdlcykge1xuICAgICAgICAgIHJldHVybiBvZihmYWxzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgICAgICBtYXAocmVzdWx0ID0+IHJlc3VsdC5sb2FkaW5nKSxcbiAgICAgICAgICBzdGFydFdpdGgodGhpcy5fcXVlcnlSZWYuZ2V0Q3VycmVudFJlc3VsdCgpLmxvYWRpbmcpLFxuICAgICAgICAgIGF1ZGl0VGltZSgwKSxcbiAgICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9nTmV0d29ya1N0YXR1cyhzdGF0dXM6IE5ldHdvcmtTdGF0dXMpIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSBOZXR3b3JrU3RhdHVzLmxvYWRpbmc6IGNvbnNvbGUubG9nKCclY05ldHdvcmtTdGF0dXM6ICcsICdjb2xvcjpsaW1lZ3JlZW4nLCAnTG9hZGluZycpOyBicmVha1xuICAgICAgY2FzZSBOZXR3b3JrU3RhdHVzLnNldFZhcmlhYmxlczogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOmxpbWVncmVlbicsICdTZXRWYXJpYWJsZXMnKTsgYnJlYWtcbiAgICAgIGNhc2UgTmV0d29ya1N0YXR1cy5mZXRjaE1vcmU6IGNvbnNvbGUubG9nKCclY05ldHdvcmtTdGF0dXM6ICcsICdjb2xvcjpsaW1lZ3JlZW4nLCAnRmV0Y2hNb3JlJyk7IGJyZWFrXG4gICAgICBjYXNlIE5ldHdvcmtTdGF0dXMucmVmZXRjaDogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOmxpbWVncmVlbicsICdSZWZldGNoJyk7IGJyZWFrXG4gICAgICBjYXNlIE5ldHdvcmtTdGF0dXMucG9sbDogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOmxpbWVncmVlbicsICdQb2xsJyk7IGJyZWFrXG4gICAgICBjYXNlIE5ldHdvcmtTdGF0dXMucmVhZHk6IGNvbnNvbGUubG9nKCclY05ldHdvcmtTdGF0dXM6ICcsICdjb2xvcjpsaW1lZ3JlZW4nLCAnUmVhZHknKTsgYnJlYWtcbiAgICAgIGNhc2UgTmV0d29ya1N0YXR1cy5lcnJvcjogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOmxpbWVncmVlbicsICdFcnJvcicpOyBicmVha1xuICAgICAgZGVmYXVsdDogY29uc29sZS5sb2coJyVjTmV0d29ya1N0YXR1czogJywgJ2NvbG9yOnJlZCcsICdVbmtub3duJylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcm93cyhtYXBwZXI6IERhdGF0YWJsZUdyYXBoUUxEYXRhTWFwcGVyPFREYXRhLCBUUm93Pik6IE9ic2VydmFibGU8VFJvd1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NPYnNlcnZhYmxlKG1hcHBlcilcbiAgfVxuXG4gIHByaXZhdGUgX3Jvd3NPYnNlcnZhYmxlKG1hcHBlcjogRGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXI8VERhdGEsIFRSb3c+KTogT2JzZXJ2YWJsZTxUUm93W10+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8VFJvd1tdPigoc3Vic2NyaWJlcjogU3Vic2NyaWJlcjxUUm93W10+KSA9PiB7XG4gICAgICAvLyBjb25zdCByb3dzQnVmZmVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFJvd1tdPihbXSlcblxuICAgICAgLy8gY29uc29sZS5sb2coJ29icyBfcm93c09ic2VydmFibGUnKVxuXG4gICAgICBsZXQgcm93c0J1ZmZlcjogVFJvd1tdID0gW11cbiAgICAgIC8vIGNvbnN0IHJvd3NCdWZmZXJTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8VFJvd1tdPigpXG4gICAgICBjb25zdCByb3dzQnVmZmVyU3ViamVjdCA9IG5ldyBTdWJqZWN0PFRSb3dbXT4oKVxuXG4gICAgICBjb25zdCBxdWVyeVN1YiA9IHRoaXMuX3ZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0LmRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlUm93TWFwcGVyKG1hcHBlcihyZXN1bHQuZGF0YSkpLnBpcGUoXG4gICAgICAgICAgICB0YXAobWFwcGVyUmVzdWx0ID0+IHtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ21hcHBlclJlc3VsdCcsIG1hcHBlclJlc3VsdClcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX25lZWRzVG9SZXF1ZXJ5V2l0aEFsbFJlY29yZHMobWFwcGVyUmVzdWx0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMucGF0Y2hWYXJpYWJsZXMoeyB0YWtlOiBtYXBwZXJSZXN1bHQudG90YWxDb3VudCB9IGFzIGFueSlcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eShtYXBwZXJSZXN1bHQsICd0b3RhbENvdW50JykpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90b3RhbENvdW50ID0gbWFwcGVyUmVzdWx0LnRvdGFsQ291bnRcbiAgICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgICAgLy8gbGV0IHJvd3MgPSByb3dzQnVmZmVyU3ViamVjdC52YWx1ZSB8fCBbXVxuICAgICAgICAgICAgICBsZXQgcm93cyA9IHJvd3NCdWZmZXIgfHwgW11cblxuICAgICAgICAgICAgICBjb25zdCBoYXNUb3RhbENvdW50ID0gbWFwcGVyUmVzdWx0LnRvdGFsQ291bnQgIT09IHVuZGVmaW5lZCAmJiBtYXBwZXJSZXN1bHQudG90YWxDb3VudCAhPT0gbnVsbFxuXG4gICAgICAgICAgICAgIC8vIElmIHRoZSByb3dzIGJ1ZmZlciBpcyBub3QgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgdG90YWxDb3VudCwgY3JlYXRlIGFcbiAgICAgICAgICAgICAgLy8gbmV3IGJ1ZmZlci5cbiAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgLy8gVE9ETzogRmluZCBvdXQgaWYgdGhpcyBpcyByZXNldHRpbmcgdGhlIGJ1ZmZlciB0b28gZWFnZXJseS5cbiAgICAgICAgICAgICAgLy8gQXBvbGxvQ2xpZW50IG1heSBoYXZlIGEgYmV0dGVyIHNvbHV0aW9uLlxuICAgICAgICAgICAgICBpZiAoaGFzVG90YWxDb3VudCkge1xuICAgICAgICAgICAgICAgIGlmIChtYXBwZXJSZXN1bHQudG90YWxDb3VudCAhPT0gcm93cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIHJvd3MgPSBuZXcgQXJyYXk8VFJvdz4obWFwcGVyUmVzdWx0LnRvdGFsQ291bnQgfHwgMClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgc3RhcnRJbmRleCA9IHRoaXMuZ2V0VmFyaWFibGVzKCkuc2tpcCA/PyAwXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0UXVlcnlQcm9jZXNzaW5nQ29uZmlnKCk/LmRpc2FibGVQYWdpbmcpIHtcbiAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSAwXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gSW5zZXJ0IHJvd3MgaW50byBidWZmZXIgbG9jYXRpb24uXG4gICAgICAgICAgICAgICAgcm93cy5zcGxpY2Uoc3RhcnRJbmRleCwgbWFwcGVyUmVzdWx0LnJvd3MubGVuZ3RoLCAuLi5tYXBwZXJSZXN1bHQucm93cylcblxuICAgICAgICAgICAgICAgIHJvd3MgPSBbIC4uLnJvd3MgXVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJvd3MgPSBbIC4uLm1hcHBlclJlc3VsdC5yb3dzIF1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJvd3NCdWZmZXIgPSByb3dzXG4gICAgICAgICAgICAgIHJvd3NCdWZmZXJTdWJqZWN0Lm5leHQocm93cylcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKVxuXG4gICAgICBjb25zdCByb3dzU3ViID0gcm93c0J1ZmZlclN1YmplY3Quc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCd1bnN1YicpXG4gICAgICAgIHF1ZXJ5U3ViLnVuc3Vic2NyaWJlKClcbiAgICAgICAgcm93c1N1Yi51bnN1YnNjcmliZSgpXG5cbiAgICAgICAgcm93c0J1ZmZlclN1YmplY3QubmV4dChbXSlcbiAgICAgICAgcm93c0J1ZmZlclN1YmplY3QuY29tcGxldGUoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9uZWVkc1RvUmVxdWVyeVdpdGhBbGxSZWNvcmRzKGRhdGE6IERhdGF0YWJsZUdyYXBoUUxEYXRhTWFwcGVyUmVzdWx0PFRSb3c+KTogYm9vbGVhbiB7XG4gICAgaWYgKCEodGhpcy5nZXRRdWVyeVByb2Nlc3NpbmdDb25maWcoKT8uZGlzYWJsZVBhZ2luZykpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiBoYXNQcm9wZXJ0eShkYXRhLCAndG90YWxDb3VudCcpICYmXG4gICAgICBoYXNQcm9wZXJ0eShkYXRhLCAncm93cycpICYmXG4gICAgICBBcnJheS5pc0FycmF5KGRhdGEucm93cykgJiZcbiAgICAgIGRhdGEudG90YWxDb3VudCA+IGRhdGEucm93cy5sZW5ndGggJiZcbiAgICAgIHRoaXMuX3RvdGFsQ291bnQgIT09IGRhdGEudG90YWxDb3VudFxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzb2x2ZVJvd01hcHBlcihcbiAgICBtYXBwZXJSZXR1cm46IFJldHVyblR5cGU8RGF0YXRhYmxlR3JhcGhRTERhdGFNYXBwZXI8VERhdGEsIFRSb3c+PlxuICApOiBPYnNlcnZhYmxlPERhdGF0YWJsZUdyYXBoUUxEYXRhTWFwcGVyUmVzdWx0PFRSb3c+PiB7XG4gICAgaWYgKGlzT2JzZXJ2YWJsZShtYXBwZXJSZXR1cm4pKSB7XG4gICAgICByZXR1cm4gbWFwcGVyUmV0dXJuLnBpcGUodGFrZSgxKSlcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShQcm9taXNlLnJlc29sdmUobWFwcGVyUmV0dXJuKSlcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYXJpYWJsZXMoKTogVFZhcmlhYmxlcyB7XG4gICAgLy8gVGhlIHR5cGVzIGFyZW4ndCBhY2N1cmF0ZSBvciBBcG9sbG8gaGFzIGEgYnVnLCBzbyBJIGhhZCB0byB1c2UgYGFueWAuXG4gICAgLy8gcmV0dXJuICh0aGlzLl9xdWVyeVJlZiBhcyBhbnkpLm9ic1F1ZXJ5Lm9wdGlvbnMudmFyaWFibGVzIHx8IHt9XG5cbiAgICAvLyBUT0RPOiBMb29rIGludG8gZGVib3VuY2luZyBvdXIgdmFyaWFibGUgc2V0dGluZywgd2hpbGUgc3RpbGwgZGVwZW5kaW5nIG9uIEFwb2xsbyBmb3IgbWFuYWdpbmcgdGhlbS5cbiAgICByZXR1cm4gdGhpcy5fdmFyaWFibGVzU3ViamVjdC52YWx1ZVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0VmFyaWFibGVzSW1tZWRpYXRlKHZhcmlhYmxlczogVFZhcmlhYmxlcyk6IFByb21pc2U8dm9pZCB8IEFwb2xsb1F1ZXJ5UmVzdWx0PFREYXRhPj4ge1xuICAgIGNvbnN0IF92YXJzID0gdGhpcy5fd2l0aFZhcmlhYmxlT3ZlcnJpZGVzKHZhcmlhYmxlcylcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlSZWYuc2V0VmFyaWFibGVzKF92YXJzIHx8IHt9IGFzIFRWYXJpYWJsZXMpXG4gIH1cblxuICBwcml2YXRlIF9wYXRjaFZhcmlhYmxlc0ltbWVkaWF0ZSh2YXJpYWJsZXM6IFBhcnRpYWw8VFZhcmlhYmxlcz4pOiBQcm9taXNlPHZvaWQgfCBBcG9sbG9RdWVyeVJlc3VsdDxURGF0YT4+IHtcbiAgICBjb25zdCBfdmFyaWFibGVzID0ge1xuICAgICAgLi4udGhpcy5nZXRWYXJpYWJsZXMoKSxcbiAgICAgIC4uLnZhcmlhYmxlc1xuICAgIH1cblxuICAgIGNvbnN0IF92YXJzID0gdGhpcy5fd2l0aFZhcmlhYmxlT3ZlcnJpZGVzKF92YXJpYWJsZXMpXG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UmVmLnNldFZhcmlhYmxlcyhfdmFycyB8fCB7fSBhcyBUVmFyaWFibGVzKVxuICB9XG5cbiAgcHVibGljIHNldFZhcmlhYmxlcyh2YXJpYWJsZXM6IFRWYXJpYWJsZXMpOiB2b2lkIHtcbiAgICB0aGlzLl92YXJpYWJsZXNTdWJqZWN0Lm5leHQodmFyaWFibGVzKVxuICAgIGlmICghdGhpcy5fb2JzZXJ2aW5nQ2hhbmdlcykge1xuICAgICAgdGhpcy5fc2V0VmFyaWFibGVzSW1tZWRpYXRlKHZhcmlhYmxlcylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcGF0Y2hWYXJpYWJsZXModmFyaWFibGVzOiBQYXJ0aWFsPFRWYXJpYWJsZXM+KTogdm9pZCB7XG4gICAgY29uc3QgX3ZhcmlhYmxlcyA9IHtcbiAgICAgIC4uLnRoaXMuZ2V0VmFyaWFibGVzKCksXG4gICAgICAuLi52YXJpYWJsZXNcbiAgICB9XG5cbiAgICB0aGlzLl92YXJpYWJsZXNTdWJqZWN0Lm5leHQoX3ZhcmlhYmxlcylcbiAgICBpZiAoIXRoaXMuX29ic2VydmluZ0NoYW5nZXMpIHtcbiAgICAgIHRoaXMuX3NldFZhcmlhYmxlc0ltbWVkaWF0ZShfdmFyaWFibGVzKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWZldGNoKHZhcmlhYmxlcz86IFRWYXJpYWJsZXMpOiBQcm9taXNlPEFwb2xsb1F1ZXJ5UmVzdWx0PFREYXRhPj4ge1xuICAgIGNvbnN0IF92YXJzID0gdGhpcy5fd2l0aFZhcmlhYmxlT3ZlcnJpZGVzKHZhcmlhYmxlcylcbiAgICByZXR1cm4gdGhpcy5fcXVlcnlSZWYucmVmZXRjaChfdmFycylcbiAgfVxuXG4gIHB1YmxpYyBzZXRRdWVyeShxdWVyeTogRG9jdW1lbnROb2RlIHwgVHlwZWREb2N1bWVudE5vZGU8VERhdGEsIFRWYXJpYWJsZXM+LCB0cmlnZ2VyUmVmZXRjaDogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5fcXVlcnlSZWYuc2V0T3B0aW9ucyh7IHF1ZXJ5IH0pXG4gICAgaWYgKHRyaWdnZXJSZWZldGNoKSB7XG4gICAgICAvLyBUT0RPOiBDb25zaWRlciByZWZhY3RvcmluZyB0aGUgcmVmZXRjaCBwcm9jZXNzLiBJIGNhbid0IGNhbGwgQXBvbGxvJ3NcbiAgICAgIC8vIHJlZmV0Y2ggZGlyZWN0bHksIGJlY2F1c2UgSSB3YW50IGl0IHRvIHNoYXJlIHRoZSB1cGRhdGUgdHJpZ2dlcmVkXG4gICAgICAvLyBwb2xsaW5nIGRlbGF5IHdpdGggdGhlIHNldHRpbmcgb2YgdmFyaWFibGVzLlxuICAgICAgLy8gdGhpcy5fcXVlcnlSZWYucmVmZXRjaCh0aGlzLmdldFZhcmlhYmxlcygpKVxuXG4gICAgICAvLyBGYWtlIHZhcmlhYmxlcyB1cGRhdGUgdG8gdHJpZ2dlciBhIHJlZmV0Y2ggdGhhdCBzaGFyZXMgaXQncyByZWZldGNoIGRlbGF5LlxuICAgICAgdGhpcy5zZXRWYXJpYWJsZXModGhpcy5nZXRWYXJpYWJsZXMoKSlcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0T3B0aW9ucygpOiBXYXRjaFF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzLCBURGF0YT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAodGhpcy5fcXVlcnlSZWYgYXMgYW55KS5vYnNRdWVyeS5vcHRpb25zXG4gIH1cblxuICBwdWJsaWMgZ2V0UXVlcnlQcm9jZXNzaW5nQ29uZmlnKCk6IFF1ZXJ5UHJvY2Vzc2luZ0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0T3B0aW9ucygpPy5jb250ZXh0Py5xdWVyeVByb2Nlc3NpbmdDb25maWdcbiAgfVxuXG4gIHByaXZhdGUgX3dpdGhWYXJpYWJsZU92ZXJyaWRlcyh2YXJpYWJsZXM/OiBUVmFyaWFibGVzKTogVFZhcmlhYmxlcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFub3ROdWxsT3JVbmRlZmluZWQodmFyaWFibGVzKSAmJiAhKHRoaXMuZ2V0UXVlcnlQcm9jZXNzaW5nQ29uZmlnKCk/LmRpc2FibGVQYWdpbmcpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgX3ZhcnMgPSB7IC4uLih2YXJpYWJsZXMgfHwge30pIH0gYXMgVFZhcmlhYmxlc1xuICAgIGlmICh0aGlzLmdldFF1ZXJ5UHJvY2Vzc2luZ0NvbmZpZygpPy5kaXNhYmxlUGFnaW5nKSB7XG4gICAgICBfdmFycy50YWtlID0gdGhpcy5fdG90YWxDb3VudFxuICAgIH1cbiAgICByZXR1cm4gX3ZhcnNcbiAgfVxuXG59XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
|
|
2
|
+
import { Apollo } from 'apollo-angular';
|
|
3
|
+
import { DatatableGraphQLQueryRef } from './datatable-graphql-query-ref';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "apollo-angular";
|
|
6
|
+
export const DATATABLE_GRAPHQL_SERVICE_CONFIG = new InjectionToken('DATATABLE_GRAPHQL_SERVICE_CONFIG');
|
|
7
|
+
const _CONFIG_DEFAULTS = {
|
|
8
|
+
pollingIntervalTime: 1 * 60 * 1000
|
|
9
|
+
};
|
|
10
|
+
export class DatatableGraphqlService {
|
|
11
|
+
constructor(_apollo, _config) {
|
|
12
|
+
this._apollo = _apollo;
|
|
13
|
+
this._config = Object.assign(Object.assign({}, _CONFIG_DEFAULTS), (_config || {}));
|
|
14
|
+
}
|
|
15
|
+
watchQuery(options, queryProcessingConfig) {
|
|
16
|
+
var _a;
|
|
17
|
+
const _options = Object.assign(Object.assign(Object.assign({ useInitialLoading: true }, _CONFIG_DEFAULTS), { pollInterval: this._config.pollingIntervalTime }), options);
|
|
18
|
+
if (queryProcessingConfig) {
|
|
19
|
+
_options.context = Object.assign(Object.assign({}, (_options.context || {})), { queryProcessingConfig: Object.assign(Object.assign({}, (((_a = _options.context) === null || _a === void 0 ? void 0 : _a.queryProcessingConfig) || {})), queryProcessingConfig) });
|
|
20
|
+
}
|
|
21
|
+
const queryRef = this._apollo.watchQuery(_options);
|
|
22
|
+
return new DatatableGraphQLQueryRef(queryRef);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
DatatableGraphqlService.ɵprov = i0.ɵɵdefineInjectable({ factory: function DatatableGraphqlService_Factory() { return new DatatableGraphqlService(i0.ɵɵinject(i1.Apollo), i0.ɵɵinject(DATATABLE_GRAPHQL_SERVICE_CONFIG, 8)); }, token: DatatableGraphqlService, providedIn: "root" });
|
|
26
|
+
DatatableGraphqlService.decorators = [
|
|
27
|
+
{ type: Injectable, args: [{
|
|
28
|
+
providedIn: 'root'
|
|
29
|
+
},] }
|
|
30
|
+
];
|
|
31
|
+
DatatableGraphqlService.ctorParameters = () => [
|
|
32
|
+
{ type: Apollo },
|
|
33
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DATATABLE_GRAPHQL_SERVICE_CONFIG,] }] }
|
|
34
|
+
];
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWdyYXBocWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9ncmFwaHFsL2RhdGF0YWJsZS9kYXRhdGFibGUtZ3JhcGhxbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFHNUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBSXZDLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQkFBK0IsQ0FBQTs7O0FBcUJuRyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBZ0Msa0NBQWtDLENBQUMsQ0FBQTtBQUVySSxNQUFNLGdCQUFnQixHQUFrQztJQUN0RCxtQkFBbUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUk7Q0FDbkMsQ0FBQTtBQUtELE1BQU0sT0FBTyx1QkFBdUI7SUFJbEMsWUFDbUIsT0FBZSxFQUNzQixPQUF1QztRQUQ1RSxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBR2hDLElBQUksQ0FBQyxPQUFPLG1DQUNQLGdCQUFnQixHQUNoQixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FDbkIsQ0FBQTtJQUNILENBQUM7SUFFTSxVQUFVLENBQ2YsT0FBMEMsRUFDMUMscUJBQTZDOztRQUU3QyxNQUFNLFFBQVEsK0NBQ1osaUJBQWlCLEVBQUUsSUFBSSxJQUNwQixnQkFBZ0IsS0FDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEtBQzNDLE9BQU8sQ0FDWCxDQUFBO1FBRUQsSUFBSSxxQkFBcUIsRUFBRTtZQUN6QixRQUFRLENBQUMsT0FBTyxtQ0FDWCxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEtBQzNCLHFCQUFxQixrQ0FDaEIsQ0FBQyxDQUFBLE1BQUEsUUFBUSxDQUFDLE9BQU8sMENBQUUscUJBQXFCLEtBQUksRUFBRSxDQUFDLEdBQy9DLHFCQUFxQixJQUUzQixDQUFBO1NBQ0Y7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBb0IsUUFBUSxDQUFDLENBQUE7UUFFckUsT0FBTyxJQUFJLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQy9DLENBQUM7Ozs7WUF6Q0YsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFqQ1EsTUFBTTs0Q0F3Q1YsUUFBUSxZQUFJLE1BQU0sU0FBQyxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5cbmltcG9ydCB7IE9wZXJhdGlvblZhcmlhYmxlcyB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUvdHlwZXMnXG5pbXBvcnQgeyBBcG9sbG8gfSBmcm9tICdhcG9sbG8tYW5ndWxhcidcbmltcG9ydCB7IEVtcHR5T2JqZWN0LCBXYXRjaFF1ZXJ5T3B0aW9ucyB9IGZyb20gJ2Fwb2xsby1hbmd1bGFyL3R5cGVzJ1xuXG5pbXBvcnQgeyBRdWVyeVByb2Nlc3NpbmdDb25maWcgfSBmcm9tICcuLi9tb2RlbHMnXG5pbXBvcnQgeyBEYXRhdGFibGVHcmFwaFFMUXVlcnlSZWYsIERhdGF0YWJsZUdyYXBoUUxWYXJpYWJsZXMgfSBmcm9tICcuL2RhdGF0YWJsZS1ncmFwaHFsLXF1ZXJ5LXJlZidcblxuLyoqXG4gKiBOT1RFOiBBbnkgb2YgQXBvbGxvQ2xpZW50J3MgV2F0Y2hRdWVyeU9wdGlvbnMgcHJvcGVydGllcyBjYW4gYmUgc2V0LCBidXQgSVxuICogdGhpbmsgb3VyIGNvbXBvbmVudHMgc2hvdWxkIG9ubHkgYmUgcHJvdmlkaW5nIGBxdWVyeWAgYW5kIGB2YXJpYWJsZXNgLiBUaGVcbiAqIHJlc3Qgc2hvdWxkIGJlIGNvbW1vbiBvcHRpb25zIHNoYXJlZCBieSBhbGwgb3VyIGFwcCdzIGRhdGF0YWJsZXMuIFRoaXMgbWF5XG4gKiBjaGFuZ2UgaWYgaXQgaXMgZGV0ZXJtaW5lZCB0byBiZSB0b28gcmVzdHJpY3RpdmUuXG4gKi9cbmV4cG9ydCB0eXBlIERhdGF0YWJsZVF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzID0gT3BlcmF0aW9uVmFyaWFibGVzLCBURGF0YSA9IGFueT4gPVxuICBQaWNrPFdhdGNoUXVlcnlPcHRpb25zPFRWYXJpYWJsZXMsIFREYXRhPiwgJ3F1ZXJ5Jz5cbiAgJiBQaWNrPFdhdGNoUXVlcnlPcHRpb25zPFRWYXJpYWJsZXMsIFREYXRhPiwgJ3ZhcmlhYmxlcyc+XG4gICYgUGljazxXYXRjaFF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzLCBURGF0YT4sICdjb250ZXh0Jz5cblxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGF0YWJsZUdyYXBocWxTZXJ2aWNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFBvbGxpbmcgaW50ZXJ2YWwgdGltZSBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICBwb2xsaW5nSW50ZXJ2YWxUaW1lPzogbnVtYmVyXG59XG5cbmV4cG9ydCBjb25zdCBEQVRBVEFCTEVfR1JBUEhRTF9TRVJWSUNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxEYXRhdGFibGVHcmFwaHFsU2VydmljZUNvbmZpZz4oJ0RBVEFUQUJMRV9HUkFQSFFMX1NFUlZJQ0VfQ09ORklHJylcblxuY29uc3QgX0NPTkZJR19ERUZBVUxUUzogRGF0YXRhYmxlR3JhcGhxbFNlcnZpY2VDb25maWcgPSB7XG4gIHBvbGxpbmdJbnRlcnZhbFRpbWU6IDEgKiA2MCAqIDEwMDBcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRGF0YXRhYmxlR3JhcGhxbFNlcnZpY2Uge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbmZpZzogRGF0YXRhYmxlR3JhcGhxbFNlcnZpY2VDb25maWdcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9hcG9sbG86IEFwb2xsbyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERBVEFUQUJMRV9HUkFQSFFMX1NFUlZJQ0VfQ09ORklHKSBfY29uZmlnPzogRGF0YXRhYmxlR3JhcGhxbFNlcnZpY2VDb25maWdcbiAgKSB7XG4gICAgdGhpcy5fY29uZmlnID0ge1xuICAgICAgLi4uX0NPTkZJR19ERUZBVUxUUyxcbiAgICAgIC4uLihfY29uZmlnIHx8IHt9KVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB3YXRjaFF1ZXJ5PFREYXRhLCBUVmFyaWFibGVzIGV4dGVuZHMgRGF0YXRhYmxlR3JhcGhRTFZhcmlhYmxlcyA9IEVtcHR5T2JqZWN0LCBUUm93ID0gRW1wdHlPYmplY3Q+KFxuICAgIG9wdGlvbnM6IERhdGF0YWJsZVF1ZXJ5T3B0aW9uczxUVmFyaWFibGVzPixcbiAgICBxdWVyeVByb2Nlc3NpbmdDb25maWc/OiBRdWVyeVByb2Nlc3NpbmdDb25maWdcbiAgKTogRGF0YXRhYmxlR3JhcGhRTFF1ZXJ5UmVmPFREYXRhLCBUVmFyaWFibGVzLCBUUm93PiB7XG4gICAgY29uc3QgX29wdGlvbnM6IFdhdGNoUXVlcnlPcHRpb25zPFRWYXJpYWJsZXMsIFREYXRhPiA9IHtcbiAgICAgIHVzZUluaXRpYWxMb2FkaW5nOiB0cnVlLFxuICAgICAgLi4uX0NPTkZJR19ERUZBVUxUUyxcbiAgICAgIHBvbGxJbnRlcnZhbDogdGhpcy5fY29uZmlnLnBvbGxpbmdJbnRlcnZhbFRpbWUsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfVxuXG4gICAgaWYgKHF1ZXJ5UHJvY2Vzc2luZ0NvbmZpZykge1xuICAgICAgX29wdGlvbnMuY29udGV4dCA9IHtcbiAgICAgICAgLi4uKF9vcHRpb25zLmNvbnRleHQgfHwge30pLFxuICAgICAgICBxdWVyeVByb2Nlc3NpbmdDb25maWc6IHtcbiAgICAgICAgICAuLi4oX29wdGlvbnMuY29udGV4dD8ucXVlcnlQcm9jZXNzaW5nQ29uZmlnIHx8IHt9KSxcbiAgICAgICAgICAuLi5xdWVyeVByb2Nlc3NpbmdDb25maWdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJ5UmVmID0gdGhpcy5fYXBvbGxvLndhdGNoUXVlcnk8VERhdGEsIFRWYXJpYWJsZXM+KF9vcHRpb25zKVxuXG4gICAgcmV0dXJuIG5ldyBEYXRhdGFibGVHcmFwaFFMUXVlcnlSZWYocXVlcnlSZWYpXG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { combineLatest, Observable, of, ReplaySubject } from 'rxjs';
|
|
2
|
+
import { distinctUntilChanged, map, shareReplay, startWith, switchMap, tap } from 'rxjs/operators';
|
|
3
|
+
import { subscriberCount, wrapIntoObservable } from '@theseam/ui-common/utils';
|
|
4
|
+
import { createPageInfoObservable } from './create-page-info-observable';
|
|
5
|
+
import { mapFilterStates } from './map-filter-states';
|
|
6
|
+
import { mapPageInfo } from './map-page-info';
|
|
7
|
+
export function observeRowsWithGqlInputsHandling(queryRef, rows, datatable, extraVariables, sortsMapper, filterStateMappers) {
|
|
8
|
+
return new Observable((subscriber) => {
|
|
9
|
+
const datatable$ = wrapIntoObservable(datatable);
|
|
10
|
+
const extraVariables$ = wrapIntoObservable(extraVariables);
|
|
11
|
+
const context$ = extraVariables$.pipe(map(_extraVariables => {
|
|
12
|
+
const context = {
|
|
13
|
+
extraVariables: _extraVariables
|
|
14
|
+
};
|
|
15
|
+
return context;
|
|
16
|
+
}), shareReplay({ bufferSize: 1, refCount: true }));
|
|
17
|
+
const datatableMappers = {
|
|
18
|
+
pageInfo: mapPageInfo,
|
|
19
|
+
sorts: sortsMapper,
|
|
20
|
+
filters: filterStateMappers,
|
|
21
|
+
};
|
|
22
|
+
const datatableResults$ = _createDatatableResultsObservable(datatable$, datatableMappers, context$);
|
|
23
|
+
const queryVariablesChanged$ = datatableResults$.pipe(tap(results => {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
queryRef.setVariables(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (results.context || {})), results.pageInfo), (results.sorts.length > 0 ? { order: results.sorts } : {})), (((_a = results.filter) === null || _a === void 0 ? void 0 : _a.variables) || {})), (((_b = results.filter) === null || _b === void 0 ? void 0 : _b.filter) ? { where: results.filter.filter } : {})));
|
|
26
|
+
}));
|
|
27
|
+
// const _emitSubject = new Subject<void>()
|
|
28
|
+
// const queryVarsChangedSub = queryVariablesChanged$.pipe(
|
|
29
|
+
// switchMap(() => subscriberCount(rows, 'rows'))
|
|
30
|
+
// ).subscribe(subscriber)
|
|
31
|
+
const queryVarsChangedSub = queryVariablesChanged$.subscribe();
|
|
32
|
+
const _sub = subscriberCount(rows, 'rows').subscribe(subscriber);
|
|
33
|
+
return () => {
|
|
34
|
+
queryVarsChangedSub.unsubscribe();
|
|
35
|
+
_sub.unsubscribe();
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
// const context$ = extraVariables$.pipe(
|
|
39
|
+
// map(_extraVariables => {
|
|
40
|
+
// const context: MapperContext = {
|
|
41
|
+
// extraVariables: _extraVariables
|
|
42
|
+
// }
|
|
43
|
+
// return context
|
|
44
|
+
// })
|
|
45
|
+
// )
|
|
46
|
+
// const datatableMappers: DatatableMappers = {
|
|
47
|
+
// pageInfo: mapPageInfo,
|
|
48
|
+
// sorts: sortsMapper,
|
|
49
|
+
// filters: filterStateMappers,
|
|
50
|
+
// }
|
|
51
|
+
// const datatableResults$ = _createDatatableResultsObservable(
|
|
52
|
+
// datatable$,
|
|
53
|
+
// datatableMappers,
|
|
54
|
+
// context$,
|
|
55
|
+
// )
|
|
56
|
+
// const queryVariablesChanged$ = datatableResults$.pipe(
|
|
57
|
+
// tap(results => {
|
|
58
|
+
// queryRef.setVariables({
|
|
59
|
+
// ...(results.extraVariables || {}),
|
|
60
|
+
// ...results.pageInfo,
|
|
61
|
+
// ...(results.sorts.length > 0 ? { order: results.sorts } : {}),
|
|
62
|
+
// ...(results.filterInfo?.variables || {}),
|
|
63
|
+
// ...(results.filterInfo?.filter ? { where: results.filterInfo.filter } : {})
|
|
64
|
+
// } as any)
|
|
65
|
+
// })
|
|
66
|
+
// )
|
|
67
|
+
// const handleQueryInputs = combineLatest([ extraVariables$, pageInfo$ ]).pipe(
|
|
68
|
+
// switchMap(([ _extraVariables, pageInfo ]) => {
|
|
69
|
+
// // console.log('_extraVariables, pageInfo', _extraVariables, pageInfo)
|
|
70
|
+
// const context: MapperContext = {
|
|
71
|
+
// extraVariables: _extraVariables
|
|
72
|
+
// }
|
|
73
|
+
// return combineLatest([ sorts$, filterInfo$ ]).pipe(
|
|
74
|
+
// // map(([ sorts, filterInfo ]) => ({ extraVariables: _extraVariables, pageInfo, sorts, filterInfo }))
|
|
75
|
+
// map(([ sorts, filterInfo ]) => {
|
|
76
|
+
// // console.log('sorts, filterInfo', sorts, filterInfo)
|
|
77
|
+
// return { extraVariables: _extraVariables, pageInfo, sorts, filterInfo }
|
|
78
|
+
// })
|
|
79
|
+
// )
|
|
80
|
+
// }),
|
|
81
|
+
// tap(v => {
|
|
82
|
+
// // console.log('~~~', v)
|
|
83
|
+
// queryRef.setVariables({
|
|
84
|
+
// ...(v.extraVariables || {}),
|
|
85
|
+
// ...v.pageInfo,
|
|
86
|
+
// ...(v.sorts.length > 0 ? { order: v.sorts } : {}),
|
|
87
|
+
// ...(v.filterInfo?.variables || {}),
|
|
88
|
+
// ...(v.filterInfo?.filter ? { where: v.filterInfo.filter } : {})
|
|
89
|
+
// } as any)
|
|
90
|
+
// })
|
|
91
|
+
// )
|
|
92
|
+
// return defer(() => {
|
|
93
|
+
// const _emitted = new Subject<void>()
|
|
94
|
+
// const handlerSub = handleQueryInputs.pipe(
|
|
95
|
+
// // skip(1)
|
|
96
|
+
// // ).subscribe(() => _emitted.next())
|
|
97
|
+
// ).subscribe(() => {
|
|
98
|
+
// _emitted.next()
|
|
99
|
+
// })
|
|
100
|
+
// return _emitted.pipe(
|
|
101
|
+
// // tap(v => {
|
|
102
|
+
// // console.log('emitted', v)
|
|
103
|
+
// // }),
|
|
104
|
+
// distinctUntilChanged(),
|
|
105
|
+
// switchMap(() => subscriberCount(rows, 'rows')),
|
|
106
|
+
// // tap(v => {
|
|
107
|
+
// // console.log('emitting rows', v)
|
|
108
|
+
// // }),
|
|
109
|
+
// finalize(() => handlerSub.unsubscribe())
|
|
110
|
+
// )
|
|
111
|
+
// }).pipe(
|
|
112
|
+
// // tap(v => {
|
|
113
|
+
// // console.log('rows', v)
|
|
114
|
+
// // }),
|
|
115
|
+
// catchError(err => {
|
|
116
|
+
// console.error(err)
|
|
117
|
+
// return of([] as TRow[])
|
|
118
|
+
// }),
|
|
119
|
+
// shareReplay({ bufferSize: 1, refCount: true })
|
|
120
|
+
// )
|
|
121
|
+
}
|
|
122
|
+
function _createSortsObservable(datatable$) {
|
|
123
|
+
return datatable$.pipe(
|
|
124
|
+
// tap(v => console.log('sorts got dt', v)),
|
|
125
|
+
switchMap(dt => dt
|
|
126
|
+
? dt.sort.pipe(map(v => v.sorts), startWith(dt.sorts)) // .pipe(tap(v => console.log('sorts 1', v)))
|
|
127
|
+
: of([]) // .pipe(tap(v => console.log('sorts 2', v)))
|
|
128
|
+
), shareReplay({ bufferSize: 1, refCount: true }));
|
|
129
|
+
}
|
|
130
|
+
function _createFilterStatesObservable(datatable$) {
|
|
131
|
+
return datatable$.pipe(
|
|
132
|
+
// tap(v => console.log('filters got dt', v)),
|
|
133
|
+
switchMap(dt => dt
|
|
134
|
+
? dt.filterStates // .pipe(tap(v => console.log('filterStates 1', v)))
|
|
135
|
+
: of([]) // .pipe(tap(v => console.log('filterStates 2', v)))
|
|
136
|
+
),
|
|
137
|
+
// TODO: Remove when the datatable fixes the bug causing it to emit more than it should.
|
|
138
|
+
distinctUntilChanged((x, y) => JSON.stringify(x) === JSON.stringify(y)));
|
|
139
|
+
}
|
|
140
|
+
function _createDatatableResultsObservable(datatable$, mappers, context$) {
|
|
141
|
+
return new Observable((subscriber) => {
|
|
142
|
+
const datatableSubject = new ReplaySubject();
|
|
143
|
+
const dtSub = datatable$.subscribe(dt => datatableSubject.next(dt), err => datatableSubject.error(err), () => datatableSubject.complete());
|
|
144
|
+
const ctxSub = context$.pipe(switchMap(context => {
|
|
145
|
+
// TODO: Decide if the disabled paging feature will be reimplemented in a way
|
|
146
|
+
// that it should be considered here. `_isPagingDisabled(queryRef)`
|
|
147
|
+
const pageInfo$ = createPageInfoObservable(datatable$).pipe(map(info => mappers.pageInfo(info)));
|
|
148
|
+
const sorts$ = _createSortsObservable(datatable$).pipe(switchMap(m => wrapIntoObservable(mappers.sorts(m, context))));
|
|
149
|
+
const filterInfo$ = _createFilterStatesObservable(datatable$).pipe(switchMap(x => mapFilterStates(x, mappers.filters, context)));
|
|
150
|
+
return combineLatest([
|
|
151
|
+
pageInfo$,
|
|
152
|
+
sorts$,
|
|
153
|
+
filterInfo$,
|
|
154
|
+
]).pipe(map(([pageInfo, sorts, filterInfo]) => ({
|
|
155
|
+
pageInfo,
|
|
156
|
+
sorts,
|
|
157
|
+
filter: filterInfo,
|
|
158
|
+
context: context
|
|
159
|
+
})));
|
|
160
|
+
})).subscribe(subscriber);
|
|
161
|
+
return () => {
|
|
162
|
+
dtSub.unsubscribe();
|
|
163
|
+
ctxSub.unsubscribe();
|
|
164
|
+
};
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
// function _isPagingDisabled<TData, TVariables, TRow>(queryRef: DatatableGraphQLQueryRef<TData, TVariables, TRow>): boolean {
|
|
168
|
+
// return queryRef.getQueryProcessingConfig()?.disablePaging ?? false
|
|
169
|
+
// }
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXRhYmxlLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZ3JhcGhxbC9kYXRhdGFibGUvZGF0YXRhYmxlLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGFBQWEsRUFBUyxVQUFVLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBdUIsTUFBTSxNQUFNLENBQUE7QUFDL0YsT0FBTyxFQUFjLG9CQUFvQixFQUFZLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBUSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUU5SCxPQUFPLEVBQXNCLGVBQWUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBS2xHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBRXhFLE9BQU8sRUFBK0MsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbEcsT0FBTyxFQUFFLFdBQVcsRUFBd0MsTUFBTSxpQkFBaUIsQ0FBQTtBQW9CbkYsTUFBTSxVQUFVLGdDQUFnQyxDQUM5QyxRQUE2RCxFQUM3RCxJQUF3QixFQUN4QixTQUEwSCxFQUMxSCxjQUEwRyxFQUMxRyxXQUF3QixFQUN4QixrQkFBc0M7SUFFdEMsT0FBTyxJQUFJLFVBQVUsQ0FBUyxDQUFDLFVBQThCLEVBQUUsRUFBRTtRQUMvRCxNQUFNLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoRCxNQUFNLGVBQWUsR0FBRyxrQkFBa0IsQ0FBd0IsY0FBYyxDQUFDLENBQUE7UUFFakYsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FDbkMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3BCLE1BQU0sT0FBTyxHQUFrQjtnQkFDN0IsY0FBYyxFQUFFLGVBQWU7YUFDaEMsQ0FBQTtZQUVELE9BQU8sT0FB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QUFBO1lBRUQsTUFBTSxXQUFXLEdBQUcsNkJBQTZCLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUNoRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDN0QsQ0FBQTtZQUVELE9BQU8sYUFBYSxDQUFDO2dCQUNuQixTQUFTO2dCQUNULE1BQU07Z0JBQ04sV0FBVzthQUNaLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QyxRQUFRO2dCQUNSLEtBQUs7Z0JBQ0wsTUFBTSxFQUFFLFVBQVU7Z0JBQ2xCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCLENBQUMsQ0FBQyxDQUNKLENBQUE7UUFFSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUV2QixPQUFPLEdBQUcsRUFBRTtZQUNWLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQTtZQUNuQixNQUFNLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDdEIsQ0FBQyxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsOEhBQThIO0FBQzlILHVFQUF1RTtBQUN2RSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIGRlZmVyLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaWJlciB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmluYWxpemUsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcblxuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkLCBzdWJzY3JpYmVyQ291bnQsIHdyYXBJbnRvT2JzZXJ2YWJsZSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi91dGlscydcbmltcG9ydCB7IEVtcHR5T2JqZWN0IH0gZnJvbSAnYXBvbGxvLWFuZ3VsYXIvdHlwZXMnXG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9kYXRhdGFibGUnXG5cbmltcG9ydCB7IEdxbERhdGF0YWJsZUFjY2Vzc29yIH0gZnJvbSAnLi4vbW9kZWxzJ1xuaW1wb3J0IHsgY3JlYXRlUGFnZUluZm9PYnNlcnZhYmxlIH0gZnJvbSAnLi9jcmVhdGUtcGFnZS1pbmZvLW9ic2VydmFibGUnXG5pbXBvcnQgeyBEYXRhdGFibGVHcmFwaFFMUXVlcnlSZWYgfSBmcm9tICcuL2RhdGF0YWJsZS1ncmFwaHFsLXF1ZXJ5LXJlZidcbmltcG9ydCB7IEZpbHRlclN0YXRlTWFwcGVyUmVzdWx0LCBGaWx0ZXJTdGF0ZU1hcHBlcnMsIG1hcEZpbHRlclN0YXRlcyB9IGZyb20gJy4vbWFwLWZpbHRlci1zdGF0ZXMnXG5pbXBvcnQgeyBtYXBQYWdlSW5mbywgUGFnZUluZm9NYXBwZXIsIFBhZ2VJbmZvTWFwcGVyUmVzdWx0IH0gZnJvbSAnLi9tYXAtcGFnZS1pbmZvJ1xuaW1wb3J0IHsgTWFwcGVyQ29udGV4dCB9IGZyb20gJy4vbWFwcGVyLWNvbnRleHQnXG5cbmV4cG9ydCB0eXBlIFNvcnRzTWFwcGVyUmVzdWx0ID0geyBbbmFtZTogc3RyaW5nXTogYW55IH1bXVxuZXhwb3J0IHR5cGUgU29ydHNNYXBwZXIgPSAoc29ydHM6IFNvcnRJdGVtW10sIGNvbnRleHQ6IE1hcHBlckNvbnRleHQpXG4gID0+IChTb3J0c01hcHBlclJlc3VsdCB8IFByb21pc2U8U29ydHNNYXBwZXJSZXN1bHQ+IHwgT2JzZXJ2YWJsZTxTb3J0c01hcHBlclJlc3VsdD4pXG5cbmludGVyZmFjZSBEYXRhdGFibGVSZXN1bHRzIHtcbiAgcGFnZUluZm86IFBhZ2VJbmZvTWFwcGVyUmVzdWx0XG4gIHNvcnRzOiBTb3J0c01hcHBlclJlc3VsdFxuICBmaWx0ZXI6IEZpbHRlclN0YXRlTWFwcGVyUmVzdWx0XG4gIGNvbnRleHQ6IE1hcHBlckNvbnRleHRcbn1cblxuaW50ZXJmYWNlIERhdGF0YWJsZU1hcHBlcnMge1xuICBwYWdlSW5mbzogUGFnZUluZm9NYXBwZXJcbiAgc29ydHM6IFNvcnRzTWFwcGVyXG4gIGZpbHRlcnM6IEZpbHRlclN0YXRlTWFwcGVyc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb2JzZXJ2ZVJvd3NXaXRoR3FsSW5wdXRzSGFuZGxpbmc8VERhdGEsIFRSb3csIEdxbFZhcmlhYmxlcyBleHRlbmRzIEVtcHR5T2JqZWN0PihcbiAgcXVlcnlSZWY6IERhdGF0YWJsZUdyYXBoUUxRdWVyeVJlZjxURGF0YSwgR3FsVmFyaWFibGVzLCBUUm93PixcbiAgcm93czogT2JzZXJ2YWJsZTxUUm93W10+LFxuICBkYXRhdGFibGU6IE9ic2VydmFibGU8R3FsRGF0YXRhYmxlQWNjZXNzb3IgfCB1bmRlZmluZWQ+IHwgUHJvbWlzZTxHcWxEYXRhdGFibGVBY2Nlc3NvciB8IHVuZGVmaW5lZD4gfCBHcWxEYXRhdGFibGVBY2Nlc3NvcixcbiAgZXh0cmFWYXJpYWJsZXM6IE9ic2VydmFibGU8UGFydGlhbDxHcWxWYXJpYWJsZXM+PiB8IFByb21pc2U8UGFydGlhbDxHcWxWYXJpYWJsZXM+PiB8IFBhcnRpYWw8R3FsVmFyaWFibGVzPixcbiAgc29ydHNNYXBwZXI6IFNvcnRzTWFwcGVyLFxuICBmaWx0ZXJTdGF0ZU1hcHBlcnM6IEZpbHRlclN0YXRlTWFwcGVyc1xuKTogT2JzZXJ2YWJsZTxUUm93W10+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFRSb3dbXT4oKHN1YnNjcmliZXI6IFN1YnNjcmliZXI8VFJvd1tdPikgPT4ge1xuICAgIGNvbnN0IGRhdGF0YWJsZSQgPSB3cmFwSW50b09ic2VydmFibGUoZGF0YXRhYmxlKVxuICAgIGNvbnN0IGV4dHJhVmFyaWFibGVzJCA9IHdyYXBJbnRvT2JzZXJ2YWJsZTxQYXJ0aWFsPEdxbFZhcmlhYmxlcz4+KGV4dHJhVmFyaWFibGVzKVxuXG4gICAgY29uc3QgY29udGV4dCQgPSBleHRyYVZhcmlhYmxlcyQucGlwZShcbiAgICAgIG1hcChfZXh0cmFWYXJpYWJsZXMgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0OiBNYXBwZXJDb250ZXh0ID0ge1xuICAgICAgICAgIGV4dHJhVmFyaWFibGVzOiBfZXh0cmFWYXJpYWJsZXNcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb250ZXh0XG4gICAgICB9KSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSlcbiAgICApXG5cbiAgICBjb25zdCBkYXRhdGFibGVNYXBwZXJzOiBEYXRhdGFibGVNYXBwZXJzID0ge1xuICAgICAgcGFnZUluZm86IG1hcFBhZ2VJbmZvLFxuICAgICAgc29ydHM6IHNvcnRzTWFwcGVyLFxuICAgICAgZmlsdGVyczogZmlsdGVyU3RhdGVNYXBwZXJzLFxuICAgIH1cblxuICAgIGNvbnN0IGRhdGF0YWJsZVJlc3VsdHMkID0gX2NyZWF0ZURhdGF0YWJsZVJlc3VsdHNPYnNlcnZhYmxlKFxuICAgICAgZGF0YXRhYmxlJCxcbiAgICAgIGRhdGF0YWJsZU1hcHBlcnMsXG4gICAgICBjb250ZXh0JCxcbiAgICApXG5cbiAgICBjb25zdCBxdWVyeVZhcmlhYmxlc0NoYW5nZWQkID0gZGF0YXRhYmxlUmVzdWx0cyQucGlwZShcbiAgICAgIHRhcChyZXN1bHRzID0+IHtcbiAgICAgICAgcXVlcnlSZWYuc2V0VmFyaWFibGVzKHtcbiAgICAgICAgICAuLi4ocmVzdWx0cy5jb250ZXh0IHx8IHt9KSxcbiAgICAgICAgICAuLi5yZXN1bHRzLnBhZ2VJbmZvLFxuICAgICAgICAgIC4uLihyZXN1bHRzLnNvcnRzLmxlbmd0aCA+IDAgPyB7IG9yZGVyOiByZXN1bHRzLnNvcnRzIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHJlc3VsdHMuZmlsdGVyPy52YXJpYWJsZXMgfHwge30pLFxuICAgICAgICAgIC4uLihyZXN1bHRzLmZpbHRlcj8uZmlsdGVyID8geyB3aGVyZTogcmVzdWx0cy5maWx0ZXIuZmlsdGVyIH0gOiB7fSlcbiAgICAgICAgfSBhcyBhbnkpXG4gICAgICB9KVxuICAgIClcblxuICAgIC8vIGNvbnN0IF9lbWl0U3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcblxuICAgIC8vIGNvbnN0IHF1ZXJ5VmFyc0NoYW5nZWRTdWIgPSBxdWVyeVZhcmlhYmxlc0NoYW5nZWQkLnBpcGUoXG4gICAgLy8gICBzd2l0Y2hNYXAoKCkgPT4gc3Vic2NyaWJlckNvdW50KHJvd3MsICdyb3dzJykpXG4gICAgLy8gKS5zdWJzY3JpYmUoc3Vic2NyaWJlcilcbiAgICBjb25zdCBxdWVyeVZhcnNDaGFuZ2VkU3ViID0gcXVlcnlWYXJpYWJsZXNDaGFuZ2VkJC5zdWJzY3JpYmUoKVxuXG4gICAgY29uc3QgX3N1YiA9IHN1YnNjcmliZXJDb3VudChyb3dzLCAncm93cycpLnN1YnNjcmliZShzdWJzY3JpYmVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHF1ZXJ5VmFyc0NoYW5nZWRTdWIudW5zdWJzY3JpYmUoKVxuICAgICAgX3N1Yi51bnN1YnNjcmliZSgpXG4gICAgfVxuICB9KVxuXG5cblxuXG4gIC8vIGNvbnN0IGNvbnRleHQkID0gZXh0cmFWYXJpYWJsZXMkLnBpcGUoXG4gIC8vICAgbWFwKF9leHRyYVZhcmlhYmxlcyA9PiB7XG4gIC8vICAgICBjb25zdCBjb250ZXh0OiBNYXBwZXJDb250ZXh0ID0ge1xuICAvLyAgICAgICBleHRyYVZhcmlhYmxlczogX2V4dHJhVmFyaWFibGVzXG4gIC8vICAgICB9XG5cbiAgLy8gICAgIHJldHVybiBjb250ZXh0XG4gIC8vICAgfSlcbiAgLy8gKVxuXG4gIC8vIGNvbnN0IGRhdGF0YWJsZU1hcHBlcnM6IERhdGF0YWJsZU1hcHBlcnMgPSB7XG4gIC8vICAgcGFnZUluZm86IG1hcFBhZ2VJbmZvLFxuICAvLyAgIHNvcnRzOiBzb3J0c01hcHBlcixcbiAgLy8gICBmaWx0ZXJzOiBmaWx0ZXJTdGF0ZU1hcHBlcnMsXG4gIC8vIH1cblxuICAvLyBjb25zdCBkYXRhdGFibGVSZXN1bHRzJCA9IF9jcmVhdGVEYXRhdGFibGVSZXN1bHRzT2JzZXJ2YWJsZShcbiAgLy8gICBkYXRhdGFibGUkLFxuICAvLyAgIGRhdGF0YWJsZU1hcHBlcnMsXG4gIC8vICAgY29udGV4dCQsXG4gIC8vIClcblxuICAvLyBjb25zdCBxdWVyeVZhcmlhYmxlc0NoYW5nZWQkID0gZGF0YXRhYmxlUmVzdWx0cyQucGlwZShcbiAgLy8gICB0YXAocmVzdWx0cyA9PiB7XG4gIC8vICAgICBxdWVyeVJlZi5zZXRWYXJpYWJsZXMoe1xuICAvLyAgICAgICAuLi4ocmVzdWx0cy5leHRyYVZhcmlhYmxlcyB8fCB7fSksXG4gIC8vICAgICAgIC4uLnJlc3VsdHMucGFnZUluZm8sXG4gIC8vICAgICAgIC4uLihyZXN1bHRzLnNvcnRzLmxlbmd0aCA+IDAgPyB7IG9yZGVyOiByZXN1bHRzLnNvcnRzIH0gOiB7fSksXG4gIC8vICAgICAgIC4uLihyZXN1bHRzLmZpbHRlckluZm8/LnZhcmlhYmxlcyB8fCB7fSksXG4gIC8vICAgICAgIC4uLihyZXN1bHRzLmZpbHRlckluZm8/LmZpbHRlciA/IHsgd2hlcmU6IHJlc3VsdHMuZmlsdGVySW5mby5maWx0ZXIgfSA6IHt9KVxuICAvLyAgICAgfSBhcyBhbnkpXG4gIC8vICAgfSlcbiAgLy8gKVxuXG5cblxuICAvLyBjb25zdCBoYW5kbGVRdWVyeUlucHV0cyA9ICBjb21iaW5lTGF0ZXN0KFsgZXh0cmFWYXJpYWJsZXMkLCBwYWdlSW5mbyQgXSkucGlwZShcbiAgLy8gICBzd2l0Y2hNYXAoKFsgX2V4dHJhVmFyaWFibGVzLCBwYWdlSW5mbyBdKSA9PiB7XG4gIC8vICAgICAvLyBjb25zb2xlLmxvZygnX2V4dHJhVmFyaWFibGVzLCBwYWdlSW5mbycsIF9leHRyYVZhcmlhYmxlcywgcGFnZUluZm8pXG4gIC8vICAgICBjb25zdCBjb250ZXh0OiBNYXBwZXJDb250ZXh0ID0ge1xuICAvLyAgICAgICBleHRyYVZhcmlhYmxlczogX2V4dHJhVmFyaWFibGVzXG4gIC8vICAgICB9XG5cblxuICAvLyAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoWyBzb3J0cyQsIGZpbHRlckluZm8kIF0pLnBpcGUoXG4gIC8vICAgICAgIC8vIG1hcCgoWyBzb3J0cywgZmlsdGVySW5mbyBdKSA9PiAoeyBleHRyYVZhcmlhYmxlczogX2V4dHJhVmFyaWFibGVzLCBwYWdlSW5mbywgc29ydHMsIGZpbHRlckluZm8gfSkpXG4gIC8vICAgICAgIG1hcCgoWyBzb3J0cywgZmlsdGVySW5mbyBdKSA9PiB7XG4gIC8vICAgICAgICAgLy8gY29uc29sZS5sb2coJ3NvcnRzLCBmaWx0ZXJJbmZvJywgc29ydHMsIGZpbHRlckluZm8pXG4gIC8vICAgICAgICAgcmV0dXJuIHsgZXh0cmFWYXJpYWJsZXM6IF9leHRyYVZhcmlhYmxlcywgcGFnZUluZm8sIHNvcnRzLCBmaWx0ZXJJbmZvIH1cbiAgLy8gICAgICAgfSlcbiAgLy8gICAgIClcbiAgLy8gICB9KSxcbiAgLy8gICB0YXAodiA9PiB7XG4gIC8vICAgICAvLyBjb25zb2xlLmxvZygnfn5+JywgdilcbiAgLy8gICAgIHF1ZXJ5UmVmLnNldFZhcmlhYmxlcyh7XG4gIC8vICAgICAgIC4uLih2LmV4dHJhVmFyaWFibGVzIHx8IHt9KSxcbiAgLy8gICAgICAgLi4udi5wYWdlSW5mbyxcbiAgLy8gICAgICAgLi4uKHYuc29ydHMubGVuZ3RoID4gMCA/IHsgb3JkZXI6IHYuc29ydHMgfSA6IHt9KSxcbiAgLy8gICAgICAgLi4uKHYuZmlsdGVySW5mbz8udmFyaWFibGVzIHx8IHt9KSxcbiAgLy8gICAgICAgLi4uKHYuZmlsdGVySW5mbz8uZmlsdGVyID8geyB3aGVyZTogdi5maWx0ZXJJbmZvLmZpbHRlciB9IDoge30pXG4gIC8vICAgICB9IGFzIGFueSlcbiAgLy8gICB9KVxuICAvLyApXG5cbiAgLy8gcmV0dXJuIGRlZmVyKCgpID0+IHtcbiAgLy8gICBjb25zdCBfZW1pdHRlZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KClcbiAgLy8gICBjb25zdCBoYW5kbGVyU3ViID0gaGFuZGxlUXVlcnlJbnB1dHMucGlwZShcbiAgLy8gICAgIC8vIHNraXAoMSlcbiAgLy8gICAvLyApLnN1YnNjcmliZSgoKSA9PiBfZW1pdHRlZC5uZXh0KCkpXG4gIC8vICAgKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAvLyAgICAgX2VtaXR0ZWQubmV4dCgpXG4gIC8vICAgfSlcbiAgLy8gICByZXR1cm4gX2VtaXR0ZWQucGlwZShcbiAgLy8gICAgIC8vIHRhcCh2ID0+IHtcbiAgLy8gICAgIC8vICAgY29uc29sZS5sb2coJ2VtaXR0ZWQnLCB2KVxuICAvLyAgICAgLy8gfSksXG4gIC8vICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAvLyAgICAgc3dpdGNoTWFwKCgpID0+IHN1YnNjcmliZXJDb3VudChyb3dzLCAncm93cycpKSxcbiAgLy8gICAgIC8vIHRhcCh2ID0+IHtcbiAgLy8gICAgIC8vICAgY29uc29sZS5sb2coJ2VtaXR0aW5nIHJvd3MnLCB2KVxuICAvLyAgICAgLy8gfSksXG4gIC8vICAgICBmaW5hbGl6ZSgoKSA9PiBoYW5kbGVyU3ViLnVuc3Vic2NyaWJlKCkpXG4gIC8vICAgKVxuICAvLyB9KS5waXBlKFxuICAvLyAgIC8vIHRhcCh2ID0+IHtcbiAgLy8gICAvLyAgIGNvbnNvbGUubG9nKCdyb3dzJywgdilcbiAgLy8gICAvLyB9KSxcbiAgLy8gICBjYXRjaEVycm9yKGVyciA9PiB7XG4gIC8vICAgICBjb25zb2xlLmVycm9yKGVycilcbiAgLy8gICAgIHJldHVybiBvZihbXSBhcyBUUm93W10pXG4gIC8vICAgfSksXG4gIC8vICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAvLyApXG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVTb3J0c09ic2VydmFibGUoZGF0YXRhYmxlJDogT2JzZXJ2YWJsZTxHcWxEYXRhdGFibGVBY2Nlc3NvciB8IHVuZGVmaW5lZD4pIHtcbiAgcmV0dXJuIGRhdGF0YWJsZSQucGlwZShcbiAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnc29ydHMgZ290IGR0JywgdikpLFxuICAgIHN3aXRjaE1hcChkdCA9PiBkdFxuICAgICAgPyBkdC5zb3J0LnBpcGUobWFwKHYgPT4gdi5zb3J0cyksIHN0YXJ0V2l0aChkdC5zb3J0cykpIC8vIC5waXBlKHRhcCh2ID0+IGNvbnNvbGUubG9nKCdzb3J0cyAxJywgdikpKVxuICAgICAgOiBvZihbXSkgLy8gLnBpcGUodGFwKHYgPT4gY29uc29sZS5sb2coJ3NvcnRzIDInLCB2KSkpXG4gICAgKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gIClcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZUZpbHRlclN0YXRlc09ic2VydmFibGUoZGF0YXRhYmxlJDogT2JzZXJ2YWJsZTxHcWxEYXRhdGFibGVBY2Nlc3NvciB8IHVuZGVmaW5lZD4pIHtcbiAgcmV0dXJuIGRhdGF0YWJsZSQucGlwZShcbiAgICAvLyB0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVycyBnb3QgZHQnLCB2KSksXG4gICAgc3dpdGNoTWFwKGR0ID0+IGR0XG4gICAgICA/IGR0LmZpbHRlclN0YXRlcyAvLyAucGlwZSh0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVyU3RhdGVzIDEnLCB2KSkpXG4gICAgICA6IG9mKFtdKSAvLyAucGlwZSh0YXAodiA9PiBjb25zb2xlLmxvZygnZmlsdGVyU3RhdGVzIDInLCB2KSkpXG4gICAgKSxcbiAgICAvLyBUT0RPOiBSZW1vdmUgd2hlbiB0aGUgZGF0YXRhYmxlIGZpeGVzIHRoZSBidWcgY2F1c2luZyBpdCB0byBlbWl0IG1vcmUgdGhhbiBpdCBzaG91bGQuXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHgsIHkpID0+IEpTT04uc3RyaW5naWZ5KHgpID09PSBKU09OLnN0cmluZ2lmeSh5KSksXG4gIClcbn1cblxuZnVuY3Rpb24gX2NyZWF0ZURhdGF0YWJsZVJlc3VsdHNPYnNlcnZhYmxlKFxuICBkYXRhdGFibGUkOiBPYnNlcnZhYmxlPEdxbERhdGF0YWJsZUFjY2Vzc29yIHwgdW5kZWZpbmVkPixcbiAgbWFwcGVyczogRGF0YXRhYmxlTWFwcGVycyxcbiAgY29udGV4dCQ6IE9ic2VydmFibGU8TWFwcGVyQ29udGV4dD4sXG4pOiBPYnNlcnZhYmxlPERhdGF0YWJsZVJlc3VsdHM+IHtcbiAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPERhdGF0YWJsZVJlc3VsdHM+KChzdWJzY3JpYmVyOiBTdWJzY3JpYmVyPERhdGF0YWJsZVJlc3VsdHM+KSA9PiB7XG4gICAgY29uc3QgZGF0YXRhYmxlU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PEdxbERhdGF0YWJsZUFjY2Vzc29yIHwgdW5kZWZpbmVkPigpXG5cbiAgICBjb25zdCBkdFN1YiA9IGRhdGF0YWJsZSQuc3Vic2NyaWJlKFxuICAgICAgZHQgPT4gZGF0YXRhYmxlU3ViamVjdC5uZXh0KGR0KSxcbiAgICAgIGVyciA9PiBkYXRhdGFibGVTdWJqZWN0LmVycm9yKGVyciksXG4gICAgICAoKSA9PiBkYXRhdGFibGVTdWJqZWN0LmNvbXBsZXRlKClcbiAgICApXG5cbiAgICBjb25zdCBjdHhTdWIgPSBjb250ZXh0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKGNvbnRleHQgPT4ge1xuXG4gICAgICAgIC8vIFRPRE86IERlY2lkZSBpZiB0aGUgZGlzYWJsZWQgcGFnaW5nIGZlYXR1cmUgd2lsbCBiZSByZWltcGxlbWVudGVkIGluIGEgd2F5XG4gICAgICAgIC8vIHRoYXQgaXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaGVyZS4gYF9pc1BhZ2luZ0Rpc2FibGVkKHF1ZXJ5UmVmKWBcbiAgICAgICAgY29uc3QgcGFnZUluZm8kID0gY3JlYXRlUGFnZUluZm9PYnNlcnZhYmxlKGRhdGF0YWJsZSQpLnBpcGUoXG4gICAgICAgICAgbWFwKGluZm8gPT4gbWFwcGVycy5wYWdlSW5mbyhpbmZvKSlcbiAgICAgICAgKVxuXG4gICAgICAgIGNvbnN0IHNvcnRzJCA9IF9jcmVhdGVTb3J0c09ic2VydmFibGUoZGF0YXRhYmxlJCkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAobSA9PiB3cmFwSW50b09ic2VydmFibGUobWFwcGVycy5zb3J0cyhtLCBjb250ZXh0KSkpXG4gICAgICAgIClcblxuICAgICAgICBjb25zdCBmaWx0ZXJJbmZvJCA9IF9jcmVhdGVGaWx0ZXJTdGF0ZXNPYnNlcnZhYmxlKGRhdGF0YWJsZSQpLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKHggPT4gbWFwRmlsdGVyU3RhdGVzKHgsIG1hcHBlcnMuZmlsdGVycywgY29udGV4dCkpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgIHBhZ2VJbmZvJCxcbiAgICAgICAgICBzb3J0cyQsXG4gICAgICAgICAgZmlsdGVySW5mbyQsXG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgbWFwKChbIHBhZ2VJbmZvLCBzb3J0cywgZmlsdGVySW5mbyBdKSA9PiAoe1xuICAgICAgICAgICAgcGFnZUluZm8sXG4gICAgICAgICAgICBzb3J0cyxcbiAgICAgICAgICAgIGZpbHRlcjogZmlsdGVySW5mbyxcbiAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHRcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuXG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKHN1YnNjcmliZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZHRTdWIudW5zdWJzY3JpYmUoKVxuICAgICAgY3R4U3ViLnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH0pXG59XG5cbi8vIGZ1bmN0aW9uIF9pc1BhZ2luZ0Rpc2FibGVkPFREYXRhLCBUVmFyaWFibGVzLCBUUm93PihxdWVyeVJlZjogRGF0YXRhYmxlR3JhcGhRTFF1ZXJ5UmVmPFREYXRhLCBUVmFyaWFibGVzLCBUUm93Pik6IGJvb2xlYW4ge1xuLy8gICByZXR1cm4gcXVlcnlSZWYuZ2V0UXVlcnlQcm9jZXNzaW5nQ29uZmlnKCk/LmRpc2FibGVQYWdpbmcgPz8gZmFsc2Vcbi8vIH1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const DEFAULT_PAGE_SIZE = 20;
|
|
2
|
+
export function getPageInfo(datatable, defaultPageSize = DEFAULT_PAGE_SIZE) {
|
|
3
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
4
|
+
return {
|
|
5
|
+
offset: (_b = (_a = datatable === null || datatable === void 0 ? void 0 : datatable.ngxDatatable) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0,
|
|
6
|
+
pageSize: (_d = (_c = datatable === null || datatable === void 0 ? void 0 : datatable.ngxDatatable) === null || _c === void 0 ? void 0 : _c.pageSize) !== null && _d !== void 0 ? _d : defaultPageSize,
|
|
7
|
+
limit: (_e = datatable === null || datatable === void 0 ? void 0 : datatable.ngxDatatable) === null || _e === void 0 ? void 0 : _e.limit,
|
|
8
|
+
count: (_g = (_f = datatable === null || datatable === void 0 ? void 0 : datatable.ngxDatatable) === null || _f === void 0 ? void 0 : _f.count) !== null && _g !== void 0 ? _g : 0
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBhZ2UtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbW1vbi9ncmFwaHFsL2RhdGF0YWJsZS9nZXQtcGFnZS1pbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQTtBQUVuQyxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFrRCxFQUNsRCxrQkFBMEIsaUJBQWlCOztJQUUzQyxPQUFPO1FBQ0wsTUFBTSxFQUFFLE1BQUEsTUFBQSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsWUFBWSwwQ0FBRSxNQUFNLG1DQUFJLENBQUM7UUFDNUMsUUFBUSxFQUFFLE1BQUEsTUFBQSxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLENBQUUsWUFBWSwwQ0FBRSxRQUFRLG1DQUFJLGVBQWU7UUFDOUQsS0FBSyxFQUFFLE1BQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLFlBQVksMENBQUUsS0FBSztRQUNyQyxLQUFLLEVBQUUsTUFBQSxNQUFBLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxZQUFZLDBDQUFFLEtBQUssbUNBQUksQ0FBQztLQUMzQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRoZVNlYW1QYWdlSW5mbyB9IGZyb20gJ0B0aGVzZWFtL3VpLWNvbW1vbi9kYXRhdGFibGUnXG5cbmltcG9ydCB7IEdxbERhdGF0YWJsZUFjY2Vzc29yIH0gZnJvbSAnLi4vbW9kZWxzL2dxbC1kYXRhdGFibGUtYWNjZXNzb3InXG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BBR0VfU0laRSA9IDIwXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWdlSW5mbyhcbiAgZGF0YXRhYmxlOiBHcWxEYXRhdGFibGVBY2Nlc3NvciB8IG51bGwgfCB1bmRlZmluZWQsXG4gIGRlZmF1bHRQYWdlU2l6ZTogbnVtYmVyID0gREVGQVVMVF9QQUdFX1NJWkVcbik6IFRoZVNlYW1QYWdlSW5mbyB7XG4gIHJldHVybiB7XG4gICAgb2Zmc2V0OiBkYXRhdGFibGU/Lm5neERhdGF0YWJsZT8ub2Zmc2V0ID8/IDAsXG4gICAgcGFnZVNpemU6IGRhdGF0YWJsZT8ubmd4RGF0YXRhYmxlPy5wYWdlU2l6ZSA/PyBkZWZhdWx0UGFnZVNpemUsXG4gICAgbGltaXQ6IGRhdGF0YWJsZT8ubmd4RGF0YXRhYmxlPy5saW1pdCxcbiAgICBjb3VudDogZGF0YXRhYmxlPy5uZ3hEYXRhdGFibGU/LmNvdW50ID8/IDBcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './datatable-helpers';
|
|
2
|
+
export * from './datatable-graphql.service';
|
|
3
|
+
export * from './datatable-graphql-query-ref';
|
|
4
|
+
export * from './map-filter-states';
|
|
5
|
+
export * from './mapper-context';
|
|
6
|
+
export * from './get-page-info';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1jb21tb24vZ3JhcGhxbC9kYXRhdGFibGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLDZCQUE2QixDQUFBO0FBQzNDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsaUJBQWlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGF0YWJsZS1oZWxwZXJzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtZ3JhcGhxbC5zZXJ2aWNlJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhdGFibGUtZ3JhcGhxbC1xdWVyeS1yZWYnXG5leHBvcnQgKiBmcm9tICcuL21hcC1maWx0ZXItc3RhdGVzJ1xuZXhwb3J0ICogZnJvbSAnLi9tYXBwZXItY29udGV4dCdcbmV4cG9ydCAqIGZyb20gJy4vZ2V0LXBhZ2UtaW5mbydcbiJdfQ==
|