@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.
- package/dist/AdvancedFilterCreator.js +65 -102
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +22 -37
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +37 -63
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +29 -59
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/ColumnHeaderGroup.js +6 -8
- package/dist/ColumnHeaderGroup.js.map +1 -1
- package/dist/ColumnStatistics.js +22 -28
- package/dist/ColumnStatistics.js.map +1 -1
- package/dist/CrossColumnSearch.js +20 -29
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/FilterInputField.js +19 -46
- package/dist/FilterInputField.js.map +1 -1
- package/dist/GotoRow.js +32 -29
- package/dist/GotoRow.js.map +1 -1
- package/dist/IrisGrid.js +490 -822
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridBottomBar.js +10 -11
- package/dist/IrisGridBottomBar.js.map +1 -1
- package/dist/IrisGridCacheUtils.js +28 -8
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridCellOverflowModal.js +30 -13
- package/dist/IrisGridCellOverflowModal.js.map +1 -1
- package/dist/IrisGridCellRendererUtils.js +6 -12
- package/dist/IrisGridCellRendererUtils.js.map +1 -1
- package/dist/IrisGridCopyHandler.js +28 -47
- package/dist/IrisGridCopyHandler.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +28 -51
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModelUpdater.js +32 -30
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridPartitionSelector.js +28 -62
- package/dist/IrisGridPartitionSelector.js.map +1 -1
- package/dist/IrisGridProxyModel.js +7 -12
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +162 -264
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.js +23 -16
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTableModelTemplate.js +49 -73
- package/dist/IrisGridTableModelTemplate.js.map +1 -1
- package/dist/IrisGridTestUtils.js +19 -19
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridTextCellRenderer.js +35 -52
- package/dist/IrisGridTextCellRenderer.js.map +1 -1
- package/dist/IrisGridTheme.js +9 -1
- package/dist/IrisGridTheme.js.map +1 -1
- package/dist/IrisGridThemeProvider.js +5 -7
- package/dist/IrisGridThemeProvider.js.map +1 -1
- package/dist/IrisGridTreeTableModel.js +5 -9
- package/dist/IrisGridTreeTableModel.js.map +1 -1
- package/dist/IrisGridUtils.js +246 -300
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/NoPastePermissionModal.js +3 -5
- package/dist/NoPastePermissionModal.js.map +1 -1
- package/dist/PendingDataBottomBar.js +27 -16
- package/dist/PendingDataBottomBar.js.map +1 -1
- package/dist/ToastBottomBar.js +16 -8
- package/dist/ToastBottomBar.js.map +1 -1
- package/dist/format-context-menus/CustomFormatAction.js +11 -24
- package/dist/format-context-menus/CustomFormatAction.js.map +1 -1
- package/dist/key-handlers/CopyCellKeyHandler.js +3 -4
- package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
- package/dist/key-handlers/CopyKeyHandler.js +1 -3
- package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +1 -3
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js +35 -59
- package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +13 -29
- package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +8 -17
- package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +96 -199
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js +2 -4
- package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js +16 -30
- package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js +5 -13
- package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js +20 -36
- package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridSortMouseHandler.js +3 -5
- package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js +9 -18
- package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
- package/dist/mousehandlers/PendingMouseHandler.js +10 -18
- package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
- package/dist/sidebar/AdvancedSettingsMenu.js +12 -5
- package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +45 -102
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnBuilder.js +35 -77
- package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
- package/dist/sidebar/CustomColumnInput.js +9 -11
- package/dist/sidebar/CustomColumnInput.js.map +1 -1
- package/dist/sidebar/InputEditor.js +17 -24
- package/dist/sidebar/InputEditor.js.map +1 -1
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js +6 -11
- package/dist/sidebar/PluginTableOptionsErrorBoundary.js.map +1 -1
- package/dist/sidebar/RollupRows.js +72 -113
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +16 -33
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +50 -74
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/TableSaver.js +18 -42
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +25 -18
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +3 -4
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/aggregations/Aggregations.js +45 -34
- package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +38 -21
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +27 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +9 -11
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +48 -57
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +35 -24
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +26 -11
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js +5 -7
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +24 -18
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +166 -256
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js +4 -11
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js +28 -14
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingGroup.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +16 -19
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js +1 -3
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +19 -29
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +39 -52
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +18 -23
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +19 -15
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +16 -30
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +30 -39
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- 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":"AAAA,SAASA,SAAS,QAA4B,iBAAiB;AAC/D,OAAOC,KAAK,MAAM,cAAc;AAAC,OAC1BC,iBAAiB;AAIxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC/BC,IAA+B,EAC/BC,EAA6B,EAC7BC,YAAsC,EACtCC,kBAAgD,EAChDC,mBAAyD,EACzDC,iBAAyB,EACzBC,gBAAwB,EAIxB;EACA,IAAIC,QAAQ,GAAG,EAAqB;EACpC,IAAIC,SAAS,GAAGL,kBAAkB;EAElC,IAAMM,iBAAiB,GAAGL,mBAAmB,CAAC,CAAC,CAAC,CAACM,IAAI,CAACC,YAAY;EAElE,IAAMC,aAAa,GAAGZ,IAAI,CAACa,KAAK;EAChC,IAAMC,WAAW,GAAGb,EAAE,CAACY,KAAK;EAE5B,IAAIE,OAAO,GAAGC,KAAK,CAACC,OAAO,CAACR,iBAAiB,CAAC,GAC1CA,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,GACxBA,iBAAiB,GAAG,CAAC;EAEzBD,SAAS,GAAGU,WAAW,CAACd,mBAAmB,CAAC,CAAC,CAAC,EAAEH,EAAE,CAACkB,QAAQ,EAAEX,SAAS,CAAC;;EAEvE;EACA,KAAK,IAAIY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhB,mBAAmB,CAACiB,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IACtD,IAAM;MACJV,IAAI,EAAE;QAAEC;MAAa;IACvB,CAAC,GAAGP,mBAAmB,CAACgB,CAAC,CAAC;IAE1Bb,QAAQ,GAAGX,SAAS,CAAC0B,eAAe,CAACX,YAAY,EAAEI,OAAO,EAAER,QAAQ,EAAE,IAAI,CAAC;IAE3EQ,OAAO,IAAIC,KAAK,CAACC,OAAO,CAACN,YAAY,CAAC,GAClCA,YAAY,CAAC,CAAC,CAAC,GAAGA,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GACrC,CAAC;IAELH,SAAS,GAAGU,WAAW,CAACd,mBAAmB,CAACgB,CAAC,CAAC,EAAEnB,EAAE,CAACkB,QAAQ,EAAEX,SAAS,CAAC;EACzE;EAEA,IAAMe,aAAa,GAAG,CACpBP,KAAK,CAACC,OAAO,CAACR,iBAAiB,CAAC,GAAGA,iBAAiB,CAAC,CAAC,CAAC,GAAGA,iBAAiB,EAC3EM,OAAO,GAAG,CAAC,CACQ;EAErB,IAAMS,iBAAiB,GAAGR,KAAK,CAACC,OAAO,CAAChB,EAAE,CAACS,IAAI,CAACC,YAAY,CAAC,GACzDV,EAAE,CAACS,IAAI,CAACC,YAAY,CAAC,CAAC,CAAC,GACvBV,EAAE,CAACS,IAAI,CAACC,YAAY;EACxB,IAAIc,SAAS,GAAG7B,SAAS,CAAC8B,eAAe,CAACF,iBAAiB,EAAEjB,QAAQ,CAAC;;EAEtE;EACA;EACA;EACA,IAAIK,aAAa,GAAGE,WAAW,IAAIW,SAAS,GAAGD,iBAAiB,EAAE;IAChEC,SAAS,IAAI,CAAC;EAChB;EACA;EACA;EACA,IACExB,EAAE,CAAC0B,QAAQ,CAACN,MAAM,GAAG,CAAC,IACtB,CAACL,KAAK,CAACC,OAAO,CAACR,iBAAiB,CAAC,GAC7BA,iBAAiB,CAAC,CAAC,CAAC,GACpBA,iBAAiB,IAAIgB,SAAS,EAClC;IACAA,SAAS,IAAI,CAAC;EAChB;EAEA,IAAIF,aAAa,CAAC,CAAC,CAAC,GAAGE,SAAS,EAAE;IAChCA,SAAS,IAAIF,aAAa,CAAC,CAAC,CAAC,GAAGA,aAAa,CAAC,CAAC,CAAC;EAClD;EAEAhB,QAAQ,GAAGX,SAAS,CAAC0B,eAAe,CAClCC,aAAa,EACb1B,KAAK,CAAC4B,SAAS,EAAEpB,iBAAiB,EAAEC,gBAAgB,CAAC,EACrDC,QACF,CAAC;EAED,OAAO;IACLqB,MAAM,EAAEpB,SAAS;IACjBN,YAAY,EACVK,QAAQ,CAACc,MAAM,GAAG,CAAC,GAAGnB,YAAY,CAAC2B,MAAM,CAACtB,QAAQ,CAAC,GAAGL;EAC1D,CAAC;AACH;AAEA,OAAO,SAASgB,WAAWA,CACzBY,IAAsB,EACtBC,MAAqB,EACrBC,YAA0C,EACZ;EAC9B,IAAIF,IAAI,CAACX,QAAQ,KAAKY,MAAM,EAAE;IAC5B;IACA,OAAOC,YAAY;EACrB;EAEA,IAAIxB,SAAS,GAAGwB,YAAY,CAACC,GAAG,CAACC,KAAK,IAAI,IAAIpC,iBAAiB,CAACoC,KAAK,CAAC,CAAC;EACvE,IAAMC,WAAW,GAAG,IAAIC,GAAG,CAAC5B,SAAS,CAACyB,GAAG,CAACC,KAAK,IAAI,CAACA,KAAK,CAACG,IAAI,EAAEH,KAAK,CAAC,CAAC,CAAC;EACxE,IAAMI,SAAS,GAAG9B,SAAS,CAAC+B,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACH,IAAI,KAAKP,IAAI,CAACX,QAAQ,CAAC;EAC/D,IAAMsB,OAAO,GAAGjC,SAAS,CAAC+B,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACH,IAAI,KAAKN,MAAM,CAAC;EACtD,IAAMW,UAAU,GAAGlC,SAAS,CAAC+B,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACH,IAAI,KAAKP,IAAI,CAACa,EAAE,CAAC;EAE1D,IAAIL,SAAS,IAAI,IAAI,EAAE;IACrB;IACAA,SAAS,CAACX,QAAQ,GAAGW,SAAS,CAACX,QAAQ,CAACiB,MAAM,CAACP,IAAI,IAAIA,IAAI,KAAKP,IAAI,CAACa,EAAE,CAAC;;IAExE;IACA,IAAIL,SAAS,CAACX,QAAQ,CAACN,MAAM,KAAK,CAAC,EAAE;MAAA,IAAAwB,OAAA;MACnC,IAAMC,WAAW,GAAG,IAAIC,GAAG,CAAC,CAACT,SAAS,CAACD,IAAI,CAAC,CAAC;MAC7C,IAAM;QAAEW,MAAM,EAAEC,UAAU,GAAG;MAAG,CAAC,GAAGX,SAAS;MAC7C,IAAIU,MAAM,GAAGb,WAAW,CAACe,GAAG,CAACD,UAAU,CAAC;MACxC,CAAAJ,OAAA,GAAAG,MAAM,cAAAH,OAAA,eAANA,OAAA,CAAQM,cAAc,CAAC,CAACb,SAAS,CAACD,IAAI,CAAC,CAAC;;MAExC;MACA,OAAOW,MAAM,IAAIA,MAAM,CAACrB,QAAQ,CAACN,MAAM,KAAK,CAAC,EAAE;QAAA,IAAA+B,cAAA,EAAAC,QAAA;QAC7CP,WAAW,CAACQ,GAAG,CAACN,MAAM,CAACX,IAAI,CAAC;QAC5B,IAAMkB,cAAc,IAAAH,cAAA,IAAAC,QAAA,GAAGL,MAAM,cAAAK,QAAA,uBAANA,QAAA,CAAQL,MAAM,cAAAI,cAAA,cAAAA,cAAA,GAAI,EAAE;QAC3C,IAAMI,UAAU,GAAGrB,WAAW,CAACe,GAAG,CAACK,cAAc,CAAC;QAClDC,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEL,cAAc,CAAC,CAACH,MAAM,CAACX,IAAI,CAAC,CAAC;QACzCW,MAAM,GAAGQ,UAAU;MACrB;;MAEA;MACAhD,SAAS,GAAGA,SAAS,CAACoC,MAAM,CAACa,IAAA;QAAA,IAAC;UAAEpB;QAAK,CAAC,GAAAoB,IAAA;QAAA,OAAK,CAACX,WAAW,CAACY,GAAG,CAACrB,IAAI,CAAC;MAAA,EAAC;IACpE;EACF;EAEA,IAAII,OAAO,IAAI,IAAI,EAAE;IACnB;IACAA,OAAO,CAACkB,WAAW,CAAC,CAAC7B,IAAI,CAACa,EAAE,CAAC,CAAC;EAChC;EAEAD,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAEkB,SAAS,CAAC7B,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI8B,SAAS,CAAC;EAE1C,OAAOrD,SAAS;AAClB","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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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":"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","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":";;;;;;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,IAAQC,KAAK,GAA0DF,KAAK,CAApEE,KAAK;IAAEC,QAAQ,GAAgDH,KAAK,CAA7DG,QAAQ;IAAEC,aAAa,GAAiCJ,KAAK,CAAnDI,aAAa;IAAEC,YAAY,GAAmBL,KAAK,CAApCK,YAAY;IAAEC,YAAY,GAAKN,KAAK,CAAtBM,YAAY;EAClE,IAAQC,KAAK,GAAKL,KAAK,CAAfK,KAAK;EACb,IAAMC,YAAY,GAAG5B,MAAM,CAAmB,IAAI,CAAC;EACnD,IAAM6B,aAAa,GAAG7B,MAAM,CAAmB,IAAI,CAAC;EACpD,IAAA8B,SAAA,GAAgD7B,QAAQ,CAAC,KAAK,CAAC;IAAA8B,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAAxDG,gBAAgB,GAAAF,UAAA;IAAEG,mBAAmB,GAAAH,UAAA;EAC5C,IAAAI,UAAA,GAAwBlC,QAAQ,CAAC0B,KAAK,GAAG,EAAE,GAAGL,KAAK,CAACc,IAAI,CAAC;IAAAC,UAAA,GAAAL,cAAA,CAAAG,UAAA;IAAlDC,IAAI,GAAAC,UAAA;IAAEC,OAAO,GAAAD,UAAA;EACpB,IAAAE,UAAA,GAAkCtC,QAAQ,CAAC0B,KAAK,CAAC;IAAAa,UAAA,GAAAR,cAAA,CAAAO,UAAA;IAA1CE,SAAS,GAAAD,UAAA;IAAEE,YAAY,GAAAF,UAAA;EAC9B,IAAAG,UAAA,GAA4C1C,QAAQ,CAAC,KAAK,CAAC;IAAA2C,UAAA,GAAAZ,cAAA,CAAAW,UAAA;IAApDE,cAAc,GAAAD,UAAA;IAAEE,iBAAiB,GAAAF,UAAA;EACxC,IAAMG,mBAAmB,GAAGX,IAAI,KAAKd,KAAK,CAACc,IAAI,GAAGV,YAAY,CAACU,IAAI,CAAC,GAAG,EAAE;EACzE,IAAMY,OAAO,GAAIrB,KAAK,IAAI,CAACkB,cAAc,IAAKE,mBAAmB,KAAK,EAAE;EACxE,IAAME,qBAAqB,GAAG/C,WAAW,CAAC,MAAM;IAC9CgC,mBAAmB,CAAC,KAAK,CAAC;EAC5B,CAAC,EAAE,EAAE,CAAC;EAENnC,SAAS,CACP,SAASmD,cAAcA,CAAA,EAAG;IACxB,IAAIT,SAAS,IAAIb,YAAY,CAACuB,OAAO,EAAE;MACrC;MACA;MACAvB,YAAY,CAACuB,OAAO,CAACC,KAAK,CAAC,CAAC;MAC5BxB,YAAY,CAACuB,OAAO,CAACE,MAAM,CAAC,CAAC;IAC/B;EACF,CAAC,EACD,CAACZ,SAAS,CACZ,CAAC;EAED1C,SAAS,CACP,SAASuD,cAAcA,CAAA,EAAG;IACxB,IAAIrB,gBAAgB,EAAE;MAAA,IAAAsB,qBAAA,EAAAC,sBAAA;MACpB,CAAAD,qBAAA,GAAA1B,aAAa,CAACsB,OAAO,cAAAI,qBAAA,eAArBA,qBAAA,CAAuBE,KAAK,CAAC,CAAC;MAC9B;MACA;MACA,CAAAD,sBAAA,GAAA3B,aAAa,CAACsB,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,CAAChB,gBAAgB,EAAEgB,qBAAqB,CAC1C,CAAC;EAED,IAAMY,aAAa,GAAGA,CAAA,KAAY;IAChC,IAAIb,OAAO,EAAE;MACX;MACA,IAAI1B,KAAK,CAACc,IAAI,KAAKA,IAAI,EAAE;QACvBX,YAAY,CAACH,KAAK,EAAEc,IAAI,CAAC;MAC3B;MACAM,YAAY,CAAC,KAAK,CAAC;IACrB;EACF,CAAC;EAED,IAAMoB,YAAY,GAAGA,CAAA,KAAY;IAC/B,IAAInC,KAAK,EAAE;MACTJ,QAAQ,CAACD,KAAK,CAAC;MACf;IACF;IACAgB,OAAO,CAAChB,KAAK,CAACc,IAAI,CAAC;IACnBM,YAAY,CAAC,KAAK,CAAC;EACrB,CAAC;EAED,IAAMqB,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,IAAIrB,SAAS,EAAE;IACb,oBACEzB,KAAA,CAAAE,SAAA;MAAAiD,QAAA,gBACEnD,KAAA;QAAKoD,SAAS,EAAC,mBAAmB;QAAAD,QAAA,gBAChCrD,IAAA;UACEuD,GAAG,EAAEzC,YAAa;UAClBwC,SAAS,EAAEjE,UAAU,CAAC,cAAc,EAAE;YACpC,YAAY,EAAE,CAAC6C;UACjB,CAAC,CAAE;UACHsB,KAAK,EAAElC,IAAK;UACZmC,WAAW,EAAC,YAAY;UACxBC,QAAQ,EAAER,CAAC,IAAI1B,OAAO,CAAC0B,CAAC,CAACS,MAAM,CAACH,KAAK,CAAE;UACvCI,SAAS,EAAEX,iBAAkB;UAC7BY,MAAM,EAAEA,CAAA,KAAM7B,iBAAiB,CAAC,IAAI;QAAE,CACvC,CAAC,eACFhC,IAAA,CAACT,MAAM;UACLuE,IAAI,EAAC,OAAO;UACZC,IAAI,EAAErE,OAAQ;UACdsE,OAAO,EAAC,SAAS;UACjBC,OAAO,EAAElB;QAAc,CACxB,CAAC,eACF/C,IAAA,CAACT,MAAM;UACLuE,IAAI,EAAC,OAAO;UACZC,IAAI,EAAEpE,aAAc;UACpBqE,OAAO,EAAC,QAAQ;UAChBC,OAAO,EAAEjB;QAAa,CACvB,CAAC;MAAA,CACC,CAAC,EACL,CAACd,OAAO,iBACPlC,IAAA;QAAGsD,SAAS,EAAC,uCAAuC;QAAAD,QAAA,EACjDpB;MAAmB,CACnB,CACJ;IAAA,CACD,CAAC;EAEP;EAEA,oBACE/B,KAAA;IAAKoD,SAAS,EAAC,oBAAoB;IAAAD,QAAA,gBACjCrD,IAAA;MAAMsD,SAAS,EAAC,aAAa;MAAAD,QAAA,EAAE/B;IAAI,CAAO,CAAC,eAC3CtB,IAAA,CAACT,MAAM;MACL+D,SAAS,EAAC,UAAU;MACpBQ,IAAI,EAAC,OAAO;MACZC,IAAI,EAAEnE,MAAO;MACboE,OAAO,EAAC,MAAM;MACdC,OAAO,EAAEA,CAAA,KAAM;QACbrC,YAAY,CAAC,IAAI,CAAC;MACpB;IAAE,CACH,CAAC,eAEF1B,KAAA;MAAMoD,SAAS,EAAC,eAAe;MAAAD,QAAA,gBAC7BrD,IAAA,CAACT,MAAM;QACLuE,IAAI,EAAC,OAAO;QACZC,IAAI,EAAEjE,OAAQ;QACdkE,OAAO,EAAC,cAAc;QACtBC,OAAO,EAAEA,CAAA,KAAMxD,QAAQ,CAACD,KAAK;MAAE,CAChC,CAAC,eACFR,IAAA,CAACT,MAAM;QACLuE,IAAI,EAAC,OAAO;QACZR,SAAS,EAAC,mBAAmB;QAC7BS,IAAI,EACFvD,KAAK,CAAC0D,KAAK,KAAKC,SAAS,gBACvBjE,KAAA;UAAMoD,SAAS,EAAC,WAAW;UAAAD,QAAA,gBACzBrD,IAAA,CAACV,eAAe;YACdgE,SAAS,EAAC,cAAc;YACxBS,IAAI,EAAEtE,cAAe;YACrByE,KAAK,EAAE1E,WAAW,CAAC4E,KAAM;YACzBC,SAAS,EAAC;UAAQ,CACnB,CAAC,eACFrE,IAAA,CAACV,eAAe;YACdgE,SAAS,EAAC,cAAc;YACxBS,IAAI,EAAEtE,cAAe;YACrByE,KAAK,EAAE1D,KAAK,CAAC0D,KAAM;YACnBG,SAAS,EAAC;UAAiB,CAC5B,CAAC;QAAA,CACE,CAAC,GAEPxE,UAEH;QACDmE,OAAO,EAAC;QACR;AACV;AACA;AACA;AACA,WAJU;QAKAC,OAAO,EAAEA,CAAA,KAAM7C,mBAAmB,CAACkD,GAAG,IAAI,CAACA,GAAG;MAAE,CACjD,CAAC,EACDnD,gBAAgB,iBACfjB,KAAA,CAAAE,SAAA;QAAAiD,QAAA,gBACErD,IAAA;UACE,cAAW,aAAa;UACxBuD,GAAG,EAAExC,aAAc;UACnBwD,IAAI,EAAC,OAAO;UACZC,IAAI,EAAC,cAAc;UACnBhB,KAAK,GAAAjD,YAAA,GAAEC,KAAK,CAAC0D,KAAK,cAAA3D,YAAA,cAAAA,YAAA,GAAIf,WAAW,CAAC,YAAY,CAAE;UAChDiF,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;YACbxC,aAAa,CAACF,KAAK,EAAE0C,CAAC,CAACS,MAAM,CAACH,KAAK,CAAC;UACtC;QAAE,CACH,CAAC,eACFtD,KAAA;UAAU6E,EAAE,EAAC,cAAc;UAAA1B,QAAA,gBACzBrD,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAAC,YAAY;UAAC,CAAS,CAAC,eAC5CQ,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAACwF;UAAO,CAAS,CAAC,eACtChF,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAACyF;UAAU,CAAS,CAAC,eACzCjF,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAAC0F;UAAK,CAAS,CAAC,eACpClF,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAAC2F;UAAM,CAAS,CAAC,eACrCnF,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAAC4F;UAAM,CAAS,CAAC,eACrCpF,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAAC6F;UAAG,CAAS,CAAC,eAClCrF,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAAC8F;UAAM,CAAS,CAAC,eACrCtF,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAAC+F;UAAI,CAAS,CAAC,eACnCvF,IAAA;YAAAqD,QAAA,EAAS7D,WAAW,CAAC,UAAU;UAAC,CAAS,CAAC;QAAA,CAClC,CAAC;MAAA,CACX,CACH;IAAA,CACG,CAAC;EAAA,CACJ,CAAC;AAEV","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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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","
|
|
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":[]}
|
package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js
CHANGED
|
@@ -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
|
}
|
package/dist/sidebar/visibility-ordering-builder/sortable-tree/PointerSensorWithInteraction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointerSensorWithInteraction.js","names":["PointerSensor","PointerSensorWithInteraction","_defineProperty","eventName","handler","_ref","
|
|
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
|
-
|
|
13
|
-
indentationWidth = 30,
|
|
14
|
-
renderItem,
|
|
15
|
-
isDraggable =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
93
|
-
start
|
|
94
|
-
} = _ref7;
|
|
85
|
+
var index = _ref7.index,
|
|
86
|
+
start = _ref7.start;
|
|
95
87
|
var item = filteredItems[index];
|
|
96
|
-
var
|
|
97
|
-
|
|
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":"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","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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
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
|
-
|
|
122
|
-
indentationWidth = 30,
|
|
123
|
-
onDragStart,
|
|
124
|
-
onDragEnd,
|
|
125
|
-
children,
|
|
126
|
-
renderItem
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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];
|