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
@@ -1,37 +1,16 @@
1
1
  import * as React from 'react';
2
+ import { createContext, useLayoutEffect, useRef, forwardRef, createElement, useContext, useImperativeHandle, useState, useCallback, useEffect, useMemo } from 'react';
2
3
 
3
4
  const isBrowser = typeof window !== "undefined";
4
5
 
5
- // This module exists to work around Webpack issue https://github.com/webpack/webpack/issues/14814
6
-
7
- // eslint-disable-next-line no-restricted-imports
8
-
9
- const {
10
- createElement,
11
- createContext,
12
- createRef,
13
- forwardRef,
14
- useCallback,
15
- useContext,
16
- useEffect,
17
- useImperativeHandle,
18
- useLayoutEffect,
19
- useMemo,
20
- useRef,
21
- useState
22
- } = React;
23
-
24
- // `Math.random()` and `.slice(0, 5)` prevents bundlers from trying to `import { useId } from 'react'`
25
- const useId = React[`useId${Math.random()}`.slice(0, 5)];
26
- const useLayoutEffect_do_not_use_directly = useLayoutEffect;
27
-
28
6
  // The "contextmenu" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled
29
7
 
30
8
  const PanelGroupContext = createContext(null);
31
9
  PanelGroupContext.displayName = "PanelGroupContext";
32
10
 
33
- const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect_do_not_use_directly : () => {};
11
+ const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : () => {};
34
12
 
13
+ const useId = React["useId".toString()];
35
14
  const wrappedUseId = typeof useId === "function" ? useId : () => null;
36
15
  let counter = 0;
37
16
  function useUniqueId(idFromParams = null) {
@@ -170,7 +149,7 @@ function PanelWithForwardedRef({
170
149
  ...rest,
171
150
  children,
172
151
  className: classNameFromProps,
173
- id: idFromProps,
152
+ id: panelId,
174
153
  style: {
175
154
  ...style,
176
155
  ...styleFromProps
@@ -320,8 +299,8 @@ function intersects(rectOne, rectTwo, strict) {
320
299
  /**
321
300
  * Determine which of two nodes appears in front of the other —
322
301
  * if `a` is in front, returns 1, otherwise returns -1
323
- * @param {HTMLElement} a
324
- * @param {HTMLElement} b
302
+ * @param {HTMLElement | SVGElement} a
303
+ * @param {HTMLElement | SVGElement} b
325
304
  */
326
305
  function compare(a, b) {
327
306
  if (a === b) throw new Error("Cannot compare node with itself");
@@ -359,7 +338,7 @@ function compare(a, b) {
359
338
  }
360
339
  const props = /\b(?:position|zIndex|opacity|transform|webkitTransform|mixBlendMode|filter|webkitFilter|isolation)\b/;
361
340
 
362
- /** @param {HTMLElement} node */
341
+ /** @param {HTMLElement | SVGElement} node */
363
342
  function is_flex_item(node) {
364
343
  var _get_parent;
365
344
  // @ts-ignore
@@ -367,7 +346,7 @@ function is_flex_item(node) {
367
346
  return display === "flex" || display === "inline-flex";
368
347
  }
369
348
 
370
- /** @param {HTMLElement} node */
349
+ /** @param {HTMLElement | SVGElement} node */
371
350
  function creates_stacking_context(node) {
372
351
  const style = getComputedStyle(node);
373
352
 
@@ -392,7 +371,7 @@ function creates_stacking_context(node) {
392
371
  return false;
393
372
  }
394
373
 
395
- /** @param {HTMLElement[]} nodes */
374
+ /** @param {(HTMLElement| SVGElement)[]} nodes */
396
375
  function find_stacking_context(nodes) {
397
376
  let i = nodes.length;
398
377
  while (i--) {
@@ -403,7 +382,7 @@ function find_stacking_context(nodes) {
403
382
  return null;
404
383
  }
405
384
 
406
- /** @param {HTMLElement} node */
385
+ /** @param {HTMLElement | SVGElement} node */
407
386
  function get_z_index(node) {
408
387
  return node && Number(getComputedStyle(node).zIndex) || 0;
409
388
  }
@@ -565,7 +544,7 @@ function recalculateIntersectingHandles({
565
544
  }) {
566
545
  intersectingHandles.splice(0);
567
546
  let targetElement = null;
568
- if (target instanceof HTMLElement) {
547
+ if (target instanceof HTMLElement || target instanceof SVGElement) {
569
548
  targetElement = target;
570
549
  }
571
550
  registeredResizeHandlers.forEach(data => {
@@ -655,7 +634,9 @@ function updateListeners() {
655
634
  body
656
635
  } = ownerDocument;
657
636
  body.removeEventListener("contextmenu", handlePointerUp);
658
- body.removeEventListener("pointerdown", handlePointerDown);
637
+ body.removeEventListener("pointerdown", handlePointerDown, {
638
+ capture: true
639
+ });
659
640
  body.removeEventListener("pointerleave", handlePointerMove);
660
641
  body.removeEventListener("pointermove", handlePointerMove);
661
642
  });
@@ -2349,8 +2330,11 @@ function PanelResizeHandle({
2349
2330
  hitAreaMargins,
2350
2331
  id: idFromProps,
2351
2332
  onBlur,
2333
+ onClick,
2352
2334
  onDragging,
2353
2335
  onFocus,
2336
+ onPointerDown,
2337
+ onPointerUp,
2354
2338
  style: styleFromProps = {},
2355
2339
  tabIndex = 0,
2356
2340
  tagName: Type = "div",
@@ -2361,10 +2345,16 @@ function PanelResizeHandle({
2361
2345
 
2362
2346
  // Use a ref to guard against users passing inline props
2363
2347
  const callbacksRef = useRef({
2364
- onDragging
2348
+ onClick,
2349
+ onDragging,
2350
+ onPointerDown,
2351
+ onPointerUp
2365
2352
  });
2366
2353
  useEffect(() => {
2354
+ callbacksRef.current.onClick = onClick;
2367
2355
  callbacksRef.current.onDragging = onDragging;
2356
+ callbacksRef.current.onPointerDown = onPointerDown;
2357
+ callbacksRef.current.onPointerUp = onPointerUp;
2368
2358
  });
2369
2359
  const panelGroupContext = useContext(PanelGroupContext);
2370
2360
  if (panelGroupContext === null) {
@@ -2407,20 +2397,22 @@ function PanelResizeHandle({
2407
2397
  }
2408
2398
  const element = elementRef.current;
2409
2399
  assert(element, "Element ref not attached");
2400
+ let didMove = false;
2410
2401
  const setResizeHandlerState = (action, isActive, event) => {
2411
2402
  if (isActive) {
2412
2403
  switch (action) {
2413
2404
  case "down":
2414
2405
  {
2415
2406
  setState("drag");
2407
+ didMove = false;
2416
2408
  assert(event, 'Expected event to be defined for "down" action');
2417
2409
  startDragging(resizeHandleId, event);
2418
2410
  const {
2419
- onDragging
2411
+ onDragging,
2412
+ onPointerDown
2420
2413
  } = callbacksRef.current;
2421
- if (onDragging) {
2422
- onDragging(true);
2423
- }
2414
+ onDragging === null || onDragging === void 0 ? void 0 : onDragging(true);
2415
+ onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown();
2424
2416
  break;
2425
2417
  }
2426
2418
  case "move":
@@ -2428,6 +2420,7 @@ function PanelResizeHandle({
2428
2420
  const {
2429
2421
  state
2430
2422
  } = committedValuesRef.current;
2423
+ didMove = true;
2431
2424
  if (state !== "drag") {
2432
2425
  setState("hover");
2433
2426
  }
@@ -2440,10 +2433,14 @@ function PanelResizeHandle({
2440
2433
  setState("hover");
2441
2434
  stopDragging();
2442
2435
  const {
2443
- onDragging
2436
+ onClick,
2437
+ onDragging,
2438
+ onPointerUp
2444
2439
  } = callbacksRef.current;
2445
- if (onDragging) {
2446
- onDragging(false);
2440
+ onDragging === null || onDragging === void 0 ? void 0 : onDragging(false);
2441
+ onPointerUp === null || onPointerUp === void 0 ? void 0 : onPointerUp();
2442
+ if (!didMove) {
2443
+ onClick === null || onClick === void 0 ? void 0 : onClick();
2447
2444
  }
2448
2445
  break;
2449
2446
  }