@revolist/revogrid 4.0.29 → 4.0.31
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/dist/cjs/{app-globals-53fde1aa.js → app-globals-067b9262.js} +2 -2
- package/dist/cjs/{app-globals-53fde1aa.js.map → app-globals-067b9262.js.map} +1 -1
- package/dist/cjs/{base.plugin-32f80cb5.js → base.plugin-75fc9e81.js} +3 -4
- package/dist/cjs/base.plugin-75fc9e81.js.map +1 -0
- package/dist/cjs/{column.service-52b4cac9.js → column.service-b3b5a4ee.js} +4 -4
- package/dist/cjs/{column.service-52b4cac9.js.map → column.service-b3b5a4ee.js.map} +1 -1
- package/dist/cjs/{dimension.helpers-ee39d6c4.js → dimension.helpers-8e234f00.js} +193 -193
- package/dist/cjs/dimension.helpers-8e234f00.js.map +1 -0
- package/dist/cjs/{filter.button-db6cbd2e.js → filter.button-147884a8.js} +2 -2
- package/dist/cjs/{filter.button-db6cbd2e.js.map → filter.button-147884a8.js.map} +1 -1
- package/dist/cjs/{header-cell-renderer-a3f202a1.js → header-cell-renderer-96a37624.js} +3 -3
- package/dist/cjs/{header-cell-renderer-a3f202a1.js.map → header-cell-renderer-96a37624.js.map} +1 -1
- package/dist/cjs/{index-84e32c2a.js → index-feb2edd5.js} +193 -185
- package/dist/cjs/index-feb2edd5.js.map +1 -0
- package/dist/cjs/index.cjs.js +5 -5
- package/dist/cjs/{key.utils-ee3d9eab.js → key.utils-be4d0b46.js} +2 -2
- package/dist/cjs/{key.utils-ee3d9eab.js.map → key.utils-be4d0b46.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/revo-grid.cjs.entry.js +11 -11
- package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/revo-grid.cjs.js +3 -3
- package/dist/cjs/revo-grid.cjs.js.map +1 -1
- package/dist/cjs/revogr-attribution_6.cjs.entry.js +8 -8
- package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +4 -4
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-data_4.cjs.entry.js +8 -8
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -2
- package/dist/cjs/{selection.helpers-32abb2a9.js → selection.helpers-032d7192.js} +3 -3
- package/dist/cjs/selection.helpers-032d7192.js.map +1 -0
- package/dist/cjs/{viewport.store-2ab4e166.js → viewport.store-c4b986f9.js} +2 -2
- package/dist/cjs/{viewport.store-2ab4e166.js.map → viewport.store-c4b986f9.js.map} +1 -1
- package/dist/collection/collection-manifest.json +1 -1
- package/dist/collection/components/data/column.service.js +1 -1
- package/dist/collection/components/data/column.service.js.map +1 -1
- package/dist/collection/components/data/revogr-data.js +13 -13
- package/dist/collection/components/data/revogr-data.js.map +1 -1
- package/dist/collection/components/editors/text-editor.js +1 -1
- package/dist/collection/components/editors/text-editor.js.map +1 -1
- package/dist/collection/components/header/revogr-header.js +8 -8
- package/dist/collection/components/header/revogr-header.js.map +1 -1
- package/dist/collection/components/order/revogr-order-editor.js +6 -6
- package/dist/collection/components/order/revogr-order-editor.js.map +1 -1
- package/dist/collection/components/overlay/autofill.service.js.map +1 -1
- package/dist/collection/components/overlay/keyboard.service.js.map +1 -1
- package/dist/collection/components/overlay/revogr-overlay-selection.js +1 -1
- package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -1
- package/dist/collection/components/revoGrid/revo-grid.js +9 -9
- package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
- package/dist/collection/components/revoGrid/viewport.service.js.map +1 -1
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js +5 -5
- package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -1
- package/dist/collection/components/selectionFocus/revogr-focus.js +10 -10
- package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -1
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js +6 -6
- package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -1
- package/dist/collection/components/vnode/vnode-converter.js +2 -2
- package/dist/collection/components/vnode/vnode.utils.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
- package/dist/collection/store/dataSource/data.proxy.js.map +1 -1
- package/dist/collection/store/dataSource/data.store.js +1 -1
- package/dist/collection/store/dataSource/data.store.js.map +1 -1
- package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
- package/dist/collection/store/dimension/dimension.store.js +1 -2
- package/dist/collection/store/dimension/dimension.store.js.map +1 -1
- package/dist/collection/store/selection/selection.store.js +1 -1
- package/dist/collection/store/selection/selection.store.js.map +1 -1
- package/dist/collection/store/vp/viewport.store.js +1 -1
- package/dist/collection/store/vp/viewport.store.js.map +1 -1
- package/dist/collection/types/interfaces.js.map +1 -1
- package/dist/collection/types/viewport.interfaces.js.map +1 -1
- package/dist/collection/utils/store.types.js +2 -0
- package/dist/collection/utils/store.types.js.map +1 -0
- package/dist/collection/utils/store.utils.js +1 -2
- package/dist/collection/utils/store.utils.js.map +1 -1
- package/dist/esm/{app-globals-ef1fca59.js → app-globals-c0b06b03.js} +2 -2
- package/dist/esm/{app-globals-ef1fca59.js.map → app-globals-c0b06b03.js.map} +1 -1
- package/dist/esm/{base.plugin-d0e589d8.js → base.plugin-e6e2bac2.js} +3 -4
- package/dist/esm/base.plugin-e6e2bac2.js.map +1 -0
- package/dist/esm/{column.service-a826bbd6.js → column.service-ffe99cfc.js} +4 -4
- package/dist/esm/{column.service-a826bbd6.js.map → column.service-ffe99cfc.js.map} +1 -1
- package/dist/esm/{dimension.helpers-a3065cb1.js → dimension.helpers-c0c2888f.js} +193 -193
- package/dist/esm/dimension.helpers-c0c2888f.js.map +1 -0
- package/dist/esm/{filter.button-46ce4f80.js → filter.button-f132c10a.js} +2 -2
- package/dist/esm/{filter.button-46ce4f80.js.map → filter.button-f132c10a.js.map} +1 -1
- package/dist/esm/{header-cell-renderer-19738045.js → header-cell-renderer-cac333a3.js} +3 -3
- package/dist/esm/{header-cell-renderer-19738045.js.map → header-cell-renderer-cac333a3.js.map} +1 -1
- package/dist/esm/{index-21436631.js → index-e661aeb5.js} +193 -185
- package/dist/esm/index-e661aeb5.js.map +1 -0
- package/dist/esm/index.js +5 -5
- package/dist/esm/{key.utils-7c5d91dd.js → key.utils-9120fde7.js} +2 -2
- package/dist/esm/{key.utils-7c5d91dd.js.map → key.utils-9120fde7.js.map} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/revo-grid.entry.js +11 -11
- package/dist/esm/revo-grid.entry.js.map +1 -1
- package/dist/esm/revo-grid.js +4 -4
- package/dist/esm/revo-grid.js.map +1 -1
- package/dist/esm/revogr-attribution_6.entry.js +8 -8
- package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
- package/dist/esm/revogr-clipboard_3.entry.js +4 -4
- package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/esm/revogr-data_4.entry.js +8 -8
- package/dist/esm/revogr-data_4.entry.js.map +1 -1
- package/dist/esm/revogr-filter-panel.entry.js +2 -2
- package/dist/esm/{selection.helpers-883ce6bc.js → selection.helpers-0f3ed629.js} +3 -3
- package/dist/esm/selection.helpers-0f3ed629.js.map +1 -0
- package/dist/esm/{viewport.store-d9e291c5.js → viewport.store-2dc172be.js} +2 -2
- package/dist/esm/{viewport.store-d9e291c5.js.map → viewport.store-2dc172be.js.map} +1 -1
- package/dist/revo-grid/app-globals-c0b06b03.js +5 -0
- package/dist/revo-grid/base.plugin-e6e2bac2.js +5 -0
- package/dist/revo-grid/base.plugin-e6e2bac2.js.map +1 -0
- package/dist/revo-grid/{column.service-a826bbd6.js → column.service-ffe99cfc.js} +2 -2
- package/dist/revo-grid/column.service-ffe99cfc.js.map +1 -0
- package/dist/revo-grid/dimension.helpers-c0c2888f.js +5 -0
- package/dist/revo-grid/dimension.helpers-c0c2888f.js.map +1 -0
- package/dist/revo-grid/{filter.button-46ce4f80.js → filter.button-f132c10a.js} +2 -2
- package/dist/revo-grid/{header-cell-renderer-19738045.js → header-cell-renderer-cac333a3.js} +2 -2
- package/dist/revo-grid/index-e661aeb5.js +6 -0
- package/dist/revo-grid/index-e661aeb5.js.map +1 -0
- package/dist/revo-grid/index.esm.js +1 -1
- package/dist/revo-grid/{key.utils-7c5d91dd.js → key.utils-9120fde7.js} +2 -2
- package/dist/revo-grid/revo-grid.entry.js +1 -1
- package/dist/revo-grid/revo-grid.entry.js.map +1 -1
- package/dist/revo-grid/revo-grid.esm.js +1 -1
- package/dist/revo-grid/revo-grid.esm.js.map +1 -1
- package/dist/revo-grid/revogr-attribution_6.entry.js +1 -1
- package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
- package/dist/revo-grid/{selection.helpers-883ce6bc.js → selection.helpers-0f3ed629.js} +2 -2
- package/dist/revo-grid/selection.helpers-0f3ed629.js.map +1 -0
- package/dist/revo-grid/{viewport.store-d9e291c5.js → viewport.store-2dc172be.js} +2 -2
- package/dist/revo-grid/viewport.store-2dc172be.js.map +1 -0
- package/dist/types/components/data/column.service.d.ts +2 -3
- package/dist/types/components/data/revogr-data.d.ts +2 -2
- package/dist/types/components/editors/text-editor.d.ts +3 -3
- package/dist/types/components/header/revogr-header.d.ts +5 -6
- package/dist/types/components/order/revogr-order-editor.d.ts +2 -3
- package/dist/types/components/overlay/autofill.service.d.ts +2 -1
- package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
- package/dist/types/components/overlay/revogr-overlay-selection.d.ts +2 -2
- package/dist/types/components/revoGrid/revo-grid.d.ts +2 -5
- package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +2 -1
- package/dist/types/components/selectionFocus/revogr-focus.d.ts +2 -1
- package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +2 -1
- package/dist/types/components/vnode/vnode.utils.d.ts +2 -1
- package/dist/types/components.d.ts +4 -2
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +4 -2
- package/dist/types/stencil-public-runtime.d.ts +0 -2
- package/dist/types/store/dataSource/data.proxy.d.ts +1 -1
- package/dist/types/store/dataSource/data.store.d.ts +2 -1
- package/dist/types/store/dataSource/trimmed.plugin.d.ts +1 -1
- package/dist/types/store/dimension/dimension.store.d.ts +3 -18
- package/dist/types/store/selection/selection.store.d.ts +1 -1
- package/dist/types/store/vp/viewport.store.d.ts +2 -1
- package/dist/types/types/interfaces.d.ts +2 -4
- package/dist/types/types/viewport.interfaces.d.ts +2 -1
- package/dist/types/utils/store.types.d.ts +97 -0
- package/dist/types/utils/store.utils.d.ts +4 -3
- package/hydrate/index.d.ts +29 -11
- package/hydrate/index.js +547 -544
- package/hydrate/index.mjs +32501 -0
- package/hydrate/package.json +7 -1
- package/loader/index.d.ts +3 -0
- package/package.json +3 -3
- package/standalone/column.service.js +1 -1
- package/standalone/column.service.js.map +1 -1
- package/standalone/data.store.js +192 -192
- package/standalone/data.store.js.map +1 -1
- package/standalone/revo-grid.js +3 -4
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-data2.js.map +1 -1
- package/standalone/revogr-edit2.js +1 -1
- package/standalone/revogr-edit2.js.map +1 -1
- package/standalone/revogr-focus2.js.map +1 -1
- package/standalone/revogr-header2.js +2 -2
- package/standalone/revogr-header2.js.map +1 -1
- package/standalone/revogr-order-editor2.js.map +1 -1
- package/standalone/revogr-overlay-selection2.js +1 -1
- package/standalone/revogr-overlay-selection2.js.map +1 -1
- package/standalone/revogr-row-headers2.js.map +1 -1
- package/standalone/revogr-scroll-virtual2.js +1 -1
- package/standalone/revogr-scroll-virtual2.js.map +1 -1
- package/standalone/revogr-temp-range2.js.map +1 -1
- package/standalone/selection.utils.js +1 -1
- package/dist/cjs/base.plugin-32f80cb5.js.map +0 -1
- package/dist/cjs/dimension.helpers-ee39d6c4.js.map +0 -1
- package/dist/cjs/index-84e32c2a.js.map +0 -1
- package/dist/cjs/selection.helpers-32abb2a9.js.map +0 -1
- package/dist/esm/base.plugin-d0e589d8.js.map +0 -1
- package/dist/esm/dimension.helpers-a3065cb1.js.map +0 -1
- package/dist/esm/index-21436631.js.map +0 -1
- package/dist/esm/selection.helpers-883ce6bc.js.map +0 -1
- package/dist/revo-grid/app-globals-ef1fca59.js +0 -5
- package/dist/revo-grid/base.plugin-d0e589d8.js +0 -5
- package/dist/revo-grid/base.plugin-d0e589d8.js.map +0 -1
- package/dist/revo-grid/column.service-a826bbd6.js.map +0 -1
- package/dist/revo-grid/dimension.helpers-a3065cb1.js +0 -5
- package/dist/revo-grid/dimension.helpers-a3065cb1.js.map +0 -1
- package/dist/revo-grid/index-21436631.js +0 -6
- package/dist/revo-grid/index-21436631.js.map +0 -1
- package/dist/revo-grid/selection.helpers-883ce6bc.js.map +0 -1
- package/dist/revo-grid/viewport.store-d9e291c5.js.map +0 -1
- /package/dist/revo-grid/{app-globals-ef1fca59.js.map → app-globals-c0b06b03.js.map} +0 -0
- /package/dist/revo-grid/{filter.button-46ce4f80.js.map → filter.button-f132c10a.js.map} +0 -0
- /package/dist/revo-grid/{header-cell-renderer-19738045.js.map → header-cell-renderer-cac333a3.js.map} +0 -0
- /package/dist/revo-grid/{key.utils-7c5d91dd.js.map → key.utils-9120fde7.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revogr-focus.js","sourceRoot":"","sources":["../../../src/components/selectionFocus/revogr-focus.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n h,\n Host,\n Event,\n Element,\n EventEmitter,\n} from '@stencil/core';\nimport { FOCUS_CLASS } from '../../utils/consts';\nimport { getElStyle } from '../overlay/selection.utils';\nimport { DSourceState, getSourceItem } from '@store';\nimport {\n Cell,\n SelectionStoreState,\n ColumnRegular,\n DataType,\n DimensionSettingsState,\n FocusRenderEvent,\n FocusTemplateFunc,\n
|
|
1
|
+
{"version":3,"file":"revogr-focus.js","sourceRoot":"","sources":["../../../src/components/selectionFocus/revogr-focus.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n h,\n Host,\n Event,\n Element,\n EventEmitter,\n} from '@stencil/core';\nimport { FOCUS_CLASS } from '../../utils/consts';\nimport { getElStyle } from '../overlay/selection.utils';\nimport { DSourceState, getSourceItem } from '@store';\nimport {\n Cell,\n SelectionStoreState,\n ColumnRegular,\n DataType,\n DimensionSettingsState,\n FocusRenderEvent,\n FocusTemplateFunc,\n DimensionCols,\n DimensionRows,\n} from '@type';\nimport { Observable } from '../../utils/store.utils';\n\n/**\n * Focus component. Shows focus layer around the cell that is currently in focus.\n * @slot focus-${view.type}-${data.type}. @example focus-rgCol-rgRow\n */\n@Component({\n tag: 'revogr-focus',\n styleUrl: 'revogr-focus-style.scss',\n})\nexport class RevogrFocus {\n /**\n * Column type\n */\n @Prop() colType!: DimensionCols;\n /**\n * Row type\n */\n @Prop() rowType!: DimensionRows;\n\n /** Dynamic stores */\n /** Selection, range, focus for selection */\n @Prop() selectionStore!: Observable<SelectionStoreState>;\n /** Dimension settings Y */\n @Prop() dimensionRow!: Observable<DimensionSettingsState>;\n /** Dimension settings X */\n @Prop() dimensionCol!: Observable<DimensionSettingsState>;\n /**\n * Data rows source\n */\n @Prop() dataStore!: Observable<DSourceState<DataType, DimensionRows>>;\n /**\n * Column source\n */\n @Prop() colData!: Observable<DSourceState<ColumnRegular, DimensionCols>>;\n\n /**\n * Focus template custom function. Can be used to render custom focus layer.\n */\n @Prop() focusTemplate: FocusTemplateFunc | null = null;\n\n /**\n * Before focus render event.\n * Can be prevented by event.preventDefault().\n * If preventDefault used slot will be rendered.\n */\n @Event({ eventName: 'beforefocusrender' })\n beforeFocusRender: EventEmitter<FocusRenderEvent>;\n /**\n * Before focus changed verify if it's in view and scroll viewport into this view\n * Can be prevented by event.preventDefault()\n */\n @Event({ eventName: 'beforescrollintoview' })\n beforeScrollIntoView: EventEmitter<{ el: HTMLElement }>;\n /**\n * Used to setup properties after focus was rendered\n */\n @Event({ eventName: 'afterfocus' }) afterFocus: EventEmitter<{\n model: any;\n column: ColumnRegular;\n }>;\n\n @Element() el: HTMLElement;\n private activeFocus: Cell = null;\n\n private changed(e: HTMLElement, focus: Cell) {\n const beforeScrollIn = this.beforeScrollIntoView.emit({ el: e });\n if (!beforeScrollIn.defaultPrevented) {\n e.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n const model = getSourceItem(this.dataStore, focus.y);\n const column = getSourceItem(this.colData, focus.x);\n this.afterFocus.emit({\n model,\n column,\n });\n }\n\n componentDidRender() {\n const currentFocus = this.selectionStore.get('focus');\n if (\n this.activeFocus?.x === currentFocus?.x &&\n this.activeFocus?.y === currentFocus?.y\n ) {\n return;\n }\n this.activeFocus = currentFocus;\n if (currentFocus && this.el) {\n this.changed(this.el, currentFocus);\n }\n }\n\n render() {\n const editCell = this.selectionStore.get('edit');\n if (editCell) {\n return;\n }\n const focusCell = this.selectionStore.get('focus');\n if (!focusCell) {\n return;\n }\n const event = this.beforeFocusRender.emit({\n range: {\n ...focusCell,\n x1: focusCell.x,\n y1: focusCell.y,\n },\n rowType: this.rowType,\n colType: this.colType,\n });\n if (event.defaultPrevented) {\n return <slot />;\n }\n const { detail } = event;\n const style = getElStyle(\n detail.range,\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n const extra = this.focusTemplate?.(h, detail);\n return (\n <Host class={FOCUS_CLASS} style={style}>\n <slot />\n {extra}\n </Host>\n );\n }\n}\n"]}
|
|
@@ -84,8 +84,8 @@ export class RevogrFocus {
|
|
|
84
84
|
"references": {
|
|
85
85
|
"Observable": {
|
|
86
86
|
"location": "import",
|
|
87
|
-
"path": "
|
|
88
|
-
"id": "src/
|
|
87
|
+
"path": "../../utils/store.utils",
|
|
88
|
+
"id": "src/utils/store.utils.ts::Observable"
|
|
89
89
|
},
|
|
90
90
|
"SelectionStoreState": {
|
|
91
91
|
"location": "import",
|
|
@@ -110,8 +110,8 @@ export class RevogrFocus {
|
|
|
110
110
|
"references": {
|
|
111
111
|
"Observable": {
|
|
112
112
|
"location": "import",
|
|
113
|
-
"path": "
|
|
114
|
-
"id": "src/
|
|
113
|
+
"path": "../../utils/store.utils",
|
|
114
|
+
"id": "src/utils/store.utils.ts::Observable"
|
|
115
115
|
},
|
|
116
116
|
"DimensionSettingsState": {
|
|
117
117
|
"location": "import",
|
|
@@ -136,8 +136,8 @@ export class RevogrFocus {
|
|
|
136
136
|
"references": {
|
|
137
137
|
"Observable": {
|
|
138
138
|
"location": "import",
|
|
139
|
-
"path": "
|
|
140
|
-
"id": "src/
|
|
139
|
+
"path": "../../utils/store.utils",
|
|
140
|
+
"id": "src/utils/store.utils.ts::Observable"
|
|
141
141
|
},
|
|
142
142
|
"DimensionSettingsState": {
|
|
143
143
|
"location": "import",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revogr-temp-range.js","sourceRoot":"","sources":["../../../src/components/selectionTempRange/revogr-temp-range.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"revogr-temp-range.js","sourceRoot":"","sources":["../../../src/components/selectionTempRange/revogr-temp-range.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Host } from '@stencil/core';\nimport throttle from 'lodash/throttle';\nimport { TMP_SELECTION_BG_CLASS } from '../../utils/consts';\nimport { getElStyle } from '../overlay/selection.utils';\nimport { DimensionSettingsState } from '@type';\nimport { SelectionStoreState, RangeArea } from '@type';\nimport { Observable } from '../../utils/store.utils';\n\n/**\n * Temporary range selection component. Shows temporary range selection.\n */\n@Component({\n tag: 'revogr-temp-range',\n styleUrl: 'revogr-temp-range-style.scss',\n})\nexport class RevogrFocus {\n /**\n * Dynamic stores\n */\n\n /**\n * Selection store, shows current selection and focus\n */\n @Prop() selectionStore: Observable<SelectionStoreState>;\n\n /**\n * Dimension row store\n */\n @Prop() dimensionRow: Observable<DimensionSettingsState>;\n /**\n * Dimension column store\n */\n @Prop() dimensionCol: Observable<DimensionSettingsState>;\n\n el: HTMLElement;\n private readonly onChange = throttle((e: HTMLElement) => this.doChange(e), 300);\n\n private doChange(e: HTMLElement) {\n e?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n\n componentDidRender() {\n if (this.el) {\n this.onChange(this.el);\n }\n }\n\n render() {\n const data = this.selectionStore.get('tempRange');\n const type = this.selectionStore.get('tempRangeType');\n if (!data) {\n return;\n }\n let directionY = 'bottom';\n let derectionX = 'right';\n const range = this.getRange();\n if (!range) {\n return;\n }\n if (data.y < range.y) {\n directionY = 'top';\n }\n if (data.x < range.x) {\n derectionX = 'left';\n }\n const directionClass = `${derectionX} ${directionY}`;\n const style = getElStyle(data, this.dimensionRow.state, this.dimensionCol.state);\n return (\n <Host\n class={{\n [TMP_SELECTION_BG_CLASS]: true,\n [type || '']: true,\n }}\n style={style}\n hidden={false}\n >\n <div class={directionClass} ref={(e: HTMLElement) => (this.el = e)} />\n </Host>\n );\n }\n\n private getRange(): RangeArea | null {\n const range = this.selectionStore.get('range');\n if (range) {\n return range;\n }\n const focus = this.selectionStore.get('focus');\n if (!focus) {\n return null;\n }\n return {\n ...focus,\n x1: focus.x,\n y1: focus.y,\n };\n }\n}\n"]}
|
|
@@ -38,7 +38,7 @@ export class VNodeToHtml {
|
|
|
38
38
|
"VNode": {
|
|
39
39
|
"location": "import",
|
|
40
40
|
"path": "@stencil/core",
|
|
41
|
-
"id": ""
|
|
41
|
+
"id": "node_modules::VNode"
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
},
|
|
@@ -70,7 +70,7 @@ export class VNodeToHtml {
|
|
|
70
70
|
"VNode": {
|
|
71
71
|
"location": "import",
|
|
72
72
|
"path": "@stencil/core",
|
|
73
|
-
"id": ""
|
|
73
|
+
"id": "node_modules::VNode"
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vnode.utils.js","sourceRoot":"","sources":["../../../src/components/vnode/vnode.utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vnode.utils.js","sourceRoot":"","sources":["../../../src/components/vnode/vnode.utils.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAqB,EAAE,MAA+B;IACvF,OAAO,IAAI,OAAO,CAAoC,OAAO,CAAC,EAAE;QAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACnD,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACtB,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;YACjC,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { VNode } from '@stencil/core';\nimport { JSX } from '../../components';\n\n/**\n * Converts a VNode element into an HTML element and appends it to the specified parentHolder.\n */\nexport function convertVNodeToHTML(parentHolder: Element, redraw: JSX.VnodeHtml['redraw']): Promise<{ html: string; vnodes: VNode[] }> {\n return new Promise<{ html: string; vnodes: VNode[] }>(resolve => {\n const vnode = document.createElement('vnode-html');\n parentHolder.appendChild(vnode);\n vnode.redraw = redraw;\n vnode.addEventListener('html', e => {\n vnode.remove();\n resolve(e.detail);\n });\n });\n}\n"]}
|
|
@@ -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 { ColumnCollection } from '../../services/column.data.provider';\nimport { getPhysical, setItems, columnTypes, TrimmedEntity } from '@store';\nimport { BasePlugin } from '../base.plugin';\nimport { FILTER_TRIMMED_TYPE } from '../filter/filter.plugin';\nimport {\n GROUPING_ROW_TYPE,\n GROUP_EXPANDED,\n GROUP_EXPAND_EVENT,\n PSEUDO_GROUP_COLUMN,\n PSEUDO_GROUP_ITEM_VALUE,\n} from './grouping.const';\nimport { doExpand, doCollapse } from './grouping.row.expand.service';\nimport {\n BeforeSourceSetEvent,\n GroupingOptions,\n OnExpandEvent,\n SourceGather,\n} from './grouping.row.types';\nimport {\n ExpandedOptions,\n gatherGrouping,\n isGrouping,\n isGroupingColumn,\n} from './grouping.service';\nimport {\n processDoubleConversionTrimmed,\n TRIMMED_GROUPING,\n} from './grouping.trimmed.service';\nimport { BeforeSaveDataDetails, ColumnRegular, PluginProviders } from '@type';\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.data.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 protected 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 } = 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?: 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(\n 'beforesourceset',\n ({ detail }: CustomEvent<BeforeSourceSetEvent>) => this.onDataSet(detail),\n );\n this.addEventListener(\n 'beforecolumnsset',\n ({ detail }: CustomEvent<ColumnCollection>) => 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 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(\n GROUP_EXPAND_EVENT,\n ({ detail }: CustomEvent<OnExpandEvent>) => this.onExpand(detail),\n );\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 {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n childrenByGroup,\n } = gatherGrouping(source, this.options?.props || [], {\n prevExpanded,\n ...options,\n });\n\n // setup source\n this.providers.data.setData(\n sourceWithGroups,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\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 {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n childrenByGroup,\n } = gatherGrouping(source, this.options?.props || [], {\n ...(expanded || {}),\n });\n data.source = sourceWithGroups;\n this.providers.data.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.column.getColumns(t))) {\n this.providers.column.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.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 } = this.getSource(true);\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 _childrenByGroup: Record<number, number[]> = {},\n firstLevelMap: Record<number, number>,\n secondLevelMap?: Record<number, number>,\n ) {\n // map previously trimmed data\n const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(\n this.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 { ColumnCollection } from '../../services/column.data.provider';\nimport { getPhysical, setItems, columnTypes, TrimmedEntity, DSourceState } from '@store';\nimport { BasePlugin } from '../base.plugin';\nimport { FILTER_TRIMMED_TYPE } from '../filter/filter.plugin';\nimport {\n GROUPING_ROW_TYPE,\n GROUP_EXPANDED,\n GROUP_EXPAND_EVENT,\n PSEUDO_GROUP_COLUMN,\n PSEUDO_GROUP_ITEM_VALUE,\n} from './grouping.const';\nimport { doExpand, doCollapse } from './grouping.row.expand.service';\nimport {\n BeforeSourceSetEvent,\n GroupingOptions,\n OnExpandEvent,\n SourceGather,\n} from './grouping.row.types';\nimport {\n ExpandedOptions,\n gatherGrouping,\n isGrouping,\n isGroupingColumn,\n} from './grouping.service';\nimport {\n processDoubleConversionTrimmed,\n TRIMMED_GROUPING,\n} from './grouping.trimmed.service';\nimport { BeforeSaveDataDetails, ColumnRegular, DataType, DimensionRows, PluginProviders } from '@type';\nimport { Observable } from '../../utils/store.utils';\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(): Observable<DSourceState<DataType, DimensionRows>> {\n return this.providers.data.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 protected 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 } = 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?: 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(\n 'beforesourceset',\n ({ detail }: CustomEvent<BeforeSourceSetEvent>) => this.onDataSet(detail),\n );\n this.addEventListener(\n 'beforecolumnsset',\n ({ detail }: CustomEvent<ColumnCollection>) => 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 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(\n GROUP_EXPAND_EVENT,\n ({ detail }: CustomEvent<OnExpandEvent>) => this.onExpand(detail),\n );\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 {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n childrenByGroup,\n } = gatherGrouping(source, this.options?.props || [], {\n prevExpanded,\n ...options,\n });\n\n // setup source\n this.providers.data.setData(\n sourceWithGroups,\n GROUPING_ROW_TYPE,\n this.revogrid.disableVirtualY,\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 {\n sourceWithGroups,\n depth,\n trimmed,\n oldNewIndexMap,\n childrenByGroup,\n } = gatherGrouping(source, this.options?.props || [], {\n ...(expanded || {}),\n });\n data.source = sourceWithGroups;\n this.providers.data.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.column.getColumns(t))) {\n this.providers.column.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.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 } = this.getSource(true);\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 _childrenByGroup: Record<number, number[]> = {},\n firstLevelMap: Record<number, number>,\n secondLevelMap?: Record<number, number>,\n ) {\n // map previously trimmed data\n const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(\n this.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":"data.proxy.js","sourceRoot":"","sources":["../../../src/store/dataSource/data.proxy.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAwB,EAA0B,EAAE,CAAC,CAAC;IAChF,GAAG,CAAC,CAAC,EAAE,MAAM;QACX,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD;;;WAGG;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAA0B,EAAE,CAAS,EAAE,EAAE;YACnF,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;QACP;;;WAGG;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,CAAS,EAAE,EAAE;YACxD,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,OAAO,CAAC,CAAc;IAC7B,OAAO,CAAC,KAAK,YAAY,CAAC;AAC5B,CAAC","sourcesContent":["import { DSourceState } from '@store';\nimport { Observable, PluginSubscribe } from '
|
|
1
|
+
{"version":3,"file":"data.proxy.js","sourceRoot":"","sources":["../../../src/store/dataSource/data.proxy.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAwB,EAA0B,EAAE,CAAC,CAAC;IAChF,GAAG,CAAC,CAAC,EAAE,MAAM;QACX,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD;;;WAGG;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAA0B,EAAE,CAAS,EAAE,EAAE;YACnF,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACZ,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;QACP;;;WAGG;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,CAAS,EAAE,EAAE;YACxD,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,OAAO,CAAC,CAAc;IAC7B,OAAO,CAAC,KAAK,YAAY,CAAC;AAC5B,CAAC","sourcesContent":["import { DSourceState } from '@store';\nimport { Observable, PluginSubscribe } from '../../utils/store.utils';\n\ntype State = DSourceState<any, any>;\n\n/**\n * All items\n * Used as proxy for sorting\n * Keep order but do not modify final source\n */\nexport const proxyPlugin = (store: Observable<State>): PluginSubscribe<State> => ({\n set(k, newVal) {\n if (!isProxy(k)) {\n return;\n }\n /**\n * Getting existing collection of items\n * Mark indexes as visible\n */\n const oldItems = store.get('items').reduce((r: Record<number, boolean>, v: number) => {\n r[v] = true;\n return r;\n }, {});\n /**\n * Check if new values where present in items\n * Filter item collection according presense\n */\n const newItems = newVal.reduce((r: number[], i: number) => {\n if (oldItems[i]) {\n r.push(i);\n }\n return r;\n }, []);\n store.set('items', newItems);\n },\n});\n\nfunction isProxy(k: keyof State): k is 'proxyItems' {\n return k === 'proxyItems';\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { createStore } from "@stencil/store";
|
|
5
4
|
import findIndex from "lodash/findIndex";
|
|
6
5
|
import range from "lodash/range";
|
|
6
|
+
import { createStore } from "@stencil/store";
|
|
7
7
|
import { trimmedPlugin } from "./trimmed.plugin";
|
|
8
8
|
import { setStore } from "../../utils/store.utils";
|
|
9
9
|
import { proxyPlugin } from "./data.proxy";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.store.js","sourceRoot":"","sources":["../../../src/store/dataSource/data.store.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"data.store.js","sourceRoot":"","sources":["../../../src/store/dataSource/data.store.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAW,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAc,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA4B3C;;;GAGG;AACH,MAAM,OAAO,SAAS;IAEpB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,YAAY,IAAQ,EAAE,SAA+B;QACnD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,iBACzC,KAAK,EAAE,EAAE,EACT,UAAU,EAAE,EAAE,EACd,MAAM,EAAE,EAAE,EACV,aAAa,EAAE,CAAC,EAChB,MAAM,EAAE,EAAE,EACV,IAAI,EACJ,OAAO,EAAE,EAAE,EACX,sBAAsB,EAAE,SAAS,IAC9B,SAAS,EACZ,CAAC,CAAC;QACJ,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,UAAU,CACR,MAAW,EACX,QAIC,EACD,MAAM,GAAG,KAAK;QAEd,qCAAqC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,cAAc;QACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,CAAC,CAAC,CAAC;QAE5C,kBAAkB;QAClB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB,MAAM;YACN,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC;SACvB,CAAC,CAAC;QACH,oBAAoB;QACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/B,4BAA4B;QAC5B,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;gBACnB,aAAa,EAAE,QAAQ,CAAC,KAAK;gBAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,sBAAsB,EAAE,QAAQ,CAAC,cAAc;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAsB;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,mCAAQ,OAAO,GAAK,IAAI,CAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,oBAAoB;IACpB,OAAO,CAAC,KAAmC;QACzC,MAAM,IAAI,qBACL,KAAK,CACT,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;CACF;AACD;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,KAAyC,EACzC,YAAoB;IAEpB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAyC;IAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAyC,EACzC,YAAoB,EACH,EAAE;IACnB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAuC,EACvC,YAA+B,EAC/B,MAAM,GAAG,IAAI;IAEb,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnC,KAAK,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAuC,EACvC,YAA+B,EAC/B,MAAM,GAAG,IAAI;IAEb,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAuC,EACvC,KAAe;IAEf,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAyC,EACzC,IAAgB;IAEhB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import findIndex from 'lodash/findIndex';\nimport range from 'lodash/range';\nimport { createStore } from '@stencil/store';\n\nimport { Trimmed, trimmedPlugin } from './trimmed.plugin';\nimport { setStore, Observable } from '../../utils/store.utils';\nimport { proxyPlugin } from './data.proxy';\nimport { GroupLabelTemplateFunc } from '../../plugins/groupingRow/grouping.row.types';\nimport { DimensionRows, DimensionCols } from '@type';\nimport type {\n ColumnProperties,\n ColumnGrouping,\n ColumnRegular,\n DataType,\n DataSourceState,\n ColumnProp,\n} from '@type';\n\nexport interface Group extends ColumnProperties {\n name: string;\n children: (ColumnGrouping | ColumnRegular)[];\n // props/ids\n ids: (string | number)[];\n}\nexport type Groups = Record<any, any>;\nexport type GDataType = DataType | ColumnRegular;\nexport type GDimension = DimensionRows | DimensionCols;\nexport type DSourceState<\n T1 extends GDataType,\n T2 extends GDimension,\n> = DataSourceState<T1, T2> & {\n groupingCustomRenderer?: GroupLabelTemplateFunc | null;\n};\n\n/**\n * Data store\n * Manage the state of a data source and provide methods for updating, adding, and refreshing the data.\n */\nexport class DataStore<T extends GDataType, ST extends GDimension> {\n private readonly dataStore: Observable<DSourceState<T, ST>>;\n get store(): Observable<DSourceState<T, ST>> {\n return this.dataStore;\n }\n constructor(type: ST, storeData?: DSourceState<T, ST>) {\n const store = (this.dataStore = createStore<DSourceState<T, ST>>({\n items: [],\n proxyItems: [],\n source: [],\n groupingDepth: 0,\n groups: {},\n type,\n trimmed: {},\n groupingCustomRenderer: undefined,\n ...storeData,\n }));\n store.use(proxyPlugin(store));\n store.use(trimmedPlugin(store));\n }\n\n /**\n * full data source update\n * @param source - data column/rgRow source\n * @param grouping - grouping information if present\n */\n updateData(\n source: T[],\n grouping?: {\n depth: number;\n groups?: Groups;\n customRenderer?: GroupLabelTemplateFunc;\n },\n silent = false,\n ) {\n // during full update we do drop trim\n if (!silent) {\n this.store.set('trimmed', {});\n }\n // clear items\n this.store.set('items', []);\n const items = range(0, source?.length || 0);\n\n // set proxy first\n setStore(this.store, {\n source,\n proxyItems: [...items],\n });\n // update data items\n this.store.set('items', items);\n // apply grouping if present\n if (grouping) {\n setStore(this.store, {\n groupingDepth: grouping.depth,\n groups: grouping.groups,\n groupingCustomRenderer: grouping.customRenderer,\n });\n }\n }\n\n addTrimmed(some: Partial<Trimmed>) {\n let trimmed = this.store.get('trimmed');\n trimmed = { ...trimmed, ...some };\n setStore(this.store, { trimmed });\n }\n\n // local data update\n setData(input: Partial<DSourceState<T, ST>>) {\n const data: Partial<DSourceState<T, ST>> = {\n ...input,\n };\n setStore(this.store, data);\n }\n\n refresh() {\n const source = this.store.get('source');\n this.store.set('source', [...source]);\n }\n}\n/**\n * get physical index by virtual\n * @param store - store to process\n */\nexport function getPhysical(\n store: Observable<DSourceState<any, any>>,\n virtualIndex: number,\n) {\n const items = store.get('items');\n return items[virtualIndex];\n}\n\n/**\n * get all visible items\n * @param store - store to process\n */\nexport function getVisibleSourceItem(\n store: Observable<DSourceState<any, any>>,\n) {\n const source = store.get('source');\n return store.get('items').map(v => source[v]);\n}\n\n/**\n * get mapped item from source\n * @param store - store to process\n * @param virtualIndex - virtual index to process\n */\nexport const getSourceItem = (\n store: Observable<DSourceState<any, any>>,\n virtualIndex: number,\n): any | undefined => {\n const items = store.get('items');\n const source = store.get('source');\n return source[items[virtualIndex]];\n};\n\n/**\n * Apple item/model/row value to data source\n * @param store - data source with changes\n * @param modelByIndex - collection of rows/values with virtual indexes to setup/replace in store/data source\n * @param mutate - if true, store will be mutated and whole viewport will be re-rendered\n */\nexport function setSourceByVirtualIndex<T>(\n store: Observable<DSourceState<T, any>>,\n modelByIndex: Record<number, T>,\n mutate = true,\n) {\n const items = store.get('items');\n const source = store.get('source');\n\n for (let virtualIndex in modelByIndex) {\n const realIndex = items[virtualIndex];\n source[realIndex] = modelByIndex[virtualIndex];\n }\n if (mutate) {\n store.set('source', [...source]);\n }\n}\n\n/**\n * set item to source\n * @param store - store to process\n * @param modelByIndex - collection of rows with physical indexes to setup\n * @param mutate - if true, store will be mutated and whole viewport will be re-rendered\n */\nexport function setSourceByPhysicalIndex<T>(\n store: Observable<DSourceState<T, any>>,\n modelByIndex: Record<number, T>,\n mutate = true,\n) {\n const source = store.get('source');\n for (let index in modelByIndex) {\n source[index] = modelByIndex[index];\n }\n if (mutate) {\n store.set('source', [...source]);\n }\n}\n\nexport function setItems<T>(\n store: Observable<DSourceState<T, any>>,\n items: number[],\n) {\n store.set('items', items);\n}\n\nexport function getSourceItemVirtualIndexByProp(\n store: Observable<DSourceState<any, any>>,\n prop: ColumnProp,\n) {\n const items = store.get('items');\n const source = store.get('source');\n const physicalIndex = findIndex(source, { prop });\n return items.indexOf(physicalIndex);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trimmed.plugin.js","sourceRoot":"","sources":["../../../src/store/dataSource/trimmed.plugin.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,KAAuC,EAAyC,EAAE,CAAC,CAAC;IACnH,GAAG,CAAC,CAAC,EAAE,MAAM;QACX,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,SAAS;gBACZ,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAiB,CAAC,CAAC;gBAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,CAAS,EAAE,EAAE;oBAC5D,6DAA6D;oBAC7D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACjB,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC,EAAE,EAAE,CAAC,CAAC;gBAEP,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7B,MAAM;QACV,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,YAAqB;IACtD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;QACpC,iCAAiC;QACjC,KAAK,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { Observable, PluginSubscribe } from '
|
|
1
|
+
{"version":3,"file":"trimmed.plugin.js","sourceRoot":"","sources":["../../../src/store/dataSource/trimmed.plugin.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,KAAuC,EAAyC,EAAE,CAAC,CAAC;IACnH,GAAG,CAAC,CAAC,EAAE,MAAM;QACX,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,SAAS;gBACZ,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAiB,CAAC,CAAC;gBAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAgB,EAAE,CAAS,EAAE,EAAE;oBAC5D,6DAA6D;oBAC7D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACjB,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC,EAAE,EAAE,CAAC,CAAC;gBAEP,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7B,MAAM;QACV,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,YAAqB;IACtD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;QACpC,iCAAiC;QACjC,KAAK,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { Observable, PluginSubscribe } from '../../utils/store.utils';\nimport { DSourceState } from './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<DSourceState<T, any>>): PluginSubscribe<DSourceState<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"]}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
* Storing pre-calculated
|
|
6
6
|
* Dimension information and sizes
|
|
7
7
|
*/
|
|
8
|
-
import { createStore } from "@stencil/store";
|
|
9
8
|
import reduce from "lodash/reduce";
|
|
9
|
+
import { createStore } from "@stencil/store";
|
|
10
10
|
import { setStore } from "../../utils/store.utils";
|
|
11
11
|
import { calculateDimensionData } from "./dimension.helpers";
|
|
12
12
|
import each from "lodash/each";
|
|
@@ -111,7 +111,6 @@ export class DimensionStore {
|
|
|
111
111
|
setDimensionSize(sizes) {
|
|
112
112
|
const dimensionData = calculateDimensionData(this.store.get('originItemSize'), sizes);
|
|
113
113
|
setStore(this.store, dimensionData);
|
|
114
|
-
return dimensionData;
|
|
115
114
|
}
|
|
116
115
|
}
|
|
117
116
|
//# sourceMappingURL=dimension.store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimension.store.js","sourceRoot":"","sources":["../../../src/store/dimension/dimension.store.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"dimension.store.js","sourceRoot":"","sources":["../../../src/store/dimension/dimension.store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Storing pre-calculated\n * Dimension information and sizes\n */\nimport reduce from 'lodash/reduce';\nimport { createStore } from '@stencil/store';\n\nimport { setStore, Observable, PluginSubscribe } from '../../utils/store.utils';\nimport { calculateDimensionData } from './dimension.helpers';\nimport each from 'lodash/each';\nimport {\n DimensionCalc,\n DimensionSettingsState,\n ViewSettingSizeProp,\n MultiDimensionType,\n} from '@type';\n\nexport type DimensionStoreCollection = {\n [T in MultiDimensionType]: DimensionStore;\n};\n\ntype Item = keyof DimensionSettingsState;\n\nconst trimmedPlugin = (\n store: DimensionStore,\n): PluginSubscribe<DimensionSettingsState> => {\n let trimmedSize: DimensionSettingsState['sizes'] = {};\n\n const setTrimmed = (\n sizes: DimensionSettingsState['sizes'],\n trimmed: DimensionSettingsState['trimmed'],\n ) => {\n const newSize = { ...sizes };\n trimmedSize = {};\n each(trimmed, (v, index) => {\n if (v && newSize[index]) {\n trimmedSize[index] = newSize[index];\n delete newSize[index];\n }\n });\n store.setDimensionSize(newSize);\n };\n return {\n set(key, val) {\n switch (key) {\n case 'trimmed':\n const trim = val as DimensionSettingsState['trimmed'];\n const sizes = store.store.get('sizes');\n // recover trimmed, apply new trim\n setTrimmed({ ...sizes, ...trimmedSize }, trim);\n break;\n }\n },\n };\n};\n\nconst realSizePlugin = (\n store: DimensionStore,\n): PluginSubscribe<DimensionSettingsState> => {\n return {\n set(k) {\n switch (k) {\n case 'count':\n case 'sizes':\n case 'originItemSize':\n let realSize = 0;\n const count = store.store.get('count');\n for (let i = 0; i < count; i++) {\n realSize +=\n store.store.get('sizes')[i] || store.store.get('originItemSize');\n }\n store.setStore({ realSize });\n }\n },\n };\n};\n\nfunction initialBase(): DimensionCalc {\n return {\n indexes: [],\n count: 0,\n\n // plugin support\n trimmed: {},\n\n // size operations, this provider stores only changed sizes, not all of them\n // same as indexes but for sizes and positions\n // item index to size\n sizes: {},\n // order in indexes[] to coordinate\n positionIndexToItem: {},\n // initial element to coordinate ^\n indexToItem: {},\n positionIndexes: [],\n };\n}\n\nfunction initialState(): DimensionSettingsState {\n return {\n ...initialBase(),\n // size which all items can take\n realSize: 0,\n\n // initial item size if it wasn't changed\n originItemSize: 0,\n };\n}\n\nexport class DimensionStore {\n readonly store: Observable<DimensionSettingsState>;\n constructor() {\n this.store = createStore(initialState());\n this.store.use(trimmedPlugin(this));\n this.store.use(realSizePlugin(this));\n }\n\n getCurrentState(): DimensionSettingsState {\n const state = initialState();\n const keys = Object.keys(state);\n return reduce(\n keys,\n (r: DimensionSettingsState, k: Item) => {\n const data = this.store.get(k);\n r[k] = data as never;\n return r;\n },\n state,\n );\n }\n\n dispose() {\n setStore(this.store, initialState());\n }\n\n setStore<T extends Record<string, any>>(data: Partial<T>) {\n setStore(this.store, data);\n }\n\n drop() {\n setStore(this.store, initialBase());\n }\n\n /**\n * Set custom dimension sizes and overwrite old\n * Generates new indexes based on sizes\n * @param sizes - sizes to set\n */\n setDimensionSize(sizes: ViewSettingSizeProp) {\n const dimensionData = calculateDimensionData(\n this.store.get('originItemSize'),\n sizes,\n );\n setStore(this.store, dimensionData);\n }\n}\n"]}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* Selection store
|
|
6
6
|
*/
|
|
7
|
-
import { createStore } from "@stencil/store";
|
|
8
7
|
import { setStore } from "../../utils/store.utils";
|
|
9
8
|
import { getRange } from "../index";
|
|
9
|
+
import { createStore } from "@stencil/store";
|
|
10
10
|
function defaultState() {
|
|
11
11
|
return {
|
|
12
12
|
range: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.store.js","sourceRoot":"","sources":["../../../src/store/selection/selection.store.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"selection.store.js","sourceRoot":"","sources":["../../../src/store/selection/selection.store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Selection store\n */\n\nimport { setStore, Observable } from '../../utils/store.utils';\nimport { getRange } from '@store';\nimport { SelectionStoreState, Cell, TempRange, RangeArea } from '@type';\nimport { createStore } from '@stencil/store';\n\nfunction defaultState(): SelectionStoreState {\n return {\n range: null,\n tempRange: null,\n tempRangeType: null,\n focus: null,\n edit: null,\n lastCell: null,\n };\n}\n\nexport class SelectionStore {\n readonly store: Observable<SelectionStoreState>;\n private unsubscribe: { (): void }[] = [];\n constructor() {\n this.store = createStore(defaultState());\n this.store.on('set', (key, newVal) => {\n if (key === 'tempRange' && !newVal) {\n this.store.set('tempRangeType', null);\n }\n });\n }\n\n onChange<Key extends keyof SelectionStoreState>(propName: Key, cb: (newValue: SelectionStoreState[Key]) => void) {\n this.unsubscribe.push(this.store.onChange(propName, cb));\n }\n\n clearFocus() {\n setStore(this.store, { focus: null, range: null, edit: null, tempRange: null });\n }\n\n setFocus(focus: Cell, end?: Cell) {\n if (!end) {\n setStore(this.store, { focus });\n } else {\n setStore(this.store, {\n focus,\n range: getRange(focus, end),\n edit: null,\n tempRange: null,\n });\n }\n }\n\n setTempArea(range: TempRange | null) {\n setStore(this.store, { tempRange: range?.area, tempRangeType: range?.type, edit: null });\n }\n\n clearTemp() {\n setStore(this.store, { tempRange: null });\n }\n\n /** Can be applied from selection change or from simple keyboard change clicks */\n setRangeArea(range: RangeArea) {\n setStore(this.store, { range, edit: null, tempRange: null });\n }\n setRange(start: Cell, end: Cell) {\n this.setRangeArea(getRange(start, end));\n }\n\n setLastCell(lastCell: Cell) {\n setStore(this.store, { lastCell });\n }\n\n setEdit(val: string | boolean) {\n const focus = this.store.get('focus');\n if (focus && typeof val === 'string') {\n setStore(this.store, {\n edit: { x: focus.x, y: focus.y, val },\n });\n return;\n }\n setStore(this.store, { edit: null });\n }\n\n dispose() {\n this.unsubscribe.forEach(f => f());\n this.store.dispose();\n }\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import { createStore } from "@stencil/store";
|
|
5
4
|
import { addMissingItems, getFirstItem, getLastItem, getUpdatedItemsByPosition, isActiveRange, setItemSizes, updateMissingAndRange, isActiveRangeOutsideLastItem, } from "./viewport.helpers";
|
|
5
|
+
import { createStore } from "@stencil/store";
|
|
6
6
|
import { setStore } from "../../utils/store.utils";
|
|
7
7
|
/**
|
|
8
8
|
* Viewport store
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewport.store.js","sourceRoot":"","sources":["../../../src/store/vp/viewport.store.ts"],"names":[],"mappings":"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","sourcesContent":["import { createStore } from '@stencil/store';\n\nimport {\n DimensionDataViewport,\n addMissingItems,\n getFirstItem,\n getLastItem,\n getUpdatedItemsByPosition,\n isActiveRange,\n setItemSizes,\n updateMissingAndRange,\n isActiveRangeOutsideLastItem,\n} from './viewport.helpers';\n\nimport { setStore } from '../../utils/store.utils';\nimport type {\n VirtualPositionItem,\n ViewportStateItems,\n ViewportState,\n Observable,\n ViewSettingSizeProp,\n MultiDimensionType,\n} from '@type';\n\n/**\n * Viewport store\n * Used for virtualization (process of rendering only visible part of data)\n * Redraws viewport based on position and dimension\n */\nfunction initialState(): ViewportState {\n return {\n // virtual item information per rendered item\n items: [],\n // virtual dom item order to render\n start: 0,\n end: 0,\n\n // size of viewport in px\n virtualSize: 0,\n\n // total number of items\n realCount: 0,\n };\n}\n\n/**\n * Viewport store class\n */\nexport class ViewportStore {\n readonly store: Observable<ViewportState>;\n\n // last coordinate for store position restore\n private lastKnownScroll = 0;\n\n get lastCoordinate() {\n return this.lastKnownScroll;\n }\n set lastCoordinate(value: number) {\n this.lastKnownScroll = value;\n }\n constructor(readonly type: MultiDimensionType) {\n this.store = createStore(initialState());\n // drop items on real size change, require a new item set\n this.store.onChange('realCount', () => this.clearItems());\n // drop items on virtual size change, require a new item set\n this.store.onChange('virtualSize', () => this.clearItems());\n }\n\n /**\n * Render viewport based on coordinate\n * It's the main method for draw\n */\n setViewPortCoordinate(position: number, dimension: DimensionDataViewport) {\n const viewportSize = this.store.get('virtualSize');\n // no visible data to calculate\n if (!viewportSize) {\n return;\n }\n\n const frameOffset = 1;\n const singleOffsetInPx = dimension.originItemSize * frameOffset;\n // add offset to virtual size from both sides\n const outsize = singleOffsetInPx * 2;\n // math virtual size is based on visible area + 2 items outside of visible area\n const virtualSize = viewportSize + outsize;\n\n // expected no scroll if real size less than virtual size, position is 0\n let maxCoordinate = 0;\n // if there is nodes outside of viewport, max coordinate has to be adjusted\n if (dimension.realSize > viewportSize) {\n // max coordinate is real size minus virtual/rendered space\n maxCoordinate = dimension.realSize - viewportSize - singleOffsetInPx;\n }\n\n let pos = position;\n // limit position to max and min coordinates\n if (pos < 0) {\n pos = 0;\n } else if (pos > maxCoordinate) {\n pos = maxCoordinate;\n }\n\n // store last coordinate for further restore on redraw\n this.lastCoordinate = pos;\n\n // actual position is less than first item start based on offset\n pos -= singleOffsetInPx;\n pos = pos < 0 ? 0 : pos < maxCoordinate ? pos : maxCoordinate;\n\n const allItems = this.getItems();\n const items = [...allItems.items];\n\n const firstItem: VirtualPositionItem | undefined = getFirstItem(allItems);\n const lastItem: VirtualPositionItem | undefined = getLastItem(allItems);\n\n let toUpdate: Partial<ViewportState> = {};\n\n // left position changed\n // verify if new position is in range of previously rendered first item\n if (!isActiveRange(pos, dimension.realSize, firstItem, lastItem)) {\n toUpdate = {\n ...toUpdate,\n ...getUpdatedItemsByPosition(\n pos,\n allItems,\n this.store.get('realCount'),\n virtualSize,\n dimension,\n ),\n };\n this.setViewport({ ...toUpdate });\n // verify is render area is outside of last item\n } else if (\n isActiveRangeOutsideLastItem(pos, virtualSize, firstItem, lastItem)\n ) {\n // check is any item missing for full fill content\n const missing = addMissingItems(\n firstItem,\n this.store.get('realCount'),\n virtualSize + pos - firstItem.start,\n allItems,\n {\n sizes: dimension.sizes,\n originItemSize: dimension.originItemSize,\n },\n );\n\n // update missing items\n if (missing.length) {\n const range = {\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n updateMissingAndRange(items, missing, range);\n toUpdate = {\n ...toUpdate,\n items: [...items],\n ...range,\n };\n this.setViewport({ ...toUpdate });\n }\n }\n }\n\n /**\n * Update viewport sizes for existing items\n * This method is generating new item positions based on custom sizes and original sizes\n * @param sizes - custom sizes for each item\n * @param dropToOriginalSize - drop to original size if requested\n */\n setViewPortDimensionSizes(\n sizes: ViewSettingSizeProp,\n dropToOriginalSize?: number,\n ) {\n let items = [...this.store.get('items')];\n const count = items.length;\n // viewport not inited\n if (!count) {\n return;\n }\n\n let changedCoordinate = 0;\n let i = 0;\n let start = this.store.get('start');\n\n // drop to original size if requested\n if (dropToOriginalSize) {\n const allItems = this.getItems();\n const firstItem: VirtualPositionItem | undefined = getFirstItem(allItems);\n items = setItemSizes(items, start, dropToOriginalSize, firstItem.start);\n }\n\n // loop through array from initial item after recombination\n // if size change present, change position for all items after\n while (i < count) {\n const item = items[start];\n // change pos if size change present before\n if (changedCoordinate) {\n item.start += changedCoordinate;\n item.end += changedCoordinate;\n }\n // check if size change present\n const size: number | undefined = sizes[item.itemIndex];\n // size found\n if (size) {\n const changedSize = size - item.size;\n changedCoordinate += changedSize;\n item.size = size;\n item.end = item.start + size;\n // size lost\n }\n\n // loop by start index\n start++;\n i++;\n // if start index out of array, reset it\n if (start === count) {\n start = 0;\n }\n }\n\n this.setViewport({ items: [...items] });\n }\n\n /**\n * Set sizes for existing items\n */\n setOriginalSizes(size: number) {\n const items = this.store.get('items');\n const count = items.length;\n // viewport not inited\n if (!count) {\n return;\n }\n\n setStore(this.store, {\n items: setItemSizes(\n items,\n this.store.get('start'),\n size,\n this.lastCoordinate,\n ),\n });\n }\n\n getItems(): Pick<ViewportStateItems, 'items' | 'start' | 'end'> {\n return {\n items: this.store.get('items'),\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n }\n\n setViewport(data: Partial<ViewportState>) {\n setStore(this.store, data);\n }\n\n clearItems() {\n this.store.set('items', []);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"viewport.store.js","sourceRoot":"","sources":["../../../src/store/vp/viewport.store.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DimensionDataViewport,\n addMissingItems,\n getFirstItem,\n getLastItem,\n getUpdatedItemsByPosition,\n isActiveRange,\n setItemSizes,\n updateMissingAndRange,\n isActiveRangeOutsideLastItem,\n} from './viewport.helpers';\nimport { createStore } from '@stencil/store';\nimport { type Observable, setStore } from '../../utils/store.utils';\nimport type {\n VirtualPositionItem,\n ViewportStateItems,\n ViewportState,\n ViewSettingSizeProp,\n MultiDimensionType,\n} from '@type';\n\n/**\n * Viewport store\n * Used for virtualization (process of rendering only visible part of data)\n * Redraws viewport based on position and dimension\n */\nfunction initialState(): ViewportState {\n return {\n // virtual item information per rendered item\n items: [],\n // virtual dom item order to render\n start: 0,\n end: 0,\n\n // size of viewport in px\n virtualSize: 0,\n\n // total number of items\n realCount: 0,\n };\n}\n\n/**\n * Viewport store class\n */\nexport class ViewportStore {\n readonly store: Observable<ViewportState>;\n\n // last coordinate for store position restore\n private lastKnownScroll = 0;\n\n get lastCoordinate() {\n return this.lastKnownScroll;\n }\n set lastCoordinate(value: number) {\n this.lastKnownScroll = value;\n }\n constructor(readonly type: MultiDimensionType) {\n this.store = createStore(initialState());\n // drop items on real size change, require a new item set\n this.store.onChange('realCount', () => this.clearItems());\n // drop items on virtual size change, require a new item set\n this.store.onChange('virtualSize', () => this.clearItems());\n }\n\n /**\n * Render viewport based on coordinate\n * It's the main method for draw\n */\n setViewPortCoordinate(position: number, dimension: DimensionDataViewport) {\n const viewportSize = this.store.get('virtualSize');\n // no visible data to calculate\n if (!viewportSize) {\n return;\n }\n\n const frameOffset = 1;\n const singleOffsetInPx = dimension.originItemSize * frameOffset;\n // add offset to virtual size from both sides\n const outsize = singleOffsetInPx * 2;\n // math virtual size is based on visible area + 2 items outside of visible area\n const virtualSize = viewportSize + outsize;\n\n // expected no scroll if real size less than virtual size, position is 0\n let maxCoordinate = 0;\n // if there is nodes outside of viewport, max coordinate has to be adjusted\n if (dimension.realSize > viewportSize) {\n // max coordinate is real size minus virtual/rendered space\n maxCoordinate = dimension.realSize - viewportSize - singleOffsetInPx;\n }\n\n let pos = position;\n // limit position to max and min coordinates\n if (pos < 0) {\n pos = 0;\n } else if (pos > maxCoordinate) {\n pos = maxCoordinate;\n }\n\n // store last coordinate for further restore on redraw\n this.lastCoordinate = pos;\n\n // actual position is less than first item start based on offset\n pos -= singleOffsetInPx;\n pos = pos < 0 ? 0 : pos < maxCoordinate ? pos : maxCoordinate;\n\n const allItems = this.getItems();\n const items = [...allItems.items];\n\n const firstItem: VirtualPositionItem | undefined = getFirstItem(allItems);\n const lastItem: VirtualPositionItem | undefined = getLastItem(allItems);\n\n let toUpdate: Partial<ViewportState> = {};\n\n // left position changed\n // verify if new position is in range of previously rendered first item\n if (!isActiveRange(pos, dimension.realSize, firstItem, lastItem)) {\n toUpdate = {\n ...toUpdate,\n ...getUpdatedItemsByPosition(\n pos,\n allItems,\n this.store.get('realCount'),\n virtualSize,\n dimension,\n ),\n };\n this.setViewport({ ...toUpdate });\n // verify is render area is outside of last item\n } else if (\n isActiveRangeOutsideLastItem(pos, virtualSize, firstItem, lastItem)\n ) {\n // check is any item missing for full fill content\n const missing = addMissingItems(\n firstItem,\n this.store.get('realCount'),\n virtualSize + pos - firstItem.start,\n allItems,\n {\n sizes: dimension.sizes,\n originItemSize: dimension.originItemSize,\n },\n );\n\n // update missing items\n if (missing.length) {\n const range = {\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n updateMissingAndRange(items, missing, range);\n toUpdate = {\n ...toUpdate,\n items: [...items],\n ...range,\n };\n this.setViewport({ ...toUpdate });\n }\n }\n }\n\n /**\n * Update viewport sizes for existing items\n * This method is generating new item positions based on custom sizes and original sizes\n * @param sizes - custom sizes for each item\n * @param dropToOriginalSize - drop to original size if requested\n */\n setViewPortDimensionSizes(\n sizes: ViewSettingSizeProp,\n dropToOriginalSize?: number,\n ) {\n let items = [...this.store.get('items')];\n const count = items.length;\n // viewport not inited\n if (!count) {\n return;\n }\n\n let changedCoordinate = 0;\n let i = 0;\n let start = this.store.get('start');\n\n // drop to original size if requested\n if (dropToOriginalSize) {\n const allItems = this.getItems();\n const firstItem: VirtualPositionItem | undefined = getFirstItem(allItems);\n items = setItemSizes(items, start, dropToOriginalSize, firstItem.start);\n }\n\n // loop through array from initial item after recombination\n // if size change present, change position for all items after\n while (i < count) {\n const item = items[start];\n // change pos if size change present before\n if (changedCoordinate) {\n item.start += changedCoordinate;\n item.end += changedCoordinate;\n }\n // check if size change present\n const size: number | undefined = sizes[item.itemIndex];\n // size found\n if (size) {\n const changedSize = size - item.size;\n changedCoordinate += changedSize;\n item.size = size;\n item.end = item.start + size;\n // size lost\n }\n\n // loop by start index\n start++;\n i++;\n // if start index out of array, reset it\n if (start === count) {\n start = 0;\n }\n }\n\n this.setViewport({ items: [...items] });\n }\n\n /**\n * Set sizes for existing items\n */\n setOriginalSizes(size: number) {\n const items = this.store.get('items');\n const count = items.length;\n // viewport not inited\n if (!count) {\n return;\n }\n\n setStore(this.store, {\n items: setItemSizes(\n items,\n this.store.get('start'),\n size,\n this.lastCoordinate,\n ),\n });\n }\n\n getItems(): Pick<ViewportStateItems, 'items' | 'start' | 'end'> {\n return {\n items: this.store.get('items'),\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n }\n\n setViewport(data: Partial<ViewportState>) {\n setStore(this.store, data);\n }\n\n clearItems() {\n this.store.set('items', []);\n }\n}\n"]}
|