@react-stately/layout 3.4.4-nightly.3111 → 3.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,4 +1,4 @@
1
- var $5t6DB$reactstatelyvirtualizer = require("@react-stately/virtualizer");
1
+ var $8sN5A$reactstatelyvirtualizer = require("@react-stately/virtualizer");
2
2
 
3
3
  function $parcel$exportWildcard(dest, source) {
4
4
  Object.keys(source).forEach(function(key) {
@@ -19,34 +19,12 @@ function $parcel$exportWildcard(dest, source) {
19
19
  function $parcel$export(e, n, v, s) {
20
20
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
21
21
  }
22
- var $8abb5663c9b3120c$exports = {};
22
+ var $0ad00e571eb11641$exports = {};
23
23
 
24
- $parcel$export($8abb5663c9b3120c$exports, "ListLayout", () => $8abb5663c9b3120c$export$cacbb3924155d68e);
24
+ $parcel$export($0ad00e571eb11641$exports, "ListLayout", () => $0ad00e571eb11641$export$cacbb3924155d68e);
25
25
 
26
- const $8abb5663c9b3120c$var$DEFAULT_HEIGHT = 48;
27
- class $8abb5663c9b3120c$export$cacbb3924155d68e extends $5t6DB$reactstatelyvirtualizer.Layout {
28
- /**
29
- * Creates a new ListLayout with options. See the list of properties below for a description
30
- * of the options that can be provided.
31
- */ constructor(options = {
32
- }){
33
- super();
34
- this.disabledKeys = new Set();
35
- this.rowHeight = options.rowHeight;
36
- this.estimatedRowHeight = options.estimatedRowHeight;
37
- this.headingHeight = options.headingHeight;
38
- this.estimatedHeadingHeight = options.estimatedHeadingHeight;
39
- this.padding = options.padding || 0;
40
- this.indentationForItem = options.indentationForItem;
41
- this.collator = options.collator;
42
- this.loaderHeight = options.loaderHeight;
43
- this.placeholderHeight = options.placeholderHeight;
44
- this.layoutInfos = new Map();
45
- this.layoutNodes = new Map();
46
- this.rootNodes = [];
47
- this.lastWidth = 0;
48
- this.lastCollection = null;
49
- }
26
+ const $0ad00e571eb11641$var$DEFAULT_HEIGHT = 48;
27
+ class $0ad00e571eb11641$export$cacbb3924155d68e extends $8sN5A$reactstatelyvirtualizer.Layout {
50
28
  getLayoutInfo(key) {
51
29
  return this.layoutInfos.get(key);
52
30
  }
@@ -76,8 +54,9 @@ class $8abb5663c9b3120c$export$cacbb3924155d68e extends $5t6DB$reactstatelyvirtu
76
54
  for (let key of this.lastCollection.getKeys())if (!this.collection.getItem(key)) {
77
55
  let layoutNode = this.layoutNodes.get(key);
78
56
  if (layoutNode) {
57
+ var ref;
79
58
  this.layoutInfos.delete(layoutNode.layoutInfo.key);
80
- this.layoutInfos.delete(layoutNode.header?.key);
59
+ this.layoutInfos.delete((ref = layoutNode.header) === null || ref === void 0 ? void 0 : ref.key);
81
60
  this.layoutNodes.delete(key);
82
61
  }
83
62
  }
@@ -94,8 +73,9 @@ class $8abb5663c9b3120c$export$cacbb3924155d68e extends $5t6DB$reactstatelyvirtu
94
73
  nodes.push(layoutNode);
95
74
  }
96
75
  if (this.isLoading) {
97
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(0, y, this.virtualizer.visibleRect.width, this.loaderHeight ?? this.virtualizer.visibleRect.height);
98
- let loader = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('loader', 'loader', rect);
76
+ var _loaderHeight;
77
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(0, y, this.virtualizer.visibleRect.width, (_loaderHeight = this.loaderHeight) !== null && _loaderHeight !== void 0 ? _loaderHeight : this.virtualizer.visibleRect.height);
78
+ let loader = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('loader', 'loader', rect);
99
79
  this.layoutInfos.set('loader', loader);
100
80
  nodes.push({
101
81
  layoutInfo: loader
@@ -103,15 +83,16 @@ class $8abb5663c9b3120c$export$cacbb3924155d68e extends $5t6DB$reactstatelyvirtu
103
83
  y = loader.rect.maxY;
104
84
  }
105
85
  if (nodes.length === 0) {
106
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(0, y, this.virtualizer.visibleRect.width, this.placeholderHeight ?? this.virtualizer.visibleRect.height);
107
- let placeholder = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('placeholder', 'placeholder', rect);
86
+ var _placeholderHeight;
87
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(0, y, this.virtualizer.visibleRect.width, (_placeholderHeight = this.placeholderHeight) !== null && _placeholderHeight !== void 0 ? _placeholderHeight : this.virtualizer.visibleRect.height);
88
+ let placeholder = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('placeholder', 'placeholder', rect);
108
89
  this.layoutInfos.set('placeholder', placeholder);
109
90
  nodes.push({
110
91
  layoutInfo: placeholder
111
92
  });
112
93
  y = placeholder.rect.maxY;
113
94
  }
114
- this.contentSize = new $5t6DB$reactstatelyvirtualizer.Size(this.virtualizer.visibleRect.width, y + this.padding);
95
+ this.contentSize = new $8sN5A$reactstatelyvirtualizer.Size(this.virtualizer.visibleRect.width, y + this.padding);
115
96
  return nodes;
116
97
  }
117
98
  buildChild(node, x, y) {
@@ -153,14 +134,14 @@ class $8abb5663c9b3120c$export$cacbb3924155d68e extends $5t6DB$reactstatelyvirtu
153
134
  isEstimated = true;
154
135
  }
155
136
  }
156
- if (rectHeight == null) rectHeight = $8abb5663c9b3120c$var$DEFAULT_HEIGHT;
157
- let headerRect = new $5t6DB$reactstatelyvirtualizer.Rect(0, y, width, rectHeight);
158
- let header = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('header', node.key + ':header', headerRect);
137
+ if (rectHeight == null) rectHeight = $0ad00e571eb11641$var$DEFAULT_HEIGHT;
138
+ let headerRect = new $8sN5A$reactstatelyvirtualizer.Rect(0, y, width, rectHeight);
139
+ let header = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('header', node.key + ':header', headerRect);
159
140
  header.estimatedSize = isEstimated;
160
141
  header.parentKey = node.key;
161
142
  y += header.rect.height;
162
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(0, y, width, 0);
163
- let layoutInfo = new $5t6DB$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
143
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(0, y, width, 0);
144
+ let layoutInfo = new $8sN5A$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
164
145
  let startY = y;
165
146
  let children = [];
166
147
  for (let child of node.childNodes){
@@ -195,10 +176,10 @@ class $8abb5663c9b3120c$export$cacbb3924155d68e extends $5t6DB$reactstatelyvirtu
195
176
  isEstimated = true;
196
177
  }
197
178
  }
198
- if (rectHeight == null) rectHeight = $8abb5663c9b3120c$var$DEFAULT_HEIGHT;
179
+ if (rectHeight == null) rectHeight = $0ad00e571eb11641$var$DEFAULT_HEIGHT;
199
180
  if (typeof this.indentationForItem === 'function') x += this.indentationForItem(this.collection, node.key) || 0;
200
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(x, y, width - x, rectHeight);
201
- let layoutInfo = new $5t6DB$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
181
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(x, y, width - x, rectHeight);
182
+ let layoutInfo = new $8sN5A$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
202
183
  layoutInfo.estimatedSize = isEstimated;
203
184
  return {
204
185
  layoutInfo: layoutInfo
@@ -342,21 +323,37 @@ class $8abb5663c9b3120c$export$cacbb3924155d68e extends $5t6DB$reactstatelyvirtu
342
323
  layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';
343
324
  return layoutInfo;
344
325
  }
326
+ /**
327
+ * Creates a new ListLayout with options. See the list of properties below for a description
328
+ * of the options that can be provided.
329
+ */ constructor(options = {
330
+ }){
331
+ super();
332
+ this.disabledKeys = new Set();
333
+ this.rowHeight = options.rowHeight;
334
+ this.estimatedRowHeight = options.estimatedRowHeight;
335
+ this.headingHeight = options.headingHeight;
336
+ this.estimatedHeadingHeight = options.estimatedHeadingHeight;
337
+ this.padding = options.padding || 0;
338
+ this.indentationForItem = options.indentationForItem;
339
+ this.collator = options.collator;
340
+ this.loaderHeight = options.loaderHeight;
341
+ this.placeholderHeight = options.placeholderHeight;
342
+ this.layoutInfos = new Map();
343
+ this.layoutNodes = new Map();
344
+ this.rootNodes = [];
345
+ this.lastWidth = 0;
346
+ this.lastCollection = null;
347
+ }
345
348
  }
346
349
 
347
350
 
348
- var $f28e1b71e907159b$exports = {};
351
+ var $93909d0830276040$exports = {};
349
352
 
350
- $parcel$export($f28e1b71e907159b$exports, "TableLayout", () => $f28e1b71e907159b$export$62444c3c724b1b20);
353
+ $parcel$export($93909d0830276040$exports, "TableLayout", () => $93909d0830276040$export$62444c3c724b1b20);
351
354
 
352
355
 
353
- class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export$cacbb3924155d68e {
354
- constructor(options){
355
- super(options);
356
- this.wasLoading = false;
357
- this.isLoading = false;
358
- this.getDefaultWidth = options.getDefaultWidth;
359
- }
356
+ class $93909d0830276040$export$62444c3c724b1b20 extends $0ad00e571eb11641$export$cacbb3924155d68e {
360
357
  buildCollection() {
361
358
  // If columns changed, clear layout cache.
362
359
  if (!this.lastCollection || this.collection.columns.length !== this.lastCollection.columns.length || this.collection.columns.some((c, i)=>c.key !== this.lastCollection.columns[i].key
@@ -370,7 +367,7 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
370
367
  let header = this.buildHeader();
371
368
  let body = this.buildBody(0);
372
369
  body.layoutInfo.rect.width = Math.max(header.layoutInfo.rect.width, body.layoutInfo.rect.width);
373
- this.contentSize = new $5t6DB$reactstatelyvirtualizer.Size(body.layoutInfo.rect.width, body.layoutInfo.rect.maxY);
370
+ this.contentSize = new $8sN5A$reactstatelyvirtualizer.Size(body.layoutInfo.rect.width, body.layoutInfo.rect.maxY);
374
371
  return [
375
372
  header,
376
373
  body
@@ -384,7 +381,8 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
384
381
  let remainingSpace = this.virtualizer.visibleRect.width;
385
382
  for (let column of this.collection.columns){
386
383
  let props = column.props;
387
- let width = props.width ?? this.getDefaultWidth(props);
384
+ var _width;
385
+ let width = (_width = props.width) !== null && _width !== void 0 ? _width : this.getDefaultWidth(props);
388
386
  if (width != null) {
389
387
  let w = this.parseWidth(width);
390
388
  this.columnWidths.set(column.key, w);
@@ -417,8 +415,8 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
417
415
  return width;
418
416
  }
419
417
  buildHeader() {
420
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(0, 0, 0, 0);
421
- let layoutInfo = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('header', 'header', rect);
418
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(0, 0, 0, 0);
419
+ let layoutInfo = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('header', 'header', rect);
422
420
  let y = 0;
423
421
  let width = 0;
424
422
  let children = [];
@@ -438,8 +436,8 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
438
436
  };
439
437
  }
440
438
  buildHeaderRow(headerRow, x, y) {
441
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(0, y, 0, 0);
442
- let row = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('headerrow', headerRow.key, rect);
439
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(0, y, 0, 0);
440
+ let row = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('headerrow', headerRow.key, rect);
443
441
  let height = 0;
444
442
  let columns = [];
445
443
  for (let cell of headerRow.childNodes){
@@ -466,7 +464,8 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
466
464
  }
467
465
  }
468
466
  getColumnWidth(node) {
469
- let colspan = node.colspan ?? 1;
467
+ var _colspan;
468
+ let colspan = (_colspan = node.colspan) !== null && _colspan !== void 0 ? _colspan : 1;
470
469
  let width = 0;
471
470
  for(let i = 0; i < colspan; i++){
472
471
  let column = this.collection.columns[node.index + i];
@@ -498,11 +497,12 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
498
497
  };
499
498
  }
500
499
  buildColumn(node, x, y) {
500
+ var ref;
501
501
  let width = this.getColumnWidth(node);
502
502
  let { height: height , isEstimated: isEstimated } = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);
503
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(x, y, width, height);
504
- let layoutInfo = new $5t6DB$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
505
- layoutInfo.isSticky = node.props?.isSelectionCell;
503
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(x, y, width, height);
504
+ let layoutInfo = new $8sN5A$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
505
+ layoutInfo.isSticky = (ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell;
506
506
  layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
507
507
  layoutInfo.estimatedSize = isEstimated;
508
508
  return {
@@ -510,8 +510,8 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
510
510
  };
511
511
  }
512
512
  buildBody(y) {
513
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(0, y, 0, 0);
514
- let layoutInfo = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('rowgroup', 'body', rect);
513
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(0, y, 0, 0);
514
+ let layoutInfo = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('rowgroup', 'body', rect);
515
515
  let startY = y;
516
516
  let width = 0;
517
517
  let children = [];
@@ -523,8 +523,8 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
523
523
  children.push(layoutNode);
524
524
  }
525
525
  if (this.isLoading) {
526
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(0, y, width || this.virtualizer.visibleRect.width, children.length === 0 ? this.virtualizer.visibleRect.height : 60);
527
- let loader = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('loader', 'loader', rect);
526
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(0, y, width || this.virtualizer.visibleRect.width, children.length === 0 ? this.virtualizer.visibleRect.height : 60);
527
+ let loader = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('loader', 'loader', rect);
528
528
  loader.parentKey = 'body';
529
529
  loader.isSticky = children.length === 0;
530
530
  this.layoutInfos.set('loader', loader);
@@ -534,8 +534,8 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
534
534
  y = loader.rect.maxY;
535
535
  width = Math.max(width, rect.width);
536
536
  } else if (children.length === 0) {
537
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(0, y, this.virtualizer.visibleRect.width, this.virtualizer.visibleRect.height);
538
- let empty = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('empty', 'empty', rect);
537
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(0, y, this.virtualizer.visibleRect.width, this.virtualizer.visibleRect.height);
538
+ let empty = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('empty', 'empty', rect);
539
539
  empty.parentKey = 'body';
540
540
  empty.isSticky = true;
541
541
  this.layoutInfos.set('empty', empty);
@@ -569,8 +569,8 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
569
569
  }
570
570
  }
571
571
  buildRow(node, x, y) {
572
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(x, y, 0, 0);
573
- let layoutInfo = new $5t6DB$reactstatelyvirtualizer.LayoutInfo('row', node.key, rect);
572
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(x, y, 0, 0);
573
+ let layoutInfo = new $8sN5A$reactstatelyvirtualizer.LayoutInfo('row', node.key, rect);
574
574
  let children = [];
575
575
  let height = 0;
576
576
  for (let child of node.childNodes){
@@ -588,11 +588,12 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
588
588
  };
589
589
  }
590
590
  buildCell(node, x, y) {
591
+ var ref;
591
592
  let width = this.getColumnWidth(node);
592
593
  let { height: height , isEstimated: isEstimated } = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);
593
- let rect = new $5t6DB$reactstatelyvirtualizer.Rect(x, y, width, height);
594
- let layoutInfo = new $5t6DB$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
595
- layoutInfo.isSticky = node.props?.isSelectionCell;
594
+ let rect = new $8sN5A$reactstatelyvirtualizer.Rect(x, y, width, height);
595
+ let layoutInfo = new $8sN5A$reactstatelyvirtualizer.LayoutInfo(node.type, node.key, rect);
596
+ layoutInfo.isSticky = (ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell;
596
597
  layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
597
598
  layoutInfo.estimatedSize = isEstimated;
598
599
  return {
@@ -672,11 +673,17 @@ class $f28e1b71e907159b$export$62444c3c724b1b20 extends $8abb5663c9b3120c$export
672
673
  if (this.wasLoading) res.transform = null;
673
674
  return res;
674
675
  }
676
+ constructor(options){
677
+ super(options);
678
+ this.wasLoading = false;
679
+ this.isLoading = false;
680
+ this.getDefaultWidth = options.getDefaultWidth;
681
+ }
675
682
  }
676
683
 
677
684
 
678
- $parcel$exportWildcard(module.exports, $8abb5663c9b3120c$exports);
679
- $parcel$exportWildcard(module.exports, $f28e1b71e907159b$exports);
685
+ $parcel$exportWildcard(module.exports, $0ad00e571eb11641$exports);
686
+ $parcel$exportWildcard(module.exports, $93909d0830276040$exports);
680
687
 
681
688
 
682
689
  //# sourceMappingURL=main.js.map
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 */\n\nexport * from './ListLayout';\nexport * 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, KeyboardDelegate, Node} from '@react-types/shared';\nimport {InvalidationContext, Layout, LayoutInfo, 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};\n\n// A wrapper around LayoutInfo that supports hierarchy\nexport interface LayoutNode {\n node?: Node<unknown>,\n layoutInfo: LayoutInfo,\n header?: LayoutInfo,\n children?: LayoutNode[]\n}\n\nconst DEFAULT_HEIGHT = 48;\n\n/**\n * The ListLayout class is an implementation of a collection view {@link Layout}\n * it is used for creating lists and lists with indented sub-lists.\n *\n * To configure a ListLayout, you can use the properties to define the\n * layouts and/or use the method for defining indentation.\n * The {@link ListKeyboardDelegate} extends the existing collection view\n * delegate with an additional method to do this (it uses the same delegate object as\n * the collection view itself).\n */\nexport class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate {\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 isLoading: boolean;\n protected lastWidth: number;\n protected lastCollection: Collection<Node<T>>;\n protected rootNodes: LayoutNode[];\n protected collator: Intl.Collator;\n protected invalidateEverything: boolean;\n protected loaderHeight: number;\n protected placeholderHeight: number;\n\n /**\n * Creates a new ListLayout with options. See the list of properties below for a description\n * of the options that can be provided.\n */\n constructor(options: ListLayoutOptions<T> = {}) {\n super();\n this.rowHeight = options.rowHeight;\n this.estimatedRowHeight = options.estimatedRowHeight;\n this.headingHeight = options.headingHeight;\n this.estimatedHeadingHeight = options.estimatedHeadingHeight;\n this.padding = options.padding || 0;\n this.indentationForItem = options.indentationForItem;\n this.collator = options.collator;\n this.loaderHeight = options.loaderHeight;\n this.placeholderHeight = options.placeholderHeight;\n this.layoutInfos = new Map();\n this.layoutNodes = new Map();\n this.rootNodes = [];\n this.lastWidth = 0;\n this.lastCollection = null;\n }\n\n getLayoutInfo(key: Key) {\n return this.layoutInfos.get(key);\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n let addNodes = (nodes: LayoutNode[]) => {\n for (let node of nodes) {\n if (this.isVisible(node, rect)) {\n res.push(node.layoutInfo);\n if (node.header) {\n res.push(node.header);\n }\n\n if (node.children) {\n addNodes(node.children);\n }\n }\n }\n };\n\n addNodes(this.rootNodes);\n return res;\n }\n\n isVisible(node: LayoutNode, rect: Rect) {\n return node.layoutInfo.rect.intersects(rect) || node.layoutInfo.isSticky;\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n // Invalidate cache if the size of the collection changed.\n // In this case, we need to recalculate the entire layout.\n this.invalidateEverything = invalidationContext.sizeChanged;\n\n this.collection = this.virtualizer.collection;\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection) {\n for (let key of this.lastCollection.getKeys()) {\n if (!this.collection.getItem(key)) {\n let layoutNode = this.layoutNodes.get(key);\n if (layoutNode) {\n this.layoutInfos.delete(layoutNode.layoutInfo.key);\n this.layoutInfos.delete(layoutNode.header?.key);\n this.layoutNodes.delete(key);\n }\n }\n }\n }\n\n this.lastWidth = this.virtualizer.visibleRect.width;\n this.lastCollection = this.collection;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let nodes = [];\n for (let node of this.collection) {\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.loaderHeight ?? this.virtualizer.visibleRect.height);\n let loader = new LayoutInfo('loader', 'loader', rect);\n this.layoutInfos.set('loader', loader);\n nodes.push({layoutInfo: loader});\n y = loader.rect.maxY;\n }\n\n if (nodes.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.placeholderHeight ?? this.virtualizer.visibleRect.height);\n let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);\n this.layoutInfos.set('placeholder', placeholder);\n nodes.push({layoutInfo: placeholder});\n y = placeholder.rect.maxY;\n }\n\n this.contentSize = new Size(this.virtualizer.visibleRect.width, y + this.padding);\n return nodes;\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n let cached = this.layoutNodes.get(node.key);\n if (!this.invalidateEverything && cached && cached.node === node && y === (cached.header || cached.layoutInfo).rect.y) {\n return cached;\n }\n\n let layoutNode = this.buildNode(node, x, y);\n layoutNode.node = node;\n\n layoutNode.layoutInfo.parentKey = node.parentKey || null;\n this.layoutInfos.set(layoutNode.layoutInfo.key, layoutNode.layoutInfo);\n if (layoutNode.header) {\n this.layoutInfos.set(layoutNode.header.key, layoutNode.header);\n }\n\n this.layoutNodes.set(node.key, layoutNode);\n return layoutNode;\n }\n\n buildNode(node: Node<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'section':\n return this.buildSection(node, x, y);\n case 'item':\n return this.buildItem(node, x, y);\n }\n }\n\n buildSection(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.headingHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode && previousLayoutNode.header) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.header.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.header.estimatedSize;\n } else {\n rectHeight = (node.rendered ? this.estimatedHeadingHeight : 0);\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n let headerRect = new Rect(0, y, width, rectHeight);\n let header = new LayoutInfo('header', node.key + ':header', headerRect);\n header.estimatedSize = isEstimated;\n header.parentKey = node.key;\n y += header.rect.height;\n\n let rect = new Rect(0, y, width, 0);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n\n let startY = y;\n let children = [];\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children\n };\n }\n\n buildItem(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.rowHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n rectHeight = this.estimatedRowHeight;\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n if (typeof this.indentationForItem === 'function') {\n x += this.indentationForItem(this.collection, node.key) || 0;\n }\n\n let rect = new Rect(x, y, width - x, rectHeight);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.estimatedSize = isEstimated;\n return {\n layoutInfo\n };\n }\n\n updateItemSize(key: Key, size: Size) {\n let layoutInfo = this.layoutInfos.get(key);\n // If no layoutInfo, item has been deleted/removed.\n if (!layoutInfo) {\n return false;\n }\n\n layoutInfo.estimatedSize = false;\n if (layoutInfo.rect.height !== size.height) {\n // Copy layout info rather than mutating so that later caches are invalidated.\n let newLayoutInfo = layoutInfo.copy();\n newLayoutInfo.rect.height = size.height;\n this.layoutInfos.set(key, newLayoutInfo);\n\n // Invalidate layout for this layout node and all parents\n this.updateLayoutNode(key, layoutInfo, newLayoutInfo);\n\n let node = this.collection.getItem(layoutInfo.parentKey);\n while (node) {\n this.updateLayoutNode(node.key, layoutInfo, newLayoutInfo);\n node = this.collection.getItem(node.parentKey);\n }\n\n return true;\n }\n\n return false;\n }\n\n updateLayoutNode(key: Key, oldLayoutInfo: LayoutInfo, newLayoutInfo: LayoutInfo) {\n let n = this.layoutNodes.get(key);\n if (n) {\n // Invalidate by clearing node.\n n.node = null;\n\n // Replace layout info in LayoutNode\n if (n.header === oldLayoutInfo) {\n n.header = newLayoutInfo;\n } else if (n.layoutInfo === oldLayoutInfo) {\n n.layoutInfo = newLayoutInfo;\n }\n }\n }\n\n getContentSize() {\n return this.contentSize;\n }\n\n getKeyAbove(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyBefore(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyAfter(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getKeyPageAbove(key: Key) {\n let layoutInfo = this.getLayoutInfo(key);\n\n if (layoutInfo) {\n let pageY = Math.max(0, layoutInfo.rect.y + layoutInfo.rect.height - this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y > pageY) {\n let keyAbove = this.getKeyAbove(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyAbove);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getFirstKey();\n }\n\n getKeyPageBelow(key: Key) {\n let layoutInfo = this.getLayoutInfo(key != null ? key : this.getFirstKey());\n\n if (layoutInfo) {\n let pageY = Math.min(this.virtualizer.contentSize.height, layoutInfo.rect.y - layoutInfo.rect.height + this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y < pageY) {\n let keyBelow = this.getKeyBelow(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyBelow);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getLastKey();\n }\n\n getFirstKey() {\n let collection = this.collection;\n let key = collection.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getLastKey() {\n let collection = this.collection;\n let key = collection.getLastKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getKeyBelow(key);\n }\n\n return null;\n }\n\n // getDragTarget(point: Point): DragTarget {\n // let visible = this.getVisibleLayoutInfos(new Rect(point.x, point.y, 1, 1));\n // if (visible.length > 0) {\n // visible = visible.sort((a, b) => b.zIndex - a.zIndex);\n // return {\n // type: 'item',\n // key: visible[0].key\n // };\n // }\n\n // return null;\n // }\n\n // getDropTarget(point: Point): DropTarget {\n // let key = this.virtualizer.keyAtPoint(point);\n // if (key) {\n // return {\n // type: 'item',\n // key,\n // dropPosition: DropPosition.ON\n // };\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","/*\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 {ColumnProps, TableCollection} from '@react-types/table';\nimport {GridNode} from '@react-types/grid';\nimport {Key} from 'react';\nimport {LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\n\n\ntype TableLayoutOptions<T> = ListLayoutOptions<T> & {\n getDefaultWidth: (props) => string | number\n}\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n columnWidths: Map<Key, number>;\n stickyColumnIndices: number[];\n getDefaultWidth: (props) => string | number;\n wasLoading = false;\n isLoading = false;\n\n constructor(options: TableLayoutOptions<T>) {\n super(options);\n this.getDefaultWidth = options.getDefaultWidth;\n }\n\n\n buildCollection(): LayoutNode[] {\n // If columns changed, clear layout cache.\n if (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) => c.key !== this.lastCollection.columns[i].key)\n ) {\n // Invalidate everything in this layout pass. Will be reset in ListLayout on the next pass.\n this.invalidateEverything = true;\n }\n\n // Track whether we were previously loading. This is used to adjust the animations of async loading vs inserts.\n let loadingState = this.collection.body.props.loadingState;\n this.wasLoading = this.isLoading;\n this.isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n\n this.buildColumnWidths();\n let header = this.buildHeader();\n let body = this.buildBody(0);\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 buildColumnWidths() {\n this.columnWidths = new Map();\n this.stickyColumnIndices = [];\n\n // Pass 1: set widths for all explicitly defined columns.\n let remainingColumns = new Set<GridNode<T>>();\n let remainingSpace = this.virtualizer.visibleRect.width;\n for (let column of this.collection.columns) {\n let props = column.props as ColumnProps<T>;\n let width = props.width ?? this.getDefaultWidth(props);\n if (width != null) {\n let w = this.parseWidth(width);\n this.columnWidths.set(column.key, w);\n remainingSpace -= w;\n } else {\n remainingColumns.add(column);\n }\n\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 // Pass 2: if there are remaining columns, then distribute the remaining space evenly.\n if (remainingColumns.size > 0) {\n let columnWidth = remainingSpace / (this.collection.columns.length - this.columnWidths.size);\n\n for (let column of remainingColumns) {\n let props = column.props as ColumnProps<T>;\n let minWidth = props.minWidth != null ? this.parseWidth(props.minWidth) : 75;\n let maxWidth = props.maxWidth != null ? this.parseWidth(props.maxWidth) : Infinity;\n let width = Math.max(minWidth, Math.min(maxWidth, columnWidth));\n\n this.columnWidths.set(column.key, width);\n remainingSpace -= width;\n if (width !== columnWidth) {\n columnWidth = remainingSpace / (this.collection.columns.length - this.columnWidths.size);\n }\n }\n }\n }\n\n parseWidth(width: number | string): number {\n if (typeof width === 'string') {\n let match = width.match(/^(\\d+)%$/);\n if (!match) {\n throw new Error('Only percentages are supported as column widths');\n }\n\n return this.virtualizer.visibleRect.width * (parseInt(match[1], 10) / 100);\n }\n\n return width;\n }\n\n buildHeader(): LayoutNode {\n let rect = new Rect(0, 0, 0, 0);\n let layoutInfo = new LayoutInfo('header', 'header', rect);\n\n let y = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let headerRow of this.collection.headerRows) {\n let layoutNode = this.buildChild(headerRow, 0, y);\n layoutNode.layoutInfo.parentKey = 'header';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n rect.width = width;\n rect.height = y;\n\n this.layoutInfos.set('header', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number) {\n let rect = new Rect(0, y, 0, 0);\n let row = new LayoutInfo('headerrow', headerRow.key, rect);\n\n let height = 0;\n let columns: LayoutNode[] = [];\n for (let cell of headerRow.childNodes) {\n let layoutNode = this.buildChild(cell, x, y);\n layoutNode.layoutInfo.parentKey = row.key;\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n columns.push(layoutNode);\n }\n\n this.setChildHeights(columns, height);\n\n rect.height = height;\n rect.width = x;\n\n return {\n layoutInfo: row,\n children: columns\n };\n }\n\n setChildHeights(children: LayoutNode[], height: number) {\n for (let child of children) {\n if (child.layoutInfo.rect.height !== height) {\n // Need to copy the layout info before we mutate it.\n child.layoutInfo = child.layoutInfo.copy();\n this.layoutInfos.set(child.layoutInfo.key, child.layoutInfo);\n\n child.layoutInfo.rect.height = height;\n }\n }\n }\n\n getColumnWidth(node: GridNode<T>) {\n let colspan = node.colspan ?? 1;\n let width = 0;\n for (let i = 0; i < colspan; i++) {\n let column = this.collection.columns[node.index + i];\n width += this.columnWidths.get(column.key);\n }\n\n return width;\n }\n\n getEstimatedHeight(node: GridNode<T>, width: number, height: number, estimatedHeight: number) {\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (height == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = curNode !== lastNode || width !== previousLayoutNode.layoutInfo.rect.width || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n height = estimatedHeight;\n isEstimated = true;\n }\n }\n\n return {height, isEstimated};\n }\n\n buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n buildBody(y: number): LayoutNode {\n let rect = new Rect(0, y, 0, 0);\n let layoutInfo = new LayoutInfo('rowgroup', 'body', rect);\n\n let startY = y;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let layoutNode = this.buildChild(node, 0, y);\n layoutNode.layoutInfo.parentKey = 'body';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, width || this.virtualizer.visibleRect.width, children.length === 0 ? this.virtualizer.visibleRect.height : 60);\n let loader = new LayoutInfo('loader', 'loader', rect);\n loader.parentKey = 'body';\n loader.isSticky = children.length === 0;\n this.layoutInfos.set('loader', loader);\n children.push({layoutInfo: loader});\n y = loader.rect.maxY;\n width = Math.max(width, rect.width);\n } else if (children.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width, this.virtualizer.visibleRect.height);\n let empty = new LayoutInfo('empty', 'empty', rect);\n empty.parentKey = 'body';\n empty.isSticky = true;\n this.layoutInfos.set('empty', empty);\n children.push({layoutInfo: empty});\n y = empty.rect.maxY;\n width = Math.max(width, rect.width);\n }\n\n rect.width = width;\n rect.height = y - startY;\n\n this.layoutInfos.set('body', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildNode(node: GridNode<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'headerrow':\n return this.buildHeaderRow(node, x, y);\n case 'item':\n return this.buildRow(node, x, y);\n case 'column':\n case 'placeholder':\n return this.buildColumn(node, x, y);\n case 'cell':\n return this.buildCell(node, x, y);\n default:\n throw new Error('Unknown node type ' + node.type);\n }\n }\n\n buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let rect = new Rect(x, y, 0, 0);\n let layoutInfo = new LayoutInfo('row', node.key, rect);\n\n let children: LayoutNode[] = [];\n let height = 0;\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n children.push(layoutNode);\n }\n\n this.setChildHeights(children, height);\n\n rect.width = x;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n 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 for (let i = firstVisibleRow; i <= lastVisibleRow; i++) {\n res.push(node.children[i].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[i], rect);\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 for (let i = firstVisibleCell; i <= lastVisibleCell; i++) {\n // Sticky columns and row headers are always in the DOM. Interleave these\n // with the visible range so that they are in the right order.\n if (stickyIndex < this.stickyColumnIndices.length) {\n let idx = this.stickyColumnIndices[stickyIndex];\n while (idx < i) {\n res.push(node.children[idx].layoutInfo);\n idx = this.stickyColumnIndices[stickyIndex++];\n }\n }\n\n res.push(node.children[i].layoutInfo);\n }\n\n while (stickyIndex < this.stickyColumnIndices.length) {\n let idx = this.stickyColumnIndices[stickyIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n default:\n throw new Error('Unknown node type ' + node.layoutInfo.type);\n }\n }\n\n binarySearch(items: LayoutNode[], point: Point, axis: 'x' | 'y') {\n let low = 0;\n let high = items.length - 1;\n while (low <= high) {\n let mid = (low + high) >> 1;\n let item = items[mid];\n\n if ((axis === 'x' && item.layoutInfo.rect.maxX < point.x) || (axis === 'y' && item.layoutInfo.rect.maxY < point.y)) {\n low = mid + 1;\n } else if ((axis === 'x' && item.layoutInfo.rect.x > point.x) || (axis === 'y' && item.layoutInfo.rect.y > point.y)) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return Math.max(0, Math.min(items.length - 1, low));\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n let res = super.getInitialLayoutInfo(layoutInfo);\n\n // If this insert was the result of async loading, remove the zoom effect and just keep the fade in.\n if (this.wasLoading) {\n res.transform = null;\n }\n\n return res;\n }\n}\n"],"names":[],"version":3,"file":"main.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-stately/layout/src/index.ts","packages/@react-stately/layout/src/ListLayout.ts","packages/@react-stately/layout/src/TableLayout.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './ListLayout';\nexport * 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, KeyboardDelegate, Node} from '@react-types/shared';\nimport {InvalidationContext, Layout, LayoutInfo, 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};\n\n// A wrapper around LayoutInfo that supports hierarchy\nexport interface LayoutNode {\n node?: Node<unknown>,\n layoutInfo: LayoutInfo,\n header?: LayoutInfo,\n children?: LayoutNode[]\n}\n\nconst DEFAULT_HEIGHT = 48;\n\n/**\n * The ListLayout class is an implementation of a collection view {@link Layout}\n * it is used for creating lists and lists with indented sub-lists.\n *\n * To configure a ListLayout, you can use the properties to define the\n * layouts and/or use the method for defining indentation.\n * The {@link ListKeyboardDelegate} extends the existing collection view\n * delegate with an additional method to do this (it uses the same delegate object as\n * the collection view itself).\n */\nexport class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate {\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 isLoading: boolean;\n protected lastWidth: number;\n protected lastCollection: Collection<Node<T>>;\n protected rootNodes: LayoutNode[];\n protected collator: Intl.Collator;\n protected invalidateEverything: boolean;\n protected loaderHeight: number;\n protected placeholderHeight: number;\n\n /**\n * Creates a new ListLayout with options. See the list of properties below for a description\n * of the options that can be provided.\n */\n constructor(options: ListLayoutOptions<T> = {}) {\n super();\n this.rowHeight = options.rowHeight;\n this.estimatedRowHeight = options.estimatedRowHeight;\n this.headingHeight = options.headingHeight;\n this.estimatedHeadingHeight = options.estimatedHeadingHeight;\n this.padding = options.padding || 0;\n this.indentationForItem = options.indentationForItem;\n this.collator = options.collator;\n this.loaderHeight = options.loaderHeight;\n this.placeholderHeight = options.placeholderHeight;\n this.layoutInfos = new Map();\n this.layoutNodes = new Map();\n this.rootNodes = [];\n this.lastWidth = 0;\n this.lastCollection = null;\n }\n\n getLayoutInfo(key: Key) {\n return this.layoutInfos.get(key);\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n let addNodes = (nodes: LayoutNode[]) => {\n for (let node of nodes) {\n if (this.isVisible(node, rect)) {\n res.push(node.layoutInfo);\n if (node.header) {\n res.push(node.header);\n }\n\n if (node.children) {\n addNodes(node.children);\n }\n }\n }\n };\n\n addNodes(this.rootNodes);\n return res;\n }\n\n isVisible(node: LayoutNode, rect: Rect) {\n return node.layoutInfo.rect.intersects(rect) || node.layoutInfo.isSticky;\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n // Invalidate cache if the size of the collection changed.\n // In this case, we need to recalculate the entire layout.\n this.invalidateEverything = invalidationContext.sizeChanged;\n\n this.collection = this.virtualizer.collection;\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection) {\n for (let key of this.lastCollection.getKeys()) {\n if (!this.collection.getItem(key)) {\n let layoutNode = this.layoutNodes.get(key);\n if (layoutNode) {\n this.layoutInfos.delete(layoutNode.layoutInfo.key);\n this.layoutInfos.delete(layoutNode.header?.key);\n this.layoutNodes.delete(key);\n }\n }\n }\n }\n\n this.lastWidth = this.virtualizer.visibleRect.width;\n this.lastCollection = this.collection;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let nodes = [];\n for (let node of this.collection) {\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.loaderHeight ?? this.virtualizer.visibleRect.height);\n let loader = new LayoutInfo('loader', 'loader', rect);\n this.layoutInfos.set('loader', loader);\n nodes.push({layoutInfo: loader});\n y = loader.rect.maxY;\n }\n\n if (nodes.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.placeholderHeight ?? this.virtualizer.visibleRect.height);\n let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);\n this.layoutInfos.set('placeholder', placeholder);\n nodes.push({layoutInfo: placeholder});\n y = placeholder.rect.maxY;\n }\n\n this.contentSize = new Size(this.virtualizer.visibleRect.width, y + this.padding);\n return nodes;\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n let cached = this.layoutNodes.get(node.key);\n if (!this.invalidateEverything && cached && cached.node === node && y === (cached.header || cached.layoutInfo).rect.y) {\n return cached;\n }\n\n let layoutNode = this.buildNode(node, x, y);\n layoutNode.node = node;\n\n layoutNode.layoutInfo.parentKey = node.parentKey || null;\n this.layoutInfos.set(layoutNode.layoutInfo.key, layoutNode.layoutInfo);\n if (layoutNode.header) {\n this.layoutInfos.set(layoutNode.header.key, layoutNode.header);\n }\n\n this.layoutNodes.set(node.key, layoutNode);\n return layoutNode;\n }\n\n buildNode(node: Node<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'section':\n return this.buildSection(node, x, y);\n case 'item':\n return this.buildItem(node, x, y);\n }\n }\n\n buildSection(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.headingHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode && previousLayoutNode.header) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.header.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.header.estimatedSize;\n } else {\n rectHeight = (node.rendered ? this.estimatedHeadingHeight : 0);\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n let headerRect = new Rect(0, y, width, rectHeight);\n let header = new LayoutInfo('header', node.key + ':header', headerRect);\n header.estimatedSize = isEstimated;\n header.parentKey = node.key;\n y += header.rect.height;\n\n let rect = new Rect(0, y, width, 0);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n\n let startY = y;\n let children = [];\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children\n };\n }\n\n buildItem(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.rowHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n rectHeight = this.estimatedRowHeight;\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n if (typeof this.indentationForItem === 'function') {\n x += this.indentationForItem(this.collection, node.key) || 0;\n }\n\n let rect = new Rect(x, y, width - x, rectHeight);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.estimatedSize = isEstimated;\n return {\n layoutInfo\n };\n }\n\n updateItemSize(key: Key, size: Size) {\n let layoutInfo = this.layoutInfos.get(key);\n // If no layoutInfo, item has been deleted/removed.\n if (!layoutInfo) {\n return false;\n }\n\n layoutInfo.estimatedSize = false;\n if (layoutInfo.rect.height !== size.height) {\n // Copy layout info rather than mutating so that later caches are invalidated.\n let newLayoutInfo = layoutInfo.copy();\n newLayoutInfo.rect.height = size.height;\n this.layoutInfos.set(key, newLayoutInfo);\n\n // Invalidate layout for this layout node and all parents\n this.updateLayoutNode(key, layoutInfo, newLayoutInfo);\n\n let node = this.collection.getItem(layoutInfo.parentKey);\n while (node) {\n this.updateLayoutNode(node.key, layoutInfo, newLayoutInfo);\n node = this.collection.getItem(node.parentKey);\n }\n\n return true;\n }\n\n return false;\n }\n\n updateLayoutNode(key: Key, oldLayoutInfo: LayoutInfo, newLayoutInfo: LayoutInfo) {\n let n = this.layoutNodes.get(key);\n if (n) {\n // Invalidate by clearing node.\n n.node = null;\n\n // Replace layout info in LayoutNode\n if (n.header === oldLayoutInfo) {\n n.header = newLayoutInfo;\n } else if (n.layoutInfo === oldLayoutInfo) {\n n.layoutInfo = newLayoutInfo;\n }\n }\n }\n\n getContentSize() {\n return this.contentSize;\n }\n\n getKeyAbove(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyBefore(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyAfter(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getKeyPageAbove(key: Key) {\n let layoutInfo = this.getLayoutInfo(key);\n\n if (layoutInfo) {\n let pageY = Math.max(0, layoutInfo.rect.y + layoutInfo.rect.height - this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y > pageY) {\n let keyAbove = this.getKeyAbove(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyAbove);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getFirstKey();\n }\n\n getKeyPageBelow(key: Key) {\n let layoutInfo = this.getLayoutInfo(key != null ? key : this.getFirstKey());\n\n if (layoutInfo) {\n let pageY = Math.min(this.virtualizer.contentSize.height, layoutInfo.rect.y - layoutInfo.rect.height + this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y < pageY) {\n let keyBelow = this.getKeyBelow(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyBelow);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getLastKey();\n }\n\n getFirstKey() {\n let collection = this.collection;\n let key = collection.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getLastKey() {\n let collection = this.collection;\n let key = collection.getLastKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getKeyBelow(key);\n }\n\n return null;\n }\n\n // getDragTarget(point: Point): DragTarget {\n // let visible = this.getVisibleLayoutInfos(new Rect(point.x, point.y, 1, 1));\n // if (visible.length > 0) {\n // visible = visible.sort((a, b) => b.zIndex - a.zIndex);\n // return {\n // type: 'item',\n // key: visible[0].key\n // };\n // }\n\n // return null;\n // }\n\n // getDropTarget(point: Point): DropTarget {\n // let key = this.virtualizer.keyAtPoint(point);\n // if (key) {\n // return {\n // type: 'item',\n // key,\n // dropPosition: DropPosition.ON\n // };\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","/*\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 {ColumnProps, TableCollection} from '@react-types/table';\nimport {GridNode} from '@react-types/grid';\nimport {Key} from 'react';\nimport {LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\n\n\ntype TableLayoutOptions<T> = ListLayoutOptions<T> & {\n getDefaultWidth: (props) => string | number\n}\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n columnWidths: Map<Key, number>;\n stickyColumnIndices: number[];\n getDefaultWidth: (props) => string | number;\n wasLoading = false;\n isLoading = false;\n\n constructor(options: TableLayoutOptions<T>) {\n super(options);\n this.getDefaultWidth = options.getDefaultWidth;\n }\n\n\n buildCollection(): LayoutNode[] {\n // If columns changed, clear layout cache.\n if (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) => c.key !== this.lastCollection.columns[i].key)\n ) {\n // Invalidate everything in this layout pass. Will be reset in ListLayout on the next pass.\n this.invalidateEverything = true;\n }\n\n // Track whether we were previously loading. This is used to adjust the animations of async loading vs inserts.\n let loadingState = this.collection.body.props.loadingState;\n this.wasLoading = this.isLoading;\n this.isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n\n this.buildColumnWidths();\n let header = this.buildHeader();\n let body = this.buildBody(0);\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 buildColumnWidths() {\n this.columnWidths = new Map();\n this.stickyColumnIndices = [];\n\n // Pass 1: set widths for all explicitly defined columns.\n let remainingColumns = new Set<GridNode<T>>();\n let remainingSpace = this.virtualizer.visibleRect.width;\n for (let column of this.collection.columns) {\n let props = column.props as ColumnProps<T>;\n let width = props.width ?? this.getDefaultWidth(props);\n if (width != null) {\n let w = this.parseWidth(width);\n this.columnWidths.set(column.key, w);\n remainingSpace -= w;\n } else {\n remainingColumns.add(column);\n }\n\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 // Pass 2: if there are remaining columns, then distribute the remaining space evenly.\n if (remainingColumns.size > 0) {\n let columnWidth = remainingSpace / (this.collection.columns.length - this.columnWidths.size);\n\n for (let column of remainingColumns) {\n let props = column.props as ColumnProps<T>;\n let minWidth = props.minWidth != null ? this.parseWidth(props.minWidth) : 75;\n let maxWidth = props.maxWidth != null ? this.parseWidth(props.maxWidth) : Infinity;\n let width = Math.max(minWidth, Math.min(maxWidth, columnWidth));\n\n this.columnWidths.set(column.key, width);\n remainingSpace -= width;\n if (width !== columnWidth) {\n columnWidth = remainingSpace / (this.collection.columns.length - this.columnWidths.size);\n }\n }\n }\n }\n\n parseWidth(width: number | string): number {\n if (typeof width === 'string') {\n let match = width.match(/^(\\d+)%$/);\n if (!match) {\n throw new Error('Only percentages are supported as column widths');\n }\n\n return this.virtualizer.visibleRect.width * (parseInt(match[1], 10) / 100);\n }\n\n return width;\n }\n\n buildHeader(): LayoutNode {\n let rect = new Rect(0, 0, 0, 0);\n let layoutInfo = new LayoutInfo('header', 'header', rect);\n\n let y = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let headerRow of this.collection.headerRows) {\n let layoutNode = this.buildChild(headerRow, 0, y);\n layoutNode.layoutInfo.parentKey = 'header';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n rect.width = width;\n rect.height = y;\n\n this.layoutInfos.set('header', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number) {\n let rect = new Rect(0, y, 0, 0);\n let row = new LayoutInfo('headerrow', headerRow.key, rect);\n\n let height = 0;\n let columns: LayoutNode[] = [];\n for (let cell of headerRow.childNodes) {\n let layoutNode = this.buildChild(cell, x, y);\n layoutNode.layoutInfo.parentKey = row.key;\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n columns.push(layoutNode);\n }\n\n this.setChildHeights(columns, height);\n\n rect.height = height;\n rect.width = x;\n\n return {\n layoutInfo: row,\n children: columns\n };\n }\n\n setChildHeights(children: LayoutNode[], height: number) {\n for (let child of children) {\n if (child.layoutInfo.rect.height !== height) {\n // Need to copy the layout info before we mutate it.\n child.layoutInfo = child.layoutInfo.copy();\n this.layoutInfos.set(child.layoutInfo.key, child.layoutInfo);\n\n child.layoutInfo.rect.height = height;\n }\n }\n }\n\n getColumnWidth(node: GridNode<T>) {\n let colspan = node.colspan ?? 1;\n let width = 0;\n for (let i = 0; i < colspan; i++) {\n let column = this.collection.columns[node.index + i];\n width += this.columnWidths.get(column.key);\n }\n\n return width;\n }\n\n getEstimatedHeight(node: GridNode<T>, width: number, height: number, estimatedHeight: number) {\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (height == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = curNode !== lastNode || width !== previousLayoutNode.layoutInfo.rect.width || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n height = estimatedHeight;\n isEstimated = true;\n }\n }\n\n return {height, isEstimated};\n }\n\n buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n buildBody(y: number): LayoutNode {\n let rect = new Rect(0, y, 0, 0);\n let layoutInfo = new LayoutInfo('rowgroup', 'body', rect);\n\n let startY = y;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let layoutNode = this.buildChild(node, 0, y);\n layoutNode.layoutInfo.parentKey = 'body';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, width || this.virtualizer.visibleRect.width, children.length === 0 ? this.virtualizer.visibleRect.height : 60);\n let loader = new LayoutInfo('loader', 'loader', rect);\n loader.parentKey = 'body';\n loader.isSticky = children.length === 0;\n this.layoutInfos.set('loader', loader);\n children.push({layoutInfo: loader});\n y = loader.rect.maxY;\n width = Math.max(width, rect.width);\n } else if (children.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width, this.virtualizer.visibleRect.height);\n let empty = new LayoutInfo('empty', 'empty', rect);\n empty.parentKey = 'body';\n empty.isSticky = true;\n this.layoutInfos.set('empty', empty);\n children.push({layoutInfo: empty});\n y = empty.rect.maxY;\n width = Math.max(width, rect.width);\n }\n\n rect.width = width;\n rect.height = y - startY;\n\n this.layoutInfos.set('body', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildNode(node: GridNode<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'headerrow':\n return this.buildHeaderRow(node, x, y);\n case 'item':\n return this.buildRow(node, x, y);\n case 'column':\n case 'placeholder':\n return this.buildColumn(node, x, y);\n case 'cell':\n return this.buildCell(node, x, y);\n default:\n throw new Error('Unknown node type ' + node.type);\n }\n }\n\n buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let rect = new Rect(x, y, 0, 0);\n let layoutInfo = new LayoutInfo('row', node.key, rect);\n\n let children: LayoutNode[] = [];\n let height = 0;\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n children.push(layoutNode);\n }\n\n this.setChildHeights(children, height);\n\n rect.width = x;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n 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 for (let i = firstVisibleRow; i <= lastVisibleRow; i++) {\n res.push(node.children[i].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[i], rect);\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 for (let i = firstVisibleCell; i <= lastVisibleCell; i++) {\n // Sticky columns and row headers are always in the DOM. Interleave these\n // with the visible range so that they are in the right order.\n if (stickyIndex < this.stickyColumnIndices.length) {\n let idx = this.stickyColumnIndices[stickyIndex];\n while (idx < i) {\n res.push(node.children[idx].layoutInfo);\n idx = this.stickyColumnIndices[stickyIndex++];\n }\n }\n\n res.push(node.children[i].layoutInfo);\n }\n\n while (stickyIndex < this.stickyColumnIndices.length) {\n let idx = this.stickyColumnIndices[stickyIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n default:\n throw new Error('Unknown node type ' + node.layoutInfo.type);\n }\n }\n\n binarySearch(items: LayoutNode[], point: Point, axis: 'x' | 'y') {\n let low = 0;\n let high = items.length - 1;\n while (low <= high) {\n let mid = (low + high) >> 1;\n let item = items[mid];\n\n if ((axis === 'x' && item.layoutInfo.rect.maxX < point.x) || (axis === 'y' && item.layoutInfo.rect.maxY < point.y)) {\n low = mid + 1;\n } else if ((axis === 'x' && item.layoutInfo.rect.x > point.x) || (axis === 'y' && item.layoutInfo.rect.y > point.y)) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return Math.max(0, Math.min(items.length - 1, low));\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n let res = super.getInitialLayoutInfo(layoutInfo);\n\n // If this insert was the result of async loading, remove the zoom effect and just keep the fade in.\n if (this.wasLoading) {\n res.transform = null;\n }\n\n return res;\n }\n}\n"],"names":[],"version":3,"file":"main.js.map"}
package/dist/module.js CHANGED
@@ -1,36 +1,14 @@
1
- import {Rect as $k07vD$Rect, LayoutInfo as $k07vD$LayoutInfo, Size as $k07vD$Size, Layout as $k07vD$Layout} from "@react-stately/virtualizer";
1
+ import {Rect as $dqiJs$Rect, LayoutInfo as $dqiJs$LayoutInfo, Size as $dqiJs$Size, Layout as $dqiJs$Layout} from "@react-stately/virtualizer";
2
2
 
3
3
  function $parcel$export(e, n, v, s) {
4
4
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
5
5
  }
6
- var $3789d65031eec0e6$exports = {};
6
+ var $279c20a4a0c8d128$exports = {};
7
7
 
8
- $parcel$export($3789d65031eec0e6$exports, "ListLayout", () => $3789d65031eec0e6$export$cacbb3924155d68e);
8
+ $parcel$export($279c20a4a0c8d128$exports, "ListLayout", () => $279c20a4a0c8d128$export$cacbb3924155d68e);
9
9
 
10
- const $3789d65031eec0e6$var$DEFAULT_HEIGHT = 48;
11
- class $3789d65031eec0e6$export$cacbb3924155d68e extends $k07vD$Layout {
12
- /**
13
- * Creates a new ListLayout with options. See the list of properties below for a description
14
- * of the options that can be provided.
15
- */ constructor(options = {
16
- }){
17
- super();
18
- this.disabledKeys = new Set();
19
- this.rowHeight = options.rowHeight;
20
- this.estimatedRowHeight = options.estimatedRowHeight;
21
- this.headingHeight = options.headingHeight;
22
- this.estimatedHeadingHeight = options.estimatedHeadingHeight;
23
- this.padding = options.padding || 0;
24
- this.indentationForItem = options.indentationForItem;
25
- this.collator = options.collator;
26
- this.loaderHeight = options.loaderHeight;
27
- this.placeholderHeight = options.placeholderHeight;
28
- this.layoutInfos = new Map();
29
- this.layoutNodes = new Map();
30
- this.rootNodes = [];
31
- this.lastWidth = 0;
32
- this.lastCollection = null;
33
- }
10
+ const $279c20a4a0c8d128$var$DEFAULT_HEIGHT = 48;
11
+ class $279c20a4a0c8d128$export$cacbb3924155d68e extends $dqiJs$Layout {
34
12
  getLayoutInfo(key) {
35
13
  return this.layoutInfos.get(key);
36
14
  }
@@ -60,8 +38,9 @@ class $3789d65031eec0e6$export$cacbb3924155d68e extends $k07vD$Layout {
60
38
  for (let key of this.lastCollection.getKeys())if (!this.collection.getItem(key)) {
61
39
  let layoutNode = this.layoutNodes.get(key);
62
40
  if (layoutNode) {
41
+ var ref;
63
42
  this.layoutInfos.delete(layoutNode.layoutInfo.key);
64
- this.layoutInfos.delete(layoutNode.header?.key);
43
+ this.layoutInfos.delete((ref = layoutNode.header) === null || ref === void 0 ? void 0 : ref.key);
65
44
  this.layoutNodes.delete(key);
66
45
  }
67
46
  }
@@ -78,8 +57,9 @@ class $3789d65031eec0e6$export$cacbb3924155d68e extends $k07vD$Layout {
78
57
  nodes.push(layoutNode);
79
58
  }
80
59
  if (this.isLoading) {
81
- let rect = new $k07vD$Rect(0, y, this.virtualizer.visibleRect.width, this.loaderHeight ?? this.virtualizer.visibleRect.height);
82
- let loader = new $k07vD$LayoutInfo('loader', 'loader', rect);
60
+ var _loaderHeight;
61
+ let rect = new $dqiJs$Rect(0, y, this.virtualizer.visibleRect.width, (_loaderHeight = this.loaderHeight) !== null && _loaderHeight !== void 0 ? _loaderHeight : this.virtualizer.visibleRect.height);
62
+ let loader = new $dqiJs$LayoutInfo('loader', 'loader', rect);
83
63
  this.layoutInfos.set('loader', loader);
84
64
  nodes.push({
85
65
  layoutInfo: loader
@@ -87,15 +67,16 @@ class $3789d65031eec0e6$export$cacbb3924155d68e extends $k07vD$Layout {
87
67
  y = loader.rect.maxY;
88
68
  }
89
69
  if (nodes.length === 0) {
90
- let rect = new $k07vD$Rect(0, y, this.virtualizer.visibleRect.width, this.placeholderHeight ?? this.virtualizer.visibleRect.height);
91
- let placeholder = new $k07vD$LayoutInfo('placeholder', 'placeholder', rect);
70
+ var _placeholderHeight;
71
+ let rect = new $dqiJs$Rect(0, y, this.virtualizer.visibleRect.width, (_placeholderHeight = this.placeholderHeight) !== null && _placeholderHeight !== void 0 ? _placeholderHeight : this.virtualizer.visibleRect.height);
72
+ let placeholder = new $dqiJs$LayoutInfo('placeholder', 'placeholder', rect);
92
73
  this.layoutInfos.set('placeholder', placeholder);
93
74
  nodes.push({
94
75
  layoutInfo: placeholder
95
76
  });
96
77
  y = placeholder.rect.maxY;
97
78
  }
98
- this.contentSize = new $k07vD$Size(this.virtualizer.visibleRect.width, y + this.padding);
79
+ this.contentSize = new $dqiJs$Size(this.virtualizer.visibleRect.width, y + this.padding);
99
80
  return nodes;
100
81
  }
101
82
  buildChild(node, x, y) {
@@ -137,14 +118,14 @@ class $3789d65031eec0e6$export$cacbb3924155d68e extends $k07vD$Layout {
137
118
  isEstimated = true;
138
119
  }
139
120
  }
140
- if (rectHeight == null) rectHeight = $3789d65031eec0e6$var$DEFAULT_HEIGHT;
141
- let headerRect = new $k07vD$Rect(0, y, width, rectHeight);
142
- let header = new $k07vD$LayoutInfo('header', node.key + ':header', headerRect);
121
+ if (rectHeight == null) rectHeight = $279c20a4a0c8d128$var$DEFAULT_HEIGHT;
122
+ let headerRect = new $dqiJs$Rect(0, y, width, rectHeight);
123
+ let header = new $dqiJs$LayoutInfo('header', node.key + ':header', headerRect);
143
124
  header.estimatedSize = isEstimated;
144
125
  header.parentKey = node.key;
145
126
  y += header.rect.height;
146
- let rect = new $k07vD$Rect(0, y, width, 0);
147
- let layoutInfo = new $k07vD$LayoutInfo(node.type, node.key, rect);
127
+ let rect = new $dqiJs$Rect(0, y, width, 0);
128
+ let layoutInfo = new $dqiJs$LayoutInfo(node.type, node.key, rect);
148
129
  let startY = y;
149
130
  let children = [];
150
131
  for (let child of node.childNodes){
@@ -179,10 +160,10 @@ class $3789d65031eec0e6$export$cacbb3924155d68e extends $k07vD$Layout {
179
160
  isEstimated = true;
180
161
  }
181
162
  }
182
- if (rectHeight == null) rectHeight = $3789d65031eec0e6$var$DEFAULT_HEIGHT;
163
+ if (rectHeight == null) rectHeight = $279c20a4a0c8d128$var$DEFAULT_HEIGHT;
183
164
  if (typeof this.indentationForItem === 'function') x += this.indentationForItem(this.collection, node.key) || 0;
184
- let rect = new $k07vD$Rect(x, y, width - x, rectHeight);
185
- let layoutInfo = new $k07vD$LayoutInfo(node.type, node.key, rect);
165
+ let rect = new $dqiJs$Rect(x, y, width - x, rectHeight);
166
+ let layoutInfo = new $dqiJs$LayoutInfo(node.type, node.key, rect);
186
167
  layoutInfo.estimatedSize = isEstimated;
187
168
  return {
188
169
  layoutInfo: layoutInfo
@@ -326,21 +307,37 @@ class $3789d65031eec0e6$export$cacbb3924155d68e extends $k07vD$Layout {
326
307
  layoutInfo.transform = 'scale3d(0.8, 0.8, 0.8)';
327
308
  return layoutInfo;
328
309
  }
310
+ /**
311
+ * Creates a new ListLayout with options. See the list of properties below for a description
312
+ * of the options that can be provided.
313
+ */ constructor(options = {
314
+ }){
315
+ super();
316
+ this.disabledKeys = new Set();
317
+ this.rowHeight = options.rowHeight;
318
+ this.estimatedRowHeight = options.estimatedRowHeight;
319
+ this.headingHeight = options.headingHeight;
320
+ this.estimatedHeadingHeight = options.estimatedHeadingHeight;
321
+ this.padding = options.padding || 0;
322
+ this.indentationForItem = options.indentationForItem;
323
+ this.collator = options.collator;
324
+ this.loaderHeight = options.loaderHeight;
325
+ this.placeholderHeight = options.placeholderHeight;
326
+ this.layoutInfos = new Map();
327
+ this.layoutNodes = new Map();
328
+ this.rootNodes = [];
329
+ this.lastWidth = 0;
330
+ this.lastCollection = null;
331
+ }
329
332
  }
330
333
 
331
334
 
332
- var $869b950335a69eea$exports = {};
335
+ var $b4e598180eb9d802$exports = {};
333
336
 
334
- $parcel$export($869b950335a69eea$exports, "TableLayout", () => $869b950335a69eea$export$62444c3c724b1b20);
337
+ $parcel$export($b4e598180eb9d802$exports, "TableLayout", () => $b4e598180eb9d802$export$62444c3c724b1b20);
335
338
 
336
339
 
337
- class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export$cacbb3924155d68e {
338
- constructor(options){
339
- super(options);
340
- this.wasLoading = false;
341
- this.isLoading = false;
342
- this.getDefaultWidth = options.getDefaultWidth;
343
- }
340
+ class $b4e598180eb9d802$export$62444c3c724b1b20 extends $279c20a4a0c8d128$export$cacbb3924155d68e {
344
341
  buildCollection() {
345
342
  // If columns changed, clear layout cache.
346
343
  if (!this.lastCollection || this.collection.columns.length !== this.lastCollection.columns.length || this.collection.columns.some((c, i)=>c.key !== this.lastCollection.columns[i].key
@@ -354,7 +351,7 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
354
351
  let header = this.buildHeader();
355
352
  let body = this.buildBody(0);
356
353
  body.layoutInfo.rect.width = Math.max(header.layoutInfo.rect.width, body.layoutInfo.rect.width);
357
- this.contentSize = new $k07vD$Size(body.layoutInfo.rect.width, body.layoutInfo.rect.maxY);
354
+ this.contentSize = new $dqiJs$Size(body.layoutInfo.rect.width, body.layoutInfo.rect.maxY);
358
355
  return [
359
356
  header,
360
357
  body
@@ -368,7 +365,8 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
368
365
  let remainingSpace = this.virtualizer.visibleRect.width;
369
366
  for (let column of this.collection.columns){
370
367
  let props = column.props;
371
- let width = props.width ?? this.getDefaultWidth(props);
368
+ var _width;
369
+ let width = (_width = props.width) !== null && _width !== void 0 ? _width : this.getDefaultWidth(props);
372
370
  if (width != null) {
373
371
  let w = this.parseWidth(width);
374
372
  this.columnWidths.set(column.key, w);
@@ -401,8 +399,8 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
401
399
  return width;
402
400
  }
403
401
  buildHeader() {
404
- let rect = new $k07vD$Rect(0, 0, 0, 0);
405
- let layoutInfo = new $k07vD$LayoutInfo('header', 'header', rect);
402
+ let rect = new $dqiJs$Rect(0, 0, 0, 0);
403
+ let layoutInfo = new $dqiJs$LayoutInfo('header', 'header', rect);
406
404
  let y = 0;
407
405
  let width = 0;
408
406
  let children = [];
@@ -422,8 +420,8 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
422
420
  };
423
421
  }
424
422
  buildHeaderRow(headerRow, x, y) {
425
- let rect = new $k07vD$Rect(0, y, 0, 0);
426
- let row = new $k07vD$LayoutInfo('headerrow', headerRow.key, rect);
423
+ let rect = new $dqiJs$Rect(0, y, 0, 0);
424
+ let row = new $dqiJs$LayoutInfo('headerrow', headerRow.key, rect);
427
425
  let height = 0;
428
426
  let columns = [];
429
427
  for (let cell of headerRow.childNodes){
@@ -450,7 +448,8 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
450
448
  }
451
449
  }
452
450
  getColumnWidth(node) {
453
- let colspan = node.colspan ?? 1;
451
+ var _colspan;
452
+ let colspan = (_colspan = node.colspan) !== null && _colspan !== void 0 ? _colspan : 1;
454
453
  let width = 0;
455
454
  for(let i = 0; i < colspan; i++){
456
455
  let column = this.collection.columns[node.index + i];
@@ -482,11 +481,12 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
482
481
  };
483
482
  }
484
483
  buildColumn(node, x, y) {
484
+ var ref;
485
485
  let width = this.getColumnWidth(node);
486
486
  let { height: height , isEstimated: isEstimated } = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);
487
- let rect = new $k07vD$Rect(x, y, width, height);
488
- let layoutInfo = new $k07vD$LayoutInfo(node.type, node.key, rect);
489
- layoutInfo.isSticky = node.props?.isSelectionCell;
487
+ let rect = new $dqiJs$Rect(x, y, width, height);
488
+ let layoutInfo = new $dqiJs$LayoutInfo(node.type, node.key, rect);
489
+ layoutInfo.isSticky = (ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell;
490
490
  layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
491
491
  layoutInfo.estimatedSize = isEstimated;
492
492
  return {
@@ -494,8 +494,8 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
494
494
  };
495
495
  }
496
496
  buildBody(y) {
497
- let rect = new $k07vD$Rect(0, y, 0, 0);
498
- let layoutInfo = new $k07vD$LayoutInfo('rowgroup', 'body', rect);
497
+ let rect = new $dqiJs$Rect(0, y, 0, 0);
498
+ let layoutInfo = new $dqiJs$LayoutInfo('rowgroup', 'body', rect);
499
499
  let startY = y;
500
500
  let width = 0;
501
501
  let children = [];
@@ -507,8 +507,8 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
507
507
  children.push(layoutNode);
508
508
  }
509
509
  if (this.isLoading) {
510
- let rect = new $k07vD$Rect(0, y, width || this.virtualizer.visibleRect.width, children.length === 0 ? this.virtualizer.visibleRect.height : 60);
511
- let loader = new $k07vD$LayoutInfo('loader', 'loader', rect);
510
+ let rect = new $dqiJs$Rect(0, y, width || this.virtualizer.visibleRect.width, children.length === 0 ? this.virtualizer.visibleRect.height : 60);
511
+ let loader = new $dqiJs$LayoutInfo('loader', 'loader', rect);
512
512
  loader.parentKey = 'body';
513
513
  loader.isSticky = children.length === 0;
514
514
  this.layoutInfos.set('loader', loader);
@@ -518,8 +518,8 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
518
518
  y = loader.rect.maxY;
519
519
  width = Math.max(width, rect.width);
520
520
  } else if (children.length === 0) {
521
- let rect = new $k07vD$Rect(0, y, this.virtualizer.visibleRect.width, this.virtualizer.visibleRect.height);
522
- let empty = new $k07vD$LayoutInfo('empty', 'empty', rect);
521
+ let rect = new $dqiJs$Rect(0, y, this.virtualizer.visibleRect.width, this.virtualizer.visibleRect.height);
522
+ let empty = new $dqiJs$LayoutInfo('empty', 'empty', rect);
523
523
  empty.parentKey = 'body';
524
524
  empty.isSticky = true;
525
525
  this.layoutInfos.set('empty', empty);
@@ -553,8 +553,8 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
553
553
  }
554
554
  }
555
555
  buildRow(node, x, y) {
556
- let rect = new $k07vD$Rect(x, y, 0, 0);
557
- let layoutInfo = new $k07vD$LayoutInfo('row', node.key, rect);
556
+ let rect = new $dqiJs$Rect(x, y, 0, 0);
557
+ let layoutInfo = new $dqiJs$LayoutInfo('row', node.key, rect);
558
558
  let children = [];
559
559
  let height = 0;
560
560
  for (let child of node.childNodes){
@@ -572,11 +572,12 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
572
572
  };
573
573
  }
574
574
  buildCell(node, x, y) {
575
+ var ref;
575
576
  let width = this.getColumnWidth(node);
576
577
  let { height: height , isEstimated: isEstimated } = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);
577
- let rect = new $k07vD$Rect(x, y, width, height);
578
- let layoutInfo = new $k07vD$LayoutInfo(node.type, node.key, rect);
579
- layoutInfo.isSticky = node.props?.isSelectionCell;
578
+ let rect = new $dqiJs$Rect(x, y, width, height);
579
+ let layoutInfo = new $dqiJs$LayoutInfo(node.type, node.key, rect);
580
+ layoutInfo.isSticky = (ref = node.props) === null || ref === void 0 ? void 0 : ref.isSelectionCell;
580
581
  layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;
581
582
  layoutInfo.estimatedSize = isEstimated;
582
583
  return {
@@ -656,10 +657,16 @@ class $869b950335a69eea$export$62444c3c724b1b20 extends $3789d65031eec0e6$export
656
657
  if (this.wasLoading) res.transform = null;
657
658
  return res;
658
659
  }
660
+ constructor(options){
661
+ super(options);
662
+ this.wasLoading = false;
663
+ this.isLoading = false;
664
+ this.getDefaultWidth = options.getDefaultWidth;
665
+ }
659
666
  }
660
667
 
661
668
 
662
669
 
663
670
 
664
- export {$3789d65031eec0e6$export$cacbb3924155d68e as ListLayout, $869b950335a69eea$export$62444c3c724b1b20 as TableLayout};
671
+ export {$279c20a4a0c8d128$export$cacbb3924155d68e as ListLayout, $b4e598180eb9d802$export$62444c3c724b1b20 as TableLayout};
665
672
  //# sourceMappingURL=module.js.map
@@ -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 */\n\nexport * from './ListLayout';\nexport * 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, KeyboardDelegate, Node} from '@react-types/shared';\nimport {InvalidationContext, Layout, LayoutInfo, 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};\n\n// A wrapper around LayoutInfo that supports hierarchy\nexport interface LayoutNode {\n node?: Node<unknown>,\n layoutInfo: LayoutInfo,\n header?: LayoutInfo,\n children?: LayoutNode[]\n}\n\nconst DEFAULT_HEIGHT = 48;\n\n/**\n * The ListLayout class is an implementation of a collection view {@link Layout}\n * it is used for creating lists and lists with indented sub-lists.\n *\n * To configure a ListLayout, you can use the properties to define the\n * layouts and/or use the method for defining indentation.\n * The {@link ListKeyboardDelegate} extends the existing collection view\n * delegate with an additional method to do this (it uses the same delegate object as\n * the collection view itself).\n */\nexport class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate {\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 isLoading: boolean;\n protected lastWidth: number;\n protected lastCollection: Collection<Node<T>>;\n protected rootNodes: LayoutNode[];\n protected collator: Intl.Collator;\n protected invalidateEverything: boolean;\n protected loaderHeight: number;\n protected placeholderHeight: number;\n\n /**\n * Creates a new ListLayout with options. See the list of properties below for a description\n * of the options that can be provided.\n */\n constructor(options: ListLayoutOptions<T> = {}) {\n super();\n this.rowHeight = options.rowHeight;\n this.estimatedRowHeight = options.estimatedRowHeight;\n this.headingHeight = options.headingHeight;\n this.estimatedHeadingHeight = options.estimatedHeadingHeight;\n this.padding = options.padding || 0;\n this.indentationForItem = options.indentationForItem;\n this.collator = options.collator;\n this.loaderHeight = options.loaderHeight;\n this.placeholderHeight = options.placeholderHeight;\n this.layoutInfos = new Map();\n this.layoutNodes = new Map();\n this.rootNodes = [];\n this.lastWidth = 0;\n this.lastCollection = null;\n }\n\n getLayoutInfo(key: Key) {\n return this.layoutInfos.get(key);\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n let addNodes = (nodes: LayoutNode[]) => {\n for (let node of nodes) {\n if (this.isVisible(node, rect)) {\n res.push(node.layoutInfo);\n if (node.header) {\n res.push(node.header);\n }\n\n if (node.children) {\n addNodes(node.children);\n }\n }\n }\n };\n\n addNodes(this.rootNodes);\n return res;\n }\n\n isVisible(node: LayoutNode, rect: Rect) {\n return node.layoutInfo.rect.intersects(rect) || node.layoutInfo.isSticky;\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n // Invalidate cache if the size of the collection changed.\n // In this case, we need to recalculate the entire layout.\n this.invalidateEverything = invalidationContext.sizeChanged;\n\n this.collection = this.virtualizer.collection;\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection) {\n for (let key of this.lastCollection.getKeys()) {\n if (!this.collection.getItem(key)) {\n let layoutNode = this.layoutNodes.get(key);\n if (layoutNode) {\n this.layoutInfos.delete(layoutNode.layoutInfo.key);\n this.layoutInfos.delete(layoutNode.header?.key);\n this.layoutNodes.delete(key);\n }\n }\n }\n }\n\n this.lastWidth = this.virtualizer.visibleRect.width;\n this.lastCollection = this.collection;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let nodes = [];\n for (let node of this.collection) {\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.loaderHeight ?? this.virtualizer.visibleRect.height);\n let loader = new LayoutInfo('loader', 'loader', rect);\n this.layoutInfos.set('loader', loader);\n nodes.push({layoutInfo: loader});\n y = loader.rect.maxY;\n }\n\n if (nodes.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.placeholderHeight ?? this.virtualizer.visibleRect.height);\n let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);\n this.layoutInfos.set('placeholder', placeholder);\n nodes.push({layoutInfo: placeholder});\n y = placeholder.rect.maxY;\n }\n\n this.contentSize = new Size(this.virtualizer.visibleRect.width, y + this.padding);\n return nodes;\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n let cached = this.layoutNodes.get(node.key);\n if (!this.invalidateEverything && cached && cached.node === node && y === (cached.header || cached.layoutInfo).rect.y) {\n return cached;\n }\n\n let layoutNode = this.buildNode(node, x, y);\n layoutNode.node = node;\n\n layoutNode.layoutInfo.parentKey = node.parentKey || null;\n this.layoutInfos.set(layoutNode.layoutInfo.key, layoutNode.layoutInfo);\n if (layoutNode.header) {\n this.layoutInfos.set(layoutNode.header.key, layoutNode.header);\n }\n\n this.layoutNodes.set(node.key, layoutNode);\n return layoutNode;\n }\n\n buildNode(node: Node<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'section':\n return this.buildSection(node, x, y);\n case 'item':\n return this.buildItem(node, x, y);\n }\n }\n\n buildSection(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.headingHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode && previousLayoutNode.header) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.header.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.header.estimatedSize;\n } else {\n rectHeight = (node.rendered ? this.estimatedHeadingHeight : 0);\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n let headerRect = new Rect(0, y, width, rectHeight);\n let header = new LayoutInfo('header', node.key + ':header', headerRect);\n header.estimatedSize = isEstimated;\n header.parentKey = node.key;\n y += header.rect.height;\n\n let rect = new Rect(0, y, width, 0);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n\n let startY = y;\n let children = [];\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children\n };\n }\n\n buildItem(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.rowHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n rectHeight = this.estimatedRowHeight;\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n if (typeof this.indentationForItem === 'function') {\n x += this.indentationForItem(this.collection, node.key) || 0;\n }\n\n let rect = new Rect(x, y, width - x, rectHeight);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.estimatedSize = isEstimated;\n return {\n layoutInfo\n };\n }\n\n updateItemSize(key: Key, size: Size) {\n let layoutInfo = this.layoutInfos.get(key);\n // If no layoutInfo, item has been deleted/removed.\n if (!layoutInfo) {\n return false;\n }\n\n layoutInfo.estimatedSize = false;\n if (layoutInfo.rect.height !== size.height) {\n // Copy layout info rather than mutating so that later caches are invalidated.\n let newLayoutInfo = layoutInfo.copy();\n newLayoutInfo.rect.height = size.height;\n this.layoutInfos.set(key, newLayoutInfo);\n\n // Invalidate layout for this layout node and all parents\n this.updateLayoutNode(key, layoutInfo, newLayoutInfo);\n\n let node = this.collection.getItem(layoutInfo.parentKey);\n while (node) {\n this.updateLayoutNode(node.key, layoutInfo, newLayoutInfo);\n node = this.collection.getItem(node.parentKey);\n }\n\n return true;\n }\n\n return false;\n }\n\n updateLayoutNode(key: Key, oldLayoutInfo: LayoutInfo, newLayoutInfo: LayoutInfo) {\n let n = this.layoutNodes.get(key);\n if (n) {\n // Invalidate by clearing node.\n n.node = null;\n\n // Replace layout info in LayoutNode\n if (n.header === oldLayoutInfo) {\n n.header = newLayoutInfo;\n } else if (n.layoutInfo === oldLayoutInfo) {\n n.layoutInfo = newLayoutInfo;\n }\n }\n }\n\n getContentSize() {\n return this.contentSize;\n }\n\n getKeyAbove(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyBefore(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyAfter(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getKeyPageAbove(key: Key) {\n let layoutInfo = this.getLayoutInfo(key);\n\n if (layoutInfo) {\n let pageY = Math.max(0, layoutInfo.rect.y + layoutInfo.rect.height - this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y > pageY) {\n let keyAbove = this.getKeyAbove(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyAbove);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getFirstKey();\n }\n\n getKeyPageBelow(key: Key) {\n let layoutInfo = this.getLayoutInfo(key != null ? key : this.getFirstKey());\n\n if (layoutInfo) {\n let pageY = Math.min(this.virtualizer.contentSize.height, layoutInfo.rect.y - layoutInfo.rect.height + this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y < pageY) {\n let keyBelow = this.getKeyBelow(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyBelow);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getLastKey();\n }\n\n getFirstKey() {\n let collection = this.collection;\n let key = collection.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getLastKey() {\n let collection = this.collection;\n let key = collection.getLastKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getKeyBelow(key);\n }\n\n return null;\n }\n\n // getDragTarget(point: Point): DragTarget {\n // let visible = this.getVisibleLayoutInfos(new Rect(point.x, point.y, 1, 1));\n // if (visible.length > 0) {\n // visible = visible.sort((a, b) => b.zIndex - a.zIndex);\n // return {\n // type: 'item',\n // key: visible[0].key\n // };\n // }\n\n // return null;\n // }\n\n // getDropTarget(point: Point): DropTarget {\n // let key = this.virtualizer.keyAtPoint(point);\n // if (key) {\n // return {\n // type: 'item',\n // key,\n // dropPosition: DropPosition.ON\n // };\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","/*\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 {ColumnProps, TableCollection} from '@react-types/table';\nimport {GridNode} from '@react-types/grid';\nimport {Key} from 'react';\nimport {LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\n\n\ntype TableLayoutOptions<T> = ListLayoutOptions<T> & {\n getDefaultWidth: (props) => string | number\n}\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n columnWidths: Map<Key, number>;\n stickyColumnIndices: number[];\n getDefaultWidth: (props) => string | number;\n wasLoading = false;\n isLoading = false;\n\n constructor(options: TableLayoutOptions<T>) {\n super(options);\n this.getDefaultWidth = options.getDefaultWidth;\n }\n\n\n buildCollection(): LayoutNode[] {\n // If columns changed, clear layout cache.\n if (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) => c.key !== this.lastCollection.columns[i].key)\n ) {\n // Invalidate everything in this layout pass. Will be reset in ListLayout on the next pass.\n this.invalidateEverything = true;\n }\n\n // Track whether we were previously loading. This is used to adjust the animations of async loading vs inserts.\n let loadingState = this.collection.body.props.loadingState;\n this.wasLoading = this.isLoading;\n this.isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n\n this.buildColumnWidths();\n let header = this.buildHeader();\n let body = this.buildBody(0);\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 buildColumnWidths() {\n this.columnWidths = new Map();\n this.stickyColumnIndices = [];\n\n // Pass 1: set widths for all explicitly defined columns.\n let remainingColumns = new Set<GridNode<T>>();\n let remainingSpace = this.virtualizer.visibleRect.width;\n for (let column of this.collection.columns) {\n let props = column.props as ColumnProps<T>;\n let width = props.width ?? this.getDefaultWidth(props);\n if (width != null) {\n let w = this.parseWidth(width);\n this.columnWidths.set(column.key, w);\n remainingSpace -= w;\n } else {\n remainingColumns.add(column);\n }\n\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 // Pass 2: if there are remaining columns, then distribute the remaining space evenly.\n if (remainingColumns.size > 0) {\n let columnWidth = remainingSpace / (this.collection.columns.length - this.columnWidths.size);\n\n for (let column of remainingColumns) {\n let props = column.props as ColumnProps<T>;\n let minWidth = props.minWidth != null ? this.parseWidth(props.minWidth) : 75;\n let maxWidth = props.maxWidth != null ? this.parseWidth(props.maxWidth) : Infinity;\n let width = Math.max(minWidth, Math.min(maxWidth, columnWidth));\n\n this.columnWidths.set(column.key, width);\n remainingSpace -= width;\n if (width !== columnWidth) {\n columnWidth = remainingSpace / (this.collection.columns.length - this.columnWidths.size);\n }\n }\n }\n }\n\n parseWidth(width: number | string): number {\n if (typeof width === 'string') {\n let match = width.match(/^(\\d+)%$/);\n if (!match) {\n throw new Error('Only percentages are supported as column widths');\n }\n\n return this.virtualizer.visibleRect.width * (parseInt(match[1], 10) / 100);\n }\n\n return width;\n }\n\n buildHeader(): LayoutNode {\n let rect = new Rect(0, 0, 0, 0);\n let layoutInfo = new LayoutInfo('header', 'header', rect);\n\n let y = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let headerRow of this.collection.headerRows) {\n let layoutNode = this.buildChild(headerRow, 0, y);\n layoutNode.layoutInfo.parentKey = 'header';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n rect.width = width;\n rect.height = y;\n\n this.layoutInfos.set('header', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number) {\n let rect = new Rect(0, y, 0, 0);\n let row = new LayoutInfo('headerrow', headerRow.key, rect);\n\n let height = 0;\n let columns: LayoutNode[] = [];\n for (let cell of headerRow.childNodes) {\n let layoutNode = this.buildChild(cell, x, y);\n layoutNode.layoutInfo.parentKey = row.key;\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n columns.push(layoutNode);\n }\n\n this.setChildHeights(columns, height);\n\n rect.height = height;\n rect.width = x;\n\n return {\n layoutInfo: row,\n children: columns\n };\n }\n\n setChildHeights(children: LayoutNode[], height: number) {\n for (let child of children) {\n if (child.layoutInfo.rect.height !== height) {\n // Need to copy the layout info before we mutate it.\n child.layoutInfo = child.layoutInfo.copy();\n this.layoutInfos.set(child.layoutInfo.key, child.layoutInfo);\n\n child.layoutInfo.rect.height = height;\n }\n }\n }\n\n getColumnWidth(node: GridNode<T>) {\n let colspan = node.colspan ?? 1;\n let width = 0;\n for (let i = 0; i < colspan; i++) {\n let column = this.collection.columns[node.index + i];\n width += this.columnWidths.get(column.key);\n }\n\n return width;\n }\n\n getEstimatedHeight(node: GridNode<T>, width: number, height: number, estimatedHeight: number) {\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (height == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = curNode !== lastNode || width !== previousLayoutNode.layoutInfo.rect.width || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n height = estimatedHeight;\n isEstimated = true;\n }\n }\n\n return {height, isEstimated};\n }\n\n buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n buildBody(y: number): LayoutNode {\n let rect = new Rect(0, y, 0, 0);\n let layoutInfo = new LayoutInfo('rowgroup', 'body', rect);\n\n let startY = y;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let layoutNode = this.buildChild(node, 0, y);\n layoutNode.layoutInfo.parentKey = 'body';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, width || this.virtualizer.visibleRect.width, children.length === 0 ? this.virtualizer.visibleRect.height : 60);\n let loader = new LayoutInfo('loader', 'loader', rect);\n loader.parentKey = 'body';\n loader.isSticky = children.length === 0;\n this.layoutInfos.set('loader', loader);\n children.push({layoutInfo: loader});\n y = loader.rect.maxY;\n width = Math.max(width, rect.width);\n } else if (children.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width, this.virtualizer.visibleRect.height);\n let empty = new LayoutInfo('empty', 'empty', rect);\n empty.parentKey = 'body';\n empty.isSticky = true;\n this.layoutInfos.set('empty', empty);\n children.push({layoutInfo: empty});\n y = empty.rect.maxY;\n width = Math.max(width, rect.width);\n }\n\n rect.width = width;\n rect.height = y - startY;\n\n this.layoutInfos.set('body', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildNode(node: GridNode<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'headerrow':\n return this.buildHeaderRow(node, x, y);\n case 'item':\n return this.buildRow(node, x, y);\n case 'column':\n case 'placeholder':\n return this.buildColumn(node, x, y);\n case 'cell':\n return this.buildCell(node, x, y);\n default:\n throw new Error('Unknown node type ' + node.type);\n }\n }\n\n buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let rect = new Rect(x, y, 0, 0);\n let layoutInfo = new LayoutInfo('row', node.key, rect);\n\n let children: LayoutNode[] = [];\n let height = 0;\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n children.push(layoutNode);\n }\n\n this.setChildHeights(children, height);\n\n rect.width = x;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n 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 for (let i = firstVisibleRow; i <= lastVisibleRow; i++) {\n res.push(node.children[i].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[i], rect);\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 for (let i = firstVisibleCell; i <= lastVisibleCell; i++) {\n // Sticky columns and row headers are always in the DOM. Interleave these\n // with the visible range so that they are in the right order.\n if (stickyIndex < this.stickyColumnIndices.length) {\n let idx = this.stickyColumnIndices[stickyIndex];\n while (idx < i) {\n res.push(node.children[idx].layoutInfo);\n idx = this.stickyColumnIndices[stickyIndex++];\n }\n }\n\n res.push(node.children[i].layoutInfo);\n }\n\n while (stickyIndex < this.stickyColumnIndices.length) {\n let idx = this.stickyColumnIndices[stickyIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n default:\n throw new Error('Unknown node type ' + node.layoutInfo.type);\n }\n }\n\n binarySearch(items: LayoutNode[], point: Point, axis: 'x' | 'y') {\n let low = 0;\n let high = items.length - 1;\n while (low <= high) {\n let mid = (low + high) >> 1;\n let item = items[mid];\n\n if ((axis === 'x' && item.layoutInfo.rect.maxX < point.x) || (axis === 'y' && item.layoutInfo.rect.maxY < point.y)) {\n low = mid + 1;\n } else if ((axis === 'x' && item.layoutInfo.rect.x > point.x) || (axis === 'y' && item.layoutInfo.rect.y > point.y)) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return Math.max(0, Math.min(items.length - 1, low));\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n let res = super.getInitialLayoutInfo(layoutInfo);\n\n // If this insert was the result of async loading, remove the zoom effect and just keep the fade in.\n if (this.wasLoading) {\n res.transform = null;\n }\n\n return res;\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-stately/layout/src/index.ts","packages/@react-stately/layout/src/ListLayout.ts","packages/@react-stately/layout/src/TableLayout.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nexport * from './ListLayout';\nexport * 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, KeyboardDelegate, Node} from '@react-types/shared';\nimport {InvalidationContext, Layout, LayoutInfo, 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};\n\n// A wrapper around LayoutInfo that supports hierarchy\nexport interface LayoutNode {\n node?: Node<unknown>,\n layoutInfo: LayoutInfo,\n header?: LayoutInfo,\n children?: LayoutNode[]\n}\n\nconst DEFAULT_HEIGHT = 48;\n\n/**\n * The ListLayout class is an implementation of a collection view {@link Layout}\n * it is used for creating lists and lists with indented sub-lists.\n *\n * To configure a ListLayout, you can use the properties to define the\n * layouts and/or use the method for defining indentation.\n * The {@link ListKeyboardDelegate} extends the existing collection view\n * delegate with an additional method to do this (it uses the same delegate object as\n * the collection view itself).\n */\nexport class ListLayout<T> extends Layout<Node<T>> implements KeyboardDelegate {\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 isLoading: boolean;\n protected lastWidth: number;\n protected lastCollection: Collection<Node<T>>;\n protected rootNodes: LayoutNode[];\n protected collator: Intl.Collator;\n protected invalidateEverything: boolean;\n protected loaderHeight: number;\n protected placeholderHeight: number;\n\n /**\n * Creates a new ListLayout with options. See the list of properties below for a description\n * of the options that can be provided.\n */\n constructor(options: ListLayoutOptions<T> = {}) {\n super();\n this.rowHeight = options.rowHeight;\n this.estimatedRowHeight = options.estimatedRowHeight;\n this.headingHeight = options.headingHeight;\n this.estimatedHeadingHeight = options.estimatedHeadingHeight;\n this.padding = options.padding || 0;\n this.indentationForItem = options.indentationForItem;\n this.collator = options.collator;\n this.loaderHeight = options.loaderHeight;\n this.placeholderHeight = options.placeholderHeight;\n this.layoutInfos = new Map();\n this.layoutNodes = new Map();\n this.rootNodes = [];\n this.lastWidth = 0;\n this.lastCollection = null;\n }\n\n getLayoutInfo(key: Key) {\n return this.layoutInfos.get(key);\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n let addNodes = (nodes: LayoutNode[]) => {\n for (let node of nodes) {\n if (this.isVisible(node, rect)) {\n res.push(node.layoutInfo);\n if (node.header) {\n res.push(node.header);\n }\n\n if (node.children) {\n addNodes(node.children);\n }\n }\n }\n };\n\n addNodes(this.rootNodes);\n return res;\n }\n\n isVisible(node: LayoutNode, rect: Rect) {\n return node.layoutInfo.rect.intersects(rect) || node.layoutInfo.isSticky;\n }\n\n validate(invalidationContext: InvalidationContext<Node<T>, unknown>) {\n // Invalidate cache if the size of the collection changed.\n // In this case, we need to recalculate the entire layout.\n this.invalidateEverything = invalidationContext.sizeChanged;\n\n this.collection = this.virtualizer.collection;\n this.rootNodes = this.buildCollection();\n\n // Remove deleted layout nodes\n if (this.lastCollection) {\n for (let key of this.lastCollection.getKeys()) {\n if (!this.collection.getItem(key)) {\n let layoutNode = this.layoutNodes.get(key);\n if (layoutNode) {\n this.layoutInfos.delete(layoutNode.layoutInfo.key);\n this.layoutInfos.delete(layoutNode.header?.key);\n this.layoutNodes.delete(key);\n }\n }\n }\n }\n\n this.lastWidth = this.virtualizer.visibleRect.width;\n this.lastCollection = this.collection;\n }\n\n buildCollection(): LayoutNode[] {\n let y = this.padding;\n let nodes = [];\n for (let node of this.collection) {\n let layoutNode = this.buildChild(node, 0, y);\n y = layoutNode.layoutInfo.rect.maxY;\n nodes.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.loaderHeight ?? this.virtualizer.visibleRect.height);\n let loader = new LayoutInfo('loader', 'loader', rect);\n this.layoutInfos.set('loader', loader);\n nodes.push({layoutInfo: loader});\n y = loader.rect.maxY;\n }\n\n if (nodes.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width,\n this.placeholderHeight ?? this.virtualizer.visibleRect.height);\n let placeholder = new LayoutInfo('placeholder', 'placeholder', rect);\n this.layoutInfos.set('placeholder', placeholder);\n nodes.push({layoutInfo: placeholder});\n y = placeholder.rect.maxY;\n }\n\n this.contentSize = new Size(this.virtualizer.visibleRect.width, y + this.padding);\n return nodes;\n }\n\n buildChild(node: Node<T>, x: number, y: number): LayoutNode {\n let cached = this.layoutNodes.get(node.key);\n if (!this.invalidateEverything && cached && cached.node === node && y === (cached.header || cached.layoutInfo).rect.y) {\n return cached;\n }\n\n let layoutNode = this.buildNode(node, x, y);\n layoutNode.node = node;\n\n layoutNode.layoutInfo.parentKey = node.parentKey || null;\n this.layoutInfos.set(layoutNode.layoutInfo.key, layoutNode.layoutInfo);\n if (layoutNode.header) {\n this.layoutInfos.set(layoutNode.header.key, layoutNode.header);\n }\n\n this.layoutNodes.set(node.key, layoutNode);\n return layoutNode;\n }\n\n buildNode(node: Node<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'section':\n return this.buildSection(node, x, y);\n case 'item':\n return this.buildItem(node, x, y);\n }\n }\n\n buildSection(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.headingHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode && previousLayoutNode.header) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.header.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.header.estimatedSize;\n } else {\n rectHeight = (node.rendered ? this.estimatedHeadingHeight : 0);\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n let headerRect = new Rect(0, y, width, rectHeight);\n let header = new LayoutInfo('header', node.key + ':header', headerRect);\n header.estimatedSize = isEstimated;\n header.parentKey = node.key;\n y += header.rect.height;\n\n let rect = new Rect(0, y, width, 0);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n\n let startY = y;\n let children = [];\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n y = layoutNode.layoutInfo.rect.maxY;\n children.push(layoutNode);\n }\n\n rect.height = y - startY;\n\n return {\n header,\n layoutInfo,\n children\n };\n }\n\n buildItem(node: Node<T>, x: number, y: number): LayoutNode {\n let width = this.virtualizer.visibleRect.width;\n let rectHeight = this.rowHeight;\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (rectHeight == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n rectHeight = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = width !== this.lastWidth || curNode !== lastNode || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n rectHeight = this.estimatedRowHeight;\n isEstimated = true;\n }\n }\n\n if (rectHeight == null) {\n rectHeight = DEFAULT_HEIGHT;\n }\n\n if (typeof this.indentationForItem === 'function') {\n x += this.indentationForItem(this.collection, node.key) || 0;\n }\n\n let rect = new Rect(x, y, width - x, rectHeight);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.estimatedSize = isEstimated;\n return {\n layoutInfo\n };\n }\n\n updateItemSize(key: Key, size: Size) {\n let layoutInfo = this.layoutInfos.get(key);\n // If no layoutInfo, item has been deleted/removed.\n if (!layoutInfo) {\n return false;\n }\n\n layoutInfo.estimatedSize = false;\n if (layoutInfo.rect.height !== size.height) {\n // Copy layout info rather than mutating so that later caches are invalidated.\n let newLayoutInfo = layoutInfo.copy();\n newLayoutInfo.rect.height = size.height;\n this.layoutInfos.set(key, newLayoutInfo);\n\n // Invalidate layout for this layout node and all parents\n this.updateLayoutNode(key, layoutInfo, newLayoutInfo);\n\n let node = this.collection.getItem(layoutInfo.parentKey);\n while (node) {\n this.updateLayoutNode(node.key, layoutInfo, newLayoutInfo);\n node = this.collection.getItem(node.parentKey);\n }\n\n return true;\n }\n\n return false;\n }\n\n updateLayoutNode(key: Key, oldLayoutInfo: LayoutInfo, newLayoutInfo: LayoutInfo) {\n let n = this.layoutNodes.get(key);\n if (n) {\n // Invalidate by clearing node.\n n.node = null;\n\n // Replace layout info in LayoutNode\n if (n.header === oldLayoutInfo) {\n n.header = newLayoutInfo;\n } else if (n.layoutInfo === oldLayoutInfo) {\n n.layoutInfo = newLayoutInfo;\n }\n }\n }\n\n getContentSize() {\n return this.contentSize;\n }\n\n getKeyAbove(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyBefore(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyBelow(key: Key) {\n let collection = this.collection;\n\n key = collection.getKeyAfter(key);\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getKeyPageAbove(key: Key) {\n let layoutInfo = this.getLayoutInfo(key);\n\n if (layoutInfo) {\n let pageY = Math.max(0, layoutInfo.rect.y + layoutInfo.rect.height - this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y > pageY) {\n let keyAbove = this.getKeyAbove(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyAbove);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getFirstKey();\n }\n\n getKeyPageBelow(key: Key) {\n let layoutInfo = this.getLayoutInfo(key != null ? key : this.getFirstKey());\n\n if (layoutInfo) {\n let pageY = Math.min(this.virtualizer.contentSize.height, layoutInfo.rect.y - layoutInfo.rect.height + this.virtualizer.visibleRect.height);\n while (layoutInfo && layoutInfo.rect.y < pageY) {\n let keyBelow = this.getKeyBelow(layoutInfo.key);\n layoutInfo = this.getLayoutInfo(keyBelow);\n }\n\n if (layoutInfo) {\n return layoutInfo.key;\n }\n }\n\n return this.getLastKey();\n }\n\n getFirstKey() {\n let collection = this.collection;\n let key = collection.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyAfter(key);\n }\n }\n\n getLastKey() {\n let collection = this.collection;\n let key = collection.getLastKey();\n while (key != null) {\n let item = collection.getItem(key);\n if (item.type === 'item' && !this.disabledKeys.has(item.key)) {\n return key;\n }\n\n key = collection.getKeyBefore(key);\n }\n }\n\n getKeyForSearch(search: string, fromKey?: Key) {\n if (!this.collator) {\n return null;\n }\n\n let collection = this.collection;\n let key = fromKey || this.getFirstKey();\n while (key != null) {\n let item = collection.getItem(key);\n let substring = item.textValue.slice(0, search.length);\n if (item.textValue && this.collator.compare(substring, search) === 0) {\n return key;\n }\n\n key = this.getKeyBelow(key);\n }\n\n return null;\n }\n\n // getDragTarget(point: Point): DragTarget {\n // let visible = this.getVisibleLayoutInfos(new Rect(point.x, point.y, 1, 1));\n // if (visible.length > 0) {\n // visible = visible.sort((a, b) => b.zIndex - a.zIndex);\n // return {\n // type: 'item',\n // key: visible[0].key\n // };\n // }\n\n // return null;\n // }\n\n // getDropTarget(point: Point): DropTarget {\n // let key = this.virtualizer.keyAtPoint(point);\n // if (key) {\n // return {\n // type: 'item',\n // key,\n // dropPosition: DropPosition.ON\n // };\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","/*\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 {ColumnProps, TableCollection} from '@react-types/table';\nimport {GridNode} from '@react-types/grid';\nimport {Key} from 'react';\nimport {LayoutInfo, Point, Rect, Size} from '@react-stately/virtualizer';\nimport {LayoutNode, ListLayout, ListLayoutOptions} from './ListLayout';\n\n\ntype TableLayoutOptions<T> = ListLayoutOptions<T> & {\n getDefaultWidth: (props) => string | number\n}\n\nexport class TableLayout<T> extends ListLayout<T> {\n collection: TableCollection<T>;\n lastCollection: TableCollection<T>;\n columnWidths: Map<Key, number>;\n stickyColumnIndices: number[];\n getDefaultWidth: (props) => string | number;\n wasLoading = false;\n isLoading = false;\n\n constructor(options: TableLayoutOptions<T>) {\n super(options);\n this.getDefaultWidth = options.getDefaultWidth;\n }\n\n\n buildCollection(): LayoutNode[] {\n // If columns changed, clear layout cache.\n if (\n !this.lastCollection ||\n this.collection.columns.length !== this.lastCollection.columns.length ||\n this.collection.columns.some((c, i) => c.key !== this.lastCollection.columns[i].key)\n ) {\n // Invalidate everything in this layout pass. Will be reset in ListLayout on the next pass.\n this.invalidateEverything = true;\n }\n\n // Track whether we were previously loading. This is used to adjust the animations of async loading vs inserts.\n let loadingState = this.collection.body.props.loadingState;\n this.wasLoading = this.isLoading;\n this.isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n\n this.buildColumnWidths();\n let header = this.buildHeader();\n let body = this.buildBody(0);\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 buildColumnWidths() {\n this.columnWidths = new Map();\n this.stickyColumnIndices = [];\n\n // Pass 1: set widths for all explicitly defined columns.\n let remainingColumns = new Set<GridNode<T>>();\n let remainingSpace = this.virtualizer.visibleRect.width;\n for (let column of this.collection.columns) {\n let props = column.props as ColumnProps<T>;\n let width = props.width ?? this.getDefaultWidth(props);\n if (width != null) {\n let w = this.parseWidth(width);\n this.columnWidths.set(column.key, w);\n remainingSpace -= w;\n } else {\n remainingColumns.add(column);\n }\n\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 // Pass 2: if there are remaining columns, then distribute the remaining space evenly.\n if (remainingColumns.size > 0) {\n let columnWidth = remainingSpace / (this.collection.columns.length - this.columnWidths.size);\n\n for (let column of remainingColumns) {\n let props = column.props as ColumnProps<T>;\n let minWidth = props.minWidth != null ? this.parseWidth(props.minWidth) : 75;\n let maxWidth = props.maxWidth != null ? this.parseWidth(props.maxWidth) : Infinity;\n let width = Math.max(minWidth, Math.min(maxWidth, columnWidth));\n\n this.columnWidths.set(column.key, width);\n remainingSpace -= width;\n if (width !== columnWidth) {\n columnWidth = remainingSpace / (this.collection.columns.length - this.columnWidths.size);\n }\n }\n }\n }\n\n parseWidth(width: number | string): number {\n if (typeof width === 'string') {\n let match = width.match(/^(\\d+)%$/);\n if (!match) {\n throw new Error('Only percentages are supported as column widths');\n }\n\n return this.virtualizer.visibleRect.width * (parseInt(match[1], 10) / 100);\n }\n\n return width;\n }\n\n buildHeader(): LayoutNode {\n let rect = new Rect(0, 0, 0, 0);\n let layoutInfo = new LayoutInfo('header', 'header', rect);\n\n let y = 0;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let headerRow of this.collection.headerRows) {\n let layoutNode = this.buildChild(headerRow, 0, y);\n layoutNode.layoutInfo.parentKey = 'header';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n rect.width = width;\n rect.height = y;\n\n this.layoutInfos.set('header', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildHeaderRow(headerRow: GridNode<T>, x: number, y: number) {\n let rect = new Rect(0, y, 0, 0);\n let row = new LayoutInfo('headerrow', headerRow.key, rect);\n\n let height = 0;\n let columns: LayoutNode[] = [];\n for (let cell of headerRow.childNodes) {\n let layoutNode = this.buildChild(cell, x, y);\n layoutNode.layoutInfo.parentKey = row.key;\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n columns.push(layoutNode);\n }\n\n this.setChildHeights(columns, height);\n\n rect.height = height;\n rect.width = x;\n\n return {\n layoutInfo: row,\n children: columns\n };\n }\n\n setChildHeights(children: LayoutNode[], height: number) {\n for (let child of children) {\n if (child.layoutInfo.rect.height !== height) {\n // Need to copy the layout info before we mutate it.\n child.layoutInfo = child.layoutInfo.copy();\n this.layoutInfos.set(child.layoutInfo.key, child.layoutInfo);\n\n child.layoutInfo.rect.height = height;\n }\n }\n }\n\n getColumnWidth(node: GridNode<T>) {\n let colspan = node.colspan ?? 1;\n let width = 0;\n for (let i = 0; i < colspan; i++) {\n let column = this.collection.columns[node.index + i];\n width += this.columnWidths.get(column.key);\n }\n\n return width;\n }\n\n getEstimatedHeight(node: GridNode<T>, width: number, height: number, estimatedHeight: number) {\n let isEstimated = false;\n\n // If no explicit height is available, use an estimated height.\n if (height == null) {\n // If a previous version of this layout info exists, reuse its height.\n // Mark as estimated if the size of the overall collection view changed,\n // or the content of the item changed.\n let previousLayoutNode = this.layoutNodes.get(node.key);\n if (previousLayoutNode) {\n let curNode = this.collection.getItem(node.key);\n let lastNode = this.lastCollection ? this.lastCollection.getItem(node.key) : null;\n height = previousLayoutNode.layoutInfo.rect.height;\n isEstimated = curNode !== lastNode || width !== previousLayoutNode.layoutInfo.rect.width || previousLayoutNode.layoutInfo.estimatedSize;\n } else {\n height = estimatedHeight;\n isEstimated = true;\n }\n }\n\n return {height, isEstimated};\n }\n\n buildColumn(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.headingHeight, this.estimatedHeadingHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n buildBody(y: number): LayoutNode {\n let rect = new Rect(0, y, 0, 0);\n let layoutInfo = new LayoutInfo('rowgroup', 'body', rect);\n\n let startY = y;\n let width = 0;\n let children: LayoutNode[] = [];\n for (let node of this.collection.body.childNodes) {\n let layoutNode = this.buildChild(node, 0, y);\n layoutNode.layoutInfo.parentKey = 'body';\n y = layoutNode.layoutInfo.rect.maxY;\n width = Math.max(width, layoutNode.layoutInfo.rect.width);\n children.push(layoutNode);\n }\n\n if (this.isLoading) {\n let rect = new Rect(0, y, width || this.virtualizer.visibleRect.width, children.length === 0 ? this.virtualizer.visibleRect.height : 60);\n let loader = new LayoutInfo('loader', 'loader', rect);\n loader.parentKey = 'body';\n loader.isSticky = children.length === 0;\n this.layoutInfos.set('loader', loader);\n children.push({layoutInfo: loader});\n y = loader.rect.maxY;\n width = Math.max(width, rect.width);\n } else if (children.length === 0) {\n let rect = new Rect(0, y, this.virtualizer.visibleRect.width, this.virtualizer.visibleRect.height);\n let empty = new LayoutInfo('empty', 'empty', rect);\n empty.parentKey = 'body';\n empty.isSticky = true;\n this.layoutInfos.set('empty', empty);\n children.push({layoutInfo: empty});\n y = empty.rect.maxY;\n width = Math.max(width, rect.width);\n }\n\n rect.width = width;\n rect.height = y - startY;\n\n this.layoutInfos.set('body', layoutInfo);\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildNode(node: GridNode<T>, x: number, y: number): LayoutNode {\n switch (node.type) {\n case 'headerrow':\n return this.buildHeaderRow(node, x, y);\n case 'item':\n return this.buildRow(node, x, y);\n case 'column':\n case 'placeholder':\n return this.buildColumn(node, x, y);\n case 'cell':\n return this.buildCell(node, x, y);\n default:\n throw new Error('Unknown node type ' + node.type);\n }\n }\n\n buildRow(node: GridNode<T>, x: number, y: number): LayoutNode {\n let rect = new Rect(x, y, 0, 0);\n let layoutInfo = new LayoutInfo('row', node.key, rect);\n\n let children: LayoutNode[] = [];\n let height = 0;\n for (let child of node.childNodes) {\n let layoutNode = this.buildChild(child, x, y);\n x = layoutNode.layoutInfo.rect.maxX;\n height = Math.max(height, layoutNode.layoutInfo.rect.height);\n children.push(layoutNode);\n }\n\n this.setChildHeights(children, height);\n\n rect.width = x;\n rect.height = height + 1; // +1 for bottom border\n\n return {\n layoutInfo,\n children\n };\n }\n\n buildCell(node: GridNode<T>, x: number, y: number): LayoutNode {\n let width = this.getColumnWidth(node);\n let {height, isEstimated} = this.getEstimatedHeight(node, width, this.rowHeight, this.estimatedRowHeight);\n let rect = new Rect(x, y, width, height);\n let layoutInfo = new LayoutInfo(node.type, node.key, rect);\n layoutInfo.isSticky = node.props?.isSelectionCell;\n layoutInfo.zIndex = layoutInfo.isSticky ? 2 : 1;\n layoutInfo.estimatedSize = isEstimated;\n\n return {\n layoutInfo\n };\n }\n\n getVisibleLayoutInfos(rect: Rect) {\n let res: LayoutInfo[] = [];\n\n 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 for (let i = firstVisibleRow; i <= lastVisibleRow; i++) {\n res.push(node.children[i].layoutInfo);\n this.addVisibleLayoutInfos(res, node.children[i], rect);\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 for (let i = firstVisibleCell; i <= lastVisibleCell; i++) {\n // Sticky columns and row headers are always in the DOM. Interleave these\n // with the visible range so that they are in the right order.\n if (stickyIndex < this.stickyColumnIndices.length) {\n let idx = this.stickyColumnIndices[stickyIndex];\n while (idx < i) {\n res.push(node.children[idx].layoutInfo);\n idx = this.stickyColumnIndices[stickyIndex++];\n }\n }\n\n res.push(node.children[i].layoutInfo);\n }\n\n while (stickyIndex < this.stickyColumnIndices.length) {\n let idx = this.stickyColumnIndices[stickyIndex++];\n res.push(node.children[idx].layoutInfo);\n }\n break;\n }\n default:\n throw new Error('Unknown node type ' + node.layoutInfo.type);\n }\n }\n\n binarySearch(items: LayoutNode[], point: Point, axis: 'x' | 'y') {\n let low = 0;\n let high = items.length - 1;\n while (low <= high) {\n let mid = (low + high) >> 1;\n let item = items[mid];\n\n if ((axis === 'x' && item.layoutInfo.rect.maxX < point.x) || (axis === 'y' && item.layoutInfo.rect.maxY < point.y)) {\n low = mid + 1;\n } else if ((axis === 'x' && item.layoutInfo.rect.x > point.x) || (axis === 'y' && item.layoutInfo.rect.y > point.y)) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n\n return Math.max(0, Math.min(items.length - 1, low));\n }\n\n getInitialLayoutInfo(layoutInfo: LayoutInfo) {\n let res = super.getInitialLayoutInfo(layoutInfo);\n\n // If this insert was the result of async loading, remove the zoom effect and just keep the fade in.\n if (this.wasLoading) {\n res.transform = null;\n }\n\n return res;\n }\n}\n"],"names":[],"version":3,"file":"module.js.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-stately/layout",
3
- "version": "3.4.4-nightly.3111+d6ded0736",
3
+ "version": "3.4.4",
4
4
  "description": "Spectrum UI components in React",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -18,10 +18,10 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@babel/runtime": "^7.6.2",
21
- "@react-stately/virtualizer": "3.1.7-nightly.3111+d6ded0736",
22
- "@react-types/grid": "3.0.2-nightly.3111+d6ded0736",
23
- "@react-types/shared": "3.0.0-nightly.1415+d6ded0736",
24
- "@react-types/table": "3.1.2-nightly.3111+d6ded0736"
21
+ "@react-stately/virtualizer": "^3.1.7",
22
+ "@react-types/grid": "^3.0.2",
23
+ "@react-types/shared": "^3.11.1",
24
+ "@react-types/table": "^3.1.2"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "react": "^16.8.0 || ^17.0.0-rc.1"
@@ -29,5 +29,5 @@
29
29
  "publishConfig": {
30
30
  "access": "public"
31
31
  },
32
- "gitHead": "d6ded0736edd4c36d0abeb1ae615cacfa90ea8ff"
32
+ "gitHead": "404d41859b7d6f56201d7fc01bd9f22ae3512937"
33
33
  }