recoder-code 2.4.1 → 2.4.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 (1059) hide show
  1. package/package.json +7 -18
  2. package/packages/cli/package.json +1 -5
  3. package/packages/core/package.json +1 -5
  4. package/packages/cli/node_modules/@asamuzakjp/css-color/LICENSE +0 -21
  5. package/packages/cli/node_modules/@asamuzakjp/css-color/README.md +0 -316
  6. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/browser/css-color.min.js +0 -220
  7. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/browser/css-color.min.js.map +0 -1
  8. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/cjs/index.cjs +0 -5484
  9. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/cjs/index.cjs.map +0 -1
  10. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/cjs/index.d.cts +0 -109
  11. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/index.d.ts +0 -18
  12. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/index.js +0 -30
  13. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/index.js.map +0 -1
  14. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.d.ts +0 -44
  15. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.js +0 -82
  16. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.js.map +0 -1
  17. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/color.d.ts +0 -537
  18. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/color.js +0 -2792
  19. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/color.js.map +0 -1
  20. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/common.d.ts +0 -21
  21. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/common.js +0 -7
  22. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/common.js.map +0 -1
  23. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.d.ts +0 -41
  24. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.js +0 -97
  25. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.js.map +0 -1
  26. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.d.ts +0 -99
  27. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.js +0 -361
  28. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.js.map +0 -1
  29. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.d.ts +0 -89
  30. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.js +0 -860
  31. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.js.map +0 -1
  32. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.d.ts +0 -54
  33. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.js +0 -195
  34. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.js.map +0 -1
  35. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.d.ts +0 -31
  36. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.js +0 -195
  37. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.js.map +0 -1
  38. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.d.ts +0 -29
  39. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.js +0 -487
  40. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.js.map +0 -1
  41. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.d.ts +0 -52
  42. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.js +0 -288
  43. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.js.map +0 -1
  44. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/typedef.d.ts +0 -79
  45. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/util.d.ts +0 -45
  46. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/util.js +0 -279
  47. package/packages/cli/node_modules/@asamuzakjp/css-color/dist/esm/js/util.js.map +0 -1
  48. package/packages/cli/node_modules/@asamuzakjp/css-color/package.json +0 -81
  49. package/packages/cli/node_modules/@asamuzakjp/css-color/src/index.ts +0 -27
  50. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/cache.ts +0 -114
  51. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/color.ts +0 -3459
  52. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/common.ts +0 -31
  53. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/constant.ts +0 -66
  54. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/convert.ts +0 -469
  55. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/css-calc.ts +0 -965
  56. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/css-gradient.ts +0 -289
  57. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/css-var.ts +0 -250
  58. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/relative-color.ts +0 -580
  59. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/resolve.ts +0 -379
  60. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/typedef.ts +0 -87
  61. package/packages/cli/node_modules/@asamuzakjp/css-color/src/js/util.ts +0 -336
  62. package/packages/cli/node_modules/@types/node/LICENSE +0 -21
  63. package/packages/cli/node_modules/@types/node/README.md +0 -15
  64. package/packages/cli/node_modules/@types/node/assert/strict.d.ts +0 -8
  65. package/packages/cli/node_modules/@types/node/assert.d.ts +0 -1062
  66. package/packages/cli/node_modules/@types/node/async_hooks.d.ts +0 -605
  67. package/packages/cli/node_modules/@types/node/buffer.buffer.d.ts +0 -462
  68. package/packages/cli/node_modules/@types/node/buffer.d.ts +0 -1932
  69. package/packages/cli/node_modules/@types/node/child_process.d.ts +0 -1452
  70. package/packages/cli/node_modules/@types/node/cluster.d.ts +0 -578
  71. package/packages/cli/node_modules/@types/node/compatibility/disposable.d.ts +0 -16
  72. package/packages/cli/node_modules/@types/node/compatibility/index.d.ts +0 -9
  73. package/packages/cli/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  74. package/packages/cli/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
  75. package/packages/cli/node_modules/@types/node/console.d.ts +0 -452
  76. package/packages/cli/node_modules/@types/node/constants.d.ts +0 -21
  77. package/packages/cli/node_modules/@types/node/crypto.d.ts +0 -4570
  78. package/packages/cli/node_modules/@types/node/dgram.d.ts +0 -596
  79. package/packages/cli/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
  80. package/packages/cli/node_modules/@types/node/dns/promises.d.ts +0 -479
  81. package/packages/cli/node_modules/@types/node/dns.d.ts +0 -871
  82. package/packages/cli/node_modules/@types/node/domain.d.ts +0 -170
  83. package/packages/cli/node_modules/@types/node/events.d.ts +0 -977
  84. package/packages/cli/node_modules/@types/node/fs/promises.d.ts +0 -1248
  85. package/packages/cli/node_modules/@types/node/fs.d.ts +0 -4362
  86. package/packages/cli/node_modules/@types/node/globals.d.ts +0 -170
  87. package/packages/cli/node_modules/@types/node/globals.typedarray.d.ts +0 -21
  88. package/packages/cli/node_modules/@types/node/http.d.ts +0 -2031
  89. package/packages/cli/node_modules/@types/node/http2.d.ts +0 -2623
  90. package/packages/cli/node_modules/@types/node/https.d.ts +0 -549
  91. package/packages/cli/node_modules/@types/node/index.d.ts +0 -93
  92. package/packages/cli/node_modules/@types/node/inspector.generated.d.ts +0 -3966
  93. package/packages/cli/node_modules/@types/node/module.d.ts +0 -539
  94. package/packages/cli/node_modules/@types/node/net.d.ts +0 -1011
  95. package/packages/cli/node_modules/@types/node/os.d.ts +0 -495
  96. package/packages/cli/node_modules/@types/node/package.json +0 -140
  97. package/packages/cli/node_modules/@types/node/path.d.ts +0 -200
  98. package/packages/cli/node_modules/@types/node/perf_hooks.d.ts +0 -963
  99. package/packages/cli/node_modules/@types/node/process.d.ts +0 -1956
  100. package/packages/cli/node_modules/@types/node/punycode.d.ts +0 -117
  101. package/packages/cli/node_modules/@types/node/querystring.d.ts +0 -152
  102. package/packages/cli/node_modules/@types/node/readline/promises.d.ts +0 -162
  103. package/packages/cli/node_modules/@types/node/readline.d.ts +0 -589
  104. package/packages/cli/node_modules/@types/node/repl.d.ts +0 -430
  105. package/packages/cli/node_modules/@types/node/sea.d.ts +0 -153
  106. package/packages/cli/node_modules/@types/node/stream/consumers.d.ts +0 -38
  107. package/packages/cli/node_modules/@types/node/stream/promises.d.ts +0 -90
  108. package/packages/cli/node_modules/@types/node/stream/web.d.ts +0 -533
  109. package/packages/cli/node_modules/@types/node/stream.d.ts +0 -1668
  110. package/packages/cli/node_modules/@types/node/string_decoder.d.ts +0 -67
  111. package/packages/cli/node_modules/@types/node/test.d.ts +0 -1787
  112. package/packages/cli/node_modules/@types/node/timers/promises.d.ts +0 -108
  113. package/packages/cli/node_modules/@types/node/timers.d.ts +0 -286
  114. package/packages/cli/node_modules/@types/node/tls.d.ts +0 -1231
  115. package/packages/cli/node_modules/@types/node/trace_events.d.ts +0 -197
  116. package/packages/cli/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -460
  117. package/packages/cli/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -19
  118. package/packages/cli/node_modules/@types/node/ts5.6/index.d.ts +0 -93
  119. package/packages/cli/node_modules/@types/node/tty.d.ts +0 -208
  120. package/packages/cli/node_modules/@types/node/url.d.ts +0 -964
  121. package/packages/cli/node_modules/@types/node/util.d.ts +0 -2331
  122. package/packages/cli/node_modules/@types/node/v8.d.ts +0 -808
  123. package/packages/cli/node_modules/@types/node/vm.d.ts +0 -1030
  124. package/packages/cli/node_modules/@types/node/wasi.d.ts +0 -181
  125. package/packages/cli/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
  126. package/packages/cli/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  127. package/packages/cli/node_modules/@types/node/web-globals/events.d.ts +0 -97
  128. package/packages/cli/node_modules/@types/node/web-globals/fetch.d.ts +0 -46
  129. package/packages/cli/node_modules/@types/node/worker_threads.d.ts +0 -715
  130. package/packages/cli/node_modules/@types/node/zlib.d.ts +0 -539
  131. package/packages/cli/node_modules/cssstyle/LICENSE +0 -20
  132. package/packages/cli/node_modules/cssstyle/README.md +0 -11
  133. package/packages/cli/node_modules/cssstyle/lib/CSSStyleDeclaration.js +0 -613
  134. package/packages/cli/node_modules/cssstyle/lib/allExtraProperties.js +0 -49
  135. package/packages/cli/node_modules/cssstyle/lib/allWebkitProperties.js +0 -114
  136. package/packages/cli/node_modules/cssstyle/lib/generated/allProperties.js +0 -615
  137. package/packages/cli/node_modules/cssstyle/lib/generated/implementedProperties.js +0 -79
  138. package/packages/cli/node_modules/cssstyle/lib/generated/properties.js +0 -2673
  139. package/packages/cli/node_modules/cssstyle/lib/parsers.js +0 -537
  140. package/packages/cli/node_modules/cssstyle/lib/properties/background.js +0 -52
  141. package/packages/cli/node_modules/cssstyle/lib/properties/backgroundAttachment.js +0 -32
  142. package/packages/cli/node_modules/cssstyle/lib/properties/backgroundColor.js +0 -35
  143. package/packages/cli/node_modules/cssstyle/lib/properties/backgroundImage.js +0 -31
  144. package/packages/cli/node_modules/cssstyle/lib/properties/backgroundPosition.js +0 -52
  145. package/packages/cli/node_modules/cssstyle/lib/properties/backgroundRepeat.js +0 -32
  146. package/packages/cli/node_modules/cssstyle/lib/properties/border.js +0 -42
  147. package/packages/cli/node_modules/cssstyle/lib/properties/borderBottom.js +0 -40
  148. package/packages/cli/node_modules/cssstyle/lib/properties/borderBottomColor.js +0 -35
  149. package/packages/cli/node_modules/cssstyle/lib/properties/borderBottomStyle.js +0 -50
  150. package/packages/cli/node_modules/cssstyle/lib/properties/borderBottomWidth.js +0 -36
  151. package/packages/cli/node_modules/cssstyle/lib/properties/borderCollapse.js +0 -26
  152. package/packages/cli/node_modules/cssstyle/lib/properties/borderColor.js +0 -43
  153. package/packages/cli/node_modules/cssstyle/lib/properties/borderLeft.js +0 -40
  154. package/packages/cli/node_modules/cssstyle/lib/properties/borderLeftColor.js +0 -35
  155. package/packages/cli/node_modules/cssstyle/lib/properties/borderLeftStyle.js +0 -50
  156. package/packages/cli/node_modules/cssstyle/lib/properties/borderLeftWidth.js +0 -36
  157. package/packages/cli/node_modules/cssstyle/lib/properties/borderRight.js +0 -40
  158. package/packages/cli/node_modules/cssstyle/lib/properties/borderRightColor.js +0 -35
  159. package/packages/cli/node_modules/cssstyle/lib/properties/borderRightStyle.js +0 -50
  160. package/packages/cli/node_modules/cssstyle/lib/properties/borderRightWidth.js +0 -36
  161. package/packages/cli/node_modules/cssstyle/lib/properties/borderSpacing.js +0 -45
  162. package/packages/cli/node_modules/cssstyle/lib/properties/borderStyle.js +0 -54
  163. package/packages/cli/node_modules/cssstyle/lib/properties/borderTop.js +0 -40
  164. package/packages/cli/node_modules/cssstyle/lib/properties/borderTopColor.js +0 -35
  165. package/packages/cli/node_modules/cssstyle/lib/properties/borderTopStyle.js +0 -50
  166. package/packages/cli/node_modules/cssstyle/lib/properties/borderTopWidth.js +0 -36
  167. package/packages/cli/node_modules/cssstyle/lib/properties/borderWidth.js +0 -44
  168. package/packages/cli/node_modules/cssstyle/lib/properties/bottom.js +0 -30
  169. package/packages/cli/node_modules/cssstyle/lib/properties/clear.js +0 -40
  170. package/packages/cli/node_modules/cssstyle/lib/properties/clip.js +0 -54
  171. package/packages/cli/node_modules/cssstyle/lib/properties/color.js +0 -30
  172. package/packages/cli/node_modules/cssstyle/lib/properties/flex.js +0 -73
  173. package/packages/cli/node_modules/cssstyle/lib/properties/flexBasis.js +0 -33
  174. package/packages/cli/node_modules/cssstyle/lib/properties/flexGrow.js +0 -28
  175. package/packages/cli/node_modules/cssstyle/lib/properties/flexShrink.js +0 -28
  176. package/packages/cli/node_modules/cssstyle/lib/properties/float.js +0 -27
  177. package/packages/cli/node_modules/cssstyle/lib/properties/floodColor.js +0 -30
  178. package/packages/cli/node_modules/cssstyle/lib/properties/font.js +0 -189
  179. package/packages/cli/node_modules/cssstyle/lib/properties/fontFamily.js +0 -95
  180. package/packages/cli/node_modules/cssstyle/lib/properties/fontSize.js +0 -47
  181. package/packages/cli/node_modules/cssstyle/lib/properties/fontStyle.js +0 -32
  182. package/packages/cli/node_modules/cssstyle/lib/properties/fontVariant.js +0 -36
  183. package/packages/cli/node_modules/cssstyle/lib/properties/fontWeight.js +0 -36
  184. package/packages/cli/node_modules/cssstyle/lib/properties/height.js +0 -31
  185. package/packages/cli/node_modules/cssstyle/lib/properties/left.js +0 -30
  186. package/packages/cli/node_modules/cssstyle/lib/properties/lightingColor.js +0 -30
  187. package/packages/cli/node_modules/cssstyle/lib/properties/lineHeight.js +0 -39
  188. package/packages/cli/node_modules/cssstyle/lib/properties/margin.js +0 -58
  189. package/packages/cli/node_modules/cssstyle/lib/properties/marginBottom.js +0 -40
  190. package/packages/cli/node_modules/cssstyle/lib/properties/marginLeft.js +0 -40
  191. package/packages/cli/node_modules/cssstyle/lib/properties/marginRight.js +0 -40
  192. package/packages/cli/node_modules/cssstyle/lib/properties/marginTop.js +0 -40
  193. package/packages/cli/node_modules/cssstyle/lib/properties/opacity.js +0 -46
  194. package/packages/cli/node_modules/cssstyle/lib/properties/outlineColor.js +0 -30
  195. package/packages/cli/node_modules/cssstyle/lib/properties/padding.js +0 -58
  196. package/packages/cli/node_modules/cssstyle/lib/properties/paddingBottom.js +0 -42
  197. package/packages/cli/node_modules/cssstyle/lib/properties/paddingLeft.js +0 -40
  198. package/packages/cli/node_modules/cssstyle/lib/properties/paddingRight.js +0 -40
  199. package/packages/cli/node_modules/cssstyle/lib/properties/paddingTop.js +0 -40
  200. package/packages/cli/node_modules/cssstyle/lib/properties/right.js +0 -30
  201. package/packages/cli/node_modules/cssstyle/lib/properties/stopColor.js +0 -30
  202. package/packages/cli/node_modules/cssstyle/lib/properties/top.js +0 -30
  203. package/packages/cli/node_modules/cssstyle/lib/properties/webkitBorderAfterColor.js +0 -30
  204. package/packages/cli/node_modules/cssstyle/lib/properties/webkitBorderBeforeColor.js +0 -30
  205. package/packages/cli/node_modules/cssstyle/lib/properties/webkitBorderEndColor.js +0 -30
  206. package/packages/cli/node_modules/cssstyle/lib/properties/webkitBorderStartColor.js +0 -30
  207. package/packages/cli/node_modules/cssstyle/lib/properties/webkitColumnRuleColor.js +0 -30
  208. package/packages/cli/node_modules/cssstyle/lib/properties/webkitTapHighlightColor.js +0 -30
  209. package/packages/cli/node_modules/cssstyle/lib/properties/webkitTextEmphasisColor.js +0 -30
  210. package/packages/cli/node_modules/cssstyle/lib/properties/webkitTextFillColor.js +0 -30
  211. package/packages/cli/node_modules/cssstyle/lib/properties/webkitTextStrokeColor.js +0 -30
  212. package/packages/cli/node_modules/cssstyle/lib/properties/width.js +0 -31
  213. package/packages/cli/node_modules/cssstyle/lib/utils/camelize.js +0 -37
  214. package/packages/cli/node_modules/cssstyle/lib/utils/propertyDescriptors.js +0 -16
  215. package/packages/cli/node_modules/cssstyle/lib/utils/strings.js +0 -167
  216. package/packages/cli/node_modules/cssstyle/package.json +0 -72
  217. package/packages/cli/node_modules/data-urls/LICENSE.txt +0 -7
  218. package/packages/cli/node_modules/data-urls/README.md +0 -62
  219. package/packages/cli/node_modules/data-urls/lib/parser.js +0 -69
  220. package/packages/cli/node_modules/data-urls/lib/utils.js +0 -20
  221. package/packages/cli/node_modules/data-urls/package.json +0 -48
  222. package/packages/cli/node_modules/jsdom/LICENSE.txt +0 -22
  223. package/packages/cli/node_modules/jsdom/README.md +0 -521
  224. package/packages/cli/node_modules/jsdom/lib/api.js +0 -334
  225. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/Window.js +0 -1012
  226. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/default-stylesheet.js +0 -789
  227. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/js-globals.json +0 -312
  228. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/not-implemented.js +0 -13
  229. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/parser/html.js +0 -208
  230. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/parser/index.js +0 -37
  231. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/parser/xml.js +0 -202
  232. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/resources/async-resource-queue.js +0 -114
  233. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/resources/no-op-resource-loader.js +0 -8
  234. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js +0 -98
  235. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/resources/request-manager.js +0 -33
  236. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js +0 -142
  237. package/packages/cli/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js +0 -142
  238. package/packages/cli/node_modules/jsdom/lib/jsdom/level2/style.js +0 -57
  239. package/packages/cli/node_modules/jsdom/lib/jsdom/level3/xpath.js +0 -1875
  240. package/packages/cli/node_modules/jsdom/lib/jsdom/living/aborting/AbortController-impl.js +0 -17
  241. package/packages/cli/node_modules/jsdom/lib/jsdom/living/aborting/AbortSignal-impl.js +0 -131
  242. package/packages/cli/node_modules/jsdom/lib/jsdom/living/attributes/Attr-impl.js +0 -60
  243. package/packages/cli/node_modules/jsdom/lib/jsdom/living/attributes/NamedNodeMap-impl.js +0 -78
  244. package/packages/cli/node_modules/jsdom/lib/jsdom/living/attributes.js +0 -312
  245. package/packages/cli/node_modules/jsdom/lib/jsdom/living/constraint-validation/DefaultConstraintValidation-impl.js +0 -75
  246. package/packages/cli/node_modules/jsdom/lib/jsdom/living/constraint-validation/ValidityState-impl.js +0 -66
  247. package/packages/cli/node_modules/jsdom/lib/jsdom/living/crypto/Crypto-impl.js +0 -68
  248. package/packages/cli/node_modules/jsdom/lib/jsdom/living/cssom/StyleSheetList-impl.js +0 -38
  249. package/packages/cli/node_modules/jsdom/lib/jsdom/living/custom-elements/CustomElementRegistry-impl.js +0 -273
  250. package/packages/cli/node_modules/jsdom/lib/jsdom/living/custom-elements/ElementInternals-impl.js +0 -52
  251. package/packages/cli/node_modules/jsdom/lib/jsdom/living/documents.js +0 -15
  252. package/packages/cli/node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js +0 -59
  253. package/packages/cli/node_modules/jsdom/lib/jsdom/living/domparsing/InnerHTML-impl.js +0 -30
  254. package/packages/cli/node_modules/jsdom/lib/jsdom/living/domparsing/XMLSerializer-impl.js +0 -18
  255. package/packages/cli/node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js +0 -63
  256. package/packages/cli/node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js +0 -36
  257. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/CloseEvent-impl.js +0 -10
  258. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/CompositionEvent-impl.js +0 -20
  259. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/CustomEvent-impl.js +0 -21
  260. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/ErrorEvent-impl.js +0 -14
  261. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/Event-impl.js +0 -197
  262. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/EventModifierMixin-impl.js +0 -24
  263. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js +0 -419
  264. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/FocusEvent-impl.js +0 -9
  265. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/HashChangeEvent-impl.js +0 -14
  266. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/InputEvent-impl.js +0 -11
  267. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/KeyboardEvent-impl.js +0 -29
  268. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/MessageEvent-impl.js +0 -25
  269. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/MouseEvent-impl.js +0 -72
  270. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/PageTransitionEvent-impl.js +0 -20
  271. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/PopStateEvent-impl.js +0 -9
  272. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/ProgressEvent-impl.js +0 -14
  273. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/StorageEvent-impl.js +0 -26
  274. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/SubmitEvent-impl.js +0 -13
  275. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/TouchEvent-impl.js +0 -14
  276. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/UIEvent-impl.js +0 -59
  277. package/packages/cli/node_modules/jsdom/lib/jsdom/living/events/WheelEvent-impl.js +0 -12
  278. package/packages/cli/node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js +0 -172
  279. package/packages/cli/node_modules/jsdom/lib/jsdom/living/fetch/header-list.js +0 -65
  280. package/packages/cli/node_modules/jsdom/lib/jsdom/living/fetch/header-types.js +0 -103
  281. package/packages/cli/node_modules/jsdom/lib/jsdom/living/file-api/Blob-impl.js +0 -93
  282. package/packages/cli/node_modules/jsdom/lib/jsdom/living/file-api/File-impl.js +0 -12
  283. package/packages/cli/node_modules/jsdom/lib/jsdom/living/file-api/FileList-impl.js +0 -15
  284. package/packages/cli/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js +0 -130
  285. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/AbortController.js +0 -143
  286. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/AbortSignal.js +0 -249
  287. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/AbstractRange.js +0 -171
  288. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/AddEventListenerOptions.js +0 -55
  289. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/AssignedNodesOptions.js +0 -28
  290. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Attr.js +0 -217
  291. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/BarProp.js +0 -117
  292. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/BinaryType.js +0 -12
  293. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Blob.js +0 -203
  294. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/BlobCallback.js +0 -30
  295. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/BlobPropertyBag.js +0 -42
  296. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CDATASection.js +0 -109
  297. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CanPlayTypeResult.js +0 -12
  298. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js +0 -453
  299. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CloseEvent.js +0 -168
  300. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CloseEventInit.js +0 -65
  301. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Comment.js +0 -120
  302. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CompositionEvent.js +0 -219
  303. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CompositionEventInit.js +0 -32
  304. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Crypto.js +0 -144
  305. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CustomElementConstructor.js +0 -34
  306. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CustomElementRegistry.js +0 -242
  307. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CustomEvent.js +0 -206
  308. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/CustomEventInit.js +0 -32
  309. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DOMException.js +0 -222
  310. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DOMImplementation.js +0 -237
  311. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DOMParser.js +0 -140
  312. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DOMRect.js +0 -276
  313. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DOMRectInit.js +0 -76
  314. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DOMRectReadOnly.js +0 -285
  315. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DOMStringMap.js +0 -323
  316. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DOMTokenList.js +0 -563
  317. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Document.js +0 -4157
  318. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js +0 -334
  319. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DocumentReadyState.js +0 -12
  320. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js +0 -252
  321. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Element.js +0 -3718
  322. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ElementCreationOptions.js +0 -26
  323. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ElementDefinitionOptions.js +0 -29
  324. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ElementInternals.js +0 -2150
  325. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/EndingType.js +0 -12
  326. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ErrorEvent.js +0 -192
  327. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ErrorEventInit.js +0 -92
  328. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Event.js +0 -430
  329. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/EventHandlerNonNull.js +0 -36
  330. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/EventInit.js +0 -58
  331. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js +0 -35
  332. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/EventListenerOptions.js +0 -28
  333. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/EventModifierInit.js +0 -221
  334. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js +0 -259
  335. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/External.js +0 -130
  336. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/File.js +0 -177
  337. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/FileList.js +0 -324
  338. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/FilePropertyBag.js +0 -33
  339. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/FileReader.js +0 -468
  340. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/FocusEvent.js +0 -144
  341. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/FocusEventInit.js +0 -36
  342. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/FormData.js +0 -468
  343. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Function.js +0 -42
  344. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/GetRootNodeOptions.js +0 -31
  345. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLAnchorElement.js +0 -1023
  346. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLAreaElement.js +0 -822
  347. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLAudioElement.js +0 -110
  348. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLBRElement.js +0 -153
  349. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLBaseElement.js +0 -193
  350. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLBodyElement.js +0 -877
  351. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLButtonElement.js +0 -522
  352. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLCanvasElement.js +0 -304
  353. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLCollection.js +0 -378
  354. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLDListElement.js +0 -156
  355. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataElement.js +0 -153
  356. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataListElement.js +0 -125
  357. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLDetailsElement.js +0 -156
  358. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLDialogElement.js +0 -156
  359. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLDirectoryElement.js +0 -156
  360. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLDivElement.js +0 -153
  361. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js +0 -3137
  362. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLEmbedElement.js +0 -375
  363. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLFieldSetElement.js +0 -329
  364. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLFontElement.js +0 -236
  365. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormControlsCollection.js +0 -344
  366. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormElement.js +0 -684
  367. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameElement.js +0 -504
  368. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameSetElement.js +0 -708
  369. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLHRElement.js +0 -320
  370. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadElement.js +0 -110
  371. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadingElement.js +0 -153
  372. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLHtmlElement.js +0 -153
  373. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLIFrameElement.js +0 -680
  374. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLImageElement.js +0 -893
  375. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js +0 -1924
  376. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLLIElement.js +0 -201
  377. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLLabelElement.js +0 -179
  378. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLLegendElement.js +0 -166
  379. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLLinkElement.js +0 -549
  380. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLMapElement.js +0 -168
  381. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLMarqueeElement.js +0 -554
  382. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js +0 -895
  383. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLMenuElement.js +0 -156
  384. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLMetaElement.js +0 -276
  385. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLMeterElement.js +0 -365
  386. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLModElement.js +0 -211
  387. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLOListElement.js +0 -281
  388. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLObjectElement.js +0 -935
  389. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptGroupElement.js +0 -197
  390. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionElement.js +0 -376
  391. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionsCollection.js +0 -537
  392. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLOutputElement.js +0 -392
  393. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLParagraphElement.js +0 -153
  394. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLParamElement.js +0 -276
  395. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLPictureElement.js +0 -110
  396. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLPreElement.js +0 -160
  397. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLProgressElement.js +0 -228
  398. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLQuoteElement.js +0 -170
  399. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLScriptElement.js +0 -466
  400. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLSelectElement.js +0 -1015
  401. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLSlotElement.js +0 -192
  402. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLSourceElement.js +0 -334
  403. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLSpanElement.js +0 -110
  404. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLStyleElement.js +0 -207
  405. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCaptionElement.js +0 -153
  406. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCellElement.js +0 -729
  407. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableColElement.js +0 -372
  408. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableElement.js +0 -799
  409. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableRowElement.js +0 -414
  410. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableSectionElement.js +0 -346
  411. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTemplateElement.js +0 -123
  412. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTextAreaElement.js +0 -1206
  413. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTimeElement.js +0 -153
  414. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTitleElement.js +0 -152
  415. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLTrackElement.js +0 -360
  416. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLUListElement.js +0 -197
  417. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLUnknownElement.js +0 -109
  418. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HTMLVideoElement.js +0 -337
  419. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEvent.js +0 -157
  420. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEventInit.js +0 -50
  421. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Headers.js +0 -418
  422. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/History.js +0 -266
  423. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/InputEvent.js +0 -168
  424. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/InputEventInit.js +0 -68
  425. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEvent.js +0 -445
  426. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEventInit.js +0 -116
  427. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Location.js +0 -404
  428. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MessageEvent.js +0 -317
  429. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MessageEventInit.js +0 -100
  430. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MimeType.js +0 -156
  431. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MimeTypeArray.js +0 -352
  432. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MouseEvent.js +0 -569
  433. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MouseEventInit.js +0 -159
  434. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MutationCallback.js +0 -34
  435. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MutationObserver.js +0 -178
  436. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MutationObserverInit.js +0 -121
  437. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/MutationRecord.js +0 -229
  438. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/NamedNodeMap.js +0 -553
  439. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Navigator.js +0 -326
  440. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Node.js +0 -763
  441. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/NodeFilter.js +0 -75
  442. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/NodeIterator.js +0 -207
  443. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/NodeList.js +0 -328
  444. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/OnBeforeUnloadEventHandlerNonNull.js +0 -42
  445. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/OnErrorEventHandlerNonNull.js +0 -56
  446. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEvent.js +0 -144
  447. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEventInit.js +0 -35
  448. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Performance.js +0 -142
  449. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Plugin.js +0 -385
  450. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/PluginArray.js +0 -362
  451. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/PopStateEvent.js +0 -144
  452. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/PopStateEventInit.js +0 -32
  453. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ProcessingInstruction.js +0 -122
  454. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ProgressEvent.js +0 -170
  455. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ProgressEventInit.js +0 -65
  456. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/RadioNodeList.js +0 -322
  457. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Range.js +0 -641
  458. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedPreserveAspectRatio.js +0 -136
  459. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedRect.js +0 -136
  460. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedString.js +0 -149
  461. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGBoundingBoxOptions.js +0 -64
  462. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGDefsElement.js +0 -109
  463. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGDescElement.js +0 -109
  464. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGElement.js +0 -2803
  465. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGGElement.js +0 -109
  466. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGGraphicsElement.js +0 -139
  467. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGMetadataElement.js +0 -109
  468. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGNumber.js +0 -132
  469. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGPreserveAspectRatio.js +0 -196
  470. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGRect.js +0 -210
  471. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGSVGElement.js +0 -786
  472. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGStringList.js +0 -537
  473. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGSwitchElement.js +0 -109
  474. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGSymbolElement.js +0 -146
  475. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SVGTitleElement.js +0 -109
  476. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Screen.js +0 -180
  477. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ScrollBehavior.js +0 -12
  478. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ScrollIntoViewOptions.js +0 -45
  479. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ScrollLogicalPosition.js +0 -14
  480. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ScrollOptions.js +0 -30
  481. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ScrollRestoration.js +0 -12
  482. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Selection.js +0 -569
  483. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SelectionMode.js +0 -12
  484. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js +0 -187
  485. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootInit.js +0 -30
  486. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootMode.js +0 -12
  487. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/StaticRange.js +0 -123
  488. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/StaticRangeInit.js +0 -72
  489. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Storage.js +0 -423
  490. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/StorageEvent.js +0 -318
  491. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/StorageEventInit.js +0 -99
  492. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/StyleSheetList.js +0 -326
  493. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SubmitEvent.js +0 -144
  494. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SubmitEventInit.js +0 -36
  495. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/SupportedType.js +0 -18
  496. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/Text.js +0 -170
  497. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/TextTrackKind.js +0 -12
  498. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/TouchEvent.js +0 -222
  499. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/TouchEventInit.js +0 -89
  500. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/TreeWalker.js +0 -255
  501. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/UIEvent.js +0 -235
  502. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/UIEventInit.js +0 -62
  503. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/ValidityState.js +0 -249
  504. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/VisibilityState.js +0 -12
  505. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/VoidFunction.js +0 -26
  506. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/WebSocket.js +0 -476
  507. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/WheelEvent.js +0 -191
  508. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/WheelEventInit.js +0 -71
  509. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/XMLDocument.js +0 -109
  510. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequest.js +0 -655
  511. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestEventTarget.js +0 -334
  512. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestResponseType.js +0 -14
  513. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestUpload.js +0 -109
  514. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/XMLSerializer.js +0 -132
  515. package/packages/cli/node_modules/jsdom/lib/jsdom/living/generated/utils.js +0 -190
  516. package/packages/cli/node_modules/jsdom/lib/jsdom/living/geometry/DOMRect-impl.js +0 -39
  517. package/packages/cli/node_modules/jsdom/lib/jsdom/living/geometry/DOMRectReadOnly-impl.js +0 -72
  518. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/agent-factory.js +0 -13
  519. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/binary-data.js +0 -9
  520. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/colors.js +0 -245
  521. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/create-element.js +0 -329
  522. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/create-event-accessor.js +0 -188
  523. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/custom-elements.js +0 -272
  524. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/dates-and-times.js +0 -270
  525. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/details.js +0 -15
  526. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/events.js +0 -24
  527. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/focusing.js +0 -104
  528. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/form-controls.js +0 -309
  529. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/html-constructor.js +0 -78
  530. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/http-request.js +0 -266
  531. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js +0 -12
  532. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/iterable-weak-set.js +0 -48
  533. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/json.js +0 -12
  534. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/mutation-observers.js +0 -198
  535. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js +0 -16
  536. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/node.js +0 -68
  537. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/number-and-date-inputs.js +0 -195
  538. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js +0 -104
  539. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/page-transition-event.js +0 -9
  540. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js +0 -76
  541. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/selectors.js +0 -47
  542. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/shadow-dom.js +0 -285
  543. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/strings.js +0 -162
  544. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/style-rules.js +0 -243
  545. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js +0 -123
  546. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/svg/basic-types.js +0 -41
  547. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js +0 -46
  548. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/text.js +0 -19
  549. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/traversal.js +0 -72
  550. package/packages/cli/node_modules/jsdom/lib/jsdom/living/helpers/validate-names.js +0 -65
  551. package/packages/cli/node_modules/jsdom/lib/jsdom/living/hr-time/Performance-impl.js +0 -22
  552. package/packages/cli/node_modules/jsdom/lib/jsdom/living/interfaces.js +0 -239
  553. package/packages/cli/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationObserver-impl.js +0 -95
  554. package/packages/cli/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationRecord-impl.js +0 -37
  555. package/packages/cli/node_modules/jsdom/lib/jsdom/living/named-properties-window.js +0 -141
  556. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/MimeType-impl.js +0 -3
  557. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/MimeTypeArray-impl.js +0 -21
  558. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/Navigator-impl.js +0 -29
  559. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorConcurrentHardware-impl.js +0 -8
  560. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorCookies-impl.js +0 -7
  561. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorID-impl.js +0 -37
  562. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorLanguage-impl.js +0 -9
  563. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorOnLine-impl.js +0 -7
  564. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorPlugins-impl.js +0 -8
  565. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/Plugin-impl.js +0 -3
  566. package/packages/cli/node_modules/jsdom/lib/jsdom/living/navigator/PluginArray-impl.js +0 -23
  567. package/packages/cli/node_modules/jsdom/lib/jsdom/living/node-document-position.js +0 -10
  568. package/packages/cli/node_modules/jsdom/lib/jsdom/living/node-type.js +0 -16
  569. package/packages/cli/node_modules/jsdom/lib/jsdom/living/node.js +0 -331
  570. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/CDATASection-impl.js +0 -16
  571. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/CharacterData-impl.js +0 -118
  572. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js +0 -80
  573. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/Comment-impl.js +0 -20
  574. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/DOMImplementation-impl.js +0 -120
  575. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/DOMStringMap-impl.js +0 -64
  576. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js +0 -171
  577. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js +0 -1003
  578. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/DocumentFragment-impl.js +0 -44
  579. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/DocumentOrShadowRoot-impl.js +0 -28
  580. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/DocumentType-impl.js +0 -24
  581. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js +0 -603
  582. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/ElementCSSInlineStyle-impl.js +0 -22
  583. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/ElementContentEditable-impl.js +0 -7
  584. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/GlobalEventHandlers-impl.js +0 -145
  585. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAnchorElement-impl.js +0 -50
  586. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAreaElement-impl.js +0 -43
  587. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAudioElement-impl.js +0 -9
  588. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBRElement-impl.js +0 -9
  589. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBaseElement-impl.js +0 -44
  590. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBodyElement-impl.js +0 -17
  591. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js +0 -79
  592. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCanvasElement-impl.js +0 -130
  593. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js +0 -96
  594. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDListElement-impl.js +0 -9
  595. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataElement-impl.js +0 -9
  596. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataListElement-impl.js +0 -20
  597. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js +0 -35
  598. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDialogElement-impl.js +0 -9
  599. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDirectoryElement-impl.js +0 -9
  600. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDivElement-impl.js +0 -9
  601. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js +0 -210
  602. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLEmbedElement-impl.js +0 -8
  603. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFieldSetElement-impl.js +0 -43
  604. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFontElement-impl.js +0 -9
  605. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormControlsCollection-impl.js +0 -33
  606. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormElement-impl.js +0 -248
  607. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameElement-impl.js +0 -266
  608. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameSetElement-impl.js +0 -17
  609. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHRElement-impl.js +0 -9
  610. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadElement-impl.js +0 -9
  611. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadingElement-impl.js +0 -9
  612. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHtmlElement-impl.js +0 -9
  613. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHyperlinkElementUtils-impl.js +0 -366
  614. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLIFrameElement-impl.js +0 -9
  615. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLImageElement-impl.js +0 -131
  616. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLInputElement-impl.js +0 -1097
  617. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLIElement-impl.js +0 -9
  618. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLabelElement-impl.js +0 -94
  619. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLegendElement-impl.js +0 -18
  620. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLinkElement-impl.js +0 -107
  621. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMapElement-impl.js +0 -13
  622. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMarqueeElement-impl.js +0 -9
  623. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMediaElement-impl.js +0 -138
  624. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMenuElement-impl.js +0 -9
  625. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMetaElement-impl.js +0 -9
  626. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMeterElement-impl.js +0 -180
  627. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLModElement-impl.js +0 -9
  628. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOListElement-impl.js +0 -22
  629. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLObjectElement-impl.js +0 -26
  630. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptGroupElement-impl.js +0 -9
  631. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionElement-impl.js +0 -146
  632. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionsCollection-impl.js +0 -110
  633. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js +0 -88
  634. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOutputElement-impl.js +0 -88
  635. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParagraphElement-impl.js +0 -9
  636. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParamElement-impl.js +0 -9
  637. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPictureElement-impl.js +0 -9
  638. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPreElement-impl.js +0 -9
  639. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js +0 -72
  640. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLQuoteElement-impl.js +0 -9
  641. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js +0 -261
  642. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSelectElement-impl.js +0 -283
  643. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js +0 -59
  644. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSourceElement-impl.js +0 -8
  645. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSpanElement-impl.js +0 -9
  646. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js +0 -73
  647. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCaptionElement-impl.js +0 -9
  648. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCellElement-impl.js +0 -73
  649. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableColElement-impl.js +0 -9
  650. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js +0 -236
  651. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableRowElement-impl.js +0 -88
  652. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableSectionElement-impl.js +0 -61
  653. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTemplateElement-impl.js +0 -67
  654. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTextAreaElement-impl.js +0 -244
  655. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTimeElement-impl.js +0 -9
  656. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTitleElement-impl.js +0 -18
  657. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTrackElement-impl.js +0 -13
  658. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUListElement-impl.js +0 -9
  659. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUnknownElement-impl.js +0 -9
  660. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/HTMLVideoElement-impl.js +0 -17
  661. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/LinkStyle-impl.js +0 -2
  662. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js +0 -1160
  663. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/NodeList-impl.js +0 -43
  664. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/NonDocumentTypeChildNode-impl.js +0 -28
  665. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/NonElementParentNode-impl.js +0 -11
  666. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js +0 -93
  667. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/ProcessingInstruction-impl.js +0 -22
  668. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/RadioNodeList-impl.js +0 -49
  669. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGDefsElement-impl.js +0 -9
  670. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGDescElement-impl.js +0 -9
  671. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGElement-impl.js +0 -64
  672. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGGElement-impl.js +0 -9
  673. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGGraphicsElement-impl.js +0 -16
  674. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGMetadataElement-impl.js +0 -9
  675. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGSVGElement-impl.js +0 -47
  676. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGSwitchElement-impl.js +0 -9
  677. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGSymbolElement-impl.js +0 -9
  678. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGTests-impl.js +0 -42
  679. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/SVGTitleElement-impl.js +0 -9
  680. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js +0 -41
  681. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/Slotable-impl.js +0 -48
  682. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/Text-impl.js +0 -96
  683. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/WindowEventHandlers-impl.js +0 -52
  684. package/packages/cli/node_modules/jsdom/lib/jsdom/living/nodes/XMLDocument-impl.js +0 -4
  685. package/packages/cli/node_modules/jsdom/lib/jsdom/living/range/AbstractRange-impl.js +0 -43
  686. package/packages/cli/node_modules/jsdom/lib/jsdom/living/range/Range-impl.js +0 -897
  687. package/packages/cli/node_modules/jsdom/lib/jsdom/living/range/StaticRange-impl.js +0 -39
  688. package/packages/cli/node_modules/jsdom/lib/jsdom/living/range/boundary-point.js +0 -47
  689. package/packages/cli/node_modules/jsdom/lib/jsdom/living/selection/Selection-impl.js +0 -358
  690. package/packages/cli/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedPreserveAspectRatio-impl.js +0 -24
  691. package/packages/cli/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedRect-impl.js +0 -122
  692. package/packages/cli/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedString-impl.js +0 -42
  693. package/packages/cli/node_modules/jsdom/lib/jsdom/living/svg/SVGListBase.js +0 -195
  694. package/packages/cli/node_modules/jsdom/lib/jsdom/living/svg/SVGNumber-impl.js +0 -48
  695. package/packages/cli/node_modules/jsdom/lib/jsdom/living/svg/SVGPreserveAspectRatio-impl.js +0 -100
  696. package/packages/cli/node_modules/jsdom/lib/jsdom/living/svg/SVGRect-impl.js +0 -143
  697. package/packages/cli/node_modules/jsdom/lib/jsdom/living/svg/SVGStringList-impl.js +0 -16
  698. package/packages/cli/node_modules/jsdom/lib/jsdom/living/traversal/NodeIterator-impl.js +0 -107
  699. package/packages/cli/node_modules/jsdom/lib/jsdom/living/traversal/TreeWalker-impl.js +0 -217
  700. package/packages/cli/node_modules/jsdom/lib/jsdom/living/traversal/helpers.js +0 -44
  701. package/packages/cli/node_modules/jsdom/lib/jsdom/living/webidl/DOMException-impl.js +0 -46
  702. package/packages/cli/node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js +0 -328
  703. package/packages/cli/node_modules/jsdom/lib/jsdom/living/webstorage/Storage-impl.js +0 -102
  704. package/packages/cli/node_modules/jsdom/lib/jsdom/living/window/BarProp-impl.js +0 -10
  705. package/packages/cli/node_modules/jsdom/lib/jsdom/living/window/External-impl.js +0 -9
  706. package/packages/cli/node_modules/jsdom/lib/jsdom/living/window/History-impl.js +0 -148
  707. package/packages/cli/node_modules/jsdom/lib/jsdom/living/window/Location-impl.js +0 -227
  708. package/packages/cli/node_modules/jsdom/lib/jsdom/living/window/Screen-impl.js +0 -13
  709. package/packages/cli/node_modules/jsdom/lib/jsdom/living/window/SessionHistory.js +0 -163
  710. package/packages/cli/node_modules/jsdom/lib/jsdom/living/window/navigation.js +0 -85
  711. package/packages/cli/node_modules/jsdom/lib/jsdom/living/xhr/FormData-impl.js +0 -191
  712. package/packages/cli/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js +0 -1005
  713. package/packages/cli/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js +0 -17
  714. package/packages/cli/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestUpload-impl.js +0 -4
  715. package/packages/cli/node_modules/jsdom/lib/jsdom/living/xhr/multipart-form-data.js +0 -105
  716. package/packages/cli/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js +0 -59
  717. package/packages/cli/node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js +0 -417
  718. package/packages/cli/node_modules/jsdom/lib/jsdom/named-properties-tracker.js +0 -158
  719. package/packages/cli/node_modules/jsdom/lib/jsdom/utils.js +0 -105
  720. package/packages/cli/node_modules/jsdom/lib/jsdom/virtual-console.js +0 -34
  721. package/packages/cli/node_modules/jsdom/package.json +0 -92
  722. package/packages/cli/node_modules/lru-cache/LICENSE +0 -15
  723. package/packages/cli/node_modules/lru-cache/README.md +0 -331
  724. package/packages/cli/node_modules/lru-cache/dist/commonjs/index.d.ts +0 -1277
  725. package/packages/cli/node_modules/lru-cache/dist/commonjs/index.d.ts.map +0 -1
  726. package/packages/cli/node_modules/lru-cache/dist/commonjs/index.js +0 -1546
  727. package/packages/cli/node_modules/lru-cache/dist/commonjs/index.js.map +0 -1
  728. package/packages/cli/node_modules/lru-cache/dist/commonjs/index.min.js +0 -2
  729. package/packages/cli/node_modules/lru-cache/dist/commonjs/index.min.js.map +0 -7
  730. package/packages/cli/node_modules/lru-cache/dist/commonjs/package.json +0 -3
  731. package/packages/cli/node_modules/lru-cache/dist/esm/index.d.ts +0 -1277
  732. package/packages/cli/node_modules/lru-cache/dist/esm/index.d.ts.map +0 -1
  733. package/packages/cli/node_modules/lru-cache/dist/esm/index.js +0 -1542
  734. package/packages/cli/node_modules/lru-cache/dist/esm/index.js.map +0 -1
  735. package/packages/cli/node_modules/lru-cache/dist/esm/index.min.js +0 -2
  736. package/packages/cli/node_modules/lru-cache/dist/esm/index.min.js.map +0 -7
  737. package/packages/cli/node_modules/lru-cache/dist/esm/package.json +0 -3
  738. package/packages/cli/node_modules/lru-cache/package.json +0 -116
  739. package/packages/cli/node_modules/tldts/LICENSE +0 -13
  740. package/packages/cli/node_modules/tldts/README.md +0 -327
  741. package/packages/cli/node_modules/tldts/bin/cli.js +0 -21
  742. package/packages/cli/node_modules/tldts/dist/cjs/index.js +0 -666
  743. package/packages/cli/node_modules/tldts/dist/cjs/index.js.map +0 -1
  744. package/packages/cli/node_modules/tldts/dist/cjs/src/data/trie.js +0 -14
  745. package/packages/cli/node_modules/tldts/dist/cjs/src/data/trie.js.map +0 -1
  746. package/packages/cli/node_modules/tldts/dist/cjs/src/suffix-trie.js +0 -67
  747. package/packages/cli/node_modules/tldts/dist/cjs/src/suffix-trie.js.map +0 -1
  748. package/packages/cli/node_modules/tldts/dist/cjs/tsconfig.tsbuildinfo +0 -1
  749. package/packages/cli/node_modules/tldts/dist/es6/index.js +0 -33
  750. package/packages/cli/node_modules/tldts/dist/es6/index.js.map +0 -1
  751. package/packages/cli/node_modules/tldts/dist/es6/src/data/trie.js +0 -11
  752. package/packages/cli/node_modules/tldts/dist/es6/src/data/trie.js.map +0 -1
  753. package/packages/cli/node_modules/tldts/dist/es6/src/suffix-trie.js +0 -64
  754. package/packages/cli/node_modules/tldts/dist/es6/src/suffix-trie.js.map +0 -1
  755. package/packages/cli/node_modules/tldts/dist/es6/tsconfig.bundle.tsbuildinfo +0 -1
  756. package/packages/cli/node_modules/tldts/dist/index.cjs.min.js +0 -2
  757. package/packages/cli/node_modules/tldts/dist/index.cjs.min.js.map +0 -1
  758. package/packages/cli/node_modules/tldts/dist/index.esm.min.js +0 -2
  759. package/packages/cli/node_modules/tldts/dist/index.esm.min.js.map +0 -1
  760. package/packages/cli/node_modules/tldts/dist/index.umd.min.js +0 -2
  761. package/packages/cli/node_modules/tldts/dist/index.umd.min.js.map +0 -1
  762. package/packages/cli/node_modules/tldts/dist/types/index.d.ts +0 -7
  763. package/packages/cli/node_modules/tldts/dist/types/src/data/trie.d.ts +0 -5
  764. package/packages/cli/node_modules/tldts/dist/types/src/suffix-trie.d.ts +0 -5
  765. package/packages/cli/node_modules/tldts/index.ts +0 -62
  766. package/packages/cli/node_modules/tldts/package.json +0 -91
  767. package/packages/cli/node_modules/tldts/src/data/trie.ts +0 -14
  768. package/packages/cli/node_modules/tldts/src/suffix-trie.ts +0 -110
  769. package/packages/cli/node_modules/tldts-core/LICENSE +0 -13
  770. package/packages/cli/node_modules/tldts-core/README.md +0 -3
  771. package/packages/cli/node_modules/tldts-core/dist/cjs/index.js +0 -561
  772. package/packages/cli/node_modules/tldts-core/dist/cjs/index.js.map +0 -1
  773. package/packages/cli/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js +0 -15
  774. package/packages/cli/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map +0 -1
  775. package/packages/cli/node_modules/tldts-core/dist/cjs/src/domain.js +0 -83
  776. package/packages/cli/node_modules/tldts-core/dist/cjs/src/domain.js.map +0 -1
  777. package/packages/cli/node_modules/tldts-core/dist/cjs/src/extract-hostname.js +0 -149
  778. package/packages/cli/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map +0 -1
  779. package/packages/cli/node_modules/tldts-core/dist/cjs/src/factory.js +0 -104
  780. package/packages/cli/node_modules/tldts-core/dist/cjs/src/factory.js.map +0 -1
  781. package/packages/cli/node_modules/tldts-core/dist/cjs/src/is-ip.js +0 -72
  782. package/packages/cli/node_modules/tldts-core/dist/cjs/src/is-ip.js.map +0 -1
  783. package/packages/cli/node_modules/tldts-core/dist/cjs/src/is-valid.js +0 -69
  784. package/packages/cli/node_modules/tldts-core/dist/cjs/src/is-valid.js.map +0 -1
  785. package/packages/cli/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js +0 -69
  786. package/packages/cli/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map +0 -1
  787. package/packages/cli/node_modules/tldts-core/dist/cjs/src/lookup/interface.js +0 -3
  788. package/packages/cli/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map +0 -1
  789. package/packages/cli/node_modules/tldts-core/dist/cjs/src/options.js +0 -22
  790. package/packages/cli/node_modules/tldts-core/dist/cjs/src/options.js.map +0 -1
  791. package/packages/cli/node_modules/tldts-core/dist/cjs/src/subdomain.js +0 -14
  792. package/packages/cli/node_modules/tldts-core/dist/cjs/src/subdomain.js.map +0 -1
  793. package/packages/cli/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo +0 -1
  794. package/packages/cli/node_modules/tldts-core/dist/es6/index.js +0 -4
  795. package/packages/cli/node_modules/tldts-core/dist/es6/index.js.map +0 -1
  796. package/packages/cli/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js +0 -12
  797. package/packages/cli/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map +0 -1
  798. package/packages/cli/node_modules/tldts-core/dist/es6/src/domain.js +0 -80
  799. package/packages/cli/node_modules/tldts-core/dist/es6/src/domain.js.map +0 -1
  800. package/packages/cli/node_modules/tldts-core/dist/es6/src/extract-hostname.js +0 -146
  801. package/packages/cli/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map +0 -1
  802. package/packages/cli/node_modules/tldts-core/dist/es6/src/factory.js +0 -99
  803. package/packages/cli/node_modules/tldts-core/dist/es6/src/factory.js.map +0 -1
  804. package/packages/cli/node_modules/tldts-core/dist/es6/src/is-ip.js +0 -69
  805. package/packages/cli/node_modules/tldts-core/dist/es6/src/is-ip.js.map +0 -1
  806. package/packages/cli/node_modules/tldts-core/dist/es6/src/is-valid.js +0 -66
  807. package/packages/cli/node_modules/tldts-core/dist/es6/src/is-valid.js.map +0 -1
  808. package/packages/cli/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js +0 -66
  809. package/packages/cli/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map +0 -1
  810. package/packages/cli/node_modules/tldts-core/dist/es6/src/lookup/interface.js +0 -2
  811. package/packages/cli/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map +0 -1
  812. package/packages/cli/node_modules/tldts-core/dist/es6/src/options.js +0 -19
  813. package/packages/cli/node_modules/tldts-core/dist/es6/src/options.js.map +0 -1
  814. package/packages/cli/node_modules/tldts-core/dist/es6/src/subdomain.js +0 -11
  815. package/packages/cli/node_modules/tldts-core/dist/es6/src/subdomain.js.map +0 -1
  816. package/packages/cli/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo +0 -1
  817. package/packages/cli/node_modules/tldts-core/dist/types/index.d.ts +0 -4
  818. package/packages/cli/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts +0 -6
  819. package/packages/cli/node_modules/tldts-core/dist/types/src/domain.d.ts +0 -5
  820. package/packages/cli/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts +0 -5
  821. package/packages/cli/node_modules/tldts-core/dist/types/src/factory.d.ts +0 -28
  822. package/packages/cli/node_modules/tldts-core/dist/types/src/is-ip.d.ts +0 -6
  823. package/packages/cli/node_modules/tldts-core/dist/types/src/is-valid.d.ts +0 -15
  824. package/packages/cli/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts +0 -2
  825. package/packages/cli/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts +0 -9
  826. package/packages/cli/node_modules/tldts-core/dist/types/src/options.d.ts +0 -10
  827. package/packages/cli/node_modules/tldts-core/dist/types/src/subdomain.d.ts +0 -4
  828. package/packages/cli/node_modules/tldts-core/index.ts +0 -10
  829. package/packages/cli/node_modules/tldts-core/package.json +0 -68
  830. package/packages/cli/node_modules/tldts-core/src/domain-without-suffix.ts +0 -14
  831. package/packages/cli/node_modules/tldts-core/src/domain.ts +0 -100
  832. package/packages/cli/node_modules/tldts-core/src/extract-hostname.ts +0 -170
  833. package/packages/cli/node_modules/tldts-core/src/factory.ts +0 -160
  834. package/packages/cli/node_modules/tldts-core/src/is-ip.ts +0 -87
  835. package/packages/cli/node_modules/tldts-core/src/is-valid.ts +0 -79
  836. package/packages/cli/node_modules/tldts-core/src/lookup/fast-path.ts +0 -80
  837. package/packages/cli/node_modules/tldts-core/src/lookup/interface.ts +0 -10
  838. package/packages/cli/node_modules/tldts-core/src/options.ts +0 -39
  839. package/packages/cli/node_modules/tldts-core/src/subdomain.ts +0 -11
  840. package/packages/cli/node_modules/tough-cookie/LICENSE +0 -12
  841. package/packages/cli/node_modules/tough-cookie/README.md +0 -154
  842. package/packages/cli/node_modules/tough-cookie/dist/cookie/canonicalDomain.d.ts +0 -33
  843. package/packages/cli/node_modules/tough-cookie/dist/cookie/canonicalDomain.js +0 -65
  844. package/packages/cli/node_modules/tough-cookie/dist/cookie/constants.d.ts +0 -54
  845. package/packages/cli/node_modules/tough-cookie/dist/cookie/constants.js +0 -38
  846. package/packages/cli/node_modules/tough-cookie/dist/cookie/cookie.d.ts +0 -326
  847. package/packages/cli/node_modules/tough-cookie/dist/cookie/cookie.js +0 -831
  848. package/packages/cli/node_modules/tough-cookie/dist/cookie/cookieCompare.d.ts +0 -58
  849. package/packages/cli/node_modules/tough-cookie/dist/cookie/cookieCompare.js +0 -84
  850. package/packages/cli/node_modules/tough-cookie/dist/cookie/cookieJar.d.ts +0 -621
  851. package/packages/cli/node_modules/tough-cookie/dist/cookie/cookieJar.js +0 -1000
  852. package/packages/cli/node_modules/tough-cookie/dist/cookie/defaultPath.d.ts +0 -40
  853. package/packages/cli/node_modules/tough-cookie/dist/cookie/defaultPath.js +0 -60
  854. package/packages/cli/node_modules/tough-cookie/dist/cookie/domainMatch.d.ts +0 -38
  855. package/packages/cli/node_modules/tough-cookie/dist/cookie/domainMatch.js +0 -94
  856. package/packages/cli/node_modules/tough-cookie/dist/cookie/formatDate.d.ts +0 -15
  857. package/packages/cli/node_modules/tough-cookie/dist/cookie/formatDate.js +0 -20
  858. package/packages/cli/node_modules/tough-cookie/dist/cookie/index.d.ts +0 -29
  859. package/packages/cli/node_modules/tough-cookie/dist/cookie/index.js +0 -54
  860. package/packages/cli/node_modules/tough-cookie/dist/cookie/parseDate.d.ts +0 -103
  861. package/packages/cli/node_modules/tough-cookie/dist/cookie/parseDate.js +0 -323
  862. package/packages/cli/node_modules/tough-cookie/dist/cookie/permutePath.d.ts +0 -14
  863. package/packages/cli/node_modules/tough-cookie/dist/cookie/permutePath.js +0 -32
  864. package/packages/cli/node_modules/tough-cookie/dist/getPublicSuffix.d.ts +0 -55
  865. package/packages/cli/node_modules/tough-cookie/dist/getPublicSuffix.js +0 -71
  866. package/packages/cli/node_modules/tough-cookie/dist/memstore.d.ts +0 -220
  867. package/packages/cli/node_modules/tough-cookie/dist/memstore.js +0 -187
  868. package/packages/cli/node_modules/tough-cookie/dist/pathMatch.d.ts +0 -17
  869. package/packages/cli/node_modules/tough-cookie/dist/pathMatch.js +0 -40
  870. package/packages/cli/node_modules/tough-cookie/dist/permuteDomain.d.ts +0 -15
  871. package/packages/cli/node_modules/tough-cookie/dist/permuteDomain.js +0 -44
  872. package/packages/cli/node_modules/tough-cookie/dist/store.d.ts +0 -211
  873. package/packages/cli/node_modules/tough-cookie/dist/store.js +0 -76
  874. package/packages/cli/node_modules/tough-cookie/dist/utils.d.ts +0 -34
  875. package/packages/cli/node_modules/tough-cookie/dist/utils.js +0 -99
  876. package/packages/cli/node_modules/tough-cookie/dist/validators.d.ts +0 -24
  877. package/packages/cli/node_modules/tough-cookie/dist/validators.js +0 -90
  878. package/packages/cli/node_modules/tough-cookie/dist/version.d.ts +0 -5
  879. package/packages/cli/node_modules/tough-cookie/dist/version.js +0 -8
  880. package/packages/cli/node_modules/tough-cookie/package.json +0 -144
  881. package/packages/cli/node_modules/tr46/LICENSE.md +0 -21
  882. package/packages/cli/node_modules/tr46/README.md +0 -76
  883. package/packages/cli/node_modules/tr46/index.js +0 -344
  884. package/packages/cli/node_modules/tr46/lib/mappingTable.json +0 -1
  885. package/packages/cli/node_modules/tr46/lib/regexes.js +0 -29
  886. package/packages/cli/node_modules/tr46/lib/statusMapping.js +0 -9
  887. package/packages/cli/node_modules/tr46/package.json +0 -44
  888. package/packages/cli/node_modules/undici-types/LICENSE +0 -21
  889. package/packages/cli/node_modules/undici-types/README.md +0 -6
  890. package/packages/cli/node_modules/undici-types/agent.d.ts +0 -31
  891. package/packages/cli/node_modules/undici-types/api.d.ts +0 -43
  892. package/packages/cli/node_modules/undici-types/balanced-pool.d.ts +0 -29
  893. package/packages/cli/node_modules/undici-types/cache.d.ts +0 -36
  894. package/packages/cli/node_modules/undici-types/client.d.ts +0 -108
  895. package/packages/cli/node_modules/undici-types/connector.d.ts +0 -34
  896. package/packages/cli/node_modules/undici-types/content-type.d.ts +0 -21
  897. package/packages/cli/node_modules/undici-types/cookies.d.ts +0 -28
  898. package/packages/cli/node_modules/undici-types/diagnostics-channel.d.ts +0 -66
  899. package/packages/cli/node_modules/undici-types/dispatcher.d.ts +0 -256
  900. package/packages/cli/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -21
  901. package/packages/cli/node_modules/undici-types/errors.d.ts +0 -149
  902. package/packages/cli/node_modules/undici-types/eventsource.d.ts +0 -61
  903. package/packages/cli/node_modules/undici-types/fetch.d.ts +0 -209
  904. package/packages/cli/node_modules/undici-types/file.d.ts +0 -39
  905. package/packages/cli/node_modules/undici-types/filereader.d.ts +0 -54
  906. package/packages/cli/node_modules/undici-types/formdata.d.ts +0 -108
  907. package/packages/cli/node_modules/undici-types/global-dispatcher.d.ts +0 -9
  908. package/packages/cli/node_modules/undici-types/global-origin.d.ts +0 -7
  909. package/packages/cli/node_modules/undici-types/handlers.d.ts +0 -15
  910. package/packages/cli/node_modules/undici-types/header.d.ts +0 -4
  911. package/packages/cli/node_modules/undici-types/index.d.ts +0 -71
  912. package/packages/cli/node_modules/undici-types/interceptors.d.ts +0 -17
  913. package/packages/cli/node_modules/undici-types/mock-agent.d.ts +0 -50
  914. package/packages/cli/node_modules/undici-types/mock-client.d.ts +0 -25
  915. package/packages/cli/node_modules/undici-types/mock-errors.d.ts +0 -12
  916. package/packages/cli/node_modules/undici-types/mock-interceptor.d.ts +0 -93
  917. package/packages/cli/node_modules/undici-types/mock-pool.d.ts +0 -25
  918. package/packages/cli/node_modules/undici-types/package.json +0 -55
  919. package/packages/cli/node_modules/undici-types/patch.d.ts +0 -33
  920. package/packages/cli/node_modules/undici-types/pool-stats.d.ts +0 -19
  921. package/packages/cli/node_modules/undici-types/pool.d.ts +0 -39
  922. package/packages/cli/node_modules/undici-types/proxy-agent.d.ts +0 -28
  923. package/packages/cli/node_modules/undici-types/readable.d.ts +0 -65
  924. package/packages/cli/node_modules/undici-types/retry-agent.d.ts +0 -8
  925. package/packages/cli/node_modules/undici-types/retry-handler.d.ts +0 -116
  926. package/packages/cli/node_modules/undici-types/util.d.ts +0 -18
  927. package/packages/cli/node_modules/undici-types/webidl.d.ts +0 -228
  928. package/packages/cli/node_modules/undici-types/websocket.d.ts +0 -150
  929. package/packages/cli/node_modules/webidl-conversions/LICENSE.md +0 -12
  930. package/packages/cli/node_modules/webidl-conversions/README.md +0 -99
  931. package/packages/cli/node_modules/webidl-conversions/lib/index.js +0 -450
  932. package/packages/cli/node_modules/webidl-conversions/package.json +0 -35
  933. package/packages/cli/node_modules/whatwg-url/LICENSE.txt +0 -21
  934. package/packages/cli/node_modules/whatwg-url/README.md +0 -106
  935. package/packages/cli/node_modules/whatwg-url/index.js +0 -27
  936. package/packages/cli/node_modules/whatwg-url/lib/Function.js +0 -42
  937. package/packages/cli/node_modules/whatwg-url/lib/URL-impl.js +0 -233
  938. package/packages/cli/node_modules/whatwg-url/lib/URL.js +0 -499
  939. package/packages/cli/node_modules/whatwg-url/lib/URLSearchParams-impl.js +0 -135
  940. package/packages/cli/node_modules/whatwg-url/lib/URLSearchParams.js +0 -505
  941. package/packages/cli/node_modules/whatwg-url/lib/VoidFunction.js +0 -26
  942. package/packages/cli/node_modules/whatwg-url/lib/encoding.js +0 -16
  943. package/packages/cli/node_modules/whatwg-url/lib/infra.js +0 -26
  944. package/packages/cli/node_modules/whatwg-url/lib/percent-encoding.js +0 -142
  945. package/packages/cli/node_modules/whatwg-url/lib/url-state-machine.js +0 -1274
  946. package/packages/cli/node_modules/whatwg-url/lib/urlencoded.js +0 -89
  947. package/packages/cli/node_modules/whatwg-url/lib/utils.js +0 -190
  948. package/packages/cli/node_modules/whatwg-url/package.json +0 -53
  949. package/packages/cli/node_modules/whatwg-url/webidl2js-wrapper.js +0 -7
  950. package/packages/vscode-ide-companion/node_modules/@types/node/LICENSE +0 -21
  951. package/packages/vscode-ide-companion/node_modules/@types/node/README.md +0 -15
  952. package/packages/vscode-ide-companion/node_modules/@types/node/assert/strict.d.ts +0 -8
  953. package/packages/vscode-ide-companion/node_modules/@types/node/assert.d.ts +0 -1062
  954. package/packages/vscode-ide-companion/node_modules/@types/node/async_hooks.d.ts +0 -605
  955. package/packages/vscode-ide-companion/node_modules/@types/node/buffer.buffer.d.ts +0 -462
  956. package/packages/vscode-ide-companion/node_modules/@types/node/buffer.d.ts +0 -1932
  957. package/packages/vscode-ide-companion/node_modules/@types/node/child_process.d.ts +0 -1452
  958. package/packages/vscode-ide-companion/node_modules/@types/node/cluster.d.ts +0 -578
  959. package/packages/vscode-ide-companion/node_modules/@types/node/compatibility/disposable.d.ts +0 -16
  960. package/packages/vscode-ide-companion/node_modules/@types/node/compatibility/index.d.ts +0 -9
  961. package/packages/vscode-ide-companion/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  962. package/packages/vscode-ide-companion/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
  963. package/packages/vscode-ide-companion/node_modules/@types/node/console.d.ts +0 -452
  964. package/packages/vscode-ide-companion/node_modules/@types/node/constants.d.ts +0 -21
  965. package/packages/vscode-ide-companion/node_modules/@types/node/crypto.d.ts +0 -4570
  966. package/packages/vscode-ide-companion/node_modules/@types/node/dgram.d.ts +0 -596
  967. package/packages/vscode-ide-companion/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
  968. package/packages/vscode-ide-companion/node_modules/@types/node/dns/promises.d.ts +0 -479
  969. package/packages/vscode-ide-companion/node_modules/@types/node/dns.d.ts +0 -871
  970. package/packages/vscode-ide-companion/node_modules/@types/node/domain.d.ts +0 -170
  971. package/packages/vscode-ide-companion/node_modules/@types/node/events.d.ts +0 -977
  972. package/packages/vscode-ide-companion/node_modules/@types/node/fs/promises.d.ts +0 -1248
  973. package/packages/vscode-ide-companion/node_modules/@types/node/fs.d.ts +0 -4362
  974. package/packages/vscode-ide-companion/node_modules/@types/node/globals.d.ts +0 -170
  975. package/packages/vscode-ide-companion/node_modules/@types/node/globals.typedarray.d.ts +0 -21
  976. package/packages/vscode-ide-companion/node_modules/@types/node/http.d.ts +0 -2031
  977. package/packages/vscode-ide-companion/node_modules/@types/node/http2.d.ts +0 -2623
  978. package/packages/vscode-ide-companion/node_modules/@types/node/https.d.ts +0 -549
  979. package/packages/vscode-ide-companion/node_modules/@types/node/index.d.ts +0 -93
  980. package/packages/vscode-ide-companion/node_modules/@types/node/inspector.generated.d.ts +0 -3966
  981. package/packages/vscode-ide-companion/node_modules/@types/node/module.d.ts +0 -539
  982. package/packages/vscode-ide-companion/node_modules/@types/node/net.d.ts +0 -1011
  983. package/packages/vscode-ide-companion/node_modules/@types/node/os.d.ts +0 -495
  984. package/packages/vscode-ide-companion/node_modules/@types/node/package.json +0 -140
  985. package/packages/vscode-ide-companion/node_modules/@types/node/path.d.ts +0 -200
  986. package/packages/vscode-ide-companion/node_modules/@types/node/perf_hooks.d.ts +0 -963
  987. package/packages/vscode-ide-companion/node_modules/@types/node/process.d.ts +0 -1956
  988. package/packages/vscode-ide-companion/node_modules/@types/node/punycode.d.ts +0 -117
  989. package/packages/vscode-ide-companion/node_modules/@types/node/querystring.d.ts +0 -152
  990. package/packages/vscode-ide-companion/node_modules/@types/node/readline/promises.d.ts +0 -162
  991. package/packages/vscode-ide-companion/node_modules/@types/node/readline.d.ts +0 -589
  992. package/packages/vscode-ide-companion/node_modules/@types/node/repl.d.ts +0 -430
  993. package/packages/vscode-ide-companion/node_modules/@types/node/sea.d.ts +0 -153
  994. package/packages/vscode-ide-companion/node_modules/@types/node/stream/consumers.d.ts +0 -38
  995. package/packages/vscode-ide-companion/node_modules/@types/node/stream/promises.d.ts +0 -90
  996. package/packages/vscode-ide-companion/node_modules/@types/node/stream/web.d.ts +0 -533
  997. package/packages/vscode-ide-companion/node_modules/@types/node/stream.d.ts +0 -1668
  998. package/packages/vscode-ide-companion/node_modules/@types/node/string_decoder.d.ts +0 -67
  999. package/packages/vscode-ide-companion/node_modules/@types/node/test.d.ts +0 -1787
  1000. package/packages/vscode-ide-companion/node_modules/@types/node/timers/promises.d.ts +0 -108
  1001. package/packages/vscode-ide-companion/node_modules/@types/node/timers.d.ts +0 -286
  1002. package/packages/vscode-ide-companion/node_modules/@types/node/tls.d.ts +0 -1231
  1003. package/packages/vscode-ide-companion/node_modules/@types/node/trace_events.d.ts +0 -197
  1004. package/packages/vscode-ide-companion/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -460
  1005. package/packages/vscode-ide-companion/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -19
  1006. package/packages/vscode-ide-companion/node_modules/@types/node/ts5.6/index.d.ts +0 -93
  1007. package/packages/vscode-ide-companion/node_modules/@types/node/tty.d.ts +0 -208
  1008. package/packages/vscode-ide-companion/node_modules/@types/node/url.d.ts +0 -964
  1009. package/packages/vscode-ide-companion/node_modules/@types/node/util.d.ts +0 -2331
  1010. package/packages/vscode-ide-companion/node_modules/@types/node/v8.d.ts +0 -808
  1011. package/packages/vscode-ide-companion/node_modules/@types/node/vm.d.ts +0 -1030
  1012. package/packages/vscode-ide-companion/node_modules/@types/node/wasi.d.ts +0 -181
  1013. package/packages/vscode-ide-companion/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
  1014. package/packages/vscode-ide-companion/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  1015. package/packages/vscode-ide-companion/node_modules/@types/node/web-globals/events.d.ts +0 -97
  1016. package/packages/vscode-ide-companion/node_modules/@types/node/web-globals/fetch.d.ts +0 -46
  1017. package/packages/vscode-ide-companion/node_modules/@types/node/worker_threads.d.ts +0 -715
  1018. package/packages/vscode-ide-companion/node_modules/@types/node/zlib.d.ts +0 -539
  1019. package/packages/vscode-ide-companion/node_modules/undici-types/LICENSE +0 -21
  1020. package/packages/vscode-ide-companion/node_modules/undici-types/README.md +0 -6
  1021. package/packages/vscode-ide-companion/node_modules/undici-types/agent.d.ts +0 -31
  1022. package/packages/vscode-ide-companion/node_modules/undici-types/api.d.ts +0 -43
  1023. package/packages/vscode-ide-companion/node_modules/undici-types/balanced-pool.d.ts +0 -29
  1024. package/packages/vscode-ide-companion/node_modules/undici-types/cache.d.ts +0 -36
  1025. package/packages/vscode-ide-companion/node_modules/undici-types/client.d.ts +0 -108
  1026. package/packages/vscode-ide-companion/node_modules/undici-types/connector.d.ts +0 -34
  1027. package/packages/vscode-ide-companion/node_modules/undici-types/content-type.d.ts +0 -21
  1028. package/packages/vscode-ide-companion/node_modules/undici-types/cookies.d.ts +0 -28
  1029. package/packages/vscode-ide-companion/node_modules/undici-types/diagnostics-channel.d.ts +0 -66
  1030. package/packages/vscode-ide-companion/node_modules/undici-types/dispatcher.d.ts +0 -256
  1031. package/packages/vscode-ide-companion/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -21
  1032. package/packages/vscode-ide-companion/node_modules/undici-types/errors.d.ts +0 -149
  1033. package/packages/vscode-ide-companion/node_modules/undici-types/eventsource.d.ts +0 -61
  1034. package/packages/vscode-ide-companion/node_modules/undici-types/fetch.d.ts +0 -209
  1035. package/packages/vscode-ide-companion/node_modules/undici-types/file.d.ts +0 -39
  1036. package/packages/vscode-ide-companion/node_modules/undici-types/filereader.d.ts +0 -54
  1037. package/packages/vscode-ide-companion/node_modules/undici-types/formdata.d.ts +0 -108
  1038. package/packages/vscode-ide-companion/node_modules/undici-types/global-dispatcher.d.ts +0 -9
  1039. package/packages/vscode-ide-companion/node_modules/undici-types/global-origin.d.ts +0 -7
  1040. package/packages/vscode-ide-companion/node_modules/undici-types/handlers.d.ts +0 -15
  1041. package/packages/vscode-ide-companion/node_modules/undici-types/header.d.ts +0 -4
  1042. package/packages/vscode-ide-companion/node_modules/undici-types/index.d.ts +0 -71
  1043. package/packages/vscode-ide-companion/node_modules/undici-types/interceptors.d.ts +0 -17
  1044. package/packages/vscode-ide-companion/node_modules/undici-types/mock-agent.d.ts +0 -50
  1045. package/packages/vscode-ide-companion/node_modules/undici-types/mock-client.d.ts +0 -25
  1046. package/packages/vscode-ide-companion/node_modules/undici-types/mock-errors.d.ts +0 -12
  1047. package/packages/vscode-ide-companion/node_modules/undici-types/mock-interceptor.d.ts +0 -93
  1048. package/packages/vscode-ide-companion/node_modules/undici-types/mock-pool.d.ts +0 -25
  1049. package/packages/vscode-ide-companion/node_modules/undici-types/package.json +0 -55
  1050. package/packages/vscode-ide-companion/node_modules/undici-types/patch.d.ts +0 -33
  1051. package/packages/vscode-ide-companion/node_modules/undici-types/pool-stats.d.ts +0 -19
  1052. package/packages/vscode-ide-companion/node_modules/undici-types/pool.d.ts +0 -39
  1053. package/packages/vscode-ide-companion/node_modules/undici-types/proxy-agent.d.ts +0 -28
  1054. package/packages/vscode-ide-companion/node_modules/undici-types/readable.d.ts +0 -65
  1055. package/packages/vscode-ide-companion/node_modules/undici-types/retry-agent.d.ts +0 -8
  1056. package/packages/vscode-ide-companion/node_modules/undici-types/retry-handler.d.ts +0 -116
  1057. package/packages/vscode-ide-companion/node_modules/undici-types/util.d.ts +0 -18
  1058. package/packages/vscode-ide-companion/node_modules/undici-types/webidl.d.ts +0 -228
  1059. package/packages/vscode-ide-companion/node_modules/undici-types/websocket.d.ts +0 -150
@@ -1,3459 +0,0 @@
1
- /**
2
- * color
3
- *
4
- * Ref: CSS Color Module Level 4
5
- * Sample code for Color Conversions
6
- * https://w3c.github.io/csswg-drafts/css-color-4/#color-conversion-code
7
- */
8
-
9
- import {
10
- CacheItem,
11
- NullObject,
12
- createCacheKey,
13
- getCache,
14
- setCache
15
- } from './cache';
16
- import { isString } from './common';
17
- import { interpolateHue, roundToPrecision } from './util';
18
- import {
19
- ColorChannels,
20
- ComputedColorChannels,
21
- Options,
22
- MatchedRegExp,
23
- SpecifiedColorChannels,
24
- StringColorChannels,
25
- StringColorSpacedChannels
26
- } from './typedef';
27
-
28
- /* constants */
29
- import {
30
- ANGLE,
31
- CS_HUE_CAPT,
32
- CS_MIX,
33
- CS_RGB,
34
- CS_XYZ,
35
- FN_COLOR,
36
- FN_MIX,
37
- NONE,
38
- NUM,
39
- PCT,
40
- SYN_COLOR_TYPE,
41
- SYN_FN_COLOR,
42
- SYN_HSL,
43
- SYN_HSL_LV3,
44
- SYN_LCH,
45
- SYN_MIX,
46
- SYN_MIX_CAPT,
47
- SYN_MIX_PART,
48
- SYN_MOD,
49
- SYN_RGB_LV3,
50
- VAL_COMP,
51
- VAL_MIX,
52
- VAL_SPEC
53
- } from './constant';
54
- const NAMESPACE = 'color';
55
-
56
- /* numeric constants */
57
- const PPTH = 0.001;
58
- const HALF = 0.5;
59
- const DUO = 2;
60
- const TRIA = 3;
61
- const QUAD = 4;
62
- const OCT = 8;
63
- const DEC = 10;
64
- const DOZ = 12;
65
- const HEX = 16;
66
- const SEXA = 60;
67
- const DEG_HALF = 180;
68
- const DEG = 360;
69
- const MAX_PCT = 100;
70
- const MAX_RGB = 255;
71
- const POW_SQR = 2;
72
- const POW_CUBE = 3;
73
- const POW_LINEAR = 2.4;
74
- const LINEAR_COEF = 12.92;
75
- const LINEAR_OFFSET = 0.055;
76
- const LAB_L = 116;
77
- const LAB_A = 500;
78
- const LAB_B = 200;
79
- const LAB_EPSILON = 216 / 24389;
80
- const LAB_KAPPA = 24389 / 27;
81
-
82
- /* type definitions */
83
- /**
84
- * @type NumStrColorChannels - string or numeric color channels
85
- */
86
- type NumStrColorChannels = [
87
- x: number | string,
88
- y: number | string,
89
- z: number | string,
90
- alpha: number | string
91
- ];
92
-
93
- /**
94
- * @type TriColorChannels - color channels without alpha
95
- */
96
- type TriColorChannels = [x: number, y: number, z: number];
97
-
98
- /**
99
- * @type ColorMatrix - color matrix
100
- */
101
- type ColorMatrix = [
102
- r1: TriColorChannels,
103
- r2: TriColorChannels,
104
- r3: TriColorChannels
105
- ];
106
-
107
- /* white point */
108
- const D50: TriColorChannels = [
109
- 0.3457 / 0.3585,
110
- 1.0,
111
- (1.0 - 0.3457 - 0.3585) / 0.3585
112
- ];
113
- const MATRIX_D50_TO_D65: ColorMatrix = [
114
- [0.955473421488075, -0.02309845494876471, 0.06325924320057072],
115
- [-0.0283697093338637, 1.0099953980813041, 0.021041441191917323],
116
- [0.012314014864481998, -0.020507649298898964, 1.330365926242124]
117
- ];
118
- const MATRIX_D65_TO_D50: ColorMatrix = [
119
- [1.0479297925449969, 0.022946870601609652, -0.05019226628920524],
120
- [0.02962780877005599, 0.9904344267538799, -0.017073799063418826],
121
- [-0.009243040646204504, 0.015055191490298152, 0.7518742814281371]
122
- ];
123
-
124
- /* color space */
125
- const MATRIX_L_RGB_TO_XYZ: ColorMatrix = [
126
- [506752 / 1228815, 87881 / 245763, 12673 / 70218],
127
- [87098 / 409605, 175762 / 245763, 12673 / 175545],
128
- [7918 / 409605, 87881 / 737289, 1001167 / 1053270]
129
- ];
130
- const MATRIX_XYZ_TO_L_RGB: ColorMatrix = [
131
- [12831 / 3959, -329 / 214, -1974 / 3959],
132
- [-851781 / 878810, 1648619 / 878810, 36519 / 878810],
133
- [705 / 12673, -2585 / 12673, 705 / 667]
134
- ];
135
- const MATRIX_XYZ_TO_LMS: ColorMatrix = [
136
- [0.819022437996703, 0.3619062600528904, -0.1288737815209879],
137
- [0.0329836539323885, 0.9292868615863434, 0.0361446663506424],
138
- [0.0481771893596242, 0.2642395317527308, 0.6335478284694309]
139
- ];
140
- const MATRIX_LMS_TO_XYZ: ColorMatrix = [
141
- [1.2268798758459243, -0.5578149944602171, 0.2813910456659647],
142
- [-0.0405757452148008, 1.112286803280317, -0.0717110580655164],
143
- [-0.0763729366746601, -0.4214933324022432, 1.5869240198367816]
144
- ];
145
- const MATRIX_OKLAB_TO_LMS: ColorMatrix = [
146
- [1.0, 0.3963377773761749, 0.2158037573099136],
147
- [1.0, -0.1055613458156586, -0.0638541728258133],
148
- [1.0, -0.0894841775298119, -1.2914855480194092]
149
- ];
150
- const MATRIX_LMS_TO_OKLAB: ColorMatrix = [
151
- [0.210454268309314, 0.7936177747023054, -0.0040720430116193],
152
- [1.9779985324311684, -2.4285922420485799, 0.450593709617411],
153
- [0.0259040424655478, 0.7827717124575296, -0.8086757549230774]
154
- ];
155
- const MATRIX_P3_TO_XYZ: ColorMatrix = [
156
- [608311 / 1250200, 189793 / 714400, 198249 / 1000160],
157
- [35783 / 156275, 247089 / 357200, 198249 / 2500400],
158
- [0 / 1, 32229 / 714400, 5220557 / 5000800]
159
- ];
160
- const MATRIX_REC2020_TO_XYZ: ColorMatrix = [
161
- [63426534 / 99577255, 20160776 / 139408157, 47086771 / 278816314],
162
- [26158966 / 99577255, 472592308 / 697040785, 8267143 / 139408157],
163
- [0 / 1, 19567812 / 697040785, 295819943 / 278816314]
164
- ];
165
- const MATRIX_A98_TO_XYZ: ColorMatrix = [
166
- [573536 / 994567, 263643 / 1420810, 187206 / 994567],
167
- [591459 / 1989134, 6239551 / 9945670, 374412 / 4972835],
168
- [53769 / 1989134, 351524 / 4972835, 4929758 / 4972835]
169
- ];
170
- const MATRIX_PROPHOTO_TO_XYZ_D50: ColorMatrix = [
171
- [0.7977666449006423, 0.13518129740053308, 0.0313477341283922],
172
- [0.2880748288194013, 0.711835234241873, 0.00008993693872564],
173
- [0.0, 0.0, 0.8251046025104602]
174
- ];
175
-
176
- /* regexp */
177
- const REG_COLOR = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);
178
- const REG_CS_HUE = new RegExp(`^${CS_HUE_CAPT}$`);
179
- const REG_CS_XYZ = /^xyz(?:-d(?:50|65))?$/;
180
- const REG_CURRENT = /^currentColor$/i;
181
- const REG_FN_COLOR = new RegExp(`^color\\(\\s*(${SYN_FN_COLOR})\\s*\\)$`);
182
- const REG_HSL = new RegExp(`^hsla?\\(\\s*(${SYN_HSL}|${SYN_HSL_LV3})\\s*\\)$`);
183
- const REG_HWB = new RegExp(`^hwb\\(\\s*(${SYN_HSL})\\s*\\)$`);
184
- const REG_LAB = new RegExp(`^lab\\(\\s*(${SYN_MOD})\\s*\\)$`);
185
- const REG_LCH = new RegExp(`^lch\\(\\s*(${SYN_LCH})\\s*\\)$`);
186
- const REG_MIX = new RegExp(`^${SYN_MIX}$`);
187
- const REG_MIX_CAPT = new RegExp(`^${SYN_MIX_CAPT}$`);
188
- const REG_MIX_NEST = new RegExp(`${SYN_MIX}`, 'g');
189
- const REG_OKLAB = new RegExp(`^oklab\\(\\s*(${SYN_MOD})\\s*\\)$`);
190
- const REG_OKLCH = new RegExp(`^oklch\\(\\s*(${SYN_LCH})\\s*\\)$`);
191
- const REG_SPEC = /^(?:specifi|comput)edValue$/;
192
-
193
- /**
194
- * named colors
195
- */
196
- export const NAMED_COLORS = {
197
- aliceblue: [0xf0, 0xf8, 0xff],
198
- antiquewhite: [0xfa, 0xeb, 0xd7],
199
- aqua: [0x00, 0xff, 0xff],
200
- aquamarine: [0x7f, 0xff, 0xd4],
201
- azure: [0xf0, 0xff, 0xff],
202
- beige: [0xf5, 0xf5, 0xdc],
203
- bisque: [0xff, 0xe4, 0xc4],
204
- black: [0x00, 0x00, 0x00],
205
- blanchedalmond: [0xff, 0xeb, 0xcd],
206
- blue: [0x00, 0x00, 0xff],
207
- blueviolet: [0x8a, 0x2b, 0xe2],
208
- brown: [0xa5, 0x2a, 0x2a],
209
- burlywood: [0xde, 0xb8, 0x87],
210
- cadetblue: [0x5f, 0x9e, 0xa0],
211
- chartreuse: [0x7f, 0xff, 0x00],
212
- chocolate: [0xd2, 0x69, 0x1e],
213
- coral: [0xff, 0x7f, 0x50],
214
- cornflowerblue: [0x64, 0x95, 0xed],
215
- cornsilk: [0xff, 0xf8, 0xdc],
216
- crimson: [0xdc, 0x14, 0x3c],
217
- cyan: [0x00, 0xff, 0xff],
218
- darkblue: [0x00, 0x00, 0x8b],
219
- darkcyan: [0x00, 0x8b, 0x8b],
220
- darkgoldenrod: [0xb8, 0x86, 0x0b],
221
- darkgray: [0xa9, 0xa9, 0xa9],
222
- darkgreen: [0x00, 0x64, 0x00],
223
- darkgrey: [0xa9, 0xa9, 0xa9],
224
- darkkhaki: [0xbd, 0xb7, 0x6b],
225
- darkmagenta: [0x8b, 0x00, 0x8b],
226
- darkolivegreen: [0x55, 0x6b, 0x2f],
227
- darkorange: [0xff, 0x8c, 0x00],
228
- darkorchid: [0x99, 0x32, 0xcc],
229
- darkred: [0x8b, 0x00, 0x00],
230
- darksalmon: [0xe9, 0x96, 0x7a],
231
- darkseagreen: [0x8f, 0xbc, 0x8f],
232
- darkslateblue: [0x48, 0x3d, 0x8b],
233
- darkslategray: [0x2f, 0x4f, 0x4f],
234
- darkslategrey: [0x2f, 0x4f, 0x4f],
235
- darkturquoise: [0x00, 0xce, 0xd1],
236
- darkviolet: [0x94, 0x00, 0xd3],
237
- deeppink: [0xff, 0x14, 0x93],
238
- deepskyblue: [0x00, 0xbf, 0xff],
239
- dimgray: [0x69, 0x69, 0x69],
240
- dimgrey: [0x69, 0x69, 0x69],
241
- dodgerblue: [0x1e, 0x90, 0xff],
242
- firebrick: [0xb2, 0x22, 0x22],
243
- floralwhite: [0xff, 0xfa, 0xf0],
244
- forestgreen: [0x22, 0x8b, 0x22],
245
- fuchsia: [0xff, 0x00, 0xff],
246
- gainsboro: [0xdc, 0xdc, 0xdc],
247
- ghostwhite: [0xf8, 0xf8, 0xff],
248
- gold: [0xff, 0xd7, 0x00],
249
- goldenrod: [0xda, 0xa5, 0x20],
250
- gray: [0x80, 0x80, 0x80],
251
- green: [0x00, 0x80, 0x00],
252
- greenyellow: [0xad, 0xff, 0x2f],
253
- grey: [0x80, 0x80, 0x80],
254
- honeydew: [0xf0, 0xff, 0xf0],
255
- hotpink: [0xff, 0x69, 0xb4],
256
- indianred: [0xcd, 0x5c, 0x5c],
257
- indigo: [0x4b, 0x00, 0x82],
258
- ivory: [0xff, 0xff, 0xf0],
259
- khaki: [0xf0, 0xe6, 0x8c],
260
- lavender: [0xe6, 0xe6, 0xfa],
261
- lavenderblush: [0xff, 0xf0, 0xf5],
262
- lawngreen: [0x7c, 0xfc, 0x00],
263
- lemonchiffon: [0xff, 0xfa, 0xcd],
264
- lightblue: [0xad, 0xd8, 0xe6],
265
- lightcoral: [0xf0, 0x80, 0x80],
266
- lightcyan: [0xe0, 0xff, 0xff],
267
- lightgoldenrodyellow: [0xfa, 0xfa, 0xd2],
268
- lightgray: [0xd3, 0xd3, 0xd3],
269
- lightgreen: [0x90, 0xee, 0x90],
270
- lightgrey: [0xd3, 0xd3, 0xd3],
271
- lightpink: [0xff, 0xb6, 0xc1],
272
- lightsalmon: [0xff, 0xa0, 0x7a],
273
- lightseagreen: [0x20, 0xb2, 0xaa],
274
- lightskyblue: [0x87, 0xce, 0xfa],
275
- lightslategray: [0x77, 0x88, 0x99],
276
- lightslategrey: [0x77, 0x88, 0x99],
277
- lightsteelblue: [0xb0, 0xc4, 0xde],
278
- lightyellow: [0xff, 0xff, 0xe0],
279
- lime: [0x00, 0xff, 0x00],
280
- limegreen: [0x32, 0xcd, 0x32],
281
- linen: [0xfa, 0xf0, 0xe6],
282
- magenta: [0xff, 0x00, 0xff],
283
- maroon: [0x80, 0x00, 0x00],
284
- mediumaquamarine: [0x66, 0xcd, 0xaa],
285
- mediumblue: [0x00, 0x00, 0xcd],
286
- mediumorchid: [0xba, 0x55, 0xd3],
287
- mediumpurple: [0x93, 0x70, 0xdb],
288
- mediumseagreen: [0x3c, 0xb3, 0x71],
289
- mediumslateblue: [0x7b, 0x68, 0xee],
290
- mediumspringgreen: [0x00, 0xfa, 0x9a],
291
- mediumturquoise: [0x48, 0xd1, 0xcc],
292
- mediumvioletred: [0xc7, 0x15, 0x85],
293
- midnightblue: [0x19, 0x19, 0x70],
294
- mintcream: [0xf5, 0xff, 0xfa],
295
- mistyrose: [0xff, 0xe4, 0xe1],
296
- moccasin: [0xff, 0xe4, 0xb5],
297
- navajowhite: [0xff, 0xde, 0xad],
298
- navy: [0x00, 0x00, 0x80],
299
- oldlace: [0xfd, 0xf5, 0xe6],
300
- olive: [0x80, 0x80, 0x00],
301
- olivedrab: [0x6b, 0x8e, 0x23],
302
- orange: [0xff, 0xa5, 0x00],
303
- orangered: [0xff, 0x45, 0x00],
304
- orchid: [0xda, 0x70, 0xd6],
305
- palegoldenrod: [0xee, 0xe8, 0xaa],
306
- palegreen: [0x98, 0xfb, 0x98],
307
- paleturquoise: [0xaf, 0xee, 0xee],
308
- palevioletred: [0xdb, 0x70, 0x93],
309
- papayawhip: [0xff, 0xef, 0xd5],
310
- peachpuff: [0xff, 0xda, 0xb9],
311
- peru: [0xcd, 0x85, 0x3f],
312
- pink: [0xff, 0xc0, 0xcb],
313
- plum: [0xdd, 0xa0, 0xdd],
314
- powderblue: [0xb0, 0xe0, 0xe6],
315
- purple: [0x80, 0x00, 0x80],
316
- rebeccapurple: [0x66, 0x33, 0x99],
317
- red: [0xff, 0x00, 0x00],
318
- rosybrown: [0xbc, 0x8f, 0x8f],
319
- royalblue: [0x41, 0x69, 0xe1],
320
- saddlebrown: [0x8b, 0x45, 0x13],
321
- salmon: [0xfa, 0x80, 0x72],
322
- sandybrown: [0xf4, 0xa4, 0x60],
323
- seagreen: [0x2e, 0x8b, 0x57],
324
- seashell: [0xff, 0xf5, 0xee],
325
- sienna: [0xa0, 0x52, 0x2d],
326
- silver: [0xc0, 0xc0, 0xc0],
327
- skyblue: [0x87, 0xce, 0xeb],
328
- slateblue: [0x6a, 0x5a, 0xcd],
329
- slategray: [0x70, 0x80, 0x90],
330
- slategrey: [0x70, 0x80, 0x90],
331
- snow: [0xff, 0xfa, 0xfa],
332
- springgreen: [0x00, 0xff, 0x7f],
333
- steelblue: [0x46, 0x82, 0xb4],
334
- tan: [0xd2, 0xb4, 0x8c],
335
- teal: [0x00, 0x80, 0x80],
336
- thistle: [0xd8, 0xbf, 0xd8],
337
- tomato: [0xff, 0x63, 0x47],
338
- turquoise: [0x40, 0xe0, 0xd0],
339
- violet: [0xee, 0x82, 0xee],
340
- wheat: [0xf5, 0xde, 0xb3],
341
- white: [0xff, 0xff, 0xff],
342
- whitesmoke: [0xf5, 0xf5, 0xf5],
343
- yellow: [0xff, 0xff, 0x00],
344
- yellowgreen: [0x9a, 0xcd, 0x32]
345
- } as const satisfies {
346
- [key: string]: TriColorChannels;
347
- };
348
-
349
- /**
350
- * cache invalid color value
351
- * @param key - cache key
352
- * @param nullable - is nullable
353
- * @returns cached value
354
- */
355
- export const cacheInvalidColorValue = (
356
- cacheKey: string,
357
- format: string,
358
- nullable: boolean = false
359
- ): SpecifiedColorChannels | string | NullObject => {
360
- if (format === VAL_SPEC) {
361
- const res = '';
362
- setCache(cacheKey, res);
363
- return res;
364
- }
365
- if (nullable) {
366
- setCache(cacheKey, null);
367
- return new NullObject();
368
- }
369
- const res: SpecifiedColorChannels = ['rgb', 0, 0, 0, 0];
370
- setCache(cacheKey, res);
371
- return res;
372
- };
373
-
374
- /**
375
- * resolve invalid color value
376
- * @param format - output format
377
- * @param nullable - is nullable
378
- * @returns resolved value
379
- */
380
- export const resolveInvalidColorValue = (
381
- format: string,
382
- nullable: boolean = false
383
- ): SpecifiedColorChannels | string | NullObject => {
384
- switch (format) {
385
- case 'hsl':
386
- case 'hwb':
387
- case VAL_MIX: {
388
- return new NullObject();
389
- }
390
- case VAL_SPEC: {
391
- return '';
392
- }
393
- default: {
394
- if (nullable) {
395
- return new NullObject();
396
- }
397
- return ['rgb', 0, 0, 0, 0] as SpecifiedColorChannels;
398
- }
399
- }
400
- };
401
-
402
- /**
403
- * validate color components
404
- * @param arr - color components
405
- * @param [opt] - options
406
- * @param [opt.alpha] - alpha channel
407
- * @param [opt.minLength] - min length
408
- * @param [opt.maxLength] - max length
409
- * @param [opt.minRange] - min range
410
- * @param [opt.maxRange] - max range
411
- * @param [opt.validateRange] - validate range
412
- * @returns result - validated color components
413
- */
414
- export const validateColorComponents = (
415
- arr: ColorChannels | TriColorChannels,
416
- opt: {
417
- alpha?: boolean;
418
- minLength?: number;
419
- maxLength?: number;
420
- minRange?: number;
421
- maxRange?: number;
422
- validateRange?: boolean;
423
- } = {}
424
- ): ColorChannels | TriColorChannels => {
425
- if (!Array.isArray(arr)) {
426
- throw new TypeError(`${arr} is not an array.`);
427
- }
428
- const {
429
- alpha = false,
430
- minLength = TRIA,
431
- maxLength = QUAD,
432
- minRange = 0,
433
- maxRange = 1,
434
- validateRange = true
435
- } = opt;
436
- if (!Number.isFinite(minLength)) {
437
- throw new TypeError(`${minLength} is not a number.`);
438
- }
439
- if (!Number.isFinite(maxLength)) {
440
- throw new TypeError(`${maxLength} is not a number.`);
441
- }
442
- if (!Number.isFinite(minRange)) {
443
- throw new TypeError(`${minRange} is not a number.`);
444
- }
445
- if (!Number.isFinite(maxRange)) {
446
- throw new TypeError(`${maxRange} is not a number.`);
447
- }
448
- const l = arr.length;
449
- if (l < minLength || l > maxLength) {
450
- throw new Error(`Unexpected array length ${l}.`);
451
- }
452
- let i = 0;
453
- while (i < l) {
454
- const v = arr[i] as number;
455
- if (!Number.isFinite(v)) {
456
- throw new TypeError(`${v} is not a number.`);
457
- } else if (i < TRIA && validateRange && (v < minRange || v > maxRange)) {
458
- throw new RangeError(`${v} is not between ${minRange} and ${maxRange}.`);
459
- } else if (i === TRIA && (v < 0 || v > 1)) {
460
- throw new RangeError(`${v} is not between 0 and 1.`);
461
- }
462
- i++;
463
- }
464
- if (alpha && l === TRIA) {
465
- arr.push(1);
466
- }
467
- return arr;
468
- };
469
-
470
- /**
471
- * transform matrix
472
- * @param mtx - 3 * 3 matrix
473
- * @param vct - vector
474
- * @param [skip] - skip validate
475
- * @returns TriColorChannels - [p1, p2, p3]
476
- */
477
- export const transformMatrix = (
478
- mtx: ColorMatrix,
479
- vct: TriColorChannels,
480
- skip: boolean = false
481
- ): TriColorChannels => {
482
- if (!Array.isArray(mtx)) {
483
- throw new TypeError(`${mtx} is not an array.`);
484
- } else if (mtx.length !== TRIA) {
485
- throw new Error(`Unexpected array length ${mtx.length}.`);
486
- } else if (!skip) {
487
- for (let i of mtx) {
488
- i = validateColorComponents(i as TriColorChannels, {
489
- maxLength: TRIA,
490
- validateRange: false
491
- }) as TriColorChannels;
492
- }
493
- }
494
- const [[r1c1, r1c2, r1c3], [r2c1, r2c2, r2c3], [r3c1, r3c2, r3c3]] = mtx;
495
- let v1, v2, v3;
496
- if (skip) {
497
- [v1, v2, v3] = vct;
498
- } else {
499
- [v1, v2, v3] = validateColorComponents(vct, {
500
- maxLength: TRIA,
501
- validateRange: false
502
- });
503
- }
504
- const p1 = r1c1 * v1 + r1c2 * v2 + r1c3 * v3;
505
- const p2 = r2c1 * v1 + r2c2 * v2 + r2c3 * v3;
506
- const p3 = r3c1 * v1 + r3c2 * v2 + r3c3 * v3;
507
- return [p1, p2, p3];
508
- };
509
-
510
- /**
511
- * normalize color components
512
- * @param colorA - color components [v1, v2, v3, v4]
513
- * @param colorB - color components [v1, v2, v3, v4]
514
- * @param [skip] - skip validate
515
- * @returns result - [colorA, colorB]
516
- */
517
- export const normalizeColorComponents = (
518
- colorA: [number | string, number | string, number | string, number | string],
519
- colorB: [number | string, number | string, number | string, number | string],
520
- skip: boolean = false
521
- ): [ColorChannels, ColorChannels] => {
522
- if (!Array.isArray(colorA)) {
523
- throw new TypeError(`${colorA} is not an array.`);
524
- } else if (colorA.length !== QUAD) {
525
- throw new Error(`Unexpected array length ${colorA.length}.`);
526
- }
527
- if (!Array.isArray(colorB)) {
528
- throw new TypeError(`${colorB} is not an array.`);
529
- } else if (colorB.length !== QUAD) {
530
- throw new Error(`Unexpected array length ${colorB.length}.`);
531
- }
532
- let i = 0;
533
- while (i < QUAD) {
534
- if (colorA[i] === NONE && colorB[i] === NONE) {
535
- colorA[i] = 0;
536
- colorB[i] = 0;
537
- } else if (colorA[i] === NONE) {
538
- colorA[i] = colorB[i] as number;
539
- } else if (colorB[i] === NONE) {
540
- colorB[i] = colorA[i] as number;
541
- }
542
- i++;
543
- }
544
- if (skip) {
545
- return [colorA as ColorChannels, colorB as ColorChannels];
546
- }
547
- const validatedColorA = validateColorComponents(colorA as ColorChannels, {
548
- minLength: QUAD,
549
- validateRange: false
550
- });
551
- const validatedColorB = validateColorComponents(colorB as ColorChannels, {
552
- minLength: QUAD,
553
- validateRange: false
554
- });
555
- return [validatedColorA as ColorChannels, validatedColorB as ColorChannels];
556
- };
557
-
558
- /**
559
- * number to hex string
560
- * @param value - numeric value
561
- * @returns hex string
562
- */
563
- export const numberToHexString = (value: number): string => {
564
- if (!Number.isFinite(value)) {
565
- throw new TypeError(`${value} is not a number.`);
566
- } else {
567
- value = Math.round(value);
568
- if (value < 0 || value > MAX_RGB) {
569
- throw new RangeError(`${value} is not between 0 and ${MAX_RGB}.`);
570
- }
571
- }
572
- let hex = value.toString(HEX);
573
- if (hex.length === 1) {
574
- hex = `0${hex}`;
575
- }
576
- return hex;
577
- };
578
-
579
- /**
580
- * angle to deg
581
- * @param angle
582
- * @returns deg: 0..360
583
- */
584
- export const angleToDeg = (angle: string): number => {
585
- if (isString(angle)) {
586
- angle = angle.trim();
587
- } else {
588
- throw new TypeError(`${angle} is not a string.`);
589
- }
590
- const GRAD = DEG / 400;
591
- const RAD = DEG / (Math.PI * DUO);
592
- const reg = new RegExp(`^(${NUM})(${ANGLE})?$`);
593
- if (!reg.test(angle)) {
594
- throw new SyntaxError(`Invalid property value: ${angle}`);
595
- }
596
- const [, value, unit] = angle.match(reg) as MatchedRegExp;
597
- let deg;
598
- switch (unit) {
599
- case 'grad':
600
- deg = parseFloat(value) * GRAD;
601
- break;
602
- case 'rad':
603
- deg = parseFloat(value) * RAD;
604
- break;
605
- case 'turn':
606
- deg = parseFloat(value) * DEG;
607
- break;
608
- default:
609
- deg = parseFloat(value);
610
- }
611
- deg %= DEG;
612
- if (deg < 0) {
613
- deg += DEG;
614
- } else if (Object.is(deg, -0)) {
615
- deg = 0;
616
- }
617
- return deg;
618
- };
619
-
620
- /**
621
- * parse alpha
622
- * @param [alpha] - alpha value
623
- * @returns alpha: 0..1
624
- */
625
- export const parseAlpha = (alpha: string = ''): number => {
626
- if (isString(alpha)) {
627
- alpha = alpha.trim();
628
- if (!alpha) {
629
- alpha = '1';
630
- } else if (alpha === NONE) {
631
- alpha = '0';
632
- } else {
633
- let a;
634
- if (alpha.endsWith('%')) {
635
- a = parseFloat(alpha) / MAX_PCT;
636
- } else {
637
- a = parseFloat(alpha);
638
- }
639
- if (!Number.isFinite(a)) {
640
- throw new TypeError(`${a} is not a finite number.`);
641
- }
642
- if (a < PPTH) {
643
- alpha = '0';
644
- } else if (a > 1) {
645
- alpha = '1';
646
- } else {
647
- alpha = a.toFixed(TRIA);
648
- }
649
- }
650
- } else {
651
- alpha = '1';
652
- }
653
- return parseFloat(alpha);
654
- };
655
-
656
- /**
657
- * parse hex alpha
658
- * @param value - alpha value in hex string
659
- * @returns alpha: 0..1
660
- */
661
- export const parseHexAlpha = (value: string): number => {
662
- if (isString(value)) {
663
- if (value === '') {
664
- throw new SyntaxError('Invalid property value: (empty string)');
665
- }
666
- value = value.trim();
667
- } else {
668
- throw new TypeError(`${value} is not a string.`);
669
- }
670
- let alpha = parseInt(value, HEX);
671
- if (alpha <= 0) {
672
- return 0;
673
- }
674
- if (alpha >= MAX_RGB) {
675
- return 1;
676
- }
677
- const alphaMap = new Map();
678
- for (let i = 1; i < MAX_PCT; i++) {
679
- alphaMap.set(Math.round((i * MAX_RGB) / MAX_PCT), i);
680
- }
681
- if (alphaMap.has(alpha)) {
682
- alpha = alphaMap.get(alpha) / MAX_PCT;
683
- } else {
684
- alpha = Math.round(alpha / MAX_RGB / PPTH) * PPTH;
685
- }
686
- return parseFloat(alpha.toFixed(TRIA));
687
- };
688
-
689
- /**
690
- * transform rgb to linear rgb
691
- * @param rgb - [r, g, b] r|g|b: 0..255
692
- * @param [skip] - skip validate
693
- * @returns TriColorChannels - [r, g, b] r|g|b: 0..1
694
- */
695
- export const transformRgbToLinearRgb = (
696
- rgb: TriColorChannels,
697
- skip: boolean = false
698
- ): TriColorChannels => {
699
- let rr, gg, bb;
700
- if (skip) {
701
- [rr, gg, bb] = rgb;
702
- } else {
703
- [rr, gg, bb] = validateColorComponents(rgb, {
704
- maxLength: TRIA,
705
- maxRange: MAX_RGB
706
- });
707
- }
708
- let r = rr / MAX_RGB;
709
- let g = gg / MAX_RGB;
710
- let b = bb / MAX_RGB;
711
- const COND_POW = 0.04045;
712
- if (r > COND_POW) {
713
- r = Math.pow((r + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);
714
- } else {
715
- r /= LINEAR_COEF;
716
- }
717
- if (g > COND_POW) {
718
- g = Math.pow((g + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);
719
- } else {
720
- g /= LINEAR_COEF;
721
- }
722
- if (b > COND_POW) {
723
- b = Math.pow((b + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);
724
- } else {
725
- b /= LINEAR_COEF;
726
- }
727
- return [r, g, b];
728
- };
729
-
730
- /**
731
- * transform rgb to xyz
732
- * @param rgb - [r, g, b] r|g|b: 0..255
733
- * @param [skip] - skip validate
734
- * @returns TriColorChannels - [x, y, z]
735
- */
736
- export const transformRgbToXyz = (
737
- rgb: TriColorChannels,
738
- skip: boolean = false
739
- ): TriColorChannels => {
740
- if (!skip) {
741
- rgb = validateColorComponents(rgb, {
742
- maxLength: TRIA,
743
- maxRange: MAX_RGB
744
- }) as TriColorChannels;
745
- }
746
- rgb = transformRgbToLinearRgb(rgb, true);
747
- const xyz = transformMatrix(MATRIX_L_RGB_TO_XYZ, rgb, true);
748
- return xyz;
749
- };
750
-
751
- /**
752
- * transform rgb to xyz-d50
753
- * @param rgb - [r, g, b] r|g|b: 0..255 alpha: 0..1
754
- * @returns TriColorChannels - [x, y, z]
755
- */
756
- export const transformRgbToXyzD50 = (
757
- rgb: TriColorChannels
758
- ): TriColorChannels => {
759
- let xyz = transformRgbToXyz(rgb);
760
- xyz = transformMatrix(MATRIX_D65_TO_D50, xyz, true);
761
- return xyz;
762
- };
763
-
764
- /**
765
- * transform linear rgb to rgb
766
- * @param rgb - [r, g, b] r|g|b: 0..1
767
- * @param [round] - round result
768
- * @returns TriColorChannels - [r, g, b] r|g|b: 0..255
769
- */
770
- export const transformLinearRgbToRgb = (
771
- rgb: TriColorChannels,
772
- round: boolean = false
773
- ): TriColorChannels => {
774
- let [r, g, b] = validateColorComponents(rgb, {
775
- maxLength: TRIA
776
- });
777
- const COND_POW = 809 / 258400;
778
- if (r > COND_POW) {
779
- r = Math.pow(r, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;
780
- } else {
781
- r *= LINEAR_COEF;
782
- }
783
- r *= MAX_RGB;
784
- if (g > COND_POW) {
785
- g = Math.pow(g, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;
786
- } else {
787
- g *= LINEAR_COEF;
788
- }
789
- g *= MAX_RGB;
790
- if (b > COND_POW) {
791
- b = Math.pow(b, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;
792
- } else {
793
- b *= LINEAR_COEF;
794
- }
795
- b *= MAX_RGB;
796
- return [
797
- round ? Math.round(r) : r,
798
- round ? Math.round(g) : g,
799
- round ? Math.round(b) : b
800
- ];
801
- };
802
-
803
- /**
804
- * transform xyz to rgb
805
- * @param xyz - [x, y, z]
806
- * @param [skip] - skip validate
807
- * @returns TriColorChannels - [r, g, b] r|g|b: 0..255
808
- */
809
- export const transformXyzToRgb = (
810
- xyz: TriColorChannels,
811
- skip: boolean = false
812
- ): TriColorChannels => {
813
- if (!skip) {
814
- xyz = validateColorComponents(xyz, {
815
- maxLength: TRIA,
816
- validateRange: false
817
- }) as TriColorChannels;
818
- }
819
- let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, xyz, true);
820
- [r, g, b] = transformLinearRgbToRgb(
821
- [
822
- Math.min(Math.max(r, 0), 1),
823
- Math.min(Math.max(g, 0), 1),
824
- Math.min(Math.max(b, 0), 1)
825
- ],
826
- true
827
- );
828
- return [r, g, b];
829
- };
830
-
831
- /**
832
- * transform xyz to xyz-d50
833
- * @param xyz - [x, y, z]
834
- * @returns TriColorChannels - [x, y, z]
835
- */
836
- export const transformXyzToXyzD50 = (
837
- xyz: TriColorChannels
838
- ): TriColorChannels => {
839
- xyz = validateColorComponents(xyz, {
840
- maxLength: TRIA,
841
- validateRange: false
842
- }) as TriColorChannels;
843
- xyz = transformMatrix(MATRIX_D65_TO_D50, xyz, true);
844
- return xyz;
845
- };
846
-
847
- /**
848
- * transform xyz to hsl
849
- * @param xyz - [x, y, z]
850
- * @param [skip] - skip validate
851
- * @returns TriColorChannels - [h, s, l]
852
- */
853
- export const transformXyzToHsl = (
854
- xyz: TriColorChannels,
855
- skip: boolean = false
856
- ): TriColorChannels => {
857
- const [rr, gg, bb] = transformXyzToRgb(xyz, skip);
858
- const r = rr / MAX_RGB;
859
- const g = gg / MAX_RGB;
860
- const b = bb / MAX_RGB;
861
- const max = Math.max(r, g, b);
862
- const min = Math.min(r, g, b);
863
- const d = max - min;
864
- const l = (max + min) * HALF * MAX_PCT;
865
- let h, s;
866
- if (Math.round(l) === 0 || Math.round(l) === MAX_PCT) {
867
- h = 0;
868
- s = 0;
869
- } else {
870
- s = (d / (1 - Math.abs(max + min - 1))) * MAX_PCT;
871
- if (s === 0) {
872
- h = 0;
873
- } else {
874
- switch (max) {
875
- case r:
876
- h = (g - b) / d;
877
- break;
878
- case g:
879
- h = (b - r) / d + DUO;
880
- break;
881
- case b:
882
- default:
883
- h = (r - g) / d + QUAD;
884
- break;
885
- }
886
- h = (h * SEXA) % DEG;
887
- if (h < 0) {
888
- h += DEG;
889
- }
890
- }
891
- }
892
- return [h, s, l];
893
- };
894
-
895
- /**
896
- * transform xyz to hwb
897
- * @param xyz - [x, y, z]
898
- * @param [skip] - skip validate
899
- * @returns TriColorChannels - [h, w, b]
900
- */
901
- export const transformXyzToHwb = (
902
- xyz: TriColorChannels,
903
- skip: boolean = false
904
- ): TriColorChannels => {
905
- const [r, g, b] = transformXyzToRgb(xyz, skip);
906
- const wh = Math.min(r, g, b) / MAX_RGB;
907
- const bk = 1 - Math.max(r, g, b) / MAX_RGB;
908
- let h;
909
- if (wh + bk === 1) {
910
- h = 0;
911
- } else {
912
- [h] = transformXyzToHsl(xyz);
913
- }
914
- return [h, wh * MAX_PCT, bk * MAX_PCT];
915
- };
916
-
917
- /**
918
- * transform xyz to oklab
919
- * @param xyz - [x, y, z]
920
- * @param [skip] - skip validate
921
- * @returns TriColorChannels - [l, a, b]
922
- */
923
- export const transformXyzToOklab = (
924
- xyz: TriColorChannels,
925
- skip: boolean = false
926
- ): TriColorChannels => {
927
- if (!skip) {
928
- xyz = validateColorComponents(xyz, {
929
- maxLength: TRIA,
930
- validateRange: false
931
- }) as TriColorChannels;
932
- }
933
- const lms = transformMatrix(MATRIX_XYZ_TO_LMS, xyz, true);
934
- const xyzLms = lms.map(c => Math.cbrt(c)) as TriColorChannels;
935
- let [l, a, b] = transformMatrix(MATRIX_LMS_TO_OKLAB, xyzLms, true);
936
- l = Math.min(Math.max(l, 0), 1);
937
- const lPct = Math.round(parseFloat(l.toFixed(QUAD)) * MAX_PCT);
938
- if (lPct === 0 || lPct === MAX_PCT) {
939
- a = 0;
940
- b = 0;
941
- }
942
- return [l, a, b];
943
- };
944
-
945
- /**
946
- * transform xyz to oklch
947
- * @param xyz - [x, y, z]
948
- * @param [skip] - skip validate
949
- * @returns TriColorChannels - [l, c, h]
950
- */
951
- export const transformXyzToOklch = (
952
- xyz: TriColorChannels,
953
- skip: boolean = false
954
- ): TriColorChannels => {
955
- const [l, a, b] = transformXyzToOklab(xyz, skip);
956
- let c, h;
957
- const lPct = Math.round(parseFloat(l.toFixed(QUAD)) * MAX_PCT);
958
- if (lPct === 0 || lPct === MAX_PCT) {
959
- c = 0;
960
- h = 0;
961
- } else {
962
- c = Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);
963
- if (parseFloat(c.toFixed(QUAD)) === 0) {
964
- h = 0;
965
- } else {
966
- h = (Math.atan2(b, a) * DEG_HALF) / Math.PI;
967
- if (h < 0) {
968
- h += DEG;
969
- }
970
- }
971
- }
972
- return [l, c, h];
973
- };
974
-
975
- /**
976
- * transform xyz D50 to rgb
977
- * @param xyz - [x, y, z]
978
- * @param [skip] - skip validate
979
- * @returns TriColorChannels - [r, g, b] r|g|b: 0..255
980
- */
981
- export const transformXyzD50ToRgb = (
982
- xyz: TriColorChannels,
983
- skip: boolean = false
984
- ): TriColorChannels => {
985
- if (!skip) {
986
- xyz = validateColorComponents(xyz, {
987
- maxLength: TRIA,
988
- validateRange: false
989
- }) as TriColorChannels;
990
- }
991
- const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, xyz, true);
992
- const rgb = transformXyzToRgb(xyzD65, true);
993
- return rgb;
994
- };
995
-
996
- /**
997
- * transform xyz-d50 to lab
998
- * @param xyz - [x, y, z]
999
- * @param [skip] - skip validate
1000
- * @returns TriColorChannels - [l, a, b]
1001
- */
1002
- export const transformXyzD50ToLab = (
1003
- xyz: TriColorChannels,
1004
- skip: boolean = false
1005
- ): TriColorChannels => {
1006
- if (!skip) {
1007
- xyz = validateColorComponents(xyz, {
1008
- maxLength: TRIA,
1009
- validateRange: false
1010
- }) as TriColorChannels;
1011
- }
1012
- const xyzD50 = xyz.map((val, i) => val / (D50[i] as number));
1013
- const [f0, f1, f2] = xyzD50.map(val =>
1014
- val > LAB_EPSILON ? Math.cbrt(val) : (val * LAB_KAPPA + HEX) / LAB_L
1015
- ) as TriColorChannels;
1016
- const l = Math.min(Math.max(LAB_L * f1 - HEX, 0), MAX_PCT);
1017
- let a, b;
1018
- if (l === 0 || l === MAX_PCT) {
1019
- a = 0;
1020
- b = 0;
1021
- } else {
1022
- a = (f0 - f1) * LAB_A;
1023
- b = (f1 - f2) * LAB_B;
1024
- }
1025
- return [l, a, b];
1026
- };
1027
-
1028
- /**
1029
- * transform xyz-d50 to lch
1030
- * @param xyz - [x, y, z]
1031
- * @param [skip] - skip validate
1032
- * @returns TriColorChannels - [l, c, h]
1033
- */
1034
- export const transformXyzD50ToLch = (
1035
- xyz: TriColorChannels,
1036
- skip: boolean = false
1037
- ): TriColorChannels => {
1038
- const [l, a, b] = transformXyzD50ToLab(xyz, skip);
1039
- let c, h;
1040
- if (l === 0 || l === MAX_PCT) {
1041
- c = 0;
1042
- h = 0;
1043
- } else {
1044
- c = Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);
1045
- h = (Math.atan2(b, a) * DEG_HALF) / Math.PI;
1046
- if (h < 0) {
1047
- h += DEG;
1048
- }
1049
- }
1050
- return [l, c, h];
1051
- };
1052
-
1053
- /**
1054
- * convert rgb to hex color
1055
- * @param rgb - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1
1056
- * @returns hex color
1057
- */
1058
- export const convertRgbToHex = (rgb: ColorChannels): string => {
1059
- const [r, g, b, alpha] = validateColorComponents(rgb, {
1060
- alpha: true,
1061
- maxRange: MAX_RGB
1062
- }) as ColorChannels;
1063
- const rr = numberToHexString(r);
1064
- const gg = numberToHexString(g);
1065
- const bb = numberToHexString(b);
1066
- const aa = numberToHexString(alpha * MAX_RGB);
1067
- let hex;
1068
- if (aa === 'ff') {
1069
- hex = `#${rr}${gg}${bb}`;
1070
- } else {
1071
- hex = `#${rr}${gg}${bb}${aa}`;
1072
- }
1073
- return hex;
1074
- };
1075
-
1076
- /**
1077
- * convert linear rgb to hex color
1078
- * @param rgb - [r, g, b, alpha] r|g|b|alpha: 0..1
1079
- * @param [skip] - skip validate
1080
- * @returns hex color
1081
- */
1082
- export const convertLinearRgbToHex = (
1083
- rgb: ColorChannels,
1084
- skip: boolean = false
1085
- ): string => {
1086
- let r, g, b, alpha;
1087
- if (skip) {
1088
- [r, g, b, alpha] = rgb;
1089
- } else {
1090
- [r, g, b, alpha] = validateColorComponents(rgb, {
1091
- minLength: QUAD
1092
- }) as ColorChannels;
1093
- }
1094
- [r, g, b] = transformLinearRgbToRgb([r, g, b], true);
1095
- const rr = numberToHexString(r);
1096
- const gg = numberToHexString(g);
1097
- const bb = numberToHexString(b);
1098
- const aa = numberToHexString(alpha * MAX_RGB);
1099
- let hex;
1100
- if (aa === 'ff') {
1101
- hex = `#${rr}${gg}${bb}`;
1102
- } else {
1103
- hex = `#${rr}${gg}${bb}${aa}`;
1104
- }
1105
- return hex;
1106
- };
1107
-
1108
- /**
1109
- * convert xyz to hex color
1110
- * @param xyz - [x, y, z, alpha]
1111
- * @returns hex color
1112
- */
1113
- export const convertXyzToHex = (xyz: ColorChannels): string => {
1114
- const [x, y, z, alpha] = validateColorComponents(xyz, {
1115
- minLength: QUAD,
1116
- validateRange: false
1117
- }) as ColorChannels;
1118
- const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);
1119
- const hex = convertLinearRgbToHex(
1120
- [
1121
- Math.min(Math.max(r, 0), 1),
1122
- Math.min(Math.max(g, 0), 1),
1123
- Math.min(Math.max(b, 0), 1),
1124
- alpha
1125
- ],
1126
- true
1127
- );
1128
- return hex;
1129
- };
1130
-
1131
- /**
1132
- * convert xyz D50 to hex color
1133
- * @param xyz - [x, y, z, alpha]
1134
- * @returns hex color
1135
- */
1136
- export const convertXyzD50ToHex = (xyz: ColorChannels): string => {
1137
- const [x, y, z, alpha] = validateColorComponents(xyz, {
1138
- minLength: QUAD,
1139
- validateRange: false
1140
- }) as ColorChannels;
1141
- const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);
1142
- const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, xyzD65, true);
1143
- const hex = convertLinearRgbToHex([
1144
- Math.min(Math.max(r, 0), 1),
1145
- Math.min(Math.max(g, 0), 1),
1146
- Math.min(Math.max(b, 0), 1),
1147
- alpha
1148
- ]);
1149
- return hex;
1150
- };
1151
-
1152
- /**
1153
- * convert hex color to rgb
1154
- * @param value - hex color value
1155
- * @returns ColorChannels - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1
1156
- */
1157
- export const convertHexToRgb = (value: string): ColorChannels => {
1158
- if (isString(value)) {
1159
- value = value.toLowerCase().trim();
1160
- } else {
1161
- throw new TypeError(`${value} is not a string.`);
1162
- }
1163
- if (
1164
- !(
1165
- /^#[\da-f]{6}$/.test(value) ||
1166
- /^#[\da-f]{3}$/.test(value) ||
1167
- /^#[\da-f]{8}$/.test(value) ||
1168
- /^#[\da-f]{4}$/.test(value)
1169
- )
1170
- ) {
1171
- throw new SyntaxError(`Invalid property value: ${value}`);
1172
- }
1173
- const arr: number[] = [];
1174
- if (/^#[\da-f]{3}$/.test(value)) {
1175
- const [, r, g, b] = value.match(
1176
- /^#([\da-f])([\da-f])([\da-f])$/
1177
- ) as MatchedRegExp;
1178
- arr.push(
1179
- parseInt(`${r}${r}`, HEX),
1180
- parseInt(`${g}${g}`, HEX),
1181
- parseInt(`${b}${b}`, HEX),
1182
- 1
1183
- );
1184
- } else if (/^#[\da-f]{4}$/.test(value)) {
1185
- const [, r, g, b, alpha] = value.match(
1186
- /^#([\da-f])([\da-f])([\da-f])([\da-f])$/
1187
- ) as MatchedRegExp;
1188
- arr.push(
1189
- parseInt(`${r}${r}`, HEX),
1190
- parseInt(`${g}${g}`, HEX),
1191
- parseInt(`${b}${b}`, HEX),
1192
- parseHexAlpha(`${alpha}${alpha}`)
1193
- );
1194
- } else if (/^#[\da-f]{8}$/.test(value)) {
1195
- const [, r, g, b, alpha] = value.match(
1196
- /^#([\da-f]{2})([\da-f]{2})([\da-f]{2})([\da-f]{2})$/
1197
- ) as MatchedRegExp;
1198
- arr.push(
1199
- parseInt(r, HEX),
1200
- parseInt(g, HEX),
1201
- parseInt(b, HEX),
1202
- parseHexAlpha(alpha)
1203
- );
1204
- } else {
1205
- const [, r, g, b] = value.match(
1206
- /^#([\da-f]{2})([\da-f]{2})([\da-f]{2})$/
1207
- ) as MatchedRegExp;
1208
- arr.push(parseInt(r, HEX), parseInt(g, HEX), parseInt(b, HEX), 1);
1209
- }
1210
- return arr as ColorChannels;
1211
- };
1212
-
1213
- /**
1214
- * convert hex color to linear rgb
1215
- * @param value - hex color value
1216
- * @returns ColorChannels - [r, g, b, alpha] r|g|b|alpha: 0..1
1217
- */
1218
- export const convertHexToLinearRgb = (value: string): ColorChannels => {
1219
- const [rr, gg, bb, alpha] = convertHexToRgb(value);
1220
- const [r, g, b] = transformRgbToLinearRgb([rr, gg, bb], true);
1221
- return [r, g, b, alpha];
1222
- };
1223
-
1224
- /**
1225
- * convert hex color to xyz
1226
- * @param value - hex color value
1227
- * @returns ColorChannels - [x, y, z, alpha]
1228
- */
1229
- export const convertHexToXyz = (value: string): ColorChannels => {
1230
- const [r, g, b, alpha] = convertHexToLinearRgb(value);
1231
- const [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b], true);
1232
- return [x, y, z, alpha];
1233
- };
1234
-
1235
- /**
1236
- * parse rgb()
1237
- * @param value - rgb color value
1238
- * @param [opt] - options
1239
- * @returns parsed color - ['rgb', r, g, b, alpha], '(empty)', NullObject
1240
- */
1241
- export const parseRgb = (
1242
- value: string,
1243
- opt: Options = {}
1244
- ): SpecifiedColorChannels | string | NullObject => {
1245
- if (isString(value)) {
1246
- value = value.toLowerCase().trim();
1247
- } else {
1248
- throw new TypeError(`${value} is not a string.`);
1249
- }
1250
- const { format = '', nullable = false } = opt;
1251
- const reg = new RegExp(`^rgba?\\(\\s*(${SYN_MOD}|${SYN_RGB_LV3})\\s*\\)$`);
1252
- if (!reg.test(value)) {
1253
- const res = resolveInvalidColorValue(format, nullable);
1254
- if (res instanceof NullObject) {
1255
- return res;
1256
- }
1257
- if (isString(res)) {
1258
- return res as string;
1259
- }
1260
- return res as SpecifiedColorChannels;
1261
- }
1262
- const [, val] = value.match(reg) as MatchedRegExp;
1263
- const [v1, v2, v3, v4 = ''] = val
1264
- .replace(/[,/]/g, ' ')
1265
- .split(/\s+/) as StringColorChannels;
1266
- let r, g, b;
1267
- if (v1 === NONE) {
1268
- r = 0;
1269
- } else {
1270
- if (v1.endsWith('%')) {
1271
- r = (parseFloat(v1) * MAX_RGB) / MAX_PCT;
1272
- } else {
1273
- r = parseFloat(v1);
1274
- }
1275
- r = Math.min(Math.max(roundToPrecision(r, OCT), 0), MAX_RGB);
1276
- }
1277
- if (v2 === NONE) {
1278
- g = 0;
1279
- } else {
1280
- if (v2.endsWith('%')) {
1281
- g = (parseFloat(v2) * MAX_RGB) / MAX_PCT;
1282
- } else {
1283
- g = parseFloat(v2);
1284
- }
1285
- g = Math.min(Math.max(roundToPrecision(g, OCT), 0), MAX_RGB);
1286
- }
1287
- if (v3 === NONE) {
1288
- b = 0;
1289
- } else {
1290
- if (v3.endsWith('%')) {
1291
- b = (parseFloat(v3) * MAX_RGB) / MAX_PCT;
1292
- } else {
1293
- b = parseFloat(v3);
1294
- }
1295
- b = Math.min(Math.max(roundToPrecision(b, OCT), 0), MAX_RGB);
1296
- }
1297
- const alpha = parseAlpha(v4);
1298
- return ['rgb', r, g, b, format === VAL_MIX && v4 === NONE ? NONE : alpha];
1299
- };
1300
-
1301
- /**
1302
- * parse hsl()
1303
- * @param value - hsl color value
1304
- * @param [opt] - options
1305
- * @returns parsed color - ['rgb', r, g, b, alpha], '(empty)', NullObject
1306
- */
1307
- export const parseHsl = (
1308
- value: string,
1309
- opt: Options = {}
1310
- ): SpecifiedColorChannels | string | NullObject => {
1311
- if (isString(value)) {
1312
- value = value.trim();
1313
- } else {
1314
- throw new TypeError(`${value} is not a string.`);
1315
- }
1316
- const { format = '', nullable = false } = opt;
1317
- if (!REG_HSL.test(value)) {
1318
- const res = resolveInvalidColorValue(format, nullable);
1319
- if (res instanceof NullObject) {
1320
- return res;
1321
- }
1322
- if (isString(res)) {
1323
- return res as string;
1324
- }
1325
- return res as SpecifiedColorChannels;
1326
- }
1327
- const [, val] = value.match(REG_HSL) as MatchedRegExp;
1328
- const [v1, v2, v3, v4 = ''] = val
1329
- .replace(/[,/]/g, ' ')
1330
- .split(/\s+/) as StringColorChannels;
1331
- let h, s, l;
1332
- if (v1 === NONE) {
1333
- h = 0;
1334
- } else {
1335
- h = angleToDeg(v1);
1336
- }
1337
- if (v2 === NONE) {
1338
- s = 0;
1339
- } else {
1340
- s = Math.min(Math.max(parseFloat(v2), 0), MAX_PCT);
1341
- }
1342
- if (v3 === NONE) {
1343
- l = 0;
1344
- } else {
1345
- l = Math.min(Math.max(parseFloat(v3), 0), MAX_PCT);
1346
- }
1347
- const alpha = parseAlpha(v4);
1348
- if (format === 'hsl') {
1349
- return [
1350
- format,
1351
- v1 === NONE ? v1 : h,
1352
- v2 === NONE ? v2 : s,
1353
- v3 === NONE ? v3 : l,
1354
- v4 === NONE ? v4 : alpha
1355
- ];
1356
- }
1357
- h = (h / DEG) * DOZ;
1358
- l /= MAX_PCT;
1359
- const sa = (s / MAX_PCT) * Math.min(l, 1 - l);
1360
- const rk = h % DOZ;
1361
- const gk = (8 + h) % DOZ;
1362
- const bk = (4 + h) % DOZ;
1363
- const r = l - sa * Math.max(-1, Math.min(rk - TRIA, TRIA ** POW_SQR - rk, 1));
1364
- const g = l - sa * Math.max(-1, Math.min(gk - TRIA, TRIA ** POW_SQR - gk, 1));
1365
- const b = l - sa * Math.max(-1, Math.min(bk - TRIA, TRIA ** POW_SQR - bk, 1));
1366
- return [
1367
- 'rgb',
1368
- Math.min(Math.max(roundToPrecision(r * MAX_RGB, OCT), 0), MAX_RGB),
1369
- Math.min(Math.max(roundToPrecision(g * MAX_RGB, OCT), 0), MAX_RGB),
1370
- Math.min(Math.max(roundToPrecision(b * MAX_RGB, OCT), 0), MAX_RGB),
1371
- alpha
1372
- ];
1373
- };
1374
-
1375
- /**
1376
- * parse hwb()
1377
- * @param value - hwb color value
1378
- * @param [opt] - options
1379
- * @returns parsed color - ['rgb', r, g, b, alpha], '(empty)', NullObject
1380
- */
1381
- export const parseHwb = (
1382
- value: string,
1383
- opt: Options = {}
1384
- ): SpecifiedColorChannels | string | NullObject => {
1385
- if (isString(value)) {
1386
- value = value.trim();
1387
- } else {
1388
- throw new TypeError(`${value} is not a string.`);
1389
- }
1390
- const { format = '', nullable = false } = opt;
1391
- if (!REG_HWB.test(value)) {
1392
- const res = resolveInvalidColorValue(format, nullable);
1393
- if (res instanceof NullObject) {
1394
- return res;
1395
- }
1396
- if (isString(res)) {
1397
- return res as string;
1398
- }
1399
- return res as SpecifiedColorChannels;
1400
- }
1401
- const [, val] = value.match(REG_HWB) as MatchedRegExp;
1402
- const [v1, v2, v3, v4 = ''] = val
1403
- .replace('/', ' ')
1404
- .split(/\s+/) as StringColorChannels;
1405
- let h, wh, bk;
1406
- if (v1 === NONE) {
1407
- h = 0;
1408
- } else {
1409
- h = angleToDeg(v1);
1410
- }
1411
- if (v2 === NONE) {
1412
- wh = 0;
1413
- } else {
1414
- wh = Math.min(Math.max(parseFloat(v2), 0), MAX_PCT) / MAX_PCT;
1415
- }
1416
- if (v3 === NONE) {
1417
- bk = 0;
1418
- } else {
1419
- bk = Math.min(Math.max(parseFloat(v3), 0), MAX_PCT) / MAX_PCT;
1420
- }
1421
- const alpha = parseAlpha(v4);
1422
- if (format === 'hwb') {
1423
- return [
1424
- format,
1425
- v1 === NONE ? v1 : h,
1426
- v2 === NONE ? v2 : wh * MAX_PCT,
1427
- v3 === NONE ? v3 : bk * MAX_PCT,
1428
- v4 === NONE ? v4 : alpha
1429
- ];
1430
- }
1431
- if (wh + bk >= 1) {
1432
- const v = roundToPrecision((wh / (wh + bk)) * MAX_RGB, OCT);
1433
- return ['rgb', v, v, v, alpha];
1434
- }
1435
- const factor = (1 - wh - bk) / MAX_RGB;
1436
- let [, r, g, b] = parseHsl(`hsl(${h} 100 50)`) as ComputedColorChannels;
1437
- r = roundToPrecision((r * factor + wh) * MAX_RGB, OCT);
1438
- g = roundToPrecision((g * factor + wh) * MAX_RGB, OCT);
1439
- b = roundToPrecision((b * factor + wh) * MAX_RGB, OCT);
1440
- return [
1441
- 'rgb',
1442
- Math.min(Math.max(r, 0), MAX_RGB),
1443
- Math.min(Math.max(g, 0), MAX_RGB),
1444
- Math.min(Math.max(b, 0), MAX_RGB),
1445
- alpha
1446
- ];
1447
- };
1448
-
1449
- /**
1450
- * parse lab()
1451
- * @param value - lab color value
1452
- * @param [opt] - options
1453
- * @returns parsed color
1454
- * - [xyz-d50, x, y, z, alpha], ['lab', l, a, b, alpha], '(empty)', NullObject
1455
- */
1456
- export const parseLab = (
1457
- value: string,
1458
- opt: Options = {}
1459
- ): SpecifiedColorChannels | string | NullObject => {
1460
- if (isString(value)) {
1461
- value = value.trim();
1462
- } else {
1463
- throw new TypeError(`${value} is not a string.`);
1464
- }
1465
- const { format = '', nullable = false } = opt;
1466
- if (!REG_LAB.test(value)) {
1467
- const res = resolveInvalidColorValue(format, nullable);
1468
- if (res instanceof NullObject) {
1469
- return res;
1470
- }
1471
- if (isString(res)) {
1472
- return res as string;
1473
- }
1474
- return res as SpecifiedColorChannels;
1475
- }
1476
- const COEF_PCT = 1.25;
1477
- const COND_POW = 8;
1478
- const [, val] = value.match(REG_LAB) as MatchedRegExp;
1479
- const [v1, v2, v3, v4 = ''] = val
1480
- .replace('/', ' ')
1481
- .split(/\s+/) as StringColorChannels;
1482
- let l, a, b;
1483
- if (v1 === NONE) {
1484
- l = 0;
1485
- } else {
1486
- if (v1.endsWith('%')) {
1487
- l = parseFloat(v1);
1488
- if (l > MAX_PCT) {
1489
- l = MAX_PCT;
1490
- }
1491
- } else {
1492
- l = parseFloat(v1);
1493
- }
1494
- if (l < 0) {
1495
- l = 0;
1496
- }
1497
- }
1498
- if (v2 === NONE) {
1499
- a = 0;
1500
- } else {
1501
- a = v2.endsWith('%') ? parseFloat(v2) * COEF_PCT : parseFloat(v2);
1502
- }
1503
- if (v3 === NONE) {
1504
- b = 0;
1505
- } else {
1506
- b = v3.endsWith('%') ? parseFloat(v3) * COEF_PCT : parseFloat(v3);
1507
- }
1508
- const alpha = parseAlpha(v4);
1509
- if (REG_SPEC.test(format)) {
1510
- return [
1511
- 'lab',
1512
- v1 === NONE ? v1 : roundToPrecision(l, HEX),
1513
- v2 === NONE ? v2 : roundToPrecision(a, HEX),
1514
- v3 === NONE ? v3 : roundToPrecision(b, HEX),
1515
- v4 === NONE ? v4 : alpha
1516
- ];
1517
- }
1518
- const fl = (l + HEX) / LAB_L;
1519
- const fa = a / LAB_A + fl;
1520
- const fb = fl - b / LAB_B;
1521
- const powFl = Math.pow(fl, POW_CUBE);
1522
- const powFa = Math.pow(fa, POW_CUBE);
1523
- const powFb = Math.pow(fb, POW_CUBE);
1524
- const xyz = [
1525
- powFa > LAB_EPSILON ? powFa : (fa * LAB_L - HEX) / LAB_KAPPA,
1526
- l > COND_POW ? powFl : l / LAB_KAPPA,
1527
- powFb > LAB_EPSILON ? powFb : (fb * LAB_L - HEX) / LAB_KAPPA
1528
- ];
1529
- const [x, y, z] = xyz.map(
1530
- (val, i) => val * (D50[i] as number)
1531
- ) as TriColorChannels;
1532
- return [
1533
- 'xyz-d50',
1534
- roundToPrecision(x, HEX),
1535
- roundToPrecision(y, HEX),
1536
- roundToPrecision(z, HEX),
1537
- alpha
1538
- ];
1539
- };
1540
-
1541
- /**
1542
- * parse lch()
1543
- * @param value - lch color value
1544
- * @param [opt] - options
1545
- * @returns parsed color
1546
- * - ['xyz-d50', x, y, z, alpha], ['lch', l, c, h, alpha]
1547
- * - '(empty)', NullObject
1548
- */
1549
- export const parseLch = (
1550
- value: string,
1551
- opt: Options = {}
1552
- ): SpecifiedColorChannels | string | NullObject => {
1553
- if (isString(value)) {
1554
- value = value.trim();
1555
- } else {
1556
- throw new TypeError(`${value} is not a string.`);
1557
- }
1558
- const { format = '', nullable = false } = opt;
1559
- if (!REG_LCH.test(value)) {
1560
- const res = resolveInvalidColorValue(format, nullable);
1561
- if (res instanceof NullObject) {
1562
- return res;
1563
- }
1564
- if (isString(res)) {
1565
- return res as string;
1566
- }
1567
- return res as SpecifiedColorChannels;
1568
- }
1569
- const COEF_PCT = 1.5;
1570
- const [, val] = value.match(REG_LCH) as MatchedRegExp;
1571
- const [v1, v2, v3, v4 = ''] = val
1572
- .replace('/', ' ')
1573
- .split(/\s+/) as StringColorChannels;
1574
- let l, c, h;
1575
- if (v1 === NONE) {
1576
- l = 0;
1577
- } else {
1578
- l = parseFloat(v1);
1579
- if (l < 0) {
1580
- l = 0;
1581
- }
1582
- }
1583
- if (v2 === NONE) {
1584
- c = 0;
1585
- } else {
1586
- c = v2.endsWith('%') ? parseFloat(v2) * COEF_PCT : parseFloat(v2);
1587
- }
1588
- if (v3 === NONE) {
1589
- h = 0;
1590
- } else {
1591
- h = angleToDeg(v3);
1592
- }
1593
- const alpha = parseAlpha(v4);
1594
- if (REG_SPEC.test(format)) {
1595
- return [
1596
- 'lch',
1597
- v1 === NONE ? v1 : roundToPrecision(l, HEX),
1598
- v2 === NONE ? v2 : roundToPrecision(c, HEX),
1599
- v3 === NONE ? v3 : roundToPrecision(h, HEX),
1600
- v4 === NONE ? v4 : alpha
1601
- ];
1602
- }
1603
- const a = c * Math.cos((h * Math.PI) / DEG_HALF);
1604
- const b = c * Math.sin((h * Math.PI) / DEG_HALF);
1605
- const [, x, y, z] = parseLab(`lab(${l} ${a} ${b})`) as ComputedColorChannels;
1606
- return [
1607
- 'xyz-d50',
1608
- roundToPrecision(x, HEX),
1609
- roundToPrecision(y, HEX),
1610
- roundToPrecision(z, HEX),
1611
- alpha as number
1612
- ];
1613
- };
1614
-
1615
- /**
1616
- * parse oklab()
1617
- * @param value - oklab color value
1618
- * @param [opt] - options
1619
- * @returns parsed color
1620
- * - ['xyz-d65', x, y, z, alpha], ['oklab', l, a, b, alpha]
1621
- * - '(empty)', NullObject
1622
- */
1623
- export const parseOklab = (
1624
- value: string,
1625
- opt: Options = {}
1626
- ): SpecifiedColorChannels | string | NullObject => {
1627
- if (isString(value)) {
1628
- value = value.trim();
1629
- } else {
1630
- throw new TypeError(`${value} is not a string.`);
1631
- }
1632
- const { format = '', nullable = false } = opt;
1633
- if (!REG_OKLAB.test(value)) {
1634
- const res = resolveInvalidColorValue(format, nullable);
1635
- if (res instanceof NullObject) {
1636
- return res;
1637
- }
1638
- if (isString(res)) {
1639
- return res as string;
1640
- }
1641
- return res as SpecifiedColorChannels;
1642
- }
1643
- const COEF_PCT = 0.4;
1644
- const [, val] = value.match(REG_OKLAB) as MatchedRegExp;
1645
- const [v1, v2, v3, v4 = ''] = val
1646
- .replace('/', ' ')
1647
- .split(/\s+/) as StringColorChannels;
1648
- let l, a, b;
1649
- if (v1 === NONE) {
1650
- l = 0;
1651
- } else {
1652
- l = v1.endsWith('%') ? parseFloat(v1) / MAX_PCT : parseFloat(v1);
1653
- if (l < 0) {
1654
- l = 0;
1655
- }
1656
- }
1657
- if (v2 === NONE) {
1658
- a = 0;
1659
- } else if (v2.endsWith('%')) {
1660
- a = (parseFloat(v2) * COEF_PCT) / MAX_PCT;
1661
- } else {
1662
- a = parseFloat(v2);
1663
- }
1664
- if (v3 === NONE) {
1665
- b = 0;
1666
- } else if (v3.endsWith('%')) {
1667
- b = (parseFloat(v3) * COEF_PCT) / MAX_PCT;
1668
- } else {
1669
- b = parseFloat(v3);
1670
- }
1671
- const alpha = parseAlpha(v4);
1672
- if (REG_SPEC.test(format)) {
1673
- return [
1674
- 'oklab',
1675
- v1 === NONE ? v1 : roundToPrecision(l, HEX),
1676
- v2 === NONE ? v2 : roundToPrecision(a, HEX),
1677
- v3 === NONE ? v3 : roundToPrecision(b, HEX),
1678
- v4 === NONE ? v4 : alpha
1679
- ];
1680
- }
1681
- const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);
1682
- const xyzLms = lms.map(c => Math.pow(c, POW_CUBE)) as TriColorChannels;
1683
- const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);
1684
- return [
1685
- 'xyz-d65',
1686
- roundToPrecision(x, HEX),
1687
- roundToPrecision(y, HEX),
1688
- roundToPrecision(z, HEX),
1689
- alpha as number
1690
- ];
1691
- };
1692
-
1693
- /**
1694
- * parse oklch()
1695
- * @param value - oklch color value
1696
- * @param [opt] - options
1697
- * @returns parsed color
1698
- * - ['xyz-d65', x, y, z, alpha], ['oklch', l, c, h, alpha]
1699
- * - '(empty)', NullObject
1700
- */
1701
- export const parseOklch = (
1702
- value: string,
1703
- opt: Options = {}
1704
- ): SpecifiedColorChannels | string | NullObject => {
1705
- if (isString(value)) {
1706
- value = value.trim();
1707
- } else {
1708
- throw new TypeError(`${value} is not a string.`);
1709
- }
1710
- const { format = '', nullable = false } = opt;
1711
- if (!REG_OKLCH.test(value)) {
1712
- const res = resolveInvalidColorValue(format, nullable);
1713
- if (res instanceof NullObject) {
1714
- return res;
1715
- }
1716
- if (isString(res)) {
1717
- return res as string;
1718
- }
1719
- return res as SpecifiedColorChannels;
1720
- }
1721
- const COEF_PCT = 0.4;
1722
- const [, val] = value.match(REG_OKLCH) as MatchedRegExp;
1723
- const [v1, v2, v3, v4 = ''] = val
1724
- .replace('/', ' ')
1725
- .split(/\s+/) as StringColorChannels;
1726
- let l, c, h;
1727
- if (v1 === NONE) {
1728
- l = 0;
1729
- } else {
1730
- l = v1.endsWith('%') ? parseFloat(v1) / MAX_PCT : parseFloat(v1);
1731
- if (l < 0) {
1732
- l = 0;
1733
- }
1734
- }
1735
- if (v2 === NONE) {
1736
- c = 0;
1737
- } else {
1738
- if (v2.endsWith('%')) {
1739
- c = (parseFloat(v2) * COEF_PCT) / MAX_PCT;
1740
- } else {
1741
- c = parseFloat(v2);
1742
- }
1743
- if (c < 0) {
1744
- c = 0;
1745
- }
1746
- }
1747
- if (v3 === NONE) {
1748
- h = 0;
1749
- } else {
1750
- h = angleToDeg(v3);
1751
- }
1752
- const alpha = parseAlpha(v4);
1753
- if (REG_SPEC.test(format)) {
1754
- return [
1755
- 'oklch',
1756
- v1 === NONE ? v1 : roundToPrecision(l, HEX),
1757
- v2 === NONE ? v2 : roundToPrecision(c, HEX),
1758
- v3 === NONE ? v3 : roundToPrecision(h, HEX),
1759
- v4 === NONE ? v4 : alpha
1760
- ];
1761
- }
1762
- const a = c * Math.cos((h * Math.PI) / DEG_HALF);
1763
- const b = c * Math.sin((h * Math.PI) / DEG_HALF);
1764
- const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);
1765
- const xyzLms = lms.map(cc => Math.pow(cc, POW_CUBE)) as TriColorChannels;
1766
- const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);
1767
- return [
1768
- 'xyz-d65',
1769
- roundToPrecision(x, HEX),
1770
- roundToPrecision(y, HEX),
1771
- roundToPrecision(z, HEX),
1772
- alpha
1773
- ];
1774
- };
1775
-
1776
- /**
1777
- * parse color()
1778
- * @param value - color function value
1779
- * @param [opt] - options
1780
- * @returns parsed color
1781
- * - ['xyz-(d50|d65)', x, y, z, alpha], [cs, r, g, b, alpha]
1782
- * - '(empty)', NullObject
1783
- */
1784
- export const parseColorFunc = (
1785
- value: string,
1786
- opt: Options = {}
1787
- ): SpecifiedColorChannels | string | NullObject => {
1788
- if (isString(value)) {
1789
- value = value.trim();
1790
- } else {
1791
- throw new TypeError(`${value} is not a string.`);
1792
- }
1793
- const { colorSpace = '', d50 = false, format = '', nullable = false } = opt;
1794
- if (!REG_FN_COLOR.test(value)) {
1795
- const res = resolveInvalidColorValue(format, nullable);
1796
- if (res instanceof NullObject) {
1797
- return res;
1798
- }
1799
- if (isString(res)) {
1800
- return res as string;
1801
- }
1802
- return res as SpecifiedColorChannels;
1803
- }
1804
- const [, val] = value.match(REG_FN_COLOR) as MatchedRegExp;
1805
- let [cs, v1, v2, v3, v4 = ''] = val
1806
- .replace('/', ' ')
1807
- .split(/\s+/) as StringColorSpacedChannels;
1808
- let r, g, b;
1809
- if (cs === 'xyz') {
1810
- cs = 'xyz-d65';
1811
- }
1812
- if (v1 === NONE) {
1813
- r = 0;
1814
- } else {
1815
- r = v1.endsWith('%') ? parseFloat(v1) / MAX_PCT : parseFloat(v1);
1816
- }
1817
- if (v2 === NONE) {
1818
- g = 0;
1819
- } else {
1820
- g = v2.endsWith('%') ? parseFloat(v2) / MAX_PCT : parseFloat(v2);
1821
- }
1822
- if (v3 === NONE) {
1823
- b = 0;
1824
- } else {
1825
- b = v3.endsWith('%') ? parseFloat(v3) / MAX_PCT : parseFloat(v3);
1826
- }
1827
- const alpha = parseAlpha(v4);
1828
- if (REG_SPEC.test(format) || (format === VAL_MIX && cs === colorSpace)) {
1829
- return [
1830
- cs,
1831
- v1 === NONE ? v1 : roundToPrecision(r, DEC),
1832
- v2 === NONE ? v2 : roundToPrecision(g, DEC),
1833
- v3 === NONE ? v3 : roundToPrecision(b, DEC),
1834
- v4 === NONE ? v4 : alpha
1835
- ];
1836
- }
1837
- let x = 0;
1838
- let y = 0;
1839
- let z = 0;
1840
- // srgb-linear
1841
- if (cs === 'srgb-linear') {
1842
- [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b]);
1843
- if (d50) {
1844
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
1845
- }
1846
- // display-p3
1847
- } else if (cs === 'display-p3') {
1848
- const linearRgb = transformRgbToLinearRgb([
1849
- r * MAX_RGB,
1850
- g * MAX_RGB,
1851
- b * MAX_RGB
1852
- ]);
1853
- [x, y, z] = transformMatrix(MATRIX_P3_TO_XYZ, linearRgb);
1854
- if (d50) {
1855
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
1856
- }
1857
- // rec2020
1858
- } else if (cs === 'rec2020') {
1859
- const ALPHA = 1.09929682680944;
1860
- const BETA = 0.018053968510807;
1861
- const REC_COEF = 0.45;
1862
- const rgb = [r, g, b].map(c => {
1863
- let cl;
1864
- if (c < BETA * REC_COEF * DEC) {
1865
- cl = c / (REC_COEF * DEC);
1866
- } else {
1867
- cl = Math.pow((c + ALPHA - 1) / ALPHA, 1 / REC_COEF);
1868
- }
1869
- return cl;
1870
- }) as TriColorChannels;
1871
- [x, y, z] = transformMatrix(MATRIX_REC2020_TO_XYZ, rgb);
1872
- if (d50) {
1873
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
1874
- }
1875
- // a98-rgb
1876
- } else if (cs === 'a98-rgb') {
1877
- const POW_A98 = 563 / 256;
1878
- const rgb = [r, g, b].map(c => {
1879
- const cl = Math.pow(c, POW_A98);
1880
- return cl;
1881
- }) as TriColorChannels;
1882
- [x, y, z] = transformMatrix(MATRIX_A98_TO_XYZ, rgb);
1883
- if (d50) {
1884
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
1885
- }
1886
- // prophoto-rgb
1887
- } else if (cs === 'prophoto-rgb') {
1888
- const POW_PROPHOTO = 1.8;
1889
- const rgb = [r, g, b].map(c => {
1890
- let cl;
1891
- if (c > 1 / (HEX * DUO)) {
1892
- cl = Math.pow(c, POW_PROPHOTO);
1893
- } else {
1894
- cl = c / HEX;
1895
- }
1896
- return cl;
1897
- }) as TriColorChannels;
1898
- [x, y, z] = transformMatrix(MATRIX_PROPHOTO_TO_XYZ_D50, rgb);
1899
- if (!d50) {
1900
- [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);
1901
- }
1902
- // xyz, xyz-d50, xyz-d65
1903
- } else if (/^xyz(?:-d(?:50|65))?$/.test(cs)) {
1904
- [x, y, z] = [r, g, b];
1905
- if (cs === 'xyz-d50') {
1906
- if (!d50) {
1907
- [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);
1908
- }
1909
- } else if (d50) {
1910
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
1911
- }
1912
- // srgb
1913
- } else {
1914
- [x, y, z] = transformRgbToXyz([r * MAX_RGB, g * MAX_RGB, b * MAX_RGB]);
1915
- if (d50) {
1916
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
1917
- }
1918
- }
1919
- return [
1920
- d50 ? 'xyz-d50' : 'xyz-d65',
1921
- roundToPrecision(x, HEX),
1922
- roundToPrecision(y, HEX),
1923
- roundToPrecision(z, HEX),
1924
- format === VAL_MIX && v4 === NONE ? v4 : alpha
1925
- ];
1926
- };
1927
-
1928
- /**
1929
- * parse color value
1930
- * @param value - CSS color value
1931
- * @param [opt] - options
1932
- * @returns parsed color
1933
- * - ['xyz-(d50|d65)', x, y, z, alpha], ['rgb', r, g, b, alpha]
1934
- * - value, '(empty)', NullObject
1935
- */
1936
- export const parseColorValue = (
1937
- value: string,
1938
- opt: Options = {}
1939
- ): SpecifiedColorChannels | string | NullObject => {
1940
- if (isString(value)) {
1941
- value = value.toLowerCase().trim();
1942
- } else {
1943
- throw new TypeError(`${value} is not a string.`);
1944
- }
1945
- const { d50 = false, format = '', nullable = false } = opt;
1946
- if (!REG_COLOR.test(value)) {
1947
- const res = resolveInvalidColorValue(format, nullable);
1948
- if (res instanceof NullObject) {
1949
- return res;
1950
- }
1951
- if (isString(res)) {
1952
- return res as string;
1953
- }
1954
- return res as SpecifiedColorChannels;
1955
- }
1956
- let x = 0;
1957
- let y = 0;
1958
- let z = 0;
1959
- let alpha = 0;
1960
- // complement currentcolor as a missing color
1961
- if (REG_CURRENT.test(value)) {
1962
- if (format === VAL_COMP) {
1963
- return ['rgb', 0, 0, 0, 0];
1964
- }
1965
- if (format === VAL_SPEC) {
1966
- return value;
1967
- }
1968
- // named-color
1969
- } else if (/^[a-z]+$/.test(value)) {
1970
- if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {
1971
- if (format === VAL_SPEC) {
1972
- return value;
1973
- }
1974
- const [r, g, b] = NAMED_COLORS[
1975
- value as keyof typeof NAMED_COLORS
1976
- ] as TriColorChannels;
1977
- alpha = 1;
1978
- if (format === VAL_COMP) {
1979
- return ['rgb', r, g, b, alpha];
1980
- }
1981
- [x, y, z] = transformRgbToXyz([r, g, b], true);
1982
- if (d50) {
1983
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
1984
- }
1985
- } else {
1986
- switch (format) {
1987
- case VAL_COMP: {
1988
- if (nullable && value !== 'transparent') {
1989
- return new NullObject();
1990
- }
1991
- return ['rgb', 0, 0, 0, 0];
1992
- }
1993
- case VAL_SPEC: {
1994
- if (value === 'transparent') {
1995
- return value;
1996
- }
1997
- return '';
1998
- }
1999
- case VAL_MIX: {
2000
- if (value === 'transparent') {
2001
- return ['rgb', 0, 0, 0, 0];
2002
- }
2003
- return new NullObject();
2004
- }
2005
- default:
2006
- }
2007
- }
2008
- // hex-color
2009
- } else if (value[0] === '#') {
2010
- if (REG_SPEC.test(format)) {
2011
- const rgb = convertHexToRgb(value);
2012
- return ['rgb', ...rgb];
2013
- }
2014
- [x, y, z, alpha] = convertHexToXyz(value);
2015
- if (d50) {
2016
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
2017
- }
2018
- // lab()
2019
- } else if (value.startsWith('lab')) {
2020
- if (REG_SPEC.test(format)) {
2021
- return parseLab(value, opt);
2022
- }
2023
- [, x, y, z, alpha] = parseLab(value) as ComputedColorChannels;
2024
- if (!d50) {
2025
- [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);
2026
- }
2027
- // lch()
2028
- } else if (value.startsWith('lch')) {
2029
- if (REG_SPEC.test(format)) {
2030
- return parseLch(value, opt);
2031
- }
2032
- [, x, y, z, alpha] = parseLch(value) as ComputedColorChannels;
2033
- if (!d50) {
2034
- [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);
2035
- }
2036
- // oklab()
2037
- } else if (value.startsWith('oklab')) {
2038
- if (REG_SPEC.test(format)) {
2039
- return parseOklab(value, opt);
2040
- }
2041
- [, x, y, z, alpha] = parseOklab(value) as ComputedColorChannels;
2042
- if (d50) {
2043
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
2044
- }
2045
- // oklch()
2046
- } else if (value.startsWith('oklch')) {
2047
- if (REG_SPEC.test(format)) {
2048
- return parseOklch(value, opt);
2049
- }
2050
- [, x, y, z, alpha] = parseOklch(value) as ComputedColorChannels;
2051
- if (d50) {
2052
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
2053
- }
2054
- } else {
2055
- let r, g, b;
2056
- // hsl()
2057
- if (value.startsWith('hsl')) {
2058
- [, r, g, b, alpha] = parseHsl(value) as ComputedColorChannels;
2059
- // hwb()
2060
- } else if (value.startsWith('hwb')) {
2061
- [, r, g, b, alpha] = parseHwb(value) as ComputedColorChannels;
2062
- // rgb()
2063
- } else {
2064
- [, r, g, b, alpha] = parseRgb(value, opt) as ComputedColorChannels;
2065
- }
2066
- if (REG_SPEC.test(format)) {
2067
- return ['rgb', Math.round(r), Math.round(g), Math.round(b), alpha];
2068
- }
2069
- [x, y, z] = transformRgbToXyz([r, g, b]);
2070
- if (d50) {
2071
- [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);
2072
- }
2073
- }
2074
- return [
2075
- d50 ? 'xyz-d50' : 'xyz-d65',
2076
- roundToPrecision(x, HEX),
2077
- roundToPrecision(y, HEX),
2078
- roundToPrecision(z, HEX),
2079
- alpha
2080
- ];
2081
- };
2082
-
2083
- /**
2084
- * resolve color value
2085
- * @param value - CSS color value
2086
- * @param [opt] - options
2087
- * @returns resolved color
2088
- * - [cs, v1, v2, v3, alpha], value, '(empty)', NullObject
2089
- */
2090
- export const resolveColorValue = (
2091
- value: string,
2092
- opt: Options = {}
2093
- ): SpecifiedColorChannels | string | NullObject => {
2094
- if (isString(value)) {
2095
- value = value.toLowerCase().trim();
2096
- } else {
2097
- throw new TypeError(`${value} is not a string.`);
2098
- }
2099
- const { colorSpace = '', format = '', nullable = false } = opt;
2100
- const cacheKey: string = createCacheKey(
2101
- {
2102
- namespace: NAMESPACE,
2103
- name: 'resolveColorValue',
2104
- value
2105
- },
2106
- opt
2107
- );
2108
- const cachedResult = getCache(cacheKey);
2109
- if (cachedResult instanceof CacheItem) {
2110
- if (cachedResult.isNull) {
2111
- return cachedResult as NullObject;
2112
- }
2113
- const cachedItem = cachedResult.item;
2114
- if (isString(cachedItem)) {
2115
- return cachedItem as string;
2116
- }
2117
- return cachedItem as SpecifiedColorChannels;
2118
- }
2119
- if (!REG_COLOR.test(value)) {
2120
- const res = resolveInvalidColorValue(format, nullable);
2121
- if (res instanceof NullObject) {
2122
- setCache(cacheKey, null);
2123
- return res;
2124
- }
2125
- setCache(cacheKey, res);
2126
- if (isString(res)) {
2127
- return res as string;
2128
- }
2129
- return res as SpecifiedColorChannels;
2130
- }
2131
- let cs = '';
2132
- let r = 0;
2133
- let g = 0;
2134
- let b = 0;
2135
- let alpha = 0;
2136
- // complement currentcolor as a missing color
2137
- if (REG_CURRENT.test(value)) {
2138
- if (format === VAL_SPEC) {
2139
- setCache(cacheKey, value);
2140
- return value;
2141
- }
2142
- // named-color
2143
- } else if (/^[a-z]+$/.test(value)) {
2144
- if (Object.prototype.hasOwnProperty.call(NAMED_COLORS, value)) {
2145
- if (format === VAL_SPEC) {
2146
- setCache(cacheKey, value);
2147
- return value;
2148
- }
2149
- [r, g, b] = NAMED_COLORS[
2150
- value as keyof typeof NAMED_COLORS
2151
- ] as TriColorChannels;
2152
- alpha = 1;
2153
- } else {
2154
- switch (format) {
2155
- case VAL_SPEC: {
2156
- if (value === 'transparent') {
2157
- setCache(cacheKey, value);
2158
- return value;
2159
- }
2160
- const res = '';
2161
- setCache(cacheKey, res);
2162
- return res;
2163
- }
2164
- case VAL_MIX: {
2165
- if (value === 'transparent') {
2166
- const res: SpecifiedColorChannels = ['rgb', 0, 0, 0, 0];
2167
- setCache(cacheKey, res);
2168
- return res;
2169
- }
2170
- setCache(cacheKey, null);
2171
- return new NullObject();
2172
- }
2173
- case VAL_COMP:
2174
- default: {
2175
- if (nullable && value !== 'transparent') {
2176
- setCache(cacheKey, null);
2177
- return new NullObject();
2178
- }
2179
- const res: SpecifiedColorChannels = ['rgb', 0, 0, 0, 0];
2180
- setCache(cacheKey, res);
2181
- return res;
2182
- }
2183
- }
2184
- }
2185
- // hex-color
2186
- } else if (value[0] === '#') {
2187
- [r, g, b, alpha] = convertHexToRgb(value);
2188
- // hsl()
2189
- } else if (value.startsWith('hsl')) {
2190
- [, r, g, b, alpha] = parseHsl(value, opt) as ComputedColorChannels;
2191
- // hwb()
2192
- } else if (value.startsWith('hwb')) {
2193
- [, r, g, b, alpha] = parseHwb(value, opt) as ComputedColorChannels;
2194
- // lab(), lch()
2195
- } else if (/^l(?:ab|ch)/.test(value)) {
2196
- let x, y, z;
2197
- if (value.startsWith('lab')) {
2198
- [cs, x, y, z, alpha] = parseLab(value, opt) as ComputedColorChannels;
2199
- } else {
2200
- [cs, x, y, z, alpha] = parseLch(value, opt) as ComputedColorChannels;
2201
- }
2202
- if (REG_SPEC.test(format)) {
2203
- const res: SpecifiedColorChannels = [cs, x, y, z, alpha];
2204
- setCache(cacheKey, res);
2205
- return res;
2206
- }
2207
- [r, g, b] = transformXyzD50ToRgb([x, y, z]);
2208
- // oklab(), oklch()
2209
- } else if (/^okl(?:ab|ch)/.test(value)) {
2210
- let x, y, z;
2211
- if (value.startsWith('oklab')) {
2212
- [cs, x, y, z, alpha] = parseOklab(value, opt) as ComputedColorChannels;
2213
- } else {
2214
- [cs, x, y, z, alpha] = parseOklch(value, opt) as ComputedColorChannels;
2215
- }
2216
- if (REG_SPEC.test(format)) {
2217
- const res: SpecifiedColorChannels = [cs, x, y, z, alpha];
2218
- setCache(cacheKey, res);
2219
- return res;
2220
- }
2221
- [r, g, b] = transformXyzToRgb([x, y, z]);
2222
- // rgb()
2223
- } else {
2224
- [, r, g, b, alpha] = parseRgb(value, opt) as ComputedColorChannels;
2225
- }
2226
- if (format === VAL_MIX && colorSpace === 'srgb') {
2227
- const res: SpecifiedColorChannels = [
2228
- 'srgb',
2229
- r / MAX_RGB,
2230
- g / MAX_RGB,
2231
- b / MAX_RGB,
2232
- alpha
2233
- ];
2234
- setCache(cacheKey, res);
2235
- return res;
2236
- }
2237
- const res: SpecifiedColorChannels = [
2238
- 'rgb',
2239
- Math.round(r),
2240
- Math.round(g),
2241
- Math.round(b),
2242
- alpha
2243
- ];
2244
- setCache(cacheKey, res);
2245
- return res;
2246
- };
2247
-
2248
- /**
2249
- * resolve color()
2250
- * @param value - color function value
2251
- * @param [opt] - options
2252
- * @returns resolved color - [cs, v1, v2, v3, alpha], '(empty)', NullObject
2253
- */
2254
- export const resolveColorFunc = (
2255
- value: string,
2256
- opt: Options = {}
2257
- ): SpecifiedColorChannels | string | NullObject => {
2258
- if (isString(value)) {
2259
- value = value.toLowerCase().trim();
2260
- } else {
2261
- throw new TypeError(`${value} is not a string.`);
2262
- }
2263
- const { colorSpace = '', format = '', nullable = false } = opt;
2264
- const cacheKey: string = createCacheKey(
2265
- {
2266
- namespace: NAMESPACE,
2267
- name: 'resolveColorFunc',
2268
- value
2269
- },
2270
- opt
2271
- );
2272
- const cachedResult = getCache(cacheKey);
2273
- if (cachedResult instanceof CacheItem) {
2274
- if (cachedResult.isNull) {
2275
- return cachedResult as NullObject;
2276
- }
2277
- const cachedItem = cachedResult.item;
2278
- if (isString(cachedItem)) {
2279
- return cachedItem as string;
2280
- }
2281
- return cachedItem as SpecifiedColorChannels;
2282
- }
2283
- if (!REG_FN_COLOR.test(value)) {
2284
- const res = resolveInvalidColorValue(format, nullable);
2285
- if (res instanceof NullObject) {
2286
- setCache(cacheKey, null);
2287
- return res;
2288
- }
2289
- setCache(cacheKey, res);
2290
- if (isString(res)) {
2291
- return res as string;
2292
- }
2293
- return res as SpecifiedColorChannels;
2294
- }
2295
- const [cs, v1, v2, v3, v4] = parseColorFunc(
2296
- value,
2297
- opt
2298
- ) as SpecifiedColorChannels;
2299
- if (REG_SPEC.test(format) || (format === VAL_MIX && cs === colorSpace)) {
2300
- const res: SpecifiedColorChannels = [cs, v1, v2, v3, v4];
2301
- setCache(cacheKey, res);
2302
- return res;
2303
- }
2304
- const x = parseFloat(`${v1}`);
2305
- const y = parseFloat(`${v2}`);
2306
- const z = parseFloat(`${v3}`);
2307
- const alpha = parseAlpha(`${v4}`);
2308
- const [r, g, b] = transformXyzToRgb([x, y, z], true);
2309
- const res: SpecifiedColorChannels = ['rgb', r, g, b, alpha];
2310
- setCache(cacheKey, res);
2311
- return res;
2312
- };
2313
-
2314
- /**
2315
- * convert color value to linear rgb
2316
- * @param value - CSS color value
2317
- * @param [opt] - options
2318
- * @returns ColorChannels | NullObject - [r, g, b, alpha] r|g|b|alpha: 0..1
2319
- */
2320
- export const convertColorToLinearRgb = (
2321
- value: string,
2322
- opt: {
2323
- colorSpace?: string;
2324
- format?: string;
2325
- } = {}
2326
- ): ColorChannels | NullObject => {
2327
- if (isString(value)) {
2328
- value = value.trim();
2329
- } else {
2330
- throw new TypeError(`${value} is not a string.`);
2331
- }
2332
- const { colorSpace = '', format = '' } = opt;
2333
- let cs = '';
2334
- let r, g, b, alpha, x, y, z;
2335
- if (format === VAL_MIX) {
2336
- let xyz;
2337
- if (value.startsWith(FN_COLOR)) {
2338
- xyz = parseColorFunc(value, opt);
2339
- } else {
2340
- xyz = parseColorValue(value, opt);
2341
- }
2342
- if (xyz instanceof NullObject) {
2343
- return xyz;
2344
- }
2345
- [cs, x, y, z, alpha] = xyz as ComputedColorChannels;
2346
- if (cs === colorSpace) {
2347
- return [x, y, z, alpha];
2348
- }
2349
- [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);
2350
- } else if (value.startsWith(FN_COLOR)) {
2351
- const [, val] = value.match(REG_FN_COLOR) as MatchedRegExp;
2352
- const [cs] = val
2353
- .replace('/', ' ')
2354
- .split(/\s+/) as StringColorSpacedChannels;
2355
- if (cs === 'srgb-linear') {
2356
- [, r, g, b, alpha] = resolveColorFunc(value, {
2357
- format: VAL_COMP
2358
- }) as ComputedColorChannels;
2359
- } else {
2360
- [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;
2361
- [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);
2362
- }
2363
- } else {
2364
- [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;
2365
- [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);
2366
- }
2367
- return [
2368
- Math.min(Math.max(r, 0), 1),
2369
- Math.min(Math.max(g, 0), 1),
2370
- Math.min(Math.max(b, 0), 1),
2371
- alpha
2372
- ];
2373
- };
2374
-
2375
- /**
2376
- * convert color value to rgb
2377
- * @param value - CSS color value
2378
- * @param [opt] - options
2379
- * @returns ColorChannels | NullObject
2380
- * - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1
2381
- */
2382
- export const convertColorToRgb = (
2383
- value: string,
2384
- opt: Options = {}
2385
- ): ColorChannels | NullObject => {
2386
- if (isString(value)) {
2387
- value = value.trim();
2388
- } else {
2389
- throw new TypeError(`${value} is not a string.`);
2390
- }
2391
- const { format = '' } = opt;
2392
- let r, g, b, alpha;
2393
- if (format === VAL_MIX) {
2394
- let rgb;
2395
- if (value.startsWith(FN_COLOR)) {
2396
- rgb = resolveColorFunc(value, opt);
2397
- } else {
2398
- rgb = resolveColorValue(value, opt);
2399
- }
2400
- if (rgb instanceof NullObject) {
2401
- return rgb;
2402
- }
2403
- [, r, g, b, alpha] = rgb as ComputedColorChannels;
2404
- } else if (value.startsWith(FN_COLOR)) {
2405
- const [, val] = value.match(REG_FN_COLOR) as MatchedRegExp;
2406
- const [cs] = val
2407
- .replace('/', ' ')
2408
- .split(/\s+/) as StringColorSpacedChannels;
2409
- if (cs === 'srgb') {
2410
- [, r, g, b, alpha] = resolveColorFunc(value, {
2411
- format: VAL_COMP
2412
- }) as ComputedColorChannels;
2413
- r *= MAX_RGB;
2414
- g *= MAX_RGB;
2415
- b *= MAX_RGB;
2416
- } else {
2417
- [, r, g, b, alpha] = resolveColorFunc(value) as ComputedColorChannels;
2418
- }
2419
- } else if (/^(?:ok)?l(?:ab|ch)/.test(value)) {
2420
- [r, g, b, alpha] = convertColorToLinearRgb(value) as ColorChannels;
2421
- [r, g, b] = transformLinearRgbToRgb([r, g, b]);
2422
- } else {
2423
- [, r, g, b, alpha] = resolveColorValue(value, {
2424
- format: VAL_COMP
2425
- }) as ComputedColorChannels;
2426
- }
2427
- return [r, g, b, alpha];
2428
- };
2429
-
2430
- /**
2431
- * convert color value to xyz
2432
- * @param value - CSS color value
2433
- * @param [opt] - options
2434
- * @returns ColorChannels | NullObject - [x, y, z, alpha]
2435
- */
2436
- export const convertColorToXyz = (
2437
- value: string,
2438
- opt: Options = {}
2439
- ): ColorChannels | NullObject => {
2440
- if (isString(value)) {
2441
- value = value.trim();
2442
- } else {
2443
- throw new TypeError(`${value} is not a string.`);
2444
- }
2445
- const { d50 = false, format = '' } = opt;
2446
- let x, y, z, alpha;
2447
- if (format === VAL_MIX) {
2448
- let xyz;
2449
- if (value.startsWith(FN_COLOR)) {
2450
- xyz = parseColorFunc(value, opt);
2451
- } else {
2452
- xyz = parseColorValue(value, opt);
2453
- }
2454
- if (xyz instanceof NullObject) {
2455
- return xyz;
2456
- }
2457
- [, x, y, z, alpha] = xyz as ComputedColorChannels;
2458
- } else if (value.startsWith(FN_COLOR)) {
2459
- const [, val] = value.match(REG_FN_COLOR) as MatchedRegExp;
2460
- const [cs] = val
2461
- .replace('/', ' ')
2462
- .split(/\s+/) as StringColorSpacedChannels;
2463
- if (d50) {
2464
- if (cs === 'xyz-d50') {
2465
- [, x, y, z, alpha] = resolveColorFunc(value, {
2466
- format: VAL_COMP
2467
- }) as ComputedColorChannels;
2468
- } else {
2469
- [, x, y, z, alpha] = parseColorFunc(
2470
- value,
2471
- opt
2472
- ) as ComputedColorChannels;
2473
- }
2474
- } else if (/^xyz(?:-d65)?$/.test(cs)) {
2475
- [, x, y, z, alpha] = resolveColorFunc(value, {
2476
- format: VAL_COMP
2477
- }) as ComputedColorChannels;
2478
- } else {
2479
- [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;
2480
- }
2481
- } else {
2482
- [, x, y, z, alpha] = parseColorValue(value, opt) as ComputedColorChannels;
2483
- }
2484
- return [x, y, z, alpha];
2485
- };
2486
-
2487
- /**
2488
- * convert color value to hsl
2489
- * @param value - CSS color value
2490
- * @param [opt] - options
2491
- * @returns ColorChannels | NullObject - [h, s, l, alpha], hue may be powerless
2492
- */
2493
- export const convertColorToHsl = (
2494
- value: string,
2495
- opt: Options = {}
2496
- ): ColorChannels | [number | string, number, number, number] | NullObject => {
2497
- if (isString(value)) {
2498
- value = value.trim();
2499
- } else {
2500
- throw new TypeError(`${value} is not a string.`);
2501
- }
2502
- const { format = '' } = opt;
2503
- let h, s, l, alpha;
2504
- if (REG_HSL.test(value)) {
2505
- [, h, s, l, alpha] = parseHsl(value, {
2506
- format: 'hsl'
2507
- }) as ComputedColorChannels;
2508
- if (format === 'hsl') {
2509
- return [Math.round(h), Math.round(s), Math.round(l), alpha];
2510
- }
2511
- return [h, s, l, alpha];
2512
- }
2513
- let x, y, z;
2514
- if (format === VAL_MIX) {
2515
- let xyz;
2516
- if (value.startsWith(FN_COLOR)) {
2517
- xyz = parseColorFunc(value, opt);
2518
- } else {
2519
- xyz = parseColorValue(value, opt);
2520
- }
2521
- if (xyz instanceof NullObject) {
2522
- return xyz;
2523
- }
2524
- [, x, y, z, alpha] = xyz as ComputedColorChannels;
2525
- } else if (value.startsWith(FN_COLOR)) {
2526
- [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;
2527
- } else {
2528
- [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;
2529
- }
2530
- [h, s, l] = transformXyzToHsl([x, y, z], true) as TriColorChannels;
2531
- if (format === 'hsl') {
2532
- return [Math.round(h), Math.round(s), Math.round(l), alpha];
2533
- }
2534
- return [format === VAL_MIX && s === 0 ? NONE : h, s, l, alpha];
2535
- };
2536
-
2537
- /**
2538
- * convert color value to hwb
2539
- * @param value - CSS color value
2540
- * @param [opt] - options
2541
- * @returns ColorChannels | NullObject - [h, w, b, alpha], hue may be powerless
2542
- */
2543
- export const convertColorToHwb = (
2544
- value: string,
2545
- opt: Options = {}
2546
- ): ColorChannels | [number | string, number, number, number] | NullObject => {
2547
- if (isString(value)) {
2548
- value = value.trim();
2549
- } else {
2550
- throw new TypeError(`${value} is not a string.`);
2551
- }
2552
- const { format = '' } = opt;
2553
- let h, w, b, alpha;
2554
- if (REG_HWB.test(value)) {
2555
- [, h, w, b, alpha] = parseHwb(value, {
2556
- format: 'hwb'
2557
- }) as ComputedColorChannels;
2558
- if (format === 'hwb') {
2559
- return [Math.round(h), Math.round(w), Math.round(b), alpha];
2560
- }
2561
- return [h, w, b, alpha];
2562
- }
2563
- let x, y, z;
2564
- if (format === VAL_MIX) {
2565
- let xyz;
2566
- if (value.startsWith(FN_COLOR)) {
2567
- xyz = parseColorFunc(value, opt);
2568
- } else {
2569
- xyz = parseColorValue(value, opt);
2570
- }
2571
- if (xyz instanceof NullObject) {
2572
- return xyz;
2573
- }
2574
- [, x, y, z, alpha] = xyz as ComputedColorChannels;
2575
- } else if (value.startsWith(FN_COLOR)) {
2576
- [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;
2577
- } else {
2578
- [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;
2579
- }
2580
- [h, w, b] = transformXyzToHwb([x, y, z], true) as TriColorChannels;
2581
- if (format === 'hwb') {
2582
- return [Math.round(h), Math.round(w), Math.round(b), alpha];
2583
- }
2584
- return [format === VAL_MIX && w + b >= 100 ? NONE : h, w, b, alpha];
2585
- };
2586
-
2587
- /**
2588
- * convert color value to lab
2589
- * @param value - CSS color value
2590
- * @param [opt] - options
2591
- * @returns ColorChannels | NullObject - [l, a, b, alpha]
2592
- */
2593
- export const convertColorToLab = (
2594
- value: string,
2595
- opt: Options = {}
2596
- ): ColorChannels | NullObject => {
2597
- if (isString(value)) {
2598
- value = value.trim();
2599
- } else {
2600
- throw new TypeError(`${value} is not a string.`);
2601
- }
2602
- const { format = '' } = opt;
2603
- let l, a, b, alpha;
2604
- if (REG_LAB.test(value)) {
2605
- [, l, a, b, alpha] = parseLab(value, {
2606
- format: VAL_COMP
2607
- }) as ComputedColorChannels;
2608
- return [l, a, b, alpha];
2609
- }
2610
- let x, y, z;
2611
- if (format === VAL_MIX) {
2612
- let xyz;
2613
- opt.d50 = true;
2614
- if (value.startsWith(FN_COLOR)) {
2615
- xyz = parseColorFunc(value, opt);
2616
- } else {
2617
- xyz = parseColorValue(value, opt);
2618
- }
2619
- if (xyz instanceof NullObject) {
2620
- return xyz;
2621
- }
2622
- [, x, y, z, alpha] = xyz as ComputedColorChannels;
2623
- } else if (value.startsWith(FN_COLOR)) {
2624
- [, x, y, z, alpha] = parseColorFunc(value, {
2625
- d50: true
2626
- }) as ComputedColorChannels;
2627
- } else {
2628
- [, x, y, z, alpha] = parseColorValue(value, {
2629
- d50: true
2630
- }) as ComputedColorChannels;
2631
- }
2632
- [l, a, b] = transformXyzD50ToLab([x, y, z], true);
2633
- return [l, a, b, alpha];
2634
- };
2635
-
2636
- /**
2637
- * convert color value to lch
2638
- * @param value - CSS color value
2639
- * @param [opt] - options
2640
- * @returns ColorChannels | NullObject - [l, c, h, alpha], hue may be powerless
2641
- */
2642
- export const convertColorToLch = (
2643
- value: string,
2644
- opt: Options = {}
2645
- ): ColorChannels | [number, number, number | string, number] | NullObject => {
2646
- if (isString(value)) {
2647
- value = value.trim();
2648
- } else {
2649
- throw new TypeError(`${value} is not a string.`);
2650
- }
2651
- const { format = '' } = opt;
2652
- let l, c, h, alpha;
2653
- if (REG_LCH.test(value)) {
2654
- [, l, c, h, alpha] = parseLch(value, {
2655
- format: VAL_COMP
2656
- }) as ComputedColorChannels;
2657
- return [l, c, h, alpha];
2658
- }
2659
- let x, y, z;
2660
- if (format === VAL_MIX) {
2661
- let xyz;
2662
- opt.d50 = true;
2663
- if (value.startsWith(FN_COLOR)) {
2664
- xyz = parseColorFunc(value, opt);
2665
- } else {
2666
- xyz = parseColorValue(value, opt);
2667
- }
2668
- if (xyz instanceof NullObject) {
2669
- return xyz;
2670
- }
2671
- [, x, y, z, alpha] = xyz as ComputedColorChannels;
2672
- } else if (value.startsWith(FN_COLOR)) {
2673
- [, x, y, z, alpha] = parseColorFunc(value, {
2674
- d50: true
2675
- }) as ComputedColorChannels;
2676
- } else {
2677
- [, x, y, z, alpha] = parseColorValue(value, {
2678
- d50: true
2679
- }) as ComputedColorChannels;
2680
- }
2681
- [l, c, h] = transformXyzD50ToLch([x, y, z], true);
2682
- return [l, c, format === VAL_MIX && c === 0 ? NONE : h, alpha];
2683
- };
2684
-
2685
- /**
2686
- * convert color value to oklab
2687
- * @param value - CSS color value
2688
- * @param [opt] - options
2689
- * @returns ColorChannels | NullObject - [l, a, b, alpha]
2690
- */
2691
- export const convertColorToOklab = (
2692
- value: string,
2693
- opt: Options = {}
2694
- ): ColorChannels | NullObject => {
2695
- if (isString(value)) {
2696
- value = value.trim();
2697
- } else {
2698
- throw new TypeError(`${value} is not a string.`);
2699
- }
2700
- const { format = '' } = opt;
2701
- let l, a, b, alpha;
2702
- if (REG_OKLAB.test(value)) {
2703
- [, l, a, b, alpha] = parseOklab(value, {
2704
- format: VAL_COMP
2705
- }) as ComputedColorChannels;
2706
- return [l, a, b, alpha];
2707
- }
2708
- let x, y, z;
2709
- if (format === VAL_MIX) {
2710
- let xyz;
2711
- if (value.startsWith(FN_COLOR)) {
2712
- xyz = parseColorFunc(value, opt);
2713
- } else {
2714
- xyz = parseColorValue(value, opt);
2715
- }
2716
- if (xyz instanceof NullObject) {
2717
- return xyz;
2718
- }
2719
- [, x, y, z, alpha] = xyz as ComputedColorChannels;
2720
- } else if (value.startsWith(FN_COLOR)) {
2721
- [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;
2722
- } else {
2723
- [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;
2724
- }
2725
- [l, a, b] = transformXyzToOklab([x, y, z], true);
2726
- return [l, a, b, alpha];
2727
- };
2728
-
2729
- /**
2730
- * convert color value to oklch
2731
- * @param value - CSS color value
2732
- * @param [opt] - options
2733
- * @returns ColorChannels | NullObject - [l, c, h, alpha], hue may be powerless
2734
- */
2735
- export const convertColorToOklch = (
2736
- value: string,
2737
- opt: Options = {}
2738
- ): ColorChannels | [number, number, number | string, number] | NullObject => {
2739
- if (isString(value)) {
2740
- value = value.trim();
2741
- } else {
2742
- throw new TypeError(`${value} is not a string.`);
2743
- }
2744
- const { format = '' } = opt;
2745
- let l, c, h, alpha;
2746
- if (REG_OKLCH.test(value)) {
2747
- [, l, c, h, alpha] = parseOklch(value, {
2748
- format: VAL_COMP
2749
- }) as ComputedColorChannels;
2750
- return [l, c, h, alpha];
2751
- }
2752
- let x, y, z;
2753
- if (format === VAL_MIX) {
2754
- let xyz;
2755
- if (value.startsWith(FN_COLOR)) {
2756
- xyz = parseColorFunc(value, opt);
2757
- } else {
2758
- xyz = parseColorValue(value, opt);
2759
- }
2760
- if (xyz instanceof NullObject) {
2761
- return xyz;
2762
- }
2763
- [, x, y, z, alpha] = xyz as ComputedColorChannels;
2764
- } else if (value.startsWith(FN_COLOR)) {
2765
- [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;
2766
- } else {
2767
- [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;
2768
- }
2769
- [l, c, h] = transformXyzToOklch([x, y, z], true) as TriColorChannels;
2770
- return [l, c, format === VAL_MIX && c === 0 ? NONE : h, alpha];
2771
- };
2772
-
2773
- /**
2774
- * resolve color-mix()
2775
- * @param value - color-mix color value
2776
- * @param [opt] - options
2777
- * @returns resolved color - [cs, v1, v2, v3, alpha], '(empty)'
2778
- */
2779
- export const resolveColorMix = (
2780
- value: string,
2781
- opt: Options = {}
2782
- ): SpecifiedColorChannels | string | NullObject => {
2783
- if (isString(value)) {
2784
- value = value.toLowerCase().trim();
2785
- } else {
2786
- throw new TypeError(`${value} is not a string.`);
2787
- }
2788
- const { format = '', nullable = false } = opt;
2789
- const cacheKey: string = createCacheKey(
2790
- {
2791
- namespace: NAMESPACE,
2792
- name: 'resolveColorMix',
2793
- value
2794
- },
2795
- opt
2796
- );
2797
- const cachedResult = getCache(cacheKey);
2798
- if (cachedResult instanceof CacheItem) {
2799
- if (cachedResult.isNull) {
2800
- return cachedResult as NullObject;
2801
- }
2802
- const cachedItem = cachedResult.item;
2803
- if (isString(cachedItem)) {
2804
- return cachedItem as string;
2805
- }
2806
- return cachedItem as SpecifiedColorChannels;
2807
- }
2808
- const nestedItems = [];
2809
- if (!REG_MIX.test(value)) {
2810
- if (value.startsWith(FN_MIX) && REG_MIX_NEST.test(value)) {
2811
- const regColorSpace = new RegExp(`^(?:${CS_RGB}|${CS_XYZ})$`);
2812
- const items = value.match(REG_MIX_NEST) as RegExpMatchArray;
2813
- for (const item of items) {
2814
- if (item) {
2815
- let val = resolveColorMix(item, {
2816
- format: format === VAL_SPEC ? format : VAL_COMP
2817
- }) as ComputedColorChannels | string;
2818
- // computed value
2819
- if (Array.isArray(val)) {
2820
- const [cs, v1, v2, v3, v4] = val as ComputedColorChannels;
2821
- if (v1 === 0 && v2 === 0 && v3 === 0 && v4 === 0) {
2822
- value = '';
2823
- break;
2824
- }
2825
- if (regColorSpace.test(cs)) {
2826
- if (v4 === 1) {
2827
- val = `color(${cs} ${v1} ${v2} ${v3})`;
2828
- } else {
2829
- val = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;
2830
- }
2831
- } else if (v4 === 1) {
2832
- val = `${cs}(${v1} ${v2} ${v3})`;
2833
- } else {
2834
- val = `${cs}(${v1} ${v2} ${v3} / ${v4})`;
2835
- }
2836
- } else if (!REG_MIX.test(val)) {
2837
- value = '';
2838
- break;
2839
- }
2840
- nestedItems.push(val);
2841
- value = value.replace(item, val);
2842
- }
2843
- }
2844
- if (!value) {
2845
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
2846
- return res;
2847
- }
2848
- } else {
2849
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
2850
- return res;
2851
- }
2852
- }
2853
- let colorSpace = '';
2854
- let hueArc = '';
2855
- let colorA = '';
2856
- let pctA = '';
2857
- let colorB = '';
2858
- let pctB = '';
2859
- if (nestedItems.length && format === VAL_SPEC) {
2860
- const regColorSpace = new RegExp(`^color-mix\\(\\s*in\\s+(${CS_MIX})\\s*,`);
2861
- const [, cs] = value.match(regColorSpace) as MatchedRegExp;
2862
- if (REG_CS_HUE.test(cs)) {
2863
- [, colorSpace, hueArc] = cs.match(REG_CS_HUE) as MatchedRegExp;
2864
- } else {
2865
- colorSpace = cs;
2866
- }
2867
- if (nestedItems.length === 2) {
2868
- let [itemA, itemB] = nestedItems as [string, string];
2869
- itemA = itemA.replace(/(?=[()])/g, '\\');
2870
- itemB = itemB.replace(/(?=[()])/g, '\\');
2871
- const regA = new RegExp(`(${itemA})(?:\\s+(${PCT}))?`);
2872
- const regB = new RegExp(`(${itemB})(?:\\s+(${PCT}))?`);
2873
- [, colorA, pctA] = value.match(regA) as MatchedRegExp;
2874
- [, colorB, pctB] = value.match(regB) as MatchedRegExp;
2875
- } else {
2876
- let [item] = nestedItems as [string];
2877
- item = item.replace(/(?=[()])/g, '\\');
2878
- const itemPart = `${item}(?:\\s+${PCT})?`;
2879
- const itemPartCapt = `(${item})(?:\\s+(${PCT}))?`;
2880
- const regItemPart = new RegExp(`^${itemPartCapt}$`);
2881
- const regLastItem = new RegExp(`${itemPartCapt}\\s*\\)$`);
2882
- const regColorPart = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\s+(${PCT}))?$`);
2883
- // item is at the end
2884
- if (regLastItem.test(value)) {
2885
- const reg = new RegExp(
2886
- `(${SYN_MIX_PART})\\s*,\\s*(${itemPart})\\s*\\)$`
2887
- );
2888
- const [, colorPartA, colorPartB] = value.match(reg) as MatchedRegExp;
2889
- [, colorA, pctA] = colorPartA.match(regColorPart) as MatchedRegExp;
2890
- [, colorB, pctB] = colorPartB.match(regItemPart) as MatchedRegExp;
2891
- } else {
2892
- const reg = new RegExp(
2893
- `(${itemPart})\\s*,\\s*(${SYN_MIX_PART})\\s*\\)$`
2894
- );
2895
- const [, colorPartA, colorPartB] = value.match(reg) as MatchedRegExp;
2896
- [, colorA, pctA] = colorPartA.match(regItemPart) as MatchedRegExp;
2897
- [, colorB, pctB] = colorPartB.match(regColorPart) as MatchedRegExp;
2898
- }
2899
- }
2900
- } else {
2901
- const [, cs, colorPartA, colorPartB] = value.match(
2902
- REG_MIX_CAPT
2903
- ) as MatchedRegExp;
2904
- const reg = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\s+(${PCT}))?$`);
2905
- [, colorA, pctA] = colorPartA.match(reg) as MatchedRegExp;
2906
- [, colorB, pctB] = colorPartB.match(reg) as MatchedRegExp;
2907
- if (REG_CS_HUE.test(cs)) {
2908
- [, colorSpace, hueArc] = cs.match(REG_CS_HUE) as MatchedRegExp;
2909
- } else {
2910
- colorSpace = cs;
2911
- }
2912
- }
2913
- // normalize percentages and set multipler
2914
- let pA, pB, m;
2915
- if (pctA && pctB) {
2916
- const p1 = parseFloat(pctA) / MAX_PCT;
2917
- const p2 = parseFloat(pctB) / MAX_PCT;
2918
- if (p1 < 0 || p1 > 1 || p2 < 0 || p2 > 1) {
2919
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
2920
- return res;
2921
- }
2922
- const factor = p1 + p2;
2923
- if (factor === 0) {
2924
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
2925
- return res;
2926
- }
2927
- pA = p1 / factor;
2928
- pB = p2 / factor;
2929
- m = factor < 1 ? factor : 1;
2930
- } else {
2931
- if (pctA) {
2932
- pA = parseFloat(pctA) / MAX_PCT;
2933
- if (pA < 0 || pA > 1) {
2934
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
2935
- return res;
2936
- }
2937
- pB = 1 - pA;
2938
- } else if (pctB) {
2939
- pB = parseFloat(pctB) / MAX_PCT;
2940
- if (pB < 0 || pB > 1) {
2941
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
2942
- return res;
2943
- }
2944
- pA = 1 - pB;
2945
- } else {
2946
- pA = HALF;
2947
- pB = HALF;
2948
- }
2949
- m = 1;
2950
- }
2951
- if (colorSpace === 'xyz') {
2952
- colorSpace = 'xyz-d65';
2953
- }
2954
- // specified value
2955
- if (format === VAL_SPEC) {
2956
- let valueA = '';
2957
- let valueB = '';
2958
- if (colorA.startsWith(FN_MIX)) {
2959
- valueA = colorA;
2960
- } else if (colorA.startsWith(FN_COLOR)) {
2961
- const [cs, v1, v2, v3, v4] = parseColorFunc(
2962
- colorA,
2963
- opt
2964
- ) as SpecifiedColorChannels;
2965
- if (v4 === 1) {
2966
- valueA = `color(${cs} ${v1} ${v2} ${v3})`;
2967
- } else {
2968
- valueA = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;
2969
- }
2970
- } else {
2971
- const val = parseColorValue(colorA, opt);
2972
- if (Array.isArray(val)) {
2973
- const [cs, v1, v2, v3, v4] = val;
2974
- if (v4 === 1) {
2975
- if (cs === 'rgb') {
2976
- valueA = `${cs}(${v1}, ${v2}, ${v3})`;
2977
- } else {
2978
- valueA = `${cs}(${v1} ${v2} ${v3})`;
2979
- }
2980
- } else if (cs === 'rgb') {
2981
- valueA = `${cs}a(${v1}, ${v2}, ${v3}, ${v4})`;
2982
- } else {
2983
- valueA = `${cs}(${v1} ${v2} ${v3} / ${v4})`;
2984
- }
2985
- } else {
2986
- if (!isString(val) || !val) {
2987
- setCache(cacheKey, '');
2988
- return '';
2989
- }
2990
- valueA = val;
2991
- }
2992
- }
2993
- if (colorB.startsWith(FN_MIX)) {
2994
- valueB = colorB;
2995
- } else if (colorB.startsWith(FN_COLOR)) {
2996
- const [cs, v1, v2, v3, v4] = parseColorFunc(
2997
- colorB,
2998
- opt
2999
- ) as SpecifiedColorChannels;
3000
- if (v4 === 1) {
3001
- valueB = `color(${cs} ${v1} ${v2} ${v3})`;
3002
- } else {
3003
- valueB = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;
3004
- }
3005
- } else {
3006
- const val = parseColorValue(colorB, opt);
3007
- if (Array.isArray(val)) {
3008
- const [cs, v1, v2, v3, v4] = val;
3009
- if (v4 === 1) {
3010
- if (cs === 'rgb') {
3011
- valueB = `${cs}(${v1}, ${v2}, ${v3})`;
3012
- } else {
3013
- valueB = `${cs}(${v1} ${v2} ${v3})`;
3014
- }
3015
- } else if (cs === 'rgb') {
3016
- valueB = `${cs}a(${v1}, ${v2}, ${v3}, ${v4})`;
3017
- } else {
3018
- valueB = `${cs}(${v1} ${v2} ${v3} / ${v4})`;
3019
- }
3020
- } else {
3021
- if (!isString(val) || !val) {
3022
- setCache(cacheKey, '');
3023
- return '';
3024
- }
3025
- valueB = val;
3026
- }
3027
- }
3028
- if (pctA && pctB) {
3029
- valueA += ` ${parseFloat(pctA)}%`;
3030
- valueB += ` ${parseFloat(pctB)}%`;
3031
- } else if (pctA) {
3032
- const pA = parseFloat(pctA);
3033
- if (pA !== MAX_PCT * HALF) {
3034
- valueA += ` ${pA}%`;
3035
- }
3036
- } else if (pctB) {
3037
- const pA = MAX_PCT - parseFloat(pctB);
3038
- if (pA !== MAX_PCT * HALF) {
3039
- valueA += ` ${pA}%`;
3040
- }
3041
- }
3042
- if (hueArc) {
3043
- const res = `color-mix(in ${colorSpace} ${hueArc} hue, ${valueA}, ${valueB})`;
3044
- setCache(cacheKey, res);
3045
- return res;
3046
- } else {
3047
- const res = `color-mix(in ${colorSpace}, ${valueA}, ${valueB})`;
3048
- setCache(cacheKey, res);
3049
- return res;
3050
- }
3051
- }
3052
- let r = 0;
3053
- let g = 0;
3054
- let b = 0;
3055
- let alpha = 0;
3056
- // in srgb, srgb-linear
3057
- if (/^srgb(?:-linear)?$/.test(colorSpace)) {
3058
- let rgbA, rgbB;
3059
- if (colorSpace === 'srgb') {
3060
- if (REG_CURRENT.test(colorA)) {
3061
- rgbA = [NONE, NONE, NONE, NONE];
3062
- } else {
3063
- rgbA = convertColorToRgb(colorA, {
3064
- colorSpace,
3065
- format: VAL_MIX
3066
- });
3067
- }
3068
- if (REG_CURRENT.test(colorB)) {
3069
- rgbB = [NONE, NONE, NONE, NONE];
3070
- } else {
3071
- rgbB = convertColorToRgb(colorB, {
3072
- colorSpace,
3073
- format: VAL_MIX
3074
- });
3075
- }
3076
- } else {
3077
- if (REG_CURRENT.test(colorA)) {
3078
- rgbA = [NONE, NONE, NONE, NONE];
3079
- } else {
3080
- rgbA = convertColorToLinearRgb(colorA, {
3081
- colorSpace,
3082
- format: VAL_MIX
3083
- });
3084
- }
3085
- if (REG_CURRENT.test(colorB)) {
3086
- rgbB = [NONE, NONE, NONE, NONE];
3087
- } else {
3088
- rgbB = convertColorToLinearRgb(colorB, {
3089
- colorSpace,
3090
- format: VAL_MIX
3091
- });
3092
- }
3093
- }
3094
- if (rgbA instanceof NullObject || rgbB instanceof NullObject) {
3095
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
3096
- return res;
3097
- }
3098
- const [rrA, ggA, bbA, aaA] = rgbA as NumStrColorChannels;
3099
- const [rrB, ggB, bbB, aaB] = rgbB as NumStrColorChannels;
3100
- const rNone = rrA === NONE && rrB === NONE;
3101
- const gNone = ggA === NONE && ggB === NONE;
3102
- const bNone = bbA === NONE && bbB === NONE;
3103
- const alphaNone = aaA === NONE && aaB === NONE;
3104
- const [[rA, gA, bA, alphaA], [rB, gB, bB, alphaB]] =
3105
- normalizeColorComponents(
3106
- [rrA, ggA, bbA, aaA],
3107
- [rrB, ggB, bbB, aaB],
3108
- true
3109
- );
3110
- const factorA = alphaA * pA;
3111
- const factorB = alphaB * pB;
3112
- alpha = factorA + factorB;
3113
- if (alpha === 0) {
3114
- r = rA * pA + rB * pB;
3115
- g = gA * pA + gB * pB;
3116
- b = bA * pA + bB * pB;
3117
- } else {
3118
- r = (rA * factorA + rB * factorB) / alpha;
3119
- g = (gA * factorA + gB * factorB) / alpha;
3120
- b = (bA * factorA + bB * factorB) / alpha;
3121
- alpha = parseFloat(alpha.toFixed(3));
3122
- }
3123
- if (format === VAL_COMP) {
3124
- const res: SpecifiedColorChannels = [
3125
- colorSpace,
3126
- rNone ? NONE : roundToPrecision(r, HEX),
3127
- gNone ? NONE : roundToPrecision(g, HEX),
3128
- bNone ? NONE : roundToPrecision(b, HEX),
3129
- alphaNone ? NONE : alpha * m
3130
- ];
3131
- setCache(cacheKey, res);
3132
- return res;
3133
- }
3134
- r *= MAX_RGB;
3135
- g *= MAX_RGB;
3136
- b *= MAX_RGB;
3137
- // in xyz, xyz-d65, xyz-d50
3138
- } else if (REG_CS_XYZ.test(colorSpace)) {
3139
- let xyzA, xyzB;
3140
- if (REG_CURRENT.test(colorA)) {
3141
- xyzA = [NONE, NONE, NONE, NONE];
3142
- } else {
3143
- xyzA = convertColorToXyz(colorA, {
3144
- colorSpace,
3145
- d50: colorSpace === 'xyz-d50',
3146
- format: VAL_MIX
3147
- });
3148
- }
3149
- if (REG_CURRENT.test(colorB)) {
3150
- xyzB = [NONE, NONE, NONE, NONE];
3151
- } else {
3152
- xyzB = convertColorToXyz(colorB, {
3153
- colorSpace,
3154
- d50: colorSpace === 'xyz-d50',
3155
- format: VAL_MIX
3156
- });
3157
- }
3158
- if (xyzA instanceof NullObject || xyzB instanceof NullObject) {
3159
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
3160
- return res;
3161
- }
3162
- const [xxA, yyA, zzA, aaA] = xyzA;
3163
- const [xxB, yyB, zzB, aaB] = xyzB;
3164
- const xNone = xxA === NONE && xxB === NONE;
3165
- const yNone = yyA === NONE && yyB === NONE;
3166
- const zNone = zzA === NONE && zzB === NONE;
3167
- const alphaNone = aaA === NONE && aaB === NONE;
3168
- const [[xA, yA, zA, alphaA], [xB, yB, zB, alphaB]] =
3169
- normalizeColorComponents(
3170
- [xxA, yyA, zzA, aaA],
3171
- [xxB, yyB, zzB, aaB],
3172
- true
3173
- );
3174
- const factorA = alphaA * pA;
3175
- const factorB = alphaB * pB;
3176
- alpha = factorA + factorB;
3177
- let x, y, z;
3178
- if (alpha === 0) {
3179
- x = xA * pA + xB * pB;
3180
- y = yA * pA + yB * pB;
3181
- z = zA * pA + zB * pB;
3182
- } else {
3183
- x = (xA * factorA + xB * factorB) / alpha;
3184
- y = (yA * factorA + yB * factorB) / alpha;
3185
- z = (zA * factorA + zB * factorB) / alpha;
3186
- alpha = parseFloat(alpha.toFixed(3));
3187
- }
3188
- if (format === VAL_COMP) {
3189
- const res: SpecifiedColorChannels = [
3190
- colorSpace,
3191
- xNone ? NONE : roundToPrecision(x, HEX),
3192
- yNone ? NONE : roundToPrecision(y, HEX),
3193
- zNone ? NONE : roundToPrecision(z, HEX),
3194
- alphaNone ? NONE : alpha * m
3195
- ];
3196
- setCache(cacheKey, res);
3197
- return res;
3198
- }
3199
- if (colorSpace === 'xyz-d50') {
3200
- [r, g, b] = transformXyzD50ToRgb([x, y, z], true);
3201
- } else {
3202
- [r, g, b] = transformXyzToRgb([x, y, z], true);
3203
- }
3204
- // in hsl, hwb
3205
- } else if (/^h(?:sl|wb)$/.test(colorSpace)) {
3206
- let hslA, hslB;
3207
- if (colorSpace === 'hsl') {
3208
- if (REG_CURRENT.test(colorA)) {
3209
- hslA = [NONE, NONE, NONE, NONE];
3210
- } else {
3211
- hslA = convertColorToHsl(colorA, {
3212
- colorSpace,
3213
- format: VAL_MIX
3214
- });
3215
- }
3216
- if (REG_CURRENT.test(colorB)) {
3217
- hslB = [NONE, NONE, NONE, NONE];
3218
- } else {
3219
- hslB = convertColorToHsl(colorB, {
3220
- colorSpace,
3221
- format: VAL_MIX
3222
- });
3223
- }
3224
- } else {
3225
- if (REG_CURRENT.test(colorA)) {
3226
- hslA = [NONE, NONE, NONE, NONE];
3227
- } else {
3228
- hslA = convertColorToHwb(colorA, {
3229
- colorSpace,
3230
- format: VAL_MIX
3231
- });
3232
- }
3233
- if (REG_CURRENT.test(colorB)) {
3234
- hslB = [NONE, NONE, NONE, NONE];
3235
- } else {
3236
- hslB = convertColorToHwb(colorB, {
3237
- colorSpace,
3238
- format: VAL_MIX
3239
- });
3240
- }
3241
- }
3242
- if (hslA instanceof NullObject || hslB instanceof NullObject) {
3243
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
3244
- return res;
3245
- }
3246
- const [hhA, ssA, llA, aaA] = hslA;
3247
- const [hhB, ssB, llB, aaB] = hslB;
3248
- const alphaNone = aaA === NONE && aaB === NONE;
3249
- let [[hA, sA, lA, alphaA], [hB, sB, lB, alphaB]] = normalizeColorComponents(
3250
- [hhA, ssA, llA, aaA],
3251
- [hhB, ssB, llB, aaB],
3252
- true
3253
- );
3254
- if (hueArc) {
3255
- [hA, hB] = interpolateHue(hA, hB, hueArc);
3256
- }
3257
- const factorA = alphaA * pA;
3258
- const factorB = alphaB * pB;
3259
- alpha = factorA + factorB;
3260
- const h = (hA * pA + hB * pB) % DEG;
3261
- let s, l;
3262
- if (alpha === 0) {
3263
- s = sA * pA + sB * pB;
3264
- l = lA * pA + lB * pB;
3265
- } else {
3266
- s = (sA * factorA + sB * factorB) / alpha;
3267
- l = (lA * factorA + lB * factorB) / alpha;
3268
- alpha = parseFloat(alpha.toFixed(3));
3269
- }
3270
- [r, g, b] = convertColorToRgb(
3271
- `${colorSpace}(${h} ${s} ${l})`
3272
- ) as ColorChannels;
3273
- if (format === VAL_COMP) {
3274
- const res: SpecifiedColorChannels = [
3275
- 'srgb',
3276
- roundToPrecision(r / MAX_RGB, HEX),
3277
- roundToPrecision(g / MAX_RGB, HEX),
3278
- roundToPrecision(b / MAX_RGB, HEX),
3279
- alphaNone ? NONE : alpha * m
3280
- ];
3281
- setCache(cacheKey, res);
3282
- return res;
3283
- }
3284
- // in lch, oklch
3285
- } else if (/^(?:ok)?lch$/.test(colorSpace)) {
3286
- let lchA, lchB;
3287
- if (colorSpace === 'lch') {
3288
- if (REG_CURRENT.test(colorA)) {
3289
- lchA = [NONE, NONE, NONE, NONE];
3290
- } else {
3291
- lchA = convertColorToLch(colorA, {
3292
- colorSpace,
3293
- format: VAL_MIX
3294
- });
3295
- }
3296
- if (REG_CURRENT.test(colorB)) {
3297
- lchB = [NONE, NONE, NONE, NONE];
3298
- } else {
3299
- lchB = convertColorToLch(colorB, {
3300
- colorSpace,
3301
- format: VAL_MIX
3302
- });
3303
- }
3304
- } else {
3305
- if (REG_CURRENT.test(colorA)) {
3306
- lchA = [NONE, NONE, NONE, NONE];
3307
- } else {
3308
- lchA = convertColorToOklch(colorA, {
3309
- colorSpace,
3310
- format: VAL_MIX
3311
- });
3312
- }
3313
- if (REG_CURRENT.test(colorB)) {
3314
- lchB = [NONE, NONE, NONE, NONE];
3315
- } else {
3316
- lchB = convertColorToOklch(colorB, {
3317
- colorSpace,
3318
- format: VAL_MIX
3319
- });
3320
- }
3321
- }
3322
- if (lchA instanceof NullObject || lchB instanceof NullObject) {
3323
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
3324
- return res;
3325
- }
3326
- const [llA, ccA, hhA, aaA] = lchA;
3327
- const [llB, ccB, hhB, aaB] = lchB;
3328
- const lNone = llA === NONE && llB === NONE;
3329
- const cNone = ccA === NONE && ccB === NONE;
3330
- const hNone = hhA === NONE && hhB === NONE;
3331
- const alphaNone = aaA === NONE && aaB === NONE;
3332
- let [[lA, cA, hA, alphaA], [lB, cB, hB, alphaB]] = normalizeColorComponents(
3333
- [llA, ccA, hhA, aaA],
3334
- [llB, ccB, hhB, aaB],
3335
- true
3336
- );
3337
- if (hueArc) {
3338
- [hA, hB] = interpolateHue(hA, hB, hueArc);
3339
- }
3340
- const factorA = alphaA * pA;
3341
- const factorB = alphaB * pB;
3342
- alpha = factorA + factorB;
3343
- const h = (hA * pA + hB * pB) % DEG;
3344
- let l, c;
3345
- if (alpha === 0) {
3346
- l = lA * pA + lB * pB;
3347
- c = cA * pA + cB * pB;
3348
- } else {
3349
- l = (lA * factorA + lB * factorB) / alpha;
3350
- c = (cA * factorA + cB * factorB) / alpha;
3351
- alpha = parseFloat(alpha.toFixed(3));
3352
- }
3353
- if (format === VAL_COMP) {
3354
- const res: SpecifiedColorChannels = [
3355
- colorSpace,
3356
- lNone ? NONE : roundToPrecision(l, HEX),
3357
- cNone ? NONE : roundToPrecision(c, HEX),
3358
- hNone ? NONE : roundToPrecision(h, HEX),
3359
- alphaNone ? NONE : alpha * m
3360
- ];
3361
- setCache(cacheKey, res);
3362
- return res;
3363
- }
3364
- [, r, g, b] = resolveColorValue(
3365
- `${colorSpace}(${l} ${c} ${h})`
3366
- ) as ComputedColorChannels;
3367
- // in lab, oklab
3368
- } else {
3369
- let labA, labB;
3370
- if (colorSpace === 'lab') {
3371
- if (REG_CURRENT.test(colorA)) {
3372
- labA = [NONE, NONE, NONE, NONE];
3373
- } else {
3374
- labA = convertColorToLab(colorA, {
3375
- colorSpace,
3376
- format: VAL_MIX
3377
- });
3378
- }
3379
- if (REG_CURRENT.test(colorB)) {
3380
- labB = [NONE, NONE, NONE, NONE];
3381
- } else {
3382
- labB = convertColorToLab(colorB, {
3383
- colorSpace,
3384
- format: VAL_MIX
3385
- });
3386
- }
3387
- } else {
3388
- if (REG_CURRENT.test(colorA)) {
3389
- labA = [NONE, NONE, NONE, NONE];
3390
- } else {
3391
- labA = convertColorToOklab(colorA, {
3392
- colorSpace,
3393
- format: VAL_MIX
3394
- });
3395
- }
3396
- if (REG_CURRENT.test(colorB)) {
3397
- labB = [NONE, NONE, NONE, NONE];
3398
- } else {
3399
- labB = convertColorToOklab(colorB, {
3400
- colorSpace,
3401
- format: VAL_MIX
3402
- });
3403
- }
3404
- }
3405
- if (labA instanceof NullObject || labB instanceof NullObject) {
3406
- const res = cacheInvalidColorValue(cacheKey, format, nullable);
3407
- return res;
3408
- }
3409
- const [llA, aaA, bbA, alA] = labA;
3410
- const [llB, aaB, bbB, alB] = labB;
3411
- const lNone = llA === NONE && llB === NONE;
3412
- const aNone = aaA === NONE && aaB === NONE;
3413
- const bNone = bbA === NONE && bbB === NONE;
3414
- const alphaNone = alA === NONE && alB === NONE;
3415
- const [[lA, aA, bA, alphaA], [lB, aB, bB, alphaB]] =
3416
- normalizeColorComponents(
3417
- [llA, aaA, bbA, alA],
3418
- [llB, aaB, bbB, alB],
3419
- true
3420
- );
3421
- const factorA = alphaA * pA;
3422
- const factorB = alphaB * pB;
3423
- alpha = factorA + factorB;
3424
- let l, aO, bO;
3425
- if (alpha === 0) {
3426
- l = lA * pA + lB * pB;
3427
- aO = aA * pA + aB * pB;
3428
- bO = bA * pA + bB * pB;
3429
- } else {
3430
- l = (lA * factorA + lB * factorB) / alpha;
3431
- aO = (aA * factorA + aB * factorB) / alpha;
3432
- bO = (bA * factorA + bB * factorB) / alpha;
3433
- alpha = parseFloat(alpha.toFixed(3));
3434
- }
3435
- if (format === VAL_COMP) {
3436
- const res: SpecifiedColorChannels = [
3437
- colorSpace,
3438
- lNone ? NONE : roundToPrecision(l, HEX),
3439
- aNone ? NONE : roundToPrecision(aO, HEX),
3440
- bNone ? NONE : roundToPrecision(bO, HEX),
3441
- alphaNone ? NONE : alpha * m
3442
- ];
3443
- setCache(cacheKey, res);
3444
- return res;
3445
- }
3446
- [, r, g, b] = resolveColorValue(
3447
- `${colorSpace}(${l} ${aO} ${bO})`
3448
- ) as ComputedColorChannels;
3449
- }
3450
- const res: SpecifiedColorChannels = [
3451
- 'rgb',
3452
- Math.round(r),
3453
- Math.round(g),
3454
- Math.round(b),
3455
- parseFloat((alpha * m).toFixed(3))
3456
- ];
3457
- setCache(cacheKey, res);
3458
- return res;
3459
- };