@hanzogui/context-menu 2.0.0

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.
Files changed (44) hide show
  1. package/dist/cjs/ContextMenu.cjs +182 -0
  2. package/dist/cjs/ContextMenu.native.js +191 -0
  3. package/dist/cjs/ContextMenu.native.js.map +1 -0
  4. package/dist/cjs/createNonNativeContextMenu.cjs +417 -0
  5. package/dist/cjs/createNonNativeContextMenu.native.js +443 -0
  6. package/dist/cjs/createNonNativeContextMenu.native.js.map +1 -0
  7. package/dist/cjs/index.cjs +39 -0
  8. package/dist/cjs/index.native.js +42 -0
  9. package/dist/cjs/index.native.js.map +1 -0
  10. package/dist/esm/ContextMenu.mjs +148 -0
  11. package/dist/esm/ContextMenu.mjs.map +1 -0
  12. package/dist/esm/ContextMenu.native.js +154 -0
  13. package/dist/esm/ContextMenu.native.js.map +1 -0
  14. package/dist/esm/createNonNativeContextMenu.mjs +382 -0
  15. package/dist/esm/createNonNativeContextMenu.mjs.map +1 -0
  16. package/dist/esm/createNonNativeContextMenu.native.js +405 -0
  17. package/dist/esm/createNonNativeContextMenu.native.js.map +1 -0
  18. package/dist/esm/index.js +15 -0
  19. package/dist/esm/index.js.map +1 -0
  20. package/dist/esm/index.mjs +15 -0
  21. package/dist/esm/index.mjs.map +1 -0
  22. package/dist/esm/index.native.js +15 -0
  23. package/dist/esm/index.native.js.map +1 -0
  24. package/dist/jsx/ContextMenu.mjs +148 -0
  25. package/dist/jsx/ContextMenu.mjs.map +1 -0
  26. package/dist/jsx/ContextMenu.native.js +191 -0
  27. package/dist/jsx/ContextMenu.native.js.map +1 -0
  28. package/dist/jsx/createNonNativeContextMenu.mjs +382 -0
  29. package/dist/jsx/createNonNativeContextMenu.mjs.map +1 -0
  30. package/dist/jsx/createNonNativeContextMenu.native.js +443 -0
  31. package/dist/jsx/createNonNativeContextMenu.native.js.map +1 -0
  32. package/dist/jsx/index.js +15 -0
  33. package/dist/jsx/index.js.map +1 -0
  34. package/dist/jsx/index.mjs +15 -0
  35. package/dist/jsx/index.mjs.map +1 -0
  36. package/dist/jsx/index.native.js +42 -0
  37. package/dist/jsx/index.native.js.map +1 -0
  38. package/package.json +53 -0
  39. package/src/ContextMenu.tsx +187 -0
  40. package/src/createNonNativeContextMenu.tsx +641 -0
  41. package/src/index.tsx +17 -0
  42. package/types/ContextMenu.d.ts +134 -0
  43. package/types/createNonNativeContextMenu.d.ts +180 -0
  44. package/types/index.d.ts +132 -0
@@ -0,0 +1,148 @@
1
+ import { createNativeMenu, withNativeMenu } from "@hanzo/gui-create-menu";
2
+ import { withStaticProperties } from "@hanzo/gui-web";
3
+ import React from "react";
4
+ import { CONTEXTMENU_CONTEXT, createNonNativeContextMenu } from "./createNonNativeContextMenu.mjs";
5
+ const COMMON_PARAMS = {
6
+ isRoot: !1,
7
+ scope: CONTEXTMENU_CONTEXT
8
+ };
9
+ function createContextMenu(param) {
10
+ const {
11
+ Menu: NativeMenuRoot
12
+ } = createNativeMenu("ContextMenu"),
13
+ NonNativeContextMenu = createNonNativeContextMenu(param),
14
+ ContextMenuComp = withNativeMenu({
15
+ ...COMMON_PARAMS,
16
+ Component: NonNativeContextMenu.Root,
17
+ NativeComponent: NativeMenuRoot,
18
+ isRoot: !0
19
+ }),
20
+ Trigger = withNativeMenu({
21
+ ...COMMON_PARAMS,
22
+ Component: NonNativeContextMenu.Trigger,
23
+ NativeComponent: NativeMenuRoot.Trigger
24
+ }),
25
+ Portal = withNativeMenu({
26
+ ...COMMON_PARAMS,
27
+ Component: NonNativeContextMenu.Portal,
28
+ NativeComponent: React.Fragment
29
+ }),
30
+ Content = withNativeMenu({
31
+ ...COMMON_PARAMS,
32
+ Component: NonNativeContextMenu.Content,
33
+ NativeComponent: NativeMenuRoot.Content
34
+ }),
35
+ Preview = withNativeMenu({
36
+ ...COMMON_PARAMS,
37
+ Component: NonNativeContextMenu.Preview,
38
+ NativeComponent: NativeMenuRoot.Preview
39
+ }),
40
+ Group = withNativeMenu({
41
+ ...COMMON_PARAMS,
42
+ Component: NonNativeContextMenu.Group,
43
+ NativeComponent: NativeMenuRoot.Group
44
+ }),
45
+ Label = withNativeMenu({
46
+ ...COMMON_PARAMS,
47
+ Component: NonNativeContextMenu.Label,
48
+ NativeComponent: NativeMenuRoot.Label
49
+ }),
50
+ Item = withNativeMenu({
51
+ ...COMMON_PARAMS,
52
+ Component: NonNativeContextMenu.Item,
53
+ NativeComponent: NativeMenuRoot.Item
54
+ }),
55
+ ItemTitle = withNativeMenu({
56
+ ...COMMON_PARAMS,
57
+ Component: NonNativeContextMenu.ItemTitle,
58
+ NativeComponent: NativeMenuRoot.ItemTitle
59
+ }),
60
+ ItemSubtitle = withNativeMenu({
61
+ ...COMMON_PARAMS,
62
+ Component: NonNativeContextMenu.ItemSubtitle,
63
+ NativeComponent: NativeMenuRoot.ItemSubtitle
64
+ }),
65
+ ItemIcon = withNativeMenu({
66
+ ...COMMON_PARAMS,
67
+ Component: NonNativeContextMenu.ItemIcon,
68
+ NativeComponent: NativeMenuRoot.ItemIcon
69
+ }),
70
+ ItemImage = withNativeMenu({
71
+ ...COMMON_PARAMS,
72
+ Component: NonNativeContextMenu.ItemImage,
73
+ NativeComponent: NativeMenuRoot.ItemImage
74
+ }),
75
+ CheckboxItem = withNativeMenu({
76
+ ...COMMON_PARAMS,
77
+ Component: NonNativeContextMenu.CheckboxItem,
78
+ NativeComponent: NativeMenuRoot.CheckboxItem
79
+ }),
80
+ RadioGroup = withNativeMenu({
81
+ ...COMMON_PARAMS,
82
+ Component: NonNativeContextMenu.RadioGroup,
83
+ NativeComponent: () => null
84
+ }),
85
+ RadioItem = withNativeMenu({
86
+ ...COMMON_PARAMS,
87
+ Component: NonNativeContextMenu.RadioItem,
88
+ NativeComponent: ({
89
+ children
90
+ }) => children
91
+ }),
92
+ ItemIndicator = withNativeMenu({
93
+ ...COMMON_PARAMS,
94
+ Component: NonNativeContextMenu.ItemIndicator,
95
+ NativeComponent: NativeMenuRoot.ItemIndicator
96
+ }),
97
+ Separator = withNativeMenu({
98
+ ...COMMON_PARAMS,
99
+ Component: NonNativeContextMenu.Separator,
100
+ NativeComponent: NativeMenuRoot.Separator
101
+ }),
102
+ Arrow = withNativeMenu({
103
+ ...COMMON_PARAMS,
104
+ Component: NonNativeContextMenu.Arrow,
105
+ NativeComponent: NativeMenuRoot.Arrow
106
+ }),
107
+ Sub = withNativeMenu({
108
+ ...COMMON_PARAMS,
109
+ Component: NonNativeContextMenu.Sub,
110
+ NativeComponent: NativeMenuRoot.Sub
111
+ }),
112
+ SubTrigger = withNativeMenu({
113
+ ...COMMON_PARAMS,
114
+ Component: NonNativeContextMenu.SubTrigger,
115
+ NativeComponent: NativeMenuRoot.SubTrigger
116
+ }),
117
+ SubContent = withNativeMenu({
118
+ ...COMMON_PARAMS,
119
+ Component: NonNativeContextMenu.SubContent,
120
+ NativeComponent: NativeMenuRoot.SubContent
121
+ });
122
+ return withStaticProperties(ContextMenuComp, {
123
+ Trigger,
124
+ Portal,
125
+ Content,
126
+ Group,
127
+ Label,
128
+ Item,
129
+ CheckboxItem,
130
+ RadioGroup,
131
+ RadioItem,
132
+ ItemIndicator,
133
+ Separator,
134
+ Arrow,
135
+ Sub,
136
+ // cast to React.FC to avoid TS error
137
+ SubTrigger,
138
+ SubContent,
139
+ ItemTitle,
140
+ ItemSubtitle,
141
+ // cast to React.FC to avoid TS error
142
+ ItemIcon,
143
+ ItemImage,
144
+ Preview
145
+ });
146
+ }
147
+ export { createContextMenu };
148
+ //# sourceMappingURL=ContextMenu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createNativeMenu","withNativeMenu","withStaticProperties","React","CONTEXTMENU_CONTEXT","createNonNativeContextMenu","COMMON_PARAMS","isRoot","scope","createContextMenu","param","Menu","NativeMenuRoot","NonNativeContextMenu","ContextMenuComp","Component","Root","NativeComponent","Trigger","Portal","Fragment","Content","Preview","Group","Label","Item","ItemTitle","ItemSubtitle","ItemIcon","ItemImage","CheckboxItem","RadioGroup","RadioItem","children","ItemIndicator","Separator","Arrow","Sub","SubTrigger","SubContent"],"sources":["../../src/ContextMenu.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,154 @@
1
+ import { createNativeMenu, withNativeMenu } from "@hanzo/gui-create-menu";
2
+ import { withStaticProperties } from "@hanzo/gui-web";
3
+ import React from "react";
4
+ import { CONTEXTMENU_CONTEXT, createNonNativeContextMenu } from "./createNonNativeContextMenu.native.js";
5
+ var COMMON_PARAMS = {
6
+ isRoot: !1,
7
+ scope: CONTEXTMENU_CONTEXT
8
+ };
9
+ function createContextMenu(param) {
10
+ var {
11
+ Menu: NativeMenuRoot
12
+ } = createNativeMenu("ContextMenu"),
13
+ NonNativeContextMenu = createNonNativeContextMenu(param),
14
+ ContextMenuComp = withNativeMenu({
15
+ ...COMMON_PARAMS,
16
+ Component: NonNativeContextMenu.Root,
17
+ NativeComponent: NativeMenuRoot,
18
+ isRoot: !0
19
+ }),
20
+ Trigger = withNativeMenu({
21
+ ...COMMON_PARAMS,
22
+ Component: NonNativeContextMenu.Trigger,
23
+ NativeComponent: NativeMenuRoot.Trigger
24
+ }),
25
+ Portal = withNativeMenu({
26
+ ...COMMON_PARAMS,
27
+ Component: NonNativeContextMenu.Portal,
28
+ NativeComponent: React.Fragment
29
+ }),
30
+ Content = withNativeMenu({
31
+ ...COMMON_PARAMS,
32
+ Component: NonNativeContextMenu.Content,
33
+ NativeComponent: NativeMenuRoot.Content
34
+ }),
35
+ Preview = withNativeMenu({
36
+ ...COMMON_PARAMS,
37
+ Component: NonNativeContextMenu.Preview,
38
+ NativeComponent: NativeMenuRoot.Preview
39
+ }),
40
+ Group = withNativeMenu({
41
+ ...COMMON_PARAMS,
42
+ Component: NonNativeContextMenu.Group,
43
+ NativeComponent: NativeMenuRoot.Group
44
+ }),
45
+ Label = withNativeMenu({
46
+ ...COMMON_PARAMS,
47
+ Component: NonNativeContextMenu.Label,
48
+ NativeComponent: NativeMenuRoot.Label
49
+ }),
50
+ Item = withNativeMenu({
51
+ ...COMMON_PARAMS,
52
+ Component: NonNativeContextMenu.Item,
53
+ NativeComponent: NativeMenuRoot.Item
54
+ }),
55
+ ItemTitle = withNativeMenu({
56
+ ...COMMON_PARAMS,
57
+ Component: NonNativeContextMenu.ItemTitle,
58
+ NativeComponent: NativeMenuRoot.ItemTitle
59
+ }),
60
+ ItemSubtitle = withNativeMenu({
61
+ ...COMMON_PARAMS,
62
+ Component: NonNativeContextMenu.ItemSubtitle,
63
+ NativeComponent: NativeMenuRoot.ItemSubtitle
64
+ }),
65
+ ItemIcon = withNativeMenu({
66
+ ...COMMON_PARAMS,
67
+ Component: NonNativeContextMenu.ItemIcon,
68
+ NativeComponent: NativeMenuRoot.ItemIcon
69
+ }),
70
+ ItemImage = withNativeMenu({
71
+ ...COMMON_PARAMS,
72
+ Component: NonNativeContextMenu.ItemImage,
73
+ NativeComponent: NativeMenuRoot.ItemImage
74
+ }),
75
+ CheckboxItem = withNativeMenu({
76
+ ...COMMON_PARAMS,
77
+ Component: NonNativeContextMenu.CheckboxItem,
78
+ NativeComponent: NativeMenuRoot.CheckboxItem
79
+ }),
80
+ RadioGroup = withNativeMenu({
81
+ ...COMMON_PARAMS,
82
+ Component: NonNativeContextMenu.RadioGroup,
83
+ NativeComponent: function () {
84
+ return null;
85
+ }
86
+ }),
87
+ RadioItem = withNativeMenu({
88
+ ...COMMON_PARAMS,
89
+ Component: NonNativeContextMenu.RadioItem,
90
+ NativeComponent: function (param2) {
91
+ var {
92
+ children
93
+ } = param2;
94
+ return children;
95
+ }
96
+ }),
97
+ ItemIndicator = withNativeMenu({
98
+ ...COMMON_PARAMS,
99
+ Component: NonNativeContextMenu.ItemIndicator,
100
+ NativeComponent: NativeMenuRoot.ItemIndicator
101
+ }),
102
+ Separator = withNativeMenu({
103
+ ...COMMON_PARAMS,
104
+ Component: NonNativeContextMenu.Separator,
105
+ NativeComponent: NativeMenuRoot.Separator
106
+ }),
107
+ Arrow = withNativeMenu({
108
+ ...COMMON_PARAMS,
109
+ Component: NonNativeContextMenu.Arrow,
110
+ NativeComponent: NativeMenuRoot.Arrow
111
+ }),
112
+ Sub = withNativeMenu({
113
+ ...COMMON_PARAMS,
114
+ Component: NonNativeContextMenu.Sub,
115
+ NativeComponent: NativeMenuRoot.Sub
116
+ }),
117
+ SubTrigger = withNativeMenu({
118
+ ...COMMON_PARAMS,
119
+ Component: NonNativeContextMenu.SubTrigger,
120
+ NativeComponent: NativeMenuRoot.SubTrigger
121
+ }),
122
+ SubContent = withNativeMenu({
123
+ ...COMMON_PARAMS,
124
+ Component: NonNativeContextMenu.SubContent,
125
+ NativeComponent: NativeMenuRoot.SubContent
126
+ }),
127
+ ContextMenu = withStaticProperties(ContextMenuComp, {
128
+ Trigger,
129
+ Portal,
130
+ Content,
131
+ Group,
132
+ Label,
133
+ Item,
134
+ CheckboxItem,
135
+ RadioGroup,
136
+ RadioItem,
137
+ ItemIndicator,
138
+ Separator,
139
+ Arrow,
140
+ Sub,
141
+ // cast to React.FC to avoid TS error
142
+ SubTrigger,
143
+ SubContent,
144
+ ItemTitle,
145
+ ItemSubtitle,
146
+ // cast to React.FC to avoid TS error
147
+ ItemIcon,
148
+ ItemImage,
149
+ Preview
150
+ });
151
+ return ContextMenu;
152
+ }
153
+ export { createContextMenu };
154
+ //# sourceMappingURL=ContextMenu.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createNativeMenu","withNativeMenu","withStaticProperties","React","CONTEXTMENU_CONTEXT","createNonNativeContextMenu","COMMON_PARAMS","isRoot","scope","createContextMenu","param","Menu","NativeMenuRoot","NonNativeContextMenu","ContextMenuComp","Component","Root","NativeComponent","Trigger","Portal","Fragment","Content","Preview","Group","Label","Item","ItemTitle","ItemSubtitle","ItemIcon","ItemImage","CheckboxItem","RadioGroup","RadioItem","param2","children","ItemIndicator","Separator","Arrow","Sub","SubTrigger","SubContent","ContextMenu"],"sources":["../../src/ContextMenu.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,382 @@
1
+ import { createBaseMenu } from "@hanzo/gui-create-menu";
2
+ import { useControllableState } from "@hanzo/gui-use-controllable-state";
3
+ import { composeEventHandlers, composeRefs, createStyledContext, isAndroid, isWeb, Slot, View, withStaticProperties } from "@hanzo/gui-web";
4
+ import React, { useId } from "react";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ const CONTEXTMENU_CONTEXT = "ContextMenuContext";
7
+ function createNonNativeContextMenu(params) {
8
+ const {
9
+ Menu
10
+ } = createBaseMenu(params),
11
+ CONTEXT_MENU_NAME = "ContextMenu",
12
+ {
13
+ Provider: ContextMenuProvider,
14
+ useStyledContext: useContextMenuContext
15
+ } = createStyledContext(),
16
+ ContextMenuComp = props => {
17
+ const {
18
+ scope,
19
+ children,
20
+ onOpenChange,
21
+ dir,
22
+ modal = !0,
23
+ ...rest
24
+ } = props,
25
+ [open, setOpen] = React.useState(!1),
26
+ triggerRef = React.useRef(null),
27
+ handleOpenChange = React.useCallback((open2, event) => {
28
+ onOpenChange?.(open2, event), !event?.defaultPrevented && setOpen(open2);
29
+ }, [onOpenChange]);
30
+ return /* @__PURE__ */jsx(ContextMenuProvider, {
31
+ scope,
32
+ triggerId: useId(),
33
+ triggerRef,
34
+ contentId: useId(),
35
+ open,
36
+ onOpenChange: handleOpenChange,
37
+ modal,
38
+ children: /* @__PURE__ */jsx(Menu, {
39
+ scope: scope || CONTEXTMENU_CONTEXT,
40
+ dir,
41
+ open,
42
+ onOpenChange: handleOpenChange,
43
+ modal,
44
+ ...rest,
45
+ children
46
+ })
47
+ });
48
+ };
49
+ ContextMenuComp.displayName = CONTEXT_MENU_NAME;
50
+ const TRIGGER_NAME = "ContextMenuTrigger",
51
+ ContextMenuTrigger = View.styleable((props, forwardedRef) => {
52
+ const {
53
+ scope,
54
+ style,
55
+ disabled = !1,
56
+ asChild,
57
+ children,
58
+ ...triggerProps
59
+ } = props,
60
+ context = useContextMenuContext(scope),
61
+ pointRef = React.useRef({
62
+ x: 0,
63
+ y: 0
64
+ }),
65
+ virtualRef = React.useMemo(() => ({
66
+ current: {
67
+ getBoundingClientRect: () => {
68
+ if (isWeb) {
69
+ const scrollX = window.scrollX || document.documentElement.scrollLeft,
70
+ scrollY = window.scrollY || document.documentElement.scrollTop;
71
+ return DOMRect.fromRect({
72
+ width: 0,
73
+ height: 0,
74
+ x: pointRef.current.x - scrollX,
75
+ y: pointRef.current.y - scrollY
76
+ });
77
+ }
78
+ return {
79
+ width: 0,
80
+ height: 0,
81
+ top: 0,
82
+ left: 0,
83
+ ...pointRef.current
84
+ };
85
+ },
86
+ ...(!isWeb && {
87
+ measure: c => c(pointRef.current.x, pointRef.current.y, 0, 0),
88
+ measureInWindow: c => c(pointRef.current.x, pointRef.current.y, 0, 0)
89
+ })
90
+ }
91
+ }), [pointRef.current.x, pointRef.current.y]),
92
+ longPressTimerRef = React.useRef(0),
93
+ clearLongPress = React.useCallback(() => window.clearTimeout(longPressTimerRef.current), []),
94
+ createOpenChangeEvent = () => {
95
+ let defaultPrevented = !1;
96
+ return {
97
+ get defaultPrevented() {
98
+ return defaultPrevented;
99
+ },
100
+ preventDefault() {
101
+ defaultPrevented = !0;
102
+ }
103
+ };
104
+ },
105
+ handleOpen = event => {
106
+ isWeb && (event instanceof MouseEvent || event instanceof PointerEvent) ? pointRef.current = {
107
+ x: event.clientX,
108
+ y: event.clientY
109
+ } : pointRef.current = {
110
+ x: event.nativeEvent.pageX,
111
+ y: event.nativeEvent.pageY
112
+ };
113
+ const openChangeEvent = createOpenChangeEvent();
114
+ return context.onOpenChange(!0, openChangeEvent), openChangeEvent;
115
+ };
116
+ React.useEffect(() => clearLongPress, [clearLongPress]), React.useEffect(() => {
117
+ disabled && clearLongPress();
118
+ }, [disabled, clearLongPress]);
119
+ const Comp = asChild ? Slot : View;
120
+ return /* @__PURE__ */jsxs(Fragment, {
121
+ children: [/* @__PURE__ */jsx(Menu.Anchor, {
122
+ scope: scope || CONTEXTMENU_CONTEXT,
123
+ virtualRef
124
+ }), /* @__PURE__ */jsx(Comp, {
125
+ render: "span",
126
+ componentName: TRIGGER_NAME,
127
+ id: context.triggerId,
128
+ "data-state": context.open ? "open" : "closed",
129
+ "data-disabled": disabled ? "" : void 0,
130
+ ...triggerProps,
131
+ ref: composeRefs(forwardedRef, context.triggerRef),
132
+ style: isWeb ? {
133
+ WebkitTouchCallout: "none",
134
+ ...style
135
+ } : null,
136
+ ...(isWeb && {
137
+ onContextMenu: disabled ? props.onContextMenu : composeEventHandlers(props.onContextMenu, event => {
138
+ clearLongPress(), handleOpen(event).defaultPrevented || event.preventDefault();
139
+ }),
140
+ onPointerDown: disabled ? props.onPointerDown : composeEventHandlers(props.onPointerDown, event => {
141
+ event.pointerType !== "mouse" && (clearLongPress(), longPressTimerRef.current = window.setTimeout(() => handleOpen(event), 700));
142
+ }),
143
+ onPointerMove: disabled ? props.onPointerMove : composeEventHandlers(props.onPointerMove, event => {
144
+ event.pointerType !== "mouse" && clearLongPress();
145
+ }),
146
+ onPointerCancel: disabled ? props.onPointerCancel : composeEventHandlers(props.onPointerCancel, event => {
147
+ event.pointerType !== "mouse" && clearLongPress();
148
+ }),
149
+ onPointerUp: disabled ? props.onPointerUp : composeEventHandlers(props.onPointerUp, event => {
150
+ event.pointerType !== "mouse" && clearLongPress();
151
+ })
152
+ }),
153
+ ...(!isWeb && {
154
+ onLongPress: disabled ? props.onLongPress : composeEventHandlers(props.onLongPress, event => {
155
+ clearLongPress(), handleOpen(event).defaultPrevented || event.preventDefault();
156
+ })
157
+ }),
158
+ children
159
+ })]
160
+ });
161
+ });
162
+ ContextMenuTrigger.displayName = TRIGGER_NAME;
163
+ const PORTAL_NAME = "ContextMenuPortal",
164
+ ContextMenuPortal = props => {
165
+ const {
166
+ scope,
167
+ children,
168
+ ...portalProps
169
+ } = props,
170
+ context = isAndroid ? useContextMenuContext(scope) : null,
171
+ content = isAndroid ? /* @__PURE__ */jsx(ContextMenuProvider, {
172
+ ...context,
173
+ children
174
+ }) : children;
175
+ return /* @__PURE__ */jsx(Menu.Portal, {
176
+ scope: scope || CONTEXTMENU_CONTEXT,
177
+ ...portalProps,
178
+ children: content
179
+ });
180
+ };
181
+ ContextMenuPortal.displayName = PORTAL_NAME;
182
+ const CONTENT_NAME = "ContextMenuContent",
183
+ ContextMenuContent = React.forwardRef((props, forwardedRef) => {
184
+ const {
185
+ scope,
186
+ ...contentProps
187
+ } = props,
188
+ context = useContextMenuContext(scope),
189
+ hasInteractedOutsideRef = React.useRef(!1);
190
+ return /* @__PURE__ */jsx(Menu.Content, {
191
+ id: context.contentId,
192
+ "aria-labelledby": context.triggerId,
193
+ scope: scope || CONTEXTMENU_CONTEXT,
194
+ ...contentProps,
195
+ ref: forwardedRef,
196
+ onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, event => {
197
+ hasInteractedOutsideRef.current || context.triggerRef.current?.focus(), hasInteractedOutsideRef.current = !1, event.preventDefault();
198
+ }),
199
+ onInteractOutside: composeEventHandlers(props.onInteractOutside, event => {
200
+ const originalEvent = event.detail.originalEvent,
201
+ ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === !0,
202
+ isRightClick = originalEvent.button === 2 || ctrlLeftClick;
203
+ (!context.modal || isRightClick) && (hasInteractedOutsideRef.current = !0);
204
+ })
205
+ });
206
+ });
207
+ ContextMenuContent.displayName = CONTENT_NAME;
208
+ const ITEM_NAME = "ContextMenuItem",
209
+ ContextMenuItem = React.forwardRef((props, forwardedRef) => {
210
+ const {
211
+ scope,
212
+ ...itemProps
213
+ } = props;
214
+ return /* @__PURE__ */jsx(Menu.Item, {
215
+ componentName: ITEM_NAME,
216
+ scope: scope || CONTEXTMENU_CONTEXT,
217
+ ...itemProps,
218
+ ref: forwardedRef
219
+ });
220
+ });
221
+ ContextMenuItem.displayName = ITEM_NAME;
222
+ const CHECKBOX_ITEM_NAME = "ContextMenuCheckboxItem",
223
+ ContextMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {
224
+ const {
225
+ scope,
226
+ ...checkboxItemProps
227
+ } = props;
228
+ return /* @__PURE__ */jsx(Menu.CheckboxItem, {
229
+ componentName: CHECKBOX_ITEM_NAME,
230
+ scope: scope || CONTEXTMENU_CONTEXT,
231
+ ...checkboxItemProps,
232
+ ref: forwardedRef
233
+ });
234
+ });
235
+ ContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
236
+ const RADIO_GROUP_NAME = "ContextMenuRadioGroup",
237
+ ContextMenuRadioGroup = React.forwardRef((props, forwardedRef) => {
238
+ const {
239
+ scope,
240
+ ...radioGroupProps
241
+ } = props;
242
+ return /* @__PURE__ */jsx(Menu.RadioGroup, {
243
+ scope: scope || CONTEXTMENU_CONTEXT,
244
+ ...radioGroupProps,
245
+ ref: forwardedRef
246
+ });
247
+ });
248
+ ContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;
249
+ const RADIO_ITEM_NAME = "ContextMenuRadioItem",
250
+ ContextMenuRadioItem = React.forwardRef((props, forwardedRef) => {
251
+ const {
252
+ scope,
253
+ ...radioItemProps
254
+ } = props;
255
+ return /* @__PURE__ */jsx(Menu.RadioItem, {
256
+ componentName: RADIO_ITEM_NAME,
257
+ scope: scope || CONTEXTMENU_CONTEXT,
258
+ ...radioItemProps,
259
+ ref: forwardedRef
260
+ });
261
+ });
262
+ ContextMenuRadioItem.displayName = RADIO_ITEM_NAME;
263
+ const INDICATOR_NAME = "ContextMenuItemIndicator",
264
+ ContextMenuItemIndicator = Menu.ItemIndicator.styleable((props, forwardedRef) => {
265
+ const {
266
+ scope,
267
+ ...itemIndicatorProps
268
+ } = props;
269
+ return /* @__PURE__ */jsx(Menu.ItemIndicator, {
270
+ componentName: INDICATOR_NAME,
271
+ scope: scope || CONTEXTMENU_CONTEXT,
272
+ ...itemIndicatorProps,
273
+ ref: forwardedRef
274
+ });
275
+ });
276
+ ContextMenuItemIndicator.displayName = INDICATOR_NAME;
277
+ const SUB_NAME = "ContextMenuSub",
278
+ ContextMenuSub = props => {
279
+ const {
280
+ scope,
281
+ children,
282
+ onOpenChange,
283
+ open: openProp,
284
+ defaultOpen,
285
+ ...rest
286
+ } = props,
287
+ [open, setOpen] = useControllableState({
288
+ prop: openProp,
289
+ defaultProp: defaultOpen,
290
+ onChange: onOpenChange
291
+ });
292
+ return /* @__PURE__ */jsx(Menu.Sub, {
293
+ scope: scope || CONTEXTMENU_CONTEXT,
294
+ open,
295
+ onOpenChange: setOpen,
296
+ ...rest,
297
+ children
298
+ });
299
+ };
300
+ ContextMenuSub.displayName = SUB_NAME;
301
+ const SUB_TRIGGER_NAME = "ContextMenuSubTrigger",
302
+ ContextMenuSubTrigger = View.styleable((props, forwardedRef) => {
303
+ const {
304
+ scope,
305
+ ...subTriggerProps
306
+ } = props;
307
+ return /* @__PURE__ */jsx(Menu.SubTrigger, {
308
+ componentName: SUB_TRIGGER_NAME,
309
+ scope: scope || CONTEXTMENU_CONTEXT,
310
+ ...subTriggerProps,
311
+ ref: forwardedRef
312
+ });
313
+ });
314
+ ContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
315
+ const SUB_CONTENT_NAME = "ContextMenuSubContent",
316
+ ContextMenuSubContent = React.forwardRef((props, forwardedRef) => {
317
+ const {
318
+ scope,
319
+ ...subContentProps
320
+ } = props;
321
+ return /* @__PURE__ */jsx(Menu.SubContent, {
322
+ scope: scope || CONTEXTMENU_CONTEXT,
323
+ ...subContentProps,
324
+ ref: forwardedRef,
325
+ style: isWeb ? {
326
+ ...props.style,
327
+ "--tamagui-context-menu-content-transform-origin": "var(--tamagui-popper-transform-origin)",
328
+ "--tamagui-context-menu-content-available-width": "var(--tamagui-popper-available-width)",
329
+ "--tamagui-context-menu-content-available-height": "var(--tamagui-popper-available-height)",
330
+ "--tamagui-context-menu-trigger-width": "var(--tamagui-popper-anchor-width)",
331
+ "--tamagui-context-menu-trigger-height": "var(--tamagui-popper-anchor-height)"
332
+ } : null
333
+ });
334
+ });
335
+ ContextMenuSubContent.displayName = SUB_CONTENT_NAME;
336
+ const ARROW_NAME = "ContextMenuArrow",
337
+ ContextMenuArrow = React.forwardRef((props, forwardedRef) => {
338
+ const {
339
+ scope,
340
+ ...arrowProps
341
+ } = props;
342
+ return /* @__PURE__ */jsx(Menu.Arrow, {
343
+ componentName: ARROW_NAME,
344
+ scope: scope || CONTEXTMENU_CONTEXT,
345
+ ...arrowProps,
346
+ ref: forwardedRef
347
+ });
348
+ });
349
+ ContextMenuArrow.displayName = ARROW_NAME;
350
+ const ContextMenuGroup = Menu.Group,
351
+ ContextMenuLabel = Menu.Label,
352
+ ContextMenuSeparator = Menu.Separator,
353
+ ContextMenuItemTitle = Menu.ItemTitle,
354
+ ContextMenuItemSubTitle = Menu.ItemSubtitle,
355
+ ContextMenuItemImage = Menu.ItemImage,
356
+ ContextMenuItemIcon = Menu.ItemIcon;
357
+ return withStaticProperties(ContextMenuComp, {
358
+ Root: ContextMenuComp,
359
+ Trigger: ContextMenuTrigger,
360
+ Portal: ContextMenuPortal,
361
+ Content: ContextMenuContent,
362
+ Group: ContextMenuGroup,
363
+ Label: ContextMenuLabel,
364
+ Item: ContextMenuItem,
365
+ CheckboxItem: ContextMenuCheckboxItem,
366
+ RadioGroup: ContextMenuRadioGroup,
367
+ RadioItem: ContextMenuRadioItem,
368
+ ItemIndicator: ContextMenuItemIndicator,
369
+ Separator: ContextMenuSeparator,
370
+ Arrow: ContextMenuArrow,
371
+ Sub: ContextMenuSub,
372
+ SubTrigger: ContextMenuSubTrigger,
373
+ SubContent: ContextMenuSubContent,
374
+ ItemTitle: ContextMenuItemTitle,
375
+ ItemSubtitle: ContextMenuItemSubTitle,
376
+ ItemIcon: ContextMenuItemIcon,
377
+ ItemImage: ContextMenuItemImage,
378
+ Preview: () => null
379
+ });
380
+ }
381
+ export { CONTEXTMENU_CONTEXT, createNonNativeContextMenu };
382
+ //# sourceMappingURL=createNonNativeContextMenu.mjs.map