react-resizable-panels 2.0.16 → 2.0.17

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.
@@ -49,6 +49,8 @@ const {
49
49
  const useId = React__namespace["useId".toString()];
50
50
  const useLayoutEffect_do_not_use_directly = useLayoutEffect;
51
51
 
52
+ // The "contextmenu" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled
53
+
52
54
  const PanelGroupContext = createContext(null);
53
55
  PanelGroupContext.displayName = "PanelGroupContext";
54
56
 
@@ -263,27 +265,26 @@ function setGlobalCursorStyle(state, constraintFlags) {
263
265
  function isKeyDown(event) {
264
266
  return event.type === "keydown";
265
267
  }
268
+ function isPointerEvent(event) {
269
+ return event.type.startsWith("pointer");
270
+ }
266
271
  function isMouseEvent(event) {
267
272
  return event.type.startsWith("mouse");
268
273
  }
269
- function isTouchEvent(event) {
270
- return event.type.startsWith("touch");
271
- }
272
274
 
273
275
  function getResizeEventCoordinates(event) {
274
- if (isMouseEvent(event)) {
276
+ if (isPointerEvent(event)) {
277
+ if (event.isPrimary) {
278
+ return {
279
+ x: event.clientX,
280
+ y: event.clientY
281
+ };
282
+ }
283
+ } else if (isMouseEvent(event)) {
275
284
  return {
276
285
  x: event.clientX,
277
286
  y: event.clientY
278
287
  };
279
- } else if (isTouchEvent(event)) {
280
- const touch = event.touches[0];
281
- if (touch && touch.clientX && touch.clientY) {
282
- return {
283
- x: touch.clientX,
284
- y: touch.clientY
285
- };
286
- }
287
288
  }
288
289
  return {
289
290
  x: Infinity,
@@ -475,6 +476,7 @@ function handlePointerDown(event) {
475
476
  if (intersectingHandles.length > 0) {
476
477
  updateResizeHandlerStates("down", event);
477
478
  event.preventDefault();
479
+ event.stopPropagation();
478
480
  }
479
481
  }
480
482
  function handlePointerMove(event) {
@@ -623,15 +625,12 @@ function updateListeners() {
623
625
  body
624
626
  } = ownerDocument;
625
627
  body.removeEventListener("contextmenu", handlePointerUp);
626
- body.removeEventListener("mousedown", handlePointerDown);
627
- body.removeEventListener("mouseleave", handlePointerMove);
628
- body.removeEventListener("mousemove", handlePointerMove);
629
- body.removeEventListener("touchmove", handlePointerMove);
630
- body.removeEventListener("touchstart", handlePointerDown);
628
+ body.removeEventListener("pointerdown", handlePointerDown);
629
+ body.removeEventListener("pointerleave", handlePointerMove);
630
+ body.removeEventListener("pointermove", handlePointerMove);
631
631
  });
632
- window.removeEventListener("mouseup", handlePointerUp);
633
- window.removeEventListener("touchcancel", handlePointerUp);
634
- window.removeEventListener("touchend", handlePointerUp);
632
+ window.removeEventListener("pointerup", handlePointerUp);
633
+ window.removeEventListener("pointercancel", handlePointerUp);
635
634
  if (registeredResizeHandlers.size > 0) {
636
635
  if (isPointerDown) {
637
636
  if (intersectingHandles.length > 0) {
@@ -641,29 +640,23 @@ function updateListeners() {
641
640
  } = ownerDocument;
642
641
  if (count > 0) {
643
642
  body.addEventListener("contextmenu", handlePointerUp);
644
- body.addEventListener("mouseleave", handlePointerMove);
645
- body.addEventListener("mousemove", handlePointerMove);
646
- body.addEventListener("touchmove", handlePointerMove, {
647
- passive: false
648
- });
643
+ body.addEventListener("pointerleave", handlePointerMove);
644
+ body.addEventListener("pointermove", handlePointerMove);
649
645
  }
650
646
  });
651
647
  }
652
- window.addEventListener("mouseup", handlePointerUp);
653
- window.addEventListener("touchcancel", handlePointerUp);
654
- window.addEventListener("touchend", handlePointerUp);
648
+ window.addEventListener("pointerup", handlePointerUp);
649
+ window.addEventListener("pointercancel", handlePointerUp);
655
650
  } else {
656
651
  ownerDocumentCounts.forEach((count, ownerDocument) => {
657
652
  const {
658
653
  body
659
654
  } = ownerDocument;
660
655
  if (count > 0) {
661
- body.addEventListener("mousedown", handlePointerDown);
662
- body.addEventListener("mousemove", handlePointerMove);
663
- body.addEventListener("touchmove", handlePointerMove, {
664
- passive: false
656
+ body.addEventListener("pointerdown", handlePointerDown, {
657
+ capture: true
665
658
  });
666
- body.addEventListener("touchstart", handlePointerDown);
659
+ body.addEventListener("pointermove", handlePointerMove);
667
660
  }
668
661
  });
669
662
  }
@@ -902,7 +895,7 @@ function adjustLayoutByDelta({
902
895
  if (!fuzzyNumbersEqual(prevSize, safeSize)) {
903
896
  deltaApplied += prevSize - safeSize;
904
897
  nextLayout[index] = safeSize;
905
- if (deltaApplied.toFixed(3).localeCompare(Math.abs(delta).toFixed(3), undefined, {
898
+ if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), undefined, {
906
899
  numeric: true
907
900
  }) >= 0) {
908
901
  break;
@@ -1382,12 +1375,12 @@ function computePanelFlexBoxStyle({
1382
1375
  if (size == null) {
1383
1376
  // Initial render (before panels have registered themselves)
1384
1377
  // In order to support server rendering, fall back to default size if provided
1385
- flexGrow = defaultSize != undefined ? defaultSize.toFixed(precision) : "1";
1378
+ flexGrow = defaultSize != undefined ? defaultSize.toPrecision(precision) : "1";
1386
1379
  } else if (panelData.length === 1) {
1387
1380
  // Special case: Single panel group should always fill full width/height
1388
1381
  flexGrow = "1";
1389
1382
  } else {
1390
- flexGrow = size.toFixed(precision);
1383
+ flexGrow = size.toPrecision(precision);
1391
1384
  }
1392
1385
  return {
1393
1386
  flexBasis: 0,
@@ -1951,7 +1944,7 @@ function PanelGroupWithForwardedRef({
1951
1944
 
1952
1945
  // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)
1953
1946
  // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)
1954
- if (isMouseEvent(event) || isTouchEvent(event)) {
1947
+ if (isPointerEvent(event) || isMouseEvent(event)) {
1955
1948
  // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.
1956
1949
  // In this case, Panel sizes might not change–
1957
1950
  // but updating cursor in this scenario would cause a flicker.
@@ -49,6 +49,8 @@ const {
49
49
  const useId = React__namespace["useId".toString()];
50
50
  const useLayoutEffect_do_not_use_directly = useLayoutEffect;
51
51
 
52
+ // The "contextmenu" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled
53
+
52
54
  const PanelGroupContext = createContext(null);
53
55
  PanelGroupContext.displayName = "PanelGroupContext";
54
56
 
@@ -274,27 +276,26 @@ function setGlobalCursorStyle(state, constraintFlags) {
274
276
  function isKeyDown(event) {
275
277
  return event.type === "keydown";
276
278
  }
279
+ function isPointerEvent(event) {
280
+ return event.type.startsWith("pointer");
281
+ }
277
282
  function isMouseEvent(event) {
278
283
  return event.type.startsWith("mouse");
279
284
  }
280
- function isTouchEvent(event) {
281
- return event.type.startsWith("touch");
282
- }
283
285
 
284
286
  function getResizeEventCoordinates(event) {
285
- if (isMouseEvent(event)) {
287
+ if (isPointerEvent(event)) {
288
+ if (event.isPrimary) {
289
+ return {
290
+ x: event.clientX,
291
+ y: event.clientY
292
+ };
293
+ }
294
+ } else if (isMouseEvent(event)) {
286
295
  return {
287
296
  x: event.clientX,
288
297
  y: event.clientY
289
298
  };
290
- } else if (isTouchEvent(event)) {
291
- const touch = event.touches[0];
292
- if (touch && touch.clientX && touch.clientY) {
293
- return {
294
- x: touch.clientX,
295
- y: touch.clientY
296
- };
297
- }
298
299
  }
299
300
  return {
300
301
  x: Infinity,
@@ -486,6 +487,7 @@ function handlePointerDown(event) {
486
487
  if (intersectingHandles.length > 0) {
487
488
  updateResizeHandlerStates("down", event);
488
489
  event.preventDefault();
490
+ event.stopPropagation();
489
491
  }
490
492
  }
491
493
  function handlePointerMove(event) {
@@ -634,15 +636,12 @@ function updateListeners() {
634
636
  body
635
637
  } = ownerDocument;
636
638
  body.removeEventListener("contextmenu", handlePointerUp);
637
- body.removeEventListener("mousedown", handlePointerDown);
638
- body.removeEventListener("mouseleave", handlePointerMove);
639
- body.removeEventListener("mousemove", handlePointerMove);
640
- body.removeEventListener("touchmove", handlePointerMove);
641
- body.removeEventListener("touchstart", handlePointerDown);
639
+ body.removeEventListener("pointerdown", handlePointerDown);
640
+ body.removeEventListener("pointerleave", handlePointerMove);
641
+ body.removeEventListener("pointermove", handlePointerMove);
642
642
  });
643
- window.removeEventListener("mouseup", handlePointerUp);
644
- window.removeEventListener("touchcancel", handlePointerUp);
645
- window.removeEventListener("touchend", handlePointerUp);
643
+ window.removeEventListener("pointerup", handlePointerUp);
644
+ window.removeEventListener("pointercancel", handlePointerUp);
646
645
  if (registeredResizeHandlers.size > 0) {
647
646
  if (isPointerDown) {
648
647
  if (intersectingHandles.length > 0) {
@@ -652,29 +651,23 @@ function updateListeners() {
652
651
  } = ownerDocument;
653
652
  if (count > 0) {
654
653
  body.addEventListener("contextmenu", handlePointerUp);
655
- body.addEventListener("mouseleave", handlePointerMove);
656
- body.addEventListener("mousemove", handlePointerMove);
657
- body.addEventListener("touchmove", handlePointerMove, {
658
- passive: false
659
- });
654
+ body.addEventListener("pointerleave", handlePointerMove);
655
+ body.addEventListener("pointermove", handlePointerMove);
660
656
  }
661
657
  });
662
658
  }
663
- window.addEventListener("mouseup", handlePointerUp);
664
- window.addEventListener("touchcancel", handlePointerUp);
665
- window.addEventListener("touchend", handlePointerUp);
659
+ window.addEventListener("pointerup", handlePointerUp);
660
+ window.addEventListener("pointercancel", handlePointerUp);
666
661
  } else {
667
662
  ownerDocumentCounts.forEach((count, ownerDocument) => {
668
663
  const {
669
664
  body
670
665
  } = ownerDocument;
671
666
  if (count > 0) {
672
- body.addEventListener("mousedown", handlePointerDown);
673
- body.addEventListener("mousemove", handlePointerMove);
674
- body.addEventListener("touchmove", handlePointerMove, {
675
- passive: false
667
+ body.addEventListener("pointerdown", handlePointerDown, {
668
+ capture: true
676
669
  });
677
- body.addEventListener("touchstart", handlePointerDown);
670
+ body.addEventListener("pointermove", handlePointerMove);
678
671
  }
679
672
  });
680
673
  }
@@ -913,7 +906,7 @@ function adjustLayoutByDelta({
913
906
  if (!fuzzyNumbersEqual(prevSize, safeSize)) {
914
907
  deltaApplied += prevSize - safeSize;
915
908
  nextLayout[index] = safeSize;
916
- if (deltaApplied.toFixed(3).localeCompare(Math.abs(delta).toFixed(3), undefined, {
909
+ if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), undefined, {
917
910
  numeric: true
918
911
  }) >= 0) {
919
912
  break;
@@ -1403,12 +1396,12 @@ function computePanelFlexBoxStyle({
1403
1396
  if (size == null) {
1404
1397
  // Initial render (before panels have registered themselves)
1405
1398
  // In order to support server rendering, fall back to default size if provided
1406
- flexGrow = defaultSize != undefined ? defaultSize.toFixed(precision) : "1";
1399
+ flexGrow = defaultSize != undefined ? defaultSize.toPrecision(precision) : "1";
1407
1400
  } else if (panelData.length === 1) {
1408
1401
  // Special case: Single panel group should always fill full width/height
1409
1402
  flexGrow = "1";
1410
1403
  } else {
1411
- flexGrow = size.toFixed(precision);
1404
+ flexGrow = size.toPrecision(precision);
1412
1405
  }
1413
1406
  return {
1414
1407
  flexBasis: 0,
@@ -2062,7 +2055,7 @@ function PanelGroupWithForwardedRef({
2062
2055
 
2063
2056
  // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)
2064
2057
  // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)
2065
- if (isMouseEvent(event) || isTouchEvent(event)) {
2058
+ if (isPointerEvent(event) || isMouseEvent(event)) {
2066
2059
  // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.
2067
2060
  // In this case, Panel sizes might not change–
2068
2061
  // but updating cursor in this scenario would cause a flicker.
@@ -25,6 +25,8 @@ const {
25
25
  const useId = React["useId".toString()];
26
26
  const useLayoutEffect_do_not_use_directly = useLayoutEffect;
27
27
 
28
+ // The "contextmenu" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled
29
+
28
30
  const PanelGroupContext = createContext(null);
29
31
  PanelGroupContext.displayName = "PanelGroupContext";
30
32
 
@@ -250,27 +252,26 @@ function setGlobalCursorStyle(state, constraintFlags) {
250
252
  function isKeyDown(event) {
251
253
  return event.type === "keydown";
252
254
  }
255
+ function isPointerEvent(event) {
256
+ return event.type.startsWith("pointer");
257
+ }
253
258
  function isMouseEvent(event) {
254
259
  return event.type.startsWith("mouse");
255
260
  }
256
- function isTouchEvent(event) {
257
- return event.type.startsWith("touch");
258
- }
259
261
 
260
262
  function getResizeEventCoordinates(event) {
261
- if (isMouseEvent(event)) {
263
+ if (isPointerEvent(event)) {
264
+ if (event.isPrimary) {
265
+ return {
266
+ x: event.clientX,
267
+ y: event.clientY
268
+ };
269
+ }
270
+ } else if (isMouseEvent(event)) {
262
271
  return {
263
272
  x: event.clientX,
264
273
  y: event.clientY
265
274
  };
266
- } else if (isTouchEvent(event)) {
267
- const touch = event.touches[0];
268
- if (touch && touch.clientX && touch.clientY) {
269
- return {
270
- x: touch.clientX,
271
- y: touch.clientY
272
- };
273
- }
274
275
  }
275
276
  return {
276
277
  x: Infinity,
@@ -462,6 +463,7 @@ function handlePointerDown(event) {
462
463
  if (intersectingHandles.length > 0) {
463
464
  updateResizeHandlerStates("down", event);
464
465
  event.preventDefault();
466
+ event.stopPropagation();
465
467
  }
466
468
  }
467
469
  function handlePointerMove(event) {
@@ -610,15 +612,12 @@ function updateListeners() {
610
612
  body
611
613
  } = ownerDocument;
612
614
  body.removeEventListener("contextmenu", handlePointerUp);
613
- body.removeEventListener("mousedown", handlePointerDown);
614
- body.removeEventListener("mouseleave", handlePointerMove);
615
- body.removeEventListener("mousemove", handlePointerMove);
616
- body.removeEventListener("touchmove", handlePointerMove);
617
- body.removeEventListener("touchstart", handlePointerDown);
615
+ body.removeEventListener("pointerdown", handlePointerDown);
616
+ body.removeEventListener("pointerleave", handlePointerMove);
617
+ body.removeEventListener("pointermove", handlePointerMove);
618
618
  });
619
- window.removeEventListener("mouseup", handlePointerUp);
620
- window.removeEventListener("touchcancel", handlePointerUp);
621
- window.removeEventListener("touchend", handlePointerUp);
619
+ window.removeEventListener("pointerup", handlePointerUp);
620
+ window.removeEventListener("pointercancel", handlePointerUp);
622
621
  if (registeredResizeHandlers.size > 0) {
623
622
  if (isPointerDown) {
624
623
  if (intersectingHandles.length > 0) {
@@ -628,29 +627,23 @@ function updateListeners() {
628
627
  } = ownerDocument;
629
628
  if (count > 0) {
630
629
  body.addEventListener("contextmenu", handlePointerUp);
631
- body.addEventListener("mouseleave", handlePointerMove);
632
- body.addEventListener("mousemove", handlePointerMove);
633
- body.addEventListener("touchmove", handlePointerMove, {
634
- passive: false
635
- });
630
+ body.addEventListener("pointerleave", handlePointerMove);
631
+ body.addEventListener("pointermove", handlePointerMove);
636
632
  }
637
633
  });
638
634
  }
639
- window.addEventListener("mouseup", handlePointerUp);
640
- window.addEventListener("touchcancel", handlePointerUp);
641
- window.addEventListener("touchend", handlePointerUp);
635
+ window.addEventListener("pointerup", handlePointerUp);
636
+ window.addEventListener("pointercancel", handlePointerUp);
642
637
  } else {
643
638
  ownerDocumentCounts.forEach((count, ownerDocument) => {
644
639
  const {
645
640
  body
646
641
  } = ownerDocument;
647
642
  if (count > 0) {
648
- body.addEventListener("mousedown", handlePointerDown);
649
- body.addEventListener("mousemove", handlePointerMove);
650
- body.addEventListener("touchmove", handlePointerMove, {
651
- passive: false
643
+ body.addEventListener("pointerdown", handlePointerDown, {
644
+ capture: true
652
645
  });
653
- body.addEventListener("touchstart", handlePointerDown);
646
+ body.addEventListener("pointermove", handlePointerMove);
654
647
  }
655
648
  });
656
649
  }
@@ -889,7 +882,7 @@ function adjustLayoutByDelta({
889
882
  if (!fuzzyNumbersEqual(prevSize, safeSize)) {
890
883
  deltaApplied += prevSize - safeSize;
891
884
  nextLayout[index] = safeSize;
892
- if (deltaApplied.toFixed(3).localeCompare(Math.abs(delta).toFixed(3), undefined, {
885
+ if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), undefined, {
893
886
  numeric: true
894
887
  }) >= 0) {
895
888
  break;
@@ -1379,12 +1372,12 @@ function computePanelFlexBoxStyle({
1379
1372
  if (size == null) {
1380
1373
  // Initial render (before panels have registered themselves)
1381
1374
  // In order to support server rendering, fall back to default size if provided
1382
- flexGrow = defaultSize != undefined ? defaultSize.toFixed(precision) : "1";
1375
+ flexGrow = defaultSize != undefined ? defaultSize.toPrecision(precision) : "1";
1383
1376
  } else if (panelData.length === 1) {
1384
1377
  // Special case: Single panel group should always fill full width/height
1385
1378
  flexGrow = "1";
1386
1379
  } else {
1387
- flexGrow = size.toFixed(precision);
1380
+ flexGrow = size.toPrecision(precision);
1388
1381
  }
1389
1382
  return {
1390
1383
  flexBasis: 0,
@@ -2038,7 +2031,7 @@ function PanelGroupWithForwardedRef({
2038
2031
 
2039
2032
  // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)
2040
2033
  // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)
2041
- if (isMouseEvent(event) || isTouchEvent(event)) {
2034
+ if (isPointerEvent(event) || isMouseEvent(event)) {
2042
2035
  // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.
2043
2036
  // In this case, Panel sizes might not change–
2044
2037
  // but updating cursor in this scenario would cause a flicker.
@@ -46,6 +46,8 @@ const {
46
46
  // `toString()` prevents bundlers from trying to `import { useId } from 'react'`
47
47
  const useId = React__namespace["useId".toString()];
48
48
 
49
+ // The "contextmenu" event is not supported as a PointerEvent in all browsers yet, so MouseEvent still need to be handled
50
+
49
51
  const PanelGroupContext = createContext(null);
50
52
  PanelGroupContext.displayName = "PanelGroupContext";
51
53
 
@@ -236,27 +238,26 @@ function setGlobalCursorStyle(state, constraintFlags) {
236
238
  function isKeyDown(event) {
237
239
  return event.type === "keydown";
238
240
  }
241
+ function isPointerEvent(event) {
242
+ return event.type.startsWith("pointer");
243
+ }
239
244
  function isMouseEvent(event) {
240
245
  return event.type.startsWith("mouse");
241
246
  }
242
- function isTouchEvent(event) {
243
- return event.type.startsWith("touch");
244
- }
245
247
 
246
248
  function getResizeEventCoordinates(event) {
247
- if (isMouseEvent(event)) {
249
+ if (isPointerEvent(event)) {
250
+ if (event.isPrimary) {
251
+ return {
252
+ x: event.clientX,
253
+ y: event.clientY
254
+ };
255
+ }
256
+ } else if (isMouseEvent(event)) {
248
257
  return {
249
258
  x: event.clientX,
250
259
  y: event.clientY
251
260
  };
252
- } else if (isTouchEvent(event)) {
253
- const touch = event.touches[0];
254
- if (touch && touch.clientX && touch.clientY) {
255
- return {
256
- x: touch.clientX,
257
- y: touch.clientY
258
- };
259
- }
260
261
  }
261
262
  return {
262
263
  x: Infinity,
@@ -448,6 +449,7 @@ function handlePointerDown(event) {
448
449
  if (intersectingHandles.length > 0) {
449
450
  updateResizeHandlerStates("down", event);
450
451
  event.preventDefault();
452
+ event.stopPropagation();
451
453
  }
452
454
  }
453
455
  function handlePointerMove(event) {
@@ -596,15 +598,12 @@ function updateListeners() {
596
598
  body
597
599
  } = ownerDocument;
598
600
  body.removeEventListener("contextmenu", handlePointerUp);
599
- body.removeEventListener("mousedown", handlePointerDown);
600
- body.removeEventListener("mouseleave", handlePointerMove);
601
- body.removeEventListener("mousemove", handlePointerMove);
602
- body.removeEventListener("touchmove", handlePointerMove);
603
- body.removeEventListener("touchstart", handlePointerDown);
601
+ body.removeEventListener("pointerdown", handlePointerDown);
602
+ body.removeEventListener("pointerleave", handlePointerMove);
603
+ body.removeEventListener("pointermove", handlePointerMove);
604
604
  });
605
- window.removeEventListener("mouseup", handlePointerUp);
606
- window.removeEventListener("touchcancel", handlePointerUp);
607
- window.removeEventListener("touchend", handlePointerUp);
605
+ window.removeEventListener("pointerup", handlePointerUp);
606
+ window.removeEventListener("pointercancel", handlePointerUp);
608
607
  if (registeredResizeHandlers.size > 0) {
609
608
  if (isPointerDown) {
610
609
  if (intersectingHandles.length > 0) {
@@ -614,29 +613,23 @@ function updateListeners() {
614
613
  } = ownerDocument;
615
614
  if (count > 0) {
616
615
  body.addEventListener("contextmenu", handlePointerUp);
617
- body.addEventListener("mouseleave", handlePointerMove);
618
- body.addEventListener("mousemove", handlePointerMove);
619
- body.addEventListener("touchmove", handlePointerMove, {
620
- passive: false
621
- });
616
+ body.addEventListener("pointerleave", handlePointerMove);
617
+ body.addEventListener("pointermove", handlePointerMove);
622
618
  }
623
619
  });
624
620
  }
625
- window.addEventListener("mouseup", handlePointerUp);
626
- window.addEventListener("touchcancel", handlePointerUp);
627
- window.addEventListener("touchend", handlePointerUp);
621
+ window.addEventListener("pointerup", handlePointerUp);
622
+ window.addEventListener("pointercancel", handlePointerUp);
628
623
  } else {
629
624
  ownerDocumentCounts.forEach((count, ownerDocument) => {
630
625
  const {
631
626
  body
632
627
  } = ownerDocument;
633
628
  if (count > 0) {
634
- body.addEventListener("mousedown", handlePointerDown);
635
- body.addEventListener("mousemove", handlePointerMove);
636
- body.addEventListener("touchmove", handlePointerMove, {
637
- passive: false
629
+ body.addEventListener("pointerdown", handlePointerDown, {
630
+ capture: true
638
631
  });
639
- body.addEventListener("touchstart", handlePointerDown);
632
+ body.addEventListener("pointermove", handlePointerMove);
640
633
  }
641
634
  });
642
635
  }
@@ -875,7 +868,7 @@ function adjustLayoutByDelta({
875
868
  if (!fuzzyNumbersEqual(prevSize, safeSize)) {
876
869
  deltaApplied += prevSize - safeSize;
877
870
  nextLayout[index] = safeSize;
878
- if (deltaApplied.toFixed(3).localeCompare(Math.abs(delta).toFixed(3), undefined, {
871
+ if (deltaApplied.toPrecision(3).localeCompare(Math.abs(delta).toPrecision(3), undefined, {
879
872
  numeric: true
880
873
  }) >= 0) {
881
874
  break;
@@ -1241,12 +1234,12 @@ function computePanelFlexBoxStyle({
1241
1234
  if (size == null) {
1242
1235
  // Initial render (before panels have registered themselves)
1243
1236
  // In order to support server rendering, fall back to default size if provided
1244
- flexGrow = defaultSize != undefined ? defaultSize.toFixed(precision) : "1";
1237
+ flexGrow = defaultSize != undefined ? defaultSize.toPrecision(precision) : "1";
1245
1238
  } else if (panelData.length === 1) {
1246
1239
  // Special case: Single panel group should always fill full width/height
1247
1240
  flexGrow = "1";
1248
1241
  } else {
1249
- flexGrow = size.toFixed(precision);
1242
+ flexGrow = size.toPrecision(precision);
1250
1243
  }
1251
1244
  return {
1252
1245
  flexBasis: 0,
@@ -1830,7 +1823,7 @@ function PanelGroupWithForwardedRef({
1830
1823
 
1831
1824
  // Only update the cursor for layout changes triggered by touch/mouse events (not keyboard)
1832
1825
  // Update the cursor even if the layout hasn't changed (we may need to show an invalid cursor state)
1833
- if (isMouseEvent(event) || isTouchEvent(event)) {
1826
+ if (isPointerEvent(event) || isMouseEvent(event)) {
1834
1827
  // Watch for multiple subsequent deltas; this might occur for tiny cursor movements.
1835
1828
  // In this case, Panel sizes might not change–
1836
1829
  // but updating cursor in this scenario would cause a flicker.