react-resizable-panels 2.1.6 → 2.1.8

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 (92) hide show
  1. package/README.md +4 -0
  2. package/dist/declarations/src/Panel.d.ts +1 -1
  3. package/dist/declarations/src/PanelGroup.d.ts +1 -1
  4. package/dist/declarations/src/PanelResizeHandle.d.ts +6 -3
  5. package/dist/react-resizable-panels.browser.cjs.js +90 -94
  6. package/dist/react-resizable-panels.browser.development.cjs.js +90 -94
  7. package/dist/react-resizable-panels.browser.development.esm.js +38 -41
  8. package/dist/react-resizable-panels.browser.esm.js +38 -41
  9. package/dist/react-resizable-panels.cjs.js +90 -94
  10. package/dist/react-resizable-panels.development.cjs.js +90 -94
  11. package/dist/react-resizable-panels.development.esm.js +38 -41
  12. package/dist/react-resizable-panels.development.node.cjs.js +89 -92
  13. package/dist/react-resizable-panels.development.node.esm.js +37 -39
  14. package/dist/react-resizable-panels.esm.js +38 -41
  15. package/dist/react-resizable-panels.node.cjs.js +89 -92
  16. package/dist/react-resizable-panels.node.esm.js +37 -39
  17. package/package.json +7 -2
  18. package/.eslintrc.cjs +0 -27
  19. package/CHANGELOG.md +0 -574
  20. package/dist/declarations/src/vendor/react.d.ts +0 -7
  21. package/jest.config.js +0 -10
  22. package/src/Panel.test.tsx +0 -1084
  23. package/src/Panel.ts +0 -259
  24. package/src/PanelGroup.test.tsx +0 -443
  25. package/src/PanelGroup.ts +0 -999
  26. package/src/PanelGroupContext.ts +0 -42
  27. package/src/PanelResizeHandle.test.tsx +0 -367
  28. package/src/PanelResizeHandle.ts +0 -246
  29. package/src/PanelResizeHandleRegistry.ts +0 -336
  30. package/src/constants.ts +0 -1
  31. package/src/env-conditions/browser.ts +0 -1
  32. package/src/env-conditions/development.ts +0 -1
  33. package/src/env-conditions/node.ts +0 -1
  34. package/src/env-conditions/production.ts +0 -1
  35. package/src/env-conditions/unknown.ts +0 -1
  36. package/src/hooks/useForceUpdate.ts +0 -7
  37. package/src/hooks/useIsomorphicEffect.ts +0 -8
  38. package/src/hooks/useUniqueId.ts +0 -19
  39. package/src/hooks/useWindowSplitterBehavior.ts +0 -90
  40. package/src/hooks/useWindowSplitterPanelGroupBehavior.ts +0 -201
  41. package/src/index.ts +0 -77
  42. package/src/types.ts +0 -5
  43. package/src/utils/adjustLayoutByDelta.test.ts +0 -2061
  44. package/src/utils/adjustLayoutByDelta.ts +0 -308
  45. package/src/utils/arrays.ts +0 -13
  46. package/src/utils/assert.ts +0 -10
  47. package/src/utils/calculateAriaValues.test.ts +0 -106
  48. package/src/utils/calculateAriaValues.ts +0 -45
  49. package/src/utils/calculateDeltaPercentage.ts +0 -63
  50. package/src/utils/calculateDragOffsetPercentage.ts +0 -40
  51. package/src/utils/calculateUnsafeDefaultLayout.test.ts +0 -87
  52. package/src/utils/calculateUnsafeDefaultLayout.ts +0 -50
  53. package/src/utils/callPanelCallbacks.ts +0 -49
  54. package/src/utils/compareLayouts.test.ts +0 -9
  55. package/src/utils/compareLayouts.ts +0 -12
  56. package/src/utils/computePanelFlexBoxStyle.test.ts +0 -123
  57. package/src/utils/computePanelFlexBoxStyle.ts +0 -50
  58. package/src/utils/csp.ts +0 -9
  59. package/src/utils/cursor.ts +0 -103
  60. package/src/utils/debounce.ts +0 -18
  61. package/src/utils/determinePivotIndices.ts +0 -15
  62. package/src/utils/dom/getPanelElement.ts +0 -10
  63. package/src/utils/dom/getPanelElementsForGroup.ts +0 -8
  64. package/src/utils/dom/getPanelGroupElement.ts +0 -21
  65. package/src/utils/dom/getResizeHandleElement.ts +0 -10
  66. package/src/utils/dom/getResizeHandleElementIndex.ts +0 -13
  67. package/src/utils/dom/getResizeHandleElementsForGroup.ts +0 -10
  68. package/src/utils/dom/getResizeHandlePanelIds.ts +0 -19
  69. package/src/utils/events/getResizeEventCoordinates.ts +0 -23
  70. package/src/utils/events/getResizeEventCursorPosition.ts +0 -14
  71. package/src/utils/events/index.ts +0 -13
  72. package/src/utils/getInputType.ts +0 -5
  73. package/src/utils/initializeDefaultStorage.ts +0 -26
  74. package/src/utils/numbers/fuzzyCompareNumbers.test.ts +0 -16
  75. package/src/utils/numbers/fuzzyCompareNumbers.ts +0 -21
  76. package/src/utils/numbers/fuzzyLayoutsEqual.ts +0 -22
  77. package/src/utils/numbers/fuzzyNumbersEqual.ts +0 -9
  78. package/src/utils/rects/getIntersectingRectangle.test.ts +0 -198
  79. package/src/utils/rects/getIntersectingRectangle.ts +0 -28
  80. package/src/utils/rects/intersects.test.ts +0 -197
  81. package/src/utils/rects/intersects.ts +0 -23
  82. package/src/utils/rects/types.ts +0 -6
  83. package/src/utils/resizePanel.test.ts +0 -59
  84. package/src/utils/resizePanel.ts +0 -47
  85. package/src/utils/serialization.ts +0 -87
  86. package/src/utils/test-utils.ts +0 -205
  87. package/src/utils/validatePanelConstraints.test.ts +0 -143
  88. package/src/utils/validatePanelConstraints.ts +0 -69
  89. package/src/utils/validatePanelGroupLayout.test.ts +0 -148
  90. package/src/utils/validatePanelGroupLayout.ts +0 -95
  91. package/src/vendor/react.ts +0 -73
  92. package/src/vendor/stacking-order.ts +0 -139
@@ -24,38 +24,17 @@ function _interopNamespace(e) {
24
24
 
25
25
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
26
26
 
27
- // This module exists to work around Webpack issue https://github.com/webpack/webpack/issues/14814
28
-
29
- // eslint-disable-next-line no-restricted-imports
30
-
31
- const {
32
- createElement,
33
- createContext,
34
- createRef,
35
- forwardRef,
36
- useCallback,
37
- useContext,
38
- useEffect,
39
- useImperativeHandle,
40
- useLayoutEffect,
41
- useMemo,
42
- useRef,
43
- useState
44
- } = React__namespace;
45
-
46
- // `Math.random()` and `.slice(0, 5)` prevents bundlers from trying to `import { useId } from 'react'`
47
- const useId = React__namespace[`useId${Math.random()}`.slice(0, 5)];
48
-
49
27
  // The "contextmenu" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled
50
28
 
51
- const PanelGroupContext = createContext(null);
29
+ const PanelGroupContext = React.createContext(null);
52
30
  PanelGroupContext.displayName = "PanelGroupContext";
53
31
 
32
+ const useId = React__namespace["useId".toString()];
54
33
  const wrappedUseId = typeof useId === "function" ? useId : () => null;
55
34
  let counter = 0;
56
35
  function useUniqueId(idFromParams = null) {
57
36
  const idFromUseId = wrappedUseId();
58
- const idRef = useRef(idFromParams || idFromUseId || null);
37
+ const idRef = React.useRef(idFromParams || idFromUseId || null);
59
38
  if (idRef.current === null) {
60
39
  idRef.current = "" + counter++;
61
40
  }
@@ -80,7 +59,7 @@ function PanelWithForwardedRef({
80
59
  tagName: Type = "div",
81
60
  ...rest
82
61
  }) {
83
- const context = useContext(PanelGroupContext);
62
+ const context = React.useContext(PanelGroupContext);
84
63
  if (context === null) {
85
64
  throw Error(`Panel components must be rendered within a PanelGroup container`);
86
65
  }
@@ -97,7 +76,7 @@ function PanelWithForwardedRef({
97
76
  unregisterPanel
98
77
  } = context;
99
78
  const panelId = useUniqueId(idFromProps);
100
- const panelDataRef = useRef({
79
+ const panelDataRef = React.useRef({
101
80
  callbacks: {
102
81
  onCollapse,
103
82
  onExpand,
@@ -114,10 +93,10 @@ function PanelWithForwardedRef({
114
93
  idIsFromProps: idFromProps !== undefined,
115
94
  order
116
95
  });
117
- useRef({
96
+ React.useRef({
118
97
  didLogMissingDefaultSizeWarning: false
119
98
  });
120
- useImperativeHandle(forwardedRef, () => ({
99
+ React.useImperativeHandle(forwardedRef, () => ({
121
100
  collapse: () => {
122
101
  collapsePanel(panelDataRef.current);
123
102
  },
@@ -141,11 +120,11 @@ function PanelWithForwardedRef({
141
120
  }
142
121
  }), [collapsePanel, expandPanel, getPanelSize, isPanelCollapsed, panelId, resizePanel]);
143
122
  const style = getPanelStyle(panelDataRef.current, defaultSize);
144
- return createElement(Type, {
123
+ return React.createElement(Type, {
145
124
  ...rest,
146
125
  children,
147
126
  className: classNameFromProps,
148
- id: idFromProps,
127
+ id: panelId,
149
128
  style: {
150
129
  ...style,
151
130
  ...styleFromProps
@@ -158,7 +137,7 @@ function PanelWithForwardedRef({
158
137
  "data-panel-size": parseFloat("" + style.flexGrow).toFixed(1)
159
138
  });
160
139
  }
161
- const Panel = forwardRef((props, ref) => createElement(PanelWithForwardedRef, {
140
+ const Panel = React.forwardRef((props, ref) => React.createElement(PanelWithForwardedRef, {
162
141
  ...props,
163
142
  forwardedRef: ref
164
143
  }));
@@ -295,8 +274,8 @@ function intersects(rectOne, rectTwo, strict) {
295
274
  /**
296
275
  * Determine which of two nodes appears in front of the other —
297
276
  * if `a` is in front, returns 1, otherwise returns -1
298
- * @param {HTMLElement} a
299
- * @param {HTMLElement} b
277
+ * @param {HTMLElement | SVGElement} a
278
+ * @param {HTMLElement | SVGElement} b
300
279
  */
301
280
  function compare(a, b) {
302
281
  if (a === b) throw new Error("Cannot compare node with itself");
@@ -334,7 +313,7 @@ function compare(a, b) {
334
313
  }
335
314
  const props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
336
315
 
337
- /** @param {HTMLElement} node */
316
+ /** @param {HTMLElement | SVGElement} node */
338
317
  function is_flex_item(node) {
339
318
  var _get_parent;
340
319
  // @ts-ignore
@@ -342,7 +321,7 @@ function is_flex_item(node) {
342
321
  return display === "flex" || display === "inline-flex";
343
322
  }
344
323
 
345
- /** @param {HTMLElement} node */
324
+ /** @param {HTMLElement | SVGElement} node */
346
325
  function creates_stacking_context(node) {
347
326
  const style = getComputedStyle(node);
348
327
 
@@ -367,7 +346,7 @@ function creates_stacking_context(node) {
367
346
  return false;
368
347
  }
369
348
 
370
- /** @param {HTMLElement[]} nodes */
349
+ /** @param {(HTMLElement| SVGElement)[]} nodes */
371
350
  function find_stacking_context(nodes) {
372
351
  let i = nodes.length;
373
352
  while (i--) {
@@ -378,7 +357,7 @@ function find_stacking_context(nodes) {
378
357
  return null;
379
358
  }
380
359
 
381
- /** @param {HTMLElement} node */
360
+ /** @param {HTMLElement | SVGElement} node */
382
361
  function get_z_index(node) {
383
362
  return node && Number(getComputedStyle(node).zIndex) || 0;
384
363
  }
@@ -540,7 +519,7 @@ function recalculateIntersectingHandles({
540
519
  }) {
541
520
  intersectingHandles.splice(0);
542
521
  let targetElement = null;
543
- if (target instanceof HTMLElement) {
522
+ if (target instanceof HTMLElement || target instanceof SVGElement) {
544
523
  targetElement = target;
545
524
  }
546
525
  registeredResizeHandlers.forEach(data => {
@@ -630,7 +609,9 @@ function updateListeners() {
630
609
  body
631
610
  } = ownerDocument;
632
611
  body.removeEventListener("contextmenu", handlePointerUp);
633
- body.removeEventListener("pointerdown", handlePointerDown);
612
+ body.removeEventListener("pointerdown", handlePointerDown, {
613
+ capture: true
614
+ });
634
615
  body.removeEventListener("pointerleave", handlePointerMove);
635
616
  body.removeEventListener("pointermove", handlePointerMove);
636
617
  });
@@ -678,8 +659,8 @@ function updateResizeHandlerStates(action, event) {
678
659
  }
679
660
 
680
661
  function useForceUpdate() {
681
- const [_, setCount] = useState(0);
682
- return useCallback(() => setCount(prevCount => prevCount + 1), []);
662
+ const [_, setCount] = React.useState(0);
663
+ return React.useCallback(() => setCount(prevCount => prevCount + 1), []);
683
664
  }
684
665
 
685
666
  function assert(expectedCondition, message) {
@@ -1053,10 +1034,10 @@ function useWindowSplitterPanelGroupBehavior({
1053
1034
  panelGroupElement,
1054
1035
  setLayout
1055
1036
  }) {
1056
- useRef({
1037
+ React.useRef({
1057
1038
  didWarnAboutMissingResizeHandle: false
1058
1039
  });
1059
- useEffect(() => {
1040
+ React.useEffect(() => {
1060
1041
  if (!panelGroupElement) {
1061
1042
  return;
1062
1043
  }
@@ -1468,14 +1449,14 @@ function PanelGroupWithForwardedRef({
1468
1449
  ...rest
1469
1450
  }) {
1470
1451
  const groupId = useUniqueId(idFromProps);
1471
- const panelGroupElementRef = useRef(null);
1472
- const [dragState, setDragState] = useState(null);
1473
- const [layout, setLayout] = useState([]);
1452
+ const panelGroupElementRef = React.useRef(null);
1453
+ const [dragState, setDragState] = React.useState(null);
1454
+ const [layout, setLayout] = React.useState([]);
1474
1455
  const forceUpdate = useForceUpdate();
1475
- const panelIdToLastNotifiedSizeMapRef = useRef({});
1476
- const panelSizeBeforeCollapseRef = useRef(new Map());
1477
- const prevDeltaRef = useRef(0);
1478
- const committedValuesRef = useRef({
1456
+ const panelIdToLastNotifiedSizeMapRef = React.useRef({});
1457
+ const panelSizeBeforeCollapseRef = React.useRef(new Map());
1458
+ const prevDeltaRef = React.useRef(0);
1459
+ const committedValuesRef = React.useRef({
1479
1460
  autoSaveId,
1480
1461
  direction,
1481
1462
  dragState,
@@ -1484,17 +1465,17 @@ function PanelGroupWithForwardedRef({
1484
1465
  onLayout,
1485
1466
  storage
1486
1467
  });
1487
- const eagerValuesRef = useRef({
1468
+ const eagerValuesRef = React.useRef({
1488
1469
  layout,
1489
1470
  panelDataArray: [],
1490
1471
  panelDataArrayChanged: false
1491
1472
  });
1492
- useRef({
1473
+ React.useRef({
1493
1474
  didLogIdAndOrderWarning: false,
1494
1475
  didLogPanelConstraintsWarning: false,
1495
1476
  prevPanelIds: []
1496
1477
  });
1497
- useImperativeHandle(forwardedRef, () => ({
1478
+ React.useImperativeHandle(forwardedRef, () => ({
1498
1479
  getId: () => committedValuesRef.current.id,
1499
1480
  getLayout: () => {
1500
1481
  const {
@@ -1533,7 +1514,7 @@ function PanelGroupWithForwardedRef({
1533
1514
  setLayout,
1534
1515
  panelGroupElement: panelGroupElementRef.current
1535
1516
  });
1536
- useEffect(() => {
1517
+ React.useEffect(() => {
1537
1518
  const {
1538
1519
  panelDataArray
1539
1520
  } = eagerValuesRef.current;
@@ -1560,11 +1541,11 @@ function PanelGroupWithForwardedRef({
1560
1541
  }, [autoSaveId, layout, storage]);
1561
1542
 
1562
1543
  // DEV warnings
1563
- useEffect(() => {
1544
+ React.useEffect(() => {
1564
1545
  });
1565
1546
 
1566
1547
  // External APIs are safe to memoize via committed values ref
1567
- const collapsePanel = useCallback(panelData => {
1548
+ const collapsePanel = React.useCallback(panelData => {
1568
1549
  const {
1569
1550
  onLayout
1570
1551
  } = committedValuesRef.current;
@@ -1607,7 +1588,7 @@ function PanelGroupWithForwardedRef({
1607
1588
  }, []);
1608
1589
 
1609
1590
  // External APIs are safe to memoize via committed values ref
1610
- const expandPanel = useCallback((panelData, minSizeOverride) => {
1591
+ const expandPanel = React.useCallback((panelData, minSizeOverride) => {
1611
1592
  const {
1612
1593
  onLayout
1613
1594
  } = committedValuesRef.current;
@@ -1651,7 +1632,7 @@ function PanelGroupWithForwardedRef({
1651
1632
  }, []);
1652
1633
 
1653
1634
  // External APIs are safe to memoize via committed values ref
1654
- const getPanelSize = useCallback(panelData => {
1635
+ const getPanelSize = React.useCallback(panelData => {
1655
1636
  const {
1656
1637
  layout,
1657
1638
  panelDataArray
@@ -1664,7 +1645,7 @@ function PanelGroupWithForwardedRef({
1664
1645
  }, []);
1665
1646
 
1666
1647
  // This API should never read from committedValuesRef
1667
- const getPanelStyle = useCallback((panelData, defaultSize) => {
1648
+ const getPanelStyle = React.useCallback((panelData, defaultSize) => {
1668
1649
  const {
1669
1650
  panelDataArray
1670
1651
  } = eagerValuesRef.current;
@@ -1679,7 +1660,7 @@ function PanelGroupWithForwardedRef({
1679
1660
  }, [dragState, layout]);
1680
1661
 
1681
1662
  // External APIs are safe to memoize via committed values ref
1682
- const isPanelCollapsed = useCallback(panelData => {
1663
+ const isPanelCollapsed = React.useCallback(panelData => {
1683
1664
  const {
1684
1665
  layout,
1685
1666
  panelDataArray
@@ -1694,7 +1675,7 @@ function PanelGroupWithForwardedRef({
1694
1675
  }, []);
1695
1676
 
1696
1677
  // External APIs are safe to memoize via committed values ref
1697
- const isPanelExpanded = useCallback(panelData => {
1678
+ const isPanelExpanded = React.useCallback(panelData => {
1698
1679
  const {
1699
1680
  layout,
1700
1681
  panelDataArray
@@ -1707,7 +1688,7 @@ function PanelGroupWithForwardedRef({
1707
1688
  assert(panelSize != null, `Panel size not found for panel "${panelData.id}"`);
1708
1689
  return !collapsible || fuzzyCompareNumbers(panelSize, collapsedSize) > 0;
1709
1690
  }, []);
1710
- const registerPanel = useCallback(panelData => {
1691
+ const registerPanel = React.useCallback(panelData => {
1711
1692
  const {
1712
1693
  panelDataArray
1713
1694
  } = eagerValuesRef.current;
@@ -1728,7 +1709,7 @@ function PanelGroupWithForwardedRef({
1728
1709
  eagerValuesRef.current.panelDataArrayChanged = true;
1729
1710
  forceUpdate();
1730
1711
  }, [forceUpdate]);
1731
- const registerResizeHandle = useCallback(dragHandleId => {
1712
+ const registerResizeHandle = React.useCallback(dragHandleId => {
1732
1713
  let isRTL = false;
1733
1714
  const panelGroupElement = panelGroupElementRef.current;
1734
1715
  if (panelGroupElement) {
@@ -1807,7 +1788,7 @@ function PanelGroupWithForwardedRef({
1807
1788
  }, []);
1808
1789
 
1809
1790
  // External APIs are safe to memoize via committed values ref
1810
- const resizePanel = useCallback((panelData, unsafePanelSize) => {
1791
+ const resizePanel = React.useCallback((panelData, unsafePanelSize) => {
1811
1792
  const {
1812
1793
  onLayout
1813
1794
  } = committedValuesRef.current;
@@ -1840,7 +1821,7 @@ function PanelGroupWithForwardedRef({
1840
1821
  callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);
1841
1822
  }
1842
1823
  }, []);
1843
- const reevaluatePanelConstraints = useCallback((panelData, prevConstraints) => {
1824
+ const reevaluatePanelConstraints = React.useCallback((panelData, prevConstraints) => {
1844
1825
  const {
1845
1826
  layout,
1846
1827
  panelDataArray
@@ -1874,7 +1855,7 @@ function PanelGroupWithForwardedRef({
1874
1855
  }, [resizePanel]);
1875
1856
 
1876
1857
  // TODO Multiple drag handles can be active at the same time so this API is a bit awkward now
1877
- const startDragging = useCallback((dragHandleId, event) => {
1858
+ const startDragging = React.useCallback((dragHandleId, event) => {
1878
1859
  const {
1879
1860
  direction
1880
1861
  } = committedValuesRef.current;
@@ -1894,10 +1875,10 @@ function PanelGroupWithForwardedRef({
1894
1875
  initialLayout: layout
1895
1876
  });
1896
1877
  }, []);
1897
- const stopDragging = useCallback(() => {
1878
+ const stopDragging = React.useCallback(() => {
1898
1879
  setDragState(null);
1899
1880
  }, []);
1900
- const unregisterPanel = useCallback(panelData => {
1881
+ const unregisterPanel = React.useCallback(panelData => {
1901
1882
  const {
1902
1883
  panelDataArray
1903
1884
  } = eagerValuesRef.current;
@@ -1914,7 +1895,7 @@ function PanelGroupWithForwardedRef({
1914
1895
  forceUpdate();
1915
1896
  }
1916
1897
  }, [forceUpdate]);
1917
- const context = useMemo(() => ({
1898
+ const context = React.useMemo(() => ({
1918
1899
  collapsePanel,
1919
1900
  direction,
1920
1901
  dragState,
@@ -1940,9 +1921,9 @@ function PanelGroupWithForwardedRef({
1940
1921
  overflow: "hidden",
1941
1922
  width: "100%"
1942
1923
  };
1943
- return createElement(PanelGroupContext.Provider, {
1924
+ return React.createElement(PanelGroupContext.Provider, {
1944
1925
  value: context
1945
- }, createElement(Type, {
1926
+ }, React.createElement(Type, {
1946
1927
  ...rest,
1947
1928
  children,
1948
1929
  className: classNameFromProps,
@@ -1958,7 +1939,7 @@ function PanelGroupWithForwardedRef({
1958
1939
  "data-panel-group-id": groupId
1959
1940
  }));
1960
1941
  }
1961
- const PanelGroup = forwardRef((props, ref) => createElement(PanelGroupWithForwardedRef, {
1942
+ const PanelGroup = React.forwardRef((props, ref) => React.createElement(PanelGroupWithForwardedRef, {
1962
1943
  ...props,
1963
1944
  forwardedRef: ref
1964
1945
  }));
@@ -1987,7 +1968,7 @@ function useWindowSplitterResizeHandlerBehavior({
1987
1968
  resizeHandler,
1988
1969
  panelGroupElement
1989
1970
  }) {
1990
- useEffect(() => {
1971
+ React.useEffect(() => {
1991
1972
  if (disabled || resizeHandler == null || panelGroupElement == null) {
1992
1973
  return;
1993
1974
  }
@@ -2040,24 +2021,33 @@ function PanelResizeHandle({
2040
2021
  hitAreaMargins,
2041
2022
  id: idFromProps,
2042
2023
  onBlur,
2024
+ onClick,
2043
2025
  onDragging,
2044
2026
  onFocus,
2027
+ onPointerDown,
2028
+ onPointerUp,
2045
2029
  style: styleFromProps = {},
2046
2030
  tabIndex = 0,
2047
2031
  tagName: Type = "div",
2048
2032
  ...rest
2049
2033
  }) {
2050
2034
  var _hitAreaMargins$coars, _hitAreaMargins$fine;
2051
- const elementRef = useRef(null);
2035
+ const elementRef = React.useRef(null);
2052
2036
 
2053
2037
  // Use a ref to guard against users passing inline props
2054
- const callbacksRef = useRef({
2055
- onDragging
2038
+ const callbacksRef = React.useRef({
2039
+ onClick,
2040
+ onDragging,
2041
+ onPointerDown,
2042
+ onPointerUp
2056
2043
  });
2057
- useEffect(() => {
2044
+ React.useEffect(() => {
2045
+ callbacksRef.current.onClick = onClick;
2058
2046
  callbacksRef.current.onDragging = onDragging;
2047
+ callbacksRef.current.onPointerDown = onPointerDown;
2048
+ callbacksRef.current.onPointerUp = onPointerUp;
2059
2049
  });
2060
- const panelGroupContext = useContext(PanelGroupContext);
2050
+ const panelGroupContext = React.useContext(PanelGroupContext);
2061
2051
  if (panelGroupContext === null) {
2062
2052
  throw Error(`PanelResizeHandle components must be rendered within a PanelGroup container`);
2063
2053
  }
@@ -2070,13 +2060,13 @@ function PanelResizeHandle({
2070
2060
  panelGroupElement
2071
2061
  } = panelGroupContext;
2072
2062
  const resizeHandleId = useUniqueId(idFromProps);
2073
- const [state, setState] = useState("inactive");
2074
- const [isFocused, setIsFocused] = useState(false);
2075
- const [resizeHandler, setResizeHandler] = useState(null);
2076
- const committedValuesRef = useRef({
2063
+ const [state, setState] = React.useState("inactive");
2064
+ const [isFocused, setIsFocused] = React.useState(false);
2065
+ const [resizeHandler, setResizeHandler] = React.useState(null);
2066
+ const committedValuesRef = React.useRef({
2077
2067
  state
2078
2068
  });
2079
- useEffect(() => {
2069
+ React.useEffect(() => {
2080
2070
  if (disabled) {
2081
2071
  setResizeHandler(null);
2082
2072
  } else {
@@ -2089,26 +2079,28 @@ function PanelResizeHandle({
2089
2079
  // so that inline object values won't trigger re-renders
2090
2080
  const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2091
2081
  const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2092
- useEffect(() => {
2082
+ React.useEffect(() => {
2093
2083
  if (disabled || resizeHandler == null) {
2094
2084
  return;
2095
2085
  }
2096
2086
  const element = elementRef.current;
2097
2087
  assert(element, "Element ref not attached");
2088
+ let didMove = false;
2098
2089
  const setResizeHandlerState = (action, isActive, event) => {
2099
2090
  if (isActive) {
2100
2091
  switch (action) {
2101
2092
  case "down":
2102
2093
  {
2103
2094
  setState("drag");
2095
+ didMove = false;
2104
2096
  assert(event, 'Expected event to be defined for "down" action');
2105
2097
  startDragging(resizeHandleId, event);
2106
2098
  const {
2107
- onDragging
2099
+ onDragging,
2100
+ onPointerDown
2108
2101
  } = callbacksRef.current;
2109
- if (onDragging) {
2110
- onDragging(true);
2111
- }
2102
+ onDragging === null || onDragging === void 0 ? void 0 : onDragging(true);
2103
+ onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown();
2112
2104
  break;
2113
2105
  }
2114
2106
  case "move":
@@ -2116,6 +2108,7 @@ function PanelResizeHandle({
2116
2108
  const {
2117
2109
  state
2118
2110
  } = committedValuesRef.current;
2111
+ didMove = true;
2119
2112
  if (state !== "drag") {
2120
2113
  setState("hover");
2121
2114
  }
@@ -2128,10 +2121,14 @@ function PanelResizeHandle({
2128
2121
  setState("hover");
2129
2122
  stopDragging();
2130
2123
  const {
2131
- onDragging
2124
+ onClick,
2125
+ onDragging,
2126
+ onPointerUp
2132
2127
  } = callbacksRef.current;
2133
- if (onDragging) {
2134
- onDragging(false);
2128
+ onDragging === null || onDragging === void 0 ? void 0 : onDragging(false);
2129
+ onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp();
2130
+ if (!didMove) {
2131
+ onClick === null || onClick === void 0 ? void 0 : onClick();
2135
2132
  }
2136
2133
  break;
2137
2134
  }
@@ -2155,7 +2152,7 @@ function PanelResizeHandle({
2155
2152
  touchAction: "none",
2156
2153
  userSelect: "none"
2157
2154
  };
2158
- return createElement(Type, {
2155
+ return React.createElement(Type, {
2159
2156
  ...rest,
2160
2157
  children,
2161
2158
  className: classNameFromProps,
@@ -1,32 +1,12 @@
1
1
  import * as React from 'react';
2
-
3
- // This module exists to work around Webpack issue https://github.com/webpack/webpack/issues/14814
4
-
5
- // eslint-disable-next-line no-restricted-imports
6
-
7
- const {
8
- createElement,
9
- createContext,
10
- createRef,
11
- forwardRef,
12
- useCallback,
13
- useContext,
14
- useEffect,
15
- useImperativeHandle,
16
- useLayoutEffect,
17
- useMemo,
18
- useRef,
19
- useState
20
- } = React;
21
-
22
- // `Math.random()` and `.slice(0, 5)` prevents bundlers from trying to `import { useId } from 'react'`
23
- const useId = React[`useId${Math.random()}`.slice(0, 5)];
2
+ import { createContext, useRef, forwardRef, createElement, useContext, useImperativeHandle, useState, useCallback, useEffect, useMemo } from 'react';
24
3
 
25
4
  // The "contextmenu" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled
26
5
 
27
6
  const PanelGroupContext = createContext(null);
28
7
  PanelGroupContext.displayName = "PanelGroupContext";
29
8
 
9
+ const useId = React["useId".toString()];
30
10
  const wrappedUseId = typeof useId === "function" ? useId : () => null;
31
11
  let counter = 0;
32
12
  function useUniqueId(idFromParams = null) {
@@ -121,7 +101,7 @@ function PanelWithForwardedRef({
121
101
  ...rest,
122
102
  children,
123
103
  className: classNameFromProps,
124
- id: idFromProps,
104
+ id: panelId,
125
105
  style: {
126
106
  ...style,
127
107
  ...styleFromProps
@@ -271,8 +251,8 @@ function intersects(rectOne, rectTwo, strict) {
271
251
  /**
272
252
  * Determine which of two nodes appears in front of the other —
273
253
  * if `a` is in front, returns 1, otherwise returns -1
274
- * @param {HTMLElement} a
275
- * @param {HTMLElement} b
254
+ * @param {HTMLElement | SVGElement} a
255
+ * @param {HTMLElement | SVGElement} b
276
256
  */
277
257
  function compare(a, b) {
278
258
  if (a === b) throw new Error("Cannot compare node with itself");
@@ -310,7 +290,7 @@ function compare(a, b) {
310
290
  }
311
291
  const props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
312
292
 
313
- /** @param {HTMLElement} node */
293
+ /** @param {HTMLElement | SVGElement} node */
314
294
  function is_flex_item(node) {
315
295
  var _get_parent;
316
296
  // @ts-ignore
@@ -318,7 +298,7 @@ function is_flex_item(node) {
318
298
  return display === "flex" || display === "inline-flex";
319
299
  }
320
300
 
321
- /** @param {HTMLElement} node */
301
+ /** @param {HTMLElement | SVGElement} node */
322
302
  function creates_stacking_context(node) {
323
303
  const style = getComputedStyle(node);
324
304
 
@@ -343,7 +323,7 @@ function creates_stacking_context(node) {
343
323
  return false;
344
324
  }
345
325
 
346
- /** @param {HTMLElement[]} nodes */
326
+ /** @param {(HTMLElement| SVGElement)[]} nodes */
347
327
  function find_stacking_context(nodes) {
348
328
  let i = nodes.length;
349
329
  while (i--) {
@@ -354,7 +334,7 @@ function find_stacking_context(nodes) {
354
334
  return null;
355
335
  }
356
336
 
357
- /** @param {HTMLElement} node */
337
+ /** @param {HTMLElement | SVGElement} node */
358
338
  function get_z_index(node) {
359
339
  return node && Number(getComputedStyle(node).zIndex) || 0;
360
340
  }
@@ -516,7 +496,7 @@ function recalculateIntersectingHandles({
516
496
  }) {
517
497
  intersectingHandles.splice(0);
518
498
  let targetElement = null;
519
- if (target instanceof HTMLElement) {
499
+ if (target instanceof HTMLElement || target instanceof SVGElement) {
520
500
  targetElement = target;
521
501
  }
522
502
  registeredResizeHandlers.forEach(data => {
@@ -606,7 +586,9 @@ function updateListeners() {
606
586
  body
607
587
  } = ownerDocument;
608
588
  body.removeEventListener("contextmenu", handlePointerUp);
609
- body.removeEventListener("pointerdown", handlePointerDown);
589
+ body.removeEventListener("pointerdown", handlePointerDown, {
590
+ capture: true
591
+ });
610
592
  body.removeEventListener("pointerleave", handlePointerMove);
611
593
  body.removeEventListener("pointermove", handlePointerMove);
612
594
  });
@@ -2016,8 +1998,11 @@ function PanelResizeHandle({
2016
1998
  hitAreaMargins,
2017
1999
  id: idFromProps,
2018
2000
  onBlur,
2001
+ onClick,
2019
2002
  onDragging,
2020
2003
  onFocus,
2004
+ onPointerDown,
2005
+ onPointerUp,
2021
2006
  style: styleFromProps = {},
2022
2007
  tabIndex = 0,
2023
2008
  tagName: Type = "div",
@@ -2028,10 +2013,16 @@ function PanelResizeHandle({
2028
2013
 
2029
2014
  // Use a ref to guard against users passing inline props
2030
2015
  const callbacksRef = useRef({
2031
- onDragging
2016
+ onClick,
2017
+ onDragging,
2018
+ onPointerDown,
2019
+ onPointerUp
2032
2020
  });
2033
2021
  useEffect(() => {
2022
+ callbacksRef.current.onClick = onClick;
2034
2023
  callbacksRef.current.onDragging = onDragging;
2024
+ callbacksRef.current.onPointerDown = onPointerDown;
2025
+ callbacksRef.current.onPointerUp = onPointerUp;
2035
2026
  });
2036
2027
  const panelGroupContext = useContext(PanelGroupContext);
2037
2028
  if (panelGroupContext === null) {
@@ -2071,20 +2062,22 @@ function PanelResizeHandle({
2071
2062
  }
2072
2063
  const element = elementRef.current;
2073
2064
  assert(element, "Element ref not attached");
2065
+ let didMove = false;
2074
2066
  const setResizeHandlerState = (action, isActive, event) => {
2075
2067
  if (isActive) {
2076
2068
  switch (action) {
2077
2069
  case "down":
2078
2070
  {
2079
2071
  setState("drag");
2072
+ didMove = false;
2080
2073
  assert(event, 'Expected event to be defined for "down" action');
2081
2074
  startDragging(resizeHandleId, event);
2082
2075
  const {
2083
- onDragging
2076
+ onDragging,
2077
+ onPointerDown
2084
2078
  } = callbacksRef.current;
2085
- if (onDragging) {
2086
- onDragging(true);
2087
- }
2079
+ onDragging === null || onDragging === void 0 ? void 0 : onDragging(true);
2080
+ onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown();
2088
2081
  break;
2089
2082
  }
2090
2083
  case "move":
@@ -2092,6 +2085,7 @@ function PanelResizeHandle({
2092
2085
  const {
2093
2086
  state
2094
2087
  } = committedValuesRef.current;
2088
+ didMove = true;
2095
2089
  if (state !== "drag") {
2096
2090
  setState("hover");
2097
2091
  }
@@ -2104,10 +2098,14 @@ function PanelResizeHandle({
2104
2098
  setState("hover");
2105
2099
  stopDragging();
2106
2100
  const {
2107
- onDragging
2101
+ onClick,
2102
+ onDragging,
2103
+ onPointerUp
2108
2104
  } = callbacksRef.current;
2109
- if (onDragging) {
2110
- onDragging(false);
2105
+ onDragging === null || onDragging === void 0 ? void 0 : onDragging(false);
2106
+ onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp();
2107
+ if (!didMove) {
2108
+ onClick === null || onClick === void 0 ? void 0 : onClick();
2111
2109
  }
2112
2110
  break;
2113
2111
  }