@master/css 2.0.0-alpha.9 → 2.0.0-beta.2

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 (872) hide show
  1. package/README.md +2 -0
  2. package/esm/apis/configure.d.ts +2 -0
  3. package/esm/apis/configure.js +11 -0
  4. package/esm/apis/configure.js.map +1 -0
  5. package/esm/apis/extend.d.ts +5 -0
  6. package/esm/apis/extend.js +61 -0
  7. package/esm/apis/extend.js.map +1 -0
  8. package/esm/apis/fill-color-scale.d.ts +1 -0
  9. package/esm/apis/fill-color-scale.js +60 -0
  10. package/esm/apis/fill-color-scale.js.map +1 -0
  11. package/esm/apis/index.d.ts +7 -0
  12. package/esm/apis/index.js +8 -0
  13. package/esm/apis/index.js.map +1 -0
  14. package/esm/apis/init.d.ts +3 -0
  15. package/esm/apis/init.js +13 -0
  16. package/esm/apis/init.js.map +1 -0
  17. package/{render-from-html.d.ts → esm/apis/render-from-html.d.ts} +2 -2
  18. package/esm/apis/render-from-html.js +19 -0
  19. package/esm/apis/render-from-html.js.map +1 -0
  20. package/{render-into-html.d.ts → esm/apis/render-into-html.d.ts} +2 -2
  21. package/esm/apis/render-into-html.js +10 -0
  22. package/esm/apis/render-into-html.js.map +1 -0
  23. package/{render.d.ts → esm/apis/render.d.ts} +2 -2
  24. package/esm/apis/render.js +14 -0
  25. package/esm/apis/render.js.map +1 -0
  26. package/esm/config/breakpoints.d.ts +13 -0
  27. package/esm/config/breakpoints.js +14 -0
  28. package/esm/config/breakpoints.js.map +1 -0
  29. package/esm/config/colors.d.ts +25 -0
  30. package/esm/config/colors.js +266 -0
  31. package/esm/config/colors.js.map +1 -0
  32. package/esm/config/index.d.ts +36 -0
  33. package/esm/config/index.js +22 -0
  34. package/esm/config/index.js.map +1 -0
  35. package/esm/config/root-size.d.ts +2 -0
  36. package/esm/config/root-size.js +3 -0
  37. package/esm/config/root-size.js.map +1 -0
  38. package/esm/config/rules.d.ts +3 -0
  39. package/esm/config/rules.js +390 -0
  40. package/esm/config/rules.js.map +1 -0
  41. package/esm/config/scheme.d.ts +8 -0
  42. package/esm/config/scheme.js +9 -0
  43. package/esm/config/scheme.js.map +1 -0
  44. package/esm/config/selectors.d.ts +19 -0
  45. package/esm/config/selectors.js +20 -0
  46. package/esm/config/selectors.js.map +1 -0
  47. package/esm/config/semantics.d.ts +82 -0
  48. package/esm/config/semantics.js +83 -0
  49. package/esm/config/semantics.js.map +1 -0
  50. package/esm/config/themes.d.ts +2 -0
  51. package/esm/config/themes.js +3 -0
  52. package/esm/config/themes.js.map +1 -0
  53. package/esm/config/values.d.ts +126 -0
  54. package/esm/config/values.js +85 -0
  55. package/esm/config/values.js.map +1 -0
  56. package/{constants → esm/constants}/start-symbol.d.ts +0 -0
  57. package/esm/constants/start-symbol.js +6 -0
  58. package/esm/constants/start-symbol.js.map +1 -0
  59. package/esm/css.d.ts +77 -0
  60. package/esm/css.js +981 -0
  61. package/esm/css.js.map +1 -0
  62. package/esm/index.d.ts +5 -0
  63. package/esm/index.js +6 -0
  64. package/esm/index.js.map +1 -0
  65. package/esm/polyfills/css-escape.d.ts +2 -0
  66. package/esm/polyfills/css-escape.js +91 -0
  67. package/esm/polyfills/css-escape.js.map +1 -0
  68. package/esm/rule.d.ts +71 -0
  69. package/esm/rule.js +609 -0
  70. package/esm/rule.js.map +1 -0
  71. package/{rules → esm/rules}/accent-color.d.ts +3 -2
  72. package/esm/rules/accent-color.js +8 -0
  73. package/esm/rules/accent-color.js.map +1 -0
  74. package/esm/rules/align-content.d.ts +6 -0
  75. package/esm/rules/align-content.js +7 -0
  76. package/esm/rules/align-content.js.map +1 -0
  77. package/esm/rules/align-items.d.ts +6 -0
  78. package/esm/rules/align-items.js +7 -0
  79. package/esm/rules/align-items.js.map +1 -0
  80. package/esm/rules/align-self.d.ts +6 -0
  81. package/esm/rules/align-self.js +7 -0
  82. package/esm/rules/align-self.js.map +1 -0
  83. package/esm/rules/animation-delay.d.ts +7 -0
  84. package/esm/rules/animation-delay.js +8 -0
  85. package/esm/rules/animation-delay.js.map +1 -0
  86. package/esm/rules/animation-direction.d.ts +6 -0
  87. package/esm/rules/animation-direction.js +7 -0
  88. package/esm/rules/animation-direction.js.map +1 -0
  89. package/esm/rules/animation-duration.d.ts +7 -0
  90. package/esm/rules/animation-duration.js +8 -0
  91. package/esm/rules/animation-duration.js.map +1 -0
  92. package/esm/rules/animation-fill-mode.d.ts +6 -0
  93. package/esm/rules/animation-fill-mode.js +7 -0
  94. package/esm/rules/animation-fill-mode.js.map +1 -0
  95. package/esm/rules/animation-iteration-count.d.ts +7 -0
  96. package/esm/rules/animation-iteration-count.js +8 -0
  97. package/esm/rules/animation-iteration-count.js.map +1 -0
  98. package/esm/rules/animation-name.d.ts +6 -0
  99. package/esm/rules/animation-name.js +7 -0
  100. package/esm/rules/animation-name.js.map +1 -0
  101. package/esm/rules/animation-play-state.d.ts +6 -0
  102. package/esm/rules/animation-play-state.js +7 -0
  103. package/esm/rules/animation-play-state.js.map +1 -0
  104. package/esm/rules/animation-timing-function.d.ts +6 -0
  105. package/esm/rules/animation-timing-function.js +7 -0
  106. package/esm/rules/animation-timing-function.js.map +1 -0
  107. package/{rules → esm/rules}/animation.d.ts +3 -2
  108. package/esm/rules/animation.js +9 -0
  109. package/esm/rules/animation.js.map +1 -0
  110. package/esm/rules/appearance.d.ts +5 -0
  111. package/esm/rules/appearance.js +6 -0
  112. package/esm/rules/appearance.js.map +1 -0
  113. package/esm/rules/aspect-radio.d.ts +7 -0
  114. package/esm/rules/aspect-radio.js +8 -0
  115. package/esm/rules/aspect-radio.js.map +1 -0
  116. package/esm/rules/backdrop-filter.d.ts +11 -0
  117. package/esm/rules/backdrop-filter.js +26 -0
  118. package/esm/rules/backdrop-filter.js.map +1 -0
  119. package/esm/rules/background-attachment.d.ts +6 -0
  120. package/esm/rules/background-attachment.js +7 -0
  121. package/esm/rules/background-attachment.js.map +1 -0
  122. package/esm/rules/background-blend-mode.d.ts +5 -0
  123. package/esm/rules/background-blend-mode.js +6 -0
  124. package/esm/rules/background-blend-mode.js.map +1 -0
  125. package/esm/rules/background-clip.d.ts +9 -0
  126. package/esm/rules/background-clip.js +13 -0
  127. package/esm/rules/background-clip.js.map +1 -0
  128. package/{rules → esm/rules}/background-color.d.ts +3 -2
  129. package/esm/rules/background-color.js +9 -0
  130. package/esm/rules/background-color.js.map +1 -0
  131. package/{rules → esm/rules}/background-image.d.ts +3 -2
  132. package/esm/rules/background-image.js +8 -0
  133. package/esm/rules/background-image.js.map +1 -0
  134. package/esm/rules/background-origin.d.ts +6 -0
  135. package/esm/rules/background-origin.js +7 -0
  136. package/esm/rules/background-origin.js.map +1 -0
  137. package/esm/rules/background-position.d.ts +7 -0
  138. package/esm/rules/background-position.js +8 -0
  139. package/esm/rules/background-position.js.map +1 -0
  140. package/esm/rules/background-repeat.d.ts +6 -0
  141. package/esm/rules/background-repeat.js +7 -0
  142. package/esm/rules/background-repeat.js.map +1 -0
  143. package/esm/rules/background-size.d.ts +6 -0
  144. package/esm/rules/background-size.js +7 -0
  145. package/esm/rules/background-size.js.map +1 -0
  146. package/{rules → esm/rules}/background.d.ts +3 -2
  147. package/esm/rules/background.js +9 -0
  148. package/esm/rules/background.js.map +1 -0
  149. package/esm/rules/border-collapse.d.ts +6 -0
  150. package/esm/rules/border-collapse.js +7 -0
  151. package/esm/rules/border-collapse.js.map +1 -0
  152. package/{rules → esm/rules}/border-color.d.ts +2 -2
  153. package/esm/rules/border-color.js +15 -0
  154. package/esm/rules/border-color.js.map +1 -0
  155. package/esm/rules/border-image-outset.d.ts +5 -0
  156. package/esm/rules/border-image-outset.js +6 -0
  157. package/esm/rules/border-image-outset.js.map +1 -0
  158. package/esm/rules/border-image-repeat.d.ts +6 -0
  159. package/esm/rules/border-image-repeat.js +7 -0
  160. package/esm/rules/border-image-repeat.js.map +1 -0
  161. package/esm/rules/border-image-slice.d.ts +6 -0
  162. package/esm/rules/border-image-slice.js +7 -0
  163. package/esm/rules/border-image-slice.js.map +1 -0
  164. package/esm/rules/border-image-source.d.ts +6 -0
  165. package/esm/rules/border-image-source.js +7 -0
  166. package/esm/rules/border-image-source.js.map +1 -0
  167. package/esm/rules/border-image-width.d.ts +6 -0
  168. package/esm/rules/border-image-width.js +7 -0
  169. package/esm/rules/border-image-width.js.map +1 -0
  170. package/esm/rules/border-image.d.ts +6 -0
  171. package/esm/rules/border-image.js +7 -0
  172. package/esm/rules/border-image.js.map +1 -0
  173. package/esm/rules/border-radius.d.ts +9 -0
  174. package/esm/rules/border-radius.js +74 -0
  175. package/esm/rules/border-radius.js.map +1 -0
  176. package/esm/rules/border-spacing.d.ts +5 -0
  177. package/esm/rules/border-spacing.js +6 -0
  178. package/esm/rules/border-spacing.js.map +1 -0
  179. package/esm/rules/border-style.d.ts +9 -0
  180. package/esm/rules/border-style.js +13 -0
  181. package/esm/rules/border-style.js.map +1 -0
  182. package/esm/rules/border-width.d.ts +9 -0
  183. package/esm/rules/border-width.js +13 -0
  184. package/esm/rules/border-width.js.map +1 -0
  185. package/{rules → esm/rules}/border.d.ts +2 -2
  186. package/esm/rules/border.js +14 -0
  187. package/esm/rules/border.js.map +1 -0
  188. package/esm/rules/box-decoration-break.d.ts +9 -0
  189. package/esm/rules/box-decoration-break.js +13 -0
  190. package/esm/rules/box-decoration-break.js.map +1 -0
  191. package/{rules → esm/rules}/box-shadow.d.ts +3 -2
  192. package/esm/rules/box-shadow.js +8 -0
  193. package/esm/rules/box-shadow.js.map +1 -0
  194. package/esm/rules/box-sizing.d.ts +6 -0
  195. package/esm/rules/box-sizing.js +7 -0
  196. package/esm/rules/box-sizing.js.map +1 -0
  197. package/esm/rules/break-after.d.ts +5 -0
  198. package/esm/rules/break-after.js +6 -0
  199. package/esm/rules/break-after.js.map +1 -0
  200. package/esm/rules/break-before.d.ts +5 -0
  201. package/esm/rules/break-before.js +6 -0
  202. package/esm/rules/break-before.js.map +1 -0
  203. package/esm/rules/break-inside.d.ts +5 -0
  204. package/esm/rules/break-inside.js +6 -0
  205. package/esm/rules/break-inside.js.map +1 -0
  206. package/{rules → esm/rules}/caret-color.d.ts +3 -2
  207. package/esm/rules/caret-color.js +8 -0
  208. package/esm/rules/caret-color.js.map +1 -0
  209. package/esm/rules/clear.d.ts +5 -0
  210. package/esm/rules/clear.js +6 -0
  211. package/esm/rules/clear.js.map +1 -0
  212. package/esm/rules/clip-path.d.ts +6 -0
  213. package/esm/rules/clip-path.js +7 -0
  214. package/esm/rules/clip-path.js.map +1 -0
  215. package/{rules → esm/rules}/color.d.ts +3 -2
  216. package/esm/rules/color.js +9 -0
  217. package/esm/rules/color.js.map +1 -0
  218. package/esm/rules/column-span.d.ts +6 -0
  219. package/esm/rules/column-span.js +7 -0
  220. package/esm/rules/column-span.js.map +1 -0
  221. package/{rules → esm/rules}/columns.d.ts +3 -2
  222. package/esm/rules/columns.js +9 -0
  223. package/esm/rules/columns.js.map +1 -0
  224. package/esm/rules/contain.d.ts +5 -0
  225. package/esm/rules/contain.js +6 -0
  226. package/esm/rules/contain.js.map +1 -0
  227. package/esm/rules/content.d.ts +5 -0
  228. package/esm/rules/content.js +6 -0
  229. package/esm/rules/content.js.map +1 -0
  230. package/esm/rules/counter-increment.d.ts +6 -0
  231. package/esm/rules/counter-increment.js +7 -0
  232. package/esm/rules/counter-increment.js.map +1 -0
  233. package/esm/rules/cursor.d.ts +5 -0
  234. package/esm/rules/cursor.js +6 -0
  235. package/esm/rules/cursor.js.map +1 -0
  236. package/esm/rules/cx.d.ts +6 -0
  237. package/esm/rules/cx.js +7 -0
  238. package/esm/rules/cx.js.map +1 -0
  239. package/esm/rules/cy.d.ts +6 -0
  240. package/esm/rules/cy.js +7 -0
  241. package/esm/rules/cy.js.map +1 -0
  242. package/esm/rules/direction.d.ts +5 -0
  243. package/esm/rules/direction.js +6 -0
  244. package/esm/rules/direction.js.map +1 -0
  245. package/esm/rules/display.d.ts +6 -0
  246. package/esm/rules/display.js +7 -0
  247. package/esm/rules/display.js.map +1 -0
  248. package/{rules → esm/rules}/fill.d.ts +3 -2
  249. package/esm/rules/fill.js +8 -0
  250. package/esm/rules/fill.js.map +1 -0
  251. package/esm/rules/filter.d.ts +8 -0
  252. package/esm/rules/filter.js +20 -0
  253. package/esm/rules/filter.js.map +1 -0
  254. package/esm/rules/flex-basis.d.ts +5 -0
  255. package/esm/rules/flex-basis.js +6 -0
  256. package/esm/rules/flex-basis.js.map +1 -0
  257. package/esm/rules/flex-direction.d.ts +6 -0
  258. package/esm/rules/flex-direction.js +7 -0
  259. package/esm/rules/flex-direction.js.map +1 -0
  260. package/esm/rules/flex-grow.d.ts +6 -0
  261. package/esm/rules/flex-grow.js +7 -0
  262. package/esm/rules/flex-grow.js.map +1 -0
  263. package/esm/rules/flex-shrink.d.ts +6 -0
  264. package/esm/rules/flex-shrink.js +7 -0
  265. package/esm/rules/flex-shrink.js.map +1 -0
  266. package/esm/rules/flex-wrap.d.ts +6 -0
  267. package/esm/rules/flex-wrap.js +7 -0
  268. package/esm/rules/flex-wrap.js.map +1 -0
  269. package/esm/rules/flex.d.ts +7 -0
  270. package/esm/rules/flex.js +8 -0
  271. package/esm/rules/flex.js.map +1 -0
  272. package/esm/rules/float.d.ts +5 -0
  273. package/esm/rules/float.js +6 -0
  274. package/esm/rules/float.js.map +1 -0
  275. package/esm/rules/font-family.d.ts +6 -0
  276. package/esm/rules/font-family.js +7 -0
  277. package/esm/rules/font-family.js.map +1 -0
  278. package/esm/rules/font-size.d.ts +6 -0
  279. package/esm/rules/font-size.js +7 -0
  280. package/esm/rules/font-size.js.map +1 -0
  281. package/{rules → esm/rules}/font-smoothing.d.ts +2 -2
  282. package/esm/rules/font-smoothing.js +34 -0
  283. package/esm/rules/font-smoothing.js.map +1 -0
  284. package/esm/rules/font-style.d.ts +7 -0
  285. package/esm/rules/font-style.js +8 -0
  286. package/esm/rules/font-style.js.map +1 -0
  287. package/esm/rules/font-variant-numeric.d.ts +6 -0
  288. package/esm/rules/font-variant-numeric.js +7 -0
  289. package/esm/rules/font-variant-numeric.js.map +1 -0
  290. package/esm/rules/font-weight.d.ts +7 -0
  291. package/esm/rules/font-weight.js +8 -0
  292. package/esm/rules/font-weight.js.map +1 -0
  293. package/{rules → esm/rules}/font.d.ts +3 -2
  294. package/esm/rules/font.js +9 -0
  295. package/esm/rules/font.js.map +1 -0
  296. package/{rules → esm/rules}/gap.d.ts +2 -2
  297. package/esm/rules/gap.js +17 -0
  298. package/esm/rules/gap.js.map +1 -0
  299. package/esm/rules/grid-area.d.ts +7 -0
  300. package/esm/rules/grid-area.js +8 -0
  301. package/esm/rules/grid-area.js.map +1 -0
  302. package/esm/rules/grid-auto-columns.d.ts +6 -0
  303. package/esm/rules/grid-auto-columns.js +7 -0
  304. package/esm/rules/grid-auto-columns.js.map +1 -0
  305. package/esm/rules/grid-auto-flow.d.ts +6 -0
  306. package/esm/rules/grid-auto-flow.js +7 -0
  307. package/esm/rules/grid-auto-flow.js.map +1 -0
  308. package/esm/rules/grid-auto-rows.d.ts +5 -0
  309. package/esm/rules/grid-auto-rows.js +6 -0
  310. package/esm/rules/grid-auto-rows.js.map +1 -0
  311. package/esm/rules/grid-column-end.d.ts +7 -0
  312. package/esm/rules/grid-column-end.js +8 -0
  313. package/esm/rules/grid-column-end.js.map +1 -0
  314. package/esm/rules/grid-column-start.d.ts +7 -0
  315. package/esm/rules/grid-column-start.js +8 -0
  316. package/esm/rules/grid-column-start.js.map +1 -0
  317. package/{rules → esm/rules}/grid-column.d.ts +3 -2
  318. package/esm/rules/grid-column.js +14 -0
  319. package/esm/rules/grid-column.js.map +1 -0
  320. package/{rules → esm/rules}/grid-columns.d.ts +4 -3
  321. package/esm/rules/grid-columns.js +21 -0
  322. package/esm/rules/grid-columns.js.map +1 -0
  323. package/esm/rules/grid-row-end.d.ts +6 -0
  324. package/esm/rules/grid-row-end.js +7 -0
  325. package/esm/rules/grid-row-end.js.map +1 -0
  326. package/esm/rules/grid-row-start.d.ts +6 -0
  327. package/esm/rules/grid-row-start.js +7 -0
  328. package/esm/rules/grid-row-start.js.map +1 -0
  329. package/{rules → esm/rules}/grid-row.d.ts +3 -2
  330. package/esm/rules/grid-row.js +14 -0
  331. package/esm/rules/grid-row.js.map +1 -0
  332. package/esm/rules/grid-rows.d.ts +9 -0
  333. package/esm/rules/grid-rows.js +21 -0
  334. package/esm/rules/grid-rows.js.map +1 -0
  335. package/esm/rules/grid-template-areas.d.ts +5 -0
  336. package/esm/rules/grid-template-areas.js +6 -0
  337. package/esm/rules/grid-template-areas.js.map +1 -0
  338. package/esm/rules/grid-template-columns.d.ts +6 -0
  339. package/esm/rules/grid-template-columns.js +7 -0
  340. package/esm/rules/grid-template-columns.js.map +1 -0
  341. package/esm/rules/grid-template-rows.d.ts +5 -0
  342. package/esm/rules/grid-template-rows.js +6 -0
  343. package/esm/rules/grid-template-rows.js.map +1 -0
  344. package/esm/rules/grid-template.d.ts +6 -0
  345. package/esm/rules/grid-template.js +7 -0
  346. package/esm/rules/grid-template.js.map +1 -0
  347. package/esm/rules/grid.d.ts +6 -0
  348. package/esm/rules/grid.js +7 -0
  349. package/esm/rules/grid.js.map +1 -0
  350. package/esm/rules/group.d.ts +9 -0
  351. package/esm/rules/group.js +105 -0
  352. package/esm/rules/group.js.map +1 -0
  353. package/esm/rules/height.d.ts +6 -0
  354. package/esm/rules/height.js +7 -0
  355. package/esm/rules/height.js.map +1 -0
  356. package/esm/rules/inset.d.ts +9 -0
  357. package/esm/rules/inset.js +12 -0
  358. package/esm/rules/inset.js.map +1 -0
  359. package/esm/rules/isolation.d.ts +5 -0
  360. package/esm/rules/isolation.js +6 -0
  361. package/esm/rules/isolation.js.map +1 -0
  362. package/esm/rules/justify-content.d.ts +6 -0
  363. package/esm/rules/justify-content.js +7 -0
  364. package/esm/rules/justify-content.js.map +1 -0
  365. package/esm/rules/justify-items.d.ts +6 -0
  366. package/esm/rules/justify-items.js +7 -0
  367. package/esm/rules/justify-items.js.map +1 -0
  368. package/esm/rules/justify-self.d.ts +6 -0
  369. package/esm/rules/justify-self.js +7 -0
  370. package/esm/rules/justify-self.js.map +1 -0
  371. package/esm/rules/letter-spacing.d.ts +7 -0
  372. package/esm/rules/letter-spacing.js +8 -0
  373. package/esm/rules/letter-spacing.js.map +1 -0
  374. package/esm/rules/line-clamp.d.ts +9 -0
  375. package/esm/rules/line-clamp.js +12 -0
  376. package/esm/rules/line-clamp.js.map +1 -0
  377. package/esm/rules/line-height.d.ts +7 -0
  378. package/esm/rules/line-height.js +8 -0
  379. package/esm/rules/line-height.js.map +1 -0
  380. package/{rules → esm/rules}/lines.d.ts +2 -2
  381. package/esm/rules/lines.js +17 -0
  382. package/esm/rules/lines.js.map +1 -0
  383. package/esm/rules/list-style-image.d.ts +6 -0
  384. package/esm/rules/list-style-image.js +7 -0
  385. package/esm/rules/list-style-image.js.map +1 -0
  386. package/esm/rules/list-style-position.d.ts +6 -0
  387. package/esm/rules/list-style-position.js +7 -0
  388. package/esm/rules/list-style-position.js.map +1 -0
  389. package/esm/rules/list-style-type.d.ts +6 -0
  390. package/esm/rules/list-style-type.js +7 -0
  391. package/esm/rules/list-style-type.js.map +1 -0
  392. package/esm/rules/list-style.d.ts +6 -0
  393. package/esm/rules/list-style.js +7 -0
  394. package/esm/rules/list-style.js.map +1 -0
  395. package/{rules → esm/rules}/margin.d.ts +2 -2
  396. package/esm/rules/margin.js +14 -0
  397. package/esm/rules/margin.js.map +1 -0
  398. package/esm/rules/mask-image.d.ts +8 -0
  399. package/esm/rules/mask-image.js +12 -0
  400. package/esm/rules/mask-image.js.map +1 -0
  401. package/esm/rules/max-height.d.ts +6 -0
  402. package/esm/rules/max-height.js +7 -0
  403. package/esm/rules/max-height.js.map +1 -0
  404. package/esm/rules/max-width.d.ts +6 -0
  405. package/esm/rules/max-width.js +7 -0
  406. package/esm/rules/max-width.js.map +1 -0
  407. package/esm/rules/min-height.d.ts +6 -0
  408. package/esm/rules/min-height.js +7 -0
  409. package/esm/rules/min-height.js.map +1 -0
  410. package/esm/rules/min-width.d.ts +6 -0
  411. package/esm/rules/min-width.js +7 -0
  412. package/esm/rules/min-width.js.map +1 -0
  413. package/esm/rules/mix-blend-mode.d.ts +6 -0
  414. package/esm/rules/mix-blend-mode.js +7 -0
  415. package/esm/rules/mix-blend-mode.js.map +1 -0
  416. package/esm/rules/object-fit.d.ts +6 -0
  417. package/esm/rules/object-fit.js +7 -0
  418. package/esm/rules/object-fit.js.map +1 -0
  419. package/esm/rules/object-position.d.ts +6 -0
  420. package/esm/rules/object-position.js +7 -0
  421. package/esm/rules/object-position.js.map +1 -0
  422. package/esm/rules/opacity.d.ts +6 -0
  423. package/esm/rules/opacity.js +7 -0
  424. package/esm/rules/opacity.js.map +1 -0
  425. package/esm/rules/order.d.ts +7 -0
  426. package/esm/rules/order.js +9 -0
  427. package/esm/rules/order.js.map +1 -0
  428. package/{rules → esm/rules}/outline-color.d.ts +3 -2
  429. package/esm/rules/outline-color.js +8 -0
  430. package/esm/rules/outline-color.js.map +1 -0
  431. package/esm/rules/outline-offset.d.ts +5 -0
  432. package/esm/rules/outline-offset.js +6 -0
  433. package/esm/rules/outline-offset.js.map +1 -0
  434. package/esm/rules/outline-style.d.ts +6 -0
  435. package/esm/rules/outline-style.js +7 -0
  436. package/esm/rules/outline-style.js.map +1 -0
  437. package/esm/rules/outline-width.d.ts +6 -0
  438. package/esm/rules/outline-width.js +7 -0
  439. package/esm/rules/outline-width.js.map +1 -0
  440. package/esm/rules/outline.d.ts +7 -0
  441. package/esm/rules/outline.js +8 -0
  442. package/esm/rules/outline.js.map +1 -0
  443. package/{rules → esm/rules}/overflow.d.ts +2 -2
  444. package/esm/rules/overflow.js +27 -0
  445. package/esm/rules/overflow.js.map +1 -0
  446. package/{rules → esm/rules}/overscroll-behavior.d.ts +2 -2
  447. package/esm/rules/overscroll-behavior.js +16 -0
  448. package/esm/rules/overscroll-behavior.js.map +1 -0
  449. package/{rules → esm/rules}/padding.d.ts +2 -2
  450. package/esm/rules/padding.js +14 -0
  451. package/esm/rules/padding.js.map +1 -0
  452. package/esm/rules/place-content.d.ts +6 -0
  453. package/esm/rules/place-content.js +7 -0
  454. package/esm/rules/place-content.js.map +1 -0
  455. package/esm/rules/place-items.d.ts +6 -0
  456. package/esm/rules/place-items.js +7 -0
  457. package/esm/rules/place-items.js.map +1 -0
  458. package/esm/rules/place-self.d.ts +6 -0
  459. package/esm/rules/place-self.js +7 -0
  460. package/esm/rules/place-self.js.map +1 -0
  461. package/esm/rules/placement.d.ts +8 -0
  462. package/esm/rules/placement.js +30 -0
  463. package/esm/rules/placement.js.map +1 -0
  464. package/esm/rules/pointer-events.d.ts +5 -0
  465. package/esm/rules/pointer-events.js +6 -0
  466. package/esm/rules/pointer-events.js.map +1 -0
  467. package/esm/rules/position.d.ts +5 -0
  468. package/esm/rules/position.js +6 -0
  469. package/esm/rules/position.js.map +1 -0
  470. package/esm/rules/quotes.d.ts +5 -0
  471. package/esm/rules/quotes.js +6 -0
  472. package/esm/rules/quotes.js.map +1 -0
  473. package/esm/rules/resize.d.ts +5 -0
  474. package/esm/rules/resize.js +6 -0
  475. package/esm/rules/resize.js.map +1 -0
  476. package/esm/rules/rx.d.ts +6 -0
  477. package/esm/rules/rx.js +7 -0
  478. package/esm/rules/rx.js.map +1 -0
  479. package/esm/rules/ry.d.ts +6 -0
  480. package/esm/rules/ry.js +7 -0
  481. package/esm/rules/ry.js.map +1 -0
  482. package/esm/rules/scroll-behavior.d.ts +5 -0
  483. package/esm/rules/scroll-behavior.js +6 -0
  484. package/esm/rules/scroll-behavior.js.map +1 -0
  485. package/esm/rules/scroll-margin.d.ts +9 -0
  486. package/esm/rules/scroll-margin.js +46 -0
  487. package/esm/rules/scroll-margin.js.map +1 -0
  488. package/esm/rules/scroll-padding.d.ts +9 -0
  489. package/esm/rules/scroll-padding.js +46 -0
  490. package/esm/rules/scroll-padding.js.map +1 -0
  491. package/esm/rules/scroll-snap-align.d.ts +6 -0
  492. package/esm/rules/scroll-snap-align.js +7 -0
  493. package/esm/rules/scroll-snap-align.js.map +1 -0
  494. package/esm/rules/scroll-snap-stop.d.ts +6 -0
  495. package/esm/rules/scroll-snap-stop.js +7 -0
  496. package/esm/rules/scroll-snap-stop.js.map +1 -0
  497. package/esm/rules/scroll-snap-type.d.ts +6 -0
  498. package/esm/rules/scroll-snap-type.js +7 -0
  499. package/esm/rules/scroll-snap-type.js.map +1 -0
  500. package/esm/rules/shape-image-threshold.d.ts +6 -0
  501. package/esm/rules/shape-image-threshold.js +7 -0
  502. package/esm/rules/shape-image-threshold.js.map +1 -0
  503. package/esm/rules/shape-margin.d.ts +6 -0
  504. package/esm/rules/shape-margin.js +7 -0
  505. package/esm/rules/shape-margin.js.map +1 -0
  506. package/esm/rules/shape-outside.d.ts +6 -0
  507. package/esm/rules/shape-outside.js +7 -0
  508. package/esm/rules/shape-outside.js.map +1 -0
  509. package/{rules → esm/rules}/spacing.d.ts +2 -2
  510. package/esm/rules/spacing.js +49 -0
  511. package/esm/rules/spacing.js.map +1 -0
  512. package/esm/rules/stroke-dasharray.d.ts +5 -0
  513. package/esm/rules/stroke-dasharray.js +6 -0
  514. package/esm/rules/stroke-dasharray.js.map +1 -0
  515. package/esm/rules/stroke-dashoffset.d.ts +5 -0
  516. package/esm/rules/stroke-dashoffset.js +6 -0
  517. package/esm/rules/stroke-dashoffset.js.map +1 -0
  518. package/esm/rules/stroke-width.d.ts +6 -0
  519. package/esm/rules/stroke-width.js +7 -0
  520. package/esm/rules/stroke-width.js.map +1 -0
  521. package/esm/rules/stroke.d.ts +6 -0
  522. package/esm/rules/stroke.js +7 -0
  523. package/esm/rules/stroke.js.map +1 -0
  524. package/esm/rules/table-layout.d.ts +5 -0
  525. package/esm/rules/table-layout.js +6 -0
  526. package/esm/rules/table-layout.js.map +1 -0
  527. package/esm/rules/text-align.d.ts +6 -0
  528. package/esm/rules/text-align.js +7 -0
  529. package/esm/rules/text-align.js.map +1 -0
  530. package/{rules → esm/rules}/text-decoration-color.d.ts +3 -2
  531. package/esm/rules/text-decoration-color.js +8 -0
  532. package/esm/rules/text-decoration-color.js.map +1 -0
  533. package/esm/rules/text-decoration-line.d.ts +6 -0
  534. package/esm/rules/text-decoration-line.js +7 -0
  535. package/esm/rules/text-decoration-line.js.map +1 -0
  536. package/esm/rules/text-decoration-style.d.ts +6 -0
  537. package/esm/rules/text-decoration-style.js +7 -0
  538. package/esm/rules/text-decoration-style.js.map +1 -0
  539. package/esm/rules/text-decoration-thickness.d.ts +7 -0
  540. package/esm/rules/text-decoration-thickness.js +8 -0
  541. package/esm/rules/text-decoration-thickness.js.map +1 -0
  542. package/{rules → esm/rules}/text-decoration.d.ts +3 -2
  543. package/esm/rules/text-decoration.js +9 -0
  544. package/esm/rules/text-decoration.js.map +1 -0
  545. package/{rules → esm/rules}/text-fill-color.d.ts +2 -2
  546. package/esm/rules/text-fill-color.js +13 -0
  547. package/esm/rules/text-fill-color.js.map +1 -0
  548. package/esm/rules/text-indent.d.ts +5 -0
  549. package/esm/rules/text-indent.js +6 -0
  550. package/esm/rules/text-indent.js.map +1 -0
  551. package/esm/rules/text-orientation.d.ts +6 -0
  552. package/esm/rules/text-orientation.js +7 -0
  553. package/esm/rules/text-orientation.js.map +1 -0
  554. package/esm/rules/text-overflow.d.ts +6 -0
  555. package/esm/rules/text-overflow.js +7 -0
  556. package/esm/rules/text-overflow.js.map +1 -0
  557. package/esm/rules/text-rendering.d.ts +6 -0
  558. package/esm/rules/text-rendering.js +7 -0
  559. package/esm/rules/text-rendering.js.map +1 -0
  560. package/esm/rules/text-shadow.d.ts +6 -0
  561. package/esm/rules/text-shadow.js +7 -0
  562. package/esm/rules/text-shadow.js.map +1 -0
  563. package/{rules → esm/rules}/text-size.d.ts +2 -2
  564. package/esm/rules/text-size.js +18 -0
  565. package/esm/rules/text-size.js.map +1 -0
  566. package/{rules → esm/rules}/text-stroke-color.d.ts +2 -2
  567. package/esm/rules/text-stroke-color.js +13 -0
  568. package/esm/rules/text-stroke-color.js.map +1 -0
  569. package/{rules → esm/rules}/text-stroke-width.d.ts +2 -2
  570. package/esm/rules/text-stroke-width.js +11 -0
  571. package/esm/rules/text-stroke-width.js.map +1 -0
  572. package/{rules → esm/rules}/text-stroke.d.ts +2 -2
  573. package/esm/rules/text-stroke.js +11 -0
  574. package/esm/rules/text-stroke.js.map +1 -0
  575. package/esm/rules/text-transform.d.ts +6 -0
  576. package/esm/rules/text-transform.js +7 -0
  577. package/esm/rules/text-transform.js.map +1 -0
  578. package/esm/rules/text-underline-offset.d.ts +5 -0
  579. package/esm/rules/text-underline-offset.js +6 -0
  580. package/esm/rules/text-underline-offset.js.map +1 -0
  581. package/esm/rules/touch-action.d.ts +5 -0
  582. package/esm/rules/touch-action.js +6 -0
  583. package/esm/rules/touch-action.js.map +1 -0
  584. package/esm/rules/transform-box.d.ts +6 -0
  585. package/esm/rules/transform-box.js +7 -0
  586. package/esm/rules/transform-box.js.map +1 -0
  587. package/esm/rules/transform-origin.d.ts +7 -0
  588. package/esm/rules/transform-origin.js +8 -0
  589. package/esm/rules/transform-origin.js.map +1 -0
  590. package/esm/rules/transform-style.d.ts +6 -0
  591. package/esm/rules/transform-style.js +7 -0
  592. package/esm/rules/transform-style.js.map +1 -0
  593. package/esm/rules/transform.d.ts +9 -0
  594. package/esm/rules/transform.js +45 -0
  595. package/esm/rules/transform.js.map +1 -0
  596. package/esm/rules/transition-delay.d.ts +7 -0
  597. package/esm/rules/transition-delay.js +8 -0
  598. package/esm/rules/transition-delay.js.map +1 -0
  599. package/esm/rules/transition-duration.d.ts +7 -0
  600. package/esm/rules/transition-duration.js +8 -0
  601. package/esm/rules/transition-duration.js.map +1 -0
  602. package/esm/rules/transition-property.d.ts +6 -0
  603. package/esm/rules/transition-property.js +7 -0
  604. package/esm/rules/transition-property.js.map +1 -0
  605. package/esm/rules/transition-timing-function.d.ts +6 -0
  606. package/esm/rules/transition-timing-function.js +7 -0
  607. package/esm/rules/transition-timing-function.js.map +1 -0
  608. package/esm/rules/transition.d.ts +7 -0
  609. package/esm/rules/transition.js +8 -0
  610. package/esm/rules/transition.js.map +1 -0
  611. package/esm/rules/user-drag.d.ts +8 -0
  612. package/esm/rules/user-drag.js +12 -0
  613. package/esm/rules/user-drag.js.map +1 -0
  614. package/esm/rules/user-select.d.ts +8 -0
  615. package/esm/rules/user-select.js +12 -0
  616. package/esm/rules/user-select.js.map +1 -0
  617. package/{rules → esm/rules}/variable.d.ts +2 -2
  618. package/esm/rules/variable.js +12 -0
  619. package/esm/rules/variable.js.map +1 -0
  620. package/esm/rules/vertical-align.d.ts +6 -0
  621. package/esm/rules/vertical-align.js +7 -0
  622. package/esm/rules/vertical-align.js.map +1 -0
  623. package/esm/rules/visibility.d.ts +5 -0
  624. package/esm/rules/visibility.js +6 -0
  625. package/esm/rules/visibility.js.map +1 -0
  626. package/esm/rules/white-space.d.ts +6 -0
  627. package/esm/rules/white-space.js +7 -0
  628. package/esm/rules/white-space.js.map +1 -0
  629. package/esm/rules/width.d.ts +6 -0
  630. package/esm/rules/width.js +7 -0
  631. package/esm/rules/width.js.map +1 -0
  632. package/esm/rules/will-change.d.ts +5 -0
  633. package/esm/rules/will-change.js +6 -0
  634. package/esm/rules/will-change.js.map +1 -0
  635. package/esm/rules/word-break.d.ts +6 -0
  636. package/esm/rules/word-break.js +7 -0
  637. package/esm/rules/word-break.js.map +1 -0
  638. package/esm/rules/word-spacing.d.ts +6 -0
  639. package/esm/rules/word-spacing.js +7 -0
  640. package/esm/rules/word-spacing.js.map +1 -0
  641. package/esm/rules/writing-mode.d.ts +6 -0
  642. package/esm/rules/writing-mode.js +7 -0
  643. package/esm/rules/writing-mode.js.map +1 -0
  644. package/esm/rules/x.d.ts +6 -0
  645. package/esm/rules/x.js +7 -0
  646. package/esm/rules/x.js.map +1 -0
  647. package/esm/rules/y.d.ts +6 -0
  648. package/esm/rules/y.js +7 -0
  649. package/esm/rules/y.js.map +1 -0
  650. package/esm/rules/z-index.d.ts +7 -0
  651. package/esm/rules/z-index.js +8 -0
  652. package/esm/rules/z-index.js.map +1 -0
  653. package/esm/utils/concat-arrays.d.ts +1 -0
  654. package/esm/utils/concat-arrays.js +8 -0
  655. package/esm/utils/concat-arrays.js.map +1 -0
  656. package/esm/utils/get-border-props.d.ts +3 -0
  657. package/esm/utils/get-border-props.js +44 -0
  658. package/esm/utils/get-border-props.js.map +1 -0
  659. package/{utils → esm/utils}/get-css-property-text.d.ts +1 -1
  660. package/esm/utils/get-css-property-text.js +8 -0
  661. package/esm/utils/get-css-property-text.js.map +1 -0
  662. package/esm/utils/get-type.d.ts +7 -0
  663. package/esm/utils/get-type.js +10 -0
  664. package/esm/utils/get-type.js.map +1 -0
  665. package/esm/utils/hex-to-rgb.d.ts +1 -0
  666. package/esm/utils/hex-to-rgb.js +8 -0
  667. package/esm/utils/hex-to-rgb.js.map +1 -0
  668. package/esm/utils/is-plain-object.d.ts +8 -0
  669. package/esm/utils/is-plain-object.js +13 -0
  670. package/esm/utils/is-plain-object.js.map +1 -0
  671. package/esm/utils/is-symbol.d.ts +7 -0
  672. package/esm/utils/is-symbol.js +11 -0
  673. package/esm/utils/is-symbol.js.map +1 -0
  674. package/{utils → esm/utils}/normalize-css-calc-text.d.ts +0 -0
  675. package/esm/utils/normalize-css-calc-text.js +56 -0
  676. package/esm/utils/normalize-css-calc-text.js.map +1 -0
  677. package/esm/utils/parse-value-unit.d.ts +2 -0
  678. package/esm/utils/parse-value-unit.js +48 -0
  679. package/esm/utils/parse-value-unit.js.map +1 -0
  680. package/{utils → esm/utils}/parse-value.d.ts +3 -2
  681. package/esm/utils/parse-value.js +84 -0
  682. package/esm/utils/parse-value.js.map +1 -0
  683. package/esm/utils/rgb-to-hex.d.ts +1 -0
  684. package/esm/utils/rgb-to-hex.js +4 -0
  685. package/esm/utils/rgb-to-hex.js.map +1 -0
  686. package/index.cjs.js +3 -0
  687. package/index.cjs.js.map +7 -0
  688. package/index.js +3 -1
  689. package/index.js.map +7 -0
  690. package/package.json +51 -3
  691. package/breakpoints.js +0 -1
  692. package/color.scss +0 -1
  693. package/colors.js +0 -1
  694. package/configure.d.ts +0 -1
  695. package/constants/css-browser-prefix.d.ts +0 -3
  696. package/constants/css-property-keyword.d.ts +0 -206
  697. package/constants/direction.d.ts +0 -10
  698. package/constants/priority-selectors.d.ts +0 -1
  699. package/css.d.ts +0 -69
  700. package/default-config.d.ts +0 -2
  701. package/index.d.ts +0 -12
  702. package/init.d.ts +0 -3
  703. package/interfaces/config.d.ts +0 -14
  704. package/interfaces/css-property-info.d.ts +0 -5
  705. package/interfaces/media-feature-rule.d.ts +0 -7
  706. package/interfaces/media.d.ts +0 -8
  707. package/master-css.min.js +0 -1
  708. package/render.js +0 -1
  709. package/rule.d.ts +0 -53
  710. package/rules/align-content.d.ts +0 -5
  711. package/rules/align-items.d.ts +0 -5
  712. package/rules/align-self.d.ts +0 -5
  713. package/rules/animation-delay.d.ts +0 -6
  714. package/rules/animation-direction.d.ts +0 -5
  715. package/rules/animation-duration.d.ts +0 -6
  716. package/rules/animation-fill-mode.d.ts +0 -5
  717. package/rules/animation-iteration-count.d.ts +0 -6
  718. package/rules/animation-name.d.ts +0 -5
  719. package/rules/animation-play-state.d.ts +0 -5
  720. package/rules/animation-timing-function.d.ts +0 -5
  721. package/rules/appearance.d.ts +0 -4
  722. package/rules/aspect-radio.d.ts +0 -6
  723. package/rules/backdrop-filter.d.ts +0 -9
  724. package/rules/background-attachment.d.ts +0 -5
  725. package/rules/background-blend-mode.d.ts +0 -4
  726. package/rules/background-clip.d.ts +0 -8
  727. package/rules/background-origin.d.ts +0 -5
  728. package/rules/background-position.d.ts +0 -6
  729. package/rules/background-repeat.d.ts +0 -5
  730. package/rules/background-size.d.ts +0 -5
  731. package/rules/border-collapse.d.ts +0 -5
  732. package/rules/border-image-outset.d.ts +0 -4
  733. package/rules/border-image-repeat.d.ts +0 -5
  734. package/rules/border-image-slice.d.ts +0 -5
  735. package/rules/border-image-source.d.ts +0 -5
  736. package/rules/border-image-width.d.ts +0 -5
  737. package/rules/border-image.d.ts +0 -5
  738. package/rules/border-radius.d.ts +0 -9
  739. package/rules/border-spacing.d.ts +0 -4
  740. package/rules/border-style.d.ts +0 -9
  741. package/rules/border-width.d.ts +0 -9
  742. package/rules/box-decoration-break.d.ts +0 -8
  743. package/rules/box-sizing.d.ts +0 -5
  744. package/rules/break-after.d.ts +0 -4
  745. package/rules/break-before.d.ts +0 -4
  746. package/rules/break-inside.d.ts +0 -4
  747. package/rules/clear.d.ts +0 -4
  748. package/rules/clip-path.d.ts +0 -5
  749. package/rules/column-span.d.ts +0 -5
  750. package/rules/contain.d.ts +0 -4
  751. package/rules/content.d.ts +0 -4
  752. package/rules/counter-increment.d.ts +0 -5
  753. package/rules/cursor.d.ts +0 -4
  754. package/rules/cx.d.ts +0 -5
  755. package/rules/cy.d.ts +0 -5
  756. package/rules/direction.d.ts +0 -4
  757. package/rules/display.d.ts +0 -5
  758. package/rules/filter.d.ts +0 -6
  759. package/rules/flex-basis.d.ts +0 -4
  760. package/rules/flex-direction.d.ts +0 -5
  761. package/rules/flex-grow.d.ts +0 -5
  762. package/rules/flex-shrink.d.ts +0 -5
  763. package/rules/flex-wrap.d.ts +0 -5
  764. package/rules/flex.d.ts +0 -6
  765. package/rules/float.d.ts +0 -4
  766. package/rules/font-family.d.ts +0 -5
  767. package/rules/font-size.d.ts +0 -5
  768. package/rules/font-style.d.ts +0 -6
  769. package/rules/font-variant-numeric.d.ts +0 -5
  770. package/rules/font-weight.d.ts +0 -6
  771. package/rules/grid-area.d.ts +0 -6
  772. package/rules/grid-auto-columns.d.ts +0 -5
  773. package/rules/grid-auto-flow.d.ts +0 -5
  774. package/rules/grid-auto-rows.d.ts +0 -4
  775. package/rules/grid-column-end.d.ts +0 -6
  776. package/rules/grid-column-start.d.ts +0 -6
  777. package/rules/grid-row-end.d.ts +0 -5
  778. package/rules/grid-row-start.d.ts +0 -5
  779. package/rules/grid-rows.d.ts +0 -8
  780. package/rules/grid-template-areas.d.ts +0 -4
  781. package/rules/grid-template-columns.d.ts +0 -5
  782. package/rules/grid-template-rows.d.ts +0 -4
  783. package/rules/grid-template.d.ts +0 -5
  784. package/rules/grid.d.ts +0 -5
  785. package/rules/group.d.ts +0 -9
  786. package/rules/height.d.ts +0 -5
  787. package/rules/index.d.ts +0 -2
  788. package/rules/inset.d.ts +0 -8
  789. package/rules/isolation.d.ts +0 -4
  790. package/rules/justify-content.d.ts +0 -5
  791. package/rules/justify-items.d.ts +0 -5
  792. package/rules/justify-self.d.ts +0 -5
  793. package/rules/letter-spacing.d.ts +0 -6
  794. package/rules/line-height.d.ts +0 -6
  795. package/rules/list-style-image.d.ts +0 -5
  796. package/rules/list-style-position.d.ts +0 -5
  797. package/rules/list-style-type.d.ts +0 -5
  798. package/rules/list-style.d.ts +0 -5
  799. package/rules/mask-image.d.ts +0 -7
  800. package/rules/max-height.d.ts +0 -5
  801. package/rules/max-width.d.ts +0 -5
  802. package/rules/min-height.d.ts +0 -5
  803. package/rules/min-width.d.ts +0 -5
  804. package/rules/mix-blend-mode.d.ts +0 -5
  805. package/rules/object-fit.d.ts +0 -5
  806. package/rules/object-position.d.ts +0 -5
  807. package/rules/opacity.d.ts +0 -5
  808. package/rules/order.d.ts +0 -6
  809. package/rules/outline-offset.d.ts +0 -4
  810. package/rules/outline-style.d.ts +0 -5
  811. package/rules/outline-width.d.ts +0 -5
  812. package/rules/outline.d.ts +0 -6
  813. package/rules/place-content.d.ts +0 -5
  814. package/rules/place-items.d.ts +0 -5
  815. package/rules/place-self.d.ts +0 -5
  816. package/rules/placement.d.ts +0 -7
  817. package/rules/pointer-events.d.ts +0 -4
  818. package/rules/position.d.ts +0 -4
  819. package/rules/quotes.d.ts +0 -4
  820. package/rules/resize.d.ts +0 -4
  821. package/rules/rx.d.ts +0 -5
  822. package/rules/ry.d.ts +0 -5
  823. package/rules/scroll-behavior.d.ts +0 -4
  824. package/rules/scroll-margin.d.ts +0 -9
  825. package/rules/scroll-padding.d.ts +0 -9
  826. package/rules/scroll-snap-align.d.ts +0 -5
  827. package/rules/scroll-snap-stop.d.ts +0 -5
  828. package/rules/scroll-snap-type.d.ts +0 -5
  829. package/rules/shape-image-threshold.d.ts +0 -5
  830. package/rules/shape-margin.d.ts +0 -5
  831. package/rules/shape-outside.d.ts +0 -5
  832. package/rules/stroke-dasharray.d.ts +0 -4
  833. package/rules/stroke-dashoffset.d.ts +0 -4
  834. package/rules/stroke-width.d.ts +0 -5
  835. package/rules/stroke.d.ts +0 -5
  836. package/rules/table-layout.d.ts +0 -4
  837. package/rules/text-align.d.ts +0 -5
  838. package/rules/text-decoration-line.d.ts +0 -5
  839. package/rules/text-decoration-style.d.ts +0 -5
  840. package/rules/text-decoration-thickness.d.ts +0 -6
  841. package/rules/text-indent.d.ts +0 -4
  842. package/rules/text-orientation.d.ts +0 -5
  843. package/rules/text-overflow.d.ts +0 -5
  844. package/rules/text-rendering.d.ts +0 -5
  845. package/rules/text-shadow.d.ts +0 -5
  846. package/rules/text-transform.d.ts +0 -5
  847. package/rules/text-underline-offset.d.ts +0 -4
  848. package/rules/touch-action.d.ts +0 -4
  849. package/rules/transform-box.d.ts +0 -5
  850. package/rules/transform-origin.d.ts +0 -6
  851. package/rules/transform-style.d.ts +0 -5
  852. package/rules/transform.d.ts +0 -7
  853. package/rules/transition-delay.d.ts +0 -6
  854. package/rules/transition-duration.d.ts +0 -6
  855. package/rules/transition-property.d.ts +0 -5
  856. package/rules/transition-timing-function.d.ts +0 -5
  857. package/rules/transition.d.ts +0 -6
  858. package/rules/user-drag.d.ts +0 -7
  859. package/rules/user-select.d.ts +0 -7
  860. package/rules/vertical-align.d.ts +0 -5
  861. package/rules/visibility.d.ts +0 -4
  862. package/rules/white-space.d.ts +0 -5
  863. package/rules/width.d.ts +0 -5
  864. package/rules/will-change.d.ts +0 -4
  865. package/rules/word-break.d.ts +0 -5
  866. package/rules/word-spacing.d.ts +0 -5
  867. package/rules/writing-mode.d.ts +0 -5
  868. package/rules/x.d.ts +0 -5
  869. package/rules/y.d.ts +0 -5
  870. package/rules/z-index.d.ts +0 -6
  871. package/utils/get-border-props.d.ts +0 -3
  872. package/utils/parse-value-unit.d.ts +0 -1
package/esm/css.js ADDED
@@ -0,0 +1,981 @@
1
+ import { defaultConfig } from './config';
2
+ import { init } from './apis/init';
3
+ import { MasterCSSRule } from './rule';
4
+ const selectorSymbols = [',', '.', '#', '[', '!', '*', '>', '+', '~', ':', '@'];
5
+ const vendorPrefixSelectorRegExp = /^::-[a-z]+-/m;
6
+ const hasDocument = typeof document !== 'undefined';
7
+ let STYLE;
8
+ if (hasDocument) {
9
+ STYLE = document.createElement('style');
10
+ STYLE.title = 'master';
11
+ }
12
+ const MAX_WIDTH = 'max-width';
13
+ const MIN_WIDTH = 'min-width';
14
+ const ATTRIBUTES = 'attributes';
15
+ const isBrowser = typeof window !== 'undefined';
16
+ const MutationObserver = isBrowser
17
+ ? window.MutationObserver
18
+ : Object;
19
+ export default class MasterCSS extends MutationObserver {
20
+ config;
21
+ root;
22
+ static init = init;
23
+ static defaultConfig = defaultConfig;
24
+ static instances = [];
25
+ static root;
26
+ /**
27
+ * 全部 sheet 根據目前蒐集到的所有 DOM class 重新 findAndNew
28
+ */
29
+ static refresh(config) {
30
+ for (const eachInstance of this.instances) {
31
+ eachInstance.refresh(config);
32
+ }
33
+ }
34
+ style;
35
+ rules = [];
36
+ ruleOfClass = {};
37
+ countOfClass = {};
38
+ host;
39
+ ready = false;
40
+ semantics;
41
+ classes;
42
+ colorsThemesMap;
43
+ colorNames;
44
+ themeNames;
45
+ relationThemesMap;
46
+ relations;
47
+ selectors;
48
+ schemeMQL;
49
+ constructor(config = defaultConfig, root) {
50
+ super((mutationRecords) => {
51
+ // console.time('css engine');
52
+ const correctionOfClassName = {};
53
+ const attributeMutationRecords = [];
54
+ const updatedElements = [];
55
+ const unchangedElements = [];
56
+ /**
57
+ * 取得所有深層後代的 class names
58
+ */
59
+ const handleClassNameDeeply = (element, remove) => {
60
+ if (remove) {
61
+ element.classList.forEach(removeClassName);
62
+ }
63
+ else {
64
+ element.classList.forEach(addClassName);
65
+ }
66
+ const children = element.children;
67
+ for (let i = 0; i < children.length; i++) {
68
+ const eachChildren = children[i];
69
+ if (eachChildren.classList) {
70
+ updatedElements.push(eachChildren);
71
+ handleClassNameDeeply(eachChildren, remove);
72
+ }
73
+ }
74
+ };
75
+ const addClassName = (className) => {
76
+ if (className in correctionOfClassName) {
77
+ correctionOfClassName[className]++;
78
+ }
79
+ else {
80
+ correctionOfClassName[className] = 1;
81
+ }
82
+ };
83
+ const removeClassName = (className) => {
84
+ if (className in correctionOfClassName) {
85
+ correctionOfClassName[className]--;
86
+ }
87
+ else {
88
+ correctionOfClassName[className] = -1;
89
+ }
90
+ };
91
+ const handleNodes = (nodes, remove) => {
92
+ for (let i = 0; i < nodes.length; i++) {
93
+ const eachNode = nodes[i];
94
+ if (eachNode.classList && !updatedElements.includes(eachNode) && !unchangedElements.includes(eachNode)) {
95
+ if (eachNode.isConnected !== remove) {
96
+ updatedElements.push(eachNode);
97
+ handleClassNameDeeply(eachNode, remove);
98
+ }
99
+ else {
100
+ unchangedElements.push(eachNode);
101
+ }
102
+ }
103
+ }
104
+ };
105
+ for (let i = 0; i < mutationRecords.length; i++) {
106
+ const mutationRecord = mutationRecords[i];
107
+ const { addedNodes, removedNodes, type, target, oldValue } = mutationRecord;
108
+ if (type === ATTRIBUTES) {
109
+ /**
110
+ * 防止同樣的 MutationRecord 重複執行
111
+ * According to this history,
112
+ * MutationObserver was designed to work that way.
113
+ * Any call to setAttribute triggers a mutation,
114
+ * regardless of whether the value is being changed or set to the current value
115
+ */
116
+ if (target['className'] === oldValue // prevent same class to execute
117
+ || attributeMutationRecords
118
+ .find((eachAttributeMutationRecord) => eachAttributeMutationRecord.target === target)) {
119
+ continue;
120
+ }
121
+ else {
122
+ /**
123
+ * 第一個匹配到的 oldValue 一定是該批變動前的原始狀態值
124
+ */
125
+ attributeMutationRecords.push(mutationRecord);
126
+ }
127
+ }
128
+ else {
129
+ // 先判斷節點新增或移除
130
+ handleNodes(addedNodes, false);
131
+ handleNodes(removedNodes, true);
132
+ }
133
+ }
134
+ if (!attributeMutationRecords.length && !Object.keys(correctionOfClassName).length) {
135
+ // console.timeEnd('css engine');
136
+ return;
137
+ }
138
+ for (const { oldValue, target } of attributeMutationRecords) {
139
+ /**
140
+ * 如果被操作的元素中包含了屬性變更的目標,
141
+ * 則將該目標從 existedAttributeMutationTargets 中移除,
142
+ * 以防止執行接下來的屬性變更處理
143
+ *
144
+ * 該批 mutationRecords 中,某個 target 同時有 attribute 及 childList 的變更,
145
+ * 則以 childList 節點插入及移除的 target.className 為主
146
+ */
147
+ const updated = updatedElements.includes(target);
148
+ const classNames = target.classList;
149
+ const oldClassNames = oldValue ? oldValue.split(' ') : [];
150
+ if (updated) {
151
+ if (target.isConnected) {
152
+ continue;
153
+ }
154
+ else {
155
+ for (const oldClassName of oldClassNames) {
156
+ if (!classNames.contains(oldClassName)) {
157
+ removeClassName(oldClassName);
158
+ }
159
+ }
160
+ }
161
+ }
162
+ else {
163
+ if (target.isConnected) {
164
+ classNames.forEach((className) => {
165
+ if (!oldClassNames.includes(className)) {
166
+ addClassName(className);
167
+ }
168
+ });
169
+ for (const oldClassName of oldClassNames) {
170
+ if (!classNames.contains(oldClassName)) {
171
+ removeClassName(oldClassName);
172
+ }
173
+ }
174
+ }
175
+ else {
176
+ for (const oldClassName of oldClassNames) {
177
+ removeClassName(oldClassName);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ for (const className in correctionOfClassName) {
183
+ const correction = correctionOfClassName[className];
184
+ const count = (this.countOfClass[className] || 0) + correction;
185
+ if (count === 0) {
186
+ // remove
187
+ delete this.countOfClass[className];
188
+ /**
189
+ * class name 從 DOM tree 中被移除,
190
+ * 匹配並刪除對應的 rule
191
+ */
192
+ this.delete(className);
193
+ }
194
+ else {
195
+ if (!(className in this.countOfClass)) {
196
+ // add
197
+ /**
198
+ * 新 class name 被 connected 至 DOM tree,
199
+ * 匹配並創建對應的 Rule
200
+ */
201
+ this.findAndInsert(className);
202
+ }
203
+ this.countOfClass[className] = count;
204
+ }
205
+ }
206
+ // console.timeEnd('css engine');
207
+ });
208
+ this.config = config;
209
+ this.root = root;
210
+ this.cache();
211
+ if (hasDocument && root) {
212
+ const isDocumentRoot = root === document;
213
+ this.host = isDocumentRoot ? document.documentElement : root.host;
214
+ // sync theme
215
+ this.scheme = this.storageScheme || config.scheme.preference;
216
+ const container = isDocumentRoot ? document.head : root;
217
+ const styleSheets = isDocumentRoot ? document.styleSheets : root.styleSheets;
218
+ // @ts-ignore
219
+ for (const sheet of styleSheets) {
220
+ const { title, href, ownerNode } = sheet;
221
+ if (title === 'master'
222
+ || href && /master(?:\..+)?\.css/.test(href)) {
223
+ this.style = ownerNode;
224
+ }
225
+ }
226
+ if (this.style) {
227
+ for (let index = 0; index < this.style.sheet.cssRules.length; index++) {
228
+ const getRule = (cssRule) => {
229
+ if (cssRule.selectorText) {
230
+ const selectorTexts = cssRule.selectorText.split(', ');
231
+ const escapedClassNames = selectorTexts[0].split(' ');
232
+ for (let i = 0; i < escapedClassNames.length; i++) {
233
+ const eachSelectorText = escapedClassNames[i];
234
+ if (eachSelectorText[0] === '.') {
235
+ const escapedClassName = eachSelectorText.slice(1);
236
+ let className = '';
237
+ for (let j = 0; j < escapedClassName.length; j++) {
238
+ const char = escapedClassName[j];
239
+ const nextChar = escapedClassName[j + 1];
240
+ if (char === '\\') {
241
+ j++;
242
+ if (nextChar !== '\\') {
243
+ className += nextChar;
244
+ continue;
245
+ }
246
+ }
247
+ else if (selectorSymbols.includes(char)) {
248
+ break;
249
+ }
250
+ className += char;
251
+ }
252
+ if (!(className in this.ruleOfClass) && !(className in this.classes)) {
253
+ const currentRule = this.findAndNew(className);
254
+ if (currentRule)
255
+ return currentRule;
256
+ }
257
+ }
258
+ }
259
+ }
260
+ else if (cssRule.cssRules) {
261
+ for (let index = 0; index < cssRule.cssRules.length; index++) {
262
+ const currentRule = getRule(cssRule.cssRules[index]);
263
+ if (currentRule)
264
+ return currentRule;
265
+ }
266
+ }
267
+ };
268
+ const rule = getRule(this.style.sheet.cssRules[index]);
269
+ if (rule) {
270
+ this.rules.push(rule);
271
+ this.ruleOfClass[rule.className] = rule;
272
+ for (let i = 0; i < rule.natives.length; i++) {
273
+ rule.natives[i].cssRule = this.style.sheet.cssRules[index + i];
274
+ }
275
+ index += rule.natives.length - 1;
276
+ }
277
+ }
278
+ }
279
+ else {
280
+ this.style = STYLE.cloneNode();
281
+ /** 使用 prepend 而非 append 去降低 rules 類的優先層級,無法強制排在所有 <style> 之後 */
282
+ container.prepend(this.style);
283
+ }
284
+ }
285
+ MasterCSS.instances.push(this);
286
+ this.ready = true;
287
+ }
288
+ get storageScheme() {
289
+ const { storage } = this.config.scheme;
290
+ return localStorage.getItem(storage.key);
291
+ }
292
+ #scheme;
293
+ #theme;
294
+ set scheme(scheme) {
295
+ if (scheme !== this.#scheme) {
296
+ this.#scheme = scheme;
297
+ const { storage } = this.config.scheme;
298
+ if (scheme === 'system') {
299
+ // 按照系統的主題切換,目前只支援 light dark
300
+ this.schemeMQL = window.matchMedia('(prefers-color-scheme:dark)');
301
+ this.schemeMQL.addEventListener('change', this.onThemeChange);
302
+ this.theme = this.schemeMQL.matches ? 'dark' : 'light';
303
+ }
304
+ else {
305
+ this.removeSchemeListener();
306
+ this.theme = scheme;
307
+ }
308
+ if (this.storageScheme !== scheme && storage.sync) {
309
+ localStorage.setItem(storage.key, scheme);
310
+ }
311
+ if (this.ready) {
312
+ this.host.dispatchEvent(new CustomEvent('scheme', { detail: this }));
313
+ }
314
+ }
315
+ }
316
+ get scheme() {
317
+ return this.#scheme;
318
+ }
319
+ set theme(theme) {
320
+ if (theme !== this.#theme) {
321
+ if (this.#theme) {
322
+ this.host.classList.remove(this.#theme);
323
+ }
324
+ this.#theme = theme;
325
+ if (this.host === document.documentElement) {
326
+ this.host.style.colorScheme = theme;
327
+ }
328
+ this.host.classList.add(theme);
329
+ if (this.ready) {
330
+ this.host.dispatchEvent(new CustomEvent('theme', { detail: this }));
331
+ }
332
+ }
333
+ }
334
+ get theme() {
335
+ return this.#theme;
336
+ }
337
+ removeSchemeListener() {
338
+ if (this.schemeMQL) {
339
+ this.schemeMQL.removeEventListener('change', this.onThemeChange);
340
+ this.schemeMQL = null;
341
+ }
342
+ }
343
+ onThemeChange = (mediaQueryList) => {
344
+ this.theme = mediaQueryList.matches ? 'dark' : 'light';
345
+ };
346
+ cache() {
347
+ this.semantics = [];
348
+ this.classes = {};
349
+ this.colorsThemesMap = {};
350
+ this.relationThemesMap = {};
351
+ this.relations = {};
352
+ this.colorNames = [];
353
+ this.themeNames = [''];
354
+ this.selectors = {};
355
+ const { semantics, classes, selectors, themes, colors } = this.config;
356
+ function escapeString(str) {
357
+ return str.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
358
+ }
359
+ if (semantics) {
360
+ for (const semanticName in semantics) {
361
+ this.semantics.push([new RegExp('^' + escapeString(semanticName) + '(?=!|\\*|>|\\+|~|:|\\[|@|_|\\.|$)', 'm'), semanticName]);
362
+ }
363
+ }
364
+ if (selectors) {
365
+ for (const [replacedSelectorText, newSelectorText] of Object.entries(selectors)) {
366
+ const regexp = new RegExp(escapeString(replacedSelectorText) + '(?![a-z-])');
367
+ for (const eachNewSelectorText of Array.isArray(newSelectorText) ? newSelectorText : [newSelectorText]) {
368
+ const vendor = eachNewSelectorText.match(vendorPrefixSelectorRegExp)?.[0] ?? '';
369
+ let selectorValues = this.selectors[vendor];
370
+ if (!selectorValues) {
371
+ selectorValues = this.selectors[vendor] = [];
372
+ }
373
+ let currentSelectValue = selectorValues.find(([_valueRegexp]) => _valueRegexp === regexp);
374
+ if (!currentSelectValue) {
375
+ currentSelectValue = [regexp, []];
376
+ selectorValues.push(currentSelectValue);
377
+ }
378
+ currentSelectValue[1].push(eachNewSelectorText);
379
+ }
380
+ }
381
+ }
382
+ const semanticNames = [
383
+ ...(classes ? Object.keys(classes) : []),
384
+ ...((themes && !Array.isArray(themes))
385
+ ? Object.entries(themes).flatMap(([_, { classes }]) => classes ? Object.keys(classes) : [])
386
+ : [])
387
+ ];
388
+ const handleSemanticName = (semanticName) => {
389
+ if (semanticName in this.classes)
390
+ return;
391
+ const currentClass = this.classes[semanticName] = [];
392
+ const handleClassNames = (theme, className) => {
393
+ if (!className)
394
+ return;
395
+ const classNames = Array.isArray(className)
396
+ ? className
397
+ : className
398
+ .replace(/(?:\n(?:\s*))+/g, ' ')
399
+ .trim()
400
+ .split(' ');
401
+ for (const eachClassName of classNames) {
402
+ const handle = (className) => {
403
+ if (className in this.relationThemesMap) {
404
+ if (theme in this.relationThemesMap[className]) {
405
+ this.relationThemesMap[className][theme].push(semanticName);
406
+ }
407
+ else {
408
+ this.relationThemesMap[className][theme] = [semanticName];
409
+ }
410
+ }
411
+ else {
412
+ this.relationThemesMap[className] = { [theme]: [semanticName] };
413
+ }
414
+ if (!currentClass.includes(className)) {
415
+ currentClass.push(className);
416
+ }
417
+ };
418
+ if (semanticNames.includes(eachClassName)) {
419
+ handleSemanticName(eachClassName);
420
+ for (const parentClassName of this.classes[eachClassName]) {
421
+ handle(parentClassName);
422
+ }
423
+ }
424
+ else {
425
+ handle(eachClassName);
426
+ }
427
+ }
428
+ };
429
+ handleClassNames('', classes?.[semanticName]);
430
+ if (themes && !Array.isArray(themes)) {
431
+ for (const [eachTheme, { classes }] of Object.entries(themes)) {
432
+ handleClassNames(eachTheme, classes?.[semanticName]);
433
+ }
434
+ }
435
+ };
436
+ for (const eachSemanticName of semanticNames) {
437
+ handleSemanticName(eachSemanticName);
438
+ }
439
+ for (const className in this.relationThemesMap) {
440
+ const currentRelation = this.relations[className] = [];
441
+ for (const semanticNames of Object.values(this.relationThemesMap[className])) {
442
+ for (const eachSemanticName of semanticNames) {
443
+ if (!currentRelation.includes(eachSemanticName)) {
444
+ currentRelation.push(eachSemanticName);
445
+ }
446
+ }
447
+ }
448
+ }
449
+ const mergeColors = (theme, colors) => {
450
+ if (!colors)
451
+ return;
452
+ for (const colorName in colors) {
453
+ let levels = colors[colorName];
454
+ if (typeof levels === 'string') {
455
+ levels = { '': levels };
456
+ }
457
+ if (colorName in this.colorsThemesMap) {
458
+ const levelsThemes = this.colorsThemesMap[colorName];
459
+ for (const level in levels) {
460
+ const color = levels[level];
461
+ if (level in levelsThemes) {
462
+ levelsThemes[level][theme] = color;
463
+ }
464
+ else {
465
+ levelsThemes[level] = { [theme]: color };
466
+ }
467
+ }
468
+ }
469
+ else {
470
+ this.colorNames.push(colorName);
471
+ this.colorsThemesMap[colorName] = Object
472
+ .entries(levels)
473
+ .reduce((obj, [level, color]) => {
474
+ obj[level] = { [theme]: color };
475
+ return obj;
476
+ }, {});
477
+ }
478
+ }
479
+ };
480
+ mergeColors('', colors);
481
+ if (themes) {
482
+ if (Array.isArray(themes)) {
483
+ this.themeNames.push(...themes);
484
+ }
485
+ else {
486
+ for (const eachTheme in themes) {
487
+ const themeValue = themes[eachTheme];
488
+ mergeColors(eachTheme, themeValue.colors);
489
+ this.themeNames.push(eachTheme);
490
+ }
491
+ }
492
+ }
493
+ }
494
+ observe(options = { subtree: true, childList: true }) {
495
+ if (options.subtree) {
496
+ /**
497
+ * 待所有 DOM 結構完成解析後,開始繪製 MasterCSSRule 樣式
498
+ */
499
+ this.host
500
+ .querySelectorAll('[class]')
501
+ .forEach((element) => {
502
+ element.classList.forEach((className) => {
503
+ if (className in this.countOfClass) {
504
+ this.countOfClass[className]++;
505
+ }
506
+ else {
507
+ this.countOfClass[className] = 1;
508
+ this.findAndInsert(className);
509
+ }
510
+ });
511
+ });
512
+ }
513
+ super.observe(this.root, {
514
+ ...options,
515
+ attributes: true,
516
+ attributeOldValue: true,
517
+ attributeFilter: ['class'],
518
+ });
519
+ return this;
520
+ }
521
+ disconnect() {
522
+ super.disconnect();
523
+ // @ts-ignore
524
+ this.ruleOfClass = {};
525
+ // @ts-ignore
526
+ this.countOfClass = {};
527
+ this.rules.length = 0;
528
+ const sheet = this.style.sheet;
529
+ if (sheet) {
530
+ for (let i = sheet.cssRules.length - 1; i >= 0; i--) {
531
+ sheet.deleteRule(i);
532
+ }
533
+ }
534
+ }
535
+ /**
536
+ * 尋找匹配的 MasterCSSRule 生成實例
537
+ */
538
+ findAndNew(name) {
539
+ const findAndNewRule = (className) => {
540
+ if (className in this.ruleOfClass)
541
+ return this.ruleOfClass[className];
542
+ for (const EachRule of this.config.Rules) {
543
+ const matching = EachRule.match(className, this.colorNames);
544
+ if (matching)
545
+ return new EachRule(className, matching, this);
546
+ }
547
+ for (const eachSemanticEntry of this.semantics) {
548
+ if (className.match(eachSemanticEntry[0]))
549
+ return new MasterCSSRule(className, { origin: 'semantics', value: eachSemanticEntry[1] }, this);
550
+ }
551
+ };
552
+ return name in this.classes
553
+ ? this.classes[name]
554
+ .map(findAndNewRule)
555
+ .filter(eachRule => eachRule)
556
+ : findAndNewRule(name);
557
+ }
558
+ /**
559
+ * 根據目前蒐集到的所有 DOM class 重新 findAndNew
560
+ */
561
+ refresh(config) {
562
+ this.config = config;
563
+ this.cache();
564
+ if (!this.style) {
565
+ return;
566
+ }
567
+ const element = STYLE.cloneNode();
568
+ this.style.replaceWith(element);
569
+ // @ts-ignore
570
+ this.style = style;
571
+ this.rules.length = 0;
572
+ // @ts-ignore
573
+ this.ruleOfClass = {};
574
+ /**
575
+ * 拿當前所有的 classNames 按照最新的 colors, breakpoints, config.Rules 匹配並生成新的 style
576
+ * 所以 refresh 過後 rules 可能會變多也可能會變少
577
+ */
578
+ for (const name in this.countOfClass) {
579
+ this.findAndInsert(name);
580
+ }
581
+ }
582
+ destroy() {
583
+ const instances = MasterCSS.instances;
584
+ this.disconnect();
585
+ instances.splice(instances.indexOf(this), 1);
586
+ this.style.remove();
587
+ this.removeSchemeListener();
588
+ }
589
+ /**
590
+ * 1. where
591
+ * 2. normal
592
+ * 3. where selectors
593
+ * 4. normal selectors
594
+ * 5. media where
595
+ * 6. media normal
596
+ * 7. media selectors
597
+ * 8. media width where
598
+ * 9. media width
599
+ * 10. media width selectors
600
+ */
601
+ insert(rule) {
602
+ if (this.ruleOfClass[rule.className])
603
+ return;
604
+ const { validateRule } = this.config;
605
+ if (validateRule && !validateRule(rule, this)) {
606
+ return;
607
+ }
608
+ let index;
609
+ /**
610
+ * 必須按斷點值遞增,並透過索引插入,
611
+ * 以實現響應式先後套用的規則
612
+ * @example <1 <2 <3 ALL >=1 >=2 >=3
613
+ * @description
614
+ */
615
+ const endIndex = this.rules.length - 1;
616
+ const { media, order, prioritySelectorIndex, hasWhere, className } = rule;
617
+ const findPrioritySelectorInsertIndex = (rules, findStartIndex, findEndIndex, ignoreRule) => {
618
+ let sIndex = 0;
619
+ let eIndex;
620
+ // 1. 找尋目標陣列
621
+ if (findStartIndex) {
622
+ sIndex = rules.findIndex(findStartIndex);
623
+ }
624
+ if (findEndIndex) {
625
+ eIndex = rules.findIndex(findEndIndex);
626
+ }
627
+ if (sIndex === -1) {
628
+ sIndex = rules.length;
629
+ }
630
+ if (eIndex === undefined || eIndex === -1) {
631
+ eIndex = rules.length;
632
+ }
633
+ const targetRules = rules.slice(sIndex, eIndex);
634
+ // 2. 由目標陣列找尋插入點
635
+ for (let i = 0; i < targetRules.length; i++) {
636
+ const currentRule = targetRules[i];
637
+ if (currentRule.prioritySelectorIndex === -1 || ignoreRule && ignoreRule(currentRule))
638
+ continue;
639
+ if (currentRule.prioritySelectorIndex < prioritySelectorIndex
640
+ || currentRule.prioritySelectorIndex === prioritySelectorIndex
641
+ && (hasWhere && !currentRule.hasWhere
642
+ || currentRule.order >= order))
643
+ return sIndex + i;
644
+ }
645
+ return sIndex + targetRules.length;
646
+ };
647
+ if (media) {
648
+ const mediaStartIndex = this.rules.findIndex(eachRule => eachRule.media);
649
+ if (mediaStartIndex !== -1) {
650
+ const maxWidthFeature = media.features[MAX_WIDTH];
651
+ const minWidthFeature = media.features[MIN_WIDTH];
652
+ if (maxWidthFeature && minWidthFeature) {
653
+ /**
654
+ * 範圍越小 ( 越限定 越侷限 ) 越優先,
655
+ * 按照範圍 max-width - min-width 遞減排序
656
+ * find 第一個所遇到同樣 feature 且範圍值比自己大的 rule,
657
+ * 並插入在該 rule 之後,讓自己優先被套用
658
+ */
659
+ const range = maxWidthFeature.value - minWidthFeature.value;
660
+ for (let i = endIndex; i >= mediaStartIndex; i--) {
661
+ index = i;
662
+ const eachRule = this.rules[i];
663
+ const eachMedia = eachRule.media;
664
+ const eachMaxWidthFeature = eachMedia.features[MAX_WIDTH];
665
+ const eachMinWidthFeature = eachMedia.features[MIN_WIDTH];
666
+ if (!eachMaxWidthFeature || !eachMinWidthFeature) {
667
+ index++;
668
+ break;
669
+ }
670
+ const eachRange = eachMaxWidthFeature.value - eachMinWidthFeature.value;
671
+ if (eachRange === range) {
672
+ if (hasWhere !== eachRule.hasWhere)
673
+ continue;
674
+ if (prioritySelectorIndex !== -1) {
675
+ const sameRangeRules = [this.rules[i]];
676
+ for (let j = i - 1; j >= mediaStartIndex; j--) {
677
+ const currentMediaRule = this.rules[j];
678
+ if (currentMediaRule.hasWhere !== hasWhere)
679
+ break;
680
+ const currentMedia = currentMediaRule.media;
681
+ const currentMaxWidthFeature = currentMedia.features[MAX_WIDTH];
682
+ const currentMinWidthFeature = currentMedia.features[MIN_WIDTH];
683
+ if (!currentMaxWidthFeature
684
+ || !currentMinWidthFeature
685
+ || (currentMaxWidthFeature.value - currentMinWidthFeature.value !== eachRange))
686
+ break;
687
+ sameRangeRules.unshift(this.rules[j]);
688
+ }
689
+ index = findPrioritySelectorInsertIndex(this.rules, eachRule => eachRule.media && eachRule.prioritySelectorIndex !== -1 && eachRule.media.features[MIN_WIDTH] && eachRule.media.features[MAX_WIDTH]);
690
+ }
691
+ break;
692
+ }
693
+ else if (eachRange > range) {
694
+ break;
695
+ }
696
+ }
697
+ }
698
+ else if (minWidthFeature) {
699
+ /**
700
+ * find 第一個所遇到同樣 feature 且值比自己大的 rule,
701
+ * 並插入在該 rule 之後,讓自己優先被套用
702
+ */
703
+ for (let i = mediaStartIndex; i <= endIndex; i++) {
704
+ index = i;
705
+ const eachRule = this.rules[i];
706
+ const eachMedia = eachRule.media;
707
+ const eachMaxWidthFeature = eachMedia.features[MAX_WIDTH];
708
+ const eachMinWidthFeature = eachMedia.features[MIN_WIDTH];
709
+ if (eachMaxWidthFeature) {
710
+ /**
711
+ * 永遠插入在 range feature 前
712
+ */
713
+ if (eachMinWidthFeature) {
714
+ break;
715
+ }
716
+ else {
717
+ continue;
718
+ }
719
+ }
720
+ const value = eachMinWidthFeature?.value;
721
+ if (value === minWidthFeature.value) {
722
+ if (!hasWhere && eachRule.hasWhere) {
723
+ index++;
724
+ continue;
725
+ }
726
+ if (prioritySelectorIndex !== -1) {
727
+ index = findPrioritySelectorInsertIndex(this.rules, eachRule => eachRule.media, eachRule => eachRule.media && eachRule.prioritySelectorIndex !== -1 && eachRule.media.features[MIN_WIDTH] && eachRule.media.features[MAX_WIDTH], eachRule => !eachRule.media.features[MIN_WIDTH] && !eachRule.media.features[MAX_WIDTH]);
728
+ }
729
+ else {
730
+ for (let j = i; j <= endIndex; j++) {
731
+ const currentMediaRule = this.rules[j];
732
+ const currentMedia = currentMediaRule.media;
733
+ const currentMinWidthFeature = currentMedia.features[MIN_WIDTH];
734
+ const currentMaxWidthFeature = currentMedia.features[MAX_WIDTH];
735
+ if (currentMaxWidthFeature)
736
+ continue;
737
+ if (currentMediaRule.hasWhere !== hasWhere
738
+ || currentMinWidthFeature.value !== value
739
+ || currentMediaRule.order >= order)
740
+ break;
741
+ index = j + 1;
742
+ }
743
+ }
744
+ break;
745
+ }
746
+ else if (value > minWidthFeature.value) {
747
+ break;
748
+ }
749
+ else {
750
+ index++;
751
+ }
752
+ }
753
+ }
754
+ else if (maxWidthFeature) {
755
+ /**
756
+ * find 第一個所遇到同樣 feature 且值比自己大的 rule,
757
+ * 並插入在該 rule 之後,讓自己優先被套用
758
+ */
759
+ for (let i = endIndex; i >= mediaStartIndex; i--) {
760
+ index = i;
761
+ const eachRule = this.rules[i];
762
+ const eachMedia = eachRule.media;
763
+ const eachMaxWidthFeature = eachMedia.features[MAX_WIDTH];
764
+ const eachMinWidthFeature = eachMedia.features[MIN_WIDTH];
765
+ if (eachMinWidthFeature) {
766
+ /**
767
+ * 永遠插入在 range feature 前
768
+ */
769
+ continue;
770
+ }
771
+ const value = eachMaxWidthFeature?.value;
772
+ if (!value || value > maxWidthFeature.value) {
773
+ index++;
774
+ break;
775
+ }
776
+ else if (value === maxWidthFeature.value) {
777
+ if (hasWhere && !eachRule.hasWhere)
778
+ continue;
779
+ if (prioritySelectorIndex !== -1) {
780
+ index = findPrioritySelectorInsertIndex(this.rules, eachRule => eachRule.media, eachRule => eachRule.media && eachRule.prioritySelectorIndex !== -1 && eachRule.media.features[MIN_WIDTH] && eachRule.media.features[MAX_WIDTH], eachRule => !eachRule.media.features[MIN_WIDTH] && !eachRule.media.features[MAX_WIDTH]);
781
+ }
782
+ else {
783
+ const sameRangeRules = [this.rules[i]];
784
+ for (let j = i - 1; j >= mediaStartIndex; j--) {
785
+ const currentMediaRule = this.rules[j];
786
+ const currentMedia = currentMediaRule.media;
787
+ const currentMinWidthFeature = currentMedia.features[MIN_WIDTH];
788
+ const currentMaxWidthFeature = currentMedia.features[MAX_WIDTH];
789
+ if (!currentMinWidthFeature
790
+ && (!currentMaxWidthFeature
791
+ || currentMaxWidthFeature.value !== value
792
+ || currentMediaRule.hasWhere !== hasWhere))
793
+ break;
794
+ sameRangeRules.unshift(currentMediaRule);
795
+ }
796
+ for (let j = 0; j < sameRangeRules.length; j++) {
797
+ const currentMediaRule = sameRangeRules[j];
798
+ if (currentMediaRule.media.features[MIN_WIDTH])
799
+ continue;
800
+ if (currentMediaRule.order >= order)
801
+ break;
802
+ index = i - sameRangeRules.length + 2 + j;
803
+ }
804
+ }
805
+ break;
806
+ }
807
+ }
808
+ }
809
+ }
810
+ /**
811
+ * 如果找不到目標位置則插在最後面
812
+ */
813
+ if (index === undefined) {
814
+ if (mediaStartIndex === -1) {
815
+ // 無任何 media 時,優先級最高
816
+ index = endIndex + 1;
817
+ }
818
+ else if (prioritySelectorIndex !== -1) {
819
+ // 含有優先 selector
820
+ index = mediaStartIndex +
821
+ findPrioritySelectorInsertIndex(this.rules.slice(mediaStartIndex), undefined, eachRule => eachRule.media.features[MAX_WIDTH] || eachRule.media.features[MIN_WIDTH]);
822
+ }
823
+ else if (hasWhere) {
824
+ // 不含優先 selector,且含有 where,優先級最低
825
+ let i = mediaStartIndex;
826
+ for (; i < this.rules.length; i++) {
827
+ const eachRule = this.rules[i];
828
+ if (eachRule.prioritySelectorIndex !== -1 || !eachRule.hasWhere || eachRule.order >= order) {
829
+ index = i;
830
+ break;
831
+ }
832
+ }
833
+ if (index === undefined) {
834
+ index = i;
835
+ }
836
+ }
837
+ else {
838
+ // 不含優先 selector,且不含有 where,優先級緊接非 min-width / max-width 的 where 之後
839
+ for (let i = mediaStartIndex; i <= endIndex; i++) {
840
+ index = i;
841
+ const eachRule = this.rules[i];
842
+ const eachMedia = eachRule.media;
843
+ if (eachRule.prioritySelectorIndex !== -1 || eachMedia.features[MAX_WIDTH] || eachMedia.features[MIN_WIDTH])
844
+ break;
845
+ if (eachRule.hasWhere) {
846
+ index++;
847
+ }
848
+ else if (eachRule.order >= order) {
849
+ break;
850
+ }
851
+ }
852
+ }
853
+ }
854
+ }
855
+ else {
856
+ if (prioritySelectorIndex === -1) {
857
+ // 不含優先 selector
858
+ if (hasWhere) {
859
+ // 含有 where,優先級最低
860
+ index = this.rules.findIndex(eachRule => !eachRule.hasWhere
861
+ || eachRule.media
862
+ || eachRule.prioritySelectorIndex !== -1
863
+ || eachRule.order >= order);
864
+ if (index === -1) {
865
+ index = endIndex + 1;
866
+ }
867
+ }
868
+ else {
869
+ // 不含 where,優先級緊接 where 之後
870
+ let i = 0;
871
+ for (; i < this.rules.length; i++) {
872
+ const eachRule = this.rules[i];
873
+ if (eachRule.media || !eachRule.hasWhere && (eachRule.order >= order || eachRule.prioritySelectorIndex !== -1)) {
874
+ index = i;
875
+ break;
876
+ }
877
+ }
878
+ if (index === undefined) {
879
+ index = i;
880
+ }
881
+ }
882
+ }
883
+ else {
884
+ // 含有優先 selector
885
+ index = findPrioritySelectorInsertIndex(this.rules, undefined, eachRule => eachRule.media);
886
+ }
887
+ }
888
+ this.rules.splice(index, 0, rule);
889
+ this.ruleOfClass[className] = rule;
890
+ // 只在瀏覽器端運行
891
+ if (this.style) {
892
+ const sheet = this.style.sheet;
893
+ let cssRuleIndex = 0;
894
+ const getCssRuleIndex = (index) => {
895
+ const previousRule = this.rules[index];
896
+ if (previousRule) {
897
+ if (!previousRule.natives.length)
898
+ return getCssRuleIndex(index - 1);
899
+ const lastNativeCssRule = previousRule.natives[previousRule.natives.length - 1].cssRule;
900
+ for (let i = 0; i < sheet.cssRules.length; i++) {
901
+ if (sheet.cssRules[i] === lastNativeCssRule) {
902
+ cssRuleIndex = i + 1;
903
+ break;
904
+ }
905
+ }
906
+ }
907
+ };
908
+ getCssRuleIndex(index - 1);
909
+ for (let i = 0; i < rule.natives.length;) {
910
+ try {
911
+ const native = rule.natives[i];
912
+ sheet.insertRule(native.text, cssRuleIndex);
913
+ native.cssRule = sheet.cssRules[cssRuleIndex++];
914
+ i++;
915
+ }
916
+ catch (error) {
917
+ console.error(error);
918
+ rule.natives.splice(i, 1);
919
+ }
920
+ }
921
+ }
922
+ }
923
+ delete(className) {
924
+ /**
925
+ * class name 從 DOM tree 中被移除,
926
+ * 匹配並刪除對應的 rule
927
+ */
928
+ const sheet = this.style.sheet;
929
+ const deleteRule = (name) => {
930
+ const rule = this.ruleOfClass[name];
931
+ if (!rule
932
+ || name in this.relations && this.relations[name].some(eachClassName => eachClassName in this.countOfClass))
933
+ return;
934
+ if (rule.natives.length) {
935
+ const firstNative = rule.natives[0];
936
+ for (let index = 0; index < sheet.cssRules.length; index++) {
937
+ const eachCssRule = sheet.cssRules[index];
938
+ if (eachCssRule === firstNative.cssRule) {
939
+ for (let i = 0; i < rule.natives.length; i++) {
940
+ sheet.deleteRule(index);
941
+ }
942
+ this.rules.splice(this.rules.indexOf(rule), 1);
943
+ break;
944
+ }
945
+ }
946
+ }
947
+ delete this.ruleOfClass[name];
948
+ };
949
+ if (className in this.classes) {
950
+ for (const eachClassName of this.classes[className]) {
951
+ if (!(eachClassName in this.countOfClass)) {
952
+ deleteRule(eachClassName);
953
+ }
954
+ }
955
+ delete this.ruleOfClass[className];
956
+ }
957
+ else {
958
+ deleteRule(className);
959
+ }
960
+ }
961
+ findAndInsert(className) {
962
+ const rule = this.findAndNew(className);
963
+ if (Array.isArray(rule)) {
964
+ for (const eachRule of rule) {
965
+ this.insert(eachRule);
966
+ }
967
+ }
968
+ else if (rule) {
969
+ this.insert(rule);
970
+ }
971
+ }
972
+ get text() {
973
+ return this.rules.map((eachRule) => eachRule.natives
974
+ .map((eachNativeRule) => eachNativeRule.text)
975
+ .join('')).join('');
976
+ }
977
+ }
978
+ if (isBrowser) {
979
+ window.MasterCSS = MasterCSS;
980
+ }
981
+ //# sourceMappingURL=css.js.map