@diceui/shared
Advanced tools
+3
-3
@@ -5,3 +5,3 @@ import * as React from 'react'; | ||
| type InputValue = string[] | string; | ||
| interface BubbleInputProps<T = InputValue> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "checked" | "onReset"> { | ||
| interface VisuallyHiddenInputProps<T = InputValue> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "checked" | "onReset"> { | ||
| value?: T; | ||
@@ -13,3 +13,3 @@ checked?: boolean; | ||
| } | ||
| declare function BubbleInput<T = InputValue>(props: BubbleInputProps<T>): React.JSX.Element; | ||
| declare function VisuallyHiddenInput<T = InputValue>(props: VisuallyHiddenInputProps<T>): React.JSX.Element; | ||
@@ -697,2 +697,2 @@ /** | ||
| export { type Align, type AnchorPositionerProps, BubbleInput, type CollectionGroupMap, type CollectionItem, type CollectionItemMap, DATA_DISMISSABLE_LAYER_ATTR, DATA_DISMISSABLE_LAYER_STYLE_ATTR, DATA_ITEM_ATTR, DATA_VALUE_ATTR, type Direction, type FilterStore, type FocusOutsideEvent, type ForwardRefComponent, type HighlightingDirection, type Orientation, type PointerDownOutsideEvent, Portal, type PortalProps, Presence, type PresenceProps, Primitive, type PrimitivePropsWithRef, type ProgressState, type Side, Slot, type SlotProps, Slottable, VAR_ANCHOR_HEIGHT, VAR_ANCHOR_WIDTH, VAR_AVAILABLE_HEIGHT, VAR_AVAILABLE_WIDTH, VAR_TRANSFORM_ORIGIN, center, compareNodePosition, composeEventHandlers, composeRefs, createContext, dispatchDiscreteCustomEvent, findNextItem, focusRing, forwardRef, fullSize, getOwnerDocument, getOwnerWindow, getPlatform, getProgressState, isFirefox, isIOS, isIPad, isIPhone, isMac, isMobileFirefox, isPinchZoomActive, isSafari, noSelect, overlay, scrollableHidden, testPlatform, truncate, useAnchor, useAnchorPositioner, useCallbackRef, useCollection, useComposedRefs, useControllableState, useDirection, useDismiss, useEscapeKeydown, useEvent, useEventCallback, useFilter, useFilterStore, useFormControl, useFormReset, useId, useIsomorphicLayoutEffect, useItemCollection, useLabel, useLayoutEffect, useListHighlighting, useMounted, usePrevious, useProgress, useScrollLock, useSize, useStateMachine, useTypeahead, visuallyHidden, wrapArray }; | ||
| export { type Align, type AnchorPositionerProps, type CollectionGroupMap, type CollectionItem, type CollectionItemMap, DATA_DISMISSABLE_LAYER_ATTR, DATA_DISMISSABLE_LAYER_STYLE_ATTR, DATA_ITEM_ATTR, DATA_VALUE_ATTR, type Direction, type FilterStore, type FocusOutsideEvent, type ForwardRefComponent, type HighlightingDirection, type Orientation, type PointerDownOutsideEvent, Portal, type PortalProps, Presence, type PresenceProps, Primitive, type PrimitivePropsWithRef, type ProgressState, type Side, Slot, type SlotProps, Slottable, VAR_ANCHOR_HEIGHT, VAR_ANCHOR_WIDTH, VAR_AVAILABLE_HEIGHT, VAR_AVAILABLE_WIDTH, VAR_TRANSFORM_ORIGIN, VisuallyHiddenInput, center, compareNodePosition, composeEventHandlers, composeRefs, createContext, dispatchDiscreteCustomEvent, findNextItem, focusRing, forwardRef, fullSize, getOwnerDocument, getOwnerWindow, getPlatform, getProgressState, isFirefox, isIOS, isIPad, isIPhone, isMac, isMobileFirefox, isPinchZoomActive, isSafari, noSelect, overlay, scrollableHidden, testPlatform, truncate, useAnchor, useAnchorPositioner, useCallbackRef, useCollection, useComposedRefs, useControllableState, useDirection, useDismiss, useEscapeKeydown, useEvent, useEventCallback, useFilter, useFilterStore, useFormControl, useFormReset, useId, useIsomorphicLayoutEffect, useItemCollection, useLabel, useLayoutEffect, useListHighlighting, useMounted, usePrevious, useProgress, useScrollLock, useSize, useStateMachine, useTypeahead, visuallyHidden, wrapArray }; |
+3
-3
@@ -5,3 +5,3 @@ import * as React from 'react'; | ||
| type InputValue = string[] | string; | ||
| interface BubbleInputProps<T = InputValue> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "checked" | "onReset"> { | ||
| interface VisuallyHiddenInputProps<T = InputValue> extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "value" | "checked" | "onReset"> { | ||
| value?: T; | ||
@@ -13,3 +13,3 @@ checked?: boolean; | ||
| } | ||
| declare function BubbleInput<T = InputValue>(props: BubbleInputProps<T>): React.JSX.Element; | ||
| declare function VisuallyHiddenInput<T = InputValue>(props: VisuallyHiddenInputProps<T>): React.JSX.Element; | ||
@@ -697,2 +697,2 @@ /** | ||
| export { type Align, type AnchorPositionerProps, BubbleInput, type CollectionGroupMap, type CollectionItem, type CollectionItemMap, DATA_DISMISSABLE_LAYER_ATTR, DATA_DISMISSABLE_LAYER_STYLE_ATTR, DATA_ITEM_ATTR, DATA_VALUE_ATTR, type Direction, type FilterStore, type FocusOutsideEvent, type ForwardRefComponent, type HighlightingDirection, type Orientation, type PointerDownOutsideEvent, Portal, type PortalProps, Presence, type PresenceProps, Primitive, type PrimitivePropsWithRef, type ProgressState, type Side, Slot, type SlotProps, Slottable, VAR_ANCHOR_HEIGHT, VAR_ANCHOR_WIDTH, VAR_AVAILABLE_HEIGHT, VAR_AVAILABLE_WIDTH, VAR_TRANSFORM_ORIGIN, center, compareNodePosition, composeEventHandlers, composeRefs, createContext, dispatchDiscreteCustomEvent, findNextItem, focusRing, forwardRef, fullSize, getOwnerDocument, getOwnerWindow, getPlatform, getProgressState, isFirefox, isIOS, isIPad, isIPhone, isMac, isMobileFirefox, isPinchZoomActive, isSafari, noSelect, overlay, scrollableHidden, testPlatform, truncate, useAnchor, useAnchorPositioner, useCallbackRef, useCollection, useComposedRefs, useControllableState, useDirection, useDismiss, useEscapeKeydown, useEvent, useEventCallback, useFilter, useFilterStore, useFormControl, useFormReset, useId, useIsomorphicLayoutEffect, useItemCollection, useLabel, useLayoutEffect, useListHighlighting, useMounted, usePrevious, useProgress, useScrollLock, useSize, useStateMachine, useTypeahead, visuallyHidden, wrapArray }; | ||
| export { type Align, type AnchorPositionerProps, type CollectionGroupMap, type CollectionItem, type CollectionItemMap, DATA_DISMISSABLE_LAYER_ATTR, DATA_DISMISSABLE_LAYER_STYLE_ATTR, DATA_ITEM_ATTR, DATA_VALUE_ATTR, type Direction, type FilterStore, type FocusOutsideEvent, type ForwardRefComponent, type HighlightingDirection, type Orientation, type PointerDownOutsideEvent, Portal, type PortalProps, Presence, type PresenceProps, Primitive, type PrimitivePropsWithRef, type ProgressState, type Side, Slot, type SlotProps, Slottable, VAR_ANCHOR_HEIGHT, VAR_ANCHOR_WIDTH, VAR_AVAILABLE_HEIGHT, VAR_AVAILABLE_WIDTH, VAR_TRANSFORM_ORIGIN, VisuallyHiddenInput, center, compareNodePosition, composeEventHandlers, composeRefs, createContext, dispatchDiscreteCustomEvent, findNextItem, focusRing, forwardRef, fullSize, getOwnerDocument, getOwnerWindow, getPlatform, getProgressState, isFirefox, isIOS, isIPad, isIPhone, isMac, isMobileFirefox, isPinchZoomActive, isSafari, noSelect, overlay, scrollableHidden, testPlatform, truncate, useAnchor, useAnchorPositioner, useCallbackRef, useCollection, useComposedRefs, useControllableState, useDirection, useDismiss, useEscapeKeydown, useEvent, useEventCallback, useFilter, useFilterStore, useFormControl, useFormReset, useId, useIsomorphicLayoutEffect, useItemCollection, useLabel, useLayoutEffect, useListHighlighting, useMounted, usePrevious, useProgress, useScrollLock, useSize, useStateMachine, useTypeahead, visuallyHidden, wrapArray }; |
+223
-228
@@ -1,19 +0,19 @@ | ||
| import * as React31 from 'react'; | ||
| import * as React32 from 'react'; | ||
| import { offset, inline, flip, shift, limitShift, size, arrow, hide, useFloating, autoUpdate } from '@floating-ui/react'; | ||
| import * as ReactDOM from 'react-dom'; | ||
| // src/components/bubble-input.tsx | ||
| // src/components/visually-hidden-input.tsx | ||
| function useAnchor() { | ||
| const anchorRef = React31.useRef(null); | ||
| const [hasAnchor, setHasAnchor] = React31.useState(false); | ||
| const onAnchorChange = React31.useCallback((node) => { | ||
| const anchorRef = React32.useRef(null); | ||
| const [hasAnchor, setHasAnchor] = React32.useState(false); | ||
| const onAnchorChange = React32.useCallback((node) => { | ||
| anchorRef.current = node; | ||
| }, []); | ||
| const onHasAnchorChange = React31.useCallback((value) => { | ||
| const onHasAnchorChange = React32.useCallback((value) => { | ||
| setHasAnchor(value); | ||
| }, []); | ||
| const onAnchorAdd = React31.useCallback(() => { | ||
| const onAnchorAdd = React32.useCallback(() => { | ||
| setHasAnchor(true); | ||
| }, []); | ||
| const onAnchorRemove = React31.useCallback(() => { | ||
| const onAnchorRemove = React32.useCallback(() => { | ||
| setHasAnchor(false); | ||
@@ -41,8 +41,8 @@ }, []); | ||
| var VAR_AVAILABLE_HEIGHT = "--dice-available-height"; | ||
| var DirectionContext = React31.createContext(undefined); | ||
| var DirectionContext = React32.createContext(undefined); | ||
| function useDirection(dirProp) { | ||
| const contextDir = React31.useContext(DirectionContext); | ||
| const contextDir = React32.useContext(DirectionContext); | ||
| return dirProp ?? contextDir ?? "ltr"; | ||
| } | ||
| var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React31.useLayoutEffect : React31.useEffect; | ||
| var useIsomorphicLayoutEffect = typeof window !== "undefined" ? React32.useLayoutEffect : React32.useEffect; | ||
@@ -86,12 +86,12 @@ // src/hooks/use-anchor-positioner.ts | ||
| const direction = useDirection(); | ||
| const [positionerArrow, setPositionerArrow] = React31.useState(null); | ||
| const rtlAlign = React31.useMemo(() => { | ||
| const [positionerArrow, setPositionerArrow] = React32.useState(null); | ||
| const rtlAlign = React32.useMemo(() => { | ||
| if (direction !== "rtl") return align; | ||
| return align === "start" ? "end" : align === "end" ? "start" : "center"; | ||
| }, [align, direction]); | ||
| const placement = React31.useMemo( | ||
| const placement = React32.useMemo( | ||
| () => `${side}-${rtlAlign}`, | ||
| [side, rtlAlign] | ||
| ); | ||
| const baseMiddleware = React31.useMemo( | ||
| const baseMiddleware = React32.useMemo( | ||
| () => [ | ||
@@ -106,3 +106,3 @@ offset({ | ||
| ); | ||
| const collisionMiddleware = React31.useMemo( | ||
| const collisionMiddleware = React32.useMemo( | ||
| () => avoidCollisions ? [ | ||
@@ -122,3 +122,3 @@ flip({ | ||
| ); | ||
| const sizeMiddleware = React31.useMemo( | ||
| const sizeMiddleware = React32.useMemo( | ||
| () => [ | ||
@@ -153,3 +153,3 @@ size({ | ||
| ); | ||
| const arrowMiddleware = React31.useMemo( | ||
| const arrowMiddleware = React32.useMemo( | ||
| () => !disableArrow && positionerArrow ? [ | ||
@@ -163,3 +163,3 @@ arrow({ | ||
| ); | ||
| const middleware = React31.useMemo( | ||
| const middleware = React32.useMemo( | ||
| () => [ | ||
@@ -180,3 +180,3 @@ ...baseMiddleware, | ||
| ); | ||
| const autoUpdateOptions = React31.useMemo( | ||
| const autoUpdateOptions = React32.useMemo( | ||
| () => ({ | ||
@@ -217,3 +217,3 @@ ancestorScroll: trackAnchor, | ||
| }, [open, anchorRef, refs, update]); | ||
| React31.useEffect(() => { | ||
| React32.useEffect(() => { | ||
| if (forceMount && open && elements.reference && elements.floating) { | ||
@@ -230,3 +230,3 @@ return autoUpdate( | ||
| const [placementSide = "bottom", placementAlign = "start"] = floatingPlacement.split("-"); | ||
| const transformOrigin = React31.useMemo(() => { | ||
| const transformOrigin = React32.useMemo(() => { | ||
| const oppositeSide = LONGHAND_SIDES[placementSide]; | ||
@@ -236,3 +236,3 @@ const oppositeAlign = placementAlign === "end" ? "start" : placementAlign === "start" ? "end" : "center"; | ||
| }, [placementSide, placementAlign]); | ||
| const getFloatingProps = React31.useCallback( | ||
| const getFloatingProps = React32.useCallback( | ||
| (floatingProps = {}) => ({ | ||
@@ -245,3 +245,3 @@ ...floatingProps, | ||
| ); | ||
| const floatingStyles = React31.useMemo(() => { | ||
| const floatingStyles = React32.useMemo(() => { | ||
| const validY = isValidNumber(y) ? y : 0; | ||
@@ -258,3 +258,3 @@ const validX = isValidNumber(x) ? x : 0; | ||
| const arrowDisplaced = disableArrow ? false : middlewareData.arrow?.centerOffset !== 0; | ||
| const arrowStyles = React31.useMemo(() => { | ||
| const arrowStyles = React32.useMemo(() => { | ||
| if (disableArrow) return {}; | ||
@@ -270,3 +270,3 @@ return { | ||
| }, [middlewareData.arrow, placementSide, transformOrigin, disableArrow]); | ||
| const positionerContext = React31.useMemo( | ||
| const positionerContext = React32.useMemo( | ||
| () => ({ | ||
@@ -311,7 +311,7 @@ refs, | ||
| function useCallbackRef(callback) { | ||
| const callbackRef = React31.useRef(callback); | ||
| React31.useEffect(() => { | ||
| const callbackRef = React32.useRef(callback); | ||
| React32.useEffect(() => { | ||
| callbackRef.current = callback; | ||
| }); | ||
| return React31.useMemo( | ||
| return React32.useMemo( | ||
| () => (...args) => callbackRef.current?.(...args), | ||
@@ -338,8 +338,8 @@ [] | ||
| } = {}) { | ||
| const collectionRef = React31.useRef(null); | ||
| const itemMap = React31.useRef( | ||
| const collectionRef = React32.useRef(null); | ||
| const itemMap = React32.useRef( | ||
| /* @__PURE__ */ new Map() | ||
| ).current; | ||
| const groupMap = grouped ? React31.useRef(/* @__PURE__ */ new Map()).current : null; | ||
| const getItems = React31.useCallback(() => { | ||
| const groupMap = grouped ? React32.useRef(/* @__PURE__ */ new Map()).current : null; | ||
| const getItems = React32.useCallback(() => { | ||
| const collectionNode = collectionRef.current; | ||
@@ -354,3 +354,3 @@ if (!collectionNode) return []; | ||
| }, [itemMap]); | ||
| const onItemRegister = React31.useCallback( | ||
| const onItemRegister = React32.useCallback( | ||
| (item, groupId) => { | ||
@@ -398,3 +398,3 @@ itemMap.set(item.ref, item); | ||
| const handleChange = useCallbackRef(onChange); | ||
| const setValue = React31.useCallback( | ||
| const setValue = React32.useCallback( | ||
| (nextValue) => { | ||
@@ -417,7 +417,7 @@ if (isControlled) { | ||
| }) { | ||
| const uncontrolledState = React31.useState(defaultProp); | ||
| const uncontrolledState = React32.useState(defaultProp); | ||
| const [value] = uncontrolledState; | ||
| const prevValueRef = React31.useRef(value); | ||
| const prevValueRef = React32.useRef(value); | ||
| const handleChange = useCallbackRef(onChange); | ||
| React31.useEffect(() => { | ||
| React32.useEffect(() => { | ||
| if (prevValueRef.current !== value) { | ||
@@ -445,3 +445,3 @@ handleChange(value); | ||
| const onEscapeKeyDownCallback = useCallbackRef(onEscapeKeyDown); | ||
| React31.useEffect(() => { | ||
| React32.useEffect(() => { | ||
| if (!enabled) return; | ||
@@ -477,4 +477,4 @@ function onKeyDown(event) { | ||
| const ownerDocument = getOwnerDocument(refs[0]?.current); | ||
| const isPointerInsideReactTreeRef = React31.useRef(false); | ||
| const onClickRef = React31.useRef(() => { | ||
| const isPointerInsideReactTreeRef = React32.useRef(false); | ||
| const onClickRef = React32.useRef(() => { | ||
| }); | ||
@@ -509,3 +509,3 @@ useEscapeKeydown({ | ||
| }); | ||
| React31.useEffect(() => { | ||
| React32.useEffect(() => { | ||
| if (!enabled) return; | ||
@@ -602,7 +602,7 @@ function onPointerDown(event) { | ||
| function useEventCallback(callback) { | ||
| const callbackRef = React31.useRef(callback); | ||
| React31.useLayoutEffect(() => { | ||
| const callbackRef = React32.useRef(callback); | ||
| React32.useLayoutEffect(() => { | ||
| callbackRef.current = callback; | ||
| }); | ||
| return React31.useCallback((event, ...args) => { | ||
| return React32.useCallback((event, ...args) => { | ||
| const fn = callbackRef.current; | ||
@@ -613,7 +613,7 @@ return fn(event, ...args); | ||
| function useEvent(callback) { | ||
| const callbackRef = React31.useRef(callback); | ||
| React31.useLayoutEffect(() => { | ||
| const callbackRef = React32.useRef(callback); | ||
| React32.useLayoutEffect(() => { | ||
| callbackRef.current = callback; | ||
| }); | ||
| return React31.useCallback((...args) => { | ||
| return React32.useCallback((...args) => { | ||
| const fn = callbackRef.current; | ||
@@ -684,2 +684,5 @@ return fn(...args); | ||
| } | ||
| if (normalized === "" && str.length > 0) { | ||
| normalized = "\0"; | ||
| } | ||
| normalizedCache.set(str, normalized); | ||
@@ -698,3 +701,3 @@ return normalized; | ||
| } | ||
| const startsWith = React31.useCallback( | ||
| const startsWith = React32.useCallback( | ||
| (string, substring) => { | ||
@@ -718,3 +721,3 @@ if (substring.length === 0) { | ||
| ); | ||
| const endsWith = React31.useCallback( | ||
| const endsWith = React32.useCallback( | ||
| (string, substring) => { | ||
@@ -738,3 +741,3 @@ if (substring.length === 0) { | ||
| ); | ||
| const contains = React31.useCallback( | ||
| const contains = React32.useCallback( | ||
| (string, substring) => { | ||
@@ -763,3 +766,3 @@ if (substring.length === 0) { | ||
| ); | ||
| const fuzzy = React31.useCallback( | ||
| const fuzzy = React32.useCallback( | ||
| (string, pattern) => { | ||
@@ -798,3 +801,3 @@ if (pattern.length === 0) return true; | ||
| ); | ||
| return React31.useMemo( | ||
| return React32.useMemo( | ||
| () => ({ | ||
@@ -817,3 +820,3 @@ startsWith, | ||
| }) { | ||
| const filterStore = React31.useRef({ | ||
| const filterStore = React32.useRef({ | ||
| search: "", | ||
@@ -825,7 +828,7 @@ itemCount: 0, | ||
| const filter = useFilter({ sensitivity: "base", gapMatch: true }); | ||
| const currentFilter = React31.useMemo( | ||
| const currentFilter = React32.useMemo( | ||
| () => exactMatch ? filter.contains : filter.fuzzy, | ||
| [filter.fuzzy, filter.contains, exactMatch] | ||
| ); | ||
| const getItemScore = React31.useCallback( | ||
| const getItemScore = React32.useCallback( | ||
| (value, searchTerm) => { | ||
@@ -841,3 +844,3 @@ if (!searchTerm) return 1; | ||
| ); | ||
| const onItemsFilter = React31.useCallback(() => { | ||
| const onItemsFilter = React32.useCallback(() => { | ||
| if (!filterStore.search || manualFiltering) { | ||
@@ -903,3 +906,3 @@ filterStore.itemCount = itemMap.size; | ||
| ]); | ||
| const getIsItemVisible = React31.useCallback( | ||
| const getIsItemVisible = React32.useCallback( | ||
| (value) => { | ||
@@ -912,3 +915,3 @@ if (manualFiltering) return true; | ||
| ); | ||
| const getIsListEmpty = React31.useCallback( | ||
| const getIsListEmpty = React32.useCallback( | ||
| (manual = false) => { | ||
@@ -927,3 +930,3 @@ return manual || filterStore.itemCount === 0 && filterStore.search.trim() !== ""; | ||
| function useFormControl(form) { | ||
| const [trigger, setTrigger] = React31.useState(null); | ||
| const [trigger, setTrigger] = React32.useState(null); | ||
| const isFormControl = trigger ? form || !!trigger.closest("form") : true; | ||
@@ -938,3 +941,3 @@ return { isFormControl, trigger, onTriggerChange: setTrigger }; | ||
| const onResetCallback = useCallbackRef(onReset); | ||
| React31.useEffect(() => { | ||
| React32.useEffect(() => { | ||
| if (!form) return; | ||
@@ -950,10 +953,10 @@ function onFormReset() { | ||
| } | ||
| var useLayoutEffect4 = globalThis?.document ? React31.useLayoutEffect : () => { | ||
| var useLayoutEffect4 = globalThis?.document ? React32.useLayoutEffect : () => { | ||
| }; | ||
| // src/hooks/use-id.ts | ||
| var useReactId = React31[" useId ".trim().toString()] || (() => undefined); | ||
| var useReactId = React32[" useId ".trim().toString()] || (() => undefined); | ||
| var count = 0; | ||
| function useId(deterministicId) { | ||
| const [id, setId] = React31.useState( | ||
| const [id, setId] = React32.useState( | ||
| typeof useReactId === "function" ? useReactId() : undefined | ||
@@ -970,3 +973,3 @@ ); | ||
| }) { | ||
| const getItems = React31.useCallback(() => { | ||
| const getItems = React32.useCallback(() => { | ||
| const collectionNode = ref.current; | ||
@@ -980,3 +983,3 @@ if (!collectionNode) return []; | ||
| }, [ref, attr]); | ||
| const getEnabledItems = React31.useCallback(() => { | ||
| const getEnabledItems = React32.useCallback(() => { | ||
| const items = getItems(); | ||
@@ -990,4 +993,4 @@ return items.filter( | ||
| function useLabel({ defaultValue }) { | ||
| const [label, setLabel] = React31.useState(defaultValue ?? ""); | ||
| const onLabelChange = React31.useCallback((node) => { | ||
| const [label, setLabel] = React32.useState(defaultValue ?? ""); | ||
| const onLabelChange = React32.useCallback((node) => { | ||
| setLabel((node?.textContent ?? "").trim()); | ||
@@ -1004,3 +1007,3 @@ }, []); | ||
| }) { | ||
| const onHighlightMove = React31.useCallback( | ||
| const onHighlightMove = React32.useCallback( | ||
| (direction) => { | ||
@@ -1054,3 +1057,3 @@ const items = getItems(); | ||
| function useMounted() { | ||
| const [mounted, setMounted] = React31.useState(false); | ||
| const [mounted, setMounted] = React32.useState(false); | ||
| useLayoutEffect4(() => { | ||
@@ -1062,4 +1065,4 @@ setMounted(true); | ||
| function usePrevious(value) { | ||
| const ref = React31.useRef({ value, previous: value }); | ||
| return React31.useMemo(() => { | ||
| const ref = React32.useRef({ value, previous: value }); | ||
| return React32.useMemo(() => { | ||
| if (ref.current.value !== value) { | ||
@@ -1088,15 +1091,15 @@ ref.current.previous = ref.current.value; | ||
| }) { | ||
| const max = React31.useMemo( | ||
| const max = React32.useMemo( | ||
| () => isValidMaxNumber(maxProp) ? maxProp : 100, | ||
| [maxProp] | ||
| ); | ||
| const value = React31.useMemo( | ||
| const value = React32.useMemo( | ||
| () => isValidValueNumber(valueProp, max) ? valueProp : null, | ||
| [valueProp, max] | ||
| ); | ||
| const state = React31.useMemo( | ||
| const state = React32.useMemo( | ||
| () => getProgressState(value, max), | ||
| [value, max] | ||
| ); | ||
| const progressProps = React31.useMemo( | ||
| const progressProps = React32.useMemo( | ||
| () => ({ | ||
@@ -1211,6 +1214,6 @@ role: "progressbar", | ||
| } = {}) { | ||
| const scrollPositionRef = React31.useRef({ top: 0, left: 0 }); | ||
| const resizeRef = React31.useRef(-1); | ||
| const scrollableRef = React31.useRef(null); | ||
| const cleanupRef = React31.useRef(null); | ||
| const scrollPositionRef = React32.useRef({ top: 0, left: 0 }); | ||
| const resizeRef = React32.useRef(-1); | ||
| const scrollableRef = React32.useRef(null); | ||
| const cleanupRef = React32.useRef(null); | ||
| useIsomorphicLayoutEffect(() => { | ||
@@ -1409,3 +1412,3 @@ if (!enabled) return; | ||
| function useSize(element) { | ||
| const [size2, setSize] = React31.useState(undefined); | ||
| const [size2, setSize] = React32.useState(undefined); | ||
| useLayoutEffect4(() => { | ||
@@ -1415,8 +1418,4 @@ if (element) { | ||
| const resizeObserver = new ResizeObserver((entries) => { | ||
| if (!Array.isArray(entries)) { | ||
| return; | ||
| } | ||
| if (!entries.length) { | ||
| return; | ||
| } | ||
| if (!Array.isArray(entries)) return; | ||
| if (!entries.length) return; | ||
| const entry = entries[0]; | ||
@@ -1444,4 +1443,4 @@ let width; | ||
| function useStateMachine(config) { | ||
| const [state, setState] = React31.useState(config.initial); | ||
| const send = React31.useCallback( | ||
| const [state, setState] = React32.useState(config.initial); | ||
| const send = React32.useCallback( | ||
| (event) => { | ||
@@ -1482,5 +1481,5 @@ setState((currentState) => { | ||
| const onSearchChangeCallback = useCallbackRef(onSearchChange); | ||
| const searchRef = React31.useRef(""); | ||
| const timerRef = React31.useRef(0); | ||
| const onTypeaheadSearch = React31.useCallback( | ||
| const searchRef = React32.useRef(""); | ||
| const timerRef = React32.useRef(0); | ||
| const onTypeaheadSearch = React32.useCallback( | ||
| (key) => { | ||
@@ -1507,7 +1506,7 @@ if (!enabled) return; | ||
| ); | ||
| const onResetTypeahead = React31.useCallback(() => { | ||
| const onResetTypeahead = React32.useCallback(() => { | ||
| searchRef.current = ""; | ||
| window.clearTimeout(timerRef.current); | ||
| }, []); | ||
| React31.useEffect(() => { | ||
| React32.useEffect(() => { | ||
| return () => window.clearTimeout(timerRef.current); | ||
@@ -1523,4 +1522,87 @@ }, []); | ||
| // src/components/bubble-input.tsx | ||
| function BubbleInput(props) { | ||
| // src/lib/compose-event-handlers.ts | ||
| function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) { | ||
| return function handleEvent(event) { | ||
| originalEventHandler?.(event); | ||
| if (checkForDefaultPrevented === false || !event.defaultPrevented) { | ||
| return ourEventHandler?.(event); | ||
| } | ||
| }; | ||
| } | ||
| function setRef(ref, value) { | ||
| if (typeof ref === "function") { | ||
| ref(value); | ||
| } else if (ref !== null && ref !== undefined) { | ||
| ref.current = value; | ||
| } | ||
| } | ||
| function composeRefs(...refs) { | ||
| return (node) => { | ||
| for (const ref of refs) { | ||
| setRef(ref, node); | ||
| } | ||
| }; | ||
| } | ||
| function useComposedRefs(...refs) { | ||
| return React32.useCallback(composeRefs(...refs), refs); | ||
| } | ||
| function forwardRef2(render) { | ||
| return React32.forwardRef(render); | ||
| } | ||
| // src/lib/styles.ts | ||
| var visuallyHidden = { | ||
| border: 0, | ||
| clip: "rect(0 0 0 0)", | ||
| clipPath: "inset(50%)", | ||
| height: "1px", | ||
| margin: "-1px", | ||
| overflow: "hidden", | ||
| padding: 0, | ||
| position: "absolute", | ||
| whiteSpace: "nowrap", | ||
| width: "1px" | ||
| }; | ||
| var overlay = { | ||
| position: "fixed", | ||
| inset: 0, | ||
| backgroundColor: "rgba(0, 0, 0, 0.4)", | ||
| backdropFilter: "blur(2px)", | ||
| zIndex: 50 | ||
| }; | ||
| var truncate = { | ||
| overflow: "hidden", | ||
| textOverflow: "ellipsis", | ||
| whiteSpace: "nowrap" | ||
| }; | ||
| var focusRing = { | ||
| outline: "none", | ||
| boxShadow: "0 0 0 2px rgba(66, 153, 225, 0.6)", | ||
| borderRadius: "0.25rem" | ||
| }; | ||
| var scrollableHidden = { | ||
| overflow: "auto", | ||
| scrollbarWidth: "none", | ||
| msOverflowStyle: "none" | ||
| }; | ||
| var fullSize = { | ||
| position: "absolute", | ||
| top: 0, | ||
| right: 0, | ||
| bottom: 0, | ||
| left: 0 | ||
| }; | ||
| var center = { | ||
| display: "flex", | ||
| alignItems: "center", | ||
| justifyContent: "center" | ||
| }; | ||
| var noSelect = { | ||
| userSelect: "none", | ||
| WebkitUserSelect: "none", | ||
| msUserSelect: "none" | ||
| }; | ||
| // src/components/visually-hidden-input.tsx | ||
| function VisuallyHiddenInput(props) { | ||
| const { | ||
@@ -1533,10 +1615,11 @@ control, | ||
| onReset, | ||
| style, | ||
| ...inputProps | ||
| } = props; | ||
| const ref = React31.useRef(null); | ||
| const isCheckInput = type === "checkbox" || type === "radio" || type === "switch"; | ||
| const inputRef = React32.useRef(null); | ||
| const prevValue = usePrevious(type === "hidden" ? value : checked); | ||
| const controlSize = useSize(control); | ||
| const isCheckInput = type === "checkbox" || type === "radio" || type === "switch"; | ||
| React31.useEffect(() => { | ||
| const input = ref.current; | ||
| React32.useEffect(() => { | ||
| const input = inputRef.current; | ||
| if (!input) return; | ||
@@ -1559,3 +1642,3 @@ const inputProto = window.HTMLInputElement.prototype; | ||
| useFormReset({ | ||
| form: ref.current?.form ?? null, | ||
| form: inputRef.current?.form ?? null, | ||
| defaultValue: isCheckInput ? checked : value, | ||
@@ -1566,3 +1649,3 @@ onReset: (resetValue) => { | ||
| }); | ||
| return /* @__PURE__ */ React31.createElement( | ||
| return /* @__PURE__ */ React32.createElement( | ||
| "input", | ||
@@ -1572,5 +1655,5 @@ { | ||
| ...inputProps, | ||
| ref, | ||
| ref: inputRef, | ||
| "aria-hidden": isCheckInput, | ||
| tabIndex: isCheckInput ? -1 : undefined, | ||
| tabIndex: -1, | ||
| defaultChecked: isCheckInput ? checked : undefined, | ||
@@ -1580,6 +1663,3 @@ style: { | ||
| ...controlSize, | ||
| position: "absolute", | ||
| pointerEvents: "none", | ||
| opacity: 0, | ||
| margin: 0 | ||
| ...visuallyHidden | ||
| } | ||
@@ -1590,15 +1670,15 @@ } | ||
| function createContext3(rootComponentName, defaultValue) { | ||
| const Context = React31.createContext(defaultValue); | ||
| const Context = React32.createContext(defaultValue); | ||
| Context.displayName = rootComponentName; | ||
| function Provider(props) { | ||
| const { children, ...contextValue } = props; | ||
| const value = React31.useMemo( | ||
| const value = React32.useMemo( | ||
| () => contextValue, | ||
| Object.values(contextValue) | ||
| ); | ||
| return /* @__PURE__ */ React31.createElement(Context.Provider, { value }, children); | ||
| return /* @__PURE__ */ React32.createElement(Context.Provider, { value }, children); | ||
| } | ||
| Provider.displayName = `${rootComponentName}Provider`; | ||
| function useContext3(consumerName, optional) { | ||
| const context = React31.useContext(Context); | ||
| const context = React32.useContext(Context); | ||
| if (!context && !optional) { | ||
@@ -1615,21 +1695,4 @@ throw new Error( | ||
| } | ||
| function setRef(ref, value) { | ||
| if (typeof ref === "function") { | ||
| ref(value); | ||
| } else if (ref !== null && ref !== undefined) { | ||
| ref.current = value; | ||
| } | ||
| } | ||
| function composeRefs(...refs) { | ||
| return (node) => { | ||
| for (const ref of refs) { | ||
| setRef(ref, node); | ||
| } | ||
| }; | ||
| } | ||
| function useComposedRefs(...refs) { | ||
| return React31.useCallback(composeRefs(...refs), refs); | ||
| } | ||
| function getElementRef(element) { | ||
| if (!React31.isValidElement(element)) return undefined; | ||
| if (!React32.isValidElement(element)) return undefined; | ||
| let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get; | ||
@@ -1653,3 +1716,3 @@ let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; | ||
| var isSlottable = function isSlottable2(child) { | ||
| return React31.isValidElement(child) && child.type === Slottable; | ||
| return React32.isValidElement(child) && child.type === Slottable; | ||
| }; | ||
@@ -1681,7 +1744,7 @@ function mergeProps(slotProps, childProps) { | ||
| } | ||
| var SlotClone = React31.forwardRef( | ||
| var SlotClone = React32.forwardRef( | ||
| (props, forwardedRef) => { | ||
| const { children, ...slotProps } = props; | ||
| if (!React31.isValidElement(children)) { | ||
| return React31.Children.count(children) > 1 ? React31.Children.only(null) : null; | ||
| if (!React32.isValidElement(children)) { | ||
| return React32.Children.count(children) > 1 ? React32.Children.only(null) : null; | ||
| } | ||
@@ -1694,3 +1757,3 @@ const childrenRef = getElementRef(children); | ||
| if (typeof children.type === "string") { | ||
| return React31.cloneElement(children, { | ||
| return React32.cloneElement(children, { | ||
| ...mergedProps, | ||
@@ -1700,3 +1763,3 @@ ref: forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef | ||
| } | ||
| return React31.cloneElement(children, { | ||
| return React32.cloneElement(children, { | ||
| ...mergedProps, | ||
@@ -1708,10 +1771,10 @@ ref: forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef | ||
| SlotClone.displayName = "SlotClone"; | ||
| var Slot = React31.forwardRef((props, forwardedRef) => { | ||
| var Slot = React32.forwardRef((props, forwardedRef) => { | ||
| const { children, ...slotProps } = props; | ||
| const childrenArray = React31.Children.toArray(children); | ||
| const childrenArray = React32.Children.toArray(children); | ||
| const slottable = childrenArray.find(isSlottable); | ||
| if (!slottable) { | ||
| return /* @__PURE__ */ React31.createElement(SlotClone, { ...slotProps, ref: forwardedRef }, children); | ||
| return /* @__PURE__ */ React32.createElement(SlotClone, { ...slotProps, ref: forwardedRef }, children); | ||
| } | ||
| if (!React31.isValidElement(slottable)) { | ||
| if (!React32.isValidElement(slottable)) { | ||
| return null; | ||
@@ -1722,14 +1785,14 @@ } | ||
| if (child === slottable) { | ||
| if (React31.Children.count(newElement) > 1) { | ||
| return React31.Children.only(null); | ||
| if (React32.Children.count(newElement) > 1) { | ||
| return React32.Children.only(null); | ||
| } | ||
| return React31.isValidElement(newElement) ? newElement.props.children : null; | ||
| return React32.isValidElement(newElement) ? newElement.props.children : null; | ||
| } | ||
| return child; | ||
| }); | ||
| return /* @__PURE__ */ React31.createElement(SlotClone, { ...slotProps, ref: forwardedRef }, React31.isValidElement(newElement) ? React31.cloneElement(newElement, undefined, newChildren) : null); | ||
| return /* @__PURE__ */ React32.createElement(SlotClone, { ...slotProps, ref: forwardedRef }, React32.isValidElement(newElement) ? React32.cloneElement(newElement, undefined, newChildren) : null); | ||
| }); | ||
| Slot.displayName = "Slot"; | ||
| var Slottable = React31.memo(function Slottable2({ children }) { | ||
| return /* @__PURE__ */ React31.createElement(React31.Fragment, null, children); | ||
| var Slottable = React32.memo(function Slottable2({ children }) { | ||
| return /* @__PURE__ */ React32.createElement(React32.Fragment, null, children); | ||
| }); | ||
@@ -1740,6 +1803,6 @@ Slottable.displayName = "Slottable"; | ||
| function createPrimitive(element) { | ||
| const Primitive2 = React31.forwardRef((props, forwardedRef) => { | ||
| const Primitive2 = React32.forwardRef((props, forwardedRef) => { | ||
| const { asChild, ...primitiveProps } = props; | ||
| if (asChild) { | ||
| return React31.createElement(Slot, { | ||
| return React32.createElement(Slot, { | ||
| ...primitiveProps, | ||
@@ -1749,3 +1812,3 @@ ref: forwardedRef | ||
| } | ||
| return React31.createElement(element, { | ||
| return React32.createElement(element, { | ||
| ...primitiveProps, | ||
@@ -1777,3 +1840,3 @@ ref: forwardedRef | ||
| // src/components/portal.tsx | ||
| var Portal = React31.forwardRef( | ||
| var Portal = React32.forwardRef( | ||
| (props, forwardedRef) => { | ||
@@ -1785,3 +1848,3 @@ const { container: containerProp, ...portalProps } = props; | ||
| return ReactDOM.createPortal( | ||
| /* @__PURE__ */ React31.createElement(Primitive.div, { ...portalProps, ref: forwardedRef }), | ||
| /* @__PURE__ */ React32.createElement(Primitive.div, { ...portalProps, ref: forwardedRef }), | ||
| container | ||
@@ -1792,86 +1855,18 @@ ); | ||
| Portal.displayName = "Portal"; | ||
| // src/lib/compose-event-handlers.ts | ||
| function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) { | ||
| return function handleEvent(event) { | ||
| originalEventHandler?.(event); | ||
| if (checkForDefaultPrevented === false || !event.defaultPrevented) { | ||
| return ourEventHandler?.(event); | ||
| } | ||
| }; | ||
| } | ||
| function forwardRef5(render) { | ||
| return React31.forwardRef(render); | ||
| } | ||
| // src/lib/styles.ts | ||
| var visuallyHidden = { | ||
| border: 0, | ||
| clip: "rect(0 0 0 0)", | ||
| clipPath: "inset(50%)", | ||
| height: "1px", | ||
| margin: "-1px", | ||
| overflow: "hidden", | ||
| padding: 0, | ||
| position: "absolute", | ||
| whiteSpace: "nowrap", | ||
| width: "1px" | ||
| }; | ||
| var overlay = { | ||
| position: "fixed", | ||
| inset: 0, | ||
| backgroundColor: "rgba(0, 0, 0, 0.4)", | ||
| backdropFilter: "blur(2px)", | ||
| zIndex: 50 | ||
| }; | ||
| var truncate = { | ||
| overflow: "hidden", | ||
| textOverflow: "ellipsis", | ||
| whiteSpace: "nowrap" | ||
| }; | ||
| var focusRing = { | ||
| outline: "none", | ||
| boxShadow: "0 0 0 2px rgba(66, 153, 225, 0.6)", | ||
| borderRadius: "0.25rem" | ||
| }; | ||
| var scrollableHidden = { | ||
| overflow: "auto", | ||
| scrollbarWidth: "none", | ||
| msOverflowStyle: "none" | ||
| }; | ||
| var fullSize = { | ||
| position: "absolute", | ||
| top: 0, | ||
| right: 0, | ||
| bottom: 0, | ||
| left: 0 | ||
| }; | ||
| var center = { | ||
| display: "flex", | ||
| alignItems: "center", | ||
| justifyContent: "center" | ||
| }; | ||
| var noSelect = { | ||
| userSelect: "none", | ||
| WebkitUserSelect: "none", | ||
| msUserSelect: "none" | ||
| }; | ||
| // src/components/presence.tsx | ||
| var Presence = (props) => { | ||
| const { present, children } = props; | ||
| const presence = usePresence(present); | ||
| const child = typeof children === "function" ? children({ present: presence.isPresent }) : React31.Children.only(children); | ||
| const child = typeof children === "function" ? children({ present: presence.isPresent }) : React32.Children.only(children); | ||
| const ref = useComposedRefs(presence.ref, getElementRef(child)); | ||
| const forceMount = typeof children === "function"; | ||
| return forceMount || presence.isPresent ? React31.cloneElement(child, { ref }) : null; | ||
| return forceMount || presence.isPresent ? React32.cloneElement(child, { ref }) : null; | ||
| }; | ||
| Presence.displayName = "Presence"; | ||
| function usePresence(present) { | ||
| const [node, setNode] = React31.useState(); | ||
| const stylesRef = React31.useRef( | ||
| const [node, setNode] = React32.useState(); | ||
| const stylesRef = React32.useRef( | ||
| {} | ||
| ); | ||
| const prevPresentRef = React31.useRef(present); | ||
| const prevAnimationNameRef = React31.useRef("none"); | ||
| const prevPresentRef = React32.useRef(present); | ||
| const prevAnimationNameRef = React32.useRef("none"); | ||
| const initialState = present ? "mounted" : "unmounted"; | ||
@@ -1894,3 +1889,3 @@ const [state, send] = useStateMachine({ | ||
| }); | ||
| React31.useEffect(() => { | ||
| React32.useEffect(() => { | ||
| const currentAnimationName = getAnimationName(stylesRef.current); | ||
@@ -1961,3 +1956,3 @@ prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none"; | ||
| isPresent: ["mounted", "unmountSuspended"].includes(state), | ||
| ref: React31.useCallback((node2) => { | ||
| ref: React32.useCallback((node2) => { | ||
| if (node2) stylesRef.current = getComputedStyle(node2); | ||
@@ -1972,2 +1967,2 @@ setNode(node2); | ||
| export { BubbleInput, DATA_DISMISSABLE_LAYER_ATTR, DATA_DISMISSABLE_LAYER_STYLE_ATTR, DATA_ITEM_ATTR, DATA_VALUE_ATTR, Portal, Presence, Primitive, Slot, Slottable, VAR_ANCHOR_HEIGHT, VAR_ANCHOR_WIDTH, VAR_AVAILABLE_HEIGHT, VAR_AVAILABLE_WIDTH, VAR_TRANSFORM_ORIGIN, center, compareNodePosition, composeEventHandlers, composeRefs, createContext3 as createContext, dispatchDiscreteCustomEvent, findNextItem, focusRing, forwardRef5 as forwardRef, fullSize, getOwnerDocument, getOwnerWindow, getPlatform, getProgressState, isFirefox, isIOS, isIPad, isIPhone, isMac, isMobileFirefox, isPinchZoomActive, isSafari, noSelect, overlay, scrollableHidden, testPlatform, truncate, useAnchor, useAnchorPositioner, useCallbackRef, useCollection, useComposedRefs, useControllableState, useDirection, useDismiss, useEscapeKeydown, useEvent, useEventCallback, useFilter, useFilterStore, useFormControl, useFormReset, useId, useIsomorphicLayoutEffect, useItemCollection, useLabel, useLayoutEffect4 as useLayoutEffect, useListHighlighting, useMounted, usePrevious, useProgress, useScrollLock, useSize, useStateMachine, useTypeahead, visuallyHidden, wrapArray }; | ||
| export { DATA_DISMISSABLE_LAYER_ATTR, DATA_DISMISSABLE_LAYER_STYLE_ATTR, DATA_ITEM_ATTR, DATA_VALUE_ATTR, Portal, Presence, Primitive, Slot, Slottable, VAR_ANCHOR_HEIGHT, VAR_ANCHOR_WIDTH, VAR_AVAILABLE_HEIGHT, VAR_AVAILABLE_WIDTH, VAR_TRANSFORM_ORIGIN, VisuallyHiddenInput, center, compareNodePosition, composeEventHandlers, composeRefs, createContext3 as createContext, dispatchDiscreteCustomEvent, findNextItem, focusRing, forwardRef2 as forwardRef, fullSize, getOwnerDocument, getOwnerWindow, getPlatform, getProgressState, isFirefox, isIOS, isIPad, isIPhone, isMac, isMobileFirefox, isPinchZoomActive, isSafari, noSelect, overlay, scrollableHidden, testPlatform, truncate, useAnchor, useAnchorPositioner, useCallbackRef, useCollection, useComposedRefs, useControllableState, useDirection, useDismiss, useEscapeKeydown, useEvent, useEventCallback, useFilter, useFilterStore, useFormControl, useFormReset, useId, useIsomorphicLayoutEffect, useItemCollection, useLabel, useLayoutEffect4 as useLayoutEffect, useListHighlighting, useMounted, usePrevious, useProgress, useScrollLock, useSize, useStateMachine, useTypeahead, visuallyHidden, wrapArray }; |
+1
-1
| { | ||
| "name": "@diceui/shared", | ||
| "version": "0.8.0", | ||
| "version": "0.9.0", | ||
| "publishConfig": { | ||
@@ -5,0 +5,0 @@ "access": "public" |
Sorry, the diff of this file is too big to display
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
183369
04504
-0.18%4
33.33%