@tamagui/web 3.0.5 → 3.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/cjs/_withNativeStyle.cjs +37 -20
  2. package/dist/cjs/_withNativeStyle.native.cjs +37 -20
  3. package/dist/cjs/_withNativeStyle.native.js +37 -20
  4. package/dist/cjs/_withNativeStyle.native.js.map +1 -1
  5. package/dist/cjs/createComponent.native.cjs +1 -0
  6. package/dist/cjs/createComponent.native.js +1 -0
  7. package/dist/cjs/createComponent.native.js.map +1 -1
  8. package/dist/cjs/helpers/getSplitStyles.cjs +2 -1
  9. package/dist/cjs/helpers/getSplitStyles.native.cjs +2 -1
  10. package/dist/cjs/helpers/getSplitStyles.native.js +2 -1
  11. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  12. package/dist/cjs/helpers/nativeStyleEngine.cjs +80 -122
  13. package/dist/cjs/helpers/nativeStyleEngine.native.cjs +81 -161
  14. package/dist/cjs/helpers/nativeStyleEngine.native.js +81 -161
  15. package/dist/cjs/helpers/nativeStyleEngine.native.js.map +1 -1
  16. package/dist/esm/_withNativeStyle.mjs +38 -21
  17. package/dist/esm/_withNativeStyle.mjs.map +1 -1
  18. package/dist/esm/_withNativeStyle.native.js +38 -21
  19. package/dist/esm/_withNativeStyle.native.js.map +1 -1
  20. package/dist/esm/createComponent.native.js +2 -1
  21. package/dist/esm/createComponent.native.js.map +1 -1
  22. package/dist/esm/helpers/getSplitStyles.mjs +2 -1
  23. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  24. package/dist/esm/helpers/getSplitStyles.native.js +2 -1
  25. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  26. package/dist/esm/helpers/nativeStyleEngine.mjs +78 -122
  27. package/dist/esm/helpers/nativeStyleEngine.mjs.map +1 -1
  28. package/dist/esm/helpers/nativeStyleEngine.native.js +79 -161
  29. package/dist/esm/helpers/nativeStyleEngine.native.js.map +1 -1
  30. package/package.json +17 -17
  31. package/src/_withNativeStyle.tsx +67 -31
  32. package/src/createComponent.tsx +6 -1
  33. package/src/helpers/getSplitStyles.tsx +3 -0
  34. package/src/helpers/nativeStyleEngine.ts +118 -163
  35. package/types/_withNativeStyle.d.ts +4 -3
  36. package/types/_withNativeStyle.d.ts.map +1 -1
  37. package/types/createComponent.d.ts.map +1 -1
  38. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  39. package/types/helpers/nativeStyleEngine.d.ts +26 -6
  40. package/types/helpers/nativeStyleEngine.d.ts.map +1 -1
@@ -22,10 +22,11 @@ var __copyProps = (to, from, except, desc) => {
22
22
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
23
  var nativeStyleEngine_exports = {};
24
24
  __export(nativeStyleEngine_exports, {
25
+ createNativeStyleLinkState: () => createNativeStyleLinkState,
25
26
  flushNativeStyleLinks: () => flushNativeStyleLinks,
26
27
  getNativeStyleEngine: () => getNativeStyleEngine,
27
28
  getNativeStyleEngineCacheStats: () => getNativeStyleEngineCacheStats,
28
- linkNativeStyleMapping: () => linkNativeStyleMapping,
29
+ linkNativeStyleHost: () => linkNativeStyleHost,
29
30
  nativeTextInputColorProps: () => nativeTextInputColorProps,
30
31
  normalizeNativeStyle: () => normalizeNativeStyle,
31
32
  queueNativeViewState: () => queueNativeViewState,
@@ -33,6 +34,7 @@ __export(nativeStyleEngine_exports, {
33
34
  resolveNativeStyleMapping: () => resolveNativeStyleMapping,
34
35
  setNativeStyleEngine: () => setNativeStyleEngine,
35
36
  setNativeStyleEngineFlushListener: () => setNativeStyleEngineFlushListener,
37
+ supersedeNativeViewStates: () => supersedeNativeViewStates,
36
38
  updateNativeStyleLink: () => updateNativeStyleLink,
37
39
  updateNativeStyleScope: () => updateNativeStyleScope
38
40
  });
@@ -177,11 +179,10 @@ function syncTableState(compiled, stateName, theme) {
177
179
  }
178
180
  function setNativeStyleEngine(next) {
179
181
  if (engine !== next) {
180
- settleReleases();
181
182
  compiledMappings.clear();
182
183
  scopeMappings.clear();
183
- pendingLinks = [];
184
- unlinkedPending = 0;
184
+ pendingHosts = [];
185
+ pendingStates = [];
185
186
  }
186
187
  engine = next;
187
188
  if (next) {
@@ -223,7 +224,7 @@ function updateNativeStyleScope(scopeId, stateName, theme) {
223
224
  if (linked) {
224
225
  var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
225
226
  try {
226
- for (var _iterator = linked.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
227
+ for (var _iterator = linked[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
227
228
  var compiled = _step.value;
228
229
  syncTableState(compiled, stateName, theme);
229
230
  }
@@ -247,179 +248,84 @@ function updateNativeStyleScope(scopeId, stateName, theme) {
247
248
  }
248
249
  function removeNativeStyleScope(scopeId) {
249
250
  if (!scopeStates.delete(scopeId)) return;
251
+ queueMicrotask(function() {
252
+ if (!scopeStates.has(scopeId)) scopeMappings.delete(scopeId);
253
+ });
250
254
  engine === null || engine === void 0 ? void 0 : engine.removeScope(scopeId);
251
255
  }
252
256
  function resolveNativeStyleMapping(mapping, stateName, theme) {
253
257
  return resolveCompiledMapping(getCompiledMapping(mapping), stateName, theme).renderProps;
254
258
  }
255
- var pendingLinks = [];
256
- var unlinkedPending = 0;
257
- function trackScopeMapping(link, delta) {
258
- var linked = scopeMappings.get(link.scopeId);
259
- if (!linked) scopeMappings.set(link.scopeId, linked = /* @__PURE__ */ new Map());
260
- var _linked_get;
261
- var count = ((_linked_get = linked.get(link.compiled)) !== null && _linked_get !== void 0 ? _linked_get : 0) + delta;
262
- if (count) {
263
- linked.set(link.compiled, count);
264
- } else {
265
- linked.delete(link.compiled);
266
- if (!linked.size) scopeMappings.delete(link.scopeId);
267
- }
259
+ function createNativeStyleLinkState(mapping, scopeId, stateName, theme) {
260
+ return {
261
+ mapping,
262
+ scopeId,
263
+ stateName,
264
+ theme
265
+ };
266
+ }
267
+ var pendingHosts = [];
268
+ var pendingStates = [];
269
+ var maxPendingHosts = 4096;
270
+ var idleFlushQueued = false;
271
+ function idleFlush() {
272
+ idleFlushQueued = false;
273
+ flushNativeStyleLinks();
274
+ }
275
+ function addScopeMapping(scopeId, compiled) {
276
+ var linked = scopeMappings.get(scopeId);
277
+ if (!linked) scopeMappings.set(scopeId, linked = /* @__PURE__ */ new Set());
278
+ linked.add(compiled);
268
279
  }
269
280
  function flushNativeStyleLinks() {
270
- settleReleases();
271
- if (!pendingLinks.length) return;
272
- var links = pendingLinks;
273
- pendingLinks = [];
274
- unlinkedPending = 0;
281
+ if (!pendingHosts.length) return;
282
+ var hosts = pendingHosts;
283
+ var states = pendingStates;
284
+ pendingHosts = [];
285
+ pendingStates = [];
275
286
  if (!engine) return;
276
- var live = links.filter(function(link2) {
277
- return link2.id === 0;
278
- });
279
- if (!live.length) return;
280
- var refs = [];
281
- var tableIds = [];
282
- var scopeIndexes = [];
287
+ var tableIds = new Array(hosts.length);
288
+ var scopeIndexes = new Array(hosts.length);
283
289
  var scopes = [];
284
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
285
- try {
286
- for (var _iterator = live[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
287
- var link = _step.value;
288
- var scopeIndex = scopes.indexOf(link.scopeId);
289
- if (scopeIndex === -1) scopeIndex = scopes.push(link.scopeId) - 1;
290
- refs.push(link.ref);
291
- tableIds.push(link.compiled.tableId);
292
- scopeIndexes.push(scopeIndex);
290
+ var last;
291
+ var tableId = 0;
292
+ var scopeIndex = 0;
293
+ for (var i = 0; i < hosts.length; i++) {
294
+ var state = states[i];
295
+ if (state !== last) {
296
+ last = state;
297
+ var compiled = getCompiledMapping(state.mapping);
298
+ syncTableState(compiled, state.stateName, state.theme);
299
+ addScopeMapping(state.scopeId, compiled);
300
+ tableId = compiled.tableId;
301
+ scopeIndex = scopes.indexOf(state.scopeId);
302
+ if (scopeIndex === -1) scopeIndex = scopes.push(state.scopeId) - 1;
293
303
  }
294
- } catch (err) {
295
- _didIteratorError = true;
296
- _iteratorError = err;
297
- } finally {
298
- try {
299
- if (!_iteratorNormalCompletion && _iterator.return != null) {
300
- _iterator.return();
301
- }
302
- } finally {
303
- if (_didIteratorError) {
304
- throw _iteratorError;
305
- }
306
- }
307
- }
308
- var firstId = engine.linkTables(refs, tableIds, scopeIndexes, scopes);
309
- for (var i = 0; i < live.length; i++) {
310
- var link1 = live[i];
311
- link1.id = firstId + i;
312
- link1.owner = engine;
313
- link1.ref = null;
314
- trackScopeMapping(link1, 1);
304
+ tableIds[i] = tableId;
305
+ scopeIndexes[i] = scopeIndex;
315
306
  }
307
+ engine.linkTables(hosts, tableIds, scopeIndexes, scopes);
316
308
  }
317
- var releases = /* @__PURE__ */ new Map();
318
- var settleQueued = false;
319
- function settleReleases() {
320
- settleQueued = false;
321
- if (!releases.size) return;
322
- var settling = [...releases.values()];
323
- releases.clear();
324
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
325
- try {
326
- for (var _iterator = settling[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
327
- var release = _step.value;
328
- release.settle();
329
- }
330
- } catch (err) {
331
- _didIteratorError = true;
332
- _iteratorError = err;
333
- } finally {
334
- try {
335
- if (!_iteratorNormalCompletion && _iterator.return != null) {
336
- _iterator.return();
337
- }
338
- } finally {
339
- if (_didIteratorError) {
340
- throw _iteratorError;
341
- }
342
- }
343
- }
344
- }
345
- function releasable(ref, compiled, scopeId, id, settle) {
346
- var handle = {
347
- id,
348
- unlink: function() {
349
- var prior = releases.get(ref);
350
- if (prior && prior.handle !== handle) prior.settle();
351
- releases.set(ref, {
352
- compiled,
353
- scopeId,
354
- handle,
355
- settle
356
- });
357
- if (!settleQueued) {
358
- settleQueued = true;
359
- queueMicrotask(settleReleases);
360
- }
361
- }
362
- };
363
- return handle;
364
- }
365
- function linkNativeStyleMapping(ref, mapping, scopeId, stateName, theme) {
366
- if (!engine) return null;
367
- var compiled = getCompiledMapping(mapping);
368
- var scopeState = scopeStates.get(scopeId);
369
- var stale = scopeState && (scopeState.name !== stateName || scopeState.theme !== theme);
370
- var kept = releases.get(ref);
371
- if (kept) {
372
- releases.delete(ref);
373
- if (!stale && kept.compiled === compiled && kept.scopeId === scopeId) return kept.handle;
374
- kept.settle();
309
+ function linkNativeStyleHost(host, state) {
310
+ if (!engine) return;
311
+ var live = scopeStates.get(state.scopeId);
312
+ if (live && (live.name !== state.stateName || live.theme !== state.theme)) {
313
+ var compiled = getCompiledMapping(state.mapping);
314
+ syncTableState(compiled, live.name, live.theme);
315
+ addScopeMapping(state.scopeId, compiled);
316
+ engine.link(host, compiled.tableId, state.scopeId, true);
317
+ return;
375
318
  }
376
- if (stale) {
377
- syncTableState(compiled, scopeState.name, scopeState.theme);
378
- var handle = engine.link(ref, compiled.tableId, scopeId, true);
379
- if (!handle) return null;
380
- var link = {
381
- ref: null,
382
- compiled,
383
- scopeId,
384
- id: handle.id,
385
- owner: engine
386
- };
387
- trackScopeMapping(link, 1);
388
- return releasable(ref, compiled, scopeId, handle.id, function() {
389
- if (link.id === -1) return;
390
- link.id = -1;
391
- if (link.owner === engine) trackScopeMapping(link, -1);
392
- handle.unlink();
393
- });
319
+ pendingHosts.push(host);
320
+ pendingStates.push(state);
321
+ if (pendingHosts.length >= maxPendingHosts && !idleFlushQueued) {
322
+ idleFlushQueued = true;
323
+ requestIdleCallback(idleFlush);
394
324
  }
395
- syncTableState(compiled, stateName, theme);
396
- var link1 = {
397
- ref,
398
- compiled,
399
- scopeId,
400
- id: 0,
401
- owner: null
402
- };
403
- pendingLinks.push(link1);
404
- return releasable(ref, compiled, scopeId, 0, function() {
405
- var id = link1.id;
406
- if (id === -1) return;
407
- link1.id = -1;
408
- link1.ref = null;
409
- if (id > 0) {
410
- if (link1.owner === engine) trackScopeMapping(link1, -1);
411
- link1.owner.unlink(id);
412
- } else if (++unlinkedPending > 512 && unlinkedPending * 2 > pendingLinks.length) {
413
- pendingLinks = pendingLinks.filter(function(pending2) {
414
- return pending2.id === 0;
415
- });
416
- unlinkedPending = 0;
417
- }
418
- });
419
325
  }
420
326
  var getNativeStyleEngineCacheStats = function() {
421
327
  var active = new Set([...scopeMappings.values()].flatMap(function(linked) {
422
- return [...linked.keys()];
328
+ return [...linked];
423
329
  }));
424
330
  return {
425
331
  mappings: compiledMappings.size,
@@ -444,18 +350,32 @@ function updateNativeStyleLink(ref, host) {
444
350
  ref.nativeLink = engine.link(host, {});
445
351
  }
446
352
  }
353
+ var superseded = null;
447
354
  function queueNativeViewState(entry) {
448
355
  if (!engine) return;
449
356
  if (!pending) {
450
357
  pending = [];
451
358
  queueMicrotask(function() {
452
359
  var entries = pending;
360
+ var dropped = superseded;
453
361
  pending = null;
362
+ superseded = null;
363
+ if (dropped) {
364
+ entries = entries.filter(function(queued, index) {
365
+ var _dropped_get;
366
+ return index >= ((_dropped_get = dropped.get(queued.id)) !== null && _dropped_get !== void 0 ? _dropped_get : 0);
367
+ });
368
+ }
369
+ if (!entries.length) return;
454
370
  engine === null || engine === void 0 ? void 0 : engine.applyViewStates(entries);
455
371
  flushListener === null || flushListener === void 0 ? void 0 : flushListener(entries);
456
372
  });
457
373
  }
458
374
  pending.push(entry);
459
375
  }
376
+ function supersedeNativeViewStates(id) {
377
+ if (!pending) return;
378
+ (superseded || (superseded = /* @__PURE__ */ new Map())).set(id, pending.length);
379
+ }
460
380
 
461
381
  //# sourceMappingURL=nativeStyleEngine.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nativeStyleEngine.native.js","names":[],"sources":["cjs/helpers/nativeStyleEngine.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar nativeStyleEngine_exports = {};\n__export(nativeStyleEngine_exports, {\n flushNativeStyleLinks: () => flushNativeStyleLinks,\n getNativeStyleEngine: () => getNativeStyleEngine,\n getNativeStyleEngineCacheStats: () => getNativeStyleEngineCacheStats,\n linkNativeStyleMapping: () => linkNativeStyleMapping,\n nativeTextInputColorProps: () => nativeTextInputColorProps,\n normalizeNativeStyle: () => normalizeNativeStyle,\n queueNativeViewState: () => queueNativeViewState,\n removeNativeStyleScope: () => removeNativeStyleScope,\n resolveNativeStyleMapping: () => resolveNativeStyleMapping,\n setNativeStyleEngine: () => setNativeStyleEngine,\n setNativeStyleEngineFlushListener: () => setNativeStyleEngineFlushListener,\n updateNativeStyleLink: () => updateNativeStyleLink,\n updateNativeStyleScope: () => updateNativeStyleScope\n});\nmodule.exports = __toCommonJS(nativeStyleEngine_exports);\nvar import_createVariable = require(\"../createVariable\");\nvar nativeTextInputColorProps = {\n placeholderTextColor: \"placeholderTextColor\",\n selectionColor: \"selectionColor\",\n cursorColor: \"cursorColor\",\n selectionHandleColor: \"selectionHandleColor\"\n};\nvar nativeOutlineProps = [\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineColor\",\n \"outlineOffset\"\n];\nvar nativeIntrinsicSizeProps = [\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\"\n];\nfunction normalizeNativeStyle(style) {\n var reset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var next;\n if (style.outlineStyle === \"none\") {\n next = {\n ...style\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = nativeOutlineProps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n if (reset) {\n next[key] = null;\n } else {\n delete next[key];\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = nativeIntrinsicSizeProps[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var key1 = _step1.value;\n var value = style[key1];\n if (value === \"max-content\" || value === \"min-content\" || value === \"fit-content\") {\n next || (next = {\n ...style\n });\n if (reset) {\n next[key1] = null;\n } else {\n delete next[key1];\n }\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n return next !== null && next !== void 0 ? next : style;\n}\nvar engine = null;\nvar scopeStates = /* @__PURE__ */ new Map();\nvar mappingKeys = /* @__PURE__ */ new WeakMap();\nvar compiledMappings = /* @__PURE__ */ new Map();\nvar scopeMappings = /* @__PURE__ */ new Map();\nvar nextTableId = 1;\nfunction getCompiledMapping(mapping) {\n var key = mappingKeys.get(mapping);\n if (!key) {\n key = JSON.stringify(Object.keys(mapping).sort().map(function(styleKey) {\n return [\n styleKey,\n mapping[styleKey]\n ];\n }));\n mappingKeys.set(mapping, key);\n }\n var 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 var cached = compiled.states.get(stateName);\n if ((cached === null || cached === void 0 ? void 0 : cached.theme) === theme) return cached;\n var renderProps = {};\n for (var styleKey in compiled.mapping) {\n var value = theme[compiled.mapping[styleKey]];\n renderProps[styleKey] = value === void 0 ? null : (0, import_createVariable.getVariableValue)(value);\n }\n renderProps = normalizeNativeStyle(renderProps, true);\n var _engine_processStyleColors;\n var nativeProps = (_engine_processStyleColors = engine === null || engine === void 0 ? void 0 : engine.processStyleColors(renderProps)) !== null && _engine_processStyleColors !== void 0 ? _engine_processStyleColors : renderProps;\n if (compiled.states.size >= 1e4) {\n compiled.states.clear();\n }\n var resolved = {\n theme,\n renderProps,\n nativeProps\n };\n compiled.states.set(stateName, resolved);\n return resolved;\n}\nfunction syncTableState(compiled, stateName, theme) {\n var 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 var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = scopeStates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [scopeId, state] = _step.value;\n next.setStateName(state.name, scopeId);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n}\nfunction getNativeStyleEngine() {\n return engine;\n}\nfunction updateNativeStyleScope(scopeId, stateName, theme) {\n var previous = scopeStates.get(scopeId);\n if ((previous === null || previous === void 0 ? void 0 : previous.name) === stateName && previous.theme === theme) return;\n flushNativeStyleLinks();\n scopeStates.set(scopeId, {\n name: stateName,\n theme\n });\n if (engine) {\n var linked = scopeMappings.get(scopeId);\n if (linked) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = linked.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var compiled = _step.value;\n syncTableState(compiled, stateName, theme);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n engine === null || engine === void 0 ? void 0 : engine.setStateName(stateName, scopeId);\n}\nfunction removeNativeStyleScope(scopeId) {\n if (!scopeStates.delete(scopeId)) return;\n engine === null || engine === void 0 ? void 0 : engine.removeScope(scopeId);\n}\nfunction resolveNativeStyleMapping(mapping, stateName, theme) {\n return resolveCompiledMapping(getCompiledMapping(mapping), stateName, theme).renderProps;\n}\nvar pendingLinks = [];\nvar unlinkedPending = 0;\nfunction trackScopeMapping(link, delta) {\n var linked = scopeMappings.get(link.scopeId);\n if (!linked) scopeMappings.set(link.scopeId, linked = /* @__PURE__ */ new Map());\n var _linked_get;\n var count = ((_linked_get = linked.get(link.compiled)) !== null && _linked_get !== void 0 ? _linked_get : 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 var links = pendingLinks;\n pendingLinks = [];\n unlinkedPending = 0;\n if (!engine) return;\n var live = links.filter(function(link2) {\n return link2.id === 0;\n });\n if (!live.length) return;\n var refs = [];\n var tableIds = [];\n var scopeIndexes = [];\n var scopes = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = live[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var link = _step.value;\n var 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 } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var firstId = engine.linkTables(refs, tableIds, scopeIndexes, scopes);\n for (var i = 0; i < live.length; i++) {\n var link1 = live[i];\n link1.id = firstId + i;\n link1.owner = engine;\n link1.ref = null;\n trackScopeMapping(link1, 1);\n }\n}\nvar releases = /* @__PURE__ */ new Map();\nvar settleQueued = false;\nfunction settleReleases() {\n settleQueued = false;\n if (!releases.size) return;\n var settling = [\n ...releases.values()\n ];\n releases.clear();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = settling[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var release = _step.value;\n release.settle();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\nfunction releasable(ref, compiled, scopeId, id, settle) {\n var handle = {\n id,\n unlink: function() {\n var prior = releases.get(ref);\n if (prior && prior.handle !== handle) prior.settle();\n releases.set(ref, {\n compiled,\n scopeId,\n handle,\n settle\n });\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 var compiled = getCompiledMapping(mapping);\n var scopeState = scopeStates.get(scopeId);\n var stale = scopeState && (scopeState.name !== stateName || scopeState.theme !== theme);\n var kept = releases.get(ref);\n if (kept) {\n releases.delete(ref);\n if (!stale && kept.compiled === compiled && kept.scopeId === scopeId) return kept.handle;\n kept.settle();\n }\n if (stale) {\n syncTableState(compiled, scopeState.name, scopeState.theme);\n var handle = engine.link(ref, compiled.tableId, scopeId, true);\n if (!handle) return null;\n var link = {\n ref: null,\n compiled,\n scopeId,\n id: handle.id,\n owner: engine\n };\n trackScopeMapping(link, 1);\n return releasable(ref, compiled, scopeId, handle.id, function() {\n if (link.id === -1) return;\n link.id = -1;\n if (link.owner === engine) trackScopeMapping(link, -1);\n handle.unlink();\n });\n }\n syncTableState(compiled, stateName, theme);\n var link1 = {\n ref,\n compiled,\n scopeId,\n id: 0,\n owner: null\n };\n pendingLinks.push(link1);\n return releasable(ref, compiled, scopeId, 0, function() {\n var id = link1.id;\n if (id === -1) return;\n link1.id = -1;\n link1.ref = null;\n if (id > 0) {\n if (link1.owner === engine) trackScopeMapping(link1, -1);\n link1.owner.unlink(id);\n } else if (++unlinkedPending > 512 && unlinkedPending * 2 > pendingLinks.length) {\n pendingLinks = pendingLinks.filter(function(pending2) {\n return pending2.id === 0;\n });\n unlinkedPending = 0;\n }\n });\n}\nvar getNativeStyleEngineCacheStats = function() {\n var active = new Set([\n ...scopeMappings.values()\n ].flatMap(function(linked) {\n return [\n ...linked.keys()\n ];\n }));\n return {\n mappings: compiledMappings.size,\n activeMappings: active.size,\n states: [\n .../* @__PURE__ */ new Set([\n ...compiledMappings.values(),\n ...active\n ])\n ].reduce(function(total, compiled) {\n return total + compiled.states.size;\n }, 0)\n };\n};\nvar pending = null;\nvar 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(function() {\n var entries = pending;\n pending = null;\n engine === null || engine === void 0 ? void 0 : engine.applyViewStates(entries);\n flushListener === null || flushListener === void 0 ? void 0 : flushListener(entries);\n });\n }\n pending.push(entry);\n}\n//# sourceMappingURL=nativeStyleEngine.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"nativeStyleEngine.native.js","names":[],"sources":["cjs/helpers/nativeStyleEngine.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar nativeStyleEngine_exports = {};\n__export(nativeStyleEngine_exports, {\n createNativeStyleLinkState: () => createNativeStyleLinkState,\n flushNativeStyleLinks: () => flushNativeStyleLinks,\n getNativeStyleEngine: () => getNativeStyleEngine,\n getNativeStyleEngineCacheStats: () => getNativeStyleEngineCacheStats,\n linkNativeStyleHost: () => linkNativeStyleHost,\n nativeTextInputColorProps: () => nativeTextInputColorProps,\n normalizeNativeStyle: () => normalizeNativeStyle,\n queueNativeViewState: () => queueNativeViewState,\n removeNativeStyleScope: () => removeNativeStyleScope,\n resolveNativeStyleMapping: () => resolveNativeStyleMapping,\n setNativeStyleEngine: () => setNativeStyleEngine,\n setNativeStyleEngineFlushListener: () => setNativeStyleEngineFlushListener,\n supersedeNativeViewStates: () => supersedeNativeViewStates,\n updateNativeStyleLink: () => updateNativeStyleLink,\n updateNativeStyleScope: () => updateNativeStyleScope\n});\nmodule.exports = __toCommonJS(nativeStyleEngine_exports);\nvar import_createVariable = require(\"../createVariable\");\nvar nativeTextInputColorProps = {\n placeholderTextColor: \"placeholderTextColor\",\n selectionColor: \"selectionColor\",\n cursorColor: \"cursorColor\",\n selectionHandleColor: \"selectionHandleColor\"\n};\nvar nativeOutlineProps = [\n \"outlineStyle\",\n \"outlineWidth\",\n \"outlineColor\",\n \"outlineOffset\"\n];\nvar nativeIntrinsicSizeProps = [\n \"width\",\n \"height\",\n \"minWidth\",\n \"minHeight\",\n \"maxWidth\",\n \"maxHeight\"\n];\nfunction normalizeNativeStyle(style) {\n var reset = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n var next;\n if (style.outlineStyle === \"none\") {\n next = {\n ...style\n };\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = nativeOutlineProps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n if (reset) {\n next[key] = null;\n } else {\n delete next[key];\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = nativeIntrinsicSizeProps[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var key1 = _step1.value;\n var value = style[key1];\n if (value === \"max-content\" || value === \"min-content\" || value === \"fit-content\") {\n next || (next = {\n ...style\n });\n if (reset) {\n next[key1] = null;\n } else {\n delete next[key1];\n }\n }\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n return next !== null && next !== void 0 ? next : style;\n}\nvar engine = null;\nvar scopeStates = /* @__PURE__ */ new Map();\nvar mappingKeys = /* @__PURE__ */ new WeakMap();\nvar compiledMappings = /* @__PURE__ */ new Map();\nvar scopeMappings = /* @__PURE__ */ new Map();\nvar nextTableId = 1;\nfunction getCompiledMapping(mapping) {\n var key = mappingKeys.get(mapping);\n if (!key) {\n key = JSON.stringify(Object.keys(mapping).sort().map(function(styleKey) {\n return [\n styleKey,\n mapping[styleKey]\n ];\n }));\n mappingKeys.set(mapping, key);\n }\n var 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 var cached = compiled.states.get(stateName);\n if ((cached === null || cached === void 0 ? void 0 : cached.theme) === theme) return cached;\n var renderProps = {};\n for (var styleKey in compiled.mapping) {\n var value = theme[compiled.mapping[styleKey]];\n renderProps[styleKey] = value === void 0 ? null : (0, import_createVariable.getVariableValue)(value);\n }\n renderProps = normalizeNativeStyle(renderProps, true);\n var _engine_processStyleColors;\n var nativeProps = (_engine_processStyleColors = engine === null || engine === void 0 ? void 0 : engine.processStyleColors(renderProps)) !== null && _engine_processStyleColors !== void 0 ? _engine_processStyleColors : renderProps;\n if (compiled.states.size >= 1e4) {\n compiled.states.clear();\n }\n var resolved = {\n theme,\n renderProps,\n nativeProps\n };\n compiled.states.set(stateName, resolved);\n return resolved;\n}\nfunction syncTableState(compiled, stateName, theme) {\n var 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 compiledMappings.clear();\n scopeMappings.clear();\n pendingHosts = [];\n pendingStates = [];\n }\n engine = next;\n if (next) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = scopeStates[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var [scopeId, state] = _step.value;\n next.setStateName(state.name, scopeId);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n}\nfunction getNativeStyleEngine() {\n return engine;\n}\nfunction updateNativeStyleScope(scopeId, stateName, theme) {\n var previous = scopeStates.get(scopeId);\n if ((previous === null || previous === void 0 ? void 0 : previous.name) === stateName && previous.theme === theme) return;\n flushNativeStyleLinks();\n scopeStates.set(scopeId, {\n name: stateName,\n theme\n });\n if (engine) {\n var linked = scopeMappings.get(scopeId);\n if (linked) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = linked[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var compiled = _step.value;\n syncTableState(compiled, stateName, theme);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n engine === null || engine === void 0 ? void 0 : engine.setStateName(stateName, scopeId);\n}\nfunction removeNativeStyleScope(scopeId) {\n if (!scopeStates.delete(scopeId)) return;\n queueMicrotask(function() {\n if (!scopeStates.has(scopeId)) scopeMappings.delete(scopeId);\n });\n engine === null || engine === void 0 ? void 0 : engine.removeScope(scopeId);\n}\nfunction resolveNativeStyleMapping(mapping, stateName, theme) {\n return resolveCompiledMapping(getCompiledMapping(mapping), stateName, theme).renderProps;\n}\nfunction createNativeStyleLinkState(mapping, scopeId, stateName, theme) {\n return {\n mapping,\n scopeId,\n stateName,\n theme\n };\n}\nvar pendingHosts = [];\nvar pendingStates = [];\nvar maxPendingHosts = 4096;\nvar idleFlushQueued = false;\nfunction idleFlush() {\n idleFlushQueued = false;\n flushNativeStyleLinks();\n}\nfunction addScopeMapping(scopeId, compiled) {\n var linked = scopeMappings.get(scopeId);\n if (!linked) scopeMappings.set(scopeId, linked = /* @__PURE__ */ new Set());\n linked.add(compiled);\n}\nfunction flushNativeStyleLinks() {\n if (!pendingHosts.length) return;\n var hosts = pendingHosts;\n var states = pendingStates;\n pendingHosts = [];\n pendingStates = [];\n if (!engine) return;\n var tableIds = new Array(hosts.length);\n var scopeIndexes = new Array(hosts.length);\n var scopes = [];\n var last;\n var tableId = 0;\n var scopeIndex = 0;\n for (var i = 0; i < hosts.length; i++) {\n var state = states[i];\n if (state !== last) {\n last = state;\n var compiled = getCompiledMapping(state.mapping);\n syncTableState(compiled, state.stateName, state.theme);\n addScopeMapping(state.scopeId, compiled);\n tableId = compiled.tableId;\n scopeIndex = scopes.indexOf(state.scopeId);\n if (scopeIndex === -1) scopeIndex = scopes.push(state.scopeId) - 1;\n }\n tableIds[i] = tableId;\n scopeIndexes[i] = scopeIndex;\n }\n engine.linkTables(hosts, tableIds, scopeIndexes, scopes);\n}\nfunction linkNativeStyleHost(host, state) {\n if (!engine) return;\n var live = scopeStates.get(state.scopeId);\n if (live && (live.name !== state.stateName || live.theme !== state.theme)) {\n var compiled = getCompiledMapping(state.mapping);\n syncTableState(compiled, live.name, live.theme);\n addScopeMapping(state.scopeId, compiled);\n engine.link(host, compiled.tableId, state.scopeId, true);\n return;\n }\n pendingHosts.push(host);\n pendingStates.push(state);\n if (pendingHosts.length >= maxPendingHosts && !idleFlushQueued) {\n idleFlushQueued = true;\n requestIdleCallback(idleFlush);\n }\n}\nvar getNativeStyleEngineCacheStats = function() {\n var active = new Set([\n ...scopeMappings.values()\n ].flatMap(function(linked) {\n return [\n ...linked\n ];\n }));\n return {\n mappings: compiledMappings.size,\n activeMappings: active.size,\n states: [\n .../* @__PURE__ */ new Set([\n ...compiledMappings.values(),\n ...active\n ])\n ].reduce(function(total, compiled) {\n return total + compiled.states.size;\n }, 0)\n };\n};\nvar pending = null;\nvar 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}\nvar superseded = null;\nfunction queueNativeViewState(entry) {\n if (!engine) return;\n if (!pending) {\n pending = [];\n queueMicrotask(function() {\n var entries = pending;\n var dropped = superseded;\n pending = null;\n superseded = null;\n if (dropped) {\n entries = entries.filter(function(queued, index) {\n var _dropped_get;\n return index >= ((_dropped_get = dropped.get(queued.id)) !== null && _dropped_get !== void 0 ? _dropped_get : 0);\n });\n }\n if (!entries.length) return;\n engine === null || engine === void 0 ? void 0 : engine.applyViewStates(entries);\n flushListener === null || flushListener === void 0 ? void 0 : flushListener(entries);\n });\n }\n pending.push(entry);\n}\nfunction supersedeNativeViewStates(id) {\n if (!pending) return;\n (superseded || (superseded = /* @__PURE__ */ new Map())).set(id, pending.length);\n}\n//# sourceMappingURL=nativeStyleEngine.js.map\n"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { setRef } from "@tamagui/compose-refs";
2
2
  import { isAndroid, isIos } from "@tamagui/constants";
3
3
  import { use } from "react";
4
4
  import { _withStableStyle } from "./_withStableStyle.mjs";
5
- import { getNativeStyleEngine, linkNativeStyleMapping, resolveNativeStyleMapping } from "./helpers/nativeStyleEngine.mjs";
5
+ import { createNativeStyleLinkState, getNativeStyleEngine, linkNativeStyleHost, resolveNativeStyleMapping } from "./helpers/nativeStyleEngine.mjs";
6
6
  import { ThemeStateContext, getThemeState } from "./hooks/useThemeState.mjs";
7
7
  import { hooks } from "./setupHooks.mjs";
8
8
  import { jsx } from "react/jsx-runtime";
@@ -29,13 +29,26 @@ const _withNativeStyle = (Component, baseStyle, themeStyleKeys, host) => {
29
29
  ...baseStyle,
30
30
  ...typeof baseStyle.fontWeight === "number" && { fontWeight: String(baseStyle.fontWeight) }
31
31
  } : baseStyle;
32
- const styles = /* @__PURE__ */ new Map();
33
- const hostTextStyles = /* @__PURE__ */ new Map();
32
+ const entries = /* @__PURE__ */ new Map();
33
+ const createEntry = () => {
34
+ const entry = {
35
+ style: [baseStyle, null],
36
+ hostTextStyle: [hostTextBase, null],
37
+ stateName: "",
38
+ theme: null,
39
+ state: null,
40
+ ref: (node) => {
41
+ if (node) linkHost(node, entry.state);
42
+ }
43
+ };
44
+ return entry;
45
+ };
34
46
  const ScopeContext = ThemeStateContext;
35
47
  const engineOf = getNativeStyleEngine;
36
48
  const scopeState = getThemeState;
37
49
  const resolve = resolveNativeStyleMapping;
38
- const linkMapping = linkNativeStyleMapping;
50
+ const linkState = createNativeStyleLinkState;
51
+ const linkHost = linkNativeStyleHost;
39
52
  const assignRef = setRef;
40
53
  const render = (props, key) => {
41
54
  const scopeId = use(ScopeContext);
@@ -57,28 +70,32 @@ const _withNativeStyle = (Component, baseStyle, themeStyleKeys, host) => {
57
70
  const { name, theme } = themeState;
58
71
  const asHostText = HostText && !inText;
59
72
  const Rendered = asHostText ? HostText : Component;
60
- const cache = asHostText ? hostTextStyles : styles;
61
- let style = cache.get(scopeId);
62
- if (!style) {
63
- style = [asHostText ? hostTextBase : baseStyle, null];
64
- cache.set(scopeId, style);
73
+ let entry = entries.get(scopeId);
74
+ if (!entry) {
75
+ entry = createEntry();
76
+ entries.set(scopeId, entry);
65
77
  }
66
- style[1] = resolve(themeStyleKeys, name, theme);
78
+ if (entry.stateName !== name || entry.theme !== theme) {
79
+ const themed = resolve(themeStyleKeys, name, theme);
80
+ entry.style[1] = themed;
81
+ entry.hostTextStyle[1] = themed;
82
+ entry.stateName = name;
83
+ entry.theme = theme;
84
+ entry.state = linkState(themeStyleKeys, scopeId, name, theme);
85
+ }
86
+ const style = asHostText ? entry.hostTextStyle : entry.style;
67
87
  const wrapped = resetsText || asHostText && mayRenderText(rest.children);
88
+ const state = entry.state;
89
+ const hostRef = ref == null ? entry.ref : (node) => {
90
+ if (!node) return assignRef(ref, null);
91
+ linkHost(node, state);
92
+ if (typeof ref === "function") return ref(node);
93
+ assignRef(ref, node);
94
+ };
68
95
  const element = /* @__PURE__ */ jsx(Rendered, {
69
96
  ...asHostText && hostTextProps,
70
97
  ...rest,
71
- ref: (node) => {
72
- let refCleanup;
73
- if (typeof ref === "function") refCleanup = ref(node);
74
- else assignRef(ref, node);
75
- const link = linkMapping(node, themeStyleKeys, scopeId, name, theme);
76
- return () => {
77
- link?.unlink();
78
- if (typeof refCleanup === "function") refCleanup();
79
- else assignRef(ref, null);
80
- };
81
- },
98
+ ref: hostRef,
82
99
  style
83
100
  }, wrapped ? void 0 : key);
84
101
  if (!wrapped) return element;
@@ -1 +1 @@
1
- {"version":3,"file":"_withNativeStyle.js","names":[],"sources":["esm/_withNativeStyle.js"],"sourcesContent":["import { setRef } from \"@tamagui/compose-refs\";\nimport { isAndroid, isIos } from \"@tamagui/constants\";\nimport { use } from \"react\";\nimport { _withStableStyle } from \"./_withStableStyle\";\nimport {\n getNativeStyleEngine,\n linkNativeStyleMapping,\n resolveNativeStyleMapping\n} from \"./helpers/nativeStyleEngine\";\nimport { getThemeState, ThemeStateContext } from \"./hooks/useThemeState\";\nimport { hooks } from \"./setupHooks\";\nimport { jsx } from \"react/jsx-runtime\";\nconst hostTextProps = {\n accessible: isAndroid ? false : isIos ? true : void 0,\n allowFontScaling: true,\n ellipsizeMode: \"tail\"\n};\nconst _withNativeStyle = (Component, baseStyle, themeStyleKeys, host) => {\n const Fallback = _withStableStyle(\n Component,\n (theme) => {\n const themedStyle = {};\n for (const styleKey in themeStyleKeys) {\n themedStyle[styleKey] = theme[themeStyleKeys[styleKey]]?.get();\n }\n return [baseStyle, themedStyle];\n },\n true,\n false\n );\n const baseViews = host ? hooks.getBaseViews?.() : void 0;\n const TextAncestor = baseViews?.TextAncestor;\n const TextAncestorProvider = TextAncestor?.Provider;\n const HostText = host === \"text\" && !(\"userSelect\" in baseStyle) && !(\"verticalAlign\" in baseStyle) ? baseViews?.NativeText : void 0;\n const hostTextBase = HostText ? {\n overflow: \"hidden\",\n ...baseStyle,\n ...typeof baseStyle.fontWeight === \"number\" && {\n fontWeight: String(baseStyle.fontWeight)\n }\n } : baseStyle;\n const styles = /* @__PURE__ */ new Map();\n const hostTextStyles = /* @__PURE__ */ new Map();\n const ScopeContext = ThemeStateContext;\n const engineOf = getNativeStyleEngine;\n const scopeState = getThemeState;\n const resolve = resolveNativeStyleMapping;\n const linkMapping = linkNativeStyleMapping;\n const assignRef = setRef;\n const render = (props, key) => {\n const scopeId = use(ScopeContext);\n const inText = TextAncestor ? use(TextAncestor) : false;\n const themeState = scopeId && engineOf() ? scopeState(scopeId) : void 0;\n const resetsText = inText && host === \"view\";\n if (!themeState) {\n return resetsText ? /* @__PURE__ */ jsx(TextAncestorProvider, { value: false, children: /* @__PURE__ */ jsx(Fallback, { ...props }) }, key) : /* @__PURE__ */ jsx(Fallback, { ...props }, key);\n }\n let rest = props;\n if (props._expressions !== void 0) {\n const { _expressions: _ignoredExpressions, ...withoutExpressions } = props;\n rest = withoutExpressions;\n }\n const ref = props.ref;\n const { name, theme } = themeState;\n const asHostText = HostText && !inText;\n const Rendered = asHostText ? HostText : Component;\n const cache = asHostText ? hostTextStyles : styles;\n let style = cache.get(scopeId);\n if (!style) {\n style = [asHostText ? hostTextBase : baseStyle, null];\n cache.set(scopeId, style);\n }\n style[1] = resolve(themeStyleKeys, name, theme);\n const wrapped = resetsText || asHostText && mayRenderText(rest.children);\n const element = /* @__PURE__ */ jsx(\n Rendered,\n {\n ...asHostText && hostTextProps,\n ...rest,\n ref: (node) => {\n let refCleanup;\n if (typeof ref === \"function\") refCleanup = ref(node);\n else assignRef(ref, node);\n const link = linkMapping(node, themeStyleKeys, scopeId, name, theme);\n return () => {\n link?.unlink();\n if (typeof refCleanup === \"function\") refCleanup();\n else assignRef(ref, null);\n };\n },\n style\n },\n wrapped ? void 0 : key\n );\n if (!wrapped) return element;\n return /* @__PURE__ */ jsx(TextAncestorProvider, { value: !resetsText, children: element }, key);\n };\n const NativeStyleView = (props) => render(props);\n NativeStyleView.inline = (element) => render(element.props, element.key);\n return NativeStyleView;\n};\nfunction mayRenderText(children) {\n if (children == null) return false;\n if (Array.isArray(children) && children.length <= 3) {\n return children.some((child) => child != null && typeof child === \"object\");\n }\n return typeof children === \"object\";\n}\nexport {\n _withNativeStyle\n};\n//# sourceMappingURL=_withNativeStyle.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"_withNativeStyle.js","names":[],"sources":["esm/_withNativeStyle.js"],"sourcesContent":["import { setRef } from \"@tamagui/compose-refs\";\nimport { isAndroid, isIos } from \"@tamagui/constants\";\nimport { use } from \"react\";\nimport { _withStableStyle } from \"./_withStableStyle\";\nimport {\n createNativeStyleLinkState,\n getNativeStyleEngine,\n linkNativeStyleHost,\n resolveNativeStyleMapping\n} from \"./helpers/nativeStyleEngine\";\nimport { getThemeState, ThemeStateContext } from \"./hooks/useThemeState\";\nimport { hooks } from \"./setupHooks\";\nimport { jsx } from \"react/jsx-runtime\";\nconst hostTextProps = {\n accessible: isAndroid ? false : isIos ? true : void 0,\n allowFontScaling: true,\n ellipsizeMode: \"tail\"\n};\nconst _withNativeStyle = (Component, baseStyle, themeStyleKeys, host) => {\n const Fallback = _withStableStyle(\n Component,\n (theme) => {\n const themedStyle = {};\n for (const styleKey in themeStyleKeys) {\n themedStyle[styleKey] = theme[themeStyleKeys[styleKey]]?.get();\n }\n return [baseStyle, themedStyle];\n },\n true,\n false\n );\n const baseViews = host ? hooks.getBaseViews?.() : void 0;\n const TextAncestor = baseViews?.TextAncestor;\n const TextAncestorProvider = TextAncestor?.Provider;\n const HostText = host === \"text\" && !(\"userSelect\" in baseStyle) && !(\"verticalAlign\" in baseStyle) ? baseViews?.NativeText : void 0;\n const hostTextBase = HostText ? {\n overflow: \"hidden\",\n ...baseStyle,\n ...typeof baseStyle.fontWeight === \"number\" && {\n fontWeight: String(baseStyle.fontWeight)\n }\n } : baseStyle;\n const entries = /* @__PURE__ */ new Map();\n const createEntry = () => {\n const entry = {\n style: [baseStyle, null],\n hostTextStyle: [hostTextBase, null],\n stateName: \"\",\n theme: null,\n state: null,\n ref: (node) => {\n if (node) linkHost(node, entry.state);\n }\n };\n return entry;\n };\n const ScopeContext = ThemeStateContext;\n const engineOf = getNativeStyleEngine;\n const scopeState = getThemeState;\n const resolve = resolveNativeStyleMapping;\n const linkState = createNativeStyleLinkState;\n const linkHost = linkNativeStyleHost;\n const assignRef = setRef;\n const render = (props, key) => {\n const scopeId = use(ScopeContext);\n const inText = TextAncestor ? use(TextAncestor) : false;\n const themeState = scopeId && engineOf() ? scopeState(scopeId) : void 0;\n const resetsText = inText && host === \"view\";\n if (!themeState) {\n return resetsText ? /* @__PURE__ */ jsx(TextAncestorProvider, { value: false, children: /* @__PURE__ */ jsx(Fallback, { ...props }) }, key) : /* @__PURE__ */ jsx(Fallback, { ...props }, key);\n }\n let rest = props;\n if (props._expressions !== void 0) {\n const { _expressions: _ignoredExpressions, ...withoutExpressions } = props;\n rest = withoutExpressions;\n }\n const ref = props.ref;\n const { name, theme } = themeState;\n const asHostText = HostText && !inText;\n const Rendered = asHostText ? HostText : Component;\n let entry = entries.get(scopeId);\n if (!entry) {\n entry = createEntry();\n entries.set(scopeId, entry);\n }\n if (entry.stateName !== name || entry.theme !== theme) {\n const themed = resolve(themeStyleKeys, name, theme);\n entry.style[1] = themed;\n entry.hostTextStyle[1] = themed;\n entry.stateName = name;\n entry.theme = theme;\n entry.state = linkState(themeStyleKeys, scopeId, name, theme);\n }\n const style = asHostText ? entry.hostTextStyle : entry.style;\n const wrapped = resetsText || asHostText && mayRenderText(rest.children);\n const state = entry.state;\n const hostRef = ref == null ? entry.ref : (node) => {\n if (!node) return assignRef(ref, null);\n linkHost(node, state);\n if (typeof ref === \"function\") return ref(node);\n assignRef(ref, node);\n };\n const element = /* @__PURE__ */ jsx(\n Rendered,\n {\n ...asHostText && hostTextProps,\n ...rest,\n ref: hostRef,\n style\n },\n wrapped ? void 0 : key\n );\n if (!wrapped) return element;\n return /* @__PURE__ */ jsx(TextAncestorProvider, { value: !resetsText, children: element }, key);\n };\n const NativeStyleView = (props) => render(props);\n NativeStyleView.inline = (element) => render(element.props, element.key);\n return NativeStyleView;\n};\nfunction mayRenderText(children) {\n if (children == null) return false;\n if (Array.isArray(children) && children.length <= 3) {\n return children.some((child) => child != null && typeof child === \"object\");\n }\n return typeof children === \"object\";\n}\nexport {\n _withNativeStyle\n};\n//# sourceMappingURL=_withNativeStyle.js.map\n"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { setRef } from "@tamagui/compose-refs";
3
3
  import { isAndroid, isIos } from "@tamagui/constants";
4
4
  import { use } from "react";
5
5
  import { _withStableStyle } from "./_withStableStyle.native.js";
6
- import { getNativeStyleEngine, linkNativeStyleMapping, resolveNativeStyleMapping } from "./helpers/nativeStyleEngine.native.js";
6
+ import { createNativeStyleLinkState, getNativeStyleEngine, linkNativeStyleHost, resolveNativeStyleMapping } from "./helpers/nativeStyleEngine.native.js";
7
7
  import { ThemeStateContext, getThemeState } from "./hooks/useThemeState.native.js";
8
8
  import { hooks } from "./setupHooks.native.js";
9
9
 
@@ -31,13 +31,26 @@ var _withNativeStyle = function(Component, baseStyle, themeStyleKeys, host) {
31
31
  ...baseStyle,
32
32
  ...typeof baseStyle.fontWeight === "number" && { fontWeight: String(baseStyle.fontWeight) }
33
33
  } : baseStyle;
34
- var styles = /* @__PURE__ */ new Map();
35
- var hostTextStyles = /* @__PURE__ */ new Map();
34
+ var entries = /* @__PURE__ */ new Map();
35
+ var createEntry = function() {
36
+ var entry = {
37
+ style: [baseStyle, null],
38
+ hostTextStyle: [hostTextBase, null],
39
+ stateName: "",
40
+ theme: null,
41
+ state: null,
42
+ ref: function(node) {
43
+ if (node) linkHost(node, entry.state);
44
+ }
45
+ };
46
+ return entry;
47
+ };
36
48
  var ScopeContext = ThemeStateContext;
37
49
  var engineOf = getNativeStyleEngine;
38
50
  var scopeState = getThemeState;
39
51
  var resolve = resolveNativeStyleMapping;
40
- var linkMapping = linkNativeStyleMapping;
52
+ var linkState = createNativeStyleLinkState;
53
+ var linkHost = linkNativeStyleHost;
41
54
  var assignRef = setRef;
42
55
  var render = function(props, key) {
43
56
  var scopeId = use(ScopeContext);
@@ -59,28 +72,32 @@ var _withNativeStyle = function(Component, baseStyle, themeStyleKeys, host) {
59
72
  var { name, theme } = themeState;
60
73
  var asHostText = HostText && !inText;
61
74
  var Rendered = asHostText ? HostText : Component;
62
- var cache = asHostText ? hostTextStyles : styles;
63
- var style = cache.get(scopeId);
64
- if (!style) {
65
- style = [asHostText ? hostTextBase : baseStyle, null];
66
- cache.set(scopeId, style);
75
+ var entry = entries.get(scopeId);
76
+ if (!entry) {
77
+ entry = createEntry();
78
+ entries.set(scopeId, entry);
67
79
  }
68
- style[1] = resolve(themeStyleKeys, name, theme);
80
+ if (entry.stateName !== name || entry.theme !== theme) {
81
+ var themed = resolve(themeStyleKeys, name, theme);
82
+ entry.style[1] = themed;
83
+ entry.hostTextStyle[1] = themed;
84
+ entry.stateName = name;
85
+ entry.theme = theme;
86
+ entry.state = linkState(themeStyleKeys, scopeId, name, theme);
87
+ }
88
+ var style = asHostText ? entry.hostTextStyle : entry.style;
69
89
  var wrapped = resetsText || asHostText && mayRenderText(rest.children);
90
+ var state = entry.state;
91
+ var hostRef = ref == null ? entry.ref : function(node) {
92
+ if (!node) return assignRef(ref, null);
93
+ linkHost(node, state);
94
+ if (typeof ref === "function") return ref(node);
95
+ assignRef(ref, node);
96
+ };
70
97
  var element = /* @__PURE__ */ jsx(Rendered, {
71
98
  ...asHostText && hostTextProps,
72
99
  ...rest,
73
- ref: function(node) {
74
- var refCleanup;
75
- if (typeof ref === "function") refCleanup = ref(node);
76
- else assignRef(ref, node);
77
- var link = linkMapping(node, themeStyleKeys, scopeId, name, theme);
78
- return function() {
79
- link === null || link === void 0 ? void 0 : link.unlink();
80
- if (typeof refCleanup === "function") refCleanup();
81
- else assignRef(ref, null);
82
- };
83
- },
100
+ ref: hostRef,
84
101
  style
85
102
  }, wrapped ? void 0 : key);
86
103
  if (!wrapped) return element;