@tamagui/static 3.0.0-beta.1093.1 → 3.0.0-beta.1097.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.
@@ -127,7 +127,8 @@ function generateIslandEntrySource(input) {
127
127
  const entry = input.island.entry;
128
128
  return `// generated by @tamagui/static zero-runtime. do not edit.
129
129
  import * as React from 'react'
130
- import { TamaguiProvider, Theme } from 'tamagui'
130
+ import { TamaguiProvider } from 'tamagui/provider'
131
+ import { Theme } from '@tamagui/core'
131
132
  import { createThemeUpdateState } from '@tamagui/web/theme-update'
132
133
  import config from ${JSON.stringify(importPath(entry, input.configPath))}
133
134
  import IslandRoot from ${JSON.stringify(importPath(entry, input.island.module))}
@@ -1 +1 @@
1
- {"version":3,"file":"islands.js","names":[],"sources":["esm/zero/islands.js"],"sourcesContent":["import { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nconst ISLAND_RUNTIME_KEY = \"__tamagui_island_runtime__\";\nconst ISLAND_REGISTRY_KEY = \"__tamagui_islands__\";\nfunction writeIfChanged(file, content) {\n mkdirSync(path.dirname(file), { recursive: true });\n let existing = null;\n try {\n existing = readFileSync(file, \"utf8\");\n } catch {\n existing = null;\n }\n if (existing !== content) writeFileSync(file, content);\n}\nfunction importPath(from, to) {\n const relative = path.relative(path.dirname(from), to).replace(/\\\\/g, \"/\");\n return relative.startsWith(\".\") ? relative : `./${relative}`;\n}\nfunction generateIslandLoaderSource(input) {\n return `// generated by @tamagui/static zero-runtime. do not edit.\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport * as JSXRuntime from 'react/jsx-runtime'\n\nconst ISLAND_ID = ${JSON.stringify(input.island.id)}\nconst ISLAND_SRC = ${JSON.stringify(input.scriptUrl)}\nconst CSS_HREF = ${JSON.stringify(input.cssHref)}\nconst INTEGRATION = ${JSON.stringify(input.integration)}\n\nfunction sharedRuntime() {\n const scope = globalThis\n if (!scope[${JSON.stringify(ISLAND_RUNTIME_KEY)}]) {\n scope[${JSON.stringify(ISLAND_RUNTIME_KEY)}] = {\n react: React,\n reactDom: ReactDOM,\n jsxRuntime: JSXRuntime,\n }\n }\n if (!scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}]) {\n scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}] = {}\n }\n return scope\n}\n\n// The one accepted runtime recovery in zero-runtime mode, and it is loud on\n// purpose. \"Unimported\" is not decidable at build time for a published zero\n// artifact on Next or Metro, so the loader still guarantees the island has its\n// styles; on a correct build this never runs.\nfunction ensureZeroStylesheet() {\n const links = document.querySelectorAll('link[rel=\"stylesheet\"]')\n for (let index = 0; index < links.length; index++) {\n const href = links[index].getAttribute('href') || ''\n if (href === CSS_HREF || href.split('?')[0].endsWith(CSS_HREF)) return\n }\n console.error(\n '[tamagui zero-runtime] the page did not link the generated CSS artifact ' +\n CSS_HREF +\n ', so island \"' +\n ISLAND_ID +\n '\" (' +\n INTEGRATION +\n ') is loading it at runtime. On a correct build this never happens: the ' +\n 'artifact is generated by the build and must be linked by the document ' +\n 'that mounts the island. Fix the document, not this recovery.'\n )\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = CSS_HREF\n link.setAttribute('data-tamagui-zero-css', '1')\n document.head.appendChild(link)\n}\n\nlet pending = null\n\nfunction loadIsland() {\n const scope = sharedRuntime()\n const registered = scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][ISLAND_ID]\n if (registered) return Promise.resolve(registered)\n if (!pending) {\n pending = new Promise((resolve, reject) => {\n ensureZeroStylesheet()\n const script = document.createElement('script')\n script.src = ISLAND_SRC\n script.async = true\n script.onload = () => {\n const mod = scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][ISLAND_ID]\n if (mod) resolve(mod)\n else reject(new Error('tamagui island ' + ISLAND_ID + ' did not register'))\n }\n script.onerror = () => reject(new Error('tamagui island ' + ISLAND_ID + ' failed to load ' + ISLAND_SRC))\n document.head.appendChild(script)\n })\n }\n return pending\n}\n\nexport default function TamaguiIsland(props) {\n const bridgeId = props['data-tamagui-bridge'] || 'root'\n const [Loaded, setLoaded] = React.useState(null)\n\n React.useEffect(() => {\n let cancelled = false\n loadIsland().then((mod) => {\n if (!cancelled) setLoaded(() => mod.Island)\n })\n return () => {\n cancelled = true\n }\n }, [])\n\n if (!Loaded) {\n return React.createElement('div', {\n 'data-tamagui-island': ISLAND_ID,\n 'data-tamagui-bridge': bridgeId,\n })\n }\n\n const forwarded = {}\n for (const key in props) forwarded[key] = props[key]\n forwarded['data-tamagui-island'] = ISLAND_ID\n return React.createElement(Loaded, forwarded)\n}\n`;\n}\nfunction generateIslandEntrySource(input) {\n const entry = input.island.entry;\n return `// generated by @tamagui/static zero-runtime. do not edit.\nimport * as React from 'react'\nimport { TamaguiProvider, Theme } from 'tamagui'\nimport { createThemeUpdateState } from '@tamagui/web/theme-update'\nimport config from ${JSON.stringify(importPath(entry, input.configPath))}\nimport IslandRoot from ${JSON.stringify(importPath(entry, input.island.module))}\n\nexport function Island(props) {\n const bridge = props.__tamaguiBridge\n const inner = {}\n for (const key in props) {\n if (key !== '__tamaguiBridge') inner[key] = props[key]\n }\n let node = React.createElement(IslandRoot, inner)\n const layers = (bridge && bridge.layers) || []\n for (let index = layers.length - 1; index >= 0; index--) {\n node = React.createElement(\n Theme,\n {\n _themeUpdate: createThemeUpdateState(\n layers[index].inlineValues,\n layers[index].inlineClassName\n ),\n forceClassName: true,\n },\n node\n )\n }\n // isSubtreeRoot: the island shares a document with a zero page that already\n // has its own compiled theme spans, so its provider must not write a theme\n // class onto html or body and must carry its own theme on its own node.\n return React.createElement(\n TamaguiProvider,\n {\n config,\n defaultTheme: (bridge && bridge.name) || 'light',\n disableInjectCSS: true,\n isSubtreeRoot: true,\n },\n node\n )\n}\n\nconst scope = globalThis\nif (!scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}]) scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}] = {}\nscope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][${JSON.stringify(input.island.id)}] = { Island }\n`;\n}\nfunction writeIslandModules(input) {\n writeIfChanged(input.island.loader, generateIslandLoaderSource(input));\n writeIfChanged(input.island.entry, generateIslandEntrySource(input));\n}\nconst ISLAND_EXTERNAL_GLOBAL_PATHS = {\n react: [ISLAND_RUNTIME_KEY, \"react\"],\n \"react-dom\": [ISLAND_RUNTIME_KEY, \"reactDom\"],\n \"react/jsx-runtime\": [ISLAND_RUNTIME_KEY, \"jsxRuntime\"]\n};\nconst ISLAND_EXTERNAL_GLOBALS = Object.fromEntries(\n Object.entries(ISLAND_EXTERNAL_GLOBAL_PATHS).map(([name, segments]) => [\n name,\n `globalThis.${segments.join(\".\")}`\n ])\n);\nfunction mergeIslandBridges(target, incoming) {\n for (const [islandId, bridges] of incoming) {\n const list = target.get(islandId) ?? [];\n for (const bridge of bridges) {\n const index = list.findIndex((existing) => existing.id === bridge.id);\n if (index >= 0) list[index] = bridge;\n else list.push(bridge);\n }\n list.sort((left, right) => left.id < right.id ? -1 : left.id > right.id ? 1 : 0);\n target.set(islandId, list);\n }\n}\nexport {\n ISLAND_EXTERNAL_GLOBALS,\n ISLAND_EXTERNAL_GLOBAL_PATHS,\n ISLAND_REGISTRY_KEY,\n ISLAND_RUNTIME_KEY,\n generateIslandEntrySource,\n generateIslandLoaderSource,\n mergeIslandBridges,\n writeIslandModules\n};\n//# sourceMappingURL=islands.js.map\n"],"mappings":";;;;AAEA,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,SAAS,eAAe,MAAM,SAAS;CACrC,UAAU,KAAK,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;CACjD,IAAI,WAAW;CACf,IAAI;EACF,WAAW,aAAa,MAAM,MAAM;CACtC,QAAQ;EACN,WAAW;CACb;CACA,IAAI,aAAa,SAAS,cAAc,MAAM,OAAO;AACvD;AACA,SAAS,WAAW,MAAM,IAAI;CAC5B,MAAM,WAAW,KAAK,SAAS,KAAK,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ,OAAO,GAAG;CACzE,OAAO,SAAS,WAAW,GAAG,IAAI,WAAW,KAAK;AACpD;AACA,SAAS,2BAA2B,OAAO;CACzC,OAAO;;;;;oBAKW,KAAK,UAAU,MAAM,OAAO,EAAE,EAAE;qBAC/B,KAAK,UAAU,MAAM,SAAS,EAAE;mBAClC,KAAK,UAAU,MAAM,OAAO,EAAE;sBAC3B,KAAK,UAAU,MAAM,WAAW,EAAE;;;;eAIzC,KAAK,UAAU,kBAAkB,EAAE;YACtC,KAAK,UAAU,kBAAkB,EAAE;;;;;;eAMhC,KAAK,UAAU,mBAAmB,EAAE;YACvC,KAAK,UAAU,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAqCnB,KAAK,UAAU,mBAAmB,EAAE;;;;;;;;;4BASrC,KAAK,UAAU,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsChE;AACA,SAAS,0BAA0B,OAAO;CACxC,MAAM,QAAQ,MAAM,OAAO;CAC3B,OAAO;;;;qBAIY,KAAK,UAAU,WAAW,OAAO,MAAM,UAAU,CAAC,EAAE;yBAChD,KAAK,UAAU,WAAW,OAAO,MAAM,OAAO,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAuCnE,KAAK,UAAU,mBAAmB,EAAE,WAAW,KAAK,UAAU,mBAAmB,EAAE;QACxF,KAAK,UAAU,mBAAmB,EAAE,IAAI,KAAK,UAAU,MAAM,OAAO,EAAE,EAAE;;AAEhF;AACA,SAAS,mBAAmB,OAAO;CACjC,eAAe,MAAM,OAAO,QAAQ,2BAA2B,KAAK,CAAC;CACrE,eAAe,MAAM,OAAO,OAAO,0BAA0B,KAAK,CAAC;AACrE;AACA,MAAM,+BAA+B;CACnC,OAAO,CAAC,oBAAoB,OAAO;CACnC,aAAa,CAAC,oBAAoB,UAAU;CAC5C,qBAAqB,CAAC,oBAAoB,YAAY;AACxD;AACA,MAAM,0BAA0B,OAAO,YACrC,OAAO,QAAQ,4BAA4B,CAAC,CAAC,KAAK,CAAC,MAAM,cAAc,CACrE,MACA,cAAc,SAAS,KAAK,GAAG,GACjC,CAAC,CACH;AACA,SAAS,mBAAmB,QAAQ,UAAU;CAC5C,KAAK,MAAM,CAAC,UAAU,YAAY,UAAU;EAC1C,MAAM,OAAO,OAAO,IAAI,QAAQ,KAAK,CAAC;EACtC,KAAK,MAAM,UAAU,SAAS;GAC5B,MAAM,QAAQ,KAAK,WAAW,aAAa,SAAS,OAAO,OAAO,EAAE;GACpE,IAAI,SAAS,GAAG,KAAK,SAAS;QACzB,KAAK,KAAK,MAAM;EACvB;EACA,KAAK,MAAM,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,MAAM,KAAK,IAAI,CAAC;EAC/E,OAAO,IAAI,UAAU,IAAI;CAC3B;AACF"}
1
+ {"version":3,"file":"islands.js","names":[],"sources":["esm/zero/islands.js"],"sourcesContent":["import { mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\nconst ISLAND_RUNTIME_KEY = \"__tamagui_island_runtime__\";\nconst ISLAND_REGISTRY_KEY = \"__tamagui_islands__\";\nfunction writeIfChanged(file, content) {\n mkdirSync(path.dirname(file), { recursive: true });\n let existing = null;\n try {\n existing = readFileSync(file, \"utf8\");\n } catch {\n existing = null;\n }\n if (existing !== content) writeFileSync(file, content);\n}\nfunction importPath(from, to) {\n const relative = path.relative(path.dirname(from), to).replace(/\\\\/g, \"/\");\n return relative.startsWith(\".\") ? relative : `./${relative}`;\n}\nfunction generateIslandLoaderSource(input) {\n return `// generated by @tamagui/static zero-runtime. do not edit.\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\nimport * as JSXRuntime from 'react/jsx-runtime'\n\nconst ISLAND_ID = ${JSON.stringify(input.island.id)}\nconst ISLAND_SRC = ${JSON.stringify(input.scriptUrl)}\nconst CSS_HREF = ${JSON.stringify(input.cssHref)}\nconst INTEGRATION = ${JSON.stringify(input.integration)}\n\nfunction sharedRuntime() {\n const scope = globalThis\n if (!scope[${JSON.stringify(ISLAND_RUNTIME_KEY)}]) {\n scope[${JSON.stringify(ISLAND_RUNTIME_KEY)}] = {\n react: React,\n reactDom: ReactDOM,\n jsxRuntime: JSXRuntime,\n }\n }\n if (!scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}]) {\n scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}] = {}\n }\n return scope\n}\n\n// The one accepted runtime recovery in zero-runtime mode, and it is loud on\n// purpose. \"Unimported\" is not decidable at build time for a published zero\n// artifact on Next or Metro, so the loader still guarantees the island has its\n// styles; on a correct build this never runs.\nfunction ensureZeroStylesheet() {\n const links = document.querySelectorAll('link[rel=\"stylesheet\"]')\n for (let index = 0; index < links.length; index++) {\n const href = links[index].getAttribute('href') || ''\n if (href === CSS_HREF || href.split('?')[0].endsWith(CSS_HREF)) return\n }\n console.error(\n '[tamagui zero-runtime] the page did not link the generated CSS artifact ' +\n CSS_HREF +\n ', so island \"' +\n ISLAND_ID +\n '\" (' +\n INTEGRATION +\n ') is loading it at runtime. On a correct build this never happens: the ' +\n 'artifact is generated by the build and must be linked by the document ' +\n 'that mounts the island. Fix the document, not this recovery.'\n )\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = CSS_HREF\n link.setAttribute('data-tamagui-zero-css', '1')\n document.head.appendChild(link)\n}\n\nlet pending = null\n\nfunction loadIsland() {\n const scope = sharedRuntime()\n const registered = scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][ISLAND_ID]\n if (registered) return Promise.resolve(registered)\n if (!pending) {\n pending = new Promise((resolve, reject) => {\n ensureZeroStylesheet()\n const script = document.createElement('script')\n script.src = ISLAND_SRC\n script.async = true\n script.onload = () => {\n const mod = scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][ISLAND_ID]\n if (mod) resolve(mod)\n else reject(new Error('tamagui island ' + ISLAND_ID + ' did not register'))\n }\n script.onerror = () => reject(new Error('tamagui island ' + ISLAND_ID + ' failed to load ' + ISLAND_SRC))\n document.head.appendChild(script)\n })\n }\n return pending\n}\n\nexport default function TamaguiIsland(props) {\n const bridgeId = props['data-tamagui-bridge'] || 'root'\n const [Loaded, setLoaded] = React.useState(null)\n\n React.useEffect(() => {\n let cancelled = false\n loadIsland().then((mod) => {\n if (!cancelled) setLoaded(() => mod.Island)\n })\n return () => {\n cancelled = true\n }\n }, [])\n\n if (!Loaded) {\n return React.createElement('div', {\n 'data-tamagui-island': ISLAND_ID,\n 'data-tamagui-bridge': bridgeId,\n })\n }\n\n const forwarded = {}\n for (const key in props) forwarded[key] = props[key]\n forwarded['data-tamagui-island'] = ISLAND_ID\n return React.createElement(Loaded, forwarded)\n}\n`;\n}\nfunction generateIslandEntrySource(input) {\n const entry = input.island.entry;\n return `// generated by @tamagui/static zero-runtime. do not edit.\nimport * as React from 'react'\nimport { TamaguiProvider } from 'tamagui/provider'\nimport { Theme } from '@tamagui/core'\nimport { createThemeUpdateState } from '@tamagui/web/theme-update'\nimport config from ${JSON.stringify(importPath(entry, input.configPath))}\nimport IslandRoot from ${JSON.stringify(importPath(entry, input.island.module))}\n\nexport function Island(props) {\n const bridge = props.__tamaguiBridge\n const inner = {}\n for (const key in props) {\n if (key !== '__tamaguiBridge') inner[key] = props[key]\n }\n let node = React.createElement(IslandRoot, inner)\n const layers = (bridge && bridge.layers) || []\n for (let index = layers.length - 1; index >= 0; index--) {\n node = React.createElement(\n Theme,\n {\n _themeUpdate: createThemeUpdateState(\n layers[index].inlineValues,\n layers[index].inlineClassName\n ),\n forceClassName: true,\n },\n node\n )\n }\n // isSubtreeRoot: the island shares a document with a zero page that already\n // has its own compiled theme spans, so its provider must not write a theme\n // class onto html or body and must carry its own theme on its own node.\n return React.createElement(\n TamaguiProvider,\n {\n config,\n defaultTheme: (bridge && bridge.name) || 'light',\n disableInjectCSS: true,\n isSubtreeRoot: true,\n },\n node\n )\n}\n\nconst scope = globalThis\nif (!scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}]) scope[${JSON.stringify(ISLAND_REGISTRY_KEY)}] = {}\nscope[${JSON.stringify(ISLAND_REGISTRY_KEY)}][${JSON.stringify(input.island.id)}] = { Island }\n`;\n}\nfunction writeIslandModules(input) {\n writeIfChanged(input.island.loader, generateIslandLoaderSource(input));\n writeIfChanged(input.island.entry, generateIslandEntrySource(input));\n}\nconst ISLAND_EXTERNAL_GLOBAL_PATHS = {\n react: [ISLAND_RUNTIME_KEY, \"react\"],\n \"react-dom\": [ISLAND_RUNTIME_KEY, \"reactDom\"],\n \"react/jsx-runtime\": [ISLAND_RUNTIME_KEY, \"jsxRuntime\"]\n};\nconst ISLAND_EXTERNAL_GLOBALS = Object.fromEntries(\n Object.entries(ISLAND_EXTERNAL_GLOBAL_PATHS).map(([name, segments]) => [\n name,\n `globalThis.${segments.join(\".\")}`\n ])\n);\nfunction mergeIslandBridges(target, incoming) {\n for (const [islandId, bridges] of incoming) {\n const list = target.get(islandId) ?? [];\n for (const bridge of bridges) {\n const index = list.findIndex((existing) => existing.id === bridge.id);\n if (index >= 0) list[index] = bridge;\n else list.push(bridge);\n }\n list.sort((left, right) => left.id < right.id ? -1 : left.id > right.id ? 1 : 0);\n target.set(islandId, list);\n }\n}\nexport {\n ISLAND_EXTERNAL_GLOBALS,\n ISLAND_EXTERNAL_GLOBAL_PATHS,\n ISLAND_REGISTRY_KEY,\n ISLAND_RUNTIME_KEY,\n generateIslandEntrySource,\n generateIslandLoaderSource,\n mergeIslandBridges,\n writeIslandModules\n};\n//# sourceMappingURL=islands.js.map\n"],"mappings":";;;;AAEA,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,SAAS,eAAe,MAAM,SAAS;CACrC,UAAU,KAAK,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;CACjD,IAAI,WAAW;CACf,IAAI;EACF,WAAW,aAAa,MAAM,MAAM;CACtC,QAAQ;EACN,WAAW;CACb;CACA,IAAI,aAAa,SAAS,cAAc,MAAM,OAAO;AACvD;AACA,SAAS,WAAW,MAAM,IAAI;CAC5B,MAAM,WAAW,KAAK,SAAS,KAAK,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC,QAAQ,OAAO,GAAG;CACzE,OAAO,SAAS,WAAW,GAAG,IAAI,WAAW,KAAK;AACpD;AACA,SAAS,2BAA2B,OAAO;CACzC,OAAO;;;;;oBAKW,KAAK,UAAU,MAAM,OAAO,EAAE,EAAE;qBAC/B,KAAK,UAAU,MAAM,SAAS,EAAE;mBAClC,KAAK,UAAU,MAAM,OAAO,EAAE;sBAC3B,KAAK,UAAU,MAAM,WAAW,EAAE;;;;eAIzC,KAAK,UAAU,kBAAkB,EAAE;YACtC,KAAK,UAAU,kBAAkB,EAAE;;;;;;eAMhC,KAAK,UAAU,mBAAmB,EAAE;YACvC,KAAK,UAAU,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAqCnB,KAAK,UAAU,mBAAmB,EAAE;;;;;;;;;4BASrC,KAAK,UAAU,mBAAmB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsChE;AACA,SAAS,0BAA0B,OAAO;CACxC,MAAM,QAAQ,MAAM,OAAO;CAC3B,OAAO;;;;;qBAKY,KAAK,UAAU,WAAW,OAAO,MAAM,UAAU,CAAC,EAAE;yBAChD,KAAK,UAAU,WAAW,OAAO,MAAM,OAAO,MAAM,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAuCnE,KAAK,UAAU,mBAAmB,EAAE,WAAW,KAAK,UAAU,mBAAmB,EAAE;QACxF,KAAK,UAAU,mBAAmB,EAAE,IAAI,KAAK,UAAU,MAAM,OAAO,EAAE,EAAE;;AAEhF;AACA,SAAS,mBAAmB,OAAO;CACjC,eAAe,MAAM,OAAO,QAAQ,2BAA2B,KAAK,CAAC;CACrE,eAAe,MAAM,OAAO,OAAO,0BAA0B,KAAK,CAAC;AACrE;AACA,MAAM,+BAA+B;CACnC,OAAO,CAAC,oBAAoB,OAAO;CACnC,aAAa,CAAC,oBAAoB,UAAU;CAC5C,qBAAqB,CAAC,oBAAoB,YAAY;AACxD;AACA,MAAM,0BAA0B,OAAO,YACrC,OAAO,QAAQ,4BAA4B,CAAC,CAAC,KAAK,CAAC,MAAM,cAAc,CACrE,MACA,cAAc,SAAS,KAAK,GAAG,GACjC,CAAC,CACH;AACA,SAAS,mBAAmB,QAAQ,UAAU;CAC5C,KAAK,MAAM,CAAC,UAAU,YAAY,UAAU;EAC1C,MAAM,OAAO,OAAO,IAAI,QAAQ,KAAK,CAAC;EACtC,KAAK,MAAM,UAAU,SAAS;GAC5B,MAAM,QAAQ,KAAK,WAAW,aAAa,SAAS,OAAO,OAAO,EAAE;GACpE,IAAI,SAAS,GAAG,KAAK,SAAS;QACzB,KAAK,KAAK,MAAM;EACvB;EACA,KAAK,MAAM,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,CAAC,IAAI,KAAK,KAAK,MAAM,KAAK,IAAI,CAAC;EAC/E,OAAO,IAAI,UAAU,IAAI;CAC3B;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/static",
3
- "version": "3.0.0-beta.1093.1",
3
+ "version": "3.0.0-beta.1097.1",
4
4
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14",
5
5
  "license": "MIT",
6
6
  "source": "src/index.ts",
@@ -45,22 +45,22 @@
45
45
  "clean:build": "tamagui-build clean:build"
46
46
  },
47
47
  "dependencies": {
48
- "@tamagui/animation-helpers": "3.0.0-beta.1093.1",
49
- "@tamagui/cli-color": "3.0.0-beta.1093.1",
50
- "@tamagui/compiler-core": "3.0.0-beta.1093.1",
51
- "@tamagui/config-default": "3.0.0-beta.1093.1",
52
- "@tamagui/core": "3.0.0-beta.1093.1",
53
- "@tamagui/dom": "3.0.0-beta.1093.1",
54
- "@tamagui/fake-react-native": "3.0.0-beta.1093.1",
55
- "@tamagui/generate-themes": "3.0.0-beta.1093.1",
56
- "@tamagui/helpers": "3.0.0-beta.1093.1",
57
- "@tamagui/helpers-node": "3.0.0-beta.1093.1",
58
- "@tamagui/react-native-web-internals": "3.0.0-beta.1093.1",
59
- "@tamagui/react-native-web-lite": "3.0.0-beta.1093.1",
60
- "@tamagui/shorthands": "3.0.0-beta.1093.1",
61
- "@tamagui/style-grammar": "3.0.0-beta.1093.1",
62
- "@tamagui/types": "3.0.0-beta.1093.1",
63
- "@tamagui/web": "3.0.0-beta.1093.1",
48
+ "@tamagui/animation-helpers": "3.0.0-beta.1097.1",
49
+ "@tamagui/cli-color": "3.0.0-beta.1097.1",
50
+ "@tamagui/compiler-core": "3.0.0-beta.1097.1",
51
+ "@tamagui/config-default": "3.0.0-beta.1097.1",
52
+ "@tamagui/core": "3.0.0-beta.1097.1",
53
+ "@tamagui/dom": "3.0.0-beta.1097.1",
54
+ "@tamagui/fake-react-native": "3.0.0-beta.1097.1",
55
+ "@tamagui/generate-themes": "3.0.0-beta.1097.1",
56
+ "@tamagui/helpers": "3.0.0-beta.1097.1",
57
+ "@tamagui/helpers-node": "3.0.0-beta.1097.1",
58
+ "@tamagui/react-native-web-internals": "3.0.0-beta.1097.1",
59
+ "@tamagui/react-native-web-lite": "3.0.0-beta.1097.1",
60
+ "@tamagui/shorthands": "3.0.0-beta.1097.1",
61
+ "@tamagui/style-grammar": "3.0.0-beta.1097.1",
62
+ "@tamagui/types": "3.0.0-beta.1097.1",
63
+ "@tamagui/web": "3.0.0-beta.1097.1",
64
64
  "browserslist": "^4.28.1",
65
65
  "check-dependency-version-consistency": "^4.1.0",
66
66
  "esbuild": "0.28.1",
@@ -72,7 +72,7 @@
72
72
  "react-native-web": "~0.21.0"
73
73
  },
74
74
  "devDependencies": {
75
- "@tamagui/build": "3.0.0-beta.1093.1",
75
+ "@tamagui/build": "3.0.0-beta.1097.1",
76
76
  "@types/find-root": "^1.1.2",
77
77
  "@types/node": "^22.1.0",
78
78
  "@types/webpack": "^4.41.26",
@@ -140,14 +140,6 @@ function componentKey(resolvedId: string, exportName: string): string {
140
140
  return `${resolvedId}#${exportName}`
141
141
  }
142
142
 
143
- function cssFromRules(rules: Record<string, any>): string[] {
144
- return Object.values(rules).flatMap((styleObject: any) => {
145
- const identifier = styleObject?.[StyleObjectIdentifier]
146
- const styleRules = styleObject?.[StyleObjectRules]
147
- return identifier && Array.isArray(styleRules) ? styleRules : []
148
- })
149
- }
150
-
151
143
  function jsxClassName(value: string): string {
152
144
  return `className=${JSON.stringify(value)}`
153
145
  }
@@ -215,7 +207,16 @@ function extractedStyleArtifacts(
215
207
  ? viewClassName.slice(0, -callerClassName.length).trimEnd()
216
208
  : viewClassName
217
209
  const rules = split.rulesToInsert ?? {}
218
- const mediaNames = new Set(Object.keys(config.media ?? {}))
210
+ const mediaNames = Object.keys(config.media ?? {})
211
+ const rulesByIdentifier = new Map<string, string[]>()
212
+ for (const styleObject of Object.values(rules) as any[]) {
213
+ const identifier = styleObject?.[StyleObjectIdentifier]
214
+ const styleRules = styleObject?.[StyleObjectRules]
215
+ if (typeof identifier !== 'string' || !Array.isArray(styleRules)) continue
216
+ const existing = rulesByIdentifier.get(identifier)
217
+ if (existing) existing.push(...styleRules)
218
+ else rulesByIdentifier.set(identifier, [...styleRules])
219
+ }
219
220
  const pseudoNames = [
220
221
  'hover',
221
222
  'press',
@@ -244,21 +245,14 @@ function extractedStyleArtifacts(
244
245
  ])
245
246
  for (const identifier of identifiers) {
246
247
  const key = classKeys.get(identifier) ?? ''
247
- const css = cssFromRules(
248
- Object.fromEntries(
249
- Object.entries(rules).filter(
250
- ([, styleObject]: [string, any]) =>
251
- styleObject?.[StyleObjectIdentifier] === identifier
252
- )
253
- )
254
- ).join('')
248
+ const css = (rulesByIdentifier.get(identifier) ?? []).join('')
255
249
  if (identifier.startsWith('t_group_')) {
256
250
  buckets.group.push(identifier)
257
251
  } else if (pseudoNames.some((name) => key.endsWith(`-${name}`))) {
258
252
  buckets.pseudo.push(identifier)
259
253
  } else if (css.includes('.t_')) {
260
254
  buckets.theme.push(identifier)
261
- } else if ([...mediaNames].some((name) => key.endsWith(`-${name}`))) {
255
+ } else if (mediaNames.some((name) => key.endsWith(`-${name}`))) {
262
256
  buckets.media.push(identifier)
263
257
  } else {
264
258
  buckets.normal.push(identifier)
@@ -279,14 +273,7 @@ function extractedStyleArtifacts(
279
273
  .join(' ')
280
274
  : ''
281
275
  const css = orderedIdentifiers.flatMap((identifier) => {
282
- const identifierRules = cssFromRules(
283
- Object.fromEntries(
284
- Object.entries(rules).filter(
285
- ([, styleObject]: [string, any]) =>
286
- styleObject?.[StyleObjectIdentifier] === identifier
287
- )
288
- )
289
- )
276
+ const identifierRules = rulesByIdentifier.get(identifier) ?? []
290
277
  // The legacy static theme-block path adds one root specificity level after
291
278
  // resolving tokens. Keep that output contract until the legacy oracle is removed.
292
279
  return buckets.theme.includes(identifier)
@@ -169,7 +169,8 @@ export function generateIslandEntrySource(input: IslandGenerationInput): string
169
169
  const entry = input.island.entry
170
170
  return `// generated by @tamagui/static zero-runtime. do not edit.
171
171
  import * as React from 'react'
172
- import { TamaguiProvider, Theme } from 'tamagui'
172
+ import { TamaguiProvider } from 'tamagui/provider'
173
+ import { Theme } from '@tamagui/core'
173
174
  import { createThemeUpdateState } from '@tamagui/web/theme-update'
174
175
  import config from ${JSON.stringify(importPath(entry, input.configPath))}
175
176
  import IslandRoot from ${JSON.stringify(importPath(entry, input.island.module))}
@@ -1 +1 @@
1
- {"version":3,"file":"compilerHost.d.ts","sourceRoot":"","sources":["../src/compilerHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,oBAAoB,EACpB,cAAc,EAQf,MAAM,wBAAwB,CAAA;AAqC/B,OAAO,KAAK,EAAiC,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAExF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAIhE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,+EAA+E;IAC/E,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAClD;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,SAAS,gBAAgB,EAAE,EACvC,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,GACnD,yBAAyB,CAS3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,cAAc,CAAA;IACtB,aAAa,EAAE,qBAAqB,CAAA;IACpC,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C,qFAAqF;IACrF,QAAQ,CAAC,EAAE,yBAAyB,CAAA;IACpC,wEAAwE;IACxE,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mEAAmE;IACnE,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AA62BD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,oBAAoB,CAwrFtB"}
1
+ {"version":3,"file":"compilerHost.d.ts","sourceRoot":"","sources":["../src/compilerHost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,oBAAoB,EACpB,cAAc,EAQf,MAAM,wBAAwB,CAAA;AAqC/B,OAAO,KAAK,EAAiC,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAExF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAIhE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,+EAA+E;IAC/E,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;CAClD;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,SAAS,gBAAgB,EAAE,EACvC,gBAAgB,EAAE,SAAS,uBAAuB,EAAE,GACnD,yBAAyB,CAS3B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,cAAc,CAAA;IACtB,aAAa,EAAE,qBAAqB,CAAA;IACpC,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,gBAAgB,EAAE,uBAAuB,EAAE,CAAA;IAC3C,qFAAqF;IACrF,QAAQ,CAAC,EAAE,yBAAyB,CAAA;IACpC,wEAAwE;IACxE,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,mEAAmE;IACnE,0BAA0B,CAAC,EAAE,OAAO,CAAA;IACpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAg2BD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,oBAAoB,CAwrFtB"}
@@ -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,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"}
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,CAkD9E;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"}