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
56 KiB

{"ast":null,"code":"import { defineComponent, getCurrentInstance, ref, computed, unref, onMounted, nextTick, resolveDynamicComponent, h, Fragment } from 'vue';\nimport { useEventListener, isClient } from '@vueuse/core';\nimport ScrollBar from '../components/scrollbar.mjs';\nimport { useGridWheel } from '../hooks/use-grid-wheel.mjs';\nimport { useCache } from '../hooks/use-cache.mjs';\nimport { virtualizedGridProps } from '../props.mjs';\nimport { getScrollDir, getRTLOffsetType, isRTL } from '../utils.mjs';\nimport { ITEM_RENDER_EVT, SCROLL_EVT, FORWARD, BACKWARD, AUTO_ALIGNMENT, RTL, RTL_OFFSET_POS_ASC, RTL_OFFSET_NAG, RTL_OFFSET_POS_DESC } from '../defaults.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { isNumber } from '../../../../utils/types.mjs';\nimport { getScrollBarWidth } from '../../../../utils/dom/scroll.mjs';\nimport { isString, hasOwn } from '@vue/shared';\nconst createGrid = ({\n name,\n clearCache,\n getColumnPosition,\n getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex,\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getColumnOffset,\n getRowOffset,\n getRowPosition,\n getRowStartIndexForOffset,\n getRowStopIndexForStartIndex,\n initCache,\n injectToInstance,\n validateProps\n}) => {\n return defineComponent({\n name: name != null ? name : \"ElVirtualList\",\n props: virtualizedGridProps,\n emits: [ITEM_RENDER_EVT, SCROLL_EVT],\n setup(props, {\n emit,\n expose,\n slots\n }) {\n const ns = useNamespace(\"vl\");\n validateProps(props);\n const instance = getCurrentInstance();\n const cache = ref(initCache(props, instance));\n injectToInstance == null ? void 0 : injectToInstance(instance, cache);\n const windowRef = ref();\n const hScrollbar = ref();\n const vScrollbar = ref();\n const innerRef = ref(null);\n const states = ref({\n isScrolling: false,\n scrollLeft: isNumber(props.initScrollLeft) ? props.initScrollLeft : 0,\n scrollTop: isNumber(props.initScrollTop) ? props.initScrollTop : 0,\n updateRequested: false,\n xAxisScrollDir: FORWARD,\n yAxisScrollDir: FORWARD\n });\n const getItemStyleCache = useCache();\n const parsedHeight = computed(() => Number.parseInt(`${props.height}`, 10));\n const parsedWidth = computed(() => Number.parseInt(`${props.width}`, 10));\n const columnsToRender = computed(() => {\n const {\n totalColumn,\n totalRow,\n columnCache\n } = props;\n const {\n isScrolling,\n xAxisScrollDir,\n scrollLeft\n } = unref(states);\n if (totalColumn === 0 || totalRow === 0) {\n return [0, 0, 0, 0];\n }\n const startIndex = getColumnStartIndexForOffset(props, scrollLeft, unref(cache));\n const stopIndex = getColumnStopIndexForStartIndex(props, startIndex, scrollLeft, unref(cache));\n const cacheBackward = !isScrolling || xAxisScrollDir === BACKWARD ? Math.max(1, columnCache) : 1;\n const cacheForward = !isScrolling || xAxisScrollDir === FORWARD ? Math.max(1, columnCache) : 1;\n return [Math.max(0, startIndex - cacheBackward), Math.max(0, Math.min(totalColumn - 1, stopIndex + cacheForward)), startIndex, stopIndex];\n });\n const rowsToRender = computed(() => {\n const {\n totalColumn,\n totalRow,\n rowCache\n } = props;\n const {\n isScrolling,\n yAxisScrollDir,\n scrollTop\n } = unref(states);\n if (totalColumn === 0 || totalRow === 0) {\n return [0, 0, 0, 0];\n }\n const startIndex = getRowStartIndexForOffset(props, scrollTop, unref(cache));\n const stopIndex = getRowStopIndexForStartIndex(props, startIndex, scrollTop, unref(cache));\n const cacheBackward = !isScrolling || yAxisScrollDir === BACKWARD ? Math.max(1, rowCache) : 1;\n const cacheForward = !isScrolling || yAxisScrollDir === FORWARD ? Math.max(1, rowCache) : 1;\n return [Math.max(0, startIndex - cacheBackward), Math.max(0, Math.min(totalRow - 1, stopIndex + cacheForward)), startIndex, stopIndex];\n });\n const estimatedTotalHeight = computed(() => getEstimatedTotalHeight(props, unref(cache)));\n const estimatedTotalWidth = computed(() => getEstimatedTotalWidth(props, unref(cache)));\n const windowStyle = computed(() => {\n var _a;\n return [{\n position: \"relative\",\n overflow: \"hidden\",\n WebkitOverflowScrolling: \"touch\",\n willChange: \"transform\"\n }, {\n direction: props.direction,\n height: isNumber(props.height) ? `${props.height}px` : props.height,\n width: isNumber(props.width) ? `${props.width}px` : props.width\n }, (_a = props.style) != null ? _a : {}];\n });\n const innerStyle = computed(() => {\n const width = `${unref(estimatedTotalWidth)}px`;\n const height = `${unref(estimatedTotalHeight)}px`;\n return {\n height,\n pointerEvents: unref(states).isScrolling ? \"none\" : void 0,\n width\n };\n });\n const emitEvents = () => {\n const {\n totalColumn,\n totalRow\n } = props;\n if (totalColumn > 0 && totalRow > 0) {\n const [columnCacheStart, columnCacheEnd, columnVisibleStart, columnVisibleEnd] = unref(columnsToRender);\n const [rowCacheStart, rowCacheEnd, rowVisibleStart, rowVisibleEnd] = unref(rowsToRender);\n emit(ITEM_RENDER_EVT, {\n columnCacheStart,\n columnCacheEnd,\n rowCacheStart,\n rowCacheEnd,\n columnVisibleStart,\n columnVisibleEnd,\n rowVisibleStart,\n rowVisibleEnd\n });\n }\n const {\n scrollLeft,\n scrollTop,\n updateRequested,\n xAxisScrollDir,\n yAxisScrollDir\n } = unref(states);\n emit(SCROLL_EVT, {\n xAxisScrollDir,\n scrollLeft,\n yAxisScrollDir,\n scrollTop,\n updateRequested\n });\n };\n const onScroll = e => {\n const {\n clientHeight,\n clientWidth,\n scrollHeight,\n scrollLeft,\n scrollTop,\n scrollWidth\n } = e.currentTarget;\n const _states = unref(states);\n if (_states.scrollTop === scrollTop && _states.scrollLeft === scrollLeft) {\n return;\n }\n let _scrollLeft = scrollLeft;\n if (isRTL(props.direction)) {\n switch (getRTLOffsetType()) {\n case RTL_OFFSET_NAG:\n _scrollLeft = -scrollLeft;\n break;\n case RTL_OFFSET_POS_DESC:\n _scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n states.value = {\n ..._states,\n isScrolling: true,\n scrollLeft: _scrollLeft,\n scrollTop: Math.max(0, Math.min(scrollTop, scrollHeight - clientHeight)),\n updateRequested: true,\n xAxisScrollDir: getScrollDir(_states.scrollLeft, _scrollLeft),\n yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop)\n };\n nextTick(() => resetIsScrolling());\n onUpdated();\n emitEvents();\n };\n const onVerticalScroll = (distance, totalSteps) => {\n const height = unref(parsedHeight);\n const offset = (estimatedTotalHeight.value - height) / totalSteps * distance;\n scrollTo({\n scrollTop: Math.min(estimatedTotalHeight.value - height, offset)\n });\n };\n const onHorizontalScroll = (distance, totalSteps) => {\n const width = unref(parsedWidth);\n const offset = (estimatedTotalWidth.value - width) / totalSteps * distance;\n scrollTo({\n scrollLeft: Math.min(estimatedTotalWidth.value - width, offset)\n });\n };\n const {\n onWheel\n } = useGridWheel({\n atXStartEdge: computed(() => states.value.scrollLeft <= 0),\n atXEndEdge: computed(() => states.value.scrollLeft >= estimatedTotalWidth.value - unref(parsedWidth)),\n atYStartEdge: computed(() => states.value.scrollTop <= 0),\n atYEndEdge: computed(() => states.value.scrollTop >= estimatedTotalHeight.value - unref(parsedHeight))\n }, (x, y) => {\n var _a, _b, _c, _d;\n (_b = (_a = hScrollbar.value) == null ? void 0 : _a.onMouseUp) == null ? void 0 : _b.call(_a);\n (_d = (_c = vScrollbar.value) == null ? void 0 : _c.onMouseUp) == null ? void 0 : _d.call(_c);\n const width = unref(parsedWidth);\n const height = unref(parsedHeight);\n scrollTo({\n scrollLeft: Math.min(states.value.scrollLeft + x, estimatedTotalWidth.value - width),\n scrollTop: Math.min(states.value.scrollTop + y, estimatedTotalHeight.value - height)\n });\n });\n useEventListener(windowRef, \"wheel\", onWheel, {\n passive: false\n });\n const scrollTo = ({\n scrollLeft = states.value.scrollLeft,\n scrollTop = states.value.scrollTop\n }) => {\n scrollLeft = Math.max(scrollLeft, 0);\n scrollTop = Math.max(scrollTop, 0);\n const _states = unref(states);\n if (scrollTop === _states.scrollTop && scrollLeft === _states.scrollLeft) {\n return;\n }\n states.value = {\n ..._states,\n xAxisScrollDir: getScrollDir(_states.scrollLeft, scrollLeft),\n yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),\n scrollLeft,\n scrollTop,\n updateRequested: true\n };\n nextTick(() => resetIsScrolling());\n onUpdated();\n emitEvents();\n };\n const scrollToItem = (rowIndex = 0, columnIdx = 0, alignment = AUTO_ALIGNMENT) => {\n const _states = unref(states);\n columnIdx = Math.max(0, Math.min(columnIdx, props.totalColumn - 1));\n rowIndex = Math.max(0, Math.min(rowIndex, props.totalRow - 1));\n const scrollBarWidth = getScrollBarWidth(ns.namespace.value);\n const _cache = unref(cache);\n const estimatedHeight = getEstimatedTotalHeight(props, _cache);\n const estimatedWidth = getEstimatedTotalWidth(props, _cache);\n scrollTo({\n scrollLeft: getColumnOffset(props, columnIdx, alignment, _states.scrollLeft, _cache, estimatedWidth > props.width ? scrollBarWidth : 0),\n scrollTop: getRowOffset(props, rowIndex, alignment, _states.scrollTop, _cache, estimatedHeight > props.height ? scrollBarWidth : 0)\n });\n };\n const getItemStyle = (rowIndex, columnIndex) => {\n const {\n columnWidth,\n direction,\n rowHeight\n } = props;\n const itemStyleCache = getItemStyleCache.value(clearCache && columnWidth, clearCache && rowHeight, clearCache && direction);\n const key = `${rowIndex},${columnIndex}`;\n if (hasOwn(itemStyleCache, key)) {\n return itemStyleCache[key];\n } else {\n const [, left] = getColumnPosition(props, columnIndex, unref(cache));\n const _cache = unref(cache);\n const rtl = isRTL(direction);\n const [height, top] = getRowPosition(props, rowIndex, _cache);\n const [width] = getColumnPosition(props, columnIndex, _cache);\n itemStyleCache[key] = {\n position: \"absolute\",\n left: rtl ? void 0 : `${left}px`,\n right: rtl ? `${left}px` : void 0,\n top: `${top}px`,\n height: `${height}px`,\n width: `${width}px`\n };\n return itemStyleCache[key];\n }\n };\n const resetIsScrolling = () => {\n states.value.isScrolling = false;\n nextTick(() => {\n getItemStyleCache.value(-1, null, null);\n });\n };\n onMounted(() => {\n if (!isClient) return;\n const {\n initScrollLeft,\n initScrollTop\n } = props;\n const windowElement = unref(windowRef);\n if (windowElement) {\n if (isNumber(initScrollLeft)) {\n windowElement.scrollLeft = initScrollLeft;\n }\n if (isNumber(initScrollTop)) {\n windowElement.scrollTop = initScrollTop;\n }\n }\n emitEvents();\n });\n const onUpdated = () => {\n const {\n direction\n } = props;\n const {\n scrollLeft,\n scrollTop,\n updateRequested\n } = unref(states);\n const windowElement = unref(windowRef);\n if (updateRequested && windowElement) {\n if (direction === RTL) {\n switch (getRTLOffsetType()) {\n case RTL_OFFSET_NAG:\n {\n windowElement.scrollLeft = -scrollLeft;\n break;\n }\n case RTL_OFFSET_POS_ASC:\n {\n windowElement.scrollLeft = scrollLeft;\n break;\n }\n default:\n {\n const {\n clientWidth,\n scrollWidth\n } = windowElement;\n windowElement.scrollLeft = scrollWidth - clientWidth - scrollLeft;\n break;\n }\n }\n } else {\n windowElement.scrollLeft = Math.max(0, scrollLeft);\n }\n windowElement.scrollTop = Math.max(0, scrollTop);\n }\n };\n const {\n resetAfterColumnIndex,\n resetAfterRowIndex,\n resetAfter\n } = instance.proxy;\n expose({\n windowRef,\n innerRef,\n getItemStyleCache,\n scrollTo,\n scrollToItem,\n states,\n resetAfterColumnIndex,\n resetAfterRowIndex,\n resetAfter\n });\n const renderScrollbars = () => {\n const {\n scrollbarAlwaysOn,\n scrollbarStartGap,\n scrollbarEndGap,\n totalColumn,\n totalRow\n } = props;\n const width = unref(parsedWidth);\n const height = unref(parsedHeight);\n const estimatedWidth = unref(estimatedTotalWidth);\n const estimatedHeight = unref(estimatedTotalHeight);\n const {\n scrollLeft,\n scrollTop\n } = unref(states);\n const horizontalScrollbar = h(ScrollBar, {\n ref: hScrollbar,\n alwaysOn: scrollbarAlwaysOn,\n startGap: scrollbarStartGap,\n endGap: scrollbarEndGap,\n class: ns.e(\"horizontal\"),\n clientSize: width,\n layout: \"horizontal\",\n onScroll: onHorizontalScroll,\n ratio: width * 100 / estimatedWidth,\n scrollFrom: scrollLeft / (estimatedWidth - width),\n total: totalRow,\n visible: true\n });\n const verticalScrollbar = h(ScrollBar, {\n ref: vScrollbar,\n alwaysOn: scrollbarAlwaysOn,\n startGap: scrollbarStartGap,\n endGap: scrollbarEndGap,\n class: ns.e(\"vertical\"),\n clientSize: height,\n layout: \"vertical\",\n onScroll: onVerticalScroll,\n ratio: height * 100 / estimatedHeight,\n scrollFrom: scrollTop / (estimatedHeight - height),\n total: totalColumn,\n visible: true\n });\n return {\n horizontalScrollbar,\n verticalScrollbar\n };\n };\n const renderItems = () => {\n var _a;\n const [columnStart, columnEnd] = unref(columnsToRender);\n const [rowStart, rowEnd] = unref(rowsToRender);\n const {\n data,\n totalColumn,\n totalRow,\n useIsScrolling,\n itemKey\n } = props;\n const children = [];\n if (totalRow > 0 && totalColumn > 0) {\n for (let row = rowStart; row <= rowEnd; row++) {\n for (let column = columnStart; column <= columnEnd; column++) {\n const key = itemKey({\n columnIndex: column,\n data,\n rowIndex: row\n });\n children.push(h(Fragment, {\n key\n }, (_a = slots.default) == null ? void 0 : _a.call(slots, {\n columnIndex: column,\n data,\n isScrolling: useIsScrolling ? unref(states).isScrolling : void 0,\n style: getItemStyle(row, column),\n rowIndex: row\n })));\n }\n }\n }\n return children;\n };\n const renderInner = () => {\n const Inner = resolveDynamicComponent(props.innerElement);\n const children = renderItems();\n return [h(Inner, {\n style: unref(innerStyle),\n ref: innerRef\n }, !isString(Inner) ? {\n default: () => children\n } : children)];\n };\n const renderWindow = () => {\n const Container = resolveDynamicComponent(props.containerElement);\n const {\n horizontalScrollbar,\n verticalScrollbar\n } = renderScrollbars();\n const Inner = renderInner();\n return h(\"div\", {\n key: 0,\n class: ns.e(\"wrapper\"),\n role: props.role\n }, [h(Container, {\n class: props.className,\n style: unref(windowStyle),\n onScroll,\n ref: windowRef\n }, !isString(Container) ? {\n default: () => Inner\n } : Inner), horizontalScrollbar, verticalScrollbar]);\n };\n return renderWindow;\n }\n });\n};\nexport { createGrid as default };","map":{"version":3,"names":["createGrid","name","clearCache","getColumnPosition","getColumnStartIndexForOffset","getColumnStopIndexForStartIndex","getEstimatedTotalHeight","getEstimatedTotalWidth","getColumnOffset","getRowOffset","getRowPosition","getRowStartIndexForOffset","getRowStopIndexForStartIndex","initCache","injectToInstance","validateProps","defineComponent","props","virtualizedGridProps","emits","ITEM_RENDER_EVT","SCROLL_EVT","setup","emit","expose","slots","ns","useNamespace","instance","getCurrentInstance","cache","ref","windowRef","hScrollbar","vScrollbar","innerRef","states","isScrolling","scrollLeft","isNumber","initScrollLeft","scrollTop","initScrollTop","updateRequested","xAxisScrollDir","FORWARD","yAxisScrollDir","getItemStyleCache","useCache","parsedHeight","computed","Number","parseInt","height","parsedWidth","width","columnsToRender","totalColumn","totalRow","columnCache","unref","startIndex","stopIndex","cacheBackward","BACKWARD","Math","max","cacheForward","min","rowsToRender","rowCache","estimatedTotalHeight","estimatedTotalWidth","windowStyle","_a","position","overflow","WebkitOverflowScrolling","willChange","direction","style","innerStyle","pointerEvents","emitEvents","columnCacheStart","columnCacheEnd","columnVisibleStart","columnVisibleEnd","rowCacheStart","rowCacheEnd","rowVisibleStart","rowVisibleEnd","onScroll","e","clientHeight","clientWidth","scrollHeight","scrollWidth","currentTarget","_states","_scrollLeft","isRTL","getRTLOffsetType","RTL_OFFSET_NAG","RTL_OFFSET_POS_DESC","value","getScrollDir","nextTick","resetIsScrolling","onUpdated","onVerticalScroll","distance","totalSteps","offset","scrollTo","onHorizontalScroll","onWheel","useGridWheel","atXStartEdge","atXEndEdge","atYStartEdge","atYEndEdge","x","y","_b","_c","_d","onMouseUp","call","useEventListener","passive","scrollToItem","rowIndex","columnIdx","alignment","AUTO_ALIGNMENT","scrollBarWidth","getScrollBarWidth","namespace","_cache","estimatedHeight","estimatedWidth","getItemStyle","columnIndex","columnWidth","rowHeight","itemStyleCache","key","hasOwn","left","rtl","top","right","onMounted","isClient","windowElement","RTL","RTL_OFFSET_POS_ASC","resetAfterColumnIndex","resetAfterRowIndex","resetAfter","proxy","renderScrollbars","scrollbarAlwaysOn","scrollbarStartGap","scrollbarEndGap","horizontalScrollbar","h","ScrollBar","alwaysOn","startGap","endGap","class","clientSize","layout","ratio","scrollFrom","total","visible","verticalScrollbar","renderItems","columnStart","columnEnd","rowStart","rowEnd","data","useIsScrolling","itemKey","children","row","column","push","Fragment","default","renderInner","Inner","resolveDynamicComponent","innerElement","isString","renderWindow","Container","containerElement","role","className"],"sources":["../../../../../../../packages/components/virtual-list/src/builders/build-grid.ts"],"sourcesContent":["// @ts-nocheck\nimport {\n Fragment,\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n nextTick,\n onMounted,\n ref,\n resolveDynamicComponent,\n unref,\n} from 'vue'\nimport { useEventListener } from '@vueuse/core'\nimport {\n getScrollBarWidth,\n hasOwn,\n isClient,\n isNumber,\n isString,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport Scrollbar from '../components/scrollbar'\nimport { useGridWheel } from '../hooks/use-grid-wheel'\nimport { useCache } from '../hooks/use-cache'\nimport { virtualizedGridProps } from '../props'\nimport { getRTLOffsetType, getScrollDir, isRTL } from '../utils'\nimport {\n AUTO_ALIGNMENT,\n BACKWARD,\n FORWARD,\n ITEM_RENDER_EVT,\n RTL,\n RTL_OFFSET_NAG,\n RTL_OFFSET_POS_ASC,\n RTL_OFFSET_POS_DESC,\n SCROLL_EVT,\n} from '../defaults'\nimport type {\n CSSProperties,\n Ref,\n StyleValue,\n UnwrapRef,\n VNode,\n VNodeChild,\n} from 'vue'\nimport type {\n Alignment,\n GridConstructorProps,\n GridScrollOptions,\n ScrollbarExpose,\n} from '../types'\nimport type { VirtualizedGridProps } from '../props'\n\nconst createGrid = ({\n name,\n clearCache,\n getColumnPosition,\n getColumnStartIndexForOffset,\n getColumnStopIndexForStartIndex,\n getEstimatedTotalHeight,\n getEstimatedTotalWidth,\n getColumnOffset,\n getRowOffset,\n getRowPosition,\n getRowStartIndexForOffset,\n getRowStopIndexForStartIndex,\n\n initCache,\n injectToInstance,\n validateProps,\n}: GridConstructorProps<VirtualizedGridProps>) => {\n return defineComponent({\n name: name ?? 'ElVirtualList',\n props: virtualizedGridProps,\n emits: [ITEM_RENDER_EVT, SCROLL_EVT],\n setup(props, { emit, expose, slots }) {\n const ns = useNamespace('vl')\n\n validateProps(props)\n const instance = getCurrentInstance()!\n const cache = ref(initCache(props, instance))\n injectToInstance?.(instance, cache)\n // refs\n // here windowRef and innerRef can be type of HTMLElement\n // or user defined component type, depends on the type passed\n // by user\n const windowRef = ref<HTMLElement>()\n const hScrollbar = ref<ScrollbarExpose>()\n const vScrollbar = ref<ScrollbarExpose>()\n // innerRef is the actual container element which contains all the elements\n const innerRef = ref(null)\n const states = ref({\n isScrolling: false,\n scrollLeft: isNumber(props.initScrollLeft) ? props.initScrollLeft : 0,\n scrollTop: isNumber(props.initScrollTop) ? props.initScrollTop : 0,\n updateRequested: false,\n xAxisScrollDir: FORWARD,\n yAxisScrollDir: FORWARD,\n })\n\n const getItemStyleCache = useCache()\n\n // computed\n const parsedHeight = computed(() =>\n Number.parseInt(`${props.height}`, 10)\n )\n const parsedWidth = computed(() => Number.parseInt(`${props.width}`, 10))\n const columnsToRender = computed(() => {\n const { totalColumn, totalRow, columnCache } = props\n const { isScrolling, xAxisScrollDir, scrollLeft } = unref(states)\n\n if (totalColumn === 0 || totalRow === 0) {\n return [0, 0, 0, 0]\n }\n\n const startIndex = getColumnStartIndexForOffset(\n props,\n scrollLeft,\n unref(cache)\n )\n const stopIndex = getColumnStopIndexForStartIndex(\n props,\n startIndex,\n scrollLeft,\n unref(cache)\n )\n\n const cacheBackward =\n !isScrolling || xAxisScrollDir === BACKWARD\n ? Math.max(1, columnCache)\n : 1\n const cacheForward =\n !isScrolling || xAxisScrollDir === FORWARD\n ? Math.max(1, columnCache)\n : 1\n\n return [\n Math.max(0, startIndex - cacheBackward),\n Math.max(0, Math.min(totalColumn! - 1, stopIndex + cacheForward)),\n startIndex,\n stopIndex,\n ]\n })\n\n const rowsToRender = computed(() => {\n const { totalColumn, totalRow, rowCache } = props\n const { isScrolling, yAxisScrollDir, scrollTop } = unref(states)\n\n if (totalColumn === 0 || totalRow === 0) {\n return [0, 0, 0, 0]\n }\n\n const startIndex = getRowStartIndexForOffset(\n props,\n scrollTop,\n unref(cache)\n )\n const stopIndex = getRowStopIndexForStartIndex(\n props,\n startIndex,\n scrollTop,\n unref(cache)\n )\n\n const cacheBackward =\n !isScrolling || yAxisScrollDir === BACKWARD\n ? Math.max(1, rowCache)\n : 1\n const cacheForward =\n !isScrolling || yAxisScrollDir === FORWARD ? Math.max(1, rowCache) : 1\n\n return [\n Math.max(0, startIndex - cacheBackward),\n Math.max(0, Math.min(totalRow! - 1, stopIndex + cacheForward)),\n startIndex,\n stopIndex,\n ]\n })\n\n const estimatedTotalHeight = computed(() =>\n getEstimatedTotalHeight(props, unref(cache))\n )\n const estimatedTotalWidth = computed(() =>\n getEstimatedTotalWidth(props, unref(cache))\n )\n\n const windowStyle = computed<StyleValue>(() => [\n {\n position: 'relative',\n overflow: 'hidden',\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform',\n },\n {\n direction: props.direction,\n height: isNumber(props.height) ? `${props.height}px` : props.height,\n width: isNumber(props.width) ? `${props.width}px` : props.width,\n },\n props.style ?? {},\n ])\n\n const innerStyle = computed(() => {\n const width = `${unref(estimatedTotalWidth)}px`\n const height = `${unref(estimatedTotalHeight)}px`\n\n return {\n height,\n pointerEvents: unref(states).isScrolling ? 'none' : undefined,\n width,\n }\n })\n\n // methods\n const emitEvents = () => {\n const { totalColumn, totalRow } = props\n\n if (totalColumn! > 0 && totalRow! > 0) {\n const [\n columnCacheStart,\n columnCacheEnd,\n columnVisibleStart,\n columnVisibleEnd,\n ] = unref(columnsToRender)\n const [rowCacheStart, rowCacheEnd, rowVisibleStart, rowVisibleEnd] =\n unref(rowsToRender)\n // emit the render item event with\n // [xAxisInvisibleStart, xAxisInvisibleEnd, xAxisVisibleStart, xAxisVisibleEnd]\n // [yAxisInvisibleStart, yAxisInvisibleEnd, yAxisVisibleStart, yAxisVisibleEnd]\n emit(ITEM_RENDER_EVT, {\n columnCacheStart,\n columnCacheEnd,\n rowCacheStart,\n rowCacheEnd,\n columnVisibleStart,\n columnVisibleEnd,\n rowVisibleStart,\n rowVisibleEnd,\n })\n }\n\n const {\n scrollLeft,\n scrollTop,\n updateRequested,\n xAxisScrollDir,\n yAxisScrollDir,\n } = unref(states)\n emit(SCROLL_EVT, {\n xAxisScrollDir,\n scrollLeft,\n yAxisScrollDir,\n scrollTop,\n updateRequested,\n })\n }\n\n const onScroll = (e: Event) => {\n const {\n clientHeight,\n clientWidth,\n scrollHeight,\n scrollLeft,\n scrollTop,\n scrollWidth,\n } = e.currentTarget as HTMLElement\n\n const _states = unref(states)\n\n if (\n _states.scrollTop === scrollTop &&\n _states.scrollLeft === scrollLeft\n ) {\n return\n }\n\n let _scrollLeft = scrollLeft\n\n if (isRTL(props.direction)) {\n switch (getRTLOffsetType()) {\n case RTL_OFFSET_NAG:\n _scrollLeft = -scrollLeft\n break\n case RTL_OFFSET_POS_DESC:\n _scrollLeft = scrollWidth - clientWidth - scrollLeft\n break\n }\n }\n\n states.value = {\n ..._states,\n isScrolling: true,\n scrollLeft: _scrollLeft,\n scrollTop: Math.max(\n 0,\n Math.min(scrollTop, scrollHeight - clientHeight)\n ),\n updateRequested: true,\n xAxisScrollDir: getScrollDir(_states.scrollLeft, _scrollLeft),\n yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),\n }\n\n nextTick(() => resetIsScrolling())\n\n onUpdated()\n emitEvents()\n }\n\n const onVerticalScroll = (distance: number, totalSteps: number) => {\n const height = unref(parsedHeight)\n const offset =\n ((estimatedTotalHeight.value - height) / totalSteps) * distance\n scrollTo({\n scrollTop: Math.min(estimatedTotalHeight.value - height, offset),\n })\n }\n\n const onHorizontalScroll = (distance: number, totalSteps: number) => {\n const width = unref(parsedWidth)\n const offset =\n ((estimatedTotalWidth.value - width) / totalSteps) * distance\n scrollTo({\n scrollLeft: Math.min(estimatedTotalWidth.value - width, offset),\n })\n }\n\n const { onWheel } = useGridWheel(\n {\n atXStartEdge: computed(() => states.value.scrollLeft <= 0),\n atXEndEdge: computed(\n () =>\n states.value.scrollLeft >=\n estimatedTotalWidth.value - unref(parsedWidth)\n ),\n atYStartEdge: computed(() => states.value.scrollTop <= 0),\n atYEndEdge: computed(\n () =>\n states.value.scrollTop >=\n estimatedTotalHeight.value - unref(parsedHeight)\n ),\n },\n (x: number, y: number) => {\n hScrollbar.value?.onMouseUp?.()\n vScrollbar.value?.onMouseUp?.()\n const width = unref(parsedWidth)\n const height = unref(parsedHeight)\n scrollTo({\n scrollLeft: Math.min(\n states.value.scrollLeft + x,\n estimatedTotalWidth.value - width\n ),\n scrollTop: Math.min(\n states.value.scrollTop + y,\n estimatedTotalHeight.value - height\n ),\n })\n }\n )\n\n useEventListener(windowRef, 'wheel', onWheel, {\n passive: false,\n })\n\n const scrollTo = ({\n scrollLeft = states.value.scrollLeft,\n scrollTop = states.value.scrollTop,\n }: GridScrollOptions) => {\n scrollLeft = Math.max(scrollLeft, 0)\n scrollTop = Math.max(scrollTop, 0)\n const _states = unref(states)\n if (\n scrollTop === _states.scrollTop &&\n scrollLeft === _states.scrollLeft\n ) {\n return\n }\n\n states.value = {\n ..._states,\n xAxisScrollDir: getScrollDir(_states.scrollLeft, scrollLeft),\n yAxisScrollDir: getScrollDir(_states.scrollTop, scrollTop),\n scrollLeft,\n scrollTop,\n updateRequested: true,\n }\n\n nextTick(() => resetIsScrolling())\n\n onUpdated()\n emitEvents()\n }\n\n const scrollToItem = (\n rowIndex = 0,\n columnIdx = 0,\n alignment: Alignment = AUTO_ALIGNMENT\n ) => {\n const _states = unref(states)\n columnIdx = Math.max(0, Math.min(columnIdx, props.totalColumn! - 1))\n rowIndex = Math.max(0, Math.min(rowIndex, props.totalRow! - 1))\n const scrollBarWidth = getScrollBarWidth(ns.namespace.value)\n\n const _cache = unref(cache)\n const estimatedHeight = getEstimatedTotalHeight(props, _cache)\n const estimatedWidth = getEstimatedTotalWidth(props, _cache)\n\n scrollTo({\n scrollLeft: getColumnOffset(\n props,\n columnIdx,\n alignment,\n _states.scrollLeft,\n _cache,\n estimatedWidth > props.width! ? scrollBarWidth : 0\n ),\n scrollTop: getRowOffset(\n props,\n rowIndex,\n alignment,\n _states.scrollTop,\n _cache,\n estimatedHeight > props.height! ? scrollBarWidth : 0\n ),\n })\n }\n\n const getItemStyle = (\n rowIndex: number,\n columnIndex: number\n ): CSSProperties => {\n const { columnWidth, direction, rowHeight } = props\n const itemStyleCache = getItemStyleCache.value(\n clearCache && columnWidth,\n clearCache && rowHeight,\n clearCache && direction\n )\n // since there was no need to introduce an nested array into cache object\n // we use row,column to construct the key for indexing the map.\n const key = `${rowIndex},${columnIndex}`\n\n if (hasOwn(itemStyleCache, key)) {\n return itemStyleCache[key]\n } else {\n const [, left] = getColumnPosition(props, columnIndex, unref(cache))\n const _cache = unref(cache)\n\n const rtl = isRTL(direction)\n const [height, top] = getRowPosition(props, rowIndex, _cache)\n const [width] = getColumnPosition(props, columnIndex, _cache)\n\n itemStyleCache[key] = {\n position: 'absolute',\n left: rtl ? undefined : `${left}px`,\n right: rtl ? `${left}px` : undefined,\n top: `${top}px`,\n height: `${height}px`,\n width: `${width}px`,\n }\n\n return itemStyleCache[key]\n }\n }\n\n // TODO: debounce setting is scrolling.\n\n const resetIsScrolling = () => {\n // timer = null\n\n states.value.isScrolling = false\n nextTick(() => {\n getItemStyleCache.value(-1, null, null)\n })\n }\n\n // life cycles\n onMounted(() => {\n // for SSR\n if (!isClient) return\n const { initScrollLeft, initScrollTop } = props\n const windowElement = unref(windowRef)\n if (windowElement) {\n if (isNumber(initScrollLeft)) {\n windowElement.scrollLeft = initScrollLeft\n }\n if (isNumber(initScrollTop)) {\n windowElement.scrollTop = initScrollTop\n }\n }\n emitEvents()\n })\n\n const onUpdated = () => {\n const { direction } = props\n const { scrollLeft, scrollTop, updateRequested } = unref(states)\n\n const windowElement = unref(windowRef)\n if (updateRequested && windowElement) {\n if (direction === RTL) {\n switch (getRTLOffsetType()) {\n case RTL_OFFSET_NAG: {\n windowElement.scrollLeft = -scrollLeft\n break\n }\n case RTL_OFFSET_POS_ASC: {\n windowElement.scrollLeft = scrollLeft\n break\n }\n default: {\n const { clientWidth, scrollWidth } = windowElement\n windowElement.scrollLeft =\n scrollWidth - clientWidth - scrollLeft\n break\n }\n }\n } else {\n windowElement.scrollLeft = Math.max(0, scrollLeft)\n }\n\n windowElement.scrollTop = Math.max(0, scrollTop)\n }\n }\n\n const { resetAfterColumnIndex, resetAfterRowIndex, resetAfter } =\n instance.proxy as any\n\n expose({\n windowRef,\n innerRef,\n getItemStyleCache,\n scrollTo,\n scrollToItem,\n states,\n resetAfterColumnIndex,\n resetAfterRowIndex,\n resetAfter,\n })\n\n // rendering part\n\n const renderScrollbars = () => {\n const {\n scrollbarAlwaysOn,\n scrollbarStartGap,\n scrollbarEndGap,\n totalColumn,\n totalRow,\n } = props\n\n const width = unref(parsedWidth)\n const height = unref(parsedHeight)\n const estimatedWidth = unref(estimatedTotalWidth)\n const estimatedHeight = unref(estimatedTotalHeight)\n const { scrollLeft, scrollTop } = unref(states)\n const horizontalScrollbar = h(Scrollbar, {\n ref: hScrollbar,\n alwaysOn: scrollbarAlwaysOn,\n startGap: scrollbarStartGap,\n endGap: scrollbarEndGap,\n class: ns.e('horizontal'),\n clientSize: width,\n layout: 'horizontal',\n onScroll: onHorizontalScroll,\n ratio: (width * 100) / estimatedWidth,\n scrollFrom: scrollLeft / (estimatedWidth - width),\n total: totalRow,\n visible: true,\n })\n\n const verticalScrollbar = h(Scrollbar, {\n ref: vScrollbar,\n alwaysOn: scrollbarAlwaysOn,\n startGap: scrollbarStartGap,\n endGap: scrollbarEndGap,\n class: ns.e('vertical'),\n clientSize: height,\n layout: 'vertical',\n onScroll: onVerticalScroll,\n ratio: (height * 100) / estimatedHeight,\n scrollFrom: scrollTop / (estimatedHeight - height),\n\n total: totalColumn,\n visible: true,\n })\n\n return {\n horizontalScrollbar,\n verticalScrollbar,\n }\n }\n\n const renderItems = () => {\n const [columnStart, columnEnd] = unref(columnsToRender)\n const [rowStart, rowEnd] = unref(rowsToRender)\n const { data, totalColumn, totalRow, useIsScrolling, itemKey } = props\n const children: VNodeChild[] = []\n if (totalRow > 0 && totalColumn > 0) {\n for (let row = rowStart; row <= rowEnd; row++) {\n for (let column = columnStart; column <= columnEnd; column++) {\n const key = itemKey({ columnIndex: column, data, rowIndex: row })\n children.push(\n h(\n Fragment,\n { key },\n slots.default?.({\n columnIndex: column,\n data,\n isScrolling: useIsScrolling\n ? unref(states).isScrolling\n : undefined,\n style: getItemStyle(row, column),\n rowIndex: row,\n })\n )\n )\n }\n }\n }\n return children\n }\n\n const renderInner = () => {\n const Inner = resolveDynamicComponent(props.innerElement) as VNode\n const children = renderItems()\n return [\n h(\n Inner,\n {\n style: unref(innerStyle),\n ref: innerRef,\n },\n !isString(Inner)\n ? {\n default: () => children,\n }\n : children\n ),\n ]\n }\n\n const renderWindow = () => {\n const Container = resolveDynamicComponent(\n props.containerElement\n ) as VNode\n const { horizontalScrollbar, verticalScrollbar } = renderScrollbars()\n const Inner = renderInner()\n\n return h(\n 'div',\n {\n key: 0,\n class: ns.e('wrapper'),\n role: props.role,\n },\n [\n h(\n Container,\n {\n class: props.className,\n style: unref(windowStyle),\n onScroll,\n ref: windowRef,\n },\n !isString(Container) ? { default: () => Inner } : Inner\n ),\n horizontalScrollbar,\n verticalScrollbar,\n ]\n )\n }\n\n return renderWindow\n },\n })\n}\n\nexport default createGrid\n\ntype Dir = typeof FORWARD | typeof BACKWARD\n\nexport type GridInstance = InstanceType<ReturnType<typeof createGrid>> &\n UnwrapRef<{\n windowRef: Ref<HTMLElement>\n innerRef: Ref<HTMLElement>\n getItemStyleCache: ReturnType<typeof useCache>\n scrollTo: (scrollOptions: GridScrollOptions) => void\n scrollToItem: (\n rowIndex: number,\n columnIndex: number,\n alignment: Alignment\n ) => void\n states: Ref<{\n isScrolling: boolean\n scrollLeft: number\n scrollTop: number\n updateRequested: boolean\n xAxisScrollDir: Dir\n yAxisScrollDir: Dir\n }>\n }>\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}