tiny-essentials 1.23.2 → 1.24.1

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 (454) hide show
  1. package/.github/workflows/node.js.yml +2 -2
  2. package/README.md +6 -2
  3. package/changelog/1/23/2.md +2 -0
  4. package/changelog/1/24/0.md +10 -0
  5. package/changelog/1/24/1.md +12 -0
  6. package/dist/v1/TinyBasicsEs.min.js +1 -1
  7. package/dist/v1/TinyColorValidator.min.js +1 -0
  8. package/dist/v1/TinyDragger.min.js +1 -1
  9. package/dist/v1/TinyEssentials.min.js +1 -1
  10. package/dist/v1/TinyHtml.min.js +1 -1
  11. package/dist/v1/TinySmartScroller.min.js +1 -1
  12. package/dist/v1/TinyUploadClicker.min.js +1 -1
  13. package/dist/v1/basics/array.cjs +28 -0
  14. package/dist/v1/basics/array.d.mts +16 -0
  15. package/dist/v1/basics/array.mjs +27 -0
  16. package/dist/v1/basics/index.cjs +2 -4
  17. package/dist/v1/basics/index.d.mts +2 -2
  18. package/dist/v1/basics/index.mjs +2 -4
  19. package/dist/v1/basics/text.cjs +33 -0
  20. package/dist/v1/basics/text.d.mts +15 -0
  21. package/dist/v1/basics/text.mjs +28 -0
  22. package/dist/v1/build/TinyColorValidator.cjs +7 -0
  23. package/dist/v1/build/TinyColorValidator.d.mts +3 -0
  24. package/dist/v1/build/TinyColorValidator.mjs +2 -0
  25. package/dist/v1/build/TinyLevelUp.cjs +2 -2
  26. package/dist/v1/build/TinyLevelUp.d.mts +1 -1
  27. package/dist/v1/build/TinyLevelUp.mjs +1 -1
  28. package/dist/v1/index.cjs +6 -6
  29. package/dist/v1/index.d.mts +5 -4
  30. package/dist/v1/index.mjs +8 -6
  31. package/dist/v1/libs/TinyColorValidator.cjs +907 -0
  32. package/dist/v1/libs/TinyColorValidator.d.mts +452 -0
  33. package/dist/v1/libs/TinyColorValidator.mjs +853 -0
  34. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.cjs +220 -0
  35. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.d.mts +98 -0
  36. package/dist/v1/libs/TinyHtml/TinyHtmlAnchor.mjs +207 -0
  37. package/dist/v1/libs/TinyHtml/TinyHtmlButton.cjs +317 -0
  38. package/dist/v1/libs/TinyHtml/TinyHtmlButton.d.mts +150 -0
  39. package/dist/v1/libs/TinyHtml/TinyHtmlButton.mjs +290 -0
  40. package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.cjs +48 -0
  41. package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.d.mts +36 -0
  42. package/dist/v1/libs/TinyHtml/TinyHtmlCanvas.mjs +44 -0
  43. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.cjs +102 -0
  44. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.d.mts +65 -0
  45. package/dist/v1/libs/TinyHtml/TinyHtmlDatalist.mjs +91 -0
  46. package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.cjs +80 -0
  47. package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.d.mts +57 -0
  48. package/dist/v1/libs/TinyHtml/TinyHtmlEmbed.mjs +75 -0
  49. package/dist/v1/libs/TinyHtml/TinyHtmlForm.cjs +244 -0
  50. package/dist/v1/libs/TinyHtml/TinyHtmlForm.d.mts +129 -0
  51. package/dist/v1/libs/TinyHtml/TinyHtmlForm.mjs +228 -0
  52. package/dist/v1/libs/TinyHtml/TinyHtmlIcon.cjs +38 -0
  53. package/dist/v1/libs/TinyHtml/TinyHtmlIcon.d.mts +24 -0
  54. package/dist/v1/libs/TinyHtml/TinyHtmlIcon.mjs +33 -0
  55. package/dist/v1/libs/TinyHtml/TinyHtmlIframe.cjs +222 -0
  56. package/dist/v1/libs/TinyHtml/TinyHtmlIframe.d.mts +108 -0
  57. package/dist/v1/libs/TinyHtml/TinyHtmlIframe.mjs +212 -0
  58. package/dist/v1/libs/TinyHtml/TinyHtmlImage.cjs +286 -0
  59. package/dist/v1/libs/TinyHtml/TinyHtmlImage.d.mts +125 -0
  60. package/dist/v1/libs/TinyHtml/TinyHtmlImage.mjs +250 -0
  61. package/dist/v1/libs/TinyHtml/TinyHtmlInput.cjs +154 -0
  62. package/dist/v1/libs/TinyHtml/TinyHtmlInput.d.mts +76 -0
  63. package/dist/v1/libs/TinyHtml/TinyHtmlInput.mjs +134 -0
  64. package/dist/v1/libs/TinyHtml/TinyHtmlLink.cjs +282 -0
  65. package/dist/v1/libs/TinyHtml/TinyHtmlLink.d.mts +128 -0
  66. package/dist/v1/libs/TinyHtml/TinyHtmlLink.mjs +264 -0
  67. package/dist/v1/libs/TinyHtml/TinyHtmlMedia.cjs +358 -0
  68. package/dist/v1/libs/TinyHtml/TinyHtmlMedia.d.mts +168 -0
  69. package/dist/v1/libs/TinyHtml/TinyHtmlMedia.mjs +308 -0
  70. package/dist/v1/libs/TinyHtml/TinyHtmlScript.cjs +226 -0
  71. package/dist/v1/libs/TinyHtml/TinyHtmlScript.d.mts +99 -0
  72. package/dist/v1/libs/TinyHtml/TinyHtmlScript.mjs +209 -0
  73. package/dist/v1/libs/TinyHtml/TinyHtmlSelect.cjs +267 -0
  74. package/dist/v1/libs/TinyHtml/TinyHtmlSelect.d.mts +146 -0
  75. package/dist/v1/libs/TinyHtml/TinyHtmlSelect.mjs +251 -0
  76. package/dist/v1/libs/TinyHtml/TinyHtmlStyle.cjs +110 -0
  77. package/dist/v1/libs/TinyHtml/TinyHtmlStyle.d.mts +57 -0
  78. package/dist/v1/libs/TinyHtml/TinyHtmlStyle.mjs +108 -0
  79. package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.cjs +209 -0
  80. package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.d.mts +101 -0
  81. package/dist/v1/libs/TinyHtml/TinyHtmlTemplate.mjs +189 -0
  82. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.cjs +331 -0
  83. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.d.mts +139 -0
  84. package/dist/v1/libs/TinyHtml/TinyHtmlTextarea.mjs +299 -0
  85. package/dist/v1/libs/TinyHtml/index.cjs +202 -0
  86. package/dist/v1/libs/TinyHtml/index.d.mts +82 -0
  87. package/dist/v1/libs/TinyHtml/index.mjs +185 -0
  88. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.cjs +121 -0
  89. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.d.mts +67 -0
  90. package/dist/v1/libs/TinyHtml/input/TinyHtmlColorInput.mjs +99 -0
  91. package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.cjs +109 -0
  92. package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.d.mts +63 -0
  93. package/dist/v1/libs/TinyHtml/input/TinyHtmlFileInput.mjs +92 -0
  94. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.cjs +101 -0
  95. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.d.mts +54 -0
  96. package/dist/v1/libs/TinyHtml/input/TinyHtmlHiddenInput.mjs +82 -0
  97. package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.cjs +181 -0
  98. package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.d.mts +97 -0
  99. package/dist/v1/libs/TinyHtml/input/TinyHtmlImageInput.mjs +160 -0
  100. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.cjs +90 -0
  101. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.d.mts +54 -0
  102. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlButtonInput.mjs +69 -0
  103. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.cjs +59 -0
  104. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.d.mts +43 -0
  105. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlResetInput.mjs +45 -0
  106. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.cjs +141 -0
  107. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.d.mts +74 -0
  108. package/dist/v1/libs/TinyHtml/input/button/TinyHtmlSubmitInput.mjs +114 -0
  109. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.cjs +103 -0
  110. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.d.mts +61 -0
  111. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlCheckboxInput.mjs +85 -0
  112. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.cjs +115 -0
  113. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.d.mts +56 -0
  114. package/dist/v1/libs/TinyHtml/input/check/TinyHtmlRadioInput.mjs +94 -0
  115. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.cjs +172 -0
  116. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.d.mts +74 -0
  117. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateInput.mjs +140 -0
  118. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.cjs +145 -0
  119. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.d.mts +77 -0
  120. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlDateTimeInput.mjs +121 -0
  121. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.cjs +146 -0
  122. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.d.mts +74 -0
  123. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlMonthInput.mjs +120 -0
  124. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.cjs +151 -0
  125. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.d.mts +75 -0
  126. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlTimeInput.mjs +128 -0
  127. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.cjs +150 -0
  128. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.d.mts +74 -0
  129. package/dist/v1/libs/TinyHtml/input/date/TinyHtmlWeekInput.mjs +122 -0
  130. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.cjs +134 -0
  131. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.d.mts +74 -0
  132. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlNumberInput.mjs +110 -0
  133. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.cjs +133 -0
  134. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.d.mts +75 -0
  135. package/dist/v1/libs/TinyHtml/input/number/TinyHtmlRangeInput.mjs +111 -0
  136. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.cjs +179 -0
  137. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.d.mts +87 -0
  138. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlEmailInput.mjs +151 -0
  139. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.cjs +126 -0
  140. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.d.mts +70 -0
  141. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlPasswordInput.mjs +104 -0
  142. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.cjs +177 -0
  143. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.d.mts +91 -0
  144. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlSearchInput.mjs +153 -0
  145. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.cjs +170 -0
  146. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.d.mts +91 -0
  147. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTelInput.mjs +143 -0
  148. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.cjs +173 -0
  149. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.d.mts +89 -0
  150. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlTextInput.mjs +150 -0
  151. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.cjs +166 -0
  152. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.d.mts +81 -0
  153. package/dist/v1/libs/TinyHtml/input/text/TinyHtmlUrlInput.mjs +142 -0
  154. package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.cjs +135 -0
  155. package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.d.mts +47 -0
  156. package/dist/v1/libs/TinyHtml/media/TinyHtmlAudio.mjs +122 -0
  157. package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.cjs +100 -0
  158. package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.d.mts +62 -0
  159. package/dist/v1/libs/TinyHtml/media/TinyHtmlObject.mjs +94 -0
  160. package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.cjs +159 -0
  161. package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.d.mts +77 -0
  162. package/dist/v1/libs/TinyHtml/media/TinyHtmlSource.mjs +136 -0
  163. package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.cjs +193 -0
  164. package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.d.mts +91 -0
  165. package/dist/v1/libs/TinyHtml/media/TinyHtmlVideo.mjs +167 -0
  166. package/dist/v1/libs/TinyHtml.cjs +260 -3
  167. package/dist/v1/libs/TinyHtml.d.mts +196 -5
  168. package/dist/v1/libs/TinyHtml.mjs +238 -3
  169. package/dist/{legacy/libs/userLevel.d.mts → v1/libs/TinyLevelUp.d.mts} +1 -1
  170. package/dist/v1/libs/TinyUploadClicker.cjs +1 -0
  171. package/docs/v1/README.md +1 -0
  172. package/docs/v1/libs/TinyColorValidator.md +532 -0
  173. package/docs/v1/libs/TinyHtml.md +4 -4
  174. package/package.json +15 -24
  175. package/dist/_virtual/_commonjsHelpers.cjs +0 -7
  176. package/dist/_virtual/common.cjs +0 -5
  177. package/dist/_virtual/index.cjs +0 -9
  178. package/dist/_virtual/index2.cjs +0 -5
  179. package/dist/_virtual/trace.cjs +0 -5
  180. package/dist/legacy/crypto/decrypt.cjs +0 -59
  181. package/dist/legacy/crypto/decrypt.d.mts +0 -20
  182. package/dist/legacy/crypto/decrypt.mjs +0 -49
  183. package/dist/legacy/crypto/default.cjs +0 -23
  184. package/dist/legacy/crypto/default.d.mts +0 -36
  185. package/dist/legacy/crypto/default.mjs +0 -19
  186. package/dist/legacy/crypto/encrypt.cjs +0 -55
  187. package/dist/legacy/crypto/encrypt.d.mts +0 -21
  188. package/dist/legacy/crypto/encrypt.mjs +0 -47
  189. package/dist/legacy/crypto/index.cjs +0 -11
  190. package/dist/legacy/crypto/index.d.mts +0 -5
  191. package/dist/legacy/crypto/index.mjs +0 -6
  192. package/dist/legacy/firebase/cookieSession.cjs +0 -123
  193. package/dist/legacy/firebase/cookieSession.d.mts +0 -57
  194. package/dist/legacy/firebase/cookieSession.mjs +0 -115
  195. package/dist/legacy/firebase/database/index.cjs +0 -14
  196. package/dist/legacy/firebase/database/index.d.mts +0 -8
  197. package/dist/legacy/firebase/database/index.mjs +0 -8
  198. package/dist/legacy/firebase/database/presence.cjs +0 -137
  199. package/dist/legacy/firebase/database/presence.d.mts +0 -13
  200. package/dist/legacy/firebase/database/presence.mjs +0 -115
  201. package/dist/legacy/firebase/database/saveAsync.cjs +0 -149
  202. package/dist/legacy/firebase/database/saveAsync.d.mts +0 -55
  203. package/dist/legacy/firebase/database/saveAsync.mjs +0 -148
  204. package/dist/legacy/firebase/databaseEscape.cjs +0 -45
  205. package/dist/legacy/firebase/databaseEscape.d.mts +0 -12
  206. package/dist/legacy/firebase/databaseEscape.mjs +0 -38
  207. package/dist/legacy/firebase/databaseLogger.cjs +0 -261
  208. package/dist/legacy/firebase/databaseLogger.d.mts +0 -8
  209. package/dist/legacy/firebase/databaseLogger.mjs +0 -235
  210. package/dist/legacy/firebase/discord/api/addGuildMember.cjs +0 -74
  211. package/dist/legacy/firebase/discord/api/addGuildMember.d.mts +0 -39
  212. package/dist/legacy/firebase/discord/api/addGuildMember.mjs +0 -65
  213. package/dist/legacy/firebase/discord/api/getGuildWidget.cjs +0 -50
  214. package/dist/legacy/firebase/discord/api/getGuildWidget.d.mts +0 -18
  215. package/dist/legacy/firebase/discord/api/getGuildWidget.mjs +0 -44
  216. package/dist/legacy/firebase/discord/api/getToken.cjs +0 -70
  217. package/dist/legacy/firebase/discord/api/getToken.d.mts +0 -36
  218. package/dist/legacy/firebase/discord/api/getToken.mjs +0 -64
  219. package/dist/legacy/firebase/discord/api/getUser.cjs +0 -61
  220. package/dist/legacy/firebase/discord/api/getUser.d.mts +0 -28
  221. package/dist/legacy/firebase/discord/api/getUser.mjs +0 -55
  222. package/dist/legacy/firebase/discord/api/getUserConnections.cjs +0 -60
  223. package/dist/legacy/firebase/discord/api/getUserConnections.d.mts +0 -27
  224. package/dist/legacy/firebase/discord/api/getUserConnections.mjs +0 -54
  225. package/dist/legacy/firebase/discord/api/getUserGuilds.cjs +0 -59
  226. package/dist/legacy/firebase/discord/api/getUserGuilds.d.mts +0 -26
  227. package/dist/legacy/firebase/discord/api/getUserGuilds.mjs +0 -53
  228. package/dist/legacy/firebase/discord/api/index.cjs +0 -27
  229. package/dist/legacy/firebase/discord/api/index.d.mts +0 -20
  230. package/dist/legacy/firebase/discord/api/index.mjs +0 -21
  231. package/dist/legacy/firebase/discord/api/refreshToken.cjs +0 -80
  232. package/dist/legacy/firebase/discord/api/refreshToken.d.mts +0 -46
  233. package/dist/legacy/firebase/discord/api/refreshToken.mjs +0 -74
  234. package/dist/legacy/firebase/discord/api/revokeToken.cjs +0 -64
  235. package/dist/legacy/firebase/discord/api/revokeToken.d.mts +0 -30
  236. package/dist/legacy/firebase/discord/api/revokeToken.mjs +0 -59
  237. package/dist/legacy/firebase/discord/config.cjs +0 -23
  238. package/dist/legacy/firebase/discord/config.d.mts +0 -28
  239. package/dist/legacy/firebase/discord/config.mjs +0 -18
  240. package/dist/legacy/firebase/discord/firebase_redirect/index.cjs +0 -14
  241. package/dist/legacy/firebase/discord/firebase_redirect/index.d.mts +0 -8
  242. package/dist/legacy/firebase/discord/firebase_redirect/index.mjs +0 -8
  243. package/dist/legacy/firebase/discord/firebase_redirect/login.cjs +0 -112
  244. package/dist/legacy/firebase/discord/firebase_redirect/login.d.mts +0 -5
  245. package/dist/legacy/firebase/discord/firebase_redirect/login.mjs +0 -108
  246. package/dist/legacy/firebase/discord/firebase_redirect/logout.cjs +0 -102
  247. package/dist/legacy/firebase/discord/firebase_redirect/logout.d.mts +0 -5
  248. package/dist/legacy/firebase/discord/firebase_redirect/logout.mjs +0 -98
  249. package/dist/legacy/firebase/discord/get/authURLGenerator.cjs +0 -79
  250. package/dist/legacy/firebase/discord/get/authURLGenerator.d.mts +0 -24
  251. package/dist/legacy/firebase/discord/get/authURLGenerator.mjs +0 -68
  252. package/dist/legacy/firebase/discord/get/cookie-session.cjs +0 -35
  253. package/dist/legacy/firebase/discord/get/cookie-session.d.mts +0 -21
  254. package/dist/legacy/firebase/discord/get/cookie-session.mjs +0 -29
  255. package/dist/legacy/firebase/discord/get/credentials.cjs +0 -26
  256. package/dist/legacy/firebase/discord/get/credentials.d.mts +0 -20
  257. package/dist/legacy/firebase/discord/get/credentials.mjs +0 -21
  258. package/dist/legacy/firebase/discord/get/errorValidator.cjs +0 -63
  259. package/dist/legacy/firebase/discord/get/errorValidator.d.mts +0 -29
  260. package/dist/legacy/firebase/discord/get/errorValidator.mjs +0 -56
  261. package/dist/legacy/firebase/discord/get/index.cjs +0 -20
  262. package/dist/legacy/firebase/discord/get/index.d.mts +0 -14
  263. package/dist/legacy/firebase/discord/get/index.mjs +0 -14
  264. package/dist/legacy/firebase/discord/get/randomAvatar.cjs +0 -40
  265. package/dist/legacy/firebase/discord/get/randomAvatar.d.mts +0 -23
  266. package/dist/legacy/firebase/discord/get/randomAvatar.mjs +0 -31
  267. package/dist/legacy/firebase/discord/http/index.cjs +0 -18
  268. package/dist/legacy/firebase/discord/http/index.d.mts +0 -12
  269. package/dist/legacy/firebase/discord/http/index.mjs +0 -12
  270. package/dist/legacy/firebase/discord/http/login.cjs +0 -130
  271. package/dist/legacy/firebase/discord/http/login.d.mts +0 -22
  272. package/dist/legacy/firebase/discord/http/login.mjs +0 -124
  273. package/dist/legacy/firebase/discord/http/logout.cjs +0 -158
  274. package/dist/legacy/firebase/discord/http/logout.d.mts +0 -23
  275. package/dist/legacy/firebase/discord/http/logout.mjs +0 -144
  276. package/dist/legacy/firebase/discord/http/redirect.cjs +0 -191
  277. package/dist/legacy/firebase/discord/http/redirect.d.mts +0 -25
  278. package/dist/legacy/firebase/discord/http/redirect.mjs +0 -179
  279. package/dist/legacy/firebase/discord/http/refreshToken.cjs +0 -136
  280. package/dist/legacy/firebase/discord/http/refreshToken.d.mts +0 -25
  281. package/dist/legacy/firebase/discord/http/refreshToken.mjs +0 -122
  282. package/dist/legacy/firebase/discord/index.cjs +0 -22
  283. package/dist/legacy/firebase/discord/index.d.mts +0 -16
  284. package/dist/legacy/firebase/discord/index.mjs +0 -16
  285. package/dist/legacy/firebase/discord/template/cookie-session.cjs +0 -1433
  286. package/dist/legacy/firebase/discord/template/cookie-session.d.mts +0 -23
  287. package/dist/legacy/firebase/discord/template/cookie-session.mjs +0 -1160
  288. package/dist/legacy/firebase/domainRedirect.cjs +0 -37
  289. package/dist/legacy/firebase/domainRedirect.d.mts +0 -13
  290. package/dist/legacy/firebase/domainRedirect.mjs +0 -28
  291. package/dist/legacy/firebase/escape.cjs +0 -77
  292. package/dist/legacy/firebase/escape.d.mts +0 -18
  293. package/dist/legacy/firebase/escape.mjs +0 -59
  294. package/dist/legacy/firebase/getDBAsync.cjs +0 -35
  295. package/dist/legacy/firebase/getDBAsync.d.mts +0 -11
  296. package/dist/legacy/firebase/getDBAsync.mjs +0 -27
  297. package/dist/legacy/firebase/getDBData.cjs +0 -24
  298. package/dist/legacy/firebase/getDBData.d.mts +0 -2
  299. package/dist/legacy/firebase/getDBData.mjs +0 -18
  300. package/dist/legacy/firebase/getDBValue.cjs +0 -19
  301. package/dist/legacy/firebase/getDBValue.d.mts +0 -10
  302. package/dist/legacy/firebase/getDBValue.mjs +0 -15
  303. package/dist/legacy/firebase/index.cjs +0 -264
  304. package/dist/legacy/firebase/index.d.mts +0 -52
  305. package/dist/legacy/firebase/index.mjs +0 -235
  306. package/dist/legacy/firebase/isEmulator.cjs +0 -16
  307. package/dist/legacy/firebase/isEmulator.d.mts +0 -9
  308. package/dist/legacy/firebase/isEmulator.mjs +0 -11
  309. package/dist/legacy/firebase/logger.cjs +0 -140
  310. package/dist/legacy/firebase/logger.d.mts +0 -8
  311. package/dist/legacy/firebase/logger.mjs +0 -126
  312. package/dist/legacy/firebase/mySQL.cjs +0 -30
  313. package/dist/legacy/firebase/mySQL.d.mts +0 -11
  314. package/dist/legacy/firebase/mySQL.mjs +0 -23
  315. package/dist/legacy/firebase/mysqlConnector/create.cjs +0 -121
  316. package/dist/legacy/firebase/mysqlConnector/create.d.mts +0 -37
  317. package/dist/legacy/firebase/mysqlConnector/create.mjs +0 -110
  318. package/dist/legacy/firebase/mysqlConnector/index.cjs +0 -26
  319. package/dist/legacy/firebase/mysqlConnector/index.d.mts +0 -12
  320. package/dist/legacy/firebase/mysqlConnector/index.mjs +0 -17
  321. package/dist/legacy/firebase/mysqlConnector/nextPrev.cjs +0 -77
  322. package/dist/legacy/firebase/mysqlConnector/nextPrev.d.mts +0 -32
  323. package/dist/legacy/firebase/mysqlConnector/nextPrev.mjs +0 -64
  324. package/dist/legacy/firebase/mysqlConnector/pagination.cjs +0 -93
  325. package/dist/legacy/firebase/mysqlConnector/pagination.d.mts +0 -34
  326. package/dist/legacy/firebase/mysqlConnector/pagination.mjs +0 -88
  327. package/dist/legacy/firebase/mysqlConnector/sameUser.cjs +0 -31
  328. package/dist/legacy/firebase/mysqlConnector/sameUser.d.mts +0 -13
  329. package/dist/legacy/firebase/mysqlConnector/sameUser.mjs +0 -24
  330. package/dist/legacy/firebase/transactionDBAsync.cjs +0 -35
  331. package/dist/legacy/firebase/transactionDBAsync.d.mts +0 -12
  332. package/dist/legacy/firebase/transactionDBAsync.mjs +0 -28
  333. package/dist/legacy/get/countObj.cjs +0 -7
  334. package/dist/legacy/get/countObj.d.mts +0 -3
  335. package/dist/legacy/get/countObj.mjs +0 -2
  336. package/dist/legacy/get/decimalColor.cjs +0 -63
  337. package/dist/legacy/get/decimalColor.d.mts +0 -14
  338. package/dist/legacy/get/decimalColor.mjs +0 -56
  339. package/dist/legacy/get/objType.cjs +0 -7
  340. package/dist/legacy/get/objType.d.mts +0 -3
  341. package/dist/legacy/get/objType.mjs +0 -2
  342. package/dist/legacy/get/pagination.cjs +0 -109
  343. package/dist/legacy/get/pagination.d.mts +0 -44
  344. package/dist/legacy/get/pagination.mjs +0 -100
  345. package/dist/legacy/get/queryUrlByName.cjs +0 -32
  346. package/dist/legacy/get/queryUrlByName.d.mts +0 -22
  347. package/dist/legacy/get/queryUrlByName.mjs +0 -29
  348. package/dist/legacy/get/queryUrlJSON.cjs +0 -57
  349. package/dist/legacy/get/queryUrlJSON.d.mts +0 -25
  350. package/dist/legacy/get/queryUrlJSON.mjs +0 -59
  351. package/dist/legacy/get/super_string_filter.cjs +0 -109
  352. package/dist/legacy/get/super_string_filter.d.mts +0 -27
  353. package/dist/legacy/get/super_string_filter.mjs +0 -95
  354. package/dist/legacy/get/versionCheck.cjs +0 -50
  355. package/dist/legacy/get/versionCheck.d.mts +0 -29
  356. package/dist/legacy/get/versionCheck.mjs +0 -40
  357. package/dist/legacy/http/HTTP-1.0.cjs +0 -153
  358. package/dist/legacy/http/HTTP-1.0.d.mts +0 -9
  359. package/dist/legacy/http/HTTP-1.0.mjs +0 -138
  360. package/dist/legacy/http/auth.cjs +0 -71
  361. package/dist/legacy/http/auth.d.mts +0 -43
  362. package/dist/legacy/http/auth.mjs +0 -64
  363. package/dist/legacy/http/check_domain.cjs +0 -103
  364. package/dist/legacy/http/check_domain.d.mts +0 -13
  365. package/dist/legacy/http/check_domain.mjs +0 -98
  366. package/dist/legacy/http/csrfTokenAnalyze.cjs +0 -50
  367. package/dist/legacy/http/csrfTokenAnalyze.d.mts +0 -23
  368. package/dist/legacy/http/csrfTokenAnalyze.mjs +0 -45
  369. package/dist/legacy/http/domainValidator.cjs +0 -106
  370. package/dist/legacy/http/domainValidator.d.mts +0 -41
  371. package/dist/legacy/http/domainValidator.mjs +0 -89
  372. package/dist/legacy/http/errorsCallback.cjs +0 -64
  373. package/dist/legacy/http/errorsCallback.d.mts +0 -41
  374. package/dist/legacy/http/errorsCallback.mjs +0 -58
  375. package/dist/legacy/http/fetch/json.cjs +0 -50
  376. package/dist/legacy/http/fetch/json.d.mts +0 -24
  377. package/dist/legacy/http/fetch/json.mjs +0 -43
  378. package/dist/legacy/http/fetch/text.cjs +0 -49
  379. package/dist/legacy/http/fetch/text.d.mts +0 -23
  380. package/dist/legacy/http/fetch/text.mjs +0 -42
  381. package/dist/legacy/http/fileCache.cjs +0 -80
  382. package/dist/legacy/http/fileCache.d.mts +0 -37
  383. package/dist/legacy/http/fileCache.mjs +0 -71
  384. package/dist/legacy/http/getDomainURL.cjs +0 -60
  385. package/dist/legacy/http/getDomainURL.d.mts +0 -20
  386. package/dist/legacy/http/getDomainURL.mjs +0 -55
  387. package/dist/legacy/http/userIP.cjs +0 -65
  388. package/dist/legacy/http/userIP.d.mts +0 -27
  389. package/dist/legacy/http/userIP.mjs +0 -53
  390. package/dist/legacy/index.cjs +0 -125
  391. package/dist/legacy/index.d.mts +0 -89
  392. package/dist/legacy/index.mjs +0 -93
  393. package/dist/legacy/libs/arraySortPositions.cjs +0 -30
  394. package/dist/legacy/libs/arraySortPositions.d.mts +0 -17
  395. package/dist/legacy/libs/arraySortPositions.mjs +0 -27
  396. package/dist/legacy/libs/capitalize.cjs +0 -22
  397. package/dist/legacy/libs/capitalize.d.mts +0 -15
  398. package/dist/legacy/libs/capitalize.mjs +0 -18
  399. package/dist/legacy/libs/convertBytes.cjs +0 -66
  400. package/dist/legacy/libs/convertBytes.d.mts +0 -18
  401. package/dist/legacy/libs/convertBytes.mjs +0 -57
  402. package/dist/legacy/libs/custom_module_loader.cjs +0 -91
  403. package/dist/legacy/libs/custom_module_loader.d.mts +0 -6
  404. package/dist/legacy/libs/custom_module_loader.mjs +0 -87
  405. package/dist/legacy/libs/dice.cjs +0 -37
  406. package/dist/legacy/libs/dice.d.mts +0 -6
  407. package/dist/legacy/libs/dice.mjs +0 -33
  408. package/dist/legacy/libs/markdown.cjs +0 -97
  409. package/dist/legacy/libs/markdown.d.mts +0 -12
  410. package/dist/legacy/libs/markdown.mjs +0 -90
  411. package/dist/legacy/libs/percentage.cjs +0 -23
  412. package/dist/legacy/libs/percentage.d.mts +0 -5
  413. package/dist/legacy/libs/percentage.mjs +0 -20
  414. package/dist/legacy/libs/regex/getLetter.cjs +0 -24
  415. package/dist/legacy/libs/regex/getLetter.d.mts +0 -15
  416. package/dist/legacy/libs/regex/getLetter.mjs +0 -21
  417. package/dist/legacy/libs/replaceAsync.cjs +0 -35
  418. package/dist/legacy/libs/replaceAsync.d.mts +0 -16
  419. package/dist/legacy/libs/replaceAsync.mjs +0 -28
  420. package/dist/legacy/libs/rule3.cjs +0 -59
  421. package/dist/legacy/libs/rule3.d.mts +0 -6
  422. package/dist/legacy/libs/rule3.mjs +0 -55
  423. package/dist/legacy/momentjs/getAge.cjs +0 -29
  424. package/dist/legacy/momentjs/getAge.d.mts +0 -11
  425. package/dist/legacy/momentjs/getAge.mjs +0 -23
  426. package/dist/legacy/momentjs/index.cjs +0 -9
  427. package/dist/legacy/momentjs/index.d.mts +0 -4
  428. package/dist/legacy/momentjs/index.mjs +0 -3
  429. package/dist/legacy/momentjs/timeDuration.cjs +0 -31
  430. package/dist/legacy/momentjs/timeDuration.d.mts +0 -12
  431. package/dist/legacy/momentjs/timeDuration.mjs +0 -25
  432. package/dist/legacy/socket.io/antiFlood/index.cjs +0 -9
  433. package/dist/legacy/socket.io/antiFlood/index.d.mts +0 -4
  434. package/dist/legacy/socket.io/antiFlood/index.mjs +0 -3
  435. package/dist/legacy/socket.io/antiFlood/install.cjs +0 -34
  436. package/dist/legacy/socket.io/antiFlood/install.d.mts +0 -16
  437. package/dist/legacy/socket.io/antiFlood/install.mjs +0 -29
  438. package/dist/legacy/socket.io/antiFlood/verify.cjs +0 -95
  439. package/dist/legacy/socket.io/antiFlood/verify.d.mts +0 -20
  440. package/dist/legacy/socket.io/antiFlood/verify.mjs +0 -79
  441. package/dist/legacy/socket.io/cookie-session.cjs +0 -27
  442. package/dist/legacy/socket.io/cookie-session.d.mts +0 -11
  443. package/dist/legacy/socket.io/cookie-session.mjs +0 -22
  444. package/dist/legacy/socket.io/discord.cjs +0 -62
  445. package/dist/legacy/socket.io/discord.d.mts +0 -12
  446. package/dist/legacy/socket.io/discord.mjs +0 -53
  447. package/dist/legacy/socket.io/index.cjs +0 -13
  448. package/dist/legacy/socket.io/index.d.mts +0 -10
  449. package/dist/legacy/socket.io/index.mjs +0 -9
  450. package/dist/node_modules/firebase-functions/lib/common/trace.cjs +0 -81
  451. package/dist/node_modules/firebase-functions/lib/logger/common.cjs +0 -57
  452. package/dist/node_modules/firebase-functions/lib/logger/index.cjs +0 -159
  453. /package/dist/{legacy/libs/userLevel.cjs → v1/libs/TinyLevelUp.cjs} +0 -0
  454. /package/dist/{legacy/libs/userLevel.mjs → v1/libs/TinyLevelUp.mjs} +0 -0
@@ -0,0 +1,853 @@
1
+ /**
2
+ * Represents the allowed angle unit types for CSS color functions.
3
+ *
4
+ * - `deg` → Degrees (0–360).
5
+ * - `grad` → Gradians (0–400).
6
+ * - `rad` → Radians (0–2π).
7
+ * - `turn` → Turns (0–1).
8
+ *
9
+ * @typedef {'deg' | 'grad' | 'rad' | 'turn'} AngleUnit
10
+ */
11
+ /**
12
+ * Represents the type of a CSS color.
13
+ *
14
+ * - `'hex'` → HEX color (`#RGB` / `#RRGGBB`)
15
+ * - `'hexa'` → HEX with alpha (`#RRGGBBAA`)
16
+ * - `'rgb'` → RGB color (`rgb(r, g, b)`)
17
+ * - `'rgba'` → RGB with alpha (`rgba(r, g, b, a)`)
18
+ * - `'hsl'` → HSL color (`hsl(h, s%, l%)`)
19
+ * - `'hsla'` → HSL with alpha (`hsla(h, s%, l%, a)`)
20
+ * - `'hwb'` → HWB color (`hwb(hue, whiteness%, blackness%)`)
21
+ * - `'lab'` → CIELAB color (`lab(L a b)`)
22
+ * - `'lch'` → LCH color (`lch(L C H)`)
23
+ * - `'name'` → Standard HTML color name (e.g., `red`, `blue`)
24
+ * - `'specialName'` → CSS special keywords (`transparent`, `currentColor`)
25
+ *
26
+ * @typedef {'hex'|'hexa'|'rgb'|'rgba'|'hsl'|'hsla'|'hwb'|'lab'|'lch'|'name'|'specialName'} ColorTypes
27
+ */
28
+ /**
29
+ * Utility class for validating and parsing CSS color values.
30
+ *
31
+ * Supports multiple CSS color syntaxes:
32
+ * - **Hexadecimal**: `#RGB`, `#RRGGBB`, `#RRGGBBAA`
33
+ * - **RGB/RGBA**: `rgb(r, g, b)`, `rgba(r, g, b, a)`
34
+ * - **HSL/HSLA**: `hsl(h, s%, l%)`, `hsla(h, s%, l%, a)`
35
+ * - **HWB**: `hwb(hue whiteness% blackness%)`
36
+ * - **CIELAB**: `lab(L a b)`
37
+ * - **LCH**: `lch(L C H)`
38
+ * - **Named colors**: standard HTML color names (e.g., `red`, `blue`, `rebeccapurple`)
39
+ * - **Special keywords**: `transparent`, `currentColor`
40
+ *
41
+ * Features:
42
+ * - Provides validation (`isHex`, `isRgb`, `isHsl`, etc.) for each format.
43
+ * - Provides parsing methods (`parseRgb`, `parseHsl`, etc.) returning numeric components.
44
+ * - Allows extending and managing HTML color names and special keywords dynamically.
45
+ *
46
+ * Example:
47
+ * ```js
48
+ * const validator = new TinyColorValidator("rgb(255, 0, 0)");
49
+ * console.log(validator.isRgb()); // true
50
+ * console.log(validator.parseRgb()); // [255, 0, 0]
51
+ * ```
52
+ *
53
+ * @class
54
+ * @template {string} TinyColorValidatorT
55
+ */
56
+ class TinyColorValidator {
57
+ // Utility regex patterns
58
+ static #HEX_REGEX = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
59
+ static #HEXA_REGEX = /^#([A-Fa-f0-9]{8})$/;
60
+ // Alpha 0-1
61
+ static #ALPHA = `(0|1|0?\\.\\d+)`;
62
+ // Matches integers from 0 to 255
63
+ static #NUM_0_255 = `(0|[1-9]\\d?|1\\d{2}|2[0-4]\\d|25[0-5])`;
64
+ // Numbers 0-360
65
+ static #NUM_0_360 = `(0|[1-9]\\d?|[1-2]\\d{2}|3[0-5]\\d|360)`;
66
+ // Numbers 0-100
67
+ static #NUM_0_100 = `(0|[1-9]?\\d|100)`;
68
+ // RGB
69
+ static #RGB_REGEX = new RegExp(`^rgb\\(\\s*${TinyColorValidator.#NUM_0_255}\\s*,\\s*${TinyColorValidator.#NUM_0_255}\\s*,\\s*${TinyColorValidator.#NUM_0_255}\\s*\\)$`);
70
+ static #RGBA_REGEX = new RegExp(`^rgba\\(\\s*${TinyColorValidator.#NUM_0_255}\\s*,\\s*${TinyColorValidator.#NUM_0_255}\\s*,\\s*${TinyColorValidator.#NUM_0_255}\\s*,\\s*${TinyColorValidator.#ALPHA}\\s*\\)$`);
71
+ // HSL
72
+ static #HSL_REGEX = new RegExp(`^hsl\\(\\s*${TinyColorValidator.#NUM_0_360}\\s*,\\s*${TinyColorValidator.#NUM_0_100}%\\s*,\\s*${TinyColorValidator.#NUM_0_100}%\\s*\\)$`);
73
+ static #HSLA_REGEX = new RegExp(`^hsla\\(\\s*${TinyColorValidator.#NUM_0_360}\\s*,\\s*${TinyColorValidator.#NUM_0_100}%\\s*,\\s*${TinyColorValidator.#NUM_0_100}%\\s*,\\s*${TinyColorValidator.#ALPHA}\\s*\\)$`);
74
+ // HWB
75
+ static #HWB_REGEX = new RegExp(`^hwb\\(\\s*${TinyColorValidator.#NUM_0_360}(deg|grad|rad|turn)?\\s*${TinyColorValidator.#NUM_0_100}%\\s*${TinyColorValidator.#NUM_0_100}%\\s*\\)$`);
76
+ // LAB
77
+ static #LAB_AB = `(-?\\d+)`;
78
+ static #LAB_REGEX = new RegExp(`^lab\\(\\s*${TinyColorValidator.#NUM_0_100}%?\\s*${TinyColorValidator.#LAB_AB}%?\\s*${TinyColorValidator.#LAB_AB}%?\\s*\\)$`);
79
+ // LCH
80
+ static #LCH_REGEX = new RegExp(`^lch\\(\\s*${TinyColorValidator.#NUM_0_100}%?\\s*${TinyColorValidator.#NUM_0_100}%?\\s*${TinyColorValidator.#NUM_0_360}(deg|grad|rad|turn)?\\s*\\)$`);
81
+ // CSS Level 4 color names
82
+ static #HTML_COLOR_NAMES = new Set([
83
+ 'aliceblue',
84
+ 'antiquewhite',
85
+ 'aqua',
86
+ 'aquamarine',
87
+ 'azure',
88
+ 'beige',
89
+ 'bisque',
90
+ 'black',
91
+ 'blanchedalmond',
92
+ 'blue',
93
+ 'blueviolet',
94
+ 'brown',
95
+ 'burlywood',
96
+ 'cadetblue',
97
+ 'chartreuse',
98
+ 'chocolate',
99
+ 'coral',
100
+ 'cornflowerblue',
101
+ 'cornsilk',
102
+ 'crimson',
103
+ 'cyan',
104
+ 'darkblue',
105
+ 'darkcyan',
106
+ 'darkgoldenrod',
107
+ 'darkgray',
108
+ 'darkgreen',
109
+ 'darkgrey',
110
+ 'darkkhaki',
111
+ 'darkmagenta',
112
+ 'darkolivegreen',
113
+ 'darkorange',
114
+ 'darkorchid',
115
+ 'darkred',
116
+ 'darksalmon',
117
+ 'darkseagreen',
118
+ 'darkslateblue',
119
+ 'darkslategray',
120
+ 'darkslategrey',
121
+ 'darkturquoise',
122
+ 'darkviolet',
123
+ 'deeppink',
124
+ 'deepskyblue',
125
+ 'dimgray',
126
+ 'dimgrey',
127
+ 'dodgerblue',
128
+ 'firebrick',
129
+ 'floralwhite',
130
+ 'forestgreen',
131
+ 'fuchsia',
132
+ 'gainsboro',
133
+ 'ghostwhite',
134
+ 'gold',
135
+ 'goldenrod',
136
+ 'gray',
137
+ 'green',
138
+ 'greenyellow',
139
+ 'grey',
140
+ 'honeydew',
141
+ 'hotpink',
142
+ 'indianred',
143
+ 'indigo',
144
+ 'ivory',
145
+ 'khaki',
146
+ 'lavender',
147
+ 'lavenderblush',
148
+ 'lawngreen',
149
+ 'lemonchiffon',
150
+ 'lightblue',
151
+ 'lightcoral',
152
+ 'lightcyan',
153
+ 'lightgoldenrodyellow',
154
+ 'lightgray',
155
+ 'lightgreen',
156
+ 'lightgrey',
157
+ 'lightpink',
158
+ 'lightsalmon',
159
+ 'lightseagreen',
160
+ 'lightskyblue',
161
+ 'lightslategray',
162
+ 'lightslategrey',
163
+ 'lightsteelblue',
164
+ 'lightyellow',
165
+ 'lime',
166
+ 'limegreen',
167
+ 'linen',
168
+ 'magenta',
169
+ 'maroon',
170
+ 'mediumaquamarine',
171
+ 'mediumblue',
172
+ 'mediumorchid',
173
+ 'mediumpurple',
174
+ 'mediumseagreen',
175
+ 'mediumslateblue',
176
+ 'mediumspringgreen',
177
+ 'mediumturquoise',
178
+ 'mediumvioletred',
179
+ 'midnightblue',
180
+ 'mintcream',
181
+ 'mistyrose',
182
+ 'moccasin',
183
+ 'navajowhite',
184
+ 'navy',
185
+ 'oldlace',
186
+ 'olive',
187
+ 'olivedrab',
188
+ 'orange',
189
+ 'orangered',
190
+ 'orchid',
191
+ 'palegoldenrod',
192
+ 'palegreen',
193
+ 'paleturquoise',
194
+ 'palevioletred',
195
+ 'papayawhip',
196
+ 'peachpuff',
197
+ 'peru',
198
+ 'pink',
199
+ 'plum',
200
+ 'powderblue',
201
+ 'purple',
202
+ 'rebeccapurple',
203
+ 'red',
204
+ 'rosybrown',
205
+ 'royalblue',
206
+ 'saddlebrown',
207
+ 'salmon',
208
+ 'sandybrown',
209
+ 'seagreen',
210
+ 'seashell',
211
+ 'sienna',
212
+ 'silver',
213
+ 'skyblue',
214
+ 'slateblue',
215
+ 'slategray',
216
+ 'slategrey',
217
+ 'snow',
218
+ 'springgreen',
219
+ 'steelblue',
220
+ 'tan',
221
+ 'teal',
222
+ 'thistle',
223
+ 'tomato',
224
+ 'turquoise',
225
+ 'violet',
226
+ 'wheat',
227
+ 'white',
228
+ 'whitesmoke',
229
+ 'yellow',
230
+ 'yellowgreen',
231
+ ]);
232
+ // CSS system special names
233
+ static #SPECIAL_COLOR_NAMES = new Set(['transparent', 'currentColor']);
234
+ // --- HTML Color Names ---
235
+ /**
236
+ * Returns all HTML color names as an array.
237
+ * @returns {string[]}
238
+ */
239
+ static getNames() {
240
+ return Array.from(TinyColorValidator.#HTML_COLOR_NAMES);
241
+ }
242
+ /**
243
+ * Adds a new HTML color name.
244
+ * @param {string} name
245
+ * @returns {boolean} True if added, false if it already existed.
246
+ */
247
+ static addName(name) {
248
+ const before = TinyColorValidator.#HTML_COLOR_NAMES.size;
249
+ TinyColorValidator.#HTML_COLOR_NAMES.add(name.toLowerCase());
250
+ return TinyColorValidator.#HTML_COLOR_NAMES.size > before;
251
+ }
252
+ /**
253
+ * Removes an HTML color name.
254
+ * @param {string} name
255
+ * @returns {boolean} True if removed, false if not found.
256
+ */
257
+ static removeName(name) {
258
+ return TinyColorValidator.#HTML_COLOR_NAMES.delete(name.toLowerCase());
259
+ }
260
+ /**
261
+ * Checks if an HTML color name exists.
262
+ * @param {string} name
263
+ * @returns {boolean}
264
+ */
265
+ static hasName(name) {
266
+ return TinyColorValidator.#HTML_COLOR_NAMES.has(name.toLowerCase());
267
+ }
268
+ // --- Special Color Names ---
269
+ /**
270
+ * Returns all special color names as an array.
271
+ * @returns {string[]}
272
+ */
273
+ static getSpecialNames() {
274
+ return Array.from(TinyColorValidator.#SPECIAL_COLOR_NAMES);
275
+ }
276
+ /**
277
+ * Adds a new special color name.
278
+ * @param {string} name
279
+ * @returns {boolean} True if added, false if it already existed.
280
+ */
281
+ static addSpecialName(name) {
282
+ const before = TinyColorValidator.#SPECIAL_COLOR_NAMES.size;
283
+ TinyColorValidator.#SPECIAL_COLOR_NAMES.add(name);
284
+ return TinyColorValidator.#SPECIAL_COLOR_NAMES.size > before;
285
+ }
286
+ /**
287
+ * Removes a special color name.
288
+ * @param {string} name
289
+ * @returns {boolean} True if removed, false if not found.
290
+ */
291
+ static removeSpecialName(name) {
292
+ return TinyColorValidator.#SPECIAL_COLOR_NAMES.delete(name);
293
+ }
294
+ /**
295
+ * Checks if a special color name exists.
296
+ * @param {string} name
297
+ * @returns {boolean}
298
+ */
299
+ static hasSpecialName(name) {
300
+ return TinyColorValidator.#SPECIAL_COLOR_NAMES.has(name);
301
+ }
302
+ // Validators
303
+ /**
304
+ * Internal storage for the code value.
305
+ * @type {string}
306
+ */
307
+ #code;
308
+ /**
309
+ * Gets the current code.
310
+ * @returns {string} The stored code.
311
+ */
312
+ get code() {
313
+ return this.#code;
314
+ }
315
+ /**
316
+ * Internal storage for the code type.
317
+ * @type {ColorTypes|null}
318
+ */
319
+ #type;
320
+ /**
321
+ * Gets the current code.
322
+ * @returns {ColorTypes|null} The stored code type.
323
+ */
324
+ get type() {
325
+ return this.#type;
326
+ }
327
+ /**
328
+ * Creates a new instance of Example.
329
+ * @param {TinyColorValidatorT} code - The code to be stored.
330
+ */
331
+ constructor(code) {
332
+ this.#code = code;
333
+ this.#type = TinyColorValidator.isColor(this.#code);
334
+ }
335
+ /**
336
+ * Validates if a string is a valid HEX color (#RGB, #RRGGBB).
337
+ * @param {string} input - The input string to validate.
338
+ * @returns {boolean} True if the input is a valid HEX color.
339
+ * @throws {TypeError} If input is not a string.
340
+ */
341
+ static isHex(input) {
342
+ if (typeof input !== 'string')
343
+ throw new TypeError('isHex: input must be a string.');
344
+ return TinyColorValidator.#HEX_REGEX.test(input.trim());
345
+ }
346
+ /**
347
+ * Validates if a string is a valid HEX color (#RGB, #RRGGBB).
348
+ * @returns {boolean} True if the input is a valid HEX color.
349
+ * @throws {TypeError} If input is not a string.
350
+ */
351
+ isHex() {
352
+ return TinyColorValidator.isHex(this.#code);
353
+ }
354
+ /**
355
+ * Validates if a string is a valid HEX color (#RRGGBBAA).
356
+ * @param {string} input - The input string to validate.
357
+ * @returns {boolean} True if the input is a valid HEXA color.
358
+ * @throws {TypeError} If input is not a string.
359
+ */
360
+ static isHexa(input) {
361
+ if (typeof input !== 'string')
362
+ throw new TypeError('isHexa: input must be a string.');
363
+ return TinyColorValidator.#HEXA_REGEX.test(input.trim());
364
+ }
365
+ /**
366
+ * Validates if a string is a valid HEX color (#RRGGBBAA).
367
+ * @returns {boolean} True if the input is a valid HEXA color.
368
+ * @throws {TypeError} If input is not a string.
369
+ */
370
+ isHexa() {
371
+ return TinyColorValidator.isHexa(this.#code);
372
+ }
373
+ /**
374
+ * Validates if a string is a valid RGB color.
375
+ * @param {string} input - The input string to validate.
376
+ * @returns {boolean} True if the input is a valid RGB color.
377
+ * @throws {TypeError} If input is not a string.
378
+ */
379
+ static isRgb(input) {
380
+ if (typeof input !== 'string')
381
+ throw new TypeError('isRgb: input must be a string.');
382
+ return TinyColorValidator.#RGB_REGEX.test(input.trim());
383
+ }
384
+ /**
385
+ * Validates if a string is a valid RGB color.
386
+ * @returns {boolean} True if the input is a valid RGB color.
387
+ * @throws {TypeError} If input is not a string.
388
+ */
389
+ isRgb() {
390
+ return TinyColorValidator.isRgb(this.#code);
391
+ }
392
+ /**
393
+ * Validates if a string is a valid RGBA color.
394
+ * @param {string} input - The input string to validate.
395
+ * @returns {boolean} True if the input is a valid RGBA color.
396
+ * @throws {TypeError} If input is not a string.
397
+ */
398
+ static isRgba(input) {
399
+ if (typeof input !== 'string')
400
+ throw new TypeError('isRgba: input must be a string.');
401
+ return TinyColorValidator.#RGBA_REGEX.test(input.trim());
402
+ }
403
+ /**
404
+ * Validates if a string is a valid RGBA color.
405
+ * @returns {boolean} True if the input is a valid RGBA color.
406
+ * @throws {TypeError} If input is not a string.
407
+ */
408
+ isRgba() {
409
+ return TinyColorValidator.isRgba(this.#code);
410
+ }
411
+ /**
412
+ * Validates if a string is a valid HSL color.
413
+ * @param {string} input - The input string to validate.
414
+ * @returns {boolean} True if the input is a valid HSL color.
415
+ * @throws {TypeError} If input is not a string.
416
+ */
417
+ static isHsl(input) {
418
+ if (typeof input !== 'string')
419
+ throw new TypeError('isHsl: input must be a string.');
420
+ return TinyColorValidator.#HSL_REGEX.test(input.trim());
421
+ }
422
+ /**
423
+ * Validates if a string is a valid HSL color.
424
+ * @returns {boolean} True if the input is a valid HSL color.
425
+ * @throws {TypeError} If input is not a string.
426
+ */
427
+ isHsl() {
428
+ return TinyColorValidator.isHsl(this.#code);
429
+ }
430
+ /**
431
+ * Validates if a string is a valid HSLA color.
432
+ * @param {string} input - The input string to validate.
433
+ * @returns {boolean} True if the input is a valid HSLA color.
434
+ * @throws {TypeError} If input is not a string.
435
+ */
436
+ static isHsla(input) {
437
+ if (typeof input !== 'string')
438
+ throw new TypeError('isHsla: input must be a string.');
439
+ return TinyColorValidator.#HSLA_REGEX.test(input.trim());
440
+ }
441
+ /**
442
+ * Validates if a string is a valid HSLA color.
443
+ * @returns {boolean} True if the input is a valid HSLA color.
444
+ * @throws {TypeError} If input is not a string.
445
+ */
446
+ isHsla() {
447
+ return TinyColorValidator.isHsla(this.#code);
448
+ }
449
+ /**
450
+ * Validates if a string is a valid HWB color.
451
+ * @param {string} input - The input string to validate.
452
+ * @returns {boolean} True if the input is a valid HWB color.
453
+ * @throws {TypeError} If input is not a string.
454
+ */
455
+ static isHwb(input) {
456
+ if (typeof input !== 'string')
457
+ throw new TypeError('isHwb: input must be a string.');
458
+ return TinyColorValidator.#HWB_REGEX.test(input.trim());
459
+ }
460
+ /**
461
+ * Validates if a string is a valid HWB color.
462
+ * @returns {boolean} True if the input is a valid HWB color.
463
+ * @throws {TypeError} If input is not a string.
464
+ */
465
+ isHwb() {
466
+ return TinyColorValidator.isHwb(this.#code);
467
+ }
468
+ /**
469
+ * Validates if a string is a valid CIELAB color.
470
+ * @param {string} input - The input string to validate.
471
+ * @returns {boolean} True if the input is a valid Lab color.
472
+ * @throws {TypeError} If input is not a string.
473
+ */
474
+ static isLab(input) {
475
+ if (typeof input !== 'string')
476
+ throw new TypeError('isLab: input must be a string.');
477
+ return TinyColorValidator.#LAB_REGEX.test(input.trim());
478
+ }
479
+ /**
480
+ * Validates if a string is a valid CIELAB color.
481
+ * @returns {boolean} True if the input is a valid Lab color.
482
+ * @throws {TypeError} If input is not a string.
483
+ */
484
+ isLab() {
485
+ return TinyColorValidator.isLab(this.#code);
486
+ }
487
+ /**
488
+ * Validates if a string is a valid LCH color.
489
+ * @param {string} input - The input string to validate.
490
+ * @returns {boolean} True if the input is a valid LCH color.
491
+ * @throws {TypeError} If input is not a string.
492
+ */
493
+ static isLch(input) {
494
+ if (typeof input !== 'string')
495
+ throw new TypeError('isLch: input must be a string.');
496
+ return TinyColorValidator.#LCH_REGEX.test(input.trim());
497
+ }
498
+ /**
499
+ * Validates if a string is a valid LCH color.
500
+ * @returns {boolean} True if the input is a valid LCH color.
501
+ * @throws {TypeError} If input is not a string.
502
+ */
503
+ isLch() {
504
+ return TinyColorValidator.isLch(this.#code);
505
+ }
506
+ /**
507
+ * Validates if a string matches a standard HTML color name.
508
+ * @param {string} input - The input string to validate.
509
+ * @returns {boolean} True if the input is a valid HTML color name.
510
+ * @throws {TypeError} If input is not a string.
511
+ */
512
+ static isName(input) {
513
+ if (typeof input !== 'string')
514
+ throw new TypeError('isName: input must be a string.');
515
+ return TinyColorValidator.#HTML_COLOR_NAMES.has(input.trim().toLowerCase());
516
+ }
517
+ /**
518
+ * Validates if a string matches a standard HTML color name.
519
+ * @returns {boolean} True if the input is a valid HTML color name.
520
+ * @throws {TypeError} If input is not a string.
521
+ */
522
+ isName() {
523
+ return TinyColorValidator.isName(this.#code);
524
+ }
525
+ /**
526
+ * Validates if a string matches a special CSS color keyword.
527
+ * @param {string} input - The input string to validate.
528
+ * @returns {boolean} True if the input is a special color keyword.
529
+ * @throws {TypeError} If input is not a string.
530
+ */
531
+ static isSpecialName(input) {
532
+ if (typeof input !== 'string')
533
+ throw new TypeError('isSpecialName: input must be a string.');
534
+ return TinyColorValidator.#SPECIAL_COLOR_NAMES.has(input.trim());
535
+ }
536
+ /**
537
+ * Validates if a string matches a special CSS color keyword.
538
+ * @returns {boolean} True if the input is a special color keyword.
539
+ * @throws {TypeError} If input is not a string.
540
+ */
541
+ isSpecialName() {
542
+ return TinyColorValidator.isSpecialName(this.#code);
543
+ }
544
+ /**
545
+ * Validates if a string is any valid CSS color (HEX, RGB, HSL, HWB, Lab, LCH, name, or special name).
546
+ * @param {string} input - The input string to validate.
547
+ * @returns {ColorTypes|null} if the input is a valid CSS color.
548
+ * @throws {TypeError} If input is not a string.
549
+ */
550
+ static isColor(input) {
551
+ if (typeof input !== 'string')
552
+ throw new TypeError('isColor: input must be a string.');
553
+ if (TinyColorValidator.isHex(input))
554
+ return 'hex';
555
+ else if (TinyColorValidator.isHexa(input))
556
+ return 'hexa';
557
+ else if (TinyColorValidator.isRgb(input))
558
+ return 'rgb';
559
+ else if (TinyColorValidator.isRgba(input))
560
+ return 'rgba';
561
+ else if (TinyColorValidator.isHsl(input))
562
+ return 'hsl';
563
+ else if (TinyColorValidator.isHsla(input))
564
+ return 'hsla';
565
+ else if (TinyColorValidator.isHwb(input))
566
+ return 'hwb';
567
+ else if (TinyColorValidator.isLab(input))
568
+ return 'lab';
569
+ else if (TinyColorValidator.isLch(input))
570
+ return 'lch';
571
+ else if (TinyColorValidator.isName(input))
572
+ return 'name';
573
+ else if (TinyColorValidator.isSpecialName(input))
574
+ return 'specialName';
575
+ return null;
576
+ }
577
+ /**
578
+ * Automatically parses the stored code based on its detected type.
579
+ * @returns {any[]|string|null} Parsed color components according to type, or null if invalid.
580
+ */
581
+ parse() {
582
+ switch (this.#type) {
583
+ case 'hex':
584
+ return TinyColorValidator.parseHex(this.code);
585
+ case 'hexa':
586
+ return TinyColorValidator.parseHexa(this.code);
587
+ case 'rgb':
588
+ return TinyColorValidator.parseRgb(this.code);
589
+ case 'rgba':
590
+ return TinyColorValidator.parseRgba(this.code);
591
+ case 'hsl':
592
+ return TinyColorValidator.parseHsl(this.code);
593
+ case 'hsla':
594
+ return TinyColorValidator.parseHsla(this.code);
595
+ case 'hwb':
596
+ return TinyColorValidator.parseHwb(this.code);
597
+ case 'lab':
598
+ return TinyColorValidator.parseLab(this.code);
599
+ case 'lch':
600
+ return TinyColorValidator.parseLch(this.code);
601
+ case 'name':
602
+ case 'specialName':
603
+ return this.#code.trim().toLowerCase();
604
+ default:
605
+ return null;
606
+ }
607
+ }
608
+ // --- HEX / HEXA ---
609
+ /**
610
+ * Parses a HEX color string (#RGB or #RRGGBB).
611
+ * Returns the regex match array with captured groups or null if invalid.
612
+ * @param {string} input - The input string to parse.
613
+ * @returns {string|null} Regex match result with captured groups, or null if not valid.
614
+ * @throws {TypeError} If input is not a string.
615
+ */
616
+ static parseHex(input) {
617
+ if (typeof input !== 'string')
618
+ throw new TypeError('parseHex: input must be a string.');
619
+ const result = new RegExp(TinyColorValidator.#HEX_REGEX, 'gm').exec(input.trim());
620
+ if (!result)
621
+ return null;
622
+ return result[1];
623
+ }
624
+ /**
625
+ * Parses a HEX color string (#RGB or #RRGGBB).
626
+ * Returns the regex match array with captured groups or null if invalid.
627
+ * @returns {string|null} Regex match result with captured groups, or null if not valid.
628
+ * @throws {TypeError} If input is not a string.
629
+ */
630
+ parseHex() {
631
+ return TinyColorValidator.parseHex(this.#code);
632
+ }
633
+ /**
634
+ * Parses a HEXA color string (#RRGGBBAA).
635
+ * Returns the regex match array with captured groups or null if invalid.
636
+ * @param {string} input - The input string to parse.
637
+ * @returns {string|null} Regex match result with captured groups, or null if not valid.
638
+ * @throws {TypeError} If input is not a string.
639
+ */
640
+ static parseHexa(input) {
641
+ if (typeof input !== 'string')
642
+ throw new TypeError('parseHexa: input must be a string.');
643
+ const result = new RegExp(TinyColorValidator.#HEXA_REGEX, 'gm').exec(input.trim());
644
+ if (!result)
645
+ return null;
646
+ return result[1];
647
+ }
648
+ /**
649
+ * Parses a HEXA color string (#RRGGBBAA).
650
+ * Returns the regex match array with captured groups or null if invalid.
651
+ * @returns {string|null} Regex match result with captured groups, or null if not valid.
652
+ * @throws {TypeError} If input is not a string.
653
+ */
654
+ parseHexa() {
655
+ return TinyColorValidator.parseHexa(this.#code);
656
+ }
657
+ // --- RGB / RGBA ---
658
+ /**
659
+ * Parses an RGB color string (rgb(r, g, b)).
660
+ * Returns the regex match array with captured groups for r, g, and b or null if invalid.
661
+ * @param {string} input - The input string to parse.
662
+ * @returns {[number, number, number]|null} Regex match result with groups [r, g, b], or null if not valid.
663
+ * @throws {TypeError} If input is not a string.
664
+ */
665
+ static parseRgb(input) {
666
+ if (typeof input !== 'string')
667
+ throw new TypeError('parseRgb: input must be a string.');
668
+ const result = new RegExp(TinyColorValidator.#RGB_REGEX, 'gm').exec(input.trim());
669
+ if (!result)
670
+ return null;
671
+ return [parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3])];
672
+ }
673
+ /**
674
+ * Parses an RGB color string (rgb(r, g, b)).
675
+ * Returns the regex match array with captured groups for r, g, and b or null if invalid.
676
+ * @returns {[number, number, number]|null} Regex match result with groups [r, g, b], or null if not valid.
677
+ * @throws {TypeError} If input is not a string.
678
+ */
679
+ parseRgb() {
680
+ return TinyColorValidator.parseRgb(this.#code);
681
+ }
682
+ /**
683
+ * Parses an RGBA color string (rgba(r, g, b, a)).
684
+ * Returns the regex match array with captured groups for r, g, b, and a or null if invalid.
685
+ * @param {string} input - The input string to parse.
686
+ * @returns {[number, number, number, number]|null} Regex match result with groups [r, g, b, a], or null if not valid.
687
+ * @throws {TypeError} If input is not a string.
688
+ */
689
+ static parseRgba(input) {
690
+ if (typeof input !== 'string')
691
+ throw new TypeError('parseRgba: input must be a string.');
692
+ const result = new RegExp(TinyColorValidator.#RGBA_REGEX, 'gm').exec(input.trim());
693
+ if (!result)
694
+ return null;
695
+ return [
696
+ parseFloat(result[1]),
697
+ parseFloat(result[2]),
698
+ parseFloat(result[3]),
699
+ parseFloat(result[4]),
700
+ ];
701
+ }
702
+ /**
703
+ * Parses an RGBA color string (rgba(r, g, b, a)).
704
+ * Returns the regex match array with captured groups for r, g, b, and a or null if invalid.
705
+ * @returns {[number, number, number, number]|null} Regex match result with groups [r, g, b, a], or null if not valid.
706
+ * @throws {TypeError} If input is not a string.
707
+ */
708
+ parseRgba() {
709
+ return TinyColorValidator.parseRgba(this.#code);
710
+ }
711
+ // --- HSL / HSLA ---
712
+ /**
713
+ * Parses an HSL color string (hsl(h, s%, l%)).
714
+ * Returns the regex match array with captured groups for h, s, and l or null if invalid.
715
+ * @param {string} input - The input string to parse.
716
+ * @returns {[number, number, number]|null} Regex match result with groups [h, s, l], or null if not valid.
717
+ * @throws {TypeError} If input is not a string.
718
+ */
719
+ static parseHsl(input) {
720
+ if (typeof input !== 'string')
721
+ throw new TypeError('parseHsl: input must be a string.');
722
+ const result = new RegExp(TinyColorValidator.#HSL_REGEX, 'gm').exec(input.trim());
723
+ if (!result)
724
+ return null;
725
+ return [parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3])];
726
+ }
727
+ /**
728
+ * Parses an HSL color string (hsl(h, s%, l%)).
729
+ * Returns the regex match array with captured groups for h, s, and l or null if invalid.
730
+ * @returns {[number, number, number]|null} Regex match result with groups [h, s, l], or null if not valid.
731
+ * @throws {TypeError} If input is not a string.
732
+ */
733
+ parseHsl() {
734
+ return TinyColorValidator.parseHsl(this.#code);
735
+ }
736
+ /**
737
+ * Parses an HSLA color string (hsla(h, s%, l%, a)).
738
+ * Returns the regex match array with captured groups for h, s, l, and a or null if invalid.
739
+ * @param {string} input - The input string to parse.
740
+ * @returns {[number, number, number, number]|null} Regex match result with groups [h, s, l, a], or null if not valid.
741
+ * @throws {TypeError} If input is not a string.
742
+ */
743
+ static parseHsla(input) {
744
+ if (typeof input !== 'string')
745
+ throw new TypeError('parseHsla: input must be a string.');
746
+ const result = new RegExp(TinyColorValidator.#HSLA_REGEX, 'gm').exec(input.trim());
747
+ if (!result)
748
+ return null;
749
+ return [
750
+ parseFloat(result[1]),
751
+ parseFloat(result[2]),
752
+ parseFloat(result[3]),
753
+ parseFloat(result[4]),
754
+ ];
755
+ }
756
+ /**
757
+ * Parses an HSLA color string (hsla(h, s%, l%, a)).
758
+ * Returns the regex match array with captured groups for h, s, l, and a or null if invalid.
759
+ * @returns {[number, number, number, number]|null} Regex match result with groups [h, s, l, a], or null if not valid.
760
+ * @throws {TypeError} If input is not a string.
761
+ */
762
+ parseHsla() {
763
+ return TinyColorValidator.parseHsla(this.#code);
764
+ }
765
+ // --- HWB ---
766
+ /**
767
+ * Parses an HWB color string (hwb(hue, whiteness%, blackness%[, alpha])).
768
+ * Returns the regex match array with captured groups or null if invalid.
769
+ * @param {string} input - The input string to parse.
770
+ * @returns {[number, AngleUnit|null, number, number]|null} Regex match result with captured groups, or null if not valid.
771
+ * @throws {TypeError} If input is not a string.
772
+ */
773
+ static parseHwb(input) {
774
+ if (typeof input !== 'string')
775
+ throw new TypeError('parseHwb: input must be a string.');
776
+ const result = new RegExp(TinyColorValidator.#HWB_REGEX, 'gm').exec(input.trim());
777
+ if (!result)
778
+ return null;
779
+ return [
780
+ parseFloat(result[1]),
781
+ // @ts-ignore
782
+ result[2] ?? null,
783
+ parseFloat(result[3]),
784
+ parseFloat(result[4]),
785
+ ];
786
+ }
787
+ /**
788
+ * Parses an HWB color string (hwb(hue, whiteness%, blackness%[, alpha])).
789
+ * Returns the regex match array with captured groups or null if invalid.
790
+ * @returns {[number, AngleUnit|null, number, number]|null} Regex match result with captured groups, or null if not valid.
791
+ * @throws {TypeError} If input is not a string.
792
+ */
793
+ parseHwb() {
794
+ return TinyColorValidator.parseHwb(this.#code);
795
+ }
796
+ // --- Lab ---
797
+ /**
798
+ * Parses a CIELAB color string (lab(L a b[/alpha])).
799
+ * Returns the regex match array with captured groups or null if invalid.
800
+ * @param {string} input - The input string to parse.
801
+ * @returns {[number, number, number]|null} Regex match result with captured groups, or null if not valid.
802
+ * @throws {TypeError} If input is not a string.
803
+ */
804
+ static parseLab(input) {
805
+ if (typeof input !== 'string')
806
+ throw new TypeError('parseLab: input must be a string.');
807
+ const result = new RegExp(TinyColorValidator.#LAB_REGEX, 'gm').exec(input.trim());
808
+ if (!result)
809
+ return null;
810
+ return [parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3])];
811
+ }
812
+ /**
813
+ * Parses a CIELAB color string (lab(L a b[/alpha])).
814
+ * Returns the regex match array with captured groups or null if invalid.
815
+ * @returns {[number, number, number]|null} Regex match result with captured groups, or null if not valid.
816
+ * @throws {TypeError} If input is not a string.
817
+ */
818
+ parseLab() {
819
+ return TinyColorValidator.parseLab(this.#code);
820
+ }
821
+ // --- LCH ---
822
+ /**
823
+ * Parses an LCH color string (lch(L C H[/alpha])).
824
+ * Returns the regex match array with captured groups or null if invalid.
825
+ * @param {string} input - The input string to parse.
826
+ * @returns {[number, number, number, AngleUnit|null]|null} Regex match result with captured groups, or null if not valid.
827
+ * @throws {TypeError} If input is not a string.
828
+ */
829
+ static parseLch(input) {
830
+ if (typeof input !== 'string')
831
+ throw new TypeError('parseLch: input must be a string.');
832
+ const result = new RegExp(TinyColorValidator.#LCH_REGEX, 'gm').exec(input.trim());
833
+ if (!result)
834
+ return null;
835
+ return [
836
+ parseFloat(result[1]),
837
+ parseFloat(result[2]),
838
+ parseFloat(result[3]),
839
+ // @ts-ignore
840
+ result[4] ?? null,
841
+ ];
842
+ }
843
+ /**
844
+ * Parses an LCH color string (lch(L C H[/alpha])).
845
+ * Returns the regex match array with captured groups or null if invalid.
846
+ * @returns {[number, number, number, AngleUnit|null]|null} Regex match result with captured groups, or null if not valid.
847
+ * @throws {TypeError} If input is not a string.
848
+ */
849
+ parseLch() {
850
+ return TinyColorValidator.parseLch(this.#code);
851
+ }
852
+ }
853
+ export default TinyColorValidator;