create-jant 0.1.13 → 0.1.14

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 (163) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/template/node_modules/@jant/core/CHANGELOG.md +6 -0
  4. package/template/node_modules/@jant/core/package.json +1 -5
  5. package/template/node_modules/@jant/core/src/preset.css +3 -1
  6. package/template/node_modules/@tailwindcss/{postcss → vite}/README.md +11 -61
  7. package/template/node_modules/@tailwindcss/vite/dist/index.d.mts +13 -0
  8. package/template/node_modules/@tailwindcss/vite/dist/index.mjs +1 -0
  9. package/template/node_modules/@tailwindcss/vite/node_modules/.bin/vite +21 -0
  10. package/template/node_modules/@tailwindcss/vite/package.json +42 -0
  11. package/template/package.json +1 -3
  12. package/template/src/style.css +0 -3
  13. package/template/vite.config.ts +2 -8
  14. package/template/node_modules/.bin/autoprefixer +0 -21
  15. package/template/node_modules/@jant/core/src/tailwind.ts +0 -20
  16. package/template/node_modules/@tailwindcss/postcss/dist/index.d.mts +0 -25
  17. package/template/node_modules/@tailwindcss/postcss/dist/index.d.ts +0 -25
  18. package/template/node_modules/@tailwindcss/postcss/dist/index.js +0 -10
  19. package/template/node_modules/@tailwindcss/postcss/dist/index.mjs +0 -10
  20. package/template/node_modules/@tailwindcss/postcss/package.json +0 -46
  21. package/template/node_modules/autoprefixer/LICENSE +0 -20
  22. package/template/node_modules/autoprefixer/README.md +0 -57
  23. package/template/node_modules/autoprefixer/bin/autoprefixer +0 -22
  24. package/template/node_modules/autoprefixer/data/prefixes.js +0 -1139
  25. package/template/node_modules/autoprefixer/lib/at-rule.js +0 -35
  26. package/template/node_modules/autoprefixer/lib/autoprefixer.d.ts +0 -95
  27. package/template/node_modules/autoprefixer/lib/autoprefixer.js +0 -164
  28. package/template/node_modules/autoprefixer/lib/brackets.js +0 -51
  29. package/template/node_modules/autoprefixer/lib/browsers.js +0 -79
  30. package/template/node_modules/autoprefixer/lib/declaration.js +0 -187
  31. package/template/node_modules/autoprefixer/lib/hacks/align-content.js +0 -49
  32. package/template/node_modules/autoprefixer/lib/hacks/align-items.js +0 -46
  33. package/template/node_modules/autoprefixer/lib/hacks/align-self.js +0 -56
  34. package/template/node_modules/autoprefixer/lib/hacks/animation.js +0 -17
  35. package/template/node_modules/autoprefixer/lib/hacks/appearance.js +0 -23
  36. package/template/node_modules/autoprefixer/lib/hacks/autofill.js +0 -26
  37. package/template/node_modules/autoprefixer/lib/hacks/backdrop-filter.js +0 -20
  38. package/template/node_modules/autoprefixer/lib/hacks/background-clip.js +0 -24
  39. package/template/node_modules/autoprefixer/lib/hacks/background-size.js +0 -23
  40. package/template/node_modules/autoprefixer/lib/hacks/block-logical.js +0 -40
  41. package/template/node_modules/autoprefixer/lib/hacks/border-image.js +0 -15
  42. package/template/node_modules/autoprefixer/lib/hacks/border-radius.js +0 -40
  43. package/template/node_modules/autoprefixer/lib/hacks/break-props.js +0 -63
  44. package/template/node_modules/autoprefixer/lib/hacks/cross-fade.js +0 -35
  45. package/template/node_modules/autoprefixer/lib/hacks/display-flex.js +0 -65
  46. package/template/node_modules/autoprefixer/lib/hacks/display-grid.js +0 -21
  47. package/template/node_modules/autoprefixer/lib/hacks/file-selector-button.js +0 -26
  48. package/template/node_modules/autoprefixer/lib/hacks/filter-value.js +0 -14
  49. package/template/node_modules/autoprefixer/lib/hacks/filter.js +0 -19
  50. package/template/node_modules/autoprefixer/lib/hacks/flex-basis.js +0 -39
  51. package/template/node_modules/autoprefixer/lib/hacks/flex-direction.js +0 -72
  52. package/template/node_modules/autoprefixer/lib/hacks/flex-flow.js +0 -53
  53. package/template/node_modules/autoprefixer/lib/hacks/flex-grow.js +0 -30
  54. package/template/node_modules/autoprefixer/lib/hacks/flex-shrink.js +0 -39
  55. package/template/node_modules/autoprefixer/lib/hacks/flex-spec.js +0 -19
  56. package/template/node_modules/autoprefixer/lib/hacks/flex-wrap.js +0 -19
  57. package/template/node_modules/autoprefixer/lib/hacks/flex.js +0 -54
  58. package/template/node_modules/autoprefixer/lib/hacks/fullscreen.js +0 -20
  59. package/template/node_modules/autoprefixer/lib/hacks/gradient.js +0 -447
  60. package/template/node_modules/autoprefixer/lib/hacks/grid-area.js +0 -34
  61. package/template/node_modules/autoprefixer/lib/hacks/grid-column-align.js +0 -28
  62. package/template/node_modules/autoprefixer/lib/hacks/grid-end.js +0 -52
  63. package/template/node_modules/autoprefixer/lib/hacks/grid-row-align.js +0 -28
  64. package/template/node_modules/autoprefixer/lib/hacks/grid-row-column.js +0 -33
  65. package/template/node_modules/autoprefixer/lib/hacks/grid-rows-columns.js +0 -125
  66. package/template/node_modules/autoprefixer/lib/hacks/grid-start.js +0 -33
  67. package/template/node_modules/autoprefixer/lib/hacks/grid-template-areas.js +0 -84
  68. package/template/node_modules/autoprefixer/lib/hacks/grid-template.js +0 -69
  69. package/template/node_modules/autoprefixer/lib/hacks/grid-utils.js +0 -1117
  70. package/template/node_modules/autoprefixer/lib/hacks/image-rendering.js +0 -48
  71. package/template/node_modules/autoprefixer/lib/hacks/image-set.js +0 -18
  72. package/template/node_modules/autoprefixer/lib/hacks/inline-logical.js +0 -34
  73. package/template/node_modules/autoprefixer/lib/hacks/intrinsic.js +0 -61
  74. package/template/node_modules/autoprefixer/lib/hacks/justify-content.js +0 -54
  75. package/template/node_modules/autoprefixer/lib/hacks/mask-border.js +0 -38
  76. package/template/node_modules/autoprefixer/lib/hacks/mask-composite.js +0 -88
  77. package/template/node_modules/autoprefixer/lib/hacks/order.js +0 -42
  78. package/template/node_modules/autoprefixer/lib/hacks/overscroll-behavior.js +0 -33
  79. package/template/node_modules/autoprefixer/lib/hacks/pixelated.js +0 -34
  80. package/template/node_modules/autoprefixer/lib/hacks/place-self.js +0 -32
  81. package/template/node_modules/autoprefixer/lib/hacks/placeholder-shown.js +0 -19
  82. package/template/node_modules/autoprefixer/lib/hacks/placeholder.js +0 -33
  83. package/template/node_modules/autoprefixer/lib/hacks/print-color-adjust.js +0 -25
  84. package/template/node_modules/autoprefixer/lib/hacks/text-decoration-skip-ink.js +0 -23
  85. package/template/node_modules/autoprefixer/lib/hacks/text-decoration.js +0 -25
  86. package/template/node_modules/autoprefixer/lib/hacks/text-emphasis-position.js +0 -14
  87. package/template/node_modules/autoprefixer/lib/hacks/transform-decl.js +0 -79
  88. package/template/node_modules/autoprefixer/lib/hacks/user-select.js +0 -33
  89. package/template/node_modules/autoprefixer/lib/hacks/writing-mode.js +0 -42
  90. package/template/node_modules/autoprefixer/lib/info.js +0 -123
  91. package/template/node_modules/autoprefixer/lib/old-selector.js +0 -67
  92. package/template/node_modules/autoprefixer/lib/old-value.js +0 -22
  93. package/template/node_modules/autoprefixer/lib/prefixer.js +0 -144
  94. package/template/node_modules/autoprefixer/lib/prefixes.js +0 -428
  95. package/template/node_modules/autoprefixer/lib/processor.js +0 -709
  96. package/template/node_modules/autoprefixer/lib/resolution.js +0 -97
  97. package/template/node_modules/autoprefixer/lib/selector.js +0 -150
  98. package/template/node_modules/autoprefixer/lib/supports.js +0 -302
  99. package/template/node_modules/autoprefixer/lib/transition.js +0 -329
  100. package/template/node_modules/autoprefixer/lib/utils.js +0 -93
  101. package/template/node_modules/autoprefixer/lib/value.js +0 -125
  102. package/template/node_modules/autoprefixer/lib/vendor.js +0 -14
  103. package/template/node_modules/autoprefixer/node_modules/.bin/autoprefixer +0 -21
  104. package/template/node_modules/autoprefixer/node_modules/.bin/browserslist +0 -21
  105. package/template/node_modules/autoprefixer/package.json +0 -48
  106. package/template/node_modules/postcss/LICENSE +0 -20
  107. package/template/node_modules/postcss/README.md +0 -29
  108. package/template/node_modules/postcss/lib/at-rule.d.ts +0 -140
  109. package/template/node_modules/postcss/lib/at-rule.js +0 -25
  110. package/template/node_modules/postcss/lib/comment.d.ts +0 -68
  111. package/template/node_modules/postcss/lib/comment.js +0 -13
  112. package/template/node_modules/postcss/lib/container.d.ts +0 -483
  113. package/template/node_modules/postcss/lib/container.js +0 -447
  114. package/template/node_modules/postcss/lib/css-syntax-error.d.ts +0 -248
  115. package/template/node_modules/postcss/lib/css-syntax-error.js +0 -133
  116. package/template/node_modules/postcss/lib/declaration.d.ts +0 -151
  117. package/template/node_modules/postcss/lib/declaration.js +0 -24
  118. package/template/node_modules/postcss/lib/document.d.ts +0 -69
  119. package/template/node_modules/postcss/lib/document.js +0 -33
  120. package/template/node_modules/postcss/lib/fromJSON.d.ts +0 -9
  121. package/template/node_modules/postcss/lib/fromJSON.js +0 -54
  122. package/template/node_modules/postcss/lib/input.d.ts +0 -227
  123. package/template/node_modules/postcss/lib/input.js +0 -265
  124. package/template/node_modules/postcss/lib/lazy-result.d.ts +0 -190
  125. package/template/node_modules/postcss/lib/lazy-result.js +0 -550
  126. package/template/node_modules/postcss/lib/list.d.ts +0 -60
  127. package/template/node_modules/postcss/lib/list.js +0 -58
  128. package/template/node_modules/postcss/lib/map-generator.js +0 -368
  129. package/template/node_modules/postcss/lib/no-work-result.d.ts +0 -46
  130. package/template/node_modules/postcss/lib/no-work-result.js +0 -138
  131. package/template/node_modules/postcss/lib/node.d.ts +0 -556
  132. package/template/node_modules/postcss/lib/node.js +0 -449
  133. package/template/node_modules/postcss/lib/parse.d.ts +0 -9
  134. package/template/node_modules/postcss/lib/parse.js +0 -42
  135. package/template/node_modules/postcss/lib/parser.js +0 -611
  136. package/template/node_modules/postcss/lib/postcss.d.mts +0 -69
  137. package/template/node_modules/postcss/lib/postcss.d.ts +0 -458
  138. package/template/node_modules/postcss/lib/postcss.js +0 -101
  139. package/template/node_modules/postcss/lib/postcss.mjs +0 -30
  140. package/template/node_modules/postcss/lib/previous-map.d.ts +0 -81
  141. package/template/node_modules/postcss/lib/previous-map.js +0 -144
  142. package/template/node_modules/postcss/lib/processor.d.ts +0 -115
  143. package/template/node_modules/postcss/lib/processor.js +0 -67
  144. package/template/node_modules/postcss/lib/result.d.ts +0 -205
  145. package/template/node_modules/postcss/lib/result.js +0 -42
  146. package/template/node_modules/postcss/lib/root.d.ts +0 -87
  147. package/template/node_modules/postcss/lib/root.js +0 -61
  148. package/template/node_modules/postcss/lib/rule.d.ts +0 -126
  149. package/template/node_modules/postcss/lib/rule.js +0 -27
  150. package/template/node_modules/postcss/lib/stringifier.d.ts +0 -46
  151. package/template/node_modules/postcss/lib/stringifier.js +0 -353
  152. package/template/node_modules/postcss/lib/stringify.d.ts +0 -9
  153. package/template/node_modules/postcss/lib/stringify.js +0 -11
  154. package/template/node_modules/postcss/lib/symbols.js +0 -5
  155. package/template/node_modules/postcss/lib/terminal-highlight.js +0 -70
  156. package/template/node_modules/postcss/lib/tokenize.js +0 -266
  157. package/template/node_modules/postcss/lib/warn-once.js +0 -13
  158. package/template/node_modules/postcss/lib/warning.d.ts +0 -147
  159. package/template/node_modules/postcss/lib/warning.js +0 -37
  160. package/template/node_modules/postcss/node_modules/.bin/nanoid +0 -21
  161. package/template/node_modules/postcss/package.json +0 -88
  162. package/template/tailwind.config.ts +0 -13
  163. /package/template/node_modules/@tailwindcss/{postcss → vite}/LICENSE +0 -0
@@ -1,97 +0,0 @@
1
- let FractionJs = require('fraction.js')
2
-
3
- let Prefixer = require('./prefixer')
4
- let utils = require('./utils')
5
-
6
- const REGEXP = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpcm|dpi|x)/gi
7
- const SPLIT = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpcm|dpi|x)/i
8
-
9
- class Resolution extends Prefixer {
10
- /**
11
- * Remove prefixed queries
12
- */
13
- clean(rule) {
14
- if (!this.bad) {
15
- this.bad = []
16
- for (let prefix of this.prefixes) {
17
- this.bad.push(this.prefixName(prefix, 'min'))
18
- this.bad.push(this.prefixName(prefix, 'max'))
19
- }
20
- }
21
-
22
- rule.params = utils.editList(rule.params, queries => {
23
- return queries.filter(query => this.bad.every(i => !query.includes(i)))
24
- })
25
- }
26
-
27
- /**
28
- * Return prefixed query name
29
- */
30
- prefixName(prefix, name) {
31
- if (prefix === '-moz-') {
32
- return name + '--moz-device-pixel-ratio'
33
- } else {
34
- return prefix + name + '-device-pixel-ratio'
35
- }
36
- }
37
-
38
- /**
39
- * Return prefixed query
40
- */
41
- prefixQuery(prefix, name, colon, value, units) {
42
- value = new FractionJs(value)
43
-
44
- // 1dpcm = 2.54dpi
45
- // 1dppx = 96dpi
46
- if (units === 'dpi') {
47
- value = value.div(96)
48
- } else if (units === 'dpcm') {
49
- value = value.mul(2.54).div(96)
50
- }
51
- value = value.simplify()
52
-
53
- if (prefix === '-o-') {
54
- value = value.n + '/' + value.d
55
- }
56
- return this.prefixName(prefix, name) + colon + value
57
- }
58
-
59
- /**
60
- * Add prefixed queries
61
- */
62
- process(rule) {
63
- let parent = this.parentPrefix(rule)
64
- let prefixes = parent ? [parent] : this.prefixes
65
-
66
- rule.params = utils.editList(rule.params, (origin, prefixed) => {
67
- for (let query of origin) {
68
- if (
69
- !query.includes('min-resolution') &&
70
- !query.includes('max-resolution')
71
- ) {
72
- prefixed.push(query)
73
- continue
74
- }
75
-
76
- for (let prefix of prefixes) {
77
- let processed = query.replace(REGEXP, str => {
78
- let parts = str.match(SPLIT)
79
- return this.prefixQuery(
80
- prefix,
81
- parts[1],
82
- parts[2],
83
- parts[3],
84
- parts[4]
85
- )
86
- })
87
- prefixed.push(processed)
88
- }
89
- prefixed.push(query)
90
- }
91
-
92
- return utils.uniq(prefixed)
93
- })
94
- }
95
- }
96
-
97
- module.exports = Resolution
@@ -1,150 +0,0 @@
1
- let { list } = require('postcss')
2
-
3
- let Browsers = require('./browsers')
4
- let OldSelector = require('./old-selector')
5
- let Prefixer = require('./prefixer')
6
- let utils = require('./utils')
7
-
8
- class Selector extends Prefixer {
9
- constructor(name, prefixes, all) {
10
- super(name, prefixes, all)
11
- this.regexpCache = new Map()
12
- }
13
-
14
- /**
15
- * Clone and add prefixes for at-rule
16
- */
17
- add(rule, prefix) {
18
- let prefixeds = this.prefixeds(rule)
19
-
20
- if (this.already(rule, prefixeds, prefix)) {
21
- return
22
- }
23
-
24
- let cloned = this.clone(rule, { selector: prefixeds[this.name][prefix] })
25
- rule.parent.insertBefore(rule, cloned)
26
- }
27
-
28
- /**
29
- * Is rule already prefixed before
30
- */
31
- already(rule, prefixeds, prefix) {
32
- let index = rule.parent.index(rule) - 1
33
-
34
- while (index >= 0) {
35
- let before = rule.parent.nodes[index]
36
-
37
- if (before.type !== 'rule') {
38
- return false
39
- }
40
-
41
- let some = false
42
- for (let key in prefixeds[this.name]) {
43
- let prefixed = prefixeds[this.name][key]
44
- if (before.selector === prefixed) {
45
- if (prefix === key) {
46
- return true
47
- } else {
48
- some = true
49
- break
50
- }
51
- }
52
- }
53
- if (!some) {
54
- return false
55
- }
56
-
57
- index -= 1
58
- }
59
-
60
- return false
61
- }
62
-
63
- /**
64
- * Is rule selectors need to be prefixed
65
- */
66
- check(rule) {
67
- if (rule.selector.includes(this.name)) {
68
- return !!rule.selector.match(this.regexp())
69
- }
70
-
71
- return false
72
- }
73
-
74
- /**
75
- * Return function to fast find prefixed selector
76
- */
77
- old(prefix) {
78
- return new OldSelector(this, prefix)
79
- }
80
-
81
- /**
82
- * All possible prefixes
83
- */
84
- possible() {
85
- return Browsers.prefixes()
86
- }
87
-
88
- /**
89
- * Return prefixed version of selector
90
- */
91
- prefixed(prefix) {
92
- return this.name.replace(/^(\W*)/, `$1${prefix}`)
93
- }
94
-
95
- /**
96
- * Return all possible selector prefixes
97
- */
98
- prefixeds(rule) {
99
- if (rule._autoprefixerPrefixeds) {
100
- if (rule._autoprefixerPrefixeds[this.name]) {
101
- return rule._autoprefixerPrefixeds
102
- }
103
- } else {
104
- rule._autoprefixerPrefixeds = {}
105
- }
106
-
107
- let prefixeds = {}
108
- if (rule.selector.includes(',')) {
109
- let ruleParts = list.comma(rule.selector)
110
- let toProcess = ruleParts.filter(el => el.includes(this.name))
111
-
112
- for (let prefix of this.possible()) {
113
- prefixeds[prefix] = toProcess
114
- .map(el => this.replace(el, prefix))
115
- .join(', ')
116
- }
117
- } else {
118
- for (let prefix of this.possible()) {
119
- prefixeds[prefix] = this.replace(rule.selector, prefix)
120
- }
121
- }
122
-
123
- rule._autoprefixerPrefixeds[this.name] = prefixeds
124
- return rule._autoprefixerPrefixeds
125
- }
126
-
127
- /**
128
- * Lazy loadRegExp for name
129
- */
130
- regexp(prefix) {
131
- if (!this.regexpCache.has(prefix)) {
132
- let name = prefix ? this.prefixed(prefix) : this.name
133
- this.regexpCache.set(
134
- prefix,
135
- new RegExp(`(^|[^:"'=])${utils.escapeRegexp(name)}`, 'gi')
136
- )
137
- }
138
-
139
- return this.regexpCache.get(prefix)
140
- }
141
-
142
- /**
143
- * Replace selectors by prefixed one
144
- */
145
- replace(selector, prefix) {
146
- return selector.replace(this.regexp(), `$1${this.prefixed(prefix)}`)
147
- }
148
- }
149
-
150
- module.exports = Selector
@@ -1,302 +0,0 @@
1
- let featureQueries = require('caniuse-lite/data/features/css-featurequeries.js')
2
- let feature = require('caniuse-lite/dist/unpacker/feature')
3
- let { parse } = require('postcss')
4
-
5
- let brackets = require('./brackets')
6
- let Browsers = require('./browsers')
7
- let utils = require('./utils')
8
- let Value = require('./value')
9
-
10
- let data = feature(featureQueries)
11
-
12
- let supported = []
13
- for (let browser in data.stats) {
14
- let versions = data.stats[browser]
15
- for (let version in versions) {
16
- let support = versions[version]
17
- if (/y/.test(support)) {
18
- supported.push(browser + ' ' + version)
19
- }
20
- }
21
- }
22
-
23
- class Supports {
24
- constructor(Prefixes, all) {
25
- this.Prefixes = Prefixes
26
- this.all = all
27
- }
28
-
29
- /**
30
- * Add prefixes
31
- */
32
- add(nodes, all) {
33
- return nodes.map(i => {
34
- if (this.isProp(i)) {
35
- let prefixed = this.prefixed(i[0])
36
- if (prefixed.length > 1) {
37
- return this.convert(prefixed)
38
- }
39
-
40
- return i
41
- }
42
-
43
- if (typeof i === 'object') {
44
- return this.add(i, all)
45
- }
46
-
47
- return i
48
- })
49
- }
50
-
51
- /**
52
- * Clean brackets with one child
53
- */
54
- cleanBrackets(nodes) {
55
- return nodes.map(i => {
56
- if (typeof i !== 'object') {
57
- return i
58
- }
59
-
60
- if (i.length === 1 && typeof i[0] === 'object') {
61
- return this.cleanBrackets(i[0])
62
- }
63
-
64
- return this.cleanBrackets(i)
65
- })
66
- }
67
-
68
- /**
69
- * Add " or " between properties and convert it to brackets format
70
- */
71
- convert(progress) {
72
- let result = ['']
73
- for (let i of progress) {
74
- result.push([`${i.prop}: ${i.value}`])
75
- result.push(' or ')
76
- }
77
- result[result.length - 1] = ''
78
- return result
79
- }
80
-
81
- /**
82
- * Check global options
83
- */
84
- disabled(node) {
85
- if (!this.all.options.grid) {
86
- if (node.prop === 'display' && node.value.includes('grid')) {
87
- return true
88
- }
89
- if (node.prop.includes('grid') || node.prop === 'justify-items') {
90
- return true
91
- }
92
- }
93
-
94
- if (this.all.options.flexbox === false) {
95
- if (node.prop === 'display' && node.value.includes('flex')) {
96
- return true
97
- }
98
- let other = ['order', 'justify-content', 'align-items', 'align-content']
99
- if (node.prop.includes('flex') || other.includes(node.prop)) {
100
- return true
101
- }
102
- }
103
-
104
- return false
105
- }
106
-
107
- /**
108
- * Return true if prefixed property has no unprefixed
109
- */
110
- isHack(all, unprefixed) {
111
- let check = new RegExp(`(\\(|\\s)${utils.escapeRegexp(unprefixed)}:`)
112
- return !check.test(all)
113
- }
114
-
115
- /**
116
- * Return true if brackets node is "not" word
117
- */
118
- isNot(node) {
119
- return typeof node === 'string' && /not\s*/i.test(node)
120
- }
121
-
122
- /**
123
- * Return true if brackets node is "or" word
124
- */
125
- isOr(node) {
126
- return typeof node === 'string' && /\s*or\s*/i.test(node)
127
- }
128
-
129
- /**
130
- * Return true if brackets node is (prop: value)
131
- */
132
- isProp(node) {
133
- return (
134
- typeof node === 'object' &&
135
- node.length === 1 &&
136
- typeof node[0] === 'string'
137
- )
138
- }
139
-
140
- /**
141
- * Compress value functions into a string nodes
142
- */
143
- normalize(nodes) {
144
- if (typeof nodes !== 'object') {
145
- return nodes
146
- }
147
-
148
- nodes = nodes.filter(i => i !== '')
149
-
150
- if (typeof nodes[0] === 'string') {
151
- let firstNode = nodes[0].trim()
152
-
153
- if (
154
- firstNode.includes(':') ||
155
- firstNode === 'selector' ||
156
- firstNode === 'not selector'
157
- ) {
158
- return [brackets.stringify(nodes)]
159
- }
160
- }
161
- return nodes.map(i => this.normalize(i))
162
- }
163
-
164
- /**
165
- * Parse string into declaration property and value
166
- */
167
- parse(str) {
168
- let parts = str.split(':')
169
- let prop = parts[0]
170
- let value = parts[1]
171
- if (!value) value = ''
172
- return [prop.trim(), value.trim()]
173
- }
174
-
175
- /**
176
- * Return array of Declaration with all necessary prefixes
177
- */
178
- prefixed(str) {
179
- let rule = this.virtual(str)
180
- if (this.disabled(rule.first)) {
181
- return rule.nodes
182
- }
183
-
184
- let result = { warn: () => null }
185
-
186
- let prefixer = this.prefixer().add[rule.first.prop]
187
- prefixer && prefixer.process && prefixer.process(rule.first, result)
188
-
189
- for (let decl of rule.nodes) {
190
- for (let value of this.prefixer().values('add', rule.first.prop)) {
191
- value.process(decl)
192
- }
193
- Value.save(this.all, decl)
194
- }
195
-
196
- return rule.nodes
197
- }
198
-
199
- /**
200
- * Return prefixer only with @supports supported browsers
201
- */
202
- prefixer() {
203
- if (this.prefixerCache) {
204
- return this.prefixerCache
205
- }
206
-
207
- let filtered = this.all.browsers.selected.filter(i => {
208
- return supported.includes(i)
209
- })
210
-
211
- let browsers = new Browsers(
212
- this.all.browsers.data,
213
- filtered,
214
- this.all.options
215
- )
216
- this.prefixerCache = new this.Prefixes(
217
- this.all.data,
218
- browsers,
219
- this.all.options
220
- )
221
- return this.prefixerCache
222
- }
223
-
224
- /**
225
- * Add prefixed declaration
226
- */
227
- process(rule) {
228
- let ast = brackets.parse(rule.params)
229
- ast = this.normalize(ast)
230
- ast = this.remove(ast, rule.params)
231
- ast = this.add(ast, rule.params)
232
- ast = this.cleanBrackets(ast)
233
- rule.params = brackets.stringify(ast)
234
- }
235
-
236
- /**
237
- * Remove all unnecessary prefixes
238
- */
239
- remove(nodes, all) {
240
- let i = 0
241
- while (i < nodes.length) {
242
- if (
243
- !this.isNot(nodes[i - 1]) &&
244
- this.isProp(nodes[i]) &&
245
- this.isOr(nodes[i + 1])
246
- ) {
247
- if (this.toRemove(nodes[i][0], all)) {
248
- nodes.splice(i, 2)
249
- continue
250
- }
251
-
252
- i += 2
253
- continue
254
- }
255
-
256
- if (typeof nodes[i] === 'object') {
257
- nodes[i] = this.remove(nodes[i], all)
258
- }
259
-
260
- i += 1
261
- }
262
- return nodes
263
- }
264
-
265
- /**
266
- * Return true if we need to remove node
267
- */
268
- toRemove(str, all) {
269
- let [prop, value] = this.parse(str)
270
- let unprefixed = this.all.unprefixed(prop)
271
-
272
- let cleaner = this.all.cleaner()
273
-
274
- if (
275
- cleaner.remove[prop] &&
276
- cleaner.remove[prop].remove &&
277
- !this.isHack(all, unprefixed)
278
- ) {
279
- return true
280
- }
281
-
282
- for (let checker of cleaner.values('remove', unprefixed)) {
283
- if (checker.check(value)) {
284
- return true
285
- }
286
- }
287
-
288
- return false
289
- }
290
-
291
- /**
292
- * Create virtual rule to process it by prefixer
293
- */
294
- virtual(str) {
295
- let [prop, value] = this.parse(str)
296
- let rule = parse('a{}').first
297
- rule.append({ prop, raws: { before: '' }, value })
298
- return rule
299
- }
300
- }
301
-
302
- module.exports = Supports