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,7 +93,7 @@ function PanelWithForwardedRef({
114
93
  idIsFromProps: idFromProps !== undefined,
115
94
  order
116
95
  });
117
- const devWarningsRef = useRef({
96
+ const devWarningsRef = React.useRef({
118
97
  didLogMissingDefaultSizeWarning: false
119
98
  });
120
99
 
@@ -128,7 +107,7 @@ function PanelWithForwardedRef({
128
107
  }
129
108
  }
130
109
  }
131
- useImperativeHandle(forwardedRef, () => ({
110
+ React.useImperativeHandle(forwardedRef, () => ({
132
111
  collapse: () => {
133
112
  collapsePanel(panelDataRef.current);
134
113
  },
@@ -152,11 +131,11 @@ function PanelWithForwardedRef({
152
131
  }
153
132
  }), [collapsePanel, expandPanel, getPanelSize, isPanelCollapsed, panelId, resizePanel]);
154
133
  const style = getPanelStyle(panelDataRef.current, defaultSize);
155
- return createElement(Type, {
134
+ return React.createElement(Type, {
156
135
  ...rest,
157
136
  children,
158
137
  className: classNameFromProps,
159
- id: idFromProps,
138
+ id: panelId,
160
139
  style: {
161
140
  ...style,
162
141
  ...styleFromProps
@@ -169,7 +148,7 @@ function PanelWithForwardedRef({
169
148
  "data-panel-size": parseFloat("" + style.flexGrow).toFixed(1)
170
149
  });
171
150
  }
172
- const Panel = forwardRef((props, ref) => createElement(PanelWithForwardedRef, {
151
+ const Panel = React.forwardRef((props, ref) => React.createElement(PanelWithForwardedRef, {
173
152
  ...props,
174
153
  forwardedRef: ref
175
154
  }));
@@ -306,8 +285,8 @@ function intersects(rectOne, rectTwo, strict) {
306
285
  /**
307
286
  * Determine which of two nodes appears in front of the other —
308
287
  * if `a` is in front, returns 1, otherwise returns -1
309
- * @param {HTMLElement} a
310
- * @param {HTMLElement} b
288
+ * @param {HTMLElement | SVGElement} a
289
+ * @param {HTMLElement | SVGElement} b
311
290
  */
312
291
  function compare(a, b) {
313
292
  if (a === b) throw new Error("Cannot compare node with itself");
@@ -345,7 +324,7 @@ function compare(a, b) {
345
324
  }
346
325
  const props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
347
326
 
348
- /** @param {HTMLElement} node */
327
+ /** @param {HTMLElement | SVGElement} node */
349
328
  function is_flex_item(node) {
350
329
  var _get_parent;
351
330
  // @ts-ignore
@@ -353,7 +332,7 @@ function is_flex_item(node) {
353
332
  return display === "flex" || display === "inline-flex";
354
333
  }
355
334
 
356
- /** @param {HTMLElement} node */
335
+ /** @param {HTMLElement | SVGElement} node */
357
336
  function creates_stacking_context(node) {
358
337
  const style = getComputedStyle(node);
359
338
 
@@ -378,7 +357,7 @@ function creates_stacking_context(node) {
378
357
  return false;
379
358
  }
380
359
 
381
- /** @param {HTMLElement[]} nodes */
360
+ /** @param {(HTMLElement| SVGElement)[]} nodes */
382
361
  function find_stacking_context(nodes) {
383
362
  let i = nodes.length;
384
363
  while (i--) {
@@ -389,7 +368,7 @@ function find_stacking_context(nodes) {
389
368
  return null;
390
369
  }
391
370
 
392
- /** @param {HTMLElement} node */
371
+ /** @param {HTMLElement | SVGElement} node */
393
372
  function get_z_index(node) {
394
373
  return node && Number(getComputedStyle(node).zIndex) || 0;
395
374
  }
@@ -551,7 +530,7 @@ function recalculateIntersectingHandles({
551
530
  }) {
552
531
  intersectingHandles.splice(0);
553
532
  let targetElement = null;
554
- if (target instanceof HTMLElement) {
533
+ if (target instanceof HTMLElement || target instanceof SVGElement) {
555
534
  targetElement = target;
556
535
  }
557
536
  registeredResizeHandlers.forEach(data => {
@@ -641,7 +620,9 @@ function updateListeners() {
641
620
  body
642
621
  } = ownerDocument;
643
622
  body.removeEventListener("contextmenu", handlePointerUp);
644
- body.removeEventListener("pointerdown", handlePointerDown);
623
+ body.removeEventListener("pointerdown", handlePointerDown, {
624
+ capture: true
625
+ });
645
626
  body.removeEventListener("pointerleave", handlePointerMove);
646
627
  body.removeEventListener("pointermove", handlePointerMove);
647
628
  });
@@ -689,8 +670,8 @@ function updateResizeHandlerStates(action, event) {
689
670
  }
690
671
 
691
672
  function useForceUpdate() {
692
- const [_, setCount] = useState(0);
693
- return useCallback(() => setCount(prevCount => prevCount + 1), []);
673
+ const [_, setCount] = React.useState(0);
674
+ return React.useCallback(() => setCount(prevCount => prevCount + 1), []);
694
675
  }
695
676
 
696
677
  function assert(expectedCondition, message) {
@@ -1064,10 +1045,10 @@ function useWindowSplitterPanelGroupBehavior({
1064
1045
  panelGroupElement,
1065
1046
  setLayout
1066
1047
  }) {
1067
- useRef({
1048
+ React.useRef({
1068
1049
  didWarnAboutMissingResizeHandle: false
1069
1050
  });
1070
- useEffect(() => {
1051
+ React.useEffect(() => {
1071
1052
  if (!panelGroupElement) {
1072
1053
  return;
1073
1054
  }
@@ -1527,14 +1508,14 @@ function PanelGroupWithForwardedRef({
1527
1508
  ...rest
1528
1509
  }) {
1529
1510
  const groupId = useUniqueId(idFromProps);
1530
- const panelGroupElementRef = useRef(null);
1531
- const [dragState, setDragState] = useState(null);
1532
- const [layout, setLayout] = useState([]);
1511
+ const panelGroupElementRef = React.useRef(null);
1512
+ const [dragState, setDragState] = React.useState(null);
1513
+ const [layout, setLayout] = React.useState([]);
1533
1514
  const forceUpdate = useForceUpdate();
1534
- const panelIdToLastNotifiedSizeMapRef = useRef({});
1535
- const panelSizeBeforeCollapseRef = useRef(new Map());
1536
- const prevDeltaRef = useRef(0);
1537
- const committedValuesRef = useRef({
1515
+ const panelIdToLastNotifiedSizeMapRef = React.useRef({});
1516
+ const panelSizeBeforeCollapseRef = React.useRef(new Map());
1517
+ const prevDeltaRef = React.useRef(0);
1518
+ const committedValuesRef = React.useRef({
1538
1519
  autoSaveId,
1539
1520
  direction,
1540
1521
  dragState,
@@ -1543,17 +1524,17 @@ function PanelGroupWithForwardedRef({
1543
1524
  onLayout,
1544
1525
  storage
1545
1526
  });
1546
- const eagerValuesRef = useRef({
1527
+ const eagerValuesRef = React.useRef({
1547
1528
  layout,
1548
1529
  panelDataArray: [],
1549
1530
  panelDataArrayChanged: false
1550
1531
  });
1551
- const devWarningsRef = useRef({
1532
+ const devWarningsRef = React.useRef({
1552
1533
  didLogIdAndOrderWarning: false,
1553
1534
  didLogPanelConstraintsWarning: false,
1554
1535
  prevPanelIds: []
1555
1536
  });
1556
- useImperativeHandle(forwardedRef, () => ({
1537
+ React.useImperativeHandle(forwardedRef, () => ({
1557
1538
  getId: () => committedValuesRef.current.id,
1558
1539
  getLayout: () => {
1559
1540
  const {
@@ -1592,7 +1573,7 @@ function PanelGroupWithForwardedRef({
1592
1573
  setLayout,
1593
1574
  panelGroupElement: panelGroupElementRef.current
1594
1575
  });
1595
- useEffect(() => {
1576
+ React.useEffect(() => {
1596
1577
  const {
1597
1578
  panelDataArray
1598
1579
  } = eagerValuesRef.current;
@@ -1619,7 +1600,7 @@ function PanelGroupWithForwardedRef({
1619
1600
  }, [autoSaveId, layout, storage]);
1620
1601
 
1621
1602
  // DEV warnings
1622
- useEffect(() => {
1603
+ React.useEffect(() => {
1623
1604
  {
1624
1605
  const {
1625
1606
  panelDataArray
@@ -1665,7 +1646,7 @@ function PanelGroupWithForwardedRef({
1665
1646
  });
1666
1647
 
1667
1648
  // External APIs are safe to memoize via committed values ref
1668
- const collapsePanel = useCallback(panelData => {
1649
+ const collapsePanel = React.useCallback(panelData => {
1669
1650
  const {
1670
1651
  onLayout
1671
1652
  } = committedValuesRef.current;
@@ -1708,7 +1689,7 @@ function PanelGroupWithForwardedRef({
1708
1689
  }, []);
1709
1690
 
1710
1691
  // External APIs are safe to memoize via committed values ref
1711
- const expandPanel = useCallback((panelData, minSizeOverride) => {
1692
+ const expandPanel = React.useCallback((panelData, minSizeOverride) => {
1712
1693
  const {
1713
1694
  onLayout
1714
1695
  } = committedValuesRef.current;
@@ -1752,7 +1733,7 @@ function PanelGroupWithForwardedRef({
1752
1733
  }, []);
1753
1734
 
1754
1735
  // External APIs are safe to memoize via committed values ref
1755
- const getPanelSize = useCallback(panelData => {
1736
+ const getPanelSize = React.useCallback(panelData => {
1756
1737
  const {
1757
1738
  layout,
1758
1739
  panelDataArray
@@ -1765,7 +1746,7 @@ function PanelGroupWithForwardedRef({
1765
1746
  }, []);
1766
1747
 
1767
1748
  // This API should never read from committedValuesRef
1768
- const getPanelStyle = useCallback((panelData, defaultSize) => {
1749
+ const getPanelStyle = React.useCallback((panelData, defaultSize) => {
1769
1750
  const {
1770
1751
  panelDataArray
1771
1752
  } = eagerValuesRef.current;
@@ -1780,7 +1761,7 @@ function PanelGroupWithForwardedRef({
1780
1761
  }, [dragState, layout]);
1781
1762
 
1782
1763
  // External APIs are safe to memoize via committed values ref
1783
- const isPanelCollapsed = useCallback(panelData => {
1764
+ const isPanelCollapsed = React.useCallback(panelData => {
1784
1765
  const {
1785
1766
  layout,
1786
1767
  panelDataArray
@@ -1795,7 +1776,7 @@ function PanelGroupWithForwardedRef({
1795
1776
  }, []);
1796
1777
 
1797
1778
  // External APIs are safe to memoize via committed values ref
1798
- const isPanelExpanded = useCallback(panelData => {
1779
+ const isPanelExpanded = React.useCallback(panelData => {
1799
1780
  const {
1800
1781
  layout,
1801
1782
  panelDataArray
@@ -1808,7 +1789,7 @@ function PanelGroupWithForwardedRef({
1808
1789
  assert(panelSize != null, `Panel size not found for panel "${panelData.id}"`);
1809
1790
  return !collapsible || fuzzyCompareNumbers(panelSize, collapsedSize) > 0;
1810
1791
  }, []);
1811
- const registerPanel = useCallback(panelData => {
1792
+ const registerPanel = React.useCallback(panelData => {
1812
1793
  const {
1813
1794
  panelDataArray
1814
1795
  } = eagerValuesRef.current;
@@ -1829,7 +1810,7 @@ function PanelGroupWithForwardedRef({
1829
1810
  eagerValuesRef.current.panelDataArrayChanged = true;
1830
1811
  forceUpdate();
1831
1812
  }, [forceUpdate]);
1832
- const registerResizeHandle = useCallback(dragHandleId => {
1813
+ const registerResizeHandle = React.useCallback(dragHandleId => {
1833
1814
  let isRTL = false;
1834
1815
  const panelGroupElement = panelGroupElementRef.current;
1835
1816
  if (panelGroupElement) {
@@ -1908,7 +1889,7 @@ function PanelGroupWithForwardedRef({
1908
1889
  }, []);
1909
1890
 
1910
1891
  // External APIs are safe to memoize via committed values ref
1911
- const resizePanel = useCallback((panelData, unsafePanelSize) => {
1892
+ const resizePanel = React.useCallback((panelData, unsafePanelSize) => {
1912
1893
  const {
1913
1894
  onLayout
1914
1895
  } = committedValuesRef.current;
@@ -1941,7 +1922,7 @@ function PanelGroupWithForwardedRef({
1941
1922
  callPanelCallbacks(panelDataArray, nextLayout, panelIdToLastNotifiedSizeMapRef.current);
1942
1923
  }
1943
1924
  }, []);
1944
- const reevaluatePanelConstraints = useCallback((panelData, prevConstraints) => {
1925
+ const reevaluatePanelConstraints = React.useCallback((panelData, prevConstraints) => {
1945
1926
  const {
1946
1927
  layout,
1947
1928
  panelDataArray
@@ -1975,7 +1956,7 @@ function PanelGroupWithForwardedRef({
1975
1956
  }, [resizePanel]);
1976
1957
 
1977
1958
  // TODO Multiple drag handles can be active at the same time so this API is a bit awkward now
1978
- const startDragging = useCallback((dragHandleId, event) => {
1959
+ const startDragging = React.useCallback((dragHandleId, event) => {
1979
1960
  const {
1980
1961
  direction
1981
1962
  } = committedValuesRef.current;
@@ -1995,10 +1976,10 @@ function PanelGroupWithForwardedRef({
1995
1976
  initialLayout: layout
1996
1977
  });
1997
1978
  }, []);
1998
- const stopDragging = useCallback(() => {
1979
+ const stopDragging = React.useCallback(() => {
1999
1980
  setDragState(null);
2000
1981
  }, []);
2001
- const unregisterPanel = useCallback(panelData => {
1982
+ const unregisterPanel = React.useCallback(panelData => {
2002
1983
  const {
2003
1984
  panelDataArray
2004
1985
  } = eagerValuesRef.current;
@@ -2015,7 +1996,7 @@ function PanelGroupWithForwardedRef({
2015
1996
  forceUpdate();
2016
1997
  }
2017
1998
  }, [forceUpdate]);
2018
- const context = useMemo(() => ({
1999
+ const context = React.useMemo(() => ({
2019
2000
  collapsePanel,
2020
2001
  direction,
2021
2002
  dragState,
@@ -2041,9 +2022,9 @@ function PanelGroupWithForwardedRef({
2041
2022
  overflow: "hidden",
2042
2023
  width: "100%"
2043
2024
  };
2044
- return createElement(PanelGroupContext.Provider, {
2025
+ return React.createElement(PanelGroupContext.Provider, {
2045
2026
  value: context
2046
- }, createElement(Type, {
2027
+ }, React.createElement(Type, {
2047
2028
  ...rest,
2048
2029
  children,
2049
2030
  className: classNameFromProps,
@@ -2059,7 +2040,7 @@ function PanelGroupWithForwardedRef({
2059
2040
  "data-panel-group-id": groupId
2060
2041
  }));
2061
2042
  }
2062
- const PanelGroup = forwardRef((props, ref) => createElement(PanelGroupWithForwardedRef, {
2043
+ const PanelGroup = React.forwardRef((props, ref) => React.createElement(PanelGroupWithForwardedRef, {
2063
2044
  ...props,
2064
2045
  forwardedRef: ref
2065
2046
  }));
@@ -2088,7 +2069,7 @@ function useWindowSplitterResizeHandlerBehavior({
2088
2069
  resizeHandler,
2089
2070
  panelGroupElement
2090
2071
  }) {
2091
- useEffect(() => {
2072
+ React.useEffect(() => {
2092
2073
  if (disabled || resizeHandler == null || panelGroupElement == null) {
2093
2074
  return;
2094
2075
  }
@@ -2141,24 +2122,33 @@ function PanelResizeHandle({
2141
2122
  hitAreaMargins,
2142
2123
  id: idFromProps,
2143
2124
  onBlur,
2125
+ onClick,
2144
2126
  onDragging,
2145
2127
  onFocus,
2128
+ onPointerDown,
2129
+ onPointerUp,
2146
2130
  style: styleFromProps = {},
2147
2131
  tabIndex = 0,
2148
2132
  tagName: Type = "div",
2149
2133
  ...rest
2150
2134
  }) {
2151
2135
  var _hitAreaMargins$coars, _hitAreaMargins$fine;
2152
- const elementRef = useRef(null);
2136
+ const elementRef = React.useRef(null);
2153
2137
 
2154
2138
  // Use a ref to guard against users passing inline props
2155
- const callbacksRef = useRef({
2156
- onDragging
2139
+ const callbacksRef = React.useRef({
2140
+ onClick,
2141
+ onDragging,
2142
+ onPointerDown,
2143
+ onPointerUp
2157
2144
  });
2158
- useEffect(() => {
2145
+ React.useEffect(() => {
2146
+ callbacksRef.current.onClick = onClick;
2159
2147
  callbacksRef.current.onDragging = onDragging;
2148
+ callbacksRef.current.onPointerDown = onPointerDown;
2149
+ callbacksRef.current.onPointerUp = onPointerUp;
2160
2150
  });
2161
- const panelGroupContext = useContext(PanelGroupContext);
2151
+ const panelGroupContext = React.useContext(PanelGroupContext);
2162
2152
  if (panelGroupContext === null) {
2163
2153
  throw Error(`PanelResizeHandle components must be rendered within a PanelGroup container`);
2164
2154
  }
@@ -2171,13 +2161,13 @@ function PanelResizeHandle({
2171
2161
  panelGroupElement
2172
2162
  } = panelGroupContext;
2173
2163
  const resizeHandleId = useUniqueId(idFromProps);
2174
- const [state, setState] = useState("inactive");
2175
- const [isFocused, setIsFocused] = useState(false);
2176
- const [resizeHandler, setResizeHandler] = useState(null);
2177
- const committedValuesRef = useRef({
2164
+ const [state, setState] = React.useState("inactive");
2165
+ const [isFocused, setIsFocused] = React.useState(false);
2166
+ const [resizeHandler, setResizeHandler] = React.useState(null);
2167
+ const committedValuesRef = React.useRef({
2178
2168
  state
2179
2169
  });
2180
- useEffect(() => {
2170
+ React.useEffect(() => {
2181
2171
  if (disabled) {
2182
2172
  setResizeHandler(null);
2183
2173
  } else {
@@ -2190,26 +2180,28 @@ function PanelResizeHandle({
2190
2180
  // so that inline object values won't trigger re-renders
2191
2181
  const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2192
2182
  const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2193
- useEffect(() => {
2183
+ React.useEffect(() => {
2194
2184
  if (disabled || resizeHandler == null) {
2195
2185
  return;
2196
2186
  }
2197
2187
  const element = elementRef.current;
2198
2188
  assert(element, "Element ref not attached");
2189
+ let didMove = false;
2199
2190
  const setResizeHandlerState = (action, isActive, event) => {
2200
2191
  if (isActive) {
2201
2192
  switch (action) {
2202
2193
  case "down":
2203
2194
  {
2204
2195
  setState("drag");
2196
+ didMove = false;
2205
2197
  assert(event, 'Expected event to be defined for "down" action');
2206
2198
  startDragging(resizeHandleId, event);
2207
2199
  const {
2208
- onDragging
2200
+ onDragging,
2201
+ onPointerDown
2209
2202
  } = callbacksRef.current;
2210
- if (onDragging) {
2211
- onDragging(true);
2212
- }
2203
+ onDragging === null || onDragging === void 0 ? void 0 : onDragging(true);
2204
+ onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown();
2213
2205
  break;
2214
2206
  }
2215
2207
  case "move":
@@ -2217,6 +2209,7 @@ function PanelResizeHandle({
2217
2209
  const {
2218
2210
  state
2219
2211
  } = committedValuesRef.current;
2212
+ didMove = true;
2220
2213
  if (state !== "drag") {
2221
2214
  setState("hover");
2222
2215
  }
@@ -2229,10 +2222,14 @@ function PanelResizeHandle({
2229
2222
  setState("hover");
2230
2223
  stopDragging();
2231
2224
  const {
2232
- onDragging
2225
+ onClick,
2226
+ onDragging,
2227
+ onPointerUp
2233
2228
  } = callbacksRef.current;
2234
- if (onDragging) {
2235
- onDragging(false);
2229
+ onDragging === null || onDragging === void 0 ? void 0 : onDragging(false);
2230
+ onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp();
2231
+ if (!didMove) {
2232
+ onClick === null || onClick === void 0 ? void 0 : onClick();
2236
2233
  }
2237
2234
  break;
2238
2235
  }
@@ -2256,7 +2253,7 @@ function PanelResizeHandle({
2256
2253
  touchAction: "none",
2257
2254
  userSelect: "none"
2258
2255
  };
2259
- return createElement(Type, {
2256
+ return React.createElement(Type, {
2260
2257
  ...rest,
2261
2258
  children,
2262
2259
  className: classNameFromProps,