@deephaven/iris-grid 1.7.2-react-18-alpha.3 → 1.8.0
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/ColumnHeaderGroup.d.ts +6 -0
- package/dist/ColumnHeaderGroup.d.ts.map +1 -1
- package/dist/ColumnHeaderGroup.js +9 -0
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/IrisGrid.d.ts +8 -0
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +30 -2
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.d.ts.map +1 -1
- package/dist/IrisGridBottomBar.js +4 -1
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts +1 -1
- package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +1 -1
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +1 -1
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/RollupRows.d.ts +1 -1
- package/dist/sidebar/RollupRows.d.ts.map +1 -1
- package/dist/sidebar/RollupRows.js +2 -2
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +1 -1
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +30 -12
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +283 -48
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +2 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +4 -11
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +2 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +10 -6
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +17 -17
|
@@ -3,32 +3,38 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
3
3
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
-
import React, { PureComponent } from 'react';
|
|
6
|
+
import React, { memo, PureComponent, useCallback, useEffect, useRef } from 'react';
|
|
7
7
|
import classNames from 'classnames';
|
|
8
8
|
import { GridUtils } from '@deephaven/grid';
|
|
9
9
|
import { TextUtils, assertNotNull, DbNameValidator } from '@deephaven/utils';
|
|
10
10
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
11
|
-
import { dhEye, dhEyeSlash, dhSortAlphaDown, dhSortAlphaUp, dhArrowToTop, dhArrowToBottom, vsChevronUp, vsChevronDown, vsSymbolStructure, vsRefresh, vsCircleLargeFilled, vsAdd } from '@deephaven/icons';
|
|
11
|
+
import { dhEye, dhEyeSlash, dhSortAlphaDown, dhSortAlphaUp, dhArrowToTop, dhArrowToBottom, vsChevronUp, vsChevronDown, vsSymbolStructure, vsRefresh, vsCircleLargeFilled, vsAdd, vsBlank, vsCheck, vsKebabVertical } from '@deephaven/icons';
|
|
12
12
|
import memoize from 'memoizee';
|
|
13
13
|
import debounce from 'lodash.debounce';
|
|
14
|
-
import { Button, SearchInput } from '@deephaven/components';
|
|
14
|
+
import { ActionButton, Button, GLOBAL_SHORTCUTS, Icon, Item, Keyboard, MenuTrigger, SearchInput, Section, SpectrumMenu, Text } from '@deephaven/components';
|
|
15
15
|
import clamp from 'lodash.clamp';
|
|
16
16
|
import throttle from 'lodash.throttle';
|
|
17
|
+
import { useUndoRedo } from '@deephaven/react-hooks';
|
|
18
|
+
import Log from '@deephaven/log';
|
|
17
19
|
import "./VisibilityOrderingBuilder.css";
|
|
18
20
|
import ColumnHeaderGroup from "../../ColumnHeaderGroup.js";
|
|
19
21
|
import VisibilityOrderingItem from "./VisibilityOrderingItem.js";
|
|
20
22
|
import { flattenTree, getTreeItems } from "./sortable-tree/utilities.js";
|
|
21
23
|
import SortableTree from "./sortable-tree/SortableTree.js";
|
|
22
24
|
import { moveItemsFromDrop, moveToGroup } from "./VisibilityOrderingBuilderUtils.js";
|
|
25
|
+
import IrisGridUtils from "../../IrisGridUtils.js";
|
|
23
26
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
27
|
+
var log = Log.module('VisibilityOrderingBuilder');
|
|
24
28
|
var DEBOUNCE_SEARCH_COLUMN = 150;
|
|
25
|
-
class
|
|
29
|
+
class VisibilityOrderingBuilderInner extends PureComponent {
|
|
26
30
|
static shouldRenderColumn(column) {
|
|
27
31
|
// We don't want to render the proxy column in the visibility ordering list
|
|
28
32
|
return column.isProxy !== true;
|
|
29
33
|
}
|
|
30
34
|
constructor(props) {
|
|
31
35
|
super(props);
|
|
36
|
+
_defineProperty(this, "wrapperRef", /*#__PURE__*/React.createRef());
|
|
37
|
+
_defineProperty(this, "lastFocusedItemIndex", null);
|
|
32
38
|
_defineProperty(this, "list", void 0);
|
|
33
39
|
_defineProperty(this, "debouncedSearchColumns", debounce(this.searchColumns, DEBOUNCE_SEARCH_COLUMN));
|
|
34
40
|
_defineProperty(this, "handleGroupColorChange", throttle((group, color) => {
|
|
@@ -87,7 +93,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
87
93
|
onGroupNameChange: this.handleGroupNameChange,
|
|
88
94
|
validateGroupName: this.validateGroupName,
|
|
89
95
|
handleProps: handleProps
|
|
90
|
-
});
|
|
96
|
+
}, item.id);
|
|
91
97
|
}, {
|
|
92
98
|
max: 1000
|
|
93
99
|
}));
|
|
@@ -113,10 +119,10 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
113
119
|
}, {
|
|
114
120
|
max: 10
|
|
115
121
|
}));
|
|
116
|
-
_defineProperty(this, "memoizedGetTreeItems", memoize((columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedColumns) => getTreeItems(columns, movedColumns, columnHeaderGroups, hiddenColumns, [...selectedColumns.values()]), {
|
|
122
|
+
_defineProperty(this, "memoizedGetTreeItems", memoize((columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedColumns, showHiddenColumns) => getTreeItems(columns, movedColumns, columnHeaderGroups, hiddenColumns, [...selectedColumns.values()], showHiddenColumns), {
|
|
117
123
|
max: 1000
|
|
118
124
|
}));
|
|
119
|
-
_defineProperty(this, "makeVisibilityOrderingList", memoize((columns, treeItems) => {
|
|
125
|
+
_defineProperty(this, "makeVisibilityOrderingList", memoize((columns, treeItems, showHiddenColumns) => {
|
|
120
126
|
var {
|
|
121
127
|
movedColumns
|
|
122
128
|
} = this.props;
|
|
@@ -136,13 +142,16 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
136
142
|
return Array.isArray(data.visibleIndex) ? data.visibleIndex[1] === lastMovableIndex : data.visibleIndex === lastMovableIndex;
|
|
137
143
|
});
|
|
138
144
|
var movableItems = treeItems.slice(firstMovableTreeIndex, lastMovableTreeIndex + 1);
|
|
145
|
+
if (!showHiddenColumns) {
|
|
146
|
+
movableItems = movableItems.filter(item => item.data.isVisible);
|
|
147
|
+
}
|
|
139
148
|
|
|
140
149
|
// No movable items. Render all as immovable
|
|
141
150
|
if (firstMovableIndex == null || lastMovableIndex === null) {
|
|
142
151
|
for (var visibleIndex = 0; visibleIndex < columns.length; visibleIndex += 1) {
|
|
143
152
|
var modelIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);
|
|
144
153
|
var column = columns[modelIndex];
|
|
145
|
-
if (
|
|
154
|
+
if (VisibilityOrderingBuilderInner.shouldRenderColumn(column)) {
|
|
146
155
|
elements.push(this.renderImmovableItem(column.name));
|
|
147
156
|
}
|
|
148
157
|
}
|
|
@@ -153,7 +162,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
153
162
|
for (var _visibleIndex = 0; _visibleIndex < firstMovableIndex; _visibleIndex += 1) {
|
|
154
163
|
var _modelIndex = GridUtils.getModelIndex(_visibleIndex, movedColumns);
|
|
155
164
|
var _column = columns[_modelIndex];
|
|
156
|
-
if (
|
|
165
|
+
if (VisibilityOrderingBuilderInner.shouldRenderColumn(_column)) {
|
|
157
166
|
elements.push(this.renderImmovableItem(_column.name));
|
|
158
167
|
}
|
|
159
168
|
}
|
|
@@ -172,7 +181,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
172
181
|
for (var _visibleIndex2 = lastMovableIndex + 1; _visibleIndex2 < columns.length; _visibleIndex2 += 1) {
|
|
173
182
|
var _modelIndex2 = GridUtils.getModelIndex(_visibleIndex2, movedColumns);
|
|
174
183
|
var _column2 = columns[_modelIndex2];
|
|
175
|
-
if (
|
|
184
|
+
if (VisibilityOrderingBuilderInner.shouldRenderColumn(_column2)) {
|
|
176
185
|
elements.push(this.renderImmovableItem(_column2.name));
|
|
177
186
|
}
|
|
178
187
|
}
|
|
@@ -202,16 +211,33 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
202
211
|
this.validateGroupName = this.validateGroupName.bind(this);
|
|
203
212
|
this.addColumnToSelected = this.addColumnToSelected.bind(this);
|
|
204
213
|
this.handleDragStart = this.handleDragStart.bind(this);
|
|
214
|
+
this.handleOverflowAction = this.handleOverflowAction.bind(this);
|
|
215
|
+
this.handleKeyboardShortcut = this.handleKeyboardShortcut.bind(this);
|
|
205
216
|
this.state = {
|
|
206
217
|
selectedColumns: new Set(),
|
|
207
218
|
queriedColumnIndex: undefined,
|
|
208
219
|
queriedColumnRange: undefined,
|
|
209
220
|
prevQueriedColumns: undefined,
|
|
210
221
|
lastSelectedColumn: '',
|
|
211
|
-
searchFilter: ''
|
|
222
|
+
searchFilter: '',
|
|
223
|
+
showHiddenColumns: true
|
|
212
224
|
};
|
|
213
225
|
this.list = null;
|
|
214
226
|
}
|
|
227
|
+
componentDidMount() {
|
|
228
|
+
assertNotNull(this.wrapperRef.current);
|
|
229
|
+
// This fixes focus loss when editing a group because we use the name as the key for rendering.
|
|
230
|
+
// When the name is changed or group deleted, we lose focus entirely which is indicated by
|
|
231
|
+
// the focusout relatedTarget being null.
|
|
232
|
+
this.wrapperRef.current.addEventListener('focusin', e => {
|
|
233
|
+
if (e.target instanceof HTMLElement) {
|
|
234
|
+
var treeItem = e.target.closest('.tree-item');
|
|
235
|
+
if (treeItem != null) {
|
|
236
|
+
this.lastFocusedItemIndex = typeof treeItem.dataset.index === 'string' ? parseInt(treeItem.dataset.index, 10) : null;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
215
241
|
componentDidUpdate(prevProps) {
|
|
216
242
|
var {
|
|
217
243
|
movedColumns
|
|
@@ -222,9 +248,34 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
222
248
|
} = this.state;
|
|
223
249
|
this.searchColumns(searchFilter, false);
|
|
224
250
|
}
|
|
251
|
+
|
|
252
|
+
// document.activeElement is either body or html when nothing is focused.
|
|
253
|
+
// If there is no focused element, then we probably deleted or renamed a group
|
|
254
|
+
// resulting in focus loss. Try to re-establish focus.
|
|
255
|
+
// Cannot use focusout event for this because it doesn't fire when the focused element is deleted
|
|
256
|
+
// (except in Chrome which is against the spec here).
|
|
257
|
+
if ((document.activeElement === document.body || document.activeElement === document.documentElement) && this.lastFocusedItemIndex != null) {
|
|
258
|
+
var _this$list;
|
|
259
|
+
var itemToFocus = (_this$list = this.list) === null || _this$list === void 0 ? void 0 : _this$list.querySelector(".item-wrapper:nth-child(".concat(this.lastFocusedItemIndex + 1, ") .tree-item"));
|
|
260
|
+
if (itemToFocus == null || !(itemToFocus instanceof HTMLElement)) {
|
|
261
|
+
log.warn('Could not maintain focus');
|
|
262
|
+
this.lastFocusedItemIndex = null;
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
itemToFocus.focus();
|
|
266
|
+
}
|
|
225
267
|
}
|
|
226
268
|
componentWillUnmount() {
|
|
227
269
|
this.debouncedSearchColumns.cancel();
|
|
270
|
+
var {
|
|
271
|
+
columnHeaderGroups,
|
|
272
|
+
onColumnHeaderGroupChanged
|
|
273
|
+
} = this.props;
|
|
274
|
+
// Clean up unnamed groups on unmount
|
|
275
|
+
var filteredGroups = columnHeaderGroups.filter(group => !group.isNew);
|
|
276
|
+
if (filteredGroups.length !== columnHeaderGroups.length) {
|
|
277
|
+
onColumnHeaderGroupChanged(filteredGroups);
|
|
278
|
+
}
|
|
228
279
|
}
|
|
229
280
|
resetVisibilityOrdering() {
|
|
230
281
|
var {
|
|
@@ -297,14 +348,14 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
297
348
|
});
|
|
298
349
|
this.addColumnToSelected(columnIds, false);
|
|
299
350
|
if (columnIds.length > 0) {
|
|
300
|
-
var _this$
|
|
351
|
+
var _this$list2;
|
|
301
352
|
var visibleIndexToFocus = flattenedItems.findIndex(_ref9 => {
|
|
302
353
|
var {
|
|
303
354
|
id
|
|
304
355
|
} = _ref9;
|
|
305
356
|
return id.toLowerCase().includes(searchFilter.toLowerCase());
|
|
306
357
|
});
|
|
307
|
-
var columnItemToFocus = (_this$
|
|
358
|
+
var columnItemToFocus = (_this$list2 = this.list) === null || _this$list2 === void 0 ? void 0 : _this$list2.querySelectorAll('.item-wrapper')[visibleIndexToFocus];
|
|
308
359
|
columnItemToFocus === null || columnItemToFocus === void 0 || columnItemToFocus.scrollIntoView({
|
|
309
360
|
block: 'center'
|
|
310
361
|
});
|
|
@@ -327,7 +378,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
327
378
|
*/
|
|
328
379
|
|
|
329
380
|
changeSelectedColumn(direction) {
|
|
330
|
-
var _this$
|
|
381
|
+
var _this$list3;
|
|
331
382
|
var {
|
|
332
383
|
queriedColumnIndex,
|
|
333
384
|
queriedColumnRange,
|
|
@@ -355,7 +406,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
355
406
|
}
|
|
356
407
|
this.addColumnToSelected([Object.values(prevQueriedColumns)[newQueriedColumnIndex]], false);
|
|
357
408
|
var actualColumnIndex = parseInt(Object.keys(prevQueriedColumns)[newQueriedColumnIndex], 10);
|
|
358
|
-
var columnItemToFocus = (_this$
|
|
409
|
+
var columnItemToFocus = (_this$list3 = this.list) === null || _this$list3 === void 0 ? void 0 : _this$list3.querySelectorAll('.item-wrapper')[actualColumnIndex];
|
|
359
410
|
columnItemToFocus === null || columnItemToFocus === void 0 || columnItemToFocus.scrollIntoView({
|
|
360
411
|
block: 'center'
|
|
361
412
|
});
|
|
@@ -448,7 +499,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
448
499
|
assertNotNull(firstMovableIndex);
|
|
449
500
|
assertNotNull(lastMovableIndex);
|
|
450
501
|
var selectedItems = this.getSelectedParentItems();
|
|
451
|
-
var isMovingUpward = option ===
|
|
502
|
+
var isMovingUpward = option === VisibilityOrderingBuilderInner.MOVE_OPTIONS.UP || option === VisibilityOrderingBuilderInner.MOVE_OPTIONS.TOP;
|
|
452
503
|
|
|
453
504
|
// for moving up and to the top, move column(s) in visibility index order
|
|
454
505
|
// for moving down and to the bottom, move column(s) in reverse visibility index order
|
|
@@ -467,7 +518,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
467
518
|
}
|
|
468
519
|
} = selectedItems[i];
|
|
469
520
|
switch (option) {
|
|
470
|
-
case
|
|
521
|
+
case VisibilityOrderingBuilderInner.MOVE_OPTIONS.TOP:
|
|
471
522
|
{
|
|
472
523
|
newMoves = GridUtils.moveItemOrRange(visibleIndex, firstMovableIndex, newMoves, true);
|
|
473
524
|
var size = Array.isArray(visibleIndex) ? visibleIndex[1] - visibleIndex[0] + 1 : 1;
|
|
@@ -476,7 +527,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
476
527
|
updatedGroups = moveToGroup(selectedItems[i], null, updatedGroups);
|
|
477
528
|
break;
|
|
478
529
|
}
|
|
479
|
-
case
|
|
530
|
+
case VisibilityOrderingBuilderInner.MOVE_OPTIONS.BOTTOM:
|
|
480
531
|
{
|
|
481
532
|
newMoves = GridUtils.moveItemOrRange(visibleIndex, lastMovableIndex, newMoves, true);
|
|
482
533
|
var _size = Array.isArray(visibleIndex) ? visibleIndex[1] - visibleIndex[0] + 1 : 1;
|
|
@@ -485,7 +536,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
485
536
|
updatedGroups = moveToGroup(selectedItems[i], null, updatedGroups);
|
|
486
537
|
break;
|
|
487
538
|
}
|
|
488
|
-
case
|
|
539
|
+
case VisibilityOrderingBuilderInner.MOVE_OPTIONS.UP:
|
|
489
540
|
{
|
|
490
541
|
var itemIndex = treeItems.findIndex(item => item.id === id);
|
|
491
542
|
// Array.findLast would be better here, but it's too new for our browser support
|
|
@@ -511,7 +562,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
511
562
|
}
|
|
512
563
|
break;
|
|
513
564
|
}
|
|
514
|
-
case
|
|
565
|
+
case VisibilityOrderingBuilderInner.MOVE_OPTIONS.DOWN:
|
|
515
566
|
{
|
|
516
567
|
var _itemIndex = treeItems.findIndex(item => item.id === id);
|
|
517
568
|
var nextItem = treeItems.find((item, idx) => idx > _itemIndex && !selectedColumns.has(item.id));
|
|
@@ -562,18 +613,18 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
562
613
|
groups
|
|
563
614
|
} = this.moveSelectedColumns(option);
|
|
564
615
|
var scrollListAfterMove;
|
|
565
|
-
if (option ===
|
|
616
|
+
if (option === VisibilityOrderingBuilderInner.MOVE_OPTIONS.TOP) {
|
|
566
617
|
scrollListAfterMove = () => {
|
|
567
|
-
var _this$
|
|
568
|
-
(_this$
|
|
618
|
+
var _this$list4;
|
|
619
|
+
(_this$list4 = this.list) === null || _this$list4 === void 0 || (_this$list4 = _this$list4.parentElement) === null || _this$list4 === void 0 || _this$list4.scroll({
|
|
569
620
|
top: 0
|
|
570
621
|
});
|
|
571
622
|
};
|
|
572
623
|
}
|
|
573
|
-
if (option ===
|
|
624
|
+
if (option === VisibilityOrderingBuilderInner.MOVE_OPTIONS.BOTTOM) {
|
|
574
625
|
scrollListAfterMove = () => {
|
|
575
|
-
var _this$
|
|
576
|
-
(_this$
|
|
626
|
+
var _this$list5;
|
|
627
|
+
(_this$list5 = this.list) === null || _this$list5 === void 0 || (_this$list5 = _this$list5.parentElement) === null || _this$list5 === void 0 || _this$list5.scroll({
|
|
577
628
|
top: this.list.parentElement.scrollHeight
|
|
578
629
|
});
|
|
579
630
|
};
|
|
@@ -599,7 +650,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
599
650
|
getSortMoves(itemsParam, option, movedColumns) {
|
|
600
651
|
var items = [...itemsParam];
|
|
601
652
|
// Sort all the movable columns
|
|
602
|
-
var isAscending = option ===
|
|
653
|
+
var isAscending = option === VisibilityOrderingBuilderInner.SORTING_OPTIONS.ASC;
|
|
603
654
|
items.sort((a, b) => {
|
|
604
655
|
var aName = a.id.toUpperCase();
|
|
605
656
|
var bName = b.id.toUpperCase();
|
|
@@ -801,9 +852,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
801
852
|
onColumnHeaderGroupChanged
|
|
802
853
|
} = this.props;
|
|
803
854
|
var selectedParentItems = this.getSelectedParentItems();
|
|
804
|
-
var flattenedItems = flattenTree(this.getTreeItems())
|
|
805
|
-
index: i
|
|
806
|
-
}));
|
|
855
|
+
var flattenedItems = flattenTree(this.getTreeItems());
|
|
807
856
|
var firstMovableIndex = this.getFirstMovableIndex();
|
|
808
857
|
var lastMovableIndex = this.getLastMovableIndex();
|
|
809
858
|
assertNotNull(firstMovableIndex);
|
|
@@ -818,7 +867,8 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
818
867
|
handleGroupNameChange(group, newName) {
|
|
819
868
|
var {
|
|
820
869
|
columnHeaderGroups,
|
|
821
|
-
onColumnHeaderGroupChanged
|
|
870
|
+
onColumnHeaderGroupChanged,
|
|
871
|
+
endUndoGroup
|
|
822
872
|
} = this.props;
|
|
823
873
|
var newGroups = [...columnHeaderGroups];
|
|
824
874
|
var oldName = group.name;
|
|
@@ -847,10 +897,12 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
847
897
|
newGroups.splice(parentIndex, 1, newParent);
|
|
848
898
|
}
|
|
849
899
|
onColumnHeaderGroupChanged(newGroups);
|
|
900
|
+
endUndoGroup();
|
|
850
901
|
}
|
|
851
902
|
handleGroupDelete(group) {
|
|
852
903
|
var {
|
|
853
904
|
columnHeaderGroups,
|
|
905
|
+
endUndoGroup,
|
|
854
906
|
onColumnHeaderGroupChanged
|
|
855
907
|
} = this.props;
|
|
856
908
|
var newGroups = columnHeaderGroups.filter(g => g.name !== group.name);
|
|
@@ -862,17 +914,20 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
862
914
|
newGroups.splice(parentIndex, 1, newParent);
|
|
863
915
|
}
|
|
864
916
|
onColumnHeaderGroupChanged(newGroups);
|
|
917
|
+
// Could be started from editing a new group which is deleted without saving
|
|
918
|
+
endUndoGroup();
|
|
865
919
|
}
|
|
866
920
|
handleGroupCreate() {
|
|
867
921
|
var {
|
|
868
922
|
movedColumns,
|
|
869
923
|
onMovedColumnsChanged,
|
|
870
|
-
onColumnHeaderGroupChanged
|
|
924
|
+
onColumnHeaderGroupChanged,
|
|
925
|
+
startUndoGroup
|
|
871
926
|
} = this.props;
|
|
872
927
|
var {
|
|
873
928
|
newMoves,
|
|
874
929
|
groups
|
|
875
|
-
} = this.moveSelectedColumns(
|
|
930
|
+
} = this.moveSelectedColumns(VisibilityOrderingBuilderInner.MOVE_OPTIONS.TOP);
|
|
876
931
|
var newGroups = groups.filter(group => !group.isNew);
|
|
877
932
|
var selectedItems = this.getSelectedParentItems();
|
|
878
933
|
var childIndexes = selectedItems.map(item => item.data.modelIndex).flat().filter(index => index >= 0);
|
|
@@ -891,9 +946,10 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
891
946
|
depth: 0,
|
|
892
947
|
childIndexes: [...new Set(childIndexes)] // Remove any duplicates
|
|
893
948
|
});
|
|
949
|
+
startUndoGroup();
|
|
894
950
|
onMovedColumnsChanged(movedColumns.concat(newMoves), () => {
|
|
895
|
-
var _this$
|
|
896
|
-
(_this$
|
|
951
|
+
var _this$list6;
|
|
952
|
+
(_this$list6 = this.list) === null || _this$list6 === void 0 || (_this$list6 = _this$list6.parentElement) === null || _this$list6 === void 0 || _this$list6.scroll({
|
|
897
953
|
top: 0
|
|
898
954
|
});
|
|
899
955
|
});
|
|
@@ -965,9 +1021,10 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
965
1021
|
columnHeaderGroups
|
|
966
1022
|
} = this.props;
|
|
967
1023
|
var {
|
|
968
|
-
selectedColumns
|
|
1024
|
+
selectedColumns,
|
|
1025
|
+
showHiddenColumns
|
|
969
1026
|
} = this.state;
|
|
970
|
-
return this.memoizedGetTreeItems(model.columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedColumns);
|
|
1027
|
+
return this.memoizedGetTreeItems(model.columns, movedColumns, columnHeaderGroups, hiddenColumns, selectedColumns, showHiddenColumns);
|
|
971
1028
|
}
|
|
972
1029
|
|
|
973
1030
|
/**
|
|
@@ -992,17 +1049,54 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
992
1049
|
);
|
|
993
1050
|
});
|
|
994
1051
|
}
|
|
1052
|
+
handleOverflowAction(key) {
|
|
1053
|
+
var {
|
|
1054
|
+
undo,
|
|
1055
|
+
redo
|
|
1056
|
+
} = this.props;
|
|
1057
|
+
switch (key) {
|
|
1058
|
+
case 'undo':
|
|
1059
|
+
undo();
|
|
1060
|
+
break;
|
|
1061
|
+
case 'redo':
|
|
1062
|
+
redo();
|
|
1063
|
+
break;
|
|
1064
|
+
case 'showHidden':
|
|
1065
|
+
this.setState(prev => ({
|
|
1066
|
+
showHiddenColumns: !prev.showHiddenColumns
|
|
1067
|
+
}));
|
|
1068
|
+
break;
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
handleKeyboardShortcut(event) {
|
|
1072
|
+
var {
|
|
1073
|
+
canUndo,
|
|
1074
|
+
canRedo,
|
|
1075
|
+
undo,
|
|
1076
|
+
redo
|
|
1077
|
+
} = this.props;
|
|
1078
|
+
if (GLOBAL_SHORTCUTS.UNDO.matchesEvent(event) && canUndo) {
|
|
1079
|
+
event.preventDefault();
|
|
1080
|
+
undo();
|
|
1081
|
+
} else if (GLOBAL_SHORTCUTS.REDO.matchesEvent(event) && canRedo) {
|
|
1082
|
+
event.preventDefault();
|
|
1083
|
+
redo();
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
995
1086
|
render() {
|
|
996
1087
|
var {
|
|
997
1088
|
model,
|
|
998
1089
|
hiddenColumns,
|
|
999
|
-
onColumnVisibilityChanged
|
|
1090
|
+
onColumnVisibilityChanged,
|
|
1091
|
+
canUndo,
|
|
1092
|
+
canRedo
|
|
1000
1093
|
} = this.props;
|
|
1001
1094
|
var {
|
|
1002
1095
|
selectedColumns,
|
|
1003
1096
|
searchFilter,
|
|
1004
1097
|
prevQueriedColumns,
|
|
1005
|
-
queriedColumnIndex
|
|
1098
|
+
queriedColumnIndex,
|
|
1099
|
+
showHiddenColumns
|
|
1006
1100
|
} = this.state;
|
|
1007
1101
|
var hasSelection = selectedColumns.size > 0;
|
|
1008
1102
|
var treeItems = this.getTreeItems();
|
|
@@ -1014,7 +1108,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1014
1108
|
var areSomeVisible = columnsToToggle.some(column => !hiddenColumnsSet.has(column));
|
|
1015
1109
|
var allToggleText = areSomeVisible ? 'Hide All' : 'Show All';
|
|
1016
1110
|
var selectedToggleText = areSomeVisible ? 'Hide Selected' : 'Show Selected';
|
|
1017
|
-
var visibilityOrderingList = this.makeVisibilityOrderingList(model.columns, treeItems);
|
|
1111
|
+
var visibilityOrderingList = this.makeVisibilityOrderingList(model.columns, treeItems, showHiddenColumns);
|
|
1018
1112
|
var cursor = {
|
|
1019
1113
|
index: queriedColumnIndex,
|
|
1020
1114
|
next: direction => this.changeSelectedColumn(direction)
|
|
@@ -1022,8 +1116,10 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1022
1116
|
var matchCount = Object.keys(prevQueriedColumns !== null && prevQueriedColumns !== void 0 ? prevQueriedColumns : {}).length;
|
|
1023
1117
|
return /*#__PURE__*/_jsxs("div", {
|
|
1024
1118
|
role: "menu",
|
|
1119
|
+
ref: this.wrapperRef,
|
|
1025
1120
|
className: "visibility-ordering-builder",
|
|
1026
1121
|
tabIndex: 0,
|
|
1122
|
+
onKeyUp: this.handleKeyboardShortcut,
|
|
1027
1123
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
1028
1124
|
className: "top-menu",
|
|
1029
1125
|
children: [/*#__PURE__*/_jsx(Button, {
|
|
@@ -1041,6 +1137,56 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1041
1137
|
matchCount: searchFilter ? matchCount : undefined,
|
|
1042
1138
|
onChange: this.handleSearchInputChange,
|
|
1043
1139
|
cursor: cursor
|
|
1140
|
+
}), /*#__PURE__*/_jsxs(MenuTrigger, {
|
|
1141
|
+
closeOnSelect: false,
|
|
1142
|
+
children: [/*#__PURE__*/_jsx(ActionButton, {
|
|
1143
|
+
isQuiet: true,
|
|
1144
|
+
"aria-label": "More options",
|
|
1145
|
+
children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
1146
|
+
icon: vsKebabVertical
|
|
1147
|
+
})
|
|
1148
|
+
}), /*#__PURE__*/_jsxs(SpectrumMenu, {
|
|
1149
|
+
onAction: this.handleOverflowAction,
|
|
1150
|
+
disabledKeys: [!canUndo && 'undo', !canRedo && 'redo'].filter(k => typeof k === 'string'),
|
|
1151
|
+
children: [/*#__PURE__*/_jsxs(Section, {
|
|
1152
|
+
"aria-label": "Undo and Redo",
|
|
1153
|
+
children: [/*#__PURE__*/_jsxs(Item, {
|
|
1154
|
+
textValue: "Undo",
|
|
1155
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
|
1156
|
+
children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
1157
|
+
icon: vsBlank
|
|
1158
|
+
})
|
|
1159
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
1160
|
+
children: "Undo"
|
|
1161
|
+
}), /*#__PURE__*/_jsx(Keyboard, {
|
|
1162
|
+
children: GLOBAL_SHORTCUTS.UNDO.getDisplayText()
|
|
1163
|
+
})]
|
|
1164
|
+
}, "undo"), /*#__PURE__*/_jsxs(Item, {
|
|
1165
|
+
textValue: "Redo",
|
|
1166
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
|
1167
|
+
children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
1168
|
+
icon: vsBlank
|
|
1169
|
+
})
|
|
1170
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
1171
|
+
children: "Redo"
|
|
1172
|
+
}), /*#__PURE__*/_jsx(Keyboard, {
|
|
1173
|
+
children: GLOBAL_SHORTCUTS.REDO.getDisplayText()
|
|
1174
|
+
})]
|
|
1175
|
+
}, "redo")]
|
|
1176
|
+
}), /*#__PURE__*/_jsx(Section, {
|
|
1177
|
+
"aria-label": "More actions",
|
|
1178
|
+
children: /*#__PURE__*/_jsxs(Item, {
|
|
1179
|
+
textValue: "Show hidden columns",
|
|
1180
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
|
1181
|
+
children: /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
1182
|
+
icon: showHiddenColumns ? vsCheck : vsBlank
|
|
1183
|
+
})
|
|
1184
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
1185
|
+
children: "Show hidden columns"
|
|
1186
|
+
})]
|
|
1187
|
+
}, "showHidden")
|
|
1188
|
+
})]
|
|
1189
|
+
})]
|
|
1044
1190
|
})]
|
|
1045
1191
|
}), /*#__PURE__*/_jsxs("div", {
|
|
1046
1192
|
className: "top-menu",
|
|
@@ -1061,7 +1207,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1061
1207
|
className: "px-1",
|
|
1062
1208
|
tooltip: "Sort ascending",
|
|
1063
1209
|
onClick: () => {
|
|
1064
|
-
this.handleSortColumns(
|
|
1210
|
+
this.handleSortColumns(VisibilityOrderingBuilderInner.SORTING_OPTIONS.ASC);
|
|
1065
1211
|
}
|
|
1066
1212
|
}), /*#__PURE__*/_jsx(Button, {
|
|
1067
1213
|
kind: "ghost",
|
|
@@ -1069,7 +1215,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1069
1215
|
className: "px-1",
|
|
1070
1216
|
tooltip: "Sort descending",
|
|
1071
1217
|
onClick: () => {
|
|
1072
|
-
this.handleSortColumns(
|
|
1218
|
+
this.handleSortColumns(VisibilityOrderingBuilderInner.SORTING_OPTIONS.DSC);
|
|
1073
1219
|
}
|
|
1074
1220
|
}), /*#__PURE__*/_jsx("span", {
|
|
1075
1221
|
className: "vertical-divider"
|
|
@@ -1098,7 +1244,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1098
1244
|
className: "px-1",
|
|
1099
1245
|
tooltip: "Move selection up",
|
|
1100
1246
|
onClick: () => {
|
|
1101
|
-
this.handleMoveColumns(
|
|
1247
|
+
this.handleMoveColumns(VisibilityOrderingBuilderInner.MOVE_OPTIONS.UP);
|
|
1102
1248
|
},
|
|
1103
1249
|
disabled: !hasSelection
|
|
1104
1250
|
}), /*#__PURE__*/_jsx(Button, {
|
|
@@ -1107,7 +1253,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1107
1253
|
className: "px-1",
|
|
1108
1254
|
tooltip: "Move selection down",
|
|
1109
1255
|
onClick: () => {
|
|
1110
|
-
this.handleMoveColumns(
|
|
1256
|
+
this.handleMoveColumns(VisibilityOrderingBuilderInner.MOVE_OPTIONS.DOWN);
|
|
1111
1257
|
},
|
|
1112
1258
|
disabled: !hasSelection
|
|
1113
1259
|
}), /*#__PURE__*/_jsx(Button, {
|
|
@@ -1116,7 +1262,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1116
1262
|
className: "px-1",
|
|
1117
1263
|
tooltip: "Move selection to top",
|
|
1118
1264
|
onClick: () => {
|
|
1119
|
-
this.handleMoveColumns(
|
|
1265
|
+
this.handleMoveColumns(VisibilityOrderingBuilderInner.MOVE_OPTIONS.TOP);
|
|
1120
1266
|
},
|
|
1121
1267
|
disabled: !hasSelection
|
|
1122
1268
|
}), /*#__PURE__*/_jsx(Button, {
|
|
@@ -1125,7 +1271,7 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1125
1271
|
className: "px-1",
|
|
1126
1272
|
tooltip: "Move selection to bottom",
|
|
1127
1273
|
onClick: () => {
|
|
1128
|
-
this.handleMoveColumns(
|
|
1274
|
+
this.handleMoveColumns(VisibilityOrderingBuilderInner.MOVE_OPTIONS.BOTTOM);
|
|
1129
1275
|
},
|
|
1130
1276
|
disabled: !hasSelection
|
|
1131
1277
|
})]
|
|
@@ -1143,15 +1289,104 @@ class VisibilityOrderingBuilder extends PureComponent {
|
|
|
1143
1289
|
});
|
|
1144
1290
|
}
|
|
1145
1291
|
}
|
|
1146
|
-
|
|
1292
|
+
|
|
1293
|
+
// drag and drop display
|
|
1294
|
+
_defineProperty(VisibilityOrderingBuilderInner, "SORTING_OPTIONS", {
|
|
1147
1295
|
DSC: 'DSC',
|
|
1148
1296
|
ASC: 'ASC'
|
|
1149
1297
|
});
|
|
1150
|
-
_defineProperty(
|
|
1298
|
+
_defineProperty(VisibilityOrderingBuilderInner, "MOVE_OPTIONS", {
|
|
1151
1299
|
TOP: 'TOP',
|
|
1152
1300
|
BOTTOM: 'BOTTOM',
|
|
1153
1301
|
UP: 'UP',
|
|
1154
1302
|
DOWN: 'DOWN'
|
|
1155
1303
|
});
|
|
1304
|
+
var VisibilityOrderingBuilder = /*#__PURE__*/memo(props => {
|
|
1305
|
+
var {
|
|
1306
|
+
movedColumns,
|
|
1307
|
+
hiddenColumns,
|
|
1308
|
+
columnHeaderGroups,
|
|
1309
|
+
onMovedColumnsChanged,
|
|
1310
|
+
onColumnVisibilityChanged,
|
|
1311
|
+
onColumnHeaderGroupChanged,
|
|
1312
|
+
onFrozenColumnsChanged,
|
|
1313
|
+
// Used for unit tests only
|
|
1314
|
+
__testRef
|
|
1315
|
+
} = props;
|
|
1316
|
+
var {
|
|
1317
|
+
set: setUndoState,
|
|
1318
|
+
undo,
|
|
1319
|
+
canUndo,
|
|
1320
|
+
redo,
|
|
1321
|
+
canRedo,
|
|
1322
|
+
state
|
|
1323
|
+
} = useUndoRedo({
|
|
1324
|
+
movedColumns,
|
|
1325
|
+
hiddenColumns,
|
|
1326
|
+
columnHeaderGroups,
|
|
1327
|
+
frozenColumns: props.model.frozenColumns
|
|
1328
|
+
});
|
|
1329
|
+
|
|
1330
|
+
// On undo/redo, we need to ignore the prop change
|
|
1331
|
+
// because we are the ones updating the props
|
|
1332
|
+
var isUndoRedoAction = useRef(false);
|
|
1333
|
+
var isBatched = useRef(false);
|
|
1334
|
+
var startUndoGroup = useCallback(() => {
|
|
1335
|
+
isBatched.current = true;
|
|
1336
|
+
}, []);
|
|
1337
|
+
var endUndoGroup = useCallback(() => {
|
|
1338
|
+
isBatched.current = false;
|
|
1339
|
+
}, []);
|
|
1340
|
+
useEffect(() => {
|
|
1341
|
+
if (isUndoRedoAction.current) {
|
|
1342
|
+
onMovedColumnsChanged(state.movedColumns);
|
|
1343
|
+
onColumnVisibilityChanged(hiddenColumns, true);
|
|
1344
|
+
onColumnVisibilityChanged(state.hiddenColumns, false);
|
|
1345
|
+
onColumnHeaderGroupChanged(state.columnHeaderGroups);
|
|
1346
|
+
onFrozenColumnsChanged(state.frozenColumns);
|
|
1347
|
+
isUndoRedoAction.current = false;
|
|
1348
|
+
} else if (
|
|
1349
|
+
// If the parent props changed and it's not an undo/redo action, update the undo state
|
|
1350
|
+
!isBatched.current && (movedColumns !== state.movedColumns || columnHeaderGroups !== state.columnHeaderGroups || hiddenColumns.length !== state.hiddenColumns.length || hiddenColumns.some((col, index) => col !== state.hiddenColumns[index]))) {
|
|
1351
|
+
setUndoState({
|
|
1352
|
+
movedColumns,
|
|
1353
|
+
hiddenColumns,
|
|
1354
|
+
columnHeaderGroups,
|
|
1355
|
+
frozenColumns: props.model.frozenColumns
|
|
1356
|
+
});
|
|
1357
|
+
}
|
|
1358
|
+
}, [columnHeaderGroups, hiddenColumns, isBatched, movedColumns, onColumnHeaderGroupChanged, onColumnVisibilityChanged, onFrozenColumnsChanged, onMovedColumnsChanged, props.model.frozenColumns, setUndoState, state.columnHeaderGroups, state.frozenColumns, state.hiddenColumns, state.movedColumns]);
|
|
1359
|
+
var handleColumnHeaderGroupChanged = useCallback(groups => {
|
|
1360
|
+
onColumnHeaderGroupChanged(
|
|
1361
|
+
// Updates which model indexes are in the groups if items were added/removed
|
|
1362
|
+
IrisGridUtils.parseColumnHeaderGroups(props.model, groups).groups);
|
|
1363
|
+
}, [onColumnHeaderGroupChanged, props.model]);
|
|
1364
|
+
var handleUndo = useCallback(() => {
|
|
1365
|
+
isUndoRedoAction.current = true;
|
|
1366
|
+
undo();
|
|
1367
|
+
}, [undo]);
|
|
1368
|
+
var handleRedo = useCallback(() => {
|
|
1369
|
+
isUndoRedoAction.current = true;
|
|
1370
|
+
redo();
|
|
1371
|
+
}, [redo]);
|
|
1372
|
+
return /*#__PURE__*/_jsx(VisibilityOrderingBuilderInner
|
|
1373
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
1374
|
+
, _objectSpread(_objectSpread({}, props), {}, {
|
|
1375
|
+
ref: __testRef,
|
|
1376
|
+
movedColumns: movedColumns,
|
|
1377
|
+
hiddenColumns: hiddenColumns,
|
|
1378
|
+
columnHeaderGroups: columnHeaderGroups,
|
|
1379
|
+
onMovedColumnsChanged: onMovedColumnsChanged,
|
|
1380
|
+
onColumnVisibilityChanged: onColumnVisibilityChanged,
|
|
1381
|
+
onColumnHeaderGroupChanged: handleColumnHeaderGroupChanged,
|
|
1382
|
+
undo: handleUndo,
|
|
1383
|
+
canUndo: canUndo,
|
|
1384
|
+
redo: handleRedo,
|
|
1385
|
+
canRedo: canRedo,
|
|
1386
|
+
startUndoGroup: startUndoGroup,
|
|
1387
|
+
endUndoGroup: endUndoGroup
|
|
1388
|
+
}));
|
|
1389
|
+
});
|
|
1390
|
+
VisibilityOrderingBuilder.displayName = 'VisibilityOrderingBuilder';
|
|
1156
1391
|
export default VisibilityOrderingBuilder;
|
|
1157
1392
|
//# sourceMappingURL=VisibilityOrderingBuilder.js.map
|