@tamagui/web 3.0.3 → 3.0.5
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/_withNativeStyle.cjs +85 -46
- package/dist/cjs/_withNativeStyle.native.cjs +91 -41
- package/dist/cjs/_withNativeStyle.native.js +91 -41
- package/dist/cjs/_withNativeStyle.native.js.map +1 -1
- package/dist/cjs/helpers/nativeStyleEngine.cjs +140 -69
- package/dist/cjs/helpers/nativeStyleEngine.native.cjs +177 -118
- package/dist/cjs/helpers/nativeStyleEngine.native.js +177 -118
- package/dist/cjs/helpers/nativeStyleEngine.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/esm/_withNativeStyle.mjs +85 -40
- package/dist/esm/_withNativeStyle.mjs.map +1 -1
- package/dist/esm/_withNativeStyle.native.js +92 -42
- package/dist/esm/_withNativeStyle.native.js.map +1 -1
- package/dist/esm/helpers/nativeStyleEngine.mjs +141 -71
- package/dist/esm/helpers/nativeStyleEngine.mjs.map +1 -1
- package/dist/esm/helpers/nativeStyleEngine.native.js +177 -119
- package/dist/esm/helpers/nativeStyleEngine.native.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.native.js +2 -2
- package/package.json +17 -17
- package/src/_withNativeStyle.tsx +141 -55
- package/src/helpers/nativeStyleEngine.ts +230 -101
- package/src/index.ts +1 -0
- package/src/setupHooks.ts +1 -0
- package/types/_withNativeStyle.d.ts +22 -2
- package/types/_withNativeStyle.d.ts.map +1 -1
- package/types/helpers/nativeStyleEngine.d.ts +24 -9
- package/types/helpers/nativeStyleEngine.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/setupHooks.d.ts +1 -0
- package/types/setupHooks.d.ts.map +1 -1
|
@@ -49,8 +49,8 @@ let engine = null;
|
|
|
49
49
|
const scopeStates = /* @__PURE__ */ new Map();
|
|
50
50
|
const mappingKeys = /* @__PURE__ */ new WeakMap();
|
|
51
51
|
const compiledMappings = /* @__PURE__ */ new Map();
|
|
52
|
-
const
|
|
53
|
-
|
|
52
|
+
const scopeMappings = /* @__PURE__ */ new Map();
|
|
53
|
+
let nextTableId = 1;
|
|
54
54
|
function getCompiledMapping(mapping) {
|
|
55
55
|
let key = mappingKeys.get(mapping);
|
|
56
56
|
if (!key) {
|
|
@@ -62,7 +62,8 @@ function getCompiledMapping(mapping) {
|
|
|
62
62
|
compiled = {
|
|
63
63
|
mapping,
|
|
64
64
|
states: /* @__PURE__ */ new Map(),
|
|
65
|
-
|
|
65
|
+
tableId: nextTableId++,
|
|
66
|
+
sent: /* @__PURE__ */ new Map()
|
|
66
67
|
};
|
|
67
68
|
if (compiledMappings.size >= 1e4) {
|
|
68
69
|
compiledMappings.clear();
|
|
@@ -83,9 +84,6 @@ function resolveCompiledMapping(compiled, stateName, theme) {
|
|
|
83
84
|
const nativeProps = engine?.processStyleColors(renderProps) ?? renderProps;
|
|
84
85
|
if (compiled.states.size >= 1e4) {
|
|
85
86
|
compiled.states.clear();
|
|
86
|
-
for (const link of compiled.links) {
|
|
87
|
-
link.stateThemes.clear();
|
|
88
|
-
}
|
|
89
87
|
}
|
|
90
88
|
const resolved = {
|
|
91
89
|
theme,
|
|
@@ -95,10 +93,19 @@ function resolveCompiledMapping(compiled, stateName, theme) {
|
|
|
95
93
|
compiled.states.set(stateName, resolved);
|
|
96
94
|
return resolved;
|
|
97
95
|
}
|
|
96
|
+
function syncTableState(compiled, stateName, theme) {
|
|
97
|
+
const resolved = resolveCompiledMapping(compiled, stateName, theme);
|
|
98
|
+
if (compiled.sent.get(stateName) === resolved) return;
|
|
99
|
+
compiled.sent.set(stateName, resolved);
|
|
100
|
+
engine.setTableState(compiled.tableId, stateName, resolved.nativeProps);
|
|
101
|
+
}
|
|
98
102
|
function setNativeStyleEngine(next) {
|
|
99
103
|
if (engine !== next) {
|
|
104
|
+
settleReleases();
|
|
100
105
|
compiledMappings.clear();
|
|
101
|
-
|
|
106
|
+
scopeMappings.clear();
|
|
107
|
+
pendingLinks = [];
|
|
108
|
+
unlinkedPending = 0;
|
|
102
109
|
}
|
|
103
110
|
engine = next;
|
|
104
111
|
if (next) {
|
|
@@ -113,28 +120,18 @@ function getNativeStyleEngine() {
|
|
|
113
120
|
function updateNativeStyleScope(scopeId, stateName, theme) {
|
|
114
121
|
const previous = scopeStates.get(scopeId);
|
|
115
122
|
if (previous?.name === stateName && previous.theme === theme) return;
|
|
123
|
+
flushNativeStyleLinks();
|
|
116
124
|
scopeStates.set(scopeId, {
|
|
117
125
|
name: stateName,
|
|
118
126
|
theme
|
|
119
127
|
});
|
|
120
128
|
if (engine) {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (link.scopeId !== scopeId) continue;
|
|
126
|
-
const linkedTheme = link.stateThemes.get(stateName);
|
|
127
|
-
if (linkedTheme === theme) continue;
|
|
128
|
-
props ||= resolveCompiledMapping(compiled, stateName, theme).nativeProps;
|
|
129
|
-
entries.push({
|
|
130
|
-
id: link.handle.id,
|
|
131
|
-
state: stateName,
|
|
132
|
-
props
|
|
133
|
-
});
|
|
134
|
-
link.stateThemes.set(stateName, theme);
|
|
129
|
+
const linked = scopeMappings.get(scopeId);
|
|
130
|
+
if (linked) {
|
|
131
|
+
for (const compiled of linked.keys()) {
|
|
132
|
+
syncTableState(compiled, stateName, theme);
|
|
135
133
|
}
|
|
136
134
|
}
|
|
137
|
-
if (entries.length) engine.updateViewStateTables(entries);
|
|
138
135
|
}
|
|
139
136
|
engine?.setStateName(stateName, scopeId);
|
|
140
137
|
}
|
|
@@ -145,65 +142,138 @@ function removeNativeStyleScope(scopeId) {
|
|
|
145
142
|
function resolveNativeStyleMapping(mapping, stateName, theme) {
|
|
146
143
|
return resolveCompiledMapping(getCompiledMapping(mapping), stateName, theme).renderProps;
|
|
147
144
|
}
|
|
148
|
-
|
|
145
|
+
let pendingLinks = [];
|
|
146
|
+
let unlinkedPending = 0;
|
|
147
|
+
function trackScopeMapping(link, delta) {
|
|
148
|
+
let linked = scopeMappings.get(link.scopeId);
|
|
149
|
+
if (!linked) scopeMappings.set(link.scopeId, linked = /* @__PURE__ */ new Map());
|
|
150
|
+
const count = (linked.get(link.compiled) ?? 0) + delta;
|
|
151
|
+
if (count) {
|
|
152
|
+
linked.set(link.compiled, count);
|
|
153
|
+
} else {
|
|
154
|
+
linked.delete(link.compiled);
|
|
155
|
+
if (!linked.size) scopeMappings.delete(link.scopeId);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function flushNativeStyleLinks() {
|
|
159
|
+
settleReleases();
|
|
160
|
+
if (!pendingLinks.length) return;
|
|
161
|
+
const links = pendingLinks;
|
|
162
|
+
pendingLinks = [];
|
|
163
|
+
unlinkedPending = 0;
|
|
164
|
+
if (!engine) return;
|
|
165
|
+
const live = links.filter((link) => link.id === 0);
|
|
166
|
+
if (!live.length) return;
|
|
167
|
+
const refs = [];
|
|
168
|
+
const tableIds = [];
|
|
169
|
+
const scopeIndexes = [];
|
|
170
|
+
const scopes = [];
|
|
171
|
+
for (const link of live) {
|
|
172
|
+
let scopeIndex = scopes.indexOf(link.scopeId);
|
|
173
|
+
if (scopeIndex === -1) scopeIndex = scopes.push(link.scopeId) - 1;
|
|
174
|
+
refs.push(link.ref);
|
|
175
|
+
tableIds.push(link.compiled.tableId);
|
|
176
|
+
scopeIndexes.push(scopeIndex);
|
|
177
|
+
}
|
|
178
|
+
const firstId = engine.linkTables(refs, tableIds, scopeIndexes, scopes);
|
|
179
|
+
for (let i = 0; i < live.length; i++) {
|
|
180
|
+
const link = live[i];
|
|
181
|
+
link.id = firstId + i;
|
|
182
|
+
link.owner = engine;
|
|
183
|
+
link.ref = null;
|
|
184
|
+
trackScopeMapping(link, 1);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const releases = /* @__PURE__ */ new Map();
|
|
188
|
+
let settleQueued = false;
|
|
189
|
+
function settleReleases() {
|
|
190
|
+
settleQueued = false;
|
|
191
|
+
if (!releases.size) return;
|
|
192
|
+
const settling = [...releases.values()];
|
|
193
|
+
releases.clear();
|
|
194
|
+
for (const release of settling) release.settle();
|
|
195
|
+
}
|
|
196
|
+
function releasable(ref, compiled, scopeId, id, settle) {
|
|
197
|
+
const handle = {
|
|
198
|
+
id,
|
|
199
|
+
unlink: () => {
|
|
200
|
+
const prior = releases.get(ref);
|
|
201
|
+
if (prior && prior.handle !== handle) prior.settle();
|
|
202
|
+
releases.set(ref, {
|
|
203
|
+
compiled,
|
|
204
|
+
scopeId,
|
|
205
|
+
handle,
|
|
206
|
+
settle
|
|
207
|
+
});
|
|
208
|
+
if (!settleQueued) {
|
|
209
|
+
settleQueued = true;
|
|
210
|
+
queueMicrotask(settleReleases);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
return handle;
|
|
215
|
+
}
|
|
216
|
+
function linkNativeStyleMapping(ref, mapping, scopeId, stateName, theme) {
|
|
149
217
|
if (!engine) return null;
|
|
150
218
|
const compiled = getCompiledMapping(mapping);
|
|
151
219
|
const scopeState = scopeStates.get(scopeId);
|
|
152
|
-
const
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
engine,
|
|
160
|
-
props: engine.processStyleColors(normalizeNativeStyle(baseStyle))
|
|
161
|
-
};
|
|
162
|
-
processedBases.set(baseStyle, base);
|
|
163
|
-
}
|
|
164
|
-
const state = {};
|
|
165
|
-
const stateThemes = /* @__PURE__ */ new Map();
|
|
166
|
-
for (const [name, cached] of compiled.states) {
|
|
167
|
-
state[name] = cached.nativeProps;
|
|
168
|
-
stateThemes.set(name, cached.theme);
|
|
169
|
-
}
|
|
170
|
-
state[currentStateName] = stateProps;
|
|
171
|
-
stateThemes.set(currentStateName, currentTheme);
|
|
172
|
-
const handle = engine.link(ref, {
|
|
173
|
-
base: base.props,
|
|
174
|
-
state
|
|
175
|
-
}, scopeId);
|
|
176
|
-
if (!handle) return null;
|
|
220
|
+
const stale = scopeState && (scopeState.name !== stateName || scopeState.theme !== theme);
|
|
221
|
+
const kept = releases.get(ref);
|
|
222
|
+
if (kept) {
|
|
223
|
+
releases.delete(ref);
|
|
224
|
+
if (!stale && kept.compiled === compiled && kept.scopeId === scopeId) return kept.handle;
|
|
225
|
+
kept.settle();
|
|
226
|
+
}
|
|
177
227
|
if (stale) {
|
|
178
|
-
|
|
228
|
+
syncTableState(compiled, scopeState.name, scopeState.theme);
|
|
229
|
+
const handle = engine.link(ref, compiled.tableId, scopeId, true);
|
|
230
|
+
if (!handle) return null;
|
|
231
|
+
const link2 = {
|
|
232
|
+
ref: null,
|
|
233
|
+
compiled,
|
|
234
|
+
scopeId,
|
|
179
235
|
id: handle.id,
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
236
|
+
owner: engine
|
|
237
|
+
};
|
|
238
|
+
trackScopeMapping(link2, 1);
|
|
239
|
+
return releasable(ref, compiled, scopeId, handle.id, () => {
|
|
240
|
+
if (link2.id === -1) return;
|
|
241
|
+
link2.id = -1;
|
|
242
|
+
if (link2.owner === engine) trackScopeMapping(link2, -1);
|
|
243
|
+
handle.unlink();
|
|
244
|
+
});
|
|
183
245
|
}
|
|
246
|
+
syncTableState(compiled, stateName, theme);
|
|
184
247
|
const link = {
|
|
185
|
-
|
|
248
|
+
ref,
|
|
249
|
+
compiled,
|
|
186
250
|
scopeId,
|
|
187
|
-
|
|
251
|
+
id: 0,
|
|
252
|
+
owner: null
|
|
188
253
|
};
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
id
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
254
|
+
pendingLinks.push(link);
|
|
255
|
+
return releasable(ref, compiled, scopeId, 0, () => {
|
|
256
|
+
const id = link.id;
|
|
257
|
+
if (id === -1) return;
|
|
258
|
+
link.id = -1;
|
|
259
|
+
link.ref = null;
|
|
260
|
+
if (id > 0) {
|
|
261
|
+
if (link.owner === engine) trackScopeMapping(link, -1);
|
|
262
|
+
link.owner.unlink(id);
|
|
263
|
+
} else if (++unlinkedPending > 512 && unlinkedPending * 2 > pendingLinks.length) {
|
|
264
|
+
pendingLinks = pendingLinks.filter((pending2) => pending2.id === 0);
|
|
265
|
+
unlinkedPending = 0;
|
|
199
266
|
}
|
|
200
|
-
};
|
|
267
|
+
});
|
|
201
268
|
}
|
|
202
|
-
const getNativeStyleEngineCacheStats = () =>
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
269
|
+
const getNativeStyleEngineCacheStats = () => {
|
|
270
|
+
const active = new Set([...scopeMappings.values()].flatMap((linked) => [...linked.keys()]));
|
|
271
|
+
return {
|
|
272
|
+
mappings: compiledMappings.size,
|
|
273
|
+
activeMappings: active.size,
|
|
274
|
+
states: [.../* @__PURE__ */ new Set([...compiledMappings.values(), ...active])].reduce((total, compiled) => total + compiled.states.size, 0)
|
|
275
|
+
};
|
|
276
|
+
};
|
|
207
277
|
let pending = null;
|
|
208
278
|
let flushListener = null;
|
|
209
279
|
function setNativeStyleEngineFlushListener(cb) {
|
|
@@ -233,5 +303,5 @@ function queueNativeViewState(entry) {
|
|
|
233
303
|
pending.push(entry);
|
|
234
304
|
}
|
|
235
305
|
|
|
236
|
-
export { getNativeStyleEngine, getNativeStyleEngineCacheStats, linkNativeStyleMapping, nativeTextInputColorProps, normalizeNativeStyle, queueNativeViewState, removeNativeStyleScope, resolveNativeStyleMapping, setNativeStyleEngine, setNativeStyleEngineFlushListener, updateNativeStyleLink, updateNativeStyleScope };
|
|
306
|
+
export { flushNativeStyleLinks, getNativeStyleEngine, getNativeStyleEngineCacheStats, linkNativeStyleMapping, nativeTextInputColorProps, normalizeNativeStyle, queueNativeViewState, removeNativeStyleScope, resolveNativeStyleMapping, setNativeStyleEngine, setNativeStyleEngineFlushListener, updateNativeStyleLink, updateNativeStyleScope };
|
|
237
307
|
//# sourceMappingURL=nativeStyleEngine.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeStyleEngine.js","names":[],"sources":["esm/helpers/nativeStyleEngine.js"],"sourcesContent":["import { getVariableValue } from \"../createVariable\";\nconst nativeTextInputColorProps = {\n placeholderTextColor: \"placeholderTextColor\",\n selectionColor: \"selectionColor\",\n cursorColor: \"cursorColor\",\n selectionHandleColor: \"selectionHandleColor\"\n};\nconst nativeOutlineProps = [\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineColor\",\n \"outlineOffset\"\n];\nconst nativeIntrinsicSizeProps = [\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\"\n];\nfunction normalizeNativeStyle(style, reset = false) {\n let next;\n if (style.outlineStyle === \"none\") {\n next = { ...style };\n for (const key of nativeOutlineProps) {\n if (reset) {\n next[key] = null;\n } else {\n delete next[key];\n }\n }\n }\n for (const key of nativeIntrinsicSizeProps) {\n const value = style[key];\n if (value === \"max-content\" || value === \"min-content\" || value === \"fit-content\") {\n next ||= { ...style };\n if (reset) {\n next[key] = null;\n } else {\n delete next[key];\n }\n }\n }\n return next ?? style;\n}\nlet engine = null;\nconst scopeStates = /* @__PURE__ */ new Map();\nconst mappingKeys = /* @__PURE__ */ new WeakMap();\nconst compiledMappings = /* @__PURE__ */ new Map();\nconst activeCompiledMappings = /* @__PURE__ */ new Set();\nconst processedBases = /* @__PURE__ */ new WeakMap();\nfunction getCompiledMapping(mapping) {\n let key = mappingKeys.get(mapping);\n if (!key) {\n key = JSON.stringify(\n Object.keys(mapping).sort().map((styleKey) => [styleKey, mapping[styleKey]])\n );\n mappingKeys.set(mapping, key);\n }\n let compiled = compiledMappings.get(key);\n if (!compiled) {\n compiled = { mapping, states: /* @__PURE__ */ new Map(), links: /* @__PURE__ */ new Set() };\n if (compiledMappings.size >= 1e4) {\n compiledMappings.clear();\n }\n compiledMappings.set(key, compiled);\n }\n return compiled;\n}\nfunction resolveCompiledMapping(compiled, stateName, theme) {\n const cached = compiled.states.get(stateName);\n if (cached?.theme === theme) return cached;\n let renderProps = {};\n for (const styleKey in compiled.mapping) {\n const value = theme[compiled.mapping[styleKey]];\n renderProps[styleKey] = value === void 0 ? null : getVariableValue(value);\n }\n renderProps = normalizeNativeStyle(renderProps, true);\n const nativeProps = engine?.processStyleColors(renderProps) ?? renderProps;\n if (compiled.states.size >= 1e4) {\n compiled.states.clear();\n for (const link of compiled.links) {\n link.stateThemes.clear();\n }\n }\n const resolved = { theme, renderProps, nativeProps };\n compiled.states.set(stateName, resolved);\n return resolved;\n}\nfunction setNativeStyleEngine(next) {\n if (engine !== next) {\n compiledMappings.clear();\n activeCompiledMappings.clear();\n }\n engine = next;\n if (next) {\n for (const [scopeId, state] of scopeStates) {\n next.setStateName(state.name, scopeId);\n }\n }\n}\nfunction getNativeStyleEngine() {\n return engine;\n}\nfunction updateNativeStyleScope(scopeId, stateName, theme) {\n const previous = scopeStates.get(scopeId);\n if (previous?.name === stateName && previous.theme === theme) return;\n scopeStates.set(scopeId, { name: stateName, theme });\n if (engine) {\n const entries = [];\n for (const compiled of activeCompiledMappings) {\n let props;\n for (const link of compiled.links) {\n if (link.scopeId !== scopeId) continue;\n const linkedTheme = link.stateThemes.get(stateName);\n if (linkedTheme === theme) continue;\n props ||= resolveCompiledMapping(\n compiled,\n stateName,\n theme\n ).nativeProps;\n entries.push({ id: link.handle.id, state: stateName, props });\n link.stateThemes.set(stateName, theme);\n }\n }\n if (entries.length) engine.updateViewStateTables(entries);\n }\n engine?.setStateName(stateName, scopeId);\n}\nfunction removeNativeStyleScope(scopeId) {\n if (!scopeStates.delete(scopeId)) return;\n engine?.removeScope(scopeId);\n}\nfunction resolveNativeStyleMapping(mapping, stateName, theme) {\n return resolveCompiledMapping(getCompiledMapping(mapping), stateName, theme).renderProps;\n}\nfunction linkNativeStyleMapping(ref, baseStyle, mapping, scopeId, stateName, theme) {\n if (!engine) return null;\n const compiled = getCompiledMapping(mapping);\n const scopeState = scopeStates.get(scopeId);\n const currentStateName = scopeState?.name ?? stateName;\n const currentTheme = scopeState?.theme ?? theme;\n const stale = currentStateName !== stateName || currentTheme !== theme;\n const stateProps = resolveCompiledMapping(\n compiled,\n currentStateName,\n currentTheme\n ).nativeProps;\n let base = processedBases.get(baseStyle);\n if (!base || base.engine !== engine) {\n base = {\n engine,\n props: engine.processStyleColors(normalizeNativeStyle(baseStyle))\n };\n processedBases.set(baseStyle, base);\n }\n const state = {};\n const stateThemes = /* @__PURE__ */ new Map();\n for (const [name, cached] of compiled.states) {\n state[name] = cached.nativeProps;\n stateThemes.set(name, cached.theme);\n }\n state[currentStateName] = stateProps;\n stateThemes.set(currentStateName, currentTheme);\n const handle = engine.link(ref, { base: base.props, state }, scopeId);\n if (!handle) return null;\n if (stale) {\n engine.updateViewStateTables([\n { id: handle.id, state: currentStateName, props: stateProps }\n ]);\n }\n const link = {\n handle,\n scopeId,\n stateThemes\n };\n compiled.links.add(link);\n activeCompiledMappings.add(compiled);\n return {\n id: handle.id,\n unlink: () => {\n compiled.links.delete(link);\n if (!compiled.links.size) {\n activeCompiledMappings.delete(compiled);\n }\n handle.unlink();\n }\n };\n}\nconst getNativeStyleEngineCacheStats = () => ({\n mappings: compiledMappings.size,\n activeMappings: activeCompiledMappings.size,\n states: [.../* @__PURE__ */ new Set([...compiledMappings.values(), ...activeCompiledMappings])].reduce(\n (total, compiled) => total + compiled.states.size,\n 0\n )\n});\nlet pending = null;\nlet flushListener = null;\nfunction setNativeStyleEngineFlushListener(cb) {\n flushListener = cb;\n}\nfunction updateNativeStyleLink(ref, host) {\n if (ref.nativeLink) {\n ref.nativeLink.unlink();\n ref.nativeLink = null;\n }\n ref.nativePushedKeys = void 0;\n if (host && engine && ref.nativeStyleUpdate) {\n ref.nativeLink = engine.link(host, {});\n }\n}\nfunction queueNativeViewState(entry) {\n if (!engine) return;\n if (!pending) {\n pending = [];\n queueMicrotask(() => {\n const entries = pending;\n pending = null;\n engine?.applyViewStates(entries);\n flushListener?.(entries);\n });\n }\n pending.push(entry);\n}\nexport {\n getNativeStyleEngine,\n getNativeStyleEngineCacheStats,\n linkNativeStyleMapping,\n nativeTextInputColorProps,\n normalizeNativeStyle,\n queueNativeViewState,\n removeNativeStyleScope,\n resolveNativeStyleMapping,\n setNativeStyleEngine,\n setNativeStyleEngineFlushListener,\n updateNativeStyleLink,\n updateNativeStyleScope\n};\n//# sourceMappingURL=nativeStyleEngine.js.map\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nativeStyleEngine.js","names":[],"sources":["esm/helpers/nativeStyleEngine.js"],"sourcesContent":["import { getVariableValue } from \"../createVariable\";\nconst nativeTextInputColorProps = {\n placeholderTextColor: \"placeholderTextColor\",\n selectionColor: \"selectionColor\",\n cursorColor: \"cursorColor\",\n selectionHandleColor: \"selectionHandleColor\"\n};\nconst nativeOutlineProps = [\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineColor\",\n \"outlineOffset\"\n];\nconst nativeIntrinsicSizeProps = [\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\"\n];\nfunction normalizeNativeStyle(style, reset = false) {\n let next;\n if (style.outlineStyle === \"none\") {\n next = { ...style };\n for (const key of nativeOutlineProps) {\n if (reset) {\n next[key] = null;\n } else {\n delete next[key];\n }\n }\n }\n for (const key of nativeIntrinsicSizeProps) {\n const value = style[key];\n if (value === \"max-content\" || value === \"min-content\" || value === \"fit-content\") {\n next ||= { ...style };\n if (reset) {\n next[key] = null;\n } else {\n delete next[key];\n }\n }\n }\n return next ?? style;\n}\nlet engine = null;\nconst scopeStates = /* @__PURE__ */ new Map();\nconst mappingKeys = /* @__PURE__ */ new WeakMap();\nconst compiledMappings = /* @__PURE__ */ new Map();\nconst scopeMappings = /* @__PURE__ */ new Map();\nlet nextTableId = 1;\nfunction getCompiledMapping(mapping) {\n let key = mappingKeys.get(mapping);\n if (!key) {\n key = JSON.stringify(\n Object.keys(mapping).sort().map((styleKey) => [styleKey, mapping[styleKey]])\n );\n mappingKeys.set(mapping, key);\n }\n let compiled = compiledMappings.get(key);\n if (!compiled) {\n compiled = {\n mapping,\n states: /* @__PURE__ */ new Map(),\n tableId: nextTableId++,\n sent: /* @__PURE__ */ new Map()\n };\n if (compiledMappings.size >= 1e4) {\n compiledMappings.clear();\n }\n compiledMappings.set(key, compiled);\n }\n return compiled;\n}\nfunction resolveCompiledMapping(compiled, stateName, theme) {\n const cached = compiled.states.get(stateName);\n if (cached?.theme === theme) return cached;\n let renderProps = {};\n for (const styleKey in compiled.mapping) {\n const value = theme[compiled.mapping[styleKey]];\n renderProps[styleKey] = value === void 0 ? null : getVariableValue(value);\n }\n renderProps = normalizeNativeStyle(renderProps, true);\n const nativeProps = engine?.processStyleColors(renderProps) ?? renderProps;\n if (compiled.states.size >= 1e4) {\n compiled.states.clear();\n }\n const resolved = { theme, renderProps, nativeProps };\n compiled.states.set(stateName, resolved);\n return resolved;\n}\nfunction syncTableState(compiled, stateName, theme) {\n const resolved = resolveCompiledMapping(compiled, stateName, theme);\n if (compiled.sent.get(stateName) === resolved) return;\n compiled.sent.set(stateName, resolved);\n engine.setTableState(compiled.tableId, stateName, resolved.nativeProps);\n}\nfunction setNativeStyleEngine(next) {\n if (engine !== next) {\n settleReleases();\n compiledMappings.clear();\n scopeMappings.clear();\n pendingLinks = [];\n unlinkedPending = 0;\n }\n engine = next;\n if (next) {\n for (const [scopeId, state] of scopeStates) {\n next.setStateName(state.name, scopeId);\n }\n }\n}\nfunction getNativeStyleEngine() {\n return engine;\n}\nfunction updateNativeStyleScope(scopeId, stateName, theme) {\n const previous = scopeStates.get(scopeId);\n if (previous?.name === stateName && previous.theme === theme) return;\n flushNativeStyleLinks();\n scopeStates.set(scopeId, { name: stateName, theme });\n if (engine) {\n const linked = scopeMappings.get(scopeId);\n if (linked) {\n for (const compiled of linked.keys()) {\n syncTableState(compiled, stateName, theme);\n }\n }\n }\n engine?.setStateName(stateName, scopeId);\n}\nfunction removeNativeStyleScope(scopeId) {\n if (!scopeStates.delete(scopeId)) return;\n engine?.removeScope(scopeId);\n}\nfunction resolveNativeStyleMapping(mapping, stateName, theme) {\n return resolveCompiledMapping(getCompiledMapping(mapping), stateName, theme).renderProps;\n}\nlet pendingLinks = [];\nlet unlinkedPending = 0;\nfunction trackScopeMapping(link, delta) {\n let linked = scopeMappings.get(link.scopeId);\n if (!linked) scopeMappings.set(link.scopeId, linked = /* @__PURE__ */ new Map());\n const count = (linked.get(link.compiled) ?? 0) + delta;\n if (count) {\n linked.set(link.compiled, count);\n } else {\n linked.delete(link.compiled);\n if (!linked.size) scopeMappings.delete(link.scopeId);\n }\n}\nfunction flushNativeStyleLinks() {\n settleReleases();\n if (!pendingLinks.length) return;\n const links = pendingLinks;\n pendingLinks = [];\n unlinkedPending = 0;\n if (!engine) return;\n const live = links.filter((link) => link.id === 0);\n if (!live.length) return;\n const refs = [];\n const tableIds = [];\n const scopeIndexes = [];\n const scopes = [];\n for (const link of live) {\n let scopeIndex = scopes.indexOf(link.scopeId);\n if (scopeIndex === -1) scopeIndex = scopes.push(link.scopeId) - 1;\n refs.push(link.ref);\n tableIds.push(link.compiled.tableId);\n scopeIndexes.push(scopeIndex);\n }\n const firstId = engine.linkTables(refs, tableIds, scopeIndexes, scopes);\n for (let i = 0; i < live.length; i++) {\n const link = live[i];\n link.id = firstId + i;\n link.owner = engine;\n link.ref = null;\n trackScopeMapping(link, 1);\n }\n}\nconst releases = /* @__PURE__ */ new Map();\nlet settleQueued = false;\nfunction settleReleases() {\n settleQueued = false;\n if (!releases.size) return;\n const settling = [...releases.values()];\n releases.clear();\n for (const release of settling) release.settle();\n}\nfunction releasable(ref, compiled, scopeId, id, settle) {\n const handle = {\n id,\n unlink: () => {\n const prior = releases.get(ref);\n if (prior && prior.handle !== handle) prior.settle();\n releases.set(ref, { compiled, scopeId, handle, settle });\n if (!settleQueued) {\n settleQueued = true;\n queueMicrotask(settleReleases);\n }\n }\n };\n return handle;\n}\nfunction linkNativeStyleMapping(ref, mapping, scopeId, stateName, theme) {\n if (!engine) return null;\n const compiled = getCompiledMapping(mapping);\n const scopeState = scopeStates.get(scopeId);\n const stale = scopeState && (scopeState.name !== stateName || scopeState.theme !== theme);\n const kept = releases.get(ref);\n if (kept) {\n releases.delete(ref);\n if (!stale && kept.compiled === compiled && kept.scopeId === scopeId)\n return kept.handle;\n kept.settle();\n }\n if (stale) {\n syncTableState(compiled, scopeState.name, scopeState.theme);\n const handle = engine.link(ref, compiled.tableId, scopeId, true);\n if (!handle) return null;\n const link2 = {\n ref: null,\n compiled,\n scopeId,\n id: handle.id,\n owner: engine\n };\n trackScopeMapping(link2, 1);\n return releasable(ref, compiled, scopeId, handle.id, () => {\n if (link2.id === -1) return;\n link2.id = -1;\n if (link2.owner === engine) trackScopeMapping(link2, -1);\n handle.unlink();\n });\n }\n syncTableState(compiled, stateName, theme);\n const link = { ref, compiled, scopeId, id: 0, owner: null };\n pendingLinks.push(link);\n return releasable(ref, compiled, scopeId, 0, () => {\n const id = link.id;\n if (id === -1) return;\n link.id = -1;\n link.ref = null;\n if (id > 0) {\n if (link.owner === engine) trackScopeMapping(link, -1);\n link.owner.unlink(id);\n } else if (++unlinkedPending > 512 && unlinkedPending * 2 > pendingLinks.length) {\n pendingLinks = pendingLinks.filter((pending2) => pending2.id === 0);\n unlinkedPending = 0;\n }\n });\n}\nconst getNativeStyleEngineCacheStats = () => {\n const active = new Set(\n [...scopeMappings.values()].flatMap((linked) => [...linked.keys()])\n );\n return {\n mappings: compiledMappings.size,\n activeMappings: active.size,\n states: [.../* @__PURE__ */ new Set([...compiledMappings.values(), ...active])].reduce(\n (total, compiled) => total + compiled.states.size,\n 0\n )\n };\n};\nlet pending = null;\nlet flushListener = null;\nfunction setNativeStyleEngineFlushListener(cb) {\n flushListener = cb;\n}\nfunction updateNativeStyleLink(ref, host) {\n if (ref.nativeLink) {\n ref.nativeLink.unlink();\n ref.nativeLink = null;\n }\n ref.nativePushedKeys = void 0;\n if (host && engine && ref.nativeStyleUpdate) {\n ref.nativeLink = engine.link(host, {});\n }\n}\nfunction queueNativeViewState(entry) {\n if (!engine) return;\n if (!pending) {\n pending = [];\n queueMicrotask(() => {\n const entries = pending;\n pending = null;\n engine?.applyViewStates(entries);\n flushListener?.(entries);\n });\n }\n pending.push(entry);\n}\nexport {\n flushNativeStyleLinks,\n getNativeStyleEngine,\n getNativeStyleEngineCacheStats,\n linkNativeStyleMapping,\n nativeTextInputColorProps,\n normalizeNativeStyle,\n queueNativeViewState,\n removeNativeStyleScope,\n resolveNativeStyleMapping,\n setNativeStyleEngine,\n setNativeStyleEngineFlushListener,\n updateNativeStyleLink,\n updateNativeStyleScope\n};\n//# sourceMappingURL=nativeStyleEngine.js.map\n"],"mappings":"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"}
|