@tamagui/tailwind 0.0.0-bootstrap.0 → 3.0.0-beta.1093.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 (97) hide show
  1. package/dist/cjs/candidate.cjs +540 -0
  2. package/dist/cjs/candidate.native.cjs +578 -0
  3. package/dist/cjs/candidate.native.js +580 -0
  4. package/dist/cjs/candidate.native.js.map +1 -0
  5. package/dist/cjs/compose.cjs +352 -0
  6. package/dist/cjs/compose.native.cjs +358 -0
  7. package/dist/cjs/compose.native.js +360 -0
  8. package/dist/cjs/compose.native.js.map +1 -0
  9. package/dist/cjs/composedResolver.cjs +175 -0
  10. package/dist/cjs/composedResolver.native.cjs +201 -0
  11. package/dist/cjs/composedResolver.native.js +203 -0
  12. package/dist/cjs/composedResolver.native.js.map +1 -0
  13. package/dist/cjs/frontend.cjs +54 -0
  14. package/dist/cjs/frontend.native.cjs +62 -0
  15. package/dist/cjs/frontend.native.js +64 -0
  16. package/dist/cjs/frontend.native.js.map +1 -0
  17. package/dist/cjs/index.cjs +38 -0
  18. package/dist/cjs/index.native.cjs +40 -0
  19. package/dist/cjs/index.native.js +42 -0
  20. package/dist/cjs/index.native.js.map +1 -0
  21. package/dist/cjs/styled.cjs +29 -0
  22. package/dist/cjs/styled.native.cjs +31 -0
  23. package/dist/cjs/styled.native.js +33 -0
  24. package/dist/cjs/styled.native.js.map +1 -0
  25. package/dist/cjs/types.cjs +16 -0
  26. package/dist/cjs/types.native.cjs +18 -0
  27. package/dist/cjs/types.native.js +20 -0
  28. package/dist/cjs/types.native.js.map +1 -0
  29. package/dist/cjs/vite/state.cjs +249 -0
  30. package/dist/cjs/vite/state.native.cjs +331 -0
  31. package/dist/cjs/vite/state.native.js +333 -0
  32. package/dist/cjs/vite/state.native.js.map +1 -0
  33. package/dist/cjs/vite.cjs +147 -0
  34. package/dist/cjs/vite.native.cjs +187 -0
  35. package/dist/cjs/vite.native.js +189 -0
  36. package/dist/cjs/vite.native.js.map +1 -0
  37. package/dist/esm/candidate.mjs +514 -0
  38. package/dist/esm/candidate.mjs.map +1 -0
  39. package/dist/esm/candidate.native.js +550 -0
  40. package/dist/esm/candidate.native.js.map +1 -0
  41. package/dist/esm/compose.mjs +328 -0
  42. package/dist/esm/compose.mjs.map +1 -0
  43. package/dist/esm/compose.native.js +332 -0
  44. package/dist/esm/compose.native.js.map +1 -0
  45. package/dist/esm/composedResolver.mjs +155 -0
  46. package/dist/esm/composedResolver.mjs.map +1 -0
  47. package/dist/esm/composedResolver.native.js +179 -0
  48. package/dist/esm/composedResolver.native.js.map +1 -0
  49. package/dist/esm/frontend.mjs +32 -0
  50. package/dist/esm/frontend.mjs.map +1 -0
  51. package/dist/esm/frontend.native.js +38 -0
  52. package/dist/esm/frontend.native.js.map +1 -0
  53. package/dist/esm/index.mjs +11 -0
  54. package/dist/esm/index.mjs.map +1 -0
  55. package/dist/esm/index.native.js +11 -0
  56. package/dist/esm/index.native.js.map +1 -0
  57. package/dist/esm/styled.mjs +10 -0
  58. package/dist/esm/styled.mjs.map +1 -0
  59. package/dist/esm/styled.native.js +10 -0
  60. package/dist/esm/styled.native.js.map +1 -0
  61. package/dist/esm/types.mjs +0 -0
  62. package/dist/esm/types.native.js +0 -0
  63. package/dist/esm/vite/state.mjs +216 -0
  64. package/dist/esm/vite/state.mjs.map +1 -0
  65. package/dist/esm/vite/state.native.js +296 -0
  66. package/dist/esm/vite/state.native.js.map +1 -0
  67. package/dist/esm/vite.mjs +116 -0
  68. package/dist/esm/vite.mjs.map +1 -0
  69. package/dist/esm/vite.native.js +154 -0
  70. package/dist/esm/vite.native.js.map +1 -0
  71. package/package.json +90 -5
  72. package/src/candidate.ts +805 -0
  73. package/src/frontend.ts +73 -0
  74. package/src/index.tsx +35 -0
  75. package/src/styled.tsx +52 -0
  76. package/src/types.ts +249 -0
  77. package/src/vite/state.ts +274 -0
  78. package/src/vite.ts +204 -0
  79. package/types/candidate.d.ts +18 -0
  80. package/types/candidate.d.ts.map +1 -0
  81. package/types/compose.d.ts +19 -0
  82. package/types/compose.d.ts.map +1 -0
  83. package/types/composedResolver.d.ts +18 -0
  84. package/types/composedResolver.d.ts.map +1 -0
  85. package/types/frontend.d.ts +19 -0
  86. package/types/frontend.d.ts.map +1 -0
  87. package/types/index.d.ts +17 -0
  88. package/types/index.d.ts.map +1 -0
  89. package/types/styled.d.ts +12 -0
  90. package/types/styled.d.ts.map +1 -0
  91. package/types/types.d.ts +169 -0
  92. package/types/types.d.ts.map +1 -0
  93. package/types/vite/state.d.ts +28 -0
  94. package/types/vite/state.d.ts.map +1 -0
  95. package/types/vite.d.ts +20 -0
  96. package/types/vite.d.ts.map +1 -0
  97. package/README.md +0 -1
@@ -0,0 +1,296 @@
1
+ import { compile } from "@tailwindcss/node";
2
+ import { Scanner } from "@tailwindcss/oxide";
3
+ import { createGrammarConfigView } from "@tamagui/style-grammar/runtime";
4
+ import { classifyCandidate } from "@tamagui/style-grammar/tooling";
5
+ import { readFile, realpath } from "fs/promises";
6
+ import { createRequire } from "module";
7
+ import path from "path";
8
+
9
+ var TAILWIND_VERSION = "4.3.0";
10
+ var TAILWIND_VIRTUAL_ID = "virtual:tamagui-tailwind.css";
11
+ var TAILWIND_RESOLVED_ID = `\0${TAILWIND_VIRTUAL_ID}`;
12
+ function wrapWithTamaguiLayer(css) {
13
+ return `@layer tamagui {
14
+ ${css}
15
+ }`;
16
+ }
17
+ function isTamaguiCoreResetCSS(id) {
18
+ var normalizedId = id.split("?", 1)[0].replace(/\\/g, "/");
19
+ return normalizedId.endsWith("/@tamagui/core/reset.css") || normalizedId.endsWith("/code/core/core/reset.css");
20
+ }
21
+ var TAILWIND_INPUT = `@layer tamagui, theme, utilities;
22
+ @import "tailwindcss/theme.css" layer(theme);
23
+ @import "tailwindcss/utilities.css" layer(utilities);`;
24
+ function extensionForFile(id) {
25
+ return path.extname(id.split("?", 1)[0]).slice(1) || "html";
26
+ }
27
+ async function assertHostTailwind(root) {
28
+ var requireFromRoot = createRequire(path.join(root, "package.json"));
29
+ var packagePath;
30
+ try {
31
+ packagePath = requireFromRoot.resolve("tailwindcss/package.json");
32
+ } catch (e) {
33
+ throw new Error(`[tamagui] @tamagui/tailwind/vite requires tailwindcss@${TAILWIND_VERSION} in the app. Install it with \`bun add -D tailwindcss@${TAILWIND_VERSION}\` (resolved from ${root}).`);
34
+ }
35
+ var packageJSON = JSON.parse(await readFile(packagePath, "utf8"));
36
+ if (packageJSON.version !== "4.3.0") {
37
+ throw new Error(`[tamagui] @tamagui/tailwind/vite requires tailwindcss@${TAILWIND_VERSION}, but ${packageJSON.version || "an unknown version"} was resolved from ${packagePath}. Align the app dependency before starting Vite.`);
38
+ }
39
+ }
40
+ function createTailwindScannerState() {
41
+ var root = "";
42
+ var generation = -1;
43
+ var enabled = false;
44
+ var scanner = null;
45
+ var compiler = null;
46
+ var grammarConfig = createGrammarConfigView({});
47
+ var candidatesByFile = /* @__PURE__ */ new Map();
48
+ var compiledCandidates = /* @__PURE__ */ new Set();
49
+ var addDependency = function() {};
50
+ var css = "";
51
+ function clear() {
52
+ root = "";
53
+ generation = -1;
54
+ enabled = false;
55
+ scanner = null;
56
+ compiler = null;
57
+ grammarConfig = createGrammarConfigView({});
58
+ candidatesByFile = /* @__PURE__ */ new Map();
59
+ compiledCandidates = /* @__PURE__ */ new Set();
60
+ addDependency = function() {};
61
+ css = "";
62
+ }
63
+ async function configure(nextRoot, nextGeneration, config, onDependency) {
64
+ var onSourceGlob = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : function() {};
65
+ if (!config) {
66
+ clear();
67
+ generation = nextGeneration;
68
+ return false;
69
+ }
70
+ if (compiler && scanner && enabled && generation === nextGeneration && root === nextRoot) {
71
+ return true;
72
+ }
73
+ await assertHostTailwind(nextRoot);
74
+ root = nextRoot;
75
+ generation = nextGeneration;
76
+ enabled = true;
77
+ grammarConfig = createGrammarConfigView(config);
78
+ addDependency = onDependency;
79
+ scanner = new Scanner({ sources: [
80
+ {
81
+ base: root,
82
+ pattern: "**/*",
83
+ negated: false
84
+ },
85
+ {
86
+ base: root,
87
+ pattern: "node_modules/**",
88
+ negated: true
89
+ },
90
+ {
91
+ base: root,
92
+ pattern: ".git/**",
93
+ negated: true
94
+ },
95
+ {
96
+ base: root,
97
+ pattern: ".vite/**",
98
+ negated: true
99
+ },
100
+ {
101
+ base: root,
102
+ pattern: "dist/**",
103
+ negated: true
104
+ },
105
+ {
106
+ base: root,
107
+ pattern: "build/**",
108
+ negated: true
109
+ },
110
+ {
111
+ base: root,
112
+ pattern: "coverage/**",
113
+ negated: true
114
+ }
115
+ ] });
116
+ compiler = await createCompiler();
117
+ scanner.scan();
118
+ registerScannerSources(scanner, onDependency, onSourceGlob);
119
+ candidatesByFile = /* @__PURE__ */ new Map();
120
+ await Promise.all(scanner.files.map(async function(file) {
121
+ try {
122
+ var source = await readFile(file, "utf8");
123
+ candidatesByFile.set(await normalizeSourcePath(file), candidatesForSource(scanner, file, source));
124
+ } catch (e) {}
125
+ }));
126
+ await rebuild();
127
+ return true;
128
+ }
129
+ async function createCompiler() {
130
+ return compile(TAILWIND_INPUT, {
131
+ base: root,
132
+ onDependency: addDependency
133
+ });
134
+ }
135
+ async function rebuild() {
136
+ if (!compiler) return false;
137
+ var allCandidates = /* @__PURE__ */ new Set();
138
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
139
+ try {
140
+ for (var _iterator = candidatesByFile.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
141
+ var candidates = _step.value;
142
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
143
+ try {
144
+ for (var _iterator1 = candidates[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
145
+ var candidate = _step1.value;
146
+ allCandidates.add(candidate);
147
+ }
148
+ } catch (err) {
149
+ _didIteratorError1 = true;
150
+ _iteratorError1 = err;
151
+ } finally {
152
+ try {
153
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
154
+ _iterator1.return();
155
+ }
156
+ } finally {
157
+ if (_didIteratorError1) {
158
+ throw _iteratorError1;
159
+ }
160
+ }
161
+ }
162
+ }
163
+ } catch (err) {
164
+ _didIteratorError = true;
165
+ _iteratorError = err;
166
+ } finally {
167
+ try {
168
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
169
+ _iterator.return();
170
+ }
171
+ } finally {
172
+ if (_didIteratorError) {
173
+ throw _iteratorError;
174
+ }
175
+ }
176
+ }
177
+ var passthrough = [...allCandidates].filter(function(candidate2) {
178
+ return classifyCandidate(candidate2, grammarConfig).kind === "passthrough";
179
+ }).sort(function(a, b) {
180
+ return a < b ? -1 : a > b ? 1 : 0;
181
+ });
182
+ var nextCandidates = new Set(passthrough);
183
+ var removedCandidate = [...compiledCandidates].some(function(candidate2) {
184
+ return !nextCandidates.has(candidate2);
185
+ });
186
+ if (removedCandidate) {
187
+ compiler = await createCompiler();
188
+ }
189
+ var nextCSS = compiler.build(passthrough);
190
+ compiledCandidates = nextCandidates;
191
+ if (nextCSS === css) return false;
192
+ css = nextCSS;
193
+ return true;
194
+ }
195
+ async function scanSource(id, source) {
196
+ if (!enabled || !scanner) return false;
197
+ candidatesByFile.set(await normalizeSourcePath(id), candidatesForSource(scanner, id, source));
198
+ return rebuild();
199
+ }
200
+ async function removeSource(id) {
201
+ if (!candidatesByFile.delete(await normalizeSourcePath(id))) return false;
202
+ return rebuild();
203
+ }
204
+ return {
205
+ clear,
206
+ configure,
207
+ removeSource,
208
+ scanSource,
209
+ get enabled() {
210
+ return enabled;
211
+ },
212
+ get css() {
213
+ return css;
214
+ },
215
+ get candidateCount() {
216
+ return compiledCandidates.size;
217
+ }
218
+ };
219
+ }
220
+ async function updateTailwindForWatchChange(state, id, event, configure) {
221
+ if (!await configure()) return false;
222
+ if (event === "delete") {
223
+ return state.removeSource(id);
224
+ }
225
+ try {
226
+ return state.scanSource(id, await readFile(id, "utf8"));
227
+ } catch (e) {
228
+ return state.removeSource(id);
229
+ }
230
+ }
231
+ function registerScannerSources(scanner, onDependency, onSourceGlob) {
232
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
233
+ try {
234
+ for (var _iterator = scanner.files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
235
+ var file = _step.value;
236
+ onDependency(file);
237
+ }
238
+ } catch (err) {
239
+ _didIteratorError = true;
240
+ _iteratorError = err;
241
+ } finally {
242
+ try {
243
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
244
+ _iterator.return();
245
+ }
246
+ } finally {
247
+ if (_didIteratorError) {
248
+ throw _iteratorError;
249
+ }
250
+ }
251
+ }
252
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
253
+ try {
254
+ for (var _iterator1 = scanner.globs[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
255
+ var { base, pattern } = _step1.value;
256
+ onSourceGlob(path.join(base, pattern));
257
+ }
258
+ } catch (err) {
259
+ _didIteratorError1 = true;
260
+ _iteratorError1 = err;
261
+ } finally {
262
+ try {
263
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
264
+ _iterator1.return();
265
+ }
266
+ } finally {
267
+ if (_didIteratorError1) {
268
+ throw _iteratorError1;
269
+ }
270
+ }
271
+ }
272
+ }
273
+ async function normalizeSourcePath(id) {
274
+ var cleanId = path.resolve(id.split("?", 1)[0]);
275
+ try {
276
+ return await realpath(cleanId);
277
+ } catch (e) {
278
+ try {
279
+ return path.join(await realpath(path.dirname(cleanId)), path.basename(cleanId));
280
+ } catch (e2) {
281
+ return cleanId;
282
+ }
283
+ }
284
+ }
285
+ function candidatesForSource(scanner, id, source) {
286
+ return new Set(scanner.getCandidatesWithPositions({
287
+ content: source,
288
+ extension: extensionForFile(id)
289
+ }).map(function(param) {
290
+ var { candidate } = param;
291
+ return candidate;
292
+ }));
293
+ }
294
+
295
+ export { TAILWIND_RESOLVED_ID, TAILWIND_VERSION, TAILWIND_VIRTUAL_ID, createTailwindScannerState, isTamaguiCoreResetCSS, updateTailwindForWatchChange, wrapWithTamaguiLayer };
296
+ //# sourceMappingURL=state.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.native.js","names":[],"sources":["esm/vite/state.native.js"],"sourcesContent":["import { compile } from \"@tailwindcss/node\";\nimport { Scanner } from \"@tailwindcss/oxide\";\nimport { createGrammarConfigView } from \"@tamagui/style-grammar/runtime\";\nimport { classifyCandidate } from \"@tamagui/style-grammar/tooling\";\nimport { readFile, realpath } from \"fs/promises\";\nimport { createRequire } from \"module\";\nimport path from \"path\";\nvar TAILWIND_VERSION = \"4.3.0\";\nvar TAILWIND_VIRTUAL_ID = \"virtual:tamagui-tailwind.css\";\nvar TAILWIND_RESOLVED_ID = `\\0${TAILWIND_VIRTUAL_ID}`;\nfunction wrapWithTamaguiLayer(css) {\n return `@layer tamagui {\n${css}\n}`;\n}\nfunction isTamaguiCoreResetCSS(id) {\n var normalizedId = id.split(\"?\", 1)[0].replace(/\\\\/g, \"/\");\n return normalizedId.endsWith(\"/@tamagui/core/reset.css\") || normalizedId.endsWith(\"/code/core/core/reset.css\");\n}\nvar TAILWIND_INPUT = `@layer tamagui, theme, utilities;\n@import \"tailwindcss/theme.css\" layer(theme);\n@import \"tailwindcss/utilities.css\" layer(utilities);`;\nfunction extensionForFile(id) {\n return path.extname(id.split(\"?\", 1)[0]).slice(1) || \"html\";\n}\nasync function assertHostTailwind(root) {\n var requireFromRoot = createRequire(path.join(root, \"package.json\"));\n var packagePath;\n try {\n packagePath = requireFromRoot.resolve(\"tailwindcss/package.json\");\n } catch (e) {\n throw new Error(`[tamagui] @tamagui/tailwind/vite requires tailwindcss@${TAILWIND_VERSION} in the app. Install it with \\`bun add -D tailwindcss@${TAILWIND_VERSION}\\` (resolved from ${root}).`);\n }\n var packageJSON = JSON.parse(await readFile(packagePath, \"utf8\"));\n if (packageJSON.version !== TAILWIND_VERSION) {\n throw new Error(`[tamagui] @tamagui/tailwind/vite requires tailwindcss@${TAILWIND_VERSION}, but ${packageJSON.version || \"an unknown version\"} was resolved from ${packagePath}. Align the app dependency before starting Vite.`);\n }\n}\nfunction createTailwindScannerState() {\n var root = \"\";\n var generation = -1;\n var enabled = false;\n var scanner = null;\n var compiler = null;\n var grammarConfig = createGrammarConfigView({});\n var candidatesByFile = /* @__PURE__ */ new Map();\n var compiledCandidates = /* @__PURE__ */ new Set();\n var addDependency = function() {\n };\n var css = \"\";\n function clear() {\n root = \"\";\n generation = -1;\n enabled = false;\n scanner = null;\n compiler = null;\n grammarConfig = createGrammarConfigView({});\n candidatesByFile = /* @__PURE__ */ new Map();\n compiledCandidates = /* @__PURE__ */ new Set();\n addDependency = function() {\n };\n css = \"\";\n }\n async function configure(nextRoot, nextGeneration, config, onDependency) {\n var onSourceGlob = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : function() {\n };\n if (!config) {\n clear();\n generation = nextGeneration;\n return false;\n }\n if (compiler && scanner && enabled && generation === nextGeneration && root === nextRoot) {\n return true;\n }\n await assertHostTailwind(nextRoot);\n root = nextRoot;\n generation = nextGeneration;\n enabled = true;\n grammarConfig = createGrammarConfigView(config);\n addDependency = onDependency;\n scanner = new Scanner({\n sources: [\n {\n base: root,\n pattern: \"**/*\",\n negated: false\n },\n {\n base: root,\n pattern: \"node_modules/**\",\n negated: true\n },\n {\n base: root,\n pattern: \".git/**\",\n negated: true\n },\n {\n base: root,\n pattern: \".vite/**\",\n negated: true\n },\n {\n base: root,\n pattern: \"dist/**\",\n negated: true\n },\n {\n base: root,\n pattern: \"build/**\",\n negated: true\n },\n {\n base: root,\n pattern: \"coverage/**\",\n negated: true\n }\n ]\n });\n compiler = await createCompiler();\n scanner.scan();\n registerScannerSources(scanner, onDependency, onSourceGlob);\n candidatesByFile = /* @__PURE__ */ new Map();\n await Promise.all(scanner.files.map(async function(file) {\n try {\n var source = await readFile(file, \"utf8\");\n candidatesByFile.set(await normalizeSourcePath(file), candidatesForSource(scanner, file, source));\n } catch (e) {\n }\n }));\n await rebuild();\n return true;\n }\n async function createCompiler() {\n return compile(TAILWIND_INPUT, {\n base: root,\n onDependency: addDependency\n });\n }\n async function rebuild() {\n if (!compiler) return false;\n var allCandidates = /* @__PURE__ */ new Set();\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = candidatesByFile.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var candidates = _step.value;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = candidates[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var candidate = _step1.value;\n allCandidates.add(candidate);\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 }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var passthrough = [\n ...allCandidates\n ].filter(function(candidate2) {\n return classifyCandidate(candidate2, grammarConfig).kind === \"passthrough\";\n }).sort(function(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n });\n var nextCandidates = new Set(passthrough);\n var removedCandidate = [\n ...compiledCandidates\n ].some(function(candidate2) {\n return !nextCandidates.has(candidate2);\n });\n if (removedCandidate) {\n compiler = await createCompiler();\n }\n var nextCSS = compiler.build(passthrough);\n compiledCandidates = nextCandidates;\n if (nextCSS === css) return false;\n css = nextCSS;\n return true;\n }\n async function scanSource(id, source) {\n if (!enabled || !scanner) return false;\n candidatesByFile.set(await normalizeSourcePath(id), candidatesForSource(scanner, id, source));\n return rebuild();\n }\n async function removeSource(id) {\n if (!candidatesByFile.delete(await normalizeSourcePath(id))) return false;\n return rebuild();\n }\n return {\n clear,\n configure,\n removeSource,\n scanSource,\n get enabled() {\n return enabled;\n },\n get css() {\n return css;\n },\n get candidateCount() {\n return compiledCandidates.size;\n }\n };\n}\nasync function updateTailwindForWatchChange(state, id, event, configure) {\n if (!await configure()) return false;\n if (event === \"delete\") {\n return state.removeSource(id);\n }\n try {\n return state.scanSource(id, await readFile(id, \"utf8\"));\n } catch (e) {\n return state.removeSource(id);\n }\n}\nfunction registerScannerSources(scanner, onDependency, onSourceGlob) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = scanner.files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var file = _step.value;\n onDependency(file);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = scanner.globs[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var { base, pattern } = _step1.value;\n onSourceGlob(path.join(base, pattern));\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}\nasync function normalizeSourcePath(id) {\n var cleanId = path.resolve(id.split(\"?\", 1)[0]);\n try {\n return await realpath(cleanId);\n } catch (e) {\n try {\n return path.join(await realpath(path.dirname(cleanId)), path.basename(cleanId));\n } catch (e2) {\n return cleanId;\n }\n }\n}\nfunction candidatesForSource(scanner, id, source) {\n return new Set(scanner.getCandidatesWithPositions({\n content: source,\n extension: extensionForFile(id)\n }).map(function(param) {\n var { candidate } = param;\n return candidate;\n }));\n}\nexport {\n TAILWIND_RESOLVED_ID,\n TAILWIND_VERSION,\n TAILWIND_VIRTUAL_ID,\n createTailwindScannerState,\n isTamaguiCoreResetCSS,\n updateTailwindForWatchChange,\n wrapWithTamaguiLayer\n};\n//# sourceMappingURL=state.js.map\n"],"mappings":";;;;;;;;;AAOA,IAAI,mBAAmB;AACvB,IAAI,sBAAsB;AAC1B,IAAI,uBAAuB,KAAK;AAChC,SAAS,qBAAqB,KAAK;CACjC,OAAO;EACP,IAAI;;AAEN;AACA,SAAS,sBAAsB,IAAI;CACjC,IAAI,eAAe,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,OAAO,GAAG;CACzD,OAAO,aAAa,SAAS,0BAA0B,KAAK,aAAa,SAAS,2BAA2B;AAC/G;AACA,IAAI,iBAAiB;;;AAGrB,SAAS,iBAAiB,IAAI;CAC5B,OAAO,KAAK,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;AACvD;AACA,eAAe,mBAAmB,MAAM;CACtC,IAAI,kBAAkB,cAAc,KAAK,KAAK,MAAM,cAAc,CAAC;CACnE,IAAI;CACJ,IAAI;EACF,cAAc,gBAAgB,QAAQ,0BAA0B;CAClE,SAAS,GAAG;EACV,MAAM,IAAI,MAAM,yDAAyD,iBAAiB,wDAAwD,iBAAiB,oBAAoB,KAAK,GAAG;CACjM;CACA,IAAI,cAAc,KAAK,MAAM,MAAM,SAAS,aAAa,MAAM,CAAC;CAChE,IAAI,YAAY,qBAA8B;EAC5C,MAAM,IAAI,MAAM,yDAAyD,iBAAiB,QAAQ,YAAY,WAAW,qBAAqB,qBAAqB,YAAY,iDAAiD;CAClO;AACF;AACA,SAAS,6BAA6B;CACpC,IAAI,OAAO;CACX,IAAI,aAAa,CAAC;CAClB,IAAI,UAAU;CACd,IAAI,UAAU;CACd,IAAI,WAAW;CACf,IAAI,gBAAgB,wBAAwB,CAAC,CAAC;CAC9C,IAAI,mCAAmC,IAAI,IAAI;CAC/C,IAAI,qCAAqC,IAAI,IAAI;CACjD,IAAI,gBAAgB,WAAW,CAC/B;CACA,IAAI,MAAM;CACV,SAAS,QAAQ;EACf,OAAO;EACP,aAAa,CAAC;EACd,UAAU;EACV,UAAU;EACV,WAAW;EACX,gBAAgB,wBAAwB,CAAC,CAAC;EAC1C,mCAAmC,IAAI,IAAI;EAC3C,qCAAqC,IAAI,IAAI;EAC7C,gBAAgB,WAAW,CAC3B;EACA,MAAM;CACR;CACA,eAAe,UAAU,UAAU,gBAAgB,QAAQ,cAAc;EACvE,IAAI,eAAe,UAAU,SAAS,KAAK,UAAU,OAAO,KAAK,IAAI,UAAU,KAAK,WAAW,CAC/F;EACA,IAAI,CAAC,QAAQ;GACX,MAAM;GACN,aAAa;GACb,OAAO;EACT;EACA,IAAI,YAAY,WAAW,WAAW,eAAe,kBAAkB,SAAS,UAAU;GACxF,OAAO;EACT;EACA,MAAM,mBAAmB,QAAQ;EACjC,OAAO;EACP,aAAa;EACb,UAAU;EACV,gBAAgB,wBAAwB,MAAM;EAC9C,gBAAgB;EAChB,UAAU,IAAI,QAAQ,EACpB,SAAS;GACP;IACE,MAAM;IACN,SAAS;IACT,SAAS;GACX;GACA;IACE,MAAM;IACN,SAAS;IACT,SAAS;GACX;GACA;IACE,MAAM;IACN,SAAS;IACT,SAAS;GACX;GACA;IACE,MAAM;IACN,SAAS;IACT,SAAS;GACX;GACA;IACE,MAAM;IACN,SAAS;IACT,SAAS;GACX;GACA;IACE,MAAM;IACN,SAAS;IACT,SAAS;GACX;GACA;IACE,MAAM;IACN,SAAS;IACT,SAAS;GACX;EACF,EACF,CAAC;EACD,WAAW,MAAM,eAAe;EAChC,QAAQ,KAAK;EACb,uBAAuB,SAAS,cAAc,YAAY;EAC1D,mCAAmC,IAAI,IAAI;EAC3C,MAAM,QAAQ,IAAI,QAAQ,MAAM,IAAI,eAAe,MAAM;GACvD,IAAI;IACF,IAAI,SAAS,MAAM,SAAS,MAAM,MAAM;IACxC,iBAAiB,IAAI,MAAM,oBAAoB,IAAI,GAAG,oBAAoB,SAAS,MAAM,MAAM,CAAC;GAClG,SAAS,GAAG,CACZ;EACF,CAAC,CAAC;EACF,MAAM,QAAQ;EACd,OAAO;CACT;CACA,eAAe,iBAAiB;EAC9B,OAAO,QAAQ,gBAAgB;GAC7B,MAAM;GACN,cAAc;EAChB,CAAC;CACH;CACA,eAAe,UAAU;EACvB,IAAI,CAAC,UAAU,OAAO;EACtB,IAAI,gCAAgC,IAAI,IAAI;EAC5C,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;EACvF,IAAI;GACF,KAAK,IAAI,YAAY,iBAAiB,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;IAC1K,IAAI,aAAa,MAAM;IACvB,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;IAC1F,IAAI;KACF,KAAK,IAAI,aAAa,WAAW,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;MACjK,IAAI,YAAY,OAAO;MACvB,cAAc,IAAI,SAAS;KAC7B;IACF,SAAS,KAAK;KACZ,qBAAqB;KACrB,kBAAkB;IACpB,UAAU;KACR,IAAI;MACF,IAAI,CAAC,8BAA8B,WAAW,UAAU,MAAM;OAC5D,WAAW,OAAO;MACpB;KACF,UAAU;MACR,IAAI,oBAAoB;OACtB,MAAM;MACR;KACF;IACF;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;EACA,IAAI,cAAc,CAChB,GAAG,aACL,CAAC,CAAC,OAAO,SAAS,YAAY;GAC5B,OAAO,kBAAkB,YAAY,aAAa,CAAC,CAAC,SAAS;EAC/D,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,GAAG;GACrB,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI;EAClC,CAAC;EACD,IAAI,iBAAiB,IAAI,IAAI,WAAW;EACxC,IAAI,mBAAmB,CACrB,GAAG,kBACL,CAAC,CAAC,KAAK,SAAS,YAAY;GAC1B,OAAO,CAAC,eAAe,IAAI,UAAU;EACvC,CAAC;EACD,IAAI,kBAAkB;GACpB,WAAW,MAAM,eAAe;EAClC;EACA,IAAI,UAAU,SAAS,MAAM,WAAW;EACxC,qBAAqB;EACrB,IAAI,YAAY,KAAK,OAAO;EAC5B,MAAM;EACN,OAAO;CACT;CACA,eAAe,WAAW,IAAI,QAAQ;EACpC,IAAI,CAAC,WAAW,CAAC,SAAS,OAAO;EACjC,iBAAiB,IAAI,MAAM,oBAAoB,EAAE,GAAG,oBAAoB,SAAS,IAAI,MAAM,CAAC;EAC5F,OAAO,QAAQ;CACjB;CACA,eAAe,aAAa,IAAI;EAC9B,IAAI,CAAC,iBAAiB,OAAO,MAAM,oBAAoB,EAAE,CAAC,GAAG,OAAO;EACpE,OAAO,QAAQ;CACjB;CACA,OAAO;EACL;EACA;EACA;EACA;EACA,IAAI,UAAU;GACZ,OAAO;EACT;EACA,IAAI,MAAM;GACR,OAAO;EACT;EACA,IAAI,iBAAiB;GACnB,OAAO,mBAAmB;EAC5B;CACF;AACF;AACA,eAAe,6BAA6B,OAAO,IAAI,OAAO,WAAW;CACvE,IAAI,CAAC,MAAM,UAAU,GAAG,OAAO;CAC/B,IAAI,UAAU,UAAU;EACtB,OAAO,MAAM,aAAa,EAAE;CAC9B;CACA,IAAI;EACF,OAAO,MAAM,WAAW,IAAI,MAAM,SAAS,IAAI,MAAM,CAAC;CACxD,SAAS,GAAG;EACV,OAAO,MAAM,aAAa,EAAE;CAC9B;AACF;AACA,SAAS,uBAAuB,SAAS,cAAc,cAAc;CACnE,IAAI,4BAA4B,MAAM,oBAAoB,OAAO,iBAAiB,KAAK;CACvF,IAAI;EACF,KAAK,IAAI,YAAY,QAAQ,MAAM,OAAO,SAAS,CAAC,GAAG,OAAO,EAAE,6BAA6B,QAAQ,UAAU,KAAK,EAAC,CAAE,OAAO,4BAA4B,MAAM;GAC9J,IAAI,OAAO,MAAM;GACjB,aAAa,IAAI;EACnB;CACF,SAAS,KAAK;EACZ,oBAAoB;EACpB,iBAAiB;CACnB,UAAU;EACR,IAAI;GACF,IAAI,CAAC,6BAA6B,UAAU,UAAU,MAAM;IAC1D,UAAU,OAAO;GACnB;EACF,UAAU;GACR,IAAI,mBAAmB;IACrB,MAAM;GACR;EACF;CACF;CACA,IAAI,6BAA6B,MAAM,qBAAqB,OAAO,kBAAkB,KAAK;CAC1F,IAAI;EACF,KAAK,IAAI,aAAa,QAAQ,MAAM,OAAO,SAAS,CAAC,GAAG,QAAQ,EAAE,8BAA8B,SAAS,WAAW,KAAK,EAAC,CAAE,OAAO,6BAA6B,MAAM;GACpK,IAAI,EAAE,MAAM,YAAY,OAAO;GAC/B,aAAa,KAAK,KAAK,MAAM,OAAO,CAAC;EACvC;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;AACF;AACA,eAAe,oBAAoB,IAAI;CACrC,IAAI,UAAU,KAAK,QAAQ,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE;CAC9C,IAAI;EACF,OAAO,MAAM,SAAS,OAAO;CAC/B,SAAS,GAAG;EACV,IAAI;GACF,OAAO,KAAK,KAAK,MAAM,SAAS,KAAK,QAAQ,OAAO,CAAC,GAAG,KAAK,SAAS,OAAO,CAAC;EAChF,SAAS,IAAI;GACX,OAAO;EACT;CACF;AACF;AACA,SAAS,oBAAoB,SAAS,IAAI,QAAQ;CAChD,OAAO,IAAI,IAAI,QAAQ,2BAA2B;EAChD,SAAS;EACT,WAAW,iBAAiB,EAAE;CAChC,CAAC,CAAC,CAAC,IAAI,SAAS,OAAO;EACrB,IAAI,EAAE,cAAc;EACpB,OAAO;CACT,CAAC,CAAC;AACJ"}
@@ -0,0 +1,116 @@
1
+ import { createTamaguiPlugins } from "@tamagui/vite-plugin/internal";
2
+ import path from "node:path";
3
+ import { TAILWIND_RESOLVED_ID, TAILWIND_RESOLVED_ID as TAILWIND_RESOLVED_ID2, TAILWIND_VERSION, TAILWIND_VIRTUAL_ID, TAILWIND_VIRTUAL_ID as TAILWIND_VIRTUAL_ID2, createTailwindScannerState, isTamaguiCoreResetCSS, updateTailwindForWatchChange, wrapWithTamaguiLayer } from "./vite/state.mjs";
4
+
5
+ function isNative(environment) {
6
+ return environment?.name === "ios" || environment?.name === "android";
7
+ }
8
+ function isNotClient(environment) {
9
+ return !!environment?.name && environment.name !== "client";
10
+ }
11
+ function createTailwindPlugin(loader) {
12
+ const state = createTailwindScannerState();
13
+ let config;
14
+ let server;
15
+ const configure = async (addWatchFile) => state.configure(config.root, loader.getGeneration(), await loader.getTamaguiConfig(), addWatchFile, (glob) => server?.watcher.add(glob));
16
+ const isAppJSXSource = (filePath) => {
17
+ if (!/\.[jt]sx$/.test(filePath)) return false;
18
+ const relative = path.relative(config.root, filePath);
19
+ return relative !== "" && relative !== ".." && !relative.startsWith(`..${path.sep}`) && !relative.split(path.sep).includes("node_modules");
20
+ };
21
+ const clientTailwindModule = () => server?.environments.client?.moduleGraph.getModuleById(TAILWIND_RESOLVED_ID);
22
+ return {
23
+ name: "tamagui-tailwind",
24
+ enforce: "pre",
25
+ config() {
26
+ return {
27
+ optimizeDeps: { include: ["@tamagui/tailwind", "@tamagui/core/internal-runtime"] },
28
+ resolve: { dedupe: ["@tamagui/tailwind"] },
29
+ define: { "process.env.TAMAGUI_CSS_LAYER": JSON.stringify("tamagui") }
30
+ };
31
+ },
32
+ configResolved(resolvedConfig) {
33
+ config = resolvedConfig;
34
+ },
35
+ configureServer(_server) {
36
+ server = _server;
37
+ },
38
+ hotUpdate: {
39
+ order: "post",
40
+ async handler(options) {
41
+ if (this.environment.name !== "client") return;
42
+ if (loader.isEvaluationDependency(options.file)) {
43
+ state.clear();
44
+ return;
45
+ }
46
+ if (!await configure(() => {})) return;
47
+ const changed = options.type === "delete" ? await state.removeSource(options.file) : await state.scanSource(options.file, await options.read());
48
+ if (!changed) return;
49
+ const virtualModule = clientTailwindModule();
50
+ if (!virtualModule) return;
51
+ this.environment.moduleGraph.invalidateModule(virtualModule);
52
+ return [...options.modules, virtualModule];
53
+ }
54
+ },
55
+ async watchChange(id, change) {
56
+ if (config.command !== "build") return;
57
+ if (loader.isEvaluationDependency(id)) {
58
+ state.clear();
59
+ return;
60
+ }
61
+ await updateTailwindForWatchChange(state, id, change.event, () => configure((file) => this.addWatchFile(file)));
62
+ },
63
+ resolveId(source) {
64
+ if (isNative(this.environment) || isNotClient(this.environment)) return;
65
+ if (source === TAILWIND_VIRTUAL_ID) return TAILWIND_RESOLVED_ID;
66
+ },
67
+ async load(id) {
68
+ if (id !== TAILWIND_RESOLVED_ID) return;
69
+ if (isNative(this.environment) || isNotClient(this.environment)) return;
70
+ if (!await configure((file) => this.addWatchFile(file))) return "";
71
+ return state.css;
72
+ },
73
+ transform: {
74
+ order: "pre",
75
+ async handler(code, id) {
76
+ if (isNative(this.environment)) return;
77
+ const [validId] = id.split("?");
78
+ if (isTamaguiCoreResetCSS(validId)) {
79
+ return {
80
+ code: wrapWithTamaguiLayer(code),
81
+ map: null
82
+ };
83
+ }
84
+ if (!loader.getEnvironment()) return;
85
+ if (!isAppJSXSource(validId)) return;
86
+ if (!await configure((file) => this.addWatchFile(file))) return;
87
+ if (await state.scanSource(validId, code)) {
88
+ const virtualModule = clientTailwindModule();
89
+ if (virtualModule) {
90
+ server?.environments.client?.moduleGraph.invalidateModule(virtualModule);
91
+ }
92
+ }
93
+ for (const dependency of loader.getEvaluationDependencies()) {
94
+ this.addWatchFile(dependency);
95
+ }
96
+ if (isNotClient(this.environment)) return;
97
+ return {
98
+ code: `${code}
99
+ import "${TAILWIND_VIRTUAL_ID}";`,
100
+ map: null
101
+ };
102
+ }
103
+ }
104
+ };
105
+ }
106
+ function tamaguiPlugin(options = {}) {
107
+ const { plugins, loader } = createTamaguiPlugins({
108
+ ...options,
109
+ components: [.../* @__PURE__ */ new Set([...options.components ?? ["tamagui"], "@tamagui/tailwind"])],
110
+ wrapExtractedCSS: wrapWithTamaguiLayer
111
+ });
112
+ return [...plugins, createTailwindPlugin(loader)];
113
+ }
114
+
115
+ export { TAILWIND_RESOLVED_ID2 as TAILWIND_RESOLVED_ID, TAILWIND_VERSION, TAILWIND_VIRTUAL_ID2 as TAILWIND_VIRTUAL_ID, tamaguiPlugin };
116
+ //# sourceMappingURL=vite.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.js","names":[],"sources":["esm/vite.js"],"sourcesContent":["import {\n createTamaguiPlugins\n} from \"@tamagui/vite-plugin/internal\";\nimport path from \"node:path\";\nimport {\n createTailwindScannerState,\n isTamaguiCoreResetCSS,\n TAILWIND_RESOLVED_ID,\n TAILWIND_VIRTUAL_ID,\n updateTailwindForWatchChange,\n wrapWithTamaguiLayer\n} from \"./vite/state\";\nimport { TAILWIND_RESOLVED_ID as TAILWIND_RESOLVED_ID2, TAILWIND_VERSION, TAILWIND_VIRTUAL_ID as TAILWIND_VIRTUAL_ID2 } from \"./vite/state\";\nfunction isNative(environment) {\n return environment?.name === \"ios\" || environment?.name === \"android\";\n}\nfunction isNotClient(environment) {\n return !!environment?.name && environment.name !== \"client\";\n}\nfunction createTailwindPlugin(loader) {\n const state = createTailwindScannerState();\n let config;\n let server;\n const configure = async (addWatchFile) => state.configure(\n config.root,\n loader.getGeneration(),\n await loader.getTamaguiConfig(),\n addWatchFile,\n (glob) => server?.watcher.add(glob)\n );\n const isAppJSXSource = (filePath) => {\n if (!/\\.[jt]sx$/.test(filePath)) return false;\n const relative = path.relative(config.root, filePath);\n return relative !== \"\" && relative !== \"..\" && !relative.startsWith(`..${path.sep}`) && !relative.split(path.sep).includes(\"node_modules\");\n };\n const clientTailwindModule = () => server?.environments.client?.moduleGraph.getModuleById(TAILWIND_RESOLVED_ID);\n return {\n name: \"tamagui-tailwind\",\n enforce: \"pre\",\n config() {\n return {\n optimizeDeps: {\n // Tailwind components reach the shared renderer through\n // `@tamagui/core/internal-runtime`, while regular components reach it through\n // `@tamagui/core`. Optimizing both entries together puts them in one chunk\n // graph, so there is a single `@tamagui/web` instance and both frontends see\n // the same config singleton and contexts.\n include: [\"@tamagui/tailwind\", \"@tamagui/core/internal-runtime\"]\n },\n resolve: {\n dedupe: [\"@tamagui/tailwind\"]\n },\n define: {\n // Runtime-generated and SSR fallback rules must participate in the same\n // cascade order as compiler-extracted Tamagui CSS. Without this, the\n // unlayered runtime duplicate beats official Tailwind utilities.\n \"process.env.TAMAGUI_CSS_LAYER\": JSON.stringify(\"tamagui\")\n }\n };\n },\n configResolved(resolvedConfig) {\n config = resolvedConfig;\n },\n configureServer(_server) {\n server = _server;\n },\n hotUpdate: {\n order: \"post\",\n async handler(options) {\n if (this.environment.name !== \"client\") return;\n if (loader.isEvaluationDependency(options.file)) {\n state.clear();\n return;\n }\n if (!await configure(() => {\n })) return;\n const changed = options.type === \"delete\" ? await state.removeSource(options.file) : await state.scanSource(options.file, await options.read());\n if (!changed) return;\n const virtualModule = clientTailwindModule();\n if (!virtualModule) return;\n this.environment.moduleGraph.invalidateModule(virtualModule);\n return [...options.modules, virtualModule];\n }\n },\n async watchChange(id, change) {\n if (config.command !== \"build\") return;\n if (loader.isEvaluationDependency(id)) {\n state.clear();\n return;\n }\n await updateTailwindForWatchChange(\n state,\n id,\n change.event,\n () => configure((file) => this.addWatchFile(file))\n );\n },\n resolveId(source) {\n if (isNative(this.environment) || isNotClient(this.environment)) return;\n if (source === TAILWIND_VIRTUAL_ID) return TAILWIND_RESOLVED_ID;\n },\n async load(id) {\n if (id !== TAILWIND_RESOLVED_ID) return;\n if (isNative(this.environment) || isNotClient(this.environment)) return;\n if (!await configure((file) => this.addWatchFile(file))) return \"\";\n return state.css;\n },\n transform: {\n order: \"pre\",\n async handler(code, id) {\n if (isNative(this.environment)) return;\n const [validId] = id.split(\"?\");\n if (isTamaguiCoreResetCSS(validId)) {\n return { code: wrapWithTamaguiLayer(code), map: null };\n }\n if (!loader.getEnvironment()) return;\n if (!isAppJSXSource(validId)) return;\n if (!await configure((file) => this.addWatchFile(file))) return;\n if (await state.scanSource(validId, code)) {\n const virtualModule = clientTailwindModule();\n if (virtualModule) {\n server?.environments.client?.moduleGraph.invalidateModule(virtualModule);\n }\n }\n for (const dependency of loader.getEvaluationDependencies()) {\n this.addWatchFile(dependency);\n }\n if (isNotClient(this.environment)) return;\n return { code: `${code}\nimport \"${TAILWIND_VIRTUAL_ID}\";`, map: null };\n }\n }\n };\n}\nfunction tamaguiPlugin(options = {}) {\n const { plugins, loader } = createTamaguiPlugins({\n ...options,\n components: [\n .../* @__PURE__ */ new Set([...options.components ?? [\"tamagui\"], \"@tamagui/tailwind\"])\n ],\n wrapExtractedCSS: wrapWithTamaguiLayer\n });\n return [...plugins, createTailwindPlugin(loader)];\n}\nexport {\n TAILWIND_RESOLVED_ID2 as TAILWIND_RESOLVED_ID,\n TAILWIND_VERSION,\n TAILWIND_VIRTUAL_ID2 as TAILWIND_VIRTUAL_ID,\n tamaguiPlugin\n};\n//# sourceMappingURL=vite.js.map\n"],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ import { createTamaguiPlugins } from "@tamagui/vite-plugin/internal";
2
+ import path from "path";
3
+ import { TAILWIND_RESOLVED_ID, TAILWIND_RESOLVED_ID as TAILWIND_RESOLVED_ID2, TAILWIND_VERSION, TAILWIND_VIRTUAL_ID, TAILWIND_VIRTUAL_ID as TAILWIND_VIRTUAL_ID2, createTailwindScannerState, isTamaguiCoreResetCSS, updateTailwindForWatchChange, wrapWithTamaguiLayer } from "./vite/state.native.js";
4
+
5
+ function isNative(environment) {
6
+ return (environment === null || environment === void 0 ? void 0 : environment.name) === "ios" || (environment === null || environment === void 0 ? void 0 : environment.name) === "android";
7
+ }
8
+ function isNotClient(environment) {
9
+ return !!(environment === null || environment === void 0 ? void 0 : environment.name) && environment.name !== "client";
10
+ }
11
+ function createTailwindPlugin(loader) {
12
+ var state = createTailwindScannerState();
13
+ var config;
14
+ var server;
15
+ var configure = async function(addWatchFile) {
16
+ return state.configure(config.root, loader.getGeneration(), await loader.getTamaguiConfig(), addWatchFile, function(glob) {
17
+ return server === null || server === void 0 ? void 0 : server.watcher.add(glob);
18
+ });
19
+ };
20
+ var isAppJSXSource = function(filePath) {
21
+ if (!/\.[jt]sx$/.test(filePath)) return false;
22
+ var relative = path.relative(config.root, filePath);
23
+ return relative !== "" && relative !== ".." && !relative.startsWith(`..${path.sep}`) && !relative.split(path.sep).includes("node_modules");
24
+ };
25
+ var clientTailwindModule = function() {
26
+ var _server_environments_client;
27
+ return server === null || server === void 0 ? void 0 : (_server_environments_client = server.environments.client) === null || _server_environments_client === void 0 ? void 0 : _server_environments_client.moduleGraph.getModuleById(TAILWIND_RESOLVED_ID);
28
+ };
29
+ return {
30
+ name: "tamagui-tailwind",
31
+ enforce: "pre",
32
+ config() {
33
+ return {
34
+ optimizeDeps: { include: ["@tamagui/tailwind", "@tamagui/core/internal-runtime"] },
35
+ resolve: { dedupe: ["@tamagui/tailwind"] },
36
+ define: { "process.env.TAMAGUI_CSS_LAYER": JSON.stringify("tamagui") }
37
+ };
38
+ },
39
+ configResolved(resolvedConfig) {
40
+ config = resolvedConfig;
41
+ },
42
+ configureServer(_server) {
43
+ server = _server;
44
+ },
45
+ hotUpdate: {
46
+ order: "post",
47
+ async handler(options) {
48
+ if (this.environment.name !== "client") return;
49
+ if (loader.isEvaluationDependency(options.file)) {
50
+ state.clear();
51
+ return;
52
+ }
53
+ if (!await configure(function() {})) return;
54
+ var changed = options.type === "delete" ? await state.removeSource(options.file) : await state.scanSource(options.file, await options.read());
55
+ if (!changed) return;
56
+ var virtualModule = clientTailwindModule();
57
+ if (!virtualModule) return;
58
+ this.environment.moduleGraph.invalidateModule(virtualModule);
59
+ return [...options.modules, virtualModule];
60
+ }
61
+ },
62
+ async watchChange(id, change) {
63
+ var _this = this;
64
+ if (config.command !== "build") return;
65
+ if (loader.isEvaluationDependency(id)) {
66
+ state.clear();
67
+ return;
68
+ }
69
+ await updateTailwindForWatchChange(state, id, change.event, function() {
70
+ return configure(function(file) {
71
+ return _this.addWatchFile(file);
72
+ });
73
+ });
74
+ },
75
+ resolveId(source) {
76
+ if (isNative(this.environment) || isNotClient(this.environment)) return;
77
+ if (source === TAILWIND_VIRTUAL_ID) return TAILWIND_RESOLVED_ID;
78
+ },
79
+ async load(id) {
80
+ var _this = this;
81
+ if (id !== TAILWIND_RESOLVED_ID) return;
82
+ if (isNative(this.environment) || isNotClient(this.environment)) return;
83
+ if (!await configure(function(file) {
84
+ return _this.addWatchFile(file);
85
+ })) return "";
86
+ return state.css;
87
+ },
88
+ transform: {
89
+ order: "pre",
90
+ async handler(code, id) {
91
+ var _this = this;
92
+ if (isNative(this.environment)) return;
93
+ var [validId] = id.split("?");
94
+ if (isTamaguiCoreResetCSS(validId)) {
95
+ return {
96
+ code: wrapWithTamaguiLayer(code),
97
+ map: null
98
+ };
99
+ }
100
+ if (!loader.getEnvironment()) return;
101
+ if (!isAppJSXSource(validId)) return;
102
+ if (!await configure(function(file) {
103
+ return _this.addWatchFile(file);
104
+ })) return;
105
+ if (await state.scanSource(validId, code)) {
106
+ var virtualModule = clientTailwindModule();
107
+ if (virtualModule) {
108
+ var _server_environments_client;
109
+ server === null || server === void 0 ? void 0 : (_server_environments_client = server.environments.client) === null || _server_environments_client === void 0 ? void 0 : _server_environments_client.moduleGraph.invalidateModule(virtualModule);
110
+ }
111
+ }
112
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
113
+ try {
114
+ for (var _iterator = loader.getEvaluationDependencies()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
115
+ var dependency = _step.value;
116
+ this.addWatchFile(dependency);
117
+ }
118
+ } catch (err) {
119
+ _didIteratorError = true;
120
+ _iteratorError = err;
121
+ } finally {
122
+ try {
123
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
124
+ _iterator.return();
125
+ }
126
+ } finally {
127
+ if (_didIteratorError) {
128
+ throw _iteratorError;
129
+ }
130
+ }
131
+ }
132
+ if (isNotClient(this.environment)) return;
133
+ return {
134
+ code: `${code}
135
+ import "${TAILWIND_VIRTUAL_ID}";`,
136
+ map: null
137
+ };
138
+ }
139
+ }
140
+ };
141
+ }
142
+ function tamaguiPlugin() {
143
+ var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
144
+ var _options_components;
145
+ var { plugins, loader } = createTamaguiPlugins({
146
+ ...options,
147
+ components: [.../* @__PURE__ */ new Set([...(_options_components = options.components) !== null && _options_components !== void 0 ? _options_components : ["tamagui"], "@tamagui/tailwind"])],
148
+ wrapExtractedCSS: wrapWithTamaguiLayer
149
+ });
150
+ return [...plugins, createTailwindPlugin(loader)];
151
+ }
152
+
153
+ export { TAILWIND_RESOLVED_ID2 as TAILWIND_RESOLVED_ID, TAILWIND_VERSION, TAILWIND_VIRTUAL_ID2 as TAILWIND_VIRTUAL_ID, tamaguiPlugin };
154
+ //# sourceMappingURL=vite.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.native.js","names":[],"sources":["esm/vite.native.js"],"sourcesContent":["import { createTamaguiPlugins } from \"@tamagui/vite-plugin/internal\";\nimport path from \"path\";\nimport { createTailwindScannerState, isTamaguiCoreResetCSS, TAILWIND_RESOLVED_ID, TAILWIND_VIRTUAL_ID, updateTailwindForWatchChange, wrapWithTamaguiLayer } from \"./vite/state\";\nimport { TAILWIND_RESOLVED_ID as TAILWIND_RESOLVED_ID2, TAILWIND_VERSION, TAILWIND_VIRTUAL_ID as TAILWIND_VIRTUAL_ID2 } from \"./vite/state\";\nfunction isNative(environment) {\n return (environment === null || environment === void 0 ? void 0 : environment.name) === \"ios\" || (environment === null || environment === void 0 ? void 0 : environment.name) === \"android\";\n}\nfunction isNotClient(environment) {\n return !!(environment === null || environment === void 0 ? void 0 : environment.name) && environment.name !== \"client\";\n}\nfunction createTailwindPlugin(loader) {\n var state = createTailwindScannerState();\n var config;\n var server;\n var configure = async function(addWatchFile) {\n return state.configure(config.root, loader.getGeneration(), await loader.getTamaguiConfig(), addWatchFile, function(glob) {\n return server === null || server === void 0 ? void 0 : server.watcher.add(glob);\n });\n };\n var isAppJSXSource = function(filePath) {\n if (!/\\.[jt]sx$/.test(filePath)) return false;\n var relative = path.relative(config.root, filePath);\n return relative !== \"\" && relative !== \"..\" && !relative.startsWith(`..${path.sep}`) && !relative.split(path.sep).includes(\"node_modules\");\n };\n var clientTailwindModule = function() {\n var _server_environments_client;\n return server === null || server === void 0 ? void 0 : (_server_environments_client = server.environments.client) === null || _server_environments_client === void 0 ? void 0 : _server_environments_client.moduleGraph.getModuleById(TAILWIND_RESOLVED_ID);\n };\n return {\n name: \"tamagui-tailwind\",\n enforce: \"pre\",\n config() {\n return {\n optimizeDeps: {\n // Tailwind components reach the shared renderer through\n // `@tamagui/core/internal-runtime`, while regular components reach it through\n // `@tamagui/core`. Optimizing both entries together puts them in one chunk\n // graph, so there is a single `@tamagui/web` instance and both frontends see\n // the same config singleton and contexts.\n include: [\n \"@tamagui/tailwind\",\n \"@tamagui/core/internal-runtime\"\n ]\n },\n resolve: {\n dedupe: [\n \"@tamagui/tailwind\"\n ]\n },\n define: {\n // Runtime-generated and SSR fallback rules must participate in the same\n // cascade order as compiler-extracted Tamagui CSS. Without this, the\n // unlayered runtime duplicate beats official Tailwind utilities.\n \"process.env.TAMAGUI_CSS_LAYER\": JSON.stringify(\"tamagui\")\n }\n };\n },\n configResolved(resolvedConfig) {\n config = resolvedConfig;\n },\n configureServer(_server) {\n server = _server;\n },\n hotUpdate: {\n order: \"post\",\n async handler(options) {\n if (this.environment.name !== \"client\") return;\n if (loader.isEvaluationDependency(options.file)) {\n state.clear();\n return;\n }\n if (!await configure(function() {\n })) return;\n var changed = options.type === \"delete\" ? await state.removeSource(options.file) : await state.scanSource(options.file, await options.read());\n if (!changed) return;\n var virtualModule = clientTailwindModule();\n if (!virtualModule) return;\n this.environment.moduleGraph.invalidateModule(virtualModule);\n return [\n ...options.modules,\n virtualModule\n ];\n }\n },\n async watchChange(id, change) {\n var _this = this;\n if (config.command !== \"build\") return;\n if (loader.isEvaluationDependency(id)) {\n state.clear();\n return;\n }\n await updateTailwindForWatchChange(state, id, change.event, function() {\n return configure(function(file) {\n return _this.addWatchFile(file);\n });\n });\n },\n resolveId(source) {\n if (isNative(this.environment) || isNotClient(this.environment)) return;\n if (source === TAILWIND_VIRTUAL_ID) return TAILWIND_RESOLVED_ID;\n },\n async load(id) {\n var _this = this;\n if (id !== TAILWIND_RESOLVED_ID) return;\n if (isNative(this.environment) || isNotClient(this.environment)) return;\n if (!await configure(function(file) {\n return _this.addWatchFile(file);\n })) return \"\";\n return state.css;\n },\n transform: {\n order: \"pre\",\n async handler(code, id) {\n var _this = this;\n if (isNative(this.environment)) return;\n var [validId] = id.split(\"?\");\n if (isTamaguiCoreResetCSS(validId)) {\n return {\n code: wrapWithTamaguiLayer(code),\n map: null\n };\n }\n if (!loader.getEnvironment()) return;\n if (!isAppJSXSource(validId)) return;\n if (!await configure(function(file) {\n return _this.addWatchFile(file);\n })) return;\n if (await state.scanSource(validId, code)) {\n var virtualModule = clientTailwindModule();\n if (virtualModule) {\n var _server_environments_client;\n server === null || server === void 0 ? void 0 : (_server_environments_client = server.environments.client) === null || _server_environments_client === void 0 ? void 0 : _server_environments_client.moduleGraph.invalidateModule(virtualModule);\n }\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = loader.getEvaluationDependencies()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var dependency = _step.value;\n this.addWatchFile(dependency);\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 if (isNotClient(this.environment)) return;\n return {\n code: `${code}\nimport \"${TAILWIND_VIRTUAL_ID}\";`,\n map: null\n };\n }\n }\n };\n}\nfunction tamaguiPlugin() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n var _options_components;\n var { plugins, loader } = createTamaguiPlugins({\n ...options,\n components: [\n .../* @__PURE__ */ new Set([\n ...(_options_components = options.components) !== null && _options_components !== void 0 ? _options_components : [\n \"tamagui\"\n ],\n \"@tamagui/tailwind\"\n ])\n ],\n wrapExtractedCSS: wrapWithTamaguiLayer\n });\n return [\n ...plugins,\n createTailwindPlugin(loader)\n ];\n}\nexport {\n TAILWIND_RESOLVED_ID2 as TAILWIND_RESOLVED_ID,\n TAILWIND_VERSION,\n TAILWIND_VIRTUAL_ID2 as TAILWIND_VIRTUAL_ID,\n tamaguiPlugin\n};\n//# sourceMappingURL=vite.js.map\n"],"mappings":"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"}