UNPKG

ivt

Version:

Ivt Components Library

461 lines (457 loc) 21.1 kB
import * as React from 'react'; import { c as composeEventHandlers } from '../chunks/index-Bl-WJHvp.mjs'; import { c as createContextScope } from '../chunks/index-DT8WgpCS.mjs'; import { P as Primitive } from '../chunks/index-DgKlJYZP.mjs'; import { c as createMenuScope, R as Root3, A as Anchor2, P as Portal, C as Content2$1, I as Item2$1, a as CheckboxItem, b as ItemIndicator, d as RadioItem, L as Label, S as Separator, G as Group, e as Sub, f as SubContent, g as SubTrigger, h as RadioGroup, i as Arrow2, j as Circle } from '../chunks/index-DWmrjIYv.mjs'; import { u as useCallbackRef } from '../chunks/index-Cbm3--wc.mjs'; import { u as useControllableState } from '../chunks/index-D4FMFHi9.mjs'; import { jsx, jsxs, Fragment } from 'react/jsx-runtime'; import { c as cn } from '../chunks/utils-05LlW3Cl.mjs'; import { C as Check } from '../chunks/check-BBGTedl-.mjs'; import { C as ChevronRight } from '../chunks/chevron-right-mC6NR8jW.mjs'; import 'react-dom'; import '@radix-ui/react-slot'; import '../chunks/createLucideIcon-DLrNgMqk.mjs'; import '@radix-ui/react-collection'; import '../chunks/index-1tQVI0Jh.mjs'; import '../chunks/index-CGLjQEjG.mjs'; import '../chunks/index-DUpRrJTH.mjs'; import '../chunks/index-DvCZGX3H.mjs'; import '../chunks/tslib.es6-DXUeYCTx.mjs'; import '../chunks/index-tkRL9Tft.mjs'; import '../chunks/index-DKOlG3mh.mjs'; import '../chunks/index-aLIsJMgt.mjs'; import '../chunks/index-DmY774z-.mjs'; import '../chunks/index-BTe1rv5Z.mjs'; import '../chunks/index-C6s8KI_8.mjs'; import '../chunks/index-BsG_UW8k.mjs'; import '../chunks/bundle-mjs-BYcyWisL.mjs'; var CONTEXT_MENU_NAME = "ContextMenu"; var [createContextMenuContext] = createContextScope(CONTEXT_MENU_NAME, [ createMenuScope ]); var useMenuScope = createMenuScope(); var [ContextMenuProvider, useContextMenuContext] = createContextMenuContext(CONTEXT_MENU_NAME); var ContextMenu$1 = (props)=>{ const { __scopeContextMenu, children, onOpenChange, dir, modal = true } = props; const [open, setOpen] = React.useState(false); const menuScope = useMenuScope(__scopeContextMenu); const handleOpenChangeProp = useCallbackRef(onOpenChange); const handleOpenChange = React.useCallback((open2)=>{ setOpen(open2); handleOpenChangeProp(open2); }, [ handleOpenChangeProp ]); return /* @__PURE__ */ jsx(ContextMenuProvider, { scope: __scopeContextMenu, open, onOpenChange: handleOpenChange, modal, children: /* @__PURE__ */ jsx(Root3, { ...menuScope, dir, open, onOpenChange: handleOpenChange, modal, children }) }); }; ContextMenu$1.displayName = CONTEXT_MENU_NAME; var TRIGGER_NAME = "ContextMenuTrigger"; var ContextMenuTrigger$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, disabled = false, ...triggerProps } = props; const context = useContextMenuContext(TRIGGER_NAME, __scopeContextMenu); const menuScope = useMenuScope(__scopeContextMenu); const pointRef = React.useRef({ x: 0, y: 0 }); const virtualRef = React.useRef({ getBoundingClientRect: ()=>DOMRect.fromRect({ width: 0, height: 0, ...pointRef.current }) }); const longPressTimerRef = React.useRef(0); const clearLongPress = React.useCallback(()=>window.clearTimeout(longPressTimerRef.current), []); const handleOpen = (event)=>{ pointRef.current = { x: event.clientX, y: event.clientY }; context.onOpenChange(true); }; React.useEffect(()=>clearLongPress, [ clearLongPress ]); React.useEffect(()=>void (disabled && clearLongPress()), [ disabled, clearLongPress ]); return /* @__PURE__ */ jsxs(Fragment, { children: [ /* @__PURE__ */ jsx(Anchor2, { ...menuScope, virtualRef }), /* @__PURE__ */ jsx(Primitive.span, { "data-state": context.open ? "open" : "closed", "data-disabled": disabled ? "" : void 0, ...triggerProps, ref: forwardedRef, style: { WebkitTouchCallout: "none", ...props.style }, onContextMenu: disabled ? props.onContextMenu : composeEventHandlers(props.onContextMenu, (event)=>{ clearLongPress(); handleOpen(event); event.preventDefault(); }), onPointerDown: disabled ? props.onPointerDown : composeEventHandlers(props.onPointerDown, whenTouchOrPen((event)=>{ clearLongPress(); longPressTimerRef.current = window.setTimeout(()=>handleOpen(event), 700); })), onPointerMove: disabled ? props.onPointerMove : composeEventHandlers(props.onPointerMove, whenTouchOrPen(clearLongPress)), onPointerCancel: disabled ? props.onPointerCancel : composeEventHandlers(props.onPointerCancel, whenTouchOrPen(clearLongPress)), onPointerUp: disabled ? props.onPointerUp : composeEventHandlers(props.onPointerUp, whenTouchOrPen(clearLongPress)) }) ] }); }); ContextMenuTrigger$1.displayName = TRIGGER_NAME; var PORTAL_NAME = "ContextMenuPortal"; var ContextMenuPortal$1 = (props)=>{ const { __scopeContextMenu, ...portalProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(Portal, { ...menuScope, ...portalProps }); }; ContextMenuPortal$1.displayName = PORTAL_NAME; var CONTENT_NAME = "ContextMenuContent"; var ContextMenuContent$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...contentProps } = props; const context = useContextMenuContext(CONTENT_NAME, __scopeContextMenu); const menuScope = useMenuScope(__scopeContextMenu); const hasInteractedOutsideRef = React.useRef(false); return /* @__PURE__ */ jsx(Content2$1, { ...menuScope, ...contentProps, ref: forwardedRef, side: "right", sideOffset: 2, align: "start", onCloseAutoFocus: (event)=>{ props.onCloseAutoFocus?.(event); if (!event.defaultPrevented && hasInteractedOutsideRef.current) { event.preventDefault(); } hasInteractedOutsideRef.current = false; }, onInteractOutside: (event)=>{ props.onInteractOutside?.(event); if (!event.defaultPrevented && !context.modal) hasInteractedOutsideRef.current = true; }, style: { ...props.style, // re-namespace exposed content custom properties ...{ "--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)", "--radix-context-menu-content-available-width": "var(--radix-popper-available-width)", "--radix-context-menu-content-available-height": "var(--radix-popper-available-height)", "--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)", "--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)" } } }); }); ContextMenuContent$1.displayName = CONTENT_NAME; var GROUP_NAME = "ContextMenuGroup"; var ContextMenuGroup$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...groupProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(Group, { ...menuScope, ...groupProps, ref: forwardedRef }); }); ContextMenuGroup$1.displayName = GROUP_NAME; var LABEL_NAME = "ContextMenuLabel"; var ContextMenuLabel$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...labelProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(Label, { ...menuScope, ...labelProps, ref: forwardedRef }); }); ContextMenuLabel$1.displayName = LABEL_NAME; var ITEM_NAME = "ContextMenuItem"; var ContextMenuItem$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...itemProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(Item2$1, { ...menuScope, ...itemProps, ref: forwardedRef }); }); ContextMenuItem$1.displayName = ITEM_NAME; var CHECKBOX_ITEM_NAME = "ContextMenuCheckboxItem"; var ContextMenuCheckboxItem$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...checkboxItemProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef }); }); ContextMenuCheckboxItem$1.displayName = CHECKBOX_ITEM_NAME; var RADIO_GROUP_NAME = "ContextMenuRadioGroup"; var ContextMenuRadioGroup$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...radioGroupProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef }); }); ContextMenuRadioGroup$1.displayName = RADIO_GROUP_NAME; var RADIO_ITEM_NAME = "ContextMenuRadioItem"; var ContextMenuRadioItem$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...radioItemProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef }); }); ContextMenuRadioItem$1.displayName = RADIO_ITEM_NAME; var INDICATOR_NAME = "ContextMenuItemIndicator"; var ContextMenuItemIndicator = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...itemIndicatorProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef }); }); ContextMenuItemIndicator.displayName = INDICATOR_NAME; var SEPARATOR_NAME = "ContextMenuSeparator"; var ContextMenuSeparator$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...separatorProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(Separator, { ...menuScope, ...separatorProps, ref: forwardedRef }); }); ContextMenuSeparator$1.displayName = SEPARATOR_NAME; var ARROW_NAME = "ContextMenuArrow"; var ContextMenuArrow = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...arrowProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(Arrow2, { ...menuScope, ...arrowProps, ref: forwardedRef }); }); ContextMenuArrow.displayName = ARROW_NAME; var SUB_NAME = "ContextMenuSub"; var ContextMenuSub$1 = (props)=>{ const { __scopeContextMenu, children, onOpenChange, open: openProp, defaultOpen } = props; const menuScope = useMenuScope(__scopeContextMenu); const [open, setOpen] = useControllableState({ prop: openProp, defaultProp: defaultOpen ?? false, onChange: onOpenChange, caller: SUB_NAME }); return /* @__PURE__ */ jsx(Sub, { ...menuScope, open, onOpenChange: setOpen, children }); }; ContextMenuSub$1.displayName = SUB_NAME; var SUB_TRIGGER_NAME = "ContextMenuSubTrigger"; var ContextMenuSubTrigger$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...triggerItemProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(SubTrigger, { ...menuScope, ...triggerItemProps, ref: forwardedRef }); }); ContextMenuSubTrigger$1.displayName = SUB_TRIGGER_NAME; var SUB_CONTENT_NAME = "ContextMenuSubContent"; var ContextMenuSubContent$1 = React.forwardRef((props, forwardedRef)=>{ const { __scopeContextMenu, ...subContentProps } = props; const menuScope = useMenuScope(__scopeContextMenu); return /* @__PURE__ */ jsx(SubContent, { ...menuScope, ...subContentProps, ref: forwardedRef, style: { ...props.style, // re-namespace exposed content custom properties ...{ "--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)", "--radix-context-menu-content-available-width": "var(--radix-popper-available-width)", "--radix-context-menu-content-available-height": "var(--radix-popper-available-height)", "--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)", "--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)" } } }); }); ContextMenuSubContent$1.displayName = SUB_CONTENT_NAME; function whenTouchOrPen(handler) { return (event)=>event.pointerType !== "mouse" ? handler(event) : void 0; } var Root2 = ContextMenu$1; var Trigger = ContextMenuTrigger$1; var Portal2 = ContextMenuPortal$1; var Content2 = ContextMenuContent$1; var Group2 = ContextMenuGroup$1; var Label2 = ContextMenuLabel$1; var Item2 = ContextMenuItem$1; var CheckboxItem2 = ContextMenuCheckboxItem$1; var RadioGroup2 = ContextMenuRadioGroup$1; var RadioItem2 = ContextMenuRadioItem$1; var ItemIndicator2 = ContextMenuItemIndicator; var Separator2 = ContextMenuSeparator$1; var Sub2 = ContextMenuSub$1; var SubTrigger2 = ContextMenuSubTrigger$1; var SubContent2 = ContextMenuSubContent$1; function ContextMenu({ ...props }) { return /*#__PURE__*/ React.createElement(Root2, { "data-slot": "context-menu", ...props }); } function ContextMenuTrigger({ ...props }) { return /*#__PURE__*/ React.createElement(Trigger, { "data-slot": "context-menu-trigger", ...props }); } function ContextMenuGroup({ ...props }) { return /*#__PURE__*/ React.createElement(Group2, { "data-slot": "context-menu-group", ...props }); } function ContextMenuPortal({ ...props }) { return /*#__PURE__*/ React.createElement(Portal2, { "data-slot": "context-menu-portal", ...props }); } function ContextMenuSub({ ...props }) { return /*#__PURE__*/ React.createElement(Sub2, { "data-slot": "context-menu-sub", ...props }); } function ContextMenuRadioGroup({ ...props }) { return /*#__PURE__*/ React.createElement(RadioGroup2, { "data-slot": "context-menu-radio-group", ...props }); } function ContextMenuSubTrigger({ className, inset, children, ...props }) { return /*#__PURE__*/ React.createElement(SubTrigger2, { "data-slot": "context-menu-sub-trigger", "data-inset": inset, className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props }, children, /*#__PURE__*/ React.createElement(ChevronRight, { className: "ml-auto" })); } function ContextMenuSubContent({ className, ...props }) { return /*#__PURE__*/ React.createElement(SubContent2, { "data-slot": "context-menu-sub-content", className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg", className), ...props }); } function ContextMenuContent({ className, ...props }) { return /*#__PURE__*/ React.createElement(Portal2, null, /*#__PURE__*/ React.createElement(Content2, { "data-slot": "context-menu-content", className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className), ...props })); } function ContextMenuItem({ className, inset, variant = "default", ...props }) { return /*#__PURE__*/ React.createElement(Item2, { "data-slot": "context-menu-item", "data-inset": inset, "data-variant": variant, className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props }); } function ContextMenuCheckboxItem({ className, children, checked, ...props }) { return /*#__PURE__*/ React.createElement(CheckboxItem2, { "data-slot": "context-menu-checkbox-item", className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), checked: checked, ...props }, /*#__PURE__*/ React.createElement("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center" }, /*#__PURE__*/ React.createElement(ItemIndicator2, null, /*#__PURE__*/ React.createElement(Check, { className: "size-4" }))), children); } function ContextMenuRadioItem({ className, children, ...props }) { return /*#__PURE__*/ React.createElement(RadioItem2, { "data-slot": "context-menu-radio-item", className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props }, /*#__PURE__*/ React.createElement("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center" }, /*#__PURE__*/ React.createElement(ItemIndicator2, null, /*#__PURE__*/ React.createElement(Circle, { className: "size-2 fill-current" }))), children); } function ContextMenuLabel({ className, inset, ...props }) { return /*#__PURE__*/ React.createElement(Label2, { "data-slot": "context-menu-label", "data-inset": inset, className: cn("text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className), ...props }); } function ContextMenuSeparator({ className, ...props }) { return /*#__PURE__*/ React.createElement(Separator2, { "data-slot": "context-menu-separator", className: cn("bg-border -mx-1 my-1 h-px", className), ...props }); } function ContextMenuShortcut({ className, ...props }) { return /*#__PURE__*/ React.createElement("span", { "data-slot": "context-menu-shortcut", className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className), ...props }); } export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger }; //# sourceMappingURL=index.mjs.map