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.
- package/README.md +4 -0
- package/dist/declarations/src/Panel.d.ts +1 -1
- package/dist/declarations/src/PanelGroup.d.ts +1 -1
- package/dist/declarations/src/PanelResizeHandle.d.ts +6 -3
- package/dist/react-resizable-panels.browser.cjs.js +90 -94
- package/dist/react-resizable-panels.browser.development.cjs.js +90 -94
- package/dist/react-resizable-panels.browser.development.esm.js +38 -41
- package/dist/react-resizable-panels.browser.esm.js +38 -41
- package/dist/react-resizable-panels.cjs.js +90 -94
- package/dist/react-resizable-panels.development.cjs.js +90 -94
- package/dist/react-resizable-panels.development.esm.js +38 -41
- package/dist/react-resizable-panels.development.node.cjs.js +89 -92
- package/dist/react-resizable-panels.development.node.esm.js +37 -39
- package/dist/react-resizable-panels.esm.js +38 -41
- package/dist/react-resizable-panels.node.cjs.js +89 -92
- package/dist/react-resizable-panels.node.esm.js +37 -39
- package/package.json +7 -2
- package/.eslintrc.cjs +0 -27
- package/CHANGELOG.md +0 -574
- package/dist/declarations/src/vendor/react.d.ts +0 -7
- package/jest.config.js +0 -10
- package/src/Panel.test.tsx +0 -1084
- package/src/Panel.ts +0 -259
- package/src/PanelGroup.test.tsx +0 -443
- package/src/PanelGroup.ts +0 -999
- package/src/PanelGroupContext.ts +0 -42
- package/src/PanelResizeHandle.test.tsx +0 -367
- package/src/PanelResizeHandle.ts +0 -246
- package/src/PanelResizeHandleRegistry.ts +0 -336
- package/src/constants.ts +0 -1
- package/src/env-conditions/browser.ts +0 -1
- package/src/env-conditions/development.ts +0 -1
- package/src/env-conditions/node.ts +0 -1
- package/src/env-conditions/production.ts +0 -1
- package/src/env-conditions/unknown.ts +0 -1
- package/src/hooks/useForceUpdate.ts +0 -7
- package/src/hooks/useIsomorphicEffect.ts +0 -8
- package/src/hooks/useUniqueId.ts +0 -19
- package/src/hooks/useWindowSplitterBehavior.ts +0 -90
- package/src/hooks/useWindowSplitterPanelGroupBehavior.ts +0 -201
- package/src/index.ts +0 -77
- package/src/types.ts +0 -5
- package/src/utils/adjustLayoutByDelta.test.ts +0 -2061
- package/src/utils/adjustLayoutByDelta.ts +0 -308
- package/src/utils/arrays.ts +0 -13
- package/src/utils/assert.ts +0 -10
- package/src/utils/calculateAriaValues.test.ts +0 -106
- package/src/utils/calculateAriaValues.ts +0 -45
- package/src/utils/calculateDeltaPercentage.ts +0 -63
- package/src/utils/calculateDragOffsetPercentage.ts +0 -40
- package/src/utils/calculateUnsafeDefaultLayout.test.ts +0 -87
- package/src/utils/calculateUnsafeDefaultLayout.ts +0 -50
- package/src/utils/callPanelCallbacks.ts +0 -49
- package/src/utils/compareLayouts.test.ts +0 -9
- package/src/utils/compareLayouts.ts +0 -12
- package/src/utils/computePanelFlexBoxStyle.test.ts +0 -123
- package/src/utils/computePanelFlexBoxStyle.ts +0 -50
- package/src/utils/csp.ts +0 -9
- package/src/utils/cursor.ts +0 -103
- package/src/utils/debounce.ts +0 -18
- package/src/utils/determinePivotIndices.ts +0 -15
- package/src/utils/dom/getPanelElement.ts +0 -10
- package/src/utils/dom/getPanelElementsForGroup.ts +0 -8
- package/src/utils/dom/getPanelGroupElement.ts +0 -21
- package/src/utils/dom/getResizeHandleElement.ts +0 -10
- package/src/utils/dom/getResizeHandleElementIndex.ts +0 -13
- package/src/utils/dom/getResizeHandleElementsForGroup.ts +0 -10
- package/src/utils/dom/getResizeHandlePanelIds.ts +0 -19
- package/src/utils/events/getResizeEventCoordinates.ts +0 -23
- package/src/utils/events/getResizeEventCursorPosition.ts +0 -14
- package/src/utils/events/index.ts +0 -13
- package/src/utils/getInputType.ts +0 -5
- package/src/utils/initializeDefaultStorage.ts +0 -26
- package/src/utils/numbers/fuzzyCompareNumbers.test.ts +0 -16
- package/src/utils/numbers/fuzzyCompareNumbers.ts +0 -21
- package/src/utils/numbers/fuzzyLayoutsEqual.ts +0 -22
- package/src/utils/numbers/fuzzyNumbersEqual.ts +0 -9
- package/src/utils/rects/getIntersectingRectangle.test.ts +0 -198
- package/src/utils/rects/getIntersectingRectangle.ts +0 -28
- package/src/utils/rects/intersects.test.ts +0 -197
- package/src/utils/rects/intersects.ts +0 -23
- package/src/utils/rects/types.ts +0 -6
- package/src/utils/resizePanel.test.ts +0 -59
- package/src/utils/resizePanel.ts +0 -47
- package/src/utils/serialization.ts +0 -87
- package/src/utils/test-utils.ts +0 -205
- package/src/utils/validatePanelConstraints.test.ts +0 -143
- package/src/utils/validatePanelConstraints.ts +0 -69
- package/src/utils/validatePanelGroupLayout.test.ts +0 -148
- package/src/utils/validatePanelGroupLayout.ts +0 -95
- package/src/vendor/react.ts +0 -73
- 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 ?
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
2422
|
-
|
|
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
|
-
|
|
2436
|
+
onClick,
|
|
2437
|
+
onDragging,
|
|
2438
|
+
onPointerUp
|
|
2444
2439
|
} = callbacksRef.current;
|
|
2445
|
-
|
|
2446
|
-
|
|
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
|
}
|