weapp-tailwindcss 5.2.6 → 5.2.8

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 (65) hide show
  1. package/dist/bundlers/shared/final-css-cleanup.d.ts +2 -0
  2. package/dist/bundlers/shared/generator-css/directives.d.ts +1 -0
  3. package/dist/bundlers/vite/generate-bundle/final-css-assets.d.ts +8 -0
  4. package/dist/bundlers/vite/hot-css-modules.d.ts +5 -3
  5. package/dist/bundlers/vite/module-identity.d.ts +9 -0
  6. package/dist/bundlers/vite/processed-css-assets/cleanup.d.ts +0 -1
  7. package/dist/bundlers/vite/processed-css-assets/markers-imports.d.ts +1 -0
  8. package/dist/bundlers/vite/processed-css-assets/scoped-tailwind-noise.d.ts +4 -0
  9. package/dist/bundlers/vite/serve-css-generation.d.ts +1 -0
  10. package/dist/bundlers/vite/shared/create-framework-plugins.d.ts +2 -1
  11. package/dist/bundlers/vite/shared/framework-hmr-candidate-state.d.ts +1 -0
  12. package/dist/bundlers/vite/shared/framework-source-scan-session.d.ts +2 -0
  13. package/dist/bundlers/vite/shared/framework-strategy.d.ts +4 -0
  14. package/dist/cli.js +1 -0
  15. package/dist/{context-YAvTyPV2.js → context-BMkbwnH8.js} +10 -23
  16. package/dist/{context-OqD_eBxQ.cjs → context-CByXWyhQ.cjs} +179 -25
  17. package/dist/core.cjs +1 -1
  18. package/dist/core.js +1 -1
  19. package/dist/{generator-BE34PYSC.cjs → generator-B0dCFlP1.cjs} +10 -0
  20. package/dist/{generator-DYeAa2-5.js → generator-BLpOsd5O.js} +10 -0
  21. package/dist/generator.cjs +1 -1
  22. package/dist/generator.js +1 -1
  23. package/dist/{gulp-DCItlfoq.js → gulp-BWhCahA2.js} +7 -7
  24. package/dist/{gulp-CPIE1yPk.cjs → gulp-BdoorWb5.cjs} +10 -10
  25. package/dist/gulp.cjs +1 -1
  26. package/dist/gulp.js +1 -1
  27. package/dist/{hmr-timing-BevXxu6p.js → hmr-timing-CJocHeZr.js} +122 -16
  28. package/dist/{hmr-timing-Chyd_Yfw.cjs → hmr-timing-DiYnyg_W.cjs} +3 -3
  29. package/dist/index.cjs +4 -4
  30. package/dist/index.js +4 -4
  31. package/dist/{options-hVsoTfwL.cjs → options-zpZez7qe.cjs} +1 -1
  32. package/dist/{pipeline-helpers-Cwv-X4Rj.cjs → pipeline-helpers-CsNLoEX1.cjs} +4 -4
  33. package/dist/postcss.cjs +1 -1
  34. package/dist/postcss.js +1 -1
  35. package/dist/presets.cjs +2 -2
  36. package/dist/presets.js +1 -1
  37. package/dist/rspack.cjs +1 -1
  38. package/dist/rspack.js +1 -1
  39. package/dist/{source-candidate-scan-signature-DG5mQZ8o.cjs → source-candidate-scan-signature-D9FXTD9a.cjs} +3 -3
  40. package/dist/{source-candidate-scan-signature-DLFqYads.js → source-candidate-scan-signature-of-TmeOs.js} +3 -3
  41. package/dist/{style-options-B_ppaVIg.cjs → style-options-COpQc8fr.cjs} +2 -2
  42. package/dist/{tailwindcss-CTpCc_nd.js → tailwindcss-2zdmASlM.js} +1 -1
  43. package/dist/{tailwindcss-DcpiKvmJ.cjs → tailwindcss-LtnGCxF0.cjs} +2 -2
  44. package/dist/{transform-BbaPIji9.js → transform-DVGsr8cV.js} +24 -7
  45. package/dist/{transform-BUEyOCT7.cjs → transform-DzVJW6Dp.cjs} +24 -7
  46. package/dist/uni-app-x/component-local-style.d.ts +1 -0
  47. package/dist/uni-app-x/vite/author-apply.d.ts +1 -0
  48. package/dist/uni-app-x/vite/harmony-apply.d.ts +4 -1
  49. package/dist/uni-app-x/vite/native-hmr.d.ts +2 -0
  50. package/dist/uni-app-x/vite/plugin-options.d.ts +27 -0
  51. package/dist/uni-app-x/vite/style-request.d.ts +3 -0
  52. package/dist/uni-app-x/vite.d.ts +3 -24
  53. package/dist/{v4-generation-core-Dtmu8Yax.cjs → v4-generation-core-BjHT6qGC.cjs} +132 -14
  54. package/dist/{vite-Bk1YU9L0.js → vite-BJJqWc_F.js} +567 -292
  55. package/dist/{vite-DmN_Y8Uk.cjs → vite-V86H6PZa.cjs} +570 -295
  56. package/dist/vite.cjs +1 -1
  57. package/dist/vite.js +1 -1
  58. package/dist/weapp-tw-css-generation-loader.cjs +1 -1
  59. package/dist/weapp-tw-css-import-rewrite-loader.cjs +5 -5
  60. package/dist/{webpack-DtkSnYyR.js → webpack-CkeFhPY2.js} +7 -7
  61. package/dist/{webpack-DvmrFist.cjs → webpack-CzQrloDg.cjs} +9 -9
  62. package/dist/webpack.cjs +1 -1
  63. package/dist/webpack.js +1 -1
  64. package/package.json +4 -4
  65. package/dist/bundlers/vite/processed-css-assets/empty-at-rule.d.ts +0 -1
@@ -1,12 +1,12 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
2
- const require_generator = require("./generator-BE34PYSC.cjs");
3
- const require_options = require("./options-hVsoTfwL.cjs");
4
- const require_v4_generation_core = require("./v4-generation-core-Dtmu8Yax.cjs");
2
+ const require_generator = require("./generator-B0dCFlP1.cjs");
3
+ const require_options = require("./options-zpZez7qe.cjs");
4
+ const require_v4_generation_core = require("./v4-generation-core-BjHT6qGC.cjs");
5
5
  const require_wxml = require("./wxml-DSMNuUaP.cjs");
6
- const require_hmr_timing = require("./hmr-timing-Chyd_Yfw.cjs");
7
- const require_context = require("./context-OqD_eBxQ.cjs");
8
- const require_tailwindcss = require("./tailwindcss-DcpiKvmJ.cjs");
9
- const require_style_options = require("./style-options-B_ppaVIg.cjs");
6
+ const require_hmr_timing = require("./hmr-timing-DiYnyg_W.cjs");
7
+ const require_context = require("./context-CByXWyhQ.cjs");
8
+ const require_tailwindcss = require("./tailwindcss-LtnGCxF0.cjs");
9
+ const require_style_options = require("./style-options-COpQc8fr.cjs");
10
10
  let node_fs = require("node:fs");
11
11
  node_fs = require_rolldown_runtime.__toESM(node_fs, 1);
12
12
  let node_path = require("node:path");
@@ -261,7 +261,7 @@ function createGulpFileTransforms(context) {
261
261
  const generatedCss = stage === "generate" && generated ? `${require_v4_generation_core.createBundlerGeneratedCssMarker("gulp", file.path)}\n${css}` : css;
262
262
  const outputCss = stage === "generate" ? generatedCss : (0, _weapp_tailwindcss_postcss.rewriteLocalCssImportRequestsForOutput)(generatedCss, { styleOutputExtension });
263
263
  debug("css handle: %s", file.path);
264
- return { result: outputCss };
264
+ return { result: stage === "transform" ? require_v4_generation_core.finalizeMiniProgramCssStructure(outputCss) : outputCss };
265
265
  }
266
266
  });
267
267
  rememberGulpProcessCacheKey(gulpProcessCacheKeys, file.path);
@@ -279,11 +279,11 @@ function createGulpFileTransforms(context) {
279
279
  const cssHandlerOptions = resolveWxssFileHandlerOptions(file, source, options);
280
280
  const handled = await styleHandler(source, cssHandlerOptions);
281
281
  const preflightMode = generatedCssPreflightModeByFile.get(file.path);
282
- writeGulpFileAsset(file, (0, _weapp_tailwindcss_postcss.rewriteLocalCssImportRequestsForOutput)(generatedCss ? require_v4_generation_core.finalizeMiniProgramGeneratorCss(handled.css, "weapp", runtimeState.tailwindRuntime.majorVersion, opts.cssPreflight, {
282
+ writeGulpFileAsset(file, require_v4_generation_core.finalizeMiniProgramCssStructure((0, _weapp_tailwindcss_postcss.rewriteLocalCssImportRequestsForOutput)(generatedCss ? require_v4_generation_core.finalizeMiniProgramGeneratorCss(handled.css, "weapp", runtimeState.tailwindRuntime.majorVersion, opts.cssPreflight, {
283
283
  injectPreflight: preflightMode?.inject ?? cssHandlerOptions.isMainChunk,
284
284
  preservePreflight: preflightMode?.preserve ?? cssHandlerOptions.isMainChunk,
285
285
  styleOptions: cssHandlerOptions
286
- }) : handled.css, { styleOutputExtension }));
286
+ }) : handled.css, { styleOutputExtension })));
287
287
  debug("css adapt: %s", file.path);
288
288
  }, () => resolveGulpTransformTimingDetails("css:adapt"));
289
289
  const transformJs = (options = {}) => createVinylTransform("js", async (file) => {
package/dist/gulp.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_gulp = require("./gulp-CPIE1yPk.cjs");
2
+ const require_gulp = require("./gulp-BdoorWb5.cjs");
3
3
  exports.WeappTailwindcss = require_gulp.createPlugins;
4
4
  exports.createPlugins = require_gulp.createPlugins;
5
5
  exports.weappTailwindcss = require_gulp.createPlugins;
package/dist/gulp.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as createPlugins } from "./gulp-DCItlfoq.js";
1
+ import { t as createPlugins } from "./gulp-BWhCahA2.js";
2
2
  export { createPlugins as WeappTailwindcss, createPlugins, createPlugins as weappTailwindcss };
@@ -1,14 +1,14 @@
1
- import { $ as hasTailwindSourceDirectives, A as transformGeneratorUserCss, At as toPosixPath, F as stripUnmatchedTailwindSourceMediaCloseFragments, Ft as filterUnsupportedMiniProgramTailwindV4Candidates, G as extractGeneratedCssForUserLayerSelectors, H as filterApplyOnlyGeneratedCss, I as finalizeMiniProgramCss, J as preferScopedGeneratedCssRules, K as hasUserCssLayerBlocks, Lt as loadTailwindV4DesignSystem, N as removeTailwindV4GeneratorAtRules, Ot as resolveSourceScanPath, P as stripTailwindSourceMediaFragments, Q as hasTailwindRootDirectives, U as normalizeEmptyTailwindCustomVariants, V as removeTailwindV4GeneratedUserCssArtifacts, W as shouldFilterApplyOnlyGeneratedCss, X as hasTailwindApplyDirective, _t as normalizeConfigDirective, a as resolveGeneratorRuntimeBranch, at as resolveCssEntrySource, bt as FULL_SOURCE_SCAN_EXTENSION_RE, ct as createCssAppend, d as resolveTailwindV4SourceFromRuntime, dt as splitGeneratorPlaceholderCssBySourceOrder, ft as splitTailwindGeneratedCssByBanner, gt as stripTailwindBanners, ht as stripTailwindBanner, i as normalizeWeappTailwindcssGeneratorOptions, it as removeTailwindSourceDirectives, j as isCommentOnlyCss, kt as resolveTailwindV4CssSourceBase, lt as hasTailwindGeneratedCss, mt as stripGeneratorPlaceholderMarkers, ot as GENERATOR_PLACEHOLDER_MARKER_RE, p as resolveTailwindV4SourceOptionsFromRuntime, pt as splitTailwindV4GeneratedCssBySourceOrder, q as splitUserCssLayerBlocks, rt as parseImportRequest, s as shouldUseMiniProgramCssBranch, st as VITE_MARKER_RE, t as createWeappTailwindcssGenerator, tt as normalizeTailwindSourceDirectives, u as resolveTailwindV4Source$1, ut as hasTailwindGeneratedCssMarkers, vt as prependConfigDirective, wt as isFileMatchedByTailwindSourceEntries, z as removeUnsupportedMiniProgramAtRules } from "./generator-DYeAa2-5.js";
1
+ import { $ as hasTailwindSourceDirectives, A as transformGeneratorUserCss, At as toPosixPath, F as stripUnmatchedTailwindSourceMediaCloseFragments, Ft as filterUnsupportedMiniProgramTailwindV4Candidates, G as extractGeneratedCssForUserLayerSelectors, H as filterApplyOnlyGeneratedCss, I as finalizeMiniProgramCss, J as preferScopedGeneratedCssRules, K as hasUserCssLayerBlocks, Lt as loadTailwindV4DesignSystem, N as removeTailwindV4GeneratorAtRules, Ot as resolveSourceScanPath, P as stripTailwindSourceMediaFragments, Q as hasTailwindRootDirectives, U as normalizeEmptyTailwindCustomVariants, V as removeTailwindV4GeneratedUserCssArtifacts, W as shouldFilterApplyOnlyGeneratedCss, X as hasTailwindApplyDirective, _t as normalizeConfigDirective, a as resolveGeneratorRuntimeBranch, at as resolveCssEntrySource, bt as FULL_SOURCE_SCAN_EXTENSION_RE, ct as createCssAppend, d as resolveTailwindV4SourceFromRuntime, dt as splitGeneratorPlaceholderCssBySourceOrder, ft as splitTailwindGeneratedCssByBanner, gt as stripTailwindBanners, ht as stripTailwindBanner, i as normalizeWeappTailwindcssGeneratorOptions, it as removeTailwindSourceDirectives, j as isCommentOnlyCss, kt as resolveTailwindV4CssSourceBase, lt as hasTailwindGeneratedCss, mt as stripGeneratorPlaceholderMarkers, ot as GENERATOR_PLACEHOLDER_MARKER_RE, p as resolveTailwindV4SourceOptionsFromRuntime, pt as splitTailwindV4GeneratedCssBySourceOrder, q as splitUserCssLayerBlocks, rt as parseImportRequest, s as shouldUseMiniProgramCssBranch, st as VITE_MARKER_RE, t as createWeappTailwindcssGenerator, tt as normalizeTailwindSourceDirectives, u as resolveTailwindV4Source$1, ut as hasTailwindGeneratedCssMarkers, vt as prependConfigDirective, wt as isFileMatchedByTailwindSourceEntries, z as removeUnsupportedMiniProgramAtRules } from "./generator-BLpOsd5O.js";
2
2
  import { o as transformCssMacroCss, r as hasCssMacroTailwindV4InternalAtRules, t as hasCssMacroStyleOptions } from "./auto-2dg_uhEJ.js";
3
3
  import { n as _defineProperty, t as omitUndefined } from "./object-Bvy6-w9r.js";
4
- import { g as resolveTailwindV4EntriesFromCss, l as getRuntimeClassSetSignature, r as isUniAppXEnabled, v as includesTailwindV4PreflightDirective, y as collectCssInlineSourceCandidates } from "./tailwindcss-CTpCc_nd.js";
4
+ import { g as resolveTailwindV4EntriesFromCss, l as getRuntimeClassSetSignature, r as isUniAppXEnabled, v as includesTailwindV4PreflightDirective, y as collectCssInlineSourceCandidates } from "./tailwindcss-2zdmASlM.js";
5
5
  import { _ as traverse, g as babelParse, h as createDebug, m as replaceWxml, r as createAttributeMatcher, v as md5Hash } from "./wxml-IBzZSaQC.js";
6
- import { r as resolveStyleOptionsFromContext } from "./context-YAvTyPV2.js";
6
+ import { r as resolveStyleOptionsFromContext } from "./context-BMkbwnH8.js";
7
7
  import { existsSync, readFileSync } from "node:fs";
8
8
  import path from "node:path";
9
9
  import process from "node:process";
10
10
  import { extractRawCandidatesWithPositions, extractSourceCandidates, extractValidCandidates, resolveProjectSourceFiles, resolveValidTailwindV4Candidates, splitCandidateTokens } from "@tailwindcss-mangle/engine";
11
- import { cleanLocalCssImportWrapperTailwindDirectives, cleanLocalCssImportWrapperTailwindDirectivesRoot, filterExistingCssRules, isPureLocalCssImportWrapper, isPureLocalCssImportWrapperRoot, normalizeMiniProgramGeneratedCssForPostcss, postcss, removeMatchingLocalCssImports, removeTailwindPostcssPlugins, restoreLocalCssImports, rewriteLocalCssImportRequestsForOutput, splitLocalCssImports, splitLocalCssImportsRoot, transformWebCssCompat } from "@weapp-tailwindcss/postcss";
11
+ import { cleanLocalCssImportWrapperTailwindDirectives, cleanLocalCssImportWrapperTailwindDirectivesRoot, filterExistingCssRules, isPureLocalCssImportWrapper, isPureLocalCssImportWrapperRoot, normalizeMiniProgramGeneratedCssForPostcss, postcss, removeEmptyAtRules, removeMatchingLocalCssImports, removeTailwindPostcssPlugins, restoreLocalCssImports, rewriteLocalCssImportRequestsForOutput, splitLocalCssImports, splitLocalCssImportsRoot, transformWebCssCompat } from "@weapp-tailwindcss/postcss";
12
12
  import { LRUCache } from "lru-cache";
13
13
  import { readFile } from "node:fs/promises";
14
14
  import { Parser } from "htmlparser2";
@@ -338,15 +338,17 @@ function createSourceCandidateStore(options = {}) {
338
338
  }
339
339
  async function syncCurrentSource(id, source) {
340
340
  const normalizedId = cleanUrl(id);
341
- transformCandidatesById.delete(normalizedId);
342
- cssCandidatesById.delete(normalizedId);
343
- transformSourceById.delete(normalizedId);
344
- cssSourceById.delete(normalizedId);
345
- recompute(normalizedId);
346
341
  const previousFileCandidates = new Set(candidatesById.get(normalizedId) ?? []);
347
- const nextCandidates = await resolveCandidates(source, resolveSourceCandidateExtension(normalizedId));
342
+ const extension = resolveSourceCandidateExtension(normalizedId);
343
+ const nextCandidates = await resolveCandidates(source, extension);
348
344
  const affectedCandidates = /* @__PURE__ */ new Set([...previousFileCandidates, ...nextCandidates]);
349
345
  const previousVisibleCandidates = collectVisibleCandidates(affectedCandidates);
346
+ if (extension !== "css") {
347
+ transformCandidatesById.delete(normalizedId);
348
+ cssCandidatesById.delete(normalizedId);
349
+ transformSourceById.delete(normalizedId);
350
+ cssSourceById.delete(normalizedId);
351
+ }
350
352
  scanSourceById.set(normalizedId, source);
351
353
  replaceScanLayer(normalizedId, nextCandidates);
352
354
  return diffCandidateSets(previousVisibleCandidates, collectVisibleCandidates(affectedCandidates));
@@ -2440,6 +2442,104 @@ function annotateCssSourceTrace(css, options) {
2440
2442
  }
2441
2443
  }
2442
2444
  //#endregion
2445
+ //#region src/bundlers/shared/final-css-cleanup.ts
2446
+ function isAtRuleNameCharacter(code) {
2447
+ return code === 45 || code >= 65 && code <= 90 || code >= 97 && code <= 122;
2448
+ }
2449
+ function isCssWhitespace(code) {
2450
+ return code === 9 || code === 10 || code === 12 || code === 13 || code === 32;
2451
+ }
2452
+ function findAtRuleBlockStart(css, start) {
2453
+ let parenthesisDepth = 0;
2454
+ let quote = 0;
2455
+ let squareBracketDepth = 0;
2456
+ for (let index = start; index < css.length; index++) {
2457
+ const code = css.charCodeAt(index);
2458
+ if (quote !== 0) {
2459
+ if (code === 92) index++;
2460
+ else if (code === quote) quote = 0;
2461
+ continue;
2462
+ }
2463
+ if (code === 34 || code === 39) {
2464
+ quote = code;
2465
+ continue;
2466
+ }
2467
+ if (code === 92) {
2468
+ index++;
2469
+ continue;
2470
+ }
2471
+ if (code === 47 && css.charCodeAt(index + 1) === 42) {
2472
+ const commentEnd = css.indexOf("*/", index + 2);
2473
+ if (commentEnd < 0) return -1;
2474
+ index = commentEnd + 1;
2475
+ continue;
2476
+ }
2477
+ if (code === 40) {
2478
+ parenthesisDepth++;
2479
+ continue;
2480
+ }
2481
+ if (code === 41 && parenthesisDepth > 0) {
2482
+ parenthesisDepth--;
2483
+ continue;
2484
+ }
2485
+ if (code === 91) {
2486
+ squareBracketDepth++;
2487
+ continue;
2488
+ }
2489
+ if (code === 93 && squareBracketDepth > 0) {
2490
+ squareBracketDepth--;
2491
+ continue;
2492
+ }
2493
+ if (code === 123 && parenthesisDepth === 0 && squareBracketDepth === 0) return index;
2494
+ if ((code === 59 || code === 125) && parenthesisDepth === 0 && squareBracketDepth === 0) return -1;
2495
+ }
2496
+ return -1;
2497
+ }
2498
+ function isEmptyAtRuleBody(css, blockStart) {
2499
+ for (let index = blockStart + 1; index < css.length; index++) {
2500
+ const code = css.charCodeAt(index);
2501
+ if (isCssWhitespace(code)) continue;
2502
+ if (code === 47 && css.charCodeAt(index + 1) === 42) {
2503
+ const commentEnd = css.indexOf("*/", index + 2);
2504
+ if (commentEnd < 0) return false;
2505
+ index = commentEnd + 1;
2506
+ continue;
2507
+ }
2508
+ return code === 125;
2509
+ }
2510
+ return false;
2511
+ }
2512
+ function hasEmptyAtRuleBlockCandidate(css) {
2513
+ let searchFrom = 0;
2514
+ while (searchFrom < css.length) {
2515
+ const atRuleStart = css.indexOf("@", searchFrom);
2516
+ if (atRuleStart < 0) return false;
2517
+ searchFrom = atRuleStart + 1;
2518
+ if (!isAtRuleNameCharacter(css.charCodeAt(searchFrom))) continue;
2519
+ const blockStart = findAtRuleBlockStart(css, searchFrom + 1);
2520
+ if (blockStart >= 0 && isEmptyAtRuleBody(css, blockStart)) return true;
2521
+ }
2522
+ return false;
2523
+ }
2524
+ /**
2525
+ * 在小程序样式进入最终产物图时递归清理空的块级 at-rule。
2526
+ */
2527
+ function finalizeMiniProgramCssStructure(css) {
2528
+ if (!hasEmptyAtRuleBlockCandidate(css)) return css;
2529
+ try {
2530
+ const root = postcss.parse(css);
2531
+ let removed = 0;
2532
+ let passRemoved = 0;
2533
+ do {
2534
+ passRemoved = removeEmptyAtRules(root);
2535
+ removed += passRemoved;
2536
+ } while (passRemoved > 0);
2537
+ return removed > 0 ? root.toString() : css;
2538
+ } catch {
2539
+ return css;
2540
+ }
2541
+ }
2542
+ //#endregion
2443
2543
  //#region src/bundlers/shared/generated-css-marker.ts
2444
2544
  const BUNDLER_GENERATED_CSS_MARKER_RE = /\/\*!?\s*weapp-tailwindcss (?:gulp|vite|webpack)-generated-css(?:\s*:\s*[^\s*]+)?\s*\*\/\s*/i;
2445
2545
  const BUNDLER_GENERATED_CSS_MARKER_GLOBAL_RE = /\/\*!?\s*weapp-tailwindcss (?:gulp|vite|webpack)-generated-css(?:\s*:\s*[^\s*]+)?\s*\*\/\s*/gi;
@@ -3500,14 +3600,17 @@ function collectGeneratorCssCandidates(css) {
3500
3600
  //#region src/bundlers/shared/generator-css/source-resolver/apply-reference.ts
3501
3601
  function resolveTailwindV4ApplyReference(options) {
3502
3602
  const references = /* @__PURE__ */ new Set();
3503
- for (const source of options.cssSources ?? []) if (typeof source.file === "string" && source.file.length > 0 && typeof source.css === "string" && hasTailwindRootDirectives(source.css, { importFallback: true }) && hasTailwindThemeDirective(source.css)) references.add(source.file);
3603
+ for (const source of options.cssSources ?? []) if (typeof source.file === "string" && source.file.length > 0 && typeof source.css === "string" && hasTailwindRootDirectives(source.css, { importFallback: true }) && hasTailwindApplyContextDirective(source.css)) references.add(source.file);
3504
3604
  return references.size === 1 ? references.values().next().value : void 0;
3505
3605
  }
3506
- function hasTailwindThemeDirective(css) {
3606
+ function hasTailwindApplyContextDirective(css) {
3507
3607
  try {
3508
3608
  let found = false;
3509
- postcss.parse(css).walkAtRules("theme", () => {
3510
- found = true;
3609
+ postcss.parse(css).walkAtRules((rule) => {
3610
+ if (rule.name === "theme" || rule.name === "config") {
3611
+ found = true;
3612
+ return false;
3613
+ }
3511
3614
  });
3512
3615
  return found;
3513
3616
  } catch {
@@ -5133,7 +5236,10 @@ async function executeGeneratorPipelineWithOwner(context) {
5133
5236
  const sourceCss = options.deferCssAdaptation ? removeMatchingLocalCssImports(source.css, localImports) : source.css;
5134
5237
  const generatorSource = options.disableSourceScan === true ? {
5135
5238
  ...source,
5136
- css: removeTailwindSourceDirectives(sourceCss, { importFallback: generatorOptions.importFallback })
5239
+ css: removeTailwindSourceDirectives(sourceCss, {
5240
+ importFallback: generatorOptions.importFallback,
5241
+ preserveApplyContext: true
5242
+ })
5137
5243
  } : sourceCss === source.css ? source : {
5138
5244
  ...source,
5139
5245
  css: sourceCss
@@ -5671,4 +5777,4 @@ function createHmrTimingRecorder(bundler) {
5671
5777
  };
5672
5778
  }
5673
5779
  //#endregion
5674
- export { createCompilationDependencyChanges as $, isCssSourceTraceEnabled as A, createRuntimeCompilationAffectingSignature as B, createBundlerGeneratedCssMarker as C, annotateCssSourceTrace as D, stripBundlerGeneratedCssMarkers as E, isPureLocalCssImportWrapper as F, createRuntimeAffectingSourceSignature as G, removeRuntimeCompilationBuildStateFiles as H, rewriteLocalCssImportRequestsForOutput as I, getCompilerShadowRunSnapshot as J, disposeCompilerOwner as K, splitLocalCssImports as L, createRuntimeClassSetManager as M, collectStrictEscapedRuntimeCandidates as N, createCssSourceTraceCacheSignature as O, createEscapeFragments as P, recordCompilationDependencyChanges as Q, finalizeCompilerShadowRun as R, stripRequestQuery as S, parseBundlerGeneratedCssMarkerBlocks as T, resetRuntimeCompilationBuildState as U, createRuntimeCompilationBuildState as V, updateRuntimeCompilationBuildState as W, getCompilationScopeDependencyRevision as X, AssetEmissionPlan as Y, invalidateCompilationScope as Z, collectFrameworkPostcssOptionsFromLoaderEntries as _, extractMarkedUserLayerComponentsCss as a, hasMiniProgramTailwindV4PreflightReset as b, pushConcurrentTaskFactories as c, normalizeMiniProgramGeneratorCssSource as d, createSourceCandidateCollector as et, normalizeMiniProgramImportShell as f, captureResolvedFrameworkPostcssOptions as g, captureFrameworkPostcssOptions as h, validateCandidatesByGenerator as i, resolveSourceCandidateScanFiles as it, processCachedTask as j, createCssTokenSourceMap as k, resolveTaskConcurrency as l, removeGeneratedSelectorCompatCss as m, emitHmrTiming as n, isSourceCandidateRequest as nt, mergeMarkedUserLayerComponentsCss as o, scoreTailwindV4CssSourceFileMatch as p, beginCompilerShadowRun as q, generateTailwindV4Css as r, extractCandidatesFromSource as rt, collectRawSourceClassSelectors as s, createHmrTimingRecorder as t, createSourceCandidateStore as tt, runWithConcurrency as u, createCssSourceOrderAppend as v, hasBundlerGeneratedCssMarker as w, isSourceStyleRequest as x, finalizeMiniProgramGeneratorCss as y, buildRuntimeCompilationSnapshot as z };
5780
+ export { invalidateCompilationScope as $, createCssSourceTraceCacheSignature as A, finalizeCompilerShadowRun as B, createBundlerGeneratedCssMarker as C, finalizeMiniProgramCssStructure as D, stripBundlerGeneratedCssMarkers as E, collectStrictEscapedRuntimeCandidates as F, resetRuntimeCompilationBuildState as G, createRuntimeCompilationAffectingSignature as H, createEscapeFragments as I, disposeCompilerOwner as J, updateRuntimeCompilationBuildState as K, isPureLocalCssImportWrapper as L, isCssSourceTraceEnabled as M, processCachedTask as N, hasEmptyAtRuleBlockCandidate as O, createRuntimeClassSetManager as P, getCompilationScopeDependencyRevision as Q, rewriteLocalCssImportRequestsForOutput as R, stripRequestQuery as S, parseBundlerGeneratedCssMarkerBlocks as T, createRuntimeCompilationBuildState as U, buildRuntimeCompilationSnapshot as V, removeRuntimeCompilationBuildStateFiles as W, getCompilerShadowRunSnapshot as X, beginCompilerShadowRun as Y, AssetEmissionPlan as Z, collectFrameworkPostcssOptionsFromLoaderEntries as _, extractMarkedUserLayerComponentsCss as a, extractCandidatesFromSource as at, hasMiniProgramTailwindV4PreflightReset as b, pushConcurrentTaskFactories as c, normalizeMiniProgramGeneratorCssSource as d, recordCompilationDependencyChanges as et, normalizeMiniProgramImportShell as f, captureResolvedFrameworkPostcssOptions as g, captureFrameworkPostcssOptions as h, validateCandidatesByGenerator as i, isSourceCandidateRequest as it, createCssTokenSourceMap as j, annotateCssSourceTrace as k, resolveTaskConcurrency as l, removeGeneratedSelectorCompatCss as m, emitHmrTiming as n, createSourceCandidateCollector as nt, mergeMarkedUserLayerComponentsCss as o, resolveSourceCandidateScanFiles as ot, scoreTailwindV4CssSourceFileMatch as p, createRuntimeAffectingSourceSignature as q, generateTailwindV4Css as r, createSourceCandidateStore as rt, collectRawSourceClassSelectors as s, createHmrTimingRecorder as t, createCompilationDependencyChanges as tt, runWithConcurrency as u, createCssSourceOrderAppend as v, hasBundlerGeneratedCssMarker as w, isSourceStyleRequest as x, finalizeMiniProgramGeneratorCss as y, splitLocalCssImports as z };
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
2
- const require_generator = require("./generator-BE34PYSC.cjs");
3
- const require_v4_generation_core = require("./v4-generation-core-Dtmu8Yax.cjs");
2
+ const require_generator = require("./generator-B0dCFlP1.cjs");
3
+ const require_v4_generation_core = require("./v4-generation-core-BjHT6qGC.cjs");
4
4
  const require_wxml = require("./wxml-DSMNuUaP.cjs");
5
- const require_tailwindcss = require("./tailwindcss-DcpiKvmJ.cjs");
5
+ const require_tailwindcss = require("./tailwindcss-LtnGCxF0.cjs");
6
6
  let node_process = require("node:process");
7
7
  node_process = require_rolldown_runtime.__toESM(node_process, 1);
8
8
  let _tailwindcss_mangle_engine = require("@tailwindcss-mangle/engine");
package/dist/index.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_framework = require("./framework.cjs");
3
- const require_generator = require("./generator-BE34PYSC.cjs");
4
- const require_gulp = require("./gulp-CPIE1yPk.cjs");
3
+ const require_generator = require("./generator-B0dCFlP1.cjs");
4
+ const require_gulp = require("./gulp-BdoorWb5.cjs");
5
5
  const require_postcss = require("./postcss.cjs");
6
- const require_vite = require("./vite-DmN_Y8Uk.cjs");
7
- const require_webpack = require("./webpack-DvmrFist.cjs");
6
+ const require_vite = require("./vite-V86H6PZa.cjs");
7
+ const require_webpack = require("./webpack-CzQrloDg.cjs");
8
8
  require("./webpack.cjs");
9
9
  let _weapp_tailwindcss_postcss = require("@weapp-tailwindcss/postcss");
10
10
  exports.WeappTailwindcss = require_vite.WeappTailwindcss;
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import { detectAppType, detectAppTypeFromEnv, detectAppTypeFromPackageJson, isMpxPackage, isRunningInHBuilderX, isTaroPackage, isUniAppPackage, isUniAppVitePackage, isUniAppXManifest, isUniAppXPackage, isWeappVitePackage, resolveImplicitAppTypeFromViteRoot, resolveMpxPlatform, resolvePlatform, resolveTaroPlatform, resolveUniAppXPlatform, resolveUniPlatform, resolveUniPlatformsFromEnv, resolveUniUtsPlatform } from "./framework.js";
2
- import { t as createWeappTailwindcssGenerator } from "./generator-DYeAa2-5.js";
3
- import { t as createPlugins } from "./gulp-DCItlfoq.js";
2
+ import { t as createWeappTailwindcssGenerator } from "./generator-BLpOsd5O.js";
3
+ import { t as createPlugins } from "./gulp-BWhCahA2.js";
4
4
  import weappTailwindcssPostcssPlugin from "./postcss.js";
5
- import { t as WeappTailwindcss } from "./vite-Bk1YU9L0.js";
6
- import { n as weappTailwindcssPackageDir } from "./webpack-DtkSnYyR.js";
5
+ import { t as WeappTailwindcss } from "./vite-BJJqWc_F.js";
6
+ import { n as weappTailwindcssPackageDir } from "./webpack-CkeFhPY2.js";
7
7
  import "./webpack.js";
8
8
  import { unitConversionComposeRules, unitConversionPresets } from "@weapp-tailwindcss/postcss";
9
9
  export { WeappTailwindcss, createPlugins, createWeappTailwindcssGenerator, detectAppType, detectAppTypeFromEnv, detectAppTypeFromPackageJson, isMpxPackage, isRunningInHBuilderX, isTaroPackage, isUniAppPackage, isUniAppVitePackage, isUniAppXManifest, isUniAppXPackage, isWeappVitePackage, resolveImplicitAppTypeFromViteRoot, resolveMpxPlatform, resolvePlatform, resolveTaroPlatform, resolveUniAppXPlatform, resolveUniPlatform, resolveUniPlatformsFromEnv, resolveUniUtsPlatform, unitConversionComposeRules, unitConversionPresets, weappTailwindcssPackageDir, weappTailwindcssPostcssPlugin };
@@ -1,5 +1,5 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
2
- const require_generator = require("./generator-BE34PYSC.cjs");
2
+ const require_generator = require("./generator-B0dCFlP1.cjs");
3
3
  let node_fs = require("node:fs");
4
4
  let node_path = require("node:path");
5
5
  node_path = require_rolldown_runtime.__toESM(node_path, 1);
@@ -1,8 +1,8 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
2
- const require_generator = require("./generator-BE34PYSC.cjs");
3
- const require_v4_generation_core = require("./v4-generation-core-Dtmu8Yax.cjs");
2
+ const require_generator = require("./generator-B0dCFlP1.cjs");
3
+ const require_v4_generation_core = require("./v4-generation-core-BjHT6qGC.cjs");
4
4
  const require_defaults = require("./defaults.cjs");
5
- const require_style_options = require("./style-options-B_ppaVIg.cjs");
5
+ const require_style_options = require("./style-options-COpQc8fr.cjs");
6
6
  let node_path = require("node:path");
7
7
  node_path = require_rolldown_runtime.__toESM(node_path, 1);
8
8
  let node_process = require("node:process");
@@ -517,7 +517,7 @@ function finalizeWebpackCssAssetSource(source, compilerOptions, isWebGeneratorTa
517
517
  function finalizeWebpackCssAssetOutputSource(source, compilerOptions, isWebGeneratorTarget) {
518
518
  if (isWebGeneratorTarget) return source;
519
519
  const styleOptions = require_style_options.resolveStyleOptionsFromContext(compilerOptions);
520
- return (0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(require_generator.removeMiniProgramHoverSelectors((0, _weapp_tailwindcss_postcss.dedupeCoveredCssRules)(dedupeMiniProgramPreflightSelectorRules(source)), styleOptions.cssRemoveHoverPseudoClass));
520
+ return require_v4_generation_core.finalizeMiniProgramCssStructure((0, _weapp_tailwindcss_postcss.stripMiniProgramCssSpecificityPlaceholders)(require_generator.removeMiniProgramHoverSelectors((0, _weapp_tailwindcss_postcss.dedupeCoveredCssRules)(dedupeMiniProgramPreflightSelectorRules(source)), styleOptions.cssRemoveHoverPseudoClass)));
521
521
  }
522
522
  function collectWebpackJsRuntimeCandidatesFromAssets(options) {
523
523
  if (options.isWebGeneratorTarget) return;
package/dist/postcss.cjs CHANGED
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_generator = require("./generator-BE34PYSC.cjs");
5
+ const require_generator = require("./generator-B0dCFlP1.cjs");
6
6
  const weappTailwindcssPostcssPlugin = (0, require("@weapp-tailwindcss/postcss").createWeappTailwindcssPostcssPlugin)({
7
7
  createGenerator: (source) => {
8
8
  return require_generator.createWeappTailwindcssGenerator(source);
package/dist/postcss.js CHANGED
@@ -1,4 +1,4 @@
1
- import { i as normalizeWeappTailwindcssGeneratorOptions, t as createWeappTailwindcssGenerator, u as resolveTailwindV4Source } from "./generator-DYeAa2-5.js";
1
+ import { i as normalizeWeappTailwindcssGeneratorOptions, t as createWeappTailwindcssGenerator, u as resolveTailwindV4Source } from "./generator-BLpOsd5O.js";
2
2
  import { createWeappTailwindcssPostcssPlugin } from "@weapp-tailwindcss/postcss";
3
3
  const weappTailwindcssPostcssPlugin = createWeappTailwindcssPostcssPlugin({
4
4
  createGenerator: (source) => {
package/dist/presets.cjs CHANGED
@@ -2,9 +2,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
3
3
  const require_framework = require("./framework.cjs");
4
4
  const require_object = require("./object-C_Vr6_S5.cjs");
5
- const require_options = require("./options-hVsoTfwL.cjs");
5
+ const require_options = require("./options-zpZez7qe.cjs");
6
6
  require("./utils-CuKLf1Zv.cjs");
7
- const require_tailwindcss = require("./tailwindcss-DcpiKvmJ.cjs");
7
+ const require_tailwindcss = require("./tailwindcss-LtnGCxF0.cjs");
8
8
  require("./logger-TlKT3xmR.cjs");
9
9
  let node_path = require("node:path");
10
10
  node_path = require_rolldown_runtime.__toESM(node_path, 1);
package/dist/presets.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { resolveTaroPlatform, resolveUniPlatformsFromEnv } from "./framework.js";
2
2
  import { t as omitUndefined } from "./object-Bvy6-w9r.js";
3
- import { i as resolveUniAppXOptions, n as resolveTailwindcssBasedir } from "./tailwindcss-CTpCc_nd.js";
3
+ import { i as resolveUniAppXOptions, n as resolveTailwindcssBasedir } from "./tailwindcss-2zdmASlM.js";
4
4
  import { n as defuOverrideArray } from "./utils-MVwpU07P.js";
5
5
  import { t as logger } from "./logger-BNzxZbZj.js";
6
6
  import path from "node:path";
package/dist/rspack.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
3
- const require_webpack = require("./webpack-DvmrFist.cjs");
3
+ const require_webpack = require("./webpack-CzQrloDg.cjs");
4
4
  let node_path = require("node:path");
5
5
  node_path = require_rolldown_runtime.__toESM(node_path, 1);
6
6
  //#region src/bundlers/rspack/index.ts
package/dist/rspack.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as weappTailwindcssPackageDir, r as __dirname, t as WeappTailwindcss } from "./webpack-DtkSnYyR.js";
1
+ import { n as weappTailwindcssPackageDir, r as __dirname, t as WeappTailwindcss } from "./webpack-CkeFhPY2.js";
2
2
  import path from "node:path";
3
3
  //#region src/bundlers/rspack/index.ts
4
4
  const CSS_IMPORT_REWRITE_LOADER_NAME = "weapp-tw-css-import-rewrite-loader";
@@ -1,9 +1,9 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
2
2
  const require_framework = require("./framework.cjs");
3
- const require_generator = require("./generator-BE34PYSC.cjs");
3
+ const require_generator = require("./generator-B0dCFlP1.cjs");
4
4
  require("./auto-DtU6f3X6.cjs");
5
- const require_options = require("./options-hVsoTfwL.cjs");
6
- const require_v4_generation_core = require("./v4-generation-core-Dtmu8Yax.cjs");
5
+ const require_options = require("./options-zpZez7qe.cjs");
6
+ const require_v4_generation_core = require("./v4-generation-core-BjHT6qGC.cjs");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_rolldown_runtime.__toESM(node_path, 1);
9
9
  let node_module = require("node:module");
@@ -1,8 +1,8 @@
1
1
  import { detectAppType } from "./framework.js";
2
- import { At as toPosixPath } from "./generator-DYeAa2-5.js";
2
+ import { At as toPosixPath } from "./generator-BLpOsd5O.js";
3
3
  import { n as hasCssMacroTailwindV4CustomVariantConditionalComments } from "./auto-2dg_uhEJ.js";
4
- import { _ as resolveTailwindV4EntriesFromCssCached, i as resolveUniAppXOptions } from "./tailwindcss-CTpCc_nd.js";
5
- import { x as isSourceStyleRequest } from "./hmr-timing-BevXxu6p.js";
4
+ import { _ as resolveTailwindV4EntriesFromCssCached, i as resolveUniAppXOptions } from "./tailwindcss-2zdmASlM.js";
5
+ import { x as isSourceStyleRequest } from "./hmr-timing-CJocHeZr.js";
6
6
  import { createRequire } from "node:module";
7
7
  import path from "node:path";
8
8
  import { weappStyleInjector } from "weapp-style-injector/vite";
@@ -1,5 +1,5 @@
1
- const require_generator = require("./generator-BE34PYSC.cjs");
2
- const require_options = require("./options-hVsoTfwL.cjs");
1
+ const require_generator = require("./generator-B0dCFlP1.cjs");
2
+ const require_options = require("./options-zpZez7qe.cjs");
3
3
  //#region src/context/style-options.ts
4
4
  function normalizeStyleHandlerMajorVersion(majorVersion) {
5
5
  return majorVersion === 4 ? 4 : void 0;
@@ -1,4 +1,4 @@
1
- import { C as findWorkspacePackageDir, Ct as expandTailwindSourceEntries, D as resolveTailwindcssOptions, Dt as resolveCssSourceEntries, E as normalizeTailwindcssRuntimeOptions, Et as parseConfigParam, Lt as loadTailwindV4DesignSystem, Nt as resolveCssMacroTailwindV4Source, O as normalizeStringListOption, S as findNearestPackageRoot, St as createTailwindSourceEntryMatcher, T as normalizeExtendLengthUnits, Tt as normalizeLegacyContentEntries, b as isTailwindV4CssEntry, d as resolveTailwindV4SourceFromRuntime, h as hasConfiguredTailwindV4CssRoots, i as normalizeWeappTailwindcssGeneratorOptions, kt as resolveTailwindV4CssSourceBase, m as filterTailwindV4CssSourceRoots, p as resolveTailwindV4SourceOptionsFromRuntime, v as groupCssEntriesByBase, w as findWorkspaceRoot, x as normalizeCssEntries, xt as FULL_SOURCE_SCAN_PATTERN, y as guessBasedirFromEntries } from "./generator-DYeAa2-5.js";
1
+ import { C as findWorkspacePackageDir, Ct as expandTailwindSourceEntries, D as resolveTailwindcssOptions, Dt as resolveCssSourceEntries, E as normalizeTailwindcssRuntimeOptions, Et as parseConfigParam, Lt as loadTailwindV4DesignSystem, Nt as resolveCssMacroTailwindV4Source, O as normalizeStringListOption, S as findNearestPackageRoot, St as createTailwindSourceEntryMatcher, T as normalizeExtendLengthUnits, Tt as normalizeLegacyContentEntries, b as isTailwindV4CssEntry, d as resolveTailwindV4SourceFromRuntime, h as hasConfiguredTailwindV4CssRoots, i as normalizeWeappTailwindcssGeneratorOptions, kt as resolveTailwindV4CssSourceBase, m as filterTailwindV4CssSourceRoots, p as resolveTailwindV4SourceOptionsFromRuntime, v as groupCssEntriesByBase, w as findWorkspaceRoot, x as normalizeCssEntries, xt as FULL_SOURCE_SCAN_PATTERN, y as guessBasedirFromEntries } from "./generator-BLpOsd5O.js";
2
2
  import { t as omitUndefined } from "./object-Bvy6-w9r.js";
3
3
  import { n as defuOverrideArray$1 } from "./utils-MVwpU07P.js";
4
4
  import { createRequire } from "node:module";
@@ -1,7 +1,7 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs");
2
- const require_generator = require("./generator-BE34PYSC.cjs");
2
+ const require_generator = require("./generator-B0dCFlP1.cjs");
3
3
  const require_object = require("./object-C_Vr6_S5.cjs");
4
- const require_options = require("./options-hVsoTfwL.cjs");
4
+ const require_options = require("./options-zpZez7qe.cjs");
5
5
  require("./utils-CuKLf1Zv.cjs");
6
6
  let node_fs = require("node:fs");
7
7
  let node_path = require("node:path");
@@ -178,13 +178,16 @@ var UniAppXComponentLocalStyleCollector = class {
178
178
  }
179
179
  toStyleBlock() {
180
180
  if (!this.hasStyles()) return "";
181
- const lines = ["<style scoped>"];
181
+ return `<style scoped>\n${this.toStyleRules()}</style>\n`;
182
+ }
183
+ toStyleRules() {
184
+ if (!this.hasStyles()) return "";
185
+ const lines = [];
182
186
  for (const [utility, alias] of this.aliasByUtility) {
183
187
  lines.push(`.${alias} {`);
184
188
  lines.push(` @apply ${utility};`);
185
189
  lines.push("}");
186
190
  }
187
- lines.push("</style>");
188
191
  return `${lines.join("\n")}\n`;
189
192
  }
190
193
  };
@@ -252,10 +255,14 @@ function shouldHandleAttribute(tag, attrName, disabledDefaultTemplateHandler, ma
252
255
  }
253
256
  const defaultCreateJsHandlerOptions = { babelParserOptions: { plugins: ["typescript"] } };
254
257
  const UVUE_NVUE_RE = /\.(?:uvue|nvue)(?:\?.*)?$/;
255
- const SFC_BLOCK_RE = /<(template|script)\b([^>]*)>([\s\S]*?)<\/\1>/gi;
258
+ const SFC_BLOCK_RE = /<(template|script|style)\b([^>]*)>([\s\S]*?)<\/\1>/gi;
256
259
  const SCRIPT_SETUP_RE = /(?:^|\s)setup(?:\s|=|$)/;
260
+ const STYLE_SCOPED_RE = /(?:^|\s)scoped(?:\s|=|$)/i;
257
261
  function parseSfc(code) {
258
- const descriptor = { errors: [] };
262
+ const descriptor = {
263
+ errors: [],
264
+ styles: []
265
+ };
259
266
  for (const match of code.matchAll(SFC_BLOCK_RE)) {
260
267
  const type = match[1];
261
268
  const attrs = match[2] ?? "";
@@ -280,8 +287,12 @@ function parseSfc(code) {
280
287
  }
281
288
  continue;
282
289
  }
283
- if (type === "script") if (SCRIPT_SETUP_RE.test(attrs)) descriptor.scriptSetup ?? (descriptor.scriptSetup = block);
284
- else descriptor.script ?? (descriptor.script = block);
290
+ if (type === "script") {
291
+ if (SCRIPT_SETUP_RE.test(attrs)) descriptor.scriptSetup ?? (descriptor.scriptSetup = block);
292
+ else descriptor.script ?? (descriptor.script = block);
293
+ continue;
294
+ }
295
+ if (type === "style") descriptor.styles.push(block);
285
296
  }
286
297
  return descriptor;
287
298
  }
@@ -323,7 +334,13 @@ function transformUVue(code, id, jsHandler, runtimeSet, options = {}) {
323
334
  const { code } = jsHandler(descriptor.scriptSetup.content, runtimeSet ?? /* @__PURE__ */ new Set(), defaultCreateJsHandlerOptions);
324
335
  ms.update(descriptor.scriptSetup.start, descriptor.scriptSetup.end, localStyleCollector ? localStyleCollector.rewriteTransformedCode(code) : code);
325
336
  }
326
- if (localStyleCollector?.hasStyles()) ms.append(`\n${localStyleCollector.toStyleBlock()}`);
337
+ if (localStyleCollector?.hasStyles()) {
338
+ const scopedStyle = descriptor.styles.findLast((style) => STYLE_SCOPED_RE.test(style.attrs));
339
+ if (scopedStyle) {
340
+ const separator = scopedStyle.content.endsWith("\n") ? "" : "\n";
341
+ ms.appendLeft(scopedStyle.end, `${separator}${localStyleCollector.toStyleRules()}`);
342
+ } else ms.append(`\n${localStyleCollector.toStyleBlock()}`);
343
+ }
327
344
  }
328
345
  const result = {
329
346
  code: ms.toString(),
@@ -177,13 +177,16 @@ var UniAppXComponentLocalStyleCollector = class {
177
177
  }
178
178
  toStyleBlock() {
179
179
  if (!this.hasStyles()) return "";
180
- const lines = ["<style scoped>"];
180
+ return `<style scoped>\n${this.toStyleRules()}</style>\n`;
181
+ }
182
+ toStyleRules() {
183
+ if (!this.hasStyles()) return "";
184
+ const lines = [];
181
185
  for (const [utility, alias] of this.aliasByUtility) {
182
186
  lines.push(`.${alias} {`);
183
187
  lines.push(` @apply ${utility};`);
184
188
  lines.push("}");
185
189
  }
186
- lines.push("</style>");
187
190
  return `${lines.join("\n")}\n`;
188
191
  }
189
192
  };
@@ -251,10 +254,14 @@ function shouldHandleAttribute(tag, attrName, disabledDefaultTemplateHandler, ma
251
254
  }
252
255
  const defaultCreateJsHandlerOptions = { babelParserOptions: { plugins: ["typescript"] } };
253
256
  const UVUE_NVUE_RE = /\.(?:uvue|nvue)(?:\?.*)?$/;
254
- const SFC_BLOCK_RE = /<(template|script)\b([^>]*)>([\s\S]*?)<\/\1>/gi;
257
+ const SFC_BLOCK_RE = /<(template|script|style)\b([^>]*)>([\s\S]*?)<\/\1>/gi;
255
258
  const SCRIPT_SETUP_RE = /(?:^|\s)setup(?:\s|=|$)/;
259
+ const STYLE_SCOPED_RE = /(?:^|\s)scoped(?:\s|=|$)/i;
256
260
  function parseSfc(code) {
257
- const descriptor = { errors: [] };
261
+ const descriptor = {
262
+ errors: [],
263
+ styles: []
264
+ };
258
265
  for (const match of code.matchAll(SFC_BLOCK_RE)) {
259
266
  const type = match[1];
260
267
  const attrs = match[2] ?? "";
@@ -279,8 +286,12 @@ function parseSfc(code) {
279
286
  }
280
287
  continue;
281
288
  }
282
- if (type === "script") if (SCRIPT_SETUP_RE.test(attrs)) descriptor.scriptSetup ?? (descriptor.scriptSetup = block);
283
- else descriptor.script ?? (descriptor.script = block);
289
+ if (type === "script") {
290
+ if (SCRIPT_SETUP_RE.test(attrs)) descriptor.scriptSetup ?? (descriptor.scriptSetup = block);
291
+ else descriptor.script ?? (descriptor.script = block);
292
+ continue;
293
+ }
294
+ if (type === "style") descriptor.styles.push(block);
284
295
  }
285
296
  return descriptor;
286
297
  }
@@ -322,7 +333,13 @@ function transformUVue(code, id, jsHandler, runtimeSet, options = {}) {
322
333
  const { code } = jsHandler(descriptor.scriptSetup.content, runtimeSet ?? /* @__PURE__ */ new Set(), defaultCreateJsHandlerOptions);
323
334
  ms.update(descriptor.scriptSetup.start, descriptor.scriptSetup.end, localStyleCollector ? localStyleCollector.rewriteTransformedCode(code) : code);
324
335
  }
325
- if (localStyleCollector?.hasStyles()) ms.append(`\n${localStyleCollector.toStyleBlock()}`);
336
+ if (localStyleCollector?.hasStyles()) {
337
+ const scopedStyle = descriptor.styles.findLast((style) => STYLE_SCOPED_RE.test(style.attrs));
338
+ if (scopedStyle) {
339
+ const separator = scopedStyle.content.endsWith("\n") ? "" : "\n";
340
+ ms.appendLeft(scopedStyle.end, `${separator}${localStyleCollector.toStyleRules()}`);
341
+ } else ms.append(`\n${localStyleCollector.toStyleBlock()}`);
342
+ }
326
343
  }
327
344
  const result = {
328
345
  code: ms.toString(),
@@ -17,5 +17,6 @@ export declare class UniAppXComponentLocalStyleCollector {
17
17
  rewriteTransformedCode(rawSource: string, options?: RewriteCodeOptions): string;
18
18
  hasStyles(): boolean;
19
19
  toStyleBlock(): string;
20
+ toStyleRules(): string;
20
21
  }
21
22
  export {};
@@ -0,0 +1 @@
1
+ export declare function retainUniAppXAuthorApplyCss(generatedCss: string, authorCss: string): string;
@@ -4,6 +4,8 @@ interface HarmonyApplyHookContext {
4
4
  }
5
5
  interface CreateUniAppXHarmonyApplyExpanderOptions {
6
6
  generateCss?: ((id: string, code: string, hookContext?: HarmonyApplyHookContext & {
7
+ disableSourceScan?: boolean;
8
+ sourceCandidates?: Iterable<string>;
7
9
  transient?: boolean;
8
10
  }) => Promise<string | undefined> | string | undefined) | undefined;
9
11
  getResolvedConfig: () => ResolvedConfig | undefined;
@@ -12,7 +14,8 @@ interface CreateUniAppXHarmonyApplyExpanderOptions {
12
14
  }
13
15
  export declare function createUniAppXHarmonyApplyExpander(options: CreateUniAppXHarmonyApplyExpanderOptions): {
14
16
  expandStyles: (code: string, id: string, hookContext: HarmonyApplyHookContext) => Promise<string>;
15
- rememberSource: (code: string, id: string) => void;
17
+ prepareStyles: (code: string, id: string) => string;
18
+ rememberSource: (code: string, id: string, authoritative?: boolean) => void;
16
19
  styleSources: Set<string>;
17
20
  utilities: Set<string>;
18
21
  };
@@ -2,6 +2,8 @@ import type { HmrContext } from 'vite';
2
2
  interface CreateUniAppXNativeHmrReloaderOptions {
3
3
  ensureRuntimeClassSet: (force?: boolean) => Promise<Set<string>>;
4
4
  isNativeAppBuildTarget: (id?: string) => boolean;
5
+ localStyleModuleIds: Iterable<string>;
6
+ syncSourceCandidates?: (ctx: HmrContext) => Promise<void>;
5
7
  tailwindRootCssModuleIds: Iterable<string>;
6
8
  viteProcessedCssSourceFiles: Iterable<string>;
7
9
  }