@tamagui/create-menu 2.0.0-rc.4 → 2.0.0-rc.40

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 (149) 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 +1144 -933
  5. package/dist/cjs/createBaseMenu.native.js +1266 -1100
  6. package/dist/cjs/createBaseMenu.native.js.map +1 -1
  7. package/dist/cjs/createNativeMenu/createNativeMenu.cjs +282 -159
  8. package/dist/cjs/createNativeMenu/createNativeMenu.native.js +390 -268
  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 +1104 -895
  27. package/dist/esm/createBaseMenu.mjs.map +1 -1
  28. package/dist/esm/createBaseMenu.native.js +1226 -1062
  29. package/dist/esm/createBaseMenu.native.js.map +1 -1
  30. package/dist/esm/createNativeMenu/createNativeMenu.mjs +255 -134
  31. package/dist/esm/createNativeMenu/createNativeMenu.mjs.map +1 -1
  32. package/dist/esm/createNativeMenu/createNativeMenu.native.js +336 -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 +1104 -895
  53. package/dist/jsx/createBaseMenu.mjs.map +1 -1
  54. package/dist/jsx/createBaseMenu.native.js +1266 -1100
  55. package/dist/jsx/createBaseMenu.native.js.map +1 -1
  56. package/dist/jsx/createNativeMenu/createNativeMenu.mjs +255 -134
  57. package/dist/jsx/createNativeMenu/createNativeMenu.mjs.map +1 -1
  58. package/dist/jsx/createNativeMenu/createNativeMenu.native.js +390 -268
  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 -27
  76. package/src/MenuPredefined.tsx +1 -1
  77. package/src/createBaseMenu.tsx +359 -271
  78. package/src/createNativeMenu/createNativeMenu.tsx +383 -222
  79. package/src/createNativeMenu/createNativeMenuTypes.ts +20 -20
  80. package/src/createNativeMenu/withNativeMenu.tsx +5 -3
  81. package/src/index.tsx +3 -5
  82. package/types/createBaseMenu.d.ts +121 -35
  83. package/types/createBaseMenu.d.ts.map +1 -1
  84. package/types/createNativeMenu/createNativeMenu.d.ts +21 -21
  85. package/types/createNativeMenu/createNativeMenu.d.ts.map +1 -1
  86. package/types/createNativeMenu/createNativeMenuTypes.d.ts +20 -20
  87. package/types/createNativeMenu/createNativeMenuTypes.d.ts.map +1 -1
  88. package/types/createNativeMenu/withNativeMenu.d.ts +3 -3
  89. package/types/createNativeMenu/withNativeMenu.d.ts.map +1 -1
  90. package/types/index.d.ts +3 -2
  91. package/types/index.d.ts.map +1 -1
  92. package/dist/cjs/MenuPredefined.js +0 -168
  93. package/dist/cjs/MenuPredefined.js.map +0 -6
  94. package/dist/cjs/createBaseMenu.js +0 -832
  95. package/dist/cjs/createBaseMenu.js.map +0 -6
  96. package/dist/cjs/createNativeMenu/createNativeMenu.js +0 -177
  97. package/dist/cjs/createNativeMenu/createNativeMenu.js.map +0 -6
  98. package/dist/cjs/createNativeMenu/createNativeMenuTypes.js +0 -14
  99. package/dist/cjs/createNativeMenu/createNativeMenuTypes.js.map +0 -6
  100. package/dist/cjs/createNativeMenu/index.cjs +0 -19
  101. package/dist/cjs/createNativeMenu/index.js +0 -16
  102. package/dist/cjs/createNativeMenu/index.js.map +0 -6
  103. package/dist/cjs/createNativeMenu/index.native.js +0 -22
  104. package/dist/cjs/createNativeMenu/index.native.js.map +0 -1
  105. package/dist/cjs/createNativeMenu/utils.js +0 -66
  106. package/dist/cjs/createNativeMenu/utils.js.map +0 -6
  107. package/dist/cjs/createNativeMenu/withNativeMenu.js +0 -30
  108. package/dist/cjs/createNativeMenu/withNativeMenu.js.map +0 -6
  109. package/dist/cjs/index.js +0 -23
  110. package/dist/cjs/index.js.map +0 -6
  111. package/dist/esm/MenuPredefined.js +0 -154
  112. package/dist/esm/MenuPredefined.js.map +0 -6
  113. package/dist/esm/createBaseMenu.js +0 -838
  114. package/dist/esm/createBaseMenu.js.map +0 -6
  115. package/dist/esm/createNativeMenu/createNativeMenu.js +0 -156
  116. package/dist/esm/createNativeMenu/createNativeMenu.js.map +0 -6
  117. package/dist/esm/createNativeMenu/createNativeMenuTypes.js +0 -1
  118. package/dist/esm/createNativeMenu/createNativeMenuTypes.js.map +0 -6
  119. package/dist/esm/createNativeMenu/index.js +0 -3
  120. package/dist/esm/createNativeMenu/index.js.map +0 -6
  121. package/dist/esm/createNativeMenu/index.mjs +0 -3
  122. package/dist/esm/createNativeMenu/index.mjs.map +0 -1
  123. package/dist/esm/createNativeMenu/index.native.js +0 -3
  124. package/dist/esm/createNativeMenu/index.native.js.map +0 -1
  125. package/dist/esm/createNativeMenu/utils.js +0 -47
  126. package/dist/esm/createNativeMenu/utils.js.map +0 -6
  127. package/dist/esm/createNativeMenu/withNativeMenu.js +0 -15
  128. package/dist/esm/createNativeMenu/withNativeMenu.js.map +0 -6
  129. package/dist/jsx/MenuPredefined.js +0 -154
  130. package/dist/jsx/MenuPredefined.js.map +0 -6
  131. package/dist/jsx/createBaseMenu.js +0 -838
  132. package/dist/jsx/createBaseMenu.js.map +0 -6
  133. package/dist/jsx/createNativeMenu/createNativeMenu.js +0 -156
  134. package/dist/jsx/createNativeMenu/createNativeMenu.js.map +0 -6
  135. package/dist/jsx/createNativeMenu/createNativeMenuTypes.js +0 -1
  136. package/dist/jsx/createNativeMenu/createNativeMenuTypes.js.map +0 -6
  137. package/dist/jsx/createNativeMenu/index.js +0 -3
  138. package/dist/jsx/createNativeMenu/index.js.map +0 -6
  139. package/dist/jsx/createNativeMenu/index.mjs +0 -3
  140. package/dist/jsx/createNativeMenu/index.mjs.map +0 -1
  141. package/dist/jsx/createNativeMenu/index.native.js +0 -22
  142. package/dist/jsx/createNativeMenu/index.native.js.map +0 -1
  143. package/dist/jsx/createNativeMenu/utils.js +0 -47
  144. package/dist/jsx/createNativeMenu/utils.js.map +0 -6
  145. package/dist/jsx/createNativeMenu/withNativeMenu.js +0 -15
  146. package/dist/jsx/createNativeMenu/withNativeMenu.js.map +0 -6
  147. package/src/createNativeMenu/index.tsx +0 -7
  148. package/types/createNativeMenu/index.d.ts +0 -4
  149. package/types/createNativeMenu/index.d.ts.map +0 -1
@@ -4,291 +4,413 @@ 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;
193
- }
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) {
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
+ var result = [];
165
+ import_react.default.Children.forEach(children, function (child) {
166
+ var _child_type;
167
+ if (! /* @__PURE__ */import_react.default.isValidElement(child)) {
168
+ result.push(child);
169
+ return;
170
+ }
171
+ var displayName = ((_child_type = child.type) === null || _child_type === void 0 ? void 0 : _child_type.displayName) || "";
172
+ var props = child.props;
173
+ if (isPortalLike(displayName)) {
174
+ var inner = transformChildren(menu, map, props.children, false, triggerBoundaryHandlers);
175
+ import_react.default.Children.forEach(inner, function (c) {
176
+ return result.push(c);
177
+ });
178
+ return;
179
+ }
180
+ if (displayName.includes("ScrollView")) {
181
+ var inner1 = transformChildren(menu, map, props.children, false, triggerBoundaryHandlers);
182
+ import_react.default.Children.forEach(inner1, function (c) {
183
+ return result.push(c);
184
+ });
185
+ return;
186
+ }
187
+ if (isTriggerLike(displayName)) {
188
+ var debugName = getTriggerDebugName(MenuType, props);
189
+ var claim = function () {
190
+ return triggerBoundaryHandlers === null || triggerBoundaryHandlers === void 0 ? void 0 : triggerBoundaryHandlers.claim(debugName);
191
+ };
192
+ var release = function () {
193
+ return triggerBoundaryHandlers === null || triggerBoundaryHandlers === void 0 ? void 0 : triggerBoundaryHandlers.release(debugName);
194
+ };
195
+ result.push(/* @__PURE__ */import_react.default.cloneElement(child, {
196
+ onTouchStart: composeHandlers(claim, props.onTouchStart),
197
+ onTouchEnd: composeHandlers(props.onTouchEnd, release),
198
+ onTouchCancel: composeHandlers(props.onTouchCancel, release),
199
+ onResponderGrant: composeHandlers(claim, props.onResponderGrant),
200
+ onResponderRelease: composeHandlers(props.onResponderRelease, release),
201
+ onResponderTerminate: composeHandlers(props.onResponderTerminate, release),
202
+ onPressIn: composeHandlers(claim, props.onPressIn),
203
+ onPressOut: composeHandlers(props.onPressOut, release)
204
+ }));
205
+ return;
206
+ }
207
+ var componentType = getComponentType(displayName);
208
+ if (componentType === "CheckboxItem") {
212
209
  var {
213
- children
214
- } = param;
215
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
216
- children
210
+ checked,
211
+ onCheckedChange,
212
+ value,
213
+ onValueChange,
214
+ children: cbChildren,
215
+ ...rest
216
+ } = props;
217
+ var finalValue = value !== null && value !== void 0 ? value : checked ? "on" : "off";
218
+ var finalOnValueChange = onValueChange !== null && onValueChange !== void 0 ? onValueChange : onCheckedChange && function (v) {
219
+ return onCheckedChange(v === "on");
220
+ };
221
+ var cleanChildren = import_react.default.Children.map(cbChildren, function (c) {
222
+ var _c_type;
223
+ if (! /* @__PURE__ */import_react.default.isValidElement(c)) return c;
224
+ var dn = ((_c_type = c.type) === null || _c_type === void 0 ? void 0 : _c_type.displayName) || "";
225
+ if (dn.includes("ItemIndicator")) return null;
226
+ return c;
217
227
  });
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;
228
+ result.push(/* @__PURE__ */import_react.default.createElement(menu.CheckboxItem, {
229
+ ...rest,
230
+ key: child.key,
231
+ value: finalValue,
232
+ onValueChange: finalOnValueChange
233
+ }, cleanChildren));
234
+ return;
235
+ }
236
+ if (componentType) {
237
+ var {
238
+ children: childChildren,
239
+ ...restProps
240
+ } = props;
241
+ var isContainer = CONTAINER_TYPES.includes(componentType);
242
+ var shouldReverse = componentType === "Content" || componentType === "SubContent";
243
+ result.push(/* @__PURE__ */import_react.default.createElement(map[componentType], {
244
+ ...restProps,
245
+ key: child.key
246
+ }, isContainer ? transformChildren(menu, map, childChildren, shouldReverse, triggerBoundaryHandlers) : childChildren));
247
+ return;
248
+ }
249
+ if (isItemLike(props, displayName)) {
250
+ var {
251
+ children: itemChildren,
252
+ ...itemProps
253
+ } = props;
254
+ result.push(/* @__PURE__ */import_react.default.createElement(menu.Item, {
255
+ ...itemProps,
256
+ key: child.key
257
+ }, itemChildren));
258
+ return;
259
+ }
260
+ result.push(child);
261
+ });
262
+ if (import_web.isIos && shouldReverseOnIos && !isContextMenu) {
263
+ result.reverse();
264
+ }
265
+ return result;
266
+ }
267
+ function lazyZeego(name, displayName) {
268
+ var Comp = function (props) {
269
+ var z = resolve();
270
+ if (!z) return null;
271
+ return /* @__PURE__ */import_react.default.createElement(z.menu[name], props);
252
272
  };
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
- });
273
+ Comp.displayName = displayName || name;
274
+ return Comp;
275
+ }
276
+ var Trigger = lazyZeego("Trigger");
277
+ var Content = lazyZeego("Content");
278
+ var Item = lazyZeego("Item");
279
+ var ItemTitle = lazyZeego("ItemTitle");
280
+ var ItemSubtitle = lazyZeego("ItemSubtitle");
281
+ var ItemIcon = lazyZeego("ItemIcon");
282
+ var ItemImage = lazyZeego("ItemImage");
283
+ var ItemIndicator = lazyZeego("ItemIndicator");
284
+ var Group = lazyZeego("Group");
285
+ var Label = lazyZeego("Label");
286
+ var Separator = lazyZeego("Separator");
287
+ var Sub = lazyZeego("Sub");
288
+ var SubTrigger = lazyZeego("SubTrigger");
289
+ var SubContent = lazyZeego("SubContent");
290
+ var Portal = function (param) {
291
+ var {
292
+ children
293
+ } = param;
294
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
295
+ children
296
+ });
297
+ };
298
+ Portal.displayName = "Portal";
299
+ var Arrow = function () {
300
+ return null;
301
+ };
302
+ Arrow.displayName = "Arrow";
303
+ var RadioGroup = function (param) {
304
+ var {
305
+ children
306
+ } = param;
307
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
308
+ children
309
+ });
310
+ };
311
+ RadioGroup.displayName = `${MenuType}RadioGroup`;
312
+ var RadioItem = function (param) {
313
+ var {
314
+ children
315
+ } = param;
316
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
317
+ children
318
+ });
319
+ };
320
+ RadioItem.displayName = `${MenuType}RadioItem`;
321
+ var CheckboxItem = function () {
322
+ return null;
323
+ };
324
+ CheckboxItem.displayName = "CheckboxItem";
325
+ var Preview = isContextMenu ? lazyZeego("Preview", `${MenuType}Preview`) : function () {
326
+ return null;
327
+ };
328
+ Preview.displayName = `${MenuType}Preview`;
329
+ var Auxiliary = isContextMenu ? lazyZeego("Auxiliary", `${MenuType}Auxiliary`) : function () {
330
+ return null;
331
+ };
332
+ Auxiliary.displayName = `${MenuType}Auxiliary`;
333
+ var Menu = function (param) {
334
+ var {
335
+ children,
336
+ onOpenChange,
337
+ onOpenWillChange
338
+ } = param;
339
+ var triggerOwnerRef = import_react.default.useRef(null);
340
+ var claimTriggerBoundary = import_react.default.useCallback(function (debugName) {
341
+ if (triggerOwnerRef.current) {
342
+ (0, import_native.unstable_releaseExternalPressOwnership)(triggerOwnerRef.current, debugName);
343
+ }
344
+ triggerOwnerRef.current = (0, import_native.unstable_claimExternalPressOwnership)(debugName);
345
+ }, []);
346
+ var releaseTriggerBoundary = import_react.default.useCallback(function (debugName) {
347
+ if (!triggerOwnerRef.current) return;
348
+ (0, import_native.unstable_releaseExternalPressOwnership)(triggerOwnerRef.current, debugName);
349
+ triggerOwnerRef.current = null;
350
+ }, []);
351
+ import_react.default.useEffect(function () {
352
+ return releaseTriggerBoundary;
353
+ }, [releaseTriggerBoundary]);
354
+ var z = resolve();
355
+ if (!z) return null;
356
+ var handleOpenChange = import_react.default.useCallback(function (isOpen) {
357
+ if (!isOpen) {
358
+ releaseTriggerBoundary();
359
+ }
360
+ onOpenChange === null || onOpenChange === void 0 ? void 0 : onOpenChange(isOpen);
361
+ }, [onOpenChange, releaseTriggerBoundary]);
362
+ var handleOpenWillChange = import_react.default.useCallback(function (willOpen) {
363
+ if (!willOpen) {
364
+ releaseTriggerBoundary();
365
+ }
366
+ onOpenWillChange === null || onOpenWillChange === void 0 ? void 0 : onOpenWillChange(willOpen);
367
+ }, [onOpenWillChange, releaseTriggerBoundary]);
368
+ var rootProps = {
369
+ onOpenChange: handleOpenChange
267
370
  };
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
371
+ if (isContextMenu && onOpenWillChange) {
372
+ rootProps.onOpenWillChange = handleOpenWillChange;
373
+ }
374
+ var content = /* @__PURE__ */(0, import_jsx_runtime.jsx)(z.menu.Root, {
375
+ ...rootProps,
376
+ children: transformChildren(z.menu, z.componentMap, children, false, {
377
+ claim: claimTriggerBoundary,
378
+ release: releaseTriggerBoundary
291
379
  })
292
- };
380
+ });
381
+ if (isAndroid) {
382
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_native.NativeMenuContext.Provider, {
383
+ value: true,
384
+ children: content
385
+ });
386
+ }
387
+ return content;
388
+ };
389
+ Menu.displayName = MenuType;
390
+ return {
391
+ Menu: (0, import_web.withStaticProperties)(Menu, {
392
+ Trigger,
393
+ Content,
394
+ Item,
395
+ ItemTitle,
396
+ ItemSubtitle,
397
+ ItemIcon,
398
+ ItemImage,
399
+ ItemIndicator,
400
+ Group,
401
+ Label,
402
+ Separator,
403
+ Sub,
404
+ SubTrigger,
405
+ SubContent,
406
+ CheckboxItem,
407
+ Portal,
408
+ RadioGroup,
409
+ RadioItem,
410
+ Arrow,
411
+ Preview,
412
+ Auxiliary
413
+ })
293
414
  };
415
+ };
294
416
  //# sourceMappingURL=createNativeMenu.native.js.map