zyzz 0.0.22 → 0.0.24
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/README.md +6 -6
- package/dist/babel/NativeJsx.d.ts.map +1 -1
- package/dist/babel/NativeJsx.js +14 -4
- package/dist/babel/NativeJsx.js.map +1 -1
- package/dist/compiler/Graph.js +78 -35
- package/dist/compiler/Graph.js.map +1 -1
- package/dist/compiler/internal/Dynamic.d.ts.map +1 -1
- package/dist/compiler/internal/Dynamic.js +3 -0
- package/dist/compiler/internal/Dynamic.js.map +1 -1
- package/dist/compiler/internal/Expression.js +2 -2
- package/dist/compiler/internal/Expression.js.map +1 -1
- package/dist/compiler/internal/NativeBindings.d.ts.map +1 -1
- package/dist/compiler/internal/NativeBindings.js +1 -0
- package/dist/compiler/internal/NativeBindings.js.map +1 -1
- package/dist/compiler/internal/NativeVars.d.ts.map +1 -1
- package/dist/compiler/internal/NativeVars.js +3 -0
- package/dist/compiler/internal/NativeVars.js.map +1 -1
- package/dist/compiler/internal/Themes.d.ts +2 -0
- package/dist/compiler/internal/Themes.d.ts.map +1 -1
- package/dist/compiler/internal/Themes.js +24 -22
- package/dist/compiler/internal/Themes.js.map +1 -1
- package/dist/internal/Configuration.d.ts.map +1 -1
- package/dist/internal/Configuration.js +2 -1
- package/dist/internal/Configuration.js.map +1 -1
- package/dist/metro/Graph.d.ts.map +1 -1
- package/dist/metro/Graph.js +11 -2
- package/dist/metro/Graph.js.map +1 -1
- package/dist/node/Host.d.ts.map +1 -1
- package/dist/node/Host.js +40 -12
- package/dist/node/Host.js.map +1 -1
- package/dist/react-native/StyleSheet.d.ts +7 -3
- package/dist/react-native/StyleSheet.d.ts.map +1 -1
- package/dist/react-native/StyleSheet.js +8 -0
- package/dist/react-native/StyleSheet.js.map +1 -1
- package/dist/react-native/internal/Device.js +118 -38
- package/dist/react-native/internal/Device.js.map +3 -3
- package/dist/react-native/internal/NativeZyzz.js.map +2 -2
- package/dist/react-native/internal/Scalar.d.ts +16 -0
- package/dist/react-native/internal/Scalar.d.ts.map +1 -1
- package/dist/react-native/internal/Scalar.js +53 -2
- package/dist/react-native/internal/Scalar.js.map +1 -1
- package/dist/react-native/internal/Store.d.ts +4 -0
- package/dist/react-native/internal/Store.d.ts.map +1 -1
- package/dist/react-native/internal/Store.js.map +1 -1
- package/dist/react-native/internal/Styles.d.ts +19 -0
- package/dist/react-native/internal/Styles.d.ts.map +1 -0
- package/dist/react-native/internal/Styles.js +35 -0
- package/dist/react-native/internal/Styles.js.map +1 -0
- package/dist/react-native/internal/Viewport.d.ts +6 -0
- package/dist/react-native/internal/Viewport.d.ts.map +1 -1
- package/dist/react-native/internal/Viewport.js +2 -0
- package/dist/react-native/internal/Viewport.js.map +1 -1
- package/dist/react-native/react.d.ts +44 -16
- package/dist/react-native/react.d.ts.map +1 -1
- package/dist/react-native/react.js +68 -47
- package/dist/react-native/react.js.map +1 -1
- package/dist/runtime/NativeContext.d.ts +6 -0
- package/dist/runtime/NativeContext.d.ts.map +1 -1
- package/dist/runtime/NativeContext.js +62 -9
- package/dist/runtime/NativeContext.js.map +1 -1
- package/dist/runtime/NativeDynamic.d.ts.map +1 -1
- package/dist/runtime/NativeDynamic.js +5 -0
- package/dist/runtime/NativeDynamic.js.map +1 -1
- package/dist/unplugin/index.d.ts.map +1 -1
- package/dist/unplugin/index.js +4 -1
- package/dist/unplugin/index.js.map +1 -1
- package/dist/variants.d.ts +3 -2
- package/dist/variants.d.ts.map +1 -1
- package/dist/variants.js.map +1 -1
- package/native/NativeZyzz.cpp +52 -65
- package/native/NativeZyzz.h +0 -4
- package/native/ZyzzSpecJSI.h +0 -10
- package/native/android/ZyzzSpec-generated.cpp +0 -6
- package/package.json +1 -1
- package/src/babel/NativeJsx.ts +17 -8
- package/src/compiler/Graph.ts +89 -38
- package/src/compiler/internal/Dynamic.ts +4 -0
- package/src/compiler/internal/Expression.ts +2 -2
- package/src/compiler/internal/NativeBindings.ts +1 -0
- package/src/compiler/internal/NativeVars.ts +3 -0
- package/src/compiler/internal/Themes.ts +29 -23
- package/src/internal/Configuration.ts +2 -1
- package/src/metro/Graph.ts +17 -2
- package/src/node/Host.ts +64 -17
- package/src/react-native/StyleSheet.ts +32 -9
- package/src/react-native/internal/Device.ts +196 -49
- package/src/react-native/internal/NativeZyzz.ts +4 -6
- package/src/react-native/internal/Scalar.ts +73 -2
- package/src/react-native/internal/Store.ts +4 -0
- package/src/react-native/internal/Styles.ts +77 -0
- package/src/react-native/internal/Viewport.ts +7 -0
- package/src/react-native/react.ts +142 -72
- package/src/runtime/NativeContext.ts +83 -9
- package/src/runtime/NativeDynamic.ts +7 -0
- package/src/unplugin/index.ts +4 -1
- package/src/variants.ts +3 -2
|
@@ -3,74 +3,131 @@ import NativeZyzz from "./NativeZyzz.js";
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import * as ReactNative from "react-native";
|
|
5
5
|
import * as Store from "./Store.js";
|
|
6
|
+
import * as Styles from "./Styles.js";
|
|
6
7
|
import * as Subscription from "../react.js";
|
|
7
8
|
import * as Viewport from "./Viewport.js";
|
|
8
9
|
function defineConfig(options = {}) {
|
|
9
10
|
const config = Subscription.defineConfig(options);
|
|
10
|
-
return Object.freeze(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
return Object.freeze(
|
|
12
|
+
Object.defineProperties(
|
|
13
|
+
{ Provider: dimensions(config.Provider) },
|
|
14
|
+
Object.fromEntries(
|
|
15
|
+
Object.entries(Object.getOwnPropertyDescriptors(config)).filter(
|
|
16
|
+
([name]) => name !== "Provider"
|
|
17
|
+
)
|
|
18
|
+
)
|
|
19
|
+
)
|
|
20
|
+
);
|
|
14
21
|
}
|
|
15
22
|
const Provider = dimensions(Subscription.Provider);
|
|
16
|
-
|
|
23
|
+
function useStyles() {
|
|
24
|
+
const owner = React.useContext(Store.context);
|
|
25
|
+
const [fallback] = React.useState(
|
|
26
|
+
() => Store.create({
|
|
27
|
+
colorScheme: "light",
|
|
28
|
+
viewport: ReactNative.Dimensions.get("window")
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
React.useLayoutEffect(() => {
|
|
32
|
+
if (owner) return;
|
|
33
|
+
const update = () => fallback.update({
|
|
34
|
+
colorScheme: "light",
|
|
35
|
+
viewport: ReactNative.Dimensions.get("window")
|
|
36
|
+
});
|
|
37
|
+
update();
|
|
38
|
+
const subscription = ReactNative.Dimensions.addEventListener(
|
|
39
|
+
"change",
|
|
40
|
+
update
|
|
41
|
+
);
|
|
42
|
+
return () => subscription.remove();
|
|
43
|
+
}, [fallback, owner]);
|
|
44
|
+
return Styles.use(owner ?? fallback);
|
|
45
|
+
}
|
|
46
|
+
import { useVars } from "../react.js";
|
|
47
|
+
function withStyles(Component, options = {}) {
|
|
48
|
+
return Styles.wrap(Component, options, useStyles);
|
|
49
|
+
}
|
|
17
50
|
function dimensions(Component) {
|
|
18
51
|
return function WindowProvider(props) {
|
|
19
52
|
const window = ReactNative.useWindowDimensions();
|
|
53
|
+
const scheme = ReactNative.useColorScheme();
|
|
20
54
|
const viewport = React.useMemo(
|
|
21
55
|
() => ({ height: window.height, width: window.width }),
|
|
22
56
|
[window.height, window.width]
|
|
23
57
|
);
|
|
58
|
+
const appearance = React.useMemo(
|
|
59
|
+
() => ({
|
|
60
|
+
adaptive,
|
|
61
|
+
colorScheme: scheme === "dark" ? "dark" : "light"
|
|
62
|
+
}),
|
|
63
|
+
[scheme]
|
|
64
|
+
);
|
|
24
65
|
return React.createElement(
|
|
25
66
|
Viewport.context.Provider,
|
|
26
67
|
{ value: viewport },
|
|
27
|
-
React.createElement(
|
|
68
|
+
React.createElement(
|
|
69
|
+
Viewport.appearance.Provider,
|
|
70
|
+
{ value: appearance },
|
|
71
|
+
React.createElement(Component, props)
|
|
72
|
+
)
|
|
28
73
|
);
|
|
29
74
|
};
|
|
30
75
|
}
|
|
76
|
+
const adaptive = ReactNative.Platform.OS === "ios" ? (light, dark) => ReactNative.DynamicColorIOS({
|
|
77
|
+
dark,
|
|
78
|
+
light
|
|
79
|
+
}) : void 0;
|
|
31
80
|
const useNativeStyles = useBindings;
|
|
32
81
|
function useBindings() {
|
|
33
82
|
const owner = React.useContext(Store.context);
|
|
34
|
-
const
|
|
35
|
-
|
|
83
|
+
const fallbackRef = React.useRef(
|
|
84
|
+
void 0
|
|
85
|
+
);
|
|
86
|
+
if (!owner)
|
|
87
|
+
fallbackRef.current ??= Store.create({
|
|
36
88
|
colorScheme: "light",
|
|
37
89
|
viewport: ReactNative.Dimensions.get("window")
|
|
38
|
-
})
|
|
39
|
-
|
|
90
|
+
});
|
|
91
|
+
const fallback = fallbackRef.current;
|
|
40
92
|
const store = owner ?? fallback;
|
|
41
93
|
const [, render] = React.useReducer((count) => count + 1, 0);
|
|
42
|
-
const [refs] = React.useState(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
94
|
+
const [refs] = React.useState(() => {
|
|
95
|
+
const entries = /* @__PURE__ */ new Map();
|
|
96
|
+
let scheduled = false;
|
|
97
|
+
return {
|
|
98
|
+
entries,
|
|
99
|
+
// Runs after the commit, once every cleanup and re-attachment has settled, without a layout effect per render.
|
|
100
|
+
sweep() {
|
|
101
|
+
if (scheduled) return;
|
|
102
|
+
scheduled = true;
|
|
103
|
+
queueMicrotask(() => {
|
|
104
|
+
scheduled = false;
|
|
105
|
+
for (const [instance, entry] of entries) {
|
|
106
|
+
if (entry.active) continue;
|
|
107
|
+
entry.release();
|
|
108
|
+
entries.delete(instance);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
};
|
|
51
113
|
});
|
|
52
|
-
React.useLayoutEffect(
|
|
53
|
-
() => () => {
|
|
54
|
-
for (const entry of refs.values()) entry.release();
|
|
55
|
-
refs.clear();
|
|
56
|
-
},
|
|
57
|
-
[refs]
|
|
58
|
-
);
|
|
59
114
|
return {
|
|
60
115
|
style: NativeContext.application,
|
|
61
116
|
view: (props) => {
|
|
62
117
|
const snapshot = store.getSnapshot();
|
|
63
118
|
const selected = NativeContext.resolve(props.style, snapshot);
|
|
64
119
|
const initial = NativeContext.key(props.style, snapshot);
|
|
120
|
+
if (!initial.length && typeof selected !== "function" && props.ref == null)
|
|
121
|
+
return { ...props, style: selected };
|
|
65
122
|
return {
|
|
66
123
|
...props,
|
|
67
124
|
ref: (value) => {
|
|
68
125
|
const ref = props.ref;
|
|
69
126
|
if (!value) return;
|
|
70
|
-
let entry = refs.get(value);
|
|
127
|
+
let entry = refs.entries.get(value);
|
|
71
128
|
if (entry && entry.ref !== ref) {
|
|
72
129
|
entry.release();
|
|
73
|
-
refs.delete(value);
|
|
130
|
+
refs.entries.delete(value);
|
|
74
131
|
entry = void 0;
|
|
75
132
|
}
|
|
76
133
|
if (!entry) {
|
|
@@ -85,7 +142,7 @@ function useBindings() {
|
|
|
85
142
|
else if (ref) ref.current = null;
|
|
86
143
|
}
|
|
87
144
|
};
|
|
88
|
-
refs.set(value, entry);
|
|
145
|
+
refs.entries.set(value, entry);
|
|
89
146
|
}
|
|
90
147
|
entry.active = true;
|
|
91
148
|
const attached = entry;
|
|
@@ -100,32 +157,39 @@ function useBindings() {
|
|
|
100
157
|
if (store.getSnapshot() !== snapshot) render();
|
|
101
158
|
return unsubscribe;
|
|
102
159
|
}
|
|
103
|
-
|
|
160
|
+
let id;
|
|
161
|
+
let bound = false;
|
|
104
162
|
let previous = initial;
|
|
105
163
|
const read = (context) => {
|
|
106
164
|
const keys = NativeContext.key(props.style, context);
|
|
107
165
|
if (keys.length === previous.length && keys.every((key, index) => Object.is(key, previous[index])))
|
|
108
166
|
return { commit: () => {
|
|
109
167
|
} };
|
|
110
|
-
const
|
|
111
|
-
if (!selective(
|
|
168
|
+
const next = NativeContext.resolve(props.style, context);
|
|
169
|
+
if (!selective(next)) return { commit: render };
|
|
170
|
+
id ??= ++bindings;
|
|
112
171
|
return {
|
|
113
172
|
commit: () => {
|
|
114
173
|
previous = keys;
|
|
174
|
+
bound = true;
|
|
115
175
|
},
|
|
116
|
-
patch: {
|
|
176
|
+
patch: bound ? { id, props: nativeProps(next) } : {
|
|
117
177
|
id,
|
|
118
|
-
|
|
178
|
+
node,
|
|
179
|
+
props: nativeProps(next),
|
|
180
|
+
rendered: nativeProps(selected)
|
|
119
181
|
}
|
|
120
182
|
};
|
|
121
183
|
};
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
184
|
+
if (store.getSnapshot() !== snapshot) {
|
|
185
|
+
const current = read(store.getSnapshot());
|
|
186
|
+
if (current.patch) write([current.patch]);
|
|
187
|
+
current.commit();
|
|
188
|
+
}
|
|
125
189
|
const unbind = store.bind(read, write);
|
|
126
190
|
return () => {
|
|
127
191
|
unbind();
|
|
128
|
-
NativeZyzz.detach(id);
|
|
192
|
+
if (bound) NativeZyzz.detach(id);
|
|
129
193
|
};
|
|
130
194
|
})();
|
|
131
195
|
const update = () => fallback.update({
|
|
@@ -139,6 +203,7 @@ function useBindings() {
|
|
|
139
203
|
detach();
|
|
140
204
|
subscription?.remove();
|
|
141
205
|
attached.active = false;
|
|
206
|
+
refs.sweep();
|
|
142
207
|
};
|
|
143
208
|
},
|
|
144
209
|
style: selected
|
|
@@ -148,6 +213,15 @@ function useBindings() {
|
|
|
148
213
|
}
|
|
149
214
|
function selective(style) {
|
|
150
215
|
if (typeof style === "function") return false;
|
|
216
|
+
const shared = typeof style === "object" && style !== null && !Array.isArray(style) && Object.isFrozen(style);
|
|
217
|
+
const cached = shared ? patchable.get(style) : void 0;
|
|
218
|
+
if (cached !== void 0) return cached;
|
|
219
|
+
const result = writable(style);
|
|
220
|
+
if (shared) patchable.set(style, result);
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
const patchable = /* @__PURE__ */ new WeakMap();
|
|
224
|
+
function writable(style) {
|
|
151
225
|
const value = ReactNative.StyleSheet.flatten(
|
|
152
226
|
style
|
|
153
227
|
);
|
|
@@ -165,7 +239,11 @@ function selective(style) {
|
|
|
165
239
|
"transformOrigin"
|
|
166
240
|
].some((property) => property in value);
|
|
167
241
|
}
|
|
242
|
+
const converted = /* @__PURE__ */ new WeakMap();
|
|
168
243
|
function nativeProps(style) {
|
|
244
|
+
const shared = typeof style === "object" && style !== null && !Array.isArray(style) && Object.isFrozen(style);
|
|
245
|
+
const cached = shared ? converted.get(style) : void 0;
|
|
246
|
+
if (cached) return cached;
|
|
169
247
|
const flattened = ReactNative.StyleSheet.flatten(
|
|
170
248
|
style
|
|
171
249
|
) ?? {};
|
|
@@ -174,8 +252,10 @@ function nativeProps(style) {
|
|
|
174
252
|
if (name === "color" || name.endsWith("Color"))
|
|
175
253
|
result[name] = ReactNative.processColor(value);
|
|
176
254
|
}
|
|
255
|
+
if (shared) converted.set(style, result);
|
|
177
256
|
return result;
|
|
178
257
|
}
|
|
258
|
+
let bindings = 0;
|
|
179
259
|
function write(patches) {
|
|
180
260
|
NativeZyzz.update(patches);
|
|
181
261
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/react-native/internal/Device.ts"],
|
|
4
|
-
"sourcesContent": ["/** Supplies automatic window measurements for native React consumers. @module */\nimport type * as Config from '../../Config.js'\nimport * as NativeContext from '../../runtime/NativeContext.js'\nimport NativeZyzz from './NativeZyzz.js'\nimport * as React from 'react'\nimport * as ReactNative from 'react-native'\nimport * as Store from './Store.js'\nimport * as Subscription from '../react.js'\nimport * as Viewport from './Viewport.js'\n\n/** Creates native authoring helpers and a Provider with automatic window subscriptions. */\nexport function defineConfig<const options extends Config.create.Options = {}>(\n options: options & Parameters<typeof Config.create<options>>[0] = {} as never,\n): Subscription.defineConfig.ReturnType<options> {\n const config = Subscription.defineConfig<options>(options)\n return Object.freeze({\n ...config,\n Provider: dimensions(config.Provider),\n }) as Subscription.defineConfig.ReturnType<options>\n}\n\n/** Provides selected variables, appearance, and automatic native dimensions. */\nexport const Provider = dimensions(Subscription.Provider)\n\nexport { useStyles, useVars, withStyles } from '../react.js'\n\nfunction dimensions<props extends Subscription.Provider.Props>(\n Component: React.FunctionComponent<props>,\n): React.FunctionComponent<props> {\n return function WindowProvider(props: props) {\n const window = ReactNative.useWindowDimensions()\n const viewport = React.useMemo(\n () => ({ height: window.height, width: window.width }),\n [window.height, window.width],\n )\n return React.createElement(\n Viewport.context.Provider,\n { value: viewport },\n React.createElement(Component, props),\n )\n }\n}\n\n/** Compiler-only binding path, with React subscriptions for Expo Go. */\nexport const useNativeStyles = useBindings\n\ntype Instance = {\n readonly __internalInstanceHandle?:\n | {\n readonly stateNode?: { readonly node?: object | undefined } | undefined\n }\n | undefined\n readonly getNativeScrollRef?: (() => Instance) | undefined\n}\n\nfunction useBindings() {\n const owner = React.useContext(Store.context)\n const [fallback] = React.useState(() =>\n Store.create({\n colorScheme: 'light',\n viewport: ReactNative.Dimensions.get('window'),\n }),\n )\n const store = owner ?? fallback\n const [, render] = React.useReducer((count: number) => count + 1, 0)\n const [refs] = React.useState(\n () =>\n new Map<\n Instance,\n {\n active: boolean\n ref: React.Ref<Instance> | undefined\n release: () => void\n }\n >(),\n )\n React.useLayoutEffect(() => {\n for (const [instance, entry] of refs) {\n if (entry.active) continue\n entry.release()\n refs.delete(instance)\n }\n })\n React.useLayoutEffect(\n () => () => {\n for (const entry of refs.values()) entry.release()\n refs.clear()\n },\n [refs],\n )\n return {\n style: NativeContext.application,\n view: (props: Record<string, unknown>) => {\n const snapshot = store.getSnapshot()\n const selected = NativeContext.resolve(props.style, snapshot)\n const initial = NativeContext.key(props.style, snapshot)\n\n return {\n ...props,\n ref: (value: Instance | null) => {\n const ref = props.ref as React.Ref<Instance> | undefined\n if (!value) return\n let entry = refs.get(value)\n if (entry && entry.ref !== ref) {\n entry.release()\n refs.delete(value)\n entry = undefined\n }\n if (!entry) {\n const release = typeof ref === 'function' ? ref(value) : undefined\n if (ref && typeof ref !== 'function') ref.current = value\n entry = {\n active: true,\n ref,\n release: () => {\n if (typeof release === 'function') release()\n else if (typeof ref === 'function') ref(null)\n else if (ref) ref.current = null\n },\n }\n refs.set(value, entry)\n }\n entry.active = true\n const attached = entry\n\n const instance = value.getNativeScrollRef?.() ?? value\n const node = instance.__internalInstanceHandle?.stateNode?.node\n const detach = (() => {\n if (!initial.length && typeof selected !== 'function')\n return () => {}\n if (!NativeZyzz || !node || !selective(selected)) {\n const unsubscribe = store.subscribe(render)\n if (store.getSnapshot() !== snapshot) render()\n return unsubscribe\n }\n const id = NativeZyzz!.attach(node, nativeProps(selected))\n let previous = initial\n const read = (context: NativeContext.Context) => {\n const keys = NativeContext.key(props.style, context)\n if (\n keys.length === previous.length &&\n keys.every((key, index) => Object.is(key, previous[index]))\n )\n return { commit: () => {} }\n const selected = NativeContext.resolve(props.style, context)\n if (!selective(selected)) return { commit: render }\n return {\n commit: () => {\n previous = keys\n },\n patch: {\n id,\n props: nativeProps(selected),\n },\n }\n }\n // Context can change between render and committing the host ref.\n const current = read(store.getSnapshot())\n if (current.patch) write([current.patch])\n current.commit()\n const unbind = store.bind(read, write)\n return () => {\n unbind()\n NativeZyzz!.detach(id)\n }\n })()\n const update = () =>\n fallback.update({\n colorScheme: 'light',\n viewport: ReactNative.Dimensions.get('window'),\n })\n const contextual =\n initial.length > 0 || typeof selected === 'function'\n const subscription =\n owner || !contextual\n ? undefined\n : ReactNative.Dimensions.addEventListener('change', update)\n if (!owner && contextual) update()\n return () => {\n detach()\n subscription?.remove()\n attached.active = false\n }\n },\n style: selected,\n }\n },\n }\n}\n\nfunction selective(style: unknown): boolean {\n if (typeof style === 'function') return false\n const value = ReactNative.StyleSheet.flatten(\n style as ReactNative.StyleProp<ReactNative.ViewStyle>,\n )\n // Let React Native apply its processors to caller-owned representations.\n // Only color properties are processed by the selective writer below.\n return (\n !value ||\n ![\n 'aspectRatio',\n 'backgroundImage',\n 'backgroundPosition',\n 'backgroundRepeat',\n 'backgroundSize',\n 'boxShadow',\n 'experimental_backgroundImage',\n 'filter',\n 'fontVariant',\n 'transform',\n 'transformOrigin',\n ].some((property) => property in value)\n )\n}\n\nfunction nativeProps(style: unknown): Record<string, unknown> {\n const flattened =\n ReactNative.StyleSheet.flatten(\n style as ReactNative.StyleProp<ReactNative.ViewStyle>,\n ) ?? {}\n const result: Record<string, unknown> = { ...flattened }\n for (const [name, value] of Object.entries(result)) {\n if (name === 'color' || name.endsWith('Color'))\n result[name] = ReactNative.processColor(value as ReactNative.ColorValue)\n }\n return result\n}\n\nfunction write(patches: readonly Store.Patch[]) {\n NativeZyzz!.update(patches)\n}\n"],
|
|
5
|
-
"mappings": "AAEA,YAAY,mBAAmB;AAC/B,OAAO,gBAAgB;AACvB,YAAY,WAAW;AACvB,YAAY,iBAAiB;AAC7B,YAAY,WAAW;AACvB,YAAY,kBAAkB;AAC9B,YAAY,cAAc;AAGnB,SAAS,aACd,UAAkE,CAAC,GACpB;AAC/C,QAAM,SAAS,aAAa,aAAsB,OAAO;
|
|
6
|
-
"names": [
|
|
4
|
+
"sourcesContent": ["/** Supplies automatic window measurements for native React consumers. @module */\nimport type * as Config from '../../Config.js'\nimport * as NativeContext from '../../runtime/NativeContext.js'\nimport NativeZyzz from './NativeZyzz.js'\nimport * as React from 'react'\nimport * as ReactNative from 'react-native'\nimport * as Store from './Store.js'\nimport * as Styles from './Styles.js'\nimport * as Subscription from '../react.js'\nimport * as Viewport from './Viewport.js'\n\n/** Creates native authoring helpers and a Provider with automatic window subscriptions. */\nexport function defineConfig<const options extends Config.create.Options = {}>(\n options: options & Parameters<typeof Config.create<options>>[0] = {} as never,\n): Subscription.defineConfig.ReturnType<options> {\n const config = Subscription.defineConfig<options>(options)\n // Copy descriptors rather than spreading, so deferred helpers stay deferred.\n return Object.freeze(\n Object.defineProperties(\n { Provider: dimensions(config.Provider) } as Record<string, unknown>,\n Object.fromEntries(\n Object.entries(Object.getOwnPropertyDescriptors(config)).filter(\n ([name]) => name !== 'Provider',\n ),\n ),\n ),\n ) as unknown as Subscription.defineConfig.ReturnType<options>\n}\n\n/** Provides selected variables, appearance, and automatic native dimensions. */\nexport const Provider = dimensions(Subscription.Provider)\n\n/**\n * Compiler-inserted subscription for resolving native style applications.\n * Outside a Provider, selections use default variables, the light scheme, and window dimensions.\n */\nexport function useStyles(): Subscription.useStyles.ReturnType {\n const owner = React.useContext(Store.context)\n const [fallback] = React.useState(() =>\n Store.create({\n colorScheme: 'light',\n viewport: ReactNative.Dimensions.get('window'),\n }),\n )\n React.useLayoutEffect(() => {\n if (owner) return\n const update = () =>\n fallback.update({\n colorScheme: 'light',\n viewport: ReactNative.Dimensions.get('window'),\n })\n // Dimensions can change between render and commit.\n update()\n const subscription = ReactNative.Dimensions.addEventListener(\n 'change',\n update,\n )\n return () => subscription.remove()\n }, [fallback, owner])\n\n return Styles.use(owner ?? fallback)\n}\n\nexport { useVars } from '../react.js'\n\n/**\n * Resolves compiled style props for function components using React updates.\n * @param Component - Function, memo, or ref-forwarding component receiving native styles.\n * @param options - Additional style-bearing prop names.\n * @returns A component with the original call signature and ref. Type parameters remain when `styleProps` is omitted.\n * @throws For invalid style prop names.\n */\nexport function withStyles<\n props extends object,\n result extends React.ReactNode,\n>(\n Component: (props: props) => result,\n options?: NoInfer<Subscription.withStyles.Options<(props: props) => result>>,\n): (props: props) => result\n/**\n * Resolves compiled style props for class and host components using React updates.\n * @param Component - Class component or host element type receiving native styles.\n * @param options - Additional style-bearing prop names.\n * @returns A component preserving the original props and instance ref.\n * @throws For invalid style prop names.\n */\nexport function withStyles<const component extends React.ElementType>(\n Component: component,\n options?: Subscription.withStyles.Options<component>,\n): React.ForwardRefExoticComponent<React.ComponentPropsWithRef<component>>\nexport function withStyles(\n Component: React.ElementType,\n options: Subscription.withStyles.Options<\n (props: Readonly<Record<string, unknown>>) => React.ReactNode\n > = {},\n): React.ElementType {\n return Styles.wrap(Component, options, useStyles)\n}\n\nfunction dimensions<props extends Subscription.Provider.Props>(\n Component: React.FunctionComponent<props>,\n): React.FunctionComponent<props> {\n return function WindowProvider(props: props) {\n const window = ReactNative.useWindowDimensions()\n const scheme = ReactNative.useColorScheme()\n const viewport = React.useMemo(\n () => ({ height: window.height, width: window.width }),\n [window.height, window.width],\n )\n const appearance = React.useMemo(\n () => ({\n adaptive,\n colorScheme: scheme === 'dark' ? ('dark' as const) : ('light' as const),\n }),\n [scheme],\n )\n return React.createElement(\n Viewport.context.Provider,\n { value: viewport },\n React.createElement(\n Viewport.appearance.Provider,\n { value: appearance },\n React.createElement(Component, props),\n ),\n )\n }\n}\n\n// iOS resolves these colors from the window's appearance, so scheme changes need no Fabric update.\nconst adaptive =\n ReactNative.Platform.OS === 'ios'\n ? (light: string | number, dark: string | number) =>\n ReactNative.DynamicColorIOS({\n dark: dark as ReactNative.ColorValue,\n light: light as ReactNative.ColorValue,\n })\n : undefined\n\n/** Compiler-only binding path, with React subscriptions for Expo Go. */\nexport const useNativeStyles = useBindings\n\ntype Instance = {\n readonly __internalInstanceHandle?:\n | {\n readonly stateNode?: { readonly node?: object | undefined } | undefined\n }\n | undefined\n readonly getNativeScrollRef?: (() => Instance) | undefined\n}\n\nfunction useBindings() {\n const owner = React.useContext(Store.context)\n // Views inside a Provider never read the fallback, so it is created only outside one.\n const fallbackRef = React.useRef<ReturnType<typeof Store.create> | undefined>(\n undefined,\n )\n if (!owner)\n fallbackRef.current ??= Store.create({\n colorScheme: 'light',\n viewport: ReactNative.Dimensions.get('window'),\n })\n const fallback = fallbackRef.current\n const store = (owner ?? fallback)!\n const [, render] = React.useReducer((count: number) => count + 1, 0)\n const [refs] = React.useState(() => {\n const entries = new Map<\n Instance,\n {\n active: boolean\n ref: React.Ref<Instance> | undefined\n release: () => void\n }\n >()\n let scheduled = false\n return {\n entries,\n // Runs after the commit, once every cleanup and re-attachment has settled, without a layout effect per render.\n sweep() {\n if (scheduled) return\n scheduled = true\n queueMicrotask(() => {\n scheduled = false\n for (const [instance, entry] of entries) {\n if (entry.active) continue\n entry.release()\n entries.delete(instance)\n }\n })\n },\n }\n })\n return {\n style: NativeContext.application,\n view: (props: Record<string, unknown>) => {\n const snapshot = store.getSnapshot()\n const selected = NativeContext.resolve(props.style, snapshot)\n const initial = NativeContext.key(props.style, snapshot)\n // A context-free style never needs a binding, so React keeps a stable element without a ref wrapper.\n if (\n !initial.length &&\n typeof selected !== 'function' &&\n props.ref == null\n )\n return { ...props, style: selected }\n\n return {\n ...props,\n ref: (value: Instance | null) => {\n const ref = props.ref as React.Ref<Instance> | undefined\n if (!value) return\n let entry = refs.entries.get(value)\n if (entry && entry.ref !== ref) {\n entry.release()\n refs.entries.delete(value)\n entry = undefined\n }\n if (!entry) {\n const release = typeof ref === 'function' ? ref(value) : undefined\n if (ref && typeof ref !== 'function') ref.current = value\n entry = {\n active: true,\n ref,\n release: () => {\n if (typeof release === 'function') release()\n else if (typeof ref === 'function') ref(null)\n else if (ref) ref.current = null\n },\n }\n refs.entries.set(value, entry)\n }\n entry.active = true\n const attached = entry\n\n const instance = value.getNativeScrollRef?.() ?? value\n const node = instance.__internalInstanceHandle?.stateNode?.node\n const detach = (() => {\n if (!initial.length && typeof selected !== 'function')\n return () => {}\n if (!NativeZyzz || !node || !selective(selected)) {\n const unsubscribe = store.subscribe(render)\n if (store.getSnapshot() !== snapshot) render()\n return unsubscribe\n }\n // Most views never change selection, so they bind on their first patch.\n let id: number | undefined\n let bound = false\n let previous = initial\n const read = (context: NativeContext.Context) => {\n const keys = NativeContext.key(props.style, context)\n if (\n keys.length === previous.length &&\n keys.every((key, index) => Object.is(key, previous[index]))\n )\n return { commit: () => {} }\n const next = NativeContext.resolve(props.style, context)\n if (!selective(next)) return { commit: render }\n id ??= ++bindings\n return {\n commit: () => {\n previous = keys\n bound = true\n },\n patch: bound\n ? { id, props: nativeProps(next) }\n : {\n id,\n node,\n props: nativeProps(next),\n rendered: nativeProps(selected),\n },\n }\n }\n // Context can change between render and committing the host ref.\n if (store.getSnapshot() !== snapshot) {\n const current = read(store.getSnapshot())\n if (current.patch) write([current.patch])\n current.commit()\n }\n const unbind = store.bind(read, write)\n return () => {\n unbind()\n if (bound) NativeZyzz!.detach(id!)\n }\n })()\n const update = () =>\n fallback!.update({\n colorScheme: 'light',\n viewport: ReactNative.Dimensions.get('window'),\n })\n const contextual =\n initial.length > 0 || typeof selected === 'function'\n const subscription =\n owner || !contextual\n ? undefined\n : ReactNative.Dimensions.addEventListener('change', update)\n if (!owner && contextual) update()\n return () => {\n detach()\n subscription?.remove()\n attached.active = false\n refs.sweep()\n }\n },\n style: selected,\n }\n },\n }\n}\n\nfunction selective(style: unknown): boolean {\n if (typeof style === 'function') return false\n const shared =\n typeof style === 'object' &&\n style !== null &&\n !Array.isArray(style) &&\n Object.isFrozen(style)\n const cached = shared ? patchable.get(style) : undefined\n if (cached !== undefined) return cached\n const result = writable(style)\n if (shared) patchable.set(style, result)\n return result\n}\n\nconst patchable = new WeakMap<object, boolean>()\n\nfunction writable(style: unknown): boolean {\n const value = ReactNative.StyleSheet.flatten(\n style as ReactNative.StyleProp<ReactNative.ViewStyle>,\n )\n // Let React Native apply its processors to caller-owned representations.\n // Only color properties are processed by the selective writer below.\n return (\n !value ||\n ![\n 'aspectRatio',\n 'backgroundImage',\n 'backgroundPosition',\n 'backgroundRepeat',\n 'backgroundSize',\n 'boxShadow',\n 'experimental_backgroundImage',\n 'filter',\n 'fontVariant',\n 'transform',\n 'transformOrigin',\n ].some((property) => property in value)\n )\n}\n\n// Compiled styles are frozen and shared by every view that selects them.\nconst converted = new WeakMap<object, Record<string, unknown>>()\nfunction nativeProps(style: unknown): Record<string, unknown> {\n const shared =\n typeof style === 'object' &&\n style !== null &&\n !Array.isArray(style) &&\n Object.isFrozen(style)\n const cached = shared ? converted.get(style) : undefined\n if (cached) return cached\n const flattened =\n ReactNative.StyleSheet.flatten(\n style as ReactNative.StyleProp<ReactNative.ViewStyle>,\n ) ?? {}\n const result: Record<string, unknown> = { ...flattened }\n for (const [name, value] of Object.entries(result)) {\n if (name === 'color' || name.endsWith('Color'))\n result[name] = ReactNative.processColor(value as ReactNative.ColorValue)\n }\n if (shared) converted.set(style, result)\n return result\n}\n\n// Binding identifiers are unique per JavaScript runtime, like the native module.\nlet bindings = 0\n\nfunction write(patches: readonly Store.Patch[]) {\n NativeZyzz!.update(patches)\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/react-native/internal/NativeZyzz.ts"],
|
|
4
|
-
"sourcesContent": ["/** Private Fabric bridge for committed view bindings. @module */\nimport type { CodegenTypes, TurboModule } from 'react-native'\nimport { TurboModuleRegistry } from 'react-native'\n\n/** Codegen contract, consumed only by the native adapter. */\nexport interface Spec extends TurboModule {\n /**
|
|
5
|
-
"mappings": "AAEA,SAAS,2BAA2B;
|
|
4
|
+
"sourcesContent": ["/** Private Fabric bridge for committed view bindings. @module */\nimport type { CodegenTypes, TurboModule } from 'react-native'\nimport { TurboModuleRegistry } from 'react-native'\n\n/** Codegen contract, consumed only by the native adapter. */\nexport interface Spec extends TurboModule {\n /** Releases a view binding. */\n readonly detach: (id: number) => void\n /** Reports live bindings and applied update batches. */\n readonly inspect: () => CodegenTypes.UnsafeObject\n /**\n * Applies one batch of changed native styles. An update with `node` and\n * `rendered` first binds that mounted Fabric node to its rendered style.\n */\n readonly update: (updates: ReadonlyArray<CodegenTypes.UnsafeObject>) => void\n}\n\nexport default TurboModuleRegistry.get<Spec>('NativeZyzz')\n"],
|
|
5
|
+
"mappings": "AAEA,SAAS,2BAA2B;AAepC,IAAO,qBAAQ,oBAAoB,IAAU,YAAY;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -29,6 +29,7 @@ export declare const properties: {
|
|
|
29
29
|
readonly columnGap: 'length';
|
|
30
30
|
readonly direction: readonly ['ltr', 'rtl'];
|
|
31
31
|
readonly display: readonly ['contents', 'flex', 'none'];
|
|
32
|
+
readonly flex: 'flex';
|
|
32
33
|
readonly flexBasis: 'size';
|
|
33
34
|
readonly flexDirection: readonly ['column', 'column-reverse', 'row', 'row-reverse'];
|
|
34
35
|
readonly flexGrow: 'number';
|
|
@@ -41,6 +42,7 @@ export declare const properties: {
|
|
|
41
42
|
readonly fontWeight: 'weight';
|
|
42
43
|
readonly gap: 'length';
|
|
43
44
|
readonly height: 'size';
|
|
45
|
+
readonly inset: 'boxOffset';
|
|
44
46
|
readonly justifyContent: readonly ['center', 'flex-end', 'flex-start', 'space-around', 'space-between', 'space-evenly'];
|
|
45
47
|
readonly left: 'offset';
|
|
46
48
|
readonly letterSpacing: 'signed';
|
|
@@ -90,6 +92,20 @@ export type Options = {
|
|
|
90
92
|
};
|
|
91
93
|
/** Converts a validated property domain using explicit unit and font mappings. */
|
|
92
94
|
export declare function convert(kind: (typeof properties)[keyof typeof properties], value: number | string, options: Options, path: readonly string[]): number | string;
|
|
95
|
+
/**
|
|
96
|
+
* Expands the CSS `flex` shorthand to native longhands with CSS semantics.
|
|
97
|
+
* Omitted factors default to 1 and an omitted basis to 0, unlike the React Native `flex` prop.
|
|
98
|
+
*/
|
|
99
|
+
export declare function flex(value: number | string, options: Options, path: readonly string[]): flex.ReturnType;
|
|
100
|
+
/** Native longhands produced by the `flex` shorthand. */
|
|
101
|
+
export declare namespace flex {
|
|
102
|
+
/** Grow and shrink factors with a converted basis. */
|
|
103
|
+
type ReturnType = {
|
|
104
|
+
readonly flexBasis: number | string;
|
|
105
|
+
readonly flexGrow: number;
|
|
106
|
+
readonly flexShrink: number;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
93
109
|
/** Converts a portable length to logical units. */
|
|
94
110
|
export declare function length(value: number | string, options: Options, signed: boolean, path: readonly string[]): number;
|
|
95
111
|
//# sourceMappingURL=Scalar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scalar.d.ts","sourceRoot":"","sources":["../../../src/react-native/internal/Scalar.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Scalar.d.ts","sourceRoot":"","sources":["../../../src/react-native/internal/Scalar.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,7 @@ export const properties = {
|
|
|
47
47
|
columnGap: 'length',
|
|
48
48
|
direction: ['ltr', 'rtl'],
|
|
49
49
|
display: ['contents', 'flex', 'none'],
|
|
50
|
+
flex: 'flex',
|
|
50
51
|
flexBasis: 'size',
|
|
51
52
|
flexDirection: ['column', 'column-reverse', 'row', 'row-reverse'],
|
|
52
53
|
flexGrow: 'number',
|
|
@@ -59,6 +60,7 @@ export const properties = {
|
|
|
59
60
|
fontWeight: 'weight',
|
|
60
61
|
gap: 'length',
|
|
61
62
|
height: 'size',
|
|
63
|
+
inset: 'boxOffset',
|
|
62
64
|
justifyContent: [
|
|
63
65
|
'center',
|
|
64
66
|
'flex-end',
|
|
@@ -168,16 +170,65 @@ export function convert(kind, value, options, path) {
|
|
|
168
170
|
return value;
|
|
169
171
|
fail('unsupported_value', 'Invalid native percentage.', path);
|
|
170
172
|
}
|
|
171
|
-
if (kind === '
|
|
173
|
+
if (kind === 'flex') {
|
|
174
|
+
flex(value, options, path);
|
|
175
|
+
return 0;
|
|
176
|
+
}
|
|
177
|
+
if (kind === 'box' || kind === 'boxOffset' || kind === 'boxSigned') {
|
|
172
178
|
const values = typeof value === 'string' ? Calculation.parts(value) : [value];
|
|
173
179
|
if (!values.length || values.length > 4)
|
|
174
180
|
fail('unsupported_value', 'Use one to four scalar lengths.', path);
|
|
175
181
|
for (const value of values)
|
|
176
|
-
|
|
182
|
+
if (kind === 'boxOffset')
|
|
183
|
+
convert('offset', value, options, path);
|
|
184
|
+
else
|
|
185
|
+
length(value, options, kind === 'boxSigned', path);
|
|
177
186
|
return 0;
|
|
178
187
|
}
|
|
179
188
|
return length(value, options, kind === 'signed' || kind === 'offset', path);
|
|
180
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Expands the CSS `flex` shorthand to native longhands with CSS semantics.
|
|
192
|
+
* Omitted factors default to 1 and an omitted basis to 0, unlike the React Native `flex` prop.
|
|
193
|
+
*/
|
|
194
|
+
export function flex(value, options, path) {
|
|
195
|
+
const keyword = typeof value === 'string' ? value.trim() : undefined;
|
|
196
|
+
if (keyword === 'none')
|
|
197
|
+
return { flexBasis: 'auto', flexGrow: 0, flexShrink: 0 };
|
|
198
|
+
if (keyword === 'auto')
|
|
199
|
+
return { flexBasis: 'auto', flexGrow: 1, flexShrink: 1 };
|
|
200
|
+
if (keyword === 'initial')
|
|
201
|
+
return { flexBasis: 'auto', flexGrow: 0, flexShrink: 1 };
|
|
202
|
+
const parts = typeof value === 'string' ? Calculation.parts(value) : [value];
|
|
203
|
+
const kinds = [];
|
|
204
|
+
for (const part of parts) {
|
|
205
|
+
const numeric = typeof part === 'number' ||
|
|
206
|
+
/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:[eE][+-]?\d+)?$/.test(part);
|
|
207
|
+
// A unitless zero after two factors is the basis, as in CSS.
|
|
208
|
+
const basis = !numeric || (kinds.join(' ') === 'factor factor' && Number(part) === 0);
|
|
209
|
+
kinds.push(basis ? 'basis' : 'factor');
|
|
210
|
+
}
|
|
211
|
+
// Factors stay adjacent, and the basis may precede or follow them.
|
|
212
|
+
if (![
|
|
213
|
+
'basis',
|
|
214
|
+
'basis factor',
|
|
215
|
+
'basis factor factor',
|
|
216
|
+
'factor',
|
|
217
|
+
'factor basis',
|
|
218
|
+
'factor factor',
|
|
219
|
+
'factor factor basis',
|
|
220
|
+
].includes(kinds.join(' ')))
|
|
221
|
+
fail('unsupported_value', 'Invalid flex shorthand.', path);
|
|
222
|
+
const factors = parts
|
|
223
|
+
.filter((_, index) => kinds[index] === 'factor')
|
|
224
|
+
.map((part) => convert('number', Number(part), options, path));
|
|
225
|
+
const basis = parts.find((_, index) => kinds[index] === 'basis');
|
|
226
|
+
return {
|
|
227
|
+
flexBasis: basis === undefined ? 0 : convert('size', basis, options, path),
|
|
228
|
+
flexGrow: factors[0] ?? 1,
|
|
229
|
+
flexShrink: factors[1] ?? 1,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
181
232
|
/** Converts a portable length to logical units. */
|
|
182
233
|
export function length(value, options, signed, path) {
|
|
183
234
|
if (value === 0 || value === '0')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Scalar.js","sourceRoot":"","sources":["../../../src/react-native/internal/Scalar.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Scalar.js","sourceRoot":"","sources":["../../../src/react-native/internal/Scalar.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,12 @@ import * as React from 'react';
|
|
|
5
5
|
export type Patch = {
|
|
6
6
|
/** Runtime-local mounted view identifier. */
|
|
7
7
|
readonly id: number;
|
|
8
|
+
/** Mounted Fabric node, sent until the binding's first patch commits. */
|
|
9
|
+
readonly node?: object | undefined;
|
|
8
10
|
/** Processed native style properties. */
|
|
9
11
|
readonly props: Record<string, unknown>;
|
|
12
|
+
/** Processed style React rendered, sent with `node`. */
|
|
13
|
+
readonly rendered?: Record<string, unknown> | undefined;
|
|
10
14
|
};
|
|
11
15
|
type Selection = {
|
|
12
16
|
readonly commit: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../../src/react-native/internal/Store.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,KAAK,aAAa,MAAM,gCAAgC,CAAA;AACpE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,kEAAkE;AAClE,MAAM,MAAM,KAAK,GAAG;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../../src/react-native/internal/Store.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,KAAK,KAAK,aAAa,MAAM,gCAAgC,CAAA;AACpE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,kEAAkE;AAClE,MAAM,MAAM,KAAK,GAAG;IAClB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,wDAAwD;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CACxD,CAAA;AAED,KAAK,SAAS,GAAG;IACf,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;CACnC,CAAA;AACD,KAAK,MAAM,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,KAAK,SAAS,CAAA;AACzD,KAAK,MAAM,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,KAAK,IAAI,CAAA;AAEjD,6CAA6C;AAC7C,eAAO,MAAM,OAAO;eAWL,MAAM,SAAS,MAAM;;wBAOZ,MAAM,IAAI;kBAOhB,aAAa,CAAC,OAAO;cAvB3B,CAAA;AAEZ,mFAAmF;AACnF,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,OAAO;IAMjD,IAAI,OAAO,MAAM,SAAS,MAAM;IAMhC,WAAW;IACX,SAAS,WAAW,MAAM,IAAI;IAO9B,MAAM,QAAQ,aAAa,CAAC,OAAO;EAgCtC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../../../src/react-native/internal/Store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Store.js","sourceRoot":"","sources":["../../../src/react-native/internal/Store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,6CAA6C;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAExC,SAAS,CAAC,CAAA;AAEZ,mFAAmF;AACnF,MAAM,UAAU,MAAM,CAAC,OAA8B;IACnD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;IAEvC,OAAO;QACL,IAAI,CAAC,IAAY,EAAE,KAAa;YAC9B,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACzB,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC,CAAA;QACH,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC3B,SAAS,CAAC,QAAoB;YAC5B,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAA;YAC9B,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACpB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzB,CAAC,CAAA;QACH,CAAC;QACD,MAAM,CAAC,KAA4B;YACjC,IACE,QAAQ,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW;gBAC1C,QAAQ,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;gBAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE,MAAM;gBACpD,QAAQ,CAAC,QAAQ,EAAE,KAAK,KAAK,KAAK,CAAC,QAAQ,EAAE,KAAK;gBAElD,OAAM;YAER,sEAAsE;YACtE,MAAM,UAAU,GAAgB,EAAE,CAAA;YAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAA;YAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC7B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC1B,IAAI,CAAC,SAAS,CAAC,KAAK;oBAAE,SAAQ;gBAC9B,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,KAAK,GAAG,EAAE,CAAA;oBACV,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;gBAC3B,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC7B,CAAC;YACD,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,OAAO;gBAAE,KAAK,CAAC,OAAO,CAAC,CAAA;YAEtD,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC/B,KAAK,MAAM,SAAS,IAAI,UAAU;gBAAE,SAAS,CAAC,MAAM,EAAE,CAAA;YACtD,oEAAoE;YACpE,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC1C,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,QAAQ,EAAE,CAAA;QAC3C,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { useStyles } from '../react.js';
|
|
3
|
+
import type * as Store from './Store.js';
|
|
4
|
+
/** Subscribes to a selection and returns its style resolvers. */
|
|
5
|
+
export declare function use(store: ReturnType<typeof Store.create>): useStyles.ReturnType;
|
|
6
|
+
/**
|
|
7
|
+
* Wraps a component so its style props resolve through an entrypoint's selection hook.
|
|
8
|
+
* @throws For invalid style prop names.
|
|
9
|
+
*/
|
|
10
|
+
export declare function wrap<const component extends React.ElementType>(Component: component, options: wrap.Options, useStyles: () => useStyles.ReturnType): React.ForwardRefExoticComponent<React.PropsWithoutRef<React.PropsWithoutRef<React.ComponentProps<component>>> & React.RefAttributes<React.ComponentRef<component>>>;
|
|
11
|
+
/** Style-bearing prop names accepted by a wrapper. */
|
|
12
|
+
export declare namespace wrap {
|
|
13
|
+
/** Entrypoints narrow these names to the wrapped component's props. */
|
|
14
|
+
type Options = {
|
|
15
|
+
/** Additional style props declared by the wrapped component. */
|
|
16
|
+
readonly styleProps?: readonly string[] | undefined;
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Styles.d.ts","sourceRoot":"","sources":["../../../src/react-native/internal/Styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAA;AAExC,iEAAiE;AACjE,wBAAgB,GAAG,CACjB,KAAK,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,GACrC,SAAS,CAAC,UAAU,CAiBtB;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,KAAK,CAAC,SAAS,SAAS,KAAK,CAAC,WAAW,EAC5D,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,MAAM,SAAS,CAAC,UAAU,uKAgCtC;AAED,sDAAsD;AACtD,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,uEAAuE;IACvE,KAAK,OAAO,GAAG;QACb,gEAAgE;QAChE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAA;KACpD,CAAA;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Resolves compiled style applications for consumers outside native view bindings. @module */
|
|
2
|
+
import * as NativeContext from '../../runtime/NativeContext.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
/** Subscribes to a selection and returns its style resolvers. */
|
|
5
|
+
export function use(store) {
|
|
6
|
+
const value = React.useSyncExternalStore(store.subscribe, store.getSnapshot, store.getSnapshot);
|
|
7
|
+
return React.useMemo(() => ({
|
|
8
|
+
props: (props) => props && Object.hasOwn(props, 'style')
|
|
9
|
+
? { ...props, style: NativeContext.resolve(props.style, value) }
|
|
10
|
+
: props,
|
|
11
|
+
style: (style, input) => NativeContext.resolve(style, value, input),
|
|
12
|
+
}), [value]);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Wraps a component so its style props resolve through an entrypoint's selection hook.
|
|
16
|
+
* @throws For invalid style prop names.
|
|
17
|
+
*/
|
|
18
|
+
export function wrap(Component, options, useStyles) {
|
|
19
|
+
const additional = options.styleProps ?? [];
|
|
20
|
+
if (!Array.isArray(additional) ||
|
|
21
|
+
additional.some((name) => typeof name !== 'string' || !name || name === 'key' || name === 'ref'))
|
|
22
|
+
throw new Error('withStyles requires style prop names excluding key and ref.');
|
|
23
|
+
const names = [...new Set(['style', 'contentContainerStyle', ...additional])];
|
|
24
|
+
const Wrapped = React.forwardRef((props, ref) => {
|
|
25
|
+
const selected = useStyles();
|
|
26
|
+
const resolved = { ...props, ref };
|
|
27
|
+
for (const name of names)
|
|
28
|
+
if (Object.hasOwn(props, name))
|
|
29
|
+
resolved[name] = selected.style(props[name]);
|
|
30
|
+
return React.createElement(Component, resolved);
|
|
31
|
+
});
|
|
32
|
+
Wrapped.displayName = `withStyles(${typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Component'})`;
|
|
33
|
+
return Wrapped;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=Styles.js.map
|