@tamagui/create-menu 2.7.7 → 3.0.0-beta.643.1

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 (113) hide show
  1. package/dist/cjs/createBaseMenu.cjs +1033 -1247
  2. package/dist/cjs/createBaseMenu.native.cjs +1217 -0
  3. package/dist/cjs/createBaseMenu.native.js +1155 -1387
  4. package/dist/cjs/createBaseMenu.native.js.map +1 -1
  5. package/dist/cjs/createNativeMenu/createNativeMenu.cjs +346 -377
  6. package/dist/cjs/createNativeMenu/createNativeMenu.native.cjs +439 -0
  7. package/dist/cjs/createNativeMenu/createNativeMenu.native.js +405 -439
  8. package/dist/cjs/createNativeMenu/createNativeMenu.native.js.map +1 -1
  9. package/dist/cjs/createNativeMenu/createNativeMenuTypes.cjs +10 -11
  10. package/dist/cjs/createNativeMenu/createNativeMenuTypes.native.cjs +19 -0
  11. package/dist/cjs/createNativeMenu/createNativeMenuTypes.native.js +10 -10
  12. package/dist/cjs/createNativeMenu/createNativeMenuTypes.native.js.map +1 -1
  13. package/dist/cjs/createNativeMenu/utils.cjs +76 -86
  14. package/dist/cjs/createNativeMenu/utils.native.cjs +107 -0
  15. package/dist/cjs/createNativeMenu/utils.native.js +82 -92
  16. package/dist/cjs/createNativeMenu/utils.native.js.map +1 -1
  17. package/dist/cjs/createNativeMenu/withNativeMenu.cjs +27 -35
  18. package/dist/cjs/createNativeMenu/withNativeMenu.native.cjs +42 -0
  19. package/dist/cjs/createNativeMenu/withNativeMenu.native.js +27 -34
  20. package/dist/cjs/createNativeMenu/withNativeMenu.native.js.map +1 -1
  21. package/dist/cjs/index.cjs +9 -20
  22. package/dist/cjs/index.native.cjs +23 -0
  23. package/dist/cjs/index.native.js +10 -20
  24. package/dist/cjs/index.native.js.map +1 -1
  25. package/dist/esm/createBaseMenu.mjs +1021 -1225
  26. package/dist/esm/createBaseMenu.mjs.map +1 -1
  27. package/dist/esm/createBaseMenu.native.js +1144 -1367
  28. package/dist/esm/createBaseMenu.native.js.map +1 -1
  29. package/dist/esm/createNativeMenu/createNativeMenu.mjs +332 -353
  30. package/dist/esm/createNativeMenu/createNativeMenu.mjs.map +1 -1
  31. package/dist/esm/createNativeMenu/createNativeMenu.native.js +392 -417
  32. package/dist/esm/createNativeMenu/createNativeMenu.native.js.map +1 -1
  33. package/dist/esm/createNativeMenu/createNativeMenuTypes.mjs +0 -2
  34. package/dist/esm/createNativeMenu/createNativeMenuTypes.native.js +0 -2
  35. package/dist/esm/createNativeMenu/utils.mjs +55 -57
  36. package/dist/esm/createNativeMenu/utils.mjs.map +1 -1
  37. package/dist/esm/createNativeMenu/utils.native.js +62 -65
  38. package/dist/esm/createNativeMenu/utils.native.js.map +1 -1
  39. package/dist/esm/createNativeMenu/withNativeMenu.mjs +14 -17
  40. package/dist/esm/createNativeMenu/withNativeMenu.mjs.map +1 -1
  41. package/dist/esm/createNativeMenu/withNativeMenu.native.js +15 -18
  42. package/dist/esm/createNativeMenu/withNativeMenu.native.js.map +1 -1
  43. package/dist/esm/index.js +5 -6
  44. package/dist/esm/index.mjs +5 -6
  45. package/dist/esm/index.native.js +5 -6
  46. package/dist/jsx/createBaseMenu.mjs +1021 -1225
  47. package/dist/jsx/createBaseMenu.mjs.map +1 -1
  48. package/dist/jsx/createBaseMenu.native.cjs +1217 -0
  49. package/dist/jsx/createBaseMenu.native.js +1155 -1387
  50. package/dist/jsx/createBaseMenu.native.js.map +1 -1
  51. package/dist/jsx/createNativeMenu/createNativeMenu.mjs +332 -353
  52. package/dist/jsx/createNativeMenu/createNativeMenu.mjs.map +1 -1
  53. package/dist/jsx/createNativeMenu/createNativeMenu.native.cjs +439 -0
  54. package/dist/jsx/createNativeMenu/createNativeMenu.native.js +405 -439
  55. package/dist/jsx/createNativeMenu/createNativeMenu.native.js.map +1 -1
  56. package/dist/jsx/createNativeMenu/createNativeMenuTypes.mjs +0 -2
  57. package/dist/jsx/createNativeMenu/createNativeMenuTypes.native.cjs +19 -0
  58. package/dist/jsx/createNativeMenu/createNativeMenuTypes.native.js +10 -10
  59. package/dist/jsx/createNativeMenu/createNativeMenuTypes.native.js.map +1 -1
  60. package/dist/jsx/createNativeMenu/utils.mjs +55 -57
  61. package/dist/jsx/createNativeMenu/utils.mjs.map +1 -1
  62. package/dist/jsx/createNativeMenu/utils.native.cjs +107 -0
  63. package/dist/jsx/createNativeMenu/utils.native.js +82 -92
  64. package/dist/jsx/createNativeMenu/utils.native.js.map +1 -1
  65. package/dist/jsx/createNativeMenu/withNativeMenu.mjs +14 -17
  66. package/dist/jsx/createNativeMenu/withNativeMenu.mjs.map +1 -1
  67. package/dist/jsx/createNativeMenu/withNativeMenu.native.cjs +42 -0
  68. package/dist/jsx/createNativeMenu/withNativeMenu.native.js +27 -34
  69. package/dist/jsx/createNativeMenu/withNativeMenu.native.js.map +1 -1
  70. package/dist/jsx/index.js +5 -6
  71. package/dist/jsx/index.mjs +5 -6
  72. package/dist/jsx/index.native.cjs +23 -0
  73. package/dist/jsx/index.native.js +10 -20
  74. package/dist/jsx/index.native.js.map +1 -1
  75. package/package.json +23 -22
  76. package/src/createBaseMenu.tsx +211 -231
  77. package/src/createNativeMenu/createNativeMenuTypes.ts +0 -6
  78. package/src/createNativeMenu/utils.tsx +6 -6
  79. package/src/createNativeMenu/withNativeMenu.tsx +1 -2
  80. package/src/index.tsx +0 -1
  81. package/types/createBaseMenu.d.ts +38 -126
  82. package/types/createBaseMenu.d.ts.map +1 -1
  83. package/types/createNativeMenu/createNativeMenu.d.ts +1 -1
  84. package/types/createNativeMenu/createNativeMenu.d.ts.map +1 -1
  85. package/types/createNativeMenu/createNativeMenuTypes.d.ts +0 -6
  86. package/types/createNativeMenu/createNativeMenuTypes.d.ts.map +1 -1
  87. package/types/createNativeMenu/utils.d.ts +5 -5
  88. package/types/createNativeMenu/utils.d.ts.map +1 -1
  89. package/types/createNativeMenu/withNativeMenu.d.ts.map +1 -1
  90. package/types/index.d.ts +0 -1
  91. package/types/index.d.ts.map +1 -1
  92. package/dist/cjs/MenuPredefined.cjs +0 -191
  93. package/dist/cjs/MenuPredefined.native.js +0 -194
  94. package/dist/cjs/MenuPredefined.native.js.map +0 -1
  95. package/dist/esm/MenuPredefined.mjs +0 -166
  96. package/dist/esm/MenuPredefined.mjs.map +0 -1
  97. package/dist/esm/MenuPredefined.native.js +0 -166
  98. package/dist/esm/MenuPredefined.native.js.map +0 -1
  99. package/dist/esm/createNativeMenu/createNativeMenuTypes.mjs.map +0 -1
  100. package/dist/esm/createNativeMenu/createNativeMenuTypes.native.js.map +0 -1
  101. package/dist/esm/index.js.map +0 -1
  102. package/dist/esm/index.mjs.map +0 -1
  103. package/dist/esm/index.native.js.map +0 -1
  104. package/dist/jsx/MenuPredefined.mjs +0 -166
  105. package/dist/jsx/MenuPredefined.mjs.map +0 -1
  106. package/dist/jsx/MenuPredefined.native.js +0 -194
  107. package/dist/jsx/MenuPredefined.native.js.map +0 -1
  108. package/dist/jsx/createNativeMenu/createNativeMenuTypes.mjs.map +0 -1
  109. package/dist/jsx/index.js.map +0 -1
  110. package/dist/jsx/index.mjs.map +0 -1
  111. package/src/MenuPredefined.tsx +0 -204
  112. package/types/MenuPredefined.d.ts +0 -31
  113. package/types/MenuPredefined.d.ts.map +0 -1
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+
3
4
  var __create = Object.create;
4
5
  var __defProp = Object.defineProperty;
5
6
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -7,469 +8,434 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
8
  var __getProtoOf = Object.getPrototypeOf;
8
9
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
10
  var __export = (target, all) => {
10
- for (var name in all) __defProp(target, name, {
11
- get: all[name],
12
- enumerable: true
13
- });
11
+ for (var name in all) __defProp(target, name, {
12
+ get: all[name],
13
+ enumerable: true
14
+ });
14
15
  };
15
16
  var __copyProps = (to, from, except, desc) => {
16
- if (from && typeof from === "object" || typeof from === "function") {
17
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
- get: () => from[key],
19
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
- });
21
- }
22
- return to;
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
19
+ get: () => from[key],
20
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
21
+ });
22
+ }
23
+ return to;
23
24
  };
24
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
- // If the importer is in node compatibility mode or this is not an ESM
26
- // file that has been converted to a CommonJS file using a Babel-
27
- // compatible transform (i.e. "__esModule" has not been set), then set
28
- // "default" to the CommonJS "module.exports" for node compatibility.
29
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
- value: mod,
31
- enumerable: true
25
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
26
+ value: mod,
27
+ enumerable: true
32
28
  }) : target, mod));
33
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
- value: true
35
- }), mod);
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
30
  var createNativeMenu_exports = {};
37
- __export(createNativeMenu_exports, {
38
- createNativeMenu: () => createNativeMenu
39
- });
31
+ __export(createNativeMenu_exports, { createNativeMenu: () => createNativeMenu });
40
32
  module.exports = __toCommonJS(createNativeMenu_exports);
41
33
  var import_jsx_runtime = require("react/jsx-runtime");
42
34
  var import_native = require("@tamagui/native");
43
35
  var import_web = require("@tamagui/web");
44
36
  var import_react = __toESM(require("react"), 1);
45
- var MAPPED_TYPES = ["SubContent", "SubTrigger", "Content", "Sub", "Group", "Item", "ItemTitle", "ItemSubtitle", "ItemIcon", "ItemImage", "ItemIndicator", "Label", "Separator", "CheckboxItem", "Preview", "Auxiliary"];
46
- var CONTAINER_TYPES = ["SubContent", "SubTrigger", "Content", "Sub", "Group", "Item"];
37
+ var MAPPED_TYPES = [
38
+ "SubContent",
39
+ "SubTrigger",
40
+ "Content",
41
+ "Sub",
42
+ "Group",
43
+ "Item",
44
+ "ItemTitle",
45
+ "ItemSubtitle",
46
+ "ItemIcon",
47
+ "ItemImage",
48
+ "ItemIndicator",
49
+ "Label",
50
+ "Separator",
51
+ "CheckboxItem",
52
+ "Preview",
53
+ "Auxiliary"
54
+ ];
55
+ var CONTAINER_TYPES = [
56
+ "SubContent",
57
+ "SubTrigger",
58
+ "Content",
59
+ "Sub",
60
+ "Group",
61
+ "Item"
62
+ ];
47
63
  function getComponentType(displayName) {
48
- var _iteratorNormalCompletion = true,
49
- _didIteratorError = false,
50
- _iteratorError = void 0;
51
- try {
52
- for (var _iterator = MAPPED_TYPES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
53
- var type = _step.value;
54
- if (displayName === type || displayName === `Menu${type}` || displayName === `ContextMenu${type}` || displayName.includes(`(${type})`)) {
55
- return type;
56
- }
57
- }
58
- } catch (err) {
59
- _didIteratorError = true;
60
- _iteratorError = err;
61
- } finally {
62
- try {
63
- if (!_iteratorNormalCompletion && _iterator.return != null) {
64
- _iterator.return();
65
- }
66
- } finally {
67
- if (_didIteratorError) {
68
- throw _iteratorError;
69
- }
70
- }
71
- }
72
- return null;
64
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
65
+ try {
66
+ for (var _iterator = MAPPED_TYPES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
67
+ var type = _step.value;
68
+ if (displayName === type || displayName === `Menu${type}` || displayName === `ContextMenu${type}` || displayName.includes(`(${type})`)) {
69
+ return type;
70
+ }
71
+ }
72
+ } catch (err) {
73
+ _didIteratorError = true;
74
+ _iteratorError = err;
75
+ } finally {
76
+ try {
77
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
78
+ _iterator.return();
79
+ }
80
+ } finally {
81
+ if (_didIteratorError) {
82
+ throw _iteratorError;
83
+ }
84
+ }
85
+ }
86
+ return null;
73
87
  }
74
88
  function isItemLike(props, displayName) {
75
- if (getComponentType(displayName)) return false;
76
- return "onSelect" in props || "textValue" in props;
89
+ if (getComponentType(displayName)) return false;
90
+ return "onSelect" in props || "textValue" in props;
77
91
  }
78
92
  function isPortalLike(displayName) {
79
- return displayName === "Portal" || displayName.includes("Portal");
93
+ return displayName === "Portal" || displayName.includes("Portal");
80
94
  }
81
95
  function isTriggerLike(displayName) {
82
- return displayName === "Trigger" || displayName.includes("(Trigger)");
96
+ return displayName === "Trigger" || displayName.includes("(Trigger)");
83
97
  }
84
98
  function composeHandlers(first, second) {
85
- return function () {
86
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
87
- args[_key] = arguments[_key];
88
- }
89
- first === null || first === void 0 ? void 0 : first(...args);
90
- second === null || second === void 0 ? void 0 : second(...args);
91
- };
99
+ return function() {
100
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
101
+ args[_key] = arguments[_key];
102
+ }
103
+ first === null || first === void 0 ? void 0 : first(...args);
104
+ second === null || second === void 0 ? void 0 : second(...args);
105
+ };
92
106
  }
93
107
  function getTriggerDebugName(menuType, props) {
94
- var childProps = /* @__PURE__ */import_react.default.isValidElement(props.children) && props.children.props ? props.children.props : null;
95
- var prefix = menuType === "ContextMenu" ? "ContextMenuTrigger" : "MenuTrigger";
96
- var _childProps_testID, _ref;
97
- 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;
98
- return [prefix, detail].filter(Boolean).join(":") || prefix;
108
+ var childProps = /* @__PURE__ */ import_react.default.isValidElement(props.children) && props.children.props ? props.children.props : null;
109
+ var prefix = menuType === "ContextMenu" ? "ContextMenuTrigger" : "MenuTrigger";
110
+ var _childProps_testID, _ref;
111
+ 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;
112
+ return [prefix, detail].filter(Boolean).join(":") || prefix;
99
113
  }
100
- var emptyStub = function () {
101
- return null;
114
+ var emptyStub = function() {
115
+ return null;
102
116
  };
103
117
  function createWebStubs() {
104
- return {
105
- Menu: (0, import_web.withStaticProperties)(emptyStub, {
106
- Trigger: emptyStub,
107
- Content: emptyStub,
108
- Item: emptyStub,
109
- ItemTitle: emptyStub,
110
- ItemSubtitle: emptyStub,
111
- SubTrigger: emptyStub,
112
- Group: emptyStub,
113
- ItemIcon: emptyStub,
114
- Separator: emptyStub,
115
- CheckboxItem: emptyStub,
116
- ItemIndicator: emptyStub,
117
- ItemImage: emptyStub,
118
- Label: emptyStub,
119
- Arrow: emptyStub,
120
- Sub: emptyStub,
121
- SubContent: emptyStub,
122
- Preview: emptyStub,
123
- Portal: emptyStub,
124
- RadioGroup: emptyStub,
125
- RadioItem: emptyStub,
126
- Auxiliary: emptyStub
127
- })
128
- };
118
+ return { Menu: (0, import_web.withStaticProperties)(emptyStub, {
119
+ Trigger: emptyStub,
120
+ Content: emptyStub,
121
+ Item: emptyStub,
122
+ ItemTitle: emptyStub,
123
+ ItemSubtitle: emptyStub,
124
+ SubTrigger: emptyStub,
125
+ Group: emptyStub,
126
+ ItemIcon: emptyStub,
127
+ Separator: emptyStub,
128
+ CheckboxItem: emptyStub,
129
+ ItemIndicator: emptyStub,
130
+ ItemImage: emptyStub,
131
+ Label: emptyStub,
132
+ Arrow: emptyStub,
133
+ Sub: emptyStub,
134
+ SubContent: emptyStub,
135
+ Preview: emptyStub,
136
+ Portal: emptyStub,
137
+ RadioGroup: emptyStub,
138
+ RadioItem: emptyStub,
139
+ Auxiliary: emptyStub
140
+ }) };
129
141
  }
130
- var createNativeMenu = function (MenuType) {
131
- if (import_web.isWeb) {
132
- return createWebStubs();
133
- }
134
- var isContextMenu = MenuType === "ContextMenu";
135
- var isAndroid = !import_web.isIos && !import_web.isWeb;
136
- var resolved = null;
137
- var warned = false;
138
- function resolve() {
139
- if (resolved) return resolved;
140
- var adapter = (0, import_native.getNativeMenuAdapter)();
141
- if (!adapter) {
142
- if (!warned) {
143
- warned = true;
144
- console.warn(`Warning: Register a native menu adapter before rendering Tamagui native menus`);
145
- }
146
- return null;
147
- }
148
- var menu = isContextMenu ? adapter.ContextMenu : adapter.Menu;
149
- resolved = {
150
- menu,
151
- componentMap: {
152
- SubContent: menu.SubContent,
153
- SubTrigger: menu.SubTrigger,
154
- Content: menu.Content,
155
- Sub: menu.Sub,
156
- Group: menu.Group,
157
- Item: menu.Item,
158
- ItemTitle: menu.ItemTitle,
159
- ItemSubtitle: menu.ItemSubtitle,
160
- ItemIcon: menu.ItemIcon,
161
- ItemImage: menu.ItemImage,
162
- ItemIndicator: menu.ItemIndicator,
163
- Label: menu.Label,
164
- Separator: menu.Separator,
165
- CheckboxItem: menu.CheckboxItem,
166
- Preview: menu.Preview,
167
- Auxiliary: menu.Auxiliary
168
- }
169
- };
170
- return resolved;
171
- }
172
- function transformChildren(menu, map, children) {
173
- var shouldReverseOnIos = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false,
174
- triggerBoundaryHandlers = arguments.length > 4 ? arguments[4] : void 0,
175
- radioContext = arguments.length > 5 ? arguments[5] : void 0;
176
- var result = [];
177
- import_react.default.Children.forEach(children, function (child) {
178
- var _child_type;
179
- if (! /* @__PURE__ */import_react.default.isValidElement(child)) {
180
- result.push(child);
181
- return;
182
- }
183
- var displayName = ((_child_type = child.type) === null || _child_type === void 0 ? void 0 : _child_type.displayName) || "";
184
- var props = child.props;
185
- if (isPortalLike(displayName)) {
186
- var inner = transformChildren(menu, map, props.children, false, triggerBoundaryHandlers, radioContext);
187
- import_react.default.Children.forEach(inner, function (c) {
188
- return result.push(c);
189
- });
190
- return;
191
- }
192
- if (displayName.includes("ScrollView")) {
193
- var inner1 = transformChildren(menu, map, props.children, false, triggerBoundaryHandlers, radioContext);
194
- import_react.default.Children.forEach(inner1, function (c) {
195
- return result.push(c);
196
- });
197
- return;
198
- }
199
- if (isTriggerLike(displayName)) {
200
- var debugName = getTriggerDebugName(MenuType, props);
201
- var claim = function () {
202
- return triggerBoundaryHandlers === null || triggerBoundaryHandlers === void 0 ? void 0 : triggerBoundaryHandlers.claim(debugName);
203
- };
204
- var release = function () {
205
- return triggerBoundaryHandlers === null || triggerBoundaryHandlers === void 0 ? void 0 : triggerBoundaryHandlers.release(debugName);
206
- };
207
- var {
208
- children: triggerChildren,
209
- ...triggerProps
210
- } = props;
211
- result.push(/* @__PURE__ */import_react.default.createElement(menu.Trigger, {
212
- ...triggerProps,
213
- key: child.key,
214
- onTouchStart: composeHandlers(claim, props.onTouchStart),
215
- onTouchEnd: composeHandlers(props.onTouchEnd, release),
216
- onTouchCancel: composeHandlers(props.onTouchCancel, release),
217
- onResponderGrant: composeHandlers(claim, props.onResponderGrant),
218
- onResponderRelease: composeHandlers(props.onResponderRelease, release),
219
- onResponderTerminate: composeHandlers(props.onResponderTerminate, release),
220
- onPressIn: composeHandlers(claim, props.onPressIn),
221
- onPressOut: composeHandlers(props.onPressOut, release)
222
- }, triggerChildren));
223
- return;
224
- }
225
- if (displayName.includes("RadioGroup")) {
226
- var {
227
- value: rgValue,
228
- onValueChange: rgOnValueChange,
229
- children: rgChildren,
230
- ...rest
231
- } = props;
232
- result.push(/* @__PURE__ */import_react.default.createElement(menu.Group, {
233
- ...rest,
234
- key: child.key
235
- }, transformChildren(menu, map, rgChildren, false, triggerBoundaryHandlers, {
236
- value: rgValue,
237
- onValueChange: rgOnValueChange
238
- })));
239
- return;
240
- }
241
- if (displayName.includes("RadioItem") && radioContext) {
242
- var {
243
- value: itemValue,
244
- children: rChildren,
245
- ...rest1
246
- } = props;
247
- var cleanChildren = import_react.default.Children.map(rChildren, function (c) {
248
- var _c_type;
249
- if (! /* @__PURE__ */import_react.default.isValidElement(c)) return c;
250
- var dn = ((_c_type = c.type) === null || _c_type === void 0 ? void 0 : _c_type.displayName) || "";
251
- if (dn.includes("ItemIndicator")) return null;
252
- return c;
253
- });
254
- result.push(/* @__PURE__ */import_react.default.createElement(menu.CheckboxItem, {
255
- ...rest1,
256
- key: child.key,
257
- value: itemValue === radioContext.value ? "on" : "off",
258
- onValueChange: function () {
259
- var _radioContext_onValueChange;
260
- return (_radioContext_onValueChange = radioContext.onValueChange) === null || _radioContext_onValueChange === void 0 ? void 0 : _radioContext_onValueChange.call(radioContext, itemValue);
261
- }
262
- }, transformChildren(menu, map, cleanChildren, false, triggerBoundaryHandlers, radioContext)));
263
- return;
264
- }
265
- var componentType = getComponentType(displayName);
266
- if (componentType === "CheckboxItem") {
267
- var {
268
- checked,
269
- onCheckedChange,
270
- value,
271
- onValueChange,
272
- children: cbChildren,
273
- ...rest2
274
- } = props;
275
- var finalValue = value !== null && value !== void 0 ? value : checked ? "on" : "off";
276
- var finalOnValueChange = onValueChange !== null && onValueChange !== void 0 ? onValueChange : onCheckedChange && function (v) {
277
- return onCheckedChange(v === "on");
278
- };
279
- var cleanChildren1 = import_react.default.Children.map(cbChildren, function (c) {
280
- var _c_type;
281
- if (! /* @__PURE__ */import_react.default.isValidElement(c)) return c;
282
- var dn = ((_c_type = c.type) === null || _c_type === void 0 ? void 0 : _c_type.displayName) || "";
283
- if (dn.includes("ItemIndicator")) return null;
284
- return c;
285
- });
286
- result.push(/* @__PURE__ */import_react.default.createElement(menu.CheckboxItem, {
287
- ...rest2,
288
- key: child.key,
289
- value: finalValue,
290
- onValueChange: finalOnValueChange
291
- }, transformChildren(menu, map, cleanChildren1, false, triggerBoundaryHandlers, radioContext)));
292
- return;
293
- }
294
- if (componentType) {
295
- var {
296
- children: childChildren,
297
- ...restProps
298
- } = props;
299
- var AdapterComponent = map[componentType];
300
- var isContainer = CONTAINER_TYPES.includes(componentType);
301
- var shouldReverse = componentType === "Content" || componentType === "SubContent";
302
- result.push(/* @__PURE__ */import_react.default.createElement(AdapterComponent, {
303
- ...restProps,
304
- key: child.key
305
- }, isContainer ? transformChildren(menu, map, childChildren, shouldReverse, triggerBoundaryHandlers, radioContext) : childChildren));
306
- return;
307
- }
308
- if (isItemLike(props, displayName)) {
309
- var {
310
- children: itemChildren,
311
- ...itemProps
312
- } = props;
313
- result.push(/* @__PURE__ */import_react.default.createElement(menu.Item, {
314
- ...itemProps,
315
- key: child.key
316
- }, transformChildren(menu, map, itemChildren, false, triggerBoundaryHandlers, radioContext)));
317
- return;
318
- }
319
- result.push(child);
320
- });
321
- if (import_web.isIos && shouldReverseOnIos && !isContextMenu) {
322
- result.reverse();
323
- }
324
- return result;
325
- }
326
- function lazyAdapter(name, displayName) {
327
- var Comp = function (props) {
328
- var z = resolve();
329
- if (!z) return null;
330
- return /* @__PURE__ */import_react.default.createElement(z.menu[name], props);
331
- };
332
- Comp.displayName = displayName || name;
333
- return Comp;
334
- }
335
- var Trigger = lazyAdapter("Trigger");
336
- var Content = lazyAdapter("Content");
337
- var Item = lazyAdapter("Item");
338
- var ItemTitle = lazyAdapter("ItemTitle");
339
- var ItemSubtitle = lazyAdapter("ItemSubtitle");
340
- var ItemIcon = lazyAdapter("ItemIcon");
341
- var ItemImage = lazyAdapter("ItemImage");
342
- var ItemIndicator = lazyAdapter("ItemIndicator");
343
- var Group = lazyAdapter("Group");
344
- var Label = lazyAdapter("Label");
345
- var Separator = lazyAdapter("Separator");
346
- var Sub = lazyAdapter("Sub");
347
- var SubTrigger = lazyAdapter("SubTrigger");
348
- var SubContent = lazyAdapter("SubContent");
349
- var Portal = function (param) {
350
- var {
351
- children
352
- } = param;
353
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
354
- children
355
- });
356
- };
357
- Portal.displayName = "Portal";
358
- var Arrow = function () {
359
- return null;
360
- };
361
- Arrow.displayName = "Arrow";
362
- var RadioGroup = function (param) {
363
- var {
364
- children
365
- } = param;
366
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
367
- children
368
- });
369
- };
370
- RadioGroup.displayName = `${MenuType}RadioGroup`;
371
- var RadioItem = function (param) {
372
- var {
373
- children
374
- } = param;
375
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
376
- children
377
- });
378
- };
379
- RadioItem.displayName = `${MenuType}RadioItem`;
380
- var CheckboxItem = function () {
381
- return null;
382
- };
383
- CheckboxItem.displayName = "CheckboxItem";
384
- var Preview = isContextMenu ? lazyAdapter("Preview", `${MenuType}Preview`) : function () {
385
- return null;
386
- };
387
- Preview.displayName = `${MenuType}Preview`;
388
- var Auxiliary = isContextMenu ? lazyAdapter("Auxiliary", `${MenuType}Auxiliary`) : function () {
389
- return null;
390
- };
391
- Auxiliary.displayName = `${MenuType}Auxiliary`;
392
- var Menu = function (param) {
393
- var {
394
- children,
395
- onOpenChange,
396
- onOpenWillChange
397
- } = param;
398
- var triggerOwnerRef = import_react.default.useRef(null);
399
- var claimTriggerBoundary = import_react.default.useCallback(function (debugName) {
400
- if (triggerOwnerRef.current) {
401
- (0, import_native.unstable_releaseExternalPressOwnership)(triggerOwnerRef.current, debugName);
402
- }
403
- triggerOwnerRef.current = (0, import_native.unstable_claimExternalPressOwnership)(debugName);
404
- }, []);
405
- var releaseTriggerBoundary = import_react.default.useCallback(function (debugName) {
406
- if (!triggerOwnerRef.current) return;
407
- (0, import_native.unstable_releaseExternalPressOwnership)(triggerOwnerRef.current, debugName);
408
- triggerOwnerRef.current = null;
409
- }, []);
410
- import_react.default.useEffect(function () {
411
- return releaseTriggerBoundary;
412
- }, [releaseTriggerBoundary]);
413
- var z = resolve();
414
- if (!z) return null;
415
- var handleOpenChange = import_react.default.useCallback(function (isOpen) {
416
- if (!isOpen) {
417
- releaseTriggerBoundary();
418
- }
419
- onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(isOpen);
420
- }, [onOpenChange, releaseTriggerBoundary]);
421
- var handleOpenWillChange = import_react.default.useCallback(function (willOpen) {
422
- if (!willOpen) {
423
- releaseTriggerBoundary();
424
- }
425
- onOpenWillChange === null || onOpenWillChange === void 0 ? void 0 : onOpenWillChange(willOpen);
426
- }, [onOpenWillChange, releaseTriggerBoundary]);
427
- var rootProps = {
428
- onOpenChange: handleOpenChange
429
- };
430
- if (isContextMenu && onOpenWillChange) {
431
- rootProps.onOpenWillChange = handleOpenWillChange;
432
- }
433
- var content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(z.menu.Root, {
434
- ...rootProps,
435
- children: transformChildren(z.menu, z.componentMap, children, false, {
436
- claim: claimTriggerBoundary,
437
- release: releaseTriggerBoundary
438
- })
439
- });
440
- if (isAndroid) {
441
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_native.NativeMenuContext.Provider, {
442
- value: true,
443
- children: content
444
- });
445
- }
446
- return content;
447
- };
448
- Menu.displayName = MenuType;
449
- return {
450
- Menu: (0, import_web.withStaticProperties)(Menu, {
451
- Trigger,
452
- Content,
453
- Item,
454
- ItemTitle,
455
- ItemSubtitle,
456
- ItemIcon,
457
- ItemImage,
458
- ItemIndicator,
459
- Group,
460
- Label,
461
- Separator,
462
- Sub,
463
- SubTrigger,
464
- SubContent,
465
- CheckboxItem,
466
- Portal,
467
- RadioGroup,
468
- RadioItem,
469
- Arrow,
470
- Preview,
471
- Auxiliary
472
- })
473
- };
142
+ var createNativeMenu = function(MenuType) {
143
+ if (import_web.isWeb) {
144
+ return createWebStubs();
145
+ }
146
+ var isContextMenu = MenuType === "ContextMenu";
147
+ var isAndroid = !import_web.isIos && !import_web.isWeb;
148
+ var resolved = null;
149
+ var warned = false;
150
+ function resolve() {
151
+ if (resolved) return resolved;
152
+ var adapter = (0, import_native.getNativeMenuAdapter)();
153
+ if (!adapter) {
154
+ if (!warned) {
155
+ warned = true;
156
+ console.warn(`Warning: Register a native menu adapter before rendering Tamagui native menus`);
157
+ }
158
+ return null;
159
+ }
160
+ var menu = isContextMenu ? adapter.ContextMenu : adapter.Menu;
161
+ resolved = {
162
+ menu,
163
+ componentMap: {
164
+ SubContent: menu.SubContent,
165
+ SubTrigger: menu.SubTrigger,
166
+ Content: menu.Content,
167
+ Sub: menu.Sub,
168
+ Group: menu.Group,
169
+ Item: menu.Item,
170
+ ItemTitle: menu.ItemTitle,
171
+ ItemSubtitle: menu.ItemSubtitle,
172
+ ItemIcon: menu.ItemIcon,
173
+ ItemImage: menu.ItemImage,
174
+ ItemIndicator: menu.ItemIndicator,
175
+ Label: menu.Label,
176
+ Separator: menu.Separator,
177
+ CheckboxItem: menu.CheckboxItem,
178
+ Preview: menu.Preview,
179
+ Auxiliary: menu.Auxiliary
180
+ }
181
+ };
182
+ return resolved;
183
+ }
184
+ function transformChildren(menu, map, children) {
185
+ var shouldReverseOnIos = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false, triggerBoundaryHandlers = arguments.length > 4 ? arguments[4] : void 0, radioContext = arguments.length > 5 ? arguments[5] : void 0;
186
+ var result = [];
187
+ import_react.default.Children.forEach(children, function(child) {
188
+ var _child_type;
189
+ if (!/* @__PURE__ */ import_react.default.isValidElement(child)) {
190
+ result.push(child);
191
+ return;
192
+ }
193
+ var displayName = ((_child_type = child.type) === null || _child_type === void 0 ? void 0 : _child_type.displayName) || "";
194
+ var props = child.props;
195
+ if (isPortalLike(displayName)) {
196
+ var inner = transformChildren(menu, map, props.children, false, triggerBoundaryHandlers, radioContext);
197
+ import_react.default.Children.forEach(inner, function(c) {
198
+ return result.push(c);
199
+ });
200
+ return;
201
+ }
202
+ if (displayName.includes("ScrollView")) {
203
+ var inner1 = transformChildren(menu, map, props.children, false, triggerBoundaryHandlers, radioContext);
204
+ import_react.default.Children.forEach(inner1, function(c) {
205
+ return result.push(c);
206
+ });
207
+ return;
208
+ }
209
+ if (isTriggerLike(displayName)) {
210
+ var debugName = getTriggerDebugName(MenuType, props);
211
+ var claim = function() {
212
+ return triggerBoundaryHandlers === null || triggerBoundaryHandlers === void 0 ? void 0 : triggerBoundaryHandlers.claim(debugName);
213
+ };
214
+ var release = function() {
215
+ return triggerBoundaryHandlers === null || triggerBoundaryHandlers === void 0 ? void 0 : triggerBoundaryHandlers.release(debugName);
216
+ };
217
+ var { children: triggerChildren, ...triggerProps } = props;
218
+ result.push(/* @__PURE__ */ import_react.default.createElement(menu.Trigger, {
219
+ ...triggerProps,
220
+ key: child.key,
221
+ onTouchStart: composeHandlers(claim, props.onTouchStart),
222
+ onTouchEnd: composeHandlers(props.onTouchEnd, release),
223
+ onTouchCancel: composeHandlers(props.onTouchCancel, release),
224
+ onResponderGrant: composeHandlers(claim, props.onResponderGrant),
225
+ onResponderRelease: composeHandlers(props.onResponderRelease, release),
226
+ onResponderTerminate: composeHandlers(props.onResponderTerminate, release),
227
+ onPressIn: composeHandlers(claim, props.onPressIn),
228
+ onPressOut: composeHandlers(props.onPressOut, release)
229
+ }, triggerChildren));
230
+ return;
231
+ }
232
+ if (displayName.includes("RadioGroup")) {
233
+ var { value: rgValue, onValueChange: rgOnValueChange, children: rgChildren, ...rest } = props;
234
+ result.push(/* @__PURE__ */ import_react.default.createElement(menu.Group, {
235
+ ...rest,
236
+ key: child.key
237
+ }, transformChildren(menu, map, rgChildren, false, triggerBoundaryHandlers, {
238
+ value: rgValue,
239
+ onValueChange: rgOnValueChange
240
+ })));
241
+ return;
242
+ }
243
+ if (displayName.includes("RadioItem") && radioContext) {
244
+ var { value: itemValue, children: rChildren, ...rest1 } = props;
245
+ var cleanChildren = import_react.default.Children.map(rChildren, function(c) {
246
+ var _c_type;
247
+ if (!/* @__PURE__ */ import_react.default.isValidElement(c)) return c;
248
+ var dn = ((_c_type = c.type) === null || _c_type === void 0 ? void 0 : _c_type.displayName) || "";
249
+ if (dn.includes("ItemIndicator")) return null;
250
+ return c;
251
+ });
252
+ result.push(/* @__PURE__ */ import_react.default.createElement(menu.CheckboxItem, {
253
+ ...rest1,
254
+ key: child.key,
255
+ value: itemValue === radioContext.value ? "on" : "off",
256
+ onValueChange: function() {
257
+ var _radioContext_onValueChange;
258
+ return (_radioContext_onValueChange = radioContext.onValueChange) === null || _radioContext_onValueChange === void 0 ? void 0 : _radioContext_onValueChange.call(radioContext, itemValue);
259
+ }
260
+ }, transformChildren(menu, map, cleanChildren, false, triggerBoundaryHandlers, radioContext)));
261
+ return;
262
+ }
263
+ var componentType = getComponentType(displayName);
264
+ if (componentType === "CheckboxItem") {
265
+ var { checked, onCheckedChange, value, onValueChange, children: cbChildren, ...rest2 } = props;
266
+ var finalValue = value !== null && value !== void 0 ? value : checked ? "on" : "off";
267
+ var finalOnValueChange = onValueChange !== null && onValueChange !== void 0 ? onValueChange : onCheckedChange && function(v) {
268
+ return onCheckedChange(v === "on");
269
+ };
270
+ var cleanChildren1 = import_react.default.Children.map(cbChildren, function(c) {
271
+ var _c_type;
272
+ if (!/* @__PURE__ */ import_react.default.isValidElement(c)) return c;
273
+ var dn = ((_c_type = c.type) === null || _c_type === void 0 ? void 0 : _c_type.displayName) || "";
274
+ if (dn.includes("ItemIndicator")) return null;
275
+ return c;
276
+ });
277
+ result.push(/* @__PURE__ */ import_react.default.createElement(menu.CheckboxItem, {
278
+ ...rest2,
279
+ key: child.key,
280
+ value: finalValue,
281
+ onValueChange: finalOnValueChange
282
+ }, transformChildren(menu, map, cleanChildren1, false, triggerBoundaryHandlers, radioContext)));
283
+ return;
284
+ }
285
+ if (componentType) {
286
+ var { children: childChildren, ...restProps } = props;
287
+ var AdapterComponent = map[componentType];
288
+ var isContainer = CONTAINER_TYPES.includes(componentType);
289
+ var shouldReverse = componentType === "Content" || componentType === "SubContent";
290
+ result.push(/* @__PURE__ */ import_react.default.createElement(AdapterComponent, {
291
+ ...restProps,
292
+ key: child.key
293
+ }, isContainer ? transformChildren(menu, map, childChildren, shouldReverse, triggerBoundaryHandlers, radioContext) : childChildren));
294
+ return;
295
+ }
296
+ if (isItemLike(props, displayName)) {
297
+ var { children: itemChildren, ...itemProps } = props;
298
+ result.push(/* @__PURE__ */ import_react.default.createElement(menu.Item, {
299
+ ...itemProps,
300
+ key: child.key
301
+ }, transformChildren(menu, map, itemChildren, false, triggerBoundaryHandlers, radioContext)));
302
+ return;
303
+ }
304
+ result.push(child);
305
+ });
306
+ if (import_web.isIos && shouldReverseOnIos && !isContextMenu) {
307
+ result.reverse();
308
+ }
309
+ return result;
310
+ }
311
+ function lazyAdapter(name, displayName) {
312
+ var Comp = function(props) {
313
+ var z = resolve();
314
+ if (!z) return null;
315
+ return /* @__PURE__ */ import_react.default.createElement(z.menu[name], props);
316
+ };
317
+ Comp.displayName = displayName || name;
318
+ return Comp;
319
+ }
320
+ var Trigger = lazyAdapter("Trigger");
321
+ var Content = lazyAdapter("Content");
322
+ var Item = lazyAdapter("Item");
323
+ var ItemTitle = lazyAdapter("ItemTitle");
324
+ var ItemSubtitle = lazyAdapter("ItemSubtitle");
325
+ var ItemIcon = lazyAdapter("ItemIcon");
326
+ var ItemImage = lazyAdapter("ItemImage");
327
+ var ItemIndicator = lazyAdapter("ItemIndicator");
328
+ var Group = lazyAdapter("Group");
329
+ var Label = lazyAdapter("Label");
330
+ var Separator = lazyAdapter("Separator");
331
+ var Sub = lazyAdapter("Sub");
332
+ var SubTrigger = lazyAdapter("SubTrigger");
333
+ var SubContent = lazyAdapter("SubContent");
334
+ var Portal = function(param) {
335
+ var { children } = param;
336
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
337
+ };
338
+ Portal.displayName = "Portal";
339
+ var Arrow = function() {
340
+ return null;
341
+ };
342
+ Arrow.displayName = "Arrow";
343
+ var RadioGroup = function(param) {
344
+ var { children } = param;
345
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
346
+ };
347
+ RadioGroup.displayName = `${MenuType}RadioGroup`;
348
+ var RadioItem = function(param) {
349
+ var { children } = param;
350
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children });
351
+ };
352
+ RadioItem.displayName = `${MenuType}RadioItem`;
353
+ var CheckboxItem = function() {
354
+ return null;
355
+ };
356
+ CheckboxItem.displayName = "CheckboxItem";
357
+ var Preview = isContextMenu ? lazyAdapter("Preview", `${MenuType}Preview`) : function() {
358
+ return null;
359
+ };
360
+ Preview.displayName = `${MenuType}Preview`;
361
+ var Auxiliary = isContextMenu ? lazyAdapter("Auxiliary", `${MenuType}Auxiliary`) : function() {
362
+ return null;
363
+ };
364
+ Auxiliary.displayName = `${MenuType}Auxiliary`;
365
+ var Menu = function(param) {
366
+ var { children, onOpenChange, onOpenWillChange } = param;
367
+ var triggerOwnerRef = import_react.default.useRef(null);
368
+ var claimTriggerBoundary = import_react.default.useCallback(function(debugName) {
369
+ if (triggerOwnerRef.current) {
370
+ (0, import_native.unstable_releaseExternalPressOwnership)(triggerOwnerRef.current, debugName);
371
+ }
372
+ triggerOwnerRef.current = (0, import_native.unstable_claimExternalPressOwnership)(debugName);
373
+ }, []);
374
+ var releaseTriggerBoundary = import_react.default.useCallback(function(debugName) {
375
+ if (!triggerOwnerRef.current) return;
376
+ (0, import_native.unstable_releaseExternalPressOwnership)(triggerOwnerRef.current, debugName);
377
+ triggerOwnerRef.current = null;
378
+ }, []);
379
+ import_react.default.useEffect(function() {
380
+ return releaseTriggerBoundary;
381
+ }, [releaseTriggerBoundary]);
382
+ var z = resolve();
383
+ if (!z) return null;
384
+ var handleOpenChange = import_react.default.useCallback(function(isOpen) {
385
+ if (!isOpen) {
386
+ releaseTriggerBoundary();
387
+ }
388
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(isOpen);
389
+ }, [onOpenChange, releaseTriggerBoundary]);
390
+ var handleOpenWillChange = import_react.default.useCallback(function(willOpen) {
391
+ if (!willOpen) {
392
+ releaseTriggerBoundary();
393
+ }
394
+ onOpenWillChange === null || onOpenWillChange === void 0 ? void 0 : onOpenWillChange(willOpen);
395
+ }, [onOpenWillChange, releaseTriggerBoundary]);
396
+ var rootProps = { onOpenChange: handleOpenChange };
397
+ if (isContextMenu && onOpenWillChange) {
398
+ rootProps.onOpenWillChange = handleOpenWillChange;
399
+ }
400
+ var content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(z.menu.Root, {
401
+ ...rootProps,
402
+ children: transformChildren(z.menu, z.componentMap, children, false, {
403
+ claim: claimTriggerBoundary,
404
+ release: releaseTriggerBoundary
405
+ })
406
+ });
407
+ if (isAndroid) {
408
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_native.NativeMenuContext.Provider, {
409
+ value: true,
410
+ children: content
411
+ });
412
+ }
413
+ return content;
414
+ };
415
+ Menu.displayName = MenuType;
416
+ return { Menu: (0, import_web.withStaticProperties)(Menu, {
417
+ Trigger,
418
+ Content,
419
+ Item,
420
+ ItemTitle,
421
+ ItemSubtitle,
422
+ ItemIcon,
423
+ ItemImage,
424
+ ItemIndicator,
425
+ Group,
426
+ Label,
427
+ Separator,
428
+ Sub,
429
+ SubTrigger,
430
+ SubContent,
431
+ CheckboxItem,
432
+ Portal,
433
+ RadioGroup,
434
+ RadioItem,
435
+ Arrow,
436
+ Preview,
437
+ Auxiliary
438
+ }) };
474
439
  };
440
+
475
441
  //# sourceMappingURL=createNativeMenu.native.js.map