@revolist/revogrid 4.0.28 → 4.0.30
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-991dda26.js} +3 -3
- package/dist/cjs/base.plugin-991dda26.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 +7 -7
- package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +3 -3
- 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/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/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/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 -1
- 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-454940e3.js} +3 -3
- package/dist/esm/base.plugin-454940e3.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 +7 -7
- package/dist/esm/revogr-attribution_6.entry.js.map +1 -1
- package/dist/esm/revogr-clipboard_3.entry.js +3 -3
- 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-d0e589d8.js → base.plugin-454940e3.js} +2 -2
- package/dist/revo-grid/base.plugin-454940e3.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/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/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.d.ts +4 -2
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +1 -1
- 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 +2 -5
- 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 +545 -541
- package/hydrate/index.mjs +32502 -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 -3
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-data2.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.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.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
|
-
{"file":"viewport.store-d9e291c5.js","mappings":"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","names":[],"sources":["src/store/vp/viewport.helpers.ts","src/store/vp/viewport.store.ts"],"sourcesContent":["import {\n DimensionSettingsState,\n PositionItem,\n ViewSettingSizeProp,\n ViewportStateItems,\n VirtualPositionItem,\n Range,\n} from '@type';\n\nimport { getItemByPosition } from '../dimension/dimension.helpers';\n\nexport type DimensionDataViewport = Pick<\n DimensionSettingsState,\n | 'indexes'\n | 'positionIndexes'\n | 'positionIndexToItem'\n | 'sizes'\n | 'originItemSize'\n | 'realSize'\n>;\n\ntype ItemsToUpdate = Pick<ViewportStateItems, 'items' | 'start' | 'end'>;\n/**\n * Update items based on new scroll position\n * If viewport wasn't changed fully simple recombination of positions\n * Otherwise rebuild viewport items\n */\nexport function getUpdatedItemsByPosition<T extends ItemsToUpdate>(\n pos: number, // coordinate\n items: T,\n realCount: number,\n virtualSize: number,\n dimension: DimensionDataViewport,\n): ItemsToUpdate {\n const activeItem: PositionItem = getItemByPosition(dimension, pos);\n const firstItem: PositionItem = getFirstItem(items);\n let toUpdate: ItemsToUpdate;\n // do simple position recombination if items already present in viewport\n if (firstItem) {\n let changedOffsetStart = activeItem.itemIndex - (firstItem.itemIndex || 0);\n // if item changed\n if (changedOffsetStart) {\n // simple recombination\n toUpdate = recombineByOffset(Math.abs(changedOffsetStart), {\n positiveDirection: changedOffsetStart > -1,\n ...dimension,\n ...items,\n });\n }\n }\n\n const maxSizeVirtualSize = getMaxVirtualSize(\n virtualSize,\n dimension.realSize,\n activeItem,\n );\n // if partial recombination add items if revo-viewport has some space left\n if (toUpdate) {\n const extra = addMissingItems(\n activeItem,\n realCount,\n maxSizeVirtualSize,\n toUpdate,\n dimension,\n );\n if (extra.length) {\n updateMissingAndRange(toUpdate.items, extra, toUpdate);\n }\n }\n\n // new collection if no items after replacement full replacement\n if (!toUpdate) {\n const items = getItems({\n firstItemStart: activeItem.start,\n firstItemIndex: activeItem.itemIndex,\n origSize: dimension.originItemSize,\n maxSize: maxSizeVirtualSize,\n maxCount: realCount,\n sizes: dimension.sizes,\n });\n\n // range now comes from 0 to length - 1\n toUpdate = {\n items,\n start: 0,\n end: items.length - 1,\n };\n }\n return toUpdate;\n}\n\n// virtual size can differ based on scroll position if some big items are present\n// scroll can be in the middle of item and virtual size will be larger\n// so we need to exclude this part from virtual size hence it's already passed\nfunction getMaxVirtualSize(\n virtualSize: number,\n realSize: number,\n activeItem: PositionItem,\n) {\n return Math.min(virtualSize + (activeItem.end - activeItem.start), realSize);\n}\n\nexport function updateMissingAndRange(\n items: VirtualPositionItem[],\n missing: VirtualPositionItem[],\n range: Range,\n) {\n items.splice(range.end + 1, 0, ...missing);\n // update range if start larger after recombination\n if (\n range.start >= range.end &&\n !(range.start === range.end && range.start === 0)\n ) {\n range.start += missing.length;\n }\n range.end += missing.length;\n}\n\n/**\n * If partial replacement\n * this function adds items if viewport has some space left\n */\nexport function addMissingItems<T extends ItemsToUpdate>(\n firstItem: PositionItem,\n realCount: number,\n virtualSize: number,\n existingCollection: T,\n dimension: Pick<DimensionSettingsState, 'sizes' | 'originItemSize'>,\n): VirtualPositionItem[] {\n const lastItem: VirtualPositionItem = getLastItem(existingCollection);\n const items = getItems({\n sizes: dimension.sizes,\n firstItemStart: lastItem.end,\n firstItemIndex: lastItem.itemIndex + 1,\n origSize: dimension.originItemSize,\n maxSize: virtualSize - (lastItem.end - firstItem.start),\n maxCount: realCount,\n });\n return items;\n}\n\n/**\n * Get wiewport items parameters\n * caching position and calculating items count in viewport\n */\nexport function getItems(\n opt: {\n firstItemIndex: number;\n firstItemStart: number;\n origSize: number;\n maxSize: number; // virtual size\n maxCount: number; // real item count, where the last item\n sizes?: ViewSettingSizeProp;\n },\n currentSize = 0,\n) {\n const items: VirtualPositionItem[] = [];\n\n let index = opt.firstItemIndex;\n let size = currentSize;\n\n // max size or max count\n while (size <= opt.maxSize && index < opt.maxCount) {\n const newSize = getItemSize(index, opt.sizes, opt.origSize);\n items.push({\n start: opt.firstItemStart + size,\n end: opt.firstItemStart + size + newSize,\n itemIndex: index,\n size: newSize,\n });\n size += newSize;\n index++;\n }\n return items;\n}\n\n/**\n * Do batch items recombination\n * If items not overlapped with existing viewport returns null\n */\ntype RecombindDimensionData = Pick<\n DimensionSettingsState,\n 'sizes' | 'realSize' | 'originItemSize'\n>;\ntype RecombineOffsetData = {\n positiveDirection: boolean;\n} & ItemsToUpdate &\n RecombindDimensionData;\nexport function recombineByOffset(\n offset: number,\n data: RecombineOffsetData,\n): ItemsToUpdate | null {\n const newItems = [...data.items];\n const itemsCount = newItems.length;\n let newRange = {\n start: data.start,\n end: data.end,\n };\n\n // if offset out of revo-viewport, makes sense whole redraw\n if (offset > itemsCount) {\n return null;\n }\n\n // is direction of scroll positive\n if (data.positiveDirection) {\n // push item to the end\n let lastItem: VirtualPositionItem = getLastItem(data);\n\n let i = newRange.start;\n const length = i + offset;\n for (; i < length; i++) {\n const newIndex = lastItem.itemIndex + 1;\n const size = getItemSize(\n newIndex,\n data.sizes,\n data.originItemSize,\n );\n\n // if item overlapped limit break a loop\n if (lastItem.end + size > data.realSize) {\n break;\n }\n\n // new item index to recombine\n let newEnd = i % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newEnd]) {\n throw new Error('incorrect index');\n }\n\n // do recombination\n newItems[newEnd] = lastItem = {\n start: lastItem.end,\n end: lastItem.end + size,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start++;\n newRange.end = newEnd;\n }\n\n // direction is negative\n } else {\n // push item to the start\n let firstItem: VirtualPositionItem = getFirstItem(data);\n\n const end = newRange.end;\n for (let i = 0; i < offset; i++) {\n const newIndex = firstItem.itemIndex - 1;\n const size = getItemSize(\n newIndex,\n data.sizes,\n data.originItemSize,\n );\n\n // new item index to recombine\n let newStart = end - i;\n newStart = (newStart < 0 ? itemsCount + newStart : newStart) % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newStart]) {\n throw new Error('incorrect index');\n }\n\n // do recombination\n newItems[newStart] = firstItem = {\n start: firstItem.start - size,\n end: firstItem.start,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start = newStart;\n newRange.end--;\n }\n }\n const range = {\n start:\n (newRange.start < 0 ? itemsCount + newRange.start : newRange.start) %\n itemsCount,\n end:\n (newRange.end < 0 ? itemsCount + newRange.end : newRange.end) %\n itemsCount,\n };\n return {\n items: newItems,\n ...range,\n };\n}\n\nfunction getItemSize(\n index: number,\n sizes?: ViewSettingSizeProp,\n origSize = 0,\n): number {\n if (sizes && sizes[index]) {\n return sizes[index];\n }\n return origSize;\n}\n\n/**\n * Verify if position is in range of the PositionItem, start and end are included\n */\nexport function isActiveRange(\n pos: number,\n realSize: number,\n first?: PositionItem,\n last?: PositionItem,\n): boolean {\n if (!first || !last) {\n return false;\n }\n // if position is in range of first item\n // or position is after first item and last item is the last item in real size\n return (\n (pos >= first.start && pos <= first.end) ||\n (pos > first.end && last.end === realSize)\n );\n}\n\nexport function isActiveRangeOutsideLastItem(\n pos: number,\n virtualSize: number,\n firstItem?: PositionItem,\n lastItem?: PositionItem,\n) {\n // if no first item, means no items in viewport\n if (!firstItem) {\n return false;\n }\n return virtualSize + pos > lastItem?.end;\n}\n\nexport function getFirstItem(\n s: ItemsToUpdate,\n): VirtualPositionItem | undefined {\n return s.items[s.start];\n}\n\nexport function getLastItem(s: ItemsToUpdate): VirtualPositionItem {\n return s.items[s.end];\n}\n\n/**\n * Set items sizes from start index to end\n * @param vpItems\n * @param start\n * @param size\n * @param lastCoordinate\n * @returns\n */\nexport function setItemSizes(\n vpItems: VirtualPositionItem[],\n initialIndex: number,\n size: number,\n lastCoordinate: number,\n) {\n const items = [...vpItems];\n const count = items.length;\n\n let pos = lastCoordinate;\n let i = 0;\n let start = initialIndex;\n\n // viewport not inited\n if (!count) {\n return [];\n }\n // loop through array from initial item after recombination\n while (i < count) {\n const item = items[start];\n item.start = pos;\n item.size = size;\n item.end = item.start + size;\n pos = item.end;\n // loop by start index\n start++;\n i++;\n\n // if start index out of array, reset it\n if (start === count) {\n start = 0;\n }\n }\n return items;\n}\n","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"],"version":3}
|
|
1
|
+
{"file":"viewport.store-2dc172be.js","mappings":"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","names":[],"sources":["src/store/vp/viewport.helpers.ts","src/store/vp/viewport.store.ts"],"sourcesContent":["import {\n DimensionSettingsState,\n PositionItem,\n ViewSettingSizeProp,\n ViewportStateItems,\n VirtualPositionItem,\n Range,\n} from '@type';\n\nimport { getItemByPosition } from '../dimension/dimension.helpers';\n\nexport type DimensionDataViewport = Pick<\n DimensionSettingsState,\n | 'indexes'\n | 'positionIndexes'\n | 'positionIndexToItem'\n | 'sizes'\n | 'originItemSize'\n | 'realSize'\n>;\n\ntype ItemsToUpdate = Pick<ViewportStateItems, 'items' | 'start' | 'end'>;\n/**\n * Update items based on new scroll position\n * If viewport wasn't changed fully simple recombination of positions\n * Otherwise rebuild viewport items\n */\nexport function getUpdatedItemsByPosition<T extends ItemsToUpdate>(\n pos: number, // coordinate\n items: T,\n realCount: number,\n virtualSize: number,\n dimension: DimensionDataViewport,\n): ItemsToUpdate {\n const activeItem: PositionItem = getItemByPosition(dimension, pos);\n const firstItem: PositionItem = getFirstItem(items);\n let toUpdate: ItemsToUpdate;\n // do simple position recombination if items already present in viewport\n if (firstItem) {\n let changedOffsetStart = activeItem.itemIndex - (firstItem.itemIndex || 0);\n // if item changed\n if (changedOffsetStart) {\n // simple recombination\n toUpdate = recombineByOffset(Math.abs(changedOffsetStart), {\n positiveDirection: changedOffsetStart > -1,\n ...dimension,\n ...items,\n });\n }\n }\n\n const maxSizeVirtualSize = getMaxVirtualSize(\n virtualSize,\n dimension.realSize,\n activeItem,\n );\n // if partial recombination add items if revo-viewport has some space left\n if (toUpdate) {\n const extra = addMissingItems(\n activeItem,\n realCount,\n maxSizeVirtualSize,\n toUpdate,\n dimension,\n );\n if (extra.length) {\n updateMissingAndRange(toUpdate.items, extra, toUpdate);\n }\n }\n\n // new collection if no items after replacement full replacement\n if (!toUpdate) {\n const items = getItems({\n firstItemStart: activeItem.start,\n firstItemIndex: activeItem.itemIndex,\n origSize: dimension.originItemSize,\n maxSize: maxSizeVirtualSize,\n maxCount: realCount,\n sizes: dimension.sizes,\n });\n\n // range now comes from 0 to length - 1\n toUpdate = {\n items,\n start: 0,\n end: items.length - 1,\n };\n }\n return toUpdate;\n}\n\n// virtual size can differ based on scroll position if some big items are present\n// scroll can be in the middle of item and virtual size will be larger\n// so we need to exclude this part from virtual size hence it's already passed\nfunction getMaxVirtualSize(\n virtualSize: number,\n realSize: number,\n activeItem: PositionItem,\n) {\n return Math.min(virtualSize + (activeItem.end - activeItem.start), realSize);\n}\n\nexport function updateMissingAndRange(\n items: VirtualPositionItem[],\n missing: VirtualPositionItem[],\n range: Range,\n) {\n items.splice(range.end + 1, 0, ...missing);\n // update range if start larger after recombination\n if (\n range.start >= range.end &&\n !(range.start === range.end && range.start === 0)\n ) {\n range.start += missing.length;\n }\n range.end += missing.length;\n}\n\n/**\n * If partial replacement\n * this function adds items if viewport has some space left\n */\nexport function addMissingItems<T extends ItemsToUpdate>(\n firstItem: PositionItem,\n realCount: number,\n virtualSize: number,\n existingCollection: T,\n dimension: Pick<DimensionSettingsState, 'sizes' | 'originItemSize'>,\n): VirtualPositionItem[] {\n const lastItem: VirtualPositionItem = getLastItem(existingCollection);\n const items = getItems({\n sizes: dimension.sizes,\n firstItemStart: lastItem.end,\n firstItemIndex: lastItem.itemIndex + 1,\n origSize: dimension.originItemSize,\n maxSize: virtualSize - (lastItem.end - firstItem.start),\n maxCount: realCount,\n });\n return items;\n}\n\n/**\n * Get wiewport items parameters\n * caching position and calculating items count in viewport\n */\nexport function getItems(\n opt: {\n firstItemIndex: number;\n firstItemStart: number;\n origSize: number;\n maxSize: number; // virtual size\n maxCount: number; // real item count, where the last item\n sizes?: ViewSettingSizeProp;\n },\n currentSize = 0,\n) {\n const items: VirtualPositionItem[] = [];\n\n let index = opt.firstItemIndex;\n let size = currentSize;\n\n // max size or max count\n while (size <= opt.maxSize && index < opt.maxCount) {\n const newSize = getItemSize(index, opt.sizes, opt.origSize);\n items.push({\n start: opt.firstItemStart + size,\n end: opt.firstItemStart + size + newSize,\n itemIndex: index,\n size: newSize,\n });\n size += newSize;\n index++;\n }\n return items;\n}\n\n/**\n * Do batch items recombination\n * If items not overlapped with existing viewport returns null\n */\ntype RecombindDimensionData = Pick<\n DimensionSettingsState,\n 'sizes' | 'realSize' | 'originItemSize'\n>;\ntype RecombineOffsetData = {\n positiveDirection: boolean;\n} & ItemsToUpdate &\n RecombindDimensionData;\nexport function recombineByOffset(\n offset: number,\n data: RecombineOffsetData,\n): ItemsToUpdate | null {\n const newItems = [...data.items];\n const itemsCount = newItems.length;\n let newRange = {\n start: data.start,\n end: data.end,\n };\n\n // if offset out of revo-viewport, makes sense whole redraw\n if (offset > itemsCount) {\n return null;\n }\n\n // is direction of scroll positive\n if (data.positiveDirection) {\n // push item to the end\n let lastItem: VirtualPositionItem = getLastItem(data);\n\n let i = newRange.start;\n const length = i + offset;\n for (; i < length; i++) {\n const newIndex = lastItem.itemIndex + 1;\n const size = getItemSize(\n newIndex,\n data.sizes,\n data.originItemSize,\n );\n\n // if item overlapped limit break a loop\n if (lastItem.end + size > data.realSize) {\n break;\n }\n\n // new item index to recombine\n let newEnd = i % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newEnd]) {\n throw new Error('incorrect index');\n }\n\n // do recombination\n newItems[newEnd] = lastItem = {\n start: lastItem.end,\n end: lastItem.end + size,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start++;\n newRange.end = newEnd;\n }\n\n // direction is negative\n } else {\n // push item to the start\n let firstItem: VirtualPositionItem = getFirstItem(data);\n\n const end = newRange.end;\n for (let i = 0; i < offset; i++) {\n const newIndex = firstItem.itemIndex - 1;\n const size = getItemSize(\n newIndex,\n data.sizes,\n data.originItemSize,\n );\n\n // new item index to recombine\n let newStart = end - i;\n newStart = (newStart < 0 ? itemsCount + newStart : newStart) % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newStart]) {\n throw new Error('incorrect index');\n }\n\n // do recombination\n newItems[newStart] = firstItem = {\n start: firstItem.start - size,\n end: firstItem.start,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start = newStart;\n newRange.end--;\n }\n }\n const range = {\n start:\n (newRange.start < 0 ? itemsCount + newRange.start : newRange.start) %\n itemsCount,\n end:\n (newRange.end < 0 ? itemsCount + newRange.end : newRange.end) %\n itemsCount,\n };\n return {\n items: newItems,\n ...range,\n };\n}\n\nfunction getItemSize(\n index: number,\n sizes?: ViewSettingSizeProp,\n origSize = 0,\n): number {\n if (sizes && sizes[index]) {\n return sizes[index];\n }\n return origSize;\n}\n\n/**\n * Verify if position is in range of the PositionItem, start and end are included\n */\nexport function isActiveRange(\n pos: number,\n realSize: number,\n first?: PositionItem,\n last?: PositionItem,\n): boolean {\n if (!first || !last) {\n return false;\n }\n // if position is in range of first item\n // or position is after first item and last item is the last item in real size\n return (\n (pos >= first.start && pos <= first.end) ||\n (pos > first.end && last.end === realSize)\n );\n}\n\nexport function isActiveRangeOutsideLastItem(\n pos: number,\n virtualSize: number,\n firstItem?: PositionItem,\n lastItem?: PositionItem,\n) {\n // if no first item, means no items in viewport\n if (!firstItem) {\n return false;\n }\n return virtualSize + pos > lastItem?.end;\n}\n\nexport function getFirstItem(\n s: ItemsToUpdate,\n): VirtualPositionItem | undefined {\n return s.items[s.start];\n}\n\nexport function getLastItem(s: ItemsToUpdate): VirtualPositionItem {\n return s.items[s.end];\n}\n\n/**\n * Set items sizes from start index to end\n * @param vpItems\n * @param start\n * @param size\n * @param lastCoordinate\n * @returns\n */\nexport function setItemSizes(\n vpItems: VirtualPositionItem[],\n initialIndex: number,\n size: number,\n lastCoordinate: number,\n) {\n const items = [...vpItems];\n const count = items.length;\n\n let pos = lastCoordinate;\n let i = 0;\n let start = initialIndex;\n\n // viewport not inited\n if (!count) {\n return [];\n }\n // loop through array from initial item after recombination\n while (i < count) {\n const item = items[start];\n item.start = pos;\n item.size = size;\n item.end = item.start + size;\n pos = item.end;\n // loop by start index\n start++;\n i++;\n\n // if start index out of array, reset it\n if (start === count) {\n start = 0;\n }\n }\n return items;\n}\n","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"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import{k as t,r as e,l as s,h as i,m as n}from"./dimension.helpers-
|
|
5
|
-
//# sourceMappingURL=base.plugin-
|
|
4
|
+
import{k as t,r as e,l as s,h as i,m as n}from"./dimension.helpers-c0c2888f.js";import"./toNumber-8de324a7.js";import"./index-e661aeb5.js";const o=t=>{let e={};const s=(s,i)=>{const o=Object.assign({},s);e={};n(i,((t,s)=>{if(t&&o[s]){e[s]=o[s];delete o[s]}}));t.setDimensionSize(o)};return{set(i,n){switch(i){case"trimmed":const i=n;const o=t.store.get("sizes");s(Object.assign(Object.assign({},o),e),i);break}}}};const r=t=>({set(e){switch(e){case"count":case"sizes":case"originItemSize":let e=0;const s=t.store.get("count");for(let i=0;i<s;i++){e+=t.store.get("sizes")[i]||t.store.get("originItemSize")}t.setStore({realSize:e})}}});function c(){return{indexes:[],count:0,trimmed:{},sizes:{},positionIndexToItem:{},indexToItem:{},positionIndexes:[]}}function a(){return Object.assign(Object.assign({},c()),{realSize:0,originItemSize:0})}class h{constructor(){this.store=t(a());this.store.use(o(this));this.store.use(r(this))}getCurrentState(){const t=a();const s=Object.keys(t);return e(s,((t,e)=>{const s=this.store.get(e);t[e]=s;return t}),t)}dispose(){s(this.store,a())}setStore(t){s(this.store,t)}drop(){s(this.store,c())}setDimensionSize(t){const e=i(this.store.get("originItemSize"),t);s(this.store,e);return e}}const d=["rowPinStart","rgRow","rowPinEnd"];const l=["colPinStart","rgCol","colPinEnd"];function u(t){return d.indexOf(t)>-1}class m{constructor(t,e){this.revogrid=t;this.providers=e;this.subscriptions={}}addEventListener(t,e){this.revogrid.addEventListener(t,e);this.subscriptions[t]=e}watch(t,e,{immediate:s}={immediate:false}){const i=Object.getOwnPropertyDescriptor(this.revogrid,t)||Object.getOwnPropertyDescriptor(this.revogrid.constructor.prototype,t);Object.defineProperty(this.revogrid,t,{set(t){var s;const n=e(t);if(n===false){return}return(s=i===null||i===void 0?void 0:i.set)===null||s===void 0?void 0:s.call(this,t)},get(){var t;return(t=i===null||i===void 0?void 0:i.get)===null||t===void 0?void 0:t.call(this)}});if(s){e(i===null||i===void 0?void 0:i.value)}}removeEventListener(t){this.revogrid.removeEventListener(t,this.subscriptions[t]);delete this.subscriptions[t]}emit(t,e){const s=new CustomEvent(t,{detail:e,cancelable:true});this.revogrid.dispatchEvent(s);return s}clearSubscriptions(){for(let t in this.subscriptions){this.removeEventListener(t)}}destroy(){this.clearSubscriptions()}}export{m as B,h as D,l as c,u as i,d as r};
|
|
5
|
+
//# sourceMappingURL=base.plugin-454940e3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["trimmedPlugin","store","trimmedSize","setTrimmed","sizes","trimmed","newSize","Object","assign","each","v","index","setDimensionSize","set","key","val","trim","get","realSizePlugin","k","realSize","count","i","setStore","initialBase","indexes","positionIndexToItem","indexToItem","positionIndexes","initialState","originItemSize","DimensionStore","constructor","this","createStore","use","getCurrentState","state","keys","reduce","r","data","dispose","drop","dimensionData","calculateDimensionData","rowTypes","columnTypes","isRowType","type","indexOf","BasePlugin","revogrid","providers","subscriptions","addEventListener","eventName","callback","watch","prop","immediate","nativeValueDesc","getOwnPropertyDescriptor","prototype","defineProperty","keepDefault","_a","call","value","removeEventListener","emit","detail","event","CustomEvent","cancelable","dispatchEvent","clearSubscriptions","destroy"],"sources":["src/store/dimension/dimension.store.ts","src/store/index.ts","src/plugins/base.plugin.ts"],"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 return dimensionData;\n }\n}\n","import type { DimensionCols, DimensionRows } from '@type';\n\nexport * from './dataSource';\nexport * from './dimension';\nexport * from './selection';\nexport * from './vp';\n\nexport const rowTypes: DimensionRows[] = ['rowPinStart', 'rgRow', 'rowPinEnd'];\nexport const columnTypes: DimensionCols[] = [\n 'colPinStart',\n 'rgCol',\n 'colPinEnd',\n];\n\nexport function isRowType(type: DimensionRows | any): type is DimensionRows {\n return rowTypes.indexOf(type) > -1;\n}\n","import { PluginProviders, PluginBaseComponent } from '..';\n\ntype WatchConfig = { immediate: boolean };\n\n/**\n * Base layer for plugins\n * Provide minimal starting core for plugins to work\n * Extend this class to create plugin\n */\nexport class BasePlugin implements PluginBaseComponent {\n protected readonly subscriptions: Record<string, (...args: any[]) => void> = {};\n constructor(protected revogrid: HTMLRevoGridElement, protected providers: PluginProviders) {}\n /**\n *\n * @param eventName - event name to subscribe to in revo-grid component (e.g. 'beforeheaderclick')\n * @param callback - callback function for event\n */\n protected addEventListener(\n eventName: string,\n callback: (e: CustomEvent) => void,\n ) {\n this.revogrid.addEventListener(eventName, callback);\n this.subscriptions[eventName] = callback;\n }\n\n /**\n * Subscribe to property change in revo-grid component\n * You can return false in callback to prevent default value set\n *\n * @param prop - property name\n * @param callback - callback function\n * @param immediate - trigger callback immediately with current value\n */\n protected watch<T extends any>(\n prop: string,\n callback: (arg: T) => boolean | void,\n { immediate }: Partial<WatchConfig> = { immediate: false },\n ) {\n const nativeValueDesc =\n Object.getOwnPropertyDescriptor(this.revogrid, prop) ||\n Object.getOwnPropertyDescriptor(this.revogrid.constructor.prototype, prop);\n\n // Overwrite property descriptor for this instance\n Object.defineProperty(this.revogrid, prop, {\n set(val: T) {\n const keepDefault = callback(val);\n if (keepDefault === false) {\n return;\n }\n // Continue with native behavior\n return nativeValueDesc?.set?.call(this, val);\n },\n get() {\n // Continue with native behavior\n return nativeValueDesc?.get?.call(this);\n },\n });\n if (immediate) {\n callback(nativeValueDesc?.value);\n }\n }\n\n /**\n * Remove event listener\n * @param eventName\n */\n protected removeEventListener(eventName: string) {\n this.revogrid.removeEventListener(eventName, this.subscriptions[eventName]);\n delete this.subscriptions[eventName];\n }\n\n /**\n * Emit event from revo-grid component\n * Event can be cancelled by calling event.preventDefault() in callback\n */\n protected emit(eventName: string, detail?: any) {\n const event = new CustomEvent(eventName, { detail, cancelable: true });\n this.revogrid.dispatchEvent(event);\n return event;\n }\n\n /**\n * Clear all subscriptions\n */\n protected clearSubscriptions() {\n for (let type in this.subscriptions) {\n this.removeEventListener(type);\n }\n }\n\n /**\n * Destroy plugin and clear all subscriptions\n */\n destroy() {\n this.clearSubscriptions();\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Built by Revolist OU ❤️
|
|
3
3
|
*/
|
|
4
|
-
import{C as t,B as n,a as e,b as o}from"./dimension.helpers-
|
|
5
|
-
//# sourceMappingURL=column.service-
|
|
4
|
+
import{C as t,B as n,a as e,b as o}from"./dimension.helpers-c0c2888f.js";import"./toNumber-8de324a7.js";import"./index-e661aeb5.js";import{g as s}from"./selection.helpers-0f3ed629.js";import{G as r,C as i,D as c}from"./index-5a722722.js";const a=`${r}-depth`;const u=`${r}-name`;const f=`${r}-id`;const l=`${r}-value`;const d=`${r}-column`;const p=`${r}-expanded`;const h=`${r}-original-index`;const y=`group-expand`;const v=`groupexpandclick`;const g="rgRow";function m(t,n){return t[n]||null}function x(t,n,{prevExpanded:e,expandedAll:o,getGroupValue:s=m}){const r=new Map;t.forEach(((t,e)=>{const o=n.map((n=>s(t,n)));const i=o.pop();let c=r;o.forEach((t=>{if(!c.has(t)){c.set(t,new Map)}c=c.get(t)}));if(!c.has(i)){c.set(i,[])}const a=c.get(i);a.push(Object.assign(Object.assign({},t),{[h]:e}))}));let i=-1;const c=n.length;const d={};const y={};const v={};const g=[];function x(t,n,s){const r=n.length;t.forEach(((t,c)=>{const m=[...n,c];const j=m.join(",");const b=s&&(!!o||!!(e===null||e===void 0?void 0:e[j]));g.push({[u]:c,[a]:r,[f]:JSON.stringify(m),[l]:j,[p]:b});i+=1;if(!b&&r){d[i]=true}if(Array.isArray(t)){t.forEach((t=>{i+=1;if(!b){d[i]=true}y[t[h]]=i;const n=m.map(((t,n)=>m.slice(0,n+1).join(",")));n.forEach((t=>{if(!v[t]){v[t]=[]}v[t].push(i)}))}));g.push(...t)}else{x(t,m,b)}}))}x(r,[],true);return{sourceWithGroups:g,depth:c,trimmed:d,oldNewIndexMap:y,childrenByGroup:v}}function j(t){return t&&t[u]}function b(t){return t&&typeof t[u]!=="undefined"}function O(t){return t&&typeof t[d]!=="undefined"}function w(t,n){const e=t.length;let o=0;for(;o<e;o++){if(t[o]!==n[o]){return o}}return o}function I(t){const n=JSON.parse(t);if(!Array.isArray(n)){return null}return n}function C(t,n,e){const o=I(e[f]);if(!o){return false}const s=w(t,o);return n[a]<s}const D="header";const R="footer";const T="content";const $="data";function A(t,n){const e=t.viewports[t.colType].store.get("realCount");const o=t.viewports[n].store.get("realCount");return{x:e,y:o}}function G(t,n,e){var o=-1,s=t.length;if(n<0){n=-n>s?0:s+n}e=e>s?s:e;if(e<0){e+=s}s=n>e?0:e-n>>>0;n>>>=0;var r=Array(s);while(++o<s){r[o]=t[o+n]}return r}var M=G;var N=M,P=t,S=n;function k(t,n,e){var o=t==null?0:t.length;if(!o){return[]}if(e&&typeof e!="number"&&P(t,n,e)){n=0;e=o}else{n=n==null?0:S(n);e=e===undefined?o:S(e)}return N(t,n,e)}var B=k;class E{get columns(){return e(this.source)}constructor(t,n){this.dataStore=t;this.source=n;this.unsubscribe=[];this.hasGrouping=false;this.unsubscribe.push(n.onChange("source",(t=>this.checkGrouping(t))));this.checkGrouping(n.get("source"));this.type=n.get("type")}checkGrouping(t){for(let n of t){if(O(n)){this.hasGrouping=true;return}this.hasGrouping=false}}isReadOnly(t,n){var e;const o=(e=this.columns[n])===null||e===void 0?void 0:e.readonly;if(typeof o==="function"){const e=this.rowDataModel(t,n);return o(e)}return o}mergeProperties(t,n,e,o,s){const r={[i]:true,[c]:this.isReadOnly(t,n)};let a=Object.assign(Object.assign({},e),{class:r});const u=s===null||s===void 0?void 0:s(o);if(!u){return a}return F(a,u)}getRowClass(t,n){const e=o(this.dataStore,t)||{};return e[n]||""}getCellData(t,n){const e=this.rowDataModel(t,n);return J(e.model[e.prop])}getSaveData(t,n,e){if(typeof e==="undefined"){e=this.getCellData(t,n)}const o=this.rowDataModel(t,n);return{prop:o.prop,rowIndex:t,colIndex:n,val:e,model:o.model,colType:this.type,type:this.dataStore.get("type")}}getCellEditor(t,n,e){var o;const s=(o=this.columns[n])===null||o===void 0?void 0:o.editor;if(!s){return undefined}if(typeof s==="string"){return e[s]}return s}rowDataModel(t,n){const e=this.columns[n];const s=e===null||e===void 0?void 0:e.prop;const r=o(this.dataStore,t)||{};const i=r[s];const c=this.dataStore.get("type");return{prop:s,model:r,data:this.dataStore.get("source"),column:e,rowIndex:t,colIndex:n,colType:this.type,type:c,value:i}}getRangeData(t,n){var e;const s={};const r=t.oldRange.x1-t.oldRange.x+1;const i=t.oldRange.y1-t.oldRange.y+1;const c={};for(let a=t.newRange.y,u=0;a<t.newRange.y1+1;a++,u++){const f=t.oldRange.y+u%i;const l=o(this.dataStore,f)||{};for(let o=t.newRange.x,i=0;o<t.newRange.x1+1;o++,i++){if(a>=t.oldRange.y&&a<=t.oldRange.y1&&o>=t.oldRange.x&&o<=t.oldRange.x1){continue}if(!this.columns[o]){continue}const u=(e=this.columns[o])===null||e===void 0?void 0:e.prop;const d=t.oldRange.x+i%r;const p=n[d].prop;if(!this.isReadOnly(a,o)){if(!s[a]){s[a]={}}s[a][u]=l[p];if(!c[a]){c[a]={}}c[a][u]={colIndex:d,colProp:p,rowIndex:f}}}}return{changed:s,mapping:c}}getTransformedDataToApply(t,n){const e={};const o=n.length;const r=this.columns.length;const i=this.dataStore.get("items").length;let c=t.y;let a=0;for(let s=0;c<i&&s<o;c++,s++){const i=n[s%o];const u=(i===null||i===void 0?void 0:i.length)||0;let f=t.x;for(let t=0;f<r&&t<u;f++,t++){const n=this.columns[f].prop;const o=t%r;if(!this.isReadOnly(c,f)){if(!e[c]){e[c]={}}e[c][n]=i[o]}}a=Math.max(a,f-1)}const u=s(t,{y:c-1,x:a});return{changed:e,range:u}}getRangeStaticData(t,n){const e={};for(let o=t.y,s=0;o<t.y1+1;o++,s++){for(let s=t.x,r=0;s<t.x1+1;s++,r++){if(!this.columns[s]){continue}const t=this.columns[s].prop;if(!this.isReadOnly(o,s)){if(!e[o]){e[o]={}}e[o][t]=n}}}return e}getRangeTransformedToProps(t,n){var e;const s=[];const r=this.dataStore.get("type");for(let i=t.y,c=0;i<t.y1+1;i++,c++){for(let c=t.x,a=0;c<t.x1+1;c++,a++){const t=(e=this.columns[c])===null||e===void 0?void 0:e.prop;s.push({prop:t,rowIndex:i,colIndex:c,model:o(n,i),type:r,colType:this.type})}}return s}copyRangeArray(t,n){const e=[...this.columns];const s=B(e,t.x,t.x1+1).map((t=>t.prop));const r=[];const i={};for(let e=t.y;e<=t.y1;e++){const t=[];i[e]={};for(let r of s){const s=o(n,e);if(!s){continue}const c=s[r];t.push(c);i[e][r]=c}r.push(t)}return{data:r,mapping:i}}destroy(){this.unsubscribe.forEach((t=>t()))}}function J(t){if(typeof t==="undefined"||t===null){return""}return t}function q(t,n){if(typeof t==="function"){return t(n)}return!!t}function F(t,n){let e=Object.assign(Object.assign({},n),t);if(n.class){if(typeof n.class==="object"&&typeof e.class==="object"){e.class=Object.assign(Object.assign({},n.class),e.class)}else if(typeof n.class==="string"&&typeof e.class==="object"){e.class[n.class]=true}else if(typeof e.class==="string"){e.class+=" "+n.class}}if(n.style){e.style=Object.assign(Object.assign({},n.style),e.style)}return e}export{T as C,$ as D,R as F,p as G,D as H,l as P,I as a,C as b,a as c,f as d,g as e,d as f,j as g,v as h,b as i,x as j,O as k,A as l,F as m,E as n,y as o,u as p,q,J as r};
|
|
5
|
+
//# sourceMappingURL=column.service-ffe99cfc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GROUP_DEPTH","GRID_INTERNALS","PSEUDO_GROUP_ITEM","PSEUDO_GROUP_ITEM_ID","PSEUDO_GROUP_ITEM_VALUE","PSEUDO_GROUP_COLUMN","GROUP_EXPANDED","GROUP_ORIGINAL_INDEX","GROUP_EXPAND_BTN","GROUP_EXPAND_EVENT","GROUPING_ROW_TYPE","getGroupValueDefault","item","prop","gatherGrouping","array","groupIds","prevExpanded","expandedAll","getGroupValue","groupedItems","Map","forEach","originalIndex","groupLevelValues","map","groupId","lastLevelValue","pop","currentGroupLevel","value","has","set","get","lastLevelItems","push","Object","assign","itemIndex","groupingDepth","length","trimmed","oldNewIndexMap","pseudoGroupTest","sourceWithGroups","flattenGroupMaps","groupedValues","parentIds","isExpanded","depth","innerGroupedValues","levelIds","mergedIds","join","isGroupExpanded","JSON","stringify","Array","isArray","pseudoGroupTestIds","_value","index","slice","pseudoGroupTestId","childrenByGroup","getGroupingName","rgRow","isGrouping","isGroupingColumn","column","measureEqualDepth","groupA","groupB","ln","i","getParsedGroup","id","parseGroup","parse","isSameGroup","currentGroup","currentModel","nextModel","nextGroup","HEADER_SLOT","FOOTER_SLOT","CONTENT_SLOT","DATA_SLOT","getLastCell","data","rowType","lastVisibleColumnCount","viewports","colType","store","lastVisibleRowCount","x","y","baseSlice","start","end","result","_baseSlice","require$$0","isIterateeCall","require$$1","toInteger","require$$2","undefined","slice_1","ColumnService","columns","getVisibleSourceItem","this","source","constructor","dataStore","unsubscribe","hasGrouping","onChange","s","checkGrouping","type","cols","rgCol","isReadOnly","r","c","readOnly","_a","readonly","rowDataModel","mergeProperties","defaultProps","model","extraPropsFunc","cellClass","CELL_CLASS","DISABLED_CLASS","props","class","extra","doPropMerge","getRowClass","getSourceItem","getCellData","getSaveData","rowIndex","colIndex","val","getCellEditor","_r","editors","editor","getRangeData","d","changed","copyColLength","oldRange","x1","copyRowLength","y1","mapping","newRange","oldRowIndex","copyRow","j","copyColIndex","copyColumnProp","colProp","getTransformedDataToApply","colLength","rowLength","maxCol","p","currentCol","Math","max","range","getRange","getRangeStaticData","getRangeTransformedToProps","area","copyRangeArray","v","toCopy","destroy","f","isRowDragService","rowDrag","existing","style"],"sources":["src/plugins/groupingRow/grouping.const.ts","src/plugins/groupingRow/grouping.service.ts","src/components/revoGrid/viewport.helpers.ts","node_modules/lodash/_baseSlice.js","node_modules/lodash/slice.js","src/components/data/column.service.ts"],"sourcesContent":["import { GRID_INTERNALS } from '../../utils/consts';\n\nexport const GROUP_DEPTH = `${GRID_INTERNALS}-depth`;\nexport const PSEUDO_GROUP_ITEM = `${GRID_INTERNALS}-name`;\nexport const PSEUDO_GROUP_ITEM_ID = `${GRID_INTERNALS}-id`;\nexport const PSEUDO_GROUP_ITEM_VALUE = `${GRID_INTERNALS}-value`;\nexport const PSEUDO_GROUP_COLUMN = `${GRID_INTERNALS}-column`;\nexport const GROUP_EXPANDED = `${GRID_INTERNALS}-expanded`;\nexport const GROUP_ORIGINAL_INDEX = `${GRID_INTERNALS}-original-index`;\nexport const GROUP_EXPAND_BTN = `group-expand`;\nexport const GROUP_EXPAND_EVENT = `groupexpandclick`;\nexport const GROUPING_ROW_TYPE = 'rgRow';\n","import { DataType, ColumnProp, ColumnRegular } from '@type';\nimport {\n GROUP_DEPTH,\n GROUP_EXPANDED,\n PSEUDO_GROUP_COLUMN,\n PSEUDO_GROUP_ITEM,\n PSEUDO_GROUP_ITEM_ID,\n PSEUDO_GROUP_ITEM_VALUE,\n GROUP_ORIGINAL_INDEX,\n} from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\n\nexport type ExpandedOptions = {\n prevExpanded?: Record<string, boolean>;\n expandedAll?: boolean; // skip trim\n\n getGroupValue?(item: DataType, prop: string | number): any;\n groupLabelTemplate?: GroupLabelTemplateFunc;\n};\n\ntype GroupedData = Map<string, GroupedData | DataType[]>;\n\nfunction getGroupValueDefault(item: DataType, prop: string | number) {\n return item[prop] || null;\n}\n\n\n/**\n * Gather data for grouping\n * @param array - flat data array\n * @param groupIds - ids of groups\n * @param expanded - potentially expanded items if present\n */\nexport function gatherGrouping(\n array: DataType[],\n groupIds: ColumnProp[],\n { prevExpanded, expandedAll, getGroupValue = getGroupValueDefault }: ExpandedOptions,\n) {\n const groupedItems: GroupedData = new Map();\n array.forEach((item, originalIndex) => {\n const groupLevelValues = groupIds.map(groupId => getGroupValue(item, groupId));\n const lastLevelValue = groupLevelValues.pop();\n let currentGroupLevel = groupedItems;\n groupLevelValues.forEach(value => {\n if (!currentGroupLevel.has(value)) {\n currentGroupLevel.set(value, new Map());\n }\n currentGroupLevel = currentGroupLevel.get(value) as GroupedData;\n });\n if (!currentGroupLevel.has(lastLevelValue)) {\n currentGroupLevel.set(lastLevelValue, []);\n }\n const lastLevelItems = currentGroupLevel.get(\n lastLevelValue,\n ) as DataType[];\n lastLevelItems.push({\n ...item,\n [GROUP_ORIGINAL_INDEX]: originalIndex,\n });\n });\n\n let itemIndex = -1;\n const groupingDepth = groupIds.length;\n // collapse all groups in the beginning\n const trimmed: Record<number, boolean> = {};\n // index mapping\n const oldNewIndexMap: Record<number, number> = {};\n // check if group header exists\n const pseudoGroupTest: Record<string, number[]> = {};\n const sourceWithGroups: DataType[] = [];\n function flattenGroupMaps(\n groupedValues: GroupedData,\n parentIds: string[],\n isExpanded: boolean,\n ) {\n const depth = parentIds.length;\n groupedValues.forEach((innerGroupedValues, groupId) => {\n const levelIds = [...parentIds, groupId];\n const mergedIds = levelIds.join(',');\n const isGroupExpanded =\n isExpanded && (!!expandedAll || !!prevExpanded?.[mergedIds]);\n sourceWithGroups.push({\n [PSEUDO_GROUP_ITEM]: groupId,\n [GROUP_DEPTH]: depth,\n [PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),\n [PSEUDO_GROUP_ITEM_VALUE]: mergedIds,\n [GROUP_EXPANDED]: isGroupExpanded,\n });\n itemIndex += 1;\n if (!isGroupExpanded && depth) {\n trimmed[itemIndex] = true;\n }\n if (Array.isArray(innerGroupedValues)) {\n innerGroupedValues.forEach(value => {\n itemIndex += 1;\n if (!isGroupExpanded) {\n trimmed[itemIndex] = true;\n }\n oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;\n const pseudoGroupTestIds = levelIds.map((_value, index) =>\n levelIds.slice(0, index + 1).join(','),\n );\n pseudoGroupTestIds.forEach(pseudoGroupTestId => {\n if (!pseudoGroupTest[pseudoGroupTestId]) {\n pseudoGroupTest[pseudoGroupTestId] = [];\n }\n pseudoGroupTest[pseudoGroupTestId].push(itemIndex);\n });\n });\n sourceWithGroups.push(...innerGroupedValues);\n } else {\n flattenGroupMaps(innerGroupedValues, levelIds, isGroupExpanded);\n }\n });\n }\n flattenGroupMaps(groupedItems, [], true);\n\n return {\n sourceWithGroups, // updates source mirror\n depth: groupingDepth, // largest depth for grouping\n trimmed, // used for expand/collapse grouping values\n oldNewIndexMap, // used for mapping old values to new\n childrenByGroup: pseudoGroupTest, // used to get child items in group\n };\n}\n\nexport function getGroupingName(rgRow?: DataType) {\n return rgRow && rgRow[PSEUDO_GROUP_ITEM];\n}\n\nexport function isGrouping(rgRow?: DataType) {\n return rgRow && typeof rgRow[PSEUDO_GROUP_ITEM] !== 'undefined';\n}\n\nexport function isGroupingColumn(column?: ColumnRegular) {\n return column && typeof column[PSEUDO_GROUP_COLUMN] !== 'undefined';\n}\n\nexport function measureEqualDepth<T>(groupA: T[], groupB: T[]) {\n const ln = groupA.length;\n let i = 0;\n for (; i < ln; i++) {\n if (groupA[i] !== groupB[i]) {\n return i;\n }\n }\n return i;\n}\n\nexport function getParsedGroup(id: string): any[] {\n const parseGroup = JSON.parse(id);\n // extra precaution and type safe guard\n if (!Array.isArray(parseGroup)) {\n return null;\n }\n return parseGroup;\n}\n\n// check if items is child of current clicked group\nexport function isSameGroup(\n currentGroup: any[],\n currentModel: DataType,\n nextModel: DataType,\n) {\n const nextGroup = getParsedGroup(nextModel[PSEUDO_GROUP_ITEM_ID]);\n if (!nextGroup) {\n return false;\n }\n\n const depth = measureEqualDepth(currentGroup, nextGroup);\n return currentModel[GROUP_DEPTH] < depth;\n}\n","/**\n * Collects data for pinned columns in the required @ViewportProps format.\n */\n\nimport { MultiDimensionType } from '@type';\nimport { Cell } from '@type';\nimport { ViewportColumn } from '@type';\n\n/**\n * Represents the slot names for the viewport slots.\n */\nexport const HEADER_SLOT = 'header'; // Slot name for the header slot\nexport const FOOTER_SLOT = 'footer'; // Slot name for the footer slot\nexport const CONTENT_SLOT = 'content'; // Slot name for the content slot\nexport const DATA_SLOT = 'data'; // Slot name for the data slot\n\n/**\n * Returns the last visible cell in the viewport for a given row type.\n * Coordinates are not zero-based and are relative to the viewport.\n * If needed to be zero-based they can be adjusted by subtracting 1.\n */\nexport function getLastCell(\n data: ViewportColumn,\n rowType: MultiDimensionType,\n): Cell {\n // Get the last visible column count from the viewport column data.\n const lastVisibleColumnCount = data.viewports[data.colType].store.get('realCount');\n\n // Get the last visible row count for the given row type from the viewport column data.\n const lastVisibleRowCount = data.viewports[rowType].store.get('realCount');\n\n // Return the last visible cell with the last visible column count and row count.\n return {\n x: lastVisibleColumnCount,\n y: lastVisibleRowCount,\n };\n}\n\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n}\n\nmodule.exports = slice;\n","import { DSourceState, getSourceItem, getVisibleSourceItem } from '@store';\nimport { CELL_CLASS, DISABLED_CLASS } from '../../utils/consts';\nimport { getRange } from '@store';\n\nimport { isGroupingColumn } from '../../plugins/groupingRow/grouping.service';\nimport slice from 'lodash/slice';\nimport {\n DimensionCols,\n DimensionRows,\n RowDrag,\n ColumnRegular,\n DataType,\n ReadOnlyFormat,\n CellProps,\n ColumnDataSchemaModel,\n ColumnProp,\n DataLookup,\n DataFormat,\n ChangedRange,\n OldNewRangeMapping,\n Cell,\n RangeArea,\n BeforeSaveDataDetails,\n EditorCtr,\n Editors,\n} from '@type';\nimport { Observable } from '../../utils/store.utils';\n\nexport type ColumnStores = {\n [T in DimensionCols]: Observable<DSourceState<ColumnRegular, DimensionCols>>;\n};\nexport type RowStores = {\n [T in DimensionRows]: Observable<DSourceState<DataType, DimensionRows>>;\n};\n\nexport default class ColumnService {\n private unsubscribe: { (): void }[] = [];\n get columns(): ColumnRegular[] {\n return getVisibleSourceItem(this.source);\n }\n\n hasGrouping = false;\n type: DimensionCols;\n\n constructor(\n private dataStore: Observable<DSourceState<DataType, DimensionRows>>,\n private source: Observable<DSourceState<ColumnRegular, DimensionCols>>,\n ) {\n this.unsubscribe.push(\n source.onChange('source', s => this.checkGrouping(s)),\n );\n this.checkGrouping(source.get('source'));\n this.type = source.get('type');\n }\n\n private checkGrouping(cols: ColumnRegular[]) {\n for (let rgCol of cols) {\n if (isGroupingColumn(rgCol)) {\n this.hasGrouping = true;\n return;\n }\n this.hasGrouping = false;\n }\n }\n\n isReadOnly(r: number, c: number): boolean {\n const readOnly: ReadOnlyFormat = this.columns[c]?.readonly;\n if (typeof readOnly === 'function') {\n const data = this.rowDataModel(r, c);\n return readOnly(data);\n }\n return readOnly;\n }\n\n mergeProperties(\n r: number,\n c: number,\n defaultProps: CellProps,\n model: ColumnDataSchemaModel,\n extraPropsFunc: ColumnRegular['cellProperties'],\n ): CellProps {\n const cellClass: { [key: string]: boolean } = {\n [CELL_CLASS]: true,\n [DISABLED_CLASS]: this.isReadOnly(r, c),\n };\n let props: CellProps = {\n ...defaultProps,\n class: cellClass,\n };\n const extra = extraPropsFunc?.(model);\n if (!extra) {\n return props;\n }\n return doPropMerge(props, extra);\n }\n\n getRowClass(r: number, prop: string): string {\n const model = getSourceItem(this.dataStore, r) || {};\n return model[prop] || '';\n }\n\n getCellData(r: number, c: number): string {\n const data = this.rowDataModel(r, c);\n return getCellData(data.model[data.prop as number]);\n }\n\n getSaveData(\n rowIndex: number,\n colIndex: number,\n val?: string,\n ): BeforeSaveDataDetails {\n if (typeof val === 'undefined') {\n val = this.getCellData(rowIndex, colIndex);\n }\n const data = this.rowDataModel(rowIndex, colIndex);\n return {\n prop: data.prop,\n rowIndex,\n colIndex,\n val,\n model: data.model,\n colType: this.type,\n type: this.dataStore.get('type'),\n };\n }\n\n getCellEditor(\n _r: number,\n c: number,\n editors: Editors,\n ): EditorCtr | undefined {\n const editor = this.columns[c]?.editor;\n if (!editor) {\n return undefined;\n }\n // reference\n if (typeof editor === 'string') {\n return editors[editor];\n }\n return editor;\n }\n\n /**\n * Get cell data model for given rowIndex and colIndex\n * Used to pass data to editor/renderer\n */\n rowDataModel(rowIndex: number, colIndex: number): ColumnDataSchemaModel {\n const column = this.columns[colIndex];\n const prop: ColumnProp | undefined = column?.prop;\n const model = getSourceItem(this.dataStore, rowIndex) || {};\n const value = model[prop];\n const type = this.dataStore.get('type');\n return {\n prop,\n model,\n data: this.dataStore.get('source'),\n column,\n rowIndex,\n colIndex,\n colType: this.type,\n type,\n value,\n };\n }\n\n getRangeData(\n d: ChangedRange,\n columns: ColumnRegular[],\n ): {\n changed: DataLookup;\n mapping: OldNewRangeMapping;\n } {\n const changed: DataLookup = {};\n\n // get original length sizes\n const copyColLength = d.oldRange.x1 - d.oldRange.x + 1;\n const copyRowLength = d.oldRange.y1 - d.oldRange.y + 1;\n const mapping: OldNewRangeMapping = {};\n\n // rows\n for (\n let rowIndex = d.newRange.y, i = 0;\n rowIndex < d.newRange.y1 + 1;\n rowIndex++, i++\n ) {\n // copy original data link\n const oldRowIndex = d.oldRange.y + (i % copyRowLength);\n const copyRow = getSourceItem(this.dataStore, oldRowIndex) || {};\n\n // columns\n for (\n let colIndex = d.newRange.x, j = 0;\n colIndex < d.newRange.x1 + 1;\n colIndex++, j++\n ) {\n // check if old range area\n if (\n rowIndex >= d.oldRange.y &&\n rowIndex <= d.oldRange.y1 &&\n colIndex >= d.oldRange.x &&\n colIndex <= d.oldRange.x1\n ) {\n continue;\n }\n\n // requested column beyond range\n if (!this.columns[colIndex]) {\n continue;\n }\n const prop = this.columns[colIndex]?.prop;\n const copyColIndex = d.oldRange.x + (j % copyColLength);\n const copyColumnProp = columns[copyColIndex].prop;\n\n /** if can write */\n if (!this.isReadOnly(rowIndex, colIndex)) {\n /** to show before save */\n if (!changed[rowIndex]) {\n changed[rowIndex] = {};\n }\n changed[rowIndex][prop] = copyRow[copyColumnProp];\n /** Generate mapping object */\n if (!mapping[rowIndex]) {\n mapping[rowIndex] = {};\n }\n mapping[rowIndex][prop] = {\n colIndex: copyColIndex,\n colProp: copyColumnProp,\n rowIndex: oldRowIndex,\n };\n }\n }\n }\n return {\n changed,\n mapping,\n };\n }\n\n getTransformedDataToApply(\n start: Cell,\n data: DataFormat[][],\n ): {\n changed: DataLookup;\n range: RangeArea;\n } {\n const changed: DataLookup = {};\n const copyRowLength = data.length;\n const colLength = this.columns.length;\n const rowLength = this.dataStore.get('items').length;\n // rows\n let rowIndex = start.y;\n let maxCol = 0;\n for (\n let i = 0;\n rowIndex < rowLength && i < copyRowLength;\n rowIndex++, i++\n ) {\n // copy original data link\n const copyRow = data[i % copyRowLength];\n const copyColLength = copyRow?.length || 0;\n // columns\n let colIndex = start.x;\n for (\n let j = 0;\n colIndex < colLength && j < copyColLength;\n colIndex++, j++\n ) {\n const p = this.columns[colIndex].prop;\n const currentCol = j % colLength;\n\n /** if can write */\n if (!this.isReadOnly(rowIndex, colIndex)) {\n /** to show before save */\n if (!changed[rowIndex]) {\n changed[rowIndex] = {};\n }\n changed[rowIndex][p] = copyRow[currentCol];\n }\n }\n maxCol = Math.max(maxCol, colIndex - 1);\n }\n const range = getRange(start, {\n y: rowIndex - 1,\n x: maxCol,\n });\n return {\n changed,\n range,\n };\n }\n\n getRangeStaticData(d: RangeArea, value: DataFormat): DataLookup {\n const changed: DataLookup = {};\n\n // rows\n for (let rowIndex = d.y, i = 0; rowIndex < d.y1 + 1; rowIndex++, i++) {\n // columns\n for (let colIndex = d.x, j = 0; colIndex < d.x1 + 1; colIndex++, j++) {\n // requested column beyond range\n if (!this.columns[colIndex]) {\n continue;\n }\n const p = this.columns[colIndex].prop;\n\n /** if can write */\n if (!this.isReadOnly(rowIndex, colIndex)) {\n /** to show before save */\n if (!changed[rowIndex]) {\n changed[rowIndex] = {};\n }\n changed[rowIndex][p] = value;\n }\n }\n }\n return changed;\n }\n\n getRangeTransformedToProps(\n d: RangeArea,\n store: Observable<DSourceState<DataType, DimensionRows>>,\n ) {\n const area: {\n prop: ColumnProp;\n rowIndex: number;\n colIndex: number;\n model: DataType;\n colType: DimensionCols;\n type: DimensionRows;\n }[] = [];\n\n const type = this.dataStore.get('type');\n // rows\n for (let rowIndex = d.y, i = 0; rowIndex < d.y1 + 1; rowIndex++, i++) {\n // columns\n for (let colIndex = d.x, j = 0; colIndex < d.x1 + 1; colIndex++, j++) {\n const prop = this.columns[colIndex]?.prop;\n area.push({\n prop,\n rowIndex,\n colIndex,\n model: getSourceItem(store, rowIndex),\n type,\n colType: this.type,\n });\n }\n }\n return area;\n }\n\n copyRangeArray(\n range: RangeArea,\n store: Observable<DSourceState<DataType, DimensionRows>>,\n ) {\n const cols = [...this.columns];\n const props = slice(cols, range.x, range.x1 + 1).map(v => v.prop);\n const toCopy: DataFormat[][] = [];\n const mapping: { [rowIndex: number]: { [colProp: ColumnProp]: any } } = {};\n\n // rows indexes\n for (let i = range.y; i <= range.y1; i++) {\n const rgRow: DataFormat[] = [];\n mapping[i] = {};\n\n // columns indexes\n for (let prop of props) {\n const item = getSourceItem(store, i);\n\n // if no item - skip\n if (!item) {\n continue;\n }\n const val = item[prop];\n rgRow.push(val);\n mapping[i][prop] = val;\n }\n\n toCopy.push(rgRow);\n }\n return {\n data: toCopy,\n mapping,\n };\n }\n\n destroy() {\n this.unsubscribe.forEach(f => f());\n }\n}\n\nexport function getCellData(val?: any) {\n if (typeof val === 'undefined' || val === null) {\n return '';\n }\n return val;\n}\n\n/**\n * Checks if the given rowDrag is a service for dragging rows.\n */\nexport function isRowDragService(\n rowDrag: RowDrag,\n model: ColumnDataSchemaModel,\n): boolean {\n if (typeof rowDrag === 'function') {\n return rowDrag(model);\n }\n return !!rowDrag;\n}\nexport function doPropMerge(existing: CellProps, extra: CellProps) {\n let props: CellProps = { ...extra, ...existing };\n // extend existing props\n if (extra.class) {\n if (typeof extra.class === 'object' && typeof props.class === 'object') {\n props.class = { ...extra.class, ...props.class };\n } else if (\n typeof extra.class === 'string' &&\n typeof props.class === 'object'\n ) {\n props.class[extra.class] = true;\n } else if (typeof props.class === 'string') {\n props.class += ' ' + extra.class;\n }\n }\n if (extra.style) {\n props.style = { ...extra.style, ...props.style };\n }\n return props;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Built by Revolist OU ❤️
|
|
3
|
+
*/
|
|
4
|
+
import{_ as r,i as n,a as t,b as e,c as a,d as u,e as i,t as v}from"./toNumber-8de324a7.js";import{g as o,f}from"./index-e661aeb5.js";const c=r=>({set(n,t){if(!s(n)){return}const e=r.get("items").reduce(((r,n)=>{r[n]=true;return r}),{});const a=t.reduce(((r,n)=>{if(e[n]){r.push(n)}return r}),[]);r.set("items",a)}});function s(r){return r==="proxyItems"}function l(r,n,t,e){var a=r.length,u=t+(e?1:-1);while(e?u--:++u<a){if(n(r[u],u,r)){return u}}return-1}var h=l;function b(){this.__data__=[];this.size=0}var d=b;function j(r,n){return r===n||r!==r&&n!==n}var p=j;var m=p;function y(r,n){var t=r.length;while(t--){if(m(r[t][0],n)){return t}}return-1}var w=y;var g=w;var O=Array.prototype;var _=O.splice;function A(r){var n=this.__data__,t=g(n,r);if(t<0){return false}var e=n.length-1;if(t==e){n.pop()}else{_.call(n,t,1)}--this.size;return true}var x=A;var I=w;function M(r){var n=this.__data__,t=I(n,r);return t<0?undefined:n[t][1]}var k=M;var D=w;function S(r){return D(this.__data__,r)>-1}var $=S;var E=w;function F(r,n){var t=this.__data__,e=E(t,r);if(e<0){++this.size;t.push([r,n])}else{t[e][1]=n}return this}var C=F;var P=d,T=x,B=k,R=$,U=C;function V(r){var n=-1,t=r==null?0:r.length;this.clear();while(++n<t){var e=r[n];this.set(e[0],e[1])}}V.prototype.clear=P;V.prototype["delete"]=T;V.prototype.get=B;V.prototype.has=R;V.prototype.set=U;var z=V;var N=z;function W(){this.__data__=new N;this.size=0}var q=W;function G(r){var n=this.__data__,t=n["delete"](r);this.size=n.size;return t}var K=G;function L(r){return this.__data__.get(r)}var H=L;function J(r){return this.__data__.has(r)}var Q=J;var X=r,Y=n;var Z="[object AsyncFunction]",rr="[object Function]",nr="[object GeneratorFunction]",tr="[object Proxy]";function er(r){if(!Y(r)){return false}var n=X(r);return n==rr||n==nr||n==Z||n==tr}var ar=er;var ur=t;var ir=ur["__core-js_shared__"];var vr=ir;var or=vr;var fr=function(){var r=/[^.]+$/.exec(or&&or.keys&&or.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function cr(r){return!!fr&&fr in r}var sr=cr;var lr=Function.prototype;var hr=lr.toString;function br(r){if(r!=null){try{return hr.call(r)}catch(r){}try{return r+""}catch(r){}}return""}var dr=br;var jr=ar,pr=sr,mr=n,yr=dr;var wr=/[\\^$.*+?()[\]{}|]/g;var gr=/^\[object .+?Constructor\]$/;var Or=Function.prototype,_r=Object.prototype;var Ar=Or.toString;var xr=_r.hasOwnProperty;var Ir=RegExp("^"+Ar.call(xr).replace(wr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Mr(r){if(!mr(r)||pr(r)){return false}var n=jr(r)?Ir:gr;return n.test(yr(r))}var kr=Mr;function Dr(r,n){return r==null?undefined:r[n]}var Sr=Dr;var $r=kr,Er=Sr;function Fr(r,n){var t=Er(r,n);return $r(t)?t:undefined}var Cr=Fr;var Pr=Cr,Tr=t;var Br=Pr(Tr,"Map");var Rr=Br;var Ur=Cr;var Vr=Ur(Object,"create");var zr=Vr;var Nr=zr;function Wr(){this.__data__=Nr?Nr(null):{};this.size=0}var qr=Wr;function Gr(r){var n=this.has(r)&&delete this.__data__[r];this.size-=n?1:0;return n}var Kr=Gr;var Lr=zr;var Hr="__lodash_hash_undefined__";var Jr=Object.prototype;var Qr=Jr.hasOwnProperty;function Xr(r){var n=this.__data__;if(Lr){var t=n[r];return t===Hr?undefined:t}return Qr.call(n,r)?n[r]:undefined}var Yr=Xr;var Zr=zr;var rn=Object.prototype;var nn=rn.hasOwnProperty;function tn(r){var n=this.__data__;return Zr?n[r]!==undefined:nn.call(n,r)}var en=tn;var an=zr;var un="__lodash_hash_undefined__";function vn(r,n){var t=this.__data__;this.size+=this.has(r)?0:1;t[r]=an&&n===undefined?un:n;return this}var on=vn;var fn=qr,cn=Kr,sn=Yr,ln=en,hn=on;function bn(r){var n=-1,t=r==null?0:r.length;this.clear();while(++n<t){var e=r[n];this.set(e[0],e[1])}}bn.prototype.clear=fn;bn.prototype["delete"]=cn;bn.prototype.get=sn;bn.prototype.has=ln;bn.prototype.set=hn;var dn=bn;var jn=dn,pn=z,mn=Rr;function yn(){this.size=0;this.__data__={hash:new jn,map:new(mn||pn),string:new jn}}var wn=yn;function gn(r){var n=typeof r;return n=="string"||n=="number"||n=="symbol"||n=="boolean"?r!=="__proto__":r===null}var On=gn;var _n=On;function An(r,n){var t=r.__data__;return _n(n)?t[typeof n=="string"?"string":"hash"]:t.map}var xn=An;var In=xn;function Mn(r){var n=In(this,r)["delete"](r);this.size-=n?1:0;return n}var kn=Mn;var Dn=xn;function Sn(r){return Dn(this,r).get(r)}var $n=Sn;var En=xn;function Fn(r){return En(this,r).has(r)}var Cn=Fn;var Pn=xn;function Tn(r,n){var t=Pn(this,r),e=t.size;t.set(r,n);this.size+=t.size==e?0:1;return this}var Bn=Tn;var Rn=wn,Un=kn,Vn=$n,zn=Cn,Nn=Bn;function Wn(r){var n=-1,t=r==null?0:r.length;this.clear();while(++n<t){var e=r[n];this.set(e[0],e[1])}}Wn.prototype.clear=Rn;Wn.prototype["delete"]=Un;Wn.prototype.get=Vn;Wn.prototype.has=zn;Wn.prototype.set=Nn;var qn=Wn;var Gn=z,Kn=Rr,Ln=qn;var Hn=200;function Jn(r,n){var t=this.__data__;if(t instanceof Gn){var e=t.__data__;if(!Kn||e.length<Hn-1){e.push([r,n]);this.size=++t.size;return this}t=this.__data__=new Ln(e)}t.set(r,n);this.size=t.size;return this}var Qn=Jn;var Xn=z,Yn=q,Zn=K,rt=H,nt=Q,tt=Qn;function et(r){var n=this.__data__=new Xn(r);this.size=n.size}et.prototype.clear=Yn;et.prototype["delete"]=Zn;et.prototype.get=rt;et.prototype.has=nt;et.prototype.set=tt;var at=et;var ut="__lodash_hash_undefined__";function it(r){this.__data__.set(r,ut);return this}var vt=it;function ot(r){return this.__data__.has(r)}var ft=ot;var ct=qn,st=vt,lt=ft;function ht(r){var n=-1,t=r==null?0:r.length;this.__data__=new ct;while(++n<t){this.add(r[n])}}ht.prototype.add=ht.prototype.push=st;ht.prototype.has=lt;var bt=ht;function dt(r,n){var t=-1,e=r==null?0:r.length;while(++t<e){if(n(r[t],t,r)){return true}}return false}var jt=dt;function pt(r,n){return r.has(n)}var mt=pt;var yt=bt,wt=jt,gt=mt;var Ot=1,_t=2;function At(r,n,t,e,a,u){var i=t&Ot,v=r.length,o=n.length;if(v!=o&&!(i&&o>v)){return false}var f=u.get(r);var c=u.get(n);if(f&&c){return f==n&&c==r}var s=-1,l=true,h=t&_t?new yt:undefined;u.set(r,n);u.set(n,r);while(++s<v){var b=r[s],d=n[s];if(e){var j=i?e(d,b,s,n,r,u):e(b,d,s,r,n,u)}if(j!==undefined){if(j){continue}l=false;break}if(h){if(!wt(n,(function(r,n){if(!gt(h,n)&&(b===r||a(b,r,t,e,u))){return h.push(n)}}))){l=false;break}}else if(!(b===d||a(b,d,t,e,u))){l=false;break}}u["delete"](r);u["delete"](n);return l}var xt=At;var It=t;var Mt=It.Uint8Array;var kt=Mt;function Dt(r){var n=-1,t=Array(r.size);r.forEach((function(r,e){t[++n]=[e,r]}));return t}var St=Dt;function $t(r){var n=-1,t=Array(r.size);r.forEach((function(r){t[++n]=r}));return t}var Et=$t;var Ft=e,Ct=kt,Pt=p,Tt=xt,Bt=St,Rt=Et;var Ut=1,Vt=2;var zt="[object Boolean]",Nt="[object Date]",Wt="[object Error]",qt="[object Map]",Gt="[object Number]",Kt="[object RegExp]",Lt="[object Set]",Ht="[object String]",Jt="[object Symbol]";var Qt="[object ArrayBuffer]",Xt="[object DataView]";var Yt=Ft?Ft.prototype:undefined,Zt=Yt?Yt.valueOf:undefined;function re(r,n,t,e,a,u,i){switch(t){case Xt:if(r.byteLength!=n.byteLength||r.byteOffset!=n.byteOffset){return false}r=r.buffer;n=n.buffer;case Qt:if(r.byteLength!=n.byteLength||!u(new Ct(r),new Ct(n))){return false}return true;case zt:case Nt:case Gt:return Pt(+r,+n);case Wt:return r.name==n.name&&r.message==n.message;case Kt:case Ht:return r==n+"";case qt:var v=Bt;case Lt:var o=e&Ut;v||(v=Rt);if(r.size!=n.size&&!o){return false}var f=i.get(r);if(f){return f==n}e|=Vt;i.set(r,n);var c=Tt(v(r),v(n),e,a,u,i);i["delete"](r);return c;case Jt:if(Zt){return Zt.call(r)==Zt.call(n)}}return false}var ne=re;function te(r,n){var t=-1,e=n.length,a=r.length;while(++t<e){r[a+t]=n[t]}return r}var ee=te;var ae=Array.isArray;var ue=ae;var ie=ee,ve=ue;function oe(r,n,t){var e=n(r);return ve(r)?e:ie(e,t(r))}var fe=oe;function ce(r,n){var t=-1,e=r==null?0:r.length,a=0,u=[];while(++t<e){var i=r[t];if(n(i,t,r)){u[a++]=i}}return u}var se=ce;function le(){return[]}var he=le;var be=se,de=he;var je=Object.prototype;var pe=je.propertyIsEnumerable;var me=Object.getOwnPropertySymbols;var ye=!me?de:function(r){if(r==null){return[]}r=Object(r);return be(me(r),(function(n){return pe.call(r,n)}))};var we=ye;function ge(r,n){var t=-1,e=Array(r);while(++t<r){e[t]=n(t)}return e}var Oe=ge;var _e=r,Ae=a;var xe="[object Arguments]";function Ie(r){return Ae(r)&&_e(r)==xe}var Me=Ie;var ke=Me,De=a;var Se=Object.prototype;var $e=Se.hasOwnProperty;var Ee=Se.propertyIsEnumerable;var Fe=ke(function(){return arguments}())?ke:function(r){return De(r)&&$e.call(r,"callee")&&!Ee.call(r,"callee")};var Ce=Fe;var Pe={exports:{}};function Te(){return false}var Be=Te;(function(r,n){var e=t,a=Be;var u=n&&!n.nodeType&&n;var i=u&&"object"=="object"&&r&&!r.nodeType&&r;var v=i&&i.exports===u;var o=v?e.Buffer:undefined;var f=o?o.isBuffer:undefined;var c=f||a;r.exports=c})(Pe,Pe.exports);var Re=9007199254740991;var Ue=/^(?:0|[1-9]\d*)$/;function Ve(r,n){var t=typeof r;n=n==null?Re:n;return!!n&&(t=="number"||t!="symbol"&&Ue.test(r))&&(r>-1&&r%1==0&&r<n)}var ze=Ve;var Ne=9007199254740991;function We(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=Ne}var qe=We;var Ge=r,Ke=qe,Le=a;var He="[object Arguments]",Je="[object Array]",Qe="[object Boolean]",Xe="[object Date]",Ye="[object Error]",Ze="[object Function]",ra="[object Map]",na="[object Number]",ta="[object Object]",ea="[object RegExp]",aa="[object Set]",ua="[object String]",ia="[object WeakMap]";var va="[object ArrayBuffer]",oa="[object DataView]",fa="[object Float32Array]",ca="[object Float64Array]",sa="[object Int8Array]",la="[object Int16Array]",ha="[object Int32Array]",ba="[object Uint8Array]",da="[object Uint8ClampedArray]",ja="[object Uint16Array]",pa="[object Uint32Array]";var ma={};ma[fa]=ma[ca]=ma[sa]=ma[la]=ma[ha]=ma[ba]=ma[da]=ma[ja]=ma[pa]=true;ma[He]=ma[Je]=ma[va]=ma[Qe]=ma[oa]=ma[Xe]=ma[Ye]=ma[Ze]=ma[ra]=ma[na]=ma[ta]=ma[ea]=ma[aa]=ma[ua]=ma[ia]=false;function ya(r){return Le(r)&&Ke(r.length)&&!!ma[Ge(r)]}var wa=ya;function ga(r){return function(n){return r(n)}}var Oa=ga;var _a={exports:{}};(function(r,n){var t=u;var e=n&&!n.nodeType&&n;var a=e&&"object"=="object"&&r&&!r.nodeType&&r;var i=a&&a.exports===e;var v=i&&t.process;var o=function(){try{var r=a&&a.require&&a.require("util").types;if(r){return r}return v&&v.binding&&v.binding("util")}catch(r){}}();r.exports=o})(_a,_a.exports);var Aa=wa,xa=Oa,Ia=_a.exports;var Ma=Ia&&Ia.isTypedArray;var ka=Ma?xa(Ma):Aa;var Da=ka;var Sa=Oe,$a=Ce,Ea=ue,Fa=Pe.exports,Ca=ze,Pa=Da;var Ta=Object.prototype;var Ba=Ta.hasOwnProperty;function Ra(r,n){var t=Ea(r),e=!t&&$a(r),a=!t&&!e&&Fa(r),u=!t&&!e&&!a&&Pa(r),i=t||e||a||u,v=i?Sa(r.length,String):[],o=v.length;for(var f in r){if((n||Ba.call(r,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||u&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||Ca(f,o)))){v.push(f)}}return v}var Ua=Ra;var Va=Object.prototype;function za(r){var n=r&&r.constructor,t=typeof n=="function"&&n.prototype||Va;return r===t}var Na=za;function Wa(r,n){return function(t){return r(n(t))}}var qa=Wa;var Ga=qa;var Ka=Ga(Object.keys,Object);var La=Ka;var Ha=Na,Ja=La;var Qa=Object.prototype;var Xa=Qa.hasOwnProperty;function Ya(r){if(!Ha(r)){return Ja(r)}var n=[];for(var t in Object(r)){if(Xa.call(r,t)&&t!="constructor"){n.push(t)}}return n}var Za=Ya;var ru=ar,nu=qe;function tu(r){return r!=null&&nu(r.length)&&!ru(r)}var eu=tu;var au=Ua,uu=Za,iu=eu;function vu(r){return iu(r)?au(r):uu(r)}var ou=vu;var fu=fe,cu=we,su=ou;function lu(r){return fu(r,su,cu)}var hu=lu;var bu=hu;var du=1;var ju=Object.prototype;var pu=ju.hasOwnProperty;function mu(r,n,t,e,a,u){var i=t&du,v=bu(r),o=v.length,f=bu(n),c=f.length;if(o!=c&&!i){return false}var s=o;while(s--){var l=v[s];if(!(i?l in n:pu.call(n,l))){return false}}var h=u.get(r);var b=u.get(n);if(h&&b){return h==n&&b==r}var d=true;u.set(r,n);u.set(n,r);var j=i;while(++s<o){l=v[s];var p=r[l],m=n[l];if(e){var y=i?e(m,p,l,n,r,u):e(p,m,l,r,n,u)}if(!(y===undefined?p===m||a(p,m,t,e,u):y)){d=false;break}j||(j=l=="constructor")}if(d&&!j){var w=r.constructor,g=n.constructor;if(w!=g&&("constructor"in r&&"constructor"in n)&&!(typeof w=="function"&&w instanceof w&&typeof g=="function"&&g instanceof g)){d=false}}u["delete"](r);u["delete"](n);return d}var yu=mu;var wu=Cr,gu=t;var Ou=wu(gu,"DataView");var _u=Ou;var Au=Cr,xu=t;var Iu=Au(xu,"Promise");var Mu=Iu;var ku=Cr,Du=t;var Su=ku(Du,"Set");var $u=Su;var Eu=Cr,Fu=t;var Cu=Eu(Fu,"WeakMap");var Pu=Cu;var Tu=_u,Bu=Rr,Ru=Mu,Uu=$u,Vu=Pu,zu=r,Nu=dr;var Wu="[object Map]",qu="[object Object]",Gu="[object Promise]",Ku="[object Set]",Lu="[object WeakMap]";var Hu="[object DataView]";var Ju=Nu(Tu),Qu=Nu(Bu),Xu=Nu(Ru),Yu=Nu(Uu),Zu=Nu(Vu);var ri=zu;if(Tu&&ri(new Tu(new ArrayBuffer(1)))!=Hu||Bu&&ri(new Bu)!=Wu||Ru&&ri(Ru.resolve())!=Gu||Uu&&ri(new Uu)!=Ku||Vu&&ri(new Vu)!=Lu){ri=function(r){var n=zu(r),t=n==qu?r.constructor:undefined,e=t?Nu(t):"";if(e){switch(e){case Ju:return Hu;case Qu:return Wu;case Xu:return Gu;case Yu:return Ku;case Zu:return Lu}}return n}}var ni=ri;var ti=at,ei=xt,ai=ne,ui=yu,ii=ni,vi=ue,oi=Pe.exports,fi=Da;var ci=1;var si="[object Arguments]",li="[object Array]",hi="[object Object]";var bi=Object.prototype;var di=bi.hasOwnProperty;function ji(r,n,t,e,a,u){var i=vi(r),v=vi(n),o=i?li:ii(r),f=v?li:ii(n);o=o==si?hi:o;f=f==si?hi:f;var c=o==hi,s=f==hi,l=o==f;if(l&&oi(r)){if(!oi(n)){return false}i=true;c=false}if(l&&!c){u||(u=new ti);return i||fi(r)?ei(r,n,t,e,a,u):ai(r,n,o,t,e,a,u)}if(!(t&ci)){var h=c&&di.call(r,"__wrapped__"),b=s&&di.call(n,"__wrapped__");if(h||b){var d=h?r.value():r,j=b?n.value():n;u||(u=new ti);return a(d,j,t,e,u)}}if(!l){return false}u||(u=new ti);return ui(r,n,t,e,a,u)}var pi=ji;var mi=pi,yi=a;function wi(r,n,t,e,a){if(r===n){return true}if(r==null||n==null||!yi(r)&&!yi(n)){return r!==r&&n!==n}return mi(r,n,t,e,wi,a)}var gi=wi;var Oi=at,_i=gi;var Ai=1,xi=2;function Ii(r,n,t,e){var a=t.length,u=a,i=!e;if(r==null){return!u}r=Object(r);while(a--){var v=t[a];if(i&&v[2]?v[1]!==r[v[0]]:!(v[0]in r)){return false}}while(++a<u){v=t[a];var o=v[0],f=r[o],c=v[1];if(i&&v[2]){if(f===undefined&&!(o in r)){return false}}else{var s=new Oi;if(e){var l=e(f,c,o,r,n,s)}if(!(l===undefined?_i(c,f,Ai|xi,e,s):l)){return false}}}return true}var Mi=Ii;var ki=n;function Di(r){return r===r&&!ki(r)}var Si=Di;var $i=Si,Ei=ou;function Fi(r){var n=Ei(r),t=n.length;while(t--){var e=n[t],a=r[e];n[t]=[e,a,$i(a)]}return n}var Ci=Fi;function Pi(r,n){return function(t){if(t==null){return false}return t[r]===n&&(n!==undefined||r in Object(t))}}var Ti=Pi;var Bi=Mi,Ri=Ci,Ui=Ti;function Vi(r){var n=Ri(r);if(n.length==1&&n[0][2]){return Ui(n[0][0],n[0][1])}return function(t){return t===r||Bi(t,r,n)}}var zi=Vi;var Ni=ue,Wi=i;var qi=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Gi=/^\w*$/;function Ki(r,n){if(Ni(r)){return false}var t=typeof r;if(t=="number"||t=="symbol"||t=="boolean"||r==null||Wi(r)){return true}return Gi.test(r)||!qi.test(r)||n!=null&&r in Object(n)}var Li=Ki;var Hi=qn;var Ji="Expected a function";function Qi(r,n){if(typeof r!="function"||n!=null&&typeof n!="function"){throw new TypeError(Ji)}var t=function(){var e=arguments,a=n?n.apply(this,e):e[0],u=t.cache;if(u.has(a)){return u.get(a)}var i=r.apply(this,e);t.cache=u.set(a,i)||u;return i};t.cache=new(Qi.Cache||Hi);return t}Qi.Cache=Hi;var Xi=Qi;var Yi=Xi;var Zi=500;function rv(r){var n=Yi(r,(function(r){if(t.size===Zi){t.clear()}return r}));var t=n.cache;return n}var nv=rv;var tv=nv;var ev=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;var av=/\\(\\)?/g;var uv=tv((function(r){var n=[];if(r.charCodeAt(0)===46){n.push("")}r.replace(ev,(function(r,t,e,a){n.push(e?a.replace(av,"$1"):t||r)}));return n}));var iv=uv;function vv(r,n){var t=-1,e=r==null?0:r.length,a=Array(e);while(++t<e){a[t]=n(r[t],t,r)}return a}var ov=vv;var fv=e,cv=ov,sv=ue,lv=i;var hv=1/0;var bv=fv?fv.prototype:undefined,dv=bv?bv.toString:undefined;function jv(r){if(typeof r=="string"){return r}if(sv(r)){return cv(r,jv)+""}if(lv(r)){return dv?dv.call(r):""}var n=r+"";return n=="0"&&1/r==-hv?"-0":n}var pv=jv;var mv=pv;function yv(r){return r==null?"":mv(r)}var wv=yv;var gv=ue,Ov=Li,_v=iv,Av=wv;function xv(r,n){if(gv(r)){return r}return Ov(r,n)?[r]:_v(Av(r))}var Iv=xv;var Mv=i;var kv=1/0;function Dv(r){if(typeof r=="string"||Mv(r)){return r}var n=r+"";return n=="0"&&1/r==-kv?"-0":n}var Sv=Dv;var $v=Iv,Ev=Sv;function Fv(r,n){n=$v(n,r);var t=0,e=n.length;while(r!=null&&t<e){r=r[Ev(n[t++])]}return t&&t==e?r:undefined}var Cv=Fv;var Pv=Cv;function Tv(r,n,t){var e=r==null?undefined:Pv(r,n);return e===undefined?t:e}var Bv=Tv;function Rv(r,n){return r!=null&&n in Object(r)}var Uv=Rv;var Vv=Iv,zv=Ce,Nv=ue,Wv=ze,qv=qe,Gv=Sv;function Kv(r,n,t){n=Vv(n,r);var e=-1,a=n.length,u=false;while(++e<a){var i=Gv(n[e]);if(!(u=r!=null&&t(r,i))){break}r=r[i]}if(u||++e!=a){return u}a=r==null?0:r.length;return!!a&&qv(a)&&Wv(i,a)&&(Nv(r)||zv(r))}var Lv=Kv;var Hv=Uv,Jv=Lv;function Qv(r,n){return r!=null&&Jv(r,n,Hv)}var Xv=Qv;var Yv=gi,Zv=Bv,ro=Xv,no=Li,to=Si,eo=Ti,ao=Sv;var uo=1,io=2;function vo(r,n){if(no(r)&&to(n)){return eo(ao(r),n)}return function(t){var e=Zv(t,r);return e===undefined&&e===n?ro(t,r):Yv(n,e,uo|io)}}var oo=vo;function fo(r){return r}var co=fo;function so(r){return function(n){return n==null?undefined:n[r]}}var lo=so;var ho=Cv;function bo(r){return function(n){return ho(n,r)}}var jo=bo;var po=lo,mo=jo,yo=Li,wo=Sv;function go(r){return yo(r)?po(wo(r)):mo(r)}var Oo=go;var _o=zi,Ao=oo,xo=co,Io=ue,Mo=Oo;function ko(r){if(typeof r=="function"){return r}if(r==null){return xo}if(typeof r=="object"){return Io(r)?Ao(r[0],r[1]):_o(r)}return Mo(r)}var Do=ko;var So=v;var $o=1/0,Eo=17976931348623157e292;function Fo(r){if(!r){return r===0?r:0}r=So(r);if(r===$o||r===-$o){var n=r<0?-1:1;return n*Eo}return r===r?r:0}var Co=Fo;var Po=Co;function To(r){var n=Po(r),t=n%1;return n===n?t?n-t:n:0}var Bo=To;var Ro=h,Uo=Do,Vo=Bo;var zo=Math.max;function No(r,n,t){var e=r==null?0:r.length;if(!e){return-1}var a=t==null?0:Vo(t);if(a<0){a=zo(e+a,0)}return Ro(r,Uo(n),a)}var Wo=No;var qo=Math.ceil,Go=Math.max;function Ko(r,n,t,e){var a=-1,u=Go(qo((n-r)/(t||1)),0),i=Array(u);while(u--){i[e?u:++a]=r;r+=t}return i}var Lo=Ko;var Ho=p,Jo=eu,Qo=ze,Xo=n;function Yo(r,n,t){if(!Xo(t)){return false}var e=typeof n;if(e=="number"?Jo(t)&&Qo(n,t.length):e=="string"&&n in t){return Ho(t[n],r)}return false}var Zo=Yo;var rf=Lo,nf=Zo,tf=Co;function ef(r){return function(n,t,e){if(e&&typeof e!="number"&&nf(n,t,e)){t=e=undefined}n=tf(n);if(t===undefined){t=n;n=0}else{t=tf(t)}e=e===undefined?n<t?1:-1:tf(e);return rf(n,t,e,r)}}var af=ef;var uf=af;var vf=uf();var of=vf;const ff=(r,n,t)=>{const e=r.get(n);if(!e){r.set(n,[t])}else if(!e.includes(t)){e.push(t)}};const cf=(r,n)=>{let t;return(...e)=>{if(t){clearTimeout(t)}t=setTimeout((()=>{t=0;r(...e)}),n)}};const sf=r=>!("isConnected"in r)||r.isConnected;const lf=cf((r=>{for(let n of r.keys()){r.set(n,r.get(n).filter(sf))}}),2e3);const hf=()=>{if(typeof o!=="function"){return{}}const r=new Map;return{dispose:()=>r.clear(),get:n=>{const t=o();if(t){ff(r,n,t)}},set:n=>{const t=r.get(n);if(t){r.set(n,t.filter(f))}lf(r)},reset:()=>{r.forEach((r=>r.forEach(f)));lf(r)}}};const bf=r=>typeof r==="function"?r():r;const df=(r,n=((r,n)=>r!==n))=>{const t=bf(r);let e=new Map(Object.entries(t!==null&&t!==void 0?t:{}));const a={dispose:[],get:[],set:[],reset:[]};const u=()=>{var n;e=new Map(Object.entries((n=bf(r))!==null&&n!==void 0?n:{}));a.reset.forEach((r=>r()))};const i=()=>{a.dispose.forEach((r=>r()));u()};const v=r=>{a.get.forEach((n=>n(r)));return e.get(r)};const o=(r,t)=>{const u=e.get(r);if(n(t,u,r)){e.set(r,t);a.set.forEach((n=>n(r,t,u)))}};const f=typeof Proxy==="undefined"?{}:new Proxy(t,{get(r,n){return v(n)},ownKeys(r){return Array.from(e.keys())},getOwnPropertyDescriptor(){return{enumerable:true,configurable:true}},has(r,n){return e.has(n)},set(r,n,t){o(n,t);return true}});const c=(r,n)=>{a[r].push(n);return()=>{jf(a[r],n)}};const s=(n,t)=>{const e=c("set",((r,e)=>{if(r===n){t(e)}}));const a=c("reset",(()=>t(bf(r)[n])));return()=>{e();a()}};const l=(...r)=>{const n=r.reduce(((r,n)=>{if(n.set){r.push(c("set",n.set))}if(n.get){r.push(c("get",n.get))}if(n.reset){r.push(c("reset",n.reset))}if(n.dispose){r.push(c("dispose",n.dispose))}return r}),[]);return()=>n.forEach((r=>r()))};const h=r=>{const n=e.get(r);a.set.forEach((t=>t(r,n,n)))};return{state:f,get:v,set:o,on:c,onChange:s,use:l,dispose:i,reset:u,forceUpdate:h}};const jf=(r,n)=>{const t=r.indexOf(n);if(t>=0){r[t]=r[r.length-1];r.length--}};const pf=(r,n)=>{const t=df(r,n);t.use(hf());return t};const mf=r=>({set(n,t){switch(n){case"trimmed":const n=r.get("proxyItems");const e=yf(t);const a=n.reduce(((r,n)=>{if(!e[n]){r.push(n)}return r}),[]);r.set("items",a);break}}});function yf(r){const n={};for(let t in r){for(let e in r[t]){n[e]=n[e]||r[t][e]}}return n}function wf(r,n){for(let t in n){r.set(t,n[t])}}class gf{get store(){return this.dataStore}constructor(r,n){const t=this.dataStore=pf(Object.assign({items:[],proxyItems:[],source:[],groupingDepth:0,groups:{},type:r,trimmed:{},groupingCustomRenderer:undefined},n));t.use(c(t));t.use(mf(t))}updateData(r,n,t=false){if(!t){this.store.set("trimmed",{})}this.store.set("items",[]);const e=of(0,(r===null||r===void 0?void 0:r.length)||0);wf(this.store,{source:r,proxyItems:[...e]});this.store.set("items",e);if(n){wf(this.store,{groupingDepth:n.depth,groups:n.groups,groupingCustomRenderer:n.customRenderer})}}addTrimmed(r){let n=this.store.get("trimmed");n=Object.assign(Object.assign({},n),r);wf(this.store,{trimmed:n})}setData(r){const n=Object.assign({},r);wf(this.store,n)}refresh(){const r=this.store.get("source");this.store.set("source",[...r])}}function Of(r,n){const t=r.get("items");return t[n]}function _f(r){const n=r.get("source");return r.get("items").map((r=>n[r]))}const Af=(r,n)=>{const t=r.get("items");const e=r.get("source");return e[t[n]]};function xf(r,n,t=true){const e=r.get("items");const a=r.get("source");for(let r in n){const t=e[r];a[t]=n[r]}if(t){r.set("source",[...a])}}function If(r,n,t=true){const e=r.get("source");for(let r in n){e[r]=n[r]}if(t){r.set("source",[...e])}}function Mf(r,n){r.set("items",n)}function kf(r,n){const t=r.get("items");const e=r.get("source");const a=Wo(e,{prop:n});return t.indexOf(a)}function Df(r,n,t,e){var a=-1,u=r==null?0:r.length;if(e&&u){t=r[++a]}while(++a<u){t=n(t,r[a],a,r)}return t}var Sf=Df;function $f(r){return function(n,t,e){var a=-1,u=Object(n),i=e(n),v=i.length;while(v--){var o=i[r?v:++a];if(t(u[o],o,u)===false){break}}return n}}var Ef=$f;var Ff=Ef;var Cf=Ff();var Pf=Cf;var Tf=Pf,Bf=ou;function Rf(r,n){return r&&Tf(r,n,Bf)}var Uf=Rf;var Vf=eu;function zf(r,n){return function(t,e){if(t==null){return t}if(!Vf(t)){return r(t,e)}var a=t.length,u=n?a:-1,i=Object(t);while(n?u--:++u<a){if(e(i[u],u,i)===false){break}}return t}}var Nf=zf;var Wf=Uf,qf=Nf;var Gf=qf(Wf);var Kf=Gf;function Lf(r,n,t,e,a){a(r,(function(r,a,u){t=e?(e=false,r):n(t,r,a,u)}));return t}var Hf=Lf;var Jf=Sf,Qf=Kf,Xf=Do,Yf=Hf,Zf=ue;function rc(r,n,t){var e=Zf(r)?Jf:Yf,a=arguments.length<3;return e(r,Xf(n),t,a,Qf)}var nc=rc;function tc(r,n){var t=-1,e=r==null?0:r.length;while(++t<e){if(n(r[t],t,r)===false){break}}return r}var ec=tc;var ac=co;function uc(r){return typeof r=="function"?r:ac}var ic=uc;var vc=ec,oc=Kf,fc=ic,cc=ue;function sc(r,n){var t=cc(r)?vc:oc;return t(r,fc(n))}var lc=sc;var hc=lc;var bc=i;var dc=4294967295,jc=dc-1;var pc=Math.floor,mc=Math.min;function yc(r,n,t,e){var a=0,u=r==null?0:r.length;if(u===0){return 0}n=t(n);var i=n!==n,v=n===null,o=bc(n),f=n===undefined;while(a<u){var c=pc((a+u)/2),s=t(r[c]),l=s!==undefined,h=s===null,b=s===s,d=bc(s);if(i){var j=e||b}else if(f){j=b&&(e||l)}else if(v){j=b&&l&&(e||!h)}else if(o){j=b&&l&&!h&&(e||!d)}else if(h||d){j=false}else{j=e?s<=n:s<n}if(j){a=c+1}else{u=c}}return mc(u,jc)}var wc=yc;var gc=wc,Oc=co,_c=i;var Ac=4294967295,xc=Ac>>>1;function Ic(r,n,t){var e=0,a=r==null?e:r.length;if(typeof n=="number"&&n===n&&a<=xc){while(e<a){var u=e+a>>>1,i=r[u];if(i!==null&&!_c(i)&&(t?i<=n:i<n)){e=u+1}else{a=u}}return a}return gc(r,n,Oc,t)}var Mc=Ic;var kc=Mc;function Dc(r,n){return kc(r,n)}var Sc=Dc;function $c(r,n={}){const t=[];const e={};const a={};const u=Object.assign({},n);let i=[];hc(n,((r,n)=>{const t=parseInt(n,10);i[Sc(i,t)]=t}));nc(i,((n,i,v)=>{const o={itemIndex:i,start:0,end:0};if(n){const t=(i-n.itemIndex-1)*r;o.start=t+n.end}else{o.start=i*r}o.end=o.start+u[i];t.push(o.start);a[i]=e[v]=o;return o}),undefined);return{indexes:i,positionIndexes:[...t],positionIndexToItem:Object.assign({},e),indexToItem:a,sizes:u}}const Ec=({indexes:r,positionIndexes:n,originItemSize:t,positionIndexToItem:e},a)=>{const u={itemIndex:0,start:0,end:0};const i=r.length?Sc(n,a):0;if(!i){u.itemIndex=Math.floor(a/t);u.start=u.itemIndex*t;u.end=u.start+t;return u}const v=e[i-1];if(v.end>a){return v}const o=a-v.end;const f=Math.floor(o/t);u.itemIndex=v.itemIndex+1+f;u.start=v.end+f*t;u.end=u.start+t;return u};function Fc(r,n){let t={itemIndex:n,start:0,end:0};if(r.indexToItem[n]){return r.indexToItem[n]}const e=r.indexes.length?Sc(r.indexes,n):0;if(!e){t.start=t.itemIndex*r.originItemSize;t.end=t.start+r.originItemSize;return t}const a=r.indexToItem[r.indexes[e-1]];t.start=a.end+(n-a.itemIndex-1)*r.originItemSize;t.end=t.start+r.originItemSize;return t}export{of as A,Bo as B,Zo as C,gf as D,Cr as E,Do as _,_f as a,Af as b,If as c,Mf as d,kf as e,yf as f,Of as g,$c as h,Ec as i,Fc as j,pf as k,wf as l,hc as m,eu as n,ou as o,c as p,Wo as q,nc as r,xf as s,mf as t,Kf as u,ov as v,ue as w,lo as x,Za as y,ni as z};
|
|
5
|
+
//# sourceMappingURL=dimension.helpers-c0c2888f.js.map
|