@radix-ui/react-context-menu 0.0.0-20250116175529

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # `react-context-menu`
2
+
3
+ ## Installation
4
+
5
+ ```sh
6
+ $ yarn add @radix-ui/react-context-menu
7
+ # or
8
+ $ npm install @radix-ui/react-context-menu
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ View docs [here](https://radix-ui.com/primitives/docs/components/context-menu).
@@ -0,0 +1,96 @@
1
+ import * as _radix_ui_react_context from '@radix-ui/react-context';
2
+ import * as React from 'react';
3
+ import { Primitive } from '@radix-ui/react-primitive';
4
+ import * as MenuPrimitive from '@radix-ui/react-menu';
5
+
6
+ type Direction = 'ltr' | 'rtl';
7
+ declare const createContextMenuScope: _radix_ui_react_context.CreateScope;
8
+ interface ContextMenuProps {
9
+ children?: React.ReactNode;
10
+ onOpenChange?(open: boolean): void;
11
+ dir?: Direction;
12
+ modal?: boolean;
13
+ }
14
+ declare const ContextMenu: React.FC<ContextMenuProps>;
15
+ type PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;
16
+ interface ContextMenuTriggerProps extends PrimitiveSpanProps {
17
+ disabled?: boolean;
18
+ }
19
+ declare const ContextMenuTrigger: React.ForwardRefExoticComponent<ContextMenuTriggerProps & React.RefAttributes<HTMLSpanElement>>;
20
+ type MenuPortalProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;
21
+ interface ContextMenuPortalProps extends MenuPortalProps {
22
+ }
23
+ declare const ContextMenuPortal: React.FC<ContextMenuPortalProps>;
24
+ type MenuContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Content>;
25
+ interface ContextMenuContentProps extends Omit<MenuContentProps, 'onEntryFocus' | 'side' | 'sideOffset' | 'align'> {
26
+ }
27
+ declare const ContextMenuContent: React.ForwardRefExoticComponent<ContextMenuContentProps & React.RefAttributes<HTMLDivElement>>;
28
+ type MenuGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;
29
+ interface ContextMenuGroupProps extends MenuGroupProps {
30
+ }
31
+ declare const ContextMenuGroup: React.ForwardRefExoticComponent<ContextMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
32
+ type MenuLabelProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Label>;
33
+ interface ContextMenuLabelProps extends MenuLabelProps {
34
+ }
35
+ declare const ContextMenuLabel: React.ForwardRefExoticComponent<ContextMenuLabelProps & React.RefAttributes<HTMLDivElement>>;
36
+ type MenuItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Item>;
37
+ interface ContextMenuItemProps extends MenuItemProps {
38
+ }
39
+ declare const ContextMenuItem: React.ForwardRefExoticComponent<ContextMenuItemProps & React.RefAttributes<HTMLDivElement>>;
40
+ type MenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>;
41
+ interface ContextMenuCheckboxItemProps extends MenuCheckboxItemProps {
42
+ }
43
+ declare const ContextMenuCheckboxItem: React.ForwardRefExoticComponent<ContextMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>>;
44
+ type MenuRadioGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;
45
+ interface ContextMenuRadioGroupProps extends MenuRadioGroupProps {
46
+ }
47
+ declare const ContextMenuRadioGroup: React.ForwardRefExoticComponent<ContextMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
48
+ type MenuRadioItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;
49
+ interface ContextMenuRadioItemProps extends MenuRadioItemProps {
50
+ }
51
+ declare const ContextMenuRadioItem: React.ForwardRefExoticComponent<ContextMenuRadioItemProps & React.RefAttributes<HTMLDivElement>>;
52
+ type MenuItemIndicatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;
53
+ interface ContextMenuItemIndicatorProps extends MenuItemIndicatorProps {
54
+ }
55
+ declare const ContextMenuItemIndicator: React.ForwardRefExoticComponent<ContextMenuItemIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
56
+ type MenuSeparatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>;
57
+ interface ContextMenuSeparatorProps extends MenuSeparatorProps {
58
+ }
59
+ declare const ContextMenuSeparator: React.ForwardRefExoticComponent<ContextMenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
60
+ type MenuArrowProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>;
61
+ interface ContextMenuArrowProps extends MenuArrowProps {
62
+ }
63
+ declare const ContextMenuArrow: React.ForwardRefExoticComponent<ContextMenuArrowProps & React.RefAttributes<SVGSVGElement>>;
64
+ interface ContextMenuSubProps {
65
+ children?: React.ReactNode;
66
+ open?: boolean;
67
+ defaultOpen?: boolean;
68
+ onOpenChange?(open: boolean): void;
69
+ }
70
+ declare const ContextMenuSub: React.FC<ContextMenuSubProps>;
71
+ type MenuSubTriggerProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;
72
+ interface ContextMenuSubTriggerProps extends MenuSubTriggerProps {
73
+ }
74
+ declare const ContextMenuSubTrigger: React.ForwardRefExoticComponent<ContextMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>>;
75
+ type MenuSubContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;
76
+ interface ContextMenuSubContentProps extends MenuSubContentProps {
77
+ }
78
+ declare const ContextMenuSubContent: React.ForwardRefExoticComponent<ContextMenuSubContentProps & React.RefAttributes<HTMLDivElement>>;
79
+ declare const Root: React.FC<ContextMenuProps>;
80
+ declare const Trigger: React.ForwardRefExoticComponent<ContextMenuTriggerProps & React.RefAttributes<HTMLSpanElement>>;
81
+ declare const Portal: React.FC<ContextMenuPortalProps>;
82
+ declare const Content: React.ForwardRefExoticComponent<ContextMenuContentProps & React.RefAttributes<HTMLDivElement>>;
83
+ declare const Group: React.ForwardRefExoticComponent<ContextMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
84
+ declare const Label: React.ForwardRefExoticComponent<ContextMenuLabelProps & React.RefAttributes<HTMLDivElement>>;
85
+ declare const Item: React.ForwardRefExoticComponent<ContextMenuItemProps & React.RefAttributes<HTMLDivElement>>;
86
+ declare const CheckboxItem: React.ForwardRefExoticComponent<ContextMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>>;
87
+ declare const RadioGroup: React.ForwardRefExoticComponent<ContextMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
88
+ declare const RadioItem: React.ForwardRefExoticComponent<ContextMenuRadioItemProps & React.RefAttributes<HTMLDivElement>>;
89
+ declare const ItemIndicator: React.ForwardRefExoticComponent<ContextMenuItemIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
90
+ declare const Separator: React.ForwardRefExoticComponent<ContextMenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
91
+ declare const Arrow: React.ForwardRefExoticComponent<ContextMenuArrowProps & React.RefAttributes<SVGSVGElement>>;
92
+ declare const Sub: React.FC<ContextMenuSubProps>;
93
+ declare const SubTrigger: React.ForwardRefExoticComponent<ContextMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>>;
94
+ declare const SubContent: React.ForwardRefExoticComponent<ContextMenuSubContentProps & React.RefAttributes<HTMLDivElement>>;
95
+
96
+ export { Arrow, CheckboxItem, Content, ContextMenu, ContextMenuArrow, type ContextMenuArrowProps, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, type ContextMenuContentProps, ContextMenuGroup, type ContextMenuGroupProps, ContextMenuItem, ContextMenuItemIndicator, type ContextMenuItemIndicatorProps, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuPortal, type ContextMenuPortalProps, type ContextMenuProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuSeparator, type ContextMenuSeparatorProps, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubContentProps, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, Group, Item, ItemIndicator, Label, Portal, RadioGroup, RadioItem, Root, Separator, Sub, SubContent, SubTrigger, Trigger, createContextMenuScope };
@@ -0,0 +1,96 @@
1
+ import * as _radix_ui_react_context from '@radix-ui/react-context';
2
+ import * as React from 'react';
3
+ import { Primitive } from '@radix-ui/react-primitive';
4
+ import * as MenuPrimitive from '@radix-ui/react-menu';
5
+
6
+ type Direction = 'ltr' | 'rtl';
7
+ declare const createContextMenuScope: _radix_ui_react_context.CreateScope;
8
+ interface ContextMenuProps {
9
+ children?: React.ReactNode;
10
+ onOpenChange?(open: boolean): void;
11
+ dir?: Direction;
12
+ modal?: boolean;
13
+ }
14
+ declare const ContextMenu: React.FC<ContextMenuProps>;
15
+ type PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;
16
+ interface ContextMenuTriggerProps extends PrimitiveSpanProps {
17
+ disabled?: boolean;
18
+ }
19
+ declare const ContextMenuTrigger: React.ForwardRefExoticComponent<ContextMenuTriggerProps & React.RefAttributes<HTMLSpanElement>>;
20
+ type MenuPortalProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;
21
+ interface ContextMenuPortalProps extends MenuPortalProps {
22
+ }
23
+ declare const ContextMenuPortal: React.FC<ContextMenuPortalProps>;
24
+ type MenuContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Content>;
25
+ interface ContextMenuContentProps extends Omit<MenuContentProps, 'onEntryFocus' | 'side' | 'sideOffset' | 'align'> {
26
+ }
27
+ declare const ContextMenuContent: React.ForwardRefExoticComponent<ContextMenuContentProps & React.RefAttributes<HTMLDivElement>>;
28
+ type MenuGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;
29
+ interface ContextMenuGroupProps extends MenuGroupProps {
30
+ }
31
+ declare const ContextMenuGroup: React.ForwardRefExoticComponent<ContextMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
32
+ type MenuLabelProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Label>;
33
+ interface ContextMenuLabelProps extends MenuLabelProps {
34
+ }
35
+ declare const ContextMenuLabel: React.ForwardRefExoticComponent<ContextMenuLabelProps & React.RefAttributes<HTMLDivElement>>;
36
+ type MenuItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Item>;
37
+ interface ContextMenuItemProps extends MenuItemProps {
38
+ }
39
+ declare const ContextMenuItem: React.ForwardRefExoticComponent<ContextMenuItemProps & React.RefAttributes<HTMLDivElement>>;
40
+ type MenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>;
41
+ interface ContextMenuCheckboxItemProps extends MenuCheckboxItemProps {
42
+ }
43
+ declare const ContextMenuCheckboxItem: React.ForwardRefExoticComponent<ContextMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>>;
44
+ type MenuRadioGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;
45
+ interface ContextMenuRadioGroupProps extends MenuRadioGroupProps {
46
+ }
47
+ declare const ContextMenuRadioGroup: React.ForwardRefExoticComponent<ContextMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
48
+ type MenuRadioItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;
49
+ interface ContextMenuRadioItemProps extends MenuRadioItemProps {
50
+ }
51
+ declare const ContextMenuRadioItem: React.ForwardRefExoticComponent<ContextMenuRadioItemProps & React.RefAttributes<HTMLDivElement>>;
52
+ type MenuItemIndicatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;
53
+ interface ContextMenuItemIndicatorProps extends MenuItemIndicatorProps {
54
+ }
55
+ declare const ContextMenuItemIndicator: React.ForwardRefExoticComponent<ContextMenuItemIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
56
+ type MenuSeparatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>;
57
+ interface ContextMenuSeparatorProps extends MenuSeparatorProps {
58
+ }
59
+ declare const ContextMenuSeparator: React.ForwardRefExoticComponent<ContextMenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
60
+ type MenuArrowProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>;
61
+ interface ContextMenuArrowProps extends MenuArrowProps {
62
+ }
63
+ declare const ContextMenuArrow: React.ForwardRefExoticComponent<ContextMenuArrowProps & React.RefAttributes<SVGSVGElement>>;
64
+ interface ContextMenuSubProps {
65
+ children?: React.ReactNode;
66
+ open?: boolean;
67
+ defaultOpen?: boolean;
68
+ onOpenChange?(open: boolean): void;
69
+ }
70
+ declare const ContextMenuSub: React.FC<ContextMenuSubProps>;
71
+ type MenuSubTriggerProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;
72
+ interface ContextMenuSubTriggerProps extends MenuSubTriggerProps {
73
+ }
74
+ declare const ContextMenuSubTrigger: React.ForwardRefExoticComponent<ContextMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>>;
75
+ type MenuSubContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;
76
+ interface ContextMenuSubContentProps extends MenuSubContentProps {
77
+ }
78
+ declare const ContextMenuSubContent: React.ForwardRefExoticComponent<ContextMenuSubContentProps & React.RefAttributes<HTMLDivElement>>;
79
+ declare const Root: React.FC<ContextMenuProps>;
80
+ declare const Trigger: React.ForwardRefExoticComponent<ContextMenuTriggerProps & React.RefAttributes<HTMLSpanElement>>;
81
+ declare const Portal: React.FC<ContextMenuPortalProps>;
82
+ declare const Content: React.ForwardRefExoticComponent<ContextMenuContentProps & React.RefAttributes<HTMLDivElement>>;
83
+ declare const Group: React.ForwardRefExoticComponent<ContextMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
84
+ declare const Label: React.ForwardRefExoticComponent<ContextMenuLabelProps & React.RefAttributes<HTMLDivElement>>;
85
+ declare const Item: React.ForwardRefExoticComponent<ContextMenuItemProps & React.RefAttributes<HTMLDivElement>>;
86
+ declare const CheckboxItem: React.ForwardRefExoticComponent<ContextMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>>;
87
+ declare const RadioGroup: React.ForwardRefExoticComponent<ContextMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
88
+ declare const RadioItem: React.ForwardRefExoticComponent<ContextMenuRadioItemProps & React.RefAttributes<HTMLDivElement>>;
89
+ declare const ItemIndicator: React.ForwardRefExoticComponent<ContextMenuItemIndicatorProps & React.RefAttributes<HTMLSpanElement>>;
90
+ declare const Separator: React.ForwardRefExoticComponent<ContextMenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
91
+ declare const Arrow: React.ForwardRefExoticComponent<ContextMenuArrowProps & React.RefAttributes<SVGSVGElement>>;
92
+ declare const Sub: React.FC<ContextMenuSubProps>;
93
+ declare const SubTrigger: React.ForwardRefExoticComponent<ContextMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>>;
94
+ declare const SubContent: React.ForwardRefExoticComponent<ContextMenuSubContentProps & React.RefAttributes<HTMLDivElement>>;
95
+
96
+ export { Arrow, CheckboxItem, Content, ContextMenu, ContextMenuArrow, type ContextMenuArrowProps, ContextMenuCheckboxItem, type ContextMenuCheckboxItemProps, ContextMenuContent, type ContextMenuContentProps, ContextMenuGroup, type ContextMenuGroupProps, ContextMenuItem, ContextMenuItemIndicator, type ContextMenuItemIndicatorProps, type ContextMenuItemProps, ContextMenuLabel, type ContextMenuLabelProps, ContextMenuPortal, type ContextMenuPortalProps, type ContextMenuProps, ContextMenuRadioGroup, type ContextMenuRadioGroupProps, ContextMenuRadioItem, type ContextMenuRadioItemProps, ContextMenuSeparator, type ContextMenuSeparatorProps, ContextMenuSub, ContextMenuSubContent, type ContextMenuSubContentProps, type ContextMenuSubProps, ContextMenuSubTrigger, type ContextMenuSubTriggerProps, ContextMenuTrigger, type ContextMenuTriggerProps, Group, Item, ItemIndicator, Label, Portal, RadioGroup, RadioItem, Root, Separator, Sub, SubContent, SubTrigger, Trigger, createContextMenuScope };
package/dist/index.js ADDED
@@ -0,0 +1,356 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // packages/react/context-menu/src/index.ts
32
+ var src_exports = {};
33
+ __export(src_exports, {
34
+ Arrow: () => Arrow2,
35
+ CheckboxItem: () => CheckboxItem2,
36
+ Content: () => Content2,
37
+ ContextMenu: () => ContextMenu,
38
+ ContextMenuArrow: () => ContextMenuArrow,
39
+ ContextMenuCheckboxItem: () => ContextMenuCheckboxItem,
40
+ ContextMenuContent: () => ContextMenuContent,
41
+ ContextMenuGroup: () => ContextMenuGroup,
42
+ ContextMenuItem: () => ContextMenuItem,
43
+ ContextMenuItemIndicator: () => ContextMenuItemIndicator,
44
+ ContextMenuLabel: () => ContextMenuLabel,
45
+ ContextMenuPortal: () => ContextMenuPortal,
46
+ ContextMenuRadioGroup: () => ContextMenuRadioGroup,
47
+ ContextMenuRadioItem: () => ContextMenuRadioItem,
48
+ ContextMenuSeparator: () => ContextMenuSeparator,
49
+ ContextMenuSub: () => ContextMenuSub,
50
+ ContextMenuSubContent: () => ContextMenuSubContent,
51
+ ContextMenuSubTrigger: () => ContextMenuSubTrigger,
52
+ ContextMenuTrigger: () => ContextMenuTrigger,
53
+ Group: () => Group2,
54
+ Item: () => Item2,
55
+ ItemIndicator: () => ItemIndicator2,
56
+ Label: () => Label2,
57
+ Portal: () => Portal2,
58
+ RadioGroup: () => RadioGroup2,
59
+ RadioItem: () => RadioItem2,
60
+ Root: () => Root2,
61
+ Separator: () => Separator2,
62
+ Sub: () => Sub2,
63
+ SubContent: () => SubContent2,
64
+ SubTrigger: () => SubTrigger2,
65
+ Trigger: () => Trigger,
66
+ createContextMenuScope: () => createContextMenuScope
67
+ });
68
+ module.exports = __toCommonJS(src_exports);
69
+
70
+ // packages/react/context-menu/src/ContextMenu.tsx
71
+ var React = __toESM(require("react"));
72
+ var import_primitive = require("@radix-ui/primitive");
73
+ var import_react_context = require("@radix-ui/react-context");
74
+ var import_react_primitive = require("@radix-ui/react-primitive");
75
+ var MenuPrimitive = __toESM(require("@radix-ui/react-menu"));
76
+ var import_react_menu = require("@radix-ui/react-menu");
77
+ var import_react_use_callback_ref = require("@radix-ui/react-use-callback-ref");
78
+ var import_react_use_controllable_state = require("@radix-ui/react-use-controllable-state");
79
+ var import_jsx_runtime = require("react/jsx-runtime");
80
+ var CONTEXT_MENU_NAME = "ContextMenu";
81
+ var [createContextMenuContext, createContextMenuScope] = (0, import_react_context.createContextScope)(CONTEXT_MENU_NAME, [
82
+ import_react_menu.createMenuScope
83
+ ]);
84
+ var useMenuScope = (0, import_react_menu.createMenuScope)();
85
+ var [ContextMenuProvider, useContextMenuContext] = createContextMenuContext(CONTEXT_MENU_NAME);
86
+ var ContextMenu = (props) => {
87
+ const { __scopeContextMenu, children, onOpenChange, dir, modal = true } = props;
88
+ const [open, setOpen] = React.useState(false);
89
+ const menuScope = useMenuScope(__scopeContextMenu);
90
+ const handleOpenChangeProp = (0, import_react_use_callback_ref.useCallbackRef)(onOpenChange);
91
+ const handleOpenChange = React.useCallback(
92
+ (open2) => {
93
+ setOpen(open2);
94
+ handleOpenChangeProp(open2);
95
+ },
96
+ [handleOpenChangeProp]
97
+ );
98
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
99
+ ContextMenuProvider,
100
+ {
101
+ scope: __scopeContextMenu,
102
+ open,
103
+ onOpenChange: handleOpenChange,
104
+ modal,
105
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
106
+ MenuPrimitive.Root,
107
+ {
108
+ ...menuScope,
109
+ dir,
110
+ open,
111
+ onOpenChange: handleOpenChange,
112
+ modal,
113
+ children
114
+ }
115
+ )
116
+ }
117
+ );
118
+ };
119
+ ContextMenu.displayName = CONTEXT_MENU_NAME;
120
+ var TRIGGER_NAME = "ContextMenuTrigger";
121
+ var ContextMenuTrigger = React.forwardRef(
122
+ (props, forwardedRef) => {
123
+ const { __scopeContextMenu, disabled = false, ...triggerProps } = props;
124
+ const context = useContextMenuContext(TRIGGER_NAME, __scopeContextMenu);
125
+ const menuScope = useMenuScope(__scopeContextMenu);
126
+ const pointRef = React.useRef({ x: 0, y: 0 });
127
+ const virtualRef = React.useRef({
128
+ getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...pointRef.current })
129
+ });
130
+ const longPressTimerRef = React.useRef(0);
131
+ const clearLongPress = React.useCallback(
132
+ () => window.clearTimeout(longPressTimerRef.current),
133
+ []
134
+ );
135
+ const handleOpen = (event) => {
136
+ pointRef.current = { x: event.clientX, y: event.clientY };
137
+ context.onOpenChange(true);
138
+ };
139
+ React.useEffect(() => clearLongPress, [clearLongPress]);
140
+ React.useEffect(() => void (disabled && clearLongPress()), [disabled, clearLongPress]);
141
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
142
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.Anchor, { ...menuScope, virtualRef }),
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
144
+ import_react_primitive.Primitive.span,
145
+ {
146
+ "data-state": context.open ? "open" : "closed",
147
+ "data-disabled": disabled ? "" : void 0,
148
+ ...triggerProps,
149
+ ref: forwardedRef,
150
+ style: { WebkitTouchCallout: "none", ...props.style },
151
+ onContextMenu: disabled ? props.onContextMenu : (0, import_primitive.composeEventHandlers)(props.onContextMenu, (event) => {
152
+ clearLongPress();
153
+ handleOpen(event);
154
+ event.preventDefault();
155
+ }),
156
+ onPointerDown: disabled ? props.onPointerDown : (0, import_primitive.composeEventHandlers)(
157
+ props.onPointerDown,
158
+ whenTouchOrPen((event) => {
159
+ clearLongPress();
160
+ longPressTimerRef.current = window.setTimeout(() => handleOpen(event), 700);
161
+ })
162
+ ),
163
+ onPointerMove: disabled ? props.onPointerMove : (0, import_primitive.composeEventHandlers)(props.onPointerMove, whenTouchOrPen(clearLongPress)),
164
+ onPointerCancel: disabled ? props.onPointerCancel : (0, import_primitive.composeEventHandlers)(props.onPointerCancel, whenTouchOrPen(clearLongPress)),
165
+ onPointerUp: disabled ? props.onPointerUp : (0, import_primitive.composeEventHandlers)(props.onPointerUp, whenTouchOrPen(clearLongPress))
166
+ }
167
+ )
168
+ ] });
169
+ }
170
+ );
171
+ ContextMenuTrigger.displayName = TRIGGER_NAME;
172
+ var PORTAL_NAME = "ContextMenuPortal";
173
+ var ContextMenuPortal = (props) => {
174
+ const { __scopeContextMenu, ...portalProps } = props;
175
+ const menuScope = useMenuScope(__scopeContextMenu);
176
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.Portal, { ...menuScope, ...portalProps });
177
+ };
178
+ ContextMenuPortal.displayName = PORTAL_NAME;
179
+ var CONTENT_NAME = "ContextMenuContent";
180
+ var ContextMenuContent = React.forwardRef(
181
+ (props, forwardedRef) => {
182
+ const { __scopeContextMenu, ...contentProps } = props;
183
+ const context = useContextMenuContext(CONTENT_NAME, __scopeContextMenu);
184
+ const menuScope = useMenuScope(__scopeContextMenu);
185
+ const hasInteractedOutsideRef = React.useRef(false);
186
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
187
+ MenuPrimitive.Content,
188
+ {
189
+ ...menuScope,
190
+ ...contentProps,
191
+ ref: forwardedRef,
192
+ side: "right",
193
+ sideOffset: 2,
194
+ align: "start",
195
+ onCloseAutoFocus: (event) => {
196
+ props.onCloseAutoFocus?.(event);
197
+ if (!event.defaultPrevented && hasInteractedOutsideRef.current) {
198
+ event.preventDefault();
199
+ }
200
+ hasInteractedOutsideRef.current = false;
201
+ },
202
+ onInteractOutside: (event) => {
203
+ props.onInteractOutside?.(event);
204
+ if (!event.defaultPrevented && !context.modal) hasInteractedOutsideRef.current = true;
205
+ },
206
+ style: {
207
+ ...props.style,
208
+ // re-namespace exposed content custom properties
209
+ ...{
210
+ "--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
211
+ "--radix-context-menu-content-available-width": "var(--radix-popper-available-width)",
212
+ "--radix-context-menu-content-available-height": "var(--radix-popper-available-height)",
213
+ "--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)",
214
+ "--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)"
215
+ }
216
+ }
217
+ }
218
+ );
219
+ }
220
+ );
221
+ ContextMenuContent.displayName = CONTENT_NAME;
222
+ var GROUP_NAME = "ContextMenuGroup";
223
+ var ContextMenuGroup = React.forwardRef(
224
+ (props, forwardedRef) => {
225
+ const { __scopeContextMenu, ...groupProps } = props;
226
+ const menuScope = useMenuScope(__scopeContextMenu);
227
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });
228
+ }
229
+ );
230
+ ContextMenuGroup.displayName = GROUP_NAME;
231
+ var LABEL_NAME = "ContextMenuLabel";
232
+ var ContextMenuLabel = React.forwardRef(
233
+ (props, forwardedRef) => {
234
+ const { __scopeContextMenu, ...labelProps } = props;
235
+ const menuScope = useMenuScope(__scopeContextMenu);
236
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });
237
+ }
238
+ );
239
+ ContextMenuLabel.displayName = LABEL_NAME;
240
+ var ITEM_NAME = "ContextMenuItem";
241
+ var ContextMenuItem = React.forwardRef(
242
+ (props, forwardedRef) => {
243
+ const { __scopeContextMenu, ...itemProps } = props;
244
+ const menuScope = useMenuScope(__scopeContextMenu);
245
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });
246
+ }
247
+ );
248
+ ContextMenuItem.displayName = ITEM_NAME;
249
+ var CHECKBOX_ITEM_NAME = "ContextMenuCheckboxItem";
250
+ var ContextMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {
251
+ const { __scopeContextMenu, ...checkboxItemProps } = props;
252
+ const menuScope = useMenuScope(__scopeContextMenu);
253
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });
254
+ });
255
+ ContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
256
+ var RADIO_GROUP_NAME = "ContextMenuRadioGroup";
257
+ var ContextMenuRadioGroup = React.forwardRef((props, forwardedRef) => {
258
+ const { __scopeContextMenu, ...radioGroupProps } = props;
259
+ const menuScope = useMenuScope(__scopeContextMenu);
260
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });
261
+ });
262
+ ContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;
263
+ var RADIO_ITEM_NAME = "ContextMenuRadioItem";
264
+ var ContextMenuRadioItem = React.forwardRef((props, forwardedRef) => {
265
+ const { __scopeContextMenu, ...radioItemProps } = props;
266
+ const menuScope = useMenuScope(__scopeContextMenu);
267
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });
268
+ });
269
+ ContextMenuRadioItem.displayName = RADIO_ITEM_NAME;
270
+ var INDICATOR_NAME = "ContextMenuItemIndicator";
271
+ var ContextMenuItemIndicator = React.forwardRef((props, forwardedRef) => {
272
+ const { __scopeContextMenu, ...itemIndicatorProps } = props;
273
+ const menuScope = useMenuScope(__scopeContextMenu);
274
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });
275
+ });
276
+ ContextMenuItemIndicator.displayName = INDICATOR_NAME;
277
+ var SEPARATOR_NAME = "ContextMenuSeparator";
278
+ var ContextMenuSeparator = React.forwardRef((props, forwardedRef) => {
279
+ const { __scopeContextMenu, ...separatorProps } = props;
280
+ const menuScope = useMenuScope(__scopeContextMenu);
281
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });
282
+ });
283
+ ContextMenuSeparator.displayName = SEPARATOR_NAME;
284
+ var ARROW_NAME = "ContextMenuArrow";
285
+ var ContextMenuArrow = React.forwardRef(
286
+ (props, forwardedRef) => {
287
+ const { __scopeContextMenu, ...arrowProps } = props;
288
+ const menuScope = useMenuScope(__scopeContextMenu);
289
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });
290
+ }
291
+ );
292
+ ContextMenuArrow.displayName = ARROW_NAME;
293
+ var SUB_NAME = "ContextMenuSub";
294
+ var ContextMenuSub = (props) => {
295
+ const { __scopeContextMenu, children, onOpenChange, open: openProp, defaultOpen } = props;
296
+ const menuScope = useMenuScope(__scopeContextMenu);
297
+ const [open, setOpen] = (0, import_react_use_controllable_state.useControllableState)({
298
+ prop: openProp,
299
+ defaultProp: defaultOpen,
300
+ onChange: onOpenChange
301
+ });
302
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });
303
+ };
304
+ ContextMenuSub.displayName = SUB_NAME;
305
+ var SUB_TRIGGER_NAME = "ContextMenuSubTrigger";
306
+ var ContextMenuSubTrigger = React.forwardRef((props, forwardedRef) => {
307
+ const { __scopeContextMenu, ...triggerItemProps } = props;
308
+ const menuScope = useMenuScope(__scopeContextMenu);
309
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MenuPrimitive.SubTrigger, { ...menuScope, ...triggerItemProps, ref: forwardedRef });
310
+ });
311
+ ContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
312
+ var SUB_CONTENT_NAME = "ContextMenuSubContent";
313
+ var ContextMenuSubContent = React.forwardRef((props, forwardedRef) => {
314
+ const { __scopeContextMenu, ...subContentProps } = props;
315
+ const menuScope = useMenuScope(__scopeContextMenu);
316
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
317
+ MenuPrimitive.SubContent,
318
+ {
319
+ ...menuScope,
320
+ ...subContentProps,
321
+ ref: forwardedRef,
322
+ style: {
323
+ ...props.style,
324
+ // re-namespace exposed content custom properties
325
+ ...{
326
+ "--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
327
+ "--radix-context-menu-content-available-width": "var(--radix-popper-available-width)",
328
+ "--radix-context-menu-content-available-height": "var(--radix-popper-available-height)",
329
+ "--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)",
330
+ "--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)"
331
+ }
332
+ }
333
+ }
334
+ );
335
+ });
336
+ ContextMenuSubContent.displayName = SUB_CONTENT_NAME;
337
+ function whenTouchOrPen(handler) {
338
+ return (event) => event.pointerType !== "mouse" ? handler(event) : void 0;
339
+ }
340
+ var Root2 = ContextMenu;
341
+ var Trigger = ContextMenuTrigger;
342
+ var Portal2 = ContextMenuPortal;
343
+ var Content2 = ContextMenuContent;
344
+ var Group2 = ContextMenuGroup;
345
+ var Label2 = ContextMenuLabel;
346
+ var Item2 = ContextMenuItem;
347
+ var CheckboxItem2 = ContextMenuCheckboxItem;
348
+ var RadioGroup2 = ContextMenuRadioGroup;
349
+ var RadioItem2 = ContextMenuRadioItem;
350
+ var ItemIndicator2 = ContextMenuItemIndicator;
351
+ var Separator2 = ContextMenuSeparator;
352
+ var Arrow2 = ContextMenuArrow;
353
+ var Sub2 = ContextMenuSub;
354
+ var SubTrigger2 = ContextMenuSubTrigger;
355
+ var SubContent2 = ContextMenuSubContent;
356
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts", "../src/ContextMenu.tsx"],
4
+ "sourcesContent": ["'use client';\nexport {\n createContextMenuScope,\n //\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuPortal,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuLabel,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuItemIndicator,\n ContextMenuSeparator,\n ContextMenuArrow,\n ContextMenuSub,\n ContextMenuSubTrigger,\n ContextMenuSubContent,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n} from './ContextMenu';\nexport type {\n ContextMenuProps,\n ContextMenuTriggerProps,\n ContextMenuPortalProps,\n ContextMenuContentProps,\n ContextMenuGroupProps,\n ContextMenuLabelProps,\n ContextMenuItemProps,\n ContextMenuCheckboxItemProps,\n ContextMenuRadioGroupProps,\n ContextMenuRadioItemProps,\n ContextMenuItemIndicatorProps,\n ContextMenuSeparatorProps,\n ContextMenuArrowProps,\n ContextMenuSubProps,\n ContextMenuSubTriggerProps,\n ContextMenuSubContentProps,\n} from './ContextMenu';\n", "import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as MenuPrimitive from '@radix-ui/react-menu';\nimport { createMenuScope } from '@radix-ui/react-menu';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\n\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\ntype Point = { x: number; y: number };\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenu\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTEXT_MENU_NAME = 'ContextMenu';\n\ntype ScopedProps<P> = P & { __scopeContextMenu?: Scope };\nconst [createContextMenuContext, createContextMenuScope] = createContextScope(CONTEXT_MENU_NAME, [\n createMenuScope,\n]);\nconst useMenuScope = createMenuScope();\n\ntype ContextMenuContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n modal: boolean;\n};\n\nconst [ContextMenuProvider, useContextMenuContext] =\n createContextMenuContext<ContextMenuContextValue>(CONTEXT_MENU_NAME);\n\ninterface ContextMenuProps {\n children?: React.ReactNode;\n onOpenChange?(open: boolean): void;\n dir?: Direction;\n modal?: boolean;\n}\n\nconst ContextMenu: React.FC<ContextMenuProps> = (props: ScopedProps<ContextMenuProps>) => {\n const { __scopeContextMenu, children, onOpenChange, dir, modal = true } = props;\n const [open, setOpen] = React.useState(false);\n const menuScope = useMenuScope(__scopeContextMenu);\n const handleOpenChangeProp = useCallbackRef(onOpenChange);\n\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n setOpen(open);\n handleOpenChangeProp(open);\n },\n [handleOpenChangeProp]\n );\n\n return (\n <ContextMenuProvider\n scope={__scopeContextMenu}\n open={open}\n onOpenChange={handleOpenChange}\n modal={modal}\n >\n <MenuPrimitive.Root\n {...menuScope}\n dir={dir}\n open={open}\n onOpenChange={handleOpenChange}\n modal={modal}\n >\n {children}\n </MenuPrimitive.Root>\n </ContextMenuProvider>\n );\n};\n\nContextMenu.displayName = CONTEXT_MENU_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'ContextMenuTrigger';\n\ntype ContextMenuTriggerElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface ContextMenuTriggerProps extends PrimitiveSpanProps {\n disabled?: boolean;\n}\n\nconst ContextMenuTrigger = React.forwardRef<ContextMenuTriggerElement, ContextMenuTriggerProps>(\n (props: ScopedProps<ContextMenuTriggerProps>, forwardedRef) => {\n const { __scopeContextMenu, disabled = false, ...triggerProps } = props;\n const context = useContextMenuContext(TRIGGER_NAME, __scopeContextMenu);\n const menuScope = useMenuScope(__scopeContextMenu);\n const pointRef = React.useRef<Point>({ x: 0, y: 0 });\n const virtualRef = React.useRef({\n getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...pointRef.current }),\n });\n const longPressTimerRef = React.useRef(0);\n const clearLongPress = React.useCallback(\n () => window.clearTimeout(longPressTimerRef.current),\n []\n );\n const handleOpen = (event: React.MouseEvent | React.PointerEvent) => {\n pointRef.current = { x: event.clientX, y: event.clientY };\n context.onOpenChange(true);\n };\n\n React.useEffect(() => clearLongPress, [clearLongPress]);\n React.useEffect(() => void (disabled && clearLongPress()), [disabled, clearLongPress]);\n\n return (\n <>\n <MenuPrimitive.Anchor {...menuScope} virtualRef={virtualRef} />\n <Primitive.span\n data-state={context.open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n {...triggerProps}\n ref={forwardedRef}\n // prevent iOS context menu from appearing\n style={{ WebkitTouchCallout: 'none', ...props.style }}\n // if trigger is disabled, enable the native Context Menu\n onContextMenu={\n disabled\n ? props.onContextMenu\n : composeEventHandlers(props.onContextMenu, (event) => {\n // clearing the long press here because some platforms already support\n // long press to trigger a `contextmenu` event\n clearLongPress();\n handleOpen(event);\n event.preventDefault();\n })\n }\n onPointerDown={\n disabled\n ? props.onPointerDown\n : composeEventHandlers(\n props.onPointerDown,\n whenTouchOrPen((event) => {\n // clear the long press here in case there's multiple touch points\n clearLongPress();\n longPressTimerRef.current = window.setTimeout(() => handleOpen(event), 700);\n })\n )\n }\n onPointerMove={\n disabled\n ? props.onPointerMove\n : composeEventHandlers(props.onPointerMove, whenTouchOrPen(clearLongPress))\n }\n onPointerCancel={\n disabled\n ? props.onPointerCancel\n : composeEventHandlers(props.onPointerCancel, whenTouchOrPen(clearLongPress))\n }\n onPointerUp={\n disabled\n ? props.onPointerUp\n : composeEventHandlers(props.onPointerUp, whenTouchOrPen(clearLongPress))\n }\n />\n </>\n );\n }\n);\n\nContextMenuTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'ContextMenuPortal';\n\ntype MenuPortalProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;\ninterface ContextMenuPortalProps extends MenuPortalProps {}\n\nconst ContextMenuPortal: React.FC<ContextMenuPortalProps> = (\n props: ScopedProps<ContextMenuPortalProps>\n) => {\n const { __scopeContextMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Portal {...menuScope} {...portalProps} />;\n};\n\nContextMenuPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'ContextMenuContent';\n\ntype ContextMenuContentElement = React.ElementRef<typeof MenuPrimitive.Content>;\ntype MenuContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Content>;\ninterface ContextMenuContentProps\n extends Omit<MenuContentProps, 'onEntryFocus' | 'side' | 'sideOffset' | 'align'> {}\n\nconst ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMenuContentProps>(\n (props: ScopedProps<ContextMenuContentProps>, forwardedRef) => {\n const { __scopeContextMenu, ...contentProps } = props;\n const context = useContextMenuContext(CONTENT_NAME, __scopeContextMenu);\n const menuScope = useMenuScope(__scopeContextMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n\n return (\n <MenuPrimitive.Content\n {...menuScope}\n {...contentProps}\n ref={forwardedRef}\n side=\"right\"\n sideOffset={2}\n align=\"start\"\n onCloseAutoFocus={(event) => {\n props.onCloseAutoFocus?.(event);\n\n if (!event.defaultPrevented && hasInteractedOutsideRef.current) {\n event.preventDefault();\n }\n\n hasInteractedOutsideRef.current = false;\n }}\n onInteractOutside={(event) => {\n props.onInteractOutside?.(event);\n\n if (!event.defaultPrevented && !context.modal) hasInteractedOutsideRef.current = true;\n }}\n style={{\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-context-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-context-menu-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-context-menu-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-context-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-context-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n />\n );\n }\n);\n\nContextMenuContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'ContextMenuGroup';\n\ntype ContextMenuGroupElement = React.ElementRef<typeof MenuPrimitive.Group>;\ntype MenuGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;\ninterface ContextMenuGroupProps extends MenuGroupProps {}\n\nconst ContextMenuGroup = React.forwardRef<ContextMenuGroupElement, ContextMenuGroupProps>(\n (props: ScopedProps<ContextMenuGroupProps>, forwardedRef) => {\n const { __scopeContextMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Group {...menuScope} {...groupProps} ref={forwardedRef} />;\n }\n);\n\nContextMenuGroup.displayName = GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'ContextMenuLabel';\n\ntype ContextMenuLabelElement = React.ElementRef<typeof MenuPrimitive.Label>;\ntype MenuLabelProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Label>;\ninterface ContextMenuLabelProps extends MenuLabelProps {}\n\nconst ContextMenuLabel = React.forwardRef<ContextMenuLabelElement, ContextMenuLabelProps>(\n (props: ScopedProps<ContextMenuLabelProps>, forwardedRef) => {\n const { __scopeContextMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Label {...menuScope} {...labelProps} ref={forwardedRef} />;\n }\n);\n\nContextMenuLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'ContextMenuItem';\n\ntype ContextMenuItemElement = React.ElementRef<typeof MenuPrimitive.Item>;\ntype MenuItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Item>;\ninterface ContextMenuItemProps extends MenuItemProps {}\n\nconst ContextMenuItem = React.forwardRef<ContextMenuItemElement, ContextMenuItemProps>(\n (props: ScopedProps<ContextMenuItemProps>, forwardedRef) => {\n const { __scopeContextMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Item {...menuScope} {...itemProps} ref={forwardedRef} />;\n }\n);\n\nContextMenuItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuCheckboxItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst CHECKBOX_ITEM_NAME = 'ContextMenuCheckboxItem';\n\ntype ContextMenuCheckboxItemElement = React.ElementRef<typeof MenuPrimitive.CheckboxItem>;\ntype MenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>;\ninterface ContextMenuCheckboxItemProps extends MenuCheckboxItemProps {}\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n ContextMenuCheckboxItemElement,\n ContextMenuCheckboxItemProps\n>((props: ScopedProps<ContextMenuCheckboxItemProps>, forwardedRef) => {\n const { __scopeContextMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.CheckboxItem {...menuScope} {...checkboxItemProps} ref={forwardedRef} />;\n});\n\nContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuRadioGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_GROUP_NAME = 'ContextMenuRadioGroup';\n\ntype ContextMenuRadioGroupElement = React.ElementRef<typeof MenuPrimitive.RadioGroup>;\ntype MenuRadioGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;\ninterface ContextMenuRadioGroupProps extends MenuRadioGroupProps {}\n\nconst ContextMenuRadioGroup = React.forwardRef<\n ContextMenuRadioGroupElement,\n ContextMenuRadioGroupProps\n>((props: ScopedProps<ContextMenuRadioGroupProps>, forwardedRef) => {\n const { __scopeContextMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.RadioGroup {...menuScope} {...radioGroupProps} ref={forwardedRef} />;\n});\n\nContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuRadioItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_ITEM_NAME = 'ContextMenuRadioItem';\n\ntype ContextMenuRadioItemElement = React.ElementRef<typeof MenuPrimitive.RadioItem>;\ntype MenuRadioItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;\ninterface ContextMenuRadioItemProps extends MenuRadioItemProps {}\n\nconst ContextMenuRadioItem = React.forwardRef<\n ContextMenuRadioItemElement,\n ContextMenuRadioItemProps\n>((props: ScopedProps<ContextMenuRadioItemProps>, forwardedRef) => {\n const { __scopeContextMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.RadioItem {...menuScope} {...radioItemProps} ref={forwardedRef} />;\n});\n\nContextMenuRadioItem.displayName = RADIO_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'ContextMenuItemIndicator';\n\ntype ContextMenuItemIndicatorElement = React.ElementRef<typeof MenuPrimitive.ItemIndicator>;\ntype MenuItemIndicatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;\ninterface ContextMenuItemIndicatorProps extends MenuItemIndicatorProps {}\n\nconst ContextMenuItemIndicator = React.forwardRef<\n ContextMenuItemIndicatorElement,\n ContextMenuItemIndicatorProps\n>((props: ScopedProps<ContextMenuItemIndicatorProps>, forwardedRef) => {\n const { __scopeContextMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.ItemIndicator {...menuScope} {...itemIndicatorProps} ref={forwardedRef} />;\n});\n\nContextMenuItemIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nconst SEPARATOR_NAME = 'ContextMenuSeparator';\n\ntype ContextMenuSeparatorElement = React.ElementRef<typeof MenuPrimitive.Separator>;\ntype MenuSeparatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>;\ninterface ContextMenuSeparatorProps extends MenuSeparatorProps {}\n\nconst ContextMenuSeparator = React.forwardRef<\n ContextMenuSeparatorElement,\n ContextMenuSeparatorProps\n>((props: ScopedProps<ContextMenuSeparatorProps>, forwardedRef) => {\n const { __scopeContextMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Separator {...menuScope} {...separatorProps} ref={forwardedRef} />;\n});\n\nContextMenuSeparator.displayName = SEPARATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'ContextMenuArrow';\n\ntype ContextMenuArrowElement = React.ElementRef<typeof MenuPrimitive.Arrow>;\ntype MenuArrowProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>;\ninterface ContextMenuArrowProps extends MenuArrowProps {}\n\nconst ContextMenuArrow = React.forwardRef<ContextMenuArrowElement, ContextMenuArrowProps>(\n (props: ScopedProps<ContextMenuArrowProps>, forwardedRef) => {\n const { __scopeContextMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Arrow {...menuScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nContextMenuArrow.displayName = ARROW_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuSub\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_NAME = 'ContextMenuSub';\n\ninterface ContextMenuSubProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst ContextMenuSub: React.FC<ContextMenuSubProps> = (props: ScopedProps<ContextMenuSubProps>) => {\n const { __scopeContextMenu, children, onOpenChange, open: openProp, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n <MenuPrimitive.Sub {...menuScope} open={open} onOpenChange={setOpen}>\n {children}\n </MenuPrimitive.Sub>\n );\n};\n\nContextMenuSub.displayName = SUB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuSubTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_TRIGGER_NAME = 'ContextMenuSubTrigger';\n\ntype ContextMenuSubTriggerElement = React.ElementRef<typeof MenuPrimitive.SubTrigger>;\ntype MenuSubTriggerProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;\ninterface ContextMenuSubTriggerProps extends MenuSubTriggerProps {}\n\nconst ContextMenuSubTrigger = React.forwardRef<\n ContextMenuSubTriggerElement,\n ContextMenuSubTriggerProps\n>((props: ScopedProps<ContextMenuSubTriggerProps>, forwardedRef) => {\n const { __scopeContextMenu, ...triggerItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.SubTrigger {...menuScope} {...triggerItemProps} ref={forwardedRef} />;\n});\n\nContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuSubContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_CONTENT_NAME = 'ContextMenuSubContent';\n\ntype ContextMenuSubContentElement = React.ElementRef<typeof MenuPrimitive.Content>;\ntype MenuSubContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;\ninterface ContextMenuSubContentProps extends MenuSubContentProps {}\n\nconst ContextMenuSubContent = React.forwardRef<\n ContextMenuSubContentElement,\n ContextMenuSubContentProps\n>((props: ScopedProps<ContextMenuSubContentProps>, forwardedRef) => {\n const { __scopeContextMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n\n return (\n <MenuPrimitive.SubContent\n {...menuScope}\n {...subContentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-context-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-context-menu-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-context-menu-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-context-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-context-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n />\n );\n});\n\nContextMenuSubContent.displayName = SUB_CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction whenTouchOrPen<E>(handler: React.PointerEventHandler<E>): React.PointerEventHandler<E> {\n return (event) => (event.pointerType !== 'mouse' ? handler(event) : undefined);\n}\n\nconst Root = ContextMenu;\nconst Trigger = ContextMenuTrigger;\nconst Portal = ContextMenuPortal;\nconst Content = ContextMenuContent;\nconst Group = ContextMenuGroup;\nconst Label = ContextMenuLabel;\nconst Item = ContextMenuItem;\nconst CheckboxItem = ContextMenuCheckboxItem;\nconst RadioGroup = ContextMenuRadioGroup;\nconst RadioItem = ContextMenuRadioItem;\nconst ItemIndicator = ContextMenuItemIndicator;\nconst Separator = ContextMenuSeparator;\nconst Arrow = ContextMenuArrow;\nconst Sub = ContextMenuSub;\nconst SubTrigger = ContextMenuSubTrigger;\nconst SubContent = ContextMenuSubContent;\n\nexport {\n createContextMenuScope,\n //\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuPortal,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuLabel,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuItemIndicator,\n ContextMenuSeparator,\n ContextMenuArrow,\n ContextMenuSub,\n ContextMenuSubTrigger,\n ContextMenuSubContent,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n};\nexport type {\n ContextMenuProps,\n ContextMenuTriggerProps,\n ContextMenuPortalProps,\n ContextMenuContentProps,\n ContextMenuGroupProps,\n ContextMenuLabelProps,\n ContextMenuItemProps,\n ContextMenuCheckboxItemProps,\n ContextMenuRadioGroupProps,\n ContextMenuRadioItemProps,\n ContextMenuItemIndicatorProps,\n ContextMenuSeparatorProps,\n ContextMenuArrowProps,\n ContextMenuSubProps,\n ContextMenuSubTriggerProps,\n ContextMenuSubContentProps,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Arrow", "CheckboxItem", "Content", "Group", "Item", "ItemIndicator", "Label", "Portal", "RadioGroup", "RadioItem", "Root", "Separator", "Sub", "SubContent", "SubTrigger", "open", "Root", "Portal", "Content", "Group", "Label", "Item", "CheckboxItem", "RadioGroup", "RadioItem", "ItemIndicator", "Separator", "Arrow", "Sub", "SubTrigger", "SubContent"]
7
+ }
package/dist/index.mjs ADDED
@@ -0,0 +1,324 @@
1
+ "use client";
2
+
3
+ // packages/react/context-menu/src/ContextMenu.tsx
4
+ import * as React from "react";
5
+ import { composeEventHandlers } from "@radix-ui/primitive";
6
+ import { createContextScope } from "@radix-ui/react-context";
7
+ import { Primitive } from "@radix-ui/react-primitive";
8
+ import * as MenuPrimitive from "@radix-ui/react-menu";
9
+ import { createMenuScope } from "@radix-ui/react-menu";
10
+ import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
11
+ import { useControllableState } from "@radix-ui/react-use-controllable-state";
12
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
+ var CONTEXT_MENU_NAME = "ContextMenu";
14
+ var [createContextMenuContext, createContextMenuScope] = createContextScope(CONTEXT_MENU_NAME, [
15
+ createMenuScope
16
+ ]);
17
+ var useMenuScope = createMenuScope();
18
+ var [ContextMenuProvider, useContextMenuContext] = createContextMenuContext(CONTEXT_MENU_NAME);
19
+ var ContextMenu = (props) => {
20
+ const { __scopeContextMenu, children, onOpenChange, dir, modal = true } = props;
21
+ const [open, setOpen] = React.useState(false);
22
+ const menuScope = useMenuScope(__scopeContextMenu);
23
+ const handleOpenChangeProp = useCallbackRef(onOpenChange);
24
+ const handleOpenChange = React.useCallback(
25
+ (open2) => {
26
+ setOpen(open2);
27
+ handleOpenChangeProp(open2);
28
+ },
29
+ [handleOpenChangeProp]
30
+ );
31
+ return /* @__PURE__ */ jsx(
32
+ ContextMenuProvider,
33
+ {
34
+ scope: __scopeContextMenu,
35
+ open,
36
+ onOpenChange: handleOpenChange,
37
+ modal,
38
+ children: /* @__PURE__ */ jsx(
39
+ MenuPrimitive.Root,
40
+ {
41
+ ...menuScope,
42
+ dir,
43
+ open,
44
+ onOpenChange: handleOpenChange,
45
+ modal,
46
+ children
47
+ }
48
+ )
49
+ }
50
+ );
51
+ };
52
+ ContextMenu.displayName = CONTEXT_MENU_NAME;
53
+ var TRIGGER_NAME = "ContextMenuTrigger";
54
+ var ContextMenuTrigger = React.forwardRef(
55
+ (props, forwardedRef) => {
56
+ const { __scopeContextMenu, disabled = false, ...triggerProps } = props;
57
+ const context = useContextMenuContext(TRIGGER_NAME, __scopeContextMenu);
58
+ const menuScope = useMenuScope(__scopeContextMenu);
59
+ const pointRef = React.useRef({ x: 0, y: 0 });
60
+ const virtualRef = React.useRef({
61
+ getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...pointRef.current })
62
+ });
63
+ const longPressTimerRef = React.useRef(0);
64
+ const clearLongPress = React.useCallback(
65
+ () => window.clearTimeout(longPressTimerRef.current),
66
+ []
67
+ );
68
+ const handleOpen = (event) => {
69
+ pointRef.current = { x: event.clientX, y: event.clientY };
70
+ context.onOpenChange(true);
71
+ };
72
+ React.useEffect(() => clearLongPress, [clearLongPress]);
73
+ React.useEffect(() => void (disabled && clearLongPress()), [disabled, clearLongPress]);
74
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
75
+ /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { ...menuScope, virtualRef }),
76
+ /* @__PURE__ */ jsx(
77
+ Primitive.span,
78
+ {
79
+ "data-state": context.open ? "open" : "closed",
80
+ "data-disabled": disabled ? "" : void 0,
81
+ ...triggerProps,
82
+ ref: forwardedRef,
83
+ style: { WebkitTouchCallout: "none", ...props.style },
84
+ onContextMenu: disabled ? props.onContextMenu : composeEventHandlers(props.onContextMenu, (event) => {
85
+ clearLongPress();
86
+ handleOpen(event);
87
+ event.preventDefault();
88
+ }),
89
+ onPointerDown: disabled ? props.onPointerDown : composeEventHandlers(
90
+ props.onPointerDown,
91
+ whenTouchOrPen((event) => {
92
+ clearLongPress();
93
+ longPressTimerRef.current = window.setTimeout(() => handleOpen(event), 700);
94
+ })
95
+ ),
96
+ onPointerMove: disabled ? props.onPointerMove : composeEventHandlers(props.onPointerMove, whenTouchOrPen(clearLongPress)),
97
+ onPointerCancel: disabled ? props.onPointerCancel : composeEventHandlers(props.onPointerCancel, whenTouchOrPen(clearLongPress)),
98
+ onPointerUp: disabled ? props.onPointerUp : composeEventHandlers(props.onPointerUp, whenTouchOrPen(clearLongPress))
99
+ }
100
+ )
101
+ ] });
102
+ }
103
+ );
104
+ ContextMenuTrigger.displayName = TRIGGER_NAME;
105
+ var PORTAL_NAME = "ContextMenuPortal";
106
+ var ContextMenuPortal = (props) => {
107
+ const { __scopeContextMenu, ...portalProps } = props;
108
+ const menuScope = useMenuScope(__scopeContextMenu);
109
+ return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });
110
+ };
111
+ ContextMenuPortal.displayName = PORTAL_NAME;
112
+ var CONTENT_NAME = "ContextMenuContent";
113
+ var ContextMenuContent = React.forwardRef(
114
+ (props, forwardedRef) => {
115
+ const { __scopeContextMenu, ...contentProps } = props;
116
+ const context = useContextMenuContext(CONTENT_NAME, __scopeContextMenu);
117
+ const menuScope = useMenuScope(__scopeContextMenu);
118
+ const hasInteractedOutsideRef = React.useRef(false);
119
+ return /* @__PURE__ */ jsx(
120
+ MenuPrimitive.Content,
121
+ {
122
+ ...menuScope,
123
+ ...contentProps,
124
+ ref: forwardedRef,
125
+ side: "right",
126
+ sideOffset: 2,
127
+ align: "start",
128
+ onCloseAutoFocus: (event) => {
129
+ props.onCloseAutoFocus?.(event);
130
+ if (!event.defaultPrevented && hasInteractedOutsideRef.current) {
131
+ event.preventDefault();
132
+ }
133
+ hasInteractedOutsideRef.current = false;
134
+ },
135
+ onInteractOutside: (event) => {
136
+ props.onInteractOutside?.(event);
137
+ if (!event.defaultPrevented && !context.modal) hasInteractedOutsideRef.current = true;
138
+ },
139
+ style: {
140
+ ...props.style,
141
+ // re-namespace exposed content custom properties
142
+ ...{
143
+ "--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
144
+ "--radix-context-menu-content-available-width": "var(--radix-popper-available-width)",
145
+ "--radix-context-menu-content-available-height": "var(--radix-popper-available-height)",
146
+ "--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)",
147
+ "--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)"
148
+ }
149
+ }
150
+ }
151
+ );
152
+ }
153
+ );
154
+ ContextMenuContent.displayName = CONTENT_NAME;
155
+ var GROUP_NAME = "ContextMenuGroup";
156
+ var ContextMenuGroup = React.forwardRef(
157
+ (props, forwardedRef) => {
158
+ const { __scopeContextMenu, ...groupProps } = props;
159
+ const menuScope = useMenuScope(__scopeContextMenu);
160
+ return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });
161
+ }
162
+ );
163
+ ContextMenuGroup.displayName = GROUP_NAME;
164
+ var LABEL_NAME = "ContextMenuLabel";
165
+ var ContextMenuLabel = React.forwardRef(
166
+ (props, forwardedRef) => {
167
+ const { __scopeContextMenu, ...labelProps } = props;
168
+ const menuScope = useMenuScope(__scopeContextMenu);
169
+ return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });
170
+ }
171
+ );
172
+ ContextMenuLabel.displayName = LABEL_NAME;
173
+ var ITEM_NAME = "ContextMenuItem";
174
+ var ContextMenuItem = React.forwardRef(
175
+ (props, forwardedRef) => {
176
+ const { __scopeContextMenu, ...itemProps } = props;
177
+ const menuScope = useMenuScope(__scopeContextMenu);
178
+ return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });
179
+ }
180
+ );
181
+ ContextMenuItem.displayName = ITEM_NAME;
182
+ var CHECKBOX_ITEM_NAME = "ContextMenuCheckboxItem";
183
+ var ContextMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {
184
+ const { __scopeContextMenu, ...checkboxItemProps } = props;
185
+ const menuScope = useMenuScope(__scopeContextMenu);
186
+ return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });
187
+ });
188
+ ContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
189
+ var RADIO_GROUP_NAME = "ContextMenuRadioGroup";
190
+ var ContextMenuRadioGroup = React.forwardRef((props, forwardedRef) => {
191
+ const { __scopeContextMenu, ...radioGroupProps } = props;
192
+ const menuScope = useMenuScope(__scopeContextMenu);
193
+ return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });
194
+ });
195
+ ContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;
196
+ var RADIO_ITEM_NAME = "ContextMenuRadioItem";
197
+ var ContextMenuRadioItem = React.forwardRef((props, forwardedRef) => {
198
+ const { __scopeContextMenu, ...radioItemProps } = props;
199
+ const menuScope = useMenuScope(__scopeContextMenu);
200
+ return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });
201
+ });
202
+ ContextMenuRadioItem.displayName = RADIO_ITEM_NAME;
203
+ var INDICATOR_NAME = "ContextMenuItemIndicator";
204
+ var ContextMenuItemIndicator = React.forwardRef((props, forwardedRef) => {
205
+ const { __scopeContextMenu, ...itemIndicatorProps } = props;
206
+ const menuScope = useMenuScope(__scopeContextMenu);
207
+ return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });
208
+ });
209
+ ContextMenuItemIndicator.displayName = INDICATOR_NAME;
210
+ var SEPARATOR_NAME = "ContextMenuSeparator";
211
+ var ContextMenuSeparator = React.forwardRef((props, forwardedRef) => {
212
+ const { __scopeContextMenu, ...separatorProps } = props;
213
+ const menuScope = useMenuScope(__scopeContextMenu);
214
+ return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });
215
+ });
216
+ ContextMenuSeparator.displayName = SEPARATOR_NAME;
217
+ var ARROW_NAME = "ContextMenuArrow";
218
+ var ContextMenuArrow = React.forwardRef(
219
+ (props, forwardedRef) => {
220
+ const { __scopeContextMenu, ...arrowProps } = props;
221
+ const menuScope = useMenuScope(__scopeContextMenu);
222
+ return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });
223
+ }
224
+ );
225
+ ContextMenuArrow.displayName = ARROW_NAME;
226
+ var SUB_NAME = "ContextMenuSub";
227
+ var ContextMenuSub = (props) => {
228
+ const { __scopeContextMenu, children, onOpenChange, open: openProp, defaultOpen } = props;
229
+ const menuScope = useMenuScope(__scopeContextMenu);
230
+ const [open, setOpen] = useControllableState({
231
+ prop: openProp,
232
+ defaultProp: defaultOpen,
233
+ onChange: onOpenChange
234
+ });
235
+ return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });
236
+ };
237
+ ContextMenuSub.displayName = SUB_NAME;
238
+ var SUB_TRIGGER_NAME = "ContextMenuSubTrigger";
239
+ var ContextMenuSubTrigger = React.forwardRef((props, forwardedRef) => {
240
+ const { __scopeContextMenu, ...triggerItemProps } = props;
241
+ const menuScope = useMenuScope(__scopeContextMenu);
242
+ return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...triggerItemProps, ref: forwardedRef });
243
+ });
244
+ ContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
245
+ var SUB_CONTENT_NAME = "ContextMenuSubContent";
246
+ var ContextMenuSubContent = React.forwardRef((props, forwardedRef) => {
247
+ const { __scopeContextMenu, ...subContentProps } = props;
248
+ const menuScope = useMenuScope(__scopeContextMenu);
249
+ return /* @__PURE__ */ jsx(
250
+ MenuPrimitive.SubContent,
251
+ {
252
+ ...menuScope,
253
+ ...subContentProps,
254
+ ref: forwardedRef,
255
+ style: {
256
+ ...props.style,
257
+ // re-namespace exposed content custom properties
258
+ ...{
259
+ "--radix-context-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
260
+ "--radix-context-menu-content-available-width": "var(--radix-popper-available-width)",
261
+ "--radix-context-menu-content-available-height": "var(--radix-popper-available-height)",
262
+ "--radix-context-menu-trigger-width": "var(--radix-popper-anchor-width)",
263
+ "--radix-context-menu-trigger-height": "var(--radix-popper-anchor-height)"
264
+ }
265
+ }
266
+ }
267
+ );
268
+ });
269
+ ContextMenuSubContent.displayName = SUB_CONTENT_NAME;
270
+ function whenTouchOrPen(handler) {
271
+ return (event) => event.pointerType !== "mouse" ? handler(event) : void 0;
272
+ }
273
+ var Root2 = ContextMenu;
274
+ var Trigger = ContextMenuTrigger;
275
+ var Portal2 = ContextMenuPortal;
276
+ var Content2 = ContextMenuContent;
277
+ var Group2 = ContextMenuGroup;
278
+ var Label2 = ContextMenuLabel;
279
+ var Item2 = ContextMenuItem;
280
+ var CheckboxItem2 = ContextMenuCheckboxItem;
281
+ var RadioGroup2 = ContextMenuRadioGroup;
282
+ var RadioItem2 = ContextMenuRadioItem;
283
+ var ItemIndicator2 = ContextMenuItemIndicator;
284
+ var Separator2 = ContextMenuSeparator;
285
+ var Arrow2 = ContextMenuArrow;
286
+ var Sub2 = ContextMenuSub;
287
+ var SubTrigger2 = ContextMenuSubTrigger;
288
+ var SubContent2 = ContextMenuSubContent;
289
+ export {
290
+ Arrow2 as Arrow,
291
+ CheckboxItem2 as CheckboxItem,
292
+ Content2 as Content,
293
+ ContextMenu,
294
+ ContextMenuArrow,
295
+ ContextMenuCheckboxItem,
296
+ ContextMenuContent,
297
+ ContextMenuGroup,
298
+ ContextMenuItem,
299
+ ContextMenuItemIndicator,
300
+ ContextMenuLabel,
301
+ ContextMenuPortal,
302
+ ContextMenuRadioGroup,
303
+ ContextMenuRadioItem,
304
+ ContextMenuSeparator,
305
+ ContextMenuSub,
306
+ ContextMenuSubContent,
307
+ ContextMenuSubTrigger,
308
+ ContextMenuTrigger,
309
+ Group2 as Group,
310
+ Item2 as Item,
311
+ ItemIndicator2 as ItemIndicator,
312
+ Label2 as Label,
313
+ Portal2 as Portal,
314
+ RadioGroup2 as RadioGroup,
315
+ RadioItem2 as RadioItem,
316
+ Root2 as Root,
317
+ Separator2 as Separator,
318
+ Sub2 as Sub,
319
+ SubContent2 as SubContent,
320
+ SubTrigger2 as SubTrigger,
321
+ Trigger,
322
+ createContextMenuScope
323
+ };
324
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/ContextMenu.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as MenuPrimitive from '@radix-ui/react-menu';\nimport { createMenuScope } from '@radix-ui/react-menu';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\n\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\ntype Point = { x: number; y: number };\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenu\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTEXT_MENU_NAME = 'ContextMenu';\n\ntype ScopedProps<P> = P & { __scopeContextMenu?: Scope };\nconst [createContextMenuContext, createContextMenuScope] = createContextScope(CONTEXT_MENU_NAME, [\n createMenuScope,\n]);\nconst useMenuScope = createMenuScope();\n\ntype ContextMenuContextValue = {\n open: boolean;\n onOpenChange(open: boolean): void;\n modal: boolean;\n};\n\nconst [ContextMenuProvider, useContextMenuContext] =\n createContextMenuContext<ContextMenuContextValue>(CONTEXT_MENU_NAME);\n\ninterface ContextMenuProps {\n children?: React.ReactNode;\n onOpenChange?(open: boolean): void;\n dir?: Direction;\n modal?: boolean;\n}\n\nconst ContextMenu: React.FC<ContextMenuProps> = (props: ScopedProps<ContextMenuProps>) => {\n const { __scopeContextMenu, children, onOpenChange, dir, modal = true } = props;\n const [open, setOpen] = React.useState(false);\n const menuScope = useMenuScope(__scopeContextMenu);\n const handleOpenChangeProp = useCallbackRef(onOpenChange);\n\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n setOpen(open);\n handleOpenChangeProp(open);\n },\n [handleOpenChangeProp]\n );\n\n return (\n <ContextMenuProvider\n scope={__scopeContextMenu}\n open={open}\n onOpenChange={handleOpenChange}\n modal={modal}\n >\n <MenuPrimitive.Root\n {...menuScope}\n dir={dir}\n open={open}\n onOpenChange={handleOpenChange}\n modal={modal}\n >\n {children}\n </MenuPrimitive.Root>\n </ContextMenuProvider>\n );\n};\n\nContextMenu.displayName = CONTEXT_MENU_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'ContextMenuTrigger';\n\ntype ContextMenuTriggerElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface ContextMenuTriggerProps extends PrimitiveSpanProps {\n disabled?: boolean;\n}\n\nconst ContextMenuTrigger = React.forwardRef<ContextMenuTriggerElement, ContextMenuTriggerProps>(\n (props: ScopedProps<ContextMenuTriggerProps>, forwardedRef) => {\n const { __scopeContextMenu, disabled = false, ...triggerProps } = props;\n const context = useContextMenuContext(TRIGGER_NAME, __scopeContextMenu);\n const menuScope = useMenuScope(__scopeContextMenu);\n const pointRef = React.useRef<Point>({ x: 0, y: 0 });\n const virtualRef = React.useRef({\n getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...pointRef.current }),\n });\n const longPressTimerRef = React.useRef(0);\n const clearLongPress = React.useCallback(\n () => window.clearTimeout(longPressTimerRef.current),\n []\n );\n const handleOpen = (event: React.MouseEvent | React.PointerEvent) => {\n pointRef.current = { x: event.clientX, y: event.clientY };\n context.onOpenChange(true);\n };\n\n React.useEffect(() => clearLongPress, [clearLongPress]);\n React.useEffect(() => void (disabled && clearLongPress()), [disabled, clearLongPress]);\n\n return (\n <>\n <MenuPrimitive.Anchor {...menuScope} virtualRef={virtualRef} />\n <Primitive.span\n data-state={context.open ? 'open' : 'closed'}\n data-disabled={disabled ? '' : undefined}\n {...triggerProps}\n ref={forwardedRef}\n // prevent iOS context menu from appearing\n style={{ WebkitTouchCallout: 'none', ...props.style }}\n // if trigger is disabled, enable the native Context Menu\n onContextMenu={\n disabled\n ? props.onContextMenu\n : composeEventHandlers(props.onContextMenu, (event) => {\n // clearing the long press here because some platforms already support\n // long press to trigger a `contextmenu` event\n clearLongPress();\n handleOpen(event);\n event.preventDefault();\n })\n }\n onPointerDown={\n disabled\n ? props.onPointerDown\n : composeEventHandlers(\n props.onPointerDown,\n whenTouchOrPen((event) => {\n // clear the long press here in case there's multiple touch points\n clearLongPress();\n longPressTimerRef.current = window.setTimeout(() => handleOpen(event), 700);\n })\n )\n }\n onPointerMove={\n disabled\n ? props.onPointerMove\n : composeEventHandlers(props.onPointerMove, whenTouchOrPen(clearLongPress))\n }\n onPointerCancel={\n disabled\n ? props.onPointerCancel\n : composeEventHandlers(props.onPointerCancel, whenTouchOrPen(clearLongPress))\n }\n onPointerUp={\n disabled\n ? props.onPointerUp\n : composeEventHandlers(props.onPointerUp, whenTouchOrPen(clearLongPress))\n }\n />\n </>\n );\n }\n);\n\nContextMenuTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuPortal\n * -----------------------------------------------------------------------------------------------*/\n\nconst PORTAL_NAME = 'ContextMenuPortal';\n\ntype MenuPortalProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Portal>;\ninterface ContextMenuPortalProps extends MenuPortalProps {}\n\nconst ContextMenuPortal: React.FC<ContextMenuPortalProps> = (\n props: ScopedProps<ContextMenuPortalProps>\n) => {\n const { __scopeContextMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Portal {...menuScope} {...portalProps} />;\n};\n\nContextMenuPortal.displayName = PORTAL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'ContextMenuContent';\n\ntype ContextMenuContentElement = React.ElementRef<typeof MenuPrimitive.Content>;\ntype MenuContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Content>;\ninterface ContextMenuContentProps\n extends Omit<MenuContentProps, 'onEntryFocus' | 'side' | 'sideOffset' | 'align'> {}\n\nconst ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMenuContentProps>(\n (props: ScopedProps<ContextMenuContentProps>, forwardedRef) => {\n const { __scopeContextMenu, ...contentProps } = props;\n const context = useContextMenuContext(CONTENT_NAME, __scopeContextMenu);\n const menuScope = useMenuScope(__scopeContextMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n\n return (\n <MenuPrimitive.Content\n {...menuScope}\n {...contentProps}\n ref={forwardedRef}\n side=\"right\"\n sideOffset={2}\n align=\"start\"\n onCloseAutoFocus={(event) => {\n props.onCloseAutoFocus?.(event);\n\n if (!event.defaultPrevented && hasInteractedOutsideRef.current) {\n event.preventDefault();\n }\n\n hasInteractedOutsideRef.current = false;\n }}\n onInteractOutside={(event) => {\n props.onInteractOutside?.(event);\n\n if (!event.defaultPrevented && !context.modal) hasInteractedOutsideRef.current = true;\n }}\n style={{\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-context-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-context-menu-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-context-menu-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-context-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-context-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n />\n );\n }\n);\n\nContextMenuContent.displayName = CONTENT_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'ContextMenuGroup';\n\ntype ContextMenuGroupElement = React.ElementRef<typeof MenuPrimitive.Group>;\ntype MenuGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Group>;\ninterface ContextMenuGroupProps extends MenuGroupProps {}\n\nconst ContextMenuGroup = React.forwardRef<ContextMenuGroupElement, ContextMenuGroupProps>(\n (props: ScopedProps<ContextMenuGroupProps>, forwardedRef) => {\n const { __scopeContextMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Group {...menuScope} {...groupProps} ref={forwardedRef} />;\n }\n);\n\nContextMenuGroup.displayName = GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuLabel\n * -----------------------------------------------------------------------------------------------*/\n\nconst LABEL_NAME = 'ContextMenuLabel';\n\ntype ContextMenuLabelElement = React.ElementRef<typeof MenuPrimitive.Label>;\ntype MenuLabelProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Label>;\ninterface ContextMenuLabelProps extends MenuLabelProps {}\n\nconst ContextMenuLabel = React.forwardRef<ContextMenuLabelElement, ContextMenuLabelProps>(\n (props: ScopedProps<ContextMenuLabelProps>, forwardedRef) => {\n const { __scopeContextMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Label {...menuScope} {...labelProps} ref={forwardedRef} />;\n }\n);\n\nContextMenuLabel.displayName = LABEL_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'ContextMenuItem';\n\ntype ContextMenuItemElement = React.ElementRef<typeof MenuPrimitive.Item>;\ntype MenuItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Item>;\ninterface ContextMenuItemProps extends MenuItemProps {}\n\nconst ContextMenuItem = React.forwardRef<ContextMenuItemElement, ContextMenuItemProps>(\n (props: ScopedProps<ContextMenuItemProps>, forwardedRef) => {\n const { __scopeContextMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Item {...menuScope} {...itemProps} ref={forwardedRef} />;\n }\n);\n\nContextMenuItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuCheckboxItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst CHECKBOX_ITEM_NAME = 'ContextMenuCheckboxItem';\n\ntype ContextMenuCheckboxItemElement = React.ElementRef<typeof MenuPrimitive.CheckboxItem>;\ntype MenuCheckboxItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.CheckboxItem>;\ninterface ContextMenuCheckboxItemProps extends MenuCheckboxItemProps {}\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n ContextMenuCheckboxItemElement,\n ContextMenuCheckboxItemProps\n>((props: ScopedProps<ContextMenuCheckboxItemProps>, forwardedRef) => {\n const { __scopeContextMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.CheckboxItem {...menuScope} {...checkboxItemProps} ref={forwardedRef} />;\n});\n\nContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuRadioGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_GROUP_NAME = 'ContextMenuRadioGroup';\n\ntype ContextMenuRadioGroupElement = React.ElementRef<typeof MenuPrimitive.RadioGroup>;\ntype MenuRadioGroupProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioGroup>;\ninterface ContextMenuRadioGroupProps extends MenuRadioGroupProps {}\n\nconst ContextMenuRadioGroup = React.forwardRef<\n ContextMenuRadioGroupElement,\n ContextMenuRadioGroupProps\n>((props: ScopedProps<ContextMenuRadioGroupProps>, forwardedRef) => {\n const { __scopeContextMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.RadioGroup {...menuScope} {...radioGroupProps} ref={forwardedRef} />;\n});\n\nContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuRadioItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_ITEM_NAME = 'ContextMenuRadioItem';\n\ntype ContextMenuRadioItemElement = React.ElementRef<typeof MenuPrimitive.RadioItem>;\ntype MenuRadioItemProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.RadioItem>;\ninterface ContextMenuRadioItemProps extends MenuRadioItemProps {}\n\nconst ContextMenuRadioItem = React.forwardRef<\n ContextMenuRadioItemElement,\n ContextMenuRadioItemProps\n>((props: ScopedProps<ContextMenuRadioItemProps>, forwardedRef) => {\n const { __scopeContextMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.RadioItem {...menuScope} {...radioItemProps} ref={forwardedRef} />;\n});\n\nContextMenuRadioItem.displayName = RADIO_ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuItemIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'ContextMenuItemIndicator';\n\ntype ContextMenuItemIndicatorElement = React.ElementRef<typeof MenuPrimitive.ItemIndicator>;\ntype MenuItemIndicatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.ItemIndicator>;\ninterface ContextMenuItemIndicatorProps extends MenuItemIndicatorProps {}\n\nconst ContextMenuItemIndicator = React.forwardRef<\n ContextMenuItemIndicatorElement,\n ContextMenuItemIndicatorProps\n>((props: ScopedProps<ContextMenuItemIndicatorProps>, forwardedRef) => {\n const { __scopeContextMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.ItemIndicator {...menuScope} {...itemIndicatorProps} ref={forwardedRef} />;\n});\n\nContextMenuItemIndicator.displayName = INDICATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuSeparator\n * -----------------------------------------------------------------------------------------------*/\n\nconst SEPARATOR_NAME = 'ContextMenuSeparator';\n\ntype ContextMenuSeparatorElement = React.ElementRef<typeof MenuPrimitive.Separator>;\ntype MenuSeparatorProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Separator>;\ninterface ContextMenuSeparatorProps extends MenuSeparatorProps {}\n\nconst ContextMenuSeparator = React.forwardRef<\n ContextMenuSeparatorElement,\n ContextMenuSeparatorProps\n>((props: ScopedProps<ContextMenuSeparatorProps>, forwardedRef) => {\n const { __scopeContextMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Separator {...menuScope} {...separatorProps} ref={forwardedRef} />;\n});\n\nContextMenuSeparator.displayName = SEPARATOR_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuArrow\n * -----------------------------------------------------------------------------------------------*/\n\nconst ARROW_NAME = 'ContextMenuArrow';\n\ntype ContextMenuArrowElement = React.ElementRef<typeof MenuPrimitive.Arrow>;\ntype MenuArrowProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.Arrow>;\ninterface ContextMenuArrowProps extends MenuArrowProps {}\n\nconst ContextMenuArrow = React.forwardRef<ContextMenuArrowElement, ContextMenuArrowProps>(\n (props: ScopedProps<ContextMenuArrowProps>, forwardedRef) => {\n const { __scopeContextMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.Arrow {...menuScope} {...arrowProps} ref={forwardedRef} />;\n }\n);\n\nContextMenuArrow.displayName = ARROW_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuSub\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_NAME = 'ContextMenuSub';\n\ninterface ContextMenuSubProps {\n children?: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n}\n\nconst ContextMenuSub: React.FC<ContextMenuSubProps> = (props: ScopedProps<ContextMenuSubProps>) => {\n const { __scopeContextMenu, children, onOpenChange, open: openProp, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n return (\n <MenuPrimitive.Sub {...menuScope} open={open} onOpenChange={setOpen}>\n {children}\n </MenuPrimitive.Sub>\n );\n};\n\nContextMenuSub.displayName = SUB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuSubTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_TRIGGER_NAME = 'ContextMenuSubTrigger';\n\ntype ContextMenuSubTriggerElement = React.ElementRef<typeof MenuPrimitive.SubTrigger>;\ntype MenuSubTriggerProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubTrigger>;\ninterface ContextMenuSubTriggerProps extends MenuSubTriggerProps {}\n\nconst ContextMenuSubTrigger = React.forwardRef<\n ContextMenuSubTriggerElement,\n ContextMenuSubTriggerProps\n>((props: ScopedProps<ContextMenuSubTriggerProps>, forwardedRef) => {\n const { __scopeContextMenu, ...triggerItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return <MenuPrimitive.SubTrigger {...menuScope} {...triggerItemProps} ref={forwardedRef} />;\n});\n\nContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * ContextMenuSubContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst SUB_CONTENT_NAME = 'ContextMenuSubContent';\n\ntype ContextMenuSubContentElement = React.ElementRef<typeof MenuPrimitive.Content>;\ntype MenuSubContentProps = React.ComponentPropsWithoutRef<typeof MenuPrimitive.SubContent>;\ninterface ContextMenuSubContentProps extends MenuSubContentProps {}\n\nconst ContextMenuSubContent = React.forwardRef<\n ContextMenuSubContentElement,\n ContextMenuSubContentProps\n>((props: ScopedProps<ContextMenuSubContentProps>, forwardedRef) => {\n const { __scopeContextMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n\n return (\n <MenuPrimitive.SubContent\n {...menuScope}\n {...subContentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n '--radix-context-menu-content-transform-origin': 'var(--radix-popper-transform-origin)',\n '--radix-context-menu-content-available-width': 'var(--radix-popper-available-width)',\n '--radix-context-menu-content-available-height': 'var(--radix-popper-available-height)',\n '--radix-context-menu-trigger-width': 'var(--radix-popper-anchor-width)',\n '--radix-context-menu-trigger-height': 'var(--radix-popper-anchor-height)',\n },\n }}\n />\n );\n});\n\nContextMenuSubContent.displayName = SUB_CONTENT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction whenTouchOrPen<E>(handler: React.PointerEventHandler<E>): React.PointerEventHandler<E> {\n return (event) => (event.pointerType !== 'mouse' ? handler(event) : undefined);\n}\n\nconst Root = ContextMenu;\nconst Trigger = ContextMenuTrigger;\nconst Portal = ContextMenuPortal;\nconst Content = ContextMenuContent;\nconst Group = ContextMenuGroup;\nconst Label = ContextMenuLabel;\nconst Item = ContextMenuItem;\nconst CheckboxItem = ContextMenuCheckboxItem;\nconst RadioGroup = ContextMenuRadioGroup;\nconst RadioItem = ContextMenuRadioItem;\nconst ItemIndicator = ContextMenuItemIndicator;\nconst Separator = ContextMenuSeparator;\nconst Arrow = ContextMenuArrow;\nconst Sub = ContextMenuSub;\nconst SubTrigger = ContextMenuSubTrigger;\nconst SubContent = ContextMenuSubContent;\n\nexport {\n createContextMenuScope,\n //\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuPortal,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuLabel,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuItemIndicator,\n ContextMenuSeparator,\n ContextMenuArrow,\n ContextMenuSub,\n ContextMenuSubTrigger,\n ContextMenuSubContent,\n //\n Root,\n Trigger,\n Portal,\n Content,\n Group,\n Label,\n Item,\n CheckboxItem,\n RadioGroup,\n RadioItem,\n ItemIndicator,\n Separator,\n Arrow,\n Sub,\n SubTrigger,\n SubContent,\n};\nexport type {\n ContextMenuProps,\n ContextMenuTriggerProps,\n ContextMenuPortalProps,\n ContextMenuContentProps,\n ContextMenuGroupProps,\n ContextMenuLabelProps,\n ContextMenuItemProps,\n ContextMenuCheckboxItemProps,\n ContextMenuRadioGroupProps,\n ContextMenuRadioItemProps,\n ContextMenuItemIndicatorProps,\n ContextMenuSeparatorProps,\n ContextMenuArrowProps,\n ContextMenuSubProps,\n ContextMenuSubTriggerProps,\n ContextMenuSubContentProps,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["open", "Root", "Portal", "Content", "Group", "Label", "Item", "CheckboxItem", "RadioGroup", "RadioItem", "ItemIndicator", "Separator", "Arrow", "Sub", "SubTrigger", "SubContent"]
7
+ }
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@radix-ui/react-context-menu",
3
+ "version": "0.0.0-20250116175529",
4
+ "license": "MIT",
5
+ "exports": {
6
+ ".": {
7
+ "import": {
8
+ "types": "./dist/index.d.mts",
9
+ "default": "./dist/index.mjs"
10
+ },
11
+ "require": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ }
15
+ }
16
+ },
17
+ "source": "./src/index.ts",
18
+ "main": "./dist/index.js",
19
+ "module": "./dist/index.mjs",
20
+ "types": "./dist/index.d.ts",
21
+ "files": [
22
+ "dist",
23
+ "README.md"
24
+ ],
25
+ "sideEffects": false,
26
+ "scripts": {
27
+ "clean": "rm -rf dist"
28
+ },
29
+ "dependencies": {
30
+ "@radix-ui/primitive": "workspace:*",
31
+ "@radix-ui/react-context": "workspace:*",
32
+ "@radix-ui/react-menu": "workspace:*",
33
+ "@radix-ui/react-primitive": "workspace:*",
34
+ "@radix-ui/react-use-callback-ref": "workspace:*",
35
+ "@radix-ui/react-use-controllable-state": "workspace:*"
36
+ },
37
+ "peerDependencies": {
38
+ "@types/react": "*",
39
+ "@types/react-dom": "*",
40
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
41
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
42
+ },
43
+ "peerDependenciesMeta": {
44
+ "@types/react": {
45
+ "optional": true
46
+ },
47
+ "@types/react-dom": {
48
+ "optional": true
49
+ }
50
+ },
51
+ "homepage": "https://radix-ui.com/primitives",
52
+ "repository": {
53
+ "type": "git",
54
+ "url": "git+https://github.com/radix-ui/primitives.git"
55
+ },
56
+ "bugs": {
57
+ "url": "https://github.com/radix-ui/primitives/issues"
58
+ }
59
+ }