react-resizable-panels 2.0.17 → 2.0.18

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/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.18
4
+
5
+ - Inline object `hitAreaMargins` will not trigger re-initialization logic unless inner values change (#342)
6
+
3
7
  ## 2.0.17
4
8
 
5
9
  - Prevent pointer events handled by resize handles from triggering elements behind/underneath (#338)
@@ -2208,6 +2208,7 @@ function PanelResizeHandle({
2208
2208
  tagName: Type = "div",
2209
2209
  ...rest
2210
2210
  }) {
2211
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2211
2212
  const elementRef = useRef(null);
2212
2213
 
2213
2214
  // Use a ref to guard against users passing inline props
@@ -2247,8 +2248,12 @@ function PanelResizeHandle({
2247
2248
  setResizeHandler(() => resizeHandler);
2248
2249
  }
2249
2250
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2251
+
2252
+ // Extract hit area margins before passing them to the effect's dependency array
2253
+ // so that inline object values won't trigger re-renders
2254
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2255
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2250
2256
  useEffect(() => {
2251
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2252
2257
  if (disabled || resizeHandler == null) {
2253
2258
  return;
2254
2259
  }
@@ -2298,12 +2303,10 @@ function PanelResizeHandle({
2298
2303
  }
2299
2304
  };
2300
2305
  return registerResizeHandle(resizeHandleId, element, direction, {
2301
- // Coarse inputs (e.g. finger/touch)
2302
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2303
- // Fine inputs (e.g. mouse)
2304
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2306
+ coarse: coarseHitAreaMargins,
2307
+ fine: fineHitAreaMargins
2305
2308
  }, setResizeHandlerState);
2306
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2309
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2307
2310
  useWindowSplitterResizeHandlerBehavior({
2308
2311
  disabled,
2309
2312
  handleId: resizeHandleId,
@@ -2314,6 +2314,7 @@ function PanelResizeHandle({
2314
2314
  tagName: Type = "div",
2315
2315
  ...rest
2316
2316
  }) {
2317
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2317
2318
  const elementRef = useRef(null);
2318
2319
 
2319
2320
  // Use a ref to guard against users passing inline props
@@ -2353,8 +2354,12 @@ function PanelResizeHandle({
2353
2354
  setResizeHandler(() => resizeHandler);
2354
2355
  }
2355
2356
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2357
+
2358
+ // Extract hit area margins before passing them to the effect's dependency array
2359
+ // so that inline object values won't trigger re-renders
2360
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2361
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2356
2362
  useEffect(() => {
2357
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2358
2363
  if (disabled || resizeHandler == null) {
2359
2364
  return;
2360
2365
  }
@@ -2404,12 +2409,10 @@ function PanelResizeHandle({
2404
2409
  }
2405
2410
  };
2406
2411
  return registerResizeHandle(resizeHandleId, element, direction, {
2407
- // Coarse inputs (e.g. finger/touch)
2408
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2409
- // Fine inputs (e.g. mouse)
2410
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2412
+ coarse: coarseHitAreaMargins,
2413
+ fine: fineHitAreaMargins
2411
2414
  }, setResizeHandlerState);
2412
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2415
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2413
2416
  useWindowSplitterResizeHandlerBehavior({
2414
2417
  disabled,
2415
2418
  handleId: resizeHandleId,
@@ -2290,6 +2290,7 @@ function PanelResizeHandle({
2290
2290
  tagName: Type = "div",
2291
2291
  ...rest
2292
2292
  }) {
2293
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2293
2294
  const elementRef = useRef(null);
2294
2295
 
2295
2296
  // Use a ref to guard against users passing inline props
@@ -2329,8 +2330,12 @@ function PanelResizeHandle({
2329
2330
  setResizeHandler(() => resizeHandler);
2330
2331
  }
2331
2332
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2333
+
2334
+ // Extract hit area margins before passing them to the effect's dependency array
2335
+ // so that inline object values won't trigger re-renders
2336
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2337
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2332
2338
  useEffect(() => {
2333
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2334
2339
  if (disabled || resizeHandler == null) {
2335
2340
  return;
2336
2341
  }
@@ -2380,12 +2385,10 @@ function PanelResizeHandle({
2380
2385
  }
2381
2386
  };
2382
2387
  return registerResizeHandle(resizeHandleId, element, direction, {
2383
- // Coarse inputs (e.g. finger/touch)
2384
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2385
- // Fine inputs (e.g. mouse)
2386
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2388
+ coarse: coarseHitAreaMargins,
2389
+ fine: fineHitAreaMargins
2387
2390
  }, setResizeHandlerState);
2388
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2391
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2389
2392
  useWindowSplitterResizeHandlerBehavior({
2390
2393
  disabled,
2391
2394
  handleId: resizeHandleId,
@@ -2184,6 +2184,7 @@ function PanelResizeHandle({
2184
2184
  tagName: Type = "div",
2185
2185
  ...rest
2186
2186
  }) {
2187
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2187
2188
  const elementRef = useRef(null);
2188
2189
 
2189
2190
  // Use a ref to guard against users passing inline props
@@ -2223,8 +2224,12 @@ function PanelResizeHandle({
2223
2224
  setResizeHandler(() => resizeHandler);
2224
2225
  }
2225
2226
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2227
+
2228
+ // Extract hit area margins before passing them to the effect's dependency array
2229
+ // so that inline object values won't trigger re-renders
2230
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2231
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2226
2232
  useEffect(() => {
2227
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2228
2233
  if (disabled || resizeHandler == null) {
2229
2234
  return;
2230
2235
  }
@@ -2274,12 +2279,10 @@ function PanelResizeHandle({
2274
2279
  }
2275
2280
  };
2276
2281
  return registerResizeHandle(resizeHandleId, element, direction, {
2277
- // Coarse inputs (e.g. finger/touch)
2278
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2279
- // Fine inputs (e.g. mouse)
2280
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2282
+ coarse: coarseHitAreaMargins,
2283
+ fine: fineHitAreaMargins
2281
2284
  }, setResizeHandlerState);
2282
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2285
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2283
2286
  useWindowSplitterResizeHandlerBehavior({
2284
2287
  disabled,
2285
2288
  handleId: resizeHandleId,
@@ -2210,6 +2210,7 @@ function PanelResizeHandle({
2210
2210
  tagName: Type = "div",
2211
2211
  ...rest
2212
2212
  }) {
2213
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2213
2214
  const elementRef = useRef(null);
2214
2215
 
2215
2216
  // Use a ref to guard against users passing inline props
@@ -2249,8 +2250,12 @@ function PanelResizeHandle({
2249
2250
  setResizeHandler(() => resizeHandler);
2250
2251
  }
2251
2252
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2253
+
2254
+ // Extract hit area margins before passing them to the effect's dependency array
2255
+ // so that inline object values won't trigger re-renders
2256
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2257
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2252
2258
  useEffect(() => {
2253
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2254
2259
  if (disabled || resizeHandler == null) {
2255
2260
  return;
2256
2261
  }
@@ -2300,12 +2305,10 @@ function PanelResizeHandle({
2300
2305
  }
2301
2306
  };
2302
2307
  return registerResizeHandle(resizeHandleId, element, direction, {
2303
- // Coarse inputs (e.g. finger/touch)
2304
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2305
- // Fine inputs (e.g. mouse)
2306
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2308
+ coarse: coarseHitAreaMargins,
2309
+ fine: fineHitAreaMargins
2307
2310
  }, setResizeHandlerState);
2308
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2311
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2309
2312
  useWindowSplitterResizeHandlerBehavior({
2310
2313
  disabled,
2311
2314
  handleId: resizeHandleId,
@@ -2321,6 +2321,7 @@ function PanelResizeHandle({
2321
2321
  tagName: Type = "div",
2322
2322
  ...rest
2323
2323
  }) {
2324
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2324
2325
  const elementRef = useRef(null);
2325
2326
 
2326
2327
  // Use a ref to guard against users passing inline props
@@ -2360,8 +2361,12 @@ function PanelResizeHandle({
2360
2361
  setResizeHandler(() => resizeHandler);
2361
2362
  }
2362
2363
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2364
+
2365
+ // Extract hit area margins before passing them to the effect's dependency array
2366
+ // so that inline object values won't trigger re-renders
2367
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2368
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2363
2369
  useEffect(() => {
2364
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2365
2370
  if (disabled || resizeHandler == null) {
2366
2371
  return;
2367
2372
  }
@@ -2411,12 +2416,10 @@ function PanelResizeHandle({
2411
2416
  }
2412
2417
  };
2413
2418
  return registerResizeHandle(resizeHandleId, element, direction, {
2414
- // Coarse inputs (e.g. finger/touch)
2415
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2416
- // Fine inputs (e.g. mouse)
2417
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2419
+ coarse: coarseHitAreaMargins,
2420
+ fine: fineHitAreaMargins
2418
2421
  }, setResizeHandlerState);
2419
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2422
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2420
2423
  useWindowSplitterResizeHandlerBehavior({
2421
2424
  disabled,
2422
2425
  handleId: resizeHandleId,
@@ -2297,6 +2297,7 @@ function PanelResizeHandle({
2297
2297
  tagName: Type = "div",
2298
2298
  ...rest
2299
2299
  }) {
2300
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2300
2301
  const elementRef = useRef(null);
2301
2302
 
2302
2303
  // Use a ref to guard against users passing inline props
@@ -2336,8 +2337,12 @@ function PanelResizeHandle({
2336
2337
  setResizeHandler(() => resizeHandler);
2337
2338
  }
2338
2339
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2340
+
2341
+ // Extract hit area margins before passing them to the effect's dependency array
2342
+ // so that inline object values won't trigger re-renders
2343
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2344
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2339
2345
  useEffect(() => {
2340
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2341
2346
  if (disabled || resizeHandler == null) {
2342
2347
  return;
2343
2348
  }
@@ -2387,12 +2392,10 @@ function PanelResizeHandle({
2387
2392
  }
2388
2393
  };
2389
2394
  return registerResizeHandle(resizeHandleId, element, direction, {
2390
- // Coarse inputs (e.g. finger/touch)
2391
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2392
- // Fine inputs (e.g. mouse)
2393
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2395
+ coarse: coarseHitAreaMargins,
2396
+ fine: fineHitAreaMargins
2394
2397
  }, setResizeHandlerState);
2395
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2398
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2396
2399
  useWindowSplitterResizeHandlerBehavior({
2397
2400
  disabled,
2398
2401
  handleId: resizeHandleId,
@@ -2089,6 +2089,7 @@ function PanelResizeHandle({
2089
2089
  tagName: Type = "div",
2090
2090
  ...rest
2091
2091
  }) {
2092
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2092
2093
  const elementRef = useRef(null);
2093
2094
 
2094
2095
  // Use a ref to guard against users passing inline props
@@ -2125,8 +2126,12 @@ function PanelResizeHandle({
2125
2126
  setResizeHandler(() => resizeHandler);
2126
2127
  }
2127
2128
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2129
+
2130
+ // Extract hit area margins before passing them to the effect's dependency array
2131
+ // so that inline object values won't trigger re-renders
2132
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2133
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2128
2134
  useEffect(() => {
2129
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2130
2135
  if (disabled || resizeHandler == null) {
2131
2136
  return;
2132
2137
  }
@@ -2176,12 +2181,10 @@ function PanelResizeHandle({
2176
2181
  }
2177
2182
  };
2178
2183
  return registerResizeHandle(resizeHandleId, element, direction, {
2179
- // Coarse inputs (e.g. finger/touch)
2180
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2181
- // Fine inputs (e.g. mouse)
2182
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2184
+ coarse: coarseHitAreaMargins,
2185
+ fine: fineHitAreaMargins
2183
2186
  }, setResizeHandlerState);
2184
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2187
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2185
2188
  useWindowSplitterResizeHandlerBehavior({
2186
2189
  disabled,
2187
2190
  handleId: resizeHandleId,
@@ -2065,6 +2065,7 @@ function PanelResizeHandle({
2065
2065
  tagName: Type = "div",
2066
2066
  ...rest
2067
2067
  }) {
2068
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2068
2069
  const elementRef = useRef(null);
2069
2070
 
2070
2071
  // Use a ref to guard against users passing inline props
@@ -2101,8 +2102,12 @@ function PanelResizeHandle({
2101
2102
  setResizeHandler(() => resizeHandler);
2102
2103
  }
2103
2104
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2105
+
2106
+ // Extract hit area margins before passing them to the effect's dependency array
2107
+ // so that inline object values won't trigger re-renders
2108
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2109
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2104
2110
  useEffect(() => {
2105
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2106
2111
  if (disabled || resizeHandler == null) {
2107
2112
  return;
2108
2113
  }
@@ -2152,12 +2157,10 @@ function PanelResizeHandle({
2152
2157
  }
2153
2158
  };
2154
2159
  return registerResizeHandle(resizeHandleId, element, direction, {
2155
- // Coarse inputs (e.g. finger/touch)
2156
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2157
- // Fine inputs (e.g. mouse)
2158
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2160
+ coarse: coarseHitAreaMargins,
2161
+ fine: fineHitAreaMargins
2159
2162
  }, setResizeHandlerState);
2160
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2163
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2161
2164
  useWindowSplitterResizeHandlerBehavior({
2162
2165
  disabled,
2163
2166
  handleId: resizeHandleId,
@@ -2186,6 +2186,7 @@ function PanelResizeHandle({
2186
2186
  tagName: Type = "div",
2187
2187
  ...rest
2188
2188
  }) {
2189
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
2189
2190
  const elementRef = useRef(null);
2190
2191
 
2191
2192
  // Use a ref to guard against users passing inline props
@@ -2225,8 +2226,12 @@ function PanelResizeHandle({
2225
2226
  setResizeHandler(() => resizeHandler);
2226
2227
  }
2227
2228
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2229
+
2230
+ // Extract hit area margins before passing them to the effect's dependency array
2231
+ // so that inline object values won't trigger re-renders
2232
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2233
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2228
2234
  useEffect(() => {
2229
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2230
2235
  if (disabled || resizeHandler == null) {
2231
2236
  return;
2232
2237
  }
@@ -2276,12 +2281,10 @@ function PanelResizeHandle({
2276
2281
  }
2277
2282
  };
2278
2283
  return registerResizeHandle(resizeHandleId, element, direction, {
2279
- // Coarse inputs (e.g. finger/touch)
2280
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2281
- // Fine inputs (e.g. mouse)
2282
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2284
+ coarse: coarseHitAreaMargins,
2285
+ fine: fineHitAreaMargins
2283
2286
  }, setResizeHandlerState);
2284
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2287
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2285
2288
  useWindowSplitterResizeHandlerBehavior({
2286
2289
  disabled,
2287
2290
  handleId: resizeHandleId,
@@ -1988,6 +1988,7 @@ function PanelResizeHandle({
1988
1988
  tagName: Type = "div",
1989
1989
  ...rest
1990
1990
  }) {
1991
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
1991
1992
  const elementRef = useRef(null);
1992
1993
 
1993
1994
  // Use a ref to guard against users passing inline props
@@ -2024,8 +2025,12 @@ function PanelResizeHandle({
2024
2025
  setResizeHandler(() => resizeHandler);
2025
2026
  }
2026
2027
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2028
+
2029
+ // Extract hit area margins before passing them to the effect's dependency array
2030
+ // so that inline object values won't trigger re-renders
2031
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2032
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2027
2033
  useEffect(() => {
2028
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2029
2034
  if (disabled || resizeHandler == null) {
2030
2035
  return;
2031
2036
  }
@@ -2075,12 +2080,10 @@ function PanelResizeHandle({
2075
2080
  }
2076
2081
  };
2077
2082
  return registerResizeHandle(resizeHandleId, element, direction, {
2078
- // Coarse inputs (e.g. finger/touch)
2079
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2080
- // Fine inputs (e.g. mouse)
2081
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2083
+ coarse: coarseHitAreaMargins,
2084
+ fine: fineHitAreaMargins
2082
2085
  }, setResizeHandlerState);
2083
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2086
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2084
2087
  useWindowSplitterResizeHandlerBehavior({
2085
2088
  disabled,
2086
2089
  handleId: resizeHandleId,
@@ -1964,6 +1964,7 @@ function PanelResizeHandle({
1964
1964
  tagName: Type = "div",
1965
1965
  ...rest
1966
1966
  }) {
1967
+ var _hitAreaMargins$coars, _hitAreaMargins$fine;
1967
1968
  const elementRef = useRef(null);
1968
1969
 
1969
1970
  // Use a ref to guard against users passing inline props
@@ -2000,8 +2001,12 @@ function PanelResizeHandle({
2000
2001
  setResizeHandler(() => resizeHandler);
2001
2002
  }
2002
2003
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
2004
+
2005
+ // Extract hit area margins before passing them to the effect's dependency array
2006
+ // so that inline object values won't trigger re-renders
2007
+ const coarseHitAreaMargins = (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15;
2008
+ const fineHitAreaMargins = (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5;
2003
2009
  useEffect(() => {
2004
- var _hitAreaMargins$coars, _hitAreaMargins$fine;
2005
2010
  if (disabled || resizeHandler == null) {
2006
2011
  return;
2007
2012
  }
@@ -2051,12 +2056,10 @@ function PanelResizeHandle({
2051
2056
  }
2052
2057
  };
2053
2058
  return registerResizeHandle(resizeHandleId, element, direction, {
2054
- // Coarse inputs (e.g. finger/touch)
2055
- coarse: (_hitAreaMargins$coars = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.coarse) !== null && _hitAreaMargins$coars !== void 0 ? _hitAreaMargins$coars : 15,
2056
- // Fine inputs (e.g. mouse)
2057
- fine: (_hitAreaMargins$fine = hitAreaMargins === null || hitAreaMargins === void 0 ? void 0 : hitAreaMargins.fine) !== null && _hitAreaMargins$fine !== void 0 ? _hitAreaMargins$fine : 5
2059
+ coarse: coarseHitAreaMargins,
2060
+ fine: fineHitAreaMargins
2058
2061
  }, setResizeHandlerState);
2059
- }, [direction, disabled, hitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2062
+ }, [coarseHitAreaMargins, direction, disabled, fineHitAreaMargins, registerResizeHandleWithParentGroup, resizeHandleId, resizeHandler, startDragging, stopDragging]);
2060
2063
  useWindowSplitterResizeHandlerBehavior({
2061
2064
  disabled,
2062
2065
  handleId: resizeHandleId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-resizable-panels",
3
- "version": "2.0.17",
3
+ "version": "2.0.18",
4
4
  "description": "React components for resizable panel groups/layouts",
5
5
  "author": "Brian Vaughn <brian.david.vaughn@gmail.com>",
6
6
  "license": "MIT",
@@ -110,6 +110,11 @@ export function PanelResizeHandle({
110
110
  }
111
111
  }, [disabled, resizeHandleId, registerResizeHandleWithParentGroup]);
112
112
 
113
+ // Extract hit area margins before passing them to the effect's dependency array
114
+ // so that inline object values won't trigger re-renders
115
+ const coarseHitAreaMargins = hitAreaMargins?.coarse ?? 15;
116
+ const fineHitAreaMargins = hitAreaMargins?.fine ?? 5;
117
+
113
118
  useEffect(() => {
114
119
  if (disabled || resizeHandler == null) {
115
120
  return;
@@ -168,17 +173,16 @@ export function PanelResizeHandle({
168
173
  element,
169
174
  direction,
170
175
  {
171
- // Coarse inputs (e.g. finger/touch)
172
- coarse: hitAreaMargins?.coarse ?? 15,
173
- // Fine inputs (e.g. mouse)
174
- fine: hitAreaMargins?.fine ?? 5,
176
+ coarse: coarseHitAreaMargins,
177
+ fine: fineHitAreaMargins,
175
178
  },
176
179
  setResizeHandlerState
177
180
  );
178
181
  }, [
182
+ coarseHitAreaMargins,
179
183
  direction,
180
184
  disabled,
181
- hitAreaMargins,
185
+ fineHitAreaMargins,
182
186
  registerResizeHandleWithParentGroup,
183
187
  resizeHandleId,
184
188
  resizeHandler,