@radix-ui/react-scroll-area 1.2.14 → 1.2.15-rc.1784059564143

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/dist/index.mjs CHANGED
@@ -1,4 +1,6 @@
1
1
  "use client";
2
+ var __defProp = Object.defineProperty;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
2
4
 
3
5
  // src/scroll-area.tsx
4
6
  import * as React2 from "react";
@@ -20,14 +22,15 @@ function useStateMachine(initialState, machine) {
20
22
  return nextState ?? state;
21
23
  }, initialState);
22
24
  }
25
+ __name(useStateMachine, "useStateMachine");
23
26
 
24
27
  // src/scroll-area.tsx
25
28
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
26
29
  var SCROLL_AREA_NAME = "ScrollArea";
27
30
  var [createScrollAreaContext, createScrollAreaScope] = createContextScope(SCROLL_AREA_NAME);
28
31
  var [ScrollAreaProvider, useScrollAreaContext] = createScrollAreaContext(SCROLL_AREA_NAME);
29
- var ScrollArea = React2.forwardRef(
30
- (props, forwardedRef) => {
32
+ var ScrollArea = /* @__PURE__ */ React2.forwardRef(
33
+ /* @__PURE__ */ __name(function ScrollArea2(props, forwardedRef) {
31
34
  const {
32
35
  __scopeScrollArea,
33
36
  type = "hover",
@@ -85,12 +88,12 @@ var ScrollArea = React2.forwardRef(
85
88
  )
86
89
  }
87
90
  );
88
- }
91
+ }, "ScrollArea")
89
92
  );
90
- ScrollArea.displayName = SCROLL_AREA_NAME;
91
93
  var VIEWPORT_NAME = "ScrollAreaViewport";
92
- var ScrollAreaViewport = React2.forwardRef(
93
- (props, forwardedRef) => {
94
+ var ScrollAreaViewport = /* @__PURE__ */ React2.forwardRef(
95
+ // blank line to reduce diff noise
96
+ /* @__PURE__ */ __name(function ScrollAreaViewport2(props, forwardedRef) {
94
97
  const { __scopeScrollArea, children, nonce, ...viewportProps } = props;
95
98
  const context = useScrollAreaContext(VIEWPORT_NAME, __scopeScrollArea);
96
99
  const ref = React2.useRef(null);
@@ -123,11 +126,10 @@ var ScrollAreaViewport = React2.forwardRef(
123
126
  }
124
127
  )
125
128
  ] });
126
- }
129
+ }, "ScrollAreaViewport")
127
130
  );
128
- ScrollAreaViewport.displayName = VIEWPORT_NAME;
129
- var ScrollAreaViewportStyle = React2.memo(
130
- ({ nonce }) => {
131
+ var ScrollAreaViewportStyle = /* @__PURE__ */ React2.memo(
132
+ /* @__PURE__ */ __name(function ScrollAreaViewportStyle2({ nonce }) {
131
133
  return /* @__PURE__ */ jsx(
132
134
  "style",
133
135
  {
@@ -137,12 +139,13 @@ var ScrollAreaViewportStyle = React2.memo(
137
139
  nonce
138
140
  }
139
141
  );
140
- },
142
+ }, "ScrollAreaViewportStyle"),
141
143
  (prevProps, nextProps) => prevProps.nonce === nextProps.nonce
142
144
  );
143
145
  var SCROLLBAR_NAME = "ScrollAreaScrollbar";
144
- var ScrollAreaScrollbar = React2.forwardRef(
145
- (props, forwardedRef) => {
146
+ var ScrollAreaScrollbar = /* @__PURE__ */ React2.forwardRef(
147
+ // blank line to reduce diff noise
148
+ /* @__PURE__ */ __name(function ScrollAreaScrollbar2(props, forwardedRef) {
146
149
  const { forceMount, ...scrollbarProps } = props;
147
150
  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
148
151
  const { onScrollbarXEnabledChange, onScrollbarYEnabledChange } = context;
@@ -154,10 +157,9 @@ var ScrollAreaScrollbar = React2.forwardRef(
154
157
  };
155
158
  }, [isHorizontal, onScrollbarXEnabledChange, onScrollbarYEnabledChange]);
156
159
  return context.type === "hover" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarHover, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === "scroll" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarScroll, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === "auto" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarAuto, { ...scrollbarProps, ref: forwardedRef, forceMount }) : context.type === "always" ? /* @__PURE__ */ jsx(ScrollAreaScrollbarVisible, { ...scrollbarProps, ref: forwardedRef, "data-state": "visible" }) : null;
157
- }
160
+ }, "ScrollAreaScrollbar")
158
161
  );
159
- ScrollAreaScrollbar.displayName = SCROLLBAR_NAME;
160
- var ScrollAreaScrollbarHover = React2.forwardRef((props, forwardedRef) => {
162
+ var ScrollAreaScrollbarHover = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarHover2(props, forwardedRef) {
161
163
  const { forceMount, ...scrollbarProps } = props;
162
164
  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
163
165
  const [visible, setVisible] = React2.useState(false);
@@ -165,13 +167,13 @@ var ScrollAreaScrollbarHover = React2.forwardRef((props, forwardedRef) => {
165
167
  const scrollArea = context.scrollArea;
166
168
  let hideTimer = 0;
167
169
  if (scrollArea) {
168
- const handlePointerEnter = () => {
170
+ const handlePointerEnter = /* @__PURE__ */ __name(() => {
169
171
  window.clearTimeout(hideTimer);
170
172
  setVisible(true);
171
- };
172
- const handlePointerLeave = () => {
173
+ }, "handlePointerEnter");
174
+ const handlePointerLeave = /* @__PURE__ */ __name(() => {
173
175
  hideTimer = window.setTimeout(() => setVisible(false), context.scrollHideDelay);
174
- };
176
+ }, "handlePointerLeave");
175
177
  scrollArea.addEventListener("pointerenter", handlePointerEnter);
176
178
  scrollArea.addEventListener("pointerleave", handlePointerLeave);
177
179
  return () => {
@@ -189,8 +191,8 @@ var ScrollAreaScrollbarHover = React2.forwardRef((props, forwardedRef) => {
189
191
  ref: forwardedRef
190
192
  }
191
193
  ) });
192
- });
193
- var ScrollAreaScrollbarScroll = React2.forwardRef((props, forwardedRef) => {
194
+ }, "ScrollAreaScrollbarHover"));
195
+ var ScrollAreaScrollbarScroll = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarScroll2(props, forwardedRef) {
194
196
  const { forceMount, ...scrollbarProps } = props;
195
197
  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
196
198
  const isHorizontal = props.orientation === "horizontal";
@@ -224,7 +226,7 @@ var ScrollAreaScrollbarScroll = React2.forwardRef((props, forwardedRef) => {
224
226
  const scrollDirection = isHorizontal ? "scrollLeft" : "scrollTop";
225
227
  if (viewport) {
226
228
  let prevScrollPos = viewport[scrollDirection];
227
- const handleScroll = () => {
229
+ const handleScroll = /* @__PURE__ */ __name(() => {
228
230
  const scrollPos = viewport[scrollDirection];
229
231
  const hasScrollInDirectionChanged = prevScrollPos !== scrollPos;
230
232
  if (hasScrollInDirectionChanged) {
@@ -232,7 +234,7 @@ var ScrollAreaScrollbarScroll = React2.forwardRef((props, forwardedRef) => {
232
234
  debounceScrollEnd();
233
235
  }
234
236
  prevScrollPos = scrollPos;
235
- };
237
+ }, "handleScroll");
236
238
  viewport.addEventListener("scroll", handleScroll);
237
239
  return () => viewport.removeEventListener("scroll", handleScroll);
238
240
  }
@@ -247,8 +249,8 @@ var ScrollAreaScrollbarScroll = React2.forwardRef((props, forwardedRef) => {
247
249
  onPointerLeave: composeEventHandlers(props.onPointerLeave, () => send("POINTER_LEAVE"))
248
250
  }
249
251
  ) });
250
- });
251
- var ScrollAreaScrollbarAuto = React2.forwardRef((props, forwardedRef) => {
252
+ }, "ScrollAreaScrollbarScroll"));
253
+ var ScrollAreaScrollbarAuto = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarAuto2(props, forwardedRef) {
252
254
  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
253
255
  const { forceMount, ...scrollbarProps } = props;
254
256
  const [visible, setVisible] = React2.useState(false);
@@ -270,8 +272,8 @@ var ScrollAreaScrollbarAuto = React2.forwardRef((props, forwardedRef) => {
270
272
  ref: forwardedRef
271
273
  }
272
274
  ) });
273
- });
274
- var ScrollAreaScrollbarVisible = React2.forwardRef((props, forwardedRef) => {
275
+ }, "ScrollAreaScrollbarAuto"));
276
+ var ScrollAreaScrollbarVisible = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarVisible2(props, forwardedRef) {
275
277
  const { orientation = "vertical", ...scrollbarProps } = props;
276
278
  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
277
279
  const thumbRef = React2.useRef(null);
@@ -287,13 +289,14 @@ var ScrollAreaScrollbarVisible = React2.forwardRef((props, forwardedRef) => {
287
289
  sizes,
288
290
  onSizesChange: setSizes,
289
291
  hasThumb: Boolean(thumbRatio > 0 && thumbRatio < 1),
290
- onThumbChange: (thumb) => thumbRef.current = thumb,
291
- onThumbPointerUp: () => pointerOffsetRef.current = 0,
292
- onThumbPointerDown: (pointerPos) => pointerOffsetRef.current = pointerPos
292
+ onThumbChange: /* @__PURE__ */ __name((thumb) => thumbRef.current = thumb, "onThumbChange"),
293
+ onThumbPointerUp: /* @__PURE__ */ __name(() => pointerOffsetRef.current = 0, "onThumbPointerUp"),
294
+ onThumbPointerDown: /* @__PURE__ */ __name((pointerPos) => pointerOffsetRef.current = pointerPos, "onThumbPointerDown")
293
295
  };
294
296
  function getScrollPosition(pointerPos, dir) {
295
297
  return getScrollPositionFromPointer(pointerPos, pointerOffsetRef.current, sizes, dir);
296
298
  }
299
+ __name(getScrollPosition, "getScrollPosition");
297
300
  if (orientation === "horizontal") {
298
301
  return /* @__PURE__ */ jsx(
299
302
  ScrollAreaScrollbarX,
@@ -341,8 +344,8 @@ var ScrollAreaScrollbarVisible = React2.forwardRef((props, forwardedRef) => {
341
344
  );
342
345
  }
343
346
  return null;
344
- });
345
- var ScrollAreaScrollbarX = React2.forwardRef((props, forwardedRef) => {
347
+ }, "ScrollAreaScrollbarVisible"));
348
+ var ScrollAreaScrollbarX = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarX2(props, forwardedRef) {
346
349
  const { sizes, onSizesChange, ...scrollbarProps } = props;
347
350
  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
348
351
  const [computedStyle, setComputedStyle] = React2.useState();
@@ -391,8 +394,8 @@ var ScrollAreaScrollbarX = React2.forwardRef((props, forwardedRef) => {
391
394
  }
392
395
  }
393
396
  );
394
- });
395
- var ScrollAreaScrollbarY = React2.forwardRef((props, forwardedRef) => {
397
+ }, "ScrollAreaScrollbarX"));
398
+ var ScrollAreaScrollbarY = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarY2(props, forwardedRef) {
396
399
  const { sizes, onSizesChange, ...scrollbarProps } = props;
397
400
  const context = useScrollAreaContext(SCROLLBAR_NAME, props.__scopeScrollArea);
398
401
  const [computedStyle, setComputedStyle] = React2.useState();
@@ -442,9 +445,9 @@ var ScrollAreaScrollbarY = React2.forwardRef((props, forwardedRef) => {
442
445
  }
443
446
  }
444
447
  );
445
- });
448
+ }, "ScrollAreaScrollbarY"));
446
449
  var [ScrollbarProvider, useScrollbarContext] = createScrollAreaContext(SCROLLBAR_NAME);
447
- var ScrollAreaScrollbarImpl = React2.forwardRef((props, forwardedRef) => {
450
+ var ScrollAreaScrollbarImpl = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaScrollbarImpl2(props, forwardedRef) {
448
451
  const {
449
452
  __scopeScrollArea,
450
453
  sizes,
@@ -475,12 +478,13 @@ var ScrollAreaScrollbarImpl = React2.forwardRef((props, forwardedRef) => {
475
478
  onDragScroll({ x, y });
476
479
  }
477
480
  }
481
+ __name(handleDragScroll, "handleDragScroll");
478
482
  React2.useEffect(() => {
479
- const handleWheel = (event) => {
483
+ const handleWheel = /* @__PURE__ */ __name((event) => {
480
484
  const element = event.target;
481
485
  const isScrollbarWheel = scrollbar?.contains(element);
482
486
  if (isScrollbarWheel) handleWheelScroll(event, maxScrollPos);
483
- };
487
+ }, "handleWheel");
484
488
  document.addEventListener("wheel", handleWheel, { passive: false });
485
489
  return () => document.removeEventListener("wheel", handleWheel, { passive: false });
486
490
  }, [viewport, scrollbar, maxScrollPos, handleWheelScroll]);
@@ -529,17 +533,19 @@ var ScrollAreaScrollbarImpl = React2.forwardRef((props, forwardedRef) => {
529
533
  )
530
534
  }
531
535
  );
532
- });
536
+ }, "ScrollAreaScrollbarImpl"));
533
537
  var THUMB_NAME = "ScrollAreaThumb";
534
- var ScrollAreaThumb = React2.forwardRef(
535
- (props, forwardedRef) => {
538
+ var ScrollAreaThumb = /* @__PURE__ */ React2.forwardRef(
539
+ // blank line to reduce diff noise
540
+ /* @__PURE__ */ __name(function ScrollAreaThumb2(props, forwardedRef) {
536
541
  const { forceMount, ...thumbProps } = props;
537
542
  const scrollbarContext = useScrollbarContext(THUMB_NAME, props.__scopeScrollArea);
538
543
  return /* @__PURE__ */ jsx(Presence, { present: forceMount || scrollbarContext.hasThumb, children: /* @__PURE__ */ jsx(ScrollAreaThumbImpl, { ref: forwardedRef, ...thumbProps }) });
539
- }
544
+ }, "ScrollAreaThumb")
540
545
  );
541
- var ScrollAreaThumbImpl = React2.forwardRef(
542
- (props, forwardedRef) => {
546
+ var ScrollAreaThumbImpl = /* @__PURE__ */ React2.forwardRef(
547
+ // blank line to reduce diff noise
548
+ /* @__PURE__ */ __name(function ScrollAreaThumbImpl2(props, forwardedRef) {
543
549
  const { __scopeScrollArea, style, ...thumbProps } = props;
544
550
  const scrollAreaContext = useScrollAreaContext(THUMB_NAME, __scopeScrollArea);
545
551
  const scrollbarContext = useScrollbarContext(THUMB_NAME, __scopeScrollArea);
@@ -555,14 +561,14 @@ var ScrollAreaThumbImpl = React2.forwardRef(
555
561
  React2.useEffect(() => {
556
562
  const viewport = scrollAreaContext.viewport;
557
563
  if (viewport) {
558
- const handleScroll = () => {
564
+ const handleScroll = /* @__PURE__ */ __name(() => {
559
565
  debounceScrollEnd();
560
566
  if (!removeUnlinkedScrollListenerRef.current) {
561
567
  const listener = addUnlinkedScrollListener(viewport, onThumbPositionChange);
562
568
  removeUnlinkedScrollListenerRef.current = listener;
563
569
  onThumbPositionChange();
564
570
  }
565
- };
571
+ }, "handleScroll");
566
572
  onThumbPositionChange();
567
573
  viewport.addEventListener("scroll", handleScroll);
568
574
  return () => viewport.removeEventListener("scroll", handleScroll);
@@ -589,20 +595,19 @@ var ScrollAreaThumbImpl = React2.forwardRef(
589
595
  onPointerUp: composeEventHandlers(props.onPointerUp, scrollbarContext.onThumbPointerUp)
590
596
  }
591
597
  );
592
- }
598
+ }, "ScrollAreaThumbImpl")
593
599
  );
594
- ScrollAreaThumb.displayName = THUMB_NAME;
595
600
  var CORNER_NAME = "ScrollAreaCorner";
596
- var ScrollAreaCorner = React2.forwardRef(
597
- (props, forwardedRef) => {
601
+ var ScrollAreaCorner = /* @__PURE__ */ React2.forwardRef(
602
+ // blank line to reduce diff noise
603
+ /* @__PURE__ */ __name(function ScrollAreaCorner2(props, forwardedRef) {
598
604
  const context = useScrollAreaContext(CORNER_NAME, props.__scopeScrollArea);
599
605
  const hasBothScrollbarsVisible = Boolean(context.scrollbarX && context.scrollbarY);
600
606
  const hasCorner = context.type !== "scroll" && hasBothScrollbarsVisible;
601
607
  return hasCorner ? /* @__PURE__ */ jsx(ScrollAreaCornerImpl, { ...props, ref: forwardedRef }) : null;
602
- }
608
+ }, "ScrollAreaCorner")
603
609
  );
604
- ScrollAreaCorner.displayName = CORNER_NAME;
605
- var ScrollAreaCornerImpl = React2.forwardRef((props, forwardedRef) => {
610
+ var ScrollAreaCornerImpl = /* @__PURE__ */ React2.forwardRef(/* @__PURE__ */ __name(function ScrollAreaCornerImpl2(props, forwardedRef) {
606
611
  const { __scopeScrollArea, ...cornerProps } = props;
607
612
  const context = useScrollAreaContext(CORNER_NAME, __scopeScrollArea);
608
613
  const [width, setWidth] = React2.useState(0);
@@ -641,20 +646,23 @@ var ScrollAreaCornerImpl = React2.forwardRef((props, forwardedRef) => {
641
646
  }
642
647
  }
643
648
  ) : null;
644
- });
649
+ }, "ScrollAreaCornerImpl"));
645
650
  function toInt(value) {
646
651
  return value ? parseInt(value, 10) : 0;
647
652
  }
653
+ __name(toInt, "toInt");
648
654
  function getThumbRatio(viewportSize, contentSize) {
649
655
  const ratio = viewportSize / contentSize;
650
656
  return isNaN(ratio) ? 0 : ratio;
651
657
  }
658
+ __name(getThumbRatio, "getThumbRatio");
652
659
  function getThumbSize(sizes) {
653
660
  const ratio = getThumbRatio(sizes.viewport, sizes.content);
654
661
  const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
655
662
  const thumbSize = (sizes.scrollbar.size - scrollbarPadding) * ratio;
656
663
  return Math.max(thumbSize, 18);
657
664
  }
665
+ __name(getThumbSize, "getThumbSize");
658
666
  function getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = "ltr") {
659
667
  const thumbSizePx = getThumbSize(sizes);
660
668
  const thumbCenter = thumbSizePx / 2;
@@ -667,6 +675,7 @@ function getScrollPositionFromPointer(pointerPos, pointerOffset, sizes, dir = "l
667
675
  const interpolate = linearScale([minPointerPos, maxPointerPos], scrollRange);
668
676
  return interpolate(pointerPos);
669
677
  }
678
+ __name(getScrollPositionFromPointer, "getScrollPositionFromPointer");
670
679
  function getThumbOffsetFromScroll(scrollPos, sizes, dir = "ltr") {
671
680
  const thumbSizePx = getThumbSize(sizes);
672
681
  const scrollbarPadding = sizes.scrollbar.paddingStart + sizes.scrollbar.paddingEnd;
@@ -678,6 +687,7 @@ function getThumbOffsetFromScroll(scrollPos, sizes, dir = "ltr") {
678
687
  const interpolate = linearScale([0, maxScrollPos], [0, maxThumbPos]);
679
688
  return interpolate(scrollWithoutMomentum);
680
689
  }
690
+ __name(getThumbOffsetFromScroll, "getThumbOffsetFromScroll");
681
691
  function linearScale(input, output) {
682
692
  return (value) => {
683
693
  if (input[0] === input[1] || output[0] === output[1]) return output[0];
@@ -685,23 +695,25 @@ function linearScale(input, output) {
685
695
  return output[0] + ratio * (value - input[0]);
686
696
  };
687
697
  }
698
+ __name(linearScale, "linearScale");
688
699
  function isScrollingWithinScrollbarBounds(scrollPos, maxScrollPos) {
689
700
  return scrollPos > 0 && scrollPos < maxScrollPos;
690
701
  }
691
- var addUnlinkedScrollListener = (node, handler = () => {
702
+ __name(isScrollingWithinScrollbarBounds, "isScrollingWithinScrollbarBounds");
703
+ var addUnlinkedScrollListener = /* @__PURE__ */ __name((node, handler = () => {
692
704
  }) => {
693
705
  let prevPosition = { left: node.scrollLeft, top: node.scrollTop };
694
706
  let rAF = 0;
695
- (function loop() {
707
+ (/* @__PURE__ */ __name((function loop() {
696
708
  const position = { left: node.scrollLeft, top: node.scrollTop };
697
709
  const isHorizontalScroll = prevPosition.left !== position.left;
698
710
  const isVerticalScroll = prevPosition.top !== position.top;
699
711
  if (isHorizontalScroll || isVerticalScroll) handler();
700
712
  prevPosition = position;
701
713
  rAF = window.requestAnimationFrame(loop);
702
- })();
714
+ }), "loop"))();
703
715
  return () => window.cancelAnimationFrame(rAF);
704
- };
716
+ }, "addUnlinkedScrollListener");
705
717
  function useDebounceCallback(callback, delay) {
706
718
  const handleCallback = useCallbackRef(callback);
707
719
  const debounceTimerRef = React2.useRef(0);
@@ -711,6 +723,7 @@ function useDebounceCallback(callback, delay) {
711
723
  debounceTimerRef.current = window.setTimeout(handleCallback, delay);
712
724
  }, [handleCallback, delay]);
713
725
  }
726
+ __name(useDebounceCallback, "useDebounceCallback");
714
727
  function useResizeObserver(element, onResize) {
715
728
  const handleResize = useCallbackRef(onResize);
716
729
  useLayoutEffect(() => {
@@ -728,6 +741,7 @@ function useResizeObserver(element, onResize) {
728
741
  }
729
742
  }, [element, handleResize]);
730
743
  }
744
+ __name(useResizeObserver, "useResizeObserver");
731
745
  var Root = ScrollArea;
732
746
  var Viewport = ScrollAreaViewport;
733
747
  var Scrollbar = ScrollAreaScrollbar;