@tamagui/native 2.7.7 → 3.0.0-beta.637.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.
- package/dist/cjs/PressBoundary.cjs +53 -71
- package/dist/cjs/PressBoundary.native.cjs +86 -0
- package/dist/cjs/PressBoundary.native.js +63 -80
- package/dist/cjs/PressBoundary.native.js.map +1 -1
- package/dist/cjs/burntState.cjs +29 -32
- package/dist/cjs/burntState.native.cjs +45 -0
- package/dist/cjs/burntState.native.js +29 -31
- package/dist/cjs/burntState.native.js.map +1 -1
- package/dist/cjs/components.cjs +35 -55
- package/dist/cjs/components.native.cjs +56 -0
- package/dist/cjs/components.native.js +35 -54
- package/dist/cjs/components.native.js.map +1 -1
- package/dist/cjs/expoUIMenuAdapter.cjs +240 -254
- package/dist/cjs/expoUIMenuAdapter.native.cjs +315 -0
- package/dist/cjs/expoUIMenuAdapter.native.js +285 -303
- package/dist/cjs/expoUIMenuAdapter.native.js.map +1 -1
- package/dist/cjs/gesture-handler.cjs +21 -22
- package/dist/cjs/gesture-handler.native.cjs +38 -0
- package/dist/cjs/gesture-handler.native.js +21 -21
- package/dist/cjs/gesture-handler.native.js.map +1 -1
- package/dist/cjs/gestureState.cjs +202 -207
- package/dist/cjs/gestureState.native.cjs +262 -0
- package/dist/cjs/gestureState.native.js +215 -219
- package/dist/cjs/gestureState.native.js.map +1 -1
- package/dist/cjs/globalState.cjs +31 -34
- package/dist/cjs/globalState.native.cjs +44 -0
- package/dist/cjs/globalState.native.js +31 -33
- package/dist/cjs/globalState.native.js.map +1 -1
- package/dist/cjs/index.cjs +34 -34
- package/dist/cjs/index.native.cjs +59 -0
- package/dist/cjs/index.native.js +34 -33
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboardControllerState.cjs +28 -29
- package/dist/cjs/keyboardControllerState.native.cjs +50 -0
- package/dist/cjs/keyboardControllerState.native.js +28 -28
- package/dist/cjs/keyboardControllerState.native.js.map +1 -1
- package/dist/cjs/linearGradientState.cjs +28 -31
- package/dist/cjs/linearGradientState.native.cjs +44 -0
- package/dist/cjs/linearGradientState.native.js +28 -30
- package/dist/cjs/linearGradientState.native.js.map +1 -1
- package/dist/cjs/nativeMenuContext.cjs +15 -18
- package/dist/cjs/nativeMenuContext.native.cjs +28 -0
- package/dist/cjs/nativeMenuContext.native.js +15 -17
- package/dist/cjs/nativeMenuContext.native.js.map +1 -1
- package/dist/cjs/nativeMenuState.cjs +27 -28
- package/dist/cjs/nativeMenuState.native.cjs +47 -0
- package/dist/cjs/nativeMenuState.native.js +27 -27
- package/dist/cjs/nativeMenuState.native.js.map +1 -1
- package/dist/cjs/portalState.cjs +28 -31
- package/dist/cjs/portalState.native.cjs +44 -0
- package/dist/cjs/portalState.native.js +28 -30
- package/dist/cjs/portalState.native.js.map +1 -1
- package/dist/cjs/safeAreaState.cjs +77 -53
- package/dist/cjs/safeAreaState.native.cjs +101 -0
- package/dist/cjs/safeAreaState.native.js +79 -52
- package/dist/cjs/safeAreaState.native.js.map +1 -1
- package/dist/cjs/setup-burnt.cjs +15 -14
- package/dist/cjs/setup-burnt.native.cjs +20 -0
- package/dist/cjs/setup-burnt.native.js +15 -13
- package/dist/cjs/setup-burnt.native.js.map +1 -1
- package/dist/cjs/setup-expo-linear-gradient.cjs +14 -13
- package/dist/cjs/setup-expo-linear-gradient.native.cjs +19 -0
- package/dist/cjs/setup-expo-linear-gradient.native.js +14 -12
- package/dist/cjs/setup-expo-linear-gradient.native.js.map +1 -1
- package/dist/cjs/setup-expo-ui-menu.cjs +12 -13
- package/dist/cjs/setup-expo-ui-menu.native.cjs +18 -0
- package/dist/cjs/setup-expo-ui-menu.native.js +12 -12
- package/dist/cjs/setup-expo-ui-menu.native.js.map +1 -1
- package/dist/cjs/setup-gesture-handler.cjs +51 -57
- package/dist/cjs/setup-gesture-handler.native.cjs +72 -0
- package/dist/cjs/setup-gesture-handler.native.js +51 -56
- package/dist/cjs/setup-gesture-handler.native.js.map +1 -1
- package/dist/cjs/setup-keyboard-controller.native.cjs +28 -0
- package/dist/cjs/setup-keyboard-controller.native.js +23 -29
- package/dist/cjs/setup-keyboard-controller.native.js.map +1 -1
- package/dist/cjs/setup-safe-area.cjs +17 -3
- package/dist/cjs/setup-safe-area.native.cjs +28 -0
- package/dist/cjs/setup-safe-area.native.js +23 -16
- package/dist/cjs/setup-safe-area.native.js.map +1 -1
- package/dist/cjs/setup-teleport.cjs +16 -15
- package/dist/cjs/setup-teleport.native.cjs +21 -0
- package/dist/cjs/setup-teleport.native.js +16 -14
- package/dist/cjs/setup-teleport.native.js.map +1 -1
- package/dist/cjs/setup-worklets.cjs +19 -18
- package/dist/cjs/setup-worklets.native.cjs +24 -0
- package/dist/cjs/setup-worklets.native.js +19 -17
- package/dist/cjs/setup-worklets.native.js.map +1 -1
- package/dist/cjs/setup-zeego.cjs +18 -17
- package/dist/cjs/setup-zeego.native.cjs +23 -0
- package/dist/cjs/setup-zeego.native.js +18 -16
- package/dist/cjs/setup-zeego.native.js.map +1 -1
- package/dist/cjs/types.cjs +10 -11
- package/dist/cjs/types.native.cjs +19 -0
- package/dist/cjs/types.native.js +10 -10
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/workletsState.cjs +31 -34
- package/dist/cjs/workletsState.native.cjs +47 -0
- package/dist/cjs/workletsState.native.js +31 -33
- package/dist/cjs/workletsState.native.js.map +1 -1
- package/dist/esm/PressBoundary.mjs +37 -45
- package/dist/esm/PressBoundary.mjs.map +1 -1
- package/dist/esm/PressBoundary.native.js +48 -56
- package/dist/esm/PressBoundary.native.js.map +1 -1
- package/dist/esm/burntState.mjs +16 -14
- package/dist/esm/burntState.mjs.map +1 -1
- package/dist/esm/burntState.native.js +16 -14
- package/dist/esm/burntState.native.js.map +1 -1
- package/dist/esm/components.mjs +20 -37
- package/dist/esm/components.mjs.map +1 -1
- package/dist/esm/components.native.js +21 -38
- package/dist/esm/components.native.js.map +1 -1
- package/dist/esm/expoUIMenuAdapter.mjs +224 -228
- package/dist/esm/expoUIMenuAdapter.mjs.map +1 -1
- package/dist/esm/expoUIMenuAdapter.native.js +270 -279
- package/dist/esm/expoUIMenuAdapter.native.js.map +1 -1
- package/dist/esm/gesture-handler.mjs +3 -4
- package/dist/esm/gesture-handler.native.js +3 -4
- package/dist/esm/gestureState.mjs +185 -187
- package/dist/esm/gestureState.mjs.map +1 -1
- package/dist/esm/gestureState.native.js +198 -200
- package/dist/esm/gestureState.native.js.map +1 -1
- package/dist/esm/globalState.mjs +17 -16
- package/dist/esm/globalState.mjs.map +1 -1
- package/dist/esm/globalState.native.js +17 -16
- package/dist/esm/globalState.native.js.map +1 -1
- package/dist/esm/index.js +5 -6
- package/dist/esm/index.mjs +5 -6
- package/dist/esm/index.native.js +5 -6
- package/dist/esm/keyboardControllerState.mjs +13 -11
- package/dist/esm/keyboardControllerState.mjs.map +1 -1
- package/dist/esm/keyboardControllerState.native.js +13 -11
- package/dist/esm/keyboardControllerState.native.js.map +1 -1
- package/dist/esm/linearGradientState.mjs +15 -13
- package/dist/esm/linearGradientState.mjs.map +1 -1
- package/dist/esm/linearGradientState.native.js +15 -13
- package/dist/esm/linearGradientState.native.js.map +1 -1
- package/dist/esm/nativeMenuContext.mjs +2 -0
- package/dist/esm/nativeMenuContext.mjs.map +1 -1
- package/dist/esm/nativeMenuContext.native.js +2 -0
- package/dist/esm/nativeMenuContext.native.js.map +1 -1
- package/dist/esm/nativeMenuState.mjs +13 -11
- package/dist/esm/nativeMenuState.mjs.map +1 -1
- package/dist/esm/nativeMenuState.native.js +13 -11
- package/dist/esm/nativeMenuState.native.js.map +1 -1
- package/dist/esm/portalState.mjs +15 -13
- package/dist/esm/portalState.mjs.map +1 -1
- package/dist/esm/portalState.native.js +15 -13
- package/dist/esm/portalState.native.js.map +1 -1
- package/dist/esm/safeAreaState.mjs +64 -38
- package/dist/esm/safeAreaState.mjs.map +1 -1
- package/dist/esm/safeAreaState.native.js +66 -38
- package/dist/esm/safeAreaState.native.js.map +1 -1
- package/dist/esm/setup-burnt.mjs +20 -13
- package/dist/esm/setup-burnt.mjs.map +1 -1
- package/dist/esm/setup-burnt.native.js +20 -13
- package/dist/esm/setup-burnt.native.js.map +1 -1
- package/dist/esm/setup-expo-linear-gradient.mjs +19 -12
- package/dist/esm/setup-expo-linear-gradient.mjs.map +1 -1
- package/dist/esm/setup-expo-linear-gradient.native.js +19 -12
- package/dist/esm/setup-expo-linear-gradient.native.js.map +1 -1
- package/dist/esm/setup-expo-ui-menu.mjs +17 -12
- package/dist/esm/setup-expo-ui-menu.mjs.map +1 -1
- package/dist/esm/setup-expo-ui-menu.native.js +17 -12
- package/dist/esm/setup-expo-ui-menu.native.js.map +1 -1
- package/dist/esm/setup-gesture-handler.mjs +42 -40
- package/dist/esm/setup-gesture-handler.mjs.map +1 -1
- package/dist/esm/setup-gesture-handler.native.js +42 -40
- package/dist/esm/setup-gesture-handler.native.js.map +1 -1
- package/dist/esm/setup-keyboard-controller.mjs +0 -2
- package/dist/esm/setup-keyboard-controller.native.js +28 -29
- package/dist/esm/setup-keyboard-controller.native.js.map +1 -1
- package/dist/esm/setup-safe-area.mjs +0 -4
- package/dist/esm/setup-safe-area.native.js +23 -22
- package/dist/esm/setup-safe-area.native.js.map +1 -1
- package/dist/esm/setup-teleport.mjs +21 -14
- package/dist/esm/setup-teleport.mjs.map +1 -1
- package/dist/esm/setup-teleport.native.js +21 -14
- package/dist/esm/setup-teleport.native.js.map +1 -1
- package/dist/esm/setup-worklets.mjs +24 -17
- package/dist/esm/setup-worklets.mjs.map +1 -1
- package/dist/esm/setup-worklets.native.js +24 -17
- package/dist/esm/setup-worklets.native.js.map +1 -1
- package/dist/esm/setup-zeego.mjs +23 -16
- package/dist/esm/setup-zeego.mjs.map +1 -1
- package/dist/esm/setup-zeego.native.js +23 -16
- package/dist/esm/setup-zeego.native.js.map +1 -1
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/types.native.js +0 -2
- package/dist/esm/workletsState.mjs +18 -16
- package/dist/esm/workletsState.mjs.map +1 -1
- package/dist/esm/workletsState.native.js +18 -16
- package/dist/esm/workletsState.native.js.map +1 -1
- package/package.json +84 -7
- package/src/PressBoundary.tsx +48 -45
- package/src/expoUIMenuAdapter.tsx +1 -2
- package/src/gestureState.ts +2 -2
- package/src/index.ts +1 -1
- package/src/safeAreaState.ts +59 -27
- package/src/setup-safe-area.ts +27 -22
- package/src/setup-safe-area.web.ts +2 -0
- package/src/types.ts +1 -0
- package/types/PressBoundary.d.ts +3 -1
- package/types/PressBoundary.d.ts.map +2 -2
- package/types/expoUIMenuAdapter.d.ts.map +2 -2
- package/types/gestureState.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +2 -2
- package/types/safeAreaState.d.ts +5 -2
- package/types/safeAreaState.d.ts.map +2 -2
- package/types/setup-safe-area.d.ts.map +1 -1
- package/types/setup-safe-area.web.d.ts +3 -0
- package/types/setup-safe-area.web.d.ts.map +11 -0
- package/types/types.d.ts +1 -0
- package/types/types.d.ts.map +2 -2
- package/.turbo/turbo-build.log +0 -2
- package/dist/esm/gesture-handler.mjs.map +0 -1
- package/dist/esm/gesture-handler.native.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/setup-keyboard-controller.mjs.map +0 -1
- package/dist/esm/setup-safe-area.mjs.map +0 -1
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/types.native.js.map +0 -1
- package/tsconfig.json +0 -12
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -5,275 +6,260 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
5
6
|
var __getProtoOf = Object.getPrototypeOf;
|
|
6
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
8
|
var __export = (target, all) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
for (var name in all) __defProp(target, name, {
|
|
10
|
+
get: all[name],
|
|
11
|
+
enumerable: true
|
|
12
|
+
});
|
|
12
13
|
};
|
|
13
14
|
var __copyProps = (to, from, except, desc) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
17
|
+
get: () => from[key],
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
21
22
|
};
|
|
22
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
-
|
|
24
|
-
|
|
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: true
|
|
23
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
24
|
+
value: mod,
|
|
25
|
+
enumerable: true
|
|
30
26
|
}) : target, mod));
|
|
31
|
-
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
-
value: true
|
|
33
|
-
}), mod);
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
34
28
|
var expoUIMenuAdapter_exports = {};
|
|
35
|
-
__export(expoUIMenuAdapter_exports, {
|
|
36
|
-
createExpoUIMenuAdapter: () => createExpoUIMenuAdapter
|
|
37
|
-
});
|
|
29
|
+
__export(expoUIMenuAdapter_exports, { createExpoUIMenuAdapter: () => createExpoUIMenuAdapter });
|
|
38
30
|
module.exports = __toCommonJS(expoUIMenuAdapter_exports);
|
|
39
31
|
var import_react = __toESM(require("react"), 1);
|
|
40
32
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
41
33
|
function marker(name) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
34
|
+
const Marker = () => null;
|
|
35
|
+
Marker.displayName = `ExpoUI${name}`;
|
|
36
|
+
return Marker;
|
|
45
37
|
}
|
|
46
38
|
function isMarkerType(candidate, type) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
39
|
+
if (candidate === type) return true;
|
|
40
|
+
const wanted = type.displayName;
|
|
41
|
+
if (!wanted) return false;
|
|
42
|
+
return typeof candidate === "function" && candidate.displayName === wanted;
|
|
51
43
|
}
|
|
52
44
|
function elementOfType(children, type) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
45
|
+
for (const child of import_react.default.Children.toArray(children)) {
|
|
46
|
+
if (import_react.default.isValidElement(child) && isMarkerType(child.type, type)) {
|
|
47
|
+
return child;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
59
51
|
}
|
|
60
|
-
const warnedUnsupported = /* @__PURE__ */new Set();
|
|
52
|
+
const warnedUnsupported = /* @__PURE__ */ new Set();
|
|
61
53
|
function warnUnsupported(feature) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
54
|
+
if (warnedUnsupported.has(feature) || process.env.NODE_ENV === "production") {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
warnedUnsupported.add(feature);
|
|
58
|
+
console.warn(`[Tamagui] @expo/ui/community/menu does not support ${feature}, so it will not render. Register a different native menu adapter if you need it.`);
|
|
67
59
|
}
|
|
68
60
|
function textFromNode(node) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
61
|
+
if (typeof node === "string" || typeof node === "number") return String(node);
|
|
62
|
+
if (!import_react.default.isValidElement(node)) return "";
|
|
63
|
+
return import_react.default.Children.toArray(node.props.children).map(textFromNode).join("");
|
|
64
|
+
}
|
|
65
|
+
function createExpoUIMenuAdapter({ MenuView }) {
|
|
66
|
+
const NativeMenuView = MenuView;
|
|
67
|
+
function createModule(isContextMenu) {
|
|
68
|
+
const Trigger = marker("Trigger");
|
|
69
|
+
const Content = marker("Content");
|
|
70
|
+
const Item = marker("Item");
|
|
71
|
+
const ItemTitle = marker("ItemTitle");
|
|
72
|
+
const ItemSubtitle = marker("ItemSubtitle");
|
|
73
|
+
const ItemIcon = marker("ItemIcon");
|
|
74
|
+
const ItemImage = marker("ItemImage");
|
|
75
|
+
const ItemIndicator = marker("ItemIndicator");
|
|
76
|
+
const Group = marker("Group");
|
|
77
|
+
const Label = marker("Label");
|
|
78
|
+
const Separator = marker("Separator");
|
|
79
|
+
const Sub = marker("Sub");
|
|
80
|
+
const SubTrigger = marker("SubTrigger");
|
|
81
|
+
const SubContent = marker("SubContent");
|
|
82
|
+
const CheckboxItem = marker("CheckboxItem");
|
|
83
|
+
const Preview = marker("Preview");
|
|
84
|
+
const Auxiliary = marker("Auxiliary");
|
|
85
|
+
function Root({ children, onOpenChange, onOpenWillChange }) {
|
|
86
|
+
const trigger = elementOfType(children, Trigger);
|
|
87
|
+
const content = elementOfType(children, Content);
|
|
88
|
+
const preview = elementOfType(children, Preview);
|
|
89
|
+
const auxiliary = elementOfType(children, Auxiliary);
|
|
90
|
+
if (preview || auxiliary) {
|
|
91
|
+
warnUnsupported("context-menu previews or auxiliary views");
|
|
92
|
+
}
|
|
93
|
+
if (!trigger || !content) {
|
|
94
|
+
throw new Error("Tamagui native menus require one Trigger and one Content");
|
|
95
|
+
}
|
|
96
|
+
let nextId = 0;
|
|
97
|
+
const handlers = /* @__PURE__ */ new Map();
|
|
98
|
+
function actionId(element) {
|
|
99
|
+
return element.key == null ? `tamagui-menu-${nextId++}` : String(element.key).replace(/^\.\$/, "");
|
|
100
|
+
}
|
|
101
|
+
function itemTitle(element) {
|
|
102
|
+
if (typeof element.props.textValue === "string") return element.props.textValue;
|
|
103
|
+
const title = elementOfType(element.props.children, ItemTitle);
|
|
104
|
+
return title ? textFromNode(title.props.children) : "";
|
|
105
|
+
}
|
|
106
|
+
function actionImage(element) {
|
|
107
|
+
const image = elementOfType(element.props.children, ItemImage);
|
|
108
|
+
if (image?.props.source) return image.props.source;
|
|
109
|
+
const icon = elementOfType(element.props.children, ItemIcon);
|
|
110
|
+
if (!icon) return void 0;
|
|
111
|
+
const ios = icon.props.ios;
|
|
112
|
+
if (typeof ios === "object" && ios && "name" in ios && typeof ios.name === "string") {
|
|
113
|
+
return ios.name;
|
|
114
|
+
}
|
|
115
|
+
return typeof icon.props.iosIconName === "string" ? icon.props.iosIconName : void 0;
|
|
116
|
+
}
|
|
117
|
+
function attributes(element) {
|
|
118
|
+
const destructive = element.props.destructive === true;
|
|
119
|
+
const disabled = element.props.disabled === true;
|
|
120
|
+
const hidden = element.props.hidden === true;
|
|
121
|
+
return destructive || disabled || hidden ? {
|
|
122
|
+
destructive,
|
|
123
|
+
disabled,
|
|
124
|
+
hidden
|
|
125
|
+
} : void 0;
|
|
126
|
+
}
|
|
127
|
+
function actionsFrom(childrenToParse) {
|
|
128
|
+
const actions = [];
|
|
129
|
+
let section = null;
|
|
130
|
+
function append(action) {
|
|
131
|
+
if (section) {
|
|
132
|
+
section.push(action);
|
|
133
|
+
} else {
|
|
134
|
+
actions.push(action);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function flushSection() {
|
|
138
|
+
if (!section?.length) {
|
|
139
|
+
section = [];
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
actions.push({
|
|
143
|
+
id: `tamagui-menu-section-${nextId++}`,
|
|
144
|
+
title: "",
|
|
145
|
+
subactions: section,
|
|
146
|
+
displayInline: true
|
|
147
|
+
});
|
|
148
|
+
section = [];
|
|
149
|
+
}
|
|
150
|
+
for (const child of import_react.default.Children.toArray(childrenToParse)) {
|
|
151
|
+
if (!import_react.default.isValidElement(child)) continue;
|
|
152
|
+
if (isMarkerType(child.type, Separator)) {
|
|
153
|
+
if (!section) section = actions.splice(0);
|
|
154
|
+
flushSection();
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (isMarkerType(child.type, Group)) {
|
|
158
|
+
const label2 = elementOfType(child.props.children, Label);
|
|
159
|
+
append({
|
|
160
|
+
id: actionId(child),
|
|
161
|
+
title: label2 ? textFromNode(label2.props.children) : "",
|
|
162
|
+
subactions: actionsFrom(child.props.children),
|
|
163
|
+
displayInline: true
|
|
164
|
+
});
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (isMarkerType(child.type, Sub)) {
|
|
168
|
+
const subTrigger = elementOfType(child.props.children, SubTrigger);
|
|
169
|
+
const subContent = elementOfType(child.props.children, SubContent);
|
|
170
|
+
if (!subTrigger || !subContent) {
|
|
171
|
+
throw new Error("Tamagui native submenus require one SubTrigger and SubContent");
|
|
172
|
+
}
|
|
173
|
+
append({
|
|
174
|
+
id: actionId(child),
|
|
175
|
+
title: itemTitle(subTrigger),
|
|
176
|
+
image: actionImage(subTrigger),
|
|
177
|
+
attributes: attributes(subTrigger),
|
|
178
|
+
subactions: actionsFrom(subContent.props.children)
|
|
179
|
+
});
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (!isMarkerType(child.type, Item) && !isMarkerType(child.type, CheckboxItem)) continue;
|
|
183
|
+
if (elementOfType(child.props.children, ItemSubtitle)) {
|
|
184
|
+
warnUnsupported("menu item subtitles");
|
|
185
|
+
}
|
|
186
|
+
const id = actionId(child);
|
|
187
|
+
if (isMarkerType(child.type, CheckboxItem)) {
|
|
188
|
+
const current = child.props.value === true || child.props.value === "on" || child.props.checked === true;
|
|
189
|
+
const onValueChange = child.props.onValueChange;
|
|
190
|
+
const onCheckedChange = child.props.onCheckedChange;
|
|
191
|
+
handlers.set(id, () => {
|
|
192
|
+
if (typeof onValueChange === "function") {
|
|
193
|
+
onValueChange(current ? "off" : "on", current ? "on" : "off");
|
|
194
|
+
} else if (typeof onCheckedChange === "function") {
|
|
195
|
+
onCheckedChange(!current);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
append({
|
|
199
|
+
id,
|
|
200
|
+
title: itemTitle(child),
|
|
201
|
+
image: actionImage(child),
|
|
202
|
+
state: current ? "on" : "off",
|
|
203
|
+
attributes: attributes(child)
|
|
204
|
+
});
|
|
205
|
+
continue;
|
|
206
|
+
}
|
|
207
|
+
const onSelect = child.props.onSelect;
|
|
208
|
+
if (typeof onSelect === "function") {
|
|
209
|
+
handlers.set(id, () => onSelect());
|
|
210
|
+
}
|
|
211
|
+
append({
|
|
212
|
+
id,
|
|
213
|
+
title: itemTitle(child),
|
|
214
|
+
image: actionImage(child),
|
|
215
|
+
attributes: attributes(child)
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
if (section) flushSection();
|
|
219
|
+
return actions;
|
|
220
|
+
}
|
|
221
|
+
const label = elementOfType(content.props.children, Label);
|
|
222
|
+
const triggerAction = trigger.props.action;
|
|
223
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NativeMenuView, {
|
|
224
|
+
actions: actionsFrom(content.props.children),
|
|
225
|
+
title: label ? textFromNode(label.props.children) : void 0,
|
|
226
|
+
shouldOpenOnLongPress: triggerAction === "longPress" || triggerAction !== "press" && isContextMenu,
|
|
227
|
+
onPressAction: (event) => handlers.get(event.nativeEvent.event)?.(),
|
|
228
|
+
onOpenMenu: () => {
|
|
229
|
+
onOpenWillChange?.(true);
|
|
230
|
+
onOpenChange?.(true);
|
|
231
|
+
},
|
|
232
|
+
onCloseMenu: () => {
|
|
233
|
+
onOpenWillChange?.(false);
|
|
234
|
+
onOpenChange?.(false);
|
|
235
|
+
},
|
|
236
|
+
children: trigger.props.children
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
Root,
|
|
241
|
+
Trigger,
|
|
242
|
+
Content,
|
|
243
|
+
Item,
|
|
244
|
+
ItemTitle,
|
|
245
|
+
ItemSubtitle,
|
|
246
|
+
ItemIcon,
|
|
247
|
+
ItemImage,
|
|
248
|
+
ItemIndicator,
|
|
249
|
+
Group,
|
|
250
|
+
Label,
|
|
251
|
+
Separator,
|
|
252
|
+
Sub,
|
|
253
|
+
SubTrigger,
|
|
254
|
+
SubContent,
|
|
255
|
+
CheckboxItem,
|
|
256
|
+
Preview,
|
|
257
|
+
Auxiliary
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
return {
|
|
261
|
+
name: "expo-ui",
|
|
262
|
+
Menu: createModule(false),
|
|
263
|
+
ContextMenu: createModule(true)
|
|
264
|
+
};
|
|
72
265
|
}
|
|
73
|
-
function createExpoUIMenuAdapter({
|
|
74
|
-
MenuView
|
|
75
|
-
}) {
|
|
76
|
-
const NativeMenuView = MenuView;
|
|
77
|
-
function createModule(isContextMenu) {
|
|
78
|
-
const Trigger = marker("Trigger");
|
|
79
|
-
const Content = marker("Content");
|
|
80
|
-
const Item = marker("Item");
|
|
81
|
-
const ItemTitle = marker("ItemTitle");
|
|
82
|
-
const ItemSubtitle = marker("ItemSubtitle");
|
|
83
|
-
const ItemIcon = marker("ItemIcon");
|
|
84
|
-
const ItemImage = marker("ItemImage");
|
|
85
|
-
const ItemIndicator = marker("ItemIndicator");
|
|
86
|
-
const Group = marker("Group");
|
|
87
|
-
const Label = marker("Label");
|
|
88
|
-
const Separator = marker("Separator");
|
|
89
|
-
const Sub = marker("Sub");
|
|
90
|
-
const SubTrigger = marker("SubTrigger");
|
|
91
|
-
const SubContent = marker("SubContent");
|
|
92
|
-
const CheckboxItem = marker("CheckboxItem");
|
|
93
|
-
const Preview = marker("Preview");
|
|
94
|
-
const Auxiliary = marker("Auxiliary");
|
|
95
|
-
function Root({
|
|
96
|
-
children,
|
|
97
|
-
onOpenChange,
|
|
98
|
-
onOpenWillChange
|
|
99
|
-
}) {
|
|
100
|
-
const trigger = elementOfType(children, Trigger);
|
|
101
|
-
const content = elementOfType(children, Content);
|
|
102
|
-
const preview = elementOfType(children, Preview);
|
|
103
|
-
const auxiliary = elementOfType(children, Auxiliary);
|
|
104
|
-
if (preview || auxiliary) {
|
|
105
|
-
warnUnsupported("context-menu previews or auxiliary views");
|
|
106
|
-
}
|
|
107
|
-
if (!trigger || !content) {
|
|
108
|
-
throw new Error("Tamagui native menus require one Trigger and one Content");
|
|
109
|
-
}
|
|
110
|
-
let nextId = 0;
|
|
111
|
-
const handlers = /* @__PURE__ */new Map();
|
|
112
|
-
function actionId(element) {
|
|
113
|
-
return element.key == null ? `tamagui-menu-${nextId++}` : String(element.key).replace(/^\.\$/, "");
|
|
114
|
-
}
|
|
115
|
-
function itemTitle(element) {
|
|
116
|
-
if (typeof element.props.textValue === "string") return element.props.textValue;
|
|
117
|
-
const title = elementOfType(element.props.children, ItemTitle);
|
|
118
|
-
return title ? textFromNode(title.props.children) : "";
|
|
119
|
-
}
|
|
120
|
-
function actionImage(element) {
|
|
121
|
-
const image = elementOfType(element.props.children, ItemImage);
|
|
122
|
-
if (image?.props.source) return image.props.source;
|
|
123
|
-
const icon = elementOfType(element.props.children, ItemIcon);
|
|
124
|
-
if (!icon) return void 0;
|
|
125
|
-
const ios = icon.props.ios;
|
|
126
|
-
if (typeof ios === "object" && ios && "name" in ios && typeof ios.name === "string") {
|
|
127
|
-
return ios.name;
|
|
128
|
-
}
|
|
129
|
-
return typeof icon.props.iosIconName === "string" ? icon.props.iosIconName : void 0;
|
|
130
|
-
}
|
|
131
|
-
function attributes(element) {
|
|
132
|
-
const destructive = element.props.destructive === true;
|
|
133
|
-
const disabled = element.props.disabled === true;
|
|
134
|
-
const hidden = element.props.hidden === true;
|
|
135
|
-
return destructive || disabled || hidden ? {
|
|
136
|
-
destructive,
|
|
137
|
-
disabled,
|
|
138
|
-
hidden
|
|
139
|
-
} : void 0;
|
|
140
|
-
}
|
|
141
|
-
function actionsFrom(childrenToParse) {
|
|
142
|
-
const actions = [];
|
|
143
|
-
let section = null;
|
|
144
|
-
function append(action) {
|
|
145
|
-
if (section) {
|
|
146
|
-
section.push(action);
|
|
147
|
-
} else {
|
|
148
|
-
actions.push(action);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
function flushSection() {
|
|
152
|
-
if (!section?.length) {
|
|
153
|
-
section = [];
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
actions.push({
|
|
157
|
-
id: `tamagui-menu-section-${nextId++}`,
|
|
158
|
-
title: "",
|
|
159
|
-
subactions: section,
|
|
160
|
-
displayInline: true
|
|
161
|
-
});
|
|
162
|
-
section = [];
|
|
163
|
-
}
|
|
164
|
-
for (const child of import_react.default.Children.toArray(childrenToParse)) {
|
|
165
|
-
if (!import_react.default.isValidElement(child)) continue;
|
|
166
|
-
if (isMarkerType(child.type, Separator)) {
|
|
167
|
-
if (!section) section = actions.splice(0);
|
|
168
|
-
flushSection();
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
if (isMarkerType(child.type, Group)) {
|
|
172
|
-
const label2 = elementOfType(child.props.children, Label);
|
|
173
|
-
append({
|
|
174
|
-
id: actionId(child),
|
|
175
|
-
title: label2 ? textFromNode(label2.props.children) : "",
|
|
176
|
-
subactions: actionsFrom(child.props.children),
|
|
177
|
-
displayInline: true
|
|
178
|
-
});
|
|
179
|
-
continue;
|
|
180
|
-
}
|
|
181
|
-
if (isMarkerType(child.type, Sub)) {
|
|
182
|
-
const subTrigger = elementOfType(child.props.children, SubTrigger);
|
|
183
|
-
const subContent = elementOfType(child.props.children, SubContent);
|
|
184
|
-
if (!subTrigger || !subContent) {
|
|
185
|
-
throw new Error("Tamagui native submenus require one SubTrigger and SubContent");
|
|
186
|
-
}
|
|
187
|
-
append({
|
|
188
|
-
id: actionId(child),
|
|
189
|
-
title: itemTitle(subTrigger),
|
|
190
|
-
image: actionImage(subTrigger),
|
|
191
|
-
attributes: attributes(subTrigger),
|
|
192
|
-
subactions: actionsFrom(subContent.props.children)
|
|
193
|
-
});
|
|
194
|
-
continue;
|
|
195
|
-
}
|
|
196
|
-
if (!isMarkerType(child.type, Item) && !isMarkerType(child.type, CheckboxItem)) continue;
|
|
197
|
-
if (elementOfType(child.props.children, ItemSubtitle)) {
|
|
198
|
-
warnUnsupported("menu item subtitles");
|
|
199
|
-
}
|
|
200
|
-
const id = actionId(child);
|
|
201
|
-
if (isMarkerType(child.type, CheckboxItem)) {
|
|
202
|
-
const current = child.props.value === true || child.props.value === "on" || child.props.checked === true;
|
|
203
|
-
const onValueChange = child.props.onValueChange;
|
|
204
|
-
const onCheckedChange = child.props.onCheckedChange;
|
|
205
|
-
handlers.set(id, () => {
|
|
206
|
-
if (typeof onValueChange === "function") {
|
|
207
|
-
onValueChange(current ? "off" : "on", current ? "on" : "off");
|
|
208
|
-
} else if (typeof onCheckedChange === "function") {
|
|
209
|
-
onCheckedChange(!current);
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
append({
|
|
213
|
-
id,
|
|
214
|
-
title: itemTitle(child),
|
|
215
|
-
image: actionImage(child),
|
|
216
|
-
state: current ? "on" : "off",
|
|
217
|
-
attributes: attributes(child)
|
|
218
|
-
});
|
|
219
|
-
continue;
|
|
220
|
-
}
|
|
221
|
-
const onSelect = child.props.onSelect;
|
|
222
|
-
if (typeof onSelect === "function") {
|
|
223
|
-
handlers.set(id, () => onSelect());
|
|
224
|
-
}
|
|
225
|
-
append({
|
|
226
|
-
id,
|
|
227
|
-
title: itemTitle(child),
|
|
228
|
-
image: actionImage(child),
|
|
229
|
-
attributes: attributes(child)
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
if (section) flushSection();
|
|
233
|
-
return actions;
|
|
234
|
-
}
|
|
235
|
-
const label = elementOfType(content.props.children, Label);
|
|
236
|
-
const triggerAction = trigger.props.action;
|
|
237
|
-
return /* @__PURE__ */(0, import_jsx_runtime.jsx)(NativeMenuView, {
|
|
238
|
-
actions: actionsFrom(content.props.children),
|
|
239
|
-
title: label ? textFromNode(label.props.children) : void 0,
|
|
240
|
-
shouldOpenOnLongPress: triggerAction === "longPress" || triggerAction !== "press" && isContextMenu,
|
|
241
|
-
onPressAction: event => handlers.get(event.nativeEvent.event)?.(),
|
|
242
|
-
onOpenMenu: () => {
|
|
243
|
-
onOpenWillChange?.(true);
|
|
244
|
-
onOpenChange?.(true);
|
|
245
|
-
},
|
|
246
|
-
onCloseMenu: () => {
|
|
247
|
-
onOpenWillChange?.(false);
|
|
248
|
-
onOpenChange?.(false);
|
|
249
|
-
},
|
|
250
|
-
children: trigger.props.children
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
return {
|
|
254
|
-
Root,
|
|
255
|
-
Trigger,
|
|
256
|
-
Content,
|
|
257
|
-
Item,
|
|
258
|
-
ItemTitle,
|
|
259
|
-
ItemSubtitle,
|
|
260
|
-
ItemIcon,
|
|
261
|
-
ItemImage,
|
|
262
|
-
ItemIndicator,
|
|
263
|
-
Group,
|
|
264
|
-
Label,
|
|
265
|
-
Separator,
|
|
266
|
-
Sub,
|
|
267
|
-
SubTrigger,
|
|
268
|
-
SubContent,
|
|
269
|
-
CheckboxItem,
|
|
270
|
-
Preview,
|
|
271
|
-
Auxiliary
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
|
-
return {
|
|
275
|
-
name: "expo-ui",
|
|
276
|
-
Menu: createModule(false),
|
|
277
|
-
ContextMenu: createModule(true)
|
|
278
|
-
};
|
|
279
|
-
}
|