You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 lines
19 KiB

{"ast":null,"code":"import createList from '../builders/build-list.mjs';\nimport { isHorizontal } from '../utils.mjs';\nimport { AUTO_ALIGNMENT, CENTERED_ALIGNMENT, END_ALIGNMENT, START_ALIGNMENT, DEFAULT_DYNAMIC_LIST_ITEM_SIZE, SMART_ALIGNMENT } from '../defaults.mjs';\nimport { throwError } from '../../../../utils/error.mjs';\nconst SCOPE = \"ElDynamicSizeList\";\nconst getItemFromCache = (props, index, listCache) => {\n const {\n itemSize\n } = props;\n const {\n items,\n lastVisitedIndex\n } = listCache;\n if (index > lastVisitedIndex) {\n let offset = 0;\n if (lastVisitedIndex >= 0) {\n const item = items[lastVisitedIndex];\n offset = item.offset + item.size;\n }\n for (let i = lastVisitedIndex + 1; i <= index; i++) {\n const size = itemSize(i);\n items[i] = {\n offset,\n size\n };\n offset += size;\n }\n listCache.lastVisitedIndex = index;\n }\n return items[index];\n};\nconst findItem = (props, listCache, offset) => {\n const {\n items,\n lastVisitedIndex\n } = listCache;\n const lastVisitedOffset = lastVisitedIndex > 0 ? items[lastVisitedIndex].offset : 0;\n if (lastVisitedOffset >= offset) {\n return bs(props, listCache, 0, lastVisitedIndex, offset);\n }\n return es(props, listCache, Math.max(0, lastVisitedIndex), offset);\n};\nconst bs = (props, listCache, low, high, offset) => {\n while (low <= high) {\n const mid = low + Math.floor((high - low) / 2);\n const currentOffset = getItemFromCache(props, mid, listCache).offset;\n if (currentOffset === offset) {\n return mid;\n } else if (currentOffset < offset) {\n low = mid + 1;\n } else if (currentOffset > offset) {\n high = mid - 1;\n }\n }\n return Math.max(0, low - 1);\n};\nconst es = (props, listCache, index, offset) => {\n const {\n total\n } = props;\n let exponent = 1;\n while (index < total && getItemFromCache(props, index, listCache).offset < offset) {\n index += exponent;\n exponent *= 2;\n }\n return bs(props, listCache, Math.floor(index / 2), Math.min(index, total - 1), offset);\n};\nconst getEstimatedTotalSize = ({\n total\n}, {\n items,\n estimatedItemSize,\n lastVisitedIndex\n}) => {\n let totalSizeOfMeasuredItems = 0;\n if (lastVisitedIndex >= total) {\n lastVisitedIndex = total - 1;\n }\n if (lastVisitedIndex >= 0) {\n const item = items[lastVisitedIndex];\n totalSizeOfMeasuredItems = item.offset + item.size;\n }\n const numUnmeasuredItems = total - lastVisitedIndex - 1;\n const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize;\n return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems;\n};\nconst DynamicSizeList = createList({\n name: \"ElDynamicSizeList\",\n getItemOffset: (props, index, listCache) => getItemFromCache(props, index, listCache).offset,\n getItemSize: (_, index, {\n items\n }) => items[index].size,\n getEstimatedTotalSize,\n getOffset: (props, index, alignment, scrollOffset, listCache) => {\n const {\n height,\n layout,\n width\n } = props;\n const size = isHorizontal(layout) ? width : height;\n const item = getItemFromCache(props, index, listCache);\n const estimatedTotalSize = getEstimatedTotalSize(props, listCache);\n const maxOffset = Math.max(0, Math.min(estimatedTotalSize - size, item.offset));\n const minOffset = Math.max(0, item.offset - size + item.size);\n if (alignment === SMART_ALIGNMENT) {\n if (scrollOffset >= minOffset - size && scrollOffset <= maxOffset + size) {\n alignment = AUTO_ALIGNMENT;\n } else {\n alignment = CENTERED_ALIGNMENT;\n }\n }\n switch (alignment) {\n case START_ALIGNMENT:\n {\n return maxOffset;\n }\n case END_ALIGNMENT:\n {\n return minOffset;\n }\n case CENTERED_ALIGNMENT:\n {\n return Math.round(minOffset + (maxOffset - minOffset) / 2);\n }\n case AUTO_ALIGNMENT:\n default:\n {\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset;\n } else if (scrollOffset < minOffset) {\n return minOffset;\n } else {\n return maxOffset;\n }\n }\n }\n },\n getStartIndexForOffset: (props, offset, listCache) => findItem(props, listCache, offset),\n getStopIndexForStartIndex: (props, startIndex, scrollOffset, listCache) => {\n const {\n height,\n total,\n layout,\n width\n } = props;\n const size = isHorizontal(layout) ? width : height;\n const item = getItemFromCache(props, startIndex, listCache);\n const maxOffset = scrollOffset + size;\n let offset = item.offset + item.size;\n let stopIndex = startIndex;\n while (stopIndex < total - 1 && offset < maxOffset) {\n stopIndex++;\n offset += getItemFromCache(props, stopIndex, listCache).size;\n }\n return stopIndex;\n },\n initCache({\n estimatedItemSize = DEFAULT_DYNAMIC_LIST_ITEM_SIZE\n }, instance) {\n const cache = {\n items: {},\n estimatedItemSize,\n lastVisitedIndex: -1\n };\n cache.clearCacheAfterIndex = (index, forceUpdate = true) => {\n var _a, _b;\n cache.lastVisitedIndex = Math.min(cache.lastVisitedIndex, index - 1);\n (_a = instance.exposed) == null ? void 0 : _a.getItemStyleCache(-1);\n if (forceUpdate) {\n (_b = instance.proxy) == null ? void 0 : _b.$forceUpdate();\n }\n };\n return cache;\n },\n clearCache: false,\n validateProps: ({\n itemSize\n }) => {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof itemSize !== \"function\") {\n throwError(SCOPE, `\n itemSize is required as function, but the given value was ${typeof itemSize}\n `);\n }\n }\n }\n});\nexport { DynamicSizeList as default };","map":{"version":3,"names":["SCOPE","getItemFromCache","props","index","listCache","itemSize","items","lastVisitedIndex","offset","item","size","i","findItem","lastVisitedOffset","bs","es","Math","max","low","high","mid","floor","currentOffset","total","exponent","min","getEstimatedTotalSize","estimatedItemSize","totalSizeOfMeasuredItems","numUnmeasuredItems","totalSizeOfUnmeasuredItems","DynamicSizeList","createList","name","getItemOffset","getItemSize","_","getOffset","alignment","scrollOffset","height","layout","width","isHorizontal","estimatedTotalSize","maxOffset","minOffset","SMART_ALIGNMENT","AUTO_ALIGNMENT","CENTERED_ALIGNMENT","START_ALIGNMENT","END_ALIGNMENT","round","getStartIndexForOffset","getStopIndexForStartIndex","startIndex","stopIndex","initCache","DEFAULT_DYNAMIC_LIST_ITEM_SIZE","instance","cache","clearCacheAfterIndex","forceUpdate","_a","_b","exposed","getItemStyleCache","proxy","$forceUpdate","clearCache","validateProps","process","env","NODE_ENV","throwError"],"sources":["../../../../../../../packages/components/virtual-list/src/components/dynamic-size-list.ts"],"sourcesContent":["import { throwError } from '@element-plus/utils'\n\nimport createList from '../builders/build-list'\n\nimport { isHorizontal } from '../utils'\nimport {\n AUTO_ALIGNMENT,\n CENTERED_ALIGNMENT,\n DEFAULT_DYNAMIC_LIST_ITEM_SIZE,\n END_ALIGNMENT,\n SMART_ALIGNMENT,\n START_ALIGNMENT,\n} from '../defaults'\nimport type { VirtualizedListProps } from '../props'\n\nimport type { ItemSize, ListCache, ListItem } from '../types'\n\ntype Props = VirtualizedListProps\n\nconst SCOPE = 'ElDynamicSizeList'\nconst getItemFromCache = (\n props: Props,\n index: number,\n listCache: ListCache\n): ListItem => {\n const { itemSize } = props\n const { items, lastVisitedIndex } = listCache\n\n if (index > lastVisitedIndex) {\n let offset = 0\n if (lastVisitedIndex >= 0) {\n const item = items[lastVisitedIndex]\n offset = item.offset + item.size\n }\n\n for (let i = lastVisitedIndex + 1; i <= index; i++) {\n const size = (itemSize as ItemSize)(i)\n\n items[i] = {\n offset,\n size,\n }\n\n offset += size\n }\n\n listCache.lastVisitedIndex = index\n }\n\n return items[index]\n}\n\nconst findItem = (props: Props, listCache: ListCache, offset: number) => {\n const { items, lastVisitedIndex } = listCache\n\n const lastVisitedOffset =\n lastVisitedIndex > 0 ? items[lastVisitedIndex].offset : 0\n\n if (lastVisitedOffset >= offset) {\n return bs(props, listCache, 0, lastVisitedIndex, offset)\n }\n return es(props, listCache, Math.max(0, lastVisitedIndex), offset)\n}\n\n// bs stands for binary search which has approximately time complexity of O(Log n)\n// space complexity of O(1)\n// in this case we use it for search the offset of each item, since\n// the cached items' offset is monotonically increasing\nconst bs = (\n props: Props,\n listCache: ListCache,\n low: number,\n high: number,\n offset: number\n) => {\n while (low <= high) {\n const mid = low + Math.floor((high - low) / 2)\n const currentOffset = getItemFromCache(props, mid, listCache).offset\n\n if (currentOffset === offset) {\n return mid\n } else if (currentOffset < offset) {\n low = mid + 1\n } else if (currentOffset > offset) {\n high = mid - 1\n }\n }\n\n return Math.max(0, low - 1)\n}\n\n// es stands for exponential search which has time complexity of O(Log n) and\n// space complexity of O(1) in the case of finding the boundary element.\n// the exponential indicator in this case is 2.\n// for more detail about exponential search click this link\n// https://www.freecodecamp.org/news/search-algorithms-exponential-search-explained/\n\nconst es = (\n props: Props,\n listCache: ListCache,\n index: number,\n offset: number\n) => {\n const { total } = props\n let exponent = 1\n\n while (\n index < total &&\n getItemFromCache(props, index, listCache).offset < offset\n ) {\n index += exponent\n exponent *= 2\n }\n\n return bs(\n props,\n listCache,\n Math.floor(index / 2),\n Math.min(index, total - 1),\n offset\n )\n}\n\nconst getEstimatedTotalSize = (\n { total }: Props,\n { items, estimatedItemSize, lastVisitedIndex }: ListCache\n) => {\n let totalSizeOfMeasuredItems = 0\n\n if (lastVisitedIndex >= total) {\n lastVisitedIndex = total - 1\n }\n\n if (lastVisitedIndex >= 0) {\n const item = items[lastVisitedIndex]\n totalSizeOfMeasuredItems = item.offset + item.size\n }\n\n const numUnmeasuredItems = total - lastVisitedIndex - 1\n const totalSizeOfUnmeasuredItems = numUnmeasuredItems * estimatedItemSize\n return totalSizeOfMeasuredItems + totalSizeOfUnmeasuredItems\n}\n\nconst DynamicSizeList = createList({\n name: 'ElDynamicSizeList',\n getItemOffset: (props, index, listCache) =>\n getItemFromCache(props, index, listCache).offset,\n\n getItemSize: (_, index, { items }) => items[index].size,\n\n getEstimatedTotalSize,\n\n getOffset: (props, index, alignment, scrollOffset, listCache) => {\n const { height, layout, width } = props\n\n const size = (isHorizontal(layout) ? width : height) as number\n const item = getItemFromCache(props, index, listCache)\n\n const estimatedTotalSize = getEstimatedTotalSize(props, listCache)\n\n const maxOffset = Math.max(\n 0,\n Math.min(estimatedTotalSize - size, item.offset)\n )\n const minOffset = Math.max(0, item.offset - size + item.size)\n\n if (alignment === SMART_ALIGNMENT) {\n if (\n scrollOffset >= minOffset - size &&\n scrollOffset <= maxOffset + size\n ) {\n alignment = AUTO_ALIGNMENT\n } else {\n alignment = CENTERED_ALIGNMENT\n }\n }\n\n switch (alignment) {\n case START_ALIGNMENT: {\n return maxOffset\n }\n case END_ALIGNMENT: {\n return minOffset\n }\n case CENTERED_ALIGNMENT: {\n return Math.round(minOffset + (maxOffset - minOffset) / 2)\n }\n case AUTO_ALIGNMENT:\n default: {\n if (scrollOffset >= minOffset && scrollOffset <= maxOffset) {\n return scrollOffset\n } else if (scrollOffset < minOffset) {\n return minOffset\n } else {\n return maxOffset\n }\n }\n }\n },\n\n getStartIndexForOffset: (props, offset, listCache) =>\n findItem(props, listCache, offset),\n\n getStopIndexForStartIndex: (props, startIndex, scrollOffset, listCache) => {\n const { height, total, layout, width } = props\n\n const size = (isHorizontal(layout) ? width : height) as number\n const item = getItemFromCache(props, startIndex, listCache)\n const maxOffset = scrollOffset + size\n\n let offset = item.offset + item.size\n let stopIndex = startIndex\n\n while (stopIndex < total - 1 && offset < maxOffset) {\n stopIndex++\n offset += getItemFromCache(props, stopIndex, listCache).size\n }\n\n return stopIndex\n },\n\n initCache({ estimatedItemSize = DEFAULT_DYNAMIC_LIST_ITEM_SIZE }, instance) {\n const cache = {\n items: {},\n estimatedItemSize,\n lastVisitedIndex: -1,\n } as ListCache\n\n cache.clearCacheAfterIndex = (index: number, forceUpdate = true) => {\n cache.lastVisitedIndex = Math.min(cache.lastVisitedIndex, index - 1)\n instance.exposed?.getItemStyleCache(-1)\n\n if (forceUpdate) {\n instance.proxy?.$forceUpdate()\n }\n }\n\n return cache\n },\n\n clearCache: false,\n\n validateProps: ({ itemSize }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof itemSize !== 'function') {\n throwError(\n SCOPE,\n `\n itemSize is required as function, but the given value was ${typeof itemSize}\n `\n )\n }\n }\n },\n})\n\nexport type DynamicSizeListInstance = InstanceType<typeof DynamicSizeList>\nexport default DynamicSizeList\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}