@revolist/revogrid 4.12.3 → 4.12.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.
Files changed (69) hide show
  1. package/dist/cjs/{column.drag.plugin-c4e46169.js → column.drag.plugin-f196a293.js} +3 -3
  2. package/dist/cjs/{column.drag.plugin-c4e46169.js.map → column.drag.plugin-f196a293.js.map} +1 -1
  3. package/dist/cjs/{column.service-4339fa5d.js → column.service-b59380a3.js} +6 -2
  4. package/dist/cjs/column.service-b59380a3.js.map +1 -0
  5. package/dist/cjs/{header-cell-renderer-aa96a9bd.js → header-cell-renderer-a66fe375.js} +2 -2
  6. package/dist/cjs/{header-cell-renderer-aa96a9bd.js.map → header-cell-renderer-a66fe375.js.map} +1 -1
  7. package/dist/cjs/index.cjs.js +15 -4
  8. package/dist/cjs/index.cjs.js.map +1 -1
  9. package/dist/cjs/revo-grid.cjs.entry.js +3 -3
  10. package/dist/cjs/revogr-attribution_7.cjs.entry.js +1 -1
  11. package/dist/cjs/revogr-data_4.cjs.entry.js +4 -4
  12. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  13. package/dist/cjs/{sorting.sign-b22d3d68.js → sorting.sign-a1e9d97a.js} +2 -2
  14. package/dist/cjs/{sorting.sign-b22d3d68.js.map → sorting.sign-a1e9d97a.js.map} +1 -1
  15. package/dist/collection/components/data/revogr-data.js +1 -1
  16. package/dist/collection/components/data/revogr-data.js.map +1 -1
  17. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +1 -0
  18. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  19. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
  20. package/dist/collection/utils/column.utils.js +1 -1
  21. package/dist/collection/utils/column.utils.js.map +1 -1
  22. package/dist/esm/{column.drag.plugin-94964d01.js → column.drag.plugin-caf3ce50.js} +3 -3
  23. package/dist/esm/{column.drag.plugin-94964d01.js.map → column.drag.plugin-caf3ce50.js.map} +1 -1
  24. package/dist/esm/{column.service-c0d404a6.js → column.service-f39c0a1d.js} +4 -3
  25. package/dist/esm/column.service-f39c0a1d.js.map +1 -0
  26. package/dist/esm/{header-cell-renderer-0f5bd4a9.js → header-cell-renderer-31f53644.js} +2 -2
  27. package/dist/esm/{header-cell-renderer-0f5bd4a9.js.map → header-cell-renderer-31f53644.js.map} +1 -1
  28. package/dist/esm/index.js +5 -5
  29. package/dist/esm/revo-grid.entry.js +3 -3
  30. package/dist/esm/revogr-attribution_7.entry.js +1 -1
  31. package/dist/esm/revogr-data_4.entry.js +4 -4
  32. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  33. package/dist/esm/{sorting.sign-a92ff239.js → sorting.sign-c02e3b12.js} +2 -2
  34. package/dist/esm/{sorting.sign-a92ff239.js.map → sorting.sign-c02e3b12.js.map} +1 -1
  35. package/dist/revo-grid/column.drag.plugin-caf3ce50.js +5 -0
  36. package/dist/revo-grid/{column.drag.plugin-94964d01.js.map → column.drag.plugin-caf3ce50.js.map} +1 -1
  37. package/dist/revo-grid/column.service-f39c0a1d.js +5 -0
  38. package/dist/revo-grid/column.service-f39c0a1d.js.map +1 -0
  39. package/dist/revo-grid/{header-cell-renderer-0f5bd4a9.js → header-cell-renderer-31f53644.js} +2 -2
  40. package/dist/revo-grid/index.esm.js +1 -1
  41. package/dist/revo-grid/index.esm.js.map +1 -1
  42. package/dist/revo-grid/revo-grid.entry.js +1 -1
  43. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  44. package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
  45. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  46. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  47. package/dist/revo-grid/{sorting.sign-a92ff239.js → sorting.sign-c02e3b12.js} +2 -2
  48. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +1 -0
  49. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +1 -1
  50. package/dist/types/utils/column.utils.d.ts +1 -1
  51. package/hydrate/index.js +2 -2
  52. package/hydrate/index.mjs +2 -2
  53. package/package.json +1 -1
  54. package/standalone/column.service.js +3 -2
  55. package/standalone/column.service.js.map +1 -1
  56. package/standalone/index.js +1 -1
  57. package/standalone/revo-grid.js +1 -1
  58. package/standalone/revo-grid.js.map +1 -1
  59. package/standalone/revogr-data2.js +2 -2
  60. package/standalone/revogr-data2.js.map +1 -1
  61. package/standalone/revogr-header2.js +1 -1
  62. package/standalone/revogr-overlay-selection2.js +1 -1
  63. package/dist/cjs/column.service-4339fa5d.js.map +0 -1
  64. package/dist/esm/column.service-c0d404a6.js.map +0 -1
  65. package/dist/revo-grid/column.drag.plugin-94964d01.js +0 -5
  66. package/dist/revo-grid/column.service-c0d404a6.js +0 -5
  67. package/dist/revo-grid/column.service-c0d404a6.js.map +0 -1
  68. /package/dist/revo-grid/{header-cell-renderer-0f5bd4a9.js.map → header-cell-renderer-31f53644.js.map} +0 -0
  69. /package/dist/revo-grid/{sorting.sign-a92ff239.js.map → sorting.sign-c02e3b12.js.map} +0 -0
@@ -1 +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 {\n getPhysical,\n setItems,\n columnTypes,\n type TrimmedEntity,\n type DSourceState,\n} from '@store';\nimport type {\n BeforeSaveDataDetails,\n ColumnRegular,\n DataType,\n DimensionRows,\n PluginProviders,\n} from '@type';\n\nimport { BasePlugin } from '../base.plugin';\nimport { FILTER_TRIMMED_TYPE } from '../filter/filter.plugin';\n\nimport type { Observable, ColumnCollection } from '../../utils';\nimport { SortingPlugin } from '../sorting/sorting.plugin';\n\nimport {\n GROUPING_ROW_TYPE,\n PSEUDO_GROUP_COLUMN,\n} from './grouping.const';\nimport { doExpand, doCollapse } from './grouping.row.expand.service';\nimport type {\n BeforeSourceSetEvent,\n ExpandedOptions,\n GroupingOptions,\n OnExpandEvent,\n} from './grouping.row.types';\nimport {\n gatherGrouping,\n getExpanded,\n getSource,\n isGrouping,\n isGroupingColumn,\n} from './grouping.service';\nimport {\n processDoubleConversionTrimmed,\n TRIMMED_GROUPING,\n} from './grouping.trimmed.service';\n\nexport * from './grouping.row.expand.service';\nexport * from './grouping.row.types';\nexport * from './grouping.service';\nexport * from './grouping.row.renderer';\n\ndeclare global {\n interface HTMLRevoGridElementEventMap {\n groupexpandclick: OnExpandEvent;\n }\n}\n\nexport class GroupingRowPlugin extends BasePlugin {\n private options: GroupingOptions | undefined;\n\n getStore(\n type: DimensionRows = GROUPING_ROW_TYPE,\n ): Observable<DSourceState<DataType, DimensionRows>> {\n return this.providers.data.stores[type].store;\n }\n\n constructor(\n public revogrid: HTMLRevoGridElement,\n public providers: PluginProviders,\n ) {\n super(revogrid, providers);\n }\n\n // befoce cell focus\n private onFocus(e: CustomEvent<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 } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n );\n let newTrimmed = this.getStore().get('trimmed')[TRIMMED_GROUPING];\n\n let i = getPhysical(this.getStore(), virtualIndex);\n const isExpanded = getExpanded(source[i]);\n if (!isExpanded) {\n const { trimmed, items } = doExpand(\n virtualIndex,\n source,\n this.getStore().get('items'),\n );\n newTrimmed = { ...newTrimmed, ...trimmed };\n if (items) {\n setItems(this.getStore(), items);\n }\n } else {\n const { trimmed } = doCollapse(i, source);\n newTrimmed = { ...newTrimmed, ...trimmed };\n this.revogrid.clearFocus();\n }\n\n this.getStore().set('source', source);\n this.revogrid.addTrimmed(newTrimmed, TRIMMED_GROUPING);\n }\n\n private setColumnGrouping(cols?: 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 } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n );\n const items = this.getStore().get('items');\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.getStore().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 private isSortingRunning() {\n const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);\n return !!sortingPlugin?.sortingPromise;\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 /**\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 } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n true,\n );\n const expanded: ExpandedOptions = {\n prevExpanded,\n ...options,\n };\n /**\n * Group again\n * @param oldNewIndexMap - provides us mapping with new indexes vs old indexes\n */\n const {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n } = gatherGrouping(source, this.options?.props || [], expanded);\n\n const customRenderer = options?.groupLabelTemplate;\n\n // setup source\n this.providers.data.setData(\n sourceWithGroups,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\n { depth, customRenderer },\n true,\n );\n this.updateTrimmed(\n trimmed,\n oldNewIndexes ?? {},\n oldNewIndexMap,\n );\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 let preservedExpanded: ExpandedOptions['prevExpanded'] = {};\n if (this.options?.preserveGroupingOnUpdate !== false) {\n let { prevExpanded } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n true,\n );\n preservedExpanded = prevExpanded;\n }\n const source = data.source.filter(s => !isGrouping(s));\n const options: ExpandedOptions = {\n ...(this.revogrid.grouping || {}),\n prevExpanded: preservedExpanded,\n };\n const {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n } = gatherGrouping(source, this.options?.props || [], options);\n data.source = sourceWithGroups;\n this.providers.data.setGrouping({ depth });\n this.updateTrimmed(trimmed, oldNewIndexMap);\n }\n\n /**\n * External call to apply grouping. Called by revogrid when prop changed.\n */\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 (!this.options?.props?.length) {\n this.clearGrouping();\n return;\n }\n // props exist and source initd\n const { source } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n );\n if (source.length) {\n this.doSourceUpdate({ ...options });\n }\n // props exist and columns initd\n for (let t of columnTypes) {\n if (this.setColumnGrouping(this.providers.column.getColumns(t))) {\n this.providers.column.refreshByType(t);\n break;\n }\n }\n\n // if has any grouping subscribe to events again\n /** if grouping present and new data source arrived */\n this.addEventListener('beforesourceset', ({ detail }) => {\n if (!(this.options?.props?.length && detail?.source?.length)) {\n return;\n }\n // if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply\n if (this.isSortingRunning()) {\n return;\n }\n this.onDataSet(detail);\n });\n this.addEventListener('beforecolumnsset', ({ detail }) => {\n this.setColumns(detail);\n });\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(\n 'beforetrimmed',\n ({ detail: { trimmed, trimmedType } }) =>\n this.beforeTrimmedApply(trimmed, trimmedType),\n );\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', () => {\n if (!this.options?.props?.length) {\n return;\n }\n this.doSourceUpdate({ ...this.options });\n });\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('groupexpandclick', e => this.onExpand(e.detail));\n }\n\n // clear grouping\n clearGrouping() {\n // clear columns\n columnTypes.forEach(t => {\n const cols = this.providers.column.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.column.refreshByType(t);\n }\n });\n // clear rows\n const { source, oldNewIndexes } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n true,\n );\n this.providers.data.setData(\n source,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\n undefined,\n true,\n );\n this.updateTrimmed(undefined, undefined, oldNewIndexes);\n }\n\n private updateTrimmed(\n trimmedGroup: TrimmedEntity = {},\n firstLevelMap: Record<number, number> = {},\n secondLevelMap?: Record<number, number>,\n ) {\n // map previously trimmed data\n const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(\n this.getStore().get('trimmed'),\n firstLevelMap,\n secondLevelMap,\n );\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"]}
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 {\n getPhysical,\n setItems,\n columnTypes,\n type TrimmedEntity,\n type DSourceState,\n} from '@store';\nimport type {\n BeforeSaveDataDetails,\n ColumnRegular,\n DataType,\n DimensionRows,\n PluginProviders,\n} from '@type';\n\nimport { BasePlugin } from '../base.plugin';\nimport { FILTER_TRIMMED_TYPE } from '../filter/filter.plugin';\n\nimport type { Observable, ColumnCollection } from '../../utils';\nimport { SortingPlugin } from '../sorting/sorting.plugin';\n\nimport {\n GROUPING_ROW_TYPE,\n PSEUDO_GROUP_COLUMN,\n} from './grouping.const';\nimport { doExpand, doCollapse } from './grouping.row.expand.service';\nimport type {\n BeforeSourceSetEvent,\n ExpandedOptions,\n GroupingOptions,\n OnExpandEvent,\n} from './grouping.row.types';\nimport {\n gatherGrouping,\n getExpanded,\n getSource,\n isGrouping,\n isGroupingColumn,\n} from './grouping.service';\nimport {\n processDoubleConversionTrimmed,\n TRIMMED_GROUPING,\n} from './grouping.trimmed.service';\n\nexport * from './grouping.const';\nexport * from './grouping.row.expand.service';\nexport * from './grouping.row.types';\nexport * from './grouping.service';\nexport * from './grouping.row.renderer';\n\ndeclare global {\n interface HTMLRevoGridElementEventMap {\n groupexpandclick: OnExpandEvent;\n }\n}\n\nexport class GroupingRowPlugin extends BasePlugin {\n private options: GroupingOptions | undefined;\n\n getStore(\n type: DimensionRows = GROUPING_ROW_TYPE,\n ): Observable<DSourceState<DataType, DimensionRows>> {\n return this.providers.data.stores[type].store;\n }\n\n constructor(\n public revogrid: HTMLRevoGridElement,\n public providers: PluginProviders,\n ) {\n super(revogrid, providers);\n }\n\n // befoce cell focus\n private onFocus(e: CustomEvent<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 } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n );\n let newTrimmed = this.getStore().get('trimmed')[TRIMMED_GROUPING];\n\n let i = getPhysical(this.getStore(), virtualIndex);\n const isExpanded = getExpanded(source[i]);\n if (!isExpanded) {\n const { trimmed, items } = doExpand(\n virtualIndex,\n source,\n this.getStore().get('items'),\n );\n newTrimmed = { ...newTrimmed, ...trimmed };\n if (items) {\n setItems(this.getStore(), items);\n }\n } else {\n const { trimmed } = doCollapse(i, source);\n newTrimmed = { ...newTrimmed, ...trimmed };\n this.revogrid.clearFocus();\n }\n\n this.getStore().set('source', source);\n this.revogrid.addTrimmed(newTrimmed, TRIMMED_GROUPING);\n }\n\n private setColumnGrouping(cols?: 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 } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n );\n const items = this.getStore().get('items');\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.getStore().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 private isSortingRunning() {\n const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);\n return !!sortingPlugin?.sortingPromise;\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 /**\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 } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n true,\n );\n const expanded: ExpandedOptions = {\n prevExpanded,\n ...options,\n };\n /**\n * Group again\n * @param oldNewIndexMap - provides us mapping with new indexes vs old indexes\n */\n const {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n } = gatherGrouping(source, this.options?.props || [], expanded);\n\n const customRenderer = options?.groupLabelTemplate;\n\n // setup source\n this.providers.data.setData(\n sourceWithGroups,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\n { depth, customRenderer },\n true,\n );\n this.updateTrimmed(\n trimmed,\n oldNewIndexes ?? {},\n oldNewIndexMap,\n );\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 let preservedExpanded: ExpandedOptions['prevExpanded'] = {};\n if (this.options?.preserveGroupingOnUpdate !== false) {\n let { prevExpanded } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n true,\n );\n preservedExpanded = prevExpanded;\n }\n const source = data.source.filter(s => !isGrouping(s));\n const options: ExpandedOptions = {\n ...(this.revogrid.grouping || {}),\n prevExpanded: preservedExpanded,\n };\n const {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n } = gatherGrouping(source, this.options?.props || [], options);\n data.source = sourceWithGroups;\n this.providers.data.setGrouping({ depth });\n this.updateTrimmed(trimmed, oldNewIndexMap);\n }\n\n /**\n * External call to apply grouping. Called by revogrid when prop changed.\n */\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 (!this.options?.props?.length) {\n this.clearGrouping();\n return;\n }\n // props exist and source initd\n const { source } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n );\n if (source.length) {\n this.doSourceUpdate({ ...options });\n }\n // props exist and columns initd\n for (let t of columnTypes) {\n if (this.setColumnGrouping(this.providers.column.getColumns(t))) {\n this.providers.column.refreshByType(t);\n break;\n }\n }\n\n // if has any grouping subscribe to events again\n /** if grouping present and new data source arrived */\n this.addEventListener('beforesourceset', ({ detail }) => {\n if (!(this.options?.props?.length && detail?.source?.length)) {\n return;\n }\n // if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply\n if (this.isSortingRunning()) {\n return;\n }\n this.onDataSet(detail);\n });\n this.addEventListener('beforecolumnsset', ({ detail }) => {\n this.setColumns(detail);\n });\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(\n 'beforetrimmed',\n ({ detail: { trimmed, trimmedType } }) =>\n this.beforeTrimmedApply(trimmed, trimmedType),\n );\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', () => {\n if (!this.options?.props?.length) {\n return;\n }\n this.doSourceUpdate({ ...this.options });\n });\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('groupexpandclick', e => this.onExpand(e.detail));\n }\n\n // clear grouping\n clearGrouping() {\n // clear columns\n columnTypes.forEach(t => {\n const cols = this.providers.column.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.column.refreshByType(t);\n }\n });\n // clear rows\n const { source, oldNewIndexes } = getSource(\n this.getStore().get('source'),\n this.getStore().get('proxyItems'),\n true,\n );\n this.providers.data.setData(\n source,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\n undefined,\n true,\n );\n this.updateTrimmed(undefined, undefined, oldNewIndexes);\n }\n\n private updateTrimmed(\n trimmedGroup: TrimmedEntity = {},\n firstLevelMap: Record<number, number> = {},\n secondLevelMap?: Record<number, number>,\n ) {\n // map previously trimmed data\n const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(\n this.getStore().get('trimmed'),\n firstLevelMap,\n secondLevelMap,\n );\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"grouping.row.types.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { VNode } from '@stencil/core';\nimport type {\n HyperFunc,\n ColumnProp,\n DimensionRows,\n DataType,\n Providers,\n} from '@type';\n\n\ninterface GroupTemplateProp {\n name: string;\n itemIndex: number;\n expanded: boolean;\n depth: number;\n providers: Providers;\n model?: DataType;\n}\n\nexport type GroupLabelTemplateFunc = (\n createElement: HyperFunc<VNode>,\n props: GroupTemplateProp,\n) => any;\n\nexport type GroupingOptions = {\n /**\n * Column props to which grouping will be applied\n */\n props?: ColumnProp[];\n\n /**\n * Currently expanded items.\n * Corresponds to prop values as: source = [{ me: 'a' }, { me: 'b' }, { me: 'c' }], to set expanded: { a: true }\n */\n prevExpanded?: Record<string, boolean>;\n\n /**\n * Is expanded by default\n */\n expandedAll?: boolean;\n\n /**\n * Should grouping be preserved on source update.\n * default: true\n */\n preserveGroupingOnUpdate?: boolean;\n /**\n * Custom group label template\n */\n groupLabelTemplate?: GroupLabelTemplateFunc;\n} & ExpandedOptions;\n\nexport type BeforeSourceSetEvent = {\n type: DimensionRows;\n source: DataType[];\n};\n\nexport type OnExpandEvent = {\n model: DataType;\n virtualIndex: number;\n};\n\nexport type SourceGather = {\n source: DataType[];\n prevExpanded: Record<string, boolean>;\n oldNewIndexes?: Record<number, number>;\n};\n\nexport type ExpandedOptions = {\n prevExpanded?: Record<string, boolean>;\n /**\n * Is expanded by default\n */\n expandedAll?: boolean;\n\n /**\n * Custom group label value parser\n */\n getGroupValue?(item: DataType, prop: string | number): any;\n /**\n * Custom group label template\n */\n groupLabelTemplate?: GroupLabelTemplateFunc;\n};\n"]}
1
+ {"version":3,"file":"grouping.row.types.js","sourceRoot":"","sources":["../../../src/plugins/groupingRow/grouping.row.types.ts"],"names":[],"mappings":"","sourcesContent":["import type { VNode } from '@stencil/core';\nimport type {\n HyperFunc,\n ColumnProp,\n DimensionRows,\n DataType,\n Providers,\n} from '@type';\n\n\ninterface GroupTemplateProp {\n name: string;\n itemIndex: number;\n expanded: boolean;\n depth: number;\n providers: Providers;\n model?: DataType;\n}\n\nexport type GroupLabelTemplateFunc = (\n createElement: HyperFunc<VNode>,\n props: GroupTemplateProp,\n ...args: any[]\n) => any;\n\nexport type GroupingOptions = {\n /**\n * Column props to which grouping will be applied\n */\n props?: ColumnProp[];\n\n /**\n * Currently expanded items.\n * Corresponds to prop values as: source = [{ me: 'a' }, { me: 'b' }, { me: 'c' }], to set expanded: { a: true }\n */\n prevExpanded?: Record<string, boolean>;\n\n /**\n * Is expanded by default\n */\n expandedAll?: boolean;\n\n /**\n * Should grouping be preserved on source update.\n * default: true\n */\n preserveGroupingOnUpdate?: boolean;\n /**\n * Custom group label template\n */\n groupLabelTemplate?: GroupLabelTemplateFunc;\n} & ExpandedOptions;\n\nexport type BeforeSourceSetEvent = {\n type: DimensionRows;\n source: DataType[];\n};\n\nexport type OnExpandEvent = {\n model: DataType;\n virtualIndex: number;\n};\n\nexport type SourceGather = {\n source: DataType[];\n prevExpanded: Record<string, boolean>;\n oldNewIndexes?: Record<number, number>;\n};\n\nexport type ExpandedOptions = {\n prevExpanded?: Record<string, boolean>;\n /**\n * Is expanded by default\n */\n expandedAll?: boolean;\n\n /**\n * Custom group label value parser\n */\n getGroupValue?(item: DataType, prop: string | number): any;\n /**\n * Custom group label template\n */\n groupLabelTemplate?: GroupLabelTemplateFunc;\n};\n"]}
@@ -9,7 +9,7 @@ export function getCellData(val) {
9
9
  }
10
10
  return val;
11
11
  }
12
- export function getCellRaw(model, column) {
12
+ export function getCellRaw(model = {}, column) {
13
13
  if (!column) {
14
14
  return;
15
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"column.utils.js","sourceRoot":"","sources":["../../src/utils/column.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import isArray from 'lodash/isArray';\nimport reduce from 'lodash/reduce';\n\nimport {\n ColumnData,\n ColumnGrouping,\n ColumnProp,\n ColumnRegular,\n ColumnTypes,\n DataType,\n DimensionCols,\n ViewSettingSizeProp,\n} from '@type';\nimport { Group as StoreGroup } from '@store';\n\nexport type ColumnItems = Record<DimensionCols, ColumnRegular[]>;\nexport interface ColumnGroup extends StoreGroup {\n level: number;\n}\nexport type ColumnGroupingCollection = Record<DimensionCols, ColumnGroup[]>;\n\nexport function getCellData(val?: any) {\n if (typeof val === 'undefined' || val === null) {\n return '';\n }\n return val;\n}\n\nexport function getCellRaw(model: DataType, column?: ColumnRegular) {\n if (!column) {\n return;\n }\n if (column.cellParser) {\n return column.cellParser(model, column);\n }\n return model[column.prop];\n}\n\nexport function getCellDataParsed(model: DataType, column: ColumnRegular) {\n return getCellData(getCellRaw(model, column));\n}\n\n/**\n * Column collection definition.\n * Used to access indexed data for columns.\n * Can be accessed via different events.\n */\nexport type ColumnCollection = {\n /**\n * Columns as they are in stores\n */\n columns: Record<DimensionCols, ColumnRegular[]>;\n /**\n * Columns indexed by prop for quick access, it's possible to have multiple columns with same prop but not recommended\n */\n columnByProp: Record<ColumnProp, ColumnRegular[]>;\n /**\n * Grouped columns\n */\n columnGrouping: ColumnGroupingCollection;\n /**\n * Max level of grouping\n */\n maxLevel: number;\n /**\n * Sorting\n */\n sort: Record<ColumnProp, ColumnRegular>;\n};\n\n/**\n * Get column type from column data\n */\nexport function getColumnType(rgCol: ColumnRegular): DimensionCols {\n if (rgCol.pin) {\n return rgCol.pin;\n }\n return 'rgCol';\n}\n\nexport function getColumnSizes(cols: ColumnRegular[]): ViewSettingSizeProp {\n const res: ViewSettingSizeProp = {};\n for (const [i, c] of cols.entries()) {\n if (c.size) {\n res[i] = c.size;\n }\n }\n return res;\n}\n\n\n/**\n * Check if column is grouping column\n */\nexport function isColGrouping(\n colData: ColumnGrouping | ColumnRegular,\n): colData is ColumnGrouping {\n return !!(colData as ColumnGrouping).children;\n}\n\n/**\n * This function is used to create a collection of columns.\n */\nexport function getColumns(\n columns: ColumnData,\n level = 0,\n types?: ColumnTypes,\n): ColumnCollection {\n const collection: ColumnCollection = {\n // columns as they are in stores per type\n columns: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n // columns indexed by prop for quick access\n columnByProp: {},\n // column grouping\n columnGrouping: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n // max depth level for column grouping\n maxLevel: level,\n // sorting\n sort: {},\n };\n\n return reduce(\n columns,\n (res: ColumnCollection, colData: ColumnGrouping | ColumnRegular) => {\n // Grouped column\n if (isColGrouping(colData)) {\n res = gatherGroup(\n res,\n colData,\n getColumns(colData.children, level + 1, types),\n level,\n );\n return res;\n }\n // Column type\n const columnDefinitionFromType = colData.columnType && types?.[colData.columnType];\n // Regular column\n const regularColumn = {\n ...columnDefinitionFromType,\n ...colData,\n };\n // Regular column, no 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 // it's possible that some columns have same prop, but better to avoid it\n if (!res.columnByProp[regularColumn.prop]) {\n res.columnByProp[regularColumn.prop] = [];\n }\n res.columnByProp[regularColumn.prop].push(regularColumn);\n\n // trigger setup hook if present\n regularColumn.beforeSetup && regularColumn.beforeSetup(regularColumn);\n return res;\n },\n collection,\n );\n}\n\nexport function gatherGroup<T extends ColumnCollection>(\n res: T,\n colData: ColumnGrouping,\n collection: T,\n level = 0,\n): T {\n // group template\n const group: ColumnGroup = {\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 ColumnCollection['columns'];\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: collectionItem.map(item => item.prop),\n });\n }\n }\n }\n // merge column groupings\n for (let k in collection.columnGrouping) {\n const key = k as 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 res.columnByProp = {\n ...res.columnByProp,\n ...collection.columnByProp,\n };\n return res;\n}\n\nfunction findColumn(\n columns: ColumnData,\n prop: ColumnProp,\n): ColumnRegular | undefined {\n for (const c of columns) {\n if (isColGrouping(c)) {\n const found = findColumn(c.children, prop);\n if (found) {\n return found;\n }\n } else if (c.prop === prop) {\n return c;\n }\n }\n return undefined;\n}\n\nexport function getColumnByProp(\n columns: ColumnData,\n prop: ColumnProp,\n): ColumnRegular | undefined {\n return findColumn(columns, prop);\n}\n"]}
1
+ {"version":3,"file":"column.utils.js","sourceRoot":"","sources":["../../src/utils/column.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import isArray from 'lodash/isArray';\nimport reduce from 'lodash/reduce';\n\nimport {\n ColumnData,\n ColumnGrouping,\n ColumnProp,\n ColumnRegular,\n ColumnTypes,\n DataType,\n DimensionCols,\n ViewSettingSizeProp,\n} from '@type';\nimport { Group as StoreGroup } from '@store';\n\nexport type ColumnItems = Record<DimensionCols, ColumnRegular[]>;\nexport interface ColumnGroup extends StoreGroup {\n level: number;\n}\nexport type ColumnGroupingCollection = Record<DimensionCols, ColumnGroup[]>;\n\nexport function getCellData(val?: any) {\n if (typeof val === 'undefined' || val === null) {\n return '';\n }\n return val;\n}\n\nexport function getCellRaw(model: DataType = {}, column?: ColumnRegular) {\n if (!column) {\n return;\n }\n if (column.cellParser) {\n return column.cellParser(model, column);\n }\n return model[column.prop];\n}\n\nexport function getCellDataParsed(model: DataType, column: ColumnRegular) {\n return getCellData(getCellRaw(model, column));\n}\n\n/**\n * Column collection definition.\n * Used to access indexed data for columns.\n * Can be accessed via different events.\n */\nexport type ColumnCollection = {\n /**\n * Columns as they are in stores\n */\n columns: Record<DimensionCols, ColumnRegular[]>;\n /**\n * Columns indexed by prop for quick access, it's possible to have multiple columns with same prop but not recommended\n */\n columnByProp: Record<ColumnProp, ColumnRegular[]>;\n /**\n * Grouped columns\n */\n columnGrouping: ColumnGroupingCollection;\n /**\n * Max level of grouping\n */\n maxLevel: number;\n /**\n * Sorting\n */\n sort: Record<ColumnProp, ColumnRegular>;\n};\n\n/**\n * Get column type from column data\n */\nexport function getColumnType(rgCol: ColumnRegular): DimensionCols {\n if (rgCol.pin) {\n return rgCol.pin;\n }\n return 'rgCol';\n}\n\nexport function getColumnSizes(cols: ColumnRegular[]): ViewSettingSizeProp {\n const res: ViewSettingSizeProp = {};\n for (const [i, c] of cols.entries()) {\n if (c.size) {\n res[i] = c.size;\n }\n }\n return res;\n}\n\n\n/**\n * Check if column is grouping column\n */\nexport function isColGrouping(\n colData: ColumnGrouping | ColumnRegular,\n): colData is ColumnGrouping {\n return !!(colData as ColumnGrouping).children;\n}\n\n/**\n * This function is used to create a collection of columns.\n */\nexport function getColumns(\n columns: ColumnData,\n level = 0,\n types?: ColumnTypes,\n): ColumnCollection {\n const collection: ColumnCollection = {\n // columns as they are in stores per type\n columns: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n // columns indexed by prop for quick access\n columnByProp: {},\n // column grouping\n columnGrouping: {\n rgCol: [],\n colPinStart: [],\n colPinEnd: [],\n },\n // max depth level for column grouping\n maxLevel: level,\n // sorting\n sort: {},\n };\n\n return reduce(\n columns,\n (res: ColumnCollection, colData: ColumnGrouping | ColumnRegular) => {\n // Grouped column\n if (isColGrouping(colData)) {\n res = gatherGroup(\n res,\n colData,\n getColumns(colData.children, level + 1, types),\n level,\n );\n return res;\n }\n // Column type\n const columnDefinitionFromType = colData.columnType && types?.[colData.columnType];\n // Regular column\n const regularColumn = {\n ...columnDefinitionFromType,\n ...colData,\n };\n // Regular column, no 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 // it's possible that some columns have same prop, but better to avoid it\n if (!res.columnByProp[regularColumn.prop]) {\n res.columnByProp[regularColumn.prop] = [];\n }\n res.columnByProp[regularColumn.prop].push(regularColumn);\n\n // trigger setup hook if present\n regularColumn.beforeSetup && regularColumn.beforeSetup(regularColumn);\n return res;\n },\n collection,\n );\n}\n\nexport function gatherGroup<T extends ColumnCollection>(\n res: T,\n colData: ColumnGrouping,\n collection: T,\n level = 0,\n): T {\n // group template\n const group: ColumnGroup = {\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 ColumnCollection['columns'];\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: collectionItem.map(item => item.prop),\n });\n }\n }\n }\n // merge column groupings\n for (let k in collection.columnGrouping) {\n const key = k as 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 res.columnByProp = {\n ...res.columnByProp,\n ...collection.columnByProp,\n };\n return res;\n}\n\nfunction findColumn(\n columns: ColumnData,\n prop: ColumnProp,\n): ColumnRegular | undefined {\n for (const c of columns) {\n if (isColGrouping(c)) {\n const found = findColumn(c.children, prop);\n if (found) {\n return found;\n }\n } else if (c.prop === prop) {\n return c;\n }\n }\n return undefined;\n}\n\nexport function getColumnByProp(\n columns: ColumnData,\n prop: ColumnProp,\n): ColumnRegular | undefined {\n return findColumn(columns, prop);\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  /*!
2
2
  * Built by Revolist OU ❤️
3
3
  */
4
- import { x as reduce, y as baseEach, r as getColumnType, h as isGrouping, f as getGroupingName, q as getCellDataParsed, w as getColumnByProp, p as getCellRaw, G as GROUP_EXPANDED, k as getParsedGroup, P as PSEUDO_GROUP_ITEM_ID, l as isSameGroup, z as GROUP_DEPTH, A as PSEUDO_GROUP_ITEM_VALUE, B as GROUPING_ROW_TYPE, b as getSource, C as PSEUDO_GROUP_COLUMN, e as gatherGrouping, j as isGroupingColumn, d as getExpanded, t as isColGrouping } from './column.service-c0d404a6.js';
4
+ import { H as reduce, I as baseEach, A as getColumnType, s as isGrouping, r as getGroupingName, z as getCellDataParsed, F as getColumnByProp, y as getCellRaw, f as GROUP_EXPANDED, v as getParsedGroup, b as PSEUDO_GROUP_ITEM_ID, w as isSameGroup, G as GROUP_DEPTH, d as PSEUDO_GROUP_ITEM_VALUE, m as GROUPING_ROW_TYPE, o as getSource, e as PSEUDO_GROUP_COLUMN, q as gatherGrouping, t as isGroupingColumn, p as getExpanded, C as isColGrouping } from './column.service-f39c0a1d.js';
5
5
  import { W as createStore, w as setStore, i as calculateDimensionData, X as identity, Y as isArray, b as getSourceItem, o as getScrollbarSize, Z as toInteger, _ as isIterateeCall, u as timeout, $ as baseProperty, a0 as isArrayLike, a1 as getTag, a2 as baseKeys, g as getPhysical, e as setItems, j as getItemByPosition } from './dimension.helpers-5567e424.js';
6
6
  import { f as calculateRowHeaderSize } from './viewport.store-c18a25a6.js';
7
7
  import { h } from './index-f6fae858.js';
8
8
  import { b as FILTER_PROP, i as isFilterBtn } from './filter.button-84396156.js';
9
9
  import { i as isObjectLike, b as baseGetTag, d as debounce } from './debounce-b3166f78.js';
10
- import { d as dispatch, O as ON_COLUMN_CLICK } from './header-cell-renderer-0f5bd4a9.js';
10
+ import { d as dispatch, O as ON_COLUMN_CLICK } from './header-cell-renderer-31f53644.js';
11
11
 
12
12
  /**
13
13
  * Plugin which recalculates realSize on changes of sizes, originItemSize and count
@@ -2530,4 +2530,4 @@ function getLeftRelative(absoluteX, gridPos, offset) {
2530
2530
 
2531
2531
  export { AutoSizeColumnPlugin as A, BasePlugin as B, ColumnMovePlugin as C, DimensionStore as D, ExportFilePlugin as E, FILTER_TRIMMED_TYPE as F, GroupingRowPlugin as G, StretchColumn as S, isStretchPlugin as a, ExportCsv as b, columnTypes as c, FILTER_CONFIG_CHANGED_EVENT as d, FILTE_PANEL as e, FilterPlugin as f, filterCoreFunctionsIndexedByType as g, filterTypes as h, isRowType as i, filterNames as j, doCollapse as k, doExpand as l, getLeftRelative as m, SortingPlugin as n, forEach as o, rowTypes as r };
2532
2532
 
2533
- //# sourceMappingURL=column.drag.plugin-94964d01.js.map
2533
+ //# sourceMappingURL=column.drag.plugin-caf3ce50.js.map