@revolist/revogrid 3.6.3 → 3.6.4
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/custom-element/_baseIteratee.js +3 -1
- package/custom-element/_baseIteratee.js.map +1 -0
- package/custom-element/columnService.js +6 -4
- package/custom-element/columnService.js.map +1 -0
- package/custom-element/consts.js +3 -1
- package/custom-element/consts.js.map +1 -0
- package/custom-element/data.store.js +55 -33
- package/custom-element/data.store.js.map +1 -0
- package/custom-element/debounce.js +3 -1
- package/custom-element/debounce.js.map +1 -0
- package/custom-element/dimension.helpers.js +3 -1
- package/custom-element/dimension.helpers.js.map +1 -0
- package/custom-element/each.js +2 -0
- package/custom-element/each.js.map +1 -0
- package/custom-element/filter.button.js +2 -0
- package/custom-element/filter.button.js.map +1 -0
- package/custom-element/identity.js +2 -0
- package/custom-element/identity.js.map +1 -0
- package/custom-element/index.d.ts +9 -16
- package/custom-element/index.js +4 -15
- package/custom-element/index.js.map +1 -0
- package/custom-element/isSymbol.js +3 -1
- package/custom-element/isSymbol.js.map +1 -0
- package/custom-element/keys.js +3 -1
- package/custom-element/keys.js.map +1 -0
- package/custom-element/localScrollService.js +2 -0
- package/custom-element/localScrollService.js.map +1 -0
- package/custom-element/resize-observer.js +5 -3
- package/custom-element/resize-observer.js.map +1 -0
- package/custom-element/revo-grid.js +39 -159
- package/custom-element/revo-grid.js.map +1 -0
- package/custom-element/revogr-clipboard.js +4 -4
- package/custom-element/revogr-clipboard.js.map +1 -0
- package/custom-element/revogr-data.js +2 -0
- package/custom-element/revogr-data.js.map +1 -0
- package/custom-element/revogr-data2.js +14 -3
- package/custom-element/revogr-data2.js.map +1 -0
- package/custom-element/revogr-edit.js +2 -0
- package/custom-element/revogr-edit.js.map +1 -0
- package/custom-element/revogr-edit2.js +7 -3
- package/custom-element/revogr-edit2.js.map +1 -0
- package/custom-element/revogr-filter-panel.js +10 -6
- package/custom-element/revogr-filter-panel.js.map +1 -0
- package/custom-element/revogr-focus.js +2 -0
- package/custom-element/revogr-focus.js.map +1 -0
- package/custom-element/revogr-focus2.js +8 -2
- package/custom-element/revogr-focus2.js.map +1 -0
- package/custom-element/revogr-header.js +2 -0
- package/custom-element/revogr-header.js.map +1 -0
- package/custom-element/revogr-header2.js +11 -3
- package/custom-element/revogr-header2.js.map +1 -0
- package/custom-element/revogr-order-editor.js +2 -0
- package/custom-element/revogr-order-editor.js.map +1 -0
- package/custom-element/revogr-order-editor2.js +8 -3
- package/custom-element/revogr-order-editor2.js.map +1 -0
- package/custom-element/revogr-overlay-selection.js +2 -0
- package/custom-element/revogr-overlay-selection.js.map +1 -0
- package/custom-element/revogr-overlay-selection2.js +15 -3
- package/custom-element/revogr-overlay-selection2.js.map +1 -0
- package/custom-element/revogr-row-headers.js +2 -0
- package/custom-element/revogr-row-headers.js.map +1 -0
- package/custom-element/revogr-row-headers2.js +9 -2
- package/custom-element/revogr-row-headers2.js.map +1 -0
- package/custom-element/revogr-scroll-virtual.js +2 -0
- package/custom-element/revogr-scroll-virtual.js.map +1 -0
- package/custom-element/revogr-scroll-virtual2.js +5 -2
- package/custom-element/revogr-scroll-virtual2.js.map +1 -0
- package/custom-element/revogr-temp-range.js +2 -0
- package/custom-element/revogr-temp-range.js.map +1 -0
- package/custom-element/revogr-temp-range2.js +8 -4
- package/custom-element/revogr-temp-range2.js.map +1 -0
- package/custom-element/revogr-viewport-scroll.js +2 -0
- package/custom-element/revogr-viewport-scroll.js.map +1 -0
- package/custom-element/revogr-viewport-scroll2.js +6 -11
- package/custom-element/revogr-viewport-scroll2.js.map +1 -0
- package/custom-element/selection.utils.js +2 -0
- package/custom-element/selection.utils.js.map +1 -0
- package/custom-element/themeService.js +65 -0
- package/custom-element/themeService.js.map +1 -0
- package/custom-element/toInteger.js +2 -0
- package/custom-element/toInteger.js.map +1 -0
- package/custom-element/toNumber.js +3 -1
- package/custom-element/toNumber.js.map +1 -0
- package/custom-element/utils.js +2 -0
- package/custom-element/utils.js.map +1 -0
- package/dist/cjs/{debounce-6cea2774.js → debounce-25dce8a1.js} +3 -1
- package/dist/cjs/debounce-25dce8a1.js.map +1 -0
- package/dist/cjs/{index-cb904e00.js → index-5f3dfe40.js} +577 -283
- package/dist/cjs/index-5f3dfe40.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/index.cjs.js.map +1 -0
- package/dist/cjs/loader.cjs.js +5 -16
- package/dist/cjs/loader.cjs.js.map +1 -0
- package/dist/cjs/{resize-observer-bf327d6a.js → resize-observer-7f159b88.js} +5 -3
- package/dist/cjs/resize-observer-7f159b88.js.map +1 -0
- package/dist/cjs/revo-grid.cjs.js +11 -59
- package/dist/cjs/revo-grid.cjs.js.map +1 -0
- package/dist/cjs/revo-grid_11.cjs.entry.js +153 -149
- package/dist/cjs/revo-grid_11.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-clipboard.cjs.entry.js +4 -3
- package/dist/cjs/revogr-clipboard.cjs.entry.js.map +1 -0
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +11 -6
- package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -0
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/button/button.js +1 -0
- package/dist/collection/components/button/button.js.map +1 -0
- package/dist/collection/components/clipboard/revogr-clipboard.js +82 -80
- package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -0
- package/dist/collection/components/data/cellRenderer.js +2 -2
- package/dist/collection/components/data/cellRenderer.js.map +1 -0
- package/dist/collection/components/data/columnService.js +4 -3
- package/dist/collection/components/data/columnService.js.map +1 -0
- package/dist/collection/components/data/revogr-data.js +240 -219
- package/dist/collection/components/data/revogr-data.js.map +1 -0
- package/dist/collection/components/data/rowRenderer.js +1 -0
- package/dist/collection/components/data/rowRenderer.js.map +1 -0
- package/dist/collection/components/header/headerCellRenderer.js +2 -3
- package/dist/collection/components/header/headerCellRenderer.js.map +1 -0
- package/dist/collection/components/header/headerRenderer.js +2 -3
- package/dist/collection/components/header/headerRenderer.js.map +1 -0
- package/dist/collection/components/header/revogr-header.js +244 -229
- package/dist/collection/components/header/revogr-header.js.map +1 -0
- package/dist/collection/components/order/orderRenderer.js +2 -5
- package/dist/collection/components/order/orderRenderer.js.map +1 -0
- package/dist/collection/components/order/revogr-order-editor.js +257 -248
- package/dist/collection/components/order/revogr-order-editor.js.map +1 -0
- package/dist/collection/components/order/rowOrderService.js +1 -0
- package/dist/collection/components/order/rowOrderService.js.map +1 -0
- package/dist/collection/components/overlay/autofill.service.js +1 -0
- package/dist/collection/components/overlay/autofill.service.js.map +1 -0
- package/dist/collection/components/overlay/clipboard.service.js +1 -0
- package/dist/collection/components/overlay/clipboard.service.js.map +1 -0
- package/dist/collection/components/overlay/editors/edit.utils.js +1 -0
- package/dist/collection/components/overlay/editors/edit.utils.js.map +1 -0
- package/dist/collection/components/overlay/editors/text.js +1 -0
- package/dist/collection/components/overlay/editors/text.js.map +1 -0
- package/dist/collection/components/overlay/keyboard.service.js +1 -0
- package/dist/collection/components/overlay/keyboard.service.js.map +1 -0
- package/dist/collection/components/overlay/revogr-edit.js +106 -94
- package/dist/collection/components/overlay/revogr-edit.js.map +1 -0
- package/dist/collection/components/overlay/revogr-overlay-selection.js +488 -466
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -0
- package/dist/collection/components/overlay/selection.utils.js +1 -0
- package/dist/collection/components/overlay/selection.utils.js.map +1 -0
- package/dist/collection/components/revo-grid/revo-grid-style.css +7 -13
- package/dist/collection/components/revo-grid/revo-grid.js +1565 -1618
- package/dist/collection/components/revo-grid/revo-grid.js.map +1 -0
- package/dist/collection/components/revo-grid/viewport.helpers.js +1 -0
- package/dist/collection/components/revo-grid/viewport.helpers.js.map +1 -0
- package/dist/collection/components/revo-grid/viewport.interfaces.js +1 -3
- package/dist/collection/components/revo-grid/viewport.interfaces.js.map +1 -0
- package/dist/collection/components/revo-grid/viewport.js +2 -5
- package/dist/collection/components/revo-grid/viewport.js.map +1 -0
- package/dist/collection/components/revo-grid/viewport.resize.service.js +1 -0
- package/dist/collection/components/revo-grid/viewport.resize.service.js.map +1 -0
- package/dist/collection/components/revo-grid/viewport.scrolling.service.js +1 -0
- package/dist/collection/components/revo-grid/viewport.scrolling.service.js.map +1 -0
- package/dist/collection/components/revo-grid/viewport.section.js +2 -4
- package/dist/collection/components/revo-grid/viewport.section.js.map +1 -0
- package/dist/collection/components/revo-grid/viewport.service.js +8 -2
- package/dist/collection/components/revo-grid/viewport.service.js.map +1 -0
- package/dist/collection/components/rowHeaders/revogr-row-headers.js +151 -142
- package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -0
- package/dist/collection/components/rowHeaders/row-header-render.js +1 -0
- package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -0
- package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +2 -4
- package/dist/collection/components/scroll/revogr-viewport-scroll.js +161 -164
- package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -0
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +147 -135
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -0
- package/dist/collection/components/selection-focus/revogr-focus.js +141 -125
- package/dist/collection/components/selection-focus/revogr-focus.js.map +1 -0
- package/dist/collection/components/selection-temp-range/revogr-temp-range-style.css +1 -1
- package/dist/collection/components/selection-temp-range/revogr-temp-range.js +83 -74
- package/dist/collection/components/selection-temp-range/revogr-temp-range.js.map +1 -0
- package/dist/collection/global/global.js +1 -0
- package/dist/collection/global/global.js.map +1 -0
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/collection/plugins/autoSizeColumn.js +1 -0
- package/dist/collection/plugins/autoSizeColumn.js.map +1 -0
- package/dist/collection/plugins/basePlugin.js +1 -0
- package/dist/collection/plugins/basePlugin.js.map +1 -0
- package/dist/collection/plugins/dispatcher.js +1 -0
- package/dist/collection/plugins/dispatcher.js.map +1 -0
- package/dist/collection/plugins/export/csv.js +1 -0
- package/dist/collection/plugins/export/csv.js.map +1 -0
- package/dist/collection/plugins/export/export.plugin.js +1 -0
- package/dist/collection/plugins/export/export.plugin.js.map +1 -0
- package/dist/collection/plugins/export/types.js +1 -3
- package/dist/collection/plugins/export/types.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/equal.js +1 -0
- package/dist/collection/plugins/filter/conditions/equal.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThan.js +1 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +1 -0
- package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/lessThan.js +1 -0
- package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +1 -0
- package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/set.js +1 -0
- package/dist/collection/plugins/filter/conditions/set.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/string/beginswith.js +1 -0
- package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +1 -0
- package/dist/collection/plugins/filter/conditions/string/contains.js +1 -0
- package/dist/collection/plugins/filter/conditions/string/contains.js.map +1 -0
- package/dist/collection/plugins/filter/filter.button.js +6 -11
- package/dist/collection/plugins/filter/filter.button.js.map +1 -0
- package/dist/collection/plugins/filter/filter.plugin.js +1 -0
- package/dist/collection/plugins/filter/filter.plugin.js.map +1 -0
- package/dist/collection/plugins/filter/filter.pop.js +239 -234
- package/dist/collection/plugins/filter/filter.pop.js.map +1 -0
- package/dist/collection/plugins/filter/filter.service.js +1 -0
- package/dist/collection/plugins/filter/filter.service.js.map +1 -0
- package/dist/collection/plugins/filter/filter.style.css +2 -3
- package/dist/collection/plugins/filter/filter.types.js +1 -3
- package/dist/collection/plugins/filter/filter.types.js.map +1 -0
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +1 -0
- package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -0
- package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +1 -0
- package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +1 -0
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +1 -0
- package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.const.js +1 -0
- package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +6 -5
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +3 -7
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.row.types.js +1 -3
- package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.service.js +1 -0
- package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -0
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +1 -0
- package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -0
- package/dist/collection/plugins/moveColumn/columnDragPlugin.js +1 -0
- package/dist/collection/plugins/moveColumn/columnDragPlugin.js.map +1 -0
- package/dist/collection/plugins/moveColumn/columnOrderHandler.js +1 -0
- package/dist/collection/plugins/moveColumn/columnOrderHandler.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.plugin.js +4 -3
- package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -0
- package/dist/collection/plugins/sorting/sorting.sign.js +1 -0
- package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -0
- package/dist/collection/plugins/stretchPlugin.js +1 -0
- package/dist/collection/plugins/stretchPlugin.js.map +1 -0
- package/dist/collection/plugins/trimmed/trimmed.plugin.js +1 -0
- package/dist/collection/plugins/trimmed/trimmed.plugin.js.map +1 -0
- package/dist/collection/services/cell.helpers.js +1 -0
- package/dist/collection/services/cell.helpers.js.map +1 -0
- package/dist/collection/services/column.data.provider.js +8 -7
- package/dist/collection/services/column.data.provider.js.map +1 -0
- package/dist/collection/services/data.provider.js +1 -0
- package/dist/collection/services/data.provider.js.map +1 -0
- package/dist/collection/services/dimension.provider.js +1 -0
- package/dist/collection/services/dimension.provider.js.map +1 -0
- package/dist/collection/services/localScrollService.js +1 -0
- package/dist/collection/services/localScrollService.js.map +1 -0
- package/dist/collection/services/resizable.directive.js +2 -3
- package/dist/collection/services/resizable.directive.js.map +1 -0
- package/dist/collection/services/selection.store.connector.js +1 -0
- package/dist/collection/services/selection.store.connector.js.map +1 -0
- package/dist/collection/services/viewport.provider.js +1 -0
- package/dist/collection/services/viewport.provider.js.map +1 -0
- package/dist/collection/store/dataSource/data.proxy.js +1 -0
- package/dist/collection/store/dataSource/data.proxy.js.map +1 -0
- package/dist/collection/store/dataSource/data.store.js +4 -3
- package/dist/collection/store/dataSource/data.store.js.map +1 -0
- package/dist/collection/store/dimension/dimension.helpers.js +1 -0
- package/dist/collection/store/dimension/dimension.helpers.js.map +1 -0
- package/dist/collection/store/dimension/dimension.store.js +5 -3
- package/dist/collection/store/dimension/dimension.store.js.map +1 -0
- package/dist/collection/store/selection/selection.helpers.js +1 -0
- package/dist/collection/store/selection/selection.helpers.js.map +1 -0
- package/dist/collection/store/selection/selection.store.js +1 -0
- package/dist/collection/store/selection/selection.store.js.map +1 -0
- package/dist/collection/store/selection/selection.store.service.js +1 -0
- package/dist/collection/store/selection/selection.store.service.js.map +1 -0
- package/dist/collection/store/storeTypes.js +1 -0
- package/dist/collection/store/storeTypes.js.map +1 -0
- package/dist/collection/store/viewPort/viewport.helpers.js +1 -0
- package/dist/collection/store/viewPort/viewport.helpers.js.map +1 -0
- package/dist/collection/store/viewPort/viewport.store.js +1 -0
- package/dist/collection/store/viewPort/viewport.store.js.map +1 -0
- package/dist/collection/themeManager/theme.compact.js +1 -0
- package/dist/collection/themeManager/theme.compact.js.map +1 -0
- package/dist/collection/themeManager/theme.default.js +1 -0
- package/dist/collection/themeManager/theme.default.js.map +1 -0
- package/dist/collection/themeManager/theme.material.js +1 -0
- package/dist/collection/themeManager/theme.material.js.map +1 -0
- package/dist/collection/themeManager/themeService.js +6 -5
- package/dist/collection/themeManager/themeService.js.map +1 -0
- package/dist/collection/utils/closestPolifill.js +1 -0
- package/dist/collection/utils/closestPolifill.js.map +1 -0
- package/dist/collection/utils/consts.js +1 -0
- package/dist/collection/utils/consts.js.map +1 -0
- package/dist/collection/utils/generateAlphabetHeader.js +1 -0
- package/dist/collection/utils/generateAlphabetHeader.js.map +1 -0
- package/dist/collection/utils/keyCodes.js +1 -0
- package/dist/collection/utils/keyCodes.js.map +1 -0
- package/dist/collection/utils/keyCodes.utils.js +1 -0
- package/dist/collection/utils/keyCodes.utils.js.map +1 -0
- package/dist/collection/utils/platform.js +1 -0
- package/dist/collection/utils/platform.js.map +1 -0
- package/dist/collection/utils/resizeObserver.js +1 -0
- package/dist/collection/utils/resizeObserver.js.map +1 -0
- package/dist/collection/utils/store.utils.js +1 -0
- package/dist/collection/utils/store.utils.js.map +1 -0
- package/dist/collection/utils/utils.js +1 -0
- package/dist/collection/utils/utils.js.map +1 -0
- package/dist/esm/{debounce-e4e6dd45.js → debounce-7221834a.js} +3 -1
- package/dist/esm/debounce-7221834a.js.map +1 -0
- package/dist/esm/{index-6f753b3c.js → index-068eebfc.js} +577 -279
- package/dist/esm/index-068eebfc.js.map +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/loader.js +5 -16
- package/dist/esm/loader.js.map +1 -0
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/esm/{resize-observer-00c48d78.js → resize-observer-d817c4b6.js} +5 -3
- package/dist/esm/resize-observer-d817c4b6.js.map +1 -0
- package/dist/esm/revo-grid.js +9 -60
- package/dist/esm/revo-grid.js.map +1 -0
- package/dist/esm/revo-grid_11.entry.js +153 -149
- package/dist/esm/revo-grid_11.entry.js.map +1 -0
- package/dist/esm/revogr-clipboard.entry.js +4 -3
- package/dist/esm/revogr-clipboard.entry.js.map +1 -0
- package/dist/esm/revogr-filter-panel.entry.js +11 -6
- package/dist/esm/revogr-filter-panel.entry.js.map +1 -0
- package/dist/esm-es5/{debounce-e4e6dd45.js → debounce-7221834a.js} +2 -1
- package/dist/esm-es5/debounce-7221834a.js.map +1 -0
- package/dist/esm-es5/index-068eebfc.js +5 -0
- package/dist/esm-es5/index-068eebfc.js.map +1 -0
- package/dist/esm-es5/index.js +1 -0
- package/dist/esm-es5/index.js.map +1 -0
- package/dist/esm-es5/loader.js +2 -1
- package/dist/esm-es5/loader.js.map +1 -0
- package/dist/esm-es5/{resize-observer-00c48d78.js → resize-observer-d817c4b6.js} +2 -1
- package/dist/esm-es5/resize-observer-d817c4b6.js.map +1 -0
- package/dist/esm-es5/revo-grid.js +2 -1
- package/dist/esm-es5/revo-grid.js.map +1 -0
- package/dist/esm-es5/revo-grid_11.entry.js +3 -2
- package/dist/esm-es5/revo-grid_11.entry.js.map +1 -0
- package/dist/esm-es5/revogr-clipboard.entry.js +3 -2
- package/dist/esm-es5/revogr-clipboard.entry.js.map +1 -0
- package/dist/esm-es5/revogr-filter-panel.entry.js +3 -2
- package/dist/esm-es5/revogr-filter-panel.entry.js.map +1 -0
- package/dist/revo-grid/debounce-7221834a.js +5 -0
- package/dist/revo-grid/debounce-7221834a.js.map +1 -0
- package/dist/revo-grid/{debounce-5a33c710.system.js → debounce-fa358fc7.system.js} +2 -1
- package/dist/revo-grid/debounce-fa358fc7.system.js.map +1 -0
- package/dist/revo-grid/index-068eebfc.js +6 -0
- package/dist/revo-grid/index-068eebfc.js.map +1 -0
- package/dist/revo-grid/index-36847b63.system.js +6 -0
- package/dist/revo-grid/index-36847b63.system.js.map +1 -0
- package/dist/revo-grid/index.esm.js +2 -0
- package/dist/revo-grid/index.esm.js.map +1 -0
- package/dist/revo-grid/index.system.js +2 -1
- package/dist/revo-grid/index.system.js.map +1 -0
- package/dist/revo-grid/{resize-observer-8af0bc0e.system.js → resize-observer-64c845eb.system.js} +2 -1
- package/dist/revo-grid/resize-observer-64c845eb.system.js.map +1 -0
- package/dist/revo-grid/resize-observer-d817c4b6.js +5 -0
- package/dist/revo-grid/resize-observer-d817c4b6.js.map +1 -0
- package/dist/revo-grid/revo-grid.esm.js +2 -1
- package/dist/revo-grid/revo-grid.esm.js.map +1 -0
- package/dist/revo-grid/revo-grid.js +0 -2
- package/dist/revo-grid/revo-grid.system.js +2 -1
- package/dist/revo-grid/revo-grid.system.js.map +1 -0
- package/dist/revo-grid/revo-grid_11.entry.js +2 -1
- package/dist/revo-grid/revo-grid_11.entry.js.map +1 -0
- package/dist/revo-grid/revo-grid_11.system.entry.js +3 -2
- package/dist/revo-grid/revo-grid_11.system.entry.js.map +1 -0
- package/dist/revo-grid/revogr-clipboard.entry.js +2 -1
- package/dist/revo-grid/revogr-clipboard.entry.js.map +1 -0
- package/dist/revo-grid/revogr-clipboard.system.entry.js +3 -2
- package/dist/revo-grid/revogr-clipboard.system.entry.js.map +1 -0
- package/dist/revo-grid/revogr-filter-panel.entry.js +2 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -0
- package/dist/revo-grid/revogr-filter-panel.system.entry.js +3 -2
- package/dist/revo-grid/revogr-filter-panel.system.entry.js.map +1 -0
- package/dist/types/components/data/cellRenderer.d.ts +1 -1
- package/dist/types/components/data/columnService.d.ts +4 -4
- package/dist/types/components/header/headerCellRenderer.d.ts +1 -1
- package/dist/types/components/header/headerRenderer.d.ts +1 -1
- package/dist/types/components/order/orderRenderer.d.ts +1 -1
- package/dist/types/components/order/rowOrderService.d.ts +1 -1
- package/dist/types/components/overlay/autofill.service.d.ts +1 -1
- package/dist/types/components/overlay/clipboard.service.d.ts +1 -1
- package/dist/types/components/overlay/editors/text.d.ts +1 -1
- package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
- package/dist/types/components/overlay/selection.utils.d.ts +1 -1
- package/dist/types/components/revo-grid/viewport.d.ts +1 -1
- package/dist/types/components/revo-grid/viewport.interfaces.d.ts +5 -5
- package/dist/types/components/revo-grid/viewport.scrolling.service.d.ts +1 -1
- package/dist/types/components/revo-grid/viewport.section.d.ts +1 -1
- package/dist/types/components/revo-grid/viewport.service.d.ts +6 -3
- package/dist/types/components/rowHeaders/row-header-render.d.ts +1 -1
- package/dist/types/components.d.ts +26 -0
- package/dist/types/plugins/autoSizeColumn.d.ts +1 -1
- package/dist/types/plugins/dispatcher.d.ts +1 -1
- package/dist/types/plugins/export/csv.d.ts +1 -1
- package/dist/types/plugins/export/export.plugin.d.ts +1 -1
- package/dist/types/plugins/export/types.d.ts +2 -2
- package/dist/types/plugins/filter/filter.button.d.ts +1 -1
- package/dist/types/plugins/filter/filter.plugin.d.ts +6 -6
- package/dist/types/plugins/filter/filter.pop.d.ts +4 -4
- package/dist/types/plugins/filter/filter.service.d.ts +1 -1
- package/dist/types/plugins/filter/filter.types.d.ts +5 -5
- package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +1 -1
- package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +1 -1
- package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +1 -1
- package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +1 -1
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +5 -5
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +1 -1
- package/dist/types/plugins/moveColumn/columnDragPlugin.d.ts +5 -5
- package/dist/types/plugins/sorting/sorting.plugin.d.ts +1 -1
- package/dist/types/plugins/sorting/sorting.sign.d.ts +1 -1
- package/dist/types/plugins/trimmed/trimmed.plugin.d.ts +2 -2
- package/dist/types/services/column.data.provider.d.ts +4 -4
- package/dist/types/services/data.provider.d.ts +1 -1
- package/dist/types/services/dimension.provider.d.ts +2 -2
- package/dist/types/services/localScrollService.d.ts +1 -1
- package/dist/types/services/resizable.directive.d.ts +2 -2
- package/dist/types/services/selection.store.connector.d.ts +2 -2
- package/dist/types/services/viewport.provider.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +91 -19
- package/dist/types/store/dataSource/data.proxy.d.ts +1 -1
- package/dist/types/store/dataSource/data.store.d.ts +4 -4
- package/dist/types/store/dimension/dimension.helpers.d.ts +3 -3
- package/dist/types/store/selection/selection.store.d.ts +1 -1
- package/dist/types/store/viewPort/viewport.helpers.d.ts +2 -2
- package/loader/index.d.ts +9 -0
- package/loader/package.json +1 -0
- package/package.json +1 -1
- package/dist/cjs/css-shim-9f5bc84d.js +0 -9
- package/dist/cjs/dom-fcb646f0.js +0 -78
- package/dist/esm/css-shim-e1e1ea5e.js +0 -7
- package/dist/esm/dom-21bd1807.js +0 -76
- package/dist/esm-es5/css-shim-e1e1ea5e.js +0 -4
- package/dist/esm-es5/dom-21bd1807.js +0 -24
- package/dist/esm-es5/index-6f753b3c.js +0 -4
- package/dist/revo-grid/css-shim-bcf89cc0.system.js +0 -4
- package/dist/revo-grid/css-shim-e1e1ea5e.js +0 -4
- package/dist/revo-grid/debounce-726bdadb.js +0 -4
- package/dist/revo-grid/dom-21bd1807.js +0 -22
- package/dist/revo-grid/dom-726246e2.system.js +0 -24
- package/dist/revo-grid/index-f14b41a0.system.js +0 -5
- package/dist/revo-grid/index-f30d1de1.js +0 -5
- package/dist/revo-grid/resize-observer-00c48d78.js +0 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnGroupsRenderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/columnGroupsRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AACzC,OAAO,SAAS,MAAM,kBAAkB,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAWxD,MAAM,oBAAoB,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAS,EAAW,EAAE;EAClH,uBAAuB;EACvB,MAAM,QAAQ,GAAY,EAAE,CAAC;EAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;IAC9B,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;MACb,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;QAC3B,4BAA4B;QAC5B,yDAAyD;QACzD,MAAM,oBAAoB,GAAuB,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,YAAY,CAAC,EAAE,CAAC,KAAK,QAAQ,CAAC,CAAC;QAClH,IAAI,oBAAoB,GAAG,CAAC,CAAC,EAAE;UAC7B,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,mBAAmB;UAC1F,MAAM,eAAe,GAAG,eAAe,GAAG,oBAAoB,CAAC,CAAC,8BAA8B;UAC9F,MAAM,aAAa,GAAG,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,6BAA6B;UAE3F,cAAc;UACd,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC;UACvE,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC;UACjE,QAAQ,CAAC,IAAI,CACX,EAAC,mBAAmB,IAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,GAAI,CACnK,CAAC;SACH;OACF;KACF;IACD,QAAQ,CAAC,IAAI,CAAC,WAAK,KAAK,EAAE,GAAG,gBAAgB,QAAQ,GAAI,CAAC,CAAC;GAC5D;EACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport findIndex from 'lodash/findIndex';\nimport { RevoGrid } from '../../interfaces';\nimport { Group } from '../../store/dataSource/data.store';\nimport { getItemByIndex } from '../../store/dimension/dimension.helpers';\nimport { HEADER_ROW_CLASS } from '../../utils/consts';\nimport GroupHeaderRenderer from './headerGroupRenderer';\n\ntype Props = {\n visibleProps: { [prop: string]: number };\n groups: Record<number, Group[]>;\n dimensionCol: Pick<RevoGrid.DimensionSettingsState, 'indexes' | 'originItemSize' | 'indexToItem'>;\n depth: number;\n canResize: boolean;\n onResize(changedX: number, startIndex: number, endIndex: number): void;\n};\n\nconst ColumnGroupsRenderer = ({ depth, groups, visibleProps, dimensionCol, canResize, onResize }: Props): VNode[] => {\n // render group columns\n const groupRow: VNode[] = [];\n for (let i = 0; i < depth; i++) {\n if (groups[i]) {\n for (let group of groups[i]) {\n // if group in visible range\n // find first visible group prop in visible columns range\n const indexFirstVisibleCol: number | undefined = findIndex(group.ids, id => typeof visibleProps[id] === 'number');\n if (indexFirstVisibleCol > -1) {\n const colVisibleIndex = visibleProps[group.ids[indexFirstVisibleCol]]; // get column index\n const groupStartIndex = colVisibleIndex - indexFirstVisibleCol; // first column index in group\n const groupEndIndex = groupStartIndex + group.ids.length - 1; // last column index in group\n\n // coordinates\n const groupStart = getItemByIndex(dimensionCol, groupStartIndex).start;\n const groupEnd = getItemByIndex(dimensionCol, groupEndIndex).end;\n groupRow.push(\n <GroupHeaderRenderer start={groupStart} end={groupEnd} group={group} canResize={canResize} onResize={e => onResize(e.changedX, groupStartIndex, groupEndIndex)} />,\n );\n }\n }\n }\n groupRow.push(<div class={`${HEADER_ROW_CLASS} group`} />);\n }\n return groupRow;\n};\n\nexport default ColumnGroupsRenderer;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.col.plugin.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/grouping.col.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gBAAgB,CAAC;AACrC,OAAO,GAAG,MAAM,YAAY,CAAC;AAK7B,OAAO,UAAU,MAAM,eAAe,CAAC;AAMvC,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,UAAU;EAC1D,MAAM,CAAC,WAAW,CAA6B,GAAM,EAAE,OAAgC,EAAE,UAAa,EAAE,KAAK,GAAG,CAAC;IAC/G,iBAAiB;IACjB,MAAM,KAAK,mCACN,OAAO,KACV,KAAK,EACL,GAAG,EAAE,EAAE,GACR,CAAC;IAEF,2BAA2B;IAC3B,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE;MAChC,MAAM,GAAG,GAAG,CAAsB,CAAC;MACnC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;MACpC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;MAE/C,iBAAiB;MACjB,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE;QAClD,eAAe;QACf,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QAEnC,gBAAgB;QAChB,IAAI,cAAc,CAAC,MAAM,EAAE;UACzB,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,iCACvB,KAAK,KACR,GAAG,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAChC,CAAC;SACJ;OACF;KACF;IACD,yBAAyB;IACzB,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,cAAc,EAAE;MACvC,MAAM,GAAG,GAAG,CAA2B,CAAC;MACxC,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;MACtD,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;KACjD;IACD,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC3D,GAAG,CAAC,IAAI,mCAAQ,GAAG,CAAC,IAAI,GAAK,UAAU,CAAC,IAAI,CAAE,CAAC;IAC/C,OAAO,GAAG,CAAC;EACb,CAAC;CACF;AACD,MAAM,UAAU,aAAa,CAAC,OAAyD;EACrF,OAAO,CAAC,CAAE,OAAmC,CAAC,QAAQ,CAAC;AACzD,CAAC","sourcesContent":["import isArray from 'lodash/isArray';\nimport map from 'lodash/map';\nimport { RevoGrid } from '../../interfaces';\nimport { ColumnCollection } from '../../services/column.data.provider';\nimport { ColumnItems } from '../../services/dimension.provider';\nimport { Group as StoreGroup } from '../../store/dataSource/data.store';\nimport BasePlugin from '../basePlugin';\ninterface Group extends StoreGroup {\n level: number;\n}\nexport type ColumnGrouping = Record<RevoGrid.DimensionCols, Group[]>;\n\nexport default class GroupingColumnPlugin extends BasePlugin {\n static gatherGroup<T extends ColumnCollection>(res: T, colData: RevoGrid.ColumnGrouping, collection: T, level = 0): T {\n // group template\n const group: Group = {\n ...colData,\n level,\n ids: [],\n };\n\n // check columns for update\n for (let k in collection.columns) {\n const key = k as keyof ColumnItems;\n const resultItem = res.columns[key];\n const collectionItem = collection.columns[key];\n\n // if column data\n if (isArray(resultItem) && isArray(collectionItem)) {\n // fill columns\n resultItem.push(...collectionItem);\n\n // fill grouping\n if (collectionItem.length) {\n res.columnGrouping[key].push({\n ...group,\n ids: map(collectionItem, 'prop'),\n });\n }\n }\n }\n // merge column groupings\n for (let k in collection.columnGrouping) {\n const key = k as RevoGrid.DimensionCols;\n const collectionItem = collection.columnGrouping[key];\n res.columnGrouping[key].push(...collectionItem);\n }\n res.maxLevel = Math.max(res.maxLevel, collection.maxLevel);\n res.sort = { ...res.sort, ...collection.sort };\n return res;\n }\n}\nexport function isColGrouping(colData: RevoGrid.ColumnGrouping | RevoGrid.ColumnRegular): colData is RevoGrid.ColumnGrouping {\n return !!(colData as RevoGrid.ColumnGrouping).children;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headerGroupRenderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingColumn/headerGroupRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAUhF,MAAM,mBAAmB,GAAG,CAAC,CAAQ,EAAW,EAAE;EAChD,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,CAAC,CAAC,SAAS;IACtB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,YAAY;IAC3C,QAAQ,EAAE,CAAC;IAEX,MAAM,EAAE,CAAC,GAAG,CAAC;IACb,KAAK,EAAE;MACL,CAAC,YAAY,CAAC,EAAE,IAAI;KACrB;IACD,KAAK,EAAE;MACL,SAAS,EAAE,cAAc,CAAC,CAAC,KAAK,KAAK;MACrC,KAAK,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI;KAC9B;IACD,QAAQ,EAAE,CAAC,CAAC,QAAQ;GACrB,CAAC;EACF,OAAO,EAAC,kBAAkB,IAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,GAAI,CAAC;AAClE,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { ResizeEvent } from '../../services/resizable.directive';\nimport { Group } from '../../store/dataSource/data.store';\nimport { HEADER_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from '../../components/header/headerCellRenderer';\n\ntype Props = {\n start: number;\n end: number;\n group: Group;\n canResize?: boolean;\n onResize?(e: ResizeEvent): void;\n};\n\nconst GroupHeaderRenderer = (p: Props): VNode[] => {\n const groupProps = {\n canResize: p.canResize,\n minWidth: p.group.ids.length * MIN_COL_SIZE,\n maxWidth: 0,\n\n active: ['r'],\n class: {\n [HEADER_CLASS]: true,\n },\n style: {\n transform: `translateX(${p.start}px)`,\n width: `${p.end - p.start}px`,\n },\n onResize: p.onResize,\n };\n return <HeaderCellRenderer data={p.group} props={groupProps} />;\n};\n\nexport default GroupHeaderRenderer;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.const.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,cAAc,QAAQ,CAAC;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,cAAc,OAAO,CAAC;AAC1D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,cAAc,KAAK,CAAC;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,cAAc,QAAQ,CAAC;AACjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,cAAc,SAAS,CAAC;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,cAAc,WAAW,CAAC;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,cAAc,iBAAiB,CAAC;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC","sourcesContent":["import { GRID_INTERNALS } from '../../utils/consts';\n\nexport const GROUP_DEPTH = `${GRID_INTERNALS}-depth`;\nexport const PSEUDO_GROUP_ITEM = `${GRID_INTERNALS}-name`;\nexport const PSEUDO_GROUP_ITEM_ID = `${GRID_INTERNALS}-id`;\nexport const PSEUDO_GROUP_ITEM_VALUE = `${GRID_INTERNALS}-value`;\nexport const PSEUDO_GROUP_COLUMN = `${GRID_INTERNALS}-column`;\nexport const GROUP_EXPANDED = `${GRID_INTERNALS}-expanded`;\nexport const GROUP_ORIGINAL_INDEX = `${GRID_INTERNALS}-original-index`;\nexport const GROUP_EXPAND_BTN = `group-expand`;\nexport const GROUP_EXPAND_EVENT = `groupExpandClick`;\nexport const GROUPING_ROW_TYPE = 'rgRow';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.row.expand.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.expand.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { RevoGrid } from '../../interfaces';\nimport { PSEUDO_GROUP_ITEM_ID, PSEUDO_GROUP_ITEM_VALUE, GROUP_EXPANDED, GROUP_DEPTH } from './grouping.const';\nimport { isGrouping, getParsedGroup, isSameGroup } from './grouping.service';\n\n// provide collapse data\nexport function doCollapse(pIndex: number, source: RevoGrid.DataType[]) {\n const model = source[pIndex];\n const collapseValue = model[PSEUDO_GROUP_ITEM_VALUE];\n const trimmed: Record<number, boolean> = {};\n let i = pIndex + 1;\n const total = source.length;\n while (i < total) {\n const currentModel = source[i];\n if (isGrouping(currentModel)) {\n const currentValue = currentModel[PSEUDO_GROUP_ITEM_VALUE];\n if (!currentValue.length || !currentValue.startsWith(collapseValue + ',')) {\n break;\n }\n currentModel[GROUP_EXPANDED] = false;\n }\n trimmed[i++] = true;\n }\n model[GROUP_EXPANDED] = false;\n return { trimmed };\n}\n\n/**\n *\n * @param pIndex - physical index\n * @param vIndex - virtual index, need to update item collection\n * @param source - data source\n * @param rowItemsIndexes - rgRow indexes\n */\nexport function doExpand(vIndex: number, source: RevoGrid.DataType[], rowItemsIndexes: number[]) {\n const physicalIndex = rowItemsIndexes[vIndex];\n const model = source[physicalIndex];\n const currentGroup = getParsedGroup(model[PSEUDO_GROUP_ITEM_ID]);\n const trimmed: Record<number, boolean> = {};\n\n // no group found\n if (!currentGroup) {\n return { trimmed };\n }\n\n const groupItems: number[] = [];\n model[GROUP_EXPANDED] = true;\n let i = physicalIndex + 1;\n const total = source.length;\n let groupLevelOnly = 0;\n\n // go through all rows\n while (i < total) {\n const currentModel = source[i];\n const isGroup = isGrouping(currentModel);\n // group found\n if (isGroup) {\n if (!isSameGroup(currentGroup, model, currentModel)) {\n break;\n } else if (!groupLevelOnly) {\n // if get group first it's group only level\n groupLevelOnly = currentModel[GROUP_DEPTH];\n }\n }\n // level 0 or same depth\n if (!groupLevelOnly || (isGroup && groupLevelOnly === currentModel[GROUP_DEPTH])) {\n trimmed[i] = false;\n groupItems.push(i);\n }\n i++;\n }\n const result: {\n trimmed: Record<number, boolean>;\n items?: number[];\n } = {\n trimmed,\n };\n if (groupItems.length) {\n const items = [...rowItemsIndexes];\n items.splice(vIndex + 1, 0, ...groupItems);\n result.items = items;\n }\n return result;\n}\n"]}
|
|
@@ -10,11 +10,6 @@ import { doExpand, doCollapse } from './grouping.row.expand.service';
|
|
|
10
10
|
import { gatherGrouping, isGrouping, isGroupingColumn } from './grouping.service';
|
|
11
11
|
import { processDoubleConversionTrimmed, TRIMMED_GROUPING } from './grouping.trimmed.service';
|
|
12
12
|
export default class GroupingRowPlugin extends BasePlugin {
|
|
13
|
-
constructor(revogrid, providers) {
|
|
14
|
-
super(revogrid);
|
|
15
|
-
this.revogrid = revogrid;
|
|
16
|
-
this.providers = providers;
|
|
17
|
-
}
|
|
18
13
|
get hasProps() {
|
|
19
14
|
var _a, _b, _c;
|
|
20
15
|
return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) && ((_c = (_b = this.options) === null || _b === void 0 ? void 0 : _b.props) === null || _c === void 0 ? void 0 : _c.length);
|
|
@@ -29,6 +24,11 @@ export default class GroupingRowPlugin extends BasePlugin {
|
|
|
29
24
|
get trimmed() {
|
|
30
25
|
return this.store.get('trimmed');
|
|
31
26
|
}
|
|
27
|
+
constructor(revogrid, providers) {
|
|
28
|
+
super(revogrid);
|
|
29
|
+
this.revogrid = revogrid;
|
|
30
|
+
this.providers = providers;
|
|
31
|
+
}
|
|
32
32
|
// befoce cell focus
|
|
33
33
|
onFocus(e) {
|
|
34
34
|
if (isGrouping(e.detail.model)) {
|
|
@@ -257,3 +257,4 @@ export default class GroupingRowPlugin extends BasePlugin {
|
|
|
257
257
|
this.revogrid.addTrimmed(Object.assign({}, trimmedGroup), TRIMMED_GROUPING);
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
|
+
//# sourceMappingURL=grouping.row.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.row.plugin.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { Edition, RevoGrid } from '../../interfaces';\nimport ColumnDataProvider, { ColumnCollection } from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport { getPhysical, setItems } from '../../store/dataSource/data.store';\nimport { columnTypes } from '../../store/storeTypes';\nimport BasePlugin from '../basePlugin';\nimport { FILTER_TRIMMED_TYPE } from '../filter/filter.plugin';\nimport { TrimmedEntity } from '../trimmed/trimmed.plugin';\nimport { GROUPING_ROW_TYPE, GROUP_EXPANDED, GROUP_EXPAND_EVENT, PSEUDO_GROUP_COLUMN, PSEUDO_GROUP_ITEM_VALUE } from './grouping.const';\nimport { doExpand, doCollapse } from './grouping.row.expand.service';\nimport { BeforeSourceSetEvent, GroupingOptions, OnExpandEvent, SourceGather } from './grouping.row.types';\nimport { ExpandedOptions, gatherGrouping, isGrouping, isGroupingColumn } from './grouping.service';\nimport { processDoubleConversionTrimmed, TRIMMED_GROUPING } from './grouping.trimmed.service';\n\nexport default class GroupingRowPlugin extends BasePlugin {\n private options: GroupingOptions | undefined;\n\n get hasProps() {\n return this.options?.props && this.options?.props?.length;\n }\n\n get store() {\n return this.providers.dataProvider.stores[GROUPING_ROW_TYPE].store;\n }\n\n // proxy for items get\n get rowItems() {\n return this.store.get('items');\n }\n\n get trimmed() {\n return this.store.get('trimmed');\n }\n\n constructor(\n protected revogrid: HTMLRevoGridElement,\n private providers: {\n dataProvider: DataProvider;\n columnProvider: ColumnDataProvider;\n },\n ) {\n super(revogrid);\n }\n\n // befoce cell focus\n private onFocus(e: CustomEvent<Edition.BeforeSaveDataDetails>) {\n if (isGrouping(e.detail.model)) {\n e.preventDefault();\n }\n }\n\n // expand event triggered\n private onExpand({ virtualIndex }: OnExpandEvent) {\n const { source } = this.getSource();\n let newTrimmed = this.trimmed[TRIMMED_GROUPING];\n\n let i = getPhysical(this.store, virtualIndex);\n const model = source[i];\n const prevExpanded = model[GROUP_EXPANDED];\n if (!prevExpanded) {\n const { trimmed, items } = doExpand(virtualIndex, source, this.rowItems);\n newTrimmed = { ...newTrimmed, ...trimmed };\n if (items) {\n setItems(this.store, items);\n }\n } else {\n const { trimmed } = doCollapse(i, source);\n newTrimmed = { ...newTrimmed, ...trimmed };\n this.revogrid.clearFocus();\n }\n\n this.store.set('source', source);\n this.revogrid.addTrimmed(newTrimmed, TRIMMED_GROUPING);\n }\n\n // get source based on proxy item collection to preserve rgRow order\n private getSource(withoutGrouping = false) {\n const source = this.store.get('source');\n const items = this.store.get('proxyItems');\n let index = 0;\n // order important here, expected parent is first, then others\n return items.reduce(\n (result: SourceGather, i) => {\n const model = source[i];\n if (!withoutGrouping) {\n result.source.push(model);\n return result;\n }\n\n // grouping filter\n if (!isGrouping(model)) {\n result.source.push(model);\n result.oldNewIndexes[i] = index;\n index++;\n } else {\n if (model[GROUP_EXPANDED]) {\n result.prevExpanded[model[PSEUDO_GROUP_ITEM_VALUE]] = true;\n }\n }\n return result;\n },\n {\n source: [],\n prevExpanded: {},\n oldNewIndexes: {},\n },\n );\n }\n\n private setColumnGrouping(cols?: RevoGrid.ColumnRegular[]) {\n // if 0 column as holder\n if (cols?.length) {\n cols[0][PSEUDO_GROUP_COLUMN] = true;\n return true;\n }\n return false;\n }\n\n private setColumns({ columns }: ColumnCollection) {\n for (let type of columnTypes) {\n if (this.setColumnGrouping(columns[type])) {\n break;\n }\n }\n }\n\n // evaluate drag between groups\n private onDrag(e: CustomEvent<{ from: number; to: number }>) {\n const { from, to } = e.detail;\n const isDown = to - from >= 0;\n const { source } = this.getSource();\n const items = this.rowItems;\n let i = isDown ? from : to;\n const end = isDown ? to : from;\n for (; i < end; i++) {\n const model = source[items[i]];\n const isGroup = isGrouping(model);\n if (isGroup) {\n e.preventDefault();\n return;\n }\n }\n }\n\n private beforeTrimmedApply(trimmed: Record<number, boolean>, type: string) {\n /** Before filter apply remove grouping filtering */\n if (type === FILTER_TRIMMED_TYPE) {\n const source = this.store.get('source');\n for (let index in trimmed) {\n if (trimmed[index] && isGrouping(source[index])) {\n trimmed[index] = false;\n }\n }\n }\n }\n\n // subscribe to grid events to process them accordingly\n private subscribe() {\n /** if grouping present and new data source arrived */\n this.addEventListener('beforesourceset', ({ detail }: CustomEvent<BeforeSourceSetEvent>) => this.onDataSet(detail));\n this.addEventListener('beforecolumnsset', ({ detail }: CustomEvent<ColumnCollection>) => this.setColumns(detail));\n\n /**\n * filter applied need to clear grouping and apply again\n * based on new results can be new grouping\n */\n this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));\n /**\n * sorting applied need to clear grouping and apply again\n * based on new results whole grouping order will changed\n */\n this.addEventListener('afterSortingApply', () => this.doSourceUpdate({ ...this.options }));\n\n /**\n * Apply logic for focus inside of grouping\n * We can't focus on grouping rows, navigation only inside of groups for now\n */\n this.addEventListener('beforecellfocus', e => this.onFocus(e));\n /**\n * Prevent rgRow drag outside the group\n */\n this.addEventListener('roworderchanged', e => this.onDrag(e));\n\n /**\n * When grouping expand icon was clicked\n */\n this.addEventListener(GROUP_EXPAND_EVENT, ({ detail }: CustomEvent<OnExpandEvent>) => this.onExpand(detail));\n }\n\n /**\n * Starts global source update with group clearing and applying new one\n * Initiated when need to reapply grouping\n */\n private doSourceUpdate(options?: ExpandedOptions) {\n if (!this.hasProps) {\n return;\n }\n /**\n * Get source without grouping\n * @param newOldIndexMap - provides us mapping with new indexes vs old indexes, we would use it for trimmed mapping\n */\n const { source, prevExpanded, oldNewIndexes } = this.getSource(true);\n /**\n * Group again\n * @param oldNewIndexMap - provides us mapping with new indexes vs old indexes\n */\n const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup } = gatherGrouping(\n source,\n this.options?.props || [],\n {\n prevExpanded,\n ...options,\n },\n );\n\n // setup source\n this.providers.dataProvider.setData(\n sourceWithGroups,\n GROUPING_ROW_TYPE,\n { depth, customRenderer: options?.groupLabelTemplate },\n true,\n );\n this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexes, oldNewIndexMap);\n }\n\n /**\n * Apply grouping on data set\n * Clear grouping from source\n * If source came from other plugin\n */\n private onDataSet(data: BeforeSourceSetEvent) {\n if (!this.hasProps || !data?.source || !data.source.length) {\n return;\n }\n const source = data.source.filter(s => !isGrouping(s));\n const expanded = this.revogrid.grouping || {};\n const { sourceWithGroups, depth, trimmed, oldNewIndexMap, childrenByGroup } = gatherGrouping(\n source,\n this.options?.props || [],\n {\n ...(expanded || {}),\n },\n );\n data.source = sourceWithGroups;\n this.providers.dataProvider.setGrouping({ depth });\n this.updateTrimmed(trimmed, childrenByGroup, oldNewIndexMap);\n }\n\n // apply grouping\n setGrouping(options: GroupingOptions) {\n // unsubscribe from all events when group applied\n this.clearSubscriptions();\n this.options = options;\n // clear props, no grouping exists\n if (!options.props || !Object.keys(options.props).length) {\n this.clearGrouping();\n return;\n }\n // props exist and source inited\n const { source } = this.getSource();\n if (source.length) {\n this.doSourceUpdate({ ...options });\n }\n // props exist and columns inited\n for (let t of columnTypes) {\n if (this.setColumnGrouping(this.providers.columnProvider.getColumns(t))) {\n this.providers.columnProvider.refreshByType(t);\n break;\n }\n }\n\n // if has any grouping subscribe to events again\n this.subscribe();\n }\n\n // clear grouping\n clearGrouping() {\n // clear columns\n columnTypes.forEach(t => {\n const cols = this.providers.columnProvider.getColumns(t);\n let deleted = false;\n cols.forEach(c => {\n if (isGroupingColumn(c)) {\n delete c[PSEUDO_GROUP_COLUMN];\n deleted = true;\n }\n });\n // if column store had grouping clear and refresh\n if (deleted) {\n this.providers.columnProvider.refreshByType(t);\n }\n });\n // clear rows\n const { source, oldNewIndexes } = this.getSource(true);\n this.providers.dataProvider.setData(source, GROUPING_ROW_TYPE, undefined, true);\n this.updateTrimmed(undefined, undefined, oldNewIndexes);\n }\n\n private updateTrimmed(\n trimmedGroup: TrimmedEntity = {},\n _childrenByGroup: Record<number, number[]> = {},\n firstLevelMap: Record<number, number>,\n secondLevelMap?: Record<number, number>,\n ) {\n // map previously trimmed data\n const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.trimmed, firstLevelMap, secondLevelMap);\n for (let type in trimemedOptionsToUpgrade) {\n this.revogrid.addTrimmed(trimemedOptionsToUpgrade[type], type);\n }\n\n // const emptyGroups = this.filterOutEmptyGroups(trimemedOptionsToUpgrade, childrenByGroup);\n\n // setup trimmed data for grouping\n this.revogrid.addTrimmed({ ...trimmedGroup }, TRIMMED_GROUPING);\n }\n}\n"]}
|
|
@@ -24,13 +24,9 @@ const GroupingRowRenderer = (props) => {
|
|
|
24
24
|
return h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }));
|
|
25
25
|
}
|
|
26
26
|
if (groupingCustomRenderer) {
|
|
27
|
-
return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
28
|
-
h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(h, { name, itemIndex, expanded, depth }))));
|
|
27
|
+
return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), h("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(h, { name, itemIndex, expanded, depth }))));
|
|
29
28
|
}
|
|
30
|
-
return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
31
|
-
h("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) },
|
|
32
|
-
h("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" },
|
|
33
|
-
h("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" }))),
|
|
34
|
-
name));
|
|
29
|
+
return (h(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }), h("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, h("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" }, h("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" }))), name));
|
|
35
30
|
};
|
|
36
31
|
export default GroupingRowRenderer;
|
|
32
|
+
//# sourceMappingURL=grouping.row.renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.row.renderer.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.renderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,WAAyB,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAUxH,SAAS,WAAW,CAAC,CAAa,EAAE,KAAwB,EAAE,YAAoB;EAChF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,kBAAkB,EAAE;IAChD,MAAM,EAAE;MACN,KAAK;MACL,YAAY;KACb;IACD,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;GACd,CAAC,CAAC;EACH,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAY,EAAE,EAAE;EAC3C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAG,KAAK,CAAC;EACtE,MAAM,IAAI,GAAW,KAAK,CAAC,iBAAiB,CAAC,CAAC;EAC9C,MAAM,QAAQ,GAAY,KAAK,CAAC,cAAc,CAAC,CAAC;EAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;EACpD,IAAI,CAAC,SAAS,EAAE;IACd,OAAO,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK,IAAI,CAAC;GACxE;EAED,IAAI,sBAAsB,EAAE;IAC1B,OAAO,CACL,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK;MACzD,WAAK,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,IAChD,sBAAsB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAC5D,CACM,CACf,CAAC;GACH;EAED,OAAO,CACL,EAAC,WAAW,oBAAK,KAAK,IAAE,QAAQ,EAAC,aAAa,EAAC,KAAK,EAAE,KAAK;IACzD,cAAQ,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC;MACzF,0BAAiB,MAAM,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,SAAS,EAAC,OAAO,EAAC,OAAO,EAAC,aAAa;QACxH,YACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,yRAAyR,GACrR,CACJ,CACC;IACR,IAAI,CACO,CACf,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,mBAAmB,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport RowRenderer, { RowProps } from '../../components/data/rowRenderer';\nimport { RevoGrid } from '../../interfaces';\nimport { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, GROUP_EXPAND_EVENT, PSEUDO_GROUP_ITEM } from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\n\ninterface GroupRowPros extends RowProps {\n model: RevoGrid.DataType;\n hasExpand: boolean;\n groupingCustomRenderer?: GroupLabelTemplateFunc;\n}\ntype Props = GroupRowPros & RevoGrid.PositionItem;\n\nfunction expandEvent(e: MouseEvent, model: RevoGrid.DataType, virtualIndex: number) {\n const event = new CustomEvent(GROUP_EXPAND_EVENT, {\n detail: {\n model,\n virtualIndex,\n },\n cancelable: true,\n bubbles: true,\n });\n e.target.dispatchEvent(event);\n}\n\nconst GroupingRowRenderer = (props: Props) => {\n const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;\n const name: string = model[PSEUDO_GROUP_ITEM];\n const expanded: boolean = model[GROUP_EXPANDED];\n const depth = parseInt(model[GROUP_DEPTH], 10) || 0;\n if (!hasExpand) {\n return <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth} />;\n }\n\n if (groupingCustomRenderer) {\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <div onClick={e => expandEvent(e, model, itemIndex)}>\n {groupingCustomRenderer(h, { name, itemIndex, expanded, depth })}\n </div>\n </RowRenderer>\n );\n }\n\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <button class={{ [GROUP_EXPAND_BTN]: true }} onClick={e => expandEvent(e, model, itemIndex)}>\n <svg aria-hidden=\"true\" style={{ transform: `rotate(${!expanded ? -90 : 0}deg)` }} focusable=\"false\" viewBox=\"0 0 448 512\">\n <path\n fill=\"currentColor\"\n d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"\n ></path>\n </svg>\n </button>\n {name}\n </RowRenderer>\n );\n};\nexport default GroupingRowRenderer;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.row.types.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.types.ts"],"names":[],"mappings":"","sourcesContent":["import { VNode } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\nexport type GroupLabelTemplateFunc = (\n createElement: RevoGrid.HyperFunc<VNode>,\n props: { name: string; itemIndex: number; expanded: boolean; depth: number; },\n) => any;\n\nexport type GroupingOptions = {\n // properties array to group\n props?: RevoGrid.ColumnProp[];\n /** is expanded by default */\n expandedAll?: boolean;\n // custom group label\n groupLabelTemplate?: GroupLabelTemplateFunc;\n /** todo\n * choose column prop to which expand button will be applied\n * if not defined first column in grid\n */\n // applyToProp?: RevoGrid.ColumnProp;\n /**\n * todo\n * choose if render cells in grouping rgRow\n * true by default\n */\n // fullRow?: boolean;\n};\n\nexport type BeforeSourceSetEvent = {\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n};\n\nexport type OnExpandEvent = {\n model: RevoGrid.DataType;\n virtualIndex: number;\n};\n\nexport type SourceGather = {\n source: RevoGrid.DataType[];\n prevExpanded: Record<string, boolean>;\n oldNewIndexes?: Record<number, number>;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { RevoGrid } from '../../interfaces';\nimport {\n GROUP_DEPTH,\n GROUP_EXPANDED,\n PSEUDO_GROUP_COLUMN,\n PSEUDO_GROUP_ITEM,\n PSEUDO_GROUP_ITEM_ID,\n PSEUDO_GROUP_ITEM_VALUE,\n GROUP_ORIGINAL_INDEX,\n } from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\n\nexport type ExpandedOptions = {\n prevExpanded?: Record<string, boolean>;\n expandedAll?: boolean; // skip trim\n groupLabelTemplate?: GroupLabelTemplateFunc;\n};\n\ntype GroupedData = Map<string, GroupedData | RevoGrid.DataType[]>\n\n\n/**\n * Gather data for grouping\n * @param array - flat data array\n * @param groupIds - ids of groups\n * @param expanded - potentially expanded items if present\n */\nexport function gatherGrouping(array: RevoGrid.DataType[], groupIds: RevoGrid.ColumnProp[], { prevExpanded, expandedAll }: ExpandedOptions) {\n const groupedItems: GroupedData = new Map();\n array.forEach((item, originalIndex) => {\n const groupLevelValues = groupIds.map((groupId) => item[groupId] || null);\n const lastLevelValue = groupLevelValues.pop();\n let currentGroupLevel = groupedItems;\n groupLevelValues.forEach((value) => {\n if (!currentGroupLevel.has(value)) {\n currentGroupLevel.set(value, new Map());\n }\n currentGroupLevel = currentGroupLevel.get(value) as GroupedData;\n })\n if (!currentGroupLevel.has(lastLevelValue)) {\n currentGroupLevel.set(lastLevelValue, []);\n }\n item[GROUP_ORIGINAL_INDEX] = originalIndex;\n const lastLevelItems = currentGroupLevel.get(lastLevelValue) as RevoGrid.DataType[];\n lastLevelItems.push(item);\n });\n\n let itemIndex = -1;\n const groupingDepth = groupIds.length;\n // collapse all groups in the beginning\n const trimmed: Record<number, boolean> = {};\n // index mapping\n const oldNewIndexMap: Record<number, number> = {};\n // check if group header exists\n const pseudoGroupTest: Record<string, number[]> = {};\n const sourceWithGroups: RevoGrid.DataType[] = [];\n function flattenGroupMaps(groupedValues: GroupedData, parentIds: string[], isExpanded: boolean) {\n const depth = parentIds.length;\n groupedValues.forEach((innerGroupedValues, groupId) => {\n const levelIds = [...parentIds, groupId];\n const mergedIds = levelIds.join(',');\n const isGroupExpanded = isExpanded && (!!expandedAll || !!prevExpanded?.[mergedIds]);\n sourceWithGroups.push({\n [PSEUDO_GROUP_ITEM]: groupId,\n [GROUP_DEPTH]: depth,\n [PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),\n [PSEUDO_GROUP_ITEM_VALUE]: mergedIds,\n [GROUP_EXPANDED]: isGroupExpanded,\n });\n itemIndex += 1;\n if (!isGroupExpanded && depth) {\n trimmed[itemIndex] = true;\n }\n if (Array.isArray(innerGroupedValues)) {\n innerGroupedValues.forEach((value) => {\n itemIndex += 1;\n if (!isGroupExpanded) {\n trimmed[itemIndex] = true;\n }\n oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;\n const pseudoGroupTestIds = levelIds.map((_value, index) => levelIds.slice(0, index + 1).join(','));\n pseudoGroupTestIds.forEach((pseudoGroupTestId) => {\n if (!pseudoGroupTest[pseudoGroupTestId]) {\n pseudoGroupTest[pseudoGroupTestId] = [];\n }\n pseudoGroupTest[pseudoGroupTestId].push(itemIndex);\n });\n });\n sourceWithGroups.push(...innerGroupedValues);\n } else {\n flattenGroupMaps(innerGroupedValues, levelIds, isGroupExpanded);\n }\n });\n }\n flattenGroupMaps(groupedItems, [], true);\n\n return {\n sourceWithGroups, // updates source mirror\n depth: groupingDepth, // largest depth for grouping\n trimmed, // used for expand/collapse grouping values\n oldNewIndexMap, // used for mapping old values to new\n childrenByGroup: pseudoGroupTest, // used to get child items in group\n };\n}\n\nexport function getGroupingName(rgRow?: RevoGrid.DataType) {\n return rgRow && rgRow[PSEUDO_GROUP_ITEM];\n}\n\nexport function isGrouping(rgRow?: RevoGrid.DataType) {\n return rgRow && typeof rgRow[PSEUDO_GROUP_ITEM] !== 'undefined';\n}\n\nexport function isGroupingColumn(column?: RevoGrid.ColumnRegular) {\n return column && typeof column[PSEUDO_GROUP_COLUMN] !== 'undefined';\n}\n\nexport function measureEqualDepth<T>(groupA: T[], groupB: T[]) {\n const ln = groupA.length;\n let i = 0;\n for (; i < ln; i++) {\n if (groupA[i] !== groupB[i]) {\n return i;\n }\n }\n return i;\n}\n\nexport function getParsedGroup(id: string): any[] {\n const parseGroup = JSON.parse(id);\n // extra precaution and type safe guard\n if (!Array.isArray(parseGroup)) {\n return null;\n }\n return parseGroup;\n}\n\n// check if items is child of current clicked group\nexport function isSameGroup(currentGroup: any[], currentModel: RevoGrid.DataType, nextModel: RevoGrid.DataType) {\n const nextGroup = getParsedGroup(nextModel[PSEUDO_GROUP_ITEM_ID]);\n if (!nextGroup) {\n return false;\n }\n\n const depth = measureEqualDepth(currentGroup, nextGroup);\n return currentModel[GROUP_DEPTH] < depth;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grouping.trimmed.service.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.trimmed.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAA0B,MAAM,2BAA2B,CAAC;AAEvF,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,eAAwB,EAAE,aAAqC,EAAE,cAAuC;EACrJ,MAAM,wBAAwB,GAAY,EAAE,CAAC;EAC7C;;KAEG;EACH,KAAK,IAAI,IAAI,IAAI,eAAe,EAAE;IAChC,IAAI,IAAI,KAAK,gBAAgB,EAAE;MAC7B,SAAS;KACV;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAkB,EAAE,CAAC;IAEnC,KAAK,IAAI,YAAY,IAAI,KAAK,EAAE;MAC9B;;;SAGG;MACH,IAAI,kBAAkB,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;MACrD,IAAI,cAAc,EAAE;QAClB,kBAAkB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;OACzD;MAED;;;SAGG;MACH,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;QACvB,QAAQ,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC;QACpC;;WAEG;QACH,IAAI,kBAAkB,KAAK,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE;UACrD,wBAAwB,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;SAC3C;OACF;KACF;GACF;EACD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,gBAAyB,EAAE,kBAA4C,EAAE;EAC5G,MAAM,YAAY,GAAkB,EAAE,CAAC;EACvC,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;EACxD,4BAA4B;EAC5B,KAAK,IAAI,UAAU,IAAI,eAAe,EAAE;IACtC,MAAM,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACzG,IAAI,CAAC,WAAW,EAAE;MAChB,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;KACjC;GACF;EACD,OAAO,YAAY,CAAC;AACtB,CAAC","sourcesContent":["import { gatherTrimmedItems, Trimmed, TrimmedEntity } from '../trimmed/trimmed.plugin';\n\nexport const TRIMMED_GROUPING = 'grouping';\n\n/**\n * Prepare trimming updated indexes for grouping\n * @param initiallyTrimed\n * @param firstLevelMap\n * @param secondLevelMap\n */\nexport function processDoubleConversionTrimmed(initiallyTrimed: Trimmed, firstLevelMap: Record<number, number>, secondLevelMap?: Record<number, number>) {\n const trimemedOptionsToUpgrade: Trimmed = {};\n /**\n * go through all groups except grouping\n */\n for (let type in initiallyTrimed) {\n if (type === TRIMMED_GROUPING) {\n continue;\n }\n const items = initiallyTrimed[type];\n const newItems: TrimmedEntity = {};\n\n for (let initialIndex in items) {\n /**\n * if item exists we find it in collection\n * we support 2 level of conversions\n */\n let newConversionIndex = firstLevelMap[initialIndex];\n if (secondLevelMap) {\n newConversionIndex = secondLevelMap[newConversionIndex];\n }\n\n /**\n * if item was trimmed previously\n * trimming makes sense to apply\n */\n if (items[initialIndex]) {\n newItems[newConversionIndex] = true;\n /**\n * If changes present apply changes to new source\n */\n if (newConversionIndex !== parseInt(initialIndex, 10)) {\n trimemedOptionsToUpgrade[type] = newItems;\n }\n }\n }\n }\n return trimemedOptionsToUpgrade;\n}\n\nexport function filterOutEmptyGroups(allTrimmedGroups: Trimmed, childrenByGroup: Record<number, number[]> = {}) {\n const trimmedGroup: TrimmedEntity = {};\n const allTrimmed = gatherTrimmedItems(allTrimmedGroups);\n // find is groups are filled\n for (let groupIndex in childrenByGroup) {\n const hasChidlren = childrenByGroup[groupIndex].filter(childIndex => !allTrimmed[childIndex]).length > 0;\n if (!hasChidlren) {\n trimmedGroup[groupIndex] = true;\n }\n }\n return trimmedGroup;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnDragPlugin.js","sourceRoot":"","sources":["../../../src/plugins/moveColumn/columnDragPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plugin for column manual move\n */\nimport debounce from 'lodash/debounce';\nimport each from 'lodash/each';\nimport { RevoGrid } from '../../interfaces';\nimport ColumnDataProvider from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport DimensionProvider from '../../services/dimension.provider';\nimport SelectionStoreConnector from '../../services/selection.store.connector';\nimport ViewportProvider from '../../services/viewport.provider';\nimport { getItemByPosition } from '../../store/dimension/dimension.helpers';\nimport BasePlugin from '../basePlugin';\nimport { ColumnOrderHandler } from './columnOrderHandler';\nimport { dispatch } from '../dispatcher';\nimport { isColGrouping } from '../groupingColumn/grouping.col.plugin';\n\nconst COLUMN_CLICK = 'column-click';\nconst MOVE = 'column-mouse-move';\nconst DRAG_END = 'column-drag-end';\nconst BEFORE_DRAG_END = 'before-column-drag-end';\n\n// use this event subscription to drop D&D for particular columns\nconst DRAG_START = 'column-drag-start';\n\nexport type DragStartEventDetails = {\n event: MouseEvent;\n data: RevoGrid.ColumnDataSchema;\n};\n\nexport type Providers = {\n data: DataProvider;\n dimension: DimensionProvider;\n selection: SelectionStoreConnector;\n column: ColumnDataProvider;\n viewport: ViewportProvider;\n};\ntype StaticData = {\n startPos: number;\n startItem: RevoGrid.PositionItem;\n data: RevoGrid.ColumnRegular;\n dataEl: HTMLElement;\n scrollEl: Element;\n gridEl: HTMLElement;\n cols: RevoGrid.DimensionSettingsState;\n};\n\ntype LocalSubscriptions = Record<string, LocalSubscription>;\ntype LocalSubscription = {\n target: Element | Document;\n callback(...params: any[]): void;\n};\nexport type EventData = {\n elRect: DOMRect;\n gridRect: DOMRect;\n scrollOffset: number;\n type: RevoGrid.DimensionCols;\n};\nexport default class ColumnPlugin extends BasePlugin {\n private moveFunc = debounce((e: MouseEvent) => this.doMove(e), 5);\n private staticDragData: StaticData | null = null;\n private dragData: EventData | null = null;\n private readonly orderUi: ColumnOrderHandler;\n protected readonly localSubscriptions: LocalSubscriptions = {};\n constructor(protected revogrid: HTMLRevoGridElement, private providers: Providers) {\n super(revogrid);\n this.orderUi = new ColumnOrderHandler();\n revogrid.registerVNode([this.orderUi.render()]);\n\n revogrid.classList.add('column-draggable');\n\n /** Register events */\n this.localSubscriptions['mouseleave'] = {\n target: document,\n callback: (e: MouseEvent) => this.onMouseOut(e),\n };\n this.localSubscriptions['mouseup'] = {\n target: document,\n callback: (e: MouseEvent) => this.onMouseUp(e),\n };\n\n this.localSubscriptions['mousemove'] = {\n target: document,\n callback: (e: MouseEvent) => this.move(e),\n };\n\n this.addEventListener(COLUMN_CLICK, ({ detail }) => this.dragStart(detail));\n }\n\n dragStart({ event, data }: DragStartEventDetails) {\n if (event.defaultPrevented) {\n return;\n }\n const { defaultPrevented } = dispatch(this.revogrid, DRAG_START, data);\n // check if allowed to drag particulat column\n if (defaultPrevented) {\n return;\n }\n this.clearOrder();\n const { mouseleave, mouseup, mousemove } = this.localSubscriptions;\n mouseleave.target.addEventListener('mouseleave', mouseleave.callback);\n mouseup.target.addEventListener('mouseup', mouseup.callback);\n\n const dataEl = (event.target as HTMLElement).closest('revogr-header');\n const scrollEl = (event.target as HTMLElement).closest('revogr-viewport-scroll');\n if (!dataEl || !scrollEl) {\n return;\n }\n\n if (isColGrouping(data)) {\n return;\n }\n\n const cols = this.getDimension(data.pin || 'rgCol');\n const gridRect = this.revogrid.getBoundingClientRect();\n const elRect = dataEl.getBoundingClientRect();\n const startItem = getItemByPosition(\n cols,\n getLeftRelative(event.x, gridRect.left, elRect.left - gridRect.left));\n \n this.staticDragData = {\n startPos: event.x,\n startItem,\n data,\n dataEl,\n scrollEl,\n gridEl: this.revogrid,\n cols,\n };\n this.dragData = this.getData(this.staticDragData);\n mousemove.target.addEventListener('mousemove', mousemove.callback);\n this.orderUi.start(event, {\n ...this.dragData,\n ...this.staticDragData,\n });\n }\n\n doMove(e: MouseEvent) {\n if (!this.staticDragData) {\n return;\n }\n\n const dragData = (this.dragData = this.getData(this.staticDragData));\n if (!dragData) {\n return;\n }\n const start = this.staticDragData.startPos;\n if (Math.abs(start - e.x) > 10) {\n const x = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);\n const rgCol = getItemByPosition(this.staticDragData.cols, x);\n this.orderUi.autoscroll(x, dragData.elRect.width);\n this.orderUi.showHandler(\n rgCol.end + dragData.scrollOffset,\n dragData.gridRect.width\n );\n }\n }\n\n move(e: MouseEvent): void {\n dispatch(this.revogrid, MOVE, { ...e });\n // then do move\n this.moveFunc(e);\n }\n onMouseOut(_: MouseEvent) {\n this.clearOrder();\n }\n onMouseUp(e: MouseEvent) {\n // apply new positions\n if (this.dragData) {\n let relativePos = getLeftRelative(e.x, this.dragData.gridRect.left, this.dragData.scrollOffset);\n if (relativePos < 0) {\n relativePos = 0;\n }\n const newPosition = getItemByPosition(this.staticDragData.cols, relativePos);\n\n const store = this.providers.column.stores[this.dragData.type].store;\n const items = [...store.get('items')];\n\n // prevent position change if needed\n const { defaultPrevented: stopDrag } = dispatch(this.revogrid, BEFORE_DRAG_END, {\n ...this.staticDragData,\n startPosition: this.staticDragData.startItem,\n newPosition,\n newItem: store.get('source')[items[this.staticDragData.startItem.itemIndex]]\n });\n if (!stopDrag) {\n // todo: if move item out of group remove item from group\n const toMove = items.splice(this.staticDragData.startItem.itemIndex, 1);\n items.splice(newPosition.itemIndex, 0, ...toMove);\n store.set('items', items);\n }\n dispatch(this.revogrid, DRAG_END, this.dragData);\n }\n this.clearOrder();\n }\n\n private clearLocalSubscriptions() {\n each(this.localSubscriptions, ({ target, callback }, key) => target.removeEventListener(key, callback));\n }\n\n clearOrder() {\n this.staticDragData = null;\n this.dragData = null;\n this.clearLocalSubscriptions();\n this.orderUi.stop(this.revogrid);\n }\n /**\n * Clearing subscription\n */\n protected clearSubscriptions() {\n super.clearSubscriptions();\n this.clearLocalSubscriptions();\n }\n\n private getData({\n gridEl,\n dataEl,\n data,\n }: StaticData): EventData {\n const gridRect = gridEl.getBoundingClientRect();\n const elRect = dataEl.getBoundingClientRect();\n const scrollOffset = elRect.left - gridRect.left;\n return {\n elRect,\n gridRect,\n type: data.pin || 'rgCol',\n scrollOffset,\n };\n }\n private getDimension(type: RevoGrid.MultiDimensionType) {\n return this.providers.dimension.stores[type].getCurrentState();\n }\n}\n\nexport function getLeftRelative(\n absoluteX: number,\n gridPos: number,\n offset: number\n): number {\n return absoluteX - gridPos - offset;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnOrderHandler.js","sourceRoot":"","sources":["../../../src/plugins/moveColumn/columnOrderHandler.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from '@stencil/core';\n\nconst COLUMN_DRAG_CLASS = 'column-drag-start';\n\nexport class ColumnOrderHandler {\n private element?: HTMLDivElement;\n private autoscrollEl?: HTMLElement;\n private offset = 0;\n\n renderAutoscroll(_: MouseEvent, parent: HTMLElement | null) {\n if (!parent) {\n return;\n }\n this.autoscrollEl = document.createElement('div');\n this.autoscrollEl.classList.add('drag-auto-scroll-y');\n parent.appendChild(this.autoscrollEl);\n }\n\n autoscroll(pos: number, dataContainerSize: number, direction = 'translateX') {\n if (!this.autoscrollEl) {\n return;\n }\n const helperOffset = 10;\n // calculate current y position inside of the grid active holder\n // 3 - size of element + border\n const maxScroll = Math.min(pos + helperOffset, dataContainerSize - 3);\n\n this.autoscrollEl.style.transform = `${direction}(${maxScroll}px)`;\n this.autoscrollEl.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n\n start(e: MouseEvent, { dataEl, gridRect, scrollEl, gridEl }: {\n dataEl: HTMLElement;\n gridRect: DOMRect;\n scrollEl: Element;\n gridEl: Element;\n }, dir: 'top' | 'left' = 'left') {\n gridEl.classList.add(COLUMN_DRAG_CLASS);\n const scrollContainerRect = scrollEl.getBoundingClientRect();\n if (scrollContainerRect) {\n this.offset = scrollContainerRect[dir] - gridRect[dir];\n }\n this.renderAutoscroll(e, dataEl);\n }\n\n stop(gridEl: Element) {\n gridEl.classList.remove(COLUMN_DRAG_CLASS);\n if (this.element) {\n this.element.hidden = true;\n }\n this.offset = 0;\n this.autoscrollEl?.remove();\n this.autoscrollEl = undefined;\n }\n\n showHandler(pos: number, size: number, direction = 'translateX') {\n if (!this.element) {\n return;\n }\n // do not allow overcross top of the scrollable area, header excluded\n if (this.offset) {\n pos = Math.max(pos, this.offset);\n }\n // can not be bigger then grid end\n pos = Math.min(pos, size);\n this.element.style.transform = `${direction}(${pos}px)`;\n this.element.hidden = false;\n }\n\n render() {\n return <div class=\"drag-position-y\" hidden ref={(el?: HTMLDivElement) => (this.element = el)}></div>;\n }\n}\n"]}
|
|
@@ -15,6 +15,9 @@ import BasePlugin from '../basePlugin';
|
|
|
15
15
|
* If you prevent event it'll not reach farther steps
|
|
16
16
|
*/
|
|
17
17
|
export default class SortingPlugin extends BasePlugin {
|
|
18
|
+
get hasSorting() {
|
|
19
|
+
return !!this.sorting;
|
|
20
|
+
}
|
|
18
21
|
constructor(revogrid) {
|
|
19
22
|
super(revogrid);
|
|
20
23
|
this.revogrid = revogrid;
|
|
@@ -58,9 +61,6 @@ export default class SortingPlugin extends BasePlugin {
|
|
|
58
61
|
this.addEventListener('aftercolumnsset', aftercolumnsset);
|
|
59
62
|
this.addEventListener('initialHeaderClick', headerclick);
|
|
60
63
|
}
|
|
61
|
-
get hasSorting() {
|
|
62
|
-
return !!this.sorting;
|
|
63
|
-
}
|
|
64
64
|
async headerclick(column, index, additive) {
|
|
65
65
|
let order = this.getNextOrder(column.order);
|
|
66
66
|
const beforeEvent = this.emit('beforesorting', { column, order, additive });
|
|
@@ -182,3 +182,4 @@ export default class SortingPlugin extends BasePlugin {
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
|
+
//# sourceMappingURL=sorting.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sorting.plugin.js","sourceRoot":"","sources":["../../../src/plugins/sorting/sorting.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import size from 'lodash/size';\n\nimport { RevoGrid } from '../../interfaces';\nimport { setStore } from '../../utils/store.utils';\nimport ColumnDataProvider from '../../services/column.data.provider';\nimport BasePlugin from '../basePlugin';\n\nimport DimensionRows = RevoGrid.DimensionRows;\n\nexport type SortingOrder = Record<RevoGrid.ColumnProp, RevoGrid.Order>;\ntype SortingOrderFunction = Record<RevoGrid.ColumnProp, RevoGrid.CellCompareFunc | undefined>;\ntype SourceSetEvent = {\n type: DimensionRows;\n source: RevoGrid.DataType[];\n};\ntype ColumnSetEvent = {\n order: SortingOrder;\n};\n\n/**\n * lifecycle\n * 1) @event beforesorting - sorting just started, nothing happened yet\n * 2) @metod updateColumnSorting - column sorting icon applied to grid and column get updated, data still untiuched\n * 3) @event beforesortingapply - before we applied sorting data to data source, you can prevent data apply from here\n * 4) @event afterSortingApply - sorting applied, just finished event\n *\n * If you prevent event it'll not reach farther steps\n */\n\nexport default class SortingPlugin extends BasePlugin {\n private sorting: SortingOrder | null = null;\n private sortingFunc: SortingOrderFunction | null = null;\n\n get hasSorting() {\n return !!this.sorting;\n }\n\n constructor(protected revogrid: HTMLRevoGridElement) {\n super(revogrid);\n\n const beforesourceset = ({ detail }: CustomEvent<SourceSetEvent>) => {\n if (this.hasSorting) {\n // is sorting allowed\n const event = this.emit('beforesourcesortingapply');\n // sorting prevented\n if (event.defaultPrevented) {\n return;\n }\n }\n const data = this.setData(detail.source, detail.type);\n if (data) {\n detail.source = data;\n }\n };\n const aftercolumnsset = async ({ detail: { order } }: CustomEvent<ColumnSetEvent>) => {\n\n const columns = await this.revogrid.getColumns();\n const sortingFunc : SortingOrderFunction = {};\n\n for (let prop in order) {\n const column = ColumnDataProvider.getColumnByProp(columns, prop);\n const cmp : RevoGrid.CellCompareFunc = column?.cellCompare || this.defaultCellCompare;\n \n sortingFunc[prop] = order[prop] == 'desc' ? this.descCellCompare(cmp) : cmp;\n }\n this.sort(order,sortingFunc);\n }\n const headerclick = async (e: CustomEvent<RevoGrid.InitialHeaderClick>) => {\n if (e.defaultPrevented) {\n return;\n }\n\n if (!e.detail.column.sortable) {\n return;\n }\n\n this.headerclick(e.detail.column, e.detail.index, e.detail?.originalEvent?.shiftKey);\n };\n\n this.addEventListener('beforesourceset', beforesourceset);\n this.addEventListener('aftercolumnsset', aftercolumnsset);\n this.addEventListener('initialHeaderClick', headerclick);\n }\n\n private async headerclick(column: RevoGrid.ColumnRegular, index: number, additive: boolean) {\n let order: RevoGrid.Order = this.getNextOrder(column.order);\n const beforeEvent = this.emit('beforesorting', { column, order, additive });\n if (beforeEvent.defaultPrevented) {\n return;\n }\n order = beforeEvent.detail.order;\n const newCol = await this.revogrid.updateColumnSorting(beforeEvent.detail.column, index, order, additive);\n\n // apply sort data\n const beforeApplyEvent = this.emit('beforesortingapply', { column: newCol, order, additive });\n if (beforeApplyEvent.defaultPrevented) {\n return;\n }\n order = beforeApplyEvent.detail.order;\n\n const cellCmp : RevoGrid.CellCompareFunc = column?.cellCompare || this.defaultCellCompare;\n const cmp : RevoGrid.CellCompareFunc = order == 'asc' ? cellCmp : order == 'desc' ? this.descCellCompare(cellCmp) : undefined;\n\n if (additive && this.sorting) {\n\n const sorting : SortingOrder = {};\n const sortingFunc : SortingOrderFunction = {};\n\n Object.assign(sorting,this.sorting);\n Object.assign(sortingFunc,this.sortingFunc);\n\n if (column.prop in sorting && size(sorting) > 1 && order === undefined) {\n delete sorting[column.prop];\n delete sortingFunc[column.prop];\n }\n else {\n sorting[column.prop] = order;\n sortingFunc[column.prop] = cmp;\n }\n\n this.sort(sorting, sortingFunc);\n }\n else {\n this.sort(\n { [column.prop]: order },\n { [column.prop]: cmp }\n );\n }\n }\n\n private setData(data: RevoGrid.DataType[], type: DimensionRows): RevoGrid.DataType[] | void {\n // sorting available for rgRow type only\n if (type === 'rgRow' && this.sortingFunc) {\n return this.sortItems(data, this.sortingFunc);\n }\n }\n\n /**\n * Sorting apply, available for rgRow type only\n * @param sorting - per column sorting\n * @param data - this.stores['rgRow'].store.get('source')\n */\n private async sort(sorting: SortingOrder, sortingFunc: SortingOrderFunction) {\n if (!size(sorting)) {\n this.sorting = null;\n this.sortingFunc = null;\n return;\n }\n this.sorting = sorting;\n this.sortingFunc = sortingFunc;\n\n const store = await this.revogrid.getSourceStore();\n\n const source = store.get('source');\n const proxyItems = this.sortIndexByItems([...store.get('proxyItems')], source, this.sortingFunc);\n setStore(store, {\n proxyItems,\n source: [...source],\n });\n this.emit('afterSortingApply');\n }\n\n private defaultCellCompare(prop: RevoGrid.ColumnProp, a: RevoGrid.DataType, b: RevoGrid.DataType){\n const av = a[prop]?.toString().toLowerCase();\n const bv = b[prop]?.toString().toLowerCase();\n \n return av == bv ? 0 : av > bv ? 1 : -1;\n }\n\n private descCellCompare(cmp: RevoGrid.CellCompareFunc) {\n return (prop: RevoGrid.ColumnProp, a: RevoGrid.DataType, b: RevoGrid.DataType) : number => { return -1 * cmp(prop,a,b) }\n }\n\n private sortIndexByItems(indexes: number[], source: RevoGrid.DataType[], sortingFunc: SortingOrderFunction): number[] {\n // TODO - is there a situation where multiple kvps in the `sorting` object would cause this to break?\n for (let prop in sortingFunc) {\n if (typeof sortingFunc[prop] === 'undefined') {\n // Unsort indexes\n return [...Array(indexes.length).keys()];\n }\n }\n return indexes.sort((a, b) => {\n let sorted = 0;\n for (let prop in sortingFunc) {\n const cmp = sortingFunc[prop];\n const itemA = source[a];\n const itemB = source[b];\n sorted = cmp(prop, itemA, itemB);\n if (sorted) {\n break;\n }\n }\n return sorted;\n });\n }\n\n private sortItems(source: RevoGrid.DataType[], sortingFunc: SortingOrderFunction): RevoGrid.DataType[] {\n return source.sort((a, b) => {\n let sorted = 0;\n for (let prop in sortingFunc) {\n const cmp: RevoGrid.CellCompareFunc | undefined = sortingFunc[prop];\n if (!cmp) {\n continue;\n }\n sorted = cmp(prop, a, b);\n if (sorted) {\n break;\n }\n }\n return sorted;\n });\n }\n\n private getNextOrder(currentOrder: RevoGrid.Order): RevoGrid.Order {\n switch (currentOrder) {\n case undefined:\n return 'asc';\n case 'asc':\n return 'desc';\n case 'desc':\n return undefined;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sorting.sign.js","sourceRoot":"","sources":["../../../src/plugins/sorting/sorting.sign.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAK7C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAS,EAAE,EAAE;EAC/C,OAAO,SAAG,KAAK,EAAE,MAAM,CAAC,KAAK,GAAI,CAAC;AACpC,CAAC,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\nexport const FILTER_BUTTON_CLASS = 'rv-filter';\nexport const FILTER_BUTTON_ACTIVE = 'active';\n\ntype Props = {\n column: RevoGrid.ColumnRegular;\n};\nexport const SortingSign = ({ column }: Props) => {\n return <i class={column.order} />;\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stretchPlugin.js","sourceRoot":"","sources":["../../src/plugins/stretchPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { each } from 'lodash';\nimport { RevoGrid, RevoPlugin } from '../interfaces';\nimport { ColumnCollection } from '../services/column.data.provider';\nimport DimensionProvider, { ColumnItems } from '../services/dimension.provider';\nimport { getScrollbarWidth } from '../utils/utils';\nimport BasePlugin from './basePlugin';\n\n/**\n * This plugin serves to recalculate columns initially\n * Base on empty space if there is any\n * Currently plugin supports only increasing last column\n */\ntype ScrollChange = {\n type: RevoGrid.DimensionType;\n hasScroll: boolean;\n};\ntype StretchedData = {\n initialSize: number;\n size: number;\n index: number;\n};\nexport default class StretchColumn extends BasePlugin {\n private stretchedColumn: StretchedData|null = null;\n private readonly scrollSize;\n constructor(\n revogrid: HTMLRevoGridElement,\n private dimensionProvider: DimensionProvider\n ) {\n super(revogrid);\n this.scrollSize = getScrollbarWidth(document);\n const beforecolumnapplied = ({ detail: { columns } }: CustomEvent<ColumnCollection>) => this.applyStretch(columns);\n this.addEventListener('beforecolumnapplied', beforecolumnapplied);\n }\n\n private setScroll({ type, hasScroll }: ScrollChange) {\n if (type === 'rgRow' && this.stretchedColumn && this.stretchedColumn?.initialSize === this.stretchedColumn.size) {\n if (hasScroll) {\n this.stretchedColumn.size -= this.scrollSize;\n this.apply();\n this.dropChanges();\n }\n }\n }\n\n private activateChanges() {\n const setScroll = ({ detail }: CustomEvent<ScrollChange>) => this.setScroll(detail);\n this.addEventListener('scrollchange', setScroll);\n }\n\n private dropChanges() {\n this.stretchedColumn = null;\n this.removeEventListener('scrollchange');\n }\n\n private apply() {\n if (!this.stretchedColumn) {\n return;\n }\n const type: RevoGrid.DimensionCols = 'rgCol';\n this.dimensionProvider.setDimensionSize(type, { [this.stretchedColumn.index]: this.stretchedColumn.size });\n }\n\n applyStretch(columns: ColumnItems) {\n this.dropChanges();\n let sizeDifference = this.revogrid.clientWidth - 1;\n each(columns, (_c, type: RevoGrid.DimensionCols) => {\n const realSize = this.dimensionProvider.stores[type].store.get('realSize');\n sizeDifference -= realSize;\n });\n if (sizeDifference > 0) {\n // currently plugin accepts last column\n const index = columns.rgCol.length - 1;\n const last = columns.rgCol[index];\n // has column\n // no auto size applied\n // size for column shouldn't be defined\n const colSize = last?.size || this.revogrid.colSize || 0;\n const size = sizeDifference + colSize - 1;\n if (last && !last.autoSize && (colSize < size)) {\n this.stretchedColumn = {\n initialSize: size,\n index,\n size\n };\n this.apply();\n this.activateChanges();\n }\n }\n }\n}\n\nexport function isStretchPlugin(plugin: RevoPlugin.Plugin|StretchColumn): plugin is StretchColumn {\n return !!(plugin as StretchColumn).applyStretch;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trimmed.plugin.js","sourceRoot":"","sources":["../../../src/plugins/trimmed/trimmed.plugin.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,KAA0C,EAA4C,EAAE,CAAC,CAAC;EACzH,GAAG,CAAC,CAAC,EAAE,MAAM;IACX,QAAQ,CAAC,EAAE;MACT,KAAK,SAAS;QACZ,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAiB,CAAC,CAAC;QAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,CAAS,EAAE,EAAE;UAC5D,6DAA6D;UAC7D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACf,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;WAChB;UACD,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7B,MAAM;KACT;EACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,YAAqB;EACtD,MAAM,OAAO,GAAkB,EAAE,CAAC;EAElC,KAAK,IAAI,UAAU,IAAI,YAAY,EAAE;IACnC,iCAAiC;IACjC,KAAK,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE;MACtC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;EACD,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { Observable, PluginSubscribe } from '../../interfaces';\nimport { DataSourceState } from '../../store/dataSource/data.store';\n\nexport type TrimmedEntity = Record<number, boolean>;\nexport type Trimmed = Record<string, TrimmedEntity>;\n\n/**\n * Hide items from main collection\n * But keep them in store\n */\nexport const trimmedPlugin = <T>(store: Observable<DataSourceState<T, any>>): PluginSubscribe<DataSourceState<T, any>> => ({\n set(k, newVal) {\n switch (k) {\n case 'trimmed':\n const proxy = store.get('proxyItems');\n const trimmed = gatherTrimmedItems(newVal as Trimmed);\n\n const newItems = proxy.reduce((result: number[], v: number) => {\n // check if present in new trimmed remove from items (filter)\n if (!trimmed[v]) {\n result.push(v);\n }\n return result;\n }, []);\n\n store.set('items', newItems);\n break;\n }\n },\n});\n\nexport function gatherTrimmedItems(trimmedItems: Trimmed) {\n const trimmed: TrimmedEntity = {};\n\n for (let trimmedKey in trimmedItems) {\n // trimmed overweight not trimmed\n for (let t in trimmedItems[trimmedKey]) {\n trimmed[t] = trimmed[t] || trimmedItems[trimmedKey][t];\n }\n }\n return trimmed;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell.helpers.js","sourceRoot":"","sources":["../../src/services/cell.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGrD,MAAM,UAAU,OAAO,CAAC,IAAiB;EACvC,OAAO;IACL,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;IAC5C,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;GAC7C,CAAC;AACJ,CAAC","sourcesContent":["import { DATA_COL, DATA_ROW } from '../utils/consts';\nimport { Selection } from '../interfaces';\n\nexport function getCell(cell: HTMLElement): Selection.Cell {\n return {\n x: parseInt(cell.getAttribute(DATA_COL), 10),\n y: parseInt(cell.getAttribute(DATA_ROW), 10),\n };\n}\n"]}
|
|
@@ -8,13 +8,6 @@ import DataStore, { getSourceItem, getSourceItemVirtualIndexByProp, setSourceByV
|
|
|
8
8
|
import { columnTypes } from '../store/storeTypes';
|
|
9
9
|
import GroupingColumnPlugin, { isColGrouping } from '../plugins/groupingColumn/grouping.col.plugin';
|
|
10
10
|
export default class ColumnDataProvider {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.sorting = null;
|
|
13
|
-
this.dataSources = reduce(columnTypes, (sources, k) => {
|
|
14
|
-
sources[k] = new DataStore(k);
|
|
15
|
-
return sources;
|
|
16
|
-
}, {});
|
|
17
|
-
}
|
|
18
11
|
get order() {
|
|
19
12
|
return reduce(this.sorting, (r, c, prop) => {
|
|
20
13
|
r[prop] = c.order;
|
|
@@ -24,6 +17,13 @@ export default class ColumnDataProvider {
|
|
|
24
17
|
get stores() {
|
|
25
18
|
return this.dataSources;
|
|
26
19
|
}
|
|
20
|
+
constructor() {
|
|
21
|
+
this.sorting = null;
|
|
22
|
+
this.dataSources = reduce(columnTypes, (sources, k) => {
|
|
23
|
+
sources[k] = new DataStore(k);
|
|
24
|
+
return sources;
|
|
25
|
+
}, {});
|
|
26
|
+
}
|
|
27
27
|
column(c, pin) {
|
|
28
28
|
return this.getColumn(c, pin || 'rgCol');
|
|
29
29
|
}
|
|
@@ -189,3 +189,4 @@ export default class ColumnDataProvider {
|
|
|
189
189
|
return 'rgCol';
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
|
+
//# sourceMappingURL=column.data.provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.data.provider.js","sourceRoot":"","sources":["../../src/services/column.data.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import reduce from 'lodash/reduce';\nimport each from 'lodash/each';\nimport find from 'lodash/find';\n\nimport DataStore, { getSourceItem, getSourceItemVirtualIndexByProp, Groups, setSourceByVirtualIndex } from '../store/dataSource/data.store';\nimport { columnTypes } from '../store/storeTypes';\nimport { ColumnItems } from './dimension.provider';\nimport { RevoGrid } from '../interfaces';\nimport ColumnRegular = RevoGrid.ColumnRegular;\nimport DimensionCols = RevoGrid.DimensionCols;\nimport ColumnProp = RevoGrid.ColumnProp;\nimport GroupingColumnPlugin, { ColumnGrouping, isColGrouping } from '../plugins/groupingColumn/grouping.col.plugin';\n\nexport type ColumnCollection = {\n columns: ColumnItems;\n columnGrouping: ColumnGrouping;\n maxLevel: number;\n sort: Record<ColumnProp, ColumnRegular>;\n};\n\nexport type ColumnDataSources = Record<DimensionCols, DataStore<ColumnRegular, DimensionCols>>;\ntype Sorting = Record<ColumnProp, ColumnRegular>;\ntype SortingOrder = Record<ColumnProp, 'asc' | 'desc'>;\n\nexport default class ColumnDataProvider {\n private readonly dataSources: ColumnDataSources;\n sorting: Sorting | null = null;\n\n get order() {\n return reduce(\n this.sorting,\n (r: SortingOrder, c, prop) => {\n r[prop] = c.order;\n return r;\n },\n {},\n );\n }\n\n get stores() {\n return this.dataSources;\n }\n constructor() {\n this.dataSources = reduce(\n columnTypes,\n (sources: Partial<ColumnDataSources>, k: DimensionCols) => {\n sources[k] = new DataStore(k);\n return sources;\n },\n {},\n ) as ColumnDataSources;\n }\n\n column(c: number, pin?: RevoGrid.DimensionColPin): ColumnRegular | undefined {\n return this.getColumn(c, pin || 'rgCol');\n }\n\n getColumn(virtualIndex: number, type: DimensionCols): ColumnRegular | undefined {\n return getSourceItem(this.dataSources[type].store, virtualIndex);\n }\n\n getRawColumns() {\n return reduce(this.dataSources, (result: ColumnItems, item, type: RevoGrid.DimensionCols) => {\n result[type] = item.store.get('source');\n return result;\n }, {\n rgCol: [],\n colPinStart: [],\n colPinEnd: []\n });\n }\n\n getColumns(type: DimensionCols | 'all' = 'all') {\n if (type !== 'all') {\n return this.dataSources[type].store.get('source');\n }\n return columnTypes.reduce((r: ColumnRegular[], t) => {\n r.push(...this.dataSources[t].store.get('source'));\n return r;\n }, []);\n }\n\n getColumnIndexByProp(prop: ColumnProp, type: DimensionCols): number {\n return getSourceItemVirtualIndexByProp(this.dataSources[type].store, prop);\n }\n\n getColumnByProp(prop: ColumnProp, type: DimensionCols): ColumnRegular | undefined {\n const items = this.dataSources[type].store.get('source');\n return find(items, { prop });\n }\n\n refreshByType(type: DimensionCols) {\n this.dataSources[type].refresh();\n }\n\n setColumns(data: ColumnCollection): ColumnCollection {\n each(columnTypes, k => {\n // set columns data\n this.dataSources[k].updateData(data.columns[k], {\n // max depth level\n depth: data.maxLevel,\n\n // groups\n groups: reduce(\n data.columnGrouping[k],\n (res: Groups, g) => {\n if (!res[g.level]) {\n res[g.level] = [];\n }\n res[g.level].push(g);\n return res;\n },\n {},\n ),\n });\n });\n this.sorting = data.sort;\n return data;\n }\n\n updateColumns(cols: ColumnRegular[]) {\n // collect column by type and propert\n const columnByKey: Partial<Record<DimensionCols, Record<ColumnProp, ColumnRegular>>> = cols.reduce(\n (res: Partial<Record<DimensionCols, Record<ColumnProp, ColumnRegular>>>, c) => {\n const type = ColumnDataProvider.getColumnType(c);\n if (!res[type]) {\n res[type] = {};\n }\n res[type][c.prop] = c;\n return res;\n },\n {},\n );\n\n // find indexes in source\n const colByIndex: Partial<Record<DimensionCols, Record<number, ColumnRegular>>> = {};\n each(columnByKey, (colsToUpdate, type: DimensionCols) => {\n const items = this.dataSources[type].store.get('source');\n colByIndex[type] = items.reduce((result: Record<number, ColumnRegular>, rgCol, index) => {\n const colToUpdateIfExists = colsToUpdate[rgCol.prop];\n if (colToUpdateIfExists) {\n result[index] = colToUpdateIfExists;\n }\n return result;\n }, {});\n });\n each(colByIndex, (colsToUpdate, type: DimensionCols) => setSourceByVirtualIndex(this.dataSources[type].store, colsToUpdate));\n }\n\n updateColumn(column: ColumnRegular, index: number) {\n const type = ColumnDataProvider.getColumnType(column);\n setSourceByVirtualIndex(this.dataSources[type].store, { [index]: column });\n }\n\n updateColumnSorting(column: ColumnRegular, index: number, sorting: 'asc' | 'desc', additive: boolean): ColumnRegular {\n if (!additive) {\n this.clearSorting();\n }\n column.order = sorting;\n this.sorting[column.prop] = column;\n this.updateColumn(column, index);\n return column;\n }\n\n clearSorting(): void {\n const types = reduce(\n this.sorting,\n (r: { [key in Partial<DimensionCols>]: boolean }, c: ColumnRegular) => {\n const k = ColumnDataProvider.getColumnType(c);\n r[k] = true;\n return r;\n },\n {} as { [key in Partial<DimensionCols>]: boolean },\n );\n each(types, (_, type: DimensionCols) => {\n const cols = this.dataSources[type].store.get('source');\n each(cols, (c: ColumnRegular) => (c.order = undefined));\n this.dataSources[type].setData({ source: [...cols] });\n });\n\n this.sorting = {};\n }\n\n static getSizes(cols: ColumnRegular[]): RevoGrid.ViewSettingSizeProp {\n return reduce(\n cols,\n (res: RevoGrid.ViewSettingSizeProp, c: ColumnRegular, i: number) => {\n if (c.size) {\n res[i] = c.size;\n }\n return res;\n },\n {},\n );\n }\n\n static getColumnByProp(columns: RevoGrid.ColumnData, prop: ColumnProp): ColumnRegular | undefined {\n return find(columns, c => {\n if (isColGrouping(c)) {\n return ColumnDataProvider.getColumnByProp(c.children, prop);\n }\n return c.prop === prop;\n }) as ColumnRegular | undefined;\n }\n\n // columns processing\n static getColumns(columns: RevoGrid.ColumnData, level: number = 0, types?: RevoGrid.ColumnTypes): ColumnCollection {\n return reduce(\n columns,\n (res: ColumnCollection, colData: RevoGrid.ColumnDataSchema) => {\n /** Grouped column */\n if (isColGrouping(colData)) {\n return GroupingColumnPlugin.gatherGroup(res, colData, ColumnDataProvider.getColumns(colData.children, level + 1, types), level);\n }\n /** Regular column */\n const regularColumn = {\n ...(colData.columnType && types && types[colData.columnType]),\n ...colData,\n };\n // not pin\n if (!regularColumn.pin) {\n res.columns.rgCol.push(regularColumn);\n // pin\n } else {\n res.columns[regularColumn.pin].push(regularColumn);\n }\n if (regularColumn.order) {\n res.sort[regularColumn.prop] = regularColumn;\n }\n\n // trigger setup hook if present\n regularColumn.beforeSetup && regularColumn.beforeSetup(regularColumn);\n return res;\n },\n {\n columns: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n columnGrouping: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n maxLevel: level,\n sort: {},\n },\n );\n }\n\n static getColumnType(rgCol: ColumnRegular): DimensionCols {\n if (rgCol.pin) {\n return rgCol.pin;\n }\n return 'rgCol';\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.provider.js","sourceRoot":"","sources":["../../src/services/data.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AAEnC,OAAO,SAAS,EAAE,EAAE,aAAa,EAAE,oBAAoB,EAAU,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACjI,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAU1D,MAAM,OAAO,YAAY;EAEvB,YAAoB,iBAAoC;IAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAClB,QAAQ,EACR,CAAC,OAAgC,EAAE,CAAgB,EAAE,EAAE;MACrD,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;MAC9B,OAAO,OAAO,CAAC;IACjB,CAAC,EACD,EAAE,CACe,CAAC;EACtB,CAAC;EAED,OAAO,CACL,IAAgB,EAChB,OAAsB,OAAO,EAC7B,QAAsF,EACtF,MAAM,GAAG,KAAK;IAEd,iBAAiB;IACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;EACd,CAAC;EAED,QAAQ,CAAC,YAAoB,EAAE,OAAsB,OAAO;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;IACtC,OAAO,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;EAC5C,CAAC;EAED,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAiC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAClB,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;EAC1E,CAAC;EAED,OAAO,CAAC,OAA8B,KAAK;IACzC,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;MACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KACzB;IACD,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;EAC/D,CAAC;EAED,YAAY,CAAC,OAAsB,OAAO;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;EACnD,CAAC;EAED,WAAW,CAAC,EAAE,KAAK,EAAqB,EAAE,OAAsB,OAAO;IACrE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;EACtD,CAAC;EAED,UAAU,CAAC,OAAyB,EAAE,OAAsB,OAAO;IACjE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,IAAI,KAAK,OAAO,EAAE;MACpB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;KACzE;EACH,CAAC;CACF","sourcesContent":["import reduce from 'lodash/reduce';\n\nimport DataStore, { getSourceItem, getVisibleSourceItem, Groups, setSourceByVirtualIndex } from '../store/dataSource/data.store';\nimport { isRowType, rowTypes } from '../store/storeTypes';\nimport DimensionProvider from './dimension.provider';\nimport { RevoGrid, Edition } from '../interfaces';\nimport { Trimmed } from '../plugins/trimmed/trimmed.plugin';\nimport { GroupLabelTemplateFunc } from '../plugins/groupingRow/grouping.row.types';\nimport DimensionRows = RevoGrid.DimensionRows;\nimport DataType = RevoGrid.DataType;\n\nexport type RowDataSources = { [T in DimensionRows]: DataStore<DataType, DimensionRows> };\n\nexport class DataProvider {\n public readonly stores: RowDataSources;\n constructor(private dimensionProvider: DimensionProvider) {\n this.stores = reduce(\n rowTypes,\n (sources: Partial<RowDataSources>, k: DimensionRows) => {\n sources[k] = new DataStore(k);\n return sources;\n },\n {},\n ) as RowDataSources;\n }\n\n setData(\n data: DataType[],\n type: DimensionRows = 'rgRow',\n grouping?: { depth: number; groups?: Groups, customRenderer?: GroupLabelTemplateFunc },\n silent = false,\n ): DataType[] {\n // set rgRow data\n this.stores[type].updateData([...data], grouping, silent);\n this.dimensionProvider.setData(data, type, type !== 'rgRow');\n return data;\n }\n\n getModel(virtualIndex: number, type: DimensionRows = 'rgRow') {\n const store = this.stores[type].store;\n return getSourceItem(store, virtualIndex);\n }\n\n setCellData({ type, rowIndex, prop, val }: Edition.BeforeSaveDataDetails) {\n const model = this.getModel(rowIndex, type);\n model[prop] = val;\n setSourceByVirtualIndex(this.stores[type].store, { [rowIndex]: model });\n }\n\n refresh(type: DimensionRows | 'all' = 'all') {\n if (isRowType(type)) {\n this.refreshItems(type);\n }\n rowTypes.forEach((t: DimensionRows) => this.refreshItems(t));\n }\n\n refreshItems(type: DimensionRows = 'rgRow') {\n const items = this.stores[type].store.get('items');\n this.stores[type].setData({ items: [...items] });\n }\n\n setGrouping({ depth }: { depth: number }, type: DimensionRows = 'rgRow') {\n this.stores[type].setData({ groupingDepth: depth });\n }\n\n setTrimmed(trimmed: Partial<Trimmed>, type: DimensionRows = 'rgRow') {\n const store = this.stores[type];\n store.addTrimmed(trimmed);\n if (type === 'rgRow') {\n this.dimensionProvider.setData(getVisibleSourceItem(store.store), type);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dimension.provider.js","sourceRoot":"","sources":["../../src/services/dimension.provider.ts"],"names":[],"mappings":"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","sourcesContent":["import reduce from 'lodash/reduce';\nimport { columnTypes, rowTypes } from '../store/storeTypes';\nimport DimensionStore from '../store/dimension/dimension.store';\nimport ViewportProvider from './viewport.provider';\nimport { RevoGrid } from '../interfaces';\nimport { getItemByIndex } from '../store/dimension/dimension.helpers';\n\nexport type ColumnItems = Record<RevoGrid.DimensionCols, RevoGrid.ColumnRegular[]>;\n\nexport type DimensionStores = { [T in RevoGrid.MultiDimensionType]: DimensionStore };\nexport default class DimensionProvider {\n public readonly stores: DimensionStores;\n constructor(private viewports: ViewportProvider) {\n this.stores = reduce(\n [...rowTypes, ...columnTypes],\n (sources: Partial<DimensionStores>, k: RevoGrid.MultiDimensionType) => {\n sources[k] = new DimensionStore();\n return sources;\n },\n {},\n ) as DimensionStores;\n }\n\n setDimensionSize(dimensionType: RevoGrid.MultiDimensionType, sizes: RevoGrid.ViewSettingSizeProp): void {\n this.stores[dimensionType].setDimensionSize(sizes);\n this.viewports.stores[dimensionType].setViewPortDimension(sizes);\n }\n\n setRealSize(realCount: number, type: RevoGrid.MultiDimensionType): void {\n this.viewports.stores[type].setViewport({ realCount });\n this.stores[type].setRealSize(realCount);\n }\n\n /**\n * Apply new custom sizes to dimension and view port\n * @param type - dimension type\n * @param sizes - new custom sizes\n * @param keepOld - keep old sizes merge new with old\n */\n setCustomSizes(type: RevoGrid.MultiDimensionType, sizes: RevoGrid.ViewSettingSizeProp, keepOld = false) {\n let newSizes = sizes;\n if (keepOld) {\n const oldSizes = this.stores[type].store.get('sizes');\n newSizes = {\n ...oldSizes,\n ...sizes,\n };\n }\n this.stores[type].setDimensionSize(newSizes);\n this.viewports.stores[type].setViewPortDimension(\n newSizes,\n !keepOld ? this.stores[type].store.get('originItemSize') : undefined\n );\n }\n\n /**\n * Sets dimension data and view port coordinate\n * @param items - data/column items\n * @param type - dimension type\n */\n setData(items: RevoGrid.ColumnRegular[] | RevoGrid.DataType[], type: RevoGrid.MultiDimensionType, noVirtual = false) {\n this.setRealSize(items.length, type);\n if (noVirtual) {\n this.setNoVirtual(type);\n }\n this.setViewPortCoordinate({\n coordinate: this.viewports.stores[type].store.get('lastCoordinate'),\n type,\n });\n }\n\n private setNoVirtual(type: RevoGrid.MultiDimensionType) {\n const dimension: RevoGrid.DimensionSettingsState = this.stores[type].getCurrentState();\n this.viewports.stores[type].setViewport({ virtualSize: dimension.realSize });\n }\n\n dropColumns() {\n for (let type of columnTypes) {\n this.stores[type].drop();\n this.viewports.stores[type].clear();\n }\n }\n\n setColumns(\n type: RevoGrid.MultiDimensionType,\n newLength: number,\n sizes?: RevoGrid.ViewSettingSizeProp,\n noVirtual = false\n ) {\n this.setRealSize(newLength, type);\n this.setCustomSizes(type, sizes);\n\n if (noVirtual) {\n this.setNoVirtual(type);\n }\n this.setViewPortCoordinate({\n coordinate: this.viewports.stores[type].store.get('lastCoordinate'),\n type,\n });\n }\n\n setViewPortCoordinate({ coordinate, type }: { coordinate: number; type: RevoGrid.MultiDimensionType }): void {\n const dimension: RevoGrid.DimensionSettingsState = this.stores[type].getCurrentState();\n this.viewports.stores[type].setViewPortCoordinate(coordinate, dimension);\n }\n\n getViewPortPos(e: RevoGrid.ViewPortScrollEvent): number {\n const dimension: RevoGrid.DimensionSettingsState = this.stores[e.dimension].getCurrentState();\n const item = getItemByIndex(dimension, e.coordinate);\n\n return item.start;\n }\n\n setSettings(data: Partial<RevoGrid.DimensionSettingsState>, dimensionType: RevoGrid.DimensionType): void {\n let stores: RevoGrid.MultiDimensionType[] = [];\n switch (dimensionType) {\n case 'rgCol':\n stores = columnTypes;\n break;\n case 'rgRow':\n stores = rowTypes;\n break;\n }\n for (let s of stores) {\n this.stores[s].setStore(data);\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localScrollService.js","sourceRoot":"","sources":["../../src/services/localScrollService.ts"],"names":[],"mappings":"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","sourcesContent":["import { scaleValue } from '../utils/utils';\nimport { RevoGrid } from '../interfaces';\n\ninterface Config {\n beforeScroll(e: RevoGrid.ViewPortScrollEvent): void;\n afterScroll(e: RevoGrid.ViewPortScrollEvent): void;\n}\n\ntype Params = {\n contentSize: number;\n virtualContentSize?: number;\n clientSize: number;\n virtualSize: number;\n maxSize?: number;\n};\n\nconst initialParams: Params = {\n contentSize: 0,\n clientSize: 0,\n virtualSize: 0,\n maxSize: 0,\n};\n\nexport default class LocalScrollService {\n private preventArtificialScroll: Record<RevoGrid.DimensionType, number|null> = { rgRow: null, rgCol: null };\n // to check if scroll changed\n private previousScroll: Record<RevoGrid.DimensionType, number> = { rgRow: 0, rgCol: 0 };\n private params: Record<RevoGrid.DimensionType, Params> = { rgRow: { ...initialParams }, rgCol: { ...initialParams } };\n\n constructor(private cfg: Config) {}\n\n static getVirtualContentSize(contentSize: number, clientSize: number, virtualSize: number = 0): number {\n return contentSize + (virtualSize ? clientSize - virtualSize : 0);\n }\n\n setParams(params: Params, dimension: RevoGrid.DimensionType) {\n const virtualContentSize = LocalScrollService.getVirtualContentSize(params.contentSize, params.clientSize, params.virtualSize);\n this.params[dimension] = {\n ...params,\n maxSize: virtualContentSize - params.clientSize,\n virtualContentSize,\n };\n }\n\n // apply scroll values after scroll done\n setScroll(e: RevoGrid.ViewPortScrollEvent) {\n this.cancelScroll(e.dimension);\n this.preventArtificialScroll[e.dimension] = window.requestAnimationFrame(() => {\n const params = this.getParams(e.dimension);\n e.coordinate = Math.ceil(e.coordinate);\n this.previousScroll[e.dimension] = this.wrapCoordinate(e.coordinate, params);\n this.preventArtificialScroll[e.dimension] = null;\n this.cfg.afterScroll({\n ...e,\n coordinate: params.virtualSize ? this.convert(e.coordinate, params, false) : e.coordinate,\n });\n });\n }\n\n // initiate scrolling event\n scroll(coordinate: number, dimension: RevoGrid.DimensionType, force: boolean = false, delta?: number) {\n this.cancelScroll(dimension);\n if (!force && this.previousScroll[dimension] === coordinate) {\n this.previousScroll[dimension] = 0;\n return;\n }\n\n const param: Params = this.getParams(dimension);\n this.cfg.beforeScroll({\n dimension: dimension,\n coordinate: param.virtualSize ? this.convert(coordinate, param) : coordinate,\n delta,\n });\n }\n\n private getParams(dimension: RevoGrid.DimensionType): Params {\n return this.params[dimension];\n }\n\n // check if scroll outside of region to avoid looping\n private wrapCoordinate(c: number, param: Params): number {\n if (c < 0) {\n return 0;\n }\n\n if (c > param.maxSize) {\n return param.maxSize;\n }\n return c;\n }\n\n // prevent already started scroll, performance optimization\n private cancelScroll(dimension: RevoGrid.DimensionType): boolean {\n if (typeof this.preventArtificialScroll[dimension] === 'number') {\n window.cancelAnimationFrame(this.preventArtificialScroll[dimension]);\n this.preventArtificialScroll[dimension] = null;\n return true;\n }\n return false;\n }\n\n /* convert virtual to real and back, scale range */\n private convert(pos: number, param: Params, toReal: boolean = true): number {\n const minRange: number = param.clientSize;\n const from: [number, number] = [0, param.virtualContentSize - minRange];\n const to: [number, number] = [0, param.contentSize - param.virtualSize];\n if (toReal) {\n return scaleValue(pos, from, to);\n }\n return scaleValue(pos, to, from);\n }\n}\n"]}
|