@deephaven/iris-grid 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.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.
Files changed (160) hide show
  1. package/dist/AdvancedFilterCreator.js +65 -102
  2. package/dist/AdvancedFilterCreator.js.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
  6. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
  8. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  9. package/dist/ColumnHeaderGroup.js +6 -8
  10. package/dist/ColumnHeaderGroup.js.map +1 -1
  11. package/dist/ColumnStatistics.js +22 -28
  12. package/dist/ColumnStatistics.js.map +1 -1
  13. package/dist/CrossColumnSearch.js +20 -29
  14. package/dist/CrossColumnSearch.js.map +1 -1
  15. package/dist/FilterInputField.js +19 -46
  16. package/dist/FilterInputField.js.map +1 -1
  17. package/dist/GotoRow.js +32 -29
  18. package/dist/GotoRow.js.map +1 -1
  19. package/dist/IrisGrid.js +490 -822
  20. package/dist/IrisGrid.js.map +1 -1
  21. package/dist/IrisGridBottomBar.js +10 -11
  22. package/dist/IrisGridBottomBar.js.map +1 -1
  23. package/dist/IrisGridCacheUtils.js +28 -8
  24. package/dist/IrisGridCacheUtils.js.map +1 -1
  25. package/dist/IrisGridCellOverflowModal.js +30 -13
  26. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  27. package/dist/IrisGridCellRendererUtils.js +6 -12
  28. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  29. package/dist/IrisGridCopyHandler.js +28 -47
  30. package/dist/IrisGridCopyHandler.js.map +1 -1
  31. package/dist/IrisGridMetricCalculator.js +28 -51
  32. package/dist/IrisGridMetricCalculator.js.map +1 -1
  33. package/dist/IrisGridModelUpdater.js +32 -30
  34. package/dist/IrisGridModelUpdater.js.map +1 -1
  35. package/dist/IrisGridPartitionSelector.js +28 -62
  36. package/dist/IrisGridPartitionSelector.js.map +1 -1
  37. package/dist/IrisGridProxyModel.js +7 -12
  38. package/dist/IrisGridProxyModel.js.map +1 -1
  39. package/dist/IrisGridRenderer.js +162 -264
  40. package/dist/IrisGridRenderer.js.map +1 -1
  41. package/dist/IrisGridTableModel.js +23 -16
  42. package/dist/IrisGridTableModel.js.map +1 -1
  43. package/dist/IrisGridTableModelTemplate.js +49 -73
  44. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  45. package/dist/IrisGridTestUtils.js +19 -19
  46. package/dist/IrisGridTestUtils.js.map +1 -1
  47. package/dist/IrisGridTextCellRenderer.js +35 -52
  48. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  49. package/dist/IrisGridTheme.js +9 -1
  50. package/dist/IrisGridTheme.js.map +1 -1
  51. package/dist/IrisGridThemeProvider.js +5 -7
  52. package/dist/IrisGridThemeProvider.js.map +1 -1
  53. package/dist/IrisGridTreeTableModel.js +5 -9
  54. package/dist/IrisGridTreeTableModel.js.map +1 -1
  55. package/dist/IrisGridUtils.js +246 -300
  56. package/dist/IrisGridUtils.js.map +1 -1
  57. package/dist/NoPastePermissionModal.js +3 -5
  58. package/dist/NoPastePermissionModal.js.map +1 -1
  59. package/dist/PendingDataBottomBar.js +27 -16
  60. package/dist/PendingDataBottomBar.js.map +1 -1
  61. package/dist/ToastBottomBar.js +16 -8
  62. package/dist/ToastBottomBar.js.map +1 -1
  63. package/dist/format-context-menus/CustomFormatAction.js +11 -24
  64. package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
  65. package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
  66. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  67. package/dist/key-handlers/CopyKeyHandler.js +1 -3
  68. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  69. package/dist/key-handlers/ReverseKeyHandler.js +1 -3
  70. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  71. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
  72. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  73. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
  74. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  75. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
  76. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  77. package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
  78. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  79. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
  80. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  81. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
  82. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  83. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
  84. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  85. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
  86. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  87. package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
  88. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  89. package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
  90. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  91. package/dist/mousehandlers/PendingMouseHandler.js +10 -18
  92. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  93. package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
  94. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  95. package/dist/sidebar/ChartBuilder.js +45 -102
  96. package/dist/sidebar/ChartBuilder.js.map +1 -1
  97. package/dist/sidebar/CustomColumnBuilder.js +35 -77
  98. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  99. package/dist/sidebar/CustomColumnInput.js +9 -11
  100. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  101. package/dist/sidebar/InputEditor.js +17 -24
  102. package/dist/sidebar/InputEditor.js.map +1 -1
  103. package/dist/sidebar/PluginTableOptionsErrorBoundary.js +6 -11
  104. package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -1
  105. package/dist/sidebar/RollupRows.js +72 -113
  106. package/dist/sidebar/RollupRows.js.map +1 -1
  107. package/dist/sidebar/SelectDistinctBuilder.js +16 -33
  108. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  109. package/dist/sidebar/TableCsvExporter.js +50 -74
  110. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  111. package/dist/sidebar/TableSaver.js +18 -42
  112. package/dist/sidebar/TableSaver.js.map +1 -1
  113. package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
  114. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  115. package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
  116. package/dist/sidebar/aggregations/AggregationUtils.js +3 -4
  117. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  118. package/dist/sidebar/aggregations/Aggregations.js +45 -34
  119. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  120. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
  121. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  122. package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
  123. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  124. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
  125. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  126. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
  127. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  128. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
  129. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  130. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
  131. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  132. package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
  133. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  134. package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
  135. package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
  136. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
  137. package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
  138. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
  139. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  140. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
  141. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  142. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
  143. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
  144. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
  145. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  146. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
  147. package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
  148. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
  149. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  150. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
  151. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
  152. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
  153. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  154. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
  155. package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
  156. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
  157. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  158. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
  159. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  160. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityOrderingBuilderUtils.js","names":["GridUtils","clamp","ColumnHeaderGroup","moveItemsFromDrop","from","to","movedColumns","columnHeaderGroups","selectedParentItems","firstMovableIndex","lastMovableIndex","newMoves","newGroups","firstVisibleIndex","data","visibleIndex","fromItemIndex","index","toItemIndex","toIndex","Array","isArray","moveToGroup","parentId","i","length","moveItemOrRange","selectedRange","originalDropIndex","dropIndex","getVisibleIndex","children","groups","concat","item","toName","columnGroups","map","group","newGroupMap","Map","name","fromGroup","find","g","toGroup","movedGroup","id","filter","_parent","deleteNames","Set","parent","parentName","get","removeChildren","_parent$parent","_parent2","add","nextParentName","nextParent","_ref","has","addChildren","setParent","undefined"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.ts"],"sourcesContent":["import { GridUtils, type MoveOperation } from '@deephaven/grid';\nimport clamp from 'lodash.clamp';\nimport ColumnHeaderGroup from '../../ColumnHeaderGroup';\nimport { type FlattenedItem } from './sortable-tree/types';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\n\n/**\n * Moves an item as the result of drag and drop in the visibility ordering builder\n * This is extracted from the component mostly for testing purposes\n * Drag and drop interactions are not easily testable\n *\n * @param from The item being dragged\n * @param to The item being dropped on\n * @param movedColumns The existing moved columns\n * @param columnHeaderGroups The column header groups pre-drag\n * @param flattenedItems Flattened tree items representing the list\n * @param selectedParentItems The user selected items in tree order. Should not include items if their parent item is selected\n * @param firstMovableIndex The first visible index that can be moved\n * @param lastMovableIndex The last visible index that can be moved\n * @returns Object containing the updated column header groups and updated movedColumns array\n * The movedColumns returned is complete and does not need to be combined with the existing movedColumns\n */\nexport function moveItemsFromDrop(\n from: FlattenedIrisGridTreeItem,\n to: FlattenedIrisGridTreeItem,\n movedColumns: readonly MoveOperation[],\n columnHeaderGroups: readonly ColumnHeaderGroup[],\n selectedParentItems: readonly FlattenedIrisGridTreeItem[],\n firstMovableIndex: number,\n lastMovableIndex: number\n): {\n groups: readonly ColumnHeaderGroup[];\n movedColumns: readonly MoveOperation[];\n} {\n let newMoves = [] as MoveOperation[];\n let newGroups = columnHeaderGroups;\n\n const firstVisibleIndex = selectedParentItems[0].data.visibleIndex;\n\n const fromItemIndex = from.index;\n const toItemIndex = to.index;\n\n let toIndex = Array.isArray(firstVisibleIndex)\n ? firstVisibleIndex[1] + 1\n : firstVisibleIndex + 1;\n\n newGroups = moveToGroup(selectedParentItems[0], to.parentId, newGroups);\n\n // Move the items after to all after the first selected item\n for (let i = 1; i < selectedParentItems.length; i += 1) {\n const {\n data: { visibleIndex },\n } = selectedParentItems[i];\n\n newMoves = GridUtils.moveItemOrRange(visibleIndex, toIndex, newMoves, true);\n\n toIndex += Array.isArray(visibleIndex)\n ? visibleIndex[1] - visibleIndex[0] + 1\n : 1;\n\n newGroups = moveToGroup(selectedParentItems[i], to.parentId, newGroups);\n }\n\n const selectedRange = [\n Array.isArray(firstVisibleIndex) ? firstVisibleIndex[0] : firstVisibleIndex,\n toIndex - 1,\n ] as [number, number];\n\n const originalDropIndex = Array.isArray(to.data.visibleIndex)\n ? to.data.visibleIndex[0]\n : to.data.visibleIndex;\n let dropIndex = GridUtils.getVisibleIndex(originalDropIndex, newMoves);\n\n // When moving up from multi-select\n // And the items caused the drop index to shift (disjoint multi-select)\n // The drop index will be off by 1\n if (fromItemIndex > toItemIndex && dropIndex > originalDropIndex) {\n dropIndex -= 1;\n }\n // Dropping as first item in a group\n // Need to adjust visible index if dragging from before this group or it is off by 1\n if (\n to.children.length > 0 &&\n (Array.isArray(firstVisibleIndex)\n ? firstVisibleIndex[0]\n : firstVisibleIndex) < dropIndex\n ) {\n dropIndex -= 1;\n }\n\n if (selectedRange[0] < dropIndex) {\n dropIndex -= selectedRange[1] - selectedRange[0];\n }\n\n newMoves = GridUtils.moveItemOrRange(\n selectedRange,\n clamp(dropIndex, firstMovableIndex, lastMovableIndex),\n newMoves\n );\n\n return {\n groups: newGroups,\n movedColumns:\n newMoves.length > 0 ? movedColumns.concat(newMoves) : movedColumns,\n };\n}\n\nexport function moveToGroup<T>(\n item: FlattenedItem<T>,\n toName: string | null,\n columnGroups: readonly ColumnHeaderGroup[]\n): readonly ColumnHeaderGroup[] {\n if (item.parentId === toName) {\n // Don't need to move an item if it is already in the group\n return columnGroups;\n }\n\n let newGroups = columnGroups.map(group => new ColumnHeaderGroup(group));\n const newGroupMap = new Map(newGroups.map(group => [group.name, group]));\n const fromGroup = newGroups.find(g => g.name === item.parentId);\n const toGroup = newGroups.find(g => g.name === toName);\n const movedGroup = newGroups.find(g => g.name === item.id);\n\n if (fromGroup != null) {\n // Moved out of a group\n fromGroup.children = fromGroup.children.filter(name => name !== item.id);\n\n // Moved all children out of a group\n if (fromGroup.children.length === 0) {\n const deleteNames = new Set([fromGroup.name]);\n const { parent: parentName = '' } = fromGroup;\n let parent = newGroupMap.get(parentName);\n parent?.removeChildren([fromGroup.name]);\n\n // Might need to delete parents if their only child is the now empty group\n while (parent && parent.children.length === 0) {\n deleteNames.add(parent.name);\n const nextParentName = parent?.parent ?? '';\n const nextParent = newGroupMap.get(nextParentName);\n nextParent?.removeChildren([parent.name]);\n parent = nextParent;\n }\n\n // Delete all groups that are now empty\n newGroups = newGroups.filter(({ name }) => !deleteNames.has(name));\n }\n }\n\n if (toGroup != null) {\n // Moved into a group\n toGroup.addChildren([item.id]);\n }\n\n movedGroup?.setParent(toName ?? undefined);\n\n return newGroups;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VisibilityOrderingBuilderUtils.js","names":["GridUtils","clamp","ColumnHeaderGroup","moveItemsFromDrop","from","to","movedColumns","columnHeaderGroups","selectedParentItems","firstMovableIndex","lastMovableIndex","newMoves","newGroups","firstVisibleIndex","data","visibleIndex","fromItemIndex","index","toItemIndex","toIndex","Array","isArray","moveToGroup","parentId","i","length","moveItemOrRange","selectedRange","originalDropIndex","dropIndex","getVisibleIndex","children","groups","concat","item","toName","columnGroups","map","group","newGroupMap","Map","name","fromGroup","find","g","toGroup","movedGroup","id","filter","_parent","deleteNames","Set","_fromGroup$parent","parent","parentName","get","removeChildren","_parent$parent","_parent2","add","nextParentName","nextParent","_ref","has","addChildren","setParent","undefined"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.ts"],"sourcesContent":["import { GridUtils, type MoveOperation } from '@deephaven/grid';\nimport clamp from 'lodash.clamp';\nimport ColumnHeaderGroup from '../../ColumnHeaderGroup';\nimport { type FlattenedItem } from './sortable-tree/types';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\n\n/**\n * Moves an item as the result of drag and drop in the visibility ordering builder\n * This is extracted from the component mostly for testing purposes\n * Drag and drop interactions are not easily testable\n *\n * @param from The item being dragged\n * @param to The item being dropped on\n * @param movedColumns The existing moved columns\n * @param columnHeaderGroups The column header groups pre-drag\n * @param flattenedItems Flattened tree items representing the list\n * @param selectedParentItems The user selected items in tree order. Should not include items if their parent item is selected\n * @param firstMovableIndex The first visible index that can be moved\n * @param lastMovableIndex The last visible index that can be moved\n * @returns Object containing the updated column header groups and updated movedColumns array\n * The movedColumns returned is complete and does not need to be combined with the existing movedColumns\n */\nexport function moveItemsFromDrop(\n from: FlattenedIrisGridTreeItem,\n to: FlattenedIrisGridTreeItem,\n movedColumns: readonly MoveOperation[],\n columnHeaderGroups: readonly ColumnHeaderGroup[],\n selectedParentItems: readonly FlattenedIrisGridTreeItem[],\n firstMovableIndex: number,\n lastMovableIndex: number\n): {\n groups: readonly ColumnHeaderGroup[];\n movedColumns: readonly MoveOperation[];\n} {\n let newMoves = [] as MoveOperation[];\n let newGroups = columnHeaderGroups;\n\n const firstVisibleIndex = selectedParentItems[0].data.visibleIndex;\n\n const fromItemIndex = from.index;\n const toItemIndex = to.index;\n\n let toIndex = Array.isArray(firstVisibleIndex)\n ? firstVisibleIndex[1] + 1\n : firstVisibleIndex + 1;\n\n newGroups = moveToGroup(selectedParentItems[0], to.parentId, newGroups);\n\n // Move the items after to all after the first selected item\n for (let i = 1; i < selectedParentItems.length; i += 1) {\n const {\n data: { visibleIndex },\n } = selectedParentItems[i];\n\n newMoves = GridUtils.moveItemOrRange(visibleIndex, toIndex, newMoves, true);\n\n toIndex += Array.isArray(visibleIndex)\n ? visibleIndex[1] - visibleIndex[0] + 1\n : 1;\n\n newGroups = moveToGroup(selectedParentItems[i], to.parentId, newGroups);\n }\n\n const selectedRange = [\n Array.isArray(firstVisibleIndex) ? firstVisibleIndex[0] : firstVisibleIndex,\n toIndex - 1,\n ] as [number, number];\n\n const originalDropIndex = Array.isArray(to.data.visibleIndex)\n ? to.data.visibleIndex[0]\n : to.data.visibleIndex;\n let dropIndex = GridUtils.getVisibleIndex(originalDropIndex, newMoves);\n\n // When moving up from multi-select\n // And the items caused the drop index to shift (disjoint multi-select)\n // The drop index will be off by 1\n if (fromItemIndex > toItemIndex && dropIndex > originalDropIndex) {\n dropIndex -= 1;\n }\n // Dropping as first item in a group\n // Need to adjust visible index if dragging from before this group or it is off by 1\n if (\n to.children.length > 0 &&\n (Array.isArray(firstVisibleIndex)\n ? firstVisibleIndex[0]\n : firstVisibleIndex) < dropIndex\n ) {\n dropIndex -= 1;\n }\n\n if (selectedRange[0] < dropIndex) {\n dropIndex -= selectedRange[1] - selectedRange[0];\n }\n\n newMoves = GridUtils.moveItemOrRange(\n selectedRange,\n clamp(dropIndex, firstMovableIndex, lastMovableIndex),\n newMoves\n );\n\n return {\n groups: newGroups,\n movedColumns:\n newMoves.length > 0 ? movedColumns.concat(newMoves) : movedColumns,\n };\n}\n\nexport function moveToGroup<T>(\n item: FlattenedItem<T>,\n toName: string | null,\n columnGroups: readonly ColumnHeaderGroup[]\n): readonly ColumnHeaderGroup[] {\n if (item.parentId === toName) {\n // Don't need to move an item if it is already in the group\n return columnGroups;\n }\n\n let newGroups = columnGroups.map(group => new ColumnHeaderGroup(group));\n const newGroupMap = new Map(newGroups.map(group => [group.name, group]));\n const fromGroup = newGroups.find(g => g.name === item.parentId);\n const toGroup = newGroups.find(g => g.name === toName);\n const movedGroup = newGroups.find(g => g.name === item.id);\n\n if (fromGroup != null) {\n // Moved out of a group\n fromGroup.children = fromGroup.children.filter(name => name !== item.id);\n\n // Moved all children out of a group\n if (fromGroup.children.length === 0) {\n const deleteNames = new Set([fromGroup.name]);\n const { parent: parentName = '' } = fromGroup;\n let parent = newGroupMap.get(parentName);\n parent?.removeChildren([fromGroup.name]);\n\n // Might need to delete parents if their only child is the now empty group\n while (parent && parent.children.length === 0) {\n deleteNames.add(parent.name);\n const nextParentName = parent?.parent ?? '';\n const nextParent = newGroupMap.get(nextParentName);\n nextParent?.removeChildren([parent.name]);\n parent = nextParent;\n }\n\n // Delete all groups that are now empty\n newGroups = newGroups.filter(({ name }) => !deleteNames.has(name));\n }\n }\n\n if (toGroup != null) {\n // Moved into a group\n toGroup.addChildren([item.id]);\n }\n\n movedGroup?.setParent(toName ?? undefined);\n\n return newGroups;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  import React, { useEffect, useRef, useState, useCallback } from 'react';
2
8
  import classNames from 'classnames';
3
9
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
@@ -7,22 +13,30 @@ import "./VisibilityOrderingGroup.css";
7
13
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
8
14
  export default function VisibilityOrderingGroup(props) {
9
15
  var _group$color;
10
- var {
11
- group,
12
- onDelete,
13
- onColorChange,
14
- onNameChange,
15
- validateName
16
- } = props;
17
- var {
18
- isNew
19
- } = group;
16
+ var group = props.group,
17
+ onDelete = props.onDelete,
18
+ onColorChange = props.onColorChange,
19
+ onNameChange = props.onNameChange,
20
+ validateName = props.validateName;
21
+ var isNew = group.isNew;
20
22
  var nameInputRef = useRef(null);
21
23
  var colorInputRef = useRef(null);
22
- var [isColorInputOpen, setIsColorInputOpen] = useState(false);
23
- var [name, setName] = useState(isNew ? '' : group.name);
24
- var [isEditing, setIsEditing] = useState(isNew);
25
- var [shouldValidate, setShouldValidate] = useState(false);
24
+ var _useState = useState(false),
25
+ _useState2 = _slicedToArray(_useState, 2),
26
+ isColorInputOpen = _useState2[0],
27
+ setIsColorInputOpen = _useState2[1];
28
+ var _useState3 = useState(isNew ? '' : group.name),
29
+ _useState4 = _slicedToArray(_useState3, 2),
30
+ name = _useState4[0],
31
+ setName = _useState4[1];
32
+ var _useState5 = useState(isNew),
33
+ _useState6 = _slicedToArray(_useState5, 2),
34
+ isEditing = _useState6[0],
35
+ setIsEditing = _useState6[1];
36
+ var _useState7 = useState(false),
37
+ _useState8 = _slicedToArray(_useState7, 2),
38
+ shouldValidate = _useState8[0],
39
+ setShouldValidate = _useState8[1];
26
40
  var nameValidationError = name !== group.name ? validateName(name) : '';
27
41
  var isValid = isNew && !shouldValidate || nameValidationError === '';
28
42
  var colorInputBlurHandler = useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityOrderingGroup.js","names":["React","useEffect","useRef","useState","useCallback","classNames","FontAwesomeIcon","Button","ThemeExport","dhSquareFilled","vsCheck","vsChromeClose","vsEdit","vsPaintcan","vsTrash","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","VisibilityOrderingGroup","props","_group$color","group","onDelete","onColorChange","onNameChange","validateName","isNew","nameInputRef","colorInputRef","isColorInputOpen","setIsColorInputOpen","name","setName","isEditing","setIsEditing","shouldValidate","setShouldValidate","nameValidationError","isValid","colorInputBlurHandler","focusEditInput","current","focus","select","openColorInput","_colorInputRef$curren","_colorInputRef$curren2","click","window","addEventListener","removeEventListener","handleConfirm","handleCancel","handleEditKeyDown","e","key","stopPropagation","children","className","ref","value","placeholder","onChange","target","onKeyDown","onBlur","kind","icon","tooltip","onClick","color","undefined","white","transform","val","type","list","style","visibility","width","height","padding","border","id","primary","foreground","green","yellow","orange","red","purple","blue"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, ThemeExport } from '@deephaven/components';\nimport {\n dhSquareFilled,\n vsCheck,\n vsChromeClose,\n vsEdit,\n vsPaintcan,\n vsTrash,\n} from '@deephaven/icons';\nimport type ColumnHeaderGroup from '../../ColumnHeaderGroup';\nimport './VisibilityOrderingGroup.scss';\n\ninterface VisibilityOrderingGroupProps {\n group: ColumnHeaderGroup;\n onDelete: (group: ColumnHeaderGroup) => void;\n onColorChange: (group: ColumnHeaderGroup, color: string | undefined) => void;\n onNameChange: (group: ColumnHeaderGroup, name: string) => void;\n validateName: (name: string) => string;\n}\n\nexport default function VisibilityOrderingGroup(\n props: VisibilityOrderingGroupProps\n): JSX.Element {\n const { group, onDelete, onColorChange, onNameChange, validateName } = props;\n const { isNew } = group;\n const nameInputRef = useRef<HTMLInputElement>(null);\n const colorInputRef = useRef<HTMLInputElement>(null);\n const [isColorInputOpen, setIsColorInputOpen] = useState(false);\n const [name, setName] = useState(isNew ? '' : group.name);\n const [isEditing, setIsEditing] = useState(isNew);\n const [shouldValidate, setShouldValidate] = useState(false);\n const nameValidationError = name !== group.name ? validateName(name) : '';\n const isValid = (isNew && !shouldValidate) || nameValidationError === '';\n const colorInputBlurHandler = useCallback(() => {\n setIsColorInputOpen(false);\n }, []);\n\n useEffect(\n function focusEditInput() {\n if (isEditing && nameInputRef.current) {\n // This is solely b/c RTL doesn't count select as focusing the element\n // Might be fixed in v13+ of RTL\n nameInputRef.current.focus();\n nameInputRef.current.select();\n }\n },\n [isEditing]\n );\n\n useEffect(\n function openColorInput() {\n if (isColorInputOpen) {\n colorInputRef.current?.click();\n // Mostly for testing. Chrome seems to not give the hidden input focus\n // Really would only affect screen readers\n colorInputRef.current?.focus();\n\n /**\n * Adding this event handler is for Firefox on Mac\n * There seems to be buggy behavior when multiple color inputs are on the same page\n * Clicking between the inputs without closing the previous causes a bad state\n * The user gets to a point where they can't open most of the pickers\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1618418\n * https://bugzilla.mozilla.org/show_bug.cgi?id=975468\n * Instead, we remove the color input when any focus is returned to the window\n * This causes Firefox on Mac to mostly operate correctly\n * Firefox seems to ignore the first click back into the window and emit no event\n * So opening a color picker when another is open requires 2 clicks in Firefox\n */\n window.addEventListener('click', colorInputBlurHandler, true);\n }\n\n return () =>\n window.removeEventListener('click', colorInputBlurHandler, true);\n },\n [isColorInputOpen, colorInputBlurHandler]\n );\n\n const handleConfirm = (): void => {\n if (isValid) {\n // Don't trigger change if the value is the same\n if (group.name !== name) {\n onNameChange(group, name);\n }\n setIsEditing(false);\n }\n };\n\n const handleCancel = (): void => {\n if (isNew) {\n onDelete(group);\n return;\n }\n setName(group.name);\n setIsEditing(false);\n };\n\n const handleEditKeyDown = (e: React.KeyboardEvent): void => {\n setShouldValidate(true);\n if (e.key === 'Enter') {\n e.stopPropagation();\n handleConfirm();\n }\n\n if (e.key === ' ') {\n e.stopPropagation();\n }\n\n if (e.key === 'Escape') {\n handleCancel();\n }\n };\n\n if (isEditing) {\n return (\n <>\n <div className=\"editing-container\">\n <input\n ref={nameInputRef}\n className={classNames('form-control', {\n 'is-invalid': !isValid,\n })}\n value={name}\n placeholder=\"Group Name\"\n onChange={e => setName(e.target.value)}\n onKeyDown={handleEditKeyDown}\n onBlur={() => setShouldValidate(true)}\n />\n <Button\n kind=\"ghost\"\n icon={vsCheck}\n tooltip=\"Confirm\"\n onClick={handleConfirm}\n />\n <Button\n kind=\"ghost\"\n icon={vsChromeClose}\n tooltip=\"Cancel\"\n onClick={handleCancel}\n />\n </div>\n {!isValid && (\n <p className=\"mb-0 validate-label-error text-danger\">\n {nameValidationError}\n </p>\n )}\n </>\n );\n }\n\n return (\n <div className=\"group-name-wrapper\">\n <span className=\"column-name\">{name}</span>\n <Button\n className=\"p-1 mx-1\"\n kind=\"ghost\"\n icon={vsEdit}\n tooltip=\"Edit\"\n onClick={() => {\n setIsEditing(true);\n }}\n />\n\n <span className=\"right-buttons\">\n <Button\n kind=\"ghost\"\n icon={vsTrash}\n tooltip=\"Delete group\"\n onClick={() => onDelete(group)}\n />\n <Button\n kind=\"ghost\"\n className=\"color-swatch mr-1\"\n icon={\n group.color !== undefined ? (\n <span className=\"fa-layers\">\n <FontAwesomeIcon\n className=\"color-swatch\"\n icon={dhSquareFilled}\n color={ThemeExport.white}\n transform=\"down-1\"\n />\n <FontAwesomeIcon\n className=\"color-swatch\"\n icon={dhSquareFilled}\n color={group.color}\n transform=\"shrink-2 down-1\"\n />\n </span>\n ) : (\n vsPaintcan\n )\n }\n tooltip=\"Set color\"\n /**\n * Toggle to close the picker on Chrome\n * Prevents Firefox on Mac from getting into a stuck state\n * Does not close on Firefox b/c the picker stays open when the element is removed\n */\n onClick={() => setIsColorInputOpen(val => !val)}\n />\n {isColorInputOpen && (\n <>\n <input\n aria-label=\"Color input\"\n ref={colorInputRef}\n type=\"color\"\n list=\"presetColors\"\n value={group.color ?? ThemeExport['content-bg']}\n style={{\n visibility: 'hidden',\n width: 0,\n height: 0,\n padding: 0,\n border: 0,\n }}\n onChange={e => {\n onColorChange(group, e.target.value);\n }}\n />\n <datalist id=\"presetColors\">\n <option>{ThemeExport['content-bg']}</option>\n <option>{ThemeExport.primary}</option>\n <option>{ThemeExport.foreground}</option>\n <option>{ThemeExport.green}</option>\n <option>{ThemeExport.yellow}</option>\n <option>{ThemeExport.orange}</option>\n <option>{ThemeExport.red}</option>\n <option>{ThemeExport.purple}</option>\n <option>{ThemeExport.blue}</option>\n <option>{ThemeExport['gray-400']}</option>\n </datalist>\n </>\n )}\n </span>\n </div>\n );\n}\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,QAAQ,OAAO;AACvE,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,MAAM,EAAEC,WAAW,QAAQ,uBAAuB;AAC3D,SACEC,cAAc,EACdC,OAAO,EACPC,aAAa,EACbC,MAAM,EACNC,UAAU,EACVC,OAAO,QACF,kBAAkB;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAY1B,eAAe,SAASC,uBAAuBA,CAC7CC,KAAmC,EACtB;EAAA,IAAAC,YAAA;EACb,IAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,aAAa;IAAEC,YAAY;IAAEC;EAAa,CAAC,GAAGN,KAAK;EAC5E,IAAM;IAAEO;EAAM,CAAC,GAAGL,KAAK;EACvB,IAAMM,YAAY,GAAG5B,MAAM,CAAmB,IAAI,CAAC;EACnD,IAAM6B,aAAa,GAAG7B,MAAM,CAAmB,IAAI,CAAC;EACpD,IAAM,CAAC8B,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG9B,QAAQ,CAAC,KAAK,CAAC;EAC/D,IAAM,CAAC+B,IAAI,EAAEC,OAAO,CAAC,GAAGhC,QAAQ,CAAC0B,KAAK,GAAG,EAAE,GAAGL,KAAK,CAACU,IAAI,CAAC;EACzD,IAAM,CAACE,SAAS,EAAEC,YAAY,CAAC,GAAGlC,QAAQ,CAAC0B,KAAK,CAAC;EACjD,IAAM,CAACS,cAAc,EAAEC,iBAAiB,CAAC,GAAGpC,QAAQ,CAAC,KAAK,CAAC;EAC3D,IAAMqC,mBAAmB,GAAGN,IAAI,KAAKV,KAAK,CAACU,IAAI,GAAGN,YAAY,CAACM,IAAI,CAAC,GAAG,EAAE;EACzE,IAAMO,OAAO,GAAIZ,KAAK,IAAI,CAACS,cAAc,IAAKE,mBAAmB,KAAK,EAAE;EACxE,IAAME,qBAAqB,GAAGtC,WAAW,CAAC,MAAM;IAC9C6B,mBAAmB,CAAC,KAAK,CAAC;EAC5B,CAAC,EAAE,EAAE,CAAC;EAENhC,SAAS,CACP,SAAS0C,cAAcA,CAAA,EAAG;IACxB,IAAIP,SAAS,IAAIN,YAAY,CAACc,OAAO,EAAE;MACrC;MACA;MACAd,YAAY,CAACc,OAAO,CAACC,KAAK,CAAC,CAAC;MAC5Bf,YAAY,CAACc,OAAO,CAACE,MAAM,CAAC,CAAC;IAC/B;EACF,CAAC,EACD,CAACV,SAAS,CACZ,CAAC;EAEDnC,SAAS,CACP,SAAS8C,cAAcA,CAAA,EAAG;IACxB,IAAIf,gBAAgB,EAAE;MAAA,IAAAgB,qBAAA,EAAAC,sBAAA;MACpB,CAAAD,qBAAA,GAAAjB,aAAa,CAACa,OAAO,cAAAI,qBAAA,eAArBA,qBAAA,CAAuBE,KAAK,CAAC,CAAC;MAC9B;MACA;MACA,CAAAD,sBAAA,GAAAlB,aAAa,CAACa,OAAO,cAAAK,sBAAA,eAArBA,sBAAA,CAAuBJ,KAAK,CAAC,CAAC;;MAE9B;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;MACQM,MAAM,CAACC,gBAAgB,CAAC,OAAO,EAAEV,qBAAqB,EAAE,IAAI,CAAC;IAC/D;IAEA,OAAO,MACLS,MAAM,CAACE,mBAAmB,CAAC,OAAO,EAAEX,qBAAqB,EAAE,IAAI,CAAC;EACpE,CAAC,EACD,CAACV,gBAAgB,EAAEU,qBAAqB,CAC1C,CAAC;EAED,IAAMY,aAAa,GAAGA,CAAA,KAAY;IAChC,IAAIb,OAAO,EAAE;MACX;MACA,IAAIjB,KAAK,CAACU,IAAI,KAAKA,IAAI,EAAE;QACvBP,YAAY,CAACH,KAAK,EAAEU,IAAI,CAAC;MAC3B;MACAG,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC;EAED,IAAMkB,YAAY,GAAGA,CAAA,KAAY;IAC/B,IAAI1B,KAAK,EAAE;MACTJ,QAAQ,CAACD,KAAK,CAAC;MACf;IACF;IACAW,OAAO,CAACX,KAAK,CAACU,IAAI,CAAC;IACnBG,YAAY,CAAC,KAAK,CAAC;EACrB,CAAC;EAED,IAAMmB,iBAAiB,GAAIC,CAAsB,IAAW;IAC1DlB,iBAAiB,CAAC,IAAI,CAAC;IACvB,IAAIkB,CAAC,CAACC,GAAG,KAAK,OAAO,EAAE;MACrBD,CAAC,CAACE,eAAe,CAAC,CAAC;MACnBL,aAAa,CAAC,CAAC;IACjB;IAEA,IAAIG,CAAC,CAACC,GAAG,KAAK,GAAG,EAAE;MACjBD,CAAC,CAACE,eAAe,CAAC,CAAC;IACrB;IAEA,IAAIF,CAAC,CAACC,GAAG,KAAK,QAAQ,EAAE;MACtBH,YAAY,CAAC,CAAC;IAChB;EACF,CAAC;EAED,IAAInB,SAAS,EAAE;IACb,oBACElB,KAAA,CAAAE,SAAA;MAAAwC,QAAA,gBACE1C,KAAA;QAAK2C,SAAS,EAAC,mBAAmB;QAAAD,QAAA,gBAChC5C,IAAA;UACE8C,GAAG,EAAEhC,YAAa;UAClB+B,SAAS,EAAExD,UAAU,CAAC,cAAc,EAAE;YACpC,YAAY,EAAE,CAACoC;UACjB,CAAC,CAAE;UACHsB,KAAK,EAAE7B,IAAK;UACZ8B,WAAW,EAAC,YAAY;UACxBC,QAAQ,EAAER,CAAC,IAAItB,OAAO,CAACsB,CAAC,CAACS,MAAM,CAACH,KAAK,CAAE;UACvCI,SAAS,EAAEX,iBAAkB;UAC7BY,MAAM,EAAEA,CAAA,KAAM7B,iBAAiB,CAAC,IAAI;QAAE,CACvC,CAAC,eACFvB,IAAA,CAACT,MAAM;UACL8D,IAAI,EAAC,OAAO;UACZC,IAAI,EAAE5D,OAAQ;UACd6D,OAAO,EAAC,SAAS;UACjBC,OAAO,EAAElB;QAAc,CACxB,CAAC,eACFtC,IAAA,CAACT,MAAM;UACL8D,IAAI,EAAC,OAAO;UACZC,IAAI,EAAE3D,aAAc;UACpB4D,OAAO,EAAC,QAAQ;UAChBC,OAAO,EAAEjB;QAAa,CACvB,CAAC;MAAA,CACC,CAAC,EACL,CAACd,OAAO,iBACPzB,IAAA;QAAG6C,SAAS,EAAC,uCAAuC;QAAAD,QAAA,EACjDpB;MAAmB,CACnB,CACJ;IAAA,CACD,CAAC;EAEP;EAEA,oBACEtB,KAAA;IAAK2C,SAAS,EAAC,oBAAoB;IAAAD,QAAA,gBACjC5C,IAAA;MAAM6C,SAAS,EAAC,aAAa;MAAAD,QAAA,EAAE1B;IAAI,CAAO,CAAC,eAC3ClB,IAAA,CAACT,MAAM;MACLsD,SAAS,EAAC,UAAU;MACpBQ,IAAI,EAAC,OAAO;MACZC,IAAI,EAAE1D,MAAO;MACb2D,OAAO,EAAC,MAAM;MACdC,OAAO,EAAEA,CAAA,KAAM;QACbnC,YAAY,CAAC,IAAI,CAAC;MACpB;IAAE,CACH,CAAC,eAEFnB,KAAA;MAAM2C,SAAS,EAAC,eAAe;MAAAD,QAAA,gBAC7B5C,IAAA,CAACT,MAAM;QACL8D,IAAI,EAAC,OAAO;QACZC,IAAI,EAAExD,OAAQ;QACdyD,OAAO,EAAC,cAAc;QACtBC,OAAO,EAAEA,CAAA,KAAM/C,QAAQ,CAACD,KAAK;MAAE,CAChC,CAAC,eACFR,IAAA,CAACT,MAAM;QACL8D,IAAI,EAAC,OAAO;QACZR,SAAS,EAAC,mBAAmB;QAC7BS,IAAI,EACF9C,KAAK,CAACiD,KAAK,KAAKC,SAAS,gBACvBxD,KAAA;UAAM2C,SAAS,EAAC,WAAW;UAAAD,QAAA,gBACzB5C,IAAA,CAACV,eAAe;YACduD,SAAS,EAAC,cAAc;YACxBS,IAAI,EAAE7D,cAAe;YACrBgE,KAAK,EAAEjE,WAAW,CAACmE,KAAM;YACzBC,SAAS,EAAC;UAAQ,CACnB,CAAC,eACF5D,IAAA,CAACV,eAAe;YACduD,SAAS,EAAC,cAAc;YACxBS,IAAI,EAAE7D,cAAe;YACrBgE,KAAK,EAAEjD,KAAK,CAACiD,KAAM;YACnBG,SAAS,EAAC;UAAiB,CAC5B,CAAC;QAAA,CACE,CAAC,GAEP/D,UAEH;QACD0D,OAAO,EAAC;QACR;AACV;AACA;AACA;AACA,WAJU;QAKAC,OAAO,EAAEA,CAAA,KAAMvC,mBAAmB,CAAC4C,GAAG,IAAI,CAACA,GAAG;MAAE,CACjD,CAAC,EACD7C,gBAAgB,iBACfd,KAAA,CAAAE,SAAA;QAAAwC,QAAA,gBACE5C,IAAA;UACE,cAAW,aAAa;UACxB8C,GAAG,EAAE/B,aAAc;UACnB+C,IAAI,EAAC,OAAO;UACZC,IAAI,EAAC,cAAc;UACnBhB,KAAK,GAAAxC,YAAA,GAAEC,KAAK,CAACiD,KAAK,cAAAlD,YAAA,cAAAA,YAAA,GAAIf,WAAW,CAAC,YAAY,CAAE;UAChDwE,KAAK,EAAE;YACLC,UAAU,EAAE,QAAQ;YACpBC,KAAK,EAAE,CAAC;YACRC,MAAM,EAAE,CAAC;YACTC,OAAO,EAAE,CAAC;YACVC,MAAM,EAAE;UACV,CAAE;UACFpB,QAAQ,EAAER,CAAC,IAAI;YACb/B,aAAa,CAACF,KAAK,EAAEiC,CAAC,CAACS,MAAM,CAACH,KAAK,CAAC;UACtC;QAAE,CACH,CAAC,eACF7C,KAAA;UAAUoE,EAAE,EAAC,cAAc;UAAA1B,QAAA,gBACzB5C,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAAC,YAAY;UAAC,CAAS,CAAC,eAC5CQ,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAAC+E;UAAO,CAAS,CAAC,eACtCvE,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAACgF;UAAU,CAAS,CAAC,eACzCxE,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAACiF;UAAK,CAAS,CAAC,eACpCzE,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAACkF;UAAM,CAAS,CAAC,eACrC1E,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAACmF;UAAM,CAAS,CAAC,eACrC3E,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAACoF;UAAG,CAAS,CAAC,eAClC5E,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAACqF;UAAM,CAAS,CAAC,eACrC7E,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAACsF;UAAI,CAAS,CAAC,eACnC9E,IAAA;YAAA4C,QAAA,EAASpD,WAAW,CAAC,UAAU;UAAC,CAAS,CAAC;QAAA,CAClC,CAAC;MAAA,CACX,CACH;IAAA,CACG,CAAC;EAAA,CACJ,CAAC;AAEV","ignoreList":[]}
1
+ {"version":3,"file":"VisibilityOrderingGroup.js","names":["React","useEffect","useRef","useState","useCallback","classNames","FontAwesomeIcon","Button","ThemeExport","dhSquareFilled","vsCheck","vsChromeClose","vsEdit","vsPaintcan","vsTrash","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","VisibilityOrderingGroup","props","_group$color","group","onDelete","onColorChange","onNameChange","validateName","isNew","nameInputRef","colorInputRef","_useState","_useState2","_slicedToArray","isColorInputOpen","setIsColorInputOpen","_useState3","name","_useState4","setName","_useState5","_useState6","isEditing","setIsEditing","_useState7","_useState8","shouldValidate","setShouldValidate","nameValidationError","isValid","colorInputBlurHandler","focusEditInput","current","focus","select","openColorInput","_colorInputRef$curren","_colorInputRef$curren2","click","window","addEventListener","removeEventListener","handleConfirm","handleCancel","handleEditKeyDown","e","key","stopPropagation","children","className","ref","value","placeholder","onChange","target","onKeyDown","onBlur","kind","icon","tooltip","onClick","color","undefined","white","transform","val","type","list","style","visibility","width","height","padding","border","id","primary","foreground","green","yellow","orange","red","purple","blue"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, ThemeExport } from '@deephaven/components';\nimport {\n dhSquareFilled,\n vsCheck,\n vsChromeClose,\n vsEdit,\n vsPaintcan,\n vsTrash,\n} from '@deephaven/icons';\nimport type ColumnHeaderGroup from '../../ColumnHeaderGroup';\nimport './VisibilityOrderingGroup.scss';\n\ninterface VisibilityOrderingGroupProps {\n group: ColumnHeaderGroup;\n onDelete: (group: ColumnHeaderGroup) => void;\n onColorChange: (group: ColumnHeaderGroup, color: string | undefined) => void;\n onNameChange: (group: ColumnHeaderGroup, name: string) => void;\n validateName: (name: string) => string;\n}\n\nexport default function VisibilityOrderingGroup(\n props: VisibilityOrderingGroupProps\n): JSX.Element {\n const { group, onDelete, onColorChange, onNameChange, validateName } = props;\n const { isNew } = group;\n const nameInputRef = useRef<HTMLInputElement>(null);\n const colorInputRef = useRef<HTMLInputElement>(null);\n const [isColorInputOpen, setIsColorInputOpen] = useState(false);\n const [name, setName] = useState(isNew ? '' : group.name);\n const [isEditing, setIsEditing] = useState(isNew);\n const [shouldValidate, setShouldValidate] = useState(false);\n const nameValidationError = name !== group.name ? validateName(name) : '';\n const isValid = (isNew && !shouldValidate) || nameValidationError === '';\n const colorInputBlurHandler = useCallback(() => {\n setIsColorInputOpen(false);\n }, []);\n\n useEffect(\n function focusEditInput() {\n if (isEditing && nameInputRef.current) {\n // This is solely b/c RTL doesn't count select as focusing the element\n // Might be fixed in v13+ of RTL\n nameInputRef.current.focus();\n nameInputRef.current.select();\n }\n },\n [isEditing]\n );\n\n useEffect(\n function openColorInput() {\n if (isColorInputOpen) {\n colorInputRef.current?.click();\n // Mostly for testing. Chrome seems to not give the hidden input focus\n // Really would only affect screen readers\n colorInputRef.current?.focus();\n\n /**\n * Adding this event handler is for Firefox on Mac\n * There seems to be buggy behavior when multiple color inputs are on the same page\n * Clicking between the inputs without closing the previous causes a bad state\n * The user gets to a point where they can't open most of the pickers\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1618418\n * https://bugzilla.mozilla.org/show_bug.cgi?id=975468\n * Instead, we remove the color input when any focus is returned to the window\n * This causes Firefox on Mac to mostly operate correctly\n * Firefox seems to ignore the first click back into the window and emit no event\n * So opening a color picker when another is open requires 2 clicks in Firefox\n */\n window.addEventListener('click', colorInputBlurHandler, true);\n }\n\n return () =>\n window.removeEventListener('click', colorInputBlurHandler, true);\n },\n [isColorInputOpen, colorInputBlurHandler]\n );\n\n const handleConfirm = (): void => {\n if (isValid) {\n // Don't trigger change if the value is the same\n if (group.name !== name) {\n onNameChange(group, name);\n }\n setIsEditing(false);\n }\n };\n\n const handleCancel = (): void => {\n if (isNew) {\n onDelete(group);\n return;\n }\n setName(group.name);\n setIsEditing(false);\n };\n\n const handleEditKeyDown = (e: React.KeyboardEvent): void => {\n setShouldValidate(true);\n if (e.key === 'Enter') {\n e.stopPropagation();\n handleConfirm();\n }\n\n if (e.key === ' ') {\n e.stopPropagation();\n }\n\n if (e.key === 'Escape') {\n handleCancel();\n }\n };\n\n if (isEditing) {\n return (\n <>\n <div className=\"editing-container\">\n <input\n ref={nameInputRef}\n className={classNames('form-control', {\n 'is-invalid': !isValid,\n })}\n value={name}\n placeholder=\"Group Name\"\n onChange={e => setName(e.target.value)}\n onKeyDown={handleEditKeyDown}\n onBlur={() => setShouldValidate(true)}\n />\n <Button\n kind=\"ghost\"\n icon={vsCheck}\n tooltip=\"Confirm\"\n onClick={handleConfirm}\n />\n <Button\n kind=\"ghost\"\n icon={vsChromeClose}\n tooltip=\"Cancel\"\n onClick={handleCancel}\n />\n </div>\n {!isValid && (\n <p className=\"mb-0 validate-label-error text-danger\">\n {nameValidationError}\n </p>\n )}\n </>\n );\n }\n\n return (\n <div className=\"group-name-wrapper\">\n <span className=\"column-name\">{name}</span>\n <Button\n className=\"p-1 mx-1\"\n kind=\"ghost\"\n icon={vsEdit}\n tooltip=\"Edit\"\n onClick={() => {\n setIsEditing(true);\n }}\n />\n\n <span className=\"right-buttons\">\n <Button\n kind=\"ghost\"\n icon={vsTrash}\n tooltip=\"Delete group\"\n onClick={() => onDelete(group)}\n />\n <Button\n kind=\"ghost\"\n className=\"color-swatch mr-1\"\n icon={\n group.color !== undefined ? (\n <span className=\"fa-layers\">\n <FontAwesomeIcon\n className=\"color-swatch\"\n icon={dhSquareFilled}\n color={ThemeExport.white}\n transform=\"down-1\"\n />\n <FontAwesomeIcon\n className=\"color-swatch\"\n icon={dhSquareFilled}\n color={group.color}\n transform=\"shrink-2 down-1\"\n />\n </span>\n ) : (\n vsPaintcan\n )\n }\n tooltip=\"Set color\"\n /**\n * Toggle to close the picker on Chrome\n * Prevents Firefox on Mac from getting into a stuck state\n * Does not close on Firefox b/c the picker stays open when the element is removed\n */\n onClick={() => setIsColorInputOpen(val => !val)}\n />\n {isColorInputOpen && (\n <>\n <input\n aria-label=\"Color input\"\n ref={colorInputRef}\n type=\"color\"\n list=\"presetColors\"\n value={group.color ?? ThemeExport['content-bg']}\n style={{\n visibility: 'hidden',\n width: 0,\n height: 0,\n padding: 0,\n border: 0,\n }}\n onChange={e => {\n onColorChange(group, e.target.value);\n }}\n />\n <datalist id=\"presetColors\">\n <option>{ThemeExport['content-bg']}</option>\n <option>{ThemeExport.primary}</option>\n <option>{ThemeExport.foreground}</option>\n <option>{ThemeExport.green}</option>\n <option>{ThemeExport.yellow}</option>\n <option>{ThemeExport.orange}</option>\n <option>{ThemeExport.red}</option>\n <option>{ThemeExport.purple}</option>\n <option>{ThemeExport.blue}</option>\n <option>{ThemeExport['gray-400']}</option>\n </datalist>\n </>\n )}\n </span>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,25 +14,22 @@ function emptyOnClick() {
14
14
  // no-op
15
15
  }
16
16
  var VisibilityOrderingItem = /*#__PURE__*/forwardRef(function VisibilityOrderingItem(props, ref) {
17
- var {
18
- value,
19
- clone,
20
- childCount,
21
- item,
22
- onVisibilityChange,
23
- visibilityClickAndDrag,
24
- onClick,
25
- onGroupDelete,
26
- onGroupColorChange,
27
- onGroupNameChange,
28
- validateGroupName,
29
- handleProps
30
- } = props;
31
- var {
32
- group,
33
- modelIndex,
34
- isVisible
35
- } = item.data;
17
+ var value = props.value,
18
+ clone = props.clone,
19
+ childCount = props.childCount,
20
+ item = props.item,
21
+ onVisibilityChange = props.onVisibilityChange,
22
+ visibilityClickAndDrag = props.visibilityClickAndDrag,
23
+ onClick = props.onClick,
24
+ onGroupDelete = props.onGroupDelete,
25
+ onGroupColorChange = props.onGroupColorChange,
26
+ onGroupNameChange = props.onGroupNameChange,
27
+ validateGroupName = props.validateGroupName,
28
+ handleProps = props.handleProps;
29
+ var _item$data = item.data,
30
+ group = _item$data.group,
31
+ modelIndex = _item$data.modelIndex,
32
+ isVisible = _item$data.isVisible;
36
33
  var buttonRef = useRef(null);
37
34
  var handleVisibilityChange = useCallback(e => {
38
35
  if (e.buttons === 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityOrderingItem.js","names":["React","forwardRef","memo","useCallback","useRef","classNames","FontAwesomeIcon","dhEye","dhEyeSlash","vsGripper","Button","Tooltip","VisibilityOrderingGroup","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","emptyOnClick","VisibilityOrderingItem","props","ref","value","clone","childCount","item","onVisibilityChange","visibilityClickAndDrag","onClick","onGroupDelete","onGroupColorChange","onGroupNameChange","validateGroupName","handleProps","group","modelIndex","isVisible","data","buttonRef","handleVisibilityChange","e","buttons","_buttonRef$current","flat","current","focus","handleClick","event","_objectSpread","className","isSelected","selected","index","children","kind","onMouseDown","onMouseEnter","undefined","icon","tooltip","title","onDelete","onColorChange","onNameChange","validateName","MemoizedVisibilityOrderingItem"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingItem.tsx"],"sourcesContent":["import React, { forwardRef, memo, useCallback, useRef } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhEye, dhEyeSlash, vsGripper } from '@deephaven/icons';\nimport { Button, Tooltip } from '@deephaven/components';\nimport VisibilityOrderingGroup from './VisibilityOrderingGroup';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\nimport type ColumnHeaderGroup from '../../ColumnHeaderGroup';\n\ntype VisibilityOrderingItemProps = {\n value: string;\n clone: boolean;\n childCount: number;\n item: FlattenedIrisGridTreeItem;\n onVisibilityChange: (modelIndexes: number[], isVisible: boolean) => void;\n /**\n * If true, allows changing visibility by clicking and dragging over multiple item\n * visibility buttons.\n */\n visibilityClickAndDrag: boolean;\n onClick: (name: string, event: React.MouseEvent<HTMLElement>) => void;\n onGroupDelete: (group: ColumnHeaderGroup) => void;\n onGroupColorChange: (\n group: ColumnHeaderGroup,\n color: string | undefined\n ) => void;\n onGroupNameChange: (group: ColumnHeaderGroup, name: string) => void;\n validateGroupName: (name: string) => string;\n handleProps?: Record<string, unknown>;\n};\n\nfunction emptyOnClick(): void {\n // no-op\n}\n\nconst VisibilityOrderingItem = forwardRef<\n HTMLDivElement,\n VisibilityOrderingItemProps\n>(function VisibilityOrderingItem(props, ref) {\n const {\n value,\n clone,\n childCount,\n item,\n onVisibilityChange,\n visibilityClickAndDrag,\n onClick,\n onGroupDelete,\n onGroupColorChange,\n onGroupNameChange,\n validateGroupName,\n handleProps,\n } = props;\n const { group, modelIndex, isVisible } = item.data;\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleVisibilityChange = useCallback(\n (e: React.MouseEvent) => {\n if (e.buttons === 1) {\n onVisibilityChange([modelIndex].flat(), !isVisible);\n buttonRef.current?.focus();\n }\n },\n [onVisibilityChange, modelIndex, isVisible]\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n onClick(value, event);\n },\n [onClick, value]\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={ref}\n className={classNames('tree-item', {\n isSelected: item.selected,\n 'two-dragged': childCount === 2,\n 'multiple-dragged': childCount > 2,\n })}\n onClick={handleClick}\n data-index={item.index}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...handleProps}\n >\n {!clone && (\n <Button\n ref={buttonRef}\n kind=\"ghost\"\n className=\"px-1\"\n // We PropType validate onClick for Button\n onClick={emptyOnClick}\n onMouseDown={handleVisibilityChange}\n onMouseEnter={\n visibilityClickAndDrag ? handleVisibilityChange : undefined\n }\n icon={isVisible ? dhEye : dhEyeSlash}\n tooltip=\"Toggle visibility\"\n />\n )}\n <span\n title={value}\n className={classNames('column-name', group && 'column-group')}\n >\n {/* Display a normal item if this is the drag overlay clone, even if it's a group */}\n {group && !clone ? (\n <VisibilityOrderingGroup\n group={group}\n onDelete={onGroupDelete}\n onColorChange={onGroupColorChange}\n onNameChange={onGroupNameChange}\n validateName={validateGroupName}\n />\n ) : (\n value\n )}\n </span>\n <div>\n {clone && childCount > 1 && (\n <span className=\"item-count\">{childCount}</span>\n )}\n {!clone && (\n <>\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </>\n )}\n </div>\n </div>\n );\n});\n\nconst MemoizedVisibilityOrderingItem = memo(VisibilityOrderingItem);\n\nexport default MemoizedVisibilityOrderingItem;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VisibilityOrderingItem.js","names":["React","forwardRef","memo","useCallback","useRef","classNames","FontAwesomeIcon","dhEye","dhEyeSlash","vsGripper","Button","Tooltip","VisibilityOrderingGroup","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","emptyOnClick","VisibilityOrderingItem","props","ref","value","clone","childCount","item","onVisibilityChange","visibilityClickAndDrag","onClick","onGroupDelete","onGroupColorChange","onGroupNameChange","validateGroupName","handleProps","_item$data","data","group","modelIndex","isVisible","buttonRef","handleVisibilityChange","e","buttons","_buttonRef$current","flat","current","focus","handleClick","event","_objectSpread","className","isSelected","selected","index","children","kind","onMouseDown","onMouseEnter","undefined","icon","tooltip","title","onDelete","onColorChange","onNameChange","validateName","MemoizedVisibilityOrderingItem"],"sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingItem.tsx"],"sourcesContent":["import React, { forwardRef, memo, useCallback, useRef } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhEye, dhEyeSlash, vsGripper } from '@deephaven/icons';\nimport { Button, Tooltip } from '@deephaven/components';\nimport VisibilityOrderingGroup from './VisibilityOrderingGroup';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\nimport type ColumnHeaderGroup from '../../ColumnHeaderGroup';\n\ntype VisibilityOrderingItemProps = {\n value: string;\n clone: boolean;\n childCount: number;\n item: FlattenedIrisGridTreeItem;\n onVisibilityChange: (modelIndexes: number[], isVisible: boolean) => void;\n /**\n * If true, allows changing visibility by clicking and dragging over multiple item\n * visibility buttons.\n */\n visibilityClickAndDrag: boolean;\n onClick: (name: string, event: React.MouseEvent<HTMLElement>) => void;\n onGroupDelete: (group: ColumnHeaderGroup) => void;\n onGroupColorChange: (\n group: ColumnHeaderGroup,\n color: string | undefined\n ) => void;\n onGroupNameChange: (group: ColumnHeaderGroup, name: string) => void;\n validateGroupName: (name: string) => string;\n handleProps?: Record<string, unknown>;\n};\n\nfunction emptyOnClick(): void {\n // no-op\n}\n\nconst VisibilityOrderingItem = forwardRef<\n HTMLDivElement,\n VisibilityOrderingItemProps\n>(function VisibilityOrderingItem(props, ref) {\n const {\n value,\n clone,\n childCount,\n item,\n onVisibilityChange,\n visibilityClickAndDrag,\n onClick,\n onGroupDelete,\n onGroupColorChange,\n onGroupNameChange,\n validateGroupName,\n handleProps,\n } = props;\n const { group, modelIndex, isVisible } = item.data;\n const buttonRef = useRef<HTMLButtonElement>(null);\n\n const handleVisibilityChange = useCallback(\n (e: React.MouseEvent) => {\n if (e.buttons === 1) {\n onVisibilityChange([modelIndex].flat(), !isVisible);\n buttonRef.current?.focus();\n }\n },\n [onVisibilityChange, modelIndex, isVisible]\n );\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n onClick(value, event);\n },\n [onClick, value]\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={ref}\n className={classNames('tree-item', {\n isSelected: item.selected,\n 'two-dragged': childCount === 2,\n 'multiple-dragged': childCount > 2,\n })}\n onClick={handleClick}\n data-index={item.index}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...handleProps}\n >\n {!clone && (\n <Button\n ref={buttonRef}\n kind=\"ghost\"\n className=\"px-1\"\n // We PropType validate onClick for Button\n onClick={emptyOnClick}\n onMouseDown={handleVisibilityChange}\n onMouseEnter={\n visibilityClickAndDrag ? handleVisibilityChange : undefined\n }\n icon={isVisible ? dhEye : dhEyeSlash}\n tooltip=\"Toggle visibility\"\n />\n )}\n <span\n title={value}\n className={classNames('column-name', group && 'column-group')}\n >\n {/* Display a normal item if this is the drag overlay clone, even if it's a group */}\n {group && !clone ? (\n <VisibilityOrderingGroup\n group={group}\n onDelete={onGroupDelete}\n onColorChange={onGroupColorChange}\n onNameChange={onGroupNameChange}\n validateName={validateGroupName}\n />\n ) : (\n value\n )}\n </span>\n <div>\n {clone && childCount > 1 && (\n <span className=\"item-count\">{childCount}</span>\n )}\n {!clone && (\n <>\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </>\n )}\n </div>\n </div>\n );\n});\n\nconst MemoizedVisibilityOrderingItem = memo(VisibilityOrderingItem);\n\nexport default MemoizedVisibilityOrderingItem;\n"],"mappings":"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","ignoreList":[]}
@@ -11,9 +11,7 @@ export default class PointerSensorWithInteraction extends PointerSensor {}
11
11
  _defineProperty(PointerSensorWithInteraction, "activators", [{
12
12
  eventName: 'onPointerDown',
13
13
  handler: _ref => {
14
- var {
15
- nativeEvent: event
16
- } = _ref;
14
+ var event = _ref.nativeEvent;
17
15
  if (!event.isPrimary || event.button !== 0 || isInteractiveElement(event.target)) {
18
16
  return false;
19
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PointerSensorWithInteraction.js","names":["PointerSensor","PointerSensorWithInteraction","_defineProperty","eventName","handler","_ref","nativeEvent","event","isPrimary","button","isInteractiveElement","target","INTERACTIVE_ELEMENTS","element","tagName","includes","toLowerCase"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.ts"],"sourcesContent":["import type { PointerEvent } from 'react';\nimport { PointerSensor } from '@dnd-kit/core';\n\n/**\n * An extended \"PointerSensor\" that prevent some\n * interactive html element(button, input, textarea, select, option...) from dragging\n */\nexport default class PointerSensorWithInteraction extends PointerSensor {\n static activators = [\n {\n eventName: 'onPointerDown' as const,\n handler: ({ nativeEvent: event }: PointerEvent): boolean => {\n if (\n !event.isPrimary ||\n event.button !== 0 ||\n isInteractiveElement(event.target as Element)\n ) {\n return false;\n }\n\n return true;\n },\n },\n ];\n}\n\nconst INTERACTIVE_ELEMENTS = [\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'option',\n];\n\nfunction isInteractiveElement(element: Element | null): boolean {\n if (\n element?.tagName != null &&\n INTERACTIVE_ELEMENTS.includes(element.tagName.toLowerCase())\n ) {\n return true;\n }\n\n return false;\n}\n"],"mappings":";;;AACA,SAASA,aAAa,QAAQ,eAAe;;AAE7C;AACA;AACA;AACA;AACA,eAAe,MAAMC,4BAA4B,SAASD,aAAa,CAAC;AAiBvEE,eAAA,CAjBoBD,4BAA4B,gBAC3B,CAClB;EACEE,SAAS,EAAE,eAAwB;EACnCC,OAAO,EAAEC,IAAA,IAAmD;IAAA,IAAlD;MAAEC,WAAW,EAAEC;IAAoB,CAAC,GAAAF,IAAA;IAC5C,IACE,CAACE,KAAK,CAACC,SAAS,IAChBD,KAAK,CAACE,MAAM,KAAK,CAAC,IAClBC,oBAAoB,CAACH,KAAK,CAACI,MAAiB,CAAC,EAC7C;MACA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb;AACF,CAAC,CACF;AAGH,IAAMC,oBAAoB,GAAG,CAC3B,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,QAAQ,CACT;AAED,SAASF,oBAAoBA,CAACG,OAAuB,EAAW;EAC9D,IACE,CAAAA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,OAAO,KAAI,IAAI,IACxBF,oBAAoB,CAACG,QAAQ,CAACF,OAAO,CAACC,OAAO,CAACE,WAAW,CAAC,CAAC,CAAC,EAC5D;IACA,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd","ignoreList":[]}
1
+ {"version":3,"file":"PointerSensorWithInteraction.js","names":["PointerSensor","PointerSensorWithInteraction","_defineProperty","eventName","handler","_ref","event","nativeEvent","isPrimary","button","isInteractiveElement","target","INTERACTIVE_ELEMENTS","element","tagName","includes","toLowerCase"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.ts"],"sourcesContent":["import type { PointerEvent } from 'react';\nimport { PointerSensor } from '@dnd-kit/core';\n\n/**\n * An extended \"PointerSensor\" that prevent some\n * interactive html element(button, input, textarea, select, option...) from dragging\n */\nexport default class PointerSensorWithInteraction extends PointerSensor {\n static activators = [\n {\n eventName: 'onPointerDown' as const,\n handler: ({ nativeEvent: event }: PointerEvent): boolean => {\n if (\n !event.isPrimary ||\n event.button !== 0 ||\n isInteractiveElement(event.target as Element)\n ) {\n return false;\n }\n\n return true;\n },\n },\n ];\n}\n\nconst INTERACTIVE_ELEMENTS = [\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'option',\n];\n\nfunction isInteractiveElement(element: Element | null): boolean {\n if (\n element?.tagName != null &&\n INTERACTIVE_ELEMENTS.includes(element.tagName.toLowerCase())\n ) {\n return true;\n }\n\n return false;\n}\n"],"mappings":";;;AACA,SAASA,aAAa,QAAQ,eAAe;;AAE7C;AACA;AACA;AACA;AACA,eAAe,MAAMC,4BAA4B,SAASD,aAAa,CAAC;AAiBvEE,eAAA,CAjBoBD,4BAA4B,gBAC3B,CAClB;EACEE,SAAS,EAAE,eAAwB;EACnCC,OAAO,EAAEC,IAAA,IAAmD;IAAA,IAAnCC,KAAK,GAAAD,IAAA,CAAlBE,WAAW;IACrB,IACE,CAACD,KAAK,CAACE,SAAS,IAChBF,KAAK,CAACG,MAAM,KAAK,CAAC,IAClBC,oBAAoB,CAACJ,KAAK,CAACK,MAAiB,CAAC,EAC7C;MACA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb;AACF,CAAC,CACF;AAGH,IAAMC,oBAAoB,GAAG,CAC3B,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,QAAQ,CACT;AAED,SAASF,oBAAoBA,CAACG,OAAuB,EAAW;EAC9D,IACE,CAAAA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,OAAO,KAAI,IAAI,IACxBF,oBAAoB,CAACG,QAAQ,CAACF,OAAO,CAACC,OAAO,CAACE,WAAW,CAAC,CAAC,CAAC,EAC5D;IACA,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd","ignoreList":[]}
@@ -8,14 +8,15 @@ import { TreeItem } from "./TreeItem.js";
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
9
  export default function SortableTree(_ref) {
10
10
  var _ref2, _dndContext$active, _ref3, _dndContext$over, _dndContext$active$re, _dndContext$active$re2, _dndContext$active$re3, _dndContext$active$re4;
11
- var {
12
- items,
13
- indentationWidth = 30,
14
- renderItem,
15
- isDraggable = true,
16
- withDepthMarkers = true,
17
- virtualizerRef
18
- } = _ref;
11
+ var items = _ref.items,
12
+ _ref$indentationWidth = _ref.indentationWidth,
13
+ indentationWidth = _ref$indentationWidth === void 0 ? 30 : _ref$indentationWidth,
14
+ renderItem = _ref.renderItem,
15
+ _ref$isDraggable = _ref.isDraggable,
16
+ isDraggable = _ref$isDraggable === void 0 ? true : _ref$isDraggable,
17
+ _ref$withDepthMarkers = _ref.withDepthMarkers,
18
+ withDepthMarkers = _ref$withDepthMarkers === void 0 ? true : _ref$withDepthMarkers,
19
+ virtualizerRef = _ref.virtualizerRef;
19
20
  var dndContext = useDndContext();
20
21
  var activeId = (_ref2 = (_dndContext$active = dndContext.active) === null || _dndContext$active === void 0 ? void 0 : _dndContext$active.id) !== null && _ref2 !== void 0 ? _ref2 : null;
21
22
  var overId = (_ref3 = (_dndContext$over = dndContext.over) === null || _dndContext$over === void 0 ? void 0 : _dndContext$over.id) !== null && _ref3 !== void 0 ? _ref3 : null;
@@ -23,19 +24,15 @@ export default function SortableTree(_ref) {
23
24
  var filteredItems = useMemo(() => {
24
25
  if (activeId != null) {
25
26
  return items.filter(_ref4 => {
26
- var {
27
- id,
28
- selected
29
- } = _ref4;
27
+ var id = _ref4.id,
28
+ selected = _ref4.selected;
30
29
  return id === activeId || !selected;
31
30
  });
32
31
  }
33
32
  return items;
34
33
  }, [activeId, items]);
35
34
  var activeIndex = useMemo(() => filteredItems.findIndex(_ref5 => {
36
- var {
37
- id
38
- } = _ref5;
35
+ var id = _ref5.id;
39
36
  return id === activeId;
40
37
  }), [activeId, filteredItems]);
41
38
 
@@ -65,17 +62,14 @@ export default function SortableTree(_ref) {
65
62
  // Expose the virtualizer via ref
66
63
  useImperativeHandle(virtualizerRef, () => virtualizer, [virtualizer]);
67
64
  var virtualizedItems = virtualizer.getVirtualItems();
68
- var {
69
- measureDroppableContainers
70
- } = useDndContext();
65
+ var _useDndContext = useDndContext(),
66
+ measureDroppableContainers = _useDndContext.measureDroppableContainers;
71
67
 
72
68
  // Without this, animations are funky when using the move/sort buttons
73
69
  // dnd-kit only remeasures on drag/drop by default
74
70
  useEffect(function remeasureContainers() {
75
71
  measureDroppableContainers(virtualizedItems.map(_ref6 => {
76
- var {
77
- index
78
- } = _ref6;
72
+ var index = _ref6.index;
79
73
  return filteredItems[index].id;
80
74
  }));
81
75
  }, [filteredItems, measureDroppableContainers, virtualizedItems]);
@@ -88,15 +82,11 @@ export default function SortableTree(_ref) {
88
82
  },
89
83
  ref: containerRef,
90
84
  children: virtualizer.getVirtualItems().map(_ref7 => {
91
- var {
92
- index,
93
- start
94
- } = _ref7;
85
+ var index = _ref7.index,
86
+ start = _ref7.start;
95
87
  var item = filteredItems[index];
96
- var {
97
- id,
98
- depth
99
- } = item;
88
+ var id = item.id,
89
+ depth = item.depth;
100
90
  return isDraggable ? /*#__PURE__*/_jsx(SortableTreeItem, {
101
91
  id: id,
102
92
  value: id,
@@ -1 +1 @@
1
- {"version":3,"file":"SortableTree.js","names":["React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","classNames","useDndContext","defaultRangeExtractor","useVirtualizer","getProjection","SortableTreeItem","TreeItem","jsx","_jsx","SortableTree","_ref","_ref2","_dndContext$active","_ref3","_dndContext$over","_dndContext$active$re","_dndContext$active$re2","_dndContext$active$re3","_dndContext$active$re4","items","indentationWidth","renderItem","isDraggable","withDepthMarkers","virtualizerRef","dndContext","activeId","active","id","overId","over","offsetLeft","rect","current","translated","left","initial","filteredItems","filter","_ref4","selected","activeIndex","findIndex","_ref5","rangeExtractor","range","extractedRange","length","push","getScrollElement","_containerRef$current","_containerRef$current2","containerRef","parentElement","estimateSize","virtualizer","count","overscan","gap","virtualizedItems","getVirtualItems","measureDroppableContainers","remeasureContainers","map","_ref6","index","projected","className","style","height","concat","getTotalSize","position","ref","children","_ref7","start","item","depth","value","top","measureElement","wrapperRef"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport classNames from 'classnames';\nimport { useDndContext } from '@dnd-kit/core';\nimport {\n defaultRangeExtractor,\n type Range,\n useVirtualizer,\n type Virtualizer,\n} from '@tanstack/react-virtual';\nimport { getProjection } from './utilities';\nimport { SortableTreeItem } from './SortableTreeItem';\nimport { TreeItem, type TreeItemRenderFn } from './TreeItem';\nimport type { FlattenedItem } from './types';\n\ninterface Props<T> {\n items: readonly FlattenedItem<T>[];\n indentationWidth?: number;\n renderItem: TreeItemRenderFn<T>;\n isDraggable?: boolean;\n withDepthMarkers?: boolean;\n virtualizerRef?: React.Ref<Virtualizer<HTMLElement, Element>>;\n}\n\nexport default function SortableTree<T>({\n items,\n indentationWidth = 30,\n renderItem,\n isDraggable = true,\n withDepthMarkers = true,\n virtualizerRef,\n}: Props<T>): JSX.Element {\n const dndContext = useDndContext();\n const activeId = (dndContext.active?.id as string) ?? null;\n const overId = (dndContext.over?.id as string) ?? null;\n const offsetLeft = dndContext.active\n ? (dndContext.active.rect.current.translated?.left ?? 0) -\n (dndContext.active.rect.current.initial?.left ?? 0)\n : 0;\n\n const filteredItems = useMemo(() => {\n if (activeId != null) {\n return items.filter(({ id, selected }) => id === activeId || !selected);\n }\n\n return items;\n }, [activeId, items]);\n\n const activeIndex = useMemo(\n () => filteredItems.findIndex(({ id }) => id === activeId),\n [activeId, filteredItems]\n );\n\n // Add the active index to the range so it is always rendered\n const rangeExtractor = useCallback(\n (range: Range) => {\n const extractedRange = defaultRangeExtractor(range);\n if (\n activeIndex >= 0 &&\n (activeIndex < extractedRange[0] ||\n activeIndex > extractedRange[extractedRange.length - 1])\n ) {\n extractedRange.push(activeIndex);\n }\n return extractedRange;\n },\n [activeIndex]\n );\n\n const getScrollElement = useCallback(\n () => containerRef.current?.parentElement ?? null,\n []\n );\n\n const estimateSize = useCallback(() => 30, []);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const virtualizer = useVirtualizer({\n count: filteredItems.length,\n getScrollElement,\n estimateSize,\n rangeExtractor,\n overscan: 10,\n gap: 1, // We set a 1px bottom margin before we virtualized this list\n });\n\n // Expose the virtualizer via ref\n useImperativeHandle(virtualizerRef, () => virtualizer, [virtualizer]);\n\n const virtualizedItems = virtualizer.getVirtualItems();\n\n const { measureDroppableContainers } = useDndContext();\n\n // Without this, animations are funky when using the move/sort buttons\n // dnd-kit only remeasures on drag/drop by default\n useEffect(\n function remeasureContainers() {\n measureDroppableContainers(\n virtualizedItems.map(({ index }) => filteredItems[index].id)\n );\n },\n [filteredItems, measureDroppableContainers, virtualizedItems]\n );\n\n const projected =\n isDraggable && activeId != null && overId != null\n ? getProjection(\n filteredItems,\n activeId,\n overId,\n offsetLeft,\n indentationWidth\n )\n : null;\n\n return (\n <div\n className={classNames(\n 'tree-container',\n activeId != null && 'marching-ants'\n )}\n style={{\n height: `${virtualizer.getTotalSize()}px`,\n position: 'relative',\n }}\n ref={containerRef}\n >\n {virtualizer.getVirtualItems().map(({ index, start }) => {\n const item = filteredItems[index];\n const { id, depth } = item;\n return isDraggable ? (\n <SortableTreeItem\n key={id}\n id={id}\n value={id}\n depth={id === activeId && projected ? projected.depth : depth}\n item={item}\n renderItem={renderItem}\n withDepthMarkers={withDepthMarkers}\n top={start}\n // This allows the group items to expand when editing the name and shift the list correctly\n measureElement={virtualizer.measureElement}\n />\n ) : (\n <TreeItem\n key={id}\n value={id}\n depth={depth}\n item={item}\n renderItem={renderItem}\n withDepthMarkers={withDepthMarkers}\n top={start}\n wrapperRef={virtualizer.measureElement}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":"AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,SAAS,EACTC,mBAAmB,EACnBC,OAAO,EACPC,MAAM,QACD,OAAO;AACd,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,aAAa,QAAQ,eAAe;AAC7C,SACEC,qBAAqB,EAErBC,cAAc,QAET,yBAAyB;AAAC,SACxBC,aAAa;AAAA,SACbC,gBAAgB;AAAA,SAChBC,QAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAYjB,eAAe,SAASC,YAAYA,CAAAC,IAAA,EAOV;EAAA,IAAAC,KAAA,EAAAC,kBAAA,EAAAC,KAAA,EAAAC,gBAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EAAA,IAPc;IACtCC,KAAK;IACLC,gBAAgB,GAAG,EAAE;IACrBC,UAAU;IACVC,WAAW,GAAG,IAAI;IAClBC,gBAAgB,GAAG,IAAI;IACvBC;EACQ,CAAC,GAAAd,IAAA;EACT,IAAMe,UAAU,GAAGxB,aAAa,CAAC,CAAC;EAClC,IAAMyB,QAAQ,IAAAf,KAAA,IAAAC,kBAAA,GAAIa,UAAU,CAACE,MAAM,cAAAf,kBAAA,uBAAjBA,kBAAA,CAAmBgB,EAAE,cAAAjB,KAAA,cAAAA,KAAA,GAAe,IAAI;EAC1D,IAAMkB,MAAM,IAAAhB,KAAA,IAAAC,gBAAA,GAAIW,UAAU,CAACK,IAAI,cAAAhB,gBAAA,uBAAfA,gBAAA,CAAiBc,EAAE,cAAAf,KAAA,cAAAA,KAAA,GAAe,IAAI;EACtD,IAAMkB,UAAU,GAAGN,UAAU,CAACE,MAAM,GAChC,EAAAZ,qBAAA,IAAAC,sBAAA,GAACS,UAAU,CAACE,MAAM,CAACK,IAAI,CAACC,OAAO,CAACC,UAAU,cAAAlB,sBAAA,uBAAzCA,sBAAA,CAA2CmB,IAAI,cAAApB,qBAAA,cAAAA,qBAAA,GAAI,CAAC,MAAAE,sBAAA,IAAAC,sBAAA,GACpDO,UAAU,CAACE,MAAM,CAACK,IAAI,CAACC,OAAO,CAACG,OAAO,cAAAlB,sBAAA,uBAAtCA,sBAAA,CAAwCiB,IAAI,cAAAlB,sBAAA,cAAAA,sBAAA,GAAI,CAAC,CAAC,GACnD,CAAC;EAEL,IAAMoB,aAAa,GAAGvC,OAAO,CAAC,MAAM;IAClC,IAAI4B,QAAQ,IAAI,IAAI,EAAE;MACpB,OAAOP,KAAK,CAACmB,MAAM,CAACC,KAAA;QAAA,IAAC;UAAEX,EAAE;UAAEY;QAAS,CAAC,GAAAD,KAAA;QAAA,OAAKX,EAAE,KAAKF,QAAQ,IAAI,CAACc,QAAQ;MAAA,EAAC;IACzE;IAEA,OAAOrB,KAAK;EACd,CAAC,EAAE,CAACO,QAAQ,EAAEP,KAAK,CAAC,CAAC;EAErB,IAAMsB,WAAW,GAAG3C,OAAO,CACzB,MAAMuC,aAAa,CAACK,SAAS,CAACC,KAAA;IAAA,IAAC;MAAEf;IAAG,CAAC,GAAAe,KAAA;IAAA,OAAKf,EAAE,KAAKF,QAAQ;EAAA,EAAC,EAC1D,CAACA,QAAQ,EAAEW,aAAa,CAC1B,CAAC;;EAED;EACA,IAAMO,cAAc,GAAGjD,WAAW,CAC/BkD,KAAY,IAAK;IAChB,IAAMC,cAAc,GAAG5C,qBAAqB,CAAC2C,KAAK,CAAC;IACnD,IACEJ,WAAW,IAAI,CAAC,KACfA,WAAW,GAAGK,cAAc,CAAC,CAAC,CAAC,IAC9BL,WAAW,GAAGK,cAAc,CAACA,cAAc,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC,EAC1D;MACAD,cAAc,CAACE,IAAI,CAACP,WAAW,CAAC;IAClC;IACA,OAAOK,cAAc;EACvB,CAAC,EACD,CAACL,WAAW,CACd,CAAC;EAED,IAAMQ,gBAAgB,GAAGtD,WAAW,CAClC;IAAA,IAAAuD,qBAAA,EAAAC,sBAAA;IAAA,QAAAD,qBAAA,IAAAC,sBAAA,GAAMC,YAAY,CAACnB,OAAO,cAAAkB,sBAAA,uBAApBA,sBAAA,CAAsBE,aAAa,cAAAH,qBAAA,cAAAA,qBAAA,GAAI,IAAI;EAAA,GACjD,EACF,CAAC;EAED,IAAMI,YAAY,GAAG3D,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC;EAE9C,IAAMyD,YAAY,GAAGrD,MAAM,CAAiB,IAAI,CAAC;EACjD,IAAMwD,WAAW,GAAGpD,cAAc,CAAC;IACjCqD,KAAK,EAAEnB,aAAa,CAACU,MAAM;IAC3BE,gBAAgB;IAChBK,YAAY;IACZV,cAAc;IACda,QAAQ,EAAE,EAAE;IACZC,GAAG,EAAE,CAAC,CAAE;EACV,CAAC,CAAC;;EAEF;EACA7D,mBAAmB,CAAC2B,cAAc,EAAE,MAAM+B,WAAW,EAAE,CAACA,WAAW,CAAC,CAAC;EAErE,IAAMI,gBAAgB,GAAGJ,WAAW,CAACK,eAAe,CAAC,CAAC;EAEtD,IAAM;IAAEC;EAA2B,CAAC,GAAG5D,aAAa,CAAC,CAAC;;EAEtD;EACA;EACAL,SAAS,CACP,SAASkE,mBAAmBA,CAAA,EAAG;IAC7BD,0BAA0B,CACxBF,gBAAgB,CAACI,GAAG,CAACC,KAAA;MAAA,IAAC;QAAEC;MAAM,CAAC,GAAAD,KAAA;MAAA,OAAK3B,aAAa,CAAC4B,KAAK,CAAC,CAACrC,EAAE;IAAA,EAC7D,CAAC;EACH,CAAC,EACD,CAACS,aAAa,EAAEwB,0BAA0B,EAAEF,gBAAgB,CAC9D,CAAC;EAED,IAAMO,SAAS,GACb5C,WAAW,IAAII,QAAQ,IAAI,IAAI,IAAIG,MAAM,IAAI,IAAI,GAC7CzB,aAAa,CACXiC,aAAa,EACbX,QAAQ,EACRG,MAAM,EACNE,UAAU,EACVX,gBACF,CAAC,GACD,IAAI;EAEV,oBACEZ,IAAA;IACE2D,SAAS,EAAEnE,UAAU,CACnB,gBAAgB,EAChB0B,QAAQ,IAAI,IAAI,IAAI,eACtB,CAAE;IACF0C,KAAK,EAAE;MACLC,MAAM,KAAAC,MAAA,CAAKf,WAAW,CAACgB,YAAY,CAAC,CAAC,OAAI;MACzCC,QAAQ,EAAE;IACZ,CAAE;IACFC,GAAG,EAAErB,YAAa;IAAAsB,QAAA,EAEjBnB,WAAW,CAACK,eAAe,CAAC,CAAC,CAACG,GAAG,CAACY,KAAA,IAAsB;MAAA,IAArB;QAAEV,KAAK;QAAEW;MAAM,CAAC,GAAAD,KAAA;MAClD,IAAME,IAAI,GAAGxC,aAAa,CAAC4B,KAAK,CAAC;MACjC,IAAM;QAAErC,EAAE;QAAEkD;MAAM,CAAC,GAAGD,IAAI;MAC1B,OAAOvD,WAAW,gBAChBd,IAAA,CAACH,gBAAgB;QAEfuB,EAAE,EAAEA,EAAG;QACPmD,KAAK,EAAEnD,EAAG;QACVkD,KAAK,EAAElD,EAAE,KAAKF,QAAQ,IAAIwC,SAAS,GAAGA,SAAS,CAACY,KAAK,GAAGA,KAAM;QAC9DD,IAAI,EAAEA,IAAK;QACXxD,UAAU,EAAEA,UAAW;QACvBE,gBAAgB,EAAEA,gBAAiB;QACnCyD,GAAG,EAAEJ;QACL;QAAA;QACAK,cAAc,EAAE1B,WAAW,CAAC0B;MAAe,GATtCrD,EAUN,CAAC,gBAEFpB,IAAA,CAACF,QAAQ;QAEPyE,KAAK,EAAEnD,EAAG;QACVkD,KAAK,EAAEA,KAAM;QACbD,IAAI,EAAEA,IAAK;QACXxD,UAAU,EAAEA,UAAW;QACvBE,gBAAgB,EAAEA,gBAAiB;QACnCyD,GAAG,EAAEJ,KAAM;QACXM,UAAU,EAAE3B,WAAW,CAAC0B;MAAe,GAPlCrD,EAQN,CACF;IACH,CAAC;EAAC,CACC,CAAC;AAEV","ignoreList":[]}
1
+ {"version":3,"file":"SortableTree.js","names":["React","useCallback","useEffect","useImperativeHandle","useMemo","useRef","classNames","useDndContext","defaultRangeExtractor","useVirtualizer","getProjection","SortableTreeItem","TreeItem","jsx","_jsx","SortableTree","_ref","_ref2","_dndContext$active","_ref3","_dndContext$over","_dndContext$active$re","_dndContext$active$re2","_dndContext$active$re3","_dndContext$active$re4","items","_ref$indentationWidth","indentationWidth","renderItem","_ref$isDraggable","isDraggable","_ref$withDepthMarkers","withDepthMarkers","virtualizerRef","dndContext","activeId","active","id","overId","over","offsetLeft","rect","current","translated","left","initial","filteredItems","filter","_ref4","selected","activeIndex","findIndex","_ref5","rangeExtractor","range","extractedRange","length","push","getScrollElement","_containerRef$current","_containerRef$current2","containerRef","parentElement","estimateSize","virtualizer","count","overscan","gap","virtualizedItems","getVirtualItems","_useDndContext","measureDroppableContainers","remeasureContainers","map","_ref6","index","projected","className","style","height","concat","getTotalSize","position","ref","children","_ref7","start","item","depth","value","top","measureElement","wrapperRef"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport classNames from 'classnames';\nimport { useDndContext } from '@dnd-kit/core';\nimport {\n defaultRangeExtractor,\n type Range,\n useVirtualizer,\n type Virtualizer,\n} from '@tanstack/react-virtual';\nimport { getProjection } from './utilities';\nimport { SortableTreeItem } from './SortableTreeItem';\nimport { TreeItem, type TreeItemRenderFn } from './TreeItem';\nimport type { FlattenedItem } from './types';\n\ninterface Props<T> {\n items: readonly FlattenedItem<T>[];\n indentationWidth?: number;\n renderItem: TreeItemRenderFn<T>;\n isDraggable?: boolean;\n withDepthMarkers?: boolean;\n virtualizerRef?: React.Ref<Virtualizer<HTMLElement, Element>>;\n}\n\nexport default function SortableTree<T>({\n items,\n indentationWidth = 30,\n renderItem,\n isDraggable = true,\n withDepthMarkers = true,\n virtualizerRef,\n}: Props<T>): JSX.Element {\n const dndContext = useDndContext();\n const activeId = (dndContext.active?.id as string) ?? null;\n const overId = (dndContext.over?.id as string) ?? null;\n const offsetLeft = dndContext.active\n ? (dndContext.active.rect.current.translated?.left ?? 0) -\n (dndContext.active.rect.current.initial?.left ?? 0)\n : 0;\n\n const filteredItems = useMemo(() => {\n if (activeId != null) {\n return items.filter(({ id, selected }) => id === activeId || !selected);\n }\n\n return items;\n }, [activeId, items]);\n\n const activeIndex = useMemo(\n () => filteredItems.findIndex(({ id }) => id === activeId),\n [activeId, filteredItems]\n );\n\n // Add the active index to the range so it is always rendered\n const rangeExtractor = useCallback(\n (range: Range) => {\n const extractedRange = defaultRangeExtractor(range);\n if (\n activeIndex >= 0 &&\n (activeIndex < extractedRange[0] ||\n activeIndex > extractedRange[extractedRange.length - 1])\n ) {\n extractedRange.push(activeIndex);\n }\n return extractedRange;\n },\n [activeIndex]\n );\n\n const getScrollElement = useCallback(\n () => containerRef.current?.parentElement ?? null,\n []\n );\n\n const estimateSize = useCallback(() => 30, []);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const virtualizer = useVirtualizer({\n count: filteredItems.length,\n getScrollElement,\n estimateSize,\n rangeExtractor,\n overscan: 10,\n gap: 1, // We set a 1px bottom margin before we virtualized this list\n });\n\n // Expose the virtualizer via ref\n useImperativeHandle(virtualizerRef, () => virtualizer, [virtualizer]);\n\n const virtualizedItems = virtualizer.getVirtualItems();\n\n const { measureDroppableContainers } = useDndContext();\n\n // Without this, animations are funky when using the move/sort buttons\n // dnd-kit only remeasures on drag/drop by default\n useEffect(\n function remeasureContainers() {\n measureDroppableContainers(\n virtualizedItems.map(({ index }) => filteredItems[index].id)\n );\n },\n [filteredItems, measureDroppableContainers, virtualizedItems]\n );\n\n const projected =\n isDraggable && activeId != null && overId != null\n ? getProjection(\n filteredItems,\n activeId,\n overId,\n offsetLeft,\n indentationWidth\n )\n : null;\n\n return (\n <div\n className={classNames(\n 'tree-container',\n activeId != null && 'marching-ants'\n )}\n style={{\n height: `${virtualizer.getTotalSize()}px`,\n position: 'relative',\n }}\n ref={containerRef}\n >\n {virtualizer.getVirtualItems().map(({ index, start }) => {\n const item = filteredItems[index];\n const { id, depth } = item;\n return isDraggable ? (\n <SortableTreeItem\n key={id}\n id={id}\n value={id}\n depth={id === activeId && projected ? projected.depth : depth}\n item={item}\n renderItem={renderItem}\n withDepthMarkers={withDepthMarkers}\n top={start}\n // This allows the group items to expand when editing the name and shift the list correctly\n measureElement={virtualizer.measureElement}\n />\n ) : (\n <TreeItem\n key={id}\n value={id}\n depth={depth}\n item={item}\n renderItem={renderItem}\n withDepthMarkers={withDepthMarkers}\n top={start}\n wrapperRef={virtualizer.measureElement}\n />\n );\n })}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
8
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
9
  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; }
@@ -30,9 +36,7 @@ var DRAG_OVERLAY_STYLE = {
30
36
  };
31
37
  var dropAnimationConfig = {
32
38
  keyframes(_ref) {
33
- var {
34
- transform
35
- } = _ref;
39
+ var transform = _ref.transform;
36
40
  return [{
37
41
  opacity: 1,
38
42
  transform: CSS.Transform.toString(transform.initial)
@@ -43,9 +47,7 @@ var dropAnimationConfig = {
43
47
  },
44
48
  easing: 'ease-out',
45
49
  sideEffects(_ref2) {
46
- var {
47
- active
48
- } = _ref2;
50
+ var active = _ref2.active;
49
51
  active.node.animate([{
50
52
  opacity: 0
51
53
  }, {
@@ -94,14 +96,12 @@ var fixCursorSnapOffset = args => {
94
96
  if (!args.pointerCoordinates) {
95
97
  return closestCenter(args);
96
98
  }
97
- var {
98
- x,
99
- y
100
- } = args.pointerCoordinates;
101
- var {
102
- width,
103
- height
104
- } = args.collisionRect;
99
+ var _args$pointerCoordina = args.pointerCoordinates,
100
+ x = _args$pointerCoordina.x,
101
+ y = _args$pointerCoordina.y;
102
+ var _args$collisionRect = args.collisionRect,
103
+ width = _args$collisionRect.width,
104
+ height = _args$collisionRect.height;
105
105
  var updated = _objectSpread(_objectSpread({}, args), {}, {
106
106
  // The collision rectangle is broken when using adjustToCursor. Reset
107
107
  // the collision rectangle based on pointer location and overlay size.
@@ -117,20 +117,23 @@ var fixCursorSnapOffset = args => {
117
117
  return closestCenter(updated);
118
118
  };
119
119
  export default function SortableTreeDndContext(_ref3) {
120
- var {
121
- items,
122
- indentationWidth = 30,
123
- onDragStart,
124
- onDragEnd,
125
- children,
126
- renderItem
127
- } = _ref3;
128
- var [activeId, setActiveId] = useState(null);
129
- var [offsetLeft, setOffsetLeft] = useState(0);
120
+ var items = _ref3.items,
121
+ _ref3$indentationWidt = _ref3.indentationWidth,
122
+ indentationWidth = _ref3$indentationWidt === void 0 ? 30 : _ref3$indentationWidt,
123
+ onDragStart = _ref3.onDragStart,
124
+ onDragEnd = _ref3.onDragEnd,
125
+ children = _ref3.children,
126
+ renderItem = _ref3.renderItem;
127
+ var _useState = useState(null),
128
+ _useState2 = _slicedToArray(_useState, 2),
129
+ activeId = _useState2[0],
130
+ setActiveId = _useState2[1];
131
+ var _useState3 = useState(0),
132
+ _useState4 = _slicedToArray(_useState3, 2),
133
+ offsetLeft = _useState4[0],
134
+ setOffsetLeft = _useState4[1];
130
135
  var activeItem = activeId != null ? items.find(_ref4 => {
131
- var {
132
- id
133
- } = _ref4;
136
+ var id = _ref4.id;
134
137
  return id === activeId;
135
138
  }) : null;
136
139
  var sensorContext = useRef({
@@ -149,9 +152,7 @@ export default function SortableTreeDndContext(_ref3) {
149
152
  }), [indentationWidth]);
150
153
  var sensors = useSensors(useSensor(PointerSensorWithInteraction, CONSTRAINT), useSensor(KeyboardSensor, keyboardOptions));
151
154
  var sortedIds = useMemo(() => items.map(_ref5 => {
152
- var {
153
- id
154
- } = _ref5;
155
+ var id = _ref5.id;
155
156
  return id;
156
157
  }), [items]);
157
158
  useEffect(() => {
@@ -161,19 +162,13 @@ export default function SortableTreeDndContext(_ref3) {
161
162
  };
162
163
  }, [items, offsetLeft]);
163
164
  var handleDragStart = useCallback(event => {
164
- var {
165
- active: {
166
- id: newActiveId
167
- }
168
- } = event;
165
+ var newActiveId = event.active.id;
169
166
  setActiveId(newActiveId);
170
167
  onDragStart === null || onDragStart === void 0 || onDragStart(newActiveId, event);
171
168
  document.body.style.setProperty('cursor', 'grabbing');
172
169
  }, [onDragStart]);
173
170
  var handleDragMove = useCallback(_ref6 => {
174
- var {
175
- delta
176
- } = _ref6;
171
+ var delta = _ref6.delta;
177
172
  setOffsetLeft(delta.x);
178
173
  }, []);
179
174
  var resetState = useCallback(() => {
@@ -183,27 +178,19 @@ export default function SortableTreeDndContext(_ref3) {
183
178
  }, []);
184
179
  var handleDragEnd = useCallback(_ref7 => {
185
180
  var _active$rect$current$, _active$rect$current$2, _active$rect$current$3, _active$rect$current$4;
186
- var {
187
- active,
188
- over
189
- } = _ref7;
181
+ var active = _ref7.active,
182
+ over = _ref7.over;
190
183
  var projected = active.id != null && (over === null || over === void 0 ? void 0 : over.id) != null ? getProjection(items, active.id, over.id, ((_active$rect$current$ = (_active$rect$current$2 = active.rect.current.translated) === null || _active$rect$current$2 === void 0 ? void 0 : _active$rect$current$2.left) !== null && _active$rect$current$ !== void 0 ? _active$rect$current$ : 0) - ((_active$rect$current$3 = (_active$rect$current$4 = active.rect.current.initial) === null || _active$rect$current$4 === void 0 ? void 0 : _active$rect$current$4.left) !== null && _active$rect$current$3 !== void 0 ? _active$rect$current$3 : 0), indentationWidth) : null;
191
184
  if (projected && over) {
192
- var {
193
- depth,
194
- parentId
195
- } = projected;
185
+ var depth = projected.depth,
186
+ parentId = projected.parentId;
196
187
  var clonedItems = JSON.parse(JSON.stringify(items));
197
188
  var overIndex = clonedItems.findIndex(_ref8 => {
198
- var {
199
- id
200
- } = _ref8;
189
+ var id = _ref8.id;
201
190
  return id === over.id;
202
191
  });
203
192
  var activeIndex = clonedItems.findIndex(_ref9 => {
204
- var {
205
- id
206
- } = _ref9;
193
+ var id = _ref9.id;
207
194
  return id === active.id;
208
195
  });
209
196
  var activeTreeItem = clonedItems[activeIndex];