@react-stately/layout 3.7.1-nightly.3458 → 3.7.2-nightly.3469
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/main.js +19 -4
- package/dist/main.js.map +1 -1
- package/dist/module.js +19 -4
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/TableLayout.ts +24 -4
package/dist/main.js
CHANGED
|
@@ -465,7 +465,7 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends $fe69e47e38ed0ac4$export
|
|
|
465
465
|
let { height: height , isEstimated: isEstimated } = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);
|
|
466
466
|
let rect = new $cMJQZ$reactstatelyvirtualizer.Rect(x, y, width, height);
|
|
467
467
|
let layoutInfo = new $cMJQZ$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
|
|
468
|
-
layoutInfo.isSticky = (ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell;
|
|
468
|
+
layoutInfo.isSticky = !this.disableSticky && ((ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell);
|
|
469
469
|
layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
|
|
470
470
|
layoutInfo.estimatedSize = isEstimated;
|
|
471
471
|
return {
|
|
@@ -490,7 +490,7 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends $fe69e47e38ed0ac4$export
|
|
|
490
490
|
let rect = new $cMJQZ$reactstatelyvirtualizer.Rect(40, Math.max(y, 40), (width || this.virtualizer.visibleRect.width) - 80, children.length === 0 ? this.virtualizer.visibleRect.height - 80 : 60);
|
|
491
491
|
let loader = new $cMJQZ$reactstatelyvirtualizer.LayoutInfo('loader', 'loader', rect);
|
|
492
492
|
loader.parentKey = 'body';
|
|
493
|
-
loader.isSticky = children.length === 0;
|
|
493
|
+
loader.isSticky = !this.disableSticky && children.length === 0;
|
|
494
494
|
this.layoutInfos.set('loader', loader);
|
|
495
495
|
children.push({
|
|
496
496
|
layoutInfo: loader
|
|
@@ -501,7 +501,7 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends $fe69e47e38ed0ac4$export
|
|
|
501
501
|
let rect = new $cMJQZ$reactstatelyvirtualizer.Rect(40, Math.max(y, 40), this.virtualizer.visibleRect.width - 80, this.virtualizer.visibleRect.height - 80);
|
|
502
502
|
let empty = new $cMJQZ$reactstatelyvirtualizer.LayoutInfo('empty', 'empty', rect);
|
|
503
503
|
empty.parentKey = 'body';
|
|
504
|
-
empty.isSticky =
|
|
504
|
+
empty.isSticky = !this.disableSticky;
|
|
505
505
|
this.layoutInfos.set('empty', empty);
|
|
506
506
|
children.push({
|
|
507
507
|
layoutInfo: empty
|
|
@@ -557,7 +557,7 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends $fe69e47e38ed0ac4$export
|
|
|
557
557
|
let { height: height , isEstimated: isEstimated } = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);
|
|
558
558
|
let rect = new $cMJQZ$reactstatelyvirtualizer.Rect(x, y, width, height);
|
|
559
559
|
let layoutInfo = new $cMJQZ$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
|
|
560
|
-
layoutInfo.isSticky = (ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell;
|
|
560
|
+
layoutInfo.isSticky = !this.disableSticky && ((ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell);
|
|
561
561
|
layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
|
|
562
562
|
layoutInfo.estimatedSize = isEstimated;
|
|
563
563
|
return {
|
|
@@ -682,6 +682,20 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends $fe69e47e38ed0ac4$export
|
|
|
682
682
|
if (this.wasLoading) res.transform = null;
|
|
683
683
|
return res;
|
|
684
684
|
}
|
|
685
|
+
// Checks if Chrome version is 105 or greater
|
|
686
|
+
checkChrome105() {
|
|
687
|
+
var ref;
|
|
688
|
+
if (typeof window === 'undefined' || window.navigator == null) return false;
|
|
689
|
+
let isChrome105;
|
|
690
|
+
if (window.navigator['userAgentData']) isChrome105 = (ref = window.navigator['userAgentData']) === null || ref === void 0 ? void 0 : ref.brands.some((b)=>b.brand === 'Chromium' && Number(b.version) >= 105
|
|
691
|
+
);
|
|
692
|
+
else {
|
|
693
|
+
let regex = /Chrome\/(\d+)/;
|
|
694
|
+
let matches = regex.exec(window.navigator.userAgent);
|
|
695
|
+
isChrome105 = matches && matches.length >= 2 && Number(matches[1]) >= 105;
|
|
696
|
+
}
|
|
697
|
+
return isChrome105;
|
|
698
|
+
}
|
|
685
699
|
constructor(options){
|
|
686
700
|
super(options);
|
|
687
701
|
this.wasLoading = false;
|
|
@@ -689,6 +703,7 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends $fe69e47e38ed0ac4$export
|
|
|
689
703
|
this.lastPersistedKeys = null;
|
|
690
704
|
this.persistedIndices = new Map();
|
|
691
705
|
this.stickyColumnIndices = [];
|
|
706
|
+
this.disableSticky = this.checkChrome105();
|
|
692
707
|
}
|
|
693
708
|
}
|
|
694
709
|
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/@react-stately/layout/src/index.ts","packages/@react-stately/layout/src/ListLayout.ts","packages/@react-stately/layout/src/TableLayout.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nexport type {ListLayoutOptions, LayoutNode} from './ListLayout';\nexport {ListLayout} from './ListLayout';\nexport {TableLayout} from './TableLayout';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DropTarget, DropTargetDelegate, KeyboardDelegate, Node} from '@react-types/shared';\nimport {InvalidationContext, Layout, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {Key} from 'react';\n// import { DragTarget, DropTarget, DropPosition } from '@react-types/shared';\n\nexport type ListLayoutOptions<T> = {\n /** The height of a row in px. */\n rowHeight?: number,\n estimatedRowHeight?: number,\n headingHeight?: number,\n estimatedHeadingHeight?: number,\n padding?: number,\n indentationForItem?: (collection: Collection<Node<T>>, key: Key) => number,\n collator?: Intl.Collator,\n loaderHeight?: number,\n placeholderHeight?: number,\n allowDisabledKeyFocus?: boolean\n};\n\n// A wrapper around LayoutInfo that supports hierarchy\nexport interface LayoutNode {\n node?: Node<unknown>,\n layoutInfo: LayoutInfo,\n header?: LayoutInfo,\n children?: LayoutNode[]\n}\n\nconst DEFAULT_HEIGHT = 48;\n\n/**\n * The ListLayout class is an implementation of a collection view {@link Layout}\n * it is used for creating lists and lists with indented sub-lists.\n *\n * To configure a ListLayout, you can use the properties to define the\n * layouts and/or use the method for defining indentation.\n * The {@link ListKeyboardDelegate} extends the existing collection view\n * delegate with an additional method to do this (it uses the same delegate object as\n * the collection view itself).\n */\nexport class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate, DropTargetDelegate {\n protected rowHeight: number;\n protected estimatedRowHeight: number;\n protected headingHeight: number;\n protected estimatedHeadingHeight: number;\n protected padding: number;\n protected indentationForItem?: (collection: Collection<Node<T>>, key: Key) => number;\n protected layoutInfos: Map<Key, LayoutInfo>;\n protected layoutNodes: Map<Key, LayoutNode>;\n protected contentSize: Size;\n collection: Collection<Node<T>>;\n disabledKeys: Set<Key> = new Set();\n allowDisabledKeyFocus: boolean = false;\n isLoading: boolean;\n protected lastWidth: number;\n protected lastCollection: Collection<Node<T>>;\n protected rootNodes: LayoutNode[];\n protected collator: Intl.Collator;\n protected invalidateEverything: boolean;\n protected loaderHeight: number;\n protected placeholderHeight: number;\n\n /**\n * Creates a new ListLayout with options. See the list of properties below for a description\n * of the options that can be provided.\n */\n constructor(options: ListLayoutOptions<T> = {}) {\n super();\n this.rowHeight = options.rowHeight;\n this.estimatedRowHeight = options.estimatedRowHeight;\n this.headingHeight = options.headingHeight;\n this.estimatedHeadingHeight = options.estimatedHeadingHeight;\n this.padding = options.padding || 0;\n this.indentationForItem = options.indentationForItem;\n this.collator = options.collator;\n this.loaderHeight = options.loaderHeight;\n this.placeholderHeight = options.placeholderHeight;\n this.layoutInfos = new Map();\n this.layoutNodes = new Map();\n this.rootNodes = [];\n this.lastWidth = 0;\n this.lastCollection = null;\n this.allowDisabledKeyFocus = options.allowDisabledKeyFocus;\n }\n\n getLayoutInfo(key: Key) {\n return this.layoutInfos.get(key);\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n let addNodes = (nodes: LayoutNode[]) => {\n for (let node of nodes) {\n if (this.isVisible(node, rect)) {\n res.push(node.layoutInfo);\n if (node.header) {\n res.push(node.header);\n }\n\n if (node.children) {\n addNodes(node.children);\n }\n }\n }\n };\n\n addNodes(this.rootNodes);\n return res;\n }\n\n isVisible(node: LayoutNode, rect: Rect) {\n return node.layoutInfo.rect.intersects(rect) || node.layoutInfo.isSticky || this.virtualizer.isPersistedKey(node.layoutInfo.key);\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n // Invalidate cache if the size of the collection changed.\n // In this case, we need to recalculate the entire layout.\n this.invalidateEverything = invalidationContext.sizeChanged;\n\n this.collection = this.virtualizer.collection;\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection) {\n for (let key of this.lastCollection.getKeys()) {\n if (!this.collection.getItem(key)) {\n let layoutNode = this.layoutNodes.get(key);\n if (layoutNode) {\n this.layoutInfos.delete(layoutNode.layoutInfo.key);\n this.layoutInfos.delete(layoutNode.header?.key);\n this.layoutNodes.delete(key);\n }\n }\n }\n }\n\n this.lastWidth = this.virtualizer.visibleRect.width;\n this.lastCollection = this.collection;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let nodes = [];\n for (let node of this.collection) {\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.loaderHeight ?? this.virtualizer.visibleRect.height);\n let loader = new LayoutInfo('loader', 'loader', rect);\n this.layoutInfos.set('loader', loader);\n nodes.push({layoutInfo: loader});\n y = loader.rect.maxY;\n }\n\n if (nodes.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.placeholderHeight ?? this.virtualizer.visibleRect.height);\n let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);\n this.layoutInfos.set('placeholder', placeholder);\n nodes.push({layoutInfo: placeholder});\n y = placeholder.rect.maxY;\n }\n\n this.contentSize = new Size(this.virtualizer.visibleRect.width, y + this.padding);\n return nodes;\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n let cached = this.layoutNodes.get(node.key);\n if (!this.invalidateEverything && cached && cached.node === node && y === (cached.header || cached.layoutInfo).rect.y) {\n return cached;\n }\n\n let layoutNode = this.buildNode(node, x, y);\n layoutNode.node = node;\n\n layoutNode.layoutInfo.parentKey = node.parentKey ?? null;\n this.layoutInfos.set(layoutNode.layoutInfo.key, layoutNode.layoutInfo);\n if (layoutNode.header) {\n this.layoutInfos.set(layoutNode.header.key, layoutNode.header);\n }\n\n this.layoutNodes.set(node.key, layoutNode);\n return layoutNode;\n }\n\n buildNode(node: Node<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'section':\n return this.buildSection(node, x, y);\n case 'item':\n return this.buildItem(node, x, y);\n }\n }\n\n buildSection(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.headingHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode && previousLayoutNode.header) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.header.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.header.estimatedSize;\n } else {\n rectHeight = (node.rendered ? this.estimatedHeadingHeight : 0);\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n let headerRect = new Rect(0, y, width, rectHeight);\n let header = new LayoutInfo('header', node.key + ':header', headerRect);\n header.estimatedSize = isEstimated;\n header.parentKey = node.key;\n y += header.rect.height;\n\n let rect = new Rect(0, y, width, 0);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n\n let startY = y;\n let children = [];\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children\n };\n }\n\n buildItem(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.rowHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n rectHeight = this.estimatedRowHeight;\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n if (typeof this.indentationForItem === 'function') {\n x += this.indentationForItem(this.collection, node.key) || 0;\n }\n\n let rect = new Rect(x, y, width - x, rectHeight);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n // allow overflow so the focus ring/selection ring can extend outside to overlap with the adjacent items borders\n layoutInfo.allowOverflow = true;\n layoutInfo.estimatedSize = isEstimated;\n return {\n layoutInfo\n };\n }\n\n updateItemSize(key: Key, size: Size) {\n let layoutInfo = this.layoutInfos.get(key);\n // If no layoutInfo, item has been deleted/removed.\n if (!layoutInfo) {\n return false;\n }\n\n layoutInfo.estimatedSize = false;\n if (layoutInfo.rect.height !== size.height) {\n // Copy layout info rather than mutating so that later caches are invalidated.\n let newLayoutInfo = layoutInfo.copy();\n newLayoutInfo.rect.height = size.height;\n this.layoutInfos.set(key, newLayoutInfo);\n\n // Invalidate layout for this layout node and all parents\n this.updateLayoutNode(key, layoutInfo, newLayoutInfo);\n\n let node = this.collection.getItem(layoutInfo.parentKey);\n while (node) {\n this.updateLayoutNode(node.key, layoutInfo, newLayoutInfo);\n node = this.collection.getItem(node.parentKey);\n }\n\n return true;\n }\n\n return false;\n }\n\n updateLayoutNode(key: Key, oldLayoutInfo: LayoutInfo, newLayoutInfo: LayoutInfo) {\n let n = this.layoutNodes.get(key);\n if (n) {\n // Invalidate by clearing node.\n n.node = null;\n\n // Replace layout info in LayoutNode\n if (n.header === oldLayoutInfo) {\n n.header = newLayoutInfo;\n } else if (n.layoutInfo === oldLayoutInfo) {\n n.layoutInfo = newLayoutInfo;\n }\n }\n }\n\n getContentSize() {\n return this.contentSize;\n }\n\n getKeyAbove(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyBefore(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyAfter(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getKeyPageAbove(key: Key) {\n let layoutInfo = this.getLayoutInfo(key);\n\n if (layoutInfo) {\n let pageY = Math.max(0, layoutInfo.rect.y + layoutInfo.rect.height - this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y > pageY) {\n let keyAbove = this.getKeyAbove(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyAbove);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getFirstKey();\n }\n\n getKeyPageBelow(key: Key) {\n let layoutInfo = this.getLayoutInfo(key != null ? key : this.getFirstKey());\n\n if (layoutInfo) {\n let pageY = Math.min(this.virtualizer.contentSize.height, layoutInfo.rect.y - layoutInfo.rect.height + this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y < pageY) {\n let keyBelow = this.getKeyBelow(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyBelow);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getLastKey();\n }\n\n getFirstKey() {\n let collection = this.collection;\n let key = collection.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getLastKey() {\n let collection = this.collection;\n let key = collection.getLastKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getKeyBelow(key);\n }\n\n return null;\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n layoutInfo.opacity = 0;\n layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';\n return layoutInfo;\n }\n\n getFinalLayoutInfo(layoutInfo: LayoutInfo) {\n layoutInfo.opacity = 0;\n layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';\n return layoutInfo;\n }\n\n getDropTargetFromPoint(x: number, y: number, isValidDropTarget: (target: DropTarget) => boolean): DropTarget {\n x += this.virtualizer.visibleRect.x;\n y += this.virtualizer.visibleRect.y;\n\n let key = this.virtualizer.keyAtPoint(new Point(x, y));\n if (key == null) {\n return;\n }\n\n let layoutInfo = this.getLayoutInfo(key);\n let rect = layoutInfo.rect;\n let target: DropTarget = {\n type: 'item',\n key: layoutInfo.key,\n dropPosition: 'on'\n };\n\n // If dropping on the item isn't accepted, try the target before or after depending on the y position.\n // Otherwise, if dropping on the item is accepted, still try the before/after positions if within 10px\n // of the top or bottom of the item.\n if (!isValidDropTarget(target)) {\n if (y <= rect.y + rect.height / 2 && isValidDropTarget({...target, dropPosition: 'before'})) {\n target.dropPosition = 'before';\n } else if (isValidDropTarget({...target, dropPosition: 'after'})) {\n target.dropPosition = 'after';\n }\n } else if (y <= rect.y + 10 && isValidDropTarget({...target, dropPosition: 'before'})) {\n target.dropPosition = 'before';\n } else if (y >= rect.maxY - 10 && isValidDropTarget({...target, dropPosition: 'after'})) {\n target.dropPosition = 'after';\n }\n\n return target;\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {GridNode} from '@react-types/grid';\nimport {Key} from 'react';\nimport {LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\nimport {TableCollection} from '@react-types/table';\n\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n getColumnWidth: (key: Key) => number;\n stickyColumnIndices: number[];\n wasLoading = false;\n isLoading = false;\n lastPersistedKeys: Set<Key> = null;\n persistedIndices: Map<Key, number[]> = new Map();\n\n constructor(options: ListLayoutOptions<T>) {\n super(options);\n this.stickyColumnIndices = [];\n }\n\n\n buildCollection(): LayoutNode[] {\n // If columns changed, clear layout cache.\n if (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) => c.key !== this.lastCollection.columns[i].key)\n ) {\n // Invalidate everything in this layout pass. Will be reset in ListLayout on the next pass.\n this.invalidateEverything = true;\n }\n\n // Track whether we were previously loading. This is used to adjust the animations of async loading vs inserts.\n let loadingState = this.collection.body.props.loadingState;\n this.wasLoading = this.isLoading;\n this.isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n\n let header = this.buildHeader();\n let body = this.buildBody(0);\n this.stickyColumnIndices = this.collection.columns.filter(c => c.props.isSelectionCell || this.collection.rowHeaderColumnKeys.has(c.key)).map(c => c.index);\n this.lastPersistedKeys = null;\n\n body.layoutInfo.rect.width = Math.max(header.layoutInfo.rect.width, body.layoutInfo.rect.width);\n this.contentSize = new Size(body.layoutInfo.rect.width, body.layoutInfo.rect.maxY);\n return [\n header,\n body\n ];\n }\n\n buildHeader(): LayoutNode {\n let rect = new Rect(0, 0, 0, 0);\n let layoutInfo = new LayoutInfo('header', 'header', rect);\n\n let y = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let headerRow of this.collection.headerRows) {\n let layoutNode = this.buildChild(headerRow, 0, y);\n layoutNode.layoutInfo.parentKey = 'header';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n rect.width = width;\n rect.height = y;\n\n this.layoutInfos.set('header', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number) {\n let rect = new Rect(0, y, 0, 0);\n let row = new LayoutInfo('headerrow', headerRow.key, rect);\n\n let height = 0;\n let columns: LayoutNode[] = [];\n for (let cell of headerRow.childNodes) {\n let layoutNode = this.buildChild(cell, x, y);\n layoutNode.layoutInfo.parentKey = row.key;\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n columns.push(layoutNode);\n }\n\n this.setChildHeights(columns, height);\n\n rect.height = height;\n rect.width = x;\n\n return {\n layoutInfo: row,\n children: columns\n };\n }\n\n setChildHeights(children: LayoutNode[], height: number) {\n for (let child of children) {\n if (child.layoutInfo.rect.height !== height) {\n // Need to copy the layout info before we mutate it.\n child.layoutInfo = child.layoutInfo.copy();\n this.layoutInfos.set(child.layoutInfo.key, child.layoutInfo);\n\n child.layoutInfo.rect.height = height;\n }\n }\n }\n\n // used to get the column widths when rendering to the DOM\n getColumnWidth_(node: GridNode<T>) {\n let colspan = node.colspan ?? 1;\n let colIndex = node.colIndex ?? node.index;\n let width = 0;\n for (let i = colIndex; i < colIndex + colspan; i++) {\n let column = this.collection.columns[i];\n width += this.getColumnWidth(column.key);\n }\n\n return width;\n }\n\n getEstimatedHeight(node: GridNode<T>, width: number, height: number, estimatedHeight: number) {\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (height == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = curNode !== lastNode || width !== previousLayoutNode.layoutInfo.rect.width || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n height = estimatedHeight;\n isEstimated = true;\n }\n }\n\n return {height, isEstimated};\n }\n\n buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth_(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n buildBody(y: number): LayoutNode {\n let rect = new Rect(0, y, 0, 0);\n let layoutInfo = new LayoutInfo('rowgroup', 'body', rect);\n\n let startY = y;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let layoutNode = this.buildChild(node, 0, y);\n layoutNode.layoutInfo.parentKey = 'body';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n if (this.isLoading) {\n // Add some margin around the loader to ensure that scrollbars don't flicker in and out.\n let rect = new Rect(40, Math.max(y, 40), (width || this.virtualizer.visibleRect.width) - 80, children.length === 0 ? this.virtualizer.visibleRect.height - 80 : 60);\n let loader = new LayoutInfo('loader', 'loader', rect);\n loader.parentKey = 'body';\n loader.isSticky = children.length === 0;\n this.layoutInfos.set('loader', loader);\n children.push({layoutInfo: loader});\n y = loader.rect.maxY;\n width = Math.max(width, rect.width);\n } else if (children.length === 0) {\n let rect = new Rect(40, Math.max(y, 40), this.virtualizer.visibleRect.width - 80, this.virtualizer.visibleRect.height - 80);\n let empty = new LayoutInfo('empty', 'empty', rect);\n empty.parentKey = 'body';\n empty.isSticky = true;\n this.layoutInfos.set('empty', empty);\n children.push({layoutInfo: empty});\n y = empty.rect.maxY;\n width = Math.max(width, rect.width);\n }\n\n rect.width = width;\n rect.height = y - startY;\n\n this.layoutInfos.set('body', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildNode(node: GridNode<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'headerrow':\n return this.buildHeaderRow(node, x, y);\n case 'item':\n return this.buildRow(node, x, y);\n case 'column':\n case 'placeholder':\n return this.buildColumn(node, x, y);\n case 'cell':\n return this.buildCell(node, x, y);\n default:\n throw new Error('Unknown node type ' + node.type);\n }\n }\n\n buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let rect = new Rect(x, y, 0, 0);\n let layoutInfo = new LayoutInfo('row', node.key, rect);\n\n let children: LayoutNode[] = [];\n let height = 0;\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n children.push(layoutNode);\n }\n\n this.setChildHeights(children, height);\n\n rect.width = x;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth_(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n this.buildPersistedIndices();\n for (let node of this.rootNodes) {\n res.push(node.layoutInfo);\n this.addVisibleLayoutInfos(res, node, rect);\n }\n\n return res;\n }\n\n addVisibleLayoutInfos(res: LayoutInfo[], node: LayoutNode, rect: Rect) {\n if (!node.children || node.children.length === 0) {\n return;\n }\n\n switch (node.layoutInfo.type) {\n case 'header': {\n for (let child of node.children) {\n res.push(child.layoutInfo);\n this.addVisibleLayoutInfos(res, child, rect);\n }\n break;\n }\n case 'rowgroup': {\n let firstVisibleRow = this.binarySearch(node.children, rect.topLeft, 'y');\n let lastVisibleRow = this.binarySearch(node.children, rect.bottomRight, 'y');\n\n // Add persisted rows before the visible rows.\n let persistedRowIndices = this.persistedIndices.get(node.layoutInfo.key);\n let persistIndex = 0;\n while (\n persistedRowIndices &&\n persistIndex < persistedRowIndices.length &&\n persistedRowIndices[persistIndex] < firstVisibleRow\n ) {\n let idx = persistedRowIndices[persistIndex];\n res.push(node.children[idx].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[idx], rect);\n persistIndex++;\n }\n\n for (let i = firstVisibleRow; i <= lastVisibleRow; i++) {\n // Skip persisted rows that overlap with visible cells.\n while (persistedRowIndices && persistIndex < persistedRowIndices.length && persistedRowIndices[persistIndex] < i) {\n persistIndex++;\n }\n\n res.push(node.children[i].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[i], rect);\n }\n\n // Add persisted rows after the visible rows.\n while (persistedRowIndices && persistIndex < persistedRowIndices.length) {\n let idx = persistedRowIndices[persistIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n case 'headerrow':\n case 'row': {\n let firstVisibleCell = this.binarySearch(node.children, rect.topLeft, 'x');\n let lastVisibleCell = this.binarySearch(node.children, rect.topRight, 'x');\n let stickyIndex = 0;\n\n // Add persisted/sticky cells before the visible cells.\n let persistedCellIndices = this.persistedIndices.get(node.layoutInfo.key) || this.stickyColumnIndices;\n while (stickyIndex < persistedCellIndices.length && persistedCellIndices[stickyIndex] < firstVisibleCell) {\n let idx = persistedCellIndices[stickyIndex];\n res.push(node.children[idx].layoutInfo);\n stickyIndex++;\n }\n\n for (let i = firstVisibleCell; i <= lastVisibleCell; i++) {\n // Skip sticky cells that overlap with visible cells.\n while (stickyIndex < persistedCellIndices.length && persistedCellIndices[stickyIndex] < i) {\n stickyIndex++;\n }\n\n res.push(node.children[i].layoutInfo);\n }\n\n // Add any remaining sticky cells after the visible cells.\n while (stickyIndex < persistedCellIndices.length) {\n let idx = persistedCellIndices[stickyIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n default:\n throw new Error('Unknown node type ' + node.layoutInfo.type);\n }\n }\n\n binarySearch(items: LayoutNode[], point: Point, axis: 'x' | 'y') {\n let low = 0;\n let high = items.length - 1;\n while (low <= high) {\n let mid = (low + high) >> 1;\n let item = items[mid];\n\n if ((axis === 'x' && item.layoutInfo.rect.maxX < point.x) || (axis === 'y' && item.layoutInfo.rect.maxY < point.y)) {\n low = mid + 1;\n } else if ((axis === 'x' && item.layoutInfo.rect.x > point.x) || (axis === 'y' && item.layoutInfo.rect.y > point.y)) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return Math.max(0, Math.min(items.length - 1, low));\n }\n\n buildPersistedIndices() {\n if (this.virtualizer.persistedKeys === this.lastPersistedKeys) {\n return;\n }\n\n this.lastPersistedKeys = this.virtualizer.persistedKeys;\n this.persistedIndices.clear();\n\n // Build a map of parentKey => indices of children to persist.\n for (let key of this.virtualizer.persistedKeys) {\n let layoutInfo = this.layoutInfos.get(key);\n\n // Walk up ancestors so parents are also persisted if children are.\n while (layoutInfo && layoutInfo.parentKey) {\n let collectionNode = this.collection.getItem(layoutInfo.key);\n let indices = this.persistedIndices.get(layoutInfo.parentKey);\n if (!indices) {\n // stickyColumnIndices are always persisted along with any cells from persistedKeys.\n indices = collectionNode.type === 'cell' ? [...this.stickyColumnIndices] : [];\n this.persistedIndices.set(layoutInfo.parentKey, indices);\n }\n\n let index = collectionNode.index;\n if (layoutInfo.parentKey === 'body') {\n index -= this.collection.headerRows.length;\n }\n\n if (!indices.includes(index)) {\n indices.push(index);\n }\n\n layoutInfo = this.layoutInfos.get(layoutInfo.parentKey);\n }\n }\n\n for (let indices of this.persistedIndices.values()) {\n indices.sort((a, b) => a - b);\n }\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n let res = super.getInitialLayoutInfo(layoutInfo);\n\n // If this insert was the result of async loading, remove the zoom effect and just keep the fade in.\n if (this.wasLoading) {\n res.transform = null;\n }\n\n return res;\n }\n}\n"],"names":[],"version":3,"file":"main.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/@react-stately/layout/src/index.ts","packages/@react-stately/layout/src/ListLayout.ts","packages/@react-stately/layout/src/TableLayout.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nexport type {ListLayoutOptions, LayoutNode} from './ListLayout';\nexport {ListLayout} from './ListLayout';\nexport {TableLayout} from './TableLayout';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DropTarget, DropTargetDelegate, KeyboardDelegate, Node} from '@react-types/shared';\nimport {InvalidationContext, Layout, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {Key} from 'react';\n// import { DragTarget, DropTarget, DropPosition } from '@react-types/shared';\n\nexport type ListLayoutOptions<T> = {\n /** The height of a row in px. */\n rowHeight?: number,\n estimatedRowHeight?: number,\n headingHeight?: number,\n estimatedHeadingHeight?: number,\n padding?: number,\n indentationForItem?: (collection: Collection<Node<T>>, key: Key) => number,\n collator?: Intl.Collator,\n loaderHeight?: number,\n placeholderHeight?: number,\n allowDisabledKeyFocus?: boolean\n};\n\n// A wrapper around LayoutInfo that supports hierarchy\nexport interface LayoutNode {\n node?: Node<unknown>,\n layoutInfo: LayoutInfo,\n header?: LayoutInfo,\n children?: LayoutNode[]\n}\n\nconst DEFAULT_HEIGHT = 48;\n\n/**\n * The ListLayout class is an implementation of a collection view {@link Layout}\n * it is used for creating lists and lists with indented sub-lists.\n *\n * To configure a ListLayout, you can use the properties to define the\n * layouts and/or use the method for defining indentation.\n * The {@link ListKeyboardDelegate} extends the existing collection view\n * delegate with an additional method to do this (it uses the same delegate object as\n * the collection view itself).\n */\nexport class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate, DropTargetDelegate {\n protected rowHeight: number;\n protected estimatedRowHeight: number;\n protected headingHeight: number;\n protected estimatedHeadingHeight: number;\n protected padding: number;\n protected indentationForItem?: (collection: Collection<Node<T>>, key: Key) => number;\n protected layoutInfos: Map<Key, LayoutInfo>;\n protected layoutNodes: Map<Key, LayoutNode>;\n protected contentSize: Size;\n collection: Collection<Node<T>>;\n disabledKeys: Set<Key> = new Set();\n allowDisabledKeyFocus: boolean = false;\n isLoading: boolean;\n protected lastWidth: number;\n protected lastCollection: Collection<Node<T>>;\n protected rootNodes: LayoutNode[];\n protected collator: Intl.Collator;\n protected invalidateEverything: boolean;\n protected loaderHeight: number;\n protected placeholderHeight: number;\n\n /**\n * Creates a new ListLayout with options. See the list of properties below for a description\n * of the options that can be provided.\n */\n constructor(options: ListLayoutOptions<T> = {}) {\n super();\n this.rowHeight = options.rowHeight;\n this.estimatedRowHeight = options.estimatedRowHeight;\n this.headingHeight = options.headingHeight;\n this.estimatedHeadingHeight = options.estimatedHeadingHeight;\n this.padding = options.padding || 0;\n this.indentationForItem = options.indentationForItem;\n this.collator = options.collator;\n this.loaderHeight = options.loaderHeight;\n this.placeholderHeight = options.placeholderHeight;\n this.layoutInfos = new Map();\n this.layoutNodes = new Map();\n this.rootNodes = [];\n this.lastWidth = 0;\n this.lastCollection = null;\n this.allowDisabledKeyFocus = options.allowDisabledKeyFocus;\n }\n\n getLayoutInfo(key: Key) {\n return this.layoutInfos.get(key);\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n let addNodes = (nodes: LayoutNode[]) => {\n for (let node of nodes) {\n if (this.isVisible(node, rect)) {\n res.push(node.layoutInfo);\n if (node.header) {\n res.push(node.header);\n }\n\n if (node.children) {\n addNodes(node.children);\n }\n }\n }\n };\n\n addNodes(this.rootNodes);\n return res;\n }\n\n isVisible(node: LayoutNode, rect: Rect) {\n return node.layoutInfo.rect.intersects(rect) || node.layoutInfo.isSticky || this.virtualizer.isPersistedKey(node.layoutInfo.key);\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n // Invalidate cache if the size of the collection changed.\n // In this case, we need to recalculate the entire layout.\n this.invalidateEverything = invalidationContext.sizeChanged;\n\n this.collection = this.virtualizer.collection;\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection) {\n for (let key of this.lastCollection.getKeys()) {\n if (!this.collection.getItem(key)) {\n let layoutNode = this.layoutNodes.get(key);\n if (layoutNode) {\n this.layoutInfos.delete(layoutNode.layoutInfo.key);\n this.layoutInfos.delete(layoutNode.header?.key);\n this.layoutNodes.delete(key);\n }\n }\n }\n }\n\n this.lastWidth = this.virtualizer.visibleRect.width;\n this.lastCollection = this.collection;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let nodes = [];\n for (let node of this.collection) {\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.loaderHeight ?? this.virtualizer.visibleRect.height);\n let loader = new LayoutInfo('loader', 'loader', rect);\n this.layoutInfos.set('loader', loader);\n nodes.push({layoutInfo: loader});\n y = loader.rect.maxY;\n }\n\n if (nodes.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.placeholderHeight ?? this.virtualizer.visibleRect.height);\n let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);\n this.layoutInfos.set('placeholder', placeholder);\n nodes.push({layoutInfo: placeholder});\n y = placeholder.rect.maxY;\n }\n\n this.contentSize = new Size(this.virtualizer.visibleRect.width, y + this.padding);\n return nodes;\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n let cached = this.layoutNodes.get(node.key);\n if (!this.invalidateEverything && cached && cached.node === node && y === (cached.header || cached.layoutInfo).rect.y) {\n return cached;\n }\n\n let layoutNode = this.buildNode(node, x, y);\n layoutNode.node = node;\n\n layoutNode.layoutInfo.parentKey = node.parentKey ?? null;\n this.layoutInfos.set(layoutNode.layoutInfo.key, layoutNode.layoutInfo);\n if (layoutNode.header) {\n this.layoutInfos.set(layoutNode.header.key, layoutNode.header);\n }\n\n this.layoutNodes.set(node.key, layoutNode);\n return layoutNode;\n }\n\n buildNode(node: Node<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'section':\n return this.buildSection(node, x, y);\n case 'item':\n return this.buildItem(node, x, y);\n }\n }\n\n buildSection(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.headingHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode && previousLayoutNode.header) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.header.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.header.estimatedSize;\n } else {\n rectHeight = (node.rendered ? this.estimatedHeadingHeight : 0);\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n let headerRect = new Rect(0, y, width, rectHeight);\n let header = new LayoutInfo('header', node.key + ':header', headerRect);\n header.estimatedSize = isEstimated;\n header.parentKey = node.key;\n y += header.rect.height;\n\n let rect = new Rect(0, y, width, 0);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n\n let startY = y;\n let children = [];\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children\n };\n }\n\n buildItem(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.rowHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n rectHeight = this.estimatedRowHeight;\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n if (typeof this.indentationForItem === 'function') {\n x += this.indentationForItem(this.collection, node.key) || 0;\n }\n\n let rect = new Rect(x, y, width - x, rectHeight);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n // allow overflow so the focus ring/selection ring can extend outside to overlap with the adjacent items borders\n layoutInfo.allowOverflow = true;\n layoutInfo.estimatedSize = isEstimated;\n return {\n layoutInfo\n };\n }\n\n updateItemSize(key: Key, size: Size) {\n let layoutInfo = this.layoutInfos.get(key);\n // If no layoutInfo, item has been deleted/removed.\n if (!layoutInfo) {\n return false;\n }\n\n layoutInfo.estimatedSize = false;\n if (layoutInfo.rect.height !== size.height) {\n // Copy layout info rather than mutating so that later caches are invalidated.\n let newLayoutInfo = layoutInfo.copy();\n newLayoutInfo.rect.height = size.height;\n this.layoutInfos.set(key, newLayoutInfo);\n\n // Invalidate layout for this layout node and all parents\n this.updateLayoutNode(key, layoutInfo, newLayoutInfo);\n\n let node = this.collection.getItem(layoutInfo.parentKey);\n while (node) {\n this.updateLayoutNode(node.key, layoutInfo, newLayoutInfo);\n node = this.collection.getItem(node.parentKey);\n }\n\n return true;\n }\n\n return false;\n }\n\n updateLayoutNode(key: Key, oldLayoutInfo: LayoutInfo, newLayoutInfo: LayoutInfo) {\n let n = this.layoutNodes.get(key);\n if (n) {\n // Invalidate by clearing node.\n n.node = null;\n\n // Replace layout info in LayoutNode\n if (n.header === oldLayoutInfo) {\n n.header = newLayoutInfo;\n } else if (n.layoutInfo === oldLayoutInfo) {\n n.layoutInfo = newLayoutInfo;\n }\n }\n }\n\n getContentSize() {\n return this.contentSize;\n }\n\n getKeyAbove(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyBefore(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyAfter(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getKeyPageAbove(key: Key) {\n let layoutInfo = this.getLayoutInfo(key);\n\n if (layoutInfo) {\n let pageY = Math.max(0, layoutInfo.rect.y + layoutInfo.rect.height - this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y > pageY) {\n let keyAbove = this.getKeyAbove(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyAbove);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getFirstKey();\n }\n\n getKeyPageBelow(key: Key) {\n let layoutInfo = this.getLayoutInfo(key != null ? key : this.getFirstKey());\n\n if (layoutInfo) {\n let pageY = Math.min(this.virtualizer.contentSize.height, layoutInfo.rect.y - layoutInfo.rect.height + this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y < pageY) {\n let keyBelow = this.getKeyBelow(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyBelow);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getLastKey();\n }\n\n getFirstKey() {\n let collection = this.collection;\n let key = collection.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getLastKey() {\n let collection = this.collection;\n let key = collection.getLastKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getKeyBelow(key);\n }\n\n return null;\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n layoutInfo.opacity = 0;\n layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';\n return layoutInfo;\n }\n\n getFinalLayoutInfo(layoutInfo: LayoutInfo) {\n layoutInfo.opacity = 0;\n layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';\n return layoutInfo;\n }\n\n getDropTargetFromPoint(x: number, y: number, isValidDropTarget: (target: DropTarget) => boolean): DropTarget {\n x += this.virtualizer.visibleRect.x;\n y += this.virtualizer.visibleRect.y;\n\n let key = this.virtualizer.keyAtPoint(new Point(x, y));\n if (key == null) {\n return;\n }\n\n let layoutInfo = this.getLayoutInfo(key);\n let rect = layoutInfo.rect;\n let target: DropTarget = {\n type: 'item',\n key: layoutInfo.key,\n dropPosition: 'on'\n };\n\n // If dropping on the item isn't accepted, try the target before or after depending on the y position.\n // Otherwise, if dropping on the item is accepted, still try the before/after positions if within 10px\n // of the top or bottom of the item.\n if (!isValidDropTarget(target)) {\n if (y <= rect.y + rect.height / 2 && isValidDropTarget({...target, dropPosition: 'before'})) {\n target.dropPosition = 'before';\n } else if (isValidDropTarget({...target, dropPosition: 'after'})) {\n target.dropPosition = 'after';\n }\n } else if (y <= rect.y + 10 && isValidDropTarget({...target, dropPosition: 'before'})) {\n target.dropPosition = 'before';\n } else if (y >= rect.maxY - 10 && isValidDropTarget({...target, dropPosition: 'after'})) {\n target.dropPosition = 'after';\n }\n\n return target;\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {GridNode} from '@react-types/grid';\nimport {Key} from 'react';\nimport {LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\nimport {TableCollection} from '@react-types/table';\n\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n getColumnWidth: (key: Key) => number;\n stickyColumnIndices: number[];\n wasLoading = false;\n isLoading = false;\n lastPersistedKeys: Set<Key> = null;\n persistedIndices: Map<Key, number[]> = new Map();\n private disableSticky: boolean;\n\n constructor(options: ListLayoutOptions<T>) {\n super(options);\n this.stickyColumnIndices = [];\n this.disableSticky = this.checkChrome105();\n }\n\n\n buildCollection(): LayoutNode[] {\n // If columns changed, clear layout cache.\n if (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) => c.key !== this.lastCollection.columns[i].key)\n ) {\n // Invalidate everything in this layout pass. Will be reset in ListLayout on the next pass.\n this.invalidateEverything = true;\n }\n\n // Track whether we were previously loading. This is used to adjust the animations of async loading vs inserts.\n let loadingState = this.collection.body.props.loadingState;\n this.wasLoading = this.isLoading;\n this.isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n\n let header = this.buildHeader();\n let body = this.buildBody(0);\n this.stickyColumnIndices = this.collection.columns.filter(c => c.props.isSelectionCell || this.collection.rowHeaderColumnKeys.has(c.key)).map(c => c.index);\n this.lastPersistedKeys = null;\n\n body.layoutInfo.rect.width = Math.max(header.layoutInfo.rect.width, body.layoutInfo.rect.width);\n this.contentSize = new Size(body.layoutInfo.rect.width, body.layoutInfo.rect.maxY);\n return [\n header,\n body\n ];\n }\n\n buildHeader(): LayoutNode {\n let rect = new Rect(0, 0, 0, 0);\n let layoutInfo = new LayoutInfo('header', 'header', rect);\n\n let y = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let headerRow of this.collection.headerRows) {\n let layoutNode = this.buildChild(headerRow, 0, y);\n layoutNode.layoutInfo.parentKey = 'header';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n rect.width = width;\n rect.height = y;\n\n this.layoutInfos.set('header', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number) {\n let rect = new Rect(0, y, 0, 0);\n let row = new LayoutInfo('headerrow', headerRow.key, rect);\n\n let height = 0;\n let columns: LayoutNode[] = [];\n for (let cell of headerRow.childNodes) {\n let layoutNode = this.buildChild(cell, x, y);\n layoutNode.layoutInfo.parentKey = row.key;\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n columns.push(layoutNode);\n }\n\n this.setChildHeights(columns, height);\n\n rect.height = height;\n rect.width = x;\n\n return {\n layoutInfo: row,\n children: columns\n };\n }\n\n setChildHeights(children: LayoutNode[], height: number) {\n for (let child of children) {\n if (child.layoutInfo.rect.height !== height) {\n // Need to copy the layout info before we mutate it.\n child.layoutInfo = child.layoutInfo.copy();\n this.layoutInfos.set(child.layoutInfo.key, child.layoutInfo);\n\n child.layoutInfo.rect.height = height;\n }\n }\n }\n\n // used to get the column widths when rendering to the DOM\n getColumnWidth_(node: GridNode<T>) {\n let colspan = node.colspan ?? 1;\n let colIndex = node.colIndex ?? node.index;\n let width = 0;\n for (let i = colIndex; i < colIndex + colspan; i++) {\n let column = this.collection.columns[i];\n width += this.getColumnWidth(column.key);\n }\n\n return width;\n }\n\n getEstimatedHeight(node: GridNode<T>, width: number, height: number, estimatedHeight: number) {\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (height == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = curNode !== lastNode || width !== previousLayoutNode.layoutInfo.rect.width || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n height = estimatedHeight;\n isEstimated = true;\n }\n }\n\n return {height, isEstimated};\n }\n\n buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth_(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = !this.disableSticky && node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n buildBody(y: number): LayoutNode {\n let rect = new Rect(0, y, 0, 0);\n let layoutInfo = new LayoutInfo('rowgroup', 'body', rect);\n\n let startY = y;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let layoutNode = this.buildChild(node, 0, y);\n layoutNode.layoutInfo.parentKey = 'body';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n if (this.isLoading) {\n // Add some margin around the loader to ensure that scrollbars don't flicker in and out.\n let rect = new Rect(40, Math.max(y, 40), (width || this.virtualizer.visibleRect.width) - 80, children.length === 0 ? this.virtualizer.visibleRect.height - 80 : 60);\n let loader = new LayoutInfo('loader', 'loader', rect);\n loader.parentKey = 'body';\n loader.isSticky = !this.disableSticky && children.length === 0;\n this.layoutInfos.set('loader', loader);\n children.push({layoutInfo: loader});\n y = loader.rect.maxY;\n width = Math.max(width, rect.width);\n } else if (children.length === 0) {\n let rect = new Rect(40, Math.max(y, 40), this.virtualizer.visibleRect.width - 80, this.virtualizer.visibleRect.height - 80);\n let empty = new LayoutInfo('empty', 'empty', rect);\n empty.parentKey = 'body';\n empty.isSticky = !this.disableSticky;\n this.layoutInfos.set('empty', empty);\n children.push({layoutInfo: empty});\n y = empty.rect.maxY;\n width = Math.max(width, rect.width);\n }\n\n rect.width = width;\n rect.height = y - startY;\n\n this.layoutInfos.set('body', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildNode(node: GridNode<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'headerrow':\n return this.buildHeaderRow(node, x, y);\n case 'item':\n return this.buildRow(node, x, y);\n case 'column':\n case 'placeholder':\n return this.buildColumn(node, x, y);\n case 'cell':\n return this.buildCell(node, x, y);\n default:\n throw new Error('Unknown node type ' + node.type);\n }\n }\n\n buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let rect = new Rect(x, y, 0, 0);\n let layoutInfo = new LayoutInfo('row', node.key, rect);\n\n let children: LayoutNode[] = [];\n let height = 0;\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n children.push(layoutNode);\n }\n\n this.setChildHeights(children, height);\n\n rect.width = x;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth_(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = !this.disableSticky && node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n this.buildPersistedIndices();\n for (let node of this.rootNodes) {\n res.push(node.layoutInfo);\n this.addVisibleLayoutInfos(res, node, rect);\n }\n\n return res;\n }\n\n addVisibleLayoutInfos(res: LayoutInfo[], node: LayoutNode, rect: Rect) {\n if (!node.children || node.children.length === 0) {\n return;\n }\n\n switch (node.layoutInfo.type) {\n case 'header': {\n for (let child of node.children) {\n res.push(child.layoutInfo);\n this.addVisibleLayoutInfos(res, child, rect);\n }\n break;\n }\n case 'rowgroup': {\n let firstVisibleRow = this.binarySearch(node.children, rect.topLeft, 'y');\n let lastVisibleRow = this.binarySearch(node.children, rect.bottomRight, 'y');\n\n // Add persisted rows before the visible rows.\n let persistedRowIndices = this.persistedIndices.get(node.layoutInfo.key);\n let persistIndex = 0;\n while (\n persistedRowIndices &&\n persistIndex < persistedRowIndices.length &&\n persistedRowIndices[persistIndex] < firstVisibleRow\n ) {\n let idx = persistedRowIndices[persistIndex];\n res.push(node.children[idx].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[idx], rect);\n persistIndex++;\n }\n\n for (let i = firstVisibleRow; i <= lastVisibleRow; i++) {\n // Skip persisted rows that overlap with visible cells.\n while (persistedRowIndices && persistIndex < persistedRowIndices.length && persistedRowIndices[persistIndex] < i) {\n persistIndex++;\n }\n\n res.push(node.children[i].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[i], rect);\n }\n\n // Add persisted rows after the visible rows.\n while (persistedRowIndices && persistIndex < persistedRowIndices.length) {\n let idx = persistedRowIndices[persistIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n case 'headerrow':\n case 'row': {\n let firstVisibleCell = this.binarySearch(node.children, rect.topLeft, 'x');\n let lastVisibleCell = this.binarySearch(node.children, rect.topRight, 'x');\n let stickyIndex = 0;\n\n // Add persisted/sticky cells before the visible cells.\n let persistedCellIndices = this.persistedIndices.get(node.layoutInfo.key) || this.stickyColumnIndices;\n while (stickyIndex < persistedCellIndices.length && persistedCellIndices[stickyIndex] < firstVisibleCell) {\n let idx = persistedCellIndices[stickyIndex];\n res.push(node.children[idx].layoutInfo);\n stickyIndex++;\n }\n\n for (let i = firstVisibleCell; i <= lastVisibleCell; i++) {\n // Skip sticky cells that overlap with visible cells.\n while (stickyIndex < persistedCellIndices.length && persistedCellIndices[stickyIndex] < i) {\n stickyIndex++;\n }\n\n res.push(node.children[i].layoutInfo);\n }\n\n // Add any remaining sticky cells after the visible cells.\n while (stickyIndex < persistedCellIndices.length) {\n let idx = persistedCellIndices[stickyIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n default:\n throw new Error('Unknown node type ' + node.layoutInfo.type);\n }\n }\n\n binarySearch(items: LayoutNode[], point: Point, axis: 'x' | 'y') {\n let low = 0;\n let high = items.length - 1;\n while (low <= high) {\n let mid = (low + high) >> 1;\n let item = items[mid];\n\n if ((axis === 'x' && item.layoutInfo.rect.maxX < point.x) || (axis === 'y' && item.layoutInfo.rect.maxY < point.y)) {\n low = mid + 1;\n } else if ((axis === 'x' && item.layoutInfo.rect.x > point.x) || (axis === 'y' && item.layoutInfo.rect.y > point.y)) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return Math.max(0, Math.min(items.length - 1, low));\n }\n\n buildPersistedIndices() {\n if (this.virtualizer.persistedKeys === this.lastPersistedKeys) {\n return;\n }\n\n this.lastPersistedKeys = this.virtualizer.persistedKeys;\n this.persistedIndices.clear();\n\n // Build a map of parentKey => indices of children to persist.\n for (let key of this.virtualizer.persistedKeys) {\n let layoutInfo = this.layoutInfos.get(key);\n\n // Walk up ancestors so parents are also persisted if children are.\n while (layoutInfo && layoutInfo.parentKey) {\n let collectionNode = this.collection.getItem(layoutInfo.key);\n let indices = this.persistedIndices.get(layoutInfo.parentKey);\n if (!indices) {\n // stickyColumnIndices are always persisted along with any cells from persistedKeys.\n indices = collectionNode.type === 'cell' ? [...this.stickyColumnIndices] : [];\n this.persistedIndices.set(layoutInfo.parentKey, indices);\n }\n\n let index = collectionNode.index;\n if (layoutInfo.parentKey === 'body') {\n index -= this.collection.headerRows.length;\n }\n\n if (!indices.includes(index)) {\n indices.push(index);\n }\n\n layoutInfo = this.layoutInfos.get(layoutInfo.parentKey);\n }\n }\n\n for (let indices of this.persistedIndices.values()) {\n indices.sort((a, b) => a - b);\n }\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n let res = super.getInitialLayoutInfo(layoutInfo);\n\n // If this insert was the result of async loading, remove the zoom effect and just keep the fade in.\n if (this.wasLoading) {\n res.transform = null;\n }\n\n return res;\n }\n\n // Checks if Chrome version is 105 or greater\n private checkChrome105() {\n if (typeof window === 'undefined' || window.navigator == null) {\n return false;\n }\n\n let isChrome105;\n if (window.navigator['userAgentData']) {\n isChrome105 = window.navigator['userAgentData']?.brands.some(b => b.brand === 'Chromium' && Number(b.version) >= 105);\n } else {\n let regex = /Chrome\\/(\\d+)/;\n let matches = regex.exec(window.navigator.userAgent);\n isChrome105 = matches && matches.length >= 2 && Number(matches[1]) >= 105;\n }\n\n return isChrome105;\n }\n}\n"],"names":[],"version":3,"file":"main.js.map"}
|
package/dist/module.js
CHANGED
|
@@ -459,7 +459,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends $61ef60fc9b1041f4$export
|
|
|
459
459
|
let { height: height , isEstimated: isEstimated } = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);
|
|
460
460
|
let rect = new $gtW1T$Rect(x, y, width, height);
|
|
461
461
|
let layoutInfo = new $gtW1T$LayoutInfo(node.type, node.key, rect);
|
|
462
|
-
layoutInfo.isSticky = (ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell;
|
|
462
|
+
layoutInfo.isSticky = !this.disableSticky && ((ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell);
|
|
463
463
|
layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
|
|
464
464
|
layoutInfo.estimatedSize = isEstimated;
|
|
465
465
|
return {
|
|
@@ -484,7 +484,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends $61ef60fc9b1041f4$export
|
|
|
484
484
|
let rect = new $gtW1T$Rect(40, Math.max(y, 40), (width || this.virtualizer.visibleRect.width) - 80, children.length === 0 ? this.virtualizer.visibleRect.height - 80 : 60);
|
|
485
485
|
let loader = new $gtW1T$LayoutInfo('loader', 'loader', rect);
|
|
486
486
|
loader.parentKey = 'body';
|
|
487
|
-
loader.isSticky = children.length === 0;
|
|
487
|
+
loader.isSticky = !this.disableSticky && children.length === 0;
|
|
488
488
|
this.layoutInfos.set('loader', loader);
|
|
489
489
|
children.push({
|
|
490
490
|
layoutInfo: loader
|
|
@@ -495,7 +495,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends $61ef60fc9b1041f4$export
|
|
|
495
495
|
let rect = new $gtW1T$Rect(40, Math.max(y, 40), this.virtualizer.visibleRect.width - 80, this.virtualizer.visibleRect.height - 80);
|
|
496
496
|
let empty = new $gtW1T$LayoutInfo('empty', 'empty', rect);
|
|
497
497
|
empty.parentKey = 'body';
|
|
498
|
-
empty.isSticky =
|
|
498
|
+
empty.isSticky = !this.disableSticky;
|
|
499
499
|
this.layoutInfos.set('empty', empty);
|
|
500
500
|
children.push({
|
|
501
501
|
layoutInfo: empty
|
|
@@ -551,7 +551,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends $61ef60fc9b1041f4$export
|
|
|
551
551
|
let { height: height , isEstimated: isEstimated } = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);
|
|
552
552
|
let rect = new $gtW1T$Rect(x, y, width, height);
|
|
553
553
|
let layoutInfo = new $gtW1T$LayoutInfo(node.type, node.key, rect);
|
|
554
|
-
layoutInfo.isSticky = (ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell;
|
|
554
|
+
layoutInfo.isSticky = !this.disableSticky && ((ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell);
|
|
555
555
|
layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
|
|
556
556
|
layoutInfo.estimatedSize = isEstimated;
|
|
557
557
|
return {
|
|
@@ -676,6 +676,20 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends $61ef60fc9b1041f4$export
|
|
|
676
676
|
if (this.wasLoading) res.transform = null;
|
|
677
677
|
return res;
|
|
678
678
|
}
|
|
679
|
+
// Checks if Chrome version is 105 or greater
|
|
680
|
+
checkChrome105() {
|
|
681
|
+
var ref;
|
|
682
|
+
if (typeof window === 'undefined' || window.navigator == null) return false;
|
|
683
|
+
let isChrome105;
|
|
684
|
+
if (window.navigator['userAgentData']) isChrome105 = (ref = window.navigator['userAgentData']) === null || ref === void 0 ? void 0 : ref.brands.some((b)=>b.brand === 'Chromium' && Number(b.version) >= 105
|
|
685
|
+
);
|
|
686
|
+
else {
|
|
687
|
+
let regex = /Chrome\/(\d+)/;
|
|
688
|
+
let matches = regex.exec(window.navigator.userAgent);
|
|
689
|
+
isChrome105 = matches && matches.length >= 2 && Number(matches[1]) >= 105;
|
|
690
|
+
}
|
|
691
|
+
return isChrome105;
|
|
692
|
+
}
|
|
679
693
|
constructor(options){
|
|
680
694
|
super(options);
|
|
681
695
|
this.wasLoading = false;
|
|
@@ -683,6 +697,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends $61ef60fc9b1041f4$export
|
|
|
683
697
|
this.lastPersistedKeys = null;
|
|
684
698
|
this.persistedIndices = new Map();
|
|
685
699
|
this.stickyColumnIndices = [];
|
|
700
|
+
this.disableSticky = this.checkChrome105();
|
|
686
701
|
}
|
|
687
702
|
}
|
|
688
703
|
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/@react-stately/layout/src/index.ts","packages/@react-stately/layout/src/ListLayout.ts","packages/@react-stately/layout/src/TableLayout.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nexport type {ListLayoutOptions, LayoutNode} from './ListLayout';\nexport {ListLayout} from './ListLayout';\nexport {TableLayout} from './TableLayout';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DropTarget, DropTargetDelegate, KeyboardDelegate, Node} from '@react-types/shared';\nimport {InvalidationContext, Layout, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {Key} from 'react';\n// import { DragTarget, DropTarget, DropPosition } from '@react-types/shared';\n\nexport type ListLayoutOptions<T> = {\n /** The height of a row in px. */\n rowHeight?: number,\n estimatedRowHeight?: number,\n headingHeight?: number,\n estimatedHeadingHeight?: number,\n padding?: number,\n indentationForItem?: (collection: Collection<Node<T>>, key: Key) => number,\n collator?: Intl.Collator,\n loaderHeight?: number,\n placeholderHeight?: number,\n allowDisabledKeyFocus?: boolean\n};\n\n// A wrapper around LayoutInfo that supports hierarchy\nexport interface LayoutNode {\n node?: Node<unknown>,\n layoutInfo: LayoutInfo,\n header?: LayoutInfo,\n children?: LayoutNode[]\n}\n\nconst DEFAULT_HEIGHT = 48;\n\n/**\n * The ListLayout class is an implementation of a collection view {@link Layout}\n * it is used for creating lists and lists with indented sub-lists.\n *\n * To configure a ListLayout, you can use the properties to define the\n * layouts and/or use the method for defining indentation.\n * The {@link ListKeyboardDelegate} extends the existing collection view\n * delegate with an additional method to do this (it uses the same delegate object as\n * the collection view itself).\n */\nexport class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate, DropTargetDelegate {\n protected rowHeight: number;\n protected estimatedRowHeight: number;\n protected headingHeight: number;\n protected estimatedHeadingHeight: number;\n protected padding: number;\n protected indentationForItem?: (collection: Collection<Node<T>>, key: Key) => number;\n protected layoutInfos: Map<Key, LayoutInfo>;\n protected layoutNodes: Map<Key, LayoutNode>;\n protected contentSize: Size;\n collection: Collection<Node<T>>;\n disabledKeys: Set<Key> = new Set();\n allowDisabledKeyFocus: boolean = false;\n isLoading: boolean;\n protected lastWidth: number;\n protected lastCollection: Collection<Node<T>>;\n protected rootNodes: LayoutNode[];\n protected collator: Intl.Collator;\n protected invalidateEverything: boolean;\n protected loaderHeight: number;\n protected placeholderHeight: number;\n\n /**\n * Creates a new ListLayout with options. See the list of properties below for a description\n * of the options that can be provided.\n */\n constructor(options: ListLayoutOptions<T> = {}) {\n super();\n this.rowHeight = options.rowHeight;\n this.estimatedRowHeight = options.estimatedRowHeight;\n this.headingHeight = options.headingHeight;\n this.estimatedHeadingHeight = options.estimatedHeadingHeight;\n this.padding = options.padding || 0;\n this.indentationForItem = options.indentationForItem;\n this.collator = options.collator;\n this.loaderHeight = options.loaderHeight;\n this.placeholderHeight = options.placeholderHeight;\n this.layoutInfos = new Map();\n this.layoutNodes = new Map();\n this.rootNodes = [];\n this.lastWidth = 0;\n this.lastCollection = null;\n this.allowDisabledKeyFocus = options.allowDisabledKeyFocus;\n }\n\n getLayoutInfo(key: Key) {\n return this.layoutInfos.get(key);\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n let addNodes = (nodes: LayoutNode[]) => {\n for (let node of nodes) {\n if (this.isVisible(node, rect)) {\n res.push(node.layoutInfo);\n if (node.header) {\n res.push(node.header);\n }\n\n if (node.children) {\n addNodes(node.children);\n }\n }\n }\n };\n\n addNodes(this.rootNodes);\n return res;\n }\n\n isVisible(node: LayoutNode, rect: Rect) {\n return node.layoutInfo.rect.intersects(rect) || node.layoutInfo.isSticky || this.virtualizer.isPersistedKey(node.layoutInfo.key);\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n // Invalidate cache if the size of the collection changed.\n // In this case, we need to recalculate the entire layout.\n this.invalidateEverything = invalidationContext.sizeChanged;\n\n this.collection = this.virtualizer.collection;\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection) {\n for (let key of this.lastCollection.getKeys()) {\n if (!this.collection.getItem(key)) {\n let layoutNode = this.layoutNodes.get(key);\n if (layoutNode) {\n this.layoutInfos.delete(layoutNode.layoutInfo.key);\n this.layoutInfos.delete(layoutNode.header?.key);\n this.layoutNodes.delete(key);\n }\n }\n }\n }\n\n this.lastWidth = this.virtualizer.visibleRect.width;\n this.lastCollection = this.collection;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let nodes = [];\n for (let node of this.collection) {\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.loaderHeight ?? this.virtualizer.visibleRect.height);\n let loader = new LayoutInfo('loader', 'loader', rect);\n this.layoutInfos.set('loader', loader);\n nodes.push({layoutInfo: loader});\n y = loader.rect.maxY;\n }\n\n if (nodes.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.placeholderHeight ?? this.virtualizer.visibleRect.height);\n let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);\n this.layoutInfos.set('placeholder', placeholder);\n nodes.push({layoutInfo: placeholder});\n y = placeholder.rect.maxY;\n }\n\n this.contentSize = new Size(this.virtualizer.visibleRect.width, y + this.padding);\n return nodes;\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n let cached = this.layoutNodes.get(node.key);\n if (!this.invalidateEverything && cached && cached.node === node && y === (cached.header || cached.layoutInfo).rect.y) {\n return cached;\n }\n\n let layoutNode = this.buildNode(node, x, y);\n layoutNode.node = node;\n\n layoutNode.layoutInfo.parentKey = node.parentKey ?? null;\n this.layoutInfos.set(layoutNode.layoutInfo.key, layoutNode.layoutInfo);\n if (layoutNode.header) {\n this.layoutInfos.set(layoutNode.header.key, layoutNode.header);\n }\n\n this.layoutNodes.set(node.key, layoutNode);\n return layoutNode;\n }\n\n buildNode(node: Node<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'section':\n return this.buildSection(node, x, y);\n case 'item':\n return this.buildItem(node, x, y);\n }\n }\n\n buildSection(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.headingHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode && previousLayoutNode.header) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.header.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.header.estimatedSize;\n } else {\n rectHeight = (node.rendered ? this.estimatedHeadingHeight : 0);\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n let headerRect = new Rect(0, y, width, rectHeight);\n let header = new LayoutInfo('header', node.key + ':header', headerRect);\n header.estimatedSize = isEstimated;\n header.parentKey = node.key;\n y += header.rect.height;\n\n let rect = new Rect(0, y, width, 0);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n\n let startY = y;\n let children = [];\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children\n };\n }\n\n buildItem(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.rowHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n rectHeight = this.estimatedRowHeight;\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n if (typeof this.indentationForItem === 'function') {\n x += this.indentationForItem(this.collection, node.key) || 0;\n }\n\n let rect = new Rect(x, y, width - x, rectHeight);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n // allow overflow so the focus ring/selection ring can extend outside to overlap with the adjacent items borders\n layoutInfo.allowOverflow = true;\n layoutInfo.estimatedSize = isEstimated;\n return {\n layoutInfo\n };\n }\n\n updateItemSize(key: Key, size: Size) {\n let layoutInfo = this.layoutInfos.get(key);\n // If no layoutInfo, item has been deleted/removed.\n if (!layoutInfo) {\n return false;\n }\n\n layoutInfo.estimatedSize = false;\n if (layoutInfo.rect.height !== size.height) {\n // Copy layout info rather than mutating so that later caches are invalidated.\n let newLayoutInfo = layoutInfo.copy();\n newLayoutInfo.rect.height = size.height;\n this.layoutInfos.set(key, newLayoutInfo);\n\n // Invalidate layout for this layout node and all parents\n this.updateLayoutNode(key, layoutInfo, newLayoutInfo);\n\n let node = this.collection.getItem(layoutInfo.parentKey);\n while (node) {\n this.updateLayoutNode(node.key, layoutInfo, newLayoutInfo);\n node = this.collection.getItem(node.parentKey);\n }\n\n return true;\n }\n\n return false;\n }\n\n updateLayoutNode(key: Key, oldLayoutInfo: LayoutInfo, newLayoutInfo: LayoutInfo) {\n let n = this.layoutNodes.get(key);\n if (n) {\n // Invalidate by clearing node.\n n.node = null;\n\n // Replace layout info in LayoutNode\n if (n.header === oldLayoutInfo) {\n n.header = newLayoutInfo;\n } else if (n.layoutInfo === oldLayoutInfo) {\n n.layoutInfo = newLayoutInfo;\n }\n }\n }\n\n getContentSize() {\n return this.contentSize;\n }\n\n getKeyAbove(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyBefore(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyAfter(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getKeyPageAbove(key: Key) {\n let layoutInfo = this.getLayoutInfo(key);\n\n if (layoutInfo) {\n let pageY = Math.max(0, layoutInfo.rect.y + layoutInfo.rect.height - this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y > pageY) {\n let keyAbove = this.getKeyAbove(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyAbove);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getFirstKey();\n }\n\n getKeyPageBelow(key: Key) {\n let layoutInfo = this.getLayoutInfo(key != null ? key : this.getFirstKey());\n\n if (layoutInfo) {\n let pageY = Math.min(this.virtualizer.contentSize.height, layoutInfo.rect.y - layoutInfo.rect.height + this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y < pageY) {\n let keyBelow = this.getKeyBelow(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyBelow);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getLastKey();\n }\n\n getFirstKey() {\n let collection = this.collection;\n let key = collection.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getLastKey() {\n let collection = this.collection;\n let key = collection.getLastKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getKeyBelow(key);\n }\n\n return null;\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n layoutInfo.opacity = 0;\n layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';\n return layoutInfo;\n }\n\n getFinalLayoutInfo(layoutInfo: LayoutInfo) {\n layoutInfo.opacity = 0;\n layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';\n return layoutInfo;\n }\n\n getDropTargetFromPoint(x: number, y: number, isValidDropTarget: (target: DropTarget) => boolean): DropTarget {\n x += this.virtualizer.visibleRect.x;\n y += this.virtualizer.visibleRect.y;\n\n let key = this.virtualizer.keyAtPoint(new Point(x, y));\n if (key == null) {\n return;\n }\n\n let layoutInfo = this.getLayoutInfo(key);\n let rect = layoutInfo.rect;\n let target: DropTarget = {\n type: 'item',\n key: layoutInfo.key,\n dropPosition: 'on'\n };\n\n // If dropping on the item isn't accepted, try the target before or after depending on the y position.\n // Otherwise, if dropping on the item is accepted, still try the before/after positions if within 10px\n // of the top or bottom of the item.\n if (!isValidDropTarget(target)) {\n if (y <= rect.y + rect.height / 2 && isValidDropTarget({...target, dropPosition: 'before'})) {\n target.dropPosition = 'before';\n } else if (isValidDropTarget({...target, dropPosition: 'after'})) {\n target.dropPosition = 'after';\n }\n } else if (y <= rect.y + 10 && isValidDropTarget({...target, dropPosition: 'before'})) {\n target.dropPosition = 'before';\n } else if (y >= rect.maxY - 10 && isValidDropTarget({...target, dropPosition: 'after'})) {\n target.dropPosition = 'after';\n }\n\n return target;\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {GridNode} from '@react-types/grid';\nimport {Key} from 'react';\nimport {LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\nimport {TableCollection} from '@react-types/table';\n\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n getColumnWidth: (key: Key) => number;\n stickyColumnIndices: number[];\n wasLoading = false;\n isLoading = false;\n lastPersistedKeys: Set<Key> = null;\n persistedIndices: Map<Key, number[]> = new Map();\n\n constructor(options: ListLayoutOptions<T>) {\n super(options);\n this.stickyColumnIndices = [];\n }\n\n\n buildCollection(): LayoutNode[] {\n // If columns changed, clear layout cache.\n if (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) => c.key !== this.lastCollection.columns[i].key)\n ) {\n // Invalidate everything in this layout pass. Will be reset in ListLayout on the next pass.\n this.invalidateEverything = true;\n }\n\n // Track whether we were previously loading. This is used to adjust the animations of async loading vs inserts.\n let loadingState = this.collection.body.props.loadingState;\n this.wasLoading = this.isLoading;\n this.isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n\n let header = this.buildHeader();\n let body = this.buildBody(0);\n this.stickyColumnIndices = this.collection.columns.filter(c => c.props.isSelectionCell || this.collection.rowHeaderColumnKeys.has(c.key)).map(c => c.index);\n this.lastPersistedKeys = null;\n\n body.layoutInfo.rect.width = Math.max(header.layoutInfo.rect.width, body.layoutInfo.rect.width);\n this.contentSize = new Size(body.layoutInfo.rect.width, body.layoutInfo.rect.maxY);\n return [\n header,\n body\n ];\n }\n\n buildHeader(): LayoutNode {\n let rect = new Rect(0, 0, 0, 0);\n let layoutInfo = new LayoutInfo('header', 'header', rect);\n\n let y = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let headerRow of this.collection.headerRows) {\n let layoutNode = this.buildChild(headerRow, 0, y);\n layoutNode.layoutInfo.parentKey = 'header';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n rect.width = width;\n rect.height = y;\n\n this.layoutInfos.set('header', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number) {\n let rect = new Rect(0, y, 0, 0);\n let row = new LayoutInfo('headerrow', headerRow.key, rect);\n\n let height = 0;\n let columns: LayoutNode[] = [];\n for (let cell of headerRow.childNodes) {\n let layoutNode = this.buildChild(cell, x, y);\n layoutNode.layoutInfo.parentKey = row.key;\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n columns.push(layoutNode);\n }\n\n this.setChildHeights(columns, height);\n\n rect.height = height;\n rect.width = x;\n\n return {\n layoutInfo: row,\n children: columns\n };\n }\n\n setChildHeights(children: LayoutNode[], height: number) {\n for (let child of children) {\n if (child.layoutInfo.rect.height !== height) {\n // Need to copy the layout info before we mutate it.\n child.layoutInfo = child.layoutInfo.copy();\n this.layoutInfos.set(child.layoutInfo.key, child.layoutInfo);\n\n child.layoutInfo.rect.height = height;\n }\n }\n }\n\n // used to get the column widths when rendering to the DOM\n getColumnWidth_(node: GridNode<T>) {\n let colspan = node.colspan ?? 1;\n let colIndex = node.colIndex ?? node.index;\n let width = 0;\n for (let i = colIndex; i < colIndex + colspan; i++) {\n let column = this.collection.columns[i];\n width += this.getColumnWidth(column.key);\n }\n\n return width;\n }\n\n getEstimatedHeight(node: GridNode<T>, width: number, height: number, estimatedHeight: number) {\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (height == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = curNode !== lastNode || width !== previousLayoutNode.layoutInfo.rect.width || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n height = estimatedHeight;\n isEstimated = true;\n }\n }\n\n return {height, isEstimated};\n }\n\n buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth_(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n buildBody(y: number): LayoutNode {\n let rect = new Rect(0, y, 0, 0);\n let layoutInfo = new LayoutInfo('rowgroup', 'body', rect);\n\n let startY = y;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let layoutNode = this.buildChild(node, 0, y);\n layoutNode.layoutInfo.parentKey = 'body';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n if (this.isLoading) {\n // Add some margin around the loader to ensure that scrollbars don't flicker in and out.\n let rect = new Rect(40, Math.max(y, 40), (width || this.virtualizer.visibleRect.width) - 80, children.length === 0 ? this.virtualizer.visibleRect.height - 80 : 60);\n let loader = new LayoutInfo('loader', 'loader', rect);\n loader.parentKey = 'body';\n loader.isSticky = children.length === 0;\n this.layoutInfos.set('loader', loader);\n children.push({layoutInfo: loader});\n y = loader.rect.maxY;\n width = Math.max(width, rect.width);\n } else if (children.length === 0) {\n let rect = new Rect(40, Math.max(y, 40), this.virtualizer.visibleRect.width - 80, this.virtualizer.visibleRect.height - 80);\n let empty = new LayoutInfo('empty', 'empty', rect);\n empty.parentKey = 'body';\n empty.isSticky = true;\n this.layoutInfos.set('empty', empty);\n children.push({layoutInfo: empty});\n y = empty.rect.maxY;\n width = Math.max(width, rect.width);\n }\n\n rect.width = width;\n rect.height = y - startY;\n\n this.layoutInfos.set('body', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildNode(node: GridNode<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'headerrow':\n return this.buildHeaderRow(node, x, y);\n case 'item':\n return this.buildRow(node, x, y);\n case 'column':\n case 'placeholder':\n return this.buildColumn(node, x, y);\n case 'cell':\n return this.buildCell(node, x, y);\n default:\n throw new Error('Unknown node type ' + node.type);\n }\n }\n\n buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let rect = new Rect(x, y, 0, 0);\n let layoutInfo = new LayoutInfo('row', node.key, rect);\n\n let children: LayoutNode[] = [];\n let height = 0;\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n children.push(layoutNode);\n }\n\n this.setChildHeights(children, height);\n\n rect.width = x;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth_(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n this.buildPersistedIndices();\n for (let node of this.rootNodes) {\n res.push(node.layoutInfo);\n this.addVisibleLayoutInfos(res, node, rect);\n }\n\n return res;\n }\n\n addVisibleLayoutInfos(res: LayoutInfo[], node: LayoutNode, rect: Rect) {\n if (!node.children || node.children.length === 0) {\n return;\n }\n\n switch (node.layoutInfo.type) {\n case 'header': {\n for (let child of node.children) {\n res.push(child.layoutInfo);\n this.addVisibleLayoutInfos(res, child, rect);\n }\n break;\n }\n case 'rowgroup': {\n let firstVisibleRow = this.binarySearch(node.children, rect.topLeft, 'y');\n let lastVisibleRow = this.binarySearch(node.children, rect.bottomRight, 'y');\n\n // Add persisted rows before the visible rows.\n let persistedRowIndices = this.persistedIndices.get(node.layoutInfo.key);\n let persistIndex = 0;\n while (\n persistedRowIndices &&\n persistIndex < persistedRowIndices.length &&\n persistedRowIndices[persistIndex] < firstVisibleRow\n ) {\n let idx = persistedRowIndices[persistIndex];\n res.push(node.children[idx].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[idx], rect);\n persistIndex++;\n }\n\n for (let i = firstVisibleRow; i <= lastVisibleRow; i++) {\n // Skip persisted rows that overlap with visible cells.\n while (persistedRowIndices && persistIndex < persistedRowIndices.length && persistedRowIndices[persistIndex] < i) {\n persistIndex++;\n }\n\n res.push(node.children[i].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[i], rect);\n }\n\n // Add persisted rows after the visible rows.\n while (persistedRowIndices && persistIndex < persistedRowIndices.length) {\n let idx = persistedRowIndices[persistIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n case 'headerrow':\n case 'row': {\n let firstVisibleCell = this.binarySearch(node.children, rect.topLeft, 'x');\n let lastVisibleCell = this.binarySearch(node.children, rect.topRight, 'x');\n let stickyIndex = 0;\n\n // Add persisted/sticky cells before the visible cells.\n let persistedCellIndices = this.persistedIndices.get(node.layoutInfo.key) || this.stickyColumnIndices;\n while (stickyIndex < persistedCellIndices.length && persistedCellIndices[stickyIndex] < firstVisibleCell) {\n let idx = persistedCellIndices[stickyIndex];\n res.push(node.children[idx].layoutInfo);\n stickyIndex++;\n }\n\n for (let i = firstVisibleCell; i <= lastVisibleCell; i++) {\n // Skip sticky cells that overlap with visible cells.\n while (stickyIndex < persistedCellIndices.length && persistedCellIndices[stickyIndex] < i) {\n stickyIndex++;\n }\n\n res.push(node.children[i].layoutInfo);\n }\n\n // Add any remaining sticky cells after the visible cells.\n while (stickyIndex < persistedCellIndices.length) {\n let idx = persistedCellIndices[stickyIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n default:\n throw new Error('Unknown node type ' + node.layoutInfo.type);\n }\n }\n\n binarySearch(items: LayoutNode[], point: Point, axis: 'x' | 'y') {\n let low = 0;\n let high = items.length - 1;\n while (low <= high) {\n let mid = (low + high) >> 1;\n let item = items[mid];\n\n if ((axis === 'x' && item.layoutInfo.rect.maxX < point.x) || (axis === 'y' && item.layoutInfo.rect.maxY < point.y)) {\n low = mid + 1;\n } else if ((axis === 'x' && item.layoutInfo.rect.x > point.x) || (axis === 'y' && item.layoutInfo.rect.y > point.y)) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return Math.max(0, Math.min(items.length - 1, low));\n }\n\n buildPersistedIndices() {\n if (this.virtualizer.persistedKeys === this.lastPersistedKeys) {\n return;\n }\n\n this.lastPersistedKeys = this.virtualizer.persistedKeys;\n this.persistedIndices.clear();\n\n // Build a map of parentKey => indices of children to persist.\n for (let key of this.virtualizer.persistedKeys) {\n let layoutInfo = this.layoutInfos.get(key);\n\n // Walk up ancestors so parents are also persisted if children are.\n while (layoutInfo && layoutInfo.parentKey) {\n let collectionNode = this.collection.getItem(layoutInfo.key);\n let indices = this.persistedIndices.get(layoutInfo.parentKey);\n if (!indices) {\n // stickyColumnIndices are always persisted along with any cells from persistedKeys.\n indices = collectionNode.type === 'cell' ? [...this.stickyColumnIndices] : [];\n this.persistedIndices.set(layoutInfo.parentKey, indices);\n }\n\n let index = collectionNode.index;\n if (layoutInfo.parentKey === 'body') {\n index -= this.collection.headerRows.length;\n }\n\n if (!indices.includes(index)) {\n indices.push(index);\n }\n\n layoutInfo = this.layoutInfos.get(layoutInfo.parentKey);\n }\n }\n\n for (let indices of this.persistedIndices.values()) {\n indices.sort((a, b) => a - b);\n }\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n let res = super.getInitialLayoutInfo(layoutInfo);\n\n // If this insert was the result of async loading, remove the zoom effect and just keep the fade in.\n if (this.wasLoading) {\n res.transform = null;\n }\n\n return res;\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/@react-stately/layout/src/index.ts","packages/@react-stately/layout/src/ListLayout.ts","packages/@react-stately/layout/src/TableLayout.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nexport type {ListLayoutOptions, LayoutNode} from './ListLayout';\nexport {ListLayout} from './ListLayout';\nexport {TableLayout} from './TableLayout';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Collection, DropTarget, DropTargetDelegate, KeyboardDelegate, Node} from '@react-types/shared';\nimport {InvalidationContext, Layout, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {Key} from 'react';\n// import { DragTarget, DropTarget, DropPosition } from '@react-types/shared';\n\nexport type ListLayoutOptions<T> = {\n /** The height of a row in px. */\n rowHeight?: number,\n estimatedRowHeight?: number,\n headingHeight?: number,\n estimatedHeadingHeight?: number,\n padding?: number,\n indentationForItem?: (collection: Collection<Node<T>>, key: Key) => number,\n collator?: Intl.Collator,\n loaderHeight?: number,\n placeholderHeight?: number,\n allowDisabledKeyFocus?: boolean\n};\n\n// A wrapper around LayoutInfo that supports hierarchy\nexport interface LayoutNode {\n node?: Node<unknown>,\n layoutInfo: LayoutInfo,\n header?: LayoutInfo,\n children?: LayoutNode[]\n}\n\nconst DEFAULT_HEIGHT = 48;\n\n/**\n * The ListLayout class is an implementation of a collection view {@link Layout}\n * it is used for creating lists and lists with indented sub-lists.\n *\n * To configure a ListLayout, you can use the properties to define the\n * layouts and/or use the method for defining indentation.\n * The {@link ListKeyboardDelegate} extends the existing collection view\n * delegate with an additional method to do this (it uses the same delegate object as\n * the collection view itself).\n */\nexport class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate, DropTargetDelegate {\n protected rowHeight: number;\n protected estimatedRowHeight: number;\n protected headingHeight: number;\n protected estimatedHeadingHeight: number;\n protected padding: number;\n protected indentationForItem?: (collection: Collection<Node<T>>, key: Key) => number;\n protected layoutInfos: Map<Key, LayoutInfo>;\n protected layoutNodes: Map<Key, LayoutNode>;\n protected contentSize: Size;\n collection: Collection<Node<T>>;\n disabledKeys: Set<Key> = new Set();\n allowDisabledKeyFocus: boolean = false;\n isLoading: boolean;\n protected lastWidth: number;\n protected lastCollection: Collection<Node<T>>;\n protected rootNodes: LayoutNode[];\n protected collator: Intl.Collator;\n protected invalidateEverything: boolean;\n protected loaderHeight: number;\n protected placeholderHeight: number;\n\n /**\n * Creates a new ListLayout with options. See the list of properties below for a description\n * of the options that can be provided.\n */\n constructor(options: ListLayoutOptions<T> = {}) {\n super();\n this.rowHeight = options.rowHeight;\n this.estimatedRowHeight = options.estimatedRowHeight;\n this.headingHeight = options.headingHeight;\n this.estimatedHeadingHeight = options.estimatedHeadingHeight;\n this.padding = options.padding || 0;\n this.indentationForItem = options.indentationForItem;\n this.collator = options.collator;\n this.loaderHeight = options.loaderHeight;\n this.placeholderHeight = options.placeholderHeight;\n this.layoutInfos = new Map();\n this.layoutNodes = new Map();\n this.rootNodes = [];\n this.lastWidth = 0;\n this.lastCollection = null;\n this.allowDisabledKeyFocus = options.allowDisabledKeyFocus;\n }\n\n getLayoutInfo(key: Key) {\n return this.layoutInfos.get(key);\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n let addNodes = (nodes: LayoutNode[]) => {\n for (let node of nodes) {\n if (this.isVisible(node, rect)) {\n res.push(node.layoutInfo);\n if (node.header) {\n res.push(node.header);\n }\n\n if (node.children) {\n addNodes(node.children);\n }\n }\n }\n };\n\n addNodes(this.rootNodes);\n return res;\n }\n\n isVisible(node: LayoutNode, rect: Rect) {\n return node.layoutInfo.rect.intersects(rect) || node.layoutInfo.isSticky || this.virtualizer.isPersistedKey(node.layoutInfo.key);\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n // Invalidate cache if the size of the collection changed.\n // In this case, we need to recalculate the entire layout.\n this.invalidateEverything = invalidationContext.sizeChanged;\n\n this.collection = this.virtualizer.collection;\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection) {\n for (let key of this.lastCollection.getKeys()) {\n if (!this.collection.getItem(key)) {\n let layoutNode = this.layoutNodes.get(key);\n if (layoutNode) {\n this.layoutInfos.delete(layoutNode.layoutInfo.key);\n this.layoutInfos.delete(layoutNode.header?.key);\n this.layoutNodes.delete(key);\n }\n }\n }\n }\n\n this.lastWidth = this.virtualizer.visibleRect.width;\n this.lastCollection = this.collection;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let nodes = [];\n for (let node of this.collection) {\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.loaderHeight ?? this.virtualizer.visibleRect.height);\n let loader = new LayoutInfo('loader', 'loader', rect);\n this.layoutInfos.set('loader', loader);\n nodes.push({layoutInfo: loader});\n y = loader.rect.maxY;\n }\n\n if (nodes.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.placeholderHeight ?? this.virtualizer.visibleRect.height);\n let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);\n this.layoutInfos.set('placeholder', placeholder);\n nodes.push({layoutInfo: placeholder});\n y = placeholder.rect.maxY;\n }\n\n this.contentSize = new Size(this.virtualizer.visibleRect.width, y + this.padding);\n return nodes;\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n let cached = this.layoutNodes.get(node.key);\n if (!this.invalidateEverything && cached && cached.node === node && y === (cached.header || cached.layoutInfo).rect.y) {\n return cached;\n }\n\n let layoutNode = this.buildNode(node, x, y);\n layoutNode.node = node;\n\n layoutNode.layoutInfo.parentKey = node.parentKey ?? null;\n this.layoutInfos.set(layoutNode.layoutInfo.key, layoutNode.layoutInfo);\n if (layoutNode.header) {\n this.layoutInfos.set(layoutNode.header.key, layoutNode.header);\n }\n\n this.layoutNodes.set(node.key, layoutNode);\n return layoutNode;\n }\n\n buildNode(node: Node<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'section':\n return this.buildSection(node, x, y);\n case 'item':\n return this.buildItem(node, x, y);\n }\n }\n\n buildSection(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.headingHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode && previousLayoutNode.header) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.header.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.header.estimatedSize;\n } else {\n rectHeight = (node.rendered ? this.estimatedHeadingHeight : 0);\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n let headerRect = new Rect(0, y, width, rectHeight);\n let header = new LayoutInfo('header', node.key + ':header', headerRect);\n header.estimatedSize = isEstimated;\n header.parentKey = node.key;\n y += header.rect.height;\n\n let rect = new Rect(0, y, width, 0);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n\n let startY = y;\n let children = [];\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children\n };\n }\n\n buildItem(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.rowHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n rectHeight = this.estimatedRowHeight;\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n if (typeof this.indentationForItem === 'function') {\n x += this.indentationForItem(this.collection, node.key) || 0;\n }\n\n let rect = new Rect(x, y, width - x, rectHeight);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n // allow overflow so the focus ring/selection ring can extend outside to overlap with the adjacent items borders\n layoutInfo.allowOverflow = true;\n layoutInfo.estimatedSize = isEstimated;\n return {\n layoutInfo\n };\n }\n\n updateItemSize(key: Key, size: Size) {\n let layoutInfo = this.layoutInfos.get(key);\n // If no layoutInfo, item has been deleted/removed.\n if (!layoutInfo) {\n return false;\n }\n\n layoutInfo.estimatedSize = false;\n if (layoutInfo.rect.height !== size.height) {\n // Copy layout info rather than mutating so that later caches are invalidated.\n let newLayoutInfo = layoutInfo.copy();\n newLayoutInfo.rect.height = size.height;\n this.layoutInfos.set(key, newLayoutInfo);\n\n // Invalidate layout for this layout node and all parents\n this.updateLayoutNode(key, layoutInfo, newLayoutInfo);\n\n let node = this.collection.getItem(layoutInfo.parentKey);\n while (node) {\n this.updateLayoutNode(node.key, layoutInfo, newLayoutInfo);\n node = this.collection.getItem(node.parentKey);\n }\n\n return true;\n }\n\n return false;\n }\n\n updateLayoutNode(key: Key, oldLayoutInfo: LayoutInfo, newLayoutInfo: LayoutInfo) {\n let n = this.layoutNodes.get(key);\n if (n) {\n // Invalidate by clearing node.\n n.node = null;\n\n // Replace layout info in LayoutNode\n if (n.header === oldLayoutInfo) {\n n.header = newLayoutInfo;\n } else if (n.layoutInfo === oldLayoutInfo) {\n n.layoutInfo = newLayoutInfo;\n }\n }\n }\n\n getContentSize() {\n return this.contentSize;\n }\n\n getKeyAbove(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyBefore(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyAfter(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getKeyPageAbove(key: Key) {\n let layoutInfo = this.getLayoutInfo(key);\n\n if (layoutInfo) {\n let pageY = Math.max(0, layoutInfo.rect.y + layoutInfo.rect.height - this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y > pageY) {\n let keyAbove = this.getKeyAbove(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyAbove);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getFirstKey();\n }\n\n getKeyPageBelow(key: Key) {\n let layoutInfo = this.getLayoutInfo(key != null ? key : this.getFirstKey());\n\n if (layoutInfo) {\n let pageY = Math.min(this.virtualizer.contentSize.height, layoutInfo.rect.y - layoutInfo.rect.height + this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y < pageY) {\n let keyBelow = this.getKeyBelow(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyBelow);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getLastKey();\n }\n\n getFirstKey() {\n let collection = this.collection;\n let key = collection.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getLastKey() {\n let collection = this.collection;\n let key = collection.getLastKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && (this.allowDisabledKeyFocus || !this.disabledKeys.has(item.key))) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getKeyBelow(key);\n }\n\n return null;\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n layoutInfo.opacity = 0;\n layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';\n return layoutInfo;\n }\n\n getFinalLayoutInfo(layoutInfo: LayoutInfo) {\n layoutInfo.opacity = 0;\n layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';\n return layoutInfo;\n }\n\n getDropTargetFromPoint(x: number, y: number, isValidDropTarget: (target: DropTarget) => boolean): DropTarget {\n x += this.virtualizer.visibleRect.x;\n y += this.virtualizer.visibleRect.y;\n\n let key = this.virtualizer.keyAtPoint(new Point(x, y));\n if (key == null) {\n return;\n }\n\n let layoutInfo = this.getLayoutInfo(key);\n let rect = layoutInfo.rect;\n let target: DropTarget = {\n type: 'item',\n key: layoutInfo.key,\n dropPosition: 'on'\n };\n\n // If dropping on the item isn't accepted, try the target before or after depending on the y position.\n // Otherwise, if dropping on the item is accepted, still try the before/after positions if within 10px\n // of the top or bottom of the item.\n if (!isValidDropTarget(target)) {\n if (y <= rect.y + rect.height / 2 && isValidDropTarget({...target, dropPosition: 'before'})) {\n target.dropPosition = 'before';\n } else if (isValidDropTarget({...target, dropPosition: 'after'})) {\n target.dropPosition = 'after';\n }\n } else if (y <= rect.y + 10 && isValidDropTarget({...target, dropPosition: 'before'})) {\n target.dropPosition = 'before';\n } else if (y >= rect.maxY - 10 && isValidDropTarget({...target, dropPosition: 'after'})) {\n target.dropPosition = 'after';\n }\n\n return target;\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {GridNode} from '@react-types/grid';\nimport {Key} from 'react';\nimport {LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\nimport {TableCollection} from '@react-types/table';\n\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n getColumnWidth: (key: Key) => number;\n stickyColumnIndices: number[];\n wasLoading = false;\n isLoading = false;\n lastPersistedKeys: Set<Key> = null;\n persistedIndices: Map<Key, number[]> = new Map();\n private disableSticky: boolean;\n\n constructor(options: ListLayoutOptions<T>) {\n super(options);\n this.stickyColumnIndices = [];\n this.disableSticky = this.checkChrome105();\n }\n\n\n buildCollection(): LayoutNode[] {\n // If columns changed, clear layout cache.\n if (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) => c.key !== this.lastCollection.columns[i].key)\n ) {\n // Invalidate everything in this layout pass. Will be reset in ListLayout on the next pass.\n this.invalidateEverything = true;\n }\n\n // Track whether we were previously loading. This is used to adjust the animations of async loading vs inserts.\n let loadingState = this.collection.body.props.loadingState;\n this.wasLoading = this.isLoading;\n this.isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n\n let header = this.buildHeader();\n let body = this.buildBody(0);\n this.stickyColumnIndices = this.collection.columns.filter(c => c.props.isSelectionCell || this.collection.rowHeaderColumnKeys.has(c.key)).map(c => c.index);\n this.lastPersistedKeys = null;\n\n body.layoutInfo.rect.width = Math.max(header.layoutInfo.rect.width, body.layoutInfo.rect.width);\n this.contentSize = new Size(body.layoutInfo.rect.width, body.layoutInfo.rect.maxY);\n return [\n header,\n body\n ];\n }\n\n buildHeader(): LayoutNode {\n let rect = new Rect(0, 0, 0, 0);\n let layoutInfo = new LayoutInfo('header', 'header', rect);\n\n let y = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let headerRow of this.collection.headerRows) {\n let layoutNode = this.buildChild(headerRow, 0, y);\n layoutNode.layoutInfo.parentKey = 'header';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n rect.width = width;\n rect.height = y;\n\n this.layoutInfos.set('header', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number) {\n let rect = new Rect(0, y, 0, 0);\n let row = new LayoutInfo('headerrow', headerRow.key, rect);\n\n let height = 0;\n let columns: LayoutNode[] = [];\n for (let cell of headerRow.childNodes) {\n let layoutNode = this.buildChild(cell, x, y);\n layoutNode.layoutInfo.parentKey = row.key;\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n columns.push(layoutNode);\n }\n\n this.setChildHeights(columns, height);\n\n rect.height = height;\n rect.width = x;\n\n return {\n layoutInfo: row,\n children: columns\n };\n }\n\n setChildHeights(children: LayoutNode[], height: number) {\n for (let child of children) {\n if (child.layoutInfo.rect.height !== height) {\n // Need to copy the layout info before we mutate it.\n child.layoutInfo = child.layoutInfo.copy();\n this.layoutInfos.set(child.layoutInfo.key, child.layoutInfo);\n\n child.layoutInfo.rect.height = height;\n }\n }\n }\n\n // used to get the column widths when rendering to the DOM\n getColumnWidth_(node: GridNode<T>) {\n let colspan = node.colspan ?? 1;\n let colIndex = node.colIndex ?? node.index;\n let width = 0;\n for (let i = colIndex; i < colIndex + colspan; i++) {\n let column = this.collection.columns[i];\n width += this.getColumnWidth(column.key);\n }\n\n return width;\n }\n\n getEstimatedHeight(node: GridNode<T>, width: number, height: number, estimatedHeight: number) {\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (height == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = curNode !== lastNode || width !== previousLayoutNode.layoutInfo.rect.width || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n height = estimatedHeight;\n isEstimated = true;\n }\n }\n\n return {height, isEstimated};\n }\n\n buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth_(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = !this.disableSticky && node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n buildBody(y: number): LayoutNode {\n let rect = new Rect(0, y, 0, 0);\n let layoutInfo = new LayoutInfo('rowgroup', 'body', rect);\n\n let startY = y;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let layoutNode = this.buildChild(node, 0, y);\n layoutNode.layoutInfo.parentKey = 'body';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n if (this.isLoading) {\n // Add some margin around the loader to ensure that scrollbars don't flicker in and out.\n let rect = new Rect(40, Math.max(y, 40), (width || this.virtualizer.visibleRect.width) - 80, children.length === 0 ? this.virtualizer.visibleRect.height - 80 : 60);\n let loader = new LayoutInfo('loader', 'loader', rect);\n loader.parentKey = 'body';\n loader.isSticky = !this.disableSticky && children.length === 0;\n this.layoutInfos.set('loader', loader);\n children.push({layoutInfo: loader});\n y = loader.rect.maxY;\n width = Math.max(width, rect.width);\n } else if (children.length === 0) {\n let rect = new Rect(40, Math.max(y, 40), this.virtualizer.visibleRect.width - 80, this.virtualizer.visibleRect.height - 80);\n let empty = new LayoutInfo('empty', 'empty', rect);\n empty.parentKey = 'body';\n empty.isSticky = !this.disableSticky;\n this.layoutInfos.set('empty', empty);\n children.push({layoutInfo: empty});\n y = empty.rect.maxY;\n width = Math.max(width, rect.width);\n }\n\n rect.width = width;\n rect.height = y - startY;\n\n this.layoutInfos.set('body', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildNode(node: GridNode<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'headerrow':\n return this.buildHeaderRow(node, x, y);\n case 'item':\n return this.buildRow(node, x, y);\n case 'column':\n case 'placeholder':\n return this.buildColumn(node, x, y);\n case 'cell':\n return this.buildCell(node, x, y);\n default:\n throw new Error('Unknown node type ' + node.type);\n }\n }\n\n buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let rect = new Rect(x, y, 0, 0);\n let layoutInfo = new LayoutInfo('row', node.key, rect);\n\n let children: LayoutNode[] = [];\n let height = 0;\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n children.push(layoutNode);\n }\n\n this.setChildHeights(children, height);\n\n rect.width = x;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth_(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = !this.disableSticky && node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n this.buildPersistedIndices();\n for (let node of this.rootNodes) {\n res.push(node.layoutInfo);\n this.addVisibleLayoutInfos(res, node, rect);\n }\n\n return res;\n }\n\n addVisibleLayoutInfos(res: LayoutInfo[], node: LayoutNode, rect: Rect) {\n if (!node.children || node.children.length === 0) {\n return;\n }\n\n switch (node.layoutInfo.type) {\n case 'header': {\n for (let child of node.children) {\n res.push(child.layoutInfo);\n this.addVisibleLayoutInfos(res, child, rect);\n }\n break;\n }\n case 'rowgroup': {\n let firstVisibleRow = this.binarySearch(node.children, rect.topLeft, 'y');\n let lastVisibleRow = this.binarySearch(node.children, rect.bottomRight, 'y');\n\n // Add persisted rows before the visible rows.\n let persistedRowIndices = this.persistedIndices.get(node.layoutInfo.key);\n let persistIndex = 0;\n while (\n persistedRowIndices &&\n persistIndex < persistedRowIndices.length &&\n persistedRowIndices[persistIndex] < firstVisibleRow\n ) {\n let idx = persistedRowIndices[persistIndex];\n res.push(node.children[idx].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[idx], rect);\n persistIndex++;\n }\n\n for (let i = firstVisibleRow; i <= lastVisibleRow; i++) {\n // Skip persisted rows that overlap with visible cells.\n while (persistedRowIndices && persistIndex < persistedRowIndices.length && persistedRowIndices[persistIndex] < i) {\n persistIndex++;\n }\n\n res.push(node.children[i].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[i], rect);\n }\n\n // Add persisted rows after the visible rows.\n while (persistedRowIndices && persistIndex < persistedRowIndices.length) {\n let idx = persistedRowIndices[persistIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n case 'headerrow':\n case 'row': {\n let firstVisibleCell = this.binarySearch(node.children, rect.topLeft, 'x');\n let lastVisibleCell = this.binarySearch(node.children, rect.topRight, 'x');\n let stickyIndex = 0;\n\n // Add persisted/sticky cells before the visible cells.\n let persistedCellIndices = this.persistedIndices.get(node.layoutInfo.key) || this.stickyColumnIndices;\n while (stickyIndex < persistedCellIndices.length && persistedCellIndices[stickyIndex] < firstVisibleCell) {\n let idx = persistedCellIndices[stickyIndex];\n res.push(node.children[idx].layoutInfo);\n stickyIndex++;\n }\n\n for (let i = firstVisibleCell; i <= lastVisibleCell; i++) {\n // Skip sticky cells that overlap with visible cells.\n while (stickyIndex < persistedCellIndices.length && persistedCellIndices[stickyIndex] < i) {\n stickyIndex++;\n }\n\n res.push(node.children[i].layoutInfo);\n }\n\n // Add any remaining sticky cells after the visible cells.\n while (stickyIndex < persistedCellIndices.length) {\n let idx = persistedCellIndices[stickyIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n default:\n throw new Error('Unknown node type ' + node.layoutInfo.type);\n }\n }\n\n binarySearch(items: LayoutNode[], point: Point, axis: 'x' | 'y') {\n let low = 0;\n let high = items.length - 1;\n while (low <= high) {\n let mid = (low + high) >> 1;\n let item = items[mid];\n\n if ((axis === 'x' && item.layoutInfo.rect.maxX < point.x) || (axis === 'y' && item.layoutInfo.rect.maxY < point.y)) {\n low = mid + 1;\n } else if ((axis === 'x' && item.layoutInfo.rect.x > point.x) || (axis === 'y' && item.layoutInfo.rect.y > point.y)) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return Math.max(0, Math.min(items.length - 1, low));\n }\n\n buildPersistedIndices() {\n if (this.virtualizer.persistedKeys === this.lastPersistedKeys) {\n return;\n }\n\n this.lastPersistedKeys = this.virtualizer.persistedKeys;\n this.persistedIndices.clear();\n\n // Build a map of parentKey => indices of children to persist.\n for (let key of this.virtualizer.persistedKeys) {\n let layoutInfo = this.layoutInfos.get(key);\n\n // Walk up ancestors so parents are also persisted if children are.\n while (layoutInfo && layoutInfo.parentKey) {\n let collectionNode = this.collection.getItem(layoutInfo.key);\n let indices = this.persistedIndices.get(layoutInfo.parentKey);\n if (!indices) {\n // stickyColumnIndices are always persisted along with any cells from persistedKeys.\n indices = collectionNode.type === 'cell' ? [...this.stickyColumnIndices] : [];\n this.persistedIndices.set(layoutInfo.parentKey, indices);\n }\n\n let index = collectionNode.index;\n if (layoutInfo.parentKey === 'body') {\n index -= this.collection.headerRows.length;\n }\n\n if (!indices.includes(index)) {\n indices.push(index);\n }\n\n layoutInfo = this.layoutInfos.get(layoutInfo.parentKey);\n }\n }\n\n for (let indices of this.persistedIndices.values()) {\n indices.sort((a, b) => a - b);\n }\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n let res = super.getInitialLayoutInfo(layoutInfo);\n\n // If this insert was the result of async loading, remove the zoom effect and just keep the fade in.\n if (this.wasLoading) {\n res.transform = null;\n }\n\n return res;\n }\n\n // Checks if Chrome version is 105 or greater\n private checkChrome105() {\n if (typeof window === 'undefined' || window.navigator == null) {\n return false;\n }\n\n let isChrome105;\n if (window.navigator['userAgentData']) {\n isChrome105 = window.navigator['userAgentData']?.brands.some(b => b.brand === 'Chromium' && Number(b.version) >= 105);\n } else {\n let regex = /Chrome\\/(\\d+)/;\n let matches = regex.exec(window.navigator.userAgent);\n isChrome105 = matches && matches.length >= 2 && Number(matches[1]) >= 105;\n }\n\n return isChrome105;\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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
|
|
1
|
+
{"mappings":"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","sources":["packages/@react-stately/layout/src/packages/@react-stately/layout/src/ListLayout.ts","packages/@react-stately/layout/src/packages/@react-stately/layout/src/TableLayout.ts","packages/@react-stately/layout/src/packages/@react-stately/layout/src/index.ts","packages/@react-stately/layout/src/index.ts"],"sourcesContent":[null,null,null,"/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nexport type {ListLayoutOptions, LayoutNode} from './ListLayout';\nexport {ListLayout} from './ListLayout';\nexport {TableLayout} from './TableLayout';\n"],"names":[],"version":3,"file":"types.d.ts.map"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-stately/layout",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.2-nightly.3469+24afd2a1f",
|
|
4
4
|
"description": "Spectrum UI components in React",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "dist/main.js",
|
|
@@ -18,10 +18,10 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@babel/runtime": "^7.6.2",
|
|
21
|
-
"@react-stately/virtualizer": "3.3.1-nightly.
|
|
22
|
-
"@react-types/grid": "3.1.4-nightly.
|
|
23
|
-
"@react-types/shared": "3.0.0-nightly.
|
|
24
|
-
"@react-types/table": "3.3.2-nightly.
|
|
21
|
+
"@react-stately/virtualizer": "3.3.1-nightly.3469+24afd2a1f",
|
|
22
|
+
"@react-types/grid": "3.1.4-nightly.3469+24afd2a1f",
|
|
23
|
+
"@react-types/shared": "3.0.0-nightly.1769+24afd2a1f",
|
|
24
|
+
"@react-types/table": "3.3.2-nightly.3469+24afd2a1f"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0"
|
|
@@ -29,5 +29,5 @@
|
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "24afd2a1feeb81bb71001204e1f2c9fc986ae282"
|
|
33
33
|
}
|
package/src/TableLayout.ts
CHANGED
|
@@ -26,10 +26,12 @@ export class TableLayout<T> extends ListLayout<T> {
|
|
|
26
26
|
isLoading = false;
|
|
27
27
|
lastPersistedKeys: Set<Key> = null;
|
|
28
28
|
persistedIndices: Map<Key, number[]> = new Map();
|
|
29
|
+
private disableSticky: boolean;
|
|
29
30
|
|
|
30
31
|
constructor(options: ListLayoutOptions<T>) {
|
|
31
32
|
super(options);
|
|
32
33
|
this.stickyColumnIndices = [];
|
|
34
|
+
this.disableSticky = this.checkChrome105();
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
|
|
@@ -166,7 +168,7 @@ export class TableLayout<T> extends ListLayout<T> {
|
|
|
166
168
|
let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);
|
|
167
169
|
let rect = new Rect(x, y, width, height);
|
|
168
170
|
let layoutInfo = new LayoutInfo(node.type, node.key, rect);
|
|
169
|
-
layoutInfo.isSticky = node.props?.isSelectionCell;
|
|
171
|
+
layoutInfo.isSticky = !this.disableSticky && node.props?.isSelectionCell;
|
|
170
172
|
layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
|
|
171
173
|
layoutInfo.estimatedSize = isEstimated;
|
|
172
174
|
|
|
@@ -195,7 +197,7 @@ export class TableLayout<T> extends ListLayout<T> {
|
|
|
195
197
|
let rect = new Rect(40, Math.max(y, 40), (width || this.virtualizer.visibleRect.width) - 80, children.length === 0 ? this.virtualizer.visibleRect.height - 80 : 60);
|
|
196
198
|
let loader = new LayoutInfo('loader', 'loader', rect);
|
|
197
199
|
loader.parentKey = 'body';
|
|
198
|
-
loader.isSticky = children.length === 0;
|
|
200
|
+
loader.isSticky = !this.disableSticky && children.length === 0;
|
|
199
201
|
this.layoutInfos.set('loader', loader);
|
|
200
202
|
children.push({layoutInfo: loader});
|
|
201
203
|
y = loader.rect.maxY;
|
|
@@ -204,7 +206,7 @@ export class TableLayout<T> extends ListLayout<T> {
|
|
|
204
206
|
let rect = new Rect(40, Math.max(y, 40), this.virtualizer.visibleRect.width - 80, this.virtualizer.visibleRect.height - 80);
|
|
205
207
|
let empty = new LayoutInfo('empty', 'empty', rect);
|
|
206
208
|
empty.parentKey = 'body';
|
|
207
|
-
empty.isSticky =
|
|
209
|
+
empty.isSticky = !this.disableSticky;
|
|
208
210
|
this.layoutInfos.set('empty', empty);
|
|
209
211
|
children.push({layoutInfo: empty});
|
|
210
212
|
y = empty.rect.maxY;
|
|
@@ -267,7 +269,7 @@ export class TableLayout<T> extends ListLayout<T> {
|
|
|
267
269
|
let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);
|
|
268
270
|
let rect = new Rect(x, y, width, height);
|
|
269
271
|
let layoutInfo = new LayoutInfo(node.type, node.key, rect);
|
|
270
|
-
layoutInfo.isSticky = node.props?.isSelectionCell;
|
|
272
|
+
layoutInfo.isSticky = !this.disableSticky && node.props?.isSelectionCell;
|
|
271
273
|
layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
|
|
272
274
|
layoutInfo.estimatedSize = isEstimated;
|
|
273
275
|
|
|
@@ -440,4 +442,22 @@ export class TableLayout<T> extends ListLayout<T> {
|
|
|
440
442
|
|
|
441
443
|
return res;
|
|
442
444
|
}
|
|
445
|
+
|
|
446
|
+
// Checks if Chrome version is 105 or greater
|
|
447
|
+
private checkChrome105() {
|
|
448
|
+
if (typeof window === 'undefined' || window.navigator == null) {
|
|
449
|
+
return false;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
let isChrome105;
|
|
453
|
+
if (window.navigator['userAgentData']) {
|
|
454
|
+
isChrome105 = window.navigator['userAgentData']?.brands.some(b => b.brand === 'Chromium' && Number(b.version) >= 105);
|
|
455
|
+
} else {
|
|
456
|
+
let regex = /Chrome\/(\d+)/;
|
|
457
|
+
let matches = regex.exec(window.navigator.userAgent);
|
|
458
|
+
isChrome105 = matches && matches.length >= 2 && Number(matches[1]) >= 105;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
return isChrome105;
|
|
462
|
+
}
|
|
443
463
|
}
|