@deephaven/iris-grid 0.94.1-beta.0 → 0.95.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 (245) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +5 -5
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js.map +1 -1
  4. package/dist/AdvancedFilterCreatorFilterItem.d.ts +2 -2
  5. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  6. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValue.d.ts +2 -2
  8. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  9. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  10. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +3 -3
  11. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  12. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  13. package/dist/ColumnHeaderGroup.d.ts +1 -1
  14. package/dist/ColumnHeaderGroup.d.ts.map +1 -1
  15. package/dist/ColumnHeaderGroup.js.map +1 -1
  16. package/dist/ColumnStatistics.d.ts +4 -3
  17. package/dist/ColumnStatistics.d.ts.map +1 -1
  18. package/dist/ColumnStatistics.js.map +1 -1
  19. package/dist/CommonTypes.d.ts +6 -6
  20. package/dist/CommonTypes.d.ts.map +1 -1
  21. package/dist/CommonTypes.js.map +1 -1
  22. package/dist/CrossColumnSearch.d.ts +2 -2
  23. package/dist/CrossColumnSearch.d.ts.map +1 -1
  24. package/dist/CrossColumnSearch.js.map +1 -1
  25. package/dist/EmptyIrisGridModel.d.ts +5 -5
  26. package/dist/EmptyIrisGridModel.d.ts.map +1 -1
  27. package/dist/EmptyIrisGridModel.js.map +1 -1
  28. package/dist/FilterInputField.d.ts +1 -1
  29. package/dist/FilterInputField.d.ts.map +1 -1
  30. package/dist/FilterInputField.js.map +1 -1
  31. package/dist/GotoRow.d.ts +4 -4
  32. package/dist/GotoRow.d.ts.map +1 -1
  33. package/dist/GotoRow.js.map +1 -1
  34. package/dist/IrisGrid.d.ts +16 -16
  35. package/dist/IrisGrid.d.ts.map +1 -1
  36. package/dist/IrisGrid.js.map +1 -1
  37. package/dist/IrisGridCellRendererUtils.d.ts +2 -2
  38. package/dist/IrisGridCellRendererUtils.d.ts.map +1 -1
  39. package/dist/IrisGridCellRendererUtils.js.map +1 -1
  40. package/dist/IrisGridCopyHandler.d.ts +3 -3
  41. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  42. package/dist/IrisGridCopyHandler.js.map +1 -1
  43. package/dist/IrisGridDataBarCellRenderer.d.ts +2 -2
  44. package/dist/IrisGridDataBarCellRenderer.d.ts.map +1 -1
  45. package/dist/IrisGridDataBarCellRenderer.js.map +1 -1
  46. package/dist/IrisGridIcons.js.map +1 -1
  47. package/dist/IrisGridMetricCalculator.d.ts +2 -2
  48. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  49. package/dist/IrisGridMetricCalculator.js.map +1 -1
  50. package/dist/IrisGridModel.d.ts +4 -4
  51. package/dist/IrisGridModel.d.ts.map +1 -1
  52. package/dist/IrisGridModel.js.map +1 -1
  53. package/dist/IrisGridModelFactory.d.ts +1 -1
  54. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  55. package/dist/IrisGridModelFactory.js.map +1 -1
  56. package/dist/IrisGridModelUpdater.d.ts +5 -5
  57. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  58. package/dist/IrisGridModelUpdater.js.map +1 -1
  59. package/dist/IrisGridPartitionSelector.d.ts +1 -1
  60. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  61. package/dist/IrisGridPartitionSelector.js.map +1 -1
  62. package/dist/IrisGridPartitionedTableModel.d.ts +2 -2
  63. package/dist/IrisGridPartitionedTableModel.d.ts.map +1 -1
  64. package/dist/IrisGridPartitionedTableModel.js.map +1 -1
  65. package/dist/IrisGridProxyModel.d.ts +2 -2
  66. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  67. package/dist/IrisGridProxyModel.js.map +1 -1
  68. package/dist/IrisGridRenderer.d.ts +5 -5
  69. package/dist/IrisGridRenderer.d.ts.map +1 -1
  70. package/dist/IrisGridRenderer.js.map +1 -1
  71. package/dist/IrisGridTableModel.d.ts +3 -3
  72. package/dist/IrisGridTableModel.d.ts.map +1 -1
  73. package/dist/IrisGridTableModel.js.map +1 -1
  74. package/dist/IrisGridTableModelTemplate.d.ts +6 -6
  75. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  76. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  77. package/dist/IrisGridTestUtils.d.ts +1 -1
  78. package/dist/IrisGridTestUtils.d.ts.map +1 -1
  79. package/dist/IrisGridTestUtils.js.map +1 -1
  80. package/dist/IrisGridTextCellRenderer.d.ts +2 -2
  81. package/dist/IrisGridTextCellRenderer.d.ts.map +1 -1
  82. package/dist/IrisGridTextCellRenderer.js.map +1 -1
  83. package/dist/IrisGridTheme.d.ts +1 -1
  84. package/dist/IrisGridTheme.d.ts.map +1 -1
  85. package/dist/IrisGridTheme.js.map +1 -1
  86. package/dist/IrisGridThemeProvider.d.ts +2 -2
  87. package/dist/IrisGridThemeProvider.d.ts.map +1 -1
  88. package/dist/IrisGridThemeProvider.js.map +1 -1
  89. package/dist/IrisGridTreeTableModel.d.ts +2 -2
  90. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  91. package/dist/IrisGridTreeTableModel.js.map +1 -1
  92. package/dist/IrisGridUtils.d.ts +9 -9
  93. package/dist/IrisGridUtils.d.ts.map +1 -1
  94. package/dist/IrisGridUtils.js.map +1 -1
  95. package/dist/MissingKeyError.d.ts +2 -2
  96. package/dist/MissingKeyError.d.ts.map +1 -1
  97. package/dist/MissingKeyError.js.map +1 -1
  98. package/dist/PartitionedGridModel.d.ts +1 -1
  99. package/dist/PartitionedGridModel.d.ts.map +1 -1
  100. package/dist/PartitionedGridModel.js.map +1 -1
  101. package/dist/PendingDataBottomBar.d.ts +1 -1
  102. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  103. package/dist/PendingDataBottomBar.js.map +1 -1
  104. package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts +2 -2
  105. package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts.map +1 -1
  106. package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
  107. package/dist/format-context-menus/DecimalFormatContextMenu.d.ts +2 -2
  108. package/dist/format-context-menus/DecimalFormatContextMenu.d.ts.map +1 -1
  109. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  110. package/dist/format-context-menus/FormatContextMenuUtils.d.ts +1 -1
  111. package/dist/format-context-menus/FormatContextMenuUtils.d.ts.map +1 -1
  112. package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
  113. package/dist/format-context-menus/IntegerFormatContextMenu.d.ts +2 -2
  114. package/dist/format-context-menus/IntegerFormatContextMenu.d.ts.map +1 -1
  115. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  116. package/dist/key-handlers/ClearFilterKeyHandler.d.ts +1 -1
  117. package/dist/key-handlers/ClearFilterKeyHandler.d.ts.map +1 -1
  118. package/dist/key-handlers/ClearFilterKeyHandler.js.map +1 -1
  119. package/dist/key-handlers/CopyCellKeyHandler.d.ts +1 -1
  120. package/dist/key-handlers/CopyCellKeyHandler.d.ts.map +1 -1
  121. package/dist/key-handlers/CopyCellKeyHandler.js.map +1 -1
  122. package/dist/key-handlers/CopyKeyHandler.d.ts +1 -1
  123. package/dist/key-handlers/CopyKeyHandler.d.ts.map +1 -1
  124. package/dist/key-handlers/CopyKeyHandler.js.map +1 -1
  125. package/dist/key-handlers/ReverseKeyHandler.d.ts +1 -1
  126. package/dist/key-handlers/ReverseKeyHandler.d.ts.map +1 -1
  127. package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
  128. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts +1 -1
  129. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
  130. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  131. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts +1 -1
  132. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
  133. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  134. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts +1 -1
  135. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  136. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  137. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +5 -5
  138. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  139. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  140. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.d.ts +2 -2
  141. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.d.ts.map +1 -1
  142. package/dist/mousehandlers/IrisGridCopyCellMouseHandler.js.map +1 -1
  143. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.d.ts +1 -1
  144. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.d.ts.map +1 -1
  145. package/dist/mousehandlers/IrisGridDataSelectMouseHandler.js.map +1 -1
  146. package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts +1 -1
  147. package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
  148. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  149. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.d.ts +1 -1
  150. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.d.ts.map +1 -1
  151. package/dist/mousehandlers/IrisGridPartitionedTableMouseHandler.js.map +1 -1
  152. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.d.ts +1 -1
  153. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.d.ts.map +1 -1
  154. package/dist/mousehandlers/IrisGridRowTreeMouseHandler.js.map +1 -1
  155. package/dist/mousehandlers/IrisGridSortMouseHandler.d.ts +1 -1
  156. package/dist/mousehandlers/IrisGridSortMouseHandler.d.ts.map +1 -1
  157. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  158. package/dist/mousehandlers/IrisGridTokenMouseHandler.d.ts +2 -2
  159. package/dist/mousehandlers/IrisGridTokenMouseHandler.d.ts.map +1 -1
  160. package/dist/mousehandlers/IrisGridTokenMouseHandler.js.map +1 -1
  161. package/dist/mousehandlers/PendingMouseHandler.d.ts +2 -2
  162. package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
  163. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  164. package/dist/sidebar/AdvancedSettingsMenu.js.map +1 -1
  165. package/dist/sidebar/ChartBuilder.d.ts +1 -1
  166. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  167. package/dist/sidebar/ChartBuilder.js.map +1 -1
  168. package/dist/sidebar/CustomColumnBuilder.d.ts +3 -3
  169. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  170. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  171. package/dist/sidebar/CustomColumnInput.d.ts +1 -1
  172. package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
  173. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  174. package/dist/sidebar/InputEditor.d.ts +1 -1
  175. package/dist/sidebar/InputEditor.d.ts.map +1 -1
  176. package/dist/sidebar/InputEditor.js.map +1 -1
  177. package/dist/sidebar/RollupRows.d.ts +6 -6
  178. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  179. package/dist/sidebar/RollupRows.js.map +1 -1
  180. package/dist/sidebar/SelectDistinctBuilder.d.ts +4 -4
  181. package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
  182. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  183. package/dist/sidebar/TableCsvExporter.d.ts +3 -3
  184. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  185. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  186. package/dist/sidebar/TableSaver.d.ts +3 -3
  187. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  188. package/dist/sidebar/TableSaver.js.map +1 -1
  189. package/dist/sidebar/aggregations/AggregationEdit.d.ts +2 -2
  190. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  191. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  192. package/dist/sidebar/aggregations/AggregationUtils.d.ts +1 -1
  193. package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
  194. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  195. package/dist/sidebar/aggregations/Aggregations.d.ts +1 -1
  196. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  197. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  198. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +1 -1
  199. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  200. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  201. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -1
  202. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  203. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  204. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +1 -1
  205. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
  206. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  207. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +1 -1
  208. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -1
  209. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  210. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +2 -2
  211. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  212. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  213. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +1 -1
  214. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
  215. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  216. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +1 -1
  217. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  218. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  219. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +1 -1
  220. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -1
  221. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
  222. package/dist/sidebar/index.d.ts +1 -1
  223. package/dist/sidebar/index.d.ts.map +1 -1
  224. package/dist/sidebar/index.js.map +1 -1
  225. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +7 -6
  226. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  227. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  228. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts +3 -3
  229. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.d.ts.map +1 -1
  230. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilderUtils.js.map +1 -1
  231. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts +1 -1
  232. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
  233. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
  234. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
  235. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +1 -1
  236. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts +1 -1
  237. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts.map +1 -1
  238. package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
  239. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.d.ts +1 -1
  240. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.d.ts.map +1 -1
  241. package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
  242. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +2 -2
  243. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
  244. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  245. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"SortableTree.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","DndContext","closestCenter","KeyboardSensor","useSensor","useSensors","MeasuringStrategy","SortableContext","verticalListSortingStrategy","flattenTree","getProjection","sortableTreeKeyboardCoordinates","PointerSensorWithInteraction","SortableTreeInner","jsx","_jsx","MEASURING","droppable","strategy","Always","CONSTRAINT","activationConstraint","distance","SortableTree","_ref","items","indicator","indentationWidth","onDragStart","onDragEnd","renderItem","activeId","setActiveId","overId","setOverId","offsetLeft","setOffsetLeft","flattenedItems","flattenedTree","filter","_ref2","id","selected","projected","sensorContext","offset","keyboardOptions","coordinateGetter","sensors","sortedIds","map","_ref3","current","handleDragStart","_ref4","active","newActiveId","document","body","style","setProperty","handleDragMove","_ref5","delta","x","handleDragOver","_ref6","_ref7","over","resetState","handleDragEnd","_ref8","depth","parentId","clonedItems","JSON","parse","stringify","overIndex","findIndex","_ref9","activeIndex","_ref10","activeTreeItem","_objectSpread","handleDragCancel","collisionDetection","measuring","onDragMove","onDragOver","onDragCancel","children"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n useSensor,\n useSensors,\n DragStartEvent,\n DragMoveEvent,\n DragEndEvent,\n DragOverEvent,\n MeasuringStrategy,\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { flattenTree, getProjection } from './utilities';\nimport type { FlattenedItem, SensorContext, TreeItem } from './types';\nimport { sortableTreeKeyboardCoordinates } from './keyboardCoordinates';\nimport PointerSensorWithInteraction from './PointerSensorWithInteraction';\nimport SortableTreeInner from './SortableTreeInner';\n\nconst MEASURING = {\n droppable: {\n strategy: MeasuringStrategy.Always,\n },\n};\n\nconst CONSTRAINT = {\n activationConstraint: {\n distance: 5,\n },\n};\n\ninterface Props<T> {\n items: TreeItem<T>[];\n indentationWidth?: number;\n indicator?: boolean;\n onDragStart?: (id: string) => void;\n onDragEnd?: (from: FlattenedItem<T>, to: FlattenedItem<T>) => void;\n renderItem: (props: {\n clone: boolean;\n childCount?: number;\n value: string;\n item: FlattenedItem<T>;\n ref: React.Ref<HTMLDivElement>;\n handleProps?: Record<string, unknown>;\n }) => JSX.Element;\n}\n\nexport default function SortableTree<T>({\n items,\n indicator = false,\n indentationWidth = 30,\n onDragStart,\n onDragEnd,\n renderItem,\n}: Props<T>): JSX.Element {\n const [activeId, setActiveId] = useState<string | null>(null);\n const [overId, setOverId] = useState<string | null>(null);\n const [offsetLeft, setOffsetLeft] = useState(0);\n\n const flattenedItems = useMemo(() => {\n const flattenedTree = flattenTree(items);\n\n if (activeId != null) {\n return flattenedTree.filter(\n ({ id, selected }) => id === activeId || !selected\n );\n }\n\n return flattenedTree;\n }, [activeId, items]);\n\n const projected =\n activeId != null && overId != null\n ? getProjection(\n flattenedItems,\n activeId,\n overId,\n offsetLeft,\n indentationWidth\n )\n : null;\n const sensorContext: SensorContext = useRef({\n items: flattenedItems,\n offset: offsetLeft,\n });\n const keyboardOptions = useMemo(\n () => ({\n coordinateGetter: sortableTreeKeyboardCoordinates(\n sensorContext,\n indicator,\n indentationWidth\n ),\n }),\n [indentationWidth, indicator]\n );\n\n const sensors = useSensors(\n useSensor(PointerSensorWithInteraction, CONSTRAINT),\n useSensor(KeyboardSensor, keyboardOptions)\n );\n\n const sortedIds = useMemo(\n () => flattenedItems.map(({ id }) => id),\n [flattenedItems]\n );\n\n useEffect(() => {\n sensorContext.current = {\n items: flattenedItems,\n offset: offsetLeft,\n };\n }, [flattenedItems, offsetLeft]);\n\n const handleDragStart = useCallback(\n ({ active: { id: newActiveId } }: DragStartEvent) => {\n setActiveId(newActiveId as string);\n setOverId(newActiveId as string);\n onDragStart?.(newActiveId as string);\n\n document.body.style.setProperty('cursor', 'grabbing');\n },\n [onDragStart]\n );\n\n const handleDragMove = useCallback(({ delta }: DragMoveEvent) => {\n setOffsetLeft(delta.x);\n }, []);\n\n const handleDragOver = useCallback(({ over }: DragOverEvent) => {\n setOverId((over?.id as string) ?? null);\n }, []);\n\n const resetState = useCallback(() => {\n setOverId(null);\n setActiveId(null);\n setOffsetLeft(0);\n\n document.body.style.setProperty('cursor', '');\n }, []);\n\n const handleDragEnd = useCallback(\n ({ active, over }: DragEndEvent) => {\n resetState();\n\n if (projected && over) {\n const { depth, parentId } = projected;\n\n const clonedItems: FlattenedItem<T>[] = JSON.parse(\n JSON.stringify(flattenTree(items))\n );\n const overIndex = clonedItems.findIndex(({ id }) => id === over.id);\n const activeIndex = clonedItems.findIndex(({ id }) => id === active.id);\n const activeTreeItem = clonedItems[activeIndex];\n\n clonedItems[activeIndex] = { ...activeTreeItem, depth, parentId };\n\n onDragEnd?.(activeTreeItem, {\n ...clonedItems[overIndex],\n parentId: projected.parentId,\n });\n }\n },\n [items, onDragEnd, projected, resetState]\n );\n\n const handleDragCancel = useCallback(() => {\n resetState();\n }, [resetState]);\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n measuring={MEASURING}\n onDragStart={handleDragStart}\n onDragMove={handleDragMove}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={sortedIds} strategy={verticalListSortingStrategy}>\n <SortableTreeInner\n items={flattenedItems}\n renderItem={renderItem}\n indicator={indicator}\n indentationWidth={indentationWidth}\n activeId={activeId}\n overId={overId}\n offsetLeft={offsetLeft}\n />\n </SortableContext>\n </DndContext>\n );\n}\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,SAAS,EACTC,OAAO,EACPC,MAAM,EACNC,QAAQ,QACH,OAAO;AACd,SACEC,UAAU,EACVC,aAAa,EACbC,cAAc,EACdC,SAAS,EACTC,UAAU,EAKVC,iBAAiB,QACZ,eAAe;AACtB,SACEC,eAAe,EACfC,2BAA2B,QACtB,mBAAmB;AAAC,SAClBC,WAAW,EAAEC,aAAa;AAAA,SAE1BC,+BAA+B;AAAA,OACjCC,4BAA4B;AAAA,OAC5BC,iBAAiB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAExB,IAAMC,SAAS,GAAG;EAChBC,SAAS,EAAE;IACTC,QAAQ,EAAEZ,iBAAiB,CAACa;EAC9B;AACF,CAAC;AAED,IAAMC,UAAU,GAAG;EACjBC,oBAAoB,EAAE;IACpBC,QAAQ,EAAE;EACZ;AACF,CAAC;AAkBD,eAAe,SAASC,YAAYA,CAAAC,IAAA,EAOV;EAAA,IAPc;IACtCC,KAAK;IACLC,SAAS,GAAG,KAAK;IACjBC,gBAAgB,GAAG,EAAE;IACrBC,WAAW;IACXC,SAAS;IACTC;EACQ,CAAC,GAAAN,IAAA;EACT,IAAM,CAACO,QAAQ,EAAEC,WAAW,CAAC,GAAGhC,QAAQ,CAAgB,IAAI,CAAC;EAC7D,IAAM,CAACiC,MAAM,EAAEC,SAAS,CAAC,GAAGlC,QAAQ,CAAgB,IAAI,CAAC;EACzD,IAAM,CAACmC,UAAU,EAAEC,aAAa,CAAC,GAAGpC,QAAQ,CAAC,CAAC,CAAC;EAE/C,IAAMqC,cAAc,GAAGvC,OAAO,CAAC,MAAM;IACnC,IAAMwC,aAAa,GAAG7B,WAAW,CAACgB,KAAK,CAAC;IAExC,IAAIM,QAAQ,IAAI,IAAI,EAAE;MACpB,OAAOO,aAAa,CAACC,MAAM,CACzBC,KAAA;QAAA,IAAC;UAAEC,EAAE;UAAEC;QAAS,CAAC,GAAAF,KAAA;QAAA,OAAKC,EAAE,KAAKV,QAAQ,IAAI,CAACW,QAAQ;MAAA,CACpD,CAAC;IACH;IAEA,OAAOJ,aAAa;EACtB,CAAC,EAAE,CAACP,QAAQ,EAAEN,KAAK,CAAC,CAAC;EAErB,IAAMkB,SAAS,GACbZ,QAAQ,IAAI,IAAI,IAAIE,MAAM,IAAI,IAAI,GAC9BvB,aAAa,CACX2B,cAAc,EACdN,QAAQ,EACRE,MAAM,EACNE,UAAU,EACVR,gBACF,CAAC,GACD,IAAI;EACV,IAAMiB,aAA4B,GAAG7C,MAAM,CAAC;IAC1C0B,KAAK,EAAEY,cAAc;IACrBQ,MAAM,EAAEV;EACV,CAAC,CAAC;EACF,IAAMW,eAAe,GAAGhD,OAAO,CAC7B,OAAO;IACLiD,gBAAgB,EAAEpC,+BAA+B,CAC/CiC,aAAa,EACblB,SAAS,EACTC,gBACF;EACF,CAAC,CAAC,EACF,CAACA,gBAAgB,EAAED,SAAS,CAC9B,CAAC;EAED,IAAMsB,OAAO,GAAG3C,UAAU,CACxBD,SAAS,CAACQ,4BAA4B,EAAEQ,UAAU,CAAC,EACnDhB,SAAS,CAACD,cAAc,EAAE2C,eAAe,CAC3C,CAAC;EAED,IAAMG,SAAS,GAAGnD,OAAO,CACvB,MAAMuC,cAAc,CAACa,GAAG,CAACC,KAAA;IAAA,IAAC;MAAEV;IAAG,CAAC,GAAAU,KAAA;IAAA,OAAKV,EAAE;EAAA,EAAC,EACxC,CAACJ,cAAc,CACjB,CAAC;EAEDxC,SAAS,CAAC,MAAM;IACd+C,aAAa,CAACQ,OAAO,GAAG;MACtB3B,KAAK,EAAEY,cAAc;MACrBQ,MAAM,EAAEV;IACV,CAAC;EACH,CAAC,EAAE,CAACE,cAAc,EAAEF,UAAU,CAAC,CAAC;EAEhC,IAAMkB,eAAe,GAAGzD,WAAW,CACjC0D,KAAA,IAAqD;IAAA,IAApD;MAAEC,MAAM,EAAE;QAAEd,EAAE,EAAEe;MAAY;IAAkB,CAAC,GAAAF,KAAA;IAC9CtB,WAAW,CAACwB,WAAqB,CAAC;IAClCtB,SAAS,CAACsB,WAAqB,CAAC;IAChC5B,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAG4B,WAAqB,CAAC;IAEpCC,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC;EACvD,CAAC,EACD,CAAChC,WAAW,CACd,CAAC;EAED,IAAMiC,cAAc,GAAGjE,WAAW,CAACkE,KAAA,IAA8B;IAAA,IAA7B;MAAEC;IAAqB,CAAC,GAAAD,KAAA;IAC1D1B,aAAa,CAAC2B,KAAK,CAACC,CAAC,CAAC;EACxB,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMC,cAAc,GAAGrE,WAAW,CAACsE,KAAA,IAA6B;IAAA,IAAAC,KAAA;IAAA,IAA5B;MAAEC;IAAoB,CAAC,GAAAF,KAAA;IACzDhC,SAAS,EAAAiC,KAAA,GAAEC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE3B,EAAE,cAAA0B,KAAA,cAAAA,KAAA,GAAe,IAAI,CAAC;EACzC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAME,UAAU,GAAGzE,WAAW,CAAC,MAAM;IACnCsC,SAAS,CAAC,IAAI,CAAC;IACfF,WAAW,CAAC,IAAI,CAAC;IACjBI,aAAa,CAAC,CAAC,CAAC;IAEhBqB,QAAQ,CAACC,IAAI,CAACC,KAAK,CAACC,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;EAC/C,CAAC,EAAE,EAAE,CAAC;EAEN,IAAMU,aAAa,GAAG1E,WAAW,CAC/B2E,KAAA,IAAoC;IAAA,IAAnC;MAAEhB,MAAM;MAAEa;IAAmB,CAAC,GAAAG,KAAA;IAC7BF,UAAU,CAAC,CAAC;IAEZ,IAAI1B,SAAS,IAAIyB,IAAI,EAAE;MACrB,IAAM;QAAEI,KAAK;QAAEC;MAAS,CAAC,GAAG9B,SAAS;MAErC,IAAM+B,WAA+B,GAAGC,IAAI,CAACC,KAAK,CAChDD,IAAI,CAACE,SAAS,CAACpE,WAAW,CAACgB,KAAK,CAAC,CACnC,CAAC;MACD,IAAMqD,SAAS,GAAGJ,WAAW,CAACK,SAAS,CAACC,KAAA;QAAA,IAAC;UAAEvC;QAAG,CAAC,GAAAuC,KAAA;QAAA,OAAKvC,EAAE,KAAK2B,IAAI,CAAC3B,EAAE;MAAA,EAAC;MACnE,IAAMwC,WAAW,GAAGP,WAAW,CAACK,SAAS,CAACG,MAAA;QAAA,IAAC;UAAEzC;QAAG,CAAC,GAAAyC,MAAA;QAAA,OAAKzC,EAAE,KAAKc,MAAM,CAACd,EAAE;MAAA,EAAC;MACvE,IAAM0C,cAAc,GAAGT,WAAW,CAACO,WAAW,CAAC;MAE/CP,WAAW,CAACO,WAAW,CAAC,GAAAG,aAAA,CAAAA,aAAA,KAAQD,cAAc;QAAEX,KAAK;QAAEC;MAAQ,EAAE;MAEjE5C,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAGsD,cAAc,EAAAC,aAAA,CAAAA,aAAA,KACrBV,WAAW,CAACI,SAAS,CAAC;QACzBL,QAAQ,EAAE9B,SAAS,CAAC8B;MAAQ,EAC7B,CAAC;IACJ;EACF,CAAC,EACD,CAAChD,KAAK,EAAEI,SAAS,EAAEc,SAAS,EAAE0B,UAAU,CAC1C,CAAC;EAED,IAAMgB,gBAAgB,GAAGzF,WAAW,CAAC,MAAM;IACzCyE,UAAU,CAAC,CAAC;EACd,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAEhB,oBACEtD,IAAA,CAACd,UAAU;IACT+C,OAAO,EAAEA,OAAQ;IACjBsC,kBAAkB,EAAEpF,aAAc;IAClCqF,SAAS,EAAEvE,SAAU;IACrBY,WAAW,EAAEyB,eAAgB;IAC7BmC,UAAU,EAAE3B,cAAe;IAC3B4B,UAAU,EAAExB,cAAe;IAC3BpC,SAAS,EAAEyC,aAAc;IACzBoB,YAAY,EAAEL,gBAAiB;IAAAM,QAAA,eAE/B5E,IAAA,CAACR,eAAe;MAACkB,KAAK,EAAEwB,SAAU;MAAC/B,QAAQ,EAAEV,2BAA4B;MAAAmF,QAAA,eACvE5E,IAAA,CAACF,iBAAiB;QAChBY,KAAK,EAAEY,cAAe;QACtBP,UAAU,EAAEA,UAAW;QACvBJ,SAAS,EAAEA,SAAU;QACrBC,gBAAgB,EAAEA,gBAAiB;QACnCI,QAAQ,EAAEA,QAAS;QACnBE,MAAM,EAAEA,MAAO;QACfE,UAAU,EAAEA;MAAW,CACxB;IAAC,CACa;EAAC,CACR,CAAC;AAEjB"}
1
+ {"version":3,"file":"SortableTree.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","DndContext","closestCenter","KeyboardSensor","useSensor","useSensors","MeasuringStrategy","SortableContext","verticalListSortingStrategy","flattenTree","getProjection","sortableTreeKeyboardCoordinates","PointerSensorWithInteraction","SortableTreeInner","jsx","_jsx","MEASURING","droppable","strategy","Always","CONSTRAINT","activationConstraint","distance","SortableTree","_ref","items","indicator","indentationWidth","onDragStart","onDragEnd","renderItem","activeId","setActiveId","overId","setOverId","offsetLeft","setOffsetLeft","flattenedItems","flattenedTree","filter","_ref2","id","selected","projected","sensorContext","offset","keyboardOptions","coordinateGetter","sensors","sortedIds","map","_ref3","current","handleDragStart","_ref4","active","newActiveId","document","body","style","setProperty","handleDragMove","_ref5","delta","x","handleDragOver","_ref6","_ref7","over","resetState","handleDragEnd","_ref8","depth","parentId","clonedItems","JSON","parse","stringify","overIndex","findIndex","_ref9","activeIndex","_ref10","activeTreeItem","_objectSpread","handleDragCancel","collisionDetection","measuring","onDragMove","onDragOver","onDragCancel","children"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.tsx"],"sourcesContent":["import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n useSensor,\n useSensors,\n type DragStartEvent,\n type DragMoveEvent,\n type DragEndEvent,\n type DragOverEvent,\n MeasuringStrategy,\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n} from '@dnd-kit/sortable';\nimport { flattenTree, getProjection } from './utilities';\nimport type { FlattenedItem, SensorContext, TreeItem } from './types';\nimport { sortableTreeKeyboardCoordinates } from './keyboardCoordinates';\nimport PointerSensorWithInteraction from './PointerSensorWithInteraction';\nimport SortableTreeInner from './SortableTreeInner';\n\nconst MEASURING = {\n droppable: {\n strategy: MeasuringStrategy.Always,\n },\n};\n\nconst CONSTRAINT = {\n activationConstraint: {\n distance: 5,\n },\n};\n\ninterface Props<T> {\n items: TreeItem<T>[];\n indentationWidth?: number;\n indicator?: boolean;\n onDragStart?: (id: string) => void;\n onDragEnd?: (from: FlattenedItem<T>, to: FlattenedItem<T>) => void;\n renderItem: (props: {\n clone: boolean;\n childCount?: number;\n value: string;\n item: FlattenedItem<T>;\n ref: React.Ref<HTMLDivElement>;\n handleProps?: Record<string, unknown>;\n }) => JSX.Element;\n}\n\nexport default function SortableTree<T>({\n items,\n indicator = false,\n indentationWidth = 30,\n onDragStart,\n onDragEnd,\n renderItem,\n}: Props<T>): JSX.Element {\n const [activeId, setActiveId] = useState<string | null>(null);\n const [overId, setOverId] = useState<string | null>(null);\n const [offsetLeft, setOffsetLeft] = useState(0);\n\n const flattenedItems = useMemo(() => {\n const flattenedTree = flattenTree(items);\n\n if (activeId != null) {\n return flattenedTree.filter(\n ({ id, selected }) => id === activeId || !selected\n );\n }\n\n return flattenedTree;\n }, [activeId, items]);\n\n const projected =\n activeId != null && overId != null\n ? getProjection(\n flattenedItems,\n activeId,\n overId,\n offsetLeft,\n indentationWidth\n )\n : null;\n const sensorContext: SensorContext = useRef({\n items: flattenedItems,\n offset: offsetLeft,\n });\n const keyboardOptions = useMemo(\n () => ({\n coordinateGetter: sortableTreeKeyboardCoordinates(\n sensorContext,\n indicator,\n indentationWidth\n ),\n }),\n [indentationWidth, indicator]\n );\n\n const sensors = useSensors(\n useSensor(PointerSensorWithInteraction, CONSTRAINT),\n useSensor(KeyboardSensor, keyboardOptions)\n );\n\n const sortedIds = useMemo(\n () => flattenedItems.map(({ id }) => id),\n [flattenedItems]\n );\n\n useEffect(() => {\n sensorContext.current = {\n items: flattenedItems,\n offset: offsetLeft,\n };\n }, [flattenedItems, offsetLeft]);\n\n const handleDragStart = useCallback(\n ({ active: { id: newActiveId } }: DragStartEvent) => {\n setActiveId(newActiveId as string);\n setOverId(newActiveId as string);\n onDragStart?.(newActiveId as string);\n\n document.body.style.setProperty('cursor', 'grabbing');\n },\n [onDragStart]\n );\n\n const handleDragMove = useCallback(({ delta }: DragMoveEvent) => {\n setOffsetLeft(delta.x);\n }, []);\n\n const handleDragOver = useCallback(({ over }: DragOverEvent) => {\n setOverId((over?.id as string) ?? null);\n }, []);\n\n const resetState = useCallback(() => {\n setOverId(null);\n setActiveId(null);\n setOffsetLeft(0);\n\n document.body.style.setProperty('cursor', '');\n }, []);\n\n const handleDragEnd = useCallback(\n ({ active, over }: DragEndEvent) => {\n resetState();\n\n if (projected && over) {\n const { depth, parentId } = projected;\n\n const clonedItems: FlattenedItem<T>[] = JSON.parse(\n JSON.stringify(flattenTree(items))\n );\n const overIndex = clonedItems.findIndex(({ id }) => id === over.id);\n const activeIndex = clonedItems.findIndex(({ id }) => id === active.id);\n const activeTreeItem = clonedItems[activeIndex];\n\n clonedItems[activeIndex] = { ...activeTreeItem, depth, parentId };\n\n onDragEnd?.(activeTreeItem, {\n ...clonedItems[overIndex],\n parentId: projected.parentId,\n });\n }\n },\n [items, onDragEnd, projected, resetState]\n );\n\n const handleDragCancel = useCallback(() => {\n resetState();\n }, [resetState]);\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n measuring={MEASURING}\n onDragStart={handleDragStart}\n onDragMove={handleDragMove}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext items={sortedIds} strategy={verticalListSortingStrategy}>\n <SortableTreeInner\n items={flattenedItems}\n renderItem={renderItem}\n indicator={indicator}\n indentationWidth={indentationWidth}\n activeId={activeId}\n overId={overId}\n offsetLeft={offsetLeft}\n />\n </SortableContext>\n </DndContext>\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SortableTreeInner.js","names":["React","useEffect","useRef","createPortal","classNames","DragOverlay","defaultDropAnimation","useDndContext","CSS","getProjection","getChildCount","SortableTreeItem","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","dropAnimationConfig","keyframes","_ref","transform","opacity","Transform","toString","initial","_objectSpread","final","x","y","easing","sideEffects","_ref2","active","node","animate","duration","offsetY","adjustToCursor","args","_offsetY","activeNodeRect","activatorEvent","PointerEvent","Math","floor","clientY","top","height","SortableTreeInner","_ref3","items","renderItem","indentationWidth","indicator","activeId","overId","offsetLeft","context","contextRef","updateContextRef","current","remeasureContainers","measureDroppableContainers","map","_ref4","id","projected","sensorContext","offset","activeItem","find","_ref5","children","className","item","depth","value","dropAnimation","modifiers","clone","childCount","document","body"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport classNames from 'classnames';\nimport {\n DragOverlay,\n DropAnimation,\n Modifier,\n defaultDropAnimation,\n useDndContext,\n} from '@dnd-kit/core';\nimport { CSS } from '@dnd-kit/utilities';\nimport { getProjection, getChildCount } from './utilities';\nimport type { FlattenedItem, SensorContext } from './types';\nimport { SortableTreeItem } from './SortableTreeItem';\n\nconst dropAnimationConfig: DropAnimation = {\n keyframes({ transform }) {\n return [\n { opacity: 1, transform: CSS.Transform.toString(transform.initial) },\n {\n opacity: 0,\n transform: CSS.Transform.toString({\n ...transform.final,\n x: transform.final.x + 5,\n y: transform.final.y + 5,\n }),\n },\n ];\n },\n easing: 'ease-out',\n sideEffects({ active }) {\n active.node.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: defaultDropAnimation.duration,\n easing: defaultDropAnimation.easing,\n });\n },\n};\n\n// Used to track the offset for adjustToCursor\n// Once drag starts, set this. Once it ends, null this\nlet offsetY: number | null = null;\n\n/**\n * This adjusts the transform to move to the cursor if it gets shifted due to multi-select.\n * With multi-select, the selected items (except dragged) are removed on drag.\n * This can cause the overlay item to disconnect from the cursor in some cases.\n * E.g. select first 3 items, start dragging from 3rd item.\n * Without this modifier, the drag overlay will be shifted 60px up from the cursor after the items are removed.\n *\n * This assumes all items are the same height as the dragged item\n * @param args Modifier args from dnd-kit\n * @returns Transform so that the dragged item stays on the cursor\n */\nfunction adjustToCursor(args: Parameters<Modifier>[0]): {\n y: number;\n x: number;\n scaleX: number;\n scaleY: number;\n} {\n if (\n offsetY == null &&\n args.activeNodeRect &&\n args.activatorEvent instanceof PointerEvent\n ) {\n offsetY =\n Math.floor(\n (args.activatorEvent.clientY - args.activeNodeRect.top) /\n args.activeNodeRect.height\n ) * args.activeNodeRect.height;\n }\n\n if (!args.activeNodeRect) {\n offsetY = null;\n }\n\n return { ...args.transform, y: args.transform.y + (offsetY ?? 0) };\n}\n\ninterface Props<T> {\n items: FlattenedItem<T>[];\n indentationWidth?: number;\n indicator?: boolean;\n renderItem: (props: {\n clone: boolean;\n childCount?: number;\n value: string;\n item: FlattenedItem<T>;\n ref: React.Ref<HTMLDivElement>;\n handleProps?: Record<string, unknown>;\n }) => JSX.Element;\n activeId: string | null;\n overId: string | null;\n offsetLeft: number;\n}\n\nexport default function SortableTreeInner<T>({\n items,\n renderItem,\n indentationWidth = 30,\n indicator = false,\n activeId,\n overId,\n offsetLeft,\n}: Props<T>): JSX.Element {\n const context = useDndContext();\n const contextRef = useRef(context);\n\n useEffect(\n function updateContextRef() {\n contextRef.current = context;\n },\n [context]\n );\n\n // Without this, animations are funky when using the move/sort buttons\n // dnd-kit only remeasures on drag/drop by default\n // The context object changes while dragging (items don't)\n // Using the context ref allows this to trigger properly on only items changes\n useEffect(\n function remeasureContainers() {\n contextRef.current.measureDroppableContainers(items.map(({ id }) => id));\n },\n [items]\n );\n\n const projected =\n activeId != null && overId != null\n ? getProjection(items, activeId, overId, offsetLeft, indentationWidth)\n : null;\n const sensorContext: SensorContext = useRef({\n items,\n offset: offsetLeft,\n });\n\n const activeItem =\n activeId != null ? items.find(({ id }) => id === activeId) : null;\n\n useEffect(() => {\n sensorContext.current = {\n items,\n offset: offsetLeft,\n };\n }, [items, offsetLeft]);\n\n return (\n <>\n <div\n className={classNames(\n 'tree-container',\n activeId != null && 'marching-ants'\n )}\n >\n {items.map(item => {\n const { id, depth } = item;\n return (\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 />\n );\n })}\n </div>\n {createPortal(\n <DragOverlay\n dropAnimation={dropAnimationConfig}\n modifiers={[adjustToCursor]}\n className=\"visibility-ordering-list\"\n >\n {activeId != null && activeItem ? (\n <SortableTreeItem\n id={activeId}\n depth={activeItem.depth}\n clone\n childCount={getChildCount(items, activeId) + 1}\n value={activeId.toString()}\n renderItem={renderItem}\n item={activeItem}\n />\n ) : null}\n </DragOverlay>,\n document.body\n )}\n </>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"SortableTreeInner.js","names":["React","useEffect","useRef","createPortal","classNames","DragOverlay","defaultDropAnimation","useDndContext","CSS","getProjection","getChildCount","SortableTreeItem","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","dropAnimationConfig","keyframes","_ref","transform","opacity","Transform","toString","initial","_objectSpread","final","x","y","easing","sideEffects","_ref2","active","node","animate","duration","offsetY","adjustToCursor","args","_offsetY","activeNodeRect","activatorEvent","PointerEvent","Math","floor","clientY","top","height","SortableTreeInner","_ref3","items","renderItem","indentationWidth","indicator","activeId","overId","offsetLeft","context","contextRef","updateContextRef","current","remeasureContainers","measureDroppableContainers","map","_ref4","id","projected","sensorContext","offset","activeItem","find","_ref5","children","className","item","depth","value","dropAnimation","modifiers","clone","childCount","document","body"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport classNames from 'classnames';\nimport {\n DragOverlay,\n type DropAnimation,\n type Modifier,\n defaultDropAnimation,\n useDndContext,\n} from '@dnd-kit/core';\nimport { CSS } from '@dnd-kit/utilities';\nimport { getProjection, getChildCount } from './utilities';\nimport type { FlattenedItem, SensorContext } from './types';\nimport { SortableTreeItem } from './SortableTreeItem';\n\nconst dropAnimationConfig: DropAnimation = {\n keyframes({ transform }) {\n return [\n { opacity: 1, transform: CSS.Transform.toString(transform.initial) },\n {\n opacity: 0,\n transform: CSS.Transform.toString({\n ...transform.final,\n x: transform.final.x + 5,\n y: transform.final.y + 5,\n }),\n },\n ];\n },\n easing: 'ease-out',\n sideEffects({ active }) {\n active.node.animate([{ opacity: 0 }, { opacity: 1 }], {\n duration: defaultDropAnimation.duration,\n easing: defaultDropAnimation.easing,\n });\n },\n};\n\n// Used to track the offset for adjustToCursor\n// Once drag starts, set this. Once it ends, null this\nlet offsetY: number | null = null;\n\n/**\n * This adjusts the transform to move to the cursor if it gets shifted due to multi-select.\n * With multi-select, the selected items (except dragged) are removed on drag.\n * This can cause the overlay item to disconnect from the cursor in some cases.\n * E.g. select first 3 items, start dragging from 3rd item.\n * Without this modifier, the drag overlay will be shifted 60px up from the cursor after the items are removed.\n *\n * This assumes all items are the same height as the dragged item\n * @param args Modifier args from dnd-kit\n * @returns Transform so that the dragged item stays on the cursor\n */\nfunction adjustToCursor(args: Parameters<Modifier>[0]): {\n y: number;\n x: number;\n scaleX: number;\n scaleY: number;\n} {\n if (\n offsetY == null &&\n args.activeNodeRect &&\n args.activatorEvent instanceof PointerEvent\n ) {\n offsetY =\n Math.floor(\n (args.activatorEvent.clientY - args.activeNodeRect.top) /\n args.activeNodeRect.height\n ) * args.activeNodeRect.height;\n }\n\n if (!args.activeNodeRect) {\n offsetY = null;\n }\n\n return { ...args.transform, y: args.transform.y + (offsetY ?? 0) };\n}\n\ninterface Props<T> {\n items: FlattenedItem<T>[];\n indentationWidth?: number;\n indicator?: boolean;\n renderItem: (props: {\n clone: boolean;\n childCount?: number;\n value: string;\n item: FlattenedItem<T>;\n ref: React.Ref<HTMLDivElement>;\n handleProps?: Record<string, unknown>;\n }) => JSX.Element;\n activeId: string | null;\n overId: string | null;\n offsetLeft: number;\n}\n\nexport default function SortableTreeInner<T>({\n items,\n renderItem,\n indentationWidth = 30,\n indicator = false,\n activeId,\n overId,\n offsetLeft,\n}: Props<T>): JSX.Element {\n const context = useDndContext();\n const contextRef = useRef(context);\n\n useEffect(\n function updateContextRef() {\n contextRef.current = context;\n },\n [context]\n );\n\n // Without this, animations are funky when using the move/sort buttons\n // dnd-kit only remeasures on drag/drop by default\n // The context object changes while dragging (items don't)\n // Using the context ref allows this to trigger properly on only items changes\n useEffect(\n function remeasureContainers() {\n contextRef.current.measureDroppableContainers(items.map(({ id }) => id));\n },\n [items]\n );\n\n const projected =\n activeId != null && overId != null\n ? getProjection(items, activeId, overId, offsetLeft, indentationWidth)\n : null;\n const sensorContext: SensorContext = useRef({\n items,\n offset: offsetLeft,\n });\n\n const activeItem =\n activeId != null ? items.find(({ id }) => id === activeId) : null;\n\n useEffect(() => {\n sensorContext.current = {\n items,\n offset: offsetLeft,\n };\n }, [items, offsetLeft]);\n\n return (\n <>\n <div\n className={classNames(\n 'tree-container',\n activeId != null && 'marching-ants'\n )}\n >\n {items.map(item => {\n const { id, depth } = item;\n return (\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 />\n );\n })}\n </div>\n {createPortal(\n <DragOverlay\n dropAnimation={dropAnimationConfig}\n modifiers={[adjustToCursor]}\n className=\"visibility-ordering-list\"\n >\n {activeId != null && activeItem ? (\n <SortableTreeItem\n id={activeId}\n depth={activeItem.depth}\n clone\n childCount={getChildCount(items, activeId) + 1}\n value={activeId.toString()}\n renderItem={renderItem}\n item={activeItem}\n />\n ) : null}\n </DragOverlay>,\n document.body\n )}\n </>\n );\n}\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,YAAY,QAAQ,WAAW;AACxC,OAAOC,UAAU,MAAM,YAAY;AACnC,SACEC,WAAW,EAGXC,oBAAoB,EACpBC,aAAa,QACR,eAAe;AACtB,SAASC,GAAG,QAAQ,oBAAoB;AAAC,SAChCC,aAAa,EAAEC,aAAa;AAAA,SAE5BC,gBAAgB;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,QAAA,IAAAC,SAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAEzB,IAAMC,mBAAkC,GAAG;EACzCC,SAASA,CAAAC,IAAA,EAAgB;IAAA,IAAf;MAAEC;IAAU,CAAC,GAAAD,IAAA;IACrB,OAAO,CACL;MAAEE,OAAO,EAAE,CAAC;MAAED,SAAS,EAAEb,GAAG,CAACe,SAAS,CAACC,QAAQ,CAACH,SAAS,CAACI,OAAO;IAAE,CAAC,EACpE;MACEH,OAAO,EAAE,CAAC;MACVD,SAAS,EAAEb,GAAG,CAACe,SAAS,CAACC,QAAQ,CAAAE,aAAA,CAAAA,aAAA,KAC5BL,SAAS,CAACM,KAAK;QAClBC,CAAC,EAAEP,SAAS,CAACM,KAAK,CAACC,CAAC,GAAG,CAAC;QACxBC,CAAC,EAAER,SAAS,CAACM,KAAK,CAACE,CAAC,GAAG;MAAC,EACzB;IACH,CAAC,CACF;EACH,CAAC;EACDC,MAAM,EAAE,UAAU;EAClBC,WAAWA,CAAAC,KAAA,EAAa;IAAA,IAAZ;MAAEC;IAAO,CAAC,GAAAD,KAAA;IACpBC,MAAM,CAACC,IAAI,CAACC,OAAO,CAAC,CAAC;MAAEb,OAAO,EAAE;IAAE,CAAC,EAAE;MAAEA,OAAO,EAAE;IAAE,CAAC,CAAC,EAAE;MACpDc,QAAQ,EAAE9B,oBAAoB,CAAC8B,QAAQ;MACvCN,MAAM,EAAExB,oBAAoB,CAACwB;IAC/B,CAAC,CAAC;EACJ;AACF,CAAC;;AAED;AACA;AACA,IAAIO,OAAsB,GAAG,IAAI;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,IAA6B,EAKnD;EAAA,IAAAC,QAAA;EACA,IACEH,OAAO,IAAI,IAAI,IACfE,IAAI,CAACE,cAAc,IACnBF,IAAI,CAACG,cAAc,YAAYC,YAAY,EAC3C;IACAN,OAAO,GACLO,IAAI,CAACC,KAAK,CACR,CAACN,IAAI,CAACG,cAAc,CAACI,OAAO,GAAGP,IAAI,CAACE,cAAc,CAACM,GAAG,IACpDR,IAAI,CAACE,cAAc,CAACO,MACxB,CAAC,GAAGT,IAAI,CAACE,cAAc,CAACO,MAAM;EAClC;EAEA,IAAI,CAACT,IAAI,CAACE,cAAc,EAAE;IACxBJ,OAAO,GAAG,IAAI;EAChB;EAEA,OAAAX,aAAA,CAAAA,aAAA,KAAYa,IAAI,CAAClB,SAAS;IAAEQ,CAAC,EAAEU,IAAI,CAAClB,SAAS,CAACQ,CAAC,KAAAW,QAAA,GAAIH,OAAO,cAAAG,QAAA,cAAAA,QAAA,GAAI,CAAC;EAAC;AAClE;AAmBA,eAAe,SAASS,iBAAiBA,CAAAC,KAAA,EAQf;EAAA,IARmB;IAC3CC,KAAK;IACLC,UAAU;IACVC,gBAAgB,GAAG,EAAE;IACrBC,SAAS,GAAG,KAAK;IACjBC,QAAQ;IACRC,MAAM;IACNC;EACQ,CAAC,GAAAP,KAAA;EACT,IAAMQ,OAAO,GAAGnD,aAAa,CAAC,CAAC;EAC/B,IAAMoD,UAAU,GAAGzD,MAAM,CAACwD,OAAO,CAAC;EAElCzD,SAAS,CACP,SAAS2D,gBAAgBA,CAAA,EAAG;IAC1BD,UAAU,CAACE,OAAO,GAAGH,OAAO;EAC9B,CAAC,EACD,CAACA,OAAO,CACV,CAAC;;EAED;EACA;EACA;EACA;EACAzD,SAAS,CACP,SAAS6D,mBAAmBA,CAAA,EAAG;IAC7BH,UAAU,CAACE,OAAO,CAACE,0BAA0B,CAACZ,KAAK,CAACa,GAAG,CAACC,KAAA;MAAA,IAAC;QAAEC;MAAG,CAAC,GAAAD,KAAA;MAAA,OAAKC,EAAE;IAAA,EAAC,CAAC;EAC1E,CAAC,EACD,CAACf,KAAK,CACR,CAAC;EAED,IAAMgB,SAAS,GACbZ,QAAQ,IAAI,IAAI,IAAIC,MAAM,IAAI,IAAI,GAC9B/C,aAAa,CAAC0C,KAAK,EAAEI,QAAQ,EAAEC,MAAM,EAAEC,UAAU,EAAEJ,gBAAgB,CAAC,GACpE,IAAI;EACV,IAAMe,aAA4B,GAAGlE,MAAM,CAAC;IAC1CiD,KAAK;IACLkB,MAAM,EAAEZ;EACV,CAAC,CAAC;EAEF,IAAMa,UAAU,GACdf,QAAQ,IAAI,IAAI,GAAGJ,KAAK,CAACoB,IAAI,CAACC,KAAA;IAAA,IAAC;MAAEN;IAAG,CAAC,GAAAM,KAAA;IAAA,OAAKN,EAAE,KAAKX,QAAQ;EAAA,EAAC,GAAG,IAAI;EAEnEtD,SAAS,CAAC,MAAM;IACdmE,aAAa,CAACP,OAAO,GAAG;MACtBV,KAAK;MACLkB,MAAM,EAAEZ;IACV,CAAC;EACH,CAAC,EAAE,CAACN,KAAK,EAAEM,UAAU,CAAC,CAAC;EAEvB,oBACExC,KAAA,CAAAF,SAAA;IAAA0D,QAAA,gBACE5D,IAAA;MACE6D,SAAS,EAAEtE,UAAU,CACnB,gBAAgB,EAChBmD,QAAQ,IAAI,IAAI,IAAI,eACtB,CAAE;MAAAkB,QAAA,EAEDtB,KAAK,CAACa,GAAG,CAACW,IAAI,IAAI;QACjB,IAAM;UAAET,EAAE;UAAEU;QAAM,CAAC,GAAGD,IAAI;QAC1B,oBACE9D,IAAA,CAACF,gBAAgB;UAEfuD,EAAE,EAAEA,EAAG;UACPW,KAAK,EAAEX,EAAG;UACVU,KAAK,EAAEV,EAAE,KAAKX,QAAQ,IAAIY,SAAS,GAAGA,SAAS,CAACS,KAAK,GAAGA,KAAM;UAC9DD,IAAI,EAAEA,IAAK;UACXvB,UAAU,EAAEA;QAAW,GALlBc,EAMN,CAAC;MAEN,CAAC;IAAC,CACC,CAAC,eACL/D,YAAY,eACXU,IAAA,CAACR,WAAW;MACVyE,aAAa,EAAE5D,mBAAoB;MACnC6D,SAAS,EAAE,CAACzC,cAAc,CAAE;MAC5BoC,SAAS,EAAC,0BAA0B;MAAAD,QAAA,EAEnClB,QAAQ,IAAI,IAAI,IAAIe,UAAU,gBAC7BzD,IAAA,CAACF,gBAAgB;QACfuD,EAAE,EAAEX,QAAS;QACbqB,KAAK,EAAEN,UAAU,CAACM,KAAM;QACxBI,KAAK;QACLC,UAAU,EAAEvE,aAAa,CAACyC,KAAK,EAAEI,QAAQ,CAAC,GAAG,CAAE;QAC/CsB,KAAK,EAAEtB,QAAQ,CAAC/B,QAAQ,CAAC,CAAE;QAC3B4B,UAAU,EAAEA,UAAW;QACvBuB,IAAI,EAAEL;MAAW,CAClB,CAAC,GACA;IAAI,CACG,CAAC,EACdY,QAAQ,CAACC,IACX,CAAC;EAAA,CACD,CAAC;AAEP"}
@@ -1,4 +1,4 @@
1
- import { Props as TreeItemProps } from './TreeItem';
1
+ import { type Props as TreeItemProps } from './TreeItem';
2
2
  export interface Props<T> extends Omit<TreeItemProps<T>, 'style'> {
3
3
  id: string;
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SortableTreeItem.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,KAAK,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAC/D,EAAE,EAAE,MAAM,CAAC;CACZ;AAOD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,EAClC,EAAE,EACF,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CA8CxB"}
1
+ {"version":3,"file":"SortableTreeItem.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,KAAK,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,WAAW,KAAK,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAC/D,EAAE,EAAE,MAAM,CAAC;CACZ;AAOD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,EAClC,EAAE,EACF,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CA8CxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SortableTreeItem.js","names":["React","useMemo","useSortable","CSS","TreeItem","jsx","_jsx","animateLayoutChanges","_ref","isSorting","wasDragging","SortableTreeItem","_ref2","id","depth","props","_objectWithoutProperties","_excluded","attributes","isDragging","listeners","setDraggableNodeRef","setDroppableNodeRef","transform","transition","transformString","Translate","toString","style","handleProps","_objectSpread","dragRef","wrapperRef","ghost","disableInteraction"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.tsx"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport React, { CSSProperties, useMemo } from 'react';\nimport { AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { TreeItem, Props as TreeItemProps } from './TreeItem';\n\nexport interface Props<T> extends Omit<TreeItemProps<T>, 'style'> {\n id: string;\n}\n\nconst animateLayoutChanges: AnimateLayoutChanges = ({\n isSorting,\n wasDragging,\n}) => !(isSorting || wasDragging);\n\nexport function SortableTreeItem<T>({\n id,\n depth,\n ...props\n}: Props<T>): JSX.Element {\n const {\n attributes,\n isDragging,\n isSorting,\n listeners,\n setDraggableNodeRef,\n setDroppableNodeRef,\n transform,\n transition,\n } = useSortable({\n id,\n animateLayoutChanges,\n });\n\n const transformString = CSS.Translate.toString(transform);\n\n const style: CSSProperties = useMemo(\n () => ({\n transform: transformString,\n transition,\n }),\n [transformString, transition]\n );\n\n const handleProps = useMemo(\n () => ({\n ...attributes,\n ...listeners,\n style,\n }),\n [attributes, listeners, style]\n );\n\n return (\n <TreeItem\n dragRef={setDraggableNodeRef}\n wrapperRef={setDroppableNodeRef}\n depth={depth}\n ghost={isDragging}\n disableInteraction={isSorting}\n handleProps={handleProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n"],"mappings":";;;;;;;;AAAA;AACA,OAAOA,KAAK,IAAmBC,OAAO,QAAQ,OAAO;AACrD,SAA+BC,WAAW,QAAQ,mBAAmB;AACrE,SAASC,GAAG,QAAQ,oBAAoB;AAAC,SAChCC,QAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAMjB,IAAMC,oBAA0C,GAAGC,IAAA;EAAA,IAAC;IAClDC,SAAS;IACTC;EACF,CAAC,GAAAF,IAAA;EAAA,OAAK,EAAEC,SAAS,IAAIC,WAAW,CAAC;AAAA;AAEjC,OAAO,SAASC,gBAAgBA,CAAAC,KAAA,EAIN;EAAA,IAJU;MAClCC,EAAE;MACFC;IAEQ,CAAC,GAAAF,KAAA;IADNG,KAAK,GAAAC,wBAAA,CAAAJ,KAAA,EAAAK,SAAA;EAER,IAAM;IACJC,UAAU;IACVC,UAAU;IACVV,SAAS;IACTW,SAAS;IACTC,mBAAmB;IACnBC,mBAAmB;IACnBC,SAAS;IACTC;EACF,CAAC,GAAGtB,WAAW,CAAC;IACdW,EAAE;IACFN;EACF,CAAC,CAAC;EAEF,IAAMkB,eAAe,GAAGtB,GAAG,CAACuB,SAAS,CAACC,QAAQ,CAACJ,SAAS,CAAC;EAEzD,IAAMK,KAAoB,GAAG3B,OAAO,CAClC,OAAO;IACLsB,SAAS,EAAEE,eAAe;IAC1BD;EACF,CAAC,CAAC,EACF,CAACC,eAAe,EAAED,UAAU,CAC9B,CAAC;EAED,IAAMK,WAAW,GAAG5B,OAAO,CACzB,MAAA6B,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACKZ,UAAU,GACVE,SAAS;IACZQ;EAAK,EACL,EACF,CAACV,UAAU,EAAEE,SAAS,EAAEQ,KAAK,CAC/B,CAAC;EAED,oBACEtB,IAAA,CAACF,QAAQ,EAAA0B,aAAA;IACPC,OAAO,EAAEV,mBAAoB;IAC7BW,UAAU,EAAEV,mBAAoB;IAChCR,KAAK,EAAEA,KAAM;IACbmB,KAAK,EAAEd,UAAW;IAClBe,kBAAkB,EAAEzB,SAAU;IAC9BoB,WAAW,EAAEA;IACb;EAAA,GACId,KAAK,CACV,CAAC;AAEN"}
1
+ {"version":3,"file":"SortableTreeItem.js","names":["React","useMemo","useSortable","CSS","TreeItem","jsx","_jsx","animateLayoutChanges","_ref","isSorting","wasDragging","SortableTreeItem","_ref2","id","depth","props","_objectWithoutProperties","_excluded","attributes","isDragging","listeners","setDraggableNodeRef","setDroppableNodeRef","transform","transition","transformString","Translate","toString","style","handleProps","_objectSpread","dragRef","wrapperRef","ghost","disableInteraction"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.tsx"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport React, { type CSSProperties, useMemo } from 'react';\nimport { type AnimateLayoutChanges, useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { TreeItem, type Props as TreeItemProps } from './TreeItem';\n\nexport interface Props<T> extends Omit<TreeItemProps<T>, 'style'> {\n id: string;\n}\n\nconst animateLayoutChanges: AnimateLayoutChanges = ({\n isSorting,\n wasDragging,\n}) => !(isSorting || wasDragging);\n\nexport function SortableTreeItem<T>({\n id,\n depth,\n ...props\n}: Props<T>): JSX.Element {\n const {\n attributes,\n isDragging,\n isSorting,\n listeners,\n setDraggableNodeRef,\n setDroppableNodeRef,\n transform,\n transition,\n } = useSortable({\n id,\n animateLayoutChanges,\n });\n\n const transformString = CSS.Translate.toString(transform);\n\n const style: CSSProperties = useMemo(\n () => ({\n transform: transformString,\n transition,\n }),\n [transformString, transition]\n );\n\n const handleProps = useMemo(\n () => ({\n ...attributes,\n ...listeners,\n style,\n }),\n [attributes, listeners, style]\n );\n\n return (\n <TreeItem\n dragRef={setDraggableNodeRef}\n wrapperRef={setDroppableNodeRef}\n depth={depth}\n ghost={isDragging}\n disableInteraction={isSorting}\n handleProps={handleProps}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n}\n"],"mappings":";;;;;;;;AAAA;AACA,OAAOA,KAAK,IAAwBC,OAAO,QAAQ,OAAO;AAC1D,SAAoCC,WAAW,QAAQ,mBAAmB;AAC1E,SAASC,GAAG,QAAQ,oBAAoB;AAAC,SAChCC,QAAQ;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAMjB,IAAMC,oBAA0C,GAAGC,IAAA;EAAA,IAAC;IAClDC,SAAS;IACTC;EACF,CAAC,GAAAF,IAAA;EAAA,OAAK,EAAEC,SAAS,IAAIC,WAAW,CAAC;AAAA;AAEjC,OAAO,SAASC,gBAAgBA,CAAAC,KAAA,EAIN;EAAA,IAJU;MAClCC,EAAE;MACFC;IAEQ,CAAC,GAAAF,KAAA;IADNG,KAAK,GAAAC,wBAAA,CAAAJ,KAAA,EAAAK,SAAA;EAER,IAAM;IACJC,UAAU;IACVC,UAAU;IACVV,SAAS;IACTW,SAAS;IACTC,mBAAmB;IACnBC,mBAAmB;IACnBC,SAAS;IACTC;EACF,CAAC,GAAGtB,WAAW,CAAC;IACdW,EAAE;IACFN;EACF,CAAC,CAAC;EAEF,IAAMkB,eAAe,GAAGtB,GAAG,CAACuB,SAAS,CAACC,QAAQ,CAACJ,SAAS,CAAC;EAEzD,IAAMK,KAAoB,GAAG3B,OAAO,CAClC,OAAO;IACLsB,SAAS,EAAEE,eAAe;IAC1BD;EACF,CAAC,CAAC,EACF,CAACC,eAAe,EAAED,UAAU,CAC9B,CAAC;EAED,IAAMK,WAAW,GAAG5B,OAAO,CACzB,MAAA6B,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACKZ,UAAU,GACVE,SAAS;IACZQ;EAAK,EACL,EACF,CAACV,UAAU,EAAEE,SAAS,EAAEQ,KAAK,CAC/B,CAAC;EAED,oBACEtB,IAAA,CAACF,QAAQ,EAAA0B,aAAA;IACPC,OAAO,EAAEV,mBAAoB;IAC7BW,UAAU,EAAEV,mBAAoB;IAChCR,KAAK,EAAEA,KAAM;IACbmB,KAAK,EAAEd,UAAW;IAClBe,kBAAkB,EAAEzB,SAAU;IAC9BoB,WAAW,EAAEA;IACb;EAAA,GACId,KAAK,CACV,CAAC;AAEN"}
@@ -1,4 +1,4 @@
1
- import { KeyboardCoordinateGetter } from '@dnd-kit/core';
1
+ import { type KeyboardCoordinateGetter } from '@dnd-kit/core';
2
2
  import type { SensorContext } from './types';
3
3
  export declare function sortableTreeKeyboardCoordinates(context: SensorContext, indicator: boolean, indentationWidth: number): KeyboardCoordinateGetter;
4
4
  //# sourceMappingURL=keyboardCoordinates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboardCoordinates.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,wBAAwB,EAEzB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,OAAO,EAClB,gBAAgB,EAAE,MAAM,GACvB,wBAAwB,CAsI1B"}
1
+ {"version":3,"file":"keyboardCoordinates.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,wBAAwB,EAE9B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,OAAO,EAClB,gBAAgB,EAAE,MAAM,GACvB,wBAAwB,CAsI1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"keyboardCoordinates.js","names":["closestCorners","getFirstCollision","KeyboardCode","getProjection","DIRECTIONS","Down","Right","Up","Left","HORIZONTAL","sortableTreeKeyboardCoordinates","context","indicator","indentationWidth","event","_ref","currentCoordinates","active","over","collisionRect","droppableRects","droppableContainers","includes","code","preventDefault","current","items","offset","id","depth","maxDepth","minDepth","_objectSpread","x","undefined","containers","forEach","container","disabled","rect","get","top","push","collisions","pointerCoordinates","closestId","length","activeRect","newRect","newDroppable","newIndex","findIndex","_ref2","newItem","activeIndex","_ref3","activeItem","isBelow","modifier","nextOffset","height","newCoordinates","left","y"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport {\n closestCorners,\n getFirstCollision,\n KeyboardCode,\n KeyboardCoordinateGetter,\n DroppableContainer,\n} from '@dnd-kit/core';\nimport type { SensorContext } from './types';\nimport { getProjection } from './utilities';\n\nconst DIRECTIONS: string[] = [\n KeyboardCode.Down,\n KeyboardCode.Right,\n KeyboardCode.Up,\n KeyboardCode.Left,\n];\n\nconst HORIZONTAL: string[] = [KeyboardCode.Left, KeyboardCode.Right];\n\nexport function sortableTreeKeyboardCoordinates(\n context: SensorContext,\n indicator: boolean,\n indentationWidth: number\n): KeyboardCoordinateGetter {\n return (\n event,\n {\n currentCoordinates,\n context: {\n active,\n over,\n collisionRect,\n droppableRects,\n droppableContainers,\n },\n }\n ) => {\n if (DIRECTIONS.includes(event.code)) {\n if (!active || !collisionRect) {\n return;\n }\n\n event.preventDefault();\n\n const {\n current: { items, offset },\n } = context;\n\n if (HORIZONTAL.includes(event.code) && over?.id != null) {\n const { depth, maxDepth, minDepth } = getProjection(\n items,\n active.id as string,\n over.id as string,\n offset,\n indentationWidth\n );\n\n switch (event.code) {\n case KeyboardCode.Left:\n if (depth > minDepth) {\n return {\n ...currentCoordinates,\n x: currentCoordinates.x - indentationWidth,\n };\n }\n break;\n case KeyboardCode.Right:\n if (depth < maxDepth) {\n return {\n ...currentCoordinates,\n x: currentCoordinates.x + indentationWidth,\n };\n }\n break;\n }\n\n return undefined;\n }\n\n const containers: DroppableContainer[] = [];\n\n droppableContainers.forEach(container => {\n if (container?.disabled || container.id === over?.id) {\n return;\n }\n\n const rect = droppableRects.get(container.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n containers.push(container);\n }\n break;\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n containers.push(container);\n }\n break;\n }\n });\n\n const collisions = closestCorners({\n active,\n collisionRect,\n pointerCoordinates: null,\n droppableRects,\n droppableContainers: containers,\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === over?.id && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null && over?.id != null) {\n const activeRect = droppableRects.get(active.id);\n const newRect = droppableRects.get(closestId);\n const newDroppable = droppableContainers.get(closestId);\n\n if (activeRect && newRect && newDroppable) {\n const newIndex = items.findIndex(({ id }) => id === closestId);\n const newItem = items[newIndex];\n const activeIndex = items.findIndex(({ id }) => id === active.id);\n const activeItem = items[activeIndex];\n\n if (newItem != null && activeItem != null) {\n const { depth } = getProjection(\n items,\n active.id as string,\n closestId as string,\n (newItem.depth - activeItem.depth) * indentationWidth,\n indentationWidth\n );\n const isBelow = newIndex > activeIndex;\n const modifier = isBelow ? 1 : -1;\n const nextOffset = indicator\n ? (collisionRect.height - activeRect.height) / 2\n : 0;\n\n const newCoordinates = {\n x: newRect.left + depth * indentationWidth,\n y: newRect.top + modifier * nextOffset,\n };\n\n return newCoordinates;\n }\n }\n }\n }\n\n return undefined;\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"keyboardCoordinates.js","names":["closestCorners","getFirstCollision","KeyboardCode","getProjection","DIRECTIONS","Down","Right","Up","Left","HORIZONTAL","sortableTreeKeyboardCoordinates","context","indicator","indentationWidth","event","_ref","currentCoordinates","active","over","collisionRect","droppableRects","droppableContainers","includes","code","preventDefault","current","items","offset","id","depth","maxDepth","minDepth","_objectSpread","x","undefined","containers","forEach","container","disabled","rect","get","top","push","collisions","pointerCoordinates","closestId","length","activeRect","newRect","newDroppable","newIndex","findIndex","_ref2","newItem","activeIndex","_ref3","activeItem","isBelow","modifier","nextOffset","height","newCoordinates","left","y"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport {\n closestCorners,\n getFirstCollision,\n KeyboardCode,\n type KeyboardCoordinateGetter,\n type DroppableContainer,\n} from '@dnd-kit/core';\nimport type { SensorContext } from './types';\nimport { getProjection } from './utilities';\n\nconst DIRECTIONS: string[] = [\n KeyboardCode.Down,\n KeyboardCode.Right,\n KeyboardCode.Up,\n KeyboardCode.Left,\n];\n\nconst HORIZONTAL: string[] = [KeyboardCode.Left, KeyboardCode.Right];\n\nexport function sortableTreeKeyboardCoordinates(\n context: SensorContext,\n indicator: boolean,\n indentationWidth: number\n): KeyboardCoordinateGetter {\n return (\n event,\n {\n currentCoordinates,\n context: {\n active,\n over,\n collisionRect,\n droppableRects,\n droppableContainers,\n },\n }\n ) => {\n if (DIRECTIONS.includes(event.code)) {\n if (!active || !collisionRect) {\n return;\n }\n\n event.preventDefault();\n\n const {\n current: { items, offset },\n } = context;\n\n if (HORIZONTAL.includes(event.code) && over?.id != null) {\n const { depth, maxDepth, minDepth } = getProjection(\n items,\n active.id as string,\n over.id as string,\n offset,\n indentationWidth\n );\n\n switch (event.code) {\n case KeyboardCode.Left:\n if (depth > minDepth) {\n return {\n ...currentCoordinates,\n x: currentCoordinates.x - indentationWidth,\n };\n }\n break;\n case KeyboardCode.Right:\n if (depth < maxDepth) {\n return {\n ...currentCoordinates,\n x: currentCoordinates.x + indentationWidth,\n };\n }\n break;\n }\n\n return undefined;\n }\n\n const containers: DroppableContainer[] = [];\n\n droppableContainers.forEach(container => {\n if (container?.disabled || container.id === over?.id) {\n return;\n }\n\n const rect = droppableRects.get(container.id);\n\n if (!rect) {\n return;\n }\n\n switch (event.code) {\n case KeyboardCode.Down:\n if (collisionRect.top < rect.top) {\n containers.push(container);\n }\n break;\n case KeyboardCode.Up:\n if (collisionRect.top > rect.top) {\n containers.push(container);\n }\n break;\n }\n });\n\n const collisions = closestCorners({\n active,\n collisionRect,\n pointerCoordinates: null,\n droppableRects,\n droppableContainers: containers,\n });\n let closestId = getFirstCollision(collisions, 'id');\n\n if (closestId === over?.id && collisions.length > 1) {\n closestId = collisions[1].id;\n }\n\n if (closestId != null && over?.id != null) {\n const activeRect = droppableRects.get(active.id);\n const newRect = droppableRects.get(closestId);\n const newDroppable = droppableContainers.get(closestId);\n\n if (activeRect && newRect && newDroppable) {\n const newIndex = items.findIndex(({ id }) => id === closestId);\n const newItem = items[newIndex];\n const activeIndex = items.findIndex(({ id }) => id === active.id);\n const activeItem = items[activeIndex];\n\n if (newItem != null && activeItem != null) {\n const { depth } = getProjection(\n items,\n active.id as string,\n closestId as string,\n (newItem.depth - activeItem.depth) * indentationWidth,\n indentationWidth\n );\n const isBelow = newIndex > activeIndex;\n const modifier = isBelow ? 1 : -1;\n const nextOffset = indicator\n ? (collisionRect.height - activeRect.height) / 2\n : 0;\n\n const newCoordinates = {\n x: newRect.left + depth * indentationWidth,\n y: newRect.top + modifier * nextOffset,\n };\n\n return newCoordinates;\n }\n }\n }\n }\n\n return undefined;\n };\n}\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { dh } from '@deephaven/jsapi-types';
2
- import { ModelIndex, MoveOperation } from '@deephaven/grid';
2
+ import { type ModelIndex, type MoveOperation } from '@deephaven/grid';
3
3
  import type ColumnHeaderGroup from '../../../ColumnHeaderGroup';
4
- import { ReadonlyTreeItems } from './types';
4
+ import { type ReadonlyTreeItems } from './types';
5
5
  import type { FlattenedItem, TreeItem } from './types';
6
6
  interface IrisGridTreeItemData {
7
7
  modelIndex: number | number[];
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAa,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAuB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAavD,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE9D,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAgE5E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,EAC7B,YAAY,EAAE,SAAS,aAAa,EAAE,EACtC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,EAChD,aAAa,EAAE,SAAS,UAAU,EAAE,EACpC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,gBAAgB,EAAE,CAuCpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,GACvB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CA4CA;AA+CD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,CAAC,EAAE,CAMpB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,QAAQ,GAAG,SAAS,CAmBtB;AAYD,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EACzB,GAAG,EAAE,MAAM,EAAE,GACZ,aAAa,CAAC,CAAC,CAAC,EAAE,CAapB"}
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,iBAAiB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAavD,UAAU,oBAAoB;IAC5B,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE9D,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAgE5E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,EAC7B,YAAY,EAAE,SAAS,aAAa,EAAE,EACtC,kBAAkB,EAAE,SAAS,iBAAiB,EAAE,EAChD,aAAa,EAAE,SAAS,UAAU,EAAE,EACpC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,gBAAgB,EAAE,CAuCpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,aAAa,EAAE,EACtB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,GACvB;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CA4CA;AA+CD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC1B,aAAa,CAAC,CAAC,CAAC,EAAE,CAMpB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,MAAM,GACb,QAAQ,GAAG,SAAS,CAmBtB;AAYD,wBAAgB,aAAa,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EACzB,GAAG,EAAE,MAAM,EAAE,GACZ,aAAa,CAAC,CAAC,CAAC,EAAE,CAapB"}
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","names":["arrayMove","GridUtils","isFlattenedTreeItem","getDragDepth","offset","indentationWidth","Math","round","getTreeItem","columns","movedColumns","columnHeaderGroupMap","name","hiddenColumnSet","selectedItems","modelIndex","findIndex","col","group","get","Error","concat","modelIndexes","childIndexes","flat","id","selected","has","children","map","childName","sort","a","b","aVal","Array","isArray","data","visibleIndex","bVal","getVisibleRange","isVisible","some","index","getVisibleIndex","getTreeItems","columnHeaderGroups","hiddenColumns","items","selectedItemsSet","Set","groupMap","Map","_loop","getModelIndex","columnName","find","_ref","includes","undefined","parent","item","push","length","getProjection","activeId","overId","dragOffset","overItemIndex","_ref2","activeItemIndex","_ref3","activeItem","newItems","previousItem","nextItem","dragDepth","projectedDepth","depth","maxDepth","getMaxDepth","minDepth","getMinDepth","parentId","getParentId","_newItems$slice$rever","newParent","slice","reverse","_ref4","_previousItem$depth","_nextItem$depth","max","_ref5","flatten","arguments","reduce","acc","_objectSpread","flattenTree","every","findItemDeep","itemId","i","child","countChildren","count","_ref6","getChildCount","removeChildrenOf","ids","excludeParentIds","filter","add"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/utilities.ts"],"sourcesContent":["import { arrayMove } from '@dnd-kit/sortable';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { GridUtils, ModelIndex, MoveOperation } from '@deephaven/grid';\nimport type ColumnHeaderGroup from '../../../ColumnHeaderGroup';\nimport { isFlattenedTreeItem, ReadonlyTreeItems } from './types';\nimport type { FlattenedItem, TreeItem } from './types';\n\n/**\n * Gets the depth of an item dragged with a given x-axis offset\n *\n * @param offset x-axis offset of the dragging item\n * @param indentationWidth Width of indentation for each depth\n * @returns The drag depth for the given offset\n */\nfunction getDragDepth(offset: number, indentationWidth: number): number {\n return Math.round(offset / indentationWidth);\n}\n\ninterface IrisGridTreeItemData {\n modelIndex: number | number[];\n visibleIndex: number | [number, number];\n isVisible: boolean;\n group?: ColumnHeaderGroup;\n}\n\nexport type IrisGridTreeItem = TreeItem<IrisGridTreeItemData>;\n\nexport type FlattenedIrisGridTreeItem = FlattenedItem<IrisGridTreeItemData>;\n\nfunction getTreeItem(\n columns: readonly dh.Column[],\n movedColumns: readonly MoveOperation[],\n columnHeaderGroupMap: Map<string, ColumnHeaderGroup>,\n name: string,\n hiddenColumnSet: Set<ModelIndex>,\n selectedItems: Set<string>\n): IrisGridTreeItem {\n const modelIndex = columns.findIndex(col => col.name === name);\n if (modelIndex === -1) {\n const group = columnHeaderGroupMap.get(name);\n\n if (group == null) {\n throw new Error(`Column or header group not found: ${name}`);\n }\n\n const modelIndexes = group.childIndexes.flat();\n\n return {\n id: name,\n selected: selectedItems.has(name),\n children: group.children\n .map(childName =>\n getTreeItem(\n columns,\n movedColumns,\n columnHeaderGroupMap,\n childName,\n hiddenColumnSet,\n selectedItems\n )\n )\n .sort((a, b) => {\n const aVal = Array.isArray(a.data.visibleIndex)\n ? a.data.visibleIndex[0]\n : a.data.visibleIndex;\n const bVal = Array.isArray(b.data.visibleIndex)\n ? b.data.visibleIndex[0]\n : b.data.visibleIndex;\n return aVal - bVal;\n }),\n data: {\n modelIndex: modelIndexes,\n visibleIndex: group.getVisibleRange(movedColumns),\n group,\n isVisible: modelIndexes.some(index => !hiddenColumnSet.has(index)),\n },\n };\n }\n\n return {\n id: name,\n children: [],\n selected: selectedItems.has(name),\n data: {\n modelIndex,\n visibleIndex: GridUtils.getVisibleIndex(modelIndex, movedColumns),\n isVisible: !hiddenColumnSet.has(modelIndex),\n },\n };\n}\n\nexport function getTreeItems(\n columns: readonly dh.Column[],\n movedColumns: readonly MoveOperation[],\n columnHeaderGroups: readonly ColumnHeaderGroup[],\n hiddenColumns: readonly ModelIndex[],\n selectedItems: readonly string[]\n): IrisGridTreeItem[] {\n const items: IrisGridTreeItem[] = [];\n const selectedItemsSet = new Set(selectedItems);\n const groupMap = new Map(\n columnHeaderGroups.map(group => [group.name, group])\n );\n const hiddenColumnSet = new Set(hiddenColumns);\n\n let visibleIndex = 0;\n while (visibleIndex < columns.length) {\n const modelIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);\n const columnName = columns[modelIndex].name;\n\n let group = columnHeaderGroups.find(({ children }) =>\n children.includes(columnName)\n );\n while (group !== undefined && group.parent !== undefined) {\n group = groupMap.get(group.parent);\n }\n\n const item = getTreeItem(\n columns,\n movedColumns,\n groupMap,\n group ? group.name : columnName,\n hiddenColumnSet,\n selectedItemsSet\n );\n\n items.push(item);\n\n if (Array.isArray(item.data.visibleIndex)) {\n visibleIndex += item.data.visibleIndex[1] - item.data.visibleIndex[0] + 1;\n } else {\n visibleIndex += 1;\n }\n }\n\n return items;\n}\n\n/**\n * Gets the projected drop position and depth of the dragged item\n *\n * @param items List of flattened items\n * @param activeId ID of the actively dragged item\n * @param overId ID of the item currently being dragged over\n * @param dragOffset The x-axis offset of the dragged item\n * @param indentationWidth The width for each level of the tree\n * @returns The projected position and depth if the item were to be dropped\n */\nexport function getProjection(\n items: FlattenedItem[],\n activeId: string,\n overId: string,\n dragOffset: number,\n indentationWidth: number\n): {\n depth: number;\n maxDepth: number;\n minDepth: number;\n parentId: string | null;\n} {\n const overItemIndex = items.findIndex(({ id }) => id === overId);\n const activeItemIndex = items.findIndex(({ id }) => id === activeId);\n const activeItem = items[activeItemIndex];\n const newItems = arrayMove(items, activeItemIndex, overItemIndex);\n const previousItem: FlattenedItem | undefined = newItems[overItemIndex - 1];\n const nextItem = newItems[overItemIndex + 1];\n const dragDepth = getDragDepth(dragOffset, indentationWidth);\n const projectedDepth = activeItem.depth + dragDepth;\n const maxDepth = getMaxDepth({\n previousItem,\n nextItem,\n });\n const minDepth = getMinDepth({ nextItem });\n let depth = projectedDepth;\n\n if (projectedDepth >= maxDepth) {\n depth = maxDepth;\n } else if (projectedDepth < minDepth) {\n depth = minDepth;\n }\n\n return { depth, maxDepth, minDepth, parentId: getParentId() };\n\n function getParentId(): string | null {\n if (depth === 0 || !previousItem) {\n return null;\n }\n\n if (depth === previousItem.depth) {\n return previousItem.parentId;\n }\n\n if (depth > previousItem.depth) {\n return previousItem.id;\n }\n\n const newParent = newItems\n .slice(0, overItemIndex)\n .reverse()\n .find(item => item.depth === depth)?.parentId;\n\n return newParent ?? null;\n }\n}\n\nfunction getMaxDepth({\n previousItem,\n nextItem,\n}: {\n previousItem?: FlattenedItem;\n nextItem?: FlattenedItem;\n}): number {\n return Math.max(previousItem?.depth ?? 0, nextItem?.depth ?? 0);\n}\n\nfunction getMinDepth({\n nextItem,\n}: {\n nextItem: FlattenedItem | undefined;\n}): number {\n if (nextItem) {\n return nextItem.depth;\n }\n\n return 0;\n}\n\n/**\n * Helper function to recursively flatten a tree\n *\n * @param items Items to flatten\n * @param parentId The current parentId of the items\n * @param depth The current depth of the items\n * @returns Flattened items\n */\nfunction flatten<T>(\n items: ReadonlyTreeItems<T>,\n parentId: string | null = null,\n depth = 0\n): FlattenedItem<T>[] {\n return items.reduce<FlattenedItem<T>[]>(\n (acc, item, index) => [\n ...acc,\n { ...item, parentId, depth, index },\n ...flatten(item.children, item.id, depth + 1),\n ],\n []\n );\n}\n\n/**\n * Flattens a tree into a 1D array given the items\n * @param items The tree items to flatten\n * @returns The flattened tree items list\n */\nexport function flattenTree<T>(\n items: ReadonlyTreeItems<T>\n): FlattenedItem<T>[] {\n // Should help prevent double flattening since FlattenedItems are valid TreeItems\n if (items.every(isFlattenedTreeItem)) {\n return [...items];\n }\n return flatten(items);\n}\n\n/**\n * Recursively checks for the item in a list of items.\n * The list does not have to be flattened prior to searching.\n *\n * @param items Items to search\n * @param itemId Item to find\n * @returns The item if found\n */\nexport function findItemDeep(\n items: ReadonlyTreeItems,\n itemId: string\n): TreeItem | undefined {\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { id, children } = item;\n\n if (id === itemId) {\n return item;\n }\n\n if (children.length) {\n const child = findItemDeep(children, itemId);\n\n if (child) {\n return child;\n }\n }\n }\n\n return undefined;\n}\n\nfunction countChildren(items: TreeItem[], count = 0): number {\n return items.reduce((acc, { children }) => {\n if (children.length) {\n return countChildren(children, acc + 1);\n }\n\n return acc + 1;\n }, count);\n}\n\nexport function getChildCount(items: ReadonlyTreeItems, id: string): number {\n const item = findItemDeep(items, id);\n\n return item ? countChildren(item.children) : 0;\n}\n\n/**\n * Removes the children of the list of parents from the list of flattened items\n *\n * @param items The flattened items to remove from\n * @param ids The parents we want to remove the children of\n * @returns The flattened items without the children of the parents\n */\nexport function removeChildrenOf<T>(\n items: FlattenedItem<T>[],\n ids: string[]\n): FlattenedItem<T>[] {\n const excludeParentIds = new Set(ids);\n\n return items.filter(item => {\n if (item.parentId != null && excludeParentIds.has(item.parentId)) {\n if (item.children.length) {\n excludeParentIds.add(item.id);\n }\n return false;\n }\n\n return true;\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"utilities.js","names":["arrayMove","GridUtils","isFlattenedTreeItem","getDragDepth","offset","indentationWidth","Math","round","getTreeItem","columns","movedColumns","columnHeaderGroupMap","name","hiddenColumnSet","selectedItems","modelIndex","findIndex","col","group","get","Error","concat","modelIndexes","childIndexes","flat","id","selected","has","children","map","childName","sort","a","b","aVal","Array","isArray","data","visibleIndex","bVal","getVisibleRange","isVisible","some","index","getVisibleIndex","getTreeItems","columnHeaderGroups","hiddenColumns","items","selectedItemsSet","Set","groupMap","Map","_loop","getModelIndex","columnName","find","_ref","includes","undefined","parent","item","push","length","getProjection","activeId","overId","dragOffset","overItemIndex","_ref2","activeItemIndex","_ref3","activeItem","newItems","previousItem","nextItem","dragDepth","projectedDepth","depth","maxDepth","getMaxDepth","minDepth","getMinDepth","parentId","getParentId","_newItems$slice$rever","newParent","slice","reverse","_ref4","_previousItem$depth","_nextItem$depth","max","_ref5","flatten","arguments","reduce","acc","_objectSpread","flattenTree","every","findItemDeep","itemId","i","child","countChildren","count","_ref6","getChildCount","removeChildrenOf","ids","excludeParentIds","filter","add"],"sources":["../../../../src/sidebar/visibility-ordering-builder/sortable-tree/utilities.ts"],"sourcesContent":["import { arrayMove } from '@dnd-kit/sortable';\nimport type { dh } from '@deephaven/jsapi-types';\nimport {\n GridUtils,\n type ModelIndex,\n type MoveOperation,\n} from '@deephaven/grid';\nimport type ColumnHeaderGroup from '../../../ColumnHeaderGroup';\nimport { isFlattenedTreeItem, type ReadonlyTreeItems } from './types';\nimport type { FlattenedItem, TreeItem } from './types';\n\n/**\n * Gets the depth of an item dragged with a given x-axis offset\n *\n * @param offset x-axis offset of the dragging item\n * @param indentationWidth Width of indentation for each depth\n * @returns The drag depth for the given offset\n */\nfunction getDragDepth(offset: number, indentationWidth: number): number {\n return Math.round(offset / indentationWidth);\n}\n\ninterface IrisGridTreeItemData {\n modelIndex: number | number[];\n visibleIndex: number | [number, number];\n isVisible: boolean;\n group?: ColumnHeaderGroup;\n}\n\nexport type IrisGridTreeItem = TreeItem<IrisGridTreeItemData>;\n\nexport type FlattenedIrisGridTreeItem = FlattenedItem<IrisGridTreeItemData>;\n\nfunction getTreeItem(\n columns: readonly dh.Column[],\n movedColumns: readonly MoveOperation[],\n columnHeaderGroupMap: Map<string, ColumnHeaderGroup>,\n name: string,\n hiddenColumnSet: Set<ModelIndex>,\n selectedItems: Set<string>\n): IrisGridTreeItem {\n const modelIndex = columns.findIndex(col => col.name === name);\n if (modelIndex === -1) {\n const group = columnHeaderGroupMap.get(name);\n\n if (group == null) {\n throw new Error(`Column or header group not found: ${name}`);\n }\n\n const modelIndexes = group.childIndexes.flat();\n\n return {\n id: name,\n selected: selectedItems.has(name),\n children: group.children\n .map(childName =>\n getTreeItem(\n columns,\n movedColumns,\n columnHeaderGroupMap,\n childName,\n hiddenColumnSet,\n selectedItems\n )\n )\n .sort((a, b) => {\n const aVal = Array.isArray(a.data.visibleIndex)\n ? a.data.visibleIndex[0]\n : a.data.visibleIndex;\n const bVal = Array.isArray(b.data.visibleIndex)\n ? b.data.visibleIndex[0]\n : b.data.visibleIndex;\n return aVal - bVal;\n }),\n data: {\n modelIndex: modelIndexes,\n visibleIndex: group.getVisibleRange(movedColumns),\n group,\n isVisible: modelIndexes.some(index => !hiddenColumnSet.has(index)),\n },\n };\n }\n\n return {\n id: name,\n children: [],\n selected: selectedItems.has(name),\n data: {\n modelIndex,\n visibleIndex: GridUtils.getVisibleIndex(modelIndex, movedColumns),\n isVisible: !hiddenColumnSet.has(modelIndex),\n },\n };\n}\n\nexport function getTreeItems(\n columns: readonly dh.Column[],\n movedColumns: readonly MoveOperation[],\n columnHeaderGroups: readonly ColumnHeaderGroup[],\n hiddenColumns: readonly ModelIndex[],\n selectedItems: readonly string[]\n): IrisGridTreeItem[] {\n const items: IrisGridTreeItem[] = [];\n const selectedItemsSet = new Set(selectedItems);\n const groupMap = new Map(\n columnHeaderGroups.map(group => [group.name, group])\n );\n const hiddenColumnSet = new Set(hiddenColumns);\n\n let visibleIndex = 0;\n while (visibleIndex < columns.length) {\n const modelIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);\n const columnName = columns[modelIndex].name;\n\n let group = columnHeaderGroups.find(({ children }) =>\n children.includes(columnName)\n );\n while (group !== undefined && group.parent !== undefined) {\n group = groupMap.get(group.parent);\n }\n\n const item = getTreeItem(\n columns,\n movedColumns,\n groupMap,\n group ? group.name : columnName,\n hiddenColumnSet,\n selectedItemsSet\n );\n\n items.push(item);\n\n if (Array.isArray(item.data.visibleIndex)) {\n visibleIndex += item.data.visibleIndex[1] - item.data.visibleIndex[0] + 1;\n } else {\n visibleIndex += 1;\n }\n }\n\n return items;\n}\n\n/**\n * Gets the projected drop position and depth of the dragged item\n *\n * @param items List of flattened items\n * @param activeId ID of the actively dragged item\n * @param overId ID of the item currently being dragged over\n * @param dragOffset The x-axis offset of the dragged item\n * @param indentationWidth The width for each level of the tree\n * @returns The projected position and depth if the item were to be dropped\n */\nexport function getProjection(\n items: FlattenedItem[],\n activeId: string,\n overId: string,\n dragOffset: number,\n indentationWidth: number\n): {\n depth: number;\n maxDepth: number;\n minDepth: number;\n parentId: string | null;\n} {\n const overItemIndex = items.findIndex(({ id }) => id === overId);\n const activeItemIndex = items.findIndex(({ id }) => id === activeId);\n const activeItem = items[activeItemIndex];\n const newItems = arrayMove(items, activeItemIndex, overItemIndex);\n const previousItem: FlattenedItem | undefined = newItems[overItemIndex - 1];\n const nextItem = newItems[overItemIndex + 1];\n const dragDepth = getDragDepth(dragOffset, indentationWidth);\n const projectedDepth = activeItem.depth + dragDepth;\n const maxDepth = getMaxDepth({\n previousItem,\n nextItem,\n });\n const minDepth = getMinDepth({ nextItem });\n let depth = projectedDepth;\n\n if (projectedDepth >= maxDepth) {\n depth = maxDepth;\n } else if (projectedDepth < minDepth) {\n depth = minDepth;\n }\n\n return { depth, maxDepth, minDepth, parentId: getParentId() };\n\n function getParentId(): string | null {\n if (depth === 0 || !previousItem) {\n return null;\n }\n\n if (depth === previousItem.depth) {\n return previousItem.parentId;\n }\n\n if (depth > previousItem.depth) {\n return previousItem.id;\n }\n\n const newParent = newItems\n .slice(0, overItemIndex)\n .reverse()\n .find(item => item.depth === depth)?.parentId;\n\n return newParent ?? null;\n }\n}\n\nfunction getMaxDepth({\n previousItem,\n nextItem,\n}: {\n previousItem?: FlattenedItem;\n nextItem?: FlattenedItem;\n}): number {\n return Math.max(previousItem?.depth ?? 0, nextItem?.depth ?? 0);\n}\n\nfunction getMinDepth({\n nextItem,\n}: {\n nextItem: FlattenedItem | undefined;\n}): number {\n if (nextItem) {\n return nextItem.depth;\n }\n\n return 0;\n}\n\n/**\n * Helper function to recursively flatten a tree\n *\n * @param items Items to flatten\n * @param parentId The current parentId of the items\n * @param depth The current depth of the items\n * @returns Flattened items\n */\nfunction flatten<T>(\n items: ReadonlyTreeItems<T>,\n parentId: string | null = null,\n depth = 0\n): FlattenedItem<T>[] {\n return items.reduce<FlattenedItem<T>[]>(\n (acc, item, index) => [\n ...acc,\n { ...item, parentId, depth, index },\n ...flatten(item.children, item.id, depth + 1),\n ],\n []\n );\n}\n\n/**\n * Flattens a tree into a 1D array given the items\n * @param items The tree items to flatten\n * @returns The flattened tree items list\n */\nexport function flattenTree<T>(\n items: ReadonlyTreeItems<T>\n): FlattenedItem<T>[] {\n // Should help prevent double flattening since FlattenedItems are valid TreeItems\n if (items.every(isFlattenedTreeItem)) {\n return [...items];\n }\n return flatten(items);\n}\n\n/**\n * Recursively checks for the item in a list of items.\n * The list does not have to be flattened prior to searching.\n *\n * @param items Items to search\n * @param itemId Item to find\n * @returns The item if found\n */\nexport function findItemDeep(\n items: ReadonlyTreeItems,\n itemId: string\n): TreeItem | undefined {\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { id, children } = item;\n\n if (id === itemId) {\n return item;\n }\n\n if (children.length) {\n const child = findItemDeep(children, itemId);\n\n if (child) {\n return child;\n }\n }\n }\n\n return undefined;\n}\n\nfunction countChildren(items: TreeItem[], count = 0): number {\n return items.reduce((acc, { children }) => {\n if (children.length) {\n return countChildren(children, acc + 1);\n }\n\n return acc + 1;\n }, count);\n}\n\nexport function getChildCount(items: ReadonlyTreeItems, id: string): number {\n const item = findItemDeep(items, id);\n\n return item ? countChildren(item.children) : 0;\n}\n\n/**\n * Removes the children of the list of parents from the list of flattened items\n *\n * @param items The flattened items to remove from\n * @param ids The parents we want to remove the children of\n * @returns The flattened items without the children of the parents\n */\nexport function removeChildrenOf<T>(\n items: FlattenedItem<T>[],\n ids: string[]\n): FlattenedItem<T>[] {\n const excludeParentIds = new Set(ids);\n\n return items.filter(item => {\n if (item.parentId != null && excludeParentIds.has(item.parentId)) {\n if (item.children.length) {\n excludeParentIds.add(item.id);\n }\n return false;\n }\n\n return true;\n });\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/iris-grid",
3
- "version": "0.94.1-beta.0+96e3d432",
3
+ "version": "0.95.0",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -31,18 +31,18 @@
31
31
  "build:sass": "sass --embed-sources --load-path=../../node_modules ./src:./dist"
32
32
  },
33
33
  "dependencies": {
34
- "@deephaven/components": "^0.94.1-beta.0+96e3d432",
35
- "@deephaven/console": "^0.94.1-beta.0+96e3d432",
36
- "@deephaven/filters": "^0.94.1-beta.0+96e3d432",
37
- "@deephaven/grid": "^0.94.1-beta.0+96e3d432",
38
- "@deephaven/icons": "^0.94.1-beta.0+96e3d432",
39
- "@deephaven/jsapi-components": "^0.94.1-beta.0+96e3d432",
34
+ "@deephaven/components": "^0.95.0",
35
+ "@deephaven/console": "^0.95.0",
36
+ "@deephaven/filters": "^0.95.0",
37
+ "@deephaven/grid": "^0.95.0",
38
+ "@deephaven/icons": "^0.95.0",
39
+ "@deephaven/jsapi-components": "^0.95.0",
40
40
  "@deephaven/jsapi-types": "^1.0.0-dev0.34.0",
41
- "@deephaven/jsapi-utils": "^0.94.1-beta.0+96e3d432",
42
- "@deephaven/log": "^0.94.1-beta.0+96e3d432",
43
- "@deephaven/react-hooks": "^0.94.1-beta.0+96e3d432",
44
- "@deephaven/storage": "^0.94.1-beta.0+96e3d432",
45
- "@deephaven/utils": "^0.94.1-beta.0+96e3d432",
41
+ "@deephaven/jsapi-utils": "^0.95.0",
42
+ "@deephaven/log": "^0.95.0",
43
+ "@deephaven/react-hooks": "^0.95.0",
44
+ "@deephaven/storage": "^0.95.0",
45
+ "@deephaven/utils": "^0.95.0",
46
46
  "@dnd-kit/core": "^6.1.0",
47
47
  "@dnd-kit/sortable": "^7.0.2",
48
48
  "@dnd-kit/utilities": "^3.2.2",
@@ -65,9 +65,9 @@
65
65
  "react-dom": ">=16.8.0"
66
66
  },
67
67
  "devDependencies": {
68
- "@deephaven/jsapi-shim": "^0.94.1-beta.0+96e3d432",
69
- "@deephaven/mocks": "^0.94.1-beta.0+96e3d432",
70
- "@deephaven/test-utils": "^0.94.1-beta.0+96e3d432",
68
+ "@deephaven/jsapi-shim": "^0.95.0",
69
+ "@deephaven/mocks": "^0.95.0",
70
+ "@deephaven/test-utils": "^0.95.0",
71
71
  "deep-equal": "2.2.3"
72
72
  },
73
73
  "files": [
@@ -80,5 +80,5 @@
80
80
  "publishConfig": {
81
81
  "access": "public"
82
82
  },
83
- "gitHead": "96e3d4326a855ae67e65f036a909be130c66c40d"
83
+ "gitHead": "ec9b41e921e2122879f53e9a266084d529664680"
84
84
  }