@master/css 2.0.0-rc.69 → 2.0.0-rc.70

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 (200) hide show
  1. package/README.md +6 -8
  2. package/dist/index.d.ts +2 -40
  3. package/dist/index.mjs +1 -42
  4. package/package.json +1 -1
  5. package/src/base.css +1 -0
  6. package/src/index.css +1 -0
  7. package/src/theme.css +1 -0
  8. package/src/utilities.css +1 -0
  9. package/src/variants.css +1 -0
  10. package/dist/_virtual/_commonjsHelpers.cjs +0 -10
  11. package/dist/_virtual/_commonjsHelpers.mjs +0 -7
  12. package/dist/_virtual/css-escape.cjs +0 -5
  13. package/dist/_virtual/css-escape.mjs +0 -3
  14. package/dist/animation-rule.cjs +0 -24
  15. package/dist/animation-rule.d.ts +0 -11
  16. package/dist/animation-rule.mjs +0 -22
  17. package/dist/bin/index.cjs +0 -11
  18. package/dist/bin/index.d.ts +0 -1
  19. package/dist/bin/index.mjs +0 -9
  20. package/dist/common.cjs +0 -208
  21. package/dist/common.d.ts +0 -40
  22. package/dist/common.mjs +0 -180
  23. package/dist/config/animations.cjs +0 -113
  24. package/dist/config/animations.d.ts +0 -110
  25. package/dist/config/animations.mjs +0 -111
  26. package/dist/config/at.cjs +0 -19
  27. package/dist/config/at.d.ts +0 -16
  28. package/dist/config/at.mjs +0 -17
  29. package/dist/config/functions.cjs +0 -141
  30. package/dist/config/functions.d.ts +0 -138
  31. package/dist/config/functions.mjs +0 -139
  32. package/dist/config/index.cjs +0 -40
  33. package/dist/config/index.d.ts +0 -12
  34. package/dist/config/index.mjs +0 -29
  35. package/dist/config/modes.cjs +0 -312
  36. package/dist/config/modes.d.ts +0 -309
  37. package/dist/config/modes.mjs +0 -310
  38. package/dist/config/rules.cjs +0 -2277
  39. package/dist/config/rules.d.ts +0 -1485
  40. package/dist/config/rules.mjs +0 -2275
  41. package/dist/config/screens.cjs +0 -17
  42. package/dist/config/screens.d.ts +0 -14
  43. package/dist/config/screens.mjs +0 -15
  44. package/dist/config/selectors.cjs +0 -25
  45. package/dist/config/selectors.d.ts +0 -22
  46. package/dist/config/selectors.mjs +0 -23
  47. package/dist/config/utilities.cjs +0 -446
  48. package/dist/config/utilities.d.ts +0 -443
  49. package/dist/config/utilities.mjs +0 -444
  50. package/dist/config/variables.cjs +0 -99
  51. package/dist/config/variables.d.ts +0 -423
  52. package/dist/config/variables.mjs +0 -97
  53. package/dist/core.cjs +0 -674
  54. package/dist/core.d.ts +0 -128
  55. package/dist/core.mjs +0 -672
  56. package/dist/create.cjs +0 -10
  57. package/dist/create.d.ts +0 -3
  58. package/dist/create.mjs +0 -8
  59. package/dist/declarers/core.group.cjs +0 -99
  60. package/dist/declarers/core.group.d.ts +0 -2
  61. package/dist/declarers/core.group.mjs +0 -97
  62. package/dist/declarers/core.variable.cjs +0 -9
  63. package/dist/declarers/core.variable.d.ts +0 -4
  64. package/dist/declarers/core.variable.mjs +0 -7
  65. package/dist/declarers/index.cjs +0 -13
  66. package/dist/declarers/index.d.ts +0 -10
  67. package/dist/declarers/index.mjs +0 -11
  68. package/dist/declarers/pair.cjs +0 -12
  69. package/dist/declarers/pair.d.ts +0 -4
  70. package/dist/declarers/pair.mjs +0 -10
  71. package/dist/factories/with-syntax-layer.cjs +0 -83
  72. package/dist/factories/with-syntax-layer.d.ts +0 -26
  73. package/dist/factories/with-syntax-layer.mjs +0 -81
  74. package/dist/function-transformers/core.calc.cjs +0 -225
  75. package/dist/function-transformers/core.calc.d.ts +0 -2
  76. package/dist/function-transformers/core.calc.mjs +0 -223
  77. package/dist/function-transformers/core.variable.cjs +0 -23
  78. package/dist/function-transformers/core.variable.d.ts +0 -7
  79. package/dist/function-transformers/core.variable.mjs +0 -21
  80. package/dist/function-transformers/index.cjs +0 -11
  81. package/dist/function-transformers/index.d.ts +0 -8
  82. package/dist/function-transformers/index.mjs +0 -9
  83. package/dist/index.cjs +0 -118
  84. package/dist/layer.cjs +0 -52
  85. package/dist/layer.d.ts +0 -16
  86. package/dist/layer.mjs +0 -50
  87. package/dist/non-layer.cjs +0 -55
  88. package/dist/non-layer.d.ts +0 -12
  89. package/dist/non-layer.mjs +0 -53
  90. package/dist/polyfills/css-escape.cjs +0 -9
  91. package/dist/polyfills/css-escape.d.ts +0 -0
  92. package/dist/polyfills/css-escape.mjs +0 -7
  93. package/dist/polyfills/css-escape2.cjs +0 -76
  94. package/dist/polyfills/css-escape2.mjs +0 -74
  95. package/dist/register-global.cjs +0 -7
  96. package/dist/register-global.d.ts +0 -5
  97. package/dist/register-global.mjs +0 -5
  98. package/dist/rule.cjs +0 -16
  99. package/dist/rule.d.ts +0 -7
  100. package/dist/rule.mjs +0 -14
  101. package/dist/shared/utils/css-escape.cjs +0 -56
  102. package/dist/shared/utils/css-escape.mjs +0 -54
  103. package/dist/shared/utils/find-native-css-rule-index.cjs +0 -12
  104. package/dist/shared/utils/find-native-css-rule-index.mjs +0 -10
  105. package/dist/syntax-layer.cjs +0 -8
  106. package/dist/syntax-layer.d.ts +0 -18
  107. package/dist/syntax-layer.mjs +0 -6
  108. package/dist/syntax-rule-type.cjs +0 -27
  109. package/dist/syntax-rule-type.d.ts +0 -28
  110. package/dist/syntax-rule-type.mjs +0 -25
  111. package/dist/syntax-rule.cjs +0 -506
  112. package/dist/syntax-rule.d.ts +0 -44
  113. package/dist/syntax-rule.mjs +0 -504
  114. package/dist/transformers/auto-fill-solid.cjs +0 -31
  115. package/dist/transformers/auto-fill-solid.d.ts +0 -2
  116. package/dist/transformers/auto-fill-solid.mjs +0 -29
  117. package/dist/transformers/index.cjs +0 -9
  118. package/dist/transformers/index.d.ts +0 -6
  119. package/dist/transformers/index.mjs +0 -7
  120. package/dist/types/common.cjs +0 -2
  121. package/dist/types/common.d.ts +0 -1
  122. package/dist/types/common.mjs +0 -1
  123. package/dist/types/config.cjs +0 -2
  124. package/dist/types/config.d.ts +0 -79
  125. package/dist/types/config.mjs +0 -1
  126. package/dist/types/syntax.cjs +0 -2
  127. package/dist/types/syntax.d.ts +0 -89
  128. package/dist/types/syntax.mjs +0 -1
  129. package/dist/utils/compare-rule-priority.cjs +0 -143
  130. package/dist/utils/compare-rule-priority.d.ts +0 -7
  131. package/dist/utils/compare-rule-priority.mjs +0 -138
  132. package/dist/utils/equal-at-rules.cjs +0 -22
  133. package/dist/utils/equal-at-rules.d.ts +0 -2
  134. package/dist/utils/equal-at-rules.mjs +0 -20
  135. package/dist/utils/equal-declarations.cjs +0 -10
  136. package/dist/utils/equal-declarations.d.ts +0 -2
  137. package/dist/utils/equal-declarations.mjs +0 -8
  138. package/dist/utils/equal-selectors.cjs +0 -69
  139. package/dist/utils/equal-selectors.d.ts +0 -2
  140. package/dist/utils/equal-selectors.mjs +0 -67
  141. package/dist/utils/equal-variants.cjs +0 -10
  142. package/dist/utils/equal-variants.d.ts +0 -2
  143. package/dist/utils/equal-variants.mjs +0 -8
  144. package/dist/utils/extend-config.cjs +0 -97
  145. package/dist/utils/extend-config.d.ts +0 -11
  146. package/dist/utils/extend-config.mjs +0 -95
  147. package/dist/utils/flatten-meta-object.cjs +0 -38
  148. package/dist/utils/flatten-meta-object.d.ts +0 -13
  149. package/dist/utils/flatten-meta-object.mjs +0 -36
  150. package/dist/utils/flatten-object.cjs +0 -19
  151. package/dist/utils/flatten-object.d.ts +0 -1
  152. package/dist/utils/flatten-object.mjs +0 -17
  153. package/dist/utils/generate-at.cjs +0 -30
  154. package/dist/utils/generate-at.d.ts +0 -2
  155. package/dist/utils/generate-at.mjs +0 -28
  156. package/dist/utils/generate-css.cjs +0 -13
  157. package/dist/utils/generate-css.d.ts +0 -1
  158. package/dist/utils/generate-css.mjs +0 -11
  159. package/dist/utils/generate-selector.cjs +0 -50
  160. package/dist/utils/generate-selector.d.ts +0 -2
  161. package/dist/utils/generate-selector.mjs +0 -48
  162. package/dist/utils/get-single-at-number-rule-node.cjs +0 -9
  163. package/dist/utils/get-single-at-number-rule-node.d.ts +0 -2
  164. package/dist/utils/get-single-at-number-rule-node.mjs +0 -7
  165. package/dist/utils/hex-to-rgb.cjs +0 -30
  166. package/dist/utils/hex-to-rgb.d.ts +0 -1
  167. package/dist/utils/hex-to-rgb.mjs +0 -28
  168. package/dist/utils/is-core-rule.cjs +0 -9
  169. package/dist/utils/is-core-rule.d.ts +0 -1
  170. package/dist/utils/is-core-rule.mjs +0 -7
  171. package/dist/utils/minify-extended-config.cjs +0 -64
  172. package/dist/utils/minify-extended-config.d.ts +0 -9
  173. package/dist/utils/minify-extended-config.mjs +0 -62
  174. package/dist/utils/nest-meta-object.cjs +0 -25
  175. package/dist/utils/nest-meta-object.d.ts +0 -7
  176. package/dist/utils/nest-meta-object.mjs +0 -23
  177. package/dist/utils/parse-at.cjs +0 -156
  178. package/dist/utils/parse-at.d.ts +0 -39
  179. package/dist/utils/parse-at.mjs +0 -154
  180. package/dist/utils/parse-pair.cjs +0 -48
  181. package/dist/utils/parse-pair.d.ts +0 -8
  182. package/dist/utils/parse-pair.mjs +0 -46
  183. package/dist/utils/parse-selector.cjs +0 -114
  184. package/dist/utils/parse-selector.d.ts +0 -19
  185. package/dist/utils/parse-selector.mjs +0 -112
  186. package/dist/utils/parse-value.cjs +0 -39
  187. package/dist/utils/parse-value.d.ts +0 -2
  188. package/dist/utils/parse-value.mjs +0 -37
  189. package/dist/utils/replace-char-outside-quotes.cjs +0 -21
  190. package/dist/utils/replace-char-outside-quotes.d.ts +0 -1
  191. package/dist/utils/replace-char-outside-quotes.mjs +0 -19
  192. package/dist/utils/sort-readable-classes.cjs +0 -86
  193. package/dist/utils/sort-readable-classes.d.ts +0 -7
  194. package/dist/utils/sort-readable-classes.mjs +0 -84
  195. package/dist/utils/split-char-outside-quotes.cjs +0 -29
  196. package/dist/utils/split-char-outside-quotes.d.ts +0 -1
  197. package/dist/utils/split-char-outside-quotes.mjs +0 -27
  198. package/dist/variable-rule.cjs +0 -92
  199. package/dist/variable-rule.d.ts +0 -33
  200. package/dist/variable-rule.mjs +0 -87
@@ -1,114 +0,0 @@
1
- 'use strict';
2
-
3
- var common = require('../common.cjs');
4
- var parsePair = require('./parse-pair.cjs');
5
-
6
- const SELECTOR_REGEX = new RegExp(`(?:[a-zA-Z0-9-]+)|([${common.SELECTOR_COMBINATORS.join('')}#.:,*])|(a-zA-Z0-9-)`, 'g');
7
- function parseSelector(token, css, isRaw = true) {
8
- const resolve = (eachToken)=>{
9
- const nodes = [];
10
- let currentPrefix = '';
11
- let tokenIndex = 0;
12
- for (const match of eachToken.matchAll(SELECTOR_REGEX)){
13
- const raw = match[0];
14
- tokenIndex += raw.length;
15
- if (raw === ':' || raw === '.' || raw === '#') {
16
- currentPrefix += raw;
17
- continue;
18
- }
19
- let type;
20
- let value = raw;
21
- const definedNodes = css.selectors.get(currentPrefix + raw);
22
- if (definedNodes) {
23
- const firstNode = definedNodes[definedNodes.length - 1];
24
- nodes.push(definedNodes.length === 1 && firstNode.type ? {
25
- ...firstNode,
26
- raw: currentPrefix + raw
27
- } : {
28
- children: definedNodes,
29
- raw: currentPrefix + raw
30
- });
31
- currentPrefix = '';
32
- continue;
33
- }
34
- if (common.SELECTOR_COMBINATORS.includes(raw)) {
35
- type = 'combinator';
36
- if (raw === '_') {
37
- const nextRawValue = eachToken[tokenIndex];
38
- const prevRawValue = eachToken[tokenIndex - raw.length - 1];
39
- if (prevRawValue !== '_' && nextRawValue !== '_') {
40
- value = ' '; // support BEM __
41
- }
42
- }
43
- } else if (raw === ',') {
44
- type = 'separator';
45
- } else if (raw === '*') {
46
- type = 'universal';
47
- } else if (currentPrefix === ':') {
48
- type = 'pseudo-class';
49
- } else if (currentPrefix === '::') {
50
- type = 'pseudo-element';
51
- } else if (currentPrefix === '.') {
52
- type = 'class';
53
- } else if (currentPrefix === '#') {
54
- type = 'id';
55
- }
56
- nodes.push({
57
- value,
58
- ...isRaw && {
59
- raw: currentPrefix + raw
60
- },
61
- ...type && {
62
- type
63
- }
64
- });
65
- currentPrefix = '';
66
- }
67
- return nodes;
68
- };
69
- const pair = (eachToken, nodes = [])=>{
70
- const paired = parsePair(eachToken);
71
- if (paired) {
72
- let { pre, body, post } = paired;
73
- let name;
74
- if (body) {
75
- const lastColonIndex = pre.lastIndexOf(':');
76
- if (lastColonIndex !== -1) {
77
- name = pre.slice(lastColonIndex);
78
- pre = pre.slice(0, lastColonIndex);
79
- }
80
- }
81
- if (pre) nodes.push(...pair(pre));
82
- if (body) {
83
- const children = pair(body);
84
- if (name) {
85
- const node = resolve(name)[0];
86
- if (children.length) node.children = children;
87
- nodes.push(node);
88
- } else {
89
- nodes.push(...children);
90
- }
91
- }
92
- if (post) nodes.push(...pair(post));
93
- return nodes;
94
- }
95
- const attrPaired = parsePair(eachToken, '[', ']');
96
- if (attrPaired) {
97
- const { pre, body, post } = attrPaired;
98
- if (pre) nodes.push(...pair(pre));
99
- nodes.push({
100
- value: body,
101
- type: 'attribute',
102
- ...isRaw && {
103
- raw: `[${body}]`
104
- }
105
- });
106
- if (post) nodes.push(...pair(post));
107
- return nodes;
108
- }
109
- return resolve(eachToken);
110
- };
111
- return pair(token);
112
- }
113
-
114
- module.exports = parseSelector;
@@ -1,19 +0,0 @@
1
- import type MasterCSS from '../core';
2
- export declare type SelectorLiteralNode = {
3
- type?: 'attribute' | 'pseudo-class' | 'pseudo-element' | 'class' | 'universal' | 'id';
4
- raw?: string;
5
- value?: string;
6
- children?: SelectorNode[];
7
- };
8
- export declare type SelectorSeparatorNode = {
9
- type: 'separator';
10
- raw?: string;
11
- value: string;
12
- };
13
- export declare type SelectorCombinatorNode = {
14
- type: 'combinator';
15
- raw?: string;
16
- value: string;
17
- };
18
- export declare type SelectorNode = SelectorLiteralNode | SelectorCombinatorNode | SelectorSeparatorNode;
19
- export default function parseSelector(token: string, css: MasterCSS, isRaw?: boolean): SelectorNode[];
@@ -1,112 +0,0 @@
1
- import { SELECTOR_COMBINATORS } from '../common.mjs';
2
- import parsePair from './parse-pair.mjs';
3
-
4
- const SELECTOR_REGEX = new RegExp(`(?:[a-zA-Z0-9-]+)|([${SELECTOR_COMBINATORS.join('')}#.:,*])|(a-zA-Z0-9-)`, 'g');
5
- function parseSelector(token, css, isRaw = true) {
6
- const resolve = (eachToken)=>{
7
- const nodes = [];
8
- let currentPrefix = '';
9
- let tokenIndex = 0;
10
- for (const match of eachToken.matchAll(SELECTOR_REGEX)){
11
- const raw = match[0];
12
- tokenIndex += raw.length;
13
- if (raw === ':' || raw === '.' || raw === '#') {
14
- currentPrefix += raw;
15
- continue;
16
- }
17
- let type;
18
- let value = raw;
19
- const definedNodes = css.selectors.get(currentPrefix + raw);
20
- if (definedNodes) {
21
- const firstNode = definedNodes[definedNodes.length - 1];
22
- nodes.push(definedNodes.length === 1 && firstNode.type ? {
23
- ...firstNode,
24
- raw: currentPrefix + raw
25
- } : {
26
- children: definedNodes,
27
- raw: currentPrefix + raw
28
- });
29
- currentPrefix = '';
30
- continue;
31
- }
32
- if (SELECTOR_COMBINATORS.includes(raw)) {
33
- type = 'combinator';
34
- if (raw === '_') {
35
- const nextRawValue = eachToken[tokenIndex];
36
- const prevRawValue = eachToken[tokenIndex - raw.length - 1];
37
- if (prevRawValue !== '_' && nextRawValue !== '_') {
38
- value = ' '; // support BEM __
39
- }
40
- }
41
- } else if (raw === ',') {
42
- type = 'separator';
43
- } else if (raw === '*') {
44
- type = 'universal';
45
- } else if (currentPrefix === ':') {
46
- type = 'pseudo-class';
47
- } else if (currentPrefix === '::') {
48
- type = 'pseudo-element';
49
- } else if (currentPrefix === '.') {
50
- type = 'class';
51
- } else if (currentPrefix === '#') {
52
- type = 'id';
53
- }
54
- nodes.push({
55
- value,
56
- ...isRaw && {
57
- raw: currentPrefix + raw
58
- },
59
- ...type && {
60
- type
61
- }
62
- });
63
- currentPrefix = '';
64
- }
65
- return nodes;
66
- };
67
- const pair = (eachToken, nodes = [])=>{
68
- const paired = parsePair(eachToken);
69
- if (paired) {
70
- let { pre, body, post } = paired;
71
- let name;
72
- if (body) {
73
- const lastColonIndex = pre.lastIndexOf(':');
74
- if (lastColonIndex !== -1) {
75
- name = pre.slice(lastColonIndex);
76
- pre = pre.slice(0, lastColonIndex);
77
- }
78
- }
79
- if (pre) nodes.push(...pair(pre));
80
- if (body) {
81
- const children = pair(body);
82
- if (name) {
83
- const node = resolve(name)[0];
84
- if (children.length) node.children = children;
85
- nodes.push(node);
86
- } else {
87
- nodes.push(...children);
88
- }
89
- }
90
- if (post) nodes.push(...pair(post));
91
- return nodes;
92
- }
93
- const attrPaired = parsePair(eachToken, '[', ']');
94
- if (attrPaired) {
95
- const { pre, body, post } = attrPaired;
96
- if (pre) nodes.push(...pair(pre));
97
- nodes.push({
98
- value: body,
99
- type: 'attribute',
100
- ...isRaw && {
101
- raw: `[${body}]`
102
- }
103
- });
104
- if (post) nodes.push(...pair(post));
105
- return nodes;
106
- }
107
- return resolve(eachToken);
108
- };
109
- return pair(token);
110
- }
111
-
112
- export { parseSelector as default };
@@ -1,39 +0,0 @@
1
- 'use strict';
2
-
3
- var common = require('../common.cjs');
4
-
5
- function parseValue(token, unit = '', rootSize = 1) {
6
- const isNumber = typeof token === 'number';
7
- const defaultUnit = unit;
8
- // 如果是純數字
9
- if (isNumber) {
10
- return {
11
- unit: defaultUnit,
12
- type: 'number',
13
- value: defaultUnit === 'rem' || defaultUnit === 'em' ? token / rootSize : token
14
- };
15
- }
16
- const matches = token.match(common.UNIT_REGEX);
17
- if (matches) {
18
- let value = parseFloat(matches[1]);
19
- let parsedUnit = matches[2] || '';
20
- if (!parsedUnit && (defaultUnit === 'rem' || defaultUnit === 'em')) {
21
- value = value / rootSize;
22
- parsedUnit = defaultUnit;
23
- }
24
- return {
25
- token,
26
- value,
27
- unit: parsedUnit || defaultUnit,
28
- type: 'number'
29
- };
30
- }
31
- // 無法解析則當作純字串
32
- return {
33
- token,
34
- value: token,
35
- type: 'string'
36
- };
37
- }
38
-
39
- module.exports = parseValue;
@@ -1,2 +0,0 @@
1
- import { NumberValueComponent, StringValueComponent } from '../types/syntax';
2
- export default function parseValue(token: string | number, unit?: string, rootSize?: number): StringValueComponent | NumberValueComponent;
@@ -1,37 +0,0 @@
1
- import { UNIT_REGEX } from '../common.mjs';
2
-
3
- function parseValue(token, unit = '', rootSize = 1) {
4
- const isNumber = typeof token === 'number';
5
- const defaultUnit = unit;
6
- // 如果是純數字
7
- if (isNumber) {
8
- return {
9
- unit: defaultUnit,
10
- type: 'number',
11
- value: defaultUnit === 'rem' || defaultUnit === 'em' ? token / rootSize : token
12
- };
13
- }
14
- const matches = token.match(UNIT_REGEX);
15
- if (matches) {
16
- let value = parseFloat(matches[1]);
17
- let parsedUnit = matches[2] || '';
18
- if (!parsedUnit && (defaultUnit === 'rem' || defaultUnit === 'em')) {
19
- value = value / rootSize;
20
- parsedUnit = defaultUnit;
21
- }
22
- return {
23
- token,
24
- value,
25
- unit: parsedUnit || defaultUnit,
26
- type: 'number'
27
- };
28
- }
29
- // 無法解析則當作純字串
30
- return {
31
- token,
32
- value: token,
33
- type: 'string'
34
- };
35
- }
36
-
37
- export { parseValue as default };
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- function replaceCharOutsideQuotes(str, target, replace) {
4
- let result = '';
5
- let inSingle = false;
6
- let inDouble = false;
7
- for(let i = 0; i < str.length; i++){
8
- const char = str[i];
9
- const prev = str[i - 1];
10
- if (char === '\'' && prev !== '\\' && !inDouble) inSingle = !inSingle;
11
- else if (char === '"' && prev !== '\\' && !inSingle) inDouble = !inDouble;
12
- if (char === target && !inSingle && !inDouble) {
13
- result += replace;
14
- } else {
15
- result += char;
16
- }
17
- }
18
- return result;
19
- }
20
-
21
- module.exports = replaceCharOutsideQuotes;
@@ -1 +0,0 @@
1
- export default function replaceCharOutsideQuotes(str: string, target: string, replace: string): string;
@@ -1,19 +0,0 @@
1
- function replaceCharOutsideQuotes(str, target, replace) {
2
- let result = '';
3
- let inSingle = false;
4
- let inDouble = false;
5
- for(let i = 0; i < str.length; i++){
6
- const char = str[i];
7
- const prev = str[i - 1];
8
- if (char === '\'' && prev !== '\\' && !inDouble) inSingle = !inSingle;
9
- else if (char === '"' && prev !== '\\' && !inSingle) inDouble = !inDouble;
10
- if (char === target && !inSingle && !inDouble) {
11
- result += replace;
12
- } else {
13
- result += char;
14
- }
15
- }
16
- return result;
17
- }
18
-
19
- export { replaceCharOutsideQuotes as default };
@@ -1,86 +0,0 @@
1
- 'use strict';
2
-
3
- var syntaxRuleType = require('../syntax-rule-type.cjs');
4
- var create = require('../create.cjs');
5
- var compareRulePriority = require('./compare-rule-priority.cjs');
6
- var common = require('../common.cjs');
7
-
8
- /**
9
- * Sorts classes in a consistent order
10
- * @param classes
11
- * @param options
12
- * @returns consistent classes
13
- */ function sortReadableClasses(classes, css = create()) {
14
- const shouldSortClasses = [];
15
- const unsortedClasses = [];
16
- for (const className of classes){
17
- if (className.includes(common.__UNSORTED__)) {
18
- unsortedClasses.push(className);
19
- } else {
20
- shouldSortClasses.push(className);
21
- }
22
- }
23
- css.add(...shouldSortClasses);
24
- // 先去重 fixedClass for componentsLayer
25
- const seenFixed = new Set();
26
- const dedupedComponentRules = css.componentsLayer.rules.filter((rule)=>{
27
- if (!rule.fixedClass) return true;
28
- if (seenFixed.has(rule.fixedClass)) return false;
29
- seenFixed.add(rule.fixedClass);
30
- return true;
31
- });
32
- const allRules = [
33
- ...dedupedComponentRules,
34
- ...css.generalLayer.rules,
35
- ...css.baseLayer.rules,
36
- ...css.presetLayer.rules
37
- ];
38
- const baseSet = new Set(css.baseLayer.rules);
39
- const presetSet = new Set(css.presetLayer.rules);
40
- const getGroupIndex = (rule)=>{
41
- if (baseSet.has(rule)) return 4;
42
- if (presetSet.has(rule)) return 5;
43
- if (rule.atRules) return 3;
44
- if (rule.mode) return 2;
45
- if (rule.selectorNodes?.length) return 1;
46
- return 0;
47
- };
48
- const getTypeScore = (rule)=>{
49
- if (rule.fixedClass) return 0;
50
- if (rule.type === syntaxRuleType.Utility) return 1;
51
- return 2;
52
- };
53
- const rulesWithSortKey = allRules.map((rule)=>({
54
- rule,
55
- sortKey: [
56
- getGroupIndex(rule),
57
- getTypeScore(rule)
58
- ]
59
- }));
60
- const sortedRules = rulesWithSortKey.sort((a, b)=>{
61
- for(let i = 0; i < a.sortKey.length; i++){
62
- if (a.sortKey[i] !== b.sortKey[i]) {
63
- return a.sortKey[i] - b.sortKey[i];
64
- }
65
- }
66
- if (a.rule.fixedClass && b.rule.fixedClass) {
67
- return a.rule.fixedClass.localeCompare(b.rule.fixedClass, undefined, {
68
- numeric: true
69
- });
70
- }
71
- return compareRulePriority.default(a.rule, b.rule);
72
- });
73
- const orderedClasses = sortedRules.map((entry)=>entry.rule.fixedClass || entry.rule.name);
74
- css.remove(...shouldSortClasses);
75
- return [
76
- ...orderedClasses,
77
- ...[
78
- ...shouldSortClasses.filter((className)=>orderedClasses.indexOf(className) === -1),
79
- ...unsortedClasses
80
- ].sort((a, b)=>a.localeCompare(b, undefined, {
81
- numeric: true
82
- }))
83
- ];
84
- }
85
-
86
- module.exports = sortReadableClasses;
@@ -1,7 +0,0 @@
1
- /**
2
- * Sorts classes in a consistent order
3
- * @param classes
4
- * @param options
5
- * @returns consistent classes
6
- */
7
- export default function sortReadableClasses(classes: string[], css?: import("..").MasterCSS): string[];
@@ -1,84 +0,0 @@
1
- import SyntaxRuleType from '../syntax-rule-type.mjs';
2
- import createCSS from '../create.mjs';
3
- import compareRulePriority from './compare-rule-priority.mjs';
4
- import { __UNSORTED__ } from '../common.mjs';
5
-
6
- /**
7
- * Sorts classes in a consistent order
8
- * @param classes
9
- * @param options
10
- * @returns consistent classes
11
- */ function sortReadableClasses(classes, css = createCSS()) {
12
- const shouldSortClasses = [];
13
- const unsortedClasses = [];
14
- for (const className of classes){
15
- if (className.includes(__UNSORTED__)) {
16
- unsortedClasses.push(className);
17
- } else {
18
- shouldSortClasses.push(className);
19
- }
20
- }
21
- css.add(...shouldSortClasses);
22
- // 先去重 fixedClass for componentsLayer
23
- const seenFixed = new Set();
24
- const dedupedComponentRules = css.componentsLayer.rules.filter((rule)=>{
25
- if (!rule.fixedClass) return true;
26
- if (seenFixed.has(rule.fixedClass)) return false;
27
- seenFixed.add(rule.fixedClass);
28
- return true;
29
- });
30
- const allRules = [
31
- ...dedupedComponentRules,
32
- ...css.generalLayer.rules,
33
- ...css.baseLayer.rules,
34
- ...css.presetLayer.rules
35
- ];
36
- const baseSet = new Set(css.baseLayer.rules);
37
- const presetSet = new Set(css.presetLayer.rules);
38
- const getGroupIndex = (rule)=>{
39
- if (baseSet.has(rule)) return 4;
40
- if (presetSet.has(rule)) return 5;
41
- if (rule.atRules) return 3;
42
- if (rule.mode) return 2;
43
- if (rule.selectorNodes?.length) return 1;
44
- return 0;
45
- };
46
- const getTypeScore = (rule)=>{
47
- if (rule.fixedClass) return 0;
48
- if (rule.type === SyntaxRuleType.Utility) return 1;
49
- return 2;
50
- };
51
- const rulesWithSortKey = allRules.map((rule)=>({
52
- rule,
53
- sortKey: [
54
- getGroupIndex(rule),
55
- getTypeScore(rule)
56
- ]
57
- }));
58
- const sortedRules = rulesWithSortKey.sort((a, b)=>{
59
- for(let i = 0; i < a.sortKey.length; i++){
60
- if (a.sortKey[i] !== b.sortKey[i]) {
61
- return a.sortKey[i] - b.sortKey[i];
62
- }
63
- }
64
- if (a.rule.fixedClass && b.rule.fixedClass) {
65
- return a.rule.fixedClass.localeCompare(b.rule.fixedClass, undefined, {
66
- numeric: true
67
- });
68
- }
69
- return compareRulePriority(a.rule, b.rule);
70
- });
71
- const orderedClasses = sortedRules.map((entry)=>entry.rule.fixedClass || entry.rule.name);
72
- css.remove(...shouldSortClasses);
73
- return [
74
- ...orderedClasses,
75
- ...[
76
- ...shouldSortClasses.filter((className)=>orderedClasses.indexOf(className) === -1),
77
- ...unsortedClasses
78
- ].sort((a, b)=>a.localeCompare(b, undefined, {
79
- numeric: true
80
- }))
81
- ];
82
- }
83
-
84
- export { sortReadableClasses as default };
@@ -1,29 +0,0 @@
1
- 'use strict';
2
-
3
- function splitCharOutsideQuotes(str, char) {
4
- const result = [];
5
- let current = '';
6
- let inSingle = false;
7
- let inDouble = false;
8
- for(let i = 0; i < str.length; i++){
9
- const c = str[i];
10
- const prev = str[i - 1];
11
- // 處理 quote 開關
12
- if (c === '\'' && !inDouble && prev !== '\\') {
13
- inSingle = !inSingle;
14
- } else if (c === '"' && !inSingle && prev !== '\\') {
15
- inDouble = !inDouble;
16
- }
17
- // 在引號之外遇到目標字元就切分
18
- if (c === char && !inSingle && !inDouble) {
19
- result.push(current.trim());
20
- current = '';
21
- } else {
22
- current += c;
23
- }
24
- }
25
- if (current) result.push(current.trim());
26
- return result;
27
- }
28
-
29
- module.exports = splitCharOutsideQuotes;
@@ -1 +0,0 @@
1
- export default function splitCharOutsideQuotes(str: string, char: string): string[];
@@ -1,27 +0,0 @@
1
- function splitCharOutsideQuotes(str, char) {
2
- const result = [];
3
- let current = '';
4
- let inSingle = false;
5
- let inDouble = false;
6
- for(let i = 0; i < str.length; i++){
7
- const c = str[i];
8
- const prev = str[i - 1];
9
- // 處理 quote 開關
10
- if (c === '\'' && !inDouble && prev !== '\\') {
11
- inSingle = !inSingle;
12
- } else if (c === '"' && !inSingle && prev !== '\\') {
13
- inDouble = !inDouble;
14
- }
15
- // 在引號之外遇到目標字元就切分
16
- if (c === char && !inSingle && !inDouble) {
17
- result.push(current.trim());
18
- current = '';
19
- } else {
20
- current += c;
21
- }
22
- }
23
- if (current) result.push(current.trim());
24
- return result;
25
- }
26
-
27
- export { splitCharOutsideQuotes as default };