@master/css 2.0.0-beta.6 → 2.0.0-beta.8

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 (689) hide show
  1. package/dist/{esm/apis → apis}/configure.d.ts +0 -0
  2. package/dist/{esm/apis → apis}/extend.d.ts +0 -0
  3. package/dist/{esm/apis → apis}/fill-color-scale.d.ts +0 -0
  4. package/dist/{esm/apis → apis}/init.d.ts +0 -0
  5. package/dist/{esm/apis → apis}/render-from-html.d.ts +0 -0
  6. package/dist/{esm/apis → apis}/render-into-html.d.ts +0 -0
  7. package/dist/{esm/apis → apis}/render.d.ts +0 -0
  8. package/dist/{esm/config → config}/breakpoints.d.ts +0 -0
  9. package/dist/{esm/config → config}/colors.d.ts +0 -0
  10. package/dist/{esm/config → config}/index.d.ts +0 -0
  11. package/dist/{esm/config → config}/root-size.d.ts +0 -0
  12. package/dist/{esm/config → config}/rules.d.ts +0 -0
  13. package/dist/{esm/config → config}/scheme.d.ts +0 -0
  14. package/dist/{esm/config → config}/selectors.d.ts +0 -0
  15. package/dist/{esm/config → config}/semantics.d.ts +0 -0
  16. package/dist/{esm/config → config}/themes.d.ts +0 -0
  17. package/dist/{esm/config → config}/values.d.ts +0 -0
  18. package/dist/{esm/constants → constants}/start-symbol.d.ts +0 -0
  19. package/dist/{esm/css.d.ts → css.d.ts} +0 -0
  20. package/dist/index.browser.js +1 -2
  21. package/dist/index.browser.js.map +4 -4
  22. package/dist/index.cjs.js +1 -2
  23. package/dist/index.cjs.js.map +4 -4
  24. package/dist/{esm/index.d.ts → index.d.ts} +0 -0
  25. package/dist/index.esm.js +2 -0
  26. package/dist/index.esm.js.map +7 -0
  27. package/dist/polyfills/css-escape.d.ts +1 -0
  28. package/dist/{esm/rule.d.ts → rule.d.ts} +0 -0
  29. package/dist/{esm/rules → rules}/accent-color.d.ts +0 -0
  30. package/dist/{esm/rules → rules}/align-content.d.ts +0 -0
  31. package/dist/{esm/rules → rules}/align-items.d.ts +0 -0
  32. package/dist/{esm/rules → rules}/align-self.d.ts +0 -0
  33. package/dist/{esm/rules → rules}/animation-delay.d.ts +0 -0
  34. package/dist/{esm/rules → rules}/animation-direction.d.ts +0 -0
  35. package/dist/{esm/rules → rules}/animation-duration.d.ts +0 -0
  36. package/dist/{esm/rules → rules}/animation-fill-mode.d.ts +0 -0
  37. package/dist/{esm/rules → rules}/animation-iteration-count.d.ts +0 -0
  38. package/dist/{esm/rules → rules}/animation-name.d.ts +0 -0
  39. package/dist/{esm/rules → rules}/animation-play-state.d.ts +0 -0
  40. package/dist/{esm/rules → rules}/animation-timing-function.d.ts +0 -0
  41. package/dist/{esm/rules → rules}/animation.d.ts +0 -0
  42. package/dist/{esm/rules → rules}/appearance.d.ts +0 -0
  43. package/dist/{esm/rules → rules}/aspect-radio.d.ts +0 -0
  44. package/dist/{esm/rules → rules}/backdrop-filter.d.ts +0 -0
  45. package/dist/{esm/rules → rules}/background-attachment.d.ts +0 -0
  46. package/dist/{esm/rules → rules}/background-blend-mode.d.ts +0 -0
  47. package/dist/{esm/rules → rules}/background-clip.d.ts +0 -0
  48. package/dist/{esm/rules → rules}/background-color.d.ts +0 -0
  49. package/dist/{esm/rules → rules}/background-image.d.ts +0 -0
  50. package/dist/{esm/rules → rules}/background-origin.d.ts +0 -0
  51. package/dist/{esm/rules → rules}/background-position.d.ts +0 -0
  52. package/dist/{esm/rules → rules}/background-repeat.d.ts +0 -0
  53. package/dist/{esm/rules → rules}/background-size.d.ts +0 -0
  54. package/dist/{esm/rules → rules}/background.d.ts +0 -0
  55. package/dist/{esm/rules → rules}/border-collapse.d.ts +0 -0
  56. package/dist/{esm/rules → rules}/border-color.d.ts +0 -0
  57. package/dist/{esm/rules → rules}/border-image-outset.d.ts +0 -0
  58. package/dist/{esm/rules → rules}/border-image-repeat.d.ts +0 -0
  59. package/dist/{esm/rules → rules}/border-image-slice.d.ts +0 -0
  60. package/dist/{esm/rules → rules}/border-image-source.d.ts +0 -0
  61. package/dist/{esm/rules → rules}/border-image-width.d.ts +0 -0
  62. package/dist/{esm/rules → rules}/border-image.d.ts +0 -0
  63. package/dist/{esm/rules → rules}/border-radius.d.ts +0 -0
  64. package/dist/{esm/rules → rules}/border-spacing.d.ts +0 -0
  65. package/dist/{esm/rules → rules}/border-style.d.ts +0 -0
  66. package/dist/{esm/rules → rules}/border-width.d.ts +0 -0
  67. package/dist/{esm/rules → rules}/border.d.ts +0 -0
  68. package/dist/{esm/rules → rules}/box-decoration-break.d.ts +0 -0
  69. package/dist/{esm/rules → rules}/box-shadow.d.ts +0 -0
  70. package/dist/{esm/rules → rules}/box-sizing.d.ts +0 -0
  71. package/dist/{esm/rules → rules}/break-after.d.ts +0 -0
  72. package/dist/{esm/rules → rules}/break-before.d.ts +0 -0
  73. package/dist/{esm/rules → rules}/break-inside.d.ts +0 -0
  74. package/dist/{esm/rules → rules}/caret-color.d.ts +0 -0
  75. package/dist/{esm/rules → rules}/clear.d.ts +0 -0
  76. package/dist/{esm/rules → rules}/clip-path.d.ts +0 -0
  77. package/dist/{esm/rules → rules}/color.d.ts +0 -0
  78. package/dist/{esm/rules → rules}/column-span.d.ts +0 -0
  79. package/dist/{esm/rules → rules}/columns.d.ts +0 -0
  80. package/dist/{esm/rules → rules}/contain.d.ts +0 -0
  81. package/dist/{esm/rules → rules}/content.d.ts +0 -0
  82. package/dist/{esm/rules → rules}/counter-increment.d.ts +0 -0
  83. package/dist/{esm/rules → rules}/cursor.d.ts +0 -0
  84. package/dist/{esm/rules → rules}/cx.d.ts +0 -0
  85. package/dist/{esm/rules → rules}/cy.d.ts +0 -0
  86. package/dist/{esm/rules → rules}/direction.d.ts +0 -0
  87. package/dist/{esm/rules → rules}/display.d.ts +0 -0
  88. package/dist/{esm/rules → rules}/fill.d.ts +0 -0
  89. package/dist/{esm/rules → rules}/filter.d.ts +0 -0
  90. package/dist/{esm/rules → rules}/flex-basis.d.ts +0 -0
  91. package/dist/{esm/rules → rules}/flex-direction.d.ts +0 -0
  92. package/dist/{esm/rules → rules}/flex-grow.d.ts +0 -0
  93. package/dist/{esm/rules → rules}/flex-shrink.d.ts +0 -0
  94. package/dist/{esm/rules → rules}/flex-wrap.d.ts +0 -0
  95. package/dist/{esm/rules → rules}/flex.d.ts +0 -0
  96. package/dist/{esm/rules → rules}/float.d.ts +0 -0
  97. package/dist/{esm/rules → rules}/font-family.d.ts +0 -0
  98. package/dist/{esm/rules → rules}/font-size.d.ts +0 -0
  99. package/dist/{esm/rules → rules}/font-smoothing.d.ts +0 -0
  100. package/dist/{esm/rules → rules}/font-style.d.ts +0 -0
  101. package/dist/{esm/rules → rules}/font-variant-numeric.d.ts +0 -0
  102. package/dist/{esm/rules → rules}/font-weight.d.ts +0 -0
  103. package/dist/{esm/rules → rules}/font.d.ts +0 -0
  104. package/dist/{esm/rules → rules}/gap.d.ts +0 -0
  105. package/dist/{esm/rules → rules}/grid-area.d.ts +0 -0
  106. package/dist/{esm/rules → rules}/grid-auto-columns.d.ts +0 -0
  107. package/dist/{esm/rules → rules}/grid-auto-flow.d.ts +0 -0
  108. package/dist/{esm/rules → rules}/grid-auto-rows.d.ts +0 -0
  109. package/dist/{esm/rules → rules}/grid-column-end.d.ts +0 -0
  110. package/dist/{esm/rules → rules}/grid-column-start.d.ts +0 -0
  111. package/dist/{esm/rules → rules}/grid-column.d.ts +0 -0
  112. package/dist/{esm/rules → rules}/grid-columns.d.ts +0 -0
  113. package/dist/{esm/rules → rules}/grid-row-end.d.ts +0 -0
  114. package/dist/{esm/rules → rules}/grid-row-start.d.ts +0 -0
  115. package/dist/{esm/rules → rules}/grid-row.d.ts +0 -0
  116. package/dist/{esm/rules → rules}/grid-rows.d.ts +0 -0
  117. package/dist/{esm/rules → rules}/grid-template-areas.d.ts +0 -0
  118. package/dist/{esm/rules → rules}/grid-template-columns.d.ts +0 -0
  119. package/dist/{esm/rules → rules}/grid-template-rows.d.ts +0 -0
  120. package/dist/{esm/rules → rules}/grid-template.d.ts +0 -0
  121. package/dist/{esm/rules → rules}/grid.d.ts +0 -0
  122. package/dist/{esm/rules → rules}/group.d.ts +0 -0
  123. package/dist/{esm/rules → rules}/height.d.ts +0 -0
  124. package/dist/{esm/rules → rules}/inset.d.ts +0 -0
  125. package/dist/{esm/rules → rules}/isolation.d.ts +0 -0
  126. package/dist/{esm/rules → rules}/justify-content.d.ts +0 -0
  127. package/dist/{esm/rules → rules}/justify-items.d.ts +0 -0
  128. package/dist/{esm/rules → rules}/justify-self.d.ts +0 -0
  129. package/dist/{esm/rules → rules}/letter-spacing.d.ts +0 -0
  130. package/dist/{esm/rules → rules}/line-clamp.d.ts +0 -0
  131. package/dist/{esm/rules → rules}/line-height.d.ts +0 -0
  132. package/dist/{esm/rules → rules}/lines.d.ts +0 -0
  133. package/dist/{esm/rules → rules}/list-style-image.d.ts +0 -0
  134. package/dist/{esm/rules → rules}/list-style-position.d.ts +0 -0
  135. package/dist/{esm/rules → rules}/list-style-type.d.ts +0 -0
  136. package/dist/{esm/rules → rules}/list-style.d.ts +0 -0
  137. package/dist/{esm/rules → rules}/margin.d.ts +0 -0
  138. package/dist/{esm/rules → rules}/mask-image.d.ts +0 -0
  139. package/dist/{esm/rules → rules}/max-height.d.ts +0 -0
  140. package/dist/{esm/rules → rules}/max-width.d.ts +0 -0
  141. package/dist/{esm/rules → rules}/min-height.d.ts +0 -0
  142. package/dist/{esm/rules → rules}/min-width.d.ts +0 -0
  143. package/dist/{esm/rules → rules}/mix-blend-mode.d.ts +0 -0
  144. package/dist/{esm/rules → rules}/object-fit.d.ts +0 -0
  145. package/dist/{esm/rules → rules}/object-position.d.ts +0 -0
  146. package/dist/{esm/rules → rules}/opacity.d.ts +0 -0
  147. package/dist/{esm/rules → rules}/order.d.ts +0 -0
  148. package/dist/{esm/rules → rules}/outline-color.d.ts +0 -0
  149. package/dist/{esm/rules → rules}/outline-offset.d.ts +0 -0
  150. package/dist/{esm/rules → rules}/outline-style.d.ts +0 -0
  151. package/dist/{esm/rules → rules}/outline-width.d.ts +0 -0
  152. package/dist/{esm/rules → rules}/outline.d.ts +0 -0
  153. package/dist/{esm/rules → rules}/overflow.d.ts +0 -0
  154. package/dist/{esm/rules → rules}/overscroll-behavior.d.ts +0 -0
  155. package/dist/{esm/rules → rules}/padding.d.ts +0 -0
  156. package/dist/{esm/rules → rules}/place-content.d.ts +0 -0
  157. package/dist/{esm/rules → rules}/place-items.d.ts +0 -0
  158. package/dist/{esm/rules → rules}/place-self.d.ts +0 -0
  159. package/dist/{esm/rules → rules}/placement.d.ts +0 -0
  160. package/dist/{esm/rules → rules}/pointer-events.d.ts +0 -0
  161. package/dist/{esm/rules → rules}/position.d.ts +0 -0
  162. package/dist/{esm/rules → rules}/quotes.d.ts +0 -0
  163. package/dist/{esm/rules → rules}/resize.d.ts +0 -0
  164. package/dist/{esm/rules → rules}/rx.d.ts +0 -0
  165. package/dist/{esm/rules → rules}/ry.d.ts +0 -0
  166. package/dist/{esm/rules → rules}/scroll-behavior.d.ts +0 -0
  167. package/dist/{esm/rules → rules}/scroll-margin.d.ts +0 -0
  168. package/dist/{esm/rules → rules}/scroll-padding.d.ts +0 -0
  169. package/dist/{esm/rules → rules}/scroll-snap-align.d.ts +0 -0
  170. package/dist/{esm/rules → rules}/scroll-snap-stop.d.ts +0 -0
  171. package/dist/{esm/rules → rules}/scroll-snap-type.d.ts +0 -0
  172. package/dist/{esm/rules → rules}/shape-image-threshold.d.ts +0 -0
  173. package/dist/{esm/rules → rules}/shape-margin.d.ts +0 -0
  174. package/dist/{esm/rules → rules}/shape-outside.d.ts +0 -0
  175. package/dist/{esm/rules → rules}/spacing.d.ts +0 -0
  176. package/dist/{esm/rules → rules}/stroke-dasharray.d.ts +0 -0
  177. package/dist/{esm/rules → rules}/stroke-dashoffset.d.ts +0 -0
  178. package/dist/{esm/rules → rules}/stroke-width.d.ts +0 -0
  179. package/dist/{esm/rules → rules}/stroke.d.ts +0 -0
  180. package/dist/{esm/rules → rules}/table-layout.d.ts +0 -0
  181. package/dist/{esm/rules → rules}/text-align.d.ts +0 -0
  182. package/dist/{esm/rules → rules}/text-decoration-color.d.ts +0 -0
  183. package/dist/{esm/rules → rules}/text-decoration-line.d.ts +0 -0
  184. package/dist/{esm/rules → rules}/text-decoration-style.d.ts +0 -0
  185. package/dist/{esm/rules → rules}/text-decoration-thickness.d.ts +0 -0
  186. package/dist/{esm/rules → rules}/text-decoration.d.ts +0 -0
  187. package/dist/{esm/rules → rules}/text-fill-color.d.ts +0 -0
  188. package/dist/{esm/rules → rules}/text-indent.d.ts +0 -0
  189. package/dist/{esm/rules → rules}/text-orientation.d.ts +0 -0
  190. package/dist/{esm/rules → rules}/text-overflow.d.ts +0 -0
  191. package/dist/{esm/rules → rules}/text-rendering.d.ts +0 -0
  192. package/dist/{esm/rules → rules}/text-shadow.d.ts +0 -0
  193. package/dist/{esm/rules → rules}/text-size.d.ts +0 -0
  194. package/dist/{esm/rules → rules}/text-stroke-color.d.ts +0 -0
  195. package/dist/{esm/rules → rules}/text-stroke-width.d.ts +0 -0
  196. package/dist/{esm/rules → rules}/text-stroke.d.ts +0 -0
  197. package/dist/{esm/rules → rules}/text-transform.d.ts +0 -0
  198. package/dist/{esm/rules → rules}/text-underline-offset.d.ts +0 -0
  199. package/dist/{esm/rules → rules}/touch-action.d.ts +0 -0
  200. package/dist/{esm/rules → rules}/transform-box.d.ts +0 -0
  201. package/dist/{esm/rules → rules}/transform-origin.d.ts +0 -0
  202. package/dist/{esm/rules → rules}/transform-style.d.ts +0 -0
  203. package/dist/{esm/rules → rules}/transform.d.ts +0 -0
  204. package/dist/{esm/rules → rules}/transition-delay.d.ts +0 -0
  205. package/dist/{esm/rules → rules}/transition-duration.d.ts +0 -0
  206. package/dist/{esm/rules → rules}/transition-property.d.ts +0 -0
  207. package/dist/{esm/rules → rules}/transition-timing-function.d.ts +0 -0
  208. package/dist/{esm/rules → rules}/transition.d.ts +0 -0
  209. package/dist/{esm/rules → rules}/user-drag.d.ts +0 -0
  210. package/dist/{esm/rules → rules}/user-select.d.ts +0 -0
  211. package/dist/{esm/rules → rules}/variable.d.ts +0 -0
  212. package/dist/{esm/rules → rules}/vertical-align.d.ts +0 -0
  213. package/dist/{esm/rules → rules}/visibility.d.ts +0 -0
  214. package/dist/{esm/rules → rules}/white-space.d.ts +0 -0
  215. package/dist/{esm/rules → rules}/width.d.ts +0 -0
  216. package/dist/{esm/rules → rules}/will-change.d.ts +0 -0
  217. package/dist/{esm/rules → rules}/word-break.d.ts +0 -0
  218. package/dist/{esm/rules → rules}/word-spacing.d.ts +0 -0
  219. package/dist/{esm/rules → rules}/writing-mode.d.ts +0 -0
  220. package/dist/{esm/rules → rules}/x.d.ts +0 -0
  221. package/dist/{esm/rules → rules}/y.d.ts +0 -0
  222. package/dist/{esm/rules → rules}/z-index.d.ts +0 -0
  223. package/dist/{esm/utils → utils}/concat-arrays.d.ts +0 -0
  224. package/dist/{esm/utils → utils}/get-border-props.d.ts +0 -0
  225. package/dist/{esm/utils → utils}/get-css-property-text.d.ts +0 -0
  226. package/dist/{esm/utils → utils}/get-type.d.ts +0 -0
  227. package/dist/{esm/utils → utils}/hex-to-rgb.d.ts +0 -0
  228. package/dist/{esm/utils → utils}/is-plain-object.d.ts +0 -0
  229. package/dist/{esm/utils → utils}/is-symbol.d.ts +0 -0
  230. package/dist/{esm/utils → utils}/normalize-css-calc-text.d.ts +0 -0
  231. package/dist/{esm/utils → utils}/parse-value-unit.d.ts +0 -0
  232. package/dist/{esm/utils → utils}/parse-value.d.ts +0 -0
  233. package/dist/{esm/utils → utils}/rgb-to-hex.d.ts +0 -0
  234. package/package.json +11 -9
  235. package/dist/esm/apis/configure.js +0 -11
  236. package/dist/esm/apis/configure.js.map +0 -1
  237. package/dist/esm/apis/extend.js +0 -61
  238. package/dist/esm/apis/extend.js.map +0 -1
  239. package/dist/esm/apis/fill-color-scale.js +0 -60
  240. package/dist/esm/apis/fill-color-scale.js.map +0 -1
  241. package/dist/esm/apis/init.js +0 -13
  242. package/dist/esm/apis/init.js.map +0 -1
  243. package/dist/esm/apis/render-from-html.js +0 -19
  244. package/dist/esm/apis/render-from-html.js.map +0 -1
  245. package/dist/esm/apis/render-into-html.js +0 -10
  246. package/dist/esm/apis/render-into-html.js.map +0 -1
  247. package/dist/esm/apis/render.js +0 -14
  248. package/dist/esm/apis/render.js.map +0 -1
  249. package/dist/esm/config/breakpoints.js +0 -14
  250. package/dist/esm/config/breakpoints.js.map +0 -1
  251. package/dist/esm/config/colors.js +0 -266
  252. package/dist/esm/config/colors.js.map +0 -1
  253. package/dist/esm/config/index.js +0 -22
  254. package/dist/esm/config/index.js.map +0 -1
  255. package/dist/esm/config/root-size.js +0 -3
  256. package/dist/esm/config/root-size.js.map +0 -1
  257. package/dist/esm/config/rules.js +0 -390
  258. package/dist/esm/config/rules.js.map +0 -1
  259. package/dist/esm/config/scheme.js +0 -9
  260. package/dist/esm/config/scheme.js.map +0 -1
  261. package/dist/esm/config/selectors.js +0 -20
  262. package/dist/esm/config/selectors.js.map +0 -1
  263. package/dist/esm/config/semantics.js +0 -83
  264. package/dist/esm/config/semantics.js.map +0 -1
  265. package/dist/esm/config/themes.js +0 -3
  266. package/dist/esm/config/themes.js.map +0 -1
  267. package/dist/esm/config/values.js +0 -85
  268. package/dist/esm/config/values.js.map +0 -1
  269. package/dist/esm/constants/start-symbol.js +0 -6
  270. package/dist/esm/constants/start-symbol.js.map +0 -1
  271. package/dist/esm/css.js +0 -981
  272. package/dist/esm/css.js.map +0 -1
  273. package/dist/esm/index.js +0 -23
  274. package/dist/esm/index.js.map +0 -1
  275. package/dist/esm/polyfills/css-escape.d.ts +0 -2
  276. package/dist/esm/polyfills/css-escape.js +0 -91
  277. package/dist/esm/polyfills/css-escape.js.map +0 -1
  278. package/dist/esm/rule.js +0 -609
  279. package/dist/esm/rule.js.map +0 -1
  280. package/dist/esm/rules/accent-color.js +0 -8
  281. package/dist/esm/rules/accent-color.js.map +0 -1
  282. package/dist/esm/rules/align-content.js +0 -7
  283. package/dist/esm/rules/align-content.js.map +0 -1
  284. package/dist/esm/rules/align-items.js +0 -7
  285. package/dist/esm/rules/align-items.js.map +0 -1
  286. package/dist/esm/rules/align-self.js +0 -7
  287. package/dist/esm/rules/align-self.js.map +0 -1
  288. package/dist/esm/rules/animation-delay.js +0 -8
  289. package/dist/esm/rules/animation-delay.js.map +0 -1
  290. package/dist/esm/rules/animation-direction.js +0 -7
  291. package/dist/esm/rules/animation-direction.js.map +0 -1
  292. package/dist/esm/rules/animation-duration.js +0 -8
  293. package/dist/esm/rules/animation-duration.js.map +0 -1
  294. package/dist/esm/rules/animation-fill-mode.js +0 -7
  295. package/dist/esm/rules/animation-fill-mode.js.map +0 -1
  296. package/dist/esm/rules/animation-iteration-count.js +0 -8
  297. package/dist/esm/rules/animation-iteration-count.js.map +0 -1
  298. package/dist/esm/rules/animation-name.js +0 -7
  299. package/dist/esm/rules/animation-name.js.map +0 -1
  300. package/dist/esm/rules/animation-play-state.js +0 -7
  301. package/dist/esm/rules/animation-play-state.js.map +0 -1
  302. package/dist/esm/rules/animation-timing-function.js +0 -7
  303. package/dist/esm/rules/animation-timing-function.js.map +0 -1
  304. package/dist/esm/rules/animation.js +0 -9
  305. package/dist/esm/rules/animation.js.map +0 -1
  306. package/dist/esm/rules/appearance.js +0 -6
  307. package/dist/esm/rules/appearance.js.map +0 -1
  308. package/dist/esm/rules/aspect-radio.js +0 -8
  309. package/dist/esm/rules/aspect-radio.js.map +0 -1
  310. package/dist/esm/rules/backdrop-filter.js +0 -26
  311. package/dist/esm/rules/backdrop-filter.js.map +0 -1
  312. package/dist/esm/rules/background-attachment.js +0 -7
  313. package/dist/esm/rules/background-attachment.js.map +0 -1
  314. package/dist/esm/rules/background-blend-mode.js +0 -6
  315. package/dist/esm/rules/background-blend-mode.js.map +0 -1
  316. package/dist/esm/rules/background-clip.js +0 -13
  317. package/dist/esm/rules/background-clip.js.map +0 -1
  318. package/dist/esm/rules/background-color.js +0 -9
  319. package/dist/esm/rules/background-color.js.map +0 -1
  320. package/dist/esm/rules/background-image.js +0 -8
  321. package/dist/esm/rules/background-image.js.map +0 -1
  322. package/dist/esm/rules/background-origin.js +0 -7
  323. package/dist/esm/rules/background-origin.js.map +0 -1
  324. package/dist/esm/rules/background-position.js +0 -8
  325. package/dist/esm/rules/background-position.js.map +0 -1
  326. package/dist/esm/rules/background-repeat.js +0 -7
  327. package/dist/esm/rules/background-repeat.js.map +0 -1
  328. package/dist/esm/rules/background-size.js +0 -7
  329. package/dist/esm/rules/background-size.js.map +0 -1
  330. package/dist/esm/rules/background.js +0 -9
  331. package/dist/esm/rules/background.js.map +0 -1
  332. package/dist/esm/rules/border-collapse.js +0 -7
  333. package/dist/esm/rules/border-collapse.js.map +0 -1
  334. package/dist/esm/rules/border-color.js +0 -15
  335. package/dist/esm/rules/border-color.js.map +0 -1
  336. package/dist/esm/rules/border-image-outset.js +0 -6
  337. package/dist/esm/rules/border-image-outset.js.map +0 -1
  338. package/dist/esm/rules/border-image-repeat.js +0 -7
  339. package/dist/esm/rules/border-image-repeat.js.map +0 -1
  340. package/dist/esm/rules/border-image-slice.js +0 -7
  341. package/dist/esm/rules/border-image-slice.js.map +0 -1
  342. package/dist/esm/rules/border-image-source.js +0 -7
  343. package/dist/esm/rules/border-image-source.js.map +0 -1
  344. package/dist/esm/rules/border-image-width.js +0 -7
  345. package/dist/esm/rules/border-image-width.js.map +0 -1
  346. package/dist/esm/rules/border-image.js +0 -7
  347. package/dist/esm/rules/border-image.js.map +0 -1
  348. package/dist/esm/rules/border-radius.js +0 -74
  349. package/dist/esm/rules/border-radius.js.map +0 -1
  350. package/dist/esm/rules/border-spacing.js +0 -6
  351. package/dist/esm/rules/border-spacing.js.map +0 -1
  352. package/dist/esm/rules/border-style.js +0 -13
  353. package/dist/esm/rules/border-style.js.map +0 -1
  354. package/dist/esm/rules/border-width.js +0 -13
  355. package/dist/esm/rules/border-width.js.map +0 -1
  356. package/dist/esm/rules/border.js +0 -14
  357. package/dist/esm/rules/border.js.map +0 -1
  358. package/dist/esm/rules/box-decoration-break.js +0 -13
  359. package/dist/esm/rules/box-decoration-break.js.map +0 -1
  360. package/dist/esm/rules/box-shadow.js +0 -8
  361. package/dist/esm/rules/box-shadow.js.map +0 -1
  362. package/dist/esm/rules/box-sizing.js +0 -7
  363. package/dist/esm/rules/box-sizing.js.map +0 -1
  364. package/dist/esm/rules/break-after.js +0 -6
  365. package/dist/esm/rules/break-after.js.map +0 -1
  366. package/dist/esm/rules/break-before.js +0 -6
  367. package/dist/esm/rules/break-before.js.map +0 -1
  368. package/dist/esm/rules/break-inside.js +0 -6
  369. package/dist/esm/rules/break-inside.js.map +0 -1
  370. package/dist/esm/rules/caret-color.js +0 -8
  371. package/dist/esm/rules/caret-color.js.map +0 -1
  372. package/dist/esm/rules/clear.js +0 -6
  373. package/dist/esm/rules/clear.js.map +0 -1
  374. package/dist/esm/rules/clip-path.js +0 -7
  375. package/dist/esm/rules/clip-path.js.map +0 -1
  376. package/dist/esm/rules/color.js +0 -9
  377. package/dist/esm/rules/color.js.map +0 -1
  378. package/dist/esm/rules/column-span.js +0 -7
  379. package/dist/esm/rules/column-span.js.map +0 -1
  380. package/dist/esm/rules/columns.js +0 -9
  381. package/dist/esm/rules/columns.js.map +0 -1
  382. package/dist/esm/rules/contain.js +0 -6
  383. package/dist/esm/rules/contain.js.map +0 -1
  384. package/dist/esm/rules/content.js +0 -6
  385. package/dist/esm/rules/content.js.map +0 -1
  386. package/dist/esm/rules/counter-increment.js +0 -7
  387. package/dist/esm/rules/counter-increment.js.map +0 -1
  388. package/dist/esm/rules/cursor.js +0 -6
  389. package/dist/esm/rules/cursor.js.map +0 -1
  390. package/dist/esm/rules/cx.js +0 -7
  391. package/dist/esm/rules/cx.js.map +0 -1
  392. package/dist/esm/rules/cy.js +0 -7
  393. package/dist/esm/rules/cy.js.map +0 -1
  394. package/dist/esm/rules/direction.js +0 -6
  395. package/dist/esm/rules/direction.js.map +0 -1
  396. package/dist/esm/rules/display.js +0 -7
  397. package/dist/esm/rules/display.js.map +0 -1
  398. package/dist/esm/rules/fill.js +0 -8
  399. package/dist/esm/rules/fill.js.map +0 -1
  400. package/dist/esm/rules/filter.js +0 -20
  401. package/dist/esm/rules/filter.js.map +0 -1
  402. package/dist/esm/rules/flex-basis.js +0 -6
  403. package/dist/esm/rules/flex-basis.js.map +0 -1
  404. package/dist/esm/rules/flex-direction.js +0 -7
  405. package/dist/esm/rules/flex-direction.js.map +0 -1
  406. package/dist/esm/rules/flex-grow.js +0 -7
  407. package/dist/esm/rules/flex-grow.js.map +0 -1
  408. package/dist/esm/rules/flex-shrink.js +0 -7
  409. package/dist/esm/rules/flex-shrink.js.map +0 -1
  410. package/dist/esm/rules/flex-wrap.js +0 -7
  411. package/dist/esm/rules/flex-wrap.js.map +0 -1
  412. package/dist/esm/rules/flex.js +0 -8
  413. package/dist/esm/rules/flex.js.map +0 -1
  414. package/dist/esm/rules/float.js +0 -6
  415. package/dist/esm/rules/float.js.map +0 -1
  416. package/dist/esm/rules/font-family.js +0 -7
  417. package/dist/esm/rules/font-family.js.map +0 -1
  418. package/dist/esm/rules/font-size.js +0 -7
  419. package/dist/esm/rules/font-size.js.map +0 -1
  420. package/dist/esm/rules/font-smoothing.js +0 -34
  421. package/dist/esm/rules/font-smoothing.js.map +0 -1
  422. package/dist/esm/rules/font-style.js +0 -8
  423. package/dist/esm/rules/font-style.js.map +0 -1
  424. package/dist/esm/rules/font-variant-numeric.js +0 -7
  425. package/dist/esm/rules/font-variant-numeric.js.map +0 -1
  426. package/dist/esm/rules/font-weight.js +0 -8
  427. package/dist/esm/rules/font-weight.js.map +0 -1
  428. package/dist/esm/rules/font.js +0 -9
  429. package/dist/esm/rules/font.js.map +0 -1
  430. package/dist/esm/rules/gap.js +0 -17
  431. package/dist/esm/rules/gap.js.map +0 -1
  432. package/dist/esm/rules/grid-area.js +0 -8
  433. package/dist/esm/rules/grid-area.js.map +0 -1
  434. package/dist/esm/rules/grid-auto-columns.js +0 -7
  435. package/dist/esm/rules/grid-auto-columns.js.map +0 -1
  436. package/dist/esm/rules/grid-auto-flow.js +0 -7
  437. package/dist/esm/rules/grid-auto-flow.js.map +0 -1
  438. package/dist/esm/rules/grid-auto-rows.js +0 -6
  439. package/dist/esm/rules/grid-auto-rows.js.map +0 -1
  440. package/dist/esm/rules/grid-column-end.js +0 -8
  441. package/dist/esm/rules/grid-column-end.js.map +0 -1
  442. package/dist/esm/rules/grid-column-start.js +0 -8
  443. package/dist/esm/rules/grid-column-start.js.map +0 -1
  444. package/dist/esm/rules/grid-column.js +0 -14
  445. package/dist/esm/rules/grid-column.js.map +0 -1
  446. package/dist/esm/rules/grid-columns.js +0 -21
  447. package/dist/esm/rules/grid-columns.js.map +0 -1
  448. package/dist/esm/rules/grid-row-end.js +0 -7
  449. package/dist/esm/rules/grid-row-end.js.map +0 -1
  450. package/dist/esm/rules/grid-row-start.js +0 -7
  451. package/dist/esm/rules/grid-row-start.js.map +0 -1
  452. package/dist/esm/rules/grid-row.js +0 -14
  453. package/dist/esm/rules/grid-row.js.map +0 -1
  454. package/dist/esm/rules/grid-rows.js +0 -21
  455. package/dist/esm/rules/grid-rows.js.map +0 -1
  456. package/dist/esm/rules/grid-template-areas.js +0 -6
  457. package/dist/esm/rules/grid-template-areas.js.map +0 -1
  458. package/dist/esm/rules/grid-template-columns.js +0 -7
  459. package/dist/esm/rules/grid-template-columns.js.map +0 -1
  460. package/dist/esm/rules/grid-template-rows.js +0 -6
  461. package/dist/esm/rules/grid-template-rows.js.map +0 -1
  462. package/dist/esm/rules/grid-template.js +0 -7
  463. package/dist/esm/rules/grid-template.js.map +0 -1
  464. package/dist/esm/rules/grid.js +0 -7
  465. package/dist/esm/rules/grid.js.map +0 -1
  466. package/dist/esm/rules/group.js +0 -105
  467. package/dist/esm/rules/group.js.map +0 -1
  468. package/dist/esm/rules/height.js +0 -7
  469. package/dist/esm/rules/height.js.map +0 -1
  470. package/dist/esm/rules/inset.js +0 -12
  471. package/dist/esm/rules/inset.js.map +0 -1
  472. package/dist/esm/rules/isolation.js +0 -6
  473. package/dist/esm/rules/isolation.js.map +0 -1
  474. package/dist/esm/rules/justify-content.js +0 -7
  475. package/dist/esm/rules/justify-content.js.map +0 -1
  476. package/dist/esm/rules/justify-items.js +0 -7
  477. package/dist/esm/rules/justify-items.js.map +0 -1
  478. package/dist/esm/rules/justify-self.js +0 -7
  479. package/dist/esm/rules/justify-self.js.map +0 -1
  480. package/dist/esm/rules/letter-spacing.js +0 -8
  481. package/dist/esm/rules/letter-spacing.js.map +0 -1
  482. package/dist/esm/rules/line-clamp.js +0 -12
  483. package/dist/esm/rules/line-clamp.js.map +0 -1
  484. package/dist/esm/rules/line-height.js +0 -8
  485. package/dist/esm/rules/line-height.js.map +0 -1
  486. package/dist/esm/rules/lines.js +0 -17
  487. package/dist/esm/rules/lines.js.map +0 -1
  488. package/dist/esm/rules/list-style-image.js +0 -7
  489. package/dist/esm/rules/list-style-image.js.map +0 -1
  490. package/dist/esm/rules/list-style-position.js +0 -7
  491. package/dist/esm/rules/list-style-position.js.map +0 -1
  492. package/dist/esm/rules/list-style-type.js +0 -7
  493. package/dist/esm/rules/list-style-type.js.map +0 -1
  494. package/dist/esm/rules/list-style.js +0 -7
  495. package/dist/esm/rules/list-style.js.map +0 -1
  496. package/dist/esm/rules/margin.js +0 -14
  497. package/dist/esm/rules/margin.js.map +0 -1
  498. package/dist/esm/rules/mask-image.js +0 -12
  499. package/dist/esm/rules/mask-image.js.map +0 -1
  500. package/dist/esm/rules/max-height.js +0 -7
  501. package/dist/esm/rules/max-height.js.map +0 -1
  502. package/dist/esm/rules/max-width.js +0 -7
  503. package/dist/esm/rules/max-width.js.map +0 -1
  504. package/dist/esm/rules/min-height.js +0 -7
  505. package/dist/esm/rules/min-height.js.map +0 -1
  506. package/dist/esm/rules/min-width.js +0 -7
  507. package/dist/esm/rules/min-width.js.map +0 -1
  508. package/dist/esm/rules/mix-blend-mode.js +0 -7
  509. package/dist/esm/rules/mix-blend-mode.js.map +0 -1
  510. package/dist/esm/rules/object-fit.js +0 -7
  511. package/dist/esm/rules/object-fit.js.map +0 -1
  512. package/dist/esm/rules/object-position.js +0 -7
  513. package/dist/esm/rules/object-position.js.map +0 -1
  514. package/dist/esm/rules/opacity.js +0 -7
  515. package/dist/esm/rules/opacity.js.map +0 -1
  516. package/dist/esm/rules/order.js +0 -9
  517. package/dist/esm/rules/order.js.map +0 -1
  518. package/dist/esm/rules/outline-color.js +0 -8
  519. package/dist/esm/rules/outline-color.js.map +0 -1
  520. package/dist/esm/rules/outline-offset.js +0 -6
  521. package/dist/esm/rules/outline-offset.js.map +0 -1
  522. package/dist/esm/rules/outline-style.js +0 -7
  523. package/dist/esm/rules/outline-style.js.map +0 -1
  524. package/dist/esm/rules/outline-width.js +0 -7
  525. package/dist/esm/rules/outline-width.js.map +0 -1
  526. package/dist/esm/rules/outline.js +0 -8
  527. package/dist/esm/rules/outline.js.map +0 -1
  528. package/dist/esm/rules/overflow.js +0 -27
  529. package/dist/esm/rules/overflow.js.map +0 -1
  530. package/dist/esm/rules/overscroll-behavior.js +0 -16
  531. package/dist/esm/rules/overscroll-behavior.js.map +0 -1
  532. package/dist/esm/rules/padding.js +0 -14
  533. package/dist/esm/rules/padding.js.map +0 -1
  534. package/dist/esm/rules/place-content.js +0 -7
  535. package/dist/esm/rules/place-content.js.map +0 -1
  536. package/dist/esm/rules/place-items.js +0 -7
  537. package/dist/esm/rules/place-items.js.map +0 -1
  538. package/dist/esm/rules/place-self.js +0 -7
  539. package/dist/esm/rules/place-self.js.map +0 -1
  540. package/dist/esm/rules/placement.js +0 -30
  541. package/dist/esm/rules/placement.js.map +0 -1
  542. package/dist/esm/rules/pointer-events.js +0 -6
  543. package/dist/esm/rules/pointer-events.js.map +0 -1
  544. package/dist/esm/rules/position.js +0 -6
  545. package/dist/esm/rules/position.js.map +0 -1
  546. package/dist/esm/rules/quotes.js +0 -6
  547. package/dist/esm/rules/quotes.js.map +0 -1
  548. package/dist/esm/rules/resize.js +0 -6
  549. package/dist/esm/rules/resize.js.map +0 -1
  550. package/dist/esm/rules/rx.js +0 -7
  551. package/dist/esm/rules/rx.js.map +0 -1
  552. package/dist/esm/rules/ry.js +0 -7
  553. package/dist/esm/rules/ry.js.map +0 -1
  554. package/dist/esm/rules/scroll-behavior.js +0 -6
  555. package/dist/esm/rules/scroll-behavior.js.map +0 -1
  556. package/dist/esm/rules/scroll-margin.js +0 -46
  557. package/dist/esm/rules/scroll-margin.js.map +0 -1
  558. package/dist/esm/rules/scroll-padding.js +0 -46
  559. package/dist/esm/rules/scroll-padding.js.map +0 -1
  560. package/dist/esm/rules/scroll-snap-align.js +0 -7
  561. package/dist/esm/rules/scroll-snap-align.js.map +0 -1
  562. package/dist/esm/rules/scroll-snap-stop.js +0 -7
  563. package/dist/esm/rules/scroll-snap-stop.js.map +0 -1
  564. package/dist/esm/rules/scroll-snap-type.js +0 -7
  565. package/dist/esm/rules/scroll-snap-type.js.map +0 -1
  566. package/dist/esm/rules/shape-image-threshold.js +0 -7
  567. package/dist/esm/rules/shape-image-threshold.js.map +0 -1
  568. package/dist/esm/rules/shape-margin.js +0 -7
  569. package/dist/esm/rules/shape-margin.js.map +0 -1
  570. package/dist/esm/rules/shape-outside.js +0 -7
  571. package/dist/esm/rules/shape-outside.js.map +0 -1
  572. package/dist/esm/rules/spacing.js +0 -49
  573. package/dist/esm/rules/spacing.js.map +0 -1
  574. package/dist/esm/rules/stroke-dasharray.js +0 -6
  575. package/dist/esm/rules/stroke-dasharray.js.map +0 -1
  576. package/dist/esm/rules/stroke-dashoffset.js +0 -6
  577. package/dist/esm/rules/stroke-dashoffset.js.map +0 -1
  578. package/dist/esm/rules/stroke-width.js +0 -7
  579. package/dist/esm/rules/stroke-width.js.map +0 -1
  580. package/dist/esm/rules/stroke.js +0 -7
  581. package/dist/esm/rules/stroke.js.map +0 -1
  582. package/dist/esm/rules/table-layout.js +0 -6
  583. package/dist/esm/rules/table-layout.js.map +0 -1
  584. package/dist/esm/rules/text-align.js +0 -7
  585. package/dist/esm/rules/text-align.js.map +0 -1
  586. package/dist/esm/rules/text-decoration-color.js +0 -8
  587. package/dist/esm/rules/text-decoration-color.js.map +0 -1
  588. package/dist/esm/rules/text-decoration-line.js +0 -7
  589. package/dist/esm/rules/text-decoration-line.js.map +0 -1
  590. package/dist/esm/rules/text-decoration-style.js +0 -7
  591. package/dist/esm/rules/text-decoration-style.js.map +0 -1
  592. package/dist/esm/rules/text-decoration-thickness.js +0 -8
  593. package/dist/esm/rules/text-decoration-thickness.js.map +0 -1
  594. package/dist/esm/rules/text-decoration.js +0 -9
  595. package/dist/esm/rules/text-decoration.js.map +0 -1
  596. package/dist/esm/rules/text-fill-color.js +0 -13
  597. package/dist/esm/rules/text-fill-color.js.map +0 -1
  598. package/dist/esm/rules/text-indent.js +0 -6
  599. package/dist/esm/rules/text-indent.js.map +0 -1
  600. package/dist/esm/rules/text-orientation.js +0 -7
  601. package/dist/esm/rules/text-orientation.js.map +0 -1
  602. package/dist/esm/rules/text-overflow.js +0 -7
  603. package/dist/esm/rules/text-overflow.js.map +0 -1
  604. package/dist/esm/rules/text-rendering.js +0 -7
  605. package/dist/esm/rules/text-rendering.js.map +0 -1
  606. package/dist/esm/rules/text-shadow.js +0 -7
  607. package/dist/esm/rules/text-shadow.js.map +0 -1
  608. package/dist/esm/rules/text-size.js +0 -18
  609. package/dist/esm/rules/text-size.js.map +0 -1
  610. package/dist/esm/rules/text-stroke-color.js +0 -13
  611. package/dist/esm/rules/text-stroke-color.js.map +0 -1
  612. package/dist/esm/rules/text-stroke-width.js +0 -11
  613. package/dist/esm/rules/text-stroke-width.js.map +0 -1
  614. package/dist/esm/rules/text-stroke.js +0 -11
  615. package/dist/esm/rules/text-stroke.js.map +0 -1
  616. package/dist/esm/rules/text-transform.js +0 -7
  617. package/dist/esm/rules/text-transform.js.map +0 -1
  618. package/dist/esm/rules/text-underline-offset.js +0 -6
  619. package/dist/esm/rules/text-underline-offset.js.map +0 -1
  620. package/dist/esm/rules/touch-action.js +0 -6
  621. package/dist/esm/rules/touch-action.js.map +0 -1
  622. package/dist/esm/rules/transform-box.js +0 -7
  623. package/dist/esm/rules/transform-box.js.map +0 -1
  624. package/dist/esm/rules/transform-origin.js +0 -8
  625. package/dist/esm/rules/transform-origin.js.map +0 -1
  626. package/dist/esm/rules/transform-style.js +0 -7
  627. package/dist/esm/rules/transform-style.js.map +0 -1
  628. package/dist/esm/rules/transform.js +0 -45
  629. package/dist/esm/rules/transform.js.map +0 -1
  630. package/dist/esm/rules/transition-delay.js +0 -8
  631. package/dist/esm/rules/transition-delay.js.map +0 -1
  632. package/dist/esm/rules/transition-duration.js +0 -8
  633. package/dist/esm/rules/transition-duration.js.map +0 -1
  634. package/dist/esm/rules/transition-property.js +0 -7
  635. package/dist/esm/rules/transition-property.js.map +0 -1
  636. package/dist/esm/rules/transition-timing-function.js +0 -7
  637. package/dist/esm/rules/transition-timing-function.js.map +0 -1
  638. package/dist/esm/rules/transition.js +0 -8
  639. package/dist/esm/rules/transition.js.map +0 -1
  640. package/dist/esm/rules/user-drag.js +0 -12
  641. package/dist/esm/rules/user-drag.js.map +0 -1
  642. package/dist/esm/rules/user-select.js +0 -12
  643. package/dist/esm/rules/user-select.js.map +0 -1
  644. package/dist/esm/rules/variable.js +0 -12
  645. package/dist/esm/rules/variable.js.map +0 -1
  646. package/dist/esm/rules/vertical-align.js +0 -7
  647. package/dist/esm/rules/vertical-align.js.map +0 -1
  648. package/dist/esm/rules/visibility.js +0 -6
  649. package/dist/esm/rules/visibility.js.map +0 -1
  650. package/dist/esm/rules/white-space.js +0 -7
  651. package/dist/esm/rules/white-space.js.map +0 -1
  652. package/dist/esm/rules/width.js +0 -7
  653. package/dist/esm/rules/width.js.map +0 -1
  654. package/dist/esm/rules/will-change.js +0 -6
  655. package/dist/esm/rules/will-change.js.map +0 -1
  656. package/dist/esm/rules/word-break.js +0 -7
  657. package/dist/esm/rules/word-break.js.map +0 -1
  658. package/dist/esm/rules/word-spacing.js +0 -7
  659. package/dist/esm/rules/word-spacing.js.map +0 -1
  660. package/dist/esm/rules/writing-mode.js +0 -7
  661. package/dist/esm/rules/writing-mode.js.map +0 -1
  662. package/dist/esm/rules/x.js +0 -7
  663. package/dist/esm/rules/x.js.map +0 -1
  664. package/dist/esm/rules/y.js +0 -7
  665. package/dist/esm/rules/y.js.map +0 -1
  666. package/dist/esm/rules/z-index.js +0 -8
  667. package/dist/esm/rules/z-index.js.map +0 -1
  668. package/dist/esm/utils/concat-arrays.js +0 -8
  669. package/dist/esm/utils/concat-arrays.js.map +0 -1
  670. package/dist/esm/utils/get-border-props.js +0 -44
  671. package/dist/esm/utils/get-border-props.js.map +0 -1
  672. package/dist/esm/utils/get-css-property-text.js +0 -8
  673. package/dist/esm/utils/get-css-property-text.js.map +0 -1
  674. package/dist/esm/utils/get-type.js +0 -10
  675. package/dist/esm/utils/get-type.js.map +0 -1
  676. package/dist/esm/utils/hex-to-rgb.js +0 -8
  677. package/dist/esm/utils/hex-to-rgb.js.map +0 -1
  678. package/dist/esm/utils/is-plain-object.js +0 -13
  679. package/dist/esm/utils/is-plain-object.js.map +0 -1
  680. package/dist/esm/utils/is-symbol.js +0 -11
  681. package/dist/esm/utils/is-symbol.js.map +0 -1
  682. package/dist/esm/utils/normalize-css-calc-text.js +0 -56
  683. package/dist/esm/utils/normalize-css-calc-text.js.map +0 -1
  684. package/dist/esm/utils/parse-value-unit.js +0 -48
  685. package/dist/esm/utils/parse-value-unit.js.map +0 -1
  686. package/dist/esm/utils/parse-value.js +0 -84
  687. package/dist/esm/utils/parse-value.js.map +0 -1
  688. package/dist/esm/utils/rgb-to-hex.js +0 -4
  689. package/dist/esm/utils/rgb-to-hex.js.map +0 -1
package/dist/esm/css.js DELETED
@@ -1,981 +0,0 @@
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