@tamagui/create-menu 2.0.0-rc.8 → 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 (148) hide show
  1. package/dist/cjs/MenuPredefined.cjs +159 -157
  2. package/dist/cjs/MenuPredefined.native.js +159 -157
  3. package/dist/cjs/MenuPredefined.native.js.map +1 -1
  4. package/dist/cjs/createBaseMenu.cjs +1150 -941
  5. package/dist/cjs/createBaseMenu.native.js +1280 -1108
  6. package/dist/cjs/createBaseMenu.native.js.map +1 -1
  7. package/dist/cjs/createNativeMenu/createNativeMenu.cjs +318 -159
  8. package/dist/cjs/createNativeMenu/createNativeMenu.native.js +430 -267
  9. package/dist/cjs/createNativeMenu/createNativeMenu.native.js.map +1 -1
  10. package/dist/cjs/createNativeMenu/createNativeMenuTypes.cjs +7 -5
  11. package/dist/cjs/createNativeMenu/createNativeMenuTypes.native.js +7 -5
  12. package/dist/cjs/createNativeMenu/createNativeMenuTypes.native.js.map +1 -1
  13. package/dist/cjs/createNativeMenu/utils.cjs +85 -42
  14. package/dist/cjs/createNativeMenu/utils.native.js +83 -58
  15. package/dist/cjs/createNativeMenu/utils.native.js.map +1 -1
  16. package/dist/cjs/createNativeMenu/withNativeMenu.cjs +27 -17
  17. package/dist/cjs/createNativeMenu/withNativeMenu.native.js +22 -14
  18. package/dist/cjs/createNativeMenu/withNativeMenu.native.js.map +1 -1
  19. package/dist/cjs/index.cjs +15 -12
  20. package/dist/cjs/index.native.js +15 -12
  21. package/dist/cjs/index.native.js.map +1 -1
  22. package/dist/esm/MenuPredefined.mjs +144 -144
  23. package/dist/esm/MenuPredefined.mjs.map +1 -1
  24. package/dist/esm/MenuPredefined.native.js +144 -144
  25. package/dist/esm/MenuPredefined.native.js.map +1 -1
  26. package/dist/esm/createBaseMenu.mjs +1110 -903
  27. package/dist/esm/createBaseMenu.mjs.map +1 -1
  28. package/dist/esm/createBaseMenu.native.js +1240 -1070
  29. package/dist/esm/createBaseMenu.native.js.map +1 -1
  30. package/dist/esm/createNativeMenu/createNativeMenu.mjs +291 -134
  31. package/dist/esm/createNativeMenu/createNativeMenu.mjs.map +1 -1
  32. package/dist/esm/createNativeMenu/createNativeMenu.native.js +377 -216
  33. package/dist/esm/createNativeMenu/createNativeMenu.native.js.map +1 -1
  34. package/dist/esm/createNativeMenu/utils.mjs +58 -17
  35. package/dist/esm/createNativeMenu/utils.mjs.map +1 -1
  36. package/dist/esm/createNativeMenu/utils.native.js +57 -34
  37. package/dist/esm/createNativeMenu/utils.native.js.map +1 -1
  38. package/dist/esm/createNativeMenu/withNativeMenu.mjs +13 -5
  39. package/dist/esm/createNativeMenu/withNativeMenu.mjs.map +1 -1
  40. package/dist/esm/createNativeMenu/withNativeMenu.native.js +8 -2
  41. package/dist/esm/createNativeMenu/withNativeMenu.native.js.map +1 -1
  42. package/dist/esm/index.js +5 -6
  43. package/dist/esm/index.js.map +1 -6
  44. package/dist/esm/index.mjs +2 -1
  45. package/dist/esm/index.mjs.map +1 -1
  46. package/dist/esm/index.native.js +2 -1
  47. package/dist/esm/index.native.js.map +1 -1
  48. package/dist/jsx/MenuPredefined.mjs +144 -144
  49. package/dist/jsx/MenuPredefined.mjs.map +1 -1
  50. package/dist/jsx/MenuPredefined.native.js +159 -157
  51. package/dist/jsx/MenuPredefined.native.js.map +1 -1
  52. package/dist/jsx/createBaseMenu.mjs +1110 -903
  53. package/dist/jsx/createBaseMenu.mjs.map +1 -1
  54. package/dist/jsx/createBaseMenu.native.js +1280 -1108
  55. package/dist/jsx/createBaseMenu.native.js.map +1 -1
  56. package/dist/jsx/createNativeMenu/createNativeMenu.mjs +291 -134
  57. package/dist/jsx/createNativeMenu/createNativeMenu.mjs.map +1 -1
  58. package/dist/jsx/createNativeMenu/createNativeMenu.native.js +430 -267
  59. package/dist/jsx/createNativeMenu/createNativeMenu.native.js.map +1 -1
  60. package/dist/jsx/createNativeMenu/createNativeMenuTypes.native.js +7 -5
  61. package/dist/jsx/createNativeMenu/utils.mjs +58 -17
  62. package/dist/jsx/createNativeMenu/utils.mjs.map +1 -1
  63. package/dist/jsx/createNativeMenu/utils.native.js +83 -58
  64. package/dist/jsx/createNativeMenu/utils.native.js.map +1 -1
  65. package/dist/jsx/createNativeMenu/withNativeMenu.mjs +13 -5
  66. package/dist/jsx/createNativeMenu/withNativeMenu.mjs.map +1 -1
  67. package/dist/jsx/createNativeMenu/withNativeMenu.native.js +22 -14
  68. package/dist/jsx/createNativeMenu/withNativeMenu.native.js.map +1 -1
  69. package/dist/jsx/index.js +5 -6
  70. package/dist/jsx/index.js.map +1 -6
  71. package/dist/jsx/index.mjs +2 -1
  72. package/dist/jsx/index.mjs.map +1 -1
  73. package/dist/jsx/index.native.js +15 -12
  74. package/dist/jsx/index.native.js.map +1 -1
  75. package/package.json +26 -29
  76. package/src/createBaseMenu.tsx +367 -266
  77. package/src/createNativeMenu/createNativeMenu.tsx +448 -220
  78. package/src/createNativeMenu/createNativeMenuTypes.ts +20 -20
  79. package/src/createNativeMenu/withNativeMenu.tsx +5 -3
  80. package/src/index.tsx +3 -5
  81. package/types/createBaseMenu.d.ts +117 -31
  82. package/types/createBaseMenu.d.ts.map +1 -1
  83. package/types/createNativeMenu/createNativeMenu.d.ts +21 -21
  84. package/types/createNativeMenu/createNativeMenu.d.ts.map +1 -1
  85. package/types/createNativeMenu/createNativeMenuTypes.d.ts +20 -20
  86. package/types/createNativeMenu/createNativeMenuTypes.d.ts.map +1 -1
  87. package/types/createNativeMenu/withNativeMenu.d.ts +3 -3
  88. package/types/createNativeMenu/withNativeMenu.d.ts.map +1 -1
  89. package/types/index.d.ts +3 -2
  90. package/types/index.d.ts.map +1 -1
  91. package/dist/cjs/MenuPredefined.js +0 -168
  92. package/dist/cjs/MenuPredefined.js.map +0 -6
  93. package/dist/cjs/createBaseMenu.js +0 -843
  94. package/dist/cjs/createBaseMenu.js.map +0 -6
  95. package/dist/cjs/createNativeMenu/createNativeMenu.js +0 -177
  96. package/dist/cjs/createNativeMenu/createNativeMenu.js.map +0 -6
  97. package/dist/cjs/createNativeMenu/createNativeMenuTypes.js +0 -14
  98. package/dist/cjs/createNativeMenu/createNativeMenuTypes.js.map +0 -6
  99. package/dist/cjs/createNativeMenu/index.cjs +0 -19
  100. package/dist/cjs/createNativeMenu/index.js +0 -16
  101. package/dist/cjs/createNativeMenu/index.js.map +0 -6
  102. package/dist/cjs/createNativeMenu/index.native.js +0 -22
  103. package/dist/cjs/createNativeMenu/index.native.js.map +0 -1
  104. package/dist/cjs/createNativeMenu/utils.js +0 -66
  105. package/dist/cjs/createNativeMenu/utils.js.map +0 -6
  106. package/dist/cjs/createNativeMenu/withNativeMenu.js +0 -30
  107. package/dist/cjs/createNativeMenu/withNativeMenu.js.map +0 -6
  108. package/dist/cjs/index.js +0 -23
  109. package/dist/cjs/index.js.map +0 -6
  110. package/dist/esm/MenuPredefined.js +0 -154
  111. package/dist/esm/MenuPredefined.js.map +0 -6
  112. package/dist/esm/createBaseMenu.js +0 -849
  113. package/dist/esm/createBaseMenu.js.map +0 -6
  114. package/dist/esm/createNativeMenu/createNativeMenu.js +0 -156
  115. package/dist/esm/createNativeMenu/createNativeMenu.js.map +0 -6
  116. package/dist/esm/createNativeMenu/createNativeMenuTypes.js +0 -1
  117. package/dist/esm/createNativeMenu/createNativeMenuTypes.js.map +0 -6
  118. package/dist/esm/createNativeMenu/index.js +0 -3
  119. package/dist/esm/createNativeMenu/index.js.map +0 -6
  120. package/dist/esm/createNativeMenu/index.mjs +0 -3
  121. package/dist/esm/createNativeMenu/index.mjs.map +0 -1
  122. package/dist/esm/createNativeMenu/index.native.js +0 -3
  123. package/dist/esm/createNativeMenu/index.native.js.map +0 -1
  124. package/dist/esm/createNativeMenu/utils.js +0 -47
  125. package/dist/esm/createNativeMenu/utils.js.map +0 -6
  126. package/dist/esm/createNativeMenu/withNativeMenu.js +0 -15
  127. package/dist/esm/createNativeMenu/withNativeMenu.js.map +0 -6
  128. package/dist/jsx/MenuPredefined.js +0 -154
  129. package/dist/jsx/MenuPredefined.js.map +0 -6
  130. package/dist/jsx/createBaseMenu.js +0 -849
  131. package/dist/jsx/createBaseMenu.js.map +0 -6
  132. package/dist/jsx/createNativeMenu/createNativeMenu.js +0 -156
  133. package/dist/jsx/createNativeMenu/createNativeMenu.js.map +0 -6
  134. package/dist/jsx/createNativeMenu/createNativeMenuTypes.js +0 -1
  135. package/dist/jsx/createNativeMenu/createNativeMenuTypes.js.map +0 -6
  136. package/dist/jsx/createNativeMenu/index.js +0 -3
  137. package/dist/jsx/createNativeMenu/index.js.map +0 -6
  138. package/dist/jsx/createNativeMenu/index.mjs +0 -3
  139. package/dist/jsx/createNativeMenu/index.mjs.map +0 -1
  140. package/dist/jsx/createNativeMenu/index.native.js +0 -22
  141. package/dist/jsx/createNativeMenu/index.native.js.map +0 -1
  142. package/dist/jsx/createNativeMenu/utils.js +0 -47
  143. package/dist/jsx/createNativeMenu/utils.js.map +0 -6
  144. package/dist/jsx/createNativeMenu/withNativeMenu.js +0 -15
  145. package/dist/jsx/createNativeMenu/withNativeMenu.js.map +0 -6
  146. package/src/createNativeMenu/index.tsx +0 -7
  147. package/types/createNativeMenu/index.d.ts +0 -4
  148. package/types/createNativeMenu/index.d.ts.map +0 -1
@@ -1,189 +1,307 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { getZeego } from "@tamagui/native";
2
+ import { getZeego, NativeMenuContext, unstable_claimExternalPressOwnership, unstable_releaseExternalPressOwnership } from "@tamagui/native";
3
3
  import { isWeb, withStaticProperties, isIos } from "@tamagui/web";
4
4
  import React from "react";
5
+ var MAPPED_TYPES = ["SubContent", "SubTrigger", "Content", "Sub", "Group", "CheckboxItem"];
6
+ var CONTAINER_TYPES = ["SubContent", "Content", "Sub", "Group"];
7
+ function getComponentType(displayName) {
8
+ var _iteratorNormalCompletion = true,
9
+ _didIteratorError = false,
10
+ _iteratorError = void 0;
11
+ try {
12
+ for (var _iterator = MAPPED_TYPES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
13
+ var type = _step.value;
14
+ if (displayName === type || displayName.includes(`(${type})`)) {
15
+ return type;
16
+ }
17
+ }
18
+ } catch (err) {
19
+ _didIteratorError = true;
20
+ _iteratorError = err;
21
+ } finally {
22
+ try {
23
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
24
+ _iterator.return();
25
+ }
26
+ } finally {
27
+ if (_didIteratorError) {
28
+ throw _iteratorError;
29
+ }
30
+ }
31
+ }
32
+ return null;
33
+ }
34
+ function isItemLike(props, displayName) {
35
+ if (getComponentType(displayName)) return false;
36
+ return "onSelect" in props || "textValue" in props;
37
+ }
38
+ function isPortalLike(displayName) {
39
+ return displayName === "Portal" || displayName.includes("Portal");
40
+ }
41
+ function isTriggerLike(displayName) {
42
+ return displayName === "Trigger" || displayName.includes("(Trigger)");
43
+ }
44
+ function composeHandlers(first, second) {
45
+ return function () {
46
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
47
+ args[_key] = arguments[_key];
48
+ }
49
+ first === null || first === void 0 ? void 0 : first(...args);
50
+ second === null || second === void 0 ? void 0 : second(...args);
51
+ };
52
+ }
53
+ function getTriggerDebugName(menuType, props) {
54
+ var childProps = /* @__PURE__ */React.isValidElement(props.children) && props.children.props ? props.children.props : null;
55
+ var prefix = menuType === "ContextMenu" ? "ContextMenuTrigger" : "MenuTrigger";
56
+ var _childProps_testID, _ref;
57
+ var detail = (_ref = (_childProps_testID = childProps === null || childProps === void 0 ? void 0 : childProps.testID) !== null && _childProps_testID !== void 0 ? _childProps_testID : childProps === null || childProps === void 0 ? void 0 : childProps.accessibilityLabel) !== null && _ref !== void 0 ? _ref : typeof props.textValue === "string" ? props.textValue : null;
58
+ return [prefix, detail].filter(Boolean).join(":") || prefix;
59
+ }
60
+ var emptyStub = function () {
61
+ return null;
62
+ };
63
+ function createWebStubs() {
64
+ return {
65
+ Menu: withStaticProperties(emptyStub, {
66
+ Trigger: emptyStub,
67
+ Content: emptyStub,
68
+ Item: emptyStub,
69
+ ItemTitle: emptyStub,
70
+ ItemSubtitle: emptyStub,
71
+ SubTrigger: emptyStub,
72
+ Group: emptyStub,
73
+ ItemIcon: emptyStub,
74
+ Separator: emptyStub,
75
+ CheckboxItem: emptyStub,
76
+ ItemIndicator: emptyStub,
77
+ ItemImage: emptyStub,
78
+ Label: emptyStub,
79
+ Arrow: emptyStub,
80
+ Sub: emptyStub,
81
+ SubContent: emptyStub,
82
+ Preview: emptyStub,
83
+ Portal: emptyStub,
84
+ RadioGroup: emptyStub,
85
+ RadioItem: emptyStub,
86
+ Auxiliary: emptyStub
87
+ })
88
+ };
89
+ }
5
90
  var createNativeMenu = function (MenuType) {
6
91
  if (isWeb) {
7
- var Menu = {},
8
- Trigger = {},
9
- Content = {},
10
- Preview = {},
11
- Item = {},
12
- ItemIcon = {},
13
- ItemImage = {},
14
- SubTrigger = {},
15
- ItemTitle = {},
16
- ItemSubtitle = {},
17
- Group = {},
18
- Separator = {},
19
- CheckboxItem = {},
20
- ItemIndicator = {},
21
- Label = {},
22
- Arrow = {},
23
- Sub = {},
24
- SubContent = {},
25
- Portal = {},
26
- RadioGroup = {},
27
- RadioItem = {},
28
- Auxiliary = {};
29
- return {
30
- Menu: withStaticProperties(Menu, {
31
- Trigger,
32
- Content,
33
- Item,
34
- ItemTitle,
35
- ItemSubtitle,
36
- SubTrigger,
37
- Group,
38
- ItemIcon,
39
- Separator,
40
- CheckboxItem,
41
- ItemIndicator,
42
- ItemImage,
43
- Label,
44
- Arrow,
45
- Sub,
46
- SubContent,
47
- Preview,
48
- Portal,
49
- RadioGroup,
50
- RadioItem,
51
- Auxiliary
52
- })
53
- };
92
+ return createWebStubs();
54
93
  }
55
- var zeego = getZeego();
56
- if (!zeego.isEnabled) return console.warn("Warning: Must call import '@tamagui/native/setup-zeego' at your app entry point to use native menus"), {
57
- Menu: {}
58
- };
59
- var {
60
- DropdownMenu: ZeegoDropdownMenu,
61
- ContextMenu: ZeegoContextMenu
62
- } = zeego.state,
63
- isContextMenu = MenuType === "ContextMenu",
64
- ZeegoMenu = isContextMenu ? ZeegoContextMenu : ZeegoDropdownMenu,
65
- COMPONENT_MAP = {
66
- SubContent: ZeegoMenu.SubContent,
67
- Content: ZeegoMenu.Content,
68
- Sub: ZeegoMenu.Sub,
69
- Group: ZeegoMenu.Group,
70
- SubTrigger: ZeegoMenu.SubTrigger
71
- },
72
- CONTAINER_TYPES = ["SubContent", "Content", "Sub", "Group"],
73
- getComponentType = function (displayName) {
74
- for (var _i = 0, _iter = ["SubContent", "SubTrigger", "Content", "Sub", "Group", "CheckboxItem"]; _i < _iter.length; _i++) {
75
- var type = _iter[_i];
76
- if (displayName === type || displayName.includes(`(${type})`)) return type;
94
+ var isContextMenu = MenuType === "ContextMenu";
95
+ var isAndroid = !isIos && !isWeb;
96
+ var resolved = null;
97
+ var warned = false;
98
+ function resolve() {
99
+ if (resolved) return resolved;
100
+ var zeego = getZeego();
101
+ if (!zeego.isEnabled) {
102
+ if (!warned) {
103
+ warned = true;
104
+ console.warn(`Warning: Must call import '@tamagui/native/setup-zeego' at your app entry point to use native menus`);
77
105
  }
78
106
  return null;
79
- },
80
- isItemLike = function (props, displayName) {
81
- return getComponentType(displayName) ? !1 : "onSelect" in props || "textValue" in props;
82
- },
83
- isPortal = function (displayName) {
84
- return displayName === "Portal" || displayName.includes("Portal");
85
- },
86
- transformForZeego = function (children) {
87
- var shouldReverseOnIos = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1,
88
- result = [];
89
- return React.Children.forEach(children, function (child) {
90
- var _child_type;
91
- if (! /* @__PURE__ */React.isValidElement(child)) {
92
- result.push(child);
93
- return;
94
- }
95
- var displayName = ((_child_type = child.type) === null || _child_type === void 0 ? void 0 : _child_type.displayName) || "",
96
- props = child.props;
97
- if (isPortal(displayName)) {
98
- var portalChildren = transformForZeego(props.children, !1);
99
- React.Children.forEach(portalChildren, function (c) {
100
- return result.push(c);
101
- });
102
- return;
103
- }
104
- var componentType = getComponentType(displayName);
105
- if (componentType === "CheckboxItem") {
106
- var {
107
- checked,
108
- onCheckedChange,
109
- value,
110
- onValueChange,
111
- children: _$children,
112
- ...rest
113
- } = props,
114
- finalValue = value ?? (checked ? "on" : "off"),
115
- finalOnValueChange = onValueChange ?? (onCheckedChange && function (v) {
116
- return onCheckedChange(v === "on");
117
- }),
118
- cleanChildren = React.Children.map(_$children, function (child2) {
119
- var _child_type2;
120
- if (! /* @__PURE__ */React.isValidElement(child2)) return child2;
121
- var childDisplayName = ((_child_type2 = child2.type) === null || _child_type2 === void 0 ? void 0 : _child_type2.displayName) || "";
122
- return childDisplayName.includes("ItemIndicator") ? null : child2;
123
- });
124
- result.push(/* @__PURE__ */React.createElement(ZeegoMenu.CheckboxItem, {
125
- ...rest,
126
- key: child.key,
127
- value: finalValue,
128
- onValueChange: finalOnValueChange
129
- }, cleanChildren));
130
- return;
131
- }
132
- if (componentType) {
133
- var {
134
- children: childChildren,
135
- ...restProps
136
- } = props,
137
- isContainer = CONTAINER_TYPES.includes(componentType),
138
- shouldReverseChildren = componentType === "Content" || componentType === "SubContent";
139
- result.push(/* @__PURE__ */React.createElement(COMPONENT_MAP[componentType], {
140
- ...restProps,
141
- key: child.key
142
- }, isContainer ? transformForZeego(childChildren, shouldReverseChildren) : childChildren));
143
- return;
144
- }
145
- if (isItemLike(props, displayName)) {
146
- var {
147
- children: itemChildren,
148
- ...itemProps
149
- } = props;
150
- result.push(/* @__PURE__ */React.createElement(ZeegoMenu.Item, {
151
- ...itemProps,
152
- key: child.key
153
- }, itemChildren));
154
- return;
155
- }
107
+ }
108
+ var menu = isContextMenu ? zeego.state.ContextMenu : zeego.state.DropdownMenu;
109
+ resolved = {
110
+ menu,
111
+ componentMap: {
112
+ SubContent: menu.SubContent,
113
+ Content: menu.Content,
114
+ Sub: menu.Sub,
115
+ Group: menu.Group,
116
+ SubTrigger: menu.SubTrigger
117
+ }
118
+ };
119
+ return resolved;
120
+ }
121
+ function transformChildren(menu, map, children) {
122
+ var shouldReverseOnIos = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false,
123
+ triggerBoundaryHandlers = arguments.length > 4 ? arguments[4] : void 0,
124
+ radioContext = arguments.length > 5 ? arguments[5] : void 0;
125
+ var result = [];
126
+ React.Children.forEach(children, function (child) {
127
+ var _child_type;
128
+ if (! /* @__PURE__ */React.isValidElement(child)) {
156
129
  result.push(child);
157
- }), isIos && shouldReverseOnIos && !isContextMenu && result.reverse(), result;
158
- },
159
- Trigger1 = ZeegoMenu.Trigger,
160
- Content1 = ZeegoMenu.Content,
161
- Item1 = ZeegoMenu.Item,
162
- ItemTitle1 = ZeegoMenu.ItemTitle,
163
- ItemSubtitle1 = ZeegoMenu.ItemSubtitle,
164
- ItemIcon1 = ZeegoMenu.ItemIcon,
165
- ItemImage1 = ZeegoMenu.ItemImage,
166
- ItemIndicator1 = ZeegoMenu.ItemIndicator,
167
- Group1 = ZeegoMenu.Group,
168
- Label1 = ZeegoMenu.Label,
169
- Separator1 = ZeegoMenu.Separator,
170
- Sub1 = ZeegoMenu.Sub,
171
- SubTrigger1 = ZeegoMenu.SubTrigger,
172
- SubContent1 = ZeegoMenu.SubContent,
173
- Portal1 = function (param) {
174
- var {
175
- children
176
- } = param;
177
- return /* @__PURE__ */_jsx(_Fragment, {
178
- children
179
- });
130
+ return;
131
+ }
132
+ var displayName = ((_child_type = child.type) === null || _child_type === void 0 ? void 0 : _child_type.displayName) || "";
133
+ var props = child.props;
134
+ if (isPortalLike(displayName)) {
135
+ var inner = transformChildren(menu, map, props.children, false, triggerBoundaryHandlers, radioContext);
136
+ React.Children.forEach(inner, function (c) {
137
+ return result.push(c);
138
+ });
139
+ return;
140
+ }
141
+ if (displayName.includes("ScrollView")) {
142
+ var inner1 = transformChildren(menu, map, props.children, false, triggerBoundaryHandlers, radioContext);
143
+ React.Children.forEach(inner1, function (c) {
144
+ return result.push(c);
145
+ });
146
+ return;
147
+ }
148
+ if (isTriggerLike(displayName)) {
149
+ var debugName = getTriggerDebugName(MenuType, props);
150
+ var claim = function () {
151
+ return triggerBoundaryHandlers === null || triggerBoundaryHandlers === void 0 ? void 0 : triggerBoundaryHandlers.claim(debugName);
152
+ };
153
+ var release = function () {
154
+ return triggerBoundaryHandlers === null || triggerBoundaryHandlers === void 0 ? void 0 : triggerBoundaryHandlers.release(debugName);
155
+ };
156
+ result.push(/* @__PURE__ */React.cloneElement(child, {
157
+ onTouchStart: composeHandlers(claim, props.onTouchStart),
158
+ onTouchEnd: composeHandlers(props.onTouchEnd, release),
159
+ onTouchCancel: composeHandlers(props.onTouchCancel, release),
160
+ onResponderGrant: composeHandlers(claim, props.onResponderGrant),
161
+ onResponderRelease: composeHandlers(props.onResponderRelease, release),
162
+ onResponderTerminate: composeHandlers(props.onResponderTerminate, release),
163
+ onPressIn: composeHandlers(claim, props.onPressIn),
164
+ onPressOut: composeHandlers(props.onPressOut, release)
165
+ }));
166
+ return;
167
+ }
168
+ if (displayName.includes("RadioGroup")) {
169
+ var {
170
+ value: rgValue,
171
+ onValueChange: rgOnValueChange,
172
+ children: rgChildren,
173
+ ...rest
174
+ } = props;
175
+ result.push(/* @__PURE__ */React.createElement(menu.Group, {
176
+ ...rest,
177
+ key: child.key
178
+ }, transformChildren(menu, map, rgChildren, false, triggerBoundaryHandlers, {
179
+ value: rgValue,
180
+ onValueChange: rgOnValueChange
181
+ })));
182
+ return;
183
+ }
184
+ if (displayName.includes("RadioItem") && radioContext) {
185
+ var {
186
+ value: itemValue,
187
+ children: rChildren,
188
+ ...rest1
189
+ } = props;
190
+ var cleanChildren = React.Children.map(rChildren, function (c) {
191
+ var _c_type;
192
+ if (! /* @__PURE__ */React.isValidElement(c)) return c;
193
+ var dn = ((_c_type = c.type) === null || _c_type === void 0 ? void 0 : _c_type.displayName) || "";
194
+ if (dn.includes("ItemIndicator")) return null;
195
+ return c;
196
+ });
197
+ result.push(/* @__PURE__ */React.createElement(menu.CheckboxItem, {
198
+ ...rest1,
199
+ key: child.key,
200
+ value: itemValue === radioContext.value ? "on" : "off",
201
+ onValueChange: function () {
202
+ var _radioContext_onValueChange;
203
+ return (_radioContext_onValueChange = radioContext.onValueChange) === null || _radioContext_onValueChange === void 0 ? void 0 : _radioContext_onValueChange.call(radioContext, itemValue);
204
+ }
205
+ }, cleanChildren));
206
+ return;
207
+ }
208
+ var componentType = getComponentType(displayName);
209
+ if (componentType === "CheckboxItem") {
210
+ var {
211
+ checked,
212
+ onCheckedChange,
213
+ value,
214
+ onValueChange,
215
+ children: cbChildren,
216
+ ...rest2
217
+ } = props;
218
+ var finalValue = value !== null && value !== void 0 ? value : checked ? "on" : "off";
219
+ var finalOnValueChange = onValueChange !== null && onValueChange !== void 0 ? onValueChange : onCheckedChange && function (v) {
220
+ return onCheckedChange(v === "on");
221
+ };
222
+ var cleanChildren1 = React.Children.map(cbChildren, function (c) {
223
+ var _c_type;
224
+ if (! /* @__PURE__ */React.isValidElement(c)) return c;
225
+ var dn = ((_c_type = c.type) === null || _c_type === void 0 ? void 0 : _c_type.displayName) || "";
226
+ if (dn.includes("ItemIndicator")) return null;
227
+ return c;
228
+ });
229
+ result.push(/* @__PURE__ */React.createElement(menu.CheckboxItem, {
230
+ ...rest2,
231
+ key: child.key,
232
+ value: finalValue,
233
+ onValueChange: finalOnValueChange
234
+ }, cleanChildren1));
235
+ return;
236
+ }
237
+ if (componentType) {
238
+ var {
239
+ children: childChildren,
240
+ ...restProps
241
+ } = props;
242
+ var isContainer = CONTAINER_TYPES.includes(componentType);
243
+ var shouldReverse = componentType === "Content" || componentType === "SubContent";
244
+ result.push(/* @__PURE__ */React.createElement(map[componentType], {
245
+ ...restProps,
246
+ key: child.key
247
+ }, isContainer ? transformChildren(menu, map, childChildren, shouldReverse, triggerBoundaryHandlers, radioContext) : childChildren));
248
+ return;
249
+ }
250
+ if (isItemLike(props, displayName)) {
251
+ var {
252
+ children: itemChildren,
253
+ ...itemProps
254
+ } = props;
255
+ result.push(/* @__PURE__ */React.createElement(menu.Item, {
256
+ ...itemProps,
257
+ key: child.key
258
+ }, itemChildren));
259
+ return;
260
+ }
261
+ result.push(child);
262
+ });
263
+ if (isIos && shouldReverseOnIos && !isContextMenu) {
264
+ result.reverse();
265
+ }
266
+ return result;
267
+ }
268
+ function lazyZeego(name, displayName) {
269
+ var Comp = function (props) {
270
+ var z = resolve();
271
+ if (!z) return null;
272
+ return /* @__PURE__ */React.createElement(z.menu[name], props);
180
273
  };
181
- Portal1.displayName = "Portal";
182
- var Arrow1 = function () {
274
+ Comp.displayName = displayName || name;
275
+ return Comp;
276
+ }
277
+ var Trigger = lazyZeego("Trigger");
278
+ var Content = lazyZeego("Content");
279
+ var Item = lazyZeego("Item");
280
+ var ItemTitle = lazyZeego("ItemTitle");
281
+ var ItemSubtitle = lazyZeego("ItemSubtitle");
282
+ var ItemIcon = lazyZeego("ItemIcon");
283
+ var ItemImage = lazyZeego("ItemImage");
284
+ var ItemIndicator = lazyZeego("ItemIndicator");
285
+ var Group = lazyZeego("Group");
286
+ var Label = lazyZeego("Label");
287
+ var Separator = lazyZeego("Separator");
288
+ var Sub = lazyZeego("Sub");
289
+ var SubTrigger = lazyZeego("SubTrigger");
290
+ var SubContent = lazyZeego("SubContent");
291
+ var Portal = function (param) {
292
+ var {
293
+ children
294
+ } = param;
295
+ return /* @__PURE__ */_jsx(_Fragment, {
296
+ children
297
+ });
298
+ };
299
+ Portal.displayName = "Portal";
300
+ var Arrow = function () {
183
301
  return null;
184
302
  };
185
- Arrow1.displayName = "Arrow";
186
- var RadioGroup1 = function (param) {
303
+ Arrow.displayName = "Arrow";
304
+ var RadioGroup = function (param) {
187
305
  var {
188
306
  children
189
307
  } = param;
@@ -191,8 +309,8 @@ var createNativeMenu = function (MenuType) {
191
309
  children
192
310
  });
193
311
  };
194
- RadioGroup1.displayName = `${MenuType}RadioGroup`;
195
- var RadioItem1 = function (param) {
312
+ RadioGroup.displayName = `${MenuType}RadioGroup`;
313
+ var RadioItem = function (param) {
196
314
  var {
197
315
  children
198
316
  } = param;
@@ -200,56 +318,99 @@ var createNativeMenu = function (MenuType) {
200
318
  children
201
319
  });
202
320
  };
203
- RadioItem1.displayName = `${MenuType}RadioItem`;
204
- var CheckboxItem1 = function (props) {
321
+ RadioItem.displayName = `${MenuType}RadioItem`;
322
+ var CheckboxItem = function () {
205
323
  return null;
206
324
  };
207
- CheckboxItem1.displayName = "CheckboxItem";
208
- var Preview1 = isContextMenu ? ZeegoContextMenu.Preview : function () {
325
+ CheckboxItem.displayName = "CheckboxItem";
326
+ var Preview = isContextMenu ? lazyZeego("Preview", `${MenuType}Preview`) : function () {
209
327
  return null;
210
328
  };
211
- Preview1.displayName = `${MenuType}Preview`;
212
- var Auxiliary1 = isContextMenu ? ZeegoContextMenu.Auxiliary : function () {
329
+ Preview.displayName = `${MenuType}Preview`;
330
+ var Auxiliary = isContextMenu ? lazyZeego("Auxiliary", `${MenuType}Auxiliary`) : function () {
213
331
  return null;
214
332
  };
215
- Auxiliary1.displayName = `${MenuType}Auxiliary`;
216
- var Menu1 = function (param) {
333
+ Auxiliary.displayName = `${MenuType}Auxiliary`;
334
+ var Menu = function (param) {
217
335
  var {
218
- children,
219
- onOpenChange,
220
- onOpenWillChange
221
- } = param,
222
- rootProps = {
223
- onOpenChange
224
- };
225
- return isContextMenu && onOpenWillChange && (rootProps.onOpenWillChange = onOpenWillChange), /* @__PURE__ */_jsx(ZeegoMenu.Root, {
336
+ children,
337
+ onOpenChange,
338
+ onOpenWillChange
339
+ } = param;
340
+ var triggerOwnerRef = React.useRef(null);
341
+ var claimTriggerBoundary = React.useCallback(function (debugName) {
342
+ if (triggerOwnerRef.current) {
343
+ unstable_releaseExternalPressOwnership(triggerOwnerRef.current, debugName);
344
+ }
345
+ triggerOwnerRef.current = unstable_claimExternalPressOwnership(debugName);
346
+ }, []);
347
+ var releaseTriggerBoundary = React.useCallback(function (debugName) {
348
+ if (!triggerOwnerRef.current) return;
349
+ unstable_releaseExternalPressOwnership(triggerOwnerRef.current, debugName);
350
+ triggerOwnerRef.current = null;
351
+ }, []);
352
+ React.useEffect(function () {
353
+ return releaseTriggerBoundary;
354
+ }, [releaseTriggerBoundary]);
355
+ var z = resolve();
356
+ if (!z) return null;
357
+ var handleOpenChange = React.useCallback(function (isOpen) {
358
+ if (!isOpen) {
359
+ releaseTriggerBoundary();
360
+ }
361
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(isOpen);
362
+ }, [onOpenChange, releaseTriggerBoundary]);
363
+ var handleOpenWillChange = React.useCallback(function (willOpen) {
364
+ if (!willOpen) {
365
+ releaseTriggerBoundary();
366
+ }
367
+ onOpenWillChange === null || onOpenWillChange === void 0 ? void 0 : onOpenWillChange(willOpen);
368
+ }, [onOpenWillChange, releaseTriggerBoundary]);
369
+ var rootProps = {
370
+ onOpenChange: handleOpenChange
371
+ };
372
+ if (isContextMenu && onOpenWillChange) {
373
+ rootProps.onOpenWillChange = handleOpenWillChange;
374
+ }
375
+ var content = /* @__PURE__ */_jsx(z.menu.Root, {
226
376
  ...rootProps,
227
- children: transformForZeego(children)
377
+ children: transformChildren(z.menu, z.componentMap, children, false, {
378
+ claim: claimTriggerBoundary,
379
+ release: releaseTriggerBoundary
380
+ })
228
381
  });
382
+ if (isAndroid) {
383
+ return /* @__PURE__ */_jsx(NativeMenuContext.Provider, {
384
+ value: true,
385
+ children: content
386
+ });
387
+ }
388
+ return content;
229
389
  };
230
- return Menu1.displayName = MenuType, {
231
- Menu: withStaticProperties(Menu1, {
232
- Trigger: Trigger1,
233
- Content: Content1,
234
- Item: Item1,
235
- ItemTitle: ItemTitle1,
236
- ItemSubtitle: ItemSubtitle1,
237
- ItemIcon: ItemIcon1,
238
- ItemImage: ItemImage1,
239
- ItemIndicator: ItemIndicator1,
240
- Group: Group1,
241
- Label: Label1,
242
- Separator: Separator1,
243
- Sub: Sub1,
244
- SubTrigger: SubTrigger1,
245
- SubContent: SubContent1,
246
- CheckboxItem: CheckboxItem1,
247
- Portal: Portal1,
248
- RadioGroup: RadioGroup1,
249
- RadioItem: RadioItem1,
250
- Arrow: Arrow1,
251
- Preview: Preview1,
252
- Auxiliary: Auxiliary1
390
+ Menu.displayName = MenuType;
391
+ return {
392
+ Menu: withStaticProperties(Menu, {
393
+ Trigger,
394
+ Content,
395
+ Item,
396
+ ItemTitle,
397
+ ItemSubtitle,
398
+ ItemIcon,
399
+ ItemImage,
400
+ ItemIndicator,
401
+ Group,
402
+ Label,
403
+ Separator,
404
+ Sub,
405
+ SubTrigger,
406
+ SubContent,
407
+ CheckboxItem,
408
+ Portal,
409
+ RadioGroup,
410
+ RadioItem,
411
+ Arrow,
412
+ Preview,
413
+ Auxiliary
253
414
  })
254
415
  };
255
416
  };