tailwindcss 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/colors.js CHANGED
@@ -1 +1,2 @@
1
- module.exports = require('./lib/public/colors').default
1
+ let colors = require('./lib/public/colors')
2
+ module.exports = (colors.__esModule ? colors : { default: colors }).default
package/defaultConfig.js CHANGED
@@ -1 +1,2 @@
1
- module.exports = require('./lib/public/default-config').default
1
+ let defaultConfig = require('./lib/public/default-config')
2
+ module.exports = (defaultConfig.__esModule ? defaultConfig : { default: defaultConfig }).default
package/defaultTheme.js CHANGED
@@ -1 +1,2 @@
1
- module.exports = require('./lib/public/default-theme').default
1
+ let defaultTheme = require('./lib/public/default-theme')
2
+ module.exports = (defaultTheme.__esModule ? defaultTheme : { default: defaultTheme }).default
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  exports.default = expandApplyAtRules;
6
6
  var _postcss = _interopRequireDefault(require("postcss"));
7
+ var _postcssSelectorParser = _interopRequireDefault(require("postcss-selector-parser"));
7
8
  var _generateRules = require("./generateRules");
8
9
  var _bigSign = _interopRequireDefault(require("../util/bigSign"));
9
10
  var _escapeClassName = _interopRequireDefault(require("../util/escapeClassName"));
@@ -12,6 +13,18 @@ function _interopRequireDefault(obj) {
12
13
  default: obj
13
14
  };
14
15
  }
16
+ function containsBase(selector, classCandidateBase, separator) {
17
+ return (0, _postcssSelectorParser).default((selectors)=>{
18
+ let contains = false;
19
+ selectors.walkClasses((classSelector)=>{
20
+ if (classSelector.value.split(separator).pop() === classCandidateBase) {
21
+ contains = true;
22
+ return false;
23
+ }
24
+ });
25
+ return contains;
26
+ }).transformSync(selector);
27
+ }
15
28
  function prefix(context, selector) {
16
29
  let prefix1 = context.tailwindConfig.prefix;
17
30
  return typeof prefix1 === 'function' ? prefix1(selector) : prefix1 + selector;
@@ -127,8 +140,8 @@ function processApply(root, context) {
127
140
  */ // TODO: Should we use postcss-selector-parser for this instead?
128
141
  function replaceSelector(selector, utilitySelectors, candidate) {
129
142
  let needle = `.${(0, _escapeClassName).default(candidate)}`;
130
- let utilitySelectorsList = utilitySelectors.split(/\s*,\s*/g);
131
- return selector.split(/\s*,\s*/g).map((s)=>{
143
+ let utilitySelectorsList = utilitySelectors.split(/\s*\,(?![^(]*\))\s*/g);
144
+ return selector.split(/\s*\,(?![^(]*\))\s*/g).map((s)=>{
132
145
  let replaced = [];
133
146
  for (let utilitySelector of utilitySelectorsList){
134
147
  let replacedSelector = utilitySelector.replace(needle, s);
@@ -173,7 +186,11 @@ function processApply(root, context) {
173
186
  for (const [parent, candidates] of perParentApplies){
174
187
  let siblings = [];
175
188
  for (let [applyCandidate, important, rules] of candidates){
189
+ let base = applyCandidate.split(context.tailwindConfig.separator).pop();
176
190
  for (let [meta, node] of rules){
191
+ if (containsBase(parent.selector, base, context.tailwindConfig.separator) && containsBase(node.selector, base, context.tailwindConfig.separator)) {
192
+ throw node.error(`Circular dependency detected when using: \`@apply ${applyCandidate}\``);
193
+ }
177
194
  let root = _postcss.default.root({
178
195
  nodes: [
179
196
  node.clone()
@@ -79,7 +79,7 @@ function extractElementSelector(selector) {
79
79
  function resolveDefaultsAtRules({ tailwindConfig }) {
80
80
  return (root)=>{
81
81
  let variableNodeMap = new Map();
82
- let universals = new Set();
82
+ /** @type {Set<import('postcss').AtRule>} */ let universals = new Set();
83
83
  root.walkAtRules('defaults', (rule)=>{
84
84
  if (rule.nodes && rule.nodes.length > 0) {
85
85
  universals.add(rule);
@@ -93,32 +93,46 @@ function resolveDefaultsAtRules({ tailwindConfig }) {
93
93
  rule.remove();
94
94
  });
95
95
  for (let universal of universals){
96
- let selectors = new Set();
96
+ /** @type {Map<string, Set<string>>} */ let selectorGroups = new Map();
97
97
  var ref;
98
98
  let rules = (ref = variableNodeMap.get(universal.params)) !== null && ref !== void 0 ? ref : [];
99
99
  for (let rule of rules){
100
100
  for (let selector of extractElementSelector(rule.selector)){
101
+ // If selector contains a vendor prefix after a pseudo element or class,
102
+ // we consider them separately because merging the declarations into
103
+ // a single rule will cause browsers that do not understand the
104
+ // vendor prefix to throw out the whole rule
105
+ let selectorGroupName = selector.includes(':-') || selector.includes('::-') ? selector : '__DEFAULT__';
106
+ var ref1;
107
+ let selectors = (ref1 = selectorGroups.get(selectorGroupName)) !== null && ref1 !== void 0 ? ref1 : new Set();
108
+ selectorGroups.set(selectorGroupName, selectors);
101
109
  selectors.add(selector);
102
110
  }
103
111
  }
104
- if (selectors.size === 0) {
112
+ if (selectorGroups.size === 0) {
105
113
  universal.remove();
106
114
  continue;
107
115
  }
108
- let universalRule = _postcss.default.rule();
109
116
  if ((0, _featureFlags).flagEnabled(tailwindConfig, 'optimizeUniversalDefaults')) {
110
- universalRule.selectors = [
111
- ...selectors
112
- ];
117
+ for (let [, selectors] of selectorGroups){
118
+ let universalRule = _postcss.default.rule();
119
+ universalRule.selectors = [
120
+ ...selectors
121
+ ];
122
+ universalRule.append(universal.nodes.map((node)=>node.clone()
123
+ ));
124
+ universal.before(universalRule);
125
+ }
113
126
  } else {
127
+ let universalRule = _postcss.default.rule();
114
128
  universalRule.selectors = [
115
129
  '*',
116
130
  '::before',
117
131
  '::after'
118
132
  ];
133
+ universalRule.append(universal.nodes);
134
+ universal.before(universalRule);
119
135
  }
120
- universalRule.append(universal.nodes);
121
- universal.before(universalRule);
122
136
  universal.remove();
123
137
  }
124
138
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tailwindcss",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "A utility-first CSS framework for rapidly building custom user interfaces.",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
@@ -45,12 +45,12 @@
45
45
  "devDependencies": {
46
46
  "@swc/cli": "^0.1.52",
47
47
  "@swc/core": "^1.2.118",
48
- "@swc/jest": "^0.1.5",
48
+ "@swc/jest": "^0.2.11",
49
49
  "@swc/register": "^0.1.7",
50
50
  "autoprefixer": "^10.4.0",
51
51
  "cross-env": "^7.0.3",
52
52
  "cssnano": "^5.0.12",
53
- "esbuild": "^0.13.12",
53
+ "esbuild": "^0.14.2",
54
54
  "eslint": "^8.2.0",
55
55
  "eslint-config-prettier": "^8.3.0",
56
56
  "eslint-plugin-prettier": "^4.0.0",