@react-stately/layout 3.11.1-nightly.3734 → 3.11.1-nightly.3737

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/import.mjs CHANGED
@@ -1,4 +1,5 @@
1
1
  import $gtW1T$swchelperssrc_define_propertymjs from "@swc/helpers/src/_define_property.mjs";
2
+ import {getChildNodes as $gtW1T$getChildNodes} from "@react-stately/collections";
2
3
  import {Rect as $gtW1T$Rect, LayoutInfo as $gtW1T$LayoutInfo, Size as $gtW1T$Size, Point as $gtW1T$Point, Layout as $gtW1T$Layout} from "@react-stately/virtualizer";
3
4
 
4
5
  /*
@@ -23,6 +24,7 @@ import {Rect as $gtW1T$Rect, LayoutInfo as $gtW1T$LayoutInfo, Size as $gtW1T$Siz
23
24
  * governing permissions and limitations under the License.
24
25
  */
25
26
 
27
+
26
28
  const $61ef60fc9b1041f4$var$DEFAULT_HEIGHT = 48;
27
29
  class $61ef60fc9b1041f4$export$cacbb3924155d68e extends (0, $gtW1T$Layout) {
28
30
  getLayoutInfo(key) {
@@ -190,7 +192,7 @@ class $61ef60fc9b1041f4$export$cacbb3924155d68e extends (0, $gtW1T$Layout) {
190
192
  let startY = y;
191
193
  let skipped = 0;
192
194
  let children = [];
193
- for (let child of node.childNodes){
195
+ for (let child of (0, $gtW1T$getChildNodes)(node, this.collection)){
194
196
  var _this_rowHeight;
195
197
  let rowHeight = (_this_rowHeight = this.rowHeight) !== null && _this_rowHeight !== void 0 ? _this_rowHeight : this.estimatedRowHeight;
196
198
  // Skip rows before the valid rectangle unless they are already cached.
@@ -205,7 +207,7 @@ class $61ef60fc9b1041f4$export$cacbb3924155d68e extends (0, $gtW1T$Layout) {
205
207
  if (y > this.validRect.maxY) {
206
208
  // Estimate the remaining height for rows that we don't need to layout right now.
207
209
  y += ([
208
- ...node.childNodes
210
+ ...(0, $gtW1T$getChildNodes)(node, this.collection)
209
211
  ].length - (children.length + skipped)) * rowHeight;
210
212
  break;
211
213
  }
@@ -442,6 +444,7 @@ class $61ef60fc9b1041f4$export$cacbb3924155d68e extends (0, $gtW1T$Layout) {
442
444
  */
443
445
 
444
446
 
447
+
445
448
  class $a152112e902709bf$export$62444c3c724b1b20 extends (0, $61ef60fc9b1041f4$export$cacbb3924155d68e) {
446
449
  shouldInvalidateEverything(invalidationContext) {
447
450
  // If columns changed, clear layout cache.
@@ -543,7 +546,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends (0, $61ef60fc9b1041f4$ex
543
546
  let row = new (0, $gtW1T$LayoutInfo)("headerrow", headerRow.key, rect);
544
547
  let height = 0;
545
548
  let columns = [];
546
- for (let cell of headerRow.childNodes){
549
+ for (let cell of (0, $gtW1T$getChildNodes)(headerRow, this.collection)){
547
550
  let layoutNode = this.buildChild(cell, x, y);
548
551
  layoutNode.layoutInfo.parentKey = row.key;
549
552
  x = layoutNode.layoutInfo.rect.maxX;
@@ -623,7 +626,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends (0, $61ef60fc9b1041f4$ex
623
626
  let skipped = 0;
624
627
  let width = 0;
625
628
  let children = [];
626
- for (let node of this.collection.body.childNodes){
629
+ for (let node of this.collection){
627
630
  var _this_rowHeight;
628
631
  let rowHeight = ((_this_rowHeight = this.rowHeight) !== null && _this_rowHeight !== void 0 ? _this_rowHeight : this.estimatedRowHeight) + 1;
629
632
  // Skip rows before the valid rectangle unless they are already cached.
@@ -698,7 +701,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends (0, $61ef60fc9b1041f4$ex
698
701
  let layoutInfo = new (0, $gtW1T$LayoutInfo)("row", node.key, rect);
699
702
  let children = [];
700
703
  let height = 0;
701
- for (let child of node.childNodes)if (x > this.validRect.maxX) {
704
+ for (let child of (0, $gtW1T$getChildNodes)(node, this.collection))if (x > this.validRect.maxX) {
702
705
  // Adjust existing cached layoutInfo to ensure that it is out of view.
703
706
  // This can happen due to column resizing.
704
707
  let layoutNode = this.layoutNodes.get(child.key);
package/dist/main.js CHANGED
@@ -1,4 +1,5 @@
1
1
  var $cMJQZ$swchelperslib_define_propertyjs = require("@swc/helpers/lib/_define_property.js");
2
+ var $cMJQZ$reactstatelycollections = require("@react-stately/collections");
2
3
  var $cMJQZ$reactstatelyvirtualizer = require("@react-stately/virtualizer");
3
4
 
4
5
  function $parcel$export(e, n, v, s) {
@@ -32,6 +33,7 @@ $parcel$export(module.exports, "TableLayout", () => $67c493497dcda343$export$624
32
33
  * governing permissions and limitations under the License.
33
34
  */
34
35
 
36
+
35
37
  const $fe69e47e38ed0ac4$var$DEFAULT_HEIGHT = 48;
36
38
  class $fe69e47e38ed0ac4$export$cacbb3924155d68e extends (0, $cMJQZ$reactstatelyvirtualizer.Layout) {
37
39
  getLayoutInfo(key) {
@@ -199,7 +201,7 @@ class $fe69e47e38ed0ac4$export$cacbb3924155d68e extends (0, $cMJQZ$reactstatelyv
199
201
  let startY = y;
200
202
  let skipped = 0;
201
203
  let children = [];
202
- for (let child of node.childNodes){
204
+ for (let child of (0, $cMJQZ$reactstatelycollections.getChildNodes)(node, this.collection)){
203
205
  var _this_rowHeight;
204
206
  let rowHeight = (_this_rowHeight = this.rowHeight) !== null && _this_rowHeight !== void 0 ? _this_rowHeight : this.estimatedRowHeight;
205
207
  // Skip rows before the valid rectangle unless they are already cached.
@@ -214,7 +216,7 @@ class $fe69e47e38ed0ac4$export$cacbb3924155d68e extends (0, $cMJQZ$reactstatelyv
214
216
  if (y > this.validRect.maxY) {
215
217
  // Estimate the remaining height for rows that we don't need to layout right now.
216
218
  y += ([
217
- ...node.childNodes
219
+ ...(0, $cMJQZ$reactstatelycollections.getChildNodes)(node, this.collection)
218
220
  ].length - (children.length + skipped)) * rowHeight;
219
221
  break;
220
222
  }
@@ -451,6 +453,7 @@ class $fe69e47e38ed0ac4$export$cacbb3924155d68e extends (0, $cMJQZ$reactstatelyv
451
453
  */
452
454
 
453
455
 
456
+
454
457
  class $67c493497dcda343$export$62444c3c724b1b20 extends (0, $fe69e47e38ed0ac4$export$cacbb3924155d68e) {
455
458
  shouldInvalidateEverything(invalidationContext) {
456
459
  // If columns changed, clear layout cache.
@@ -552,7 +555,7 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends (0, $fe69e47e38ed0ac4$ex
552
555
  let row = new (0, $cMJQZ$reactstatelyvirtualizer.LayoutInfo)("headerrow", headerRow.key, rect);
553
556
  let height = 0;
554
557
  let columns = [];
555
- for (let cell of headerRow.childNodes){
558
+ for (let cell of (0, $cMJQZ$reactstatelycollections.getChildNodes)(headerRow, this.collection)){
556
559
  let layoutNode = this.buildChild(cell, x, y);
557
560
  layoutNode.layoutInfo.parentKey = row.key;
558
561
  x = layoutNode.layoutInfo.rect.maxX;
@@ -632,7 +635,7 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends (0, $fe69e47e38ed0ac4$ex
632
635
  let skipped = 0;
633
636
  let width = 0;
634
637
  let children = [];
635
- for (let node of this.collection.body.childNodes){
638
+ for (let node of this.collection){
636
639
  var _this_rowHeight;
637
640
  let rowHeight = ((_this_rowHeight = this.rowHeight) !== null && _this_rowHeight !== void 0 ? _this_rowHeight : this.estimatedRowHeight) + 1;
638
641
  // Skip rows before the valid rectangle unless they are already cached.
@@ -707,7 +710,7 @@ class $67c493497dcda343$export$62444c3c724b1b20 extends (0, $fe69e47e38ed0ac4$ex
707
710
  let layoutInfo = new (0, $cMJQZ$reactstatelyvirtualizer.LayoutInfo)("row", node.key, rect);
708
711
  let children = [];
709
712
  let height = 0;
710
- for (let child of node.childNodes)if (x > this.validRect.maxX) {
713
+ for (let child of (0, $cMJQZ$reactstatelycollections.getChildNodes)(node, this.collection))if (x > this.validRect.maxX) {
711
714
  // Adjust existing cached layoutInfo to ensure that it is out of view.
712
715
  // This can happen due to column resizing.
713
716
  let layoutNode = this.layoutNodes.get(child.key);
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 validRect: Rect\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 protected lastValidRect: Rect;\n protected validRect: Rect;\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 this.lastValidRect = new Rect();\n this.validRect = new Rect();\n this.contentSize = new Size();\n }\n\n getLayoutInfo(key: Key) {\n let res = this.layoutInfos.get(key);\n\n // If the layout info wasn't found, it might be outside the bounds of the area that we've\n // computed layout for so far. This can happen when accessing a random key, e.g pressing Home/End.\n // Compute the full layout and try again.\n if (!res && this.validRect.area < this.contentSize.area && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = new Rect(0, 0, Infinity, Infinity);\n this.rootNodes = this.buildCollection();\n this.validRect = new Rect(0, 0, this.contentSize.width, this.contentSize.height);\n res = this.layoutInfos.get(key);\n }\n\n return res;\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n // If layout hasn't yet been done for the requested rect, union the\n // new rect with the existing valid rect, and recompute.\n if (!this.validRect.containsRect(rect) && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = this.validRect.union(rect);\n this.rootNodes = this.buildCollection();\n }\n\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 protected shouldInvalidateEverything(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 return invalidationContext.sizeChanged;\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n this.collection = this.virtualizer.collection;\n\n // Reset valid rect if we will have to invalidate everything.\n // Otherwise we can reuse cached layout infos outside the current visible rect.\n this.invalidateEverything = this.shouldInvalidateEverything(invalidationContext);\n if (this.invalidateEverything) {\n this.lastValidRect = this.validRect;\n this.validRect = this.virtualizer.getVisibleRect();\n }\n\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection && this.collection !== 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 this.invalidateEverything = false;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let skipped = 0;\n let nodes = [];\n for (let node of this.collection) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (node.type === 'item' && y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n\n if (node.type === 'item' && y > this.validRect.maxY) {\n y += (this.collection.size - (nodes.length + skipped)) * rowHeight;\n break;\n }\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 isValid(node: Node<T>, y: number) {\n let cached = this.layoutNodes.get(node.key);\n return (\n !this.invalidateEverything &&\n cached &&\n cached.node === node &&\n y === (cached.header || cached.layoutInfo).rect.y &&\n cached.layoutInfo.rect.intersects(this.lastValidRect) &&\n cached.validRect.containsRect(cached.layoutInfo.rect.intersection(this.validRect))\n );\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n if (this.isValid(node, y)) {\n return this.layoutNodes.get(node.key);\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 skipped = 0;\n let children = [];\n for (let child of node.childNodes) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n\n if (y > this.validRect.maxY) {\n // Estimate the remaining height for rows that we don't need to layout right now.\n y += ([...node.childNodes].length - (children.length + skipped)) * rowHeight;\n break;\n }\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children,\n validRect: layoutInfo.rect.intersection(this.validRect)\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 rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || node !== previousLayoutNode.node || 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 validRect: layoutInfo.rect\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 reseting validRect.\n n.validRect = new Rect();\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): Key | null {\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): Key | null {\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): Key | null {\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): Key | null {\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(): Key | null {\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(): Key | null {\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): Key | null {\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 || this.collection.size === 0) {\n return {type: 'root'};\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 {ColumnSize, TableCollection} from '@react-types/table';\nimport {GridNode} from '@react-types/grid';\nimport {InvalidationContext, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {Key} from 'react';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\nimport {Node} from '@react-types/shared';\nimport {TableColumnLayout} from '@react-stately/table';\n\ntype TableLayoutOptions<T> = ListLayoutOptions<T> & {\n columnLayout: TableColumnLayout<T>,\n initialCollection: TableCollection<T>\n}\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n columnWidths: Map<Key, number> = new Map();\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 columnLayout: TableColumnLayout<T>;\n controlledColumns: Map<Key, GridNode<unknown>>;\n uncontrolledColumns: Map<Key, GridNode<unknown>>;\n uncontrolledWidths: Map<Key, ColumnSize>;\n resizingColumn: Key | null;\n\n constructor(options: TableLayoutOptions<T>) {\n super(options);\n this.collection = options.initialCollection;\n this.stickyColumnIndices = [];\n this.disableSticky = this.checkChrome105();\n this.columnLayout = options.columnLayout;\n let [controlledColumns, uncontrolledColumns] = this.columnLayout.splitColumnsIntoControlledAndUncontrolled(this.collection.columns);\n this.controlledColumns = controlledColumns;\n this.uncontrolledColumns = uncontrolledColumns;\n this.uncontrolledWidths = this.columnLayout.getInitialUncontrolledWidths(uncontrolledColumns);\n }\n\n protected shouldInvalidateEverything(invalidationContext: InvalidationContext<Node<T>, unknown>): boolean {\n // If columns changed, clear layout cache.\n return super.shouldInvalidateEverything(invalidationContext) || (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) =>\n c.key !== this.lastCollection.columns[i].key ||\n c.props.width !== this.lastCollection.columns[i].props.width ||\n c.props.minWidth !== this.lastCollection.columns[i].props.minWidth ||\n c.props.maxWidth !== this.lastCollection.columns[i].props.maxWidth\n )\n );\n }\n\n getResizerPosition(): Key {\n return this.getLayoutInfo(this.resizingColumn)?.rect.maxX;\n }\n\n getColumnWidth(key: Key): number {\n return this.columnLayout.getColumnWidth(key) ?? 0;\n }\n\n getColumnMinWidth(key: Key): number {\n let column = this.collection.columns.find(col => col.key === key);\n if (!column) {\n return 0;\n }\n return this.columnLayout.getColumnMinWidth(key);\n }\n\n getColumnMaxWidth(key: Key): number {\n let column = this.collection.columns.find(col => col.key === key);\n if (!column) {\n return 0;\n }\n return this.columnLayout.getColumnMaxWidth(key);\n }\n\n // outside, where this is called, should call props.onColumnResizeStart...\n startResize(key: Key): void {\n this.resizingColumn = key;\n }\n\n // only way to call props.onColumnResize with the new size outside of Layout is to send the result back\n updateResizedColumns(key: Key, width: number): Map<Key, ColumnSize> {\n let newControlled = new Map(Array.from(this.controlledColumns).map(([key, entry]) => [key, entry.props.width]));\n let newSizes = this.columnLayout.resizeColumnWidth(this.virtualizer.visibleRect.width, this.collection, newControlled, this.uncontrolledWidths, key, width);\n\n let map = new Map(Array.from(this.uncontrolledColumns).map(([key]) => [key, newSizes.get(key)]));\n map.set(key, width);\n this.uncontrolledWidths = map;\n // relayoutNow still uses setState, should happen at the same time the parent\n // component's state is processed as a result of props.onColumnResize\n if (this.uncontrolledWidths.size > 0) {\n this.virtualizer.relayoutNow({sizeChanged: true});\n }\n return newSizes;\n }\n\n endResize(): void {\n this.resizingColumn = null;\n }\n\n buildCollection(): LayoutNode[] {\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 this.stickyColumnIndices = [];\n\n for (let column of this.collection.columns) {\n // The selection cell and any other sticky columns always need to be visible.\n // In addition, row headers need to be in the DOM for accessibility labeling.\n if (column.props.isSelectionCell || this.collection.rowHeaderColumnKeys.has(column.key)) {\n this.stickyColumnIndices.push(column.index);\n }\n }\n\n let [controlledColumns, uncontrolledColumns] = this.columnLayout.splitColumnsIntoControlledAndUncontrolled(this.collection.columns);\n this.controlledColumns = controlledColumns;\n this.uncontrolledColumns = uncontrolledColumns;\n let colWidths = this.columnLayout.recombineColumns(this.collection.columns, this.uncontrolledWidths, uncontrolledColumns, controlledColumns);\n\n this.columnWidths = this.columnLayout.buildColumnWidths(this.virtualizer.visibleRect.width, this.collection, colWidths);\n\n let header = this.buildHeader();\n let body = this.buildBody(0);\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 validRect: layoutInfo.rect\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number): LayoutNode {\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 for (let [i, layout] of columns.entries()) {\n layout.layoutInfo.zIndex = columns.length - i + 1;\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 validRect: rect\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 getRenderedColumnWidth(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 if (column?.key != null) {\n width += this.columnWidths.get(column.key);\n }\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 height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = node !== previousLayoutNode.node || 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.getRenderedColumnWidth(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 validRect: layoutInfo.rect\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 skipped = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight) + 1;\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\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 if (y > this.validRect.maxY) {\n // Estimate the remaining height for rows that we don't need to layout right now.\n y += (this.collection.size - (skipped + children.length)) * rowHeight;\n break;\n }\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, validRect: loader.rect});\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, validRect: empty.rect});\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 validRect: layoutInfo.rect.intersection(this.validRect)\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 if (x > this.validRect.maxX) {\n // Adjust existing cached layoutInfo to ensure that it is out of view.\n // This can happen due to column resizing.\n let layoutNode = this.layoutNodes.get(child.key);\n if (layoutNode) {\n layoutNode.layoutInfo.rect.x = x;\n x += layoutNode.layoutInfo.rect.width;\n }\n } else {\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\n this.setChildHeights(children, height);\n\n rect.width = this.layoutInfos.get('header').rect.width;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children,\n validRect: rect.intersection(this.validRect)\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getRenderedColumnWidth(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 validRect: rect\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n // If layout hasn't yet been done for the requested rect, union the\n // new rect with the existing valid rect, and recompute.\n if (!this.validRect.containsRect(rect) && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = this.validRect.union(rect);\n this.rootNodes = this.buildCollection();\n }\n\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[idx], rect);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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"}
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 {getChildNodes} from '@react-stately/collections';\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 validRect: Rect\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 protected lastValidRect: Rect;\n protected validRect: Rect;\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 this.lastValidRect = new Rect();\n this.validRect = new Rect();\n this.contentSize = new Size();\n }\n\n getLayoutInfo(key: Key) {\n let res = this.layoutInfos.get(key);\n\n // If the layout info wasn't found, it might be outside the bounds of the area that we've\n // computed layout for so far. This can happen when accessing a random key, e.g pressing Home/End.\n // Compute the full layout and try again.\n if (!res && this.validRect.area < this.contentSize.area && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = new Rect(0, 0, Infinity, Infinity);\n this.rootNodes = this.buildCollection();\n this.validRect = new Rect(0, 0, this.contentSize.width, this.contentSize.height);\n res = this.layoutInfos.get(key);\n }\n\n return res;\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n // If layout hasn't yet been done for the requested rect, union the\n // new rect with the existing valid rect, and recompute.\n if (!this.validRect.containsRect(rect) && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = this.validRect.union(rect);\n this.rootNodes = this.buildCollection();\n }\n\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 protected shouldInvalidateEverything(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 return invalidationContext.sizeChanged;\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n this.collection = this.virtualizer.collection;\n\n // Reset valid rect if we will have to invalidate everything.\n // Otherwise we can reuse cached layout infos outside the current visible rect.\n this.invalidateEverything = this.shouldInvalidateEverything(invalidationContext);\n if (this.invalidateEverything) {\n this.lastValidRect = this.validRect;\n this.validRect = this.virtualizer.getVisibleRect();\n }\n\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection && this.collection !== 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 this.invalidateEverything = false;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let skipped = 0;\n let nodes = [];\n for (let node of this.collection) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (node.type === 'item' && y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n\n if (node.type === 'item' && y > this.validRect.maxY) {\n y += (this.collection.size - (nodes.length + skipped)) * rowHeight;\n break;\n }\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 isValid(node: Node<T>, y: number) {\n let cached = this.layoutNodes.get(node.key);\n return (\n !this.invalidateEverything &&\n cached &&\n cached.node === node &&\n y === (cached.header || cached.layoutInfo).rect.y &&\n cached.layoutInfo.rect.intersects(this.lastValidRect) &&\n cached.validRect.containsRect(cached.layoutInfo.rect.intersection(this.validRect))\n );\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n if (this.isValid(node, y)) {\n return this.layoutNodes.get(node.key);\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 skipped = 0;\n let children = [];\n for (let child of getChildNodes(node, this.collection)) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n\n if (y > this.validRect.maxY) {\n // Estimate the remaining height for rows that we don't need to layout right now.\n y += ([...getChildNodes(node, this.collection)].length - (children.length + skipped)) * rowHeight;\n break;\n }\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children,\n validRect: layoutInfo.rect.intersection(this.validRect)\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 rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || node !== previousLayoutNode.node || 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 validRect: layoutInfo.rect\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 reseting validRect.\n n.validRect = new Rect();\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): Key | null {\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): Key | null {\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): Key | null {\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): Key | null {\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(): Key | null {\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(): Key | null {\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): Key | null {\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 || this.collection.size === 0) {\n return {type: 'root'};\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 {ColumnSize, TableCollection} from '@react-types/table';\nimport {getChildNodes} from '@react-stately/collections';\nimport {GridNode} from '@react-types/grid';\nimport {InvalidationContext, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {Key} from 'react';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\nimport {Node} from '@react-types/shared';\nimport {TableColumnLayout} from '@react-stately/table';\n\ntype TableLayoutOptions<T> = ListLayoutOptions<T> & {\n columnLayout: TableColumnLayout<T>,\n initialCollection: TableCollection<T>\n}\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n columnWidths: Map<Key, number> = new Map();\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 columnLayout: TableColumnLayout<T>;\n controlledColumns: Map<Key, GridNode<unknown>>;\n uncontrolledColumns: Map<Key, GridNode<unknown>>;\n uncontrolledWidths: Map<Key, ColumnSize>;\n resizingColumn: Key | null;\n\n constructor(options: TableLayoutOptions<T>) {\n super(options);\n this.collection = options.initialCollection;\n this.stickyColumnIndices = [];\n this.disableSticky = this.checkChrome105();\n this.columnLayout = options.columnLayout;\n let [controlledColumns, uncontrolledColumns] = this.columnLayout.splitColumnsIntoControlledAndUncontrolled(this.collection.columns);\n this.controlledColumns = controlledColumns;\n this.uncontrolledColumns = uncontrolledColumns;\n this.uncontrolledWidths = this.columnLayout.getInitialUncontrolledWidths(uncontrolledColumns);\n }\n\n protected shouldInvalidateEverything(invalidationContext: InvalidationContext<Node<T>, unknown>): boolean {\n // If columns changed, clear layout cache.\n return super.shouldInvalidateEverything(invalidationContext) || (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) =>\n c.key !== this.lastCollection.columns[i].key ||\n c.props.width !== this.lastCollection.columns[i].props.width ||\n c.props.minWidth !== this.lastCollection.columns[i].props.minWidth ||\n c.props.maxWidth !== this.lastCollection.columns[i].props.maxWidth\n )\n );\n }\n\n getResizerPosition(): Key {\n return this.getLayoutInfo(this.resizingColumn)?.rect.maxX;\n }\n\n getColumnWidth(key: Key): number {\n return this.columnLayout.getColumnWidth(key) ?? 0;\n }\n\n getColumnMinWidth(key: Key): number {\n let column = this.collection.columns.find(col => col.key === key);\n if (!column) {\n return 0;\n }\n return this.columnLayout.getColumnMinWidth(key);\n }\n\n getColumnMaxWidth(key: Key): number {\n let column = this.collection.columns.find(col => col.key === key);\n if (!column) {\n return 0;\n }\n return this.columnLayout.getColumnMaxWidth(key);\n }\n\n // outside, where this is called, should call props.onColumnResizeStart...\n startResize(key: Key): void {\n this.resizingColumn = key;\n }\n\n // only way to call props.onColumnResize with the new size outside of Layout is to send the result back\n updateResizedColumns(key: Key, width: number): Map<Key, ColumnSize> {\n let newControlled = new Map(Array.from(this.controlledColumns).map(([key, entry]) => [key, entry.props.width]));\n let newSizes = this.columnLayout.resizeColumnWidth(this.virtualizer.visibleRect.width, this.collection, newControlled, this.uncontrolledWidths, key, width);\n\n let map = new Map(Array.from(this.uncontrolledColumns).map(([key]) => [key, newSizes.get(key)]));\n map.set(key, width);\n this.uncontrolledWidths = map;\n // relayoutNow still uses setState, should happen at the same time the parent\n // component's state is processed as a result of props.onColumnResize\n if (this.uncontrolledWidths.size > 0) {\n this.virtualizer.relayoutNow({sizeChanged: true});\n }\n return newSizes;\n }\n\n endResize(): void {\n this.resizingColumn = null;\n }\n\n buildCollection(): LayoutNode[] {\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 this.stickyColumnIndices = [];\n\n for (let column of this.collection.columns) {\n // The selection cell and any other sticky columns always need to be visible.\n // In addition, row headers need to be in the DOM for accessibility labeling.\n if (column.props.isSelectionCell || this.collection.rowHeaderColumnKeys.has(column.key)) {\n this.stickyColumnIndices.push(column.index);\n }\n }\n\n let [controlledColumns, uncontrolledColumns] = this.columnLayout.splitColumnsIntoControlledAndUncontrolled(this.collection.columns);\n this.controlledColumns = controlledColumns;\n this.uncontrolledColumns = uncontrolledColumns;\n let colWidths = this.columnLayout.recombineColumns(this.collection.columns, this.uncontrolledWidths, uncontrolledColumns, controlledColumns);\n\n this.columnWidths = this.columnLayout.buildColumnWidths(this.virtualizer.visibleRect.width, this.collection, colWidths);\n\n let header = this.buildHeader();\n let body = this.buildBody(0);\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 validRect: layoutInfo.rect\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number): LayoutNode {\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 getChildNodes(headerRow, this.collection)) {\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 for (let [i, layout] of columns.entries()) {\n layout.layoutInfo.zIndex = columns.length - i + 1;\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 validRect: rect\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 getRenderedColumnWidth(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 if (column?.key != null) {\n width += this.columnWidths.get(column.key);\n }\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 height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = node !== previousLayoutNode.node || 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.getRenderedColumnWidth(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 validRect: layoutInfo.rect\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 skipped = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight) + 1;\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\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 if (y > this.validRect.maxY) {\n // Estimate the remaining height for rows that we don't need to layout right now.\n y += (this.collection.size - (skipped + children.length)) * rowHeight;\n break;\n }\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, validRect: loader.rect});\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, validRect: empty.rect});\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 validRect: layoutInfo.rect.intersection(this.validRect)\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 getChildNodes(node, this.collection)) {\n if (x > this.validRect.maxX) {\n // Adjust existing cached layoutInfo to ensure that it is out of view.\n // This can happen due to column resizing.\n let layoutNode = this.layoutNodes.get(child.key);\n if (layoutNode) {\n layoutNode.layoutInfo.rect.x = x;\n x += layoutNode.layoutInfo.rect.width;\n }\n } else {\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\n this.setChildHeights(children, height);\n\n rect.width = this.layoutInfos.get('header').rect.width;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children,\n validRect: rect.intersection(this.validRect)\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getRenderedColumnWidth(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 validRect: rect\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n // If layout hasn't yet been done for the requested rect, union the\n // new rect with the existing valid rect, and recompute.\n if (!this.validRect.containsRect(rect) && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = this.validRect.union(rect);\n this.rootNodes = this.buildCollection();\n }\n\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[idx], rect);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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
@@ -1,4 +1,5 @@
1
1
  import $gtW1T$swchelperssrc_define_propertymjs from "@swc/helpers/src/_define_property.mjs";
2
+ import {getChildNodes as $gtW1T$getChildNodes} from "@react-stately/collections";
2
3
  import {Rect as $gtW1T$Rect, LayoutInfo as $gtW1T$LayoutInfo, Size as $gtW1T$Size, Point as $gtW1T$Point, Layout as $gtW1T$Layout} from "@react-stately/virtualizer";
3
4
 
4
5
  /*
@@ -23,6 +24,7 @@ import {Rect as $gtW1T$Rect, LayoutInfo as $gtW1T$LayoutInfo, Size as $gtW1T$Siz
23
24
  * governing permissions and limitations under the License.
24
25
  */
25
26
 
27
+
26
28
  const $61ef60fc9b1041f4$var$DEFAULT_HEIGHT = 48;
27
29
  class $61ef60fc9b1041f4$export$cacbb3924155d68e extends (0, $gtW1T$Layout) {
28
30
  getLayoutInfo(key) {
@@ -190,7 +192,7 @@ class $61ef60fc9b1041f4$export$cacbb3924155d68e extends (0, $gtW1T$Layout) {
190
192
  let startY = y;
191
193
  let skipped = 0;
192
194
  let children = [];
193
- for (let child of node.childNodes){
195
+ for (let child of (0, $gtW1T$getChildNodes)(node, this.collection)){
194
196
  var _this_rowHeight;
195
197
  let rowHeight = (_this_rowHeight = this.rowHeight) !== null && _this_rowHeight !== void 0 ? _this_rowHeight : this.estimatedRowHeight;
196
198
  // Skip rows before the valid rectangle unless they are already cached.
@@ -205,7 +207,7 @@ class $61ef60fc9b1041f4$export$cacbb3924155d68e extends (0, $gtW1T$Layout) {
205
207
  if (y > this.validRect.maxY) {
206
208
  // Estimate the remaining height for rows that we don't need to layout right now.
207
209
  y += ([
208
- ...node.childNodes
210
+ ...(0, $gtW1T$getChildNodes)(node, this.collection)
209
211
  ].length - (children.length + skipped)) * rowHeight;
210
212
  break;
211
213
  }
@@ -442,6 +444,7 @@ class $61ef60fc9b1041f4$export$cacbb3924155d68e extends (0, $gtW1T$Layout) {
442
444
  */
443
445
 
444
446
 
447
+
445
448
  class $a152112e902709bf$export$62444c3c724b1b20 extends (0, $61ef60fc9b1041f4$export$cacbb3924155d68e) {
446
449
  shouldInvalidateEverything(invalidationContext) {
447
450
  // If columns changed, clear layout cache.
@@ -543,7 +546,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends (0, $61ef60fc9b1041f4$ex
543
546
  let row = new (0, $gtW1T$LayoutInfo)("headerrow", headerRow.key, rect);
544
547
  let height = 0;
545
548
  let columns = [];
546
- for (let cell of headerRow.childNodes){
549
+ for (let cell of (0, $gtW1T$getChildNodes)(headerRow, this.collection)){
547
550
  let layoutNode = this.buildChild(cell, x, y);
548
551
  layoutNode.layoutInfo.parentKey = row.key;
549
552
  x = layoutNode.layoutInfo.rect.maxX;
@@ -623,7 +626,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends (0, $61ef60fc9b1041f4$ex
623
626
  let skipped = 0;
624
627
  let width = 0;
625
628
  let children = [];
626
- for (let node of this.collection.body.childNodes){
629
+ for (let node of this.collection){
627
630
  var _this_rowHeight;
628
631
  let rowHeight = ((_this_rowHeight = this.rowHeight) !== null && _this_rowHeight !== void 0 ? _this_rowHeight : this.estimatedRowHeight) + 1;
629
632
  // Skip rows before the valid rectangle unless they are already cached.
@@ -698,7 +701,7 @@ class $a152112e902709bf$export$62444c3c724b1b20 extends (0, $61ef60fc9b1041f4$ex
698
701
  let layoutInfo = new (0, $gtW1T$LayoutInfo)("row", node.key, rect);
699
702
  let children = [];
700
703
  let height = 0;
701
- for (let child of node.childNodes)if (x > this.validRect.maxX) {
704
+ for (let child of (0, $gtW1T$getChildNodes)(node, this.collection))if (x > this.validRect.maxX) {
702
705
  // Adjust existing cached layoutInfo to ensure that it is out of view.
703
706
  // This can happen due to column resizing.
704
707
  let layoutNode = this.layoutNodes.get(child.key);
@@ -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 validRect: Rect\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 protected lastValidRect: Rect;\n protected validRect: Rect;\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 this.lastValidRect = new Rect();\n this.validRect = new Rect();\n this.contentSize = new Size();\n }\n\n getLayoutInfo(key: Key) {\n let res = this.layoutInfos.get(key);\n\n // If the layout info wasn't found, it might be outside the bounds of the area that we've\n // computed layout for so far. This can happen when accessing a random key, e.g pressing Home/End.\n // Compute the full layout and try again.\n if (!res && this.validRect.area < this.contentSize.area && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = new Rect(0, 0, Infinity, Infinity);\n this.rootNodes = this.buildCollection();\n this.validRect = new Rect(0, 0, this.contentSize.width, this.contentSize.height);\n res = this.layoutInfos.get(key);\n }\n\n return res;\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n // If layout hasn't yet been done for the requested rect, union the\n // new rect with the existing valid rect, and recompute.\n if (!this.validRect.containsRect(rect) && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = this.validRect.union(rect);\n this.rootNodes = this.buildCollection();\n }\n\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 protected shouldInvalidateEverything(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 return invalidationContext.sizeChanged;\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n this.collection = this.virtualizer.collection;\n\n // Reset valid rect if we will have to invalidate everything.\n // Otherwise we can reuse cached layout infos outside the current visible rect.\n this.invalidateEverything = this.shouldInvalidateEverything(invalidationContext);\n if (this.invalidateEverything) {\n this.lastValidRect = this.validRect;\n this.validRect = this.virtualizer.getVisibleRect();\n }\n\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection && this.collection !== 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 this.invalidateEverything = false;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let skipped = 0;\n let nodes = [];\n for (let node of this.collection) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (node.type === 'item' && y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n\n if (node.type === 'item' && y > this.validRect.maxY) {\n y += (this.collection.size - (nodes.length + skipped)) * rowHeight;\n break;\n }\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 isValid(node: Node<T>, y: number) {\n let cached = this.layoutNodes.get(node.key);\n return (\n !this.invalidateEverything &&\n cached &&\n cached.node === node &&\n y === (cached.header || cached.layoutInfo).rect.y &&\n cached.layoutInfo.rect.intersects(this.lastValidRect) &&\n cached.validRect.containsRect(cached.layoutInfo.rect.intersection(this.validRect))\n );\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n if (this.isValid(node, y)) {\n return this.layoutNodes.get(node.key);\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 skipped = 0;\n let children = [];\n for (let child of node.childNodes) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n\n if (y > this.validRect.maxY) {\n // Estimate the remaining height for rows that we don't need to layout right now.\n y += ([...node.childNodes].length - (children.length + skipped)) * rowHeight;\n break;\n }\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children,\n validRect: layoutInfo.rect.intersection(this.validRect)\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 rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || node !== previousLayoutNode.node || 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 validRect: layoutInfo.rect\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 reseting validRect.\n n.validRect = new Rect();\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): Key | null {\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): Key | null {\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): Key | null {\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): Key | null {\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(): Key | null {\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(): Key | null {\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): Key | null {\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 || this.collection.size === 0) {\n return {type: 'root'};\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 {ColumnSize, TableCollection} from '@react-types/table';\nimport {GridNode} from '@react-types/grid';\nimport {InvalidationContext, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {Key} from 'react';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\nimport {Node} from '@react-types/shared';\nimport {TableColumnLayout} from '@react-stately/table';\n\ntype TableLayoutOptions<T> = ListLayoutOptions<T> & {\n columnLayout: TableColumnLayout<T>,\n initialCollection: TableCollection<T>\n}\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n columnWidths: Map<Key, number> = new Map();\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 columnLayout: TableColumnLayout<T>;\n controlledColumns: Map<Key, GridNode<unknown>>;\n uncontrolledColumns: Map<Key, GridNode<unknown>>;\n uncontrolledWidths: Map<Key, ColumnSize>;\n resizingColumn: Key | null;\n\n constructor(options: TableLayoutOptions<T>) {\n super(options);\n this.collection = options.initialCollection;\n this.stickyColumnIndices = [];\n this.disableSticky = this.checkChrome105();\n this.columnLayout = options.columnLayout;\n let [controlledColumns, uncontrolledColumns] = this.columnLayout.splitColumnsIntoControlledAndUncontrolled(this.collection.columns);\n this.controlledColumns = controlledColumns;\n this.uncontrolledColumns = uncontrolledColumns;\n this.uncontrolledWidths = this.columnLayout.getInitialUncontrolledWidths(uncontrolledColumns);\n }\n\n protected shouldInvalidateEverything(invalidationContext: InvalidationContext<Node<T>, unknown>): boolean {\n // If columns changed, clear layout cache.\n return super.shouldInvalidateEverything(invalidationContext) || (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) =>\n c.key !== this.lastCollection.columns[i].key ||\n c.props.width !== this.lastCollection.columns[i].props.width ||\n c.props.minWidth !== this.lastCollection.columns[i].props.minWidth ||\n c.props.maxWidth !== this.lastCollection.columns[i].props.maxWidth\n )\n );\n }\n\n getResizerPosition(): Key {\n return this.getLayoutInfo(this.resizingColumn)?.rect.maxX;\n }\n\n getColumnWidth(key: Key): number {\n return this.columnLayout.getColumnWidth(key) ?? 0;\n }\n\n getColumnMinWidth(key: Key): number {\n let column = this.collection.columns.find(col => col.key === key);\n if (!column) {\n return 0;\n }\n return this.columnLayout.getColumnMinWidth(key);\n }\n\n getColumnMaxWidth(key: Key): number {\n let column = this.collection.columns.find(col => col.key === key);\n if (!column) {\n return 0;\n }\n return this.columnLayout.getColumnMaxWidth(key);\n }\n\n // outside, where this is called, should call props.onColumnResizeStart...\n startResize(key: Key): void {\n this.resizingColumn = key;\n }\n\n // only way to call props.onColumnResize with the new size outside of Layout is to send the result back\n updateResizedColumns(key: Key, width: number): Map<Key, ColumnSize> {\n let newControlled = new Map(Array.from(this.controlledColumns).map(([key, entry]) => [key, entry.props.width]));\n let newSizes = this.columnLayout.resizeColumnWidth(this.virtualizer.visibleRect.width, this.collection, newControlled, this.uncontrolledWidths, key, width);\n\n let map = new Map(Array.from(this.uncontrolledColumns).map(([key]) => [key, newSizes.get(key)]));\n map.set(key, width);\n this.uncontrolledWidths = map;\n // relayoutNow still uses setState, should happen at the same time the parent\n // component's state is processed as a result of props.onColumnResize\n if (this.uncontrolledWidths.size > 0) {\n this.virtualizer.relayoutNow({sizeChanged: true});\n }\n return newSizes;\n }\n\n endResize(): void {\n this.resizingColumn = null;\n }\n\n buildCollection(): LayoutNode[] {\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 this.stickyColumnIndices = [];\n\n for (let column of this.collection.columns) {\n // The selection cell and any other sticky columns always need to be visible.\n // In addition, row headers need to be in the DOM for accessibility labeling.\n if (column.props.isSelectionCell || this.collection.rowHeaderColumnKeys.has(column.key)) {\n this.stickyColumnIndices.push(column.index);\n }\n }\n\n let [controlledColumns, uncontrolledColumns] = this.columnLayout.splitColumnsIntoControlledAndUncontrolled(this.collection.columns);\n this.controlledColumns = controlledColumns;\n this.uncontrolledColumns = uncontrolledColumns;\n let colWidths = this.columnLayout.recombineColumns(this.collection.columns, this.uncontrolledWidths, uncontrolledColumns, controlledColumns);\n\n this.columnWidths = this.columnLayout.buildColumnWidths(this.virtualizer.visibleRect.width, this.collection, colWidths);\n\n let header = this.buildHeader();\n let body = this.buildBody(0);\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 validRect: layoutInfo.rect\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number): LayoutNode {\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 for (let [i, layout] of columns.entries()) {\n layout.layoutInfo.zIndex = columns.length - i + 1;\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 validRect: rect\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 getRenderedColumnWidth(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 if (column?.key != null) {\n width += this.columnWidths.get(column.key);\n }\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 height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = node !== previousLayoutNode.node || 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.getRenderedColumnWidth(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 validRect: layoutInfo.rect\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 skipped = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight) + 1;\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\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 if (y > this.validRect.maxY) {\n // Estimate the remaining height for rows that we don't need to layout right now.\n y += (this.collection.size - (skipped + children.length)) * rowHeight;\n break;\n }\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, validRect: loader.rect});\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, validRect: empty.rect});\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 validRect: layoutInfo.rect.intersection(this.validRect)\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 if (x > this.validRect.maxX) {\n // Adjust existing cached layoutInfo to ensure that it is out of view.\n // This can happen due to column resizing.\n let layoutNode = this.layoutNodes.get(child.key);\n if (layoutNode) {\n layoutNode.layoutInfo.rect.x = x;\n x += layoutNode.layoutInfo.rect.width;\n }\n } else {\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\n this.setChildHeights(children, height);\n\n rect.width = this.layoutInfos.get('header').rect.width;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children,\n validRect: rect.intersection(this.validRect)\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getRenderedColumnWidth(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 validRect: rect\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n // If layout hasn't yet been done for the requested rect, union the\n // new rect with the existing valid rect, and recompute.\n if (!this.validRect.containsRect(rect) && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = this.validRect.union(rect);\n this.rootNodes = this.buildCollection();\n }\n\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[idx], rect);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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"}
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 {getChildNodes} from '@react-stately/collections';\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 validRect: Rect\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 protected lastValidRect: Rect;\n protected validRect: Rect;\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 this.lastValidRect = new Rect();\n this.validRect = new Rect();\n this.contentSize = new Size();\n }\n\n getLayoutInfo(key: Key) {\n let res = this.layoutInfos.get(key);\n\n // If the layout info wasn't found, it might be outside the bounds of the area that we've\n // computed layout for so far. This can happen when accessing a random key, e.g pressing Home/End.\n // Compute the full layout and try again.\n if (!res && this.validRect.area < this.contentSize.area && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = new Rect(0, 0, Infinity, Infinity);\n this.rootNodes = this.buildCollection();\n this.validRect = new Rect(0, 0, this.contentSize.width, this.contentSize.height);\n res = this.layoutInfos.get(key);\n }\n\n return res;\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n // If layout hasn't yet been done for the requested rect, union the\n // new rect with the existing valid rect, and recompute.\n if (!this.validRect.containsRect(rect) && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = this.validRect.union(rect);\n this.rootNodes = this.buildCollection();\n }\n\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 protected shouldInvalidateEverything(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 return invalidationContext.sizeChanged;\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n this.collection = this.virtualizer.collection;\n\n // Reset valid rect if we will have to invalidate everything.\n // Otherwise we can reuse cached layout infos outside the current visible rect.\n this.invalidateEverything = this.shouldInvalidateEverything(invalidationContext);\n if (this.invalidateEverything) {\n this.lastValidRect = this.validRect;\n this.validRect = this.virtualizer.getVisibleRect();\n }\n\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection && this.collection !== 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 this.invalidateEverything = false;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let skipped = 0;\n let nodes = [];\n for (let node of this.collection) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (node.type === 'item' && y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n\n if (node.type === 'item' && y > this.validRect.maxY) {\n y += (this.collection.size - (nodes.length + skipped)) * rowHeight;\n break;\n }\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 isValid(node: Node<T>, y: number) {\n let cached = this.layoutNodes.get(node.key);\n return (\n !this.invalidateEverything &&\n cached &&\n cached.node === node &&\n y === (cached.header || cached.layoutInfo).rect.y &&\n cached.layoutInfo.rect.intersects(this.lastValidRect) &&\n cached.validRect.containsRect(cached.layoutInfo.rect.intersection(this.validRect))\n );\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n if (this.isValid(node, y)) {\n return this.layoutNodes.get(node.key);\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 skipped = 0;\n let children = [];\n for (let child of getChildNodes(node, this.collection)) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n\n if (y > this.validRect.maxY) {\n // Estimate the remaining height for rows that we don't need to layout right now.\n y += ([...getChildNodes(node, this.collection)].length - (children.length + skipped)) * rowHeight;\n break;\n }\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children,\n validRect: layoutInfo.rect.intersection(this.validRect)\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 rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || node !== previousLayoutNode.node || 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 validRect: layoutInfo.rect\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 reseting validRect.\n n.validRect = new Rect();\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): Key | null {\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): Key | null {\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): Key | null {\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): Key | null {\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(): Key | null {\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(): Key | null {\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): Key | null {\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 || this.collection.size === 0) {\n return {type: 'root'};\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 {ColumnSize, TableCollection} from '@react-types/table';\nimport {getChildNodes} from '@react-stately/collections';\nimport {GridNode} from '@react-types/grid';\nimport {InvalidationContext, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {Key} from 'react';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\nimport {Node} from '@react-types/shared';\nimport {TableColumnLayout} from '@react-stately/table';\n\ntype TableLayoutOptions<T> = ListLayoutOptions<T> & {\n columnLayout: TableColumnLayout<T>,\n initialCollection: TableCollection<T>\n}\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n columnWidths: Map<Key, number> = new Map();\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 columnLayout: TableColumnLayout<T>;\n controlledColumns: Map<Key, GridNode<unknown>>;\n uncontrolledColumns: Map<Key, GridNode<unknown>>;\n uncontrolledWidths: Map<Key, ColumnSize>;\n resizingColumn: Key | null;\n\n constructor(options: TableLayoutOptions<T>) {\n super(options);\n this.collection = options.initialCollection;\n this.stickyColumnIndices = [];\n this.disableSticky = this.checkChrome105();\n this.columnLayout = options.columnLayout;\n let [controlledColumns, uncontrolledColumns] = this.columnLayout.splitColumnsIntoControlledAndUncontrolled(this.collection.columns);\n this.controlledColumns = controlledColumns;\n this.uncontrolledColumns = uncontrolledColumns;\n this.uncontrolledWidths = this.columnLayout.getInitialUncontrolledWidths(uncontrolledColumns);\n }\n\n protected shouldInvalidateEverything(invalidationContext: InvalidationContext<Node<T>, unknown>): boolean {\n // If columns changed, clear layout cache.\n return super.shouldInvalidateEverything(invalidationContext) || (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) =>\n c.key !== this.lastCollection.columns[i].key ||\n c.props.width !== this.lastCollection.columns[i].props.width ||\n c.props.minWidth !== this.lastCollection.columns[i].props.minWidth ||\n c.props.maxWidth !== this.lastCollection.columns[i].props.maxWidth\n )\n );\n }\n\n getResizerPosition(): Key {\n return this.getLayoutInfo(this.resizingColumn)?.rect.maxX;\n }\n\n getColumnWidth(key: Key): number {\n return this.columnLayout.getColumnWidth(key) ?? 0;\n }\n\n getColumnMinWidth(key: Key): number {\n let column = this.collection.columns.find(col => col.key === key);\n if (!column) {\n return 0;\n }\n return this.columnLayout.getColumnMinWidth(key);\n }\n\n getColumnMaxWidth(key: Key): number {\n let column = this.collection.columns.find(col => col.key === key);\n if (!column) {\n return 0;\n }\n return this.columnLayout.getColumnMaxWidth(key);\n }\n\n // outside, where this is called, should call props.onColumnResizeStart...\n startResize(key: Key): void {\n this.resizingColumn = key;\n }\n\n // only way to call props.onColumnResize with the new size outside of Layout is to send the result back\n updateResizedColumns(key: Key, width: number): Map<Key, ColumnSize> {\n let newControlled = new Map(Array.from(this.controlledColumns).map(([key, entry]) => [key, entry.props.width]));\n let newSizes = this.columnLayout.resizeColumnWidth(this.virtualizer.visibleRect.width, this.collection, newControlled, this.uncontrolledWidths, key, width);\n\n let map = new Map(Array.from(this.uncontrolledColumns).map(([key]) => [key, newSizes.get(key)]));\n map.set(key, width);\n this.uncontrolledWidths = map;\n // relayoutNow still uses setState, should happen at the same time the parent\n // component's state is processed as a result of props.onColumnResize\n if (this.uncontrolledWidths.size > 0) {\n this.virtualizer.relayoutNow({sizeChanged: true});\n }\n return newSizes;\n }\n\n endResize(): void {\n this.resizingColumn = null;\n }\n\n buildCollection(): LayoutNode[] {\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 this.stickyColumnIndices = [];\n\n for (let column of this.collection.columns) {\n // The selection cell and any other sticky columns always need to be visible.\n // In addition, row headers need to be in the DOM for accessibility labeling.\n if (column.props.isSelectionCell || this.collection.rowHeaderColumnKeys.has(column.key)) {\n this.stickyColumnIndices.push(column.index);\n }\n }\n\n let [controlledColumns, uncontrolledColumns] = this.columnLayout.splitColumnsIntoControlledAndUncontrolled(this.collection.columns);\n this.controlledColumns = controlledColumns;\n this.uncontrolledColumns = uncontrolledColumns;\n let colWidths = this.columnLayout.recombineColumns(this.collection.columns, this.uncontrolledWidths, uncontrolledColumns, controlledColumns);\n\n this.columnWidths = this.columnLayout.buildColumnWidths(this.virtualizer.visibleRect.width, this.collection, colWidths);\n\n let header = this.buildHeader();\n let body = this.buildBody(0);\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 validRect: layoutInfo.rect\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number): LayoutNode {\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 getChildNodes(headerRow, this.collection)) {\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 for (let [i, layout] of columns.entries()) {\n layout.layoutInfo.zIndex = columns.length - i + 1;\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 validRect: rect\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 getRenderedColumnWidth(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 if (column?.key != null) {\n width += this.columnWidths.get(column.key);\n }\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 height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = node !== previousLayoutNode.node || 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.getRenderedColumnWidth(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 validRect: layoutInfo.rect\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 skipped = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection) {\n let rowHeight = (this.rowHeight ?? this.estimatedRowHeight) + 1;\n\n // Skip rows before the valid rectangle unless they are already cached.\n if (y + rowHeight < this.validRect.y && !this.isValid(node, y)) {\n y += rowHeight;\n skipped++;\n continue;\n }\n\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 if (y > this.validRect.maxY) {\n // Estimate the remaining height for rows that we don't need to layout right now.\n y += (this.collection.size - (skipped + children.length)) * rowHeight;\n break;\n }\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, validRect: loader.rect});\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, validRect: empty.rect});\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 validRect: layoutInfo.rect.intersection(this.validRect)\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 getChildNodes(node, this.collection)) {\n if (x > this.validRect.maxX) {\n // Adjust existing cached layoutInfo to ensure that it is out of view.\n // This can happen due to column resizing.\n let layoutNode = this.layoutNodes.get(child.key);\n if (layoutNode) {\n layoutNode.layoutInfo.rect.x = x;\n x += layoutNode.layoutInfo.rect.width;\n }\n } else {\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\n this.setChildHeights(children, height);\n\n rect.width = this.layoutInfos.get('header').rect.width;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children,\n validRect: rect.intersection(this.validRect)\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getRenderedColumnWidth(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 validRect: rect\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n // If layout hasn't yet been done for the requested rect, union the\n // new rect with the existing valid rect, and recompute.\n if (!this.validRect.containsRect(rect) && this.lastCollection) {\n this.lastValidRect = this.validRect;\n this.validRect = this.validRect.union(rect);\n this.rootNodes = this.buildCollection();\n }\n\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[idx], rect);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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 if (idx < node.children.length) {\n res.push(node.children[idx].layoutInfo);\n }\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"}
@@ -1 +1 @@
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"}
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.11.1-nightly.3734+05fb9aa6b",
3
+ "version": "3.11.1-nightly.3737+b64e64f28",
4
4
  "description": "Spectrum UI components in React",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -22,11 +22,12 @@
22
22
  "url": "https://github.com/adobe/react-spectrum"
23
23
  },
24
24
  "dependencies": {
25
- "@react-stately/table": "3.8.1-nightly.3734+05fb9aa6b",
26
- "@react-stately/virtualizer": "3.5.1-nightly.3734+05fb9aa6b",
27
- "@react-types/grid": "3.1.7-nightly.3734+05fb9aa6b",
28
- "@react-types/shared": "3.0.0-nightly.2034+05fb9aa6b",
29
- "@react-types/table": "3.5.1-nightly.3734+05fb9aa6b",
25
+ "@react-stately/collections": "3.0.0-nightly.2037+b64e64f28",
26
+ "@react-stately/table": "3.8.1-nightly.3737+b64e64f28",
27
+ "@react-stately/virtualizer": "3.5.1-nightly.3737+b64e64f28",
28
+ "@react-types/grid": "3.1.7-nightly.3737+b64e64f28",
29
+ "@react-types/shared": "3.0.0-nightly.2037+b64e64f28",
30
+ "@react-types/table": "3.5.1-nightly.3737+b64e64f28",
30
31
  "@swc/helpers": "^0.4.14"
31
32
  },
32
33
  "peerDependencies": {
@@ -35,5 +36,5 @@
35
36
  "publishConfig": {
36
37
  "access": "public"
37
38
  },
38
- "gitHead": "05fb9aa6bcc04fb0104d7b991ac30d03f33613fa"
39
+ "gitHead": "b64e64f28b3d06a69ad2c5ae0dd994c3a07d4099"
39
40
  }
package/src/ListLayout.ts CHANGED
@@ -11,6 +11,7 @@
11
11
  */
12
12
 
13
13
  import {Collection, DropTarget, DropTargetDelegate, KeyboardDelegate, Node} from '@react-types/shared';
14
+ import {getChildNodes} from '@react-stately/collections';
14
15
  import {InvalidationContext, Layout, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';
15
16
  import {Key} from 'react';
16
17
  // import { DragTarget, DropTarget, DropPosition } from '@react-types/shared';
@@ -312,7 +313,7 @@ export class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate,
312
313
  let startY = y;
313
314
  let skipped = 0;
314
315
  let children = [];
315
- for (let child of node.childNodes) {
316
+ for (let child of getChildNodes(node, this.collection)) {
316
317
  let rowHeight = (this.rowHeight ?? this.estimatedRowHeight);
317
318
 
318
319
  // Skip rows before the valid rectangle unless they are already cached.
@@ -328,7 +329,7 @@ export class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate,
328
329
 
329
330
  if (y > this.validRect.maxY) {
330
331
  // Estimate the remaining height for rows that we don't need to layout right now.
331
- y += ([...node.childNodes].length - (children.length + skipped)) * rowHeight;
332
+ y += ([...getChildNodes(node, this.collection)].length - (children.length + skipped)) * rowHeight;
332
333
  break;
333
334
  }
334
335
  }
@@ -11,6 +11,7 @@
11
11
  */
12
12
 
13
13
  import {ColumnSize, TableCollection} from '@react-types/table';
14
+ import {getChildNodes} from '@react-stately/collections';
14
15
  import {GridNode} from '@react-types/grid';
15
16
  import {InvalidationContext, LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';
16
17
  import {Key} from 'react';
@@ -181,7 +182,7 @@ export class TableLayout<T> extends ListLayout<T> {
181
182
 
182
183
  let height = 0;
183
184
  let columns: LayoutNode[] = [];
184
- for (let cell of headerRow.childNodes) {
185
+ for (let cell of getChildNodes(headerRow, this.collection)) {
185
186
  let layoutNode = this.buildChild(cell, x, y);
186
187
  layoutNode.layoutInfo.parentKey = row.key;
187
188
  x = layoutNode.layoutInfo.rect.maxX;
@@ -275,7 +276,7 @@ export class TableLayout<T> extends ListLayout<T> {
275
276
  let skipped = 0;
276
277
  let width = 0;
277
278
  let children: LayoutNode[] = [];
278
- for (let node of this.collection.body.childNodes) {
279
+ for (let node of this.collection) {
279
280
  let rowHeight = (this.rowHeight ?? this.estimatedRowHeight) + 1;
280
281
 
281
282
  // Skip rows before the valid rectangle unless they are already cached.
@@ -353,7 +354,7 @@ export class TableLayout<T> extends ListLayout<T> {
353
354
 
354
355
  let children: LayoutNode[] = [];
355
356
  let height = 0;
356
- for (let child of node.childNodes) {
357
+ for (let child of getChildNodes(node, this.collection)) {
357
358
  if (x > this.validRect.maxX) {
358
359
  // Adjust existing cached layoutInfo to ensure that it is out of view.
359
360
  // This can happen due to column resizing.