@tamagui/web 3.0.9 → 3.0.11

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 (36) hide show
  1. package/dist/cjs/_withNativeStyle.cjs +18 -4
  2. package/dist/cjs/_withNativeStyle.native.cjs +18 -4
  3. package/dist/cjs/_withNativeStyle.native.js +18 -4
  4. package/dist/cjs/_withNativeStyle.native.js.map +1 -1
  5. package/dist/cjs/createComponent.cjs +1 -1
  6. package/dist/cjs/createComponent.native.cjs +1 -1
  7. package/dist/cjs/createComponent.native.js +1 -1
  8. package/dist/cjs/createComponent.native.js.map +1 -1
  9. package/dist/cjs/helpers/nativeStyleEngine.cjs +77 -5
  10. package/dist/cjs/helpers/nativeStyleEngine.native.cjs +80 -5
  11. package/dist/cjs/helpers/nativeStyleEngine.native.js +80 -5
  12. package/dist/cjs/helpers/nativeStyleEngine.native.js.map +1 -1
  13. package/dist/esm/_withNativeStyle.mjs +19 -5
  14. package/dist/esm/_withNativeStyle.mjs.map +1 -1
  15. package/dist/esm/_withNativeStyle.native.js +19 -5
  16. package/dist/esm/_withNativeStyle.native.js.map +1 -1
  17. package/dist/esm/createComponent.mjs +1 -1
  18. package/dist/esm/createComponent.mjs.map +1 -1
  19. package/dist/esm/createComponent.native.js +1 -1
  20. package/dist/esm/createComponent.native.js.map +1 -1
  21. package/dist/esm/helpers/nativeStyleEngine.mjs +75 -6
  22. package/dist/esm/helpers/nativeStyleEngine.mjs.map +1 -1
  23. package/dist/esm/helpers/nativeStyleEngine.native.js +78 -6
  24. package/dist/esm/helpers/nativeStyleEngine.native.js.map +1 -1
  25. package/package.json +17 -17
  26. package/src/_withNativeStyle.tsx +34 -13
  27. package/src/createComponent.tsx +5 -4
  28. package/src/helpers/nativeStyleEngine.ts +116 -6
  29. package/src/hooks/useComponentState.ts +34 -1
  30. package/types/_withNativeStyle.d.ts +5 -4
  31. package/types/_withNativeStyle.d.ts.map +1 -1
  32. package/types/createComponent.d.ts.map +1 -1
  33. package/types/helpers/nativeStyleEngine.d.ts +5 -0
  34. package/types/helpers/nativeStyleEngine.d.ts.map +1 -1
  35. package/types/hooks/useComponentState.d.ts +14 -11
  36. package/types/hooks/useComponentState.d.ts.map +1 -1
@@ -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 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 compiledMappings.clear();\n scopeMappings.clear();\n pendingHosts = [];\n pendingStates = [];\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) {\n syncTableState(compiled, stateName, theme);\n }\n }\n }\n engine?.setStateName(stateName, scopeId);\n}\nfunction removeNativeStyleScope(scopeId) {\n if (!scopeStates.delete(scopeId)) return;\n queueMicrotask(() => {\n if (!scopeStates.has(scopeId)) scopeMappings.delete(scopeId);\n });\n 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 { mapping, scopeId, stateName, theme };\n}\nlet pendingHosts = [];\nlet pendingStates = [];\nconst maxPendingHosts = 4096;\nlet idleFlushQueued = false;\nfunction idleFlush() {\n idleFlushQueued = false;\n flushNativeStyleLinks();\n}\nfunction addScopeMapping(scopeId, compiled) {\n let 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 const hosts = pendingHosts;\n const states = pendingStates;\n pendingHosts = [];\n pendingStates = [];\n if (!engine) return;\n const tableIds = new Array(hosts.length);\n const scopeIndexes = new Array(hosts.length);\n const scopes = [];\n let last;\n let tableId = 0;\n let scopeIndex = 0;\n for (let i = 0; i < hosts.length; i++) {\n const state = states[i];\n if (state !== last) {\n last = state;\n const 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 const live = scopeStates.get(state.scopeId);\n if (live && (live.name !== state.stateName || live.theme !== state.theme)) {\n const 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}\nconst getNativeStyleEngineCacheStats = () => {\n const active = new Set([...scopeMappings.values()].flatMap((linked) => [...linked]));\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}\nlet superseded = null;\nfunction queueNativeViewState(entry) {\n if (!engine) return;\n if (!pending) {\n pending = [];\n queueMicrotask(() => {\n let entries = pending;\n const dropped = superseded;\n pending = null;\n superseded = null;\n if (dropped) {\n entries = entries.filter(\n (queued, index) => index >= (dropped.get(queued.id) ?? 0)\n );\n }\n if (!entries.length) return;\n engine?.applyViewStates(entries);\n flushListener?.(entries);\n });\n }\n pending.push(entry);\n}\nfunction supersedeNativeViewStates(id) {\n if (!pending) return;\n (superseded ||= /* @__PURE__ */ new Map()).set(id, pending.length);\n}\nexport {\n createNativeStyleLinkState,\n flushNativeStyleLinks,\n getNativeStyleEngine,\n getNativeStyleEngineCacheStats,\n linkNativeStyleHost,\n nativeTextInputColorProps,\n normalizeNativeStyle,\n queueNativeViewState,\n removeNativeStyleScope,\n resolveNativeStyleMapping,\n setNativeStyleEngine,\n setNativeStyleEngineFlushListener,\n supersedeNativeViewStates,\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 compiledMappings.clear();\n scopeMappings.clear();\n pendingHosts = [];\n pendingStates = [];\n resetNativeStyleDiscovery();\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) {\n syncTableState(compiled, stateName, theme);\n }\n }\n }\n engine?.setStateName(stateName, scopeId);\n}\nfunction removeNativeStyleScope(scopeId) {\n if (!scopeStates.delete(scopeId)) return;\n queueMicrotask(() => {\n if (!scopeStates.has(scopeId)) scopeMappings.delete(scopeId);\n });\n 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 { mapping, scopeId, stateName, theme };\n}\nlet pendingHosts = [];\nlet pendingStates = [];\nconst maxPendingHosts = 4096;\nlet idleFlushQueued = false;\nconst stylesToState = /* @__PURE__ */ new WeakMap();\nlet linkedHostState = /* @__PURE__ */ new WeakMap();\nfunction hostKey(host) {\n const record = host;\n const instance = record.__internalInstanceHandle?.stateNode ?? record.stateNode;\n return instance?.canonical ?? host;\n}\nlet fiberRoot = null;\nlet needsDiscover = false;\nfunction resetNativeStyleDiscovery() {\n fiberRoot = null;\n needsDiscover = false;\n linkedHostState = /* @__PURE__ */ new WeakMap();\n}\nfunction registerNativeStyle(style, state) {\n stylesToState.set(style, state);\n}\nfunction nativeStyleMountMode() {\n const current = fiberRoot?.current;\n if (current && current.stateNode === fiberRoot) {\n if (!needsDiscover) {\n needsDiscover = true;\n queueIdleFlush();\n }\n return \"discover\";\n }\n return \"ref\";\n}\nfunction captureNativeStyleRoot(node) {\n const fiber = node?.__internalInstanceHandle;\n if (!fiber) return;\n let top = fiber;\n for (let guard = 0; top.return && guard < 1e5; guard++) top = top.return;\n const root = top.stateNode;\n if (root && root.current === top) fiberRoot = root;\n}\nfunction discoverMountedHosts() {\n const root = fiberRoot?.current;\n if (!root || root.stateNode !== fiberRoot) return 0;\n const stack = [root];\n let found = 0;\n for (let guard = 0; stack.length && guard < 1e5; guard++) {\n const fiber = stack.pop();\n if (fiber.sibling) stack.push(fiber.sibling);\n if (fiber.child) stack.push(fiber.child);\n const style = fiber.memoizedProps?.style;\n if (!style) continue;\n const state = stylesToState.get(style);\n if (!state || !fiber.stateNode?.node) continue;\n found++;\n linkNativeStyleHost(fiber, state);\n }\n return found;\n}\nfunction idleFlush() {\n idleFlushQueued = false;\n flushNativeStyleLinks();\n}\nfunction queueIdleFlush() {\n if (idleFlushQueued) return;\n idleFlushQueued = true;\n requestIdleCallback(idleFlush);\n}\nfunction addScopeMapping(scopeId, compiled) {\n let linked = scopeMappings.get(scopeId);\n if (!linked) scopeMappings.set(scopeId, linked = /* @__PURE__ */ new Set());\n linked.add(compiled);\n}\nfunction flushNativeStyleLinks() {\n if (needsDiscover) {\n needsDiscover = false;\n const current = fiberRoot?.current;\n if (!current || current.stateNode !== fiberRoot) fiberRoot = null;\n else discoverMountedHosts();\n }\n if (!pendingHosts.length) return;\n const hosts = pendingHosts;\n const states = pendingStates;\n pendingHosts = [];\n pendingStates = [];\n if (!engine) return;\n const tableIds = new Array(hosts.length);\n const scopeIndexes = new Array(hosts.length);\n const scopes = [];\n let last;\n let tableId = 0;\n let scopeIndex = 0;\n for (let i = 0; i < hosts.length; i++) {\n const state = states[i];\n if (state !== last) {\n last = state;\n const 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 || host == null) return;\n const key = hostKey(host);\n const linked = linkedHostState.get(key);\n if (linked && linked.mapping === state.mapping && linked.scopeId === state.scopeId) {\n return;\n }\n linkedHostState.set(key, state);\n const live = scopeStates.get(state.scopeId);\n if (live && (live.name !== state.stateName || live.theme !== state.theme)) {\n const 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) queueIdleFlush();\n}\nconst getNativeStyleEngineCacheStats = () => {\n const active = new Set([...scopeMappings.values()].flatMap((linked) => [...linked]));\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}\nlet superseded = null;\nfunction queueNativeViewState(entry) {\n if (!engine) return;\n if (!pending) {\n pending = [];\n queueMicrotask(() => {\n let entries = pending;\n const dropped = superseded;\n pending = null;\n superseded = null;\n if (dropped) {\n entries = entries.filter(\n (queued, index) => index >= (dropped.get(queued.id) ?? 0)\n );\n }\n if (!entries.length) return;\n engine?.applyViewStates(entries);\n flushListener?.(entries);\n });\n }\n pending.push(entry);\n}\nfunction supersedeNativeViewStates(id) {\n if (!pending) return;\n (superseded ||= /* @__PURE__ */ new Map()).set(id, pending.length);\n}\nexport {\n captureNativeStyleRoot,\n createNativeStyleLinkState,\n flushNativeStyleLinks,\n getNativeStyleEngine,\n getNativeStyleEngineCacheStats,\n linkNativeStyleHost,\n nativeStyleMountMode,\n nativeTextInputColorProps,\n normalizeNativeStyle,\n queueNativeViewState,\n registerNativeStyle,\n removeNativeStyleScope,\n resolveNativeStyleMapping,\n setNativeStyleEngine,\n setNativeStyleEngineFlushListener,\n supersedeNativeViewStates,\n updateNativeStyleLink,\n updateNativeStyleScope\n};\n//# sourceMappingURL=nativeStyleEngine.js.map\n"],"mappings":";;;AACA,MAAM,4BAA4B;CAChC,sBAAsB;CACtB,gBAAgB;CAChB,aAAa;CACb,sBAAsB;AACxB;AACA,MAAM,qBAAqB;CACzB;CACA;CACA;CACA;AACF;AACA,MAAM,2BAA2B;CAC/B;CACA;CACA;CACA;CACA;CACA;AACF;AACA,SAAS,qBAAqB,OAAO,QAAQ,OAAO;CAClD,IAAI;CACJ,IAAI,MAAM,iBAAiB,QAAQ;EACjC,OAAO,EAAE,GAAG,MAAM;EAClB,KAAK,MAAM,OAAO,oBAAoB;GACpC,IAAI,OAAO;IACT,KAAK,OAAO;GACd,OAAO;IACL,OAAO,KAAK;GACd;EACF;CACF;CACA,KAAK,MAAM,OAAO,0BAA0B;EAC1C,MAAM,QAAQ,MAAM;EACpB,IAAI,UAAU,iBAAiB,UAAU,iBAAiB,UAAU,eAAe;GACjF,SAAS,EAAE,GAAG,MAAM;GACpB,IAAI,OAAO;IACT,KAAK,OAAO;GACd,OAAO;IACL,OAAO,KAAK;GACd;EACF;CACF;CACA,OAAO,QAAQ;AACjB;AACA,IAAI,SAAS;AACb,MAAM,8BAA8B,IAAI,IAAI;AAC5C,MAAM,8BAA8B,IAAI,QAAQ;AAChD,MAAM,mCAAmC,IAAI,IAAI;AACjD,MAAM,gCAAgC,IAAI,IAAI;AAC9C,IAAI,cAAc;AAClB,SAAS,mBAAmB,SAAS;CACnC,IAAI,MAAM,YAAY,IAAI,OAAO;CACjC,IAAI,CAAC,KAAK;EACR,MAAM,KAAK,UACT,OAAO,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,aAAa,CAAC,UAAU,QAAQ,SAAS,CAAC,CAC7E;EACA,YAAY,IAAI,SAAS,GAAG;CAC9B;CACA,IAAI,WAAW,iBAAiB,IAAI,GAAG;CACvC,IAAI,CAAC,UAAU;EACb,WAAW;GACT;GACA,wBAAwB,IAAI,IAAI;GAChC,SAAS;GACT,sBAAsB,IAAI,IAAI;EAChC;EACA,IAAI,iBAAiB,QAAQ,KAAK;GAChC,iBAAiB,MAAM;EACzB;EACA,iBAAiB,IAAI,KAAK,QAAQ;CACpC;CACA,OAAO;AACT;AACA,SAAS,uBAAuB,UAAU,WAAW,OAAO;CAC1D,MAAM,SAAS,SAAS,OAAO,IAAI,SAAS;CAC5C,IAAI,QAAQ,UAAU,OAAO,OAAO;CACpC,IAAI,cAAc,CAAC;CACnB,KAAK,MAAM,YAAY,SAAS,SAAS;EACvC,MAAM,QAAQ,MAAM,SAAS,QAAQ;EACrC,YAAY,YAAY,UAAU,KAAK,IAAI,OAAO,iBAAiB,KAAK;CAC1E;CACA,cAAc,qBAAqB,aAAa,IAAI;CACpD,MAAM,cAAc,QAAQ,mBAAmB,WAAW,KAAK;CAC/D,IAAI,SAAS,OAAO,QAAQ,KAAK;EAC/B,SAAS,OAAO,MAAM;CACxB;CACA,MAAM,WAAW;EAAE;EAAO;EAAa;CAAY;CACnD,SAAS,OAAO,IAAI,WAAW,QAAQ;CACvC,OAAO;AACT;AACA,SAAS,eAAe,UAAU,WAAW,OAAO;CAClD,MAAM,WAAW,uBAAuB,UAAU,WAAW,KAAK;CAClE,IAAI,SAAS,KAAK,IAAI,SAAS,MAAM,UAAU;CAC/C,SAAS,KAAK,IAAI,WAAW,QAAQ;CACrC,OAAO,cAAc,SAAS,SAAS,WAAW,SAAS,WAAW;AACxE;AACA,SAAS,qBAAqB,MAAM;CAClC,IAAI,WAAW,MAAM;EACnB,iBAAiB,MAAM;EACvB,cAAc,MAAM;EACpB,eAAe,CAAC;EAChB,gBAAgB,CAAC;EACjB,0BAA0B;CAC5B;CACA,SAAS;CACT,IAAI,MAAM;EACR,KAAK,MAAM,CAAC,SAAS,UAAU,aAAa;GAC1C,KAAK,aAAa,MAAM,MAAM,OAAO;EACvC;CACF;AACF;AACA,SAAS,uBAAuB;CAC9B,OAAO;AACT;AACA,SAAS,uBAAuB,SAAS,WAAW,OAAO;CACzD,MAAM,WAAW,YAAY,IAAI,OAAO;CACxC,IAAI,UAAU,SAAS,aAAa,SAAS,UAAU,OAAO;CAC9D,sBAAsB;CACtB,YAAY,IAAI,SAAS;EAAE,MAAM;EAAW;CAAM,CAAC;CACnD,IAAI,QAAQ;EACV,MAAM,SAAS,cAAc,IAAI,OAAO;EACxC,IAAI,QAAQ;GACV,KAAK,MAAM,YAAY,QAAQ;IAC7B,eAAe,UAAU,WAAW,KAAK;GAC3C;EACF;CACF;CACA,QAAQ,aAAa,WAAW,OAAO;AACzC;AACA,SAAS,uBAAuB,SAAS;CACvC,IAAI,CAAC,YAAY,OAAO,OAAO,GAAG;CAClC,qBAAqB;EACnB,IAAI,CAAC,YAAY,IAAI,OAAO,GAAG,cAAc,OAAO,OAAO;CAC7D,CAAC;CACD,QAAQ,YAAY,OAAO;AAC7B;AACA,SAAS,0BAA0B,SAAS,WAAW,OAAO;CAC5D,OAAO,uBAAuB,mBAAmB,OAAO,GAAG,WAAW,KAAK,CAAC,CAAC;AAC/E;AACA,SAAS,2BAA2B,SAAS,SAAS,WAAW,OAAO;CACtE,OAAO;EAAE;EAAS;EAAS;EAAW;CAAM;AAC9C;AACA,IAAI,eAAe,CAAC;AACpB,IAAI,gBAAgB,CAAC;AACrB,MAAM,kBAAkB;AACxB,IAAI,kBAAkB;AACtB,MAAM,gCAAgC,IAAI,QAAQ;AAClD,IAAI,kCAAkC,IAAI,QAAQ;AAClD,SAAS,QAAQ,MAAM;CACrB,MAAM,SAAS;CACf,MAAM,WAAW,OAAO,0BAA0B,aAAa,OAAO;CACtE,OAAO,UAAU,aAAa;AAChC;AACA,IAAI,YAAY;AAChB,IAAI,gBAAgB;AACpB,SAAS,4BAA4B;CACnC,YAAY;CACZ,gBAAgB;CAChB,kCAAkC,IAAI,QAAQ;AAChD;AACA,SAAS,oBAAoB,OAAO,OAAO;CACzC,cAAc,IAAI,OAAO,KAAK;AAChC;AACA,SAAS,uBAAuB;CAC9B,MAAM,UAAU,WAAW;CAC3B,IAAI,WAAW,QAAQ,cAAc,WAAW;EAC9C,IAAI,CAAC,eAAe;GAClB,gBAAgB;GAChB,eAAe;EACjB;EACA,OAAO;CACT;CACA,OAAO;AACT;AACA,SAAS,uBAAuB,MAAM;CACpC,MAAM,QAAQ,MAAM;CACpB,IAAI,CAAC,OAAO;CACZ,IAAI,MAAM;CACV,KAAK,IAAI,QAAQ,GAAG,IAAI,UAAU,QAAQ,KAAK,SAAS,MAAM,IAAI;CAClE,MAAM,OAAO,IAAI;CACjB,IAAI,QAAQ,KAAK,YAAY,KAAK,YAAY;AAChD;AACA,SAAS,uBAAuB;CAC9B,MAAM,OAAO,WAAW;CACxB,IAAI,CAAC,QAAQ,KAAK,cAAc,WAAW,OAAO;CAClD,MAAM,QAAQ,CAAC,IAAI;CACnB,IAAI,QAAQ;CACZ,KAAK,IAAI,QAAQ,GAAG,MAAM,UAAU,QAAQ,KAAK,SAAS;EACxD,MAAM,QAAQ,MAAM,IAAI;EACxB,IAAI,MAAM,SAAS,MAAM,KAAK,MAAM,OAAO;EAC3C,IAAI,MAAM,OAAO,MAAM,KAAK,MAAM,KAAK;EACvC,MAAM,QAAQ,MAAM,eAAe;EACnC,IAAI,CAAC,OAAO;EACZ,MAAM,QAAQ,cAAc,IAAI,KAAK;EACrC,IAAI,CAAC,SAAS,CAAC,MAAM,WAAW,MAAM;EACtC;EACA,oBAAoB,OAAO,KAAK;CAClC;CACA,OAAO;AACT;AACA,SAAS,YAAY;CACnB,kBAAkB;CAClB,sBAAsB;AACxB;AACA,SAAS,iBAAiB;CACxB,IAAI,iBAAiB;CACrB,kBAAkB;CAClB,oBAAoB,SAAS;AAC/B;AACA,SAAS,gBAAgB,SAAS,UAAU;CAC1C,IAAI,SAAS,cAAc,IAAI,OAAO;CACtC,IAAI,CAAC,QAAQ,cAAc,IAAI,SAAS,yBAAyB,IAAI,IAAI,CAAC;CAC1E,OAAO,IAAI,QAAQ;AACrB;AACA,SAAS,wBAAwB;CAC/B,IAAI,eAAe;EACjB,gBAAgB;EAChB,MAAM,UAAU,WAAW;EAC3B,IAAI,CAAC,WAAW,QAAQ,cAAc,WAAW,YAAY;OACxD,qBAAqB;CAC5B;CACA,IAAI,CAAC,aAAa,QAAQ;CAC1B,MAAM,QAAQ;CACd,MAAM,SAAS;CACf,eAAe,CAAC;CAChB,gBAAgB,CAAC;CACjB,IAAI,CAAC,QAAQ;CACb,MAAM,WAAW,IAAI,MAAM,MAAM,MAAM;CACvC,MAAM,eAAe,IAAI,MAAM,MAAM,MAAM;CAC3C,MAAM,SAAS,CAAC;CAChB,IAAI;CACJ,IAAI,UAAU;CACd,IAAI,aAAa;CACjB,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,MAAM,QAAQ,OAAO;EACrB,IAAI,UAAU,MAAM;GAClB,OAAO;GACP,MAAM,WAAW,mBAAmB,MAAM,OAAO;GACjD,eAAe,UAAU,MAAM,WAAW,MAAM,KAAK;GACrD,gBAAgB,MAAM,SAAS,QAAQ;GACvC,UAAU,SAAS;GACnB,aAAa,OAAO,QAAQ,MAAM,OAAO;GACzC,IAAI,eAAe,CAAC,GAAG,aAAa,OAAO,KAAK,MAAM,OAAO,IAAI;EACnE;EACA,SAAS,KAAK;EACd,aAAa,KAAK;CACpB;CACA,OAAO,WAAW,OAAO,UAAU,cAAc,MAAM;AACzD;AACA,SAAS,oBAAoB,MAAM,OAAO;CACxC,IAAI,CAAC,UAAU,QAAQ,MAAM;CAC7B,MAAM,MAAM,QAAQ,IAAI;CACxB,MAAM,SAAS,gBAAgB,IAAI,GAAG;CACtC,IAAI,UAAU,OAAO,YAAY,MAAM,WAAW,OAAO,YAAY,MAAM,SAAS;EAClF;CACF;CACA,gBAAgB,IAAI,KAAK,KAAK;CAC9B,MAAM,OAAO,YAAY,IAAI,MAAM,OAAO;CAC1C,IAAI,SAAS,KAAK,SAAS,MAAM,aAAa,KAAK,UAAU,MAAM,QAAQ;EACzE,MAAM,WAAW,mBAAmB,MAAM,OAAO;EACjD,eAAe,UAAU,KAAK,MAAM,KAAK,KAAK;EAC9C,gBAAgB,MAAM,SAAS,QAAQ;EACvC,OAAO,KAAK,MAAM,SAAS,SAAS,MAAM,SAAS,IAAI;EACvD;CACF;CACA,aAAa,KAAK,IAAI;CACtB,cAAc,KAAK,KAAK;CACxB,IAAI,aAAa,UAAU,iBAAiB,eAAe;AAC7D;AACA,MAAM,uCAAuC;CAC3C,MAAM,SAAS,IAAI,IAAI,CAAC,GAAG,cAAc,OAAO,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,MAAM,CAAC,CAAC;CACnF,OAAO;EACL,UAAU,iBAAiB;EAC3B,gBAAgB,OAAO;EACvB,QAAQ,CAAC,mBAAmB,IAAI,IAAI,CAAC,GAAG,iBAAiB,OAAO,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAC7E,OAAO,aAAa,QAAQ,SAAS,OAAO,MAC7C,CACF;CACF;AACF;AACA,IAAI,UAAU;AACd,IAAI,gBAAgB;AACpB,SAAS,kCAAkC,IAAI;CAC7C,gBAAgB;AAClB;AACA,SAAS,sBAAsB,KAAK,MAAM;CACxC,IAAI,IAAI,YAAY;EAClB,IAAI,WAAW,OAAO;EACtB,IAAI,aAAa;CACnB;CACA,IAAI,mBAAmB,KAAK;CAC5B,IAAI,QAAQ,UAAU,IAAI,mBAAmB;EAC3C,IAAI,aAAa,OAAO,KAAK,MAAM,CAAC,CAAC;CACvC;AACF;AACA,IAAI,aAAa;AACjB,SAAS,qBAAqB,OAAO;CACnC,IAAI,CAAC,QAAQ;CACb,IAAI,CAAC,SAAS;EACZ,UAAU,CAAC;EACX,qBAAqB;GACnB,IAAI,UAAU;GACd,MAAM,UAAU;GAChB,UAAU;GACV,aAAa;GACb,IAAI,SAAS;IACX,UAAU,QAAQ,QACf,QAAQ,UAAU,UAAU,QAAQ,IAAI,OAAO,EAAE,KAAK,EACzD;GACF;GACA,IAAI,CAAC,QAAQ,QAAQ;GACrB,QAAQ,gBAAgB,OAAO;GAC/B,gBAAgB,OAAO;EACzB,CAAC;CACH;CACA,QAAQ,KAAK,KAAK;AACpB;AACA,SAAS,0BAA0B,IAAI;CACrC,IAAI,CAAC,SAAS;CACd,CAAC,+BAA+B,IAAI,IAAI,EAAC,CAAE,IAAI,IAAI,QAAQ,MAAM;AACnE"}
@@ -143,6 +143,7 @@ function setNativeStyleEngine(next) {
143
143
  scopeMappings.clear();
144
144
  pendingHosts = [];
145
145
  pendingStates = [];
146
+ resetNativeStyleDiscovery();
146
147
  }
147
148
  engine = next;
148
149
  if (next) {
@@ -228,16 +229,84 @@ var pendingHosts = [];
228
229
  var pendingStates = [];
229
230
  var maxPendingHosts = 4096;
230
231
  var idleFlushQueued = false;
232
+ var stylesToState = /* @__PURE__ */ new WeakMap();
233
+ var linkedHostState = /* @__PURE__ */ new WeakMap();
234
+ function hostKey(host) {
235
+ var _ref, _ref1;
236
+ var _record___internalInstanceHandle;
237
+ var record = host;
238
+ var instance = (_ref = (_record___internalInstanceHandle = record.__internalInstanceHandle) === null || _record___internalInstanceHandle === void 0 ? void 0 : _record___internalInstanceHandle.stateNode) !== null && _ref !== void 0 ? _ref : record.stateNode;
239
+ return (_ref1 = instance === null || instance === void 0 ? void 0 : instance.canonical) !== null && _ref1 !== void 0 ? _ref1 : host;
240
+ }
241
+ var fiberRoot = null;
242
+ var needsDiscover = false;
243
+ function resetNativeStyleDiscovery() {
244
+ fiberRoot = null;
245
+ needsDiscover = false;
246
+ linkedHostState = /* @__PURE__ */ new WeakMap();
247
+ }
248
+ function registerNativeStyle(style, state) {
249
+ stylesToState.set(style, state);
250
+ }
251
+ function nativeStyleMountMode() {
252
+ var current = fiberRoot === null || fiberRoot === void 0 ? void 0 : fiberRoot.current;
253
+ if (current && current.stateNode === fiberRoot) {
254
+ if (!needsDiscover) {
255
+ needsDiscover = true;
256
+ queueIdleFlush();
257
+ }
258
+ return "discover";
259
+ }
260
+ return "ref";
261
+ }
262
+ function captureNativeStyleRoot(node) {
263
+ var fiber = node === null || node === void 0 ? void 0 : node.__internalInstanceHandle;
264
+ if (!fiber) return;
265
+ var top = fiber;
266
+ for (var guard = 0; top.return && guard < 1e5; guard++) top = top.return;
267
+ var root = top.stateNode;
268
+ if (root && root.current === top) fiberRoot = root;
269
+ }
270
+ function discoverMountedHosts() {
271
+ var root = fiberRoot === null || fiberRoot === void 0 ? void 0 : fiberRoot.current;
272
+ if (!root || root.stateNode !== fiberRoot) return 0;
273
+ var stack = [root];
274
+ var found = 0;
275
+ for (var guard = 0; stack.length && guard < 1e5; guard++) {
276
+ var _fiber_memoizedProps, _fiber_stateNode;
277
+ var fiber = stack.pop();
278
+ if (fiber.sibling) stack.push(fiber.sibling);
279
+ if (fiber.child) stack.push(fiber.child);
280
+ var style = (_fiber_memoizedProps = fiber.memoizedProps) === null || _fiber_memoizedProps === void 0 ? void 0 : _fiber_memoizedProps.style;
281
+ if (!style) continue;
282
+ var state = stylesToState.get(style);
283
+ if (!state || !((_fiber_stateNode = fiber.stateNode) === null || _fiber_stateNode === void 0 ? void 0 : _fiber_stateNode.node)) continue;
284
+ found++;
285
+ linkNativeStyleHost(fiber, state);
286
+ }
287
+ return found;
288
+ }
231
289
  function idleFlush() {
232
290
  idleFlushQueued = false;
233
291
  flushNativeStyleLinks();
234
292
  }
293
+ function queueIdleFlush() {
294
+ if (idleFlushQueued) return;
295
+ idleFlushQueued = true;
296
+ requestIdleCallback(idleFlush);
297
+ }
235
298
  function addScopeMapping(scopeId, compiled) {
236
299
  var linked = scopeMappings.get(scopeId);
237
300
  if (!linked) scopeMappings.set(scopeId, linked = /* @__PURE__ */ new Set());
238
301
  linked.add(compiled);
239
302
  }
240
303
  function flushNativeStyleLinks() {
304
+ if (needsDiscover) {
305
+ needsDiscover = false;
306
+ var current = fiberRoot === null || fiberRoot === void 0 ? void 0 : fiberRoot.current;
307
+ if (!current || current.stateNode !== fiberRoot) fiberRoot = null;
308
+ else discoverMountedHosts();
309
+ }
241
310
  if (!pendingHosts.length) return;
242
311
  var hosts = pendingHosts;
243
312
  var states = pendingStates;
@@ -267,7 +336,13 @@ function flushNativeStyleLinks() {
267
336
  engine.linkTables(hosts, tableIds, scopeIndexes, scopes);
268
337
  }
269
338
  function linkNativeStyleHost(host, state) {
270
- if (!engine) return;
339
+ if (!engine || host == null) return;
340
+ var key = hostKey(host);
341
+ var linked = linkedHostState.get(key);
342
+ if (linked && linked.mapping === state.mapping && linked.scopeId === state.scopeId) {
343
+ return;
344
+ }
345
+ linkedHostState.set(key, state);
271
346
  var live = scopeStates.get(state.scopeId);
272
347
  if (live && (live.name !== state.stateName || live.theme !== state.theme)) {
273
348
  var compiled = getCompiledMapping(state.mapping);
@@ -278,10 +353,7 @@ function linkNativeStyleHost(host, state) {
278
353
  }
279
354
  pendingHosts.push(host);
280
355
  pendingStates.push(state);
281
- if (pendingHosts.length >= maxPendingHosts && !idleFlushQueued) {
282
- idleFlushQueued = true;
283
- requestIdleCallback(idleFlush);
284
- }
356
+ if (pendingHosts.length >= maxPendingHosts) queueIdleFlush();
285
357
  }
286
358
  var getNativeStyleEngineCacheStats = function getNativeStyleEngineCacheStats2() {
287
359
  var active = new Set([...scopeMappings.values()].flatMap(function(linked) {
@@ -338,5 +410,5 @@ function supersedeNativeViewStates(id) {
338
410
  (superseded || (superseded = /* @__PURE__ */ new Map())).set(id, pending.length);
339
411
  }
340
412
 
341
- export { createNativeStyleLinkState, flushNativeStyleLinks, getNativeStyleEngine, getNativeStyleEngineCacheStats, linkNativeStyleHost, nativeTextInputColorProps, normalizeNativeStyle, queueNativeViewState, removeNativeStyleScope, resolveNativeStyleMapping, setNativeStyleEngine, setNativeStyleEngineFlushListener, supersedeNativeViewStates, updateNativeStyleLink, updateNativeStyleScope };
413
+ export { captureNativeStyleRoot, createNativeStyleLinkState, flushNativeStyleLinks, getNativeStyleEngine, getNativeStyleEngineCacheStats, linkNativeStyleHost, nativeStyleMountMode, nativeTextInputColorProps, normalizeNativeStyle, queueNativeViewState, registerNativeStyle, removeNativeStyleScope, resolveNativeStyleMapping, setNativeStyleEngine, setNativeStyleEngineFlushListener, supersedeNativeViewStates, updateNativeStyleLink, updateNativeStyleScope };
342
414
  //# sourceMappingURL=nativeStyleEngine.native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nativeStyleEngine.native.js","names":[],"sources":["esm/helpers/nativeStyleEngine.native.js"],"sourcesContent":["import { getVariableValue } from \"../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 _ref;\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 : getVariableValue(value);\n }\n renderProps = normalizeNativeStyle(renderProps, true);\n var nativeProps = (_ref = engine === null || engine === void 0 ? void 0 : engine.processStyleColors(renderProps)) !== null && _ref !== void 0 ? _ref : 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 getNativeStyleEngineCacheStats2() {\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}\nexport {\n createNativeStyleLinkState,\n flushNativeStyleLinks,\n getNativeStyleEngine,\n getNativeStyleEngineCacheStats,\n linkNativeStyleHost,\n nativeTextInputColorProps,\n normalizeNativeStyle,\n queueNativeViewState,\n removeNativeStyleScope,\n resolveNativeStyleMapping,\n setNativeStyleEngine,\n setNativeStyleEngineFlushListener,\n supersedeNativeViewStates,\n updateNativeStyleLink,\n updateNativeStyleScope\n};\n//# sourceMappingURL=nativeStyleEngine.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"nativeStyleEngine.native.js","names":[],"sources":["esm/helpers/nativeStyleEngine.native.js"],"sourcesContent":["import { getVariableValue } from \"../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 _ref;\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 : getVariableValue(value);\n }\n renderProps = normalizeNativeStyle(renderProps, true);\n var nativeProps = (_ref = engine === null || engine === void 0 ? void 0 : engine.processStyleColors(renderProps)) !== null && _ref !== void 0 ? _ref : 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 resetNativeStyleDiscovery();\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;\nvar stylesToState = /* @__PURE__ */ new WeakMap();\nvar linkedHostState = /* @__PURE__ */ new WeakMap();\nfunction hostKey(host) {\n var _ref, _ref1;\n var _record___internalInstanceHandle;\n var record = host;\n var instance = (_ref = (_record___internalInstanceHandle = record.__internalInstanceHandle) === null || _record___internalInstanceHandle === void 0 ? void 0 : _record___internalInstanceHandle.stateNode) !== null && _ref !== void 0 ? _ref : record.stateNode;\n return (_ref1 = instance === null || instance === void 0 ? void 0 : instance.canonical) !== null && _ref1 !== void 0 ? _ref1 : host;\n}\nvar fiberRoot = null;\nvar needsDiscover = false;\nfunction resetNativeStyleDiscovery() {\n fiberRoot = null;\n needsDiscover = false;\n linkedHostState = /* @__PURE__ */ new WeakMap();\n}\nfunction registerNativeStyle(style, state) {\n stylesToState.set(style, state);\n}\nfunction nativeStyleMountMode() {\n var current = fiberRoot === null || fiberRoot === void 0 ? void 0 : fiberRoot.current;\n if (current && current.stateNode === fiberRoot) {\n if (!needsDiscover) {\n needsDiscover = true;\n queueIdleFlush();\n }\n return \"discover\";\n }\n return \"ref\";\n}\nfunction captureNativeStyleRoot(node) {\n var fiber = node === null || node === void 0 ? void 0 : node.__internalInstanceHandle;\n if (!fiber) return;\n var top = fiber;\n for (var guard = 0; top.return && guard < 1e5; guard++) top = top.return;\n var root = top.stateNode;\n if (root && root.current === top) fiberRoot = root;\n}\nfunction discoverMountedHosts() {\n var root = fiberRoot === null || fiberRoot === void 0 ? void 0 : fiberRoot.current;\n if (!root || root.stateNode !== fiberRoot) return 0;\n var stack = [\n root\n ];\n var found = 0;\n for (var guard = 0; stack.length && guard < 1e5; guard++) {\n var _fiber_memoizedProps, _fiber_stateNode;\n var fiber = stack.pop();\n if (fiber.sibling) stack.push(fiber.sibling);\n if (fiber.child) stack.push(fiber.child);\n var style = (_fiber_memoizedProps = fiber.memoizedProps) === null || _fiber_memoizedProps === void 0 ? void 0 : _fiber_memoizedProps.style;\n if (!style) continue;\n var state = stylesToState.get(style);\n if (!state || !((_fiber_stateNode = fiber.stateNode) === null || _fiber_stateNode === void 0 ? void 0 : _fiber_stateNode.node)) continue;\n found++;\n linkNativeStyleHost(fiber, state);\n }\n return found;\n}\nfunction idleFlush() {\n idleFlushQueued = false;\n flushNativeStyleLinks();\n}\nfunction queueIdleFlush() {\n if (idleFlushQueued) return;\n idleFlushQueued = true;\n requestIdleCallback(idleFlush);\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 (needsDiscover) {\n needsDiscover = false;\n var current = fiberRoot === null || fiberRoot === void 0 ? void 0 : fiberRoot.current;\n if (!current || current.stateNode !== fiberRoot) fiberRoot = null;\n else discoverMountedHosts();\n }\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 || host == null) return;\n var key = hostKey(host);\n var linked = linkedHostState.get(key);\n if (linked && linked.mapping === state.mapping && linked.scopeId === state.scopeId) {\n return;\n }\n linkedHostState.set(key, state);\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) queueIdleFlush();\n}\nvar getNativeStyleEngineCacheStats = function getNativeStyleEngineCacheStats2() {\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}\nexport {\n captureNativeStyleRoot,\n createNativeStyleLinkState,\n flushNativeStyleLinks,\n getNativeStyleEngine,\n getNativeStyleEngineCacheStats,\n linkNativeStyleHost,\n nativeStyleMountMode,\n nativeTextInputColorProps,\n normalizeNativeStyle,\n queueNativeViewState,\n registerNativeStyle,\n removeNativeStyleScope,\n resolveNativeStyleMapping,\n setNativeStyleEngine,\n setNativeStyleEngineFlushListener,\n supersedeNativeViewStates,\n updateNativeStyleLink,\n updateNativeStyleScope\n};\n//# sourceMappingURL=nativeStyleEngine.js.map\n"],"mappings":";;;AACA,IAAI,4BAA4B;CAC9B,sBAAsB;CACtB,gBAAgB;CAChB,aAAa;CACb,sBAAsB;AACxB;AACA,IAAI,qBAAqB;CACvB;CACA;CACA;CACA;AACF;AACA,IAAI,2BAA2B;CAC7B;CACA;CACA;CACA;CACA;CACA;AACF;AACA,SAAS,qBAAqB,OAAO;CACnC,IAAI,QAAQ,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK;CAC7E,IAAI;CACJ,IAAI,MAAM,iBAAiB,QAAQ;EACjC,OAAO,EACL,GAAG,MACL;EACA,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,mBAAmB,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IACnK,IAAI,MAAM,MAAM;IAChB,IAAI,OAAO;KACT,KAAK,OAAO;IACd,OAAO;KACL,OAAO,KAAK;IACd;GACF;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;CACF;CACA,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;CAC1F,IAAI;EACF,KAAK,IAAI,aAAa,yBAAyB,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;GAC/K,IAAI,OAAO,OAAO;GAClB,IAAI,QAAQ,MAAM;GAClB,IAAI,UAAU,iBAAiB,UAAU,iBAAiB,UAAU,eAAe;IACjF,SAAS,OAAO,EACd,GAAG,MACL;IACA,IAAI,OAAO;KACT,KAAK,QAAQ;IACf,OAAO;KACL,OAAO,KAAK;IACd;GACF;EACF;CACF,SAAS,KAAK;EACZ,qBAAqB;EACrB,kBAAkB;CACpB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;IAC5D,WAAW,OAAO;GACpB;EACF,UAAU;GACR,IAAI,oBAAoB;IACtB,MAAM;GACR;EACF;CACF;CACA,OAAO,SAAS,QAAQ,SAAS,KAAK,IAAI,OAAO;AACnD;AACA,IAAI,SAAS;AACb,IAAI,8BAA8B,IAAI,IAAI;AAC1C,IAAI,8BAA8B,IAAI,QAAQ;AAC9C,IAAI,mCAAmC,IAAI,IAAI;AAC/C,IAAI,gCAAgC,IAAI,IAAI;AAC5C,IAAI,cAAc;AAClB,SAAS,mBAAmB,SAAS;CACnC,IAAI,MAAM,YAAY,IAAI,OAAO;CACjC,IAAI,CAAC,KAAK;EACR,MAAM,KAAK,UAAU,OAAO,KAAK,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,SAAS,UAAU;GACtE,OAAO,CACL,UACA,QAAQ,SACV;EACF,CAAC,CAAC;EACF,YAAY,IAAI,SAAS,GAAG;CAC9B;CACA,IAAI,WAAW,iBAAiB,IAAI,GAAG;CACvC,IAAI,CAAC,UAAU;EACb,WAAW;GACT;GACA,wBAAwB,IAAI,IAAI;GAChC,SAAS;GACT,sBAAsB,IAAI,IAAI;EAChC;EACA,IAAI,iBAAiB,QAAQ,KAAK;GAChC,iBAAiB,MAAM;EACzB;EACA,iBAAiB,IAAI,KAAK,QAAQ;CACpC;CACA,OAAO;AACT;AACA,SAAS,uBAAuB,UAAU,WAAW,OAAO;CAC1D,IAAI;CACJ,IAAI,SAAS,SAAS,OAAO,IAAI,SAAS;CAC1C,KAAK,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO,WAAW,OAAO,OAAO;CACrF,IAAI,cAAc,CAAC;CACnB,KAAK,IAAI,YAAY,SAAS,SAAS;EACrC,IAAI,QAAQ,MAAM,SAAS,QAAQ;EACnC,YAAY,YAAY,UAAU,KAAK,IAAI,OAAO,iBAAiB,KAAK;CAC1E;CACA,cAAc,qBAAqB,aAAa,IAAI;CACpD,IAAI,eAAe,OAAO,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO,mBAAmB,WAAW,OAAO,QAAQ,SAAS,KAAK,IAAI,OAAO;CACvJ,IAAI,SAAS,OAAO,QAAQ,KAAK;EAC/B,SAAS,OAAO,MAAM;CACxB;CACA,IAAI,WAAW;EACb;EACA;EACA;CACF;CACA,SAAS,OAAO,IAAI,WAAW,QAAQ;CACvC,OAAO;AACT;AACA,SAAS,eAAe,UAAU,WAAW,OAAO;CAClD,IAAI,WAAW,uBAAuB,UAAU,WAAW,KAAK;CAChE,IAAI,SAAS,KAAK,IAAI,SAAS,MAAM,UAAU;CAC/C,SAAS,KAAK,IAAI,WAAW,QAAQ;CACrC,OAAO,cAAc,SAAS,SAAS,WAAW,SAAS,WAAW;AACxE;AACA,SAAS,qBAAqB,MAAM;CAClC,IAAI,WAAW,MAAM;EACnB,iBAAiB,MAAM;EACvB,cAAc,MAAM;EACpB,eAAe,CAAC;EAChB,gBAAgB,CAAC;EACjB,0BAA0B;CAC5B;CACA,SAAS;CACT,IAAI,MAAM;EACR,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,YAAY,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IAC5J,IAAI,CAAC,SAAS,SAAS,MAAM;IAC7B,KAAK,aAAa,MAAM,MAAM,OAAO;GACvC;EACF,SAAS,KAAK;GACZ,oBAAoB;GACpB,iBAAiB;EACnB,UAAU;GACR,IAAI;IACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;KAC1D,UAAU,OAAO;IACnB;GACF,UAAU;IACR,IAAI,mBAAmB;KACrB,MAAM;IACR;GACF;EACF;CACF;AACF;AACA,SAAS,uBAAuB;CAC9B,OAAO;AACT;AACA,SAAS,uBAAuB,SAAS,WAAW,OAAO;CACzD,IAAI,WAAW,YAAY,IAAI,OAAO;CACtC,KAAK,aAAa,QAAQ,aAAa,KAAK,IAAI,KAAK,IAAI,SAAS,UAAU,aAAa,SAAS,UAAU,OAAO;CACnH,sBAAsB;CACtB,YAAY,IAAI,SAAS;EACvB,MAAM;EACN;CACF,CAAC;CACD,IAAI,QAAQ;EACV,IAAI,SAAS,cAAc,IAAI,OAAO;EACtC,IAAI,QAAQ;GACV,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;GACvF,IAAI;IACF,KAAK,IAAI,YAAY,OAAO,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;KACvJ,IAAI,WAAW,MAAM;KACrB,eAAe,UAAU,WAAW,KAAK;IAC3C;GACF,SAAS,KAAK;IACZ,oBAAoB;IACpB,iBAAiB;GACnB,UAAU;IACR,IAAI;KACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;MAC1D,UAAU,OAAO;KACnB;IACF,UAAU;KACR,IAAI,mBAAmB;MACrB,MAAM;KACR;IACF;GACF;EACF;CACF;CACA,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO,aAAa,WAAW,OAAO;AACxF;AACA,SAAS,uBAAuB,SAAS;CACvC,IAAI,CAAC,YAAY,OAAO,OAAO,GAAG;CAClC,eAAe,WAAW;EACxB,IAAI,CAAC,YAAY,IAAI,OAAO,GAAG,cAAc,OAAO,OAAO;CAC7D,CAAC;CACD,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO,YAAY,OAAO;AAC5E;AACA,SAAS,0BAA0B,SAAS,WAAW,OAAO;CAC5D,OAAO,uBAAuB,mBAAmB,OAAO,GAAG,WAAW,KAAK,CAAC,CAAC;AAC/E;AACA,SAAS,2BAA2B,SAAS,SAAS,WAAW,OAAO;CACtE,OAAO;EACL;EACA;EACA;EACA;CACF;AACF;AACA,IAAI,eAAe,CAAC;AACpB,IAAI,gBAAgB,CAAC;AACrB,IAAI,kBAAkB;AACtB,IAAI,kBAAkB;AACtB,IAAI,gCAAgC,IAAI,QAAQ;AAChD,IAAI,kCAAkC,IAAI,QAAQ;AAClD,SAAS,QAAQ,MAAM;CACrB,IAAI,MAAM;CACV,IAAI;CACJ,IAAI,SAAS;CACb,IAAI,YAAY,QAAQ,mCAAmC,OAAO,8BAA8B,QAAQ,qCAAqC,KAAK,IAAI,KAAK,IAAI,iCAAiC,eAAe,QAAQ,SAAS,KAAK,IAAI,OAAO,OAAO;CACvP,QAAQ,QAAQ,aAAa,QAAQ,aAAa,KAAK,IAAI,KAAK,IAAI,SAAS,eAAe,QAAQ,UAAU,KAAK,IAAI,QAAQ;AACjI;AACA,IAAI,YAAY;AAChB,IAAI,gBAAgB;AACpB,SAAS,4BAA4B;CACnC,YAAY;CACZ,gBAAgB;CAChB,kCAAkC,IAAI,QAAQ;AAChD;AACA,SAAS,oBAAoB,OAAO,OAAO;CACzC,cAAc,IAAI,OAAO,KAAK;AAChC;AACA,SAAS,uBAAuB;CAC9B,IAAI,UAAU,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU;CAC9E,IAAI,WAAW,QAAQ,cAAc,WAAW;EAC9C,IAAI,CAAC,eAAe;GAClB,gBAAgB;GAChB,eAAe;EACjB;EACA,OAAO;CACT;CACA,OAAO;AACT;AACA,SAAS,uBAAuB,MAAM;CACpC,IAAI,QAAQ,SAAS,QAAQ,SAAS,KAAK,IAAI,KAAK,IAAI,KAAK;CAC7D,IAAI,CAAC,OAAO;CACZ,IAAI,MAAM;CACV,KAAK,IAAI,QAAQ,GAAG,IAAI,UAAU,QAAQ,KAAK,SAAS,MAAM,IAAI;CAClE,IAAI,OAAO,IAAI;CACf,IAAI,QAAQ,KAAK,YAAY,KAAK,YAAY;AAChD;AACA,SAAS,uBAAuB;CAC9B,IAAI,OAAO,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU;CAC3E,IAAI,CAAC,QAAQ,KAAK,cAAc,WAAW,OAAO;CAClD,IAAI,QAAQ,CACV,IACF;CACA,IAAI,QAAQ;CACZ,KAAK,IAAI,QAAQ,GAAG,MAAM,UAAU,QAAQ,KAAK,SAAS;EACxD,IAAI,sBAAsB;EAC1B,IAAI,QAAQ,MAAM,IAAI;EACtB,IAAI,MAAM,SAAS,MAAM,KAAK,MAAM,OAAO;EAC3C,IAAI,MAAM,OAAO,MAAM,KAAK,MAAM,KAAK;EACvC,IAAI,SAAS,uBAAuB,MAAM,mBAAmB,QAAQ,yBAAyB,KAAK,IAAI,KAAK,IAAI,qBAAqB;EACrI,IAAI,CAAC,OAAO;EACZ,IAAI,QAAQ,cAAc,IAAI,KAAK;EACnC,IAAI,CAAC,SAAS,GAAG,mBAAmB,MAAM,eAAe,QAAQ,qBAAqB,KAAK,IAAI,KAAK,IAAI,iBAAiB,OAAO;EAChI;EACA,oBAAoB,OAAO,KAAK;CAClC;CACA,OAAO;AACT;AACA,SAAS,YAAY;CACnB,kBAAkB;CAClB,sBAAsB;AACxB;AACA,SAAS,iBAAiB;CACxB,IAAI,iBAAiB;CACrB,kBAAkB;CAClB,oBAAoB,SAAS;AAC/B;AACA,SAAS,gBAAgB,SAAS,UAAU;CAC1C,IAAI,SAAS,cAAc,IAAI,OAAO;CACtC,IAAI,CAAC,QAAQ,cAAc,IAAI,SAAS,yBAAyB,IAAI,IAAI,CAAC;CAC1E,OAAO,IAAI,QAAQ;AACrB;AACA,SAAS,wBAAwB;CAC/B,IAAI,eAAe;EACjB,gBAAgB;EAChB,IAAI,UAAU,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU;EAC9E,IAAI,CAAC,WAAW,QAAQ,cAAc,WAAW,YAAY;OACxD,qBAAqB;CAC5B;CACA,IAAI,CAAC,aAAa,QAAQ;CAC1B,IAAI,QAAQ;CACZ,IAAI,SAAS;CACb,eAAe,CAAC;CAChB,gBAAgB,CAAC;CACjB,IAAI,CAAC,QAAQ;CACb,IAAI,WAAW,IAAI,MAAM,MAAM,MAAM;CACrC,IAAI,eAAe,IAAI,MAAM,MAAM,MAAM;CACzC,IAAI,SAAS,CAAC;CACd,IAAI;CACJ,IAAI,UAAU;CACd,IAAI,aAAa;CACjB,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACrC,IAAI,QAAQ,OAAO;EACnB,IAAI,UAAU,MAAM;GAClB,OAAO;GACP,IAAI,WAAW,mBAAmB,MAAM,OAAO;GAC/C,eAAe,UAAU,MAAM,WAAW,MAAM,KAAK;GACrD,gBAAgB,MAAM,SAAS,QAAQ;GACvC,UAAU,SAAS;GACnB,aAAa,OAAO,QAAQ,MAAM,OAAO;GACzC,IAAI,eAAe,CAAC,GAAG,aAAa,OAAO,KAAK,MAAM,OAAO,IAAI;EACnE;EACA,SAAS,KAAK;EACd,aAAa,KAAK;CACpB;CACA,OAAO,WAAW,OAAO,UAAU,cAAc,MAAM;AACzD;AACA,SAAS,oBAAoB,MAAM,OAAO;CACxC,IAAI,CAAC,UAAU,QAAQ,MAAM;CAC7B,IAAI,MAAM,QAAQ,IAAI;CACtB,IAAI,SAAS,gBAAgB,IAAI,GAAG;CACpC,IAAI,UAAU,OAAO,YAAY,MAAM,WAAW,OAAO,YAAY,MAAM,SAAS;EAClF;CACF;CACA,gBAAgB,IAAI,KAAK,KAAK;CAC9B,IAAI,OAAO,YAAY,IAAI,MAAM,OAAO;CACxC,IAAI,SAAS,KAAK,SAAS,MAAM,aAAa,KAAK,UAAU,MAAM,QAAQ;EACzE,IAAI,WAAW,mBAAmB,MAAM,OAAO;EAC/C,eAAe,UAAU,KAAK,MAAM,KAAK,KAAK;EAC9C,gBAAgB,MAAM,SAAS,QAAQ;EACvC,OAAO,KAAK,MAAM,SAAS,SAAS,MAAM,SAAS,IAAI;EACvD;CACF;CACA,aAAa,KAAK,IAAI;CACtB,cAAc,KAAK,KAAK;CACxB,IAAI,aAAa,UAAU,iBAAiB,eAAe;AAC7D;AACA,IAAI,iCAAiC,SAAS,kCAAkC;CAC9E,IAAI,SAAS,IAAI,IAAI,CACnB,GAAG,cAAc,OAAO,CAC1B,CAAC,CAAC,QAAQ,SAAS,QAAQ;EACzB,OAAO,CACL,GAAG,MACL;CACF,CAAC,CAAC;CACF,OAAO;EACL,UAAU,iBAAiB;EAC3B,gBAAgB,OAAO;EACvB,QAAQ,CACN,mBAAmB,IAAI,IAAI,CACzB,GAAG,iBAAiB,OAAO,GAC3B,GAAG,MACL,CAAC,CACH,CAAC,CAAC,OAAO,SAAS,OAAO,UAAU;GACjC,OAAO,QAAQ,SAAS,OAAO;EACjC,GAAG,CAAC;CACN;AACF;AACA,IAAI,UAAU;AACd,IAAI,gBAAgB;AACpB,SAAS,kCAAkC,IAAI;CAC7C,gBAAgB;AAClB;AACA,SAAS,sBAAsB,KAAK,MAAM;CACxC,IAAI,IAAI,YAAY;EAClB,IAAI,WAAW,OAAO;EACtB,IAAI,aAAa;CACnB;CACA,IAAI,mBAAmB,KAAK;CAC5B,IAAI,QAAQ,UAAU,IAAI,mBAAmB;EAC3C,IAAI,aAAa,OAAO,KAAK,MAAM,CAAC,CAAC;CACvC;AACF;AACA,IAAI,aAAa;AACjB,SAAS,qBAAqB,OAAO;CACnC,IAAI,CAAC,QAAQ;CACb,IAAI,CAAC,SAAS;EACZ,UAAU,CAAC;EACX,eAAe,WAAW;GACxB,IAAI,UAAU;GACd,IAAI,UAAU;GACd,UAAU;GACV,aAAa;GACb,IAAI,SAAS;IACX,UAAU,QAAQ,OAAO,SAAS,QAAQ,OAAO;KAC/C,IAAI;KACJ,OAAO,WAAW,eAAe,QAAQ,IAAI,OAAO,EAAE,OAAO,QAAQ,iBAAiB,KAAK,IAAI,eAAe;IAChH,CAAC;GACH;GACA,IAAI,CAAC,QAAQ,QAAQ;GACrB,WAAW,QAAQ,WAAW,KAAK,IAAI,KAAK,IAAI,OAAO,gBAAgB,OAAO;GAC9E,kBAAkB,QAAQ,kBAAkB,KAAK,IAAI,KAAK,IAAI,cAAc,OAAO;EACrF,CAAC;CACH;CACA,QAAQ,KAAK,KAAK;AACpB;AACA,SAAS,0BAA0B,IAAI;CACrC,IAAI,CAAC,SAAS;CACd,CAAC,eAAe,6BAA6B,IAAI,IAAI,GAAE,CAAE,IAAI,IAAI,QAAQ,MAAM;AACjF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/web",
3
- "version": "3.0.9",
3
+ "version": "3.0.11",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "Nate Wienert"
@@ -100,23 +100,23 @@
100
100
  "test:web": "vitest --typecheck --run"
101
101
  },
102
102
  "dependencies": {
103
- "@tamagui/animation-helpers": "3.0.9",
104
- "@tamagui/compose-refs": "3.0.9",
105
- "@tamagui/constants": "3.0.9",
106
- "@tamagui/dom": "3.0.9",
107
- "@tamagui/helpers": "3.0.9",
108
- "@tamagui/is-equal-shallow": "3.0.9",
109
- "@tamagui/native": "3.0.9",
110
- "@tamagui/normalize-css-color": "3.0.9",
111
- "@tamagui/react-native-types": "3.0.9",
112
- "@tamagui/style-grammar": "3.0.9",
113
- "@tamagui/types": "3.0.9",
114
- "@tamagui/use-did-finish-ssr": "3.0.9",
115
- "@tamagui/use-event": "3.0.9",
116
- "@tamagui/use-force-update": "3.0.9"
103
+ "@tamagui/animation-helpers": "3.0.11",
104
+ "@tamagui/compose-refs": "3.0.11",
105
+ "@tamagui/constants": "3.0.11",
106
+ "@tamagui/dom": "3.0.11",
107
+ "@tamagui/helpers": "3.0.11",
108
+ "@tamagui/is-equal-shallow": "3.0.11",
109
+ "@tamagui/native": "3.0.11",
110
+ "@tamagui/normalize-css-color": "3.0.11",
111
+ "@tamagui/react-native-types": "3.0.11",
112
+ "@tamagui/style-grammar": "3.0.11",
113
+ "@tamagui/types": "3.0.11",
114
+ "@tamagui/use-did-finish-ssr": "3.0.11",
115
+ "@tamagui/use-event": "3.0.11",
116
+ "@tamagui/use-force-update": "3.0.11"
117
117
  },
118
118
  "devDependencies": {
119
- "@tamagui/build": "3.0.9",
119
+ "@tamagui/build": "3.0.11",
120
120
  "@testing-library/react": "^16.1.0",
121
121
  "csstype": "^3.0.10",
122
122
  "react": "19.2.3",
@@ -133,5 +133,5 @@
133
133
  "./dist/cjs": "./dist/esm/index.native.js",
134
134
  "./theme-update": "./dist/esm/theme-update.native.js"
135
135
  },
136
- "releaseSourceCommit": "1971272fa9915450004c84ea48188100fdf278ff"
136
+ "releaseSourceCommit": "2126db6e1f5389c724e21f06ce7d7e7d9f49f4aa"
137
137
  }
@@ -3,9 +3,12 @@ import { isAndroid, isIos } from '@tamagui/constants'
3
3
  import React, { use } from 'react'
4
4
  import { _withStableStyle } from './_withStableStyle'
5
5
  import {
6
+ captureNativeStyleRoot,
6
7
  createNativeStyleLinkState,
7
8
  getNativeStyleEngine,
8
9
  linkNativeStyleHost,
10
+ nativeStyleMountMode,
11
+ registerNativeStyle,
9
12
  resolveNativeStyleMapping,
10
13
  type NativeStyleLinkState,
11
14
  type NativeStyleThemeMapping,
@@ -24,10 +27,11 @@ const hostTextProps = {
24
27
  /**
25
28
  * internal: emitted by the native compiler when experimental.nativeFastPath is on.
26
29
  *
27
- * One component over the host: the theme scope is the only context read and
28
- * the host ref queues the host for the engine's next batched link. Links never
29
- * detach (the engine prunes unmounted views), so a themed view costs one
30
- * component and one array push to mount.
30
+ * One component over the host: the theme scope is the only context read.
31
+ * Until a host ref has seen the react root, the host ref queues the view for
32
+ * the engine's next batched link. After that, themed hosts render with no ref
33
+ * and a flush walks the root. Links never detach (the engine prunes unmounted
34
+ * views).
31
35
  *
32
36
  * `host: 'view'`: `Component` is RN's host view (`unstable_NativeView`).
33
37
  * <View> resets TextAncestorContext for its children when it sits inside a
@@ -78,9 +82,8 @@ export const _withNativeStyle = (
78
82
  // one entry per scope. its style arrays (one per host mode) keep their
79
83
  // identity until the scope's state changes, then are rebuilt: a style handed
80
84
  // to a host is a prop, which react native freezes in development, so a theme
81
- // switch never writes into one. the entry's ref is stable, so a parent
82
- // re-render never detaches and re-attaches its hosts, and attaching records
83
- // the host against the state record every host of this scope shares
85
+ // switch never writes into one. the ref stays off once the react root is
86
+ // known, so a remount does not pay a callback ref per host
84
87
  const entries = new Map<string, ScopeEntry>()
85
88
  const createEntry = (): ScopeEntry => {
86
89
  const entry: ScopeEntry = {
@@ -90,7 +93,9 @@ export const _withNativeStyle = (
90
93
  theme: null,
91
94
  state: null!,
92
95
  ref: (node: unknown) => {
93
- if (node) linkHost(node, entry.state)
96
+ if (!node) return
97
+ captureRoot(node)
98
+ linkHost(node, entry.state)
94
99
  },
95
100
  }
96
101
  return entry
@@ -103,6 +108,9 @@ export const _withNativeStyle = (
103
108
  const resolve = resolveNativeStyleMapping
104
109
  const linkState = createNativeStyleLinkState
105
110
  const linkHost = linkNativeStyleHost
111
+ const registerStyle = registerNativeStyle
112
+ const mountMode = nativeStyleMountMode
113
+ const captureRoot = captureNativeStyleRoot
106
114
  const assignRef = setRef
107
115
 
108
116
  // `use` reads context from whichever render calls it, so the compiler can
@@ -146,16 +154,23 @@ export const _withNativeStyle = (
146
154
  entry.stateName = name
147
155
  entry.theme = theme
148
156
  entry.state = linkState(themeStyleKeys, scopeId, name, theme)
157
+ registerStyle(entry.style, entry.state)
158
+ registerStyle(entry.hostTextStyle, entry.state)
149
159
  }
150
160
  const style = asHostText ? entry.hostTextStyle : entry.style
151
161
  const wrapped = resetsText || (asHostText && mayRenderText(rest.children))
152
162
  const state = entry.state
153
- // a user ref composes per render; without one the entry's stable ref links
154
- const hostRef =
155
- ref == null
163
+ // once the root is known, omit our ref. a caller ref still passes through,
164
+ // and the flush walk links the host. `ref={undefined}` is itself a ref, so
165
+ // the prop has to be absent
166
+ const discover = mountMode() === 'discover'
167
+ const passedRef = discover
168
+ ? (ref ?? null)
169
+ : ref == null
156
170
  ? entry.ref
157
171
  : (node: unknown) => {
158
172
  if (!node) return assignRef(ref, null)
173
+ captureRoot(node)
159
174
  linkHost(node, state)
160
175
  // a callback ref may return its own cleanup (React 19), which
161
176
  // then replaces its null call
@@ -166,8 +181,8 @@ export const _withNativeStyle = (
166
181
  <Rendered
167
182
  key={wrapped ? undefined : key}
168
183
  {...(asHostText && hostTextProps)}
169
- {...rest}
170
- ref={hostRef}
184
+ {...(passedRef == null ? omitRef(rest) : rest)}
185
+ {...(passedRef != null ? { ref: passedRef } : null)}
171
186
  style={style}
172
187
  />
173
188
  )
@@ -198,6 +213,12 @@ interface ScopeEntry {
198
213
  ref: (node: unknown) => void
199
214
  }
200
215
 
216
+ function omitRef(props: any): any {
217
+ if (!Object.prototype.hasOwnProperty.call(props, 'ref')) return props
218
+ const { ref: _ref, ...rest } = props
219
+ return rest
220
+ }
221
+
201
222
  // <Text>'s own check for children that could render a nested <Text>: arrays
202
223
  // longer than three are assumed to
203
224
  function mayRenderText(children: unknown): boolean {
@@ -2009,13 +2009,14 @@ export function createComponent<
2009
2009
  propsIn.children
2010
2010
  )
2011
2011
  } else {
2012
- // here elementType is either the custom animated driver view, or base view
2013
- if (childrenFromHooks) {
2012
+ const isRenderPropString = typeof renderProp === 'string'
2013
+
2014
+ // here elementType is either the custom animated driver view, or base view.
2015
+ // the optimized base view would replace a custom render host, so skip it then
2016
+ if (childrenFromHooks && (!renderProp || isRenderPropString)) {
2014
2017
  content = childrenFromHooks
2015
2018
  }
2016
2019
 
2017
- const isRenderPropString = typeof renderProp === 'string'
2018
-
2019
2020
  // this ONLY handles the case where render is NOT a string
2020
2021
  // either direct JSX, or a function that returns JSX, we always clone
2021
2022
  if (renderProp && !isRenderPropString) {