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