yuyeon 0.3.3 → 0.3.4-beta.12

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 (439) hide show
  1. package/dist/style.css +1 -1
  2. package/dist/yuyeon.js +3107 -3080
  3. package/dist/yuyeon.umd.cjs +3 -3
  4. package/lib/abstract/items.js.map +1 -1
  5. package/lib/components/alert/YAlert.js +3 -4
  6. package/lib/components/alert/YAlert.js.map +1 -1
  7. package/lib/components/alert/index.js.map +1 -1
  8. package/lib/components/app/YApp.js +2 -2
  9. package/lib/components/app/YApp.js.map +1 -1
  10. package/lib/components/app/index.js.map +1 -1
  11. package/lib/components/badge/YBadge.js +3 -3
  12. package/lib/components/badge/YBadge.js.map +1 -1
  13. package/lib/components/badge/YBadge.scss +3 -2
  14. package/lib/components/badge/index.js.map +1 -1
  15. package/lib/components/bench/YBench.js +3 -4
  16. package/lib/components/bench/YBench.js.map +1 -1
  17. package/lib/components/bench/index.js.map +1 -1
  18. package/lib/components/button/YButton.js +1 -2
  19. package/lib/components/button/YButton.js.map +1 -1
  20. package/lib/components/button/index.js.map +1 -1
  21. package/lib/components/card/YCard.js.map +1 -1
  22. package/lib/components/card/YCard.scss +2 -2
  23. package/lib/components/card/YCardBody.js.map +1 -1
  24. package/lib/components/card/YCardFooter.js.map +1 -1
  25. package/lib/components/card/YCardHeader.js.map +1 -1
  26. package/lib/components/card/index.js.map +1 -1
  27. package/lib/components/checkbox/YCheckbox.js +1 -2
  28. package/lib/components/checkbox/YCheckbox.js.map +1 -1
  29. package/lib/components/checkbox/YInputCheckbox.js +1 -2
  30. package/lib/components/checkbox/YInputCheckbox.js.map +1 -1
  31. package/lib/components/checkbox/index.js.map +1 -1
  32. package/lib/components/chip/YChip.js +1 -2
  33. package/lib/components/chip/YChip.js.map +1 -1
  34. package/lib/components/chip/index.js.map +1 -1
  35. package/lib/components/date-picker/YDateCalendar.js +55 -53
  36. package/lib/components/date-picker/YDateCalendar.js.map +1 -1
  37. package/lib/components/date-picker/YDatePicker.js +24 -25
  38. package/lib/components/date-picker/YDatePicker.js.map +1 -1
  39. package/lib/components/date-picker/YDatePickerControl.js +19 -20
  40. package/lib/components/date-picker/YDatePickerControl.js.map +1 -1
  41. package/lib/components/date-picker/YMonthPicker.js +10 -11
  42. package/lib/components/date-picker/YMonthPicker.js.map +1 -1
  43. package/lib/components/date-picker/YYearPicker.js +11 -13
  44. package/lib/components/date-picker/YYearPicker.js.map +1 -1
  45. package/lib/components/date-picker/index.js.map +1 -1
  46. package/lib/components/default-provider/YDefaultProvider.js.map +1 -1
  47. package/lib/components/default-provider/index.js.map +1 -1
  48. package/lib/components/dialog/YDialog.js +32 -32
  49. package/lib/components/dialog/YDialog.js.map +1 -1
  50. package/lib/components/dialog/index.js.map +1 -1
  51. package/lib/components/divider/YDivider.js +5 -5
  52. package/lib/components/divider/YDivider.js.map +1 -1
  53. package/lib/components/divider/index.js.map +1 -1
  54. package/lib/components/draggable/YDraggable.js +10 -11
  55. package/lib/components/draggable/YDraggable.js.map +1 -1
  56. package/lib/components/draggable/index.js +2 -0
  57. package/lib/components/draggable/index.js.map +1 -0
  58. package/lib/components/dropdown/YDropdown.js +16 -17
  59. package/lib/components/dropdown/YDropdown.js.map +1 -1
  60. package/lib/components/dropdown/index.js.map +1 -1
  61. package/lib/components/field-input/YFieldInput.js +42 -40
  62. package/lib/components/field-input/YFieldInput.js.map +1 -1
  63. package/lib/components/field-input/index.js.map +1 -1
  64. package/lib/components/form/YForm.js +12 -14
  65. package/lib/components/form/YForm.js.map +1 -1
  66. package/lib/components/form/index.js.map +1 -1
  67. package/lib/components/hover/YHover.js +9 -8
  68. package/lib/components/hover/YHover.js.map +1 -1
  69. package/lib/components/hover/index.js.map +1 -1
  70. package/lib/components/icon/YIcon.js +2 -4
  71. package/lib/components/icon/YIcon.js.map +1 -1
  72. package/lib/components/icon/index.js.map +1 -1
  73. package/lib/components/icons/YIconCheckbox.js +7 -6
  74. package/lib/components/icons/YIconCheckbox.js.map +1 -1
  75. package/lib/components/icons/YIconClear.js +2 -1
  76. package/lib/components/icons/YIconClear.js.map +1 -1
  77. package/lib/components/icons/YIconDropdown.js +2 -1
  78. package/lib/components/icons/YIconDropdown.js.map +1 -1
  79. package/lib/components/icons/YIconExpand.js +1 -0
  80. package/lib/components/icons/YIconExpand.js.map +1 -1
  81. package/lib/components/icons/YIconPageControl.js +7 -6
  82. package/lib/components/icons/YIconPageControl.js.map +1 -1
  83. package/lib/components/icons/YIconSort.js +6 -5
  84. package/lib/components/icons/YIconSort.js.map +1 -1
  85. package/lib/components/icons/YIconSort.scss +2 -0
  86. package/lib/components/icons/index.js.map +1 -1
  87. package/lib/components/img/YImg.js +30 -31
  88. package/lib/components/img/YImg.js.map +1 -1
  89. package/lib/components/img/index.js.map +1 -1
  90. package/lib/components/index.js.map +1 -1
  91. package/lib/components/input/YInput.js +1 -2
  92. package/lib/components/input/YInput.js.map +1 -1
  93. package/lib/components/input/YInput.scss +10 -9
  94. package/lib/components/input/index.js.map +1 -1
  95. package/lib/components/ip-field/YIpv4Field.js +1 -2
  96. package/lib/components/ip-field/YIpv4Field.js.map +1 -1
  97. package/lib/components/ip-field/index.js.map +1 -1
  98. package/lib/components/layer/YLayer.js +4 -3
  99. package/lib/components/layer/YLayer.js.map +1 -1
  100. package/lib/components/layer/active-delay.js.map +1 -1
  101. package/lib/components/layer/active-stack.js.map +1 -1
  102. package/lib/components/layer/base.js.map +1 -1
  103. package/lib/components/layer/content.js.map +1 -1
  104. package/lib/components/layer/index.js.map +1 -1
  105. package/lib/components/layer/scroll-strategies.js.map +1 -1
  106. package/lib/components/list/YList.js +1 -2
  107. package/lib/components/list/YList.js.map +1 -1
  108. package/lib/components/list/YListItem.js +1 -2
  109. package/lib/components/list/YListItem.js.map +1 -1
  110. package/lib/components/list/index.js.map +1 -1
  111. package/lib/components/loading/YSpinnerRing.js.map +1 -1
  112. package/lib/components/loading/index.js.map +1 -1
  113. package/lib/components/menu/YMenu.js +5 -8
  114. package/lib/components/menu/YMenu.js.map +1 -1
  115. package/lib/components/menu/YMenu.scss +3 -4
  116. package/lib/components/menu/index.js.map +1 -1
  117. package/lib/components/navigation/YNavigation.js +1 -2
  118. package/lib/components/navigation/YNavigation.js.map +1 -1
  119. package/lib/components/navigation/index.js.map +1 -1
  120. package/lib/components/pagination/YPagination.js +1 -2
  121. package/lib/components/pagination/YPagination.js.map +1 -1
  122. package/lib/components/pagination/index.js.map +1 -1
  123. package/lib/components/panel/YDividePanel.js +1 -2
  124. package/lib/components/panel/YDividePanel.js.map +1 -1
  125. package/lib/components/panel/YDividePanel.scss +1 -0
  126. package/lib/components/panel/index.js.map +1 -1
  127. package/lib/components/plate/YPlate.js +3 -4
  128. package/lib/components/plate/YPlate.js.map +1 -1
  129. package/lib/components/plate/index.js.map +1 -1
  130. package/lib/components/progress-bar/YProgressBar.js +1 -2
  131. package/lib/components/progress-bar/YProgressBar.js.map +1 -1
  132. package/lib/components/progress-bar/index.js.map +1 -1
  133. package/lib/components/progress-ring/YProgressRing.js +3 -4
  134. package/lib/components/progress-ring/YProgressRing.js.map +1 -1
  135. package/lib/components/progress-ring/index.js.map +1 -1
  136. package/lib/components/radio/YRadio.js +58 -0
  137. package/lib/components/radio/YRadio.js.map +1 -0
  138. package/lib/components/radio/YRadio.scss +38 -0
  139. package/lib/components/radio/YRadioIcon.js +33 -0
  140. package/lib/components/radio/YRadioIcon.js.map +1 -0
  141. package/lib/components/radio/YRadioIcon.scss +43 -0
  142. package/lib/components/radio/index.js +3 -0
  143. package/lib/components/radio/index.js.map +1 -0
  144. package/lib/components/select/YSelect.js +41 -43
  145. package/lib/components/select/YSelect.js.map +1 -1
  146. package/lib/components/select/index.js.map +1 -1
  147. package/lib/components/slider/YSlider.js.map +1 -1
  148. package/lib/components/slider/index.js.map +1 -1
  149. package/lib/components/slider/slider.js.map +1 -1
  150. package/lib/components/snackbar/YSnackbar.js +6 -6
  151. package/lib/components/snackbar/YSnackbar.js.map +1 -1
  152. package/lib/components/snackbar/index.js.map +1 -1
  153. package/lib/components/switch/YSwitch.js +1 -2
  154. package/lib/components/switch/YSwitch.js.map +1 -1
  155. package/lib/components/switch/index.js.map +1 -1
  156. package/lib/components/tab/YTab.js +2 -3
  157. package/lib/components/tab/YTab.js.map +1 -1
  158. package/lib/components/tab/YTab.scss +1 -1
  159. package/lib/components/tab/YTabs.js +1 -2
  160. package/lib/components/tab/YTabs.js.map +1 -1
  161. package/lib/components/tab/index.js.map +1 -1
  162. package/lib/components/tab/shared.js.map +1 -1
  163. package/lib/components/tab/types.js.map +1 -1
  164. package/lib/components/table/YDataTable.js +8 -6
  165. package/lib/components/table/YDataTable.js.map +1 -1
  166. package/lib/components/table/YDataTableBody.js +1 -2
  167. package/lib/components/table/YDataTableBody.js.map +1 -1
  168. package/lib/components/table/YDataTableCell.js +1 -2
  169. package/lib/components/table/YDataTableCell.js.map +1 -1
  170. package/lib/components/table/YDataTableControl.js +8 -6
  171. package/lib/components/table/YDataTableControl.js.map +1 -1
  172. package/lib/components/table/YDataTableControl.scss +10 -0
  173. package/lib/components/table/YDataTableHead.js +1 -1
  174. package/lib/components/table/YDataTableHead.js.map +1 -1
  175. package/lib/components/table/YDataTableLayer.js +1 -2
  176. package/lib/components/table/YDataTableLayer.js.map +1 -1
  177. package/lib/components/table/YDataTableLayerRow.js +1 -2
  178. package/lib/components/table/YDataTableLayerRow.js.map +1 -1
  179. package/lib/components/table/YDataTableLayerRows.js +1 -2
  180. package/lib/components/table/YDataTableLayerRows.js.map +1 -1
  181. package/lib/components/table/YDataTableRow.js +1 -2
  182. package/lib/components/table/YDataTableRow.js.map +1 -1
  183. package/lib/components/table/YDataTableServer.js +8 -6
  184. package/lib/components/table/YDataTableServer.js.map +1 -1
  185. package/lib/components/table/YTable.js +1 -2
  186. package/lib/components/table/YTable.js.map +1 -1
  187. package/lib/components/table/composables/expand.js.map +1 -1
  188. package/lib/components/table/composables/header.js.map +1 -1
  189. package/lib/components/table/composables/items.js.map +1 -1
  190. package/lib/components/table/composables/measure.js +1 -1
  191. package/lib/components/table/composables/measure.js.map +1 -1
  192. package/lib/components/table/composables/options.js.map +1 -1
  193. package/lib/components/table/composables/pagination.js.map +1 -1
  194. package/lib/components/table/composables/provides.js.map +1 -1
  195. package/lib/components/table/composables/selection.js.map +1 -1
  196. package/lib/components/table/composables/sorted-items.js.map +1 -1
  197. package/lib/components/table/composables/sorting.js.map +1 -1
  198. package/lib/components/table/index.js.map +1 -1
  199. package/lib/components/table/types/common.js.map +1 -1
  200. package/lib/components/table/types/header.js.map +1 -1
  201. package/lib/components/table/types/index.js.map +1 -1
  202. package/lib/components/table/types/item.js.map +1 -1
  203. package/lib/components/table/types/row.js.map +1 -1
  204. package/lib/components/text-ellipsis/YTextEllipsis.js +1 -2
  205. package/lib/components/text-ellipsis/YTextEllipsis.js.map +1 -1
  206. package/lib/components/text-ellipsis/index.js.map +1 -1
  207. package/lib/components/text-highlighter/YTextHighlighter.js +2 -1
  208. package/lib/components/text-highlighter/YTextHighlighter.js.map +1 -1
  209. package/lib/components/text-highlighter/index.js.map +1 -1
  210. package/lib/components/text-interpolation/YTi.js +2 -2
  211. package/lib/components/text-interpolation/YTi.js.map +1 -1
  212. package/lib/components/text-interpolation/index.js.map +1 -1
  213. package/lib/components/textarea/YTextarea.js +1 -2
  214. package/lib/components/textarea/YTextarea.js.map +1 -1
  215. package/lib/components/textarea/index.js.map +1 -1
  216. package/lib/components/toggle-button/YToggleButton.js.map +1 -1
  217. package/lib/components/toggle-button/index.js.map +1 -1
  218. package/lib/components/tooltip/YTooltip.js +1 -2
  219. package/lib/components/tooltip/YTooltip.js.map +1 -1
  220. package/lib/components/tooltip/index.js.map +1 -1
  221. package/lib/components/transitions/expand-transition.js.map +1 -1
  222. package/lib/components/transitions/index.js.map +1 -1
  223. package/lib/components/tree-view/YTreeView.js +1 -2
  224. package/lib/components/tree-view/YTreeView.js.map +1 -1
  225. package/lib/components/tree-view/YTreeViewNode.js +7 -4
  226. package/lib/components/tree-view/YTreeViewNode.js.map +1 -1
  227. package/lib/components/tree-view/index.js.map +1 -1
  228. package/lib/components/tree-view/tree-view.js.map +1 -1
  229. package/lib/components/tree-view/types.js.map +1 -1
  230. package/lib/components/tree-view/util.js.map +1 -1
  231. package/lib/composables/choice-link.js.map +1 -1
  232. package/lib/composables/choice.js.map +1 -1
  233. package/lib/composables/communication.js.map +1 -1
  234. package/lib/composables/component.js.map +1 -1
  235. package/lib/composables/coordinate/arrangement.js.map +1 -1
  236. package/lib/composables/coordinate/index.js.map +1 -1
  237. package/lib/composables/coordinate/levitation.js +2 -2
  238. package/lib/composables/coordinate/levitation.js.map +1 -1
  239. package/lib/composables/coordinate/types.js.map +1 -1
  240. package/lib/composables/coordinate/utils/point.js.map +1 -1
  241. package/lib/composables/date/factory.js.map +1 -1
  242. package/lib/composables/date/index.js.map +1 -1
  243. package/lib/composables/date/setting.js.map +1 -1
  244. package/lib/composables/date/types.js.map +1 -1
  245. package/lib/composables/defaults/index.js.map +1 -1
  246. package/lib/composables/defaults/share.js.map +1 -1
  247. package/lib/composables/defaults/types.js.map +1 -1
  248. package/lib/composables/dimension.js.map +1 -1
  249. package/lib/composables/focus.js.map +1 -1
  250. package/lib/composables/form.js +5 -5
  251. package/lib/composables/form.js.map +1 -1
  252. package/lib/composables/i18n/index.js.map +1 -1
  253. package/lib/composables/i18n/locale.js.map +1 -1
  254. package/lib/composables/i18n/rtl.js.map +1 -1
  255. package/lib/composables/i18n/share.js.map +1 -1
  256. package/lib/composables/icon.js +1 -2
  257. package/lib/composables/icon.js.map +1 -1
  258. package/lib/composables/index.js.map +1 -1
  259. package/lib/composables/layer-group.js.map +1 -1
  260. package/lib/composables/layout.js.map +1 -1
  261. package/lib/composables/list-items.js.map +1 -1
  262. package/lib/composables/progress.js.map +1 -1
  263. package/lib/composables/ref.js.map +1 -1
  264. package/lib/composables/resize-observer.js.map +1 -1
  265. package/lib/composables/scope.js.map +1 -1
  266. package/lib/composables/style-color.js +1 -2
  267. package/lib/composables/style-color.js.map +1 -1
  268. package/lib/composables/theme/factory.js.map +1 -1
  269. package/lib/composables/theme/helper.js.map +1 -1
  270. package/lib/composables/theme/index.js +8 -1
  271. package/lib/composables/theme/index.js.map +1 -1
  272. package/lib/composables/theme/setting.js.map +1 -1
  273. package/lib/composables/theme/types.js.map +1 -1
  274. package/lib/composables/timing.js.map +1 -1
  275. package/lib/composables/transition.js.map +1 -1
  276. package/lib/composables/validation.js +7 -4
  277. package/lib/composables/validation.js.map +1 -1
  278. package/lib/composables/vue-router.js.map +1 -1
  279. package/lib/directives/complement-click/index.js.map +1 -1
  280. package/lib/directives/index.js +3 -0
  281. package/lib/directives/index.js.map +1 -0
  282. package/lib/directives/plate-wave/index.js +2 -2
  283. package/lib/directives/plate-wave/index.js.map +1 -1
  284. package/lib/directives/theme-class/index.js +24 -0
  285. package/lib/directives/theme-class/index.js.map +1 -0
  286. package/lib/etc/index.js.map +1 -1
  287. package/lib/i18n/built-in.js.map +1 -1
  288. package/lib/i18n/config.js.map +1 -1
  289. package/lib/i18n/types.js.map +1 -1
  290. package/lib/index.js +3 -3
  291. package/lib/index.js.map +1 -1
  292. package/lib/locales/en.js.map +1 -1
  293. package/lib/locales/index.js.map +1 -1
  294. package/lib/locales/ko.js.map +1 -1
  295. package/lib/mixins/di.js.map +1 -1
  296. package/lib/mixins/rebind-attrs.js +0 -2
  297. package/lib/mixins/rebind-attrs.js.map +1 -1
  298. package/lib/styles/_elevation.scss +0 -1
  299. package/lib/styles/base.scss +3 -1
  300. package/lib/styles/settings/_elevation.scss +12 -12
  301. package/lib/styles/settings/_provided.scss +23 -23
  302. package/lib/styles/theme/dark.scss +3 -3
  303. package/lib/styles/theme/index.scss +0 -1
  304. package/lib/styles/theme/light.scss +3 -3
  305. package/lib/styles/util/_mixin.scss +16 -16
  306. package/lib/types/index.js.map +1 -1
  307. package/lib/util/anchor.js.map +1 -1
  308. package/lib/util/array.js.map +1 -1
  309. package/lib/util/collection.js.map +1 -1
  310. package/lib/util/color/apca.js +1 -0
  311. package/lib/util/color/apca.js.map +1 -1
  312. package/lib/util/color/const.js.map +1 -1
  313. package/lib/util/color/contrast/contrast.js.map +1 -1
  314. package/lib/util/color/conversion.js.map +1 -1
  315. package/lib/util/color/hct/cam16.js.map +1 -1
  316. package/lib/util/color/hct/hct-solver.js +6 -6
  317. package/lib/util/color/hct/hct-solver.js.map +1 -1
  318. package/lib/util/color/hct/hct.js.map +1 -1
  319. package/lib/util/color/hct/viewing-conditions.js +6 -4
  320. package/lib/util/color/hct/viewing-conditions.js.map +1 -1
  321. package/lib/util/color/index.js +13 -13
  322. package/lib/util/color/index.js.map +1 -1
  323. package/lib/util/color/palettes/core-palette.js.map +1 -1
  324. package/lib/util/color/palettes/tonal-palette.js +3 -3
  325. package/lib/util/color/palettes/tonal-palette.js.map +1 -1
  326. package/lib/util/color/types.js.map +1 -1
  327. package/lib/util/color/utils/math-utils.js +62 -62
  328. package/lib/util/color/utils/math-utils.js.map +1 -1
  329. package/lib/util/common.js +28 -13
  330. package/lib/util/common.js.map +1 -1
  331. package/lib/util/component/component.js.map +1 -1
  332. package/lib/util/component/index.js.map +1 -1
  333. package/lib/util/component/inject-self.js.map +1 -1
  334. package/lib/util/component/props.js.map +1 -1
  335. package/lib/util/component/types.js.map +1 -1
  336. package/lib/util/date/adapters/yuyeon-date-adapter.js +3 -3
  337. package/lib/util/date/adapters/yuyeon-date-adapter.js.map +1 -1
  338. package/lib/util/date/built-in.js +2 -0
  339. package/lib/util/date/built-in.js.map +1 -1
  340. package/lib/util/date/index.js +1 -1
  341. package/lib/util/date/index.js.map +1 -1
  342. package/lib/util/date/types.js.map +1 -1
  343. package/lib/util/debounce.js +1 -1
  344. package/lib/util/debounce.js.map +1 -1
  345. package/lib/util/dom.js +10 -1
  346. package/lib/util/dom.js.map +1 -1
  347. package/lib/util/environments.js.map +1 -1
  348. package/lib/util/frame-scheduler.js +3 -3
  349. package/lib/util/frame-scheduler.js.map +1 -1
  350. package/lib/util/index.js +11 -11
  351. package/lib/util/index.js.map +1 -1
  352. package/lib/util/reactivity.js +3 -3
  353. package/lib/util/reactivity.js.map +1 -1
  354. package/lib/util/rect.js.map +1 -1
  355. package/lib/util/scroll.js.map +1 -1
  356. package/lib/util/string.js +6 -1
  357. package/lib/util/string.js.map +1 -1
  358. package/lib/util/ui.js.map +1 -1
  359. package/lib/util/validation.js.map +1 -1
  360. package/package.json +132 -123
  361. package/types/abstract/items.d.ts +4 -4
  362. package/types/components/alert/YAlert.d.ts +2 -2
  363. package/types/components/badge/YBadge.d.ts +0 -3
  364. package/types/components/button/YButton.d.ts +3 -3
  365. package/types/components/checkbox/YCheckbox.d.ts +4 -4
  366. package/types/components/chip/YChip.d.ts +0 -3
  367. package/types/components/date-picker/YDateCalendar.d.ts +3 -3
  368. package/types/components/date-picker/YDatePickerControl.d.ts +7 -7
  369. package/types/components/dialog/YDialog.d.ts +108 -6480
  370. package/types/components/draggable/YDraggable.d.ts +6 -6
  371. package/types/components/draggable/index.d.ts +1 -0
  372. package/types/components/dropdown/YDropdown.d.ts +87 -87
  373. package/types/components/field-input/YFieldInput.d.ts +20 -14
  374. package/types/components/form/YForm.d.ts +3 -3
  375. package/types/components/icon/YIcon.d.ts +4 -4
  376. package/types/components/icons/YIconPageControl.d.ts +1 -1
  377. package/types/components/icons/YIconSort.d.ts +1 -1
  378. package/types/components/icons/index.d.ts +4 -4
  379. package/types/components/img/YImg.d.ts +26 -26
  380. package/types/components/input/YInput.d.ts +13 -13
  381. package/types/components/ip-field/YIpv4Field.d.ts +5 -5
  382. package/types/components/layer/YLayer.d.ts +55 -3240
  383. package/types/components/layer/scroll-strategies.d.ts +4 -4
  384. package/types/components/menu/YMenu.d.ts +74 -6446
  385. package/types/components/pagination/YPagination.d.ts +3 -3
  386. package/types/components/radio/YRadio.d.ts +25 -0
  387. package/types/components/radio/YRadioIcon.d.ts +6 -0
  388. package/types/components/radio/index.d.ts +2 -0
  389. package/types/components/select/YSelect.d.ts +178 -496
  390. package/types/components/slider/YSlider.d.ts +1 -1
  391. package/types/components/snackbar/YSnackbar.d.ts +55 -55
  392. package/types/components/tab/YTab.d.ts +3 -3
  393. package/types/components/tab/YTabs.d.ts +1 -1
  394. package/types/components/table/YDataTable.d.ts +33 -87
  395. package/types/components/table/YDataTableBody.d.ts +3 -3
  396. package/types/components/table/YDataTableCell.d.ts +2 -2
  397. package/types/components/table/YDataTableControl.d.ts +18 -6
  398. package/types/components/table/YDataTableLayer.d.ts +2 -2
  399. package/types/components/table/YDataTableRow.d.ts +1 -1
  400. package/types/components/table/YDataTableServer.d.ts +54 -99
  401. package/types/components/table/YTable.d.ts +3 -3
  402. package/types/components/table/composables/expand.d.ts +4 -4
  403. package/types/components/table/composables/header.d.ts +16 -48
  404. package/types/components/table/composables/items.d.ts +2 -2
  405. package/types/components/table/composables/pagination.d.ts +10 -10
  406. package/types/components/table/composables/selection.d.ts +6 -6
  407. package/types/components/table/composables/sorting.d.ts +8 -14
  408. package/types/components/table/types/item.d.ts +1 -1
  409. package/types/components/textarea/YTextarea.d.ts +30 -30
  410. package/types/components/tooltip/YTooltip.d.ts +67 -67
  411. package/types/components/tree-view/YTreeView.d.ts +7 -7
  412. package/types/components/tree-view/YTreeViewNode.d.ts +5 -5
  413. package/types/components/tree-view/tree-view.d.ts +2 -2
  414. package/types/composables/choice.d.ts +2 -2
  415. package/types/composables/coordinate/index.d.ts +27 -3205
  416. package/types/composables/dimension.d.ts +6 -6
  417. package/types/composables/form.d.ts +17 -27
  418. package/types/composables/list-items.d.ts +3 -3
  419. package/types/composables/style-color.d.ts +0 -1
  420. package/types/composables/theme/index.d.ts +1 -0
  421. package/types/composables/transition.d.ts +10 -10
  422. package/types/composables/validation.d.ts +6 -6
  423. package/types/composables/vue-router.d.ts +3 -3
  424. package/types/declares.d.ts +1 -0
  425. package/types/directives/index.d.ts +2 -0
  426. package/types/directives/plate-wave/index.d.ts +7 -1
  427. package/types/globals.d.ts +19 -20
  428. package/types/shims.d.ts +58 -52
  429. package/types/types/index.d.ts +3 -0
  430. package/types/util/anchor.d.ts +1 -1
  431. package/types/util/common.d.ts +3 -0
  432. package/types/util/component/component.d.ts +1 -2
  433. package/types/util/component/props.d.ts +1 -1
  434. package/types/util/component/types.d.ts +1 -1
  435. package/types/util/date/index.d.ts +1 -1
  436. package/types/util/dom.d.ts +2 -0
  437. package/types/util/index.d.ts +11 -11
  438. package/types/util/string.d.ts +1 -0
  439. /package/types/directives/{theme-class.d.ts → theme-class/index.d.ts} +0 -0
@@ -33,7 +33,7 @@
33
33
  .slide-fade-enter-active,
34
34
  .slide-fade-leave-active {
35
35
  transition: transform 240ms variables.$basic-transition-timing-function,
36
- opacity 240ms linear;
36
+ opacity 240ms linear;
37
37
  }
38
38
 
39
39
  .slide-fade-enter-from,
@@ -48,6 +48,7 @@
48
48
  transition-timing-function: variables.$basic-transition-timing-function;
49
49
  transition-property: height;
50
50
  }
51
+
51
52
  &-leave-active {
52
53
  transition-duration: 240ms;
53
54
  transition-timing-function: variables.$basic-transition-timing-function;
@@ -61,6 +62,7 @@
61
62
  transition-timing-function: variables.$basic-transition-timing-function;
62
63
  transition-property: width;
63
64
  }
65
+
64
66
  &-leave-active {
65
67
  transition-duration: 240ms;
66
68
  transition-timing-function: variables.$basic-transition-timing-function;
@@ -2,19 +2,19 @@ $core-shadow-opacity: 0.3;
2
2
  $ambient-shadow-opacity: 0.15;
3
3
 
4
4
  $core-shadow-dimension: (
5
- 0: (0px 0px 0px 0px),
6
- 1: (0px 1px 2px 0px),
7
- 2: (0px 1px 2px 0px),
8
- 3: (0px 1px 3px 0px),
9
- 4: (0px 2px 3px 0px),
10
- 5: (0px 4px 4px 0px),
5
+ 0: (0px 0px 0px 0px),
6
+ 1: (0px 1px 2px 0px),
7
+ 2: (0px 1px 2px 0px),
8
+ 3: (0px 1px 3px 0px),
9
+ 4: (0px 2px 3px 0px),
10
+ 5: (0px 4px 4px 0px),
11
11
  );
12
12
 
13
13
  $ambient-shadow-dimension: (
14
- 0: (0px 0px 0px 0px),
15
- 1: (0px 1px 3px 1px),
16
- 2: (0px 2px 6px 2px),
17
- 3: (0px 4px 8px 3px),
18
- 4: (0px 6px 10px 4px),
19
- 5: (0px 8px 12px 6px),
14
+ 0: (0px 0px 0px 0px),
15
+ 1: (0px 1px 3px 1px),
16
+ 2: (0px 2px 6px 2px),
17
+ 3: (0px 4px 8px 3px),
18
+ 4: (0px 6px 10px 4px),
19
+ 5: (0px 8px 12px 6px),
20
20
  )
@@ -1,31 +1,31 @@
1
1
  $box-side-direction: ('top', 'right', 'bottom', 'left');
2
2
  $box-side-combinations: (
3
- 'a': (),
4
- 'v': (
5
- 'top',
6
- 'bottom',
7
- ),
8
- 'h': (
9
- 'right',
10
- 'left',
11
- ),
12
- 't': (
13
- 'top',
14
- ),
15
- 'r': (
16
- 'right',
17
- ),
18
- 'b': (
19
- 'bottom',
20
- ),
21
- 'l': (
22
- 'left',
23
- ),
3
+ 'a': (),
4
+ 'v': (
5
+ 'top',
6
+ 'bottom',
7
+ ),
8
+ 'h': (
9
+ 'right',
10
+ 'left',
11
+ ),
12
+ 't': (
13
+ 'top',
14
+ ),
15
+ 'r': (
16
+ 'right',
17
+ ),
18
+ 'b': (
19
+ 'bottom',
20
+ ),
21
+ 'l': (
22
+ 'left',
23
+ ),
24
24
  );
25
25
 
26
26
  $space-types: (
27
- 'm': 'margin',
28
- 'p': 'padding',
27
+ 'm': 'margin',
28
+ 'p': 'padding',
29
29
  );
30
30
 
31
31
  $text-aligns: ('center', 'left', 'right');
@@ -5,7 +5,7 @@
5
5
  // yui/app theme
6
6
  $theme--dark: () !default;
7
7
  $theme--dark: map.deep-merge(
8
- (
9
- ),
10
- $theme--dark
8
+ (
9
+ ),
10
+ $theme--dark
11
11
  );
@@ -1,4 +1,3 @@
1
-
2
1
  @forward 'light';
3
2
  @forward 'dark';
4
3
 
@@ -5,7 +5,7 @@
5
5
  // yui theme
6
6
  $theme--light: () !default;
7
7
  $theme--light: map.deep-merge(
8
- (
9
- ),
10
- $theme--light
8
+ (
9
+ ),
10
+ $theme--light
11
11
  );
@@ -1,22 +1,22 @@
1
1
  @use 'sass:map';
2
2
 
3
3
  $border-radius: (
4
- 'top': (
5
- 'top-left',
6
- 'top-right',
7
- ),
8
- 'bottom': (
9
- 'bottom-left',
10
- 'bottom-right',
11
- ),
12
- 'left': (
13
- 'top-left',
14
- 'bottom-left',
15
- ),
16
- 'right': (
17
- 'top-right',
18
- 'bottom-right',
19
- ),
4
+ 'top': (
5
+ 'top-left',
6
+ 'top-right',
7
+ ),
8
+ 'bottom': (
9
+ 'bottom-left',
10
+ 'bottom-right',
11
+ ),
12
+ 'left': (
13
+ 'top-left',
14
+ 'bottom-left',
15
+ ),
16
+ 'right': (
17
+ 'top-right',
18
+ 'bottom-right',
19
+ ),
20
20
  );
21
21
 
22
22
  @mixin borderRadius($round, $side) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/types/index.ts"],"sourcesContent":["import type { ComponentPublicInstance, FunctionalComponent } from 'vue';\n\nexport type CandidateKey = string | number;\n\nexport type JSXComponent<Props = any> =\n | FunctionalComponent<Props>\n | { new (): ComponentPublicInstance<Props> };\n"],"mappings":""}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/types/index.ts"],"sourcesContent":["import type { ComponentPublicInstance, FunctionalComponent } from 'vue';\n\nexport type CandidateKey = string | number;\n\nexport type JSXComponent<Props = any> =\n | FunctionalComponent<Props>\n | { new (): ComponentPublicInstance<Props> };\n\nexport type CssProperties = { [p: `--${string}`]: string | number | undefined };\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"anchor.js","names":["includes","array","item","block","inline","parseAnchor","anchor","isRtl","side","align","split","toPhysical","str","flipSide","center","top","bottom","left","right","flipAlign","flipCorner","getAxis"],"sources":["../../src/util/anchor.ts"],"sourcesContent":["const includes = <T, A extends T>(\r\n array: ReadonlyArray<A>,\r\n item: T,\r\n): item is A => array.includes(item as A);\r\n\r\nconst block = ['top', 'bottom'] as const;\r\nconst inline = ['start', 'end', 'left', 'right'] as const;\r\ntype Tblock = (typeof block)[number];\r\ntype Tinline = (typeof inline)[number];\r\nexport type Anchor =\r\n | Tblock\r\n | Tinline\r\n | 'center'\r\n | 'center center'\r\n | `${Tblock} ${Tinline | 'center'}`\r\n | `${Tinline} ${Tblock | 'center'}`;\r\nexport type ParsedAnchor =\r\n | { side: 'center'; align: 'center' }\r\n | { side: Tblock; align: 'left' | 'right' | 'center' }\r\n | { side: 'left' | 'right'; align: Tblock | 'center' };\r\n\r\n/** Parse a raw anchor string into an object */\r\nexport function parseAnchor(anchor: Anchor, isRtl: boolean) {\r\n let [side, align] = anchor.split(' ') as [\r\n Tblock | Tinline | 'center',\r\n Tblock | Tinline | 'center' | undefined,\r\n ];\r\n if (!align) {\r\n align = includes(block, side)\r\n ? 'start'\r\n : includes(inline, side)\r\n ? 'top'\r\n : 'center';\r\n }\r\n\r\n return {\r\n side: toPhysical(side, isRtl),\r\n align: toPhysical(align, isRtl),\r\n } as ParsedAnchor;\r\n}\r\n\r\nexport function toPhysical(str: 'center' | Tblock | Tinline, isRtl: boolean) {\r\n if (str === 'start') return isRtl ? 'right' : 'left';\r\n if (str === 'end') return isRtl ? 'left' : 'right';\r\n return str;\r\n}\r\n\r\nexport function flipSide(anchor: ParsedAnchor) {\r\n return {\r\n side: {\r\n center: 'center',\r\n top: 'bottom',\r\n bottom: 'top',\r\n left: 'right',\r\n right: 'left',\r\n }[anchor.side],\r\n align: anchor.align,\r\n } as ParsedAnchor;\r\n}\r\n\r\nexport function flipAlign(anchor: ParsedAnchor) {\r\n return {\r\n side: anchor.side,\r\n align: {\r\n center: 'center',\r\n top: 'bottom',\r\n bottom: 'top',\r\n left: 'right',\r\n right: 'left',\r\n }[anchor.align],\r\n } as ParsedAnchor;\r\n}\r\n\r\nexport function flipCorner(anchor: ParsedAnchor) {\r\n return {\r\n side: anchor.align,\r\n align: anchor.side,\r\n } as ParsedAnchor;\r\n}\r\n\r\nexport function getAxis(anchor: ParsedAnchor) {\r\n return includes(block, anchor.side) ? 'y' : 'x';\r\n}\r\n"],"mappings":"AAAA,MAAMA,QAAQ,GAAGA,CACfC,KAAuB,EACvBC,IAAO,KACOD,KAAK,CAACD,QAAQ,CAACE,IAAS,CAAC;AAEzC,MAAMC,KAAK,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAU;AACxC,MAAMC,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAU;AAezD;AACA,OAAO,SAASC,WAAWA,CAACC,MAAc,EAAEC,KAAc,EAAE;EAC1D,IAAI,CAACC,IAAI,EAAEC,KAAK,CAAC,GAAGH,MAAM,CAACI,KAAK,CAAC,GAAG,CAGnC;EACD,IAAI,CAACD,KAAK,EAAE;IACVA,KAAK,GAAGT,QAAQ,CAACG,KAAK,EAAEK,IAAI,CAAC,GACzB,OAAO,GACPR,QAAQ,CAACI,MAAM,EAAEI,IAAI,CAAC,GACpB,KAAK,GACL,QAAQ;EAChB;EAEA,OAAO;IACLA,IAAI,EAAEG,UAAU,CAACH,IAAI,EAAED,KAAK,CAAC;IAC7BE,KAAK,EAAEE,UAAU,CAACF,KAAK,EAAEF,KAAK;EAChC,CAAC;AACH;AAEA,OAAO,SAASI,UAAUA,CAACC,GAAgC,EAAEL,KAAc,EAAE;EAC3E,IAAIK,GAAG,KAAK,OAAO,EAAE,OAAOL,KAAK,GAAG,OAAO,GAAG,MAAM;EACpD,IAAIK,GAAG,KAAK,KAAK,EAAE,OAAOL,KAAK,GAAG,MAAM,GAAG,OAAO;EAClD,OAAOK,GAAG;AACZ;AAEA,OAAO,SAASC,QAAQA,CAACP,MAAoB,EAAE;EAC7C,OAAO;IACLE,IAAI,EAAE;MACJM,MAAM,EAAE,QAAQ;MAChBC,GAAG,EAAE,QAAQ;MACbC,MAAM,EAAE,KAAK;MACbC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE;IACT,CAAC,CAACZ,MAAM,CAACE,IAAI,CAAC;IACdC,KAAK,EAAEH,MAAM,CAACG;EAChB,CAAC;AACH;AAEA,OAAO,SAASU,SAASA,CAACb,MAAoB,EAAE;EAC9C,OAAO;IACLE,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBC,KAAK,EAAE;MACLK,MAAM,EAAE,QAAQ;MAChBC,GAAG,EAAE,QAAQ;MACbC,MAAM,EAAE,KAAK;MACbC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE;IACT,CAAC,CAACZ,MAAM,CAACG,KAAK;EAChB,CAAC;AACH;AAEA,OAAO,SAASW,UAAUA,CAACd,MAAoB,EAAE;EAC/C,OAAO;IACLE,IAAI,EAAEF,MAAM,CAACG,KAAK;IAClBA,KAAK,EAAEH,MAAM,CAACE;EAChB,CAAC;AACH;AAEA,OAAO,SAASa,OAAOA,CAACf,MAAoB,EAAE;EAC5C,OAAON,QAAQ,CAACG,KAAK,EAAEG,MAAM,CAACE,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG;AACjD"}
1
+ {"version":3,"file":"anchor.js","names":["includes","array","item","block","inline","parseAnchor","anchor","isRtl","side","align","split","toPhysical","str","flipSide","center","top","bottom","left","right","flipAlign","flipCorner","getAxis"],"sources":["../../src/util/anchor.ts"],"sourcesContent":["const includes = <T, A extends T>(\n array: ReadonlyArray<A>,\n item: T,\n): item is A => array.includes(item as A);\n\nconst block = ['top', 'bottom'] as const;\nconst inline = ['start', 'end', 'left', 'right'] as const;\ntype Tblock = (typeof block)[number];\ntype Tinline = (typeof inline)[number];\nexport type Anchor =\n | Tblock\n | Tinline\n | 'center'\n | 'center center'\n | `${Tblock} ${Tinline | 'center'}`\n | `${Tinline} ${Tblock | 'center'}`;\nexport type ParsedAnchor =\n | { side: 'center'; align: 'center' }\n | { side: Tblock; align: 'left' | 'right' | 'center' }\n | { side: 'left' | 'right'; align: Tblock | 'center' };\n\n/** Parse a raw anchor string into an object */\nexport function parseAnchor(anchor: Anchor, isRtl: boolean) {\n let [side, align] = anchor.split(' ') as [\n Tblock | Tinline | 'center',\n Tblock | Tinline | 'center' | undefined,\n ];\n if (!align) {\n align = includes(block, side)\n ? 'start'\n : includes(inline, side)\n ? 'top'\n : 'center';\n }\n\n return {\n side: toPhysical(side, isRtl),\n align: toPhysical(align, isRtl),\n } as ParsedAnchor;\n}\n\nexport function toPhysical(str: 'center' | Tblock | Tinline, isRtl: boolean) {\n if (str === 'start') return isRtl ? 'right' : 'left';\n if (str === 'end') return isRtl ? 'left' : 'right';\n return str;\n}\n\nexport function flipSide(anchor: ParsedAnchor) {\n return {\n side: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n }[anchor.side],\n align: anchor.align,\n } as ParsedAnchor;\n}\n\nexport function flipAlign(anchor: ParsedAnchor) {\n return {\n side: anchor.side,\n align: {\n center: 'center',\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n }[anchor.align],\n } as ParsedAnchor;\n}\n\nexport function flipCorner(anchor: ParsedAnchor) {\n return {\n side: anchor.align,\n align: anchor.side,\n } as ParsedAnchor;\n}\n\nexport function getAxis(anchor: ParsedAnchor) {\n return includes(block, anchor.side) ? 'y' : 'x';\n}\n"],"mappings":"AAAA,MAAMA,QAAQ,GAAGA,CACfC,KAAuB,EACvBC,IAAO,KACOD,KAAK,CAACD,QAAQ,CAACE,IAAS,CAAC;AAEzC,MAAMC,KAAK,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAU;AACxC,MAAMC,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAU;AAezD;AACA,OAAO,SAASC,WAAWA,CAACC,MAAc,EAAEC,KAAc,EAAE;EAC1D,IAAI,CAACC,IAAI,EAAEC,KAAK,CAAC,GAAGH,MAAM,CAACI,KAAK,CAAC,GAAG,CAGnC;EACD,IAAI,CAACD,KAAK,EAAE;IACVA,KAAK,GAAGT,QAAQ,CAACG,KAAK,EAAEK,IAAI,CAAC,GACzB,OAAO,GACPR,QAAQ,CAACI,MAAM,EAAEI,IAAI,CAAC,GACpB,KAAK,GACL,QAAQ;EAChB;EAEA,OAAO;IACLA,IAAI,EAAEG,UAAU,CAACH,IAAI,EAAED,KAAK,CAAC;IAC7BE,KAAK,EAAEE,UAAU,CAACF,KAAK,EAAEF,KAAK;EAChC,CAAC;AACH;AAEA,OAAO,SAASI,UAAUA,CAACC,GAAgC,EAAEL,KAAc,EAAE;EAC3E,IAAIK,GAAG,KAAK,OAAO,EAAE,OAAOL,KAAK,GAAG,OAAO,GAAG,MAAM;EACpD,IAAIK,GAAG,KAAK,KAAK,EAAE,OAAOL,KAAK,GAAG,MAAM,GAAG,OAAO;EAClD,OAAOK,GAAG;AACZ;AAEA,OAAO,SAASC,QAAQA,CAACP,MAAoB,EAAE;EAC7C,OAAO;IACLE,IAAI,EAAE;MACJM,MAAM,EAAE,QAAQ;MAChBC,GAAG,EAAE,QAAQ;MACbC,MAAM,EAAE,KAAK;MACbC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE;IACT,CAAC,CAACZ,MAAM,CAACE,IAAI,CAAC;IACdC,KAAK,EAAEH,MAAM,CAACG;EAChB,CAAC;AACH;AAEA,OAAO,SAASU,SAASA,CAACb,MAAoB,EAAE;EAC9C,OAAO;IACLE,IAAI,EAAEF,MAAM,CAACE,IAAI;IACjBC,KAAK,EAAE;MACLK,MAAM,EAAE,QAAQ;MAChBC,GAAG,EAAE,QAAQ;MACbC,MAAM,EAAE,KAAK;MACbC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE;IACT,CAAC,CAACZ,MAAM,CAACG,KAAK;EAChB,CAAC;AACH;AAEA,OAAO,SAASW,UAAUA,CAACd,MAAoB,EAAE;EAC/C,OAAO;IACLE,IAAI,EAAEF,MAAM,CAACG,KAAK;IAClBA,KAAK,EAAEH,MAAM,CAACE;EAChB,CAAC;AACH;AAEA,OAAO,SAASa,OAAOA,CAACf,MAAoB,EAAE;EAC5C,OAAON,QAAQ,CAACG,KAAK,EAAEG,MAAM,CAACE,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG;AACjD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","names":["differenceBetween","inspect","exclude","ret","target","includes","push","wrapInArray","arrOrNot","Array","isArray"],"sources":["../../src/util/array.ts"],"sourcesContent":["export function differenceBetween(inspect: any[], exclude: any[]) {\n const ret = [];\n for (const target of exclude) {\n if (!inspect.includes(target)) {\n ret.push(target);\n }\n }\n return ret;\n}\n\nexport function wrapInArray(arrOrNot: any | any[]) {\n return Array.isArray(arrOrNot) ? arrOrNot : [arrOrNot];\n}\n"],"mappings":"AAAA,OAAO,SAASA,iBAAiBA,CAACC,OAAc,EAAEC,OAAc,EAAE;EAChE,MAAMC,GAAG,GAAG,EAAE;EACd,KAAK,MAAMC,MAAM,IAAIF,OAAO,EAAE;IAC5B,IAAI,CAACD,OAAO,CAACI,QAAQ,CAACD,MAAM,CAAC,EAAE;MAC7BD,GAAG,CAACG,IAAI,CAACF,MAAM,CAAC;IAClB;EACF;EACA,OAAOD,GAAG;AACZ;AAEA,OAAO,SAASI,WAAWA,CAACC,QAAqB,EAAE;EACjD,OAAOC,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAC;AACxD"}
1
+ {"version":3,"file":"array.js","names":["differenceBetween","inspect","exclude","ret","target","includes","push","wrapInArray","arrOrNot","Array","isArray"],"sources":["../../src/util/array.ts"],"sourcesContent":["export function differenceBetween(inspect: any[], exclude: any[]) {\n const ret = [];\n for (const target of exclude) {\n if (!inspect.includes(target)) {\n ret.push(target);\n }\n }\n return ret;\n}\n\nexport function wrapInArray(arrOrNot: any | any[]) {\n return Array.isArray(arrOrNot) ? arrOrNot : [arrOrNot];\n}\n"],"mappings":"AAAA,OAAO,SAASA,iBAAiBA,CAACC,OAAc,EAAEC,OAAc,EAAE;EAChE,MAAMC,GAAG,GAAG,EAAE;EACd,KAAK,MAAMC,MAAM,IAAIF,OAAO,EAAE;IAC5B,IAAI,CAACD,OAAO,CAACI,QAAQ,CAACD,MAAM,CAAC,EAAE;MAC7BD,GAAG,CAACG,IAAI,CAACF,MAAM,CAAC;IAClB;EACF;EACA,OAAOD,GAAG;AACZ;AAEA,OAAO,SAASI,WAAWA,CAACC,QAAqB,EAAE;EACjD,OAAOC,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,GAAGA,QAAQ,GAAG,CAACA,QAAQ,CAAC;AACxD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","names":["getFlatChildren","children","childrenKey","arguments","length","undefined","map","child"],"sources":["../../src/util/collection.ts"],"sourcesContent":["export function getFlatChildren(\r\n children: any[],\r\n childrenKey = 'children',\r\n): any[] {\r\n return children.map((child) => {\r\n if (child[childrenKey]) {\r\n return [child, ...getFlatChildren(child[childrenKey])];\r\n }\r\n return [child];\r\n });\r\n}\r\n"],"mappings":"AAAA,OAAO,SAASA,eAAeA,CAC7BC,QAAe,EAER;EAAA,IADPC,WAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,UAAU;EAExB,OAAOF,QAAQ,CAACK,GAAG,CAAEC,KAAK,IAAK;IAC7B,IAAIA,KAAK,CAACL,WAAW,CAAC,EAAE;MACtB,OAAO,CAACK,KAAK,EAAE,GAAGP,eAAe,CAACO,KAAK,CAACL,WAAW,CAAC,CAAC,CAAC;IACxD;IACA,OAAO,CAACK,KAAK,CAAC;EAChB,CAAC,CAAC;AACJ"}
1
+ {"version":3,"file":"collection.js","names":["getFlatChildren","children","childrenKey","arguments","length","undefined","map","child"],"sources":["../../src/util/collection.ts"],"sourcesContent":["export function getFlatChildren(\n children: any[],\n childrenKey = 'children',\n): any[] {\n return children.map((child) => {\n if (child[childrenKey]) {\n return [child, ...getFlatChildren(child[childrenKey])];\n }\n return [child];\n });\n}\n"],"mappings":"AAAA,OAAO,SAASA,eAAeA,CAC7BC,QAAe,EAER;EAAA,IADPC,WAAW,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,UAAU;EAExB,OAAOF,QAAQ,CAACK,GAAG,CAAEC,KAAK,IAAK;IAC7B,IAAIA,KAAK,CAACL,WAAW,CAAC,EAAE;MACtB,OAAO,CAACK,KAAK,EAAE,GAAGP,eAAe,CAACO,KAAK,CAACL,WAAW,CAAC,CAAC,CAAC;IACxD;IACA,OAAO,CAACK,KAAK,CAAC;EAChB,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -171,6 +171,7 @@ export function APCAcontrast(txtY, bgY) {
171
171
  if (places < 0) {
172
172
  // Default (-1) number out, all others are strings
173
173
  return outputContrast * 100.0;
174
+ // biome-ignore lint/suspicious/noDoubleEquals: <explanation>
174
175
  } else if (places == 0) {
175
176
  return Math.round(Math.abs(outputContrast) * 100.0) + '<sub>' + polCat + '</sub>';
176
177
  } else if (Number.isInteger(places)) {
@@ -1 +1 @@
1
- {"version":3,"file":"apca.js","names":["SA98G","mainTRC","mainTRCencode","sRco","sGco","sBco","normBG","normTXT","revTXT","revBG","blkThrs","blkClmp","scaleBoW","scaleWoB","loBoWoffset","loWoBoffset","deltaYmin","loClip","mFactor","mFactInv","mOffsetIn","mExpAdj","mExp","mOffsetOut","sRGBtoY","rgb","arguments","length","undefined","simpleExp","chan","Math","pow","APCAcontrast","txtY","bgY","places","icp","isNaN","min","max","SAPC","outputContrast","polCat","abs","round","Number","isInteger","toFixed","alphaBlend","rgbaFG","rgbBG","compBlend","rgbOut","i"],"sources":["../../../src/util/color/apca.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n/** @preserve\n ///// SAPC APCA - Advanced Perceptual Contrast Algorithm\n ///// Beta 0.1.9 W3 • contrast function only\n ///// DIST: W3 • Revision date: July 3, 2022\n ///// Function to parse color values and determine Lc contrast\n ///// Copyright © 2019-2022 by Andrew Somers. All Rights Reserved.\n ///// LICENSE: W3 LICENSE\n ///// CONTACT: Please use the ISSUES or DISCUSSIONS tab at:\n ///// https://github.com/Myndex/SAPC-APCA/\n /////\n ///////////////////////////////////////////////////////////////////////////////\n /////\n ///// MINIMAL IMPORTS:\n ///// import { APCAcontrast, sRGBtoY, displayP3toY,\n///// calcAPCA, fontLookupAPCA } from 'apca-w3';\n ///// import { colorParsley } from 'colorparsley';\n /////\n ///// FORWARD CONTRAST USAGE:\n ///// Lc = APCAcontrast( sRGBtoY( TEXTcolor ) , sRGBtoY( BACKGNDcolor ) );\n ///// Where the colors are sent as an rgba array [255,255,255,1]\n /////\n ///// Retrieving an array of font sizes for the contrast:\n ///// fontArray = fontLookupAPCA(Lc);\n /////\n ///// Live Demonstrator at https://www.myndex.com/APCA/\n // */\n///////////////////////////////////////////////////////////////////////////////\n\n///// Module Scope Object Containing Constants /////\n///// APCA 0.0.98G - 4g - W3 Compatible Constants\n\n///// 𝒦 SA98G ///////////////////////////////////\nconst SA98G = {\n mainTRC: 2.4, // 2.4 exponent for emulating actual monitor perception\n\n // For reverseAPCA\n get mainTRCencode() {\n return 1 / this.mainTRC;\n },\n\n // sRGB coefficients\n sRco: 0.2126729,\n sGco: 0.7151522,\n sBco: 0.072175,\n\n // G-4g constants for use with 2.4 exponent\n normBG: 0.56,\n normTXT: 0.57,\n revTXT: 0.62,\n revBG: 0.65,\n\n // G-4g Clamps and Scalers\n blkThrs: 0.022,\n blkClmp: 1.414,\n scaleBoW: 1.14,\n scaleWoB: 1.14,\n loBoWoffset: 0.027,\n loWoBoffset: 0.027,\n deltaYmin: 0.0005,\n loClip: 0.1,\n\n ///// MAGIC NUMBERS for UNCLAMP, for use with 0.022 & 1.414 /////\n // Magic Numbers for reverseAPCA\n mFactor: 1.9468554433171,\n get mFactInv() {\n return 1 / this.mFactor;\n },\n mOffsetIn: 0.0387393816571401,\n mExpAdj: 0.283343396420869,\n get mExp() {\n return this.mExpAdj / this.blkClmp;\n },\n mOffsetOut: 0.312865795870758,\n};\n\n//////////////////////////////////////////////////////////////////////////////\n////////// LUMINANCE CONVERTERS |//////////////////////////////////////////\n\n////////// ƒ sRGBtoY() //////////////////////////////////////////////////\nexport function sRGBtoY(rgb = [0, 0, 0]) {\n // send sRGB 8bpc (0xFFFFFF) or string\n\n // NOTE: Currently expects 0-255\n\n ///// APCA 0.0.98G - 4g - W3 Compatible Constants ////////////////////\n /*\n const mainTRC = 2.4; // 2.4 exponent emulates actual monitor perception\n\n const sRco = 0.2126729,\n sGco = 0.7151522,\n sBco = 0.0721750; // sRGB coefficients\n */\n // Future:\n // 0.2126478133913640\t0.7151791475336150\t0.0721730390750208\n // Derived from:\n // xW\tyW\tK\txR\tyR\txG\tyG\txB\tyB\n // 0.312720\t0.329030\t6504\t0.640\t0.330\t0.300\t0.600\t0.150\t0.060\n\n // linearize r, g, or b then apply coefficients\n // and sum then return the resulting luminance\n\n function simpleExp(chan: number) {\n return Math.pow(chan / 255.0, SA98G.mainTRC);\n }\n\n return (\n SA98G.sRco * simpleExp(rgb[0]) +\n SA98G.sGco * simpleExp(rgb[1]) +\n SA98G.sBco * simpleExp(rgb[2])\n );\n}\n\nexport function APCAcontrast(txtY: number, bgY: number, places = -1) {\n // send linear Y (luminance) for text and background.\n // txtY and bgY must be between 0.0-1.0\n // IMPORTANT: Do not swap, polarity is important.\n\n const icp = [0.0, 1.1]; // input range clamp / input error check\n\n if (\n isNaN(txtY) ||\n isNaN(bgY) ||\n Math.min(txtY, bgY) < icp[0] ||\n Math.max(txtY, bgY) > icp[1]\n ) {\n return 0.0; // return zero on error\n // return 'error'; // optional string return for error\n }\n\n ////////// SAPC LOCAL VARS /////////////////////////////////////////\n\n let SAPC = 0.0; // For raw SAPC values\n let outputContrast = 0.0; // For weighted final values\n let polCat = 'BoW'; // Alternate Polarity Indicator. N normal R reverse\n\n // TUTORIAL\n\n // Use Y for text and BG, and soft clamp black,\n // return 0 for very close luminances, determine\n // polarity, and calculate SAPC raw contrast\n // Then scale for easy to remember levels.\n\n // Note that reverse contrast (white text on black)\n // intentionally returns a negative number\n // Proper polarity is important!\n\n ////////// BLACK SOFT CLAMP ////////////////////////////////////////\n\n // Soft clamps Y for either color if it is near black.\n txtY =\n txtY > SA98G.blkThrs\n ? txtY\n : txtY + Math.pow(SA98G.blkThrs - txtY, SA98G.blkClmp);\n bgY =\n bgY > SA98G.blkThrs\n ? bgY\n : bgY + Math.pow(SA98G.blkThrs - bgY, SA98G.blkClmp);\n\n ///// Return 0 Early for extremely low ∆Y\n if (Math.abs(bgY - txtY) < SA98G.deltaYmin) {\n return 0.0;\n }\n\n ////////// APCA/SAPC CONTRAST - LOW CLIP (W3 LICENSE) ///////////////\n\n if (bgY > txtY) {\n // For normal polarity, black text on white (BoW)\n\n // Calculate the SAPC contrast value and scale\n SAPC =\n (Math.pow(bgY, SA98G.normBG) - Math.pow(txtY, SA98G.normTXT)) *\n SA98G.scaleBoW;\n\n // Low Contrast smooth rollout to prevent polarity reversal\n // and also a low-clip for very low contrasts\n outputContrast = SAPC < SA98G.loClip ? 0.0 : SAPC - SA98G.loBoWoffset;\n } else {\n // For reverse polarity, light text on dark (WoB)\n // WoB should always return negative value.\n polCat = 'WoB';\n\n SAPC =\n (Math.pow(bgY, SA98G.revBG) - Math.pow(txtY, SA98G.revTXT)) *\n SA98G.scaleWoB;\n\n outputContrast = SAPC > -SA98G.loClip ? 0.0 : SAPC + SA98G.loWoBoffset;\n }\n\n // return Lc (lightness contrast) as a signed numeric value\n // Round to the nearest whole number as string is optional.\n // Rounded can be a signed INT as output will be within ± 127\n // places = -1 returns signed float, 1 or more set that many places\n // 0 returns rounded string, uses BoW or WoB instead of minus sign\n\n if (places < 0) {\n // Default (-1) number out, all others are strings\n return outputContrast * 100.0;\n } else if (places == 0) {\n return (\n Math.round(Math.abs(outputContrast) * 100.0) + '<sub>' + polCat + '</sub>'\n );\n } else if (Number.isInteger(places)) {\n return (outputContrast * 100.0).toFixed(places);\n } else {\n return 0.0;\n }\n}\n\n// send rgba array for text/icon, rgb for background.\n// Only foreground allows alpha of 0.0 to 1.0\n// This blends using gamma encoded space (standard)\n// rounded 0-255 or set round=false for number 0.0-255.0\nexport function alphaBlend(\n rgbaFG = [0, 0, 0, 1.0],\n rgbBG = [0, 0, 0],\n round = true,\n) {\n rgbaFG[3] = Math.max(Math.min(rgbaFG[3], 1.0), 0.0); // clamp alpha 0-1\n let compBlend = 1.0 - rgbaFG[3];\n let rgbOut = [0, 0, 0, 1, true]; // or just use rgbBG to retain other elements?\n\n for (let i = 0; i < 3; i++) {\n rgbOut[i] = rgbBG[i] * compBlend + rgbaFG[i] * rgbaFG[3];\n if (round) rgbOut[i] = Math.min(Math.round(rgbOut[i] as number), 255);\n }\n return rgbOut;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"apca.js","names":["SA98G","mainTRC","mainTRCencode","sRco","sGco","sBco","normBG","normTXT","revTXT","revBG","blkThrs","blkClmp","scaleBoW","scaleWoB","loBoWoffset","loWoBoffset","deltaYmin","loClip","mFactor","mFactInv","mOffsetIn","mExpAdj","mExp","mOffsetOut","sRGBtoY","rgb","arguments","length","undefined","simpleExp","chan","Math","pow","APCAcontrast","txtY","bgY","places","icp","isNaN","min","max","SAPC","outputContrast","polCat","abs","round","Number","isInteger","toFixed","alphaBlend","rgbaFG","rgbBG","compBlend","rgbOut","i"],"sources":["../../../src/util/color/apca.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\n/** @preserve\n ///// SAPC APCA - Advanced Perceptual Contrast Algorithm\n ///// Beta 0.1.9 W3 • contrast function only\n ///// DIST: W3 • Revision date: July 3, 2022\n ///// Function to parse color values and determine Lc contrast\n ///// Copyright © 2019-2022 by Andrew Somers. All Rights Reserved.\n ///// LICENSE: W3 LICENSE\n ///// CONTACT: Please use the ISSUES or DISCUSSIONS tab at:\n ///// https://github.com/Myndex/SAPC-APCA/\n /////\n ///////////////////////////////////////////////////////////////////////////////\n /////\n ///// MINIMAL IMPORTS:\n ///// import { APCAcontrast, sRGBtoY, displayP3toY,\n///// calcAPCA, fontLookupAPCA } from 'apca-w3';\n ///// import { colorParsley } from 'colorparsley';\n /////\n ///// FORWARD CONTRAST USAGE:\n ///// Lc = APCAcontrast( sRGBtoY( TEXTcolor ) , sRGBtoY( BACKGNDcolor ) );\n ///// Where the colors are sent as an rgba array [255,255,255,1]\n /////\n ///// Retrieving an array of font sizes for the contrast:\n ///// fontArray = fontLookupAPCA(Lc);\n /////\n ///// Live Demonstrator at https://www.myndex.com/APCA/\n // */\n///////////////////////////////////////////////////////////////////////////////\n\n///// Module Scope Object Containing Constants /////\n///// APCA 0.0.98G - 4g - W3 Compatible Constants\n\n///// 𝒦 SA98G ///////////////////////////////////\nconst SA98G = {\n mainTRC: 2.4, // 2.4 exponent for emulating actual monitor perception\n\n // For reverseAPCA\n get mainTRCencode() {\n return 1 / this.mainTRC;\n },\n\n // sRGB coefficients\n sRco: 0.2126729,\n sGco: 0.7151522,\n sBco: 0.072175,\n\n // G-4g constants for use with 2.4 exponent\n normBG: 0.56,\n normTXT: 0.57,\n revTXT: 0.62,\n revBG: 0.65,\n\n // G-4g Clamps and Scalers\n blkThrs: 0.022,\n blkClmp: 1.414,\n scaleBoW: 1.14,\n scaleWoB: 1.14,\n loBoWoffset: 0.027,\n loWoBoffset: 0.027,\n deltaYmin: 0.0005,\n loClip: 0.1,\n\n ///// MAGIC NUMBERS for UNCLAMP, for use with 0.022 & 1.414 /////\n // Magic Numbers for reverseAPCA\n mFactor: 1.9468554433171,\n get mFactInv() {\n return 1 / this.mFactor;\n },\n mOffsetIn: 0.0387393816571401,\n mExpAdj: 0.283343396420869,\n get mExp() {\n return this.mExpAdj / this.blkClmp;\n },\n mOffsetOut: 0.312865795870758,\n};\n\n//////////////////////////////////////////////////////////////////////////////\n////////// LUMINANCE CONVERTERS |//////////////////////////////////////////\n\n////////// ƒ sRGBtoY() //////////////////////////////////////////////////\nexport function sRGBtoY(rgb = [0, 0, 0]) {\n // send sRGB 8bpc (0xFFFFFF) or string\n\n // NOTE: Currently expects 0-255\n\n ///// APCA 0.0.98G - 4g - W3 Compatible Constants ////////////////////\n /*\n const mainTRC = 2.4; // 2.4 exponent emulates actual monitor perception\n\n const sRco = 0.2126729,\n sGco = 0.7151522,\n sBco = 0.0721750; // sRGB coefficients\n */\n // Future:\n // 0.2126478133913640\t0.7151791475336150\t0.0721730390750208\n // Derived from:\n // xW\tyW\tK\txR\tyR\txG\tyG\txB\tyB\n // 0.312720\t0.329030\t6504\t0.640\t0.330\t0.300\t0.600\t0.150\t0.060\n\n // linearize r, g, or b then apply coefficients\n // and sum then return the resulting luminance\n\n function simpleExp(chan: number) {\n return Math.pow(chan / 255.0, SA98G.mainTRC);\n }\n\n return (\n SA98G.sRco * simpleExp(rgb[0]) +\n SA98G.sGco * simpleExp(rgb[1]) +\n SA98G.sBco * simpleExp(rgb[2])\n );\n}\n\nexport function APCAcontrast(txtY: number, bgY: number, places = -1) {\n // send linear Y (luminance) for text and background.\n // txtY and bgY must be between 0.0-1.0\n // IMPORTANT: Do not swap, polarity is important.\n\n const icp = [0.0, 1.1]; // input range clamp / input error check\n\n if (\n isNaN(txtY) ||\n isNaN(bgY) ||\n Math.min(txtY, bgY) < icp[0] ||\n Math.max(txtY, bgY) > icp[1]\n ) {\n return 0.0; // return zero on error\n // return 'error'; // optional string return for error\n }\n\n ////////// SAPC LOCAL VARS /////////////////////////////////////////\n\n let SAPC = 0.0; // For raw SAPC values\n let outputContrast = 0.0; // For weighted final values\n let polCat = 'BoW'; // Alternate Polarity Indicator. N normal R reverse\n\n // TUTORIAL\n\n // Use Y for text and BG, and soft clamp black,\n // return 0 for very close luminances, determine\n // polarity, and calculate SAPC raw contrast\n // Then scale for easy to remember levels.\n\n // Note that reverse contrast (white text on black)\n // intentionally returns a negative number\n // Proper polarity is important!\n\n ////////// BLACK SOFT CLAMP ////////////////////////////////////////\n\n // Soft clamps Y for either color if it is near black.\n txtY =\n txtY > SA98G.blkThrs\n ? txtY\n : txtY + Math.pow(SA98G.blkThrs - txtY, SA98G.blkClmp);\n bgY =\n bgY > SA98G.blkThrs\n ? bgY\n : bgY + Math.pow(SA98G.blkThrs - bgY, SA98G.blkClmp);\n\n ///// Return 0 Early for extremely low ∆Y\n if (Math.abs(bgY - txtY) < SA98G.deltaYmin) {\n return 0.0;\n }\n\n ////////// APCA/SAPC CONTRAST - LOW CLIP (W3 LICENSE) ///////////////\n\n if (bgY > txtY) {\n // For normal polarity, black text on white (BoW)\n\n // Calculate the SAPC contrast value and scale\n SAPC =\n (Math.pow(bgY, SA98G.normBG) - Math.pow(txtY, SA98G.normTXT)) *\n SA98G.scaleBoW;\n\n // Low Contrast smooth rollout to prevent polarity reversal\n // and also a low-clip for very low contrasts\n outputContrast = SAPC < SA98G.loClip ? 0.0 : SAPC - SA98G.loBoWoffset;\n } else {\n // For reverse polarity, light text on dark (WoB)\n // WoB should always return negative value.\n polCat = 'WoB';\n\n SAPC =\n (Math.pow(bgY, SA98G.revBG) - Math.pow(txtY, SA98G.revTXT)) *\n SA98G.scaleWoB;\n\n outputContrast = SAPC > -SA98G.loClip ? 0.0 : SAPC + SA98G.loWoBoffset;\n }\n\n // return Lc (lightness contrast) as a signed numeric value\n // Round to the nearest whole number as string is optional.\n // Rounded can be a signed INT as output will be within ± 127\n // places = -1 returns signed float, 1 or more set that many places\n // 0 returns rounded string, uses BoW or WoB instead of minus sign\n\n if (places < 0) {\n // Default (-1) number out, all others are strings\n return outputContrast * 100.0;\n // biome-ignore lint/suspicious/noDoubleEquals: <explanation>\n } else if (places == 0) {\n return (\n Math.round(Math.abs(outputContrast) * 100.0) + '<sub>' + polCat + '</sub>'\n );\n } else if (Number.isInteger(places)) {\n return (outputContrast * 100.0).toFixed(places);\n } else {\n return 0.0;\n }\n}\n\n// send rgba array for text/icon, rgb for background.\n// Only foreground allows alpha of 0.0 to 1.0\n// This blends using gamma encoded space (standard)\n// rounded 0-255 or set round=false for number 0.0-255.0\nexport function alphaBlend(\n rgbaFG = [0, 0, 0, 1.0],\n rgbBG = [0, 0, 0],\n round = true,\n) {\n rgbaFG[3] = Math.max(Math.min(rgbaFG[3], 1.0), 0.0); // clamp alpha 0-1\n let compBlend = 1.0 - rgbaFG[3];\n let rgbOut = [0, 0, 0, 1, true]; // or just use rgbBG to retain other elements?\n\n for (let i = 0; i < 3; i++) {\n rgbOut[i] = rgbBG[i] * compBlend + rgbaFG[i] * rgbaFG[3];\n if (round) rgbOut[i] = Math.min(Math.round(rgbOut[i] as number), 255);\n }\n return rgbOut;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","names":["RGBA_REGEX","HEX_COLOR_REGEX","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65"],"sources":["../../../src/util/color/const.ts"],"sourcesContent":["export const RGBA_REGEX = /rgb(a?)\\((?<v>.*)\\)/;\r\nexport const HEX_COLOR_REGEX = /^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/;\r\n\r\nexport const SRGB_TO_XYZ = [\r\n [0.41233895, 0.35762064, 0.18051042],\r\n [0.2126, 0.7152, 0.0722],\r\n [0.01932141, 0.11916382, 0.95034478],\r\n];\r\n\r\nexport const XYZ_TO_SRGB = [\r\n [\r\n 3.2413774792388685,\r\n -1.5376652402851851,\r\n -0.49885366846268053,\r\n ],\r\n [\r\n -0.9691452513005321,\r\n 1.8758853451067872,\r\n 0.04156585616912061,\r\n ],\r\n [\r\n 0.05562093689691305,\r\n -0.20395524564742123,\r\n 1.0571799111220335,\r\n ],\r\n];\r\n\r\nexport const WHITE_POINT_D65 = [95.047, 100.0, 108.883];\r\n"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG,qBAAqB;AAC/C,OAAO,MAAMC,eAAe,GAAG,mDAAmD;AAElF,OAAO,MAAMC,WAAW,GAAG,CACzB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EACpC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACxB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CACrC;AAED,OAAO,MAAMC,WAAW,GAAG,CACzB,CACE,kBAAkB,EAClB,CAAC,kBAAkB,EACnB,CAAC,mBAAmB,CACrB,EACD,CACE,CAAC,kBAAkB,EACnB,kBAAkB,EAClB,mBAAmB,CACpB,EACD,CACE,mBAAmB,EACnB,CAAC,mBAAmB,EACpB,kBAAkB,CACnB,CACF;AAED,OAAO,MAAMC,eAAe,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC"}
1
+ {"version":3,"file":"const.js","names":["RGBA_REGEX","HEX_COLOR_REGEX","SRGB_TO_XYZ","XYZ_TO_SRGB","WHITE_POINT_D65"],"sources":["../../../src/util/color/const.ts"],"sourcesContent":["export const RGBA_REGEX = /rgb(a?)\\((?<v>.*)\\)/;\nexport const HEX_COLOR_REGEX =\n /^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/;\n\nexport const SRGB_TO_XYZ = [\n [0.41233895, 0.35762064, 0.18051042],\n [0.2126, 0.7152, 0.0722],\n [0.01932141, 0.11916382, 0.95034478],\n];\n\nexport const XYZ_TO_SRGB = [\n [3.2413774792388685, -1.5376652402851851, -0.49885366846268053],\n [-0.9691452513005321, 1.8758853451067872, 0.04156585616912061],\n [0.05562093689691305, -0.20395524564742123, 1.0571799111220335],\n];\n\nexport const WHITE_POINT_D65 = [95.047, 100.0, 108.883];\n"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG,qBAAqB;AAC/C,OAAO,MAAMC,eAAe,GAC1B,mDAAmD;AAErD,OAAO,MAAMC,WAAW,GAAG,CACzB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,EACpC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACxB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CACrC;AAED,OAAO,MAAMC,WAAW,GAAG,CACzB,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,CAAC,mBAAmB,CAAC,EAC/D,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC,EAC9D,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,CAChE;AAED,OAAO,MAAMC,eAAe,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"contrast.js","names":["lstarFromY","yFromLstar","clampDouble","Contrast","ratioOfTones","toneA","toneB","ratioOfYs","y1","y2","lighter","darker","tone","ratio","darkY","lightY","realContrast","delta","Math","abs","returnValue","lighterUnsafe","lighterSafe","darkerUnsafe","darkerSafe"],"sources":["../../../../src/util/color/contrast/contrast.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { lstarFromY, yFromLstar } from '../conversion';\nimport { clampDouble } from '../utils/math-utils';\n\n/**\n * Utility methods for calculating contrast given two colors, or calculating a\n * color given one color and a contrast ratio.\n *\n * Contrast ratio is calculated using XYZ's Y. When linearized to match human\n * perception, Y becomes HCT's tone and L*a*b*'s' L*. Informally, this is the\n * lightness of a color.\n *\n * Methods refer to tone, T in the the HCT color space.\n * Tone is equivalent to L* in the L*a*b* color space, or L in the LCH color\n * space.\n */\nexport class Contrast {\n /**\n * Returns a contrast ratio, which ranges from 1 to 21.\n *\n * @param toneA Tone between 0 and 100. Values outside will be clamped.\n * @param toneB Tone between 0 and 100. Values outside will be clamped.\n */\n static ratioOfTones(toneA: number, toneB: number): number {\n toneA = clampDouble(0.0, 100.0, toneA);\n toneB = clampDouble(0.0, 100.0, toneB);\n return Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));\n }\n\n static ratioOfYs(y1: number, y2: number): number {\n const lighter = y1 > y2 ? y1 : y2;\n const darker = lighter === y2 ? y1 : y2;\n return (lighter + 5.0) / (darker + 5.0);\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighter(tone: number, ratio: number): number {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n\n const darkY = yFromLstar(tone);\n const lightY = ratio * (darkY + 5.0) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = lstarFromY(lightY) + 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n\n /**\n * Returns a tone <= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darker(tone: number, ratio: number): number {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n\n const lightY = yFromLstar(tone);\n const darkY = (lightY + 5.0) / ratio - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = lstarFromY(darkY) - 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the ratio with tone. For example, there is no color lighter than T100.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 100 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighterUnsafe(tone: number, ratio: number): number {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return lighterSafe < 0.0 ? 100.0 : lighterSafe;\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the [ratio with [tone]. For example, there is no color darker than T0.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 0 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darkerUnsafe(tone: number, ratio: number): number {\n const darkerSafe = Contrast.darker(tone, ratio);\n return darkerSafe < 0.0 ? 0.0 : darkerSafe;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"contrast.js","names":["lstarFromY","yFromLstar","clampDouble","Contrast","ratioOfTones","toneA","toneB","ratioOfYs","y1","y2","lighter","darker","tone","ratio","darkY","lightY","realContrast","delta","Math","abs","returnValue","lighterUnsafe","lighterSafe","darkerUnsafe","darkerSafe"],"sources":["../../../../src/util/color/contrast/contrast.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { lstarFromY, yFromLstar } from '../conversion';\nimport { clampDouble } from '../utils/math-utils';\n\n/**\n * Utility methods for calculating contrast given two colors, or calculating a\n * color given one color and a contrast ratio.\n *\n * Contrast ratio is calculated using XYZ's Y. When linearized to match human\n * perception, Y becomes HCT's tone and L*a*b*'s' L*. Informally, this is the\n * lightness of a color.\n *\n * Methods refer to tone, T in the the HCT color space.\n * Tone is equivalent to L* in the L*a*b* color space, or L in the LCH color\n * space.\n */\nexport class Contrast {\n /**\n * Returns a contrast ratio, which ranges from 1 to 21.\n *\n * @param toneA Tone between 0 and 100. Values outside will be clamped.\n * @param toneB Tone between 0 and 100. Values outside will be clamped.\n */\n static ratioOfTones(toneA: number, toneB: number): number {\n toneA = clampDouble(0.0, 100.0, toneA);\n toneB = clampDouble(0.0, 100.0, toneB);\n return Contrast.ratioOfYs(yFromLstar(toneA), yFromLstar(toneB));\n }\n\n static ratioOfYs(y1: number, y2: number): number {\n const lighter = y1 > y2 ? y1 : y2;\n const darker = lighter === y2 ? y1 : y2;\n return (lighter + 5.0) / (darker + 5.0);\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighter(tone: number, ratio: number): number {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n\n const darkY = yFromLstar(tone);\n const lightY = ratio * (darkY + 5.0) - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = lstarFromY(lightY) + 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n\n /**\n * Returns a tone <= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns -1 if ratio cannot be achieved with tone parameter.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in -1 being returned.\n * @param ratio Contrast ratio of return value and tone.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darker(tone: number, ratio: number): number {\n if (tone < 0.0 || tone > 100.0) {\n return -1.0;\n }\n\n const lightY = yFromLstar(tone);\n const darkY = (lightY + 5.0) / ratio - 5.0;\n const realContrast = Contrast.ratioOfYs(lightY, darkY);\n\n const delta = Math.abs(realContrast - ratio);\n if (realContrast < ratio && delta > 0.04) {\n return -1;\n }\n\n // Ensure gamut mapping, which requires a 'range' on tone, will still result\n // the correct ratio by darkening slightly.\n const returnValue = lstarFromY(darkY) - 0.4;\n if (returnValue < 0 || returnValue > 100) {\n return -1;\n }\n return returnValue;\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the ratio with tone. For example, there is no color lighter than T100.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 100 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static lighterUnsafe(tone: number, ratio: number): number {\n const lighterSafe = Contrast.lighter(tone, ratio);\n return lighterSafe < 0.0 ? 100.0 : lighterSafe;\n }\n\n /**\n * Returns a tone >= tone parameter that ensures ratio parameter.\n * Return value is between 0 and 100.\n * Returns 100 if ratio cannot be achieved with tone parameter.\n *\n * This method is unsafe because the returned value is guaranteed to be in\n * bounds for tone, i.e. between 0 and 100. However, that value may not reach\n * the [ratio with [tone]. For example, there is no color darker than T0.\n *\n * @param tone Tone return value must contrast with.\n * Range is 0 to 100. Invalid values will result in 0 being returned.\n * @param ratio Desired contrast ratio of return value and tone parameter.\n * Range is 1 to 21, invalid values have undefined behavior.\n */\n static darkerUnsafe(tone: number, ratio: number): number {\n const darkerSafe = Contrast.darker(tone, ratio);\n return darkerSafe < 0.0 ? 0.0 : darkerSafe;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"conversion.js","names":["SRGB_TO_XYZ","WHITE_POINT_D65","XYZ_TO_SRGB","mathUtils","rgbFromHex","color","hexCodeStr","substring","length","hexCodeLength","rgbValues","multiple","i","hexCode","push","Number","parseInt","undefined","hexFromRgb","red","green","blue","hex","toString","padStart","hexFromArgb","argb","argbFromRgb","argbFromLinrgb","linrgb","r","delinearized","g","b","alphaFromArgb","redFromArgb","greenFromArgb","blueFromArgb","isOpaque","argbFromXyz","x","y","z","matrix","linearR","linearG","linearB","xyzFromArgb","linearized","matrixMultiply","argbFromLab","l","a","whitePoint","fy","fx","fz","xNormalized","labInvf","yNormalized","zNormalized","labFromArgb","labF","argbFromLstar","lstar","yFromLstar","component","lstarFromArgb","lstarFromY","rgbComponent","normalized","Math","pow","clampInt","round","whitePointD65","rgbaFromArgb","argbFromRgba","_ref","rValue","clampComponent","gValue","bValue","aValue","value","t","e","kappa","ft","ft3"],"sources":["../../../src/util/color/conversion.ts"],"sourcesContent":["import { SRGB_TO_XYZ, WHITE_POINT_D65, XYZ_TO_SRGB } from './const';\nimport { Rgba } from './types';\nimport * as mathUtils from './utils/math-utils';\n\nexport function rgbFromHex(color: string): number[] | undefined {\n if (color && color[0] === '#') {\n const hexCodeStr = color.substring(1, color.length);\n const hexCodeLength = hexCodeStr.length;\n const rgbValues = [];\n if (hexCodeLength === 3 || hexCodeLength === 6) {\n const multiple = hexCodeLength === 6 ? 2 : 1;\n for (let i = 0; i < 3; i += 1) {\n const hexCode = hexCodeStr.substring(\n i * multiple,\n i * multiple + multiple,\n );\n rgbValues.push(Number.parseInt(hexCode, 16));\n }\n return rgbValues;\n }\n }\n return undefined;\n}\n\nexport function hexFromRgb(red: number, green: number, blue: number) {\n const hex = (\n (((red & 255) << 16) | ((green & 255) << 8) | (blue & 255)) >>>\n 0\n )\n .toString(16)\n .padStart(6, '0');\n return `#${hex}`;\n}\n\nexport function hexFromArgb(argb: number) {\n return `#${(argb & 16777215).toString(16)}`;\n}\n\n/**\n * Converts a color from RGB components to ARGB format.\n */\nexport function argbFromRgb(red: number, green: number, blue: number): number {\n return (\n ((255 << 24) |\n ((red & 255) << 16) |\n ((green & 255) << 8) |\n (blue & 255)) >>>\n 0\n );\n}\n\n/**\n * Converts a color from linear RGB components to ARGB format.\n */\nexport function argbFromLinrgb(linrgb: number[]): number {\n const r = delinearized(linrgb[0]);\n const g = delinearized(linrgb[1]);\n const b = delinearized(linrgb[2]);\n return argbFromRgb(r, g, b);\n}\n\n/**\n * Returns the alpha component of a color in ARGB format.\n */\nexport function alphaFromArgb(argb: number): number {\n return (argb >> 24) & 255;\n}\n\n/**\n * Returns the red component of a color in ARGB format.\n */\nexport function redFromArgb(argb: number): number {\n return (argb >> 16) & 255;\n}\n\n/**\n * Returns the green component of a color in ARGB format.\n */\nexport function greenFromArgb(argb: number): number {\n return (argb >> 8) & 255;\n}\n\n/**\n * Returns the blue component of a color in ARGB format.\n */\nexport function blueFromArgb(argb: number): number {\n return argb & 255;\n}\n\n/**\n * Returns whether a color in ARGB format is opaque.\n */\nexport function isOpaque(argb: number): boolean {\n return alphaFromArgb(argb) >= 255;\n}\n\n/**\n * Converts a color from ARGB to XYZ.\n */\nexport function argbFromXyz(x: number, y: number, z: number): number {\n const matrix = XYZ_TO_SRGB;\n const linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z;\n const linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z;\n const linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n const r = delinearized(linearR);\n const g = delinearized(linearG);\n const b = delinearized(linearB);\n return argbFromRgb(r, g, b);\n}\n\n/**\n * Converts a color from XYZ to ARGB.\n */\nexport function xyzFromArgb(argb: number): number[] {\n const r = linearized(redFromArgb(argb));\n const g = linearized(greenFromArgb(argb));\n const b = linearized(blueFromArgb(argb));\n return mathUtils.matrixMultiply([r, g, b], SRGB_TO_XYZ);\n}\n\n/**\n * Converts a color represented in Lab color space into an ARGB\n * integer.\n */\nexport function argbFromLab(l: number, a: number, b: number): number {\n const whitePoint = WHITE_POINT_D65;\n const fy = (l + 16.0) / 116.0;\n const fx = a / 500.0 + fy;\n const fz = fy - b / 200.0;\n const xNormalized = labInvf(fx);\n const yNormalized = labInvf(fy);\n const zNormalized = labInvf(fz);\n const x = xNormalized * whitePoint[0];\n const y = yNormalized * whitePoint[1];\n const z = zNormalized * whitePoint[2];\n return argbFromXyz(x, y, z);\n}\n\n/**\n * Converts a color from ARGB representation to L*a*b*\n * representation.\n *\n * @param argb the ARGB representation of a color\n * @return a Lab object representing the color\n */\nexport function labFromArgb(argb: number): number[] {\n const linearR = linearized(redFromArgb(argb));\n const linearG = linearized(greenFromArgb(argb));\n const linearB = linearized(blueFromArgb(argb));\n const matrix = SRGB_TO_XYZ;\n const x =\n matrix[0][0] * linearR + matrix[0][1] * linearG + matrix[0][2] * linearB;\n const y =\n matrix[1][0] * linearR + matrix[1][1] * linearG + matrix[1][2] * linearB;\n const z =\n matrix[2][0] * linearR + matrix[2][1] * linearG + matrix[2][2] * linearB;\n const whitePoint = WHITE_POINT_D65;\n const xNormalized = x / whitePoint[0];\n const yNormalized = y / whitePoint[1];\n const zNormalized = z / whitePoint[2];\n const fx = labF(xNormalized);\n const fy = labF(yNormalized);\n const fz = labF(zNormalized);\n const l = 116.0 * fy - 16;\n const a = 500.0 * (fx - fy);\n const b = 200.0 * (fy - fz);\n return [l, a, b];\n}\n\n/**\n * Converts an L* value to an ARGB representation.\n *\n * @param lstar L* in L*a*b*\n * @return ARGB representation of grayscale color with lightness\n * matching L*\n */\nexport function argbFromLstar(lstar: number): number {\n const y = yFromLstar(lstar);\n const component = delinearized(y);\n return argbFromRgb(component, component, component);\n}\n\n/**\n * Computes the L* value of a color in ARGB representation.\n *\n * @param argb ARGB representation of a color\n * @return L*, from L*a*b*, coordinate of the color\n */\nexport function lstarFromArgb(argb: number): number {\n const y = xyzFromArgb(argb)[1];\n return 116.0 * labF(y / 100.0) - 16.0;\n}\n\n/**\n * Converts an L* value to a Y value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param lstar L* in L*a*b*\n * @return Y in XYZ\n */\nexport function yFromLstar(lstar: number): number {\n return 100.0 * labInvf((lstar + 16.0) / 116.0);\n}\n\n/**\n * Converts a Y value to an L* value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param y Y in XYZ\n * @return L* in L*a*b*\n */\nexport function lstarFromY(y: number): number {\n return labF(y / 100.0) * 116.0 - 16.0;\n}\n\n/**\n * Linearizes an RGB component.\n *\n * @param rgbComponent 0 <= rgb_component <= 255, represents R/G/B\n * channel\n * @return 0.0 <= output <= 100.0, color channel converted to\n * linear RGB space\n */\nexport function linearized(rgbComponent: number): number {\n const normalized = rgbComponent / 255.0;\n if (normalized <= 0.040449936) {\n return (normalized / 12.92) * 100.0;\n } else {\n return Math.pow((normalized + 0.055) / 1.055, 2.4) * 100.0;\n }\n}\n\n/**\n * Delinearizes an RGB component.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0 <= output <= 255, color channel converted to regular\n * RGB space\n */\nexport function delinearized(rgbComponent: number): number {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n } else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return mathUtils.clampInt(0, 255, Math.round(delinearized * 255.0));\n}\n\n/**\n * Returns the standard white point; white on a sunny day.\n *\n * @return The white point\n */\nexport function whitePointD65(): number[] {\n return WHITE_POINT_D65;\n}\n\n/**\n * Return RGBA from a given int32 color\n *\n * @param argb ARGB representation of a int32 color.\n * @return RGBA representation of a int32 color.\n */\nexport function rgbaFromArgb(argb: number): Rgba {\n const r = redFromArgb(argb);\n const g = greenFromArgb(argb);\n const b = blueFromArgb(argb);\n const a = alphaFromArgb(argb);\n return { r, g, b, a };\n}\n\n/**\n * Return int32 color from a given RGBA component\n *\n * @param rgba RGBA representation of a int32 color.\n * @returns ARGB representation of a int32 color.\n */\nexport function argbFromRgba({ r, g, b, a }: Rgba): number {\n const rValue = clampComponent(r);\n const gValue = clampComponent(g);\n const bValue = clampComponent(b);\n const aValue = clampComponent(a);\n return (aValue << 24) | (rValue << 16) | (gValue << 8) | bValue;\n}\n\nfunction clampComponent(value: number) {\n if (value < 0) return 0;\n if (value > 255) return 255;\n return value;\n}\n\nfunction labF(t: number): number {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n if (t > e) {\n return Math.pow(t, 1.0 / 3.0);\n } else {\n return (kappa * t + 16) / 116;\n }\n}\n\nfunction labInvf(ft: number): number {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n const ft3 = ft * ft * ft;\n if (ft3 > e) {\n return ft3;\n } else {\n return (116 * ft - 16) / kappa;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"conversion.js","names":["SRGB_TO_XYZ","WHITE_POINT_D65","XYZ_TO_SRGB","mathUtils","rgbFromHex","color","hexCodeStr","substring","length","hexCodeLength","rgbValues","multiple","i","hexCode","push","Number","parseInt","undefined","hexFromRgb","red","green","blue","hex","toString","padStart","hexFromArgb","argb","argbFromRgb","argbFromLinrgb","linrgb","r","delinearized","g","b","alphaFromArgb","redFromArgb","greenFromArgb","blueFromArgb","isOpaque","argbFromXyz","x","y","z","matrix","linearR","linearG","linearB","xyzFromArgb","linearized","matrixMultiply","argbFromLab","l","a","whitePoint","fy","fx","fz","xNormalized","labInvf","yNormalized","zNormalized","labFromArgb","labF","argbFromLstar","lstar","yFromLstar","component","lstarFromArgb","lstarFromY","rgbComponent","normalized","Math","pow","clampInt","round","whitePointD65","rgbaFromArgb","argbFromRgba","_ref","rValue","clampComponent","gValue","bValue","aValue","value","t","e","kappa","ft","ft3"],"sources":["../../../src/util/color/conversion.ts"],"sourcesContent":["import { SRGB_TO_XYZ, WHITE_POINT_D65, XYZ_TO_SRGB } from './const';\nimport { Rgba } from './types';\nimport * as mathUtils from './utils/math-utils';\n\nexport function rgbFromHex(color: string): number[] | undefined {\n if (color && color[0] === '#') {\n const hexCodeStr = color.substring(1, color.length);\n const hexCodeLength = hexCodeStr.length;\n const rgbValues = [];\n if (hexCodeLength === 3 || hexCodeLength === 6) {\n const multiple = hexCodeLength === 6 ? 2 : 1;\n for (let i = 0; i < 3; i += 1) {\n const hexCode = hexCodeStr.substring(\n i * multiple,\n i * multiple + multiple,\n );\n rgbValues.push(Number.parseInt(hexCode, 16));\n }\n return rgbValues;\n }\n }\n return undefined;\n}\n\nexport function hexFromRgb(red: number, green: number, blue: number) {\n const hex = (\n (((red & 255) << 16) | ((green & 255) << 8) | (blue & 255)) >>>\n 0\n )\n .toString(16)\n .padStart(6, '0');\n return `#${hex}`;\n}\n\nexport function hexFromArgb(argb: number) {\n return `#${(argb & 16777215).toString(16)}`;\n}\n\n/**\n * Converts a color from RGB components to ARGB format.\n */\nexport function argbFromRgb(red: number, green: number, blue: number): number {\n return (\n ((255 << 24) |\n ((red & 255) << 16) |\n ((green & 255) << 8) |\n (blue & 255)) >>>\n 0\n );\n}\n\n/**\n * Converts a color from linear RGB components to ARGB format.\n */\nexport function argbFromLinrgb(linrgb: number[]): number {\n const r = delinearized(linrgb[0]);\n const g = delinearized(linrgb[1]);\n const b = delinearized(linrgb[2]);\n return argbFromRgb(r, g, b);\n}\n\n/**\n * Returns the alpha component of a color in ARGB format.\n */\nexport function alphaFromArgb(argb: number): number {\n return (argb >> 24) & 255;\n}\n\n/**\n * Returns the red component of a color in ARGB format.\n */\nexport function redFromArgb(argb: number): number {\n return (argb >> 16) & 255;\n}\n\n/**\n * Returns the green component of a color in ARGB format.\n */\nexport function greenFromArgb(argb: number): number {\n return (argb >> 8) & 255;\n}\n\n/**\n * Returns the blue component of a color in ARGB format.\n */\nexport function blueFromArgb(argb: number): number {\n return argb & 255;\n}\n\n/**\n * Returns whether a color in ARGB format is opaque.\n */\nexport function isOpaque(argb: number): boolean {\n return alphaFromArgb(argb) >= 255;\n}\n\n/**\n * Converts a color from ARGB to XYZ.\n */\nexport function argbFromXyz(x: number, y: number, z: number): number {\n const matrix = XYZ_TO_SRGB;\n const linearR = matrix[0][0] * x + matrix[0][1] * y + matrix[0][2] * z;\n const linearG = matrix[1][0] * x + matrix[1][1] * y + matrix[1][2] * z;\n const linearB = matrix[2][0] * x + matrix[2][1] * y + matrix[2][2] * z;\n const r = delinearized(linearR);\n const g = delinearized(linearG);\n const b = delinearized(linearB);\n return argbFromRgb(r, g, b);\n}\n\n/**\n * Converts a color from XYZ to ARGB.\n */\nexport function xyzFromArgb(argb: number): number[] {\n const r = linearized(redFromArgb(argb));\n const g = linearized(greenFromArgb(argb));\n const b = linearized(blueFromArgb(argb));\n return mathUtils.matrixMultiply([r, g, b], SRGB_TO_XYZ);\n}\n\n/**\n * Converts a color represented in Lab color space into an ARGB\n * integer.\n */\nexport function argbFromLab(l: number, a: number, b: number): number {\n const whitePoint = WHITE_POINT_D65;\n const fy = (l + 16.0) / 116.0;\n const fx = a / 500.0 + fy;\n const fz = fy - b / 200.0;\n const xNormalized = labInvf(fx);\n const yNormalized = labInvf(fy);\n const zNormalized = labInvf(fz);\n const x = xNormalized * whitePoint[0];\n const y = yNormalized * whitePoint[1];\n const z = zNormalized * whitePoint[2];\n return argbFromXyz(x, y, z);\n}\n\n/**\n * Converts a color from ARGB representation to L*a*b*\n * representation.\n *\n * @param argb the ARGB representation of a color\n * @return a Lab object representing the color\n */\nexport function labFromArgb(argb: number): number[] {\n const linearR = linearized(redFromArgb(argb));\n const linearG = linearized(greenFromArgb(argb));\n const linearB = linearized(blueFromArgb(argb));\n const matrix = SRGB_TO_XYZ;\n const x =\n matrix[0][0] * linearR + matrix[0][1] * linearG + matrix[0][2] * linearB;\n const y =\n matrix[1][0] * linearR + matrix[1][1] * linearG + matrix[1][2] * linearB;\n const z =\n matrix[2][0] * linearR + matrix[2][1] * linearG + matrix[2][2] * linearB;\n const whitePoint = WHITE_POINT_D65;\n const xNormalized = x / whitePoint[0];\n const yNormalized = y / whitePoint[1];\n const zNormalized = z / whitePoint[2];\n const fx = labF(xNormalized);\n const fy = labF(yNormalized);\n const fz = labF(zNormalized);\n const l = 116.0 * fy - 16;\n const a = 500.0 * (fx - fy);\n const b = 200.0 * (fy - fz);\n return [l, a, b];\n}\n\n/**\n * Converts an L* value to an ARGB representation.\n *\n * @param lstar L* in L*a*b*\n * @return ARGB representation of grayscale color with lightness\n * matching L*\n */\nexport function argbFromLstar(lstar: number): number {\n const y = yFromLstar(lstar);\n const component = delinearized(y);\n return argbFromRgb(component, component, component);\n}\n\n/**\n * Computes the L* value of a color in ARGB representation.\n *\n * @param argb ARGB representation of a color\n * @return L*, from L*a*b*, coordinate of the color\n */\nexport function lstarFromArgb(argb: number): number {\n const y = xyzFromArgb(argb)[1];\n return 116.0 * labF(y / 100.0) - 16.0;\n}\n\n/**\n * Converts an L* value to a Y value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param lstar L* in L*a*b*\n * @return Y in XYZ\n */\nexport function yFromLstar(lstar: number): number {\n return 100.0 * labInvf((lstar + 16.0) / 116.0);\n}\n\n/**\n * Converts a Y value to an L* value.\n *\n * L* in L*a*b* and Y in XYZ measure the same quantity, luminance.\n *\n * L* measures perceptual luminance, a linear scale. Y in XYZ\n * measures relative luminance, a logarithmic scale.\n *\n * @param y Y in XYZ\n * @return L* in L*a*b*\n */\nexport function lstarFromY(y: number): number {\n return labF(y / 100.0) * 116.0 - 16.0;\n}\n\n/**\n * Linearizes an RGB component.\n *\n * @param rgbComponent 0 <= rgb_component <= 255, represents R/G/B\n * channel\n * @return 0.0 <= output <= 100.0, color channel converted to\n * linear RGB space\n */\nexport function linearized(rgbComponent: number): number {\n const normalized = rgbComponent / 255.0;\n if (normalized <= 0.040449936) {\n return (normalized / 12.92) * 100.0;\n } else {\n return Math.pow((normalized + 0.055) / 1.055, 2.4) * 100.0;\n }\n}\n\n/**\n * Delinearizes an RGB component.\n *\n * @param rgbComponent 0.0 <= rgb_component <= 100.0, represents\n * linear R/G/B channel\n * @return 0 <= output <= 255, color channel converted to regular\n * RGB space\n */\nexport function delinearized(rgbComponent: number): number {\n const normalized = rgbComponent / 100.0;\n let delinearized = 0.0;\n if (normalized <= 0.0031308) {\n delinearized = normalized * 12.92;\n } else {\n delinearized = 1.055 * Math.pow(normalized, 1.0 / 2.4) - 0.055;\n }\n return mathUtils.clampInt(0, 255, Math.round(delinearized * 255.0));\n}\n\n/**\n * Returns the standard white point; white on a sunny day.\n *\n * @return The white point\n */\nexport function whitePointD65(): number[] {\n return WHITE_POINT_D65;\n}\n\n/**\n * Return RGBA from a given int32 color\n *\n * @param argb ARGB representation of a int32 color.\n * @return RGBA representation of a int32 color.\n */\nexport function rgbaFromArgb(argb: number): Rgba {\n const r = redFromArgb(argb);\n const g = greenFromArgb(argb);\n const b = blueFromArgb(argb);\n const a = alphaFromArgb(argb);\n return { r, g, b, a };\n}\n\n/**\n * Return int32 color from a given RGBA component\n *\n * @param rgba RGBA representation of a int32 color.\n * @returns ARGB representation of a int32 color.\n */\nexport function argbFromRgba({ r, g, b, a }: Rgba): number {\n const rValue = clampComponent(r);\n const gValue = clampComponent(g);\n const bValue = clampComponent(b);\n const aValue = clampComponent(a);\n return (aValue << 24) | (rValue << 16) | (gValue << 8) | bValue;\n}\n\nfunction clampComponent(value: number) {\n if (value < 0) return 0;\n if (value > 255) return 255;\n return value;\n}\n\nfunction labF(t: number): number {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n if (t > e) {\n return Math.pow(t, 1.0 / 3.0);\n } else {\n return (kappa * t + 16) / 116;\n }\n}\n\nfunction labInvf(ft: number): number {\n const e = 216.0 / 24389.0;\n const kappa = 24389.0 / 27.0;\n const ft3 = ft * ft * ft;\n if (ft3 > e) {\n return ft3;\n } else {\n return (116 * ft - 16) / kappa;\n }\n}\n"],"mappings":"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","ignoreList":[]}