@tamagui/static 3.0.0-beta.661.1 → 3.0.0-beta.719.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/cjs/check-dep-versions.cjs +0 -1
  2. package/dist/cjs/checkDeps.cjs +0 -1
  3. package/dist/cjs/compiler.cjs +0 -1
  4. package/dist/cjs/compilerHost.cjs +5 -6
  5. package/dist/cjs/constants.cjs +0 -1
  6. package/dist/cjs/domStructuralPass.cjs +0 -1
  7. package/dist/cjs/exports.cjs +0 -1
  8. package/dist/cjs/extractor/addLocalExports.cjs +0 -1
  9. package/dist/cjs/extractor/bundle.cjs +0 -1
  10. package/dist/cjs/extractor/bundleConfig.cjs +0 -1
  11. package/dist/cjs/extractor/concatClassName.cjs +0 -1
  12. package/dist/cjs/extractor/detectModuleFormat.cjs +0 -1
  13. package/dist/cjs/extractor/esbuildAliasPlugin.cjs +0 -1
  14. package/dist/cjs/extractor/esbuildTsconfigPaths.cjs +0 -1
  15. package/dist/cjs/extractor/getTamaguiConfigPathFromOptionsConfig.cjs +0 -1
  16. package/dist/cjs/extractor/loadTamagui.cjs +0 -1
  17. package/dist/cjs/extractor/regenerateConfig.cjs +2 -3
  18. package/dist/cjs/extractor/watchTamaguiConfig.cjs +0 -1
  19. package/dist/cjs/getPragmaOptions.cjs +0 -1
  20. package/dist/cjs/helpers/memoize.cjs +0 -1
  21. package/dist/cjs/helpers/requireTamaguiCore.cjs +0 -1
  22. package/dist/cjs/index.cjs +0 -1
  23. package/dist/cjs/registerRequire.cjs +0 -1
  24. package/dist/cjs/server.cjs +0 -1
  25. package/dist/cjs/staticEvaluationIgnoredModules.cjs +0 -1
  26. package/dist/cjs/types.cjs +0 -1
  27. package/dist/cjs/zero/artifact.cjs +0 -1
  28. package/dist/cjs/zero/graph.cjs +0 -1
  29. package/dist/cjs/zero/identity.cjs +0 -1
  30. package/dist/cjs/zero/index.cjs +8 -1
  31. package/dist/cjs/zero/islands.cjs +5 -3
  32. package/dist/cjs/zero/options.cjs +0 -1
  33. package/dist/cjs/zero/ownership.cjs +0 -1
  34. package/dist/cjs/zero/theme.cjs +35 -14
  35. package/dist/cjs/zero/transform.cjs +7 -3
  36. package/dist/esm/check-dep-versions.mjs.map +1 -1
  37. package/dist/esm/checkDeps.mjs.map +1 -1
  38. package/dist/esm/compiler.mjs.map +1 -1
  39. package/dist/esm/compilerHost.mjs +2 -3
  40. package/dist/esm/compilerHost.mjs.map +1 -1
  41. package/dist/esm/domStructuralPass.mjs.map +1 -1
  42. package/dist/esm/extractor/bundle.mjs.map +1 -1
  43. package/dist/esm/extractor/bundleConfig.mjs.map +1 -1
  44. package/dist/esm/extractor/esbuildAliasPlugin.mjs.map +1 -1
  45. package/dist/esm/extractor/esbuildTsconfigPaths.mjs.map +1 -1
  46. package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.mjs.map +1 -1
  47. package/dist/esm/extractor/loadTamagui.mjs.map +1 -1
  48. package/dist/esm/extractor/regenerateConfig.mjs +1 -1
  49. package/dist/esm/extractor/regenerateConfig.mjs.map +1 -1
  50. package/dist/esm/extractor/watchTamaguiConfig.mjs.map +1 -1
  51. package/dist/esm/getPragmaOptions.mjs.map +1 -1
  52. package/dist/esm/helpers/requireTamaguiCore.mjs.map +1 -1
  53. package/dist/esm/registerRequire.mjs.map +1 -1
  54. package/dist/esm/server.mjs.map +1 -1
  55. package/dist/esm/zero/artifact.mjs.map +1 -1
  56. package/dist/esm/zero/graph.mjs.map +1 -1
  57. package/dist/esm/zero/identity.mjs.map +1 -1
  58. package/dist/esm/zero/index.mjs +4 -0
  59. package/dist/esm/zero/islands.mjs +5 -2
  60. package/dist/esm/zero/islands.mjs.map +1 -1
  61. package/dist/esm/zero/options.mjs.map +1 -1
  62. package/dist/esm/zero/ownership.mjs.map +1 -1
  63. package/dist/esm/zero/theme.mjs +35 -13
  64. package/dist/esm/zero/theme.mjs.map +1 -1
  65. package/dist/esm/zero/transform.mjs +7 -2
  66. package/dist/esm/zero/transform.mjs.map +1 -1
  67. package/package.json +19 -19
  68. package/src/compilerHost.ts +1 -1
  69. package/src/extractor/regenerateConfig.ts +1 -1
  70. package/src/zero/index.ts +1 -0
  71. package/src/zero/islands.ts +5 -2
  72. package/src/zero/theme.ts +49 -17
  73. package/src/zero/transform.ts +13 -4
  74. package/types/zero/index.d.ts +1 -0
  75. package/types/zero/index.d.ts.map +1 -1
  76. package/types/zero/islands.d.ts.map +1 -1
  77. package/types/zero/theme.d.ts +2 -1
  78. package/types/zero/theme.d.ts.map +1 -1
  79. package/types/zero/transform.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"transform.js","names":[],"sources":["esm/zero/transform.js"],"sourcesContent":["import {\n applyLoweredModule,\n childNode,\n childNodes,\n parseModuleAst,\n planZeroErasure,\n resolvedModuleId,\n walkAst,\n zeroIslandThemeMessage,\n zeroViolationsFromPlan\n} from \"@tamagui/compiler-core\";\nimport { createHash } from \"node:crypto\";\nimport path from \"node:path\";\nimport {\n foldBranches,\n lowerStaticTheme,\n readStaticTheme,\n resolveThemeChain\n} from \"./theme\";\nfunction identifierNameOf(node) {\n return node && node.type === \"Identifier\" && typeof node.name === \"string\" ? node.name : null;\n}\nfunction jsxNameOf(element) {\n const opening = childNode(element, \"openingElement\");\n if (!opening) return null;\n const name = childNode(opening, \"name\");\n return name && name.type === \"JSXIdentifier\" && typeof name.name === \"string\" ? name.name : null;\n}\nfunction transformZeroModule(input) {\n const { id, source, config } = input;\n const moduleId = resolvedModuleId(id);\n const program = parseModuleAst(source, id);\n const violations = zeroViolationsFromPlan(input.plan);\n const edits = [];\n const bridges = /* @__PURE__ */ new Map();\n const bridgeCSS = /* @__PURE__ */ new Map();\n let themeLocal = null;\n const islandLocals = /* @__PURE__ */ new Map();\n for (const statement of childNodes(program, \"body\")) {\n if (statement.type !== \"ImportDeclaration\") continue;\n const sourceNode = childNode(statement, \"source\");\n const specifier = sourceNode && typeof sourceNode.value === \"string\" ? sourceNode.value : null;\n if (!specifier) continue;\n const island = input.resolveIslandLoader(specifier);\n for (const importSpecifier of childNodes(statement, \"specifiers\")) {\n const local = identifierNameOf(childNode(importSpecifier, \"local\"));\n if (!local) continue;\n if (island) {\n islandLocals.set(local, island.islandId);\n continue;\n }\n if (!input.isTamaguiSpecifier(specifier)) continue;\n const imported = childNode(importSpecifier, \"imported\");\n if (imported && imported.name === \"Theme\") themeLocal = local;\n }\n }\n const parents = /* @__PURE__ */ new Map();\n const elements = [];\n walkAst(program, (node, parent) => {\n if (parent) parents.set(node, parent);\n if (node.type === \"JSXElement\") elements.push(node);\n });\n const themeElements = themeLocal ? elements.filter((element) => jsxNameOf(element) === themeLocal) : [];\n const themeNodes = /* @__PURE__ */ new Map();\n for (const element of themeElements) {\n const read = readStaticTheme(element, id, source, config);\n for (const [identifier, rules] of read.css) bridgeCSS.set(identifier, rules);\n violations.push(...read.violations);\n if (read.node) themeNodes.set(element, read.node);\n }\n const themeChainOf = (element) => {\n const chain = [];\n let cursor = element;\n while (cursor) {\n const node = themeNodes.get(cursor);\n if (node) chain.unshift(node);\n cursor = parents.get(cursor);\n }\n return chain;\n };\n const rootThemeName = Object.keys(config.themes)[0] ?? \"light\";\n for (const element of themeElements) {\n const node = themeNodes.get(element);\n if (!node) continue;\n const lowered = lowerStaticTheme(\n node,\n themeChainOf(element),\n rootThemeName,\n config,\n id\n );\n violations.push(...lowered.violations);\n edits.push(...lowered.edits);\n }\n const mounts = elements.filter((element) => {\n const name = jsxNameOf(element);\n return !!name && islandLocals.has(name);\n }).sort((left, right) => left.start - right.start);\n const moduleBridgePrefix = createHash(\"sha256\").update(path.relative(input.root, id).replace(/\\\\/g, \"/\")).digest(\"hex\").slice(0, 8);\n const loweredRanges = input.plan.edits.filter((edit) => edit.end > edit.start);\n const isOpaqueAncestor = (element) => {\n if (themeNodes.has(element)) return false;\n const name = jsxNameOf(element);\n if (!name || islandLocals.has(name)) return false;\n if (name[0] !== name[0].toUpperCase()) return false;\n const nameNode = childNode(childNode(element, \"openingElement\"), \"name\");\n return !loweredRanges.some(\n (edit) => edit.start <= nameNode.start && edit.end >= nameNode.end\n );\n };\n mounts.forEach((element, index) => {\n const islandId = islandLocals.get(jsxNameOf(element));\n let opaque = null;\n for (let cursor = parents.get(element); cursor; cursor = parents.get(cursor)) {\n if (cursor.type === \"JSXElement\" && isOpaqueAncestor(cursor)) opaque = cursor;\n }\n if (opaque) {\n violations.push({\n rule: 4,\n code: \"local/unsupported-target\",\n span: { id: moduleId, start: element.start, end: element.end },\n component: islandId,\n message: zeroIslandThemeMessage(islandId)\n });\n return;\n }\n const chain = themeChainOf(element);\n const layers = chain.map((node) => node.layer).filter((layer) => !!layer);\n const branches = resolveThemeChain(chain, rootThemeName, config);\n const descriptors = branches.map((branch, branchIndex) => ({\n test: branch.test,\n bridge: {\n // unique across modules and stable across the server and client\n // compilations of the same entry, because both see the same module path\n id: branches.length === 1 ? `b${moduleBridgePrefix}_${index}` : `b${moduleBridgePrefix}_${index}_${branchIndex}`,\n name: branch.name,\n layers\n }\n }));\n const list = bridges.get(islandId) ?? [];\n for (const descriptor of descriptors) list.push(descriptor.bridge);\n bridges.set(islandId, list);\n const fold = (value) => foldBranches(\n descriptors.map((descriptor) => ({\n test: descriptor.test,\n value: value(descriptor.bridge)\n }))\n );\n const opening = childNode(element, \"openingElement\");\n const nameNode = childNode(opening, \"name\");\n edits.push({\n start: nameNode.end,\n end: nameNode.end,\n content: ` data-tamagui-bridge={${fold(\n (bridge) => JSON.stringify(bridge.id)\n )}} __tamaguiBridge={${fold((bridge) => JSON.stringify(bridge))}}`,\n origin: { id: moduleId, start: nameNode.start, end: nameNode.end }\n });\n });\n const erasure = violations.length ? null : planZeroErasure({\n id: moduleId,\n source,\n loweredEdits: [...input.plan.edits, ...edits],\n isTamaguiSpecifier: input.isTamaguiSpecifier,\n islandIdFor: input.resolveIslandModule\n });\n if (erasure) {\n edits.push(...erasure.edits);\n violations.push(...erasure.violations);\n }\n const output = input.mode === \"report\" ? applyLoweredModule(source, moduleId, input.plan) : violations.length ? { changed: false, code: source, map: null } : applyLoweredModule(source, moduleId, {\n id: moduleId,\n sourceHash: input.plan.sourceHash,\n edits: [...input.plan.edits, ...edits]\n });\n return {\n output,\n edits: input.mode === \"report\" ? [] : edits,\n bridges: input.mode === \"report\" ? /* @__PURE__ */ new Map() : bridges,\n bridgeCSS: input.mode === \"report\" ? /* @__PURE__ */ new Map() : bridgeCSS,\n violations,\n erased: {\n modules: erasure?.removedModules ?? [],\n bindings: erasure?.removedBindings ?? [],\n styledDefinitions: erasure?.erasedStyledDefinitions ?? [],\n exports: erasure?.erasedExports ?? []\n },\n rewrittenAnimatedNumberHooks: erasure?.rewrittenAnimatedNumberHooks ?? []\n };\n}\nexport {\n transformZeroModule\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":"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"}
1
+ {"version":3,"file":"transform.js","names":[],"sources":["esm/zero/transform.js"],"sourcesContent":["import {\n applyLoweredModule,\n childNode,\n childNodes,\n parseModuleAst,\n planZeroErasure,\n resolvedModuleId,\n walkAst,\n zeroIslandThemeMessage,\n zeroViolationsFromPlan\n} from \"@tamagui/compiler-core\";\nimport { createHash } from \"node:crypto\";\nimport path from \"node:path\";\nimport {\n foldBranches,\n lowerStaticTheme,\n readStaticTheme,\n resolveThemeChain\n} from \"./theme\";\nfunction identifierNameOf(node) {\n return node && node.type === \"Identifier\" && typeof node.name === \"string\" ? node.name : null;\n}\nfunction jsxNameOf(element) {\n const opening = childNode(element, \"openingElement\");\n if (!opening) return null;\n const name = childNode(opening, \"name\");\n return name && name.type === \"JSXIdentifier\" && typeof name.name === \"string\" ? name.name : null;\n}\nfunction transformZeroModule(input) {\n const { id, source, config } = input;\n const moduleId = resolvedModuleId(id);\n const program = parseModuleAst(source, id);\n const violations = zeroViolationsFromPlan(input.plan);\n const edits = [];\n const bridges = /* @__PURE__ */ new Map();\n const bridgeCSS = /* @__PURE__ */ new Map();\n let themeLocal = null;\n let themeUpdateLocal = null;\n const islandLocals = /* @__PURE__ */ new Map();\n for (const statement of childNodes(program, \"body\")) {\n if (statement.type !== \"ImportDeclaration\") continue;\n const sourceNode = childNode(statement, \"source\");\n const specifier = sourceNode && typeof sourceNode.value === \"string\" ? sourceNode.value : null;\n if (!specifier) continue;\n const island = input.resolveIslandLoader(specifier);\n for (const importSpecifier of childNodes(statement, \"specifiers\")) {\n const local = identifierNameOf(childNode(importSpecifier, \"local\"));\n if (!local) continue;\n if (island) {\n islandLocals.set(local, island.islandId);\n continue;\n }\n if (!input.isTamaguiSpecifier(specifier)) continue;\n const imported = childNode(importSpecifier, \"imported\");\n if (imported && imported.name === \"Theme\") themeLocal = local;\n if (imported && imported.name === \"ThemeUpdate\") themeUpdateLocal = local;\n }\n }\n const parents = /* @__PURE__ */ new Map();\n const elements = [];\n walkAst(program, (node, parent) => {\n if (parent) parents.set(node, parent);\n if (node.type === \"JSXElement\") elements.push(node);\n });\n const themeElements = elements.filter((element) => {\n const name = jsxNameOf(element);\n return name === themeLocal || name === themeUpdateLocal;\n });\n const themeNodes = /* @__PURE__ */ new Map();\n for (const element of themeElements) {\n const read = readStaticTheme(\n element,\n id,\n source,\n config,\n jsxNameOf(element) === themeUpdateLocal ? \"ThemeUpdate\" : \"Theme\"\n );\n for (const [identifier, rules] of read.css) bridgeCSS.set(identifier, rules);\n violations.push(...read.violations);\n if (read.node) themeNodes.set(element, read.node);\n }\n const themeChainOf = (element) => {\n const chain = [];\n let cursor = element;\n while (cursor) {\n const node = themeNodes.get(cursor);\n if (node) chain.unshift(node);\n cursor = parents.get(cursor);\n }\n return chain;\n };\n const rootThemeName = Object.keys(config.themes)[0] ?? \"light\";\n for (const element of themeElements) {\n const node = themeNodes.get(element);\n if (!node) continue;\n const lowered = lowerStaticTheme(\n node,\n themeChainOf(element),\n rootThemeName,\n config,\n id\n );\n violations.push(...lowered.violations);\n edits.push(...lowered.edits);\n }\n const mounts = elements.filter((element) => {\n const name = jsxNameOf(element);\n return !!name && islandLocals.has(name);\n }).sort((left, right) => left.start - right.start);\n const moduleBridgePrefix = createHash(\"sha256\").update(path.relative(input.root, id).replace(/\\\\/g, \"/\")).digest(\"hex\").slice(0, 8);\n const loweredRanges = input.plan.edits.filter((edit) => edit.end > edit.start);\n const isOpaqueAncestor = (element) => {\n if (themeNodes.has(element)) return false;\n const name = jsxNameOf(element);\n if (!name || islandLocals.has(name)) return false;\n if (name[0] !== name[0].toUpperCase()) return false;\n const nameNode = childNode(childNode(element, \"openingElement\"), \"name\");\n return !loweredRanges.some(\n (edit) => edit.start <= nameNode.start && edit.end >= nameNode.end\n );\n };\n mounts.forEach((element, index) => {\n const islandId = islandLocals.get(jsxNameOf(element));\n let opaque = null;\n for (let cursor = parents.get(element); cursor; cursor = parents.get(cursor)) {\n if (cursor.type === \"JSXElement\" && isOpaqueAncestor(cursor)) opaque = cursor;\n }\n if (opaque) {\n violations.push({\n rule: 4,\n code: \"local/unsupported-target\",\n span: { id: moduleId, start: element.start, end: element.end },\n component: islandId,\n message: zeroIslandThemeMessage(islandId)\n });\n return;\n }\n const chain = themeChainOf(element);\n const layers = chain.map((node) => node.layer).filter((layer) => !!layer);\n const branches = resolveThemeChain(chain, rootThemeName, config);\n const descriptors = branches.map((branch, branchIndex) => ({\n test: branch.test,\n bridge: {\n // unique across modules and stable across the server and client\n // compilations of the same entry, because both see the same module path\n id: branches.length === 1 ? `b${moduleBridgePrefix}_${index}` : `b${moduleBridgePrefix}_${index}_${branchIndex}`,\n name: branch.name,\n layers\n }\n }));\n const list = bridges.get(islandId) ?? [];\n for (const descriptor of descriptors) list.push(descriptor.bridge);\n bridges.set(islandId, list);\n const fold = (value) => foldBranches(\n descriptors.map((descriptor) => ({\n test: descriptor.test,\n value: value(descriptor.bridge)\n }))\n );\n const opening = childNode(element, \"openingElement\");\n const nameNode = childNode(opening, \"name\");\n edits.push({\n start: nameNode.end,\n end: nameNode.end,\n content: ` data-tamagui-bridge={${fold(\n (bridge) => JSON.stringify(bridge.id)\n )}} __tamaguiBridge={${fold((bridge) => JSON.stringify(bridge))}}`,\n origin: { id: moduleId, start: nameNode.start, end: nameNode.end }\n });\n });\n const erasure = violations.length ? null : planZeroErasure({\n id: moduleId,\n source,\n loweredEdits: [...input.plan.edits, ...edits],\n isTamaguiSpecifier: input.isTamaguiSpecifier,\n islandIdFor: input.resolveIslandModule\n });\n if (erasure) {\n edits.push(...erasure.edits);\n violations.push(...erasure.violations);\n }\n const output = input.mode === \"report\" ? applyLoweredModule(source, moduleId, input.plan) : violations.length ? { changed: false, code: source, map: null } : applyLoweredModule(source, moduleId, {\n id: moduleId,\n sourceHash: input.plan.sourceHash,\n edits: [...input.plan.edits, ...edits]\n });\n return {\n output,\n edits: input.mode === \"report\" ? [] : edits,\n bridges: input.mode === \"report\" ? /* @__PURE__ */ new Map() : bridges,\n bridgeCSS: input.mode === \"report\" ? /* @__PURE__ */ new Map() : bridgeCSS,\n violations,\n erased: {\n modules: erasure?.removedModules ?? [],\n bindings: erasure?.removedBindings ?? [],\n styledDefinitions: erasure?.erasedStyledDefinitions ?? [],\n exports: erasure?.erasedExports ?? []\n },\n rewrittenAnimatedNumberHooks: erasure?.rewrittenAnimatedNumberHooks ?? []\n };\n}\nexport {\n transformZeroModule\n};\n//# sourceMappingURL=transform.js.map\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/static",
3
- "version": "3.0.0-beta.661.1",
3
+ "version": "3.0.0-beta.719.1",
4
4
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14",
5
5
  "license": "MIT",
6
6
  "source": "src/index.ts",
@@ -45,21 +45,21 @@
45
45
  "clean:build": "tamagui-build clean:build"
46
46
  },
47
47
  "dependencies": {
48
- "@tamagui/cli-color": "3.0.0-beta.661.1",
49
- "@tamagui/compiler-core": "3.0.0-beta.661.1",
50
- "@tamagui/config-default": "3.0.0-beta.661.1",
51
- "@tamagui/core": "3.0.0-beta.661.1",
52
- "@tamagui/dom": "3.0.0-beta.661.1",
53
- "@tamagui/fake-react-native": "3.0.0-beta.661.1",
54
- "@tamagui/generate-themes": "3.0.0-beta.661.1",
55
- "@tamagui/helpers": "3.0.0-beta.661.1",
56
- "@tamagui/helpers-node": "3.0.0-beta.661.1",
57
- "@tamagui/react-native-web-internals": "3.0.0-beta.661.1",
58
- "@tamagui/react-native-web-lite": "3.0.0-beta.661.1",
59
- "@tamagui/shorthands": "3.0.0-beta.661.1",
60
- "@tamagui/style-grammar": "3.0.0-beta.661.1",
61
- "@tamagui/types": "3.0.0-beta.661.1",
62
- "@tamagui/web": "3.0.0-beta.661.1",
48
+ "@tamagui/cli-color": "3.0.0-beta.719.1",
49
+ "@tamagui/compiler-core": "3.0.0-beta.719.1",
50
+ "@tamagui/config-default": "3.0.0-beta.719.1",
51
+ "@tamagui/core": "3.0.0-beta.719.1",
52
+ "@tamagui/dom": "3.0.0-beta.719.1",
53
+ "@tamagui/fake-react-native": "3.0.0-beta.719.1",
54
+ "@tamagui/generate-themes": "3.0.0-beta.719.1",
55
+ "@tamagui/helpers": "3.0.0-beta.719.1",
56
+ "@tamagui/helpers-node": "3.0.0-beta.719.1",
57
+ "@tamagui/react-native-web-internals": "3.0.0-beta.719.1",
58
+ "@tamagui/react-native-web-lite": "3.0.0-beta.719.1",
59
+ "@tamagui/shorthands": "3.0.0-beta.719.1",
60
+ "@tamagui/style-grammar": "3.0.0-beta.719.1",
61
+ "@tamagui/types": "3.0.0-beta.719.1",
62
+ "@tamagui/web": "3.0.0-beta.719.1",
63
63
  "browserslist": "^4.28.1",
64
64
  "check-dependency-version-consistency": "^4.1.0",
65
65
  "esbuild": "0.28.1",
@@ -68,16 +68,16 @@
68
68
  "find-root": "^1.1.0",
69
69
  "fs-extra": "^11.2.0",
70
70
  "js-yaml": "^4.1.0",
71
- "react-native-web": "^0.21.0"
71
+ "react-native-web": "~0.21.0"
72
72
  },
73
73
  "devDependencies": {
74
- "@tamagui/build": "3.0.0-beta.661.1",
74
+ "@tamagui/build": "3.0.0-beta.719.1",
75
75
  "@types/find-root": "^1.1.2",
76
76
  "@types/node": "^22.1.0",
77
77
  "@types/webpack": "^4.41.26",
78
78
  "esbuild-loader": "^4.2.2",
79
79
  "null-loader": "^4.0.1",
80
- "react": ">=19",
80
+ "react": "19.2.3",
81
81
  "react-native": "0.86.2",
82
82
  "typescript": "~6.0.3"
83
83
  },
@@ -37,7 +37,7 @@ import {
37
37
  createModifierRegistry,
38
38
  parseTransition,
39
39
  parseValue,
40
- } from '@tamagui/style-grammar'
40
+ } from '@tamagui/style-grammar/tooling'
41
41
  import { isValidStyleKey } from '@tamagui/web'
42
42
  import type { AnimationDriver, StaticConfig, TamaguiInternalConfig } from '@tamagui/web'
43
43
 
@@ -3,7 +3,7 @@ import { createRequire } from 'node:module'
3
3
 
4
4
  import { generateThemes, writeGeneratedThemes } from '@tamagui/generate-themes'
5
5
  import { stylePropsAll } from '@tamagui/helpers'
6
- import { grammarEntries } from '@tamagui/style-grammar'
6
+ import { grammarEntries } from '@tamagui/style-grammar/tooling'
7
7
  import type { TamaguiOptions } from '@tamagui/types'
8
8
  import FS from 'fs-extra'
9
9
 
package/src/zero/index.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { isTamaguiSpecifier } from '@tamagui/compiler-core'
1
2
  export * from './artifact'
2
3
  export * from './graph'
3
4
  export * from './identity'
@@ -170,6 +170,7 @@ export function generateIslandEntrySource(input: IslandGenerationInput): string
170
170
  return `// generated by @tamagui/static zero-runtime. do not edit.
171
171
  import * as React from 'react'
172
172
  import { TamaguiProvider, Theme } from 'tamagui'
173
+ import { createThemeUpdateState } from '@tamagui/web/theme-update'
173
174
  import config from ${JSON.stringify(importPath(entry, input.configPath))}
174
175
  import IslandRoot from ${JSON.stringify(importPath(entry, input.island.module))}
175
176
 
@@ -185,8 +186,10 @@ export function Island(props) {
185
186
  node = React.createElement(
186
187
  Theme,
187
188
  {
188
- inlineValues: layers[index].inlineValues,
189
- inlineClassName: layers[index].inlineClassName,
189
+ _themeUpdate: createThemeUpdateState(
190
+ layers[index].inlineValues,
191
+ layers[index].inlineClassName
192
+ ),
190
193
  forceClassName: true,
191
194
  },
192
195
  node
package/src/zero/theme.ts CHANGED
@@ -10,13 +10,15 @@ import {
10
10
  } from '@tamagui/compiler-core'
11
11
  import { getThemeClassNames, reservedThemeProps } from '@tamagui/helpers'
12
12
  import {
13
- getInlineValuesFromProps,
14
- getVariablesCSSRules,
15
13
  resolveThemeName,
16
14
  variableToString,
17
- type InlineValueIssue,
18
15
  type TamaguiInternalConfig,
19
16
  } from '@tamagui/web'
17
+ import {
18
+ getInlineValuesFromProps,
19
+ getVariablesCSSRules,
20
+ type InlineValueIssue,
21
+ } from '@tamagui/web/theme-update'
20
22
 
21
23
  import type { IslandThemeBridgeLayer } from './islands'
22
24
 
@@ -41,6 +43,7 @@ export interface ThemeNameOption {
41
43
  }
42
44
 
43
45
  export interface StaticThemeNode {
46
+ kind: 'Theme' | 'ThemeUpdate'
44
47
  element: AstNode
45
48
  opening: AstNode
46
49
  closing: AstNode | null
@@ -215,7 +218,8 @@ export function readStaticTheme(
215
218
  element: AstNode,
216
219
  id: string,
217
220
  source: string,
218
- config: TamaguiInternalConfig
221
+ config: TamaguiInternalConfig,
222
+ kind: 'Theme' | 'ThemeUpdate' = 'Theme'
219
223
  ): StaticThemeReadResult {
220
224
  const moduleId = resolvedModuleId(id)
221
225
  const violations: ZeroViolation[] = []
@@ -236,8 +240,8 @@ export function readStaticTheme(
236
240
  rule: 1,
237
241
  code: 'local/unsafe-style-spread',
238
242
  span: span(attribute),
239
- component: 'Theme',
240
- message: zeroRuleMessage(1, { component: 'Theme' }),
243
+ component: kind,
244
+ message: zeroRuleMessage(1, { component: kind }),
241
245
  })
242
246
  continue
243
247
  }
@@ -249,7 +253,20 @@ export function readStaticTheme(
249
253
  ? childNode(rawValue, 'expression')
250
254
  : rawValue
251
255
 
252
- if (key === 'name') {
256
+ if (kind === 'ThemeUpdate' && reservedThemeProps[key]) {
257
+ violations.push({
258
+ rule: 4,
259
+ code: 'local/unsupported-target',
260
+ span: span(attribute),
261
+ component: kind,
262
+ message: zeroRuleMessage(4, {
263
+ detail: `the <ThemeUpdate ${key}> prop, which belongs on <Theme>,`,
264
+ }),
265
+ })
266
+ continue
267
+ }
268
+
269
+ if (kind === 'Theme' && key === 'name') {
253
270
  const read = value ? readNameOptions(value, source, []) : null
254
271
  if (!read) {
255
272
  violations.push({
@@ -270,7 +287,7 @@ export function readStaticTheme(
270
287
  continue
271
288
  }
272
289
 
273
- if (reservedThemeProps[key]) {
290
+ if (kind === 'Theme' && reservedThemeProps[key]) {
274
291
  if (!LOWERABLE_RESERVED_PROPS.has(key)) {
275
292
  violations.push({
276
293
  rule: 4,
@@ -302,6 +319,19 @@ export function readStaticTheme(
302
319
  continue
303
320
  }
304
321
 
322
+ if (kind === 'Theme') {
323
+ violations.push({
324
+ rule: 4,
325
+ code: 'local/unsupported-target',
326
+ span: span(attribute),
327
+ component: 'Theme',
328
+ message: zeroRuleMessage(4, {
329
+ detail: `the removed <Theme ${key}> inline-value spelling. Use <ThemeUpdate ${key}> around the subtree instead,`,
330
+ }),
331
+ })
332
+ continue
333
+ }
334
+
305
335
  // everything else is a theme key, and its value has to be build-time data
306
336
  const literal = value ? literalOf(value) : undefined
307
337
  if (typeof literal !== 'string' && typeof literal !== 'number') {
@@ -309,10 +339,10 @@ export function readStaticTheme(
309
339
  rule: 3,
310
340
  code: 'local/dynamic-style-value',
311
341
  span: span(attribute),
312
- component: 'Theme',
342
+ component: kind,
313
343
  message: zeroRuleMessage(3, {
314
344
  prop: key,
315
- component: 'Theme',
345
+ component: kind,
316
346
  detail: value
317
347
  ? 'a theme value must be a string or number literal at build time'
318
348
  : 'a theme key needs a value',
@@ -324,7 +354,7 @@ export function readStaticTheme(
324
354
  }
325
355
 
326
356
  // the runtime throws on this pair rather than picking one
327
- if (reset && options.some((option) => option.name !== undefined)) {
357
+ if (kind === 'Theme' && reset && options.some((option) => option.name !== undefined)) {
328
358
  violations.push({
329
359
  rule: 4,
330
360
  code: 'local/unsupported-target',
@@ -343,7 +373,7 @@ export function readStaticTheme(
343
373
  span: span(element),
344
374
  component: 'Theme',
345
375
  message: zeroRuleMessage(4, {
346
- detail: 'a self-closing <Theme>, which has no subtree to theme,',
376
+ detail: `a self-closing <${kind}>, which has no subtree to theme,`,
347
377
  }),
348
378
  })
349
379
  }
@@ -351,18 +381,19 @@ export function readStaticTheme(
351
381
  // One parse per unique authored value, and every clause the parser could not
352
382
  // use is a violation here instead of the warn-and-drop the render path does.
353
383
  const issues: InlineValueIssue[] = []
354
- const inlineValues = Object.keys(themeKeyProps).length
355
- ? getInlineValuesFromProps(themeKeyProps, config, (issue) => issues.push(issue))
356
- : null
384
+ const inlineValues =
385
+ kind === 'ThemeUpdate' && Object.keys(themeKeyProps).length
386
+ ? getInlineValuesFromProps(themeKeyProps, config, (issue) => issues.push(issue))
387
+ : null
357
388
  for (const issue of issues) {
358
389
  violations.push({
359
390
  rule: 3,
360
391
  code: 'local/dynamic-style-value',
361
392
  span: span(opening),
362
- component: 'Theme',
393
+ component: kind,
363
394
  message: zeroRuleMessage(3, {
364
395
  prop: issue.key,
365
- component: 'Theme',
396
+ component: kind,
366
397
  detail: issue.message,
367
398
  }),
368
399
  })
@@ -375,6 +406,7 @@ export function readStaticTheme(
375
406
 
376
407
  return {
377
408
  node: {
409
+ kind,
378
410
  element,
379
411
  opening,
380
412
  closing,
@@ -108,6 +108,7 @@ export function transformZeroModule(
108
108
 
109
109
  // module-level bindings we care about
110
110
  let themeLocal: string | null = null
111
+ let themeUpdateLocal: string | null = null
111
112
  const islandLocals = new Map<string, string>()
112
113
  for (const statement of childNodes(program, 'body')) {
113
114
  if (statement.type !== 'ImportDeclaration') continue
@@ -126,6 +127,7 @@ export function transformZeroModule(
126
127
  if (!input.isTamaguiSpecifier(specifier)) continue
127
128
  const imported = childNode(importSpecifier, 'imported')
128
129
  if (imported && imported.name === 'Theme') themeLocal = local
130
+ if (imported && imported.name === 'ThemeUpdate') themeUpdateLocal = local
129
131
  }
130
132
  }
131
133
 
@@ -137,15 +139,22 @@ export function transformZeroModule(
137
139
  if (node.type === 'JSXElement') elements.push(node)
138
140
  })
139
141
 
140
- const themeElements = themeLocal
141
- ? elements.filter((element) => jsxNameOf(element) === themeLocal)
142
- : []
142
+ const themeElements = elements.filter((element) => {
143
+ const name = jsxNameOf(element)
144
+ return name === themeLocal || name === themeUpdateLocal
145
+ })
143
146
 
144
147
  // Each <Theme> is read once, then lowered against its own ancestry, so a
145
148
  // nested node resolves against whatever its parent resolved to.
146
149
  const themeNodes = new Map<AstNode, StaticThemeNode>()
147
150
  for (const element of themeElements) {
148
- const read = readStaticTheme(element, id, source, config)
151
+ const read = readStaticTheme(
152
+ element,
153
+ id,
154
+ source,
155
+ config,
156
+ jsxNameOf(element) === themeUpdateLocal ? 'ThemeUpdate' : 'Theme'
157
+ )
149
158
  for (const [identifier, rules] of read.css) bridgeCSS.set(identifier, rules)
150
159
  violations.push(...read.violations)
151
160
  if (read.node) themeNodes.set(element, read.node)
@@ -1,3 +1,4 @@
1
+ export { isTamaguiSpecifier } from '@tamagui/compiler-core';
1
2
  export * from './artifact';
2
3
  export * from './graph';
3
4
  export * from './identity';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/zero/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/zero/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,aAAa,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"islands.d.ts","sourceRoot":"","sources":["../../src/zero/islands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C;;;;;;;GAOG;AAEH,eAAO,MAAM,kBAAkB,+BAA+B,CAAA;AAC9D,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;AAExD,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAA;KACzD,CAAA;IACD,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,sBAAsB,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,CAAA;IAClB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAA;CAChB;AAkBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAyG/E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CA8C9E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAGrE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAIjE,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK1D,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EACxC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GACzC,IAAI,CAWN"}
1
+ {"version":3,"file":"islands.d.ts","sourceRoot":"","sources":["../../src/zero/islands.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAE3C;;;;;;;GAOG;AAEH,eAAO,MAAM,kBAAkB,+BAA+B,CAAA;AAC9D,eAAO,MAAM,mBAAmB,wBAAwB,CAAA;AAExD,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;QACvC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAA;KACzD,CAAA;IACD,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,sBAAsB,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,CAAA;IAClB,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAA;CAChB;AAkBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAyG/E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAiD9E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAGrE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAIjE,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK1D,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,EACxC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,GACzC,IAAI,CAWN"}
@@ -20,6 +20,7 @@ export interface ThemeNameOption {
20
20
  name: string | undefined;
21
21
  }
22
22
  export interface StaticThemeNode {
23
+ kind: 'Theme' | 'ThemeUpdate';
23
24
  element: AstNode;
24
25
  opening: AstNode;
25
26
  closing: AstNode | null;
@@ -67,7 +68,7 @@ export interface StaticThemeReadResult {
67
68
  * so a name that becomes reserved later cannot mean a theme key here and a
68
69
  * reserved prop there.
69
70
  */
70
- export declare function readStaticTheme(element: AstNode, id: string, source: string, config: TamaguiInternalConfig): StaticThemeReadResult;
71
+ export declare function readStaticTheme(element: AstNode, id: string, source: string, config: TamaguiInternalConfig, kind?: 'Theme' | 'ThemeUpdate'): StaticThemeReadResult;
71
72
  /**
72
73
  * The span a static `<Theme>` lowers to.
73
74
  *
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/zero/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAEvD;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,8EAA8E;IAC9E,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAA;CACrC;AAoFD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAYvF;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,qBAAqB,GAC5B,WAAW,EAAE,CAuBf;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,8EAA8E;IAC9E,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,qBAAqB,GAC5B,qBAAqB,CAgLvB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,qBAAqB,EAC7B,EAAE,EAAE,MAAM,GACT;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,aAAa,EAAE,CAAA;CAAE,CAmEtD"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/zero/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,cAAc,CAAA;AAOrB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAEvD;;;;;;;;GAQG;AAEH;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,aAAa,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IACvB,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,8EAA8E;IAC9E,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAA;CACrC;AAoFD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAYvF;AAED,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,qBAAqB,GAC5B,WAAW,EAAE,CAuBf;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAA;IAC5B,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,8EAA8E;IAC9E,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,qBAAqB,EAC7B,IAAI,GAAE,OAAO,GAAG,aAAuB,GACtC,qBAAqB,CA4MvB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,qBAAqB,EAC7B,EAAE,EAAE,MAAM,GACT;IAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,EAAE,aAAa,EAAE,CAAA;CAAE,CAmEtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/zero/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,oBAAoB,EAEzB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAKzD,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,WAAW,CAAA;AAS1E;;;;;;;GAOG;AAEH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,wEAAwE;IACxE,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAC9C,wEAAwE;IACxE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACnE,4EAA4E;IAC5E,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CACtD;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,oBAAoB,CAAA;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,2EAA2E;IAC3E,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;IACzC,kEAAkE;IAClE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,iBAAiB,EAAE,MAAM,EAAE,CAAA;QAC3B,oDAAoD;QACpD,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB,CAAA;IACD,0EAA0E;IAC1E,4BAA4B,EAAE,MAAM,EAAE,CAAA;CACvC;AAiBD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,yBAAyB,CA+N3B"}
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/zero/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,oBAAoB,EAEzB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAKzD,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,WAAW,CAAA;AAS1E;;;;;;;GAOG;AAEH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,kFAAkF;IAClF,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,wEAAwE;IACxE,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAC9C,wEAAwE;IACxE,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACnE,4EAA4E;IAC5E,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CACtD;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,oBAAoB,CAAA;IAC5B,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,2EAA2E;IAC3E,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAA;IACzC,kEAAkE;IAClE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,EAAE,CAAA;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;QAClB,iBAAiB,EAAE,MAAM,EAAE,CAAA;QAC3B,oDAAoD;QACpD,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB,CAAA;IACD,0EAA0E;IAC1E,4BAA4B,EAAE,MAAM,EAAE,CAAA;CACvC;AAiBD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,yBAAyB,CAwO3B"}