tailwindcss 0.0.0-oxide-insiders.d6121f0 → 0.0.0-oxide-insiders.9bbdd9b

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.
@@ -235,18 +235,21 @@ function applyVariant(variant, matches, context) {
235
235
  }
236
236
  // Register arbitrary variants
237
237
  if (isArbitraryValue(variant) && !context.variantMap.has(variant)) {
238
+ let sort = context.offsets.recordVariant(variant);
238
239
  let selector = (0, _dataTypes.normalize)(variant.slice(1, -1));
239
- if (!(0, _setupContextUtils.isValidVariantFormatString)(selector)) {
240
+ let selectors = (0, _splitAtTopLevelOnlyJs.splitAtTopLevelOnly)(selector, ",");
241
+ // We do not support multiple selectors for arbitrary variants
242
+ if (selectors.length > 1) {
240
243
  return [];
241
244
  }
242
- let fn = (0, _setupContextUtils.parseVariant)(selector);
243
- let sort = context.offsets.recordVariant(variant);
244
- context.variantMap.set(variant, [
245
- [
246
- sort,
247
- fn
248
- ]
249
- ]);
245
+ if (!selectors.every(_setupContextUtils.isValidVariantFormatString)) {
246
+ return [];
247
+ }
248
+ let records = selectors.map((sel, idx)=>[
249
+ context.offsets.applyParallelOffset(sort, idx),
250
+ (0, _setupContextUtils.parseVariant)(sel.trim())
251
+ ]);
252
+ context.variantMap.set(variant, records);
250
253
  }
251
254
  if (context.variantMap.has(variant)) {
252
255
  let isArbitraryVariant = isArbitraryValue(variant);
@@ -24,14 +24,20 @@ function splitAtTopLevelOnly(input, separator) {
24
24
  let stack = [];
25
25
  let parts = [];
26
26
  let lastPos = 0;
27
+ let isEscaped = false;
27
28
  for(let idx = 0; idx < input.length; idx++){
28
29
  let char = input[idx];
29
- if (stack.length === 0 && char === separator[0]) {
30
+ if (stack.length === 0 && char === separator[0] && !isEscaped) {
30
31
  if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {
31
32
  parts.push(input.slice(lastPos, idx));
32
33
  lastPos = idx + separator.length;
33
34
  }
34
35
  }
36
+ if (isEscaped) {
37
+ isEscaped = false;
38
+ } else if (char === "\\") {
39
+ isEscaped = true;
40
+ }
35
41
  if (char === "(" || char === "[" || char === "{") {
36
42
  stack.push(char);
37
43
  } else if (char === ")" && stack[stack.length - 1] === "(" || char === "]" && stack[stack.length - 1] === "[" || char === "}" && stack[stack.length - 1] === "{") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tailwindcss",
3
- "version": "0.0.0-oxide-insiders.d6121f0",
3
+ "version": "0.0.0-oxide-insiders.9bbdd9b",
4
4
  "description": "A utility-first CSS framework for rapidly building custom user interfaces.",
5
5
  "license": "MIT",
6
6
  "main": "lib/index.js",
@@ -70,7 +70,7 @@
70
70
  "postcss": "^8.0.9"
71
71
  },
72
72
  "dependencies": {
73
- "@tailwindcss/oxide": "0.0.0-oxide-insiders.d6121f0",
73
+ "@tailwindcss/oxide": "0.0.0-oxide-insiders.9bbdd9b",
74
74
  "arg": "^5.0.2",
75
75
  "browserslist": "^4.21.5",
76
76
  "chokidar": "^3.5.3",
@@ -205,17 +205,26 @@ function applyVariant(variant, matches, context) {
205
205
 
206
206
  // Register arbitrary variants
207
207
  if (isArbitraryValue(variant) && !context.variantMap.has(variant)) {
208
+ let sort = context.offsets.recordVariant(variant)
209
+
208
210
  let selector = normalize(variant.slice(1, -1))
211
+ let selectors = splitAtTopLevelOnly(selector, ',')
209
212
 
210
- if (!isValidVariantFormatString(selector)) {
213
+ // We do not support multiple selectors for arbitrary variants
214
+ if (selectors.length > 1) {
211
215
  return []
212
216
  }
213
217
 
214
- let fn = parseVariant(selector)
218
+ if (!selectors.every(isValidVariantFormatString)) {
219
+ return []
220
+ }
215
221
 
216
- let sort = context.offsets.recordVariant(variant)
222
+ let records = selectors.map((sel, idx) => [
223
+ context.offsets.applyParallelOffset(sort, idx),
224
+ parseVariant(sel.trim()),
225
+ ])
217
226
 
218
- context.variantMap.set(variant, [[sort, fn]])
227
+ context.variantMap.set(variant, records)
219
228
  }
220
229
 
221
230
  if (context.variantMap.has(variant)) {
@@ -17,17 +17,24 @@ export function splitAtTopLevelOnly(input, separator) {
17
17
  let stack = []
18
18
  let parts = []
19
19
  let lastPos = 0
20
+ let isEscaped = false
20
21
 
21
22
  for (let idx = 0; idx < input.length; idx++) {
22
23
  let char = input[idx]
23
24
 
24
- if (stack.length === 0 && char === separator[0]) {
25
+ if (stack.length === 0 && char === separator[0] && !isEscaped) {
25
26
  if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {
26
27
  parts.push(input.slice(lastPos, idx))
27
28
  lastPos = idx + separator.length
28
29
  }
29
30
  }
30
31
 
32
+ if (isEscaped) {
33
+ isEscaped = false
34
+ } else if (char === '\\') {
35
+ isEscaped = true
36
+ }
37
+
31
38
  if (char === '(' || char === '[' || char === '{') {
32
39
  stack.push(char)
33
40
  } else if (