tailwindcss 0.0.0-insiders.ea139f2 → 0.0.0-insiders.ea4e1cd

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 (236) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +15 -7
  3. package/colors.d.ts +3 -0
  4. package/colors.js +2 -1
  5. package/defaultConfig.d.ts +3 -0
  6. package/defaultConfig.js +2 -1
  7. package/defaultTheme.d.ts +4 -0
  8. package/defaultTheme.js +2 -1
  9. package/lib/cli/build/deps.js +62 -0
  10. package/lib/cli/build/index.js +54 -0
  11. package/lib/cli/build/plugin.js +378 -0
  12. package/lib/cli/build/utils.js +88 -0
  13. package/lib/cli/build/watching.js +182 -0
  14. package/lib/cli/help/index.js +73 -0
  15. package/lib/cli/index.js +230 -0
  16. package/lib/cli/init/index.js +63 -0
  17. package/lib/cli-peer-dependencies.js +28 -7
  18. package/lib/cli.js +4 -703
  19. package/lib/corePluginList.js +12 -3
  20. package/lib/corePlugins.js +2373 -1863
  21. package/lib/css/preflight.css +10 -8
  22. package/lib/featureFlags.js +49 -26
  23. package/lib/index.js +1 -31
  24. package/lib/lib/cacheInvalidation.js +92 -0
  25. package/lib/lib/collapseAdjacentRules.js +30 -10
  26. package/lib/lib/collapseDuplicateDeclarations.js +60 -4
  27. package/lib/lib/content.js +181 -0
  28. package/lib/lib/defaultExtractor.js +243 -0
  29. package/lib/lib/detectNesting.js +21 -10
  30. package/lib/lib/evaluateTailwindFunctions.js +115 -50
  31. package/lib/lib/expandApplyAtRules.js +467 -161
  32. package/lib/lib/expandTailwindAtRules.js +160 -133
  33. package/lib/lib/findAtConfigPath.js +46 -0
  34. package/lib/lib/generateRules.js +553 -200
  35. package/lib/lib/getModuleDependencies.js +88 -37
  36. package/lib/lib/load-config.js +42 -0
  37. package/lib/lib/normalizeTailwindDirectives.js +46 -33
  38. package/lib/lib/offsets.js +306 -0
  39. package/lib/lib/partitionApplyAtRules.js +58 -0
  40. package/lib/lib/regex.js +74 -0
  41. package/lib/lib/remap-bitfield.js +89 -0
  42. package/lib/lib/resolveDefaultsAtRules.js +98 -58
  43. package/lib/lib/setupContextUtils.js +773 -321
  44. package/lib/lib/setupTrackingContext.js +70 -75
  45. package/lib/lib/sharedState.js +78 -10
  46. package/lib/lib/substituteScreenAtRules.js +14 -10
  47. package/lib/oxide/cli/build/deps.js +89 -0
  48. package/lib/oxide/cli/build/index.js +53 -0
  49. package/lib/oxide/cli/build/plugin.js +375 -0
  50. package/lib/oxide/cli/build/utils.js +87 -0
  51. package/lib/oxide/cli/build/watching.js +179 -0
  52. package/lib/oxide/cli/help/index.js +72 -0
  53. package/lib/oxide/cli/index.js +214 -0
  54. package/lib/oxide/cli/init/index.js +52 -0
  55. package/lib/oxide/cli.js +5 -0
  56. package/lib/oxide/postcss-plugin.js +2 -0
  57. package/lib/plugin.js +98 -0
  58. package/{nesting → lib/postcss-plugins/nesting}/README.md +2 -2
  59. package/lib/postcss-plugins/nesting/index.js +21 -0
  60. package/lib/postcss-plugins/nesting/plugin.js +89 -0
  61. package/lib/processTailwindFeatures.js +39 -26
  62. package/lib/public/colors.js +272 -246
  63. package/lib/public/create-plugin.js +9 -5
  64. package/lib/public/default-config.js +10 -6
  65. package/lib/public/default-theme.js +10 -6
  66. package/lib/public/load-config.js +12 -0
  67. package/lib/public/resolve-config.js +11 -6
  68. package/lib/util/applyImportantSelector.js +36 -0
  69. package/lib/util/bigSign.js +6 -1
  70. package/lib/util/buildMediaQuery.js +13 -6
  71. package/lib/util/cloneDeep.js +9 -6
  72. package/lib/util/cloneNodes.js +23 -3
  73. package/lib/util/color.js +70 -38
  74. package/lib/util/colorNames.js +752 -0
  75. package/lib/util/configurePlugins.js +7 -2
  76. package/lib/util/createPlugin.js +8 -6
  77. package/lib/util/createUtilityPlugin.js +16 -16
  78. package/lib/util/dataTypes.js +173 -108
  79. package/lib/util/defaults.js +14 -3
  80. package/lib/util/escapeClassName.js +13 -8
  81. package/lib/util/escapeCommas.js +7 -2
  82. package/lib/util/flattenColorPalette.js +11 -12
  83. package/lib/util/formatVariantSelector.js +228 -151
  84. package/lib/util/getAllConfigs.js +33 -12
  85. package/lib/util/hashConfig.js +9 -4
  86. package/lib/util/isKeyframeRule.js +7 -2
  87. package/lib/util/isPlainObject.js +7 -2
  88. package/lib/util/{isValidArbitraryValue.js → isSyntacticallyValidPropertyValue.js} +25 -15
  89. package/lib/util/log.js +27 -13
  90. package/lib/util/nameClass.js +27 -10
  91. package/lib/util/negateValue.js +25 -8
  92. package/lib/util/normalizeConfig.js +139 -65
  93. package/lib/util/normalizeScreens.js +131 -11
  94. package/lib/util/parseAnimationValue.js +44 -40
  95. package/lib/util/parseBoxShadowValue.js +34 -23
  96. package/lib/util/parseDependency.js +39 -55
  97. package/lib/util/parseGlob.js +36 -0
  98. package/lib/util/parseObjectStyles.js +15 -10
  99. package/lib/util/pluginUtils.js +159 -69
  100. package/lib/util/prefixSelector.js +30 -12
  101. package/lib/util/pseudoElements.js +229 -0
  102. package/lib/util/removeAlphaVariables.js +31 -0
  103. package/lib/util/resolveConfig.js +97 -75
  104. package/lib/util/resolveConfigPath.js +30 -12
  105. package/lib/util/responsive.js +11 -6
  106. package/lib/util/splitAtTopLevelOnly.js +51 -0
  107. package/lib/util/tap.js +6 -1
  108. package/lib/util/toColorValue.js +7 -3
  109. package/lib/util/toPath.js +26 -3
  110. package/lib/util/transformThemeValue.js +40 -30
  111. package/lib/util/validateConfig.js +37 -0
  112. package/lib/util/validateFormalSyntax.js +26 -0
  113. package/lib/util/withAlphaVariable.js +27 -15
  114. package/loadConfig.d.ts +4 -0
  115. package/loadConfig.js +2 -0
  116. package/nesting/index.js +2 -12
  117. package/package.json +66 -57
  118. package/peers/index.js +75964 -55560
  119. package/plugin.d.ts +11 -0
  120. package/plugin.js +2 -1
  121. package/resolveConfig.d.ts +12 -0
  122. package/resolveConfig.js +2 -1
  123. package/scripts/generate-types.js +105 -0
  124. package/scripts/release-channel.js +18 -0
  125. package/scripts/release-notes.js +21 -0
  126. package/scripts/swap-engines.js +40 -0
  127. package/scripts/type-utils.js +27 -0
  128. package/src/cli/build/deps.js +56 -0
  129. package/src/cli/build/index.js +49 -0
  130. package/src/cli/build/plugin.js +444 -0
  131. package/src/cli/build/utils.js +76 -0
  132. package/src/cli/build/watching.js +229 -0
  133. package/src/cli/help/index.js +70 -0
  134. package/src/cli/index.js +216 -0
  135. package/src/cli/init/index.js +79 -0
  136. package/src/cli-peer-dependencies.js +7 -1
  137. package/src/cli.js +4 -765
  138. package/src/corePluginList.js +1 -1
  139. package/src/corePlugins.js +786 -306
  140. package/src/css/preflight.css +10 -8
  141. package/src/featureFlags.js +21 -5
  142. package/src/index.js +1 -34
  143. package/src/lib/cacheInvalidation.js +52 -0
  144. package/src/lib/collapseAdjacentRules.js +21 -2
  145. package/src/lib/collapseDuplicateDeclarations.js +66 -1
  146. package/src/lib/content.js +208 -0
  147. package/src/lib/defaultExtractor.js +217 -0
  148. package/src/lib/detectNesting.js +9 -1
  149. package/src/lib/evaluateTailwindFunctions.js +79 -8
  150. package/src/lib/expandApplyAtRules.js +515 -153
  151. package/src/lib/expandTailwindAtRules.js +115 -86
  152. package/src/lib/findAtConfigPath.js +48 -0
  153. package/src/lib/generateRules.js +545 -147
  154. package/src/lib/getModuleDependencies.js +70 -30
  155. package/src/lib/load-config.ts +31 -0
  156. package/src/lib/normalizeTailwindDirectives.js +7 -1
  157. package/src/lib/offsets.js +373 -0
  158. package/src/lib/partitionApplyAtRules.js +52 -0
  159. package/src/lib/regex.js +74 -0
  160. package/src/lib/remap-bitfield.js +82 -0
  161. package/src/lib/resolveDefaultsAtRules.js +59 -17
  162. package/src/lib/setupContextUtils.js +701 -175
  163. package/src/lib/setupTrackingContext.js +51 -62
  164. package/src/lib/sharedState.js +58 -7
  165. package/src/oxide/cli/build/deps.ts +91 -0
  166. package/src/oxide/cli/build/index.ts +47 -0
  167. package/src/oxide/cli/build/plugin.ts +442 -0
  168. package/src/oxide/cli/build/utils.ts +74 -0
  169. package/src/oxide/cli/build/watching.ts +225 -0
  170. package/src/oxide/cli/help/index.ts +69 -0
  171. package/src/oxide/cli/index.ts +204 -0
  172. package/src/oxide/cli/init/index.ts +59 -0
  173. package/src/oxide/cli.ts +1 -0
  174. package/src/oxide/postcss-plugin.ts +1 -0
  175. package/src/plugin.js +107 -0
  176. package/src/postcss-plugins/nesting/README.md +42 -0
  177. package/src/postcss-plugins/nesting/index.js +13 -0
  178. package/src/postcss-plugins/nesting/plugin.js +80 -0
  179. package/src/processTailwindFeatures.js +12 -2
  180. package/src/public/colors.js +22 -0
  181. package/src/public/default-config.js +1 -1
  182. package/src/public/default-theme.js +2 -2
  183. package/src/public/load-config.js +2 -0
  184. package/src/util/applyImportantSelector.js +27 -0
  185. package/src/util/buildMediaQuery.js +5 -3
  186. package/src/util/cloneNodes.js +19 -2
  187. package/src/util/color.js +44 -12
  188. package/src/util/colorNames.js +150 -0
  189. package/src/util/dataTypes.js +51 -16
  190. package/src/util/defaults.js +6 -0
  191. package/src/util/formatVariantSelector.js +264 -144
  192. package/src/util/getAllConfigs.js +21 -2
  193. package/src/util/{isValidArbitraryValue.js → isSyntacticallyValidPropertyValue.js} +1 -1
  194. package/src/util/log.js +11 -7
  195. package/src/util/nameClass.js +4 -0
  196. package/src/util/negateValue.js +11 -3
  197. package/src/util/normalizeConfig.js +57 -5
  198. package/src/util/normalizeScreens.js +105 -7
  199. package/src/util/parseBoxShadowValue.js +4 -3
  200. package/src/util/parseDependency.js +37 -42
  201. package/src/util/parseGlob.js +24 -0
  202. package/src/util/pluginUtils.js +123 -24
  203. package/src/util/prefixSelector.js +30 -10
  204. package/src/util/pseudoElements.js +170 -0
  205. package/src/util/removeAlphaVariables.js +24 -0
  206. package/src/util/resolveConfig.js +74 -26
  207. package/src/util/resolveConfigPath.js +12 -1
  208. package/src/util/splitAtTopLevelOnly.js +52 -0
  209. package/src/util/toPath.js +23 -1
  210. package/src/util/transformThemeValue.js +13 -3
  211. package/src/util/validateConfig.js +26 -0
  212. package/src/util/validateFormalSyntax.js +34 -0
  213. package/src/util/withAlphaVariable.js +1 -1
  214. package/stubs/.gitignore +1 -0
  215. package/stubs/.prettierrc.json +6 -0
  216. package/stubs/{defaultConfig.stub.js → config.full.js} +206 -166
  217. package/stubs/postcss.config.js +6 -0
  218. package/stubs/tailwind.config.cjs +2 -0
  219. package/stubs/tailwind.config.js +2 -0
  220. package/stubs/tailwind.config.ts +3 -0
  221. package/types/config.d.ts +368 -0
  222. package/types/generated/.gitkeep +0 -0
  223. package/types/generated/colors.d.ts +298 -0
  224. package/types/generated/corePluginList.d.ts +1 -0
  225. package/types/generated/default-theme.d.ts +371 -0
  226. package/types/index.d.ts +7 -0
  227. package/CHANGELOG.md +0 -1843
  228. package/lib/constants.js +0 -37
  229. package/lib/lib/setupWatchingContext.js +0 -288
  230. package/nesting/plugin.js +0 -41
  231. package/scripts/install-integrations.js +0 -27
  232. package/scripts/rebuildFixtures.js +0 -68
  233. package/src/constants.js +0 -17
  234. package/src/lib/setupWatchingContext.js +0 -311
  235. /package/stubs/{simpleConfig.stub.js → config.simple.js} +0 -0
  236. /package/stubs/{defaultPostCssConfig.stub.js → postcss.config.cjs} +0 -0
@@ -2,13 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = void 0;
6
- var _cloneDeep = require("../util/cloneDeep");
7
- var _defaultConfigStub = _interopRequireDefault(require("../../stubs/defaultConfig.stub"));
8
- function _interopRequireDefault(obj) {
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ const _cloneDeep = require("../util/cloneDeep");
12
+ const _configfull = /*#__PURE__*/ _interop_require_default(require("../../stubs/config.full"));
13
+ function _interop_require_default(obj) {
9
14
  return obj && obj.__esModule ? obj : {
10
15
  default: obj
11
16
  };
12
17
  }
13
- var _default = (0, _cloneDeep).cloneDeep(_defaultConfigStub.default.theme);
14
- exports.default = _default;
18
+ const _default = (0, _cloneDeep.cloneDeep)(_configfull.default.theme);
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ const _loadconfig = require("../lib/load-config");
12
+ const _default = _loadconfig.loadConfig;
@@ -2,17 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = resolveConfig;
6
- var _resolveConfig = _interopRequireDefault(require("../util/resolveConfig"));
7
- var _getAllConfigs = _interopRequireDefault(require("../util/getAllConfigs"));
8
- function _interopRequireDefault(obj) {
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return resolveConfig;
9
+ }
10
+ });
11
+ const _resolveConfig = /*#__PURE__*/ _interop_require_default(require("../util/resolveConfig"));
12
+ const _getAllConfigs = /*#__PURE__*/ _interop_require_default(require("../util/getAllConfigs"));
13
+ function _interop_require_default(obj) {
9
14
  return obj && obj.__esModule ? obj : {
10
15
  default: obj
11
16
  };
12
17
  }
13
18
  function resolveConfig(...configs) {
14
- let [, ...defaultConfigs] = (0, _getAllConfigs).default(configs[0]);
15
- return (0, _resolveConfig).default([
19
+ let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);
20
+ return (0, _resolveConfig.default)([
16
21
  ...configs,
17
22
  ...defaultConfigs
18
23
  ]);
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "applyImportantSelector", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return applyImportantSelector;
9
+ }
10
+ });
11
+ const _postcssselectorparser = /*#__PURE__*/ _interop_require_default(require("postcss-selector-parser"));
12
+ const _pseudoElements = require("./pseudoElements");
13
+ function _interop_require_default(obj) {
14
+ return obj && obj.__esModule ? obj : {
15
+ default: obj
16
+ };
17
+ }
18
+ function applyImportantSelector(selector, important) {
19
+ let sel = (0, _postcssselectorparser.default)().astSync(selector);
20
+ sel.each((sel)=>{
21
+ // Wrap with :is if it's not already wrapped
22
+ let isWrapped = sel.nodes[0].type === "pseudo" && sel.nodes[0].value === ":is" && sel.nodes.every((node)=>node.type !== "combinator");
23
+ if (!isWrapped) {
24
+ sel.nodes = [
25
+ _postcssselectorparser.default.pseudo({
26
+ value: ":is",
27
+ nodes: [
28
+ sel.clone()
29
+ ]
30
+ })
31
+ ];
32
+ }
33
+ (0, _pseudoElements.movePseudos)(sel);
34
+ });
35
+ return `${important} ${sel.toString()}`;
36
+ }
@@ -2,7 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = bigSign;
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return bigSign;
9
+ }
10
+ });
6
11
  function bigSign(bigIntValue) {
7
12
  return (bigIntValue > 0n) - (bigIntValue < 0n);
8
13
  }
@@ -2,19 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = buildMediaQuery;
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return buildMediaQuery;
9
+ }
10
+ });
6
11
  function buildMediaQuery(screens) {
7
12
  screens = Array.isArray(screens) ? screens : [
8
13
  screens
9
14
  ];
10
- return screens.map((screen1)=>screen1.values.map((screen)=>{
15
+ return screens.map((screen)=>{
16
+ let values = screen.values.map((screen)=>{
11
17
  if (screen.raw !== undefined) {
12
18
  return screen.raw;
13
19
  }
14
20
  return [
15
21
  screen.min && `(min-width: ${screen.min})`,
16
- screen.max && `(max-width: ${screen.max})`,
17
- ].filter(Boolean).join(' and ');
18
- })
19
- ).join(', ');
22
+ screen.max && `(max-width: ${screen.max})`
23
+ ].filter(Boolean).join(" and ");
24
+ });
25
+ return screen.not ? `not all and ${values}` : values;
26
+ }).join(", ");
20
27
  }
@@ -2,18 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.cloneDeep = cloneDeep;
5
+ Object.defineProperty(exports, "cloneDeep", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return cloneDeep;
9
+ }
10
+ });
6
11
  function cloneDeep(value) {
7
12
  if (Array.isArray(value)) {
8
- return value.map((child)=>cloneDeep(child)
9
- );
13
+ return value.map((child)=>cloneDeep(child));
10
14
  }
11
- if (typeof value === 'object' && value !== null) {
15
+ if (typeof value === "object" && value !== null) {
12
16
  return Object.fromEntries(Object.entries(value).map(([k, v])=>[
13
17
  k,
14
18
  cloneDeep(v)
15
- ]
16
- ));
19
+ ]));
17
20
  }
18
21
  return value;
19
22
  }
@@ -2,12 +2,32 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.default = cloneNodes;
6
- function cloneNodes(nodes, source) {
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return cloneNodes;
9
+ }
10
+ });
11
+ function cloneNodes(nodes, source = undefined, raws = undefined) {
7
12
  return nodes.map((node)=>{
13
+ var _node_raws_tailwind;
8
14
  let cloned = node.clone();
9
- if (source !== undefined) {
15
+ // We always want override the source map
16
+ // except when explicitly told not to
17
+ let shouldOverwriteSource = ((_node_raws_tailwind = node.raws.tailwind) === null || _node_raws_tailwind === void 0 ? void 0 : _node_raws_tailwind.preserveSource) !== true || !cloned.source;
18
+ if (source !== undefined && shouldOverwriteSource) {
10
19
  cloned.source = source;
20
+ if ("walk" in cloned) {
21
+ cloned.walk((child)=>{
22
+ child.source = source;
23
+ });
24
+ }
25
+ }
26
+ if (raws !== undefined) {
27
+ cloned.raws.tailwind = {
28
+ ...cloned.raws.tailwind,
29
+ ...raws
30
+ };
11
31
  }
12
32
  return cloned;
13
33
  });
package/lib/util/color.js CHANGED
@@ -2,83 +2,115 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- exports.parseColor = parseColor;
6
- exports.formatColor = formatColor;
7
- var _colorName = _interopRequireDefault(require("color-name"));
8
- function _interopRequireDefault(obj) {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ parseColor: function() {
13
+ return parseColor;
14
+ },
15
+ formatColor: function() {
16
+ return formatColor;
17
+ }
18
+ });
19
+ const _colorNames = /*#__PURE__*/ _interop_require_default(require("./colorNames"));
20
+ function _interop_require_default(obj) {
9
21
  return obj && obj.__esModule ? obj : {
10
22
  default: obj
11
23
  };
12
24
  }
13
25
  let HEX = /^#([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})?$/i;
14
26
  let SHORT_HEX = /^#([a-f\d])([a-f\d])([a-f\d])([a-f\d])?$/i;
15
- let VALUE = `(?:\\d+|\\d*\\.\\d+)%?`;
16
- let SEP = `(?:\\s*,\\s*|\\s+)`;
17
- let ALPHA_SEP = `\\s*[,/]\\s*`;
18
- let RGB_HSL = new RegExp(`^(rgb|hsl)a?\\(\\s*(${VALUE})${SEP}(${VALUE})${SEP}(${VALUE})(?:${ALPHA_SEP}(${VALUE}))?\\s*\\)$`);
19
- function parseColor(value) {
20
- if (typeof value !== 'string') {
27
+ let VALUE = /(?:\d+|\d*\.\d+)%?/;
28
+ let SEP = /(?:\s*,\s*|\s+)/;
29
+ let ALPHA_SEP = /\s*[,/]\s*/;
30
+ let CUSTOM_PROPERTY = /var\(--(?:[^ )]*?)\)/;
31
+ let RGB = new RegExp(`^(rgba?)\\(\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`);
32
+ let HSL = new RegExp(`^(hsla?)\\(\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\s*\\)$`);
33
+ function parseColor(value, { loose =false } = {}) {
34
+ var _match_, _match__toString;
35
+ if (typeof value !== "string") {
21
36
  return null;
22
37
  }
23
38
  value = value.trim();
24
- if (value === 'transparent') {
39
+ if (value === "transparent") {
25
40
  return {
26
- mode: 'rgb',
41
+ mode: "rgb",
27
42
  color: [
28
- '0',
29
- '0',
30
- '0'
43
+ "0",
44
+ "0",
45
+ "0"
31
46
  ],
32
- alpha: '0'
47
+ alpha: "0"
33
48
  };
34
49
  }
35
- if (value in _colorName.default) {
50
+ if (value in _colorNames.default) {
36
51
  return {
37
- mode: 'rgb',
38
- color: _colorName.default[value].map((v)=>v.toString()
39
- )
52
+ mode: "rgb",
53
+ color: _colorNames.default[value].map((v)=>v.toString())
40
54
  };
41
55
  }
42
56
  let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[
43
- '#',
57
+ "#",
44
58
  r,
45
59
  r,
46
60
  g,
47
61
  g,
48
62
  b,
49
63
  b,
50
- a ? a + a : ''
51
- ].join('')
52
- ).match(HEX);
64
+ a ? a + a : ""
65
+ ].join("")).match(HEX);
53
66
  if (hex !== null) {
54
67
  return {
55
- mode: 'rgb',
68
+ mode: "rgb",
56
69
  color: [
57
70
  parseInt(hex[1], 16),
58
71
  parseInt(hex[2], 16),
59
72
  parseInt(hex[3], 16)
60
- ].map((v)=>v.toString()
61
- ),
73
+ ].map((v)=>v.toString()),
62
74
  alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined
63
75
  };
64
76
  }
65
- let match = value.match(RGB_HSL);
66
- if (match !== null) {
67
- var ref, ref1;
77
+ var _value_match;
78
+ let match = (_value_match = value.match(RGB)) !== null && _value_match !== void 0 ? _value_match : value.match(HSL);
79
+ if (match === null) {
80
+ return null;
81
+ }
82
+ let color = [
83
+ match[2],
84
+ match[3],
85
+ match[4]
86
+ ].filter(Boolean).map((v)=>v.toString());
87
+ // rgba(var(--my-color), 0.1)
88
+ // hsla(var(--my-color), 0.1)
89
+ if (color.length === 2 && color[0].startsWith("var(")) {
68
90
  return {
69
91
  mode: match[1],
70
92
  color: [
71
- match[2],
72
- match[3],
73
- match[4]
74
- ].map((v)=>v.toString()
75
- ),
76
- alpha: (ref = match[5]) === null || ref === void 0 ? void 0 : (ref1 = ref.toString) === null || ref1 === void 0 ? void 0 : ref1.call(ref)
93
+ color[0]
94
+ ],
95
+ alpha: color[1]
77
96
  };
78
97
  }
79
- return null;
98
+ if (!loose && color.length !== 3) {
99
+ return null;
100
+ }
101
+ if (color.length < 3 && !color.some((part)=>/^var\(.*?\)$/.test(part))) {
102
+ return null;
103
+ }
104
+ return {
105
+ mode: match[1],
106
+ color,
107
+ alpha: (_match_ = match[5]) === null || _match_ === void 0 ? void 0 : (_match__toString = _match_.toString) === null || _match__toString === void 0 ? void 0 : _match__toString.call(_match_)
108
+ };
80
109
  }
81
110
  function formatColor({ mode , color , alpha }) {
82
111
  let hasAlpha = alpha !== undefined;
83
- return `${mode}(${color.join(' ')}${hasAlpha ? ` / ${alpha}` : ''})`;
112
+ if (mode === "rgba" || mode === "hsla") {
113
+ return `${mode}(${color.join(", ")}${hasAlpha ? `, ${alpha}` : ""})`;
114
+ }
115
+ return `${mode}(${color.join(" ")}${hasAlpha ? ` / ${alpha}` : ""})`;
84
116
  }