weapp-tailwindcss 4.12.0 → 5.0.0-next.2

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 (313) hide show
  1. package/dist/babel/index.d.ts +3 -0
  2. package/dist/bundlers/gulp/index.d.ts +7 -0
  3. package/dist/bundlers/shared/cache.d.ts +16 -0
  4. package/dist/bundlers/shared/css-cleanup.d.ts +4 -0
  5. package/dist/bundlers/shared/css-imports.d.ts +8 -0
  6. package/dist/bundlers/shared/generator-candidates.d.ts +5 -0
  7. package/dist/bundlers/shared/generator-css.d.ts +43 -0
  8. package/dist/bundlers/shared/module-graph.d.ts +5 -0
  9. package/dist/bundlers/shared/run-tasks.d.ts +2 -0
  10. package/dist/bundlers/vite/bundle-entries.d.ts +14 -0
  11. package/dist/bundlers/vite/bundle-state.d.ts +43 -0
  12. package/dist/bundlers/vite/css-finalizer.d.ts +22 -0
  13. package/dist/bundlers/vite/generate-bundle.d.ts +33 -0
  14. package/dist/bundlers/vite/incremental-runtime-class-set.d.ts +21 -0
  15. package/dist/bundlers/vite/index.d.ts +3 -0
  16. package/dist/bundlers/vite/js-precheck.d.ts +1 -0
  17. package/dist/bundlers/vite/query.d.ts +15 -0
  18. package/dist/bundlers/vite/resolve-app-type.d.ts +2 -0
  19. package/dist/bundlers/vite/rewrite-css-imports.d.ts +11 -0
  20. package/dist/bundlers/vite/runtime-affecting-signature.d.ts +2 -0
  21. package/dist/bundlers/vite/source-candidates.d.ts +15 -0
  22. package/dist/bundlers/vite/utils.d.ts +9 -0
  23. package/dist/bundlers/webpack/BaseUnifiedPlugin/shared.d.ts +20 -0
  24. package/dist/bundlers/webpack/BaseUnifiedPlugin/v4-assets.d.ts +14 -0
  25. package/dist/bundlers/webpack/BaseUnifiedPlugin/v4-loaders.d.ts +15 -0
  26. package/dist/bundlers/webpack/BaseUnifiedPlugin/v4.d.ts +9 -0
  27. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-assets.d.ts +17 -0
  28. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5-loaders.d.ts +19 -0
  29. package/dist/bundlers/webpack/BaseUnifiedPlugin/v5.d.ts +9 -0
  30. package/dist/bundlers/webpack/index.d.ts +1 -0
  31. package/dist/bundlers/webpack/loaders/weapp-tw-css-import-rewrite-loader.d.ts +12 -0
  32. package/dist/bundlers/webpack/loaders/weapp-tw-runtime-classset-loader.d.ts +11 -0
  33. package/dist/bundlers/webpack/shared/css-imports.d.ts +6 -0
  34. package/dist/bundlers/webpack/shared/loader-anchors.d.ts +8 -0
  35. package/dist/cache/index.d.ts +38 -0
  36. package/dist/cache/md5.d.ts +1 -0
  37. package/dist/chunk-8l464Juk.js +28 -0
  38. package/dist/cli/config.d.ts +5 -0
  39. package/dist/cli/context.d.ts +16 -0
  40. package/dist/cli/doctor/constants.d.ts +7 -0
  41. package/dist/cli/doctor/types.d.ts +31 -0
  42. package/dist/cli/doctor.d.ts +4 -0
  43. package/dist/cli/helpers/options/format.d.ts +2 -0
  44. package/dist/cli/helpers/options/parse.d.ts +3 -0
  45. package/dist/cli/helpers/options/resolve.d.ts +1 -0
  46. package/dist/cli/helpers/options.d.ts +3 -0
  47. package/dist/cli/helpers/patch-cwd.d.ts +1 -0
  48. package/dist/cli/helpers.d.ts +5 -0
  49. package/dist/cli/mount-options/patch-status.d.ts +2 -0
  50. package/dist/cli/mount-options.d.ts +2 -0
  51. package/dist/cli/patch-options.d.ts +6 -0
  52. package/dist/cli/tokens.d.ts +4 -0
  53. package/dist/cli/types.d.ts +17 -0
  54. package/dist/cli/vscode-entry.d.ts +14 -0
  55. package/dist/cli/workspace/package-dirs.d.ts +3 -0
  56. package/dist/cli/workspace/patch-package.d.ts +3 -0
  57. package/dist/cli/workspace/patch-utils.d.ts +3 -0
  58. package/dist/cli/workspace/types.d.ts +11 -0
  59. package/dist/cli/workspace/workspace-globs.d.ts +2 -0
  60. package/dist/cli/workspace/workspace-io.d.ts +1 -0
  61. package/dist/cli/workspace/workspace-lock.d.ts +1 -0
  62. package/dist/cli/workspace.d.ts +2 -0
  63. package/dist/cli.d.ts +1 -2
  64. package/dist/cli.js +2425 -3524
  65. package/dist/cli.mjs +2402 -3505
  66. package/dist/constants-B-_T5UnW.mjs +44 -0
  67. package/dist/constants-p1dyh1x1.js +73 -0
  68. package/dist/constants.d.ts +13 -0
  69. package/dist/context/compiler-context-cache.d.ts +3 -0
  70. package/dist/context/custom-attributes.d.ts +2 -0
  71. package/dist/context/handlers.d.ts +6 -0
  72. package/dist/context/index.d.ts +7 -0
  73. package/dist/context/logger.d.ts +4 -0
  74. package/dist/context/tailwindcss/basedir.d.ts +1 -0
  75. package/dist/context/tailwindcss/rax.d.ts +2 -0
  76. package/dist/context/tailwindcss.d.ts +4 -0
  77. package/dist/context/workspace.d.ts +3 -0
  78. package/dist/core.d.ts +5 -21
  79. package/dist/core.js +138 -180
  80. package/dist/core.mjs +135 -180
  81. package/dist/css-imports-BbrbluP9.js +177 -0
  82. package/dist/css-imports-CSdPq_Sc.mjs +128 -0
  83. package/dist/css-macro/constants.d.ts +14 -0
  84. package/dist/css-macro/index.d.ts +15 -0
  85. package/dist/css-macro/postcss.d.ts +3 -7
  86. package/dist/css-macro/postcss.js +44 -58
  87. package/dist/css-macro/postcss.mjs +44 -56
  88. package/dist/css-macro.d.ts +1 -20
  89. package/dist/css-macro.js +37 -50
  90. package/dist/css-macro.mjs +33 -47
  91. package/dist/debug/index.d.ts +5 -0
  92. package/dist/defaults.d.ts +2 -11
  93. package/dist/defaults.js +132 -8
  94. package/dist/defaults.mjs +128 -7
  95. package/dist/escape.js +31 -54
  96. package/dist/escape.mjs +18 -25
  97. package/dist/experimental/index.d.ts +2 -0
  98. package/dist/experimental/oxc/ast-utils.d.ts +30 -0
  99. package/dist/experimental/oxc/index.d.ts +2 -0
  100. package/dist/experimental/oxc/module-specifiers.d.ts +2 -0
  101. package/dist/experimental/shared/cache.d.ts +3 -0
  102. package/dist/experimental/shared/transform.d.ts +3 -0
  103. package/dist/experimental/shared.d.ts +8 -0
  104. package/dist/experimental/swc/ast-utils.d.ts +30 -0
  105. package/dist/experimental/swc/index.d.ts +2 -0
  106. package/dist/experimental/swc/module-specifiers.d.ts +2 -0
  107. package/dist/generator/index.d.ts +11 -0
  108. package/dist/generator/options.d.ts +17 -0
  109. package/dist/generator/types.d.ts +20 -0
  110. package/dist/generator-Y-Ikv4Fu.mjs +1177 -0
  111. package/dist/generator-css-B5ejWUMv.mjs +1098 -0
  112. package/dist/generator-css-D3OdPRiS.js +1125 -0
  113. package/dist/generator-mmhXzZnv.js +1276 -0
  114. package/dist/generator.d.ts +1 -0
  115. package/dist/generator.js +19 -0
  116. package/dist/generator.mjs +2 -0
  117. package/dist/gulp.d.ts +4 -24
  118. package/dist/gulp.js +271 -13
  119. package/dist/gulp.mjs +263 -13
  120. package/dist/index.d.ts +8 -15
  121. package/dist/index.js +12 -24
  122. package/dist/index.mjs +6 -24
  123. package/dist/js/JsTokenUpdater.d.ts +14 -0
  124. package/dist/js/ModuleGraph.d.ts +18 -0
  125. package/dist/js/NodePathWalker.d.ts +33 -0
  126. package/dist/js/babel/parse.d.ts +9 -0
  127. package/dist/js/babel/process.d.ts +4 -0
  128. package/dist/js/babel.d.ts +13 -0
  129. package/dist/js/class-context.d.ts +3 -0
  130. package/dist/js/evalTransforms.d.ts +7 -0
  131. package/dist/js/handlers.d.ts +5 -0
  132. package/dist/js/index.d.ts +4 -0
  133. package/dist/js/module-graph/ignored-exports.d.ts +18 -0
  134. package/dist/js/module-graph/types.d.ts +17 -0
  135. package/dist/js/node-path-walker/export-handlers.d.ts +12 -0
  136. package/dist/js/node-path-walker/import-tokens.d.ts +24 -0
  137. package/dist/js/precheck.d.ts +2 -0
  138. package/dist/js/sourceAnalysis.d.ts +17 -0
  139. package/dist/js/syntax.d.ts +10 -0
  140. package/dist/js/taggedTemplateIgnore.d.ts +13 -0
  141. package/dist/js/types.d.ts +11 -0
  142. package/dist/lightningcss/index.d.ts +8 -0
  143. package/dist/lightningcss/style-handler/options.d.ts +3 -0
  144. package/dist/lightningcss/style-handler/selector-transform.d.ts +10 -0
  145. package/dist/lightningcss/style-handler/selector-utils.d.ts +10 -0
  146. package/dist/lightningcss/style-handler.d.ts +17 -0
  147. package/dist/loader-anchors-CNkWT8hx.js +273 -0
  148. package/dist/loader-anchors-TrU7EUr7.mjs +205 -0
  149. package/dist/logger/index.d.ts +2 -0
  150. package/dist/logger-BZ45DZJT.js +1003 -0
  151. package/dist/logger-BoVx1Dbt.mjs +935 -0
  152. package/dist/patcher-options-6gJN2EXy.js +115 -0
  153. package/dist/patcher-options-DQfR5xxT.mjs +92 -0
  154. package/dist/postcss-html-transform.d.ts +3 -3
  155. package/dist/postcss-html-transform.js +7 -10
  156. package/dist/postcss-html-transform.mjs +3 -6
  157. package/dist/postcss.d.ts +15 -0
  158. package/dist/postcss.js +280 -0
  159. package/dist/postcss.mjs +270 -0
  160. package/dist/presets/hbuilderx.d.ts +4 -0
  161. package/dist/presets/index.d.ts +3 -0
  162. package/dist/presets/shared.d.ts +10 -0
  163. package/dist/presets/taro.d.ts +4 -0
  164. package/dist/presets/uni-app-x.d.ts +16 -0
  165. package/dist/presets/uni-app.d.ts +4 -0
  166. package/dist/presets.d.ts +1 -76
  167. package/dist/presets.js +115 -163
  168. package/dist/presets.mjs +107 -163
  169. package/dist/recorder-gYSNLfOP.js +2878 -0
  170. package/dist/recorder-zsgatmkB.mjs +2763 -0
  171. package/dist/reset/index.d.ts +2 -0
  172. package/dist/reset.d.ts +1 -4
  173. package/dist/reset.js +19 -8
  174. package/dist/reset.mjs +2 -8
  175. package/dist/shared/classname-transform.d.ts +14 -0
  176. package/dist/shared/mpx.d.ts +7 -0
  177. package/dist/shared/tailwindcss-css-redirect.d.ts +1 -0
  178. package/dist/tailwindcss/index.d.ts +11 -0
  179. package/dist/tailwindcss/miniprogram.d.ts +1 -0
  180. package/dist/tailwindcss/patcher-options.d.ts +56 -0
  181. package/dist/tailwindcss/patcher-resolve.d.ts +4 -0
  182. package/dist/tailwindcss/patcher.d.ts +13 -0
  183. package/dist/tailwindcss/recorder.d.ts +13 -0
  184. package/dist/tailwindcss/remove-unsupported-css.d.ts +2 -0
  185. package/dist/tailwindcss/runtime/cache.d.ts +11 -0
  186. package/dist/tailwindcss/runtime-logs.d.ts +3 -0
  187. package/dist/tailwindcss/runtime.d.ts +29 -0
  188. package/dist/tailwindcss/targets/paths.d.ts +13 -0
  189. package/dist/tailwindcss/targets/record-io.d.ts +5 -0
  190. package/dist/tailwindcss/targets/recorder.d.ts +3 -0
  191. package/dist/tailwindcss/targets/types.d.ts +35 -0
  192. package/dist/tailwindcss/targets.d.ts +6 -0
  193. package/dist/tailwindcss/v3-engine/generator.d.ts +2 -0
  194. package/dist/tailwindcss/v3-engine/index.d.ts +4 -0
  195. package/dist/tailwindcss/v3-engine/miniprogram.d.ts +4 -0
  196. package/dist/tailwindcss/v3-engine/source.d.ts +5 -0
  197. package/dist/tailwindcss/v3-engine/types.d.ts +55 -0
  198. package/dist/tailwindcss/v4/config.d.ts +5 -0
  199. package/dist/tailwindcss/v4/css-entries.d.ts +7 -0
  200. package/dist/tailwindcss/v4/index.d.ts +2 -0
  201. package/dist/tailwindcss/v4/multi-patcher.d.ts +2 -0
  202. package/dist/tailwindcss/v4/patcher-options.d.ts +24 -0
  203. package/dist/tailwindcss/v4/patcher.d.ts +14 -0
  204. package/dist/tailwindcss/v4-engine/candidates.d.ts +2 -0
  205. package/dist/tailwindcss/v4-engine/design-system.d.ts +1 -0
  206. package/dist/tailwindcss/v4-engine/generator.d.ts +2 -0
  207. package/dist/tailwindcss/v4-engine/index.d.ts +5 -0
  208. package/dist/tailwindcss/v4-engine/miniprogram.d.ts +5 -0
  209. package/dist/tailwindcss/v4-engine/source.d.ts +7 -0
  210. package/dist/tailwindcss/v4-engine/tailwind-v3-compatibility.d.ts +1 -0
  211. package/dist/tailwindcss/v4-engine/tailwind-v3-default-colors.d.ts +1 -0
  212. package/dist/tailwindcss/v4-engine/tailwind-v4-default-colors.d.ts +1 -0
  213. package/dist/tailwindcss/v4-engine/types.d.ts +19 -0
  214. package/dist/typedoc.export.d.ts +5 -0
  215. package/dist/types/base.d.ts +1 -0
  216. package/dist/types/disabled-options.d.ts +4 -0
  217. package/dist/types/index.d.ts +104 -0
  218. package/dist/types/shared.d.ts +7 -0
  219. package/dist/types/user-defined-options/general.d.ts +31 -0
  220. package/dist/types/user-defined-options/important.d.ts +37 -0
  221. package/dist/types/user-defined-options/index.d.ts +11 -0
  222. package/dist/types/user-defined-options/lifecycle.d.ts +6 -0
  223. package/dist/types/user-defined-options/matcher.d.ts +9 -0
  224. package/dist/types.d.ts +1 -150
  225. package/dist/types.js +0 -1
  226. package/dist/types.mjs +1 -1
  227. package/dist/uni-app-x/component-local-style.d.ts +19 -0
  228. package/dist/uni-app-x/index.d.ts +2 -0
  229. package/dist/uni-app-x/options.d.ts +12 -0
  230. package/dist/uni-app-x/style-isolation.d.ts +2 -0
  231. package/dist/uni-app-x/transform.d.ts +9 -0
  232. package/dist/uni-app-x/vite.d.ts +36 -0
  233. package/dist/utils/decode.d.ts +2 -0
  234. package/dist/utils/disabled.d.ts +6 -0
  235. package/dist/utils/hbuilderx.d.ts +5 -0
  236. package/dist/utils/index.d.ts +7 -0
  237. package/dist/utils/nameMatcher.d.ts +4 -0
  238. package/dist/utils/resolve-package.d.ts +1 -0
  239. package/dist/utils/uni-platform.d.ts +11 -0
  240. package/dist/utils-7DUGTFED.mjs +48 -0
  241. package/dist/utils-DmC9_In3.js +61 -0
  242. package/dist/vite-BC9U7ahn.js +2199 -0
  243. package/dist/vite-CrlzCNqz.mjs +2186 -0
  244. package/dist/vite.d.ts +4 -17
  245. package/dist/vite.js +5 -14
  246. package/dist/vite.mjs +2 -14
  247. package/dist/weapp-tw-css-import-rewrite-loader.js +59 -92
  248. package/dist/weapp-tw-runtime-classset-loader.js +31 -50
  249. package/dist/webpack-Bu6M-Hbw.mjs +441 -0
  250. package/dist/webpack-DD7A6V0u.js +456 -0
  251. package/dist/webpack.d.ts +4 -25
  252. package/dist/webpack.js +6 -17
  253. package/dist/webpack.mjs +2 -17
  254. package/dist/webpack4.d.ts +4 -26
  255. package/dist/webpack4.js +375 -481
  256. package/dist/webpack4.mjs +366 -482
  257. package/dist/wxml/Tokenizer.d.ts +15 -0
  258. package/dist/wxml/custom-attributes.d.ts +4 -0
  259. package/dist/wxml/index.d.ts +2 -0
  260. package/dist/wxml/shared.d.ts +2 -0
  261. package/dist/wxml/tokenizer/types.d.ts +18 -0
  262. package/dist/wxml/utils/codegen/legacy-rewriter.d.ts +2 -0
  263. package/dist/wxml/utils/codegen/legacy-visitor.d.ts +8 -0
  264. package/dist/wxml/utils/codegen.d.ts +2 -0
  265. package/dist/wxml/utils/custom-template.d.ts +3 -0
  266. package/dist/wxml/utils/fragment-helpers.d.ts +6 -0
  267. package/dist/wxml/utils/fragment-updater.d.ts +4 -0
  268. package/dist/wxml/utils/template-fragments.d.ts +3 -0
  269. package/dist/wxml/utils.d.ts +8 -0
  270. package/dist/wxml/whitespace.d.ts +2 -0
  271. package/generator-placeholder.css +1 -0
  272. package/package.json +19 -8
  273. package/dist/chunk-24AGZQVR.js +0 -183
  274. package/dist/chunk-3VQKDHGP.mjs +0 -179
  275. package/dist/chunk-4AFQP74Z.js +0 -24
  276. package/dist/chunk-57SOQCAU.mjs +0 -582
  277. package/dist/chunk-5ZYHNDEK.mjs +0 -2439
  278. package/dist/chunk-76S2EME4.mjs +0 -34
  279. package/dist/chunk-A5PB4KZT.js +0 -138
  280. package/dist/chunk-DUHYLR2R.js +0 -276
  281. package/dist/chunk-DYLQ6UOI.js +0 -71
  282. package/dist/chunk-E7I5TW5K.js +0 -52
  283. package/dist/chunk-FS2NOOEB.js +0 -292
  284. package/dist/chunk-HVNGIKLS.js +0 -3930
  285. package/dist/chunk-JZQBZHN5.js +0 -579
  286. package/dist/chunk-KGTVD4EP.mjs +0 -3930
  287. package/dist/chunk-NNOQDMUP.mjs +0 -10
  288. package/dist/chunk-OF6MFURR.js +0 -34
  289. package/dist/chunk-OFB2KBRP.js +0 -2442
  290. package/dist/chunk-OOHJLO5M.mjs +0 -71
  291. package/dist/chunk-PCDYXXSK.mjs +0 -1515
  292. package/dist/chunk-RKISS72P.js +0 -7
  293. package/dist/chunk-RRQZL7FQ.mjs +0 -292
  294. package/dist/chunk-XAKAD2CR.mjs +0 -138
  295. package/dist/chunk-XZP3MREK.mjs +0 -276
  296. package/dist/chunk-ZAA5ZG3D.js +0 -1518
  297. package/dist/chunk-ZCH4YINE.mjs +0 -52
  298. package/dist/cli.d.mts +0 -2
  299. package/dist/core.d.mts +0 -26
  300. package/dist/css-macro/postcss.d.mts +0 -7
  301. package/dist/css-macro.d.mts +0 -18
  302. package/dist/defaults.d.mts +0 -11
  303. package/dist/gulp.d.mts +0 -24
  304. package/dist/index-BXrmQelt.d.mts +0 -672
  305. package/dist/index-BXrmQelt.d.ts +0 -672
  306. package/dist/index.d.mts +0 -15
  307. package/dist/postcss-html-transform.d.mts +0 -2
  308. package/dist/presets.d.mts +0 -76
  309. package/dist/reset.d.mts +0 -1
  310. package/dist/types.d.mts +0 -150
  311. package/dist/vite.d.mts +0 -17
  312. package/dist/webpack.d.mts +0 -25
  313. package/dist/webpack4.d.mts +0 -26
@@ -0,0 +1,115 @@
1
+ //#region src/tailwindcss/patcher-options.ts
2
+ function resolveTailwindcssOptions(options) {
3
+ if (!options) return;
4
+ const compatOptions = options;
5
+ return compatOptions.tailwindcss ?? compatOptions.tailwind;
6
+ }
7
+ function normalizeExtendLengthUnits(value) {
8
+ if (value === false) return false;
9
+ if (value === true) return { enabled: true };
10
+ if (value && typeof value === "object") return {
11
+ enabled: true,
12
+ ...value
13
+ };
14
+ }
15
+ function normalizeTailwindcssPatcherOptions(options) {
16
+ if (!options) return;
17
+ if ("patch" in options) {
18
+ const { cache, patch } = options;
19
+ const normalized = {};
20
+ if (cache !== void 0) normalized.cache = cache;
21
+ const apply = {};
22
+ const extract = {};
23
+ if (patch?.overwrite !== void 0) apply.overwrite = patch.overwrite;
24
+ if (patch?.filter) normalized.filter = patch.filter;
25
+ const extendLengthUnits = normalizeExtendLengthUnits(patch?.applyPatches?.extendLengthUnits);
26
+ const exposeContext = patch?.applyPatches?.exportContext;
27
+ if (extendLengthUnits !== void 0 || exposeContext !== void 0) {
28
+ apply.exposeContext = exposeContext;
29
+ apply.extendLengthUnits = extendLengthUnits;
30
+ }
31
+ const cwd = patch?.cwd ?? patch?.basedir;
32
+ if (cwd) normalized.projectRoot = cwd;
33
+ const tailwindOptions = patch?.tailwindcss ? { ...patch.tailwindcss } : void 0;
34
+ const legacyResolve = patch?.resolve;
35
+ let nextTailwindOptions = tailwindOptions;
36
+ if (nextTailwindOptions?.version === 2 && !nextTailwindOptions.packageName) {
37
+ nextTailwindOptions = {
38
+ ...nextTailwindOptions,
39
+ packageName: "@tailwindcss/postcss7-compat",
40
+ postcssPlugin: nextTailwindOptions.postcssPlugin
41
+ };
42
+ if (!nextTailwindOptions.postcssPlugin) nextTailwindOptions.postcssPlugin = "@tailwindcss/postcss7-compat";
43
+ }
44
+ if (nextTailwindOptions || legacyResolve) {
45
+ const resolveOptions = nextTailwindOptions?.resolve;
46
+ const mergedResolve = legacyResolve || resolveOptions ? {
47
+ ...resolveOptions ?? {},
48
+ ...legacyResolve ?? {}
49
+ } : void 0;
50
+ normalized.tailwindcss = {
51
+ ...nextTailwindOptions ?? {},
52
+ ...mergedResolve ? { resolve: mergedResolve } : {}
53
+ };
54
+ }
55
+ if (patch?.output) {
56
+ if (patch.output.filename !== void 0) extract.file = patch.output.filename;
57
+ if (patch.output.loose !== void 0) extract.pretty = patch.output.loose ? 2 : false;
58
+ if (patch.output.removeUniversalSelector !== void 0) extract.removeUniversalSelector = patch.output.removeUniversalSelector;
59
+ }
60
+ if (Object.keys(apply).length > 0) normalized.apply = apply;
61
+ if (Object.keys(extract).length > 0) normalized.extract = extract;
62
+ return toModernTailwindcssPatchOptions(normalized);
63
+ }
64
+ return toModernTailwindcssPatchOptions(options);
65
+ }
66
+ function toModernTailwindcssPatchOptions(options) {
67
+ if (!options) return;
68
+ const normalized = {};
69
+ if (options.cache !== void 0) normalized.cache = options.cache;
70
+ if (options.filter) normalized.filter = options.filter;
71
+ const projectRoot = options.projectRoot ?? options.cwd;
72
+ if (projectRoot) normalized.projectRoot = projectRoot;
73
+ const tailwindcss = resolveTailwindcssOptions(options);
74
+ if (tailwindcss) normalized.tailwindcss = { ...tailwindcss };
75
+ const apply = { ...options.apply ?? {} };
76
+ if (apply.overwrite === void 0 && options.overwrite !== void 0) apply.overwrite = options.overwrite;
77
+ if (apply.exposeContext === void 0 && options.features?.exposeContext !== void 0) apply.exposeContext = options.features.exposeContext;
78
+ if (apply.extendLengthUnits === void 0 && options.features?.extendLengthUnits !== void 0) apply.extendLengthUnits = options.features.extendLengthUnits;
79
+ if (Object.keys(apply).length > 0) normalized.apply = apply;
80
+ const extract = { ...options.extract ?? {} };
81
+ if (options.output) {
82
+ if (extract.write === void 0 && options.output.enabled !== void 0) extract.write = options.output.enabled;
83
+ if (extract.file === void 0 && options.output.file !== void 0) extract.file = options.output.file;
84
+ if (extract.format === void 0 && options.output.format !== void 0) extract.format = options.output.format;
85
+ if (extract.pretty === void 0 && options.output.pretty !== void 0) extract.pretty = options.output.pretty;
86
+ if (extract.removeUniversalSelector === void 0 && options.output.removeUniversalSelector !== void 0) extract.removeUniversalSelector = options.output.removeUniversalSelector;
87
+ }
88
+ if (Object.keys(extract).length > 0) normalized.extract = extract;
89
+ return normalized;
90
+ }
91
+ //#endregion
92
+ Object.defineProperty(exports, "normalizeExtendLengthUnits", {
93
+ enumerable: true,
94
+ get: function() {
95
+ return normalizeExtendLengthUnits;
96
+ }
97
+ });
98
+ Object.defineProperty(exports, "normalizeTailwindcssPatcherOptions", {
99
+ enumerable: true,
100
+ get: function() {
101
+ return normalizeTailwindcssPatcherOptions;
102
+ }
103
+ });
104
+ Object.defineProperty(exports, "resolveTailwindcssOptions", {
105
+ enumerable: true,
106
+ get: function() {
107
+ return resolveTailwindcssOptions;
108
+ }
109
+ });
110
+ Object.defineProperty(exports, "toModernTailwindcssPatchOptions", {
111
+ enumerable: true,
112
+ get: function() {
113
+ return toModernTailwindcssPatchOptions;
114
+ }
115
+ });
@@ -0,0 +1,92 @@
1
+ //#region src/tailwindcss/patcher-options.ts
2
+ function resolveTailwindcssOptions(options) {
3
+ if (!options) return;
4
+ const compatOptions = options;
5
+ return compatOptions.tailwindcss ?? compatOptions.tailwind;
6
+ }
7
+ function normalizeExtendLengthUnits(value) {
8
+ if (value === false) return false;
9
+ if (value === true) return { enabled: true };
10
+ if (value && typeof value === "object") return {
11
+ enabled: true,
12
+ ...value
13
+ };
14
+ }
15
+ function normalizeTailwindcssPatcherOptions(options) {
16
+ if (!options) return;
17
+ if ("patch" in options) {
18
+ const { cache, patch } = options;
19
+ const normalized = {};
20
+ if (cache !== void 0) normalized.cache = cache;
21
+ const apply = {};
22
+ const extract = {};
23
+ if (patch?.overwrite !== void 0) apply.overwrite = patch.overwrite;
24
+ if (patch?.filter) normalized.filter = patch.filter;
25
+ const extendLengthUnits = normalizeExtendLengthUnits(patch?.applyPatches?.extendLengthUnits);
26
+ const exposeContext = patch?.applyPatches?.exportContext;
27
+ if (extendLengthUnits !== void 0 || exposeContext !== void 0) {
28
+ apply.exposeContext = exposeContext;
29
+ apply.extendLengthUnits = extendLengthUnits;
30
+ }
31
+ const cwd = patch?.cwd ?? patch?.basedir;
32
+ if (cwd) normalized.projectRoot = cwd;
33
+ const tailwindOptions = patch?.tailwindcss ? { ...patch.tailwindcss } : void 0;
34
+ const legacyResolve = patch?.resolve;
35
+ let nextTailwindOptions = tailwindOptions;
36
+ if (nextTailwindOptions?.version === 2 && !nextTailwindOptions.packageName) {
37
+ nextTailwindOptions = {
38
+ ...nextTailwindOptions,
39
+ packageName: "@tailwindcss/postcss7-compat",
40
+ postcssPlugin: nextTailwindOptions.postcssPlugin
41
+ };
42
+ if (!nextTailwindOptions.postcssPlugin) nextTailwindOptions.postcssPlugin = "@tailwindcss/postcss7-compat";
43
+ }
44
+ if (nextTailwindOptions || legacyResolve) {
45
+ const resolveOptions = nextTailwindOptions?.resolve;
46
+ const mergedResolve = legacyResolve || resolveOptions ? {
47
+ ...resolveOptions ?? {},
48
+ ...legacyResolve ?? {}
49
+ } : void 0;
50
+ normalized.tailwindcss = {
51
+ ...nextTailwindOptions ?? {},
52
+ ...mergedResolve ? { resolve: mergedResolve } : {}
53
+ };
54
+ }
55
+ if (patch?.output) {
56
+ if (patch.output.filename !== void 0) extract.file = patch.output.filename;
57
+ if (patch.output.loose !== void 0) extract.pretty = patch.output.loose ? 2 : false;
58
+ if (patch.output.removeUniversalSelector !== void 0) extract.removeUniversalSelector = patch.output.removeUniversalSelector;
59
+ }
60
+ if (Object.keys(apply).length > 0) normalized.apply = apply;
61
+ if (Object.keys(extract).length > 0) normalized.extract = extract;
62
+ return toModernTailwindcssPatchOptions(normalized);
63
+ }
64
+ return toModernTailwindcssPatchOptions(options);
65
+ }
66
+ function toModernTailwindcssPatchOptions(options) {
67
+ if (!options) return;
68
+ const normalized = {};
69
+ if (options.cache !== void 0) normalized.cache = options.cache;
70
+ if (options.filter) normalized.filter = options.filter;
71
+ const projectRoot = options.projectRoot ?? options.cwd;
72
+ if (projectRoot) normalized.projectRoot = projectRoot;
73
+ const tailwindcss = resolveTailwindcssOptions(options);
74
+ if (tailwindcss) normalized.tailwindcss = { ...tailwindcss };
75
+ const apply = { ...options.apply ?? {} };
76
+ if (apply.overwrite === void 0 && options.overwrite !== void 0) apply.overwrite = options.overwrite;
77
+ if (apply.exposeContext === void 0 && options.features?.exposeContext !== void 0) apply.exposeContext = options.features.exposeContext;
78
+ if (apply.extendLengthUnits === void 0 && options.features?.extendLengthUnits !== void 0) apply.extendLengthUnits = options.features.extendLengthUnits;
79
+ if (Object.keys(apply).length > 0) normalized.apply = apply;
80
+ const extract = { ...options.extract ?? {} };
81
+ if (options.output) {
82
+ if (extract.write === void 0 && options.output.enabled !== void 0) extract.write = options.output.enabled;
83
+ if (extract.file === void 0 && options.output.file !== void 0) extract.file = options.output.file;
84
+ if (extract.format === void 0 && options.output.format !== void 0) extract.format = options.output.format;
85
+ if (extract.pretty === void 0 && options.output.pretty !== void 0) extract.pretty = options.output.pretty;
86
+ if (extract.removeUniversalSelector === void 0 && options.output.removeUniversalSelector !== void 0) extract.removeUniversalSelector = options.output.removeUniversalSelector;
87
+ }
88
+ if (Object.keys(extract).length > 0) normalized.extract = extract;
89
+ return normalized;
90
+ }
91
+ //#endregion
92
+ export { toModernTailwindcssPatchOptions as i, normalizeTailwindcssPatcherOptions as n, resolveTailwindcssOptions as r, normalizeExtendLengthUnits as t };
@@ -1,4 +1,4 @@
1
+ import type { IOptions } from '@weapp-tailwindcss/postcss/html-transform';
1
2
  import postcssHtmlTransform from '@weapp-tailwindcss/postcss/html-transform';
2
- // @ts-ignore
3
- export = postcssHtmlTransform;
4
- export { IOptions } from '@weapp-tailwindcss/postcss/html-transform';
3
+ export type { IOptions };
4
+ export default postcssHtmlTransform;
@@ -1,10 +1,7 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }require('./chunk-RKISS72P.js');
2
-
3
- // src/postcss-html-transform.ts
4
- var _htmltransform = require('@weapp-tailwindcss/postcss/html-transform'); var _htmltransform2 = _interopRequireDefault(_htmltransform);
5
- var postcss_html_transform_default = _htmltransform2.default;
6
-
7
-
8
- exports.default = postcss_html_transform_default;
9
-
10
- module.exports = exports.default;
1
+ const require_chunk = require("./chunk-8l464Juk.js");
2
+ let _weapp_tailwindcss_postcss_html_transform = require("@weapp-tailwindcss/postcss/html-transform");
3
+ _weapp_tailwindcss_postcss_html_transform = require_chunk.__toESM(_weapp_tailwindcss_postcss_html_transform);
4
+ //#region src/postcss-html-transform.ts
5
+ var postcss_html_transform_default = _weapp_tailwindcss_postcss_html_transform.default;
6
+ //#endregion
7
+ module.exports = postcss_html_transform_default;
@@ -1,8 +1,5 @@
1
- import "./chunk-NNOQDMUP.mjs";
2
-
3
- // src/postcss-html-transform.ts
4
1
  import postcssHtmlTransform from "@weapp-tailwindcss/postcss/html-transform";
2
+ //#region src/postcss-html-transform.ts
5
3
  var postcss_html_transform_default = postcssHtmlTransform;
6
- export {
7
- postcss_html_transform_default as default
8
- };
4
+ //#endregion
5
+ export { postcss_html_transform_default as default };
@@ -0,0 +1,15 @@
1
+ import type { IStyleHandlerOptions } from '@weapp-tailwindcss/postcss/types';
2
+ import type { PluginCreator } from 'postcss';
3
+ import type { TailwindV4CandidateSource, TailwindV4SourceOptions, WeappTailwindcssGeneratorTarget, WeappTailwindcssGeneratorUserOptions } from './generator';
4
+ export interface WeappTailwindcssPostcssPluginOptions extends TailwindV4SourceOptions {
5
+ generator?: WeappTailwindcssGeneratorUserOptions;
6
+ target?: WeappTailwindcssGeneratorTarget;
7
+ version?: 3 | 4;
8
+ config?: string;
9
+ postcssPlugin?: string;
10
+ candidates?: Iterable<string>;
11
+ sources?: TailwindV4CandidateSource[];
12
+ styleOptions?: Partial<IStyleHandlerOptions>;
13
+ }
14
+ export declare const weappTailwindcssPostcssPlugin: PluginCreator<WeappTailwindcssPostcssPluginOptions>;
15
+ export default weappTailwindcssPostcssPlugin;
@@ -0,0 +1,280 @@
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_chunk = require("./chunk-8l464Juk.js");
6
+ const require_generator = require("./generator-mmhXzZnv.js");
7
+ let node_module = require("node:module");
8
+ let postcss = require("postcss");
9
+ postcss = require_chunk.__toESM(postcss);
10
+ let node_path = require("node:path");
11
+ node_path = require_chunk.__toESM(node_path);
12
+ let node_process = require("node:process");
13
+ node_process = require_chunk.__toESM(node_process);
14
+ let tailwindcss_config = require("tailwindcss-config");
15
+ let tailwindcss_patch = require("tailwindcss-patch");
16
+ let node_fs_promises = require("node:fs/promises");
17
+ let fast_glob = require("fast-glob");
18
+ fast_glob = require_chunk.__toESM(fast_glob);
19
+ //#region src/postcss.ts
20
+ const PLUGIN_NAME = "weapp-tailwindcss";
21
+ const POSTCSS_SOURCE_EXTENSIONS = [
22
+ "html",
23
+ "wxml",
24
+ "axml",
25
+ "jxml",
26
+ "ksml",
27
+ "ttml",
28
+ "qml",
29
+ "tyml",
30
+ "xhsml",
31
+ "swan",
32
+ "vue",
33
+ "mpx",
34
+ "js",
35
+ "jsx",
36
+ "ts",
37
+ "tsx"
38
+ ];
39
+ function resolveInputFile(result) {
40
+ const from = result.opts.from;
41
+ return typeof from === "string" && from.length > 0 ? from : void 0;
42
+ }
43
+ function resolvePostcssBase(result, options) {
44
+ if (options.base) return options.base;
45
+ const inputFile = resolveInputFile(result);
46
+ return inputFile ? node_path.default.dirname(inputFile) : node_process.default.cwd();
47
+ }
48
+ function resolvePostcssProjectRoot(result, options) {
49
+ if (options.projectRoot) return options.projectRoot;
50
+ const inputFile = resolveInputFile(result);
51
+ return inputFile ? node_path.default.dirname(inputFile) : node_process.default.cwd();
52
+ }
53
+ function replaceRootCss(root, css, result) {
54
+ const nextRoot = postcss.default.parse(css, { from: resolveInputFile(result) });
55
+ root.removeAll();
56
+ root.append(nextRoot.nodes);
57
+ }
58
+ function addDependencyMessages(result, generated) {
59
+ for (const file of generated.dependencies) result.messages.push({
60
+ type: "dependency",
61
+ plugin: PLUGIN_NAME,
62
+ file
63
+ });
64
+ }
65
+ function parseLocalSourceParam(params) {
66
+ const value = params.trim();
67
+ if (!value || value === "none" || value.startsWith("not ") || value.startsWith("inline(")) return;
68
+ return /^(['"])(.+)\1$/.exec(value)?.[2];
69
+ }
70
+ function parseConfigParam(params) {
71
+ const value = params.trim();
72
+ return /^(['"])(.+)\1$/.exec(value)?.[2];
73
+ }
74
+ function parseSourceFileParam(params) {
75
+ const value = params.trim();
76
+ if (!value || value === "none" || value.startsWith("inline(")) return;
77
+ const negated = value.startsWith("not ");
78
+ const sourceValue = negated ? value.slice(4).trim() : value;
79
+ const match = /^(['"])(.+)\1$/.exec(sourceValue);
80
+ return match?.[2] ? {
81
+ negated,
82
+ sourcePath: match[2]
83
+ } : void 0;
84
+ }
85
+ function hasTailwindV4CssSyntax(root) {
86
+ let hasV4Syntax = false;
87
+ root.walkAtRules((rule) => {
88
+ if (rule.name === "theme" || rule.name === "source" || rule.name === "custom-variant") hasV4Syntax = true;
89
+ if (rule.name === "import" && /(['"])tailwindcss\1/.test(rule.params)) hasV4Syntax = true;
90
+ });
91
+ return hasV4Syntax;
92
+ }
93
+ function readPackageMajorVersion(packageName, base) {
94
+ try {
95
+ const pkg = (0, node_module.createRequire)(`${base}/package.json`)(`${packageName}/package.json`);
96
+ const major = Number(pkg.version?.split(".")[0]);
97
+ return major === 3 || major === 4 ? major : void 0;
98
+ } catch {
99
+ return;
100
+ }
101
+ }
102
+ function resolvePostcssTailwindVersion(root, result, options) {
103
+ if (options.version) return options.version;
104
+ if (hasTailwindV4CssSyntax(root)) return 4;
105
+ const packageName = options.packageName ?? "tailwindcss";
106
+ if (packageName === "@tailwindcss/postcss" || packageName.includes("tailwindcss4")) return 4;
107
+ if (packageName.includes("tailwindcss3")) return 3;
108
+ return readPackageMajorVersion(packageName, resolvePostcssProjectRoot(result, options)) ?? 4;
109
+ }
110
+ function getSourceExtension(file) {
111
+ return node_path.default.extname(file).slice(1) || void 0;
112
+ }
113
+ async function pathExistsAsDirectory(file) {
114
+ try {
115
+ return (await (0, node_fs_promises.stat)(file)).isDirectory();
116
+ } catch {
117
+ return false;
118
+ }
119
+ }
120
+ async function expandLocalSourceFiles(sourcePath, base) {
121
+ const absoluteSource = node_path.default.isAbsolute(sourcePath) ? sourcePath : node_path.default.resolve(base, sourcePath);
122
+ if (await pathExistsAsDirectory(absoluteSource)) return (0, fast_glob.default)(`**/*.{${POSTCSS_SOURCE_EXTENSIONS.join(",")}}`, {
123
+ absolute: true,
124
+ cwd: absoluteSource,
125
+ onlyFiles: true
126
+ });
127
+ return (0, fast_glob.default)(sourcePath, {
128
+ absolute: true,
129
+ cwd: base,
130
+ onlyFiles: true
131
+ });
132
+ }
133
+ async function resolveTailwindSourceEntry(sourcePath, base, negated) {
134
+ const absoluteSource = node_path.default.isAbsolute(sourcePath) ? node_path.default.resolve(sourcePath) : node_path.default.resolve(base, sourcePath);
135
+ if (await pathExistsAsDirectory(absoluteSource)) return {
136
+ base: absoluteSource,
137
+ negated,
138
+ pattern: "**/*"
139
+ };
140
+ if (node_path.default.isAbsolute(sourcePath)) return {
141
+ base: node_path.default.dirname(absoluteSource),
142
+ negated,
143
+ pattern: node_path.default.basename(absoluteSource)
144
+ };
145
+ return {
146
+ base,
147
+ negated,
148
+ pattern: sourcePath
149
+ };
150
+ }
151
+ function collectConfigPaths(root, base) {
152
+ const configPaths = [];
153
+ root.walkAtRules("config", (rule) => {
154
+ const configPath = parseConfigParam(rule.params);
155
+ if (configPath) configPaths.push(node_path.default.isAbsolute(configPath) ? configPath : node_path.default.resolve(base, configPath));
156
+ });
157
+ return [...new Set(configPaths)];
158
+ }
159
+ function normalizeContentFiles(content) {
160
+ if (typeof content === "string") return [content];
161
+ if (Array.isArray(content)) return content.flatMap((item) => normalizeContentFiles(item));
162
+ if (typeof content === "object" && content !== null && "files" in content) return normalizeContentFiles(content.files);
163
+ return [];
164
+ }
165
+ async function collectConfigContentFiles(root, base) {
166
+ const configPaths = collectConfigPaths(root, base);
167
+ const files = [];
168
+ for (const configPath of configPaths) {
169
+ const contentFiles = normalizeContentFiles((await (0, tailwindcss_config.loadConfig)({
170
+ config: configPath,
171
+ cwd: node_path.default.dirname(configPath)
172
+ }))?.config.content);
173
+ for (const contentFile of contentFiles) files.push(...await expandLocalSourceFiles(contentFile, node_path.default.dirname(configPath)));
174
+ }
175
+ return {
176
+ configPaths,
177
+ files: [...new Set(files)]
178
+ };
179
+ }
180
+ async function collectAutoTailwindCandidates(root, result, options) {
181
+ const base = resolvePostcssBase(result, options);
182
+ const projectRoot = resolvePostcssProjectRoot(result, options);
183
+ const sourceEntryTasks = [];
184
+ if (!root.toString().includes("source(none)")) sourceEntryTasks.push(Promise.resolve({
185
+ base,
186
+ negated: false,
187
+ pattern: "**/*"
188
+ }));
189
+ root.walkAtRules("source", (rule) => {
190
+ const parsed = parseSourceFileParam(rule.params);
191
+ if (!parsed) return;
192
+ sourceEntryTasks.push(resolveTailwindSourceEntry(parsed.sourcePath, base, parsed.negated));
193
+ });
194
+ const sourceEntries = await Promise.all(sourceEntryTasks);
195
+ if (sourceEntries.length === 0) return /* @__PURE__ */ new Set();
196
+ const candidates = await (0, tailwindcss_patch.extractValidCandidates)({
197
+ base,
198
+ css: root.toString(),
199
+ cwd: projectRoot,
200
+ sources: sourceEntries
201
+ });
202
+ return new Set(candidates);
203
+ }
204
+ async function collectPostcssLocalSources(root, result, options) {
205
+ const base = resolvePostcssBase(result, options);
206
+ const sourcePaths = [];
207
+ root.walkAtRules("source", (rule) => {
208
+ const sourcePath = parseLocalSourceParam(rule.params);
209
+ if (sourcePath) sourcePaths.push(sourcePath);
210
+ });
211
+ const configContentFiles = await collectConfigContentFiles(root, base);
212
+ const files = [...new Set((await Promise.all(sourcePaths.map((sourcePath) => expandLocalSourceFiles(sourcePath, base)))).flat().concat(configContentFiles.files))];
213
+ const sources = await Promise.all(files.map(async (file) => ({
214
+ content: await (0, node_fs_promises.readFile)(file, "utf8"),
215
+ extension: getSourceExtension(file)
216
+ })));
217
+ return {
218
+ files: [...files, ...configContentFiles.configPaths],
219
+ sources
220
+ };
221
+ }
222
+ function addSourceDependencyMessages(result, files) {
223
+ for (const file of files) result.messages.push({
224
+ type: "dependency",
225
+ plugin: PLUGIN_NAME,
226
+ file
227
+ });
228
+ }
229
+ const weappTailwindcssPostcssPlugin = (options = {}) => {
230
+ return {
231
+ postcssPlugin: PLUGIN_NAME,
232
+ async Once(root, { result }) {
233
+ const { candidates, generator: userGeneratorOptions, sources, styleOptions, target: legacyTarget, ...sourceOptions } = options;
234
+ const generatorOptions = require_generator.normalizeWeappTailwindcssGeneratorOptions(userGeneratorOptions);
235
+ if (generatorOptions.mode === "off") return;
236
+ const tailwindVersion = resolvePostcssTailwindVersion(root, result, options);
237
+ const [collectedSources, autoCandidates] = await Promise.all([collectPostcssLocalSources(root, result, options), collectAutoTailwindCandidates(root, result, options)]);
238
+ const generator = require_generator.createWeappTailwindcssGenerator(tailwindVersion === 3 ? await require_generator.resolveTailwindV3Source({
239
+ config: options.config,
240
+ css: sourceOptions.css ?? root.toString(),
241
+ base: resolvePostcssBase(result, options),
242
+ cwd: resolvePostcssProjectRoot(result, options),
243
+ projectRoot: resolvePostcssProjectRoot(result, options),
244
+ packageName: options.packageName,
245
+ postcssPlugin: options.postcssPlugin
246
+ }) : await require_generator.resolveTailwindV4Source({
247
+ ...sourceOptions,
248
+ css: sourceOptions.css ?? root.toString(),
249
+ base: resolvePostcssBase(result, options),
250
+ projectRoot: resolvePostcssProjectRoot(result, options)
251
+ }));
252
+ const generateOptions = {
253
+ candidates: new Set([...autoCandidates, ...candidates ?? []]),
254
+ scanSources: false,
255
+ sources: [...collectedSources.sources, ...sources ?? []],
256
+ styleOptions: {
257
+ ...generatorOptions.styleOptions,
258
+ ...styleOptions
259
+ },
260
+ tailwindcssV3Compatibility: generatorOptions.tailwindcssV3Compatibility,
261
+ target: legacyTarget ?? generatorOptions.target
262
+ };
263
+ const generated = await generator.generate(generateOptions);
264
+ replaceRootCss(root, generated.css, result);
265
+ addDependencyMessages(result, generated);
266
+ addSourceDependencyMessages(result, collectedSources.files);
267
+ result.messages.push({
268
+ type: "weapp-tailwindcss:generated",
269
+ plugin: PLUGIN_NAME,
270
+ target: generated.target,
271
+ classSet: generated.classSet,
272
+ rawCss: generated.rawCss
273
+ });
274
+ }
275
+ };
276
+ };
277
+ weappTailwindcssPostcssPlugin.postcss = true;
278
+ //#endregion
279
+ exports.default = weappTailwindcssPostcssPlugin;
280
+ exports.weappTailwindcssPostcssPlugin = weappTailwindcssPostcssPlugin;