@esri/solutions-components 0.2.6 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) hide show
  1. package/dist/cjs/deduct-calculator.cjs.entry.js +1 -1
  2. package/dist/cjs/pci-calculator.cjs.entry.js +1 -1
  3. package/dist/cjs/{pciUtils-6a806ba4.js → pciUtils-423cfc68.js} +25 -7
  4. package/dist/collection/demos/deduct-calculator.html +2 -5
  5. package/dist/collection/demos/new-public-notification.html +6 -4
  6. package/dist/collection/utils/pciUtils.js +25 -7
  7. package/dist/collection/utils/pciUtils.ts +30 -7
  8. package/dist/components/ExpandToggle.js +110 -0
  9. package/dist/components/Heading.js +22 -0
  10. package/dist/components/_commonjsHelpers.js +22 -0
  11. package/dist/components/action-bar.js +276 -0
  12. package/dist/components/action-group.js +149 -0
  13. package/dist/components/action-menu.js +356 -0
  14. package/dist/components/action.js +214 -0
  15. package/dist/components/add-record-modal.d.ts +11 -0
  16. package/dist/components/add-record-modal.js +171 -0
  17. package/dist/components/array.js +15 -0
  18. package/dist/components/block.js +272 -0
  19. package/dist/components/buffer-tools.d.ts +11 -0
  20. package/dist/components/buffer-tools.js +11 -0
  21. package/dist/components/buffer-tools2.js +262 -0
  22. package/dist/components/button.js +263 -0
  23. package/dist/components/calcite-accordion-item.js +244 -0
  24. package/dist/components/calcite-accordion.js +180 -0
  25. package/dist/components/calcite-action-bar.js +11 -0
  26. package/dist/components/calcite-action-group.js +11 -0
  27. package/dist/components/calcite-action-menu.js +11 -0
  28. package/dist/components/calcite-action-pad.js +197 -0
  29. package/dist/components/calcite-action.js +11 -0
  30. package/dist/components/calcite-alert.js +297 -0
  31. package/dist/components/calcite-avatar.js +182 -0
  32. package/dist/components/calcite-block-section.js +155 -0
  33. package/dist/components/calcite-block.js +11 -0
  34. package/dist/components/calcite-button.js +11 -0
  35. package/dist/components/calcite-card.js +187 -0
  36. package/dist/components/calcite-checkbox.js +11 -0
  37. package/dist/components/calcite-chip.js +11 -0
  38. package/dist/components/calcite-color-picker-hex-input.js +11 -0
  39. package/dist/components/calcite-color-picker-swatch.js +11 -0
  40. package/dist/components/calcite-color-picker.js +1036 -0
  41. package/dist/components/calcite-combobox-item-group.js +75 -0
  42. package/dist/components/calcite-combobox-item.js +11 -0
  43. package/dist/components/calcite-combobox.js +11 -0
  44. package/dist/components/calcite-date-picker-day.js +11 -0
  45. package/dist/components/calcite-date-picker-month-header.js +11 -0
  46. package/dist/components/calcite-date-picker-month.js +11 -0
  47. package/dist/components/calcite-date-picker.js +11 -0
  48. package/dist/components/calcite-dropdown-group.js +11 -0
  49. package/dist/components/calcite-dropdown-item.js +11 -0
  50. package/dist/components/calcite-dropdown.js +11 -0
  51. package/dist/components/calcite-fab.js +144 -0
  52. package/dist/components/calcite-filter.js +195 -0
  53. package/dist/components/calcite-flow-item.js +243 -0
  54. package/dist/components/calcite-flow.js +147 -0
  55. package/dist/components/calcite-graph.js +11 -0
  56. package/dist/components/calcite-handle.js +11 -0
  57. package/dist/components/calcite-icon.js +11 -0
  58. package/dist/components/calcite-inline-editable.js +294 -0
  59. package/dist/components/calcite-input-date-picker.js +713 -0
  60. package/dist/components/calcite-input-message.js +11 -0
  61. package/dist/components/calcite-input-number.js +637 -0
  62. package/dist/components/calcite-input-text.js +400 -0
  63. package/dist/components/calcite-input-time-picker.js +434 -0
  64. package/dist/components/calcite-input.js +11 -0
  65. package/dist/components/calcite-label.js +11 -0
  66. package/dist/components/calcite-link.js +11 -0
  67. package/dist/components/calcite-list-item-group.js +65 -0
  68. package/dist/components/calcite-list-item.js +11 -0
  69. package/dist/components/calcite-list.js +11 -0
  70. package/dist/components/calcite-loader.js +11 -0
  71. package/dist/components/calcite-modal.js +11 -0
  72. package/dist/components/calcite-notice.js +11 -0
  73. package/dist/components/calcite-option-group.js +64 -0
  74. package/dist/components/calcite-option.js +11 -0
  75. package/dist/components/calcite-pagination.js +258 -0
  76. package/dist/components/calcite-panel.js +11 -0
  77. package/dist/components/calcite-pick-list-group.js +74 -0
  78. package/dist/components/calcite-pick-list-item.js +11 -0
  79. package/dist/components/calcite-pick-list.js +11 -0
  80. package/dist/components/calcite-popover-manager.js +94 -0
  81. package/dist/components/calcite-popover.js +11 -0
  82. package/dist/components/calcite-progress.js +11 -0
  83. package/dist/components/calcite-radio-button-group.js +132 -0
  84. package/dist/components/calcite-radio-button.js +310 -0
  85. package/dist/components/calcite-radio-group-item.js +11 -0
  86. package/dist/components/calcite-radio-group.js +11 -0
  87. package/dist/components/calcite-rating.js +201 -0
  88. package/dist/components/calcite-scrim.js +11 -0
  89. package/dist/components/calcite-select.js +11 -0
  90. package/dist/components/calcite-shell-center-row.js +100 -0
  91. package/dist/components/calcite-shell-panel.js +11 -0
  92. package/dist/components/calcite-shell.js +11 -0
  93. package/dist/components/calcite-slider.js +11 -0
  94. package/dist/components/calcite-sortable-list.js +202 -0
  95. package/dist/components/calcite-split-button.js +11 -0
  96. package/dist/components/calcite-stepper-item.js +271 -0
  97. package/dist/components/calcite-stepper.js +256 -0
  98. package/dist/components/calcite-switch.js +11 -0
  99. package/dist/components/calcite-tab-nav.js +11 -0
  100. package/dist/components/calcite-tab-title.js +11 -0
  101. package/dist/components/calcite-tab.js +11 -0
  102. package/dist/components/calcite-tabs.js +11 -0
  103. package/dist/components/calcite-tile-select-group.js +65 -0
  104. package/dist/components/calcite-tile-select.js +266 -0
  105. package/dist/components/calcite-tile.js +11 -0
  106. package/dist/components/calcite-time-picker.js +11 -0
  107. package/dist/components/calcite-tip-group.js +41 -0
  108. package/dist/components/calcite-tip-manager.js +223 -0
  109. package/dist/components/calcite-tip.js +162 -0
  110. package/dist/components/calcite-tooltip-manager.js +57 -0
  111. package/dist/components/calcite-tooltip.js +11 -0
  112. package/dist/components/calcite-tree-item.js +11 -0
  113. package/dist/components/calcite-tree.js +11 -0
  114. package/dist/components/calcite-value-list-item.js +11 -0
  115. package/dist/components/calcite-value-list.js +11 -0
  116. package/dist/components/card-manager.d.ts +11 -0
  117. package/dist/components/card-manager.js +143 -0
  118. package/dist/components/check-list.d.ts +11 -0
  119. package/dist/components/check-list.js +11 -0
  120. package/dist/components/check-list2.js +131 -0
  121. package/dist/components/checkbox.js +165 -0
  122. package/dist/components/chip.js +170 -0
  123. package/dist/components/color-picker-hex-input.js +363 -0
  124. package/dist/components/color-picker-swatch.js +2034 -0
  125. package/dist/components/combobox-item.js +182 -0
  126. package/dist/components/combobox.js +912 -0
  127. package/dist/components/comment-card.d.ts +11 -0
  128. package/dist/components/comment-card.js +90 -0
  129. package/dist/components/conditionalSlot.js +50 -0
  130. package/dist/components/config-buffer-tools.d.ts +11 -0
  131. package/dist/components/config-buffer-tools.js +187 -0
  132. package/dist/components/config-draw-tools.d.ts +11 -0
  133. package/dist/components/config-draw-tools.js +121 -0
  134. package/dist/components/config-layer-picker.d.ts +11 -0
  135. package/dist/components/config-layer-picker.js +163 -0
  136. package/dist/components/config-pdf-download.d.ts +11 -0
  137. package/dist/components/config-pdf-download.js +154 -0
  138. package/dist/components/crowdsource-manager.d.ts +11 -0
  139. package/dist/components/crowdsource-manager.js +90 -0
  140. package/dist/components/crowdsource-reporter.d.ts +11 -0
  141. package/dist/components/crowdsource-reporter.js +90 -0
  142. package/dist/components/csvUtils.js +74 -0
  143. package/dist/components/date-picker-day.js +111 -0
  144. package/dist/components/date-picker-month-header.js +224 -0
  145. package/dist/components/date-picker-month.js +344 -0
  146. package/dist/components/date-picker.js +575 -0
  147. package/dist/components/date.js +180 -0
  148. package/dist/components/debounce.js +487 -0
  149. package/dist/components/deduct-calculator.d.ts +11 -0
  150. package/dist/components/deduct-calculator.js +11 -0
  151. package/dist/components/deduct-calculator2.js +1002 -0
  152. package/dist/components/dom.js +231 -0
  153. package/dist/components/dropdown-group.js +96 -0
  154. package/dist/components/dropdown-item.js +232 -0
  155. package/dist/components/dropdown.js +505 -0
  156. package/dist/components/edit-record-modal.d.ts +11 -0
  157. package/dist/components/edit-record-modal.js +11 -0
  158. package/dist/components/edit-record-modal2.js +161 -0
  159. package/dist/components/filter.js +763 -0
  160. package/dist/components/floating-ui.js +1768 -0
  161. package/dist/components/form.js +228 -0
  162. package/dist/components/graph.js +254 -0
  163. package/dist/components/guid.js +24 -0
  164. package/dist/components/handle.js +119 -0
  165. package/dist/components/icon.js +202 -0
  166. package/dist/components/index.d.ts +61 -0
  167. package/dist/components/index.js +196 -0
  168. package/dist/components/index2.js +199 -0
  169. package/dist/components/info-card.d.ts +11 -0
  170. package/dist/components/info-card.js +11 -0
  171. package/dist/components/info-card2.js +97 -0
  172. package/dist/components/input-message.js +101 -0
  173. package/dist/components/input.js +740 -0
  174. package/dist/components/interactive.js +51 -0
  175. package/dist/components/interfaces.js +19 -0
  176. package/dist/components/interfaces2.js +21 -0
  177. package/dist/components/interfaces3.js +80 -0
  178. package/dist/components/json-editor.d.ts +11 -0
  179. package/dist/components/json-editor.js +11 -0
  180. package/dist/components/json-editor2.js +441 -0
  181. package/dist/components/key.js +16 -0
  182. package/dist/components/label.js +106 -0
  183. package/dist/components/label2.js +131 -0
  184. package/dist/components/labelFormats.js +210 -0
  185. package/dist/components/layer-table.d.ts +11 -0
  186. package/dist/components/layer-table.js +453 -0
  187. package/dist/components/link.js +123 -0
  188. package/dist/components/list-item.d.ts +11 -0
  189. package/dist/components/list-item.js +90 -0
  190. package/dist/components/list-item2.js +149 -0
  191. package/dist/components/list.js +83 -0
  192. package/dist/components/loadModules.js +28 -0
  193. package/dist/components/loader.js +116 -0
  194. package/dist/components/locale.js +412 -0
  195. package/dist/components/locale2.js +413 -0
  196. package/dist/components/map-card.d.ts +11 -0
  197. package/dist/components/map-card.js +354 -0
  198. package/dist/components/map-draw-tools.d.ts +11 -0
  199. package/dist/components/map-draw-tools.js +11 -0
  200. package/dist/components/map-draw-tools2.js +228 -0
  201. package/dist/components/map-layer-picker.d.ts +11 -0
  202. package/dist/components/map-layer-picker.js +11 -0
  203. package/dist/components/map-layer-picker2.js +188 -0
  204. package/dist/components/map-search.d.ts +11 -0
  205. package/dist/components/map-search.js +155 -0
  206. package/dist/components/map-select-tools.d.ts +11 -0
  207. package/dist/components/map-select-tools.js +11 -0
  208. package/dist/components/map-select-tools2.js +588 -0
  209. package/dist/components/mapViewUtils.js +129 -0
  210. package/dist/components/math.js +24 -0
  211. package/dist/components/media-card.d.ts +11 -0
  212. package/dist/components/media-card.js +11 -0
  213. package/dist/components/media-card2.js +177 -0
  214. package/dist/components/modal.js +495 -0
  215. package/dist/components/nonChromiumPlatformUtils.js +503 -0
  216. package/dist/components/notice.js +192 -0
  217. package/dist/components/observers.js +56 -0
  218. package/dist/components/openCloseComponent.js +56 -0
  219. package/dist/components/option.js +109 -0
  220. package/dist/components/panel.js +459 -0
  221. package/dist/components/pci-calculator.d.ts +11 -0
  222. package/dist/components/pci-calculator.js +193 -0
  223. package/dist/components/pdf-download.d.ts +11 -0
  224. package/dist/components/pdf-download.js +11 -0
  225. package/dist/components/pdf-download2.js +189 -0
  226. package/dist/components/pick-list-item.js +255 -0
  227. package/dist/components/pick-list.js +170 -0
  228. package/dist/components/popover.js +500 -0
  229. package/dist/components/progress.js +60 -0
  230. package/dist/components/public-notification.d.ts +11 -0
  231. package/dist/components/public-notification.js +825 -0
  232. package/dist/components/publicNotificationStore.js +38 -0
  233. package/dist/components/queryUtils.js +187 -0
  234. package/dist/components/radio-group-item.js +101 -0
  235. package/dist/components/radio-group.js +235 -0
  236. package/dist/components/refine-selection-tools.d.ts +11 -0
  237. package/dist/components/refine-selection-tools.js +11 -0
  238. package/dist/components/refine-selection-tools2.js +492 -0
  239. package/dist/components/refine-selection.d.ts +11 -0
  240. package/dist/components/refine-selection.js +11 -0
  241. package/dist/components/refine-selection2.js +376 -0
  242. package/dist/components/resources.js +24 -0
  243. package/dist/components/resources2.js +21 -0
  244. package/dist/components/resources3.js +38 -0
  245. package/dist/components/scrim.js +83 -0
  246. package/dist/components/select.js +259 -0
  247. package/dist/components/shared-list-render.js +319 -0
  248. package/dist/components/shell-panel.js +281 -0
  249. package/dist/components/shell.js +121 -0
  250. package/dist/components/slider.js +896 -0
  251. package/dist/components/solution-configuration.d.ts +11 -0
  252. package/dist/components/solution-configuration.js +2233 -0
  253. package/dist/components/solution-contents.d.ts +11 -0
  254. package/dist/components/solution-contents.js +11 -0
  255. package/dist/components/solution-contents2.js +128 -0
  256. package/dist/components/solution-item-details.d.ts +11 -0
  257. package/dist/components/solution-item-details.js +11 -0
  258. package/dist/components/solution-item-details2.js +234 -0
  259. package/dist/components/solution-item-icon.d.ts +11 -0
  260. package/dist/components/solution-item-icon.js +11 -0
  261. package/dist/components/solution-item-icon2.js +342 -0
  262. package/dist/components/solution-item-sharing.d.ts +11 -0
  263. package/dist/components/solution-item-sharing.js +11 -0
  264. package/dist/components/solution-item-sharing2.js +167 -0
  265. package/dist/components/solution-item.d.ts +11 -0
  266. package/dist/components/solution-item.js +11 -0
  267. package/dist/components/solution-item2.js +315 -0
  268. package/dist/components/solution-organization-variables.d.ts +11 -0
  269. package/dist/components/solution-organization-variables.js +11 -0
  270. package/dist/components/solution-organization-variables2.js +132 -0
  271. package/dist/components/solution-resource-item.d.ts +11 -0
  272. package/dist/components/solution-resource-item.js +11 -0
  273. package/dist/components/solution-resource-item2.js +356 -0
  274. package/dist/components/solution-spatial-ref.d.ts +11 -0
  275. package/dist/components/solution-spatial-ref.js +11 -0
  276. package/dist/components/solution-spatial-ref2.js +21446 -0
  277. package/dist/components/solution-store.js +4092 -0
  278. package/dist/components/solution-template-data.d.ts +11 -0
  279. package/dist/components/solution-template-data.js +11 -0
  280. package/dist/components/solution-template-data2.js +233 -0
  281. package/dist/components/solution-variables.d.ts +11 -0
  282. package/dist/components/solution-variables.js +11 -0
  283. package/dist/components/solution-variables2.js +150 -0
  284. package/dist/components/sortable.esm.js +3026 -0
  285. package/dist/components/split-button.js +165 -0
  286. package/dist/components/store-manager.d.ts +11 -0
  287. package/dist/components/store-manager.js +83 -0
  288. package/dist/components/switch.js +139 -0
  289. package/dist/components/tab-nav.js +241 -0
  290. package/dist/components/tab-title.js +276 -0
  291. package/dist/components/tab.js +154 -0
  292. package/dist/components/tabs.js +188 -0
  293. package/dist/components/tile.js +129 -0
  294. package/dist/components/time-picker.js +943 -0
  295. package/dist/components/tooltip.js +399 -0
  296. package/dist/components/tree-item.js +294 -0
  297. package/dist/components/tree.js +327 -0
  298. package/dist/components/utils.js +119 -0
  299. package/dist/components/utils2.js +51 -0
  300. package/dist/components/value-list-item.js +204 -0
  301. package/dist/components/value-list.js +333 -0
  302. package/dist/esm/deduct-calculator.entry.js +1 -1
  303. package/dist/esm/pci-calculator.entry.js +1 -1
  304. package/dist/esm/{pciUtils-e3007a1c.js → pciUtils-ecda46e5.js} +25 -7
  305. package/dist/solutions-components/demos/deduct-calculator.html +2 -5
  306. package/dist/solutions-components/demos/new-public-notification.html +6 -4
  307. package/dist/solutions-components/{p-ff80ffbb.entry.js → p-0512635b.entry.js} +1 -1
  308. package/dist/solutions-components/{p-5ec407c2.entry.js → p-0c088725.entry.js} +1 -1
  309. package/dist/solutions-components/p-cc815aca.js +21 -0
  310. package/dist/solutions-components/solutions-components.esm.js +1 -1
  311. package/dist/solutions-components/utils/pciUtils.ts +30 -7
  312. package/dist/types/utils/pciUtils.d.ts +2 -1
  313. package/package.json +4 -3
  314. package/dist/solutions-components/p-647bbd18.js +0 -21
@@ -0,0 +1,2034 @@
1
+ /*!
2
+ * Copyright 2022 Esri
3
+ * Licensed under the Apache License, Version 2.0
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ import { proxyCustomElement, HTMLElement, h } from '@stencil/core/internal/client';
7
+ import { c as createCommonjsModule } from './_commonjsHelpers.js';
8
+ import { e as getThemeName } from './dom.js';
9
+
10
+ var colorName = {
11
+ "aliceblue": [240, 248, 255],
12
+ "antiquewhite": [250, 235, 215],
13
+ "aqua": [0, 255, 255],
14
+ "aquamarine": [127, 255, 212],
15
+ "azure": [240, 255, 255],
16
+ "beige": [245, 245, 220],
17
+ "bisque": [255, 228, 196],
18
+ "black": [0, 0, 0],
19
+ "blanchedalmond": [255, 235, 205],
20
+ "blue": [0, 0, 255],
21
+ "blueviolet": [138, 43, 226],
22
+ "brown": [165, 42, 42],
23
+ "burlywood": [222, 184, 135],
24
+ "cadetblue": [95, 158, 160],
25
+ "chartreuse": [127, 255, 0],
26
+ "chocolate": [210, 105, 30],
27
+ "coral": [255, 127, 80],
28
+ "cornflowerblue": [100, 149, 237],
29
+ "cornsilk": [255, 248, 220],
30
+ "crimson": [220, 20, 60],
31
+ "cyan": [0, 255, 255],
32
+ "darkblue": [0, 0, 139],
33
+ "darkcyan": [0, 139, 139],
34
+ "darkgoldenrod": [184, 134, 11],
35
+ "darkgray": [169, 169, 169],
36
+ "darkgreen": [0, 100, 0],
37
+ "darkgrey": [169, 169, 169],
38
+ "darkkhaki": [189, 183, 107],
39
+ "darkmagenta": [139, 0, 139],
40
+ "darkolivegreen": [85, 107, 47],
41
+ "darkorange": [255, 140, 0],
42
+ "darkorchid": [153, 50, 204],
43
+ "darkred": [139, 0, 0],
44
+ "darksalmon": [233, 150, 122],
45
+ "darkseagreen": [143, 188, 143],
46
+ "darkslateblue": [72, 61, 139],
47
+ "darkslategray": [47, 79, 79],
48
+ "darkslategrey": [47, 79, 79],
49
+ "darkturquoise": [0, 206, 209],
50
+ "darkviolet": [148, 0, 211],
51
+ "deeppink": [255, 20, 147],
52
+ "deepskyblue": [0, 191, 255],
53
+ "dimgray": [105, 105, 105],
54
+ "dimgrey": [105, 105, 105],
55
+ "dodgerblue": [30, 144, 255],
56
+ "firebrick": [178, 34, 34],
57
+ "floralwhite": [255, 250, 240],
58
+ "forestgreen": [34, 139, 34],
59
+ "fuchsia": [255, 0, 255],
60
+ "gainsboro": [220, 220, 220],
61
+ "ghostwhite": [248, 248, 255],
62
+ "gold": [255, 215, 0],
63
+ "goldenrod": [218, 165, 32],
64
+ "gray": [128, 128, 128],
65
+ "green": [0, 128, 0],
66
+ "greenyellow": [173, 255, 47],
67
+ "grey": [128, 128, 128],
68
+ "honeydew": [240, 255, 240],
69
+ "hotpink": [255, 105, 180],
70
+ "indianred": [205, 92, 92],
71
+ "indigo": [75, 0, 130],
72
+ "ivory": [255, 255, 240],
73
+ "khaki": [240, 230, 140],
74
+ "lavender": [230, 230, 250],
75
+ "lavenderblush": [255, 240, 245],
76
+ "lawngreen": [124, 252, 0],
77
+ "lemonchiffon": [255, 250, 205],
78
+ "lightblue": [173, 216, 230],
79
+ "lightcoral": [240, 128, 128],
80
+ "lightcyan": [224, 255, 255],
81
+ "lightgoldenrodyellow": [250, 250, 210],
82
+ "lightgray": [211, 211, 211],
83
+ "lightgreen": [144, 238, 144],
84
+ "lightgrey": [211, 211, 211],
85
+ "lightpink": [255, 182, 193],
86
+ "lightsalmon": [255, 160, 122],
87
+ "lightseagreen": [32, 178, 170],
88
+ "lightskyblue": [135, 206, 250],
89
+ "lightslategray": [119, 136, 153],
90
+ "lightslategrey": [119, 136, 153],
91
+ "lightsteelblue": [176, 196, 222],
92
+ "lightyellow": [255, 255, 224],
93
+ "lime": [0, 255, 0],
94
+ "limegreen": [50, 205, 50],
95
+ "linen": [250, 240, 230],
96
+ "magenta": [255, 0, 255],
97
+ "maroon": [128, 0, 0],
98
+ "mediumaquamarine": [102, 205, 170],
99
+ "mediumblue": [0, 0, 205],
100
+ "mediumorchid": [186, 85, 211],
101
+ "mediumpurple": [147, 112, 219],
102
+ "mediumseagreen": [60, 179, 113],
103
+ "mediumslateblue": [123, 104, 238],
104
+ "mediumspringgreen": [0, 250, 154],
105
+ "mediumturquoise": [72, 209, 204],
106
+ "mediumvioletred": [199, 21, 133],
107
+ "midnightblue": [25, 25, 112],
108
+ "mintcream": [245, 255, 250],
109
+ "mistyrose": [255, 228, 225],
110
+ "moccasin": [255, 228, 181],
111
+ "navajowhite": [255, 222, 173],
112
+ "navy": [0, 0, 128],
113
+ "oldlace": [253, 245, 230],
114
+ "olive": [128, 128, 0],
115
+ "olivedrab": [107, 142, 35],
116
+ "orange": [255, 165, 0],
117
+ "orangered": [255, 69, 0],
118
+ "orchid": [218, 112, 214],
119
+ "palegoldenrod": [238, 232, 170],
120
+ "palegreen": [152, 251, 152],
121
+ "paleturquoise": [175, 238, 238],
122
+ "palevioletred": [219, 112, 147],
123
+ "papayawhip": [255, 239, 213],
124
+ "peachpuff": [255, 218, 185],
125
+ "peru": [205, 133, 63],
126
+ "pink": [255, 192, 203],
127
+ "plum": [221, 160, 221],
128
+ "powderblue": [176, 224, 230],
129
+ "purple": [128, 0, 128],
130
+ "rebeccapurple": [102, 51, 153],
131
+ "red": [255, 0, 0],
132
+ "rosybrown": [188, 143, 143],
133
+ "royalblue": [65, 105, 225],
134
+ "saddlebrown": [139, 69, 19],
135
+ "salmon": [250, 128, 114],
136
+ "sandybrown": [244, 164, 96],
137
+ "seagreen": [46, 139, 87],
138
+ "seashell": [255, 245, 238],
139
+ "sienna": [160, 82, 45],
140
+ "silver": [192, 192, 192],
141
+ "skyblue": [135, 206, 235],
142
+ "slateblue": [106, 90, 205],
143
+ "slategray": [112, 128, 144],
144
+ "slategrey": [112, 128, 144],
145
+ "snow": [255, 250, 250],
146
+ "springgreen": [0, 255, 127],
147
+ "steelblue": [70, 130, 180],
148
+ "tan": [210, 180, 140],
149
+ "teal": [0, 128, 128],
150
+ "thistle": [216, 191, 216],
151
+ "tomato": [255, 99, 71],
152
+ "turquoise": [64, 224, 208],
153
+ "violet": [238, 130, 238],
154
+ "wheat": [245, 222, 179],
155
+ "white": [255, 255, 255],
156
+ "whitesmoke": [245, 245, 245],
157
+ "yellow": [255, 255, 0],
158
+ "yellowgreen": [154, 205, 50]
159
+ };
160
+
161
+ var isArrayish = function isArrayish(obj) {
162
+ if (!obj || typeof obj === 'string') {
163
+ return false;
164
+ }
165
+
166
+ return obj instanceof Array || Array.isArray(obj) ||
167
+ (obj.length >= 0 && (obj.splice instanceof Function ||
168
+ (Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));
169
+ };
170
+
171
+ var simpleSwizzle = createCommonjsModule(function (module) {
172
+
173
+
174
+
175
+ var concat = Array.prototype.concat;
176
+ var slice = Array.prototype.slice;
177
+
178
+ var swizzle = module.exports = function swizzle(args) {
179
+ var results = [];
180
+
181
+ for (var i = 0, len = args.length; i < len; i++) {
182
+ var arg = args[i];
183
+
184
+ if (isArrayish(arg)) {
185
+ // http://jsperf.com/javascript-array-concat-vs-push/98
186
+ results = concat.call(results, slice.call(arg));
187
+ } else {
188
+ results.push(arg);
189
+ }
190
+ }
191
+
192
+ return results;
193
+ };
194
+
195
+ swizzle.wrap = function (fn) {
196
+ return function () {
197
+ return fn(swizzle(arguments));
198
+ };
199
+ };
200
+ });
201
+
202
+ var colorString = createCommonjsModule(function (module) {
203
+ /* MIT license */
204
+
205
+
206
+ var hasOwnProperty = Object.hasOwnProperty;
207
+
208
+ var reverseNames = Object.create(null);
209
+
210
+ // create a list of reverse color names
211
+ for (var name in colorName) {
212
+ if (hasOwnProperty.call(colorName, name)) {
213
+ reverseNames[colorName[name]] = name;
214
+ }
215
+ }
216
+
217
+ var cs = module.exports = {
218
+ to: {},
219
+ get: {}
220
+ };
221
+
222
+ cs.get = function (string) {
223
+ var prefix = string.substring(0, 3).toLowerCase();
224
+ var val;
225
+ var model;
226
+ switch (prefix) {
227
+ case 'hsl':
228
+ val = cs.get.hsl(string);
229
+ model = 'hsl';
230
+ break;
231
+ case 'hwb':
232
+ val = cs.get.hwb(string);
233
+ model = 'hwb';
234
+ break;
235
+ default:
236
+ val = cs.get.rgb(string);
237
+ model = 'rgb';
238
+ break;
239
+ }
240
+
241
+ if (!val) {
242
+ return null;
243
+ }
244
+
245
+ return {model: model, value: val};
246
+ };
247
+
248
+ cs.get.rgb = function (string) {
249
+ if (!string) {
250
+ return null;
251
+ }
252
+
253
+ var abbr = /^#([a-f0-9]{3,4})$/i;
254
+ var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
255
+ var rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
256
+ var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
257
+ var keyword = /^(\w+)$/;
258
+
259
+ var rgb = [0, 0, 0, 1];
260
+ var match;
261
+ var i;
262
+ var hexAlpha;
263
+
264
+ if (match = string.match(hex)) {
265
+ hexAlpha = match[2];
266
+ match = match[1];
267
+
268
+ for (i = 0; i < 3; i++) {
269
+ // https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19
270
+ var i2 = i * 2;
271
+ rgb[i] = parseInt(match.slice(i2, i2 + 2), 16);
272
+ }
273
+
274
+ if (hexAlpha) {
275
+ rgb[3] = parseInt(hexAlpha, 16) / 255;
276
+ }
277
+ } else if (match = string.match(abbr)) {
278
+ match = match[1];
279
+ hexAlpha = match[3];
280
+
281
+ for (i = 0; i < 3; i++) {
282
+ rgb[i] = parseInt(match[i] + match[i], 16);
283
+ }
284
+
285
+ if (hexAlpha) {
286
+ rgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;
287
+ }
288
+ } else if (match = string.match(rgba)) {
289
+ for (i = 0; i < 3; i++) {
290
+ rgb[i] = parseInt(match[i + 1], 0);
291
+ }
292
+
293
+ if (match[4]) {
294
+ if (match[5]) {
295
+ rgb[3] = parseFloat(match[4]) * 0.01;
296
+ } else {
297
+ rgb[3] = parseFloat(match[4]);
298
+ }
299
+ }
300
+ } else if (match = string.match(per)) {
301
+ for (i = 0; i < 3; i++) {
302
+ rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);
303
+ }
304
+
305
+ if (match[4]) {
306
+ if (match[5]) {
307
+ rgb[3] = parseFloat(match[4]) * 0.01;
308
+ } else {
309
+ rgb[3] = parseFloat(match[4]);
310
+ }
311
+ }
312
+ } else if (match = string.match(keyword)) {
313
+ if (match[1] === 'transparent') {
314
+ return [0, 0, 0, 0];
315
+ }
316
+
317
+ if (!hasOwnProperty.call(colorName, match[1])) {
318
+ return null;
319
+ }
320
+
321
+ rgb = colorName[match[1]];
322
+ rgb[3] = 1;
323
+
324
+ return rgb;
325
+ } else {
326
+ return null;
327
+ }
328
+
329
+ for (i = 0; i < 3; i++) {
330
+ rgb[i] = clamp(rgb[i], 0, 255);
331
+ }
332
+ rgb[3] = clamp(rgb[3], 0, 1);
333
+
334
+ return rgb;
335
+ };
336
+
337
+ cs.get.hsl = function (string) {
338
+ if (!string) {
339
+ return null;
340
+ }
341
+
342
+ var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
343
+ var match = string.match(hsl);
344
+
345
+ if (match) {
346
+ var alpha = parseFloat(match[4]);
347
+ var h = ((parseFloat(match[1]) % 360) + 360) % 360;
348
+ var s = clamp(parseFloat(match[2]), 0, 100);
349
+ var l = clamp(parseFloat(match[3]), 0, 100);
350
+ var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
351
+
352
+ return [h, s, l, a];
353
+ }
354
+
355
+ return null;
356
+ };
357
+
358
+ cs.get.hwb = function (string) {
359
+ if (!string) {
360
+ return null;
361
+ }
362
+
363
+ var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
364
+ var match = string.match(hwb);
365
+
366
+ if (match) {
367
+ var alpha = parseFloat(match[4]);
368
+ var h = ((parseFloat(match[1]) % 360) + 360) % 360;
369
+ var w = clamp(parseFloat(match[2]), 0, 100);
370
+ var b = clamp(parseFloat(match[3]), 0, 100);
371
+ var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
372
+ return [h, w, b, a];
373
+ }
374
+
375
+ return null;
376
+ };
377
+
378
+ cs.to.hex = function () {
379
+ var rgba = simpleSwizzle(arguments);
380
+
381
+ return (
382
+ '#' +
383
+ hexDouble(rgba[0]) +
384
+ hexDouble(rgba[1]) +
385
+ hexDouble(rgba[2]) +
386
+ (rgba[3] < 1
387
+ ? (hexDouble(Math.round(rgba[3] * 255)))
388
+ : '')
389
+ );
390
+ };
391
+
392
+ cs.to.rgb = function () {
393
+ var rgba = simpleSwizzle(arguments);
394
+
395
+ return rgba.length < 4 || rgba[3] === 1
396
+ ? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'
397
+ : 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';
398
+ };
399
+
400
+ cs.to.rgb.percent = function () {
401
+ var rgba = simpleSwizzle(arguments);
402
+
403
+ var r = Math.round(rgba[0] / 255 * 100);
404
+ var g = Math.round(rgba[1] / 255 * 100);
405
+ var b = Math.round(rgba[2] / 255 * 100);
406
+
407
+ return rgba.length < 4 || rgba[3] === 1
408
+ ? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'
409
+ : 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';
410
+ };
411
+
412
+ cs.to.hsl = function () {
413
+ var hsla = simpleSwizzle(arguments);
414
+ return hsla.length < 4 || hsla[3] === 1
415
+ ? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'
416
+ : 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';
417
+ };
418
+
419
+ // hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax
420
+ // (hwb have alpha optional & 1 is default value)
421
+ cs.to.hwb = function () {
422
+ var hwba = simpleSwizzle(arguments);
423
+
424
+ var a = '';
425
+ if (hwba.length >= 4 && hwba[3] !== 1) {
426
+ a = ', ' + hwba[3];
427
+ }
428
+
429
+ return 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';
430
+ };
431
+
432
+ cs.to.keyword = function (rgb) {
433
+ return reverseNames[rgb.slice(0, 3)];
434
+ };
435
+
436
+ // helpers
437
+ function clamp(num, min, max) {
438
+ return Math.min(Math.max(min, num), max);
439
+ }
440
+
441
+ function hexDouble(num) {
442
+ var str = Math.round(num).toString(16).toUpperCase();
443
+ return (str.length < 2) ? '0' + str : str;
444
+ }
445
+ });
446
+
447
+ /* MIT license */
448
+ /* eslint-disable no-mixed-operators */
449
+
450
+
451
+ // NOTE: conversions should only return primitive values (i.e. arrays, or
452
+ // values that give correct `typeof` results).
453
+ // do not use box values types (i.e. Number(), String(), etc.)
454
+
455
+ const reverseKeywords = {};
456
+ for (const key of Object.keys(colorName)) {
457
+ reverseKeywords[colorName[key]] = key;
458
+ }
459
+
460
+ const convert$1 = {
461
+ rgb: {channels: 3, labels: 'rgb'},
462
+ hsl: {channels: 3, labels: 'hsl'},
463
+ hsv: {channels: 3, labels: 'hsv'},
464
+ hwb: {channels: 3, labels: 'hwb'},
465
+ cmyk: {channels: 4, labels: 'cmyk'},
466
+ xyz: {channels: 3, labels: 'xyz'},
467
+ lab: {channels: 3, labels: 'lab'},
468
+ lch: {channels: 3, labels: 'lch'},
469
+ hex: {channels: 1, labels: ['hex']},
470
+ keyword: {channels: 1, labels: ['keyword']},
471
+ ansi16: {channels: 1, labels: ['ansi16']},
472
+ ansi256: {channels: 1, labels: ['ansi256']},
473
+ hcg: {channels: 3, labels: ['h', 'c', 'g']},
474
+ apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
475
+ gray: {channels: 1, labels: ['gray']}
476
+ };
477
+
478
+ var conversions = convert$1;
479
+
480
+ // Hide .channels and .labels properties
481
+ for (const model of Object.keys(convert$1)) {
482
+ if (!('channels' in convert$1[model])) {
483
+ throw new Error('missing channels property: ' + model);
484
+ }
485
+
486
+ if (!('labels' in convert$1[model])) {
487
+ throw new Error('missing channel labels property: ' + model);
488
+ }
489
+
490
+ if (convert$1[model].labels.length !== convert$1[model].channels) {
491
+ throw new Error('channel and label counts mismatch: ' + model);
492
+ }
493
+
494
+ const {channels, labels} = convert$1[model];
495
+ delete convert$1[model].channels;
496
+ delete convert$1[model].labels;
497
+ Object.defineProperty(convert$1[model], 'channels', {value: channels});
498
+ Object.defineProperty(convert$1[model], 'labels', {value: labels});
499
+ }
500
+
501
+ convert$1.rgb.hsl = function (rgb) {
502
+ const r = rgb[0] / 255;
503
+ const g = rgb[1] / 255;
504
+ const b = rgb[2] / 255;
505
+ const min = Math.min(r, g, b);
506
+ const max = Math.max(r, g, b);
507
+ const delta = max - min;
508
+ let h;
509
+ let s;
510
+
511
+ if (max === min) {
512
+ h = 0;
513
+ } else if (r === max) {
514
+ h = (g - b) / delta;
515
+ } else if (g === max) {
516
+ h = 2 + (b - r) / delta;
517
+ } else if (b === max) {
518
+ h = 4 + (r - g) / delta;
519
+ }
520
+
521
+ h = Math.min(h * 60, 360);
522
+
523
+ if (h < 0) {
524
+ h += 360;
525
+ }
526
+
527
+ const l = (min + max) / 2;
528
+
529
+ if (max === min) {
530
+ s = 0;
531
+ } else if (l <= 0.5) {
532
+ s = delta / (max + min);
533
+ } else {
534
+ s = delta / (2 - max - min);
535
+ }
536
+
537
+ return [h, s * 100, l * 100];
538
+ };
539
+
540
+ convert$1.rgb.hsv = function (rgb) {
541
+ let rdif;
542
+ let gdif;
543
+ let bdif;
544
+ let h;
545
+ let s;
546
+
547
+ const r = rgb[0] / 255;
548
+ const g = rgb[1] / 255;
549
+ const b = rgb[2] / 255;
550
+ const v = Math.max(r, g, b);
551
+ const diff = v - Math.min(r, g, b);
552
+ const diffc = function (c) {
553
+ return (v - c) / 6 / diff + 1 / 2;
554
+ };
555
+
556
+ if (diff === 0) {
557
+ h = 0;
558
+ s = 0;
559
+ } else {
560
+ s = diff / v;
561
+ rdif = diffc(r);
562
+ gdif = diffc(g);
563
+ bdif = diffc(b);
564
+
565
+ if (r === v) {
566
+ h = bdif - gdif;
567
+ } else if (g === v) {
568
+ h = (1 / 3) + rdif - bdif;
569
+ } else if (b === v) {
570
+ h = (2 / 3) + gdif - rdif;
571
+ }
572
+
573
+ if (h < 0) {
574
+ h += 1;
575
+ } else if (h > 1) {
576
+ h -= 1;
577
+ }
578
+ }
579
+
580
+ return [
581
+ h * 360,
582
+ s * 100,
583
+ v * 100
584
+ ];
585
+ };
586
+
587
+ convert$1.rgb.hwb = function (rgb) {
588
+ const r = rgb[0];
589
+ const g = rgb[1];
590
+ let b = rgb[2];
591
+ const h = convert$1.rgb.hsl(rgb)[0];
592
+ const w = 1 / 255 * Math.min(r, Math.min(g, b));
593
+
594
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
595
+
596
+ return [h, w * 100, b * 100];
597
+ };
598
+
599
+ convert$1.rgb.cmyk = function (rgb) {
600
+ const r = rgb[0] / 255;
601
+ const g = rgb[1] / 255;
602
+ const b = rgb[2] / 255;
603
+
604
+ const k = Math.min(1 - r, 1 - g, 1 - b);
605
+ const c = (1 - r - k) / (1 - k) || 0;
606
+ const m = (1 - g - k) / (1 - k) || 0;
607
+ const y = (1 - b - k) / (1 - k) || 0;
608
+
609
+ return [c * 100, m * 100, y * 100, k * 100];
610
+ };
611
+
612
+ function comparativeDistance(x, y) {
613
+ /*
614
+ See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
615
+ */
616
+ return (
617
+ ((x[0] - y[0]) ** 2) +
618
+ ((x[1] - y[1]) ** 2) +
619
+ ((x[2] - y[2]) ** 2)
620
+ );
621
+ }
622
+
623
+ convert$1.rgb.keyword = function (rgb) {
624
+ const reversed = reverseKeywords[rgb];
625
+ if (reversed) {
626
+ return reversed;
627
+ }
628
+
629
+ let currentClosestDistance = Infinity;
630
+ let currentClosestKeyword;
631
+
632
+ for (const keyword of Object.keys(colorName)) {
633
+ const value = colorName[keyword];
634
+
635
+ // Compute comparative distance
636
+ const distance = comparativeDistance(rgb, value);
637
+
638
+ // Check if its less, if so set as closest
639
+ if (distance < currentClosestDistance) {
640
+ currentClosestDistance = distance;
641
+ currentClosestKeyword = keyword;
642
+ }
643
+ }
644
+
645
+ return currentClosestKeyword;
646
+ };
647
+
648
+ convert$1.keyword.rgb = function (keyword) {
649
+ return colorName[keyword];
650
+ };
651
+
652
+ convert$1.rgb.xyz = function (rgb) {
653
+ let r = rgb[0] / 255;
654
+ let g = rgb[1] / 255;
655
+ let b = rgb[2] / 255;
656
+
657
+ // Assume sRGB
658
+ r = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);
659
+ g = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);
660
+ b = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);
661
+
662
+ const x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
663
+ const y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
664
+ const z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
665
+
666
+ return [x * 100, y * 100, z * 100];
667
+ };
668
+
669
+ convert$1.rgb.lab = function (rgb) {
670
+ const xyz = convert$1.rgb.xyz(rgb);
671
+ let x = xyz[0];
672
+ let y = xyz[1];
673
+ let z = xyz[2];
674
+
675
+ x /= 95.047;
676
+ y /= 100;
677
+ z /= 108.883;
678
+
679
+ x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
680
+ y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
681
+ z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
682
+
683
+ const l = (116 * y) - 16;
684
+ const a = 500 * (x - y);
685
+ const b = 200 * (y - z);
686
+
687
+ return [l, a, b];
688
+ };
689
+
690
+ convert$1.hsl.rgb = function (hsl) {
691
+ const h = hsl[0] / 360;
692
+ const s = hsl[1] / 100;
693
+ const l = hsl[2] / 100;
694
+ let t2;
695
+ let t3;
696
+ let val;
697
+
698
+ if (s === 0) {
699
+ val = l * 255;
700
+ return [val, val, val];
701
+ }
702
+
703
+ if (l < 0.5) {
704
+ t2 = l * (1 + s);
705
+ } else {
706
+ t2 = l + s - l * s;
707
+ }
708
+
709
+ const t1 = 2 * l - t2;
710
+
711
+ const rgb = [0, 0, 0];
712
+ for (let i = 0; i < 3; i++) {
713
+ t3 = h + 1 / 3 * -(i - 1);
714
+ if (t3 < 0) {
715
+ t3++;
716
+ }
717
+
718
+ if (t3 > 1) {
719
+ t3--;
720
+ }
721
+
722
+ if (6 * t3 < 1) {
723
+ val = t1 + (t2 - t1) * 6 * t3;
724
+ } else if (2 * t3 < 1) {
725
+ val = t2;
726
+ } else if (3 * t3 < 2) {
727
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
728
+ } else {
729
+ val = t1;
730
+ }
731
+
732
+ rgb[i] = val * 255;
733
+ }
734
+
735
+ return rgb;
736
+ };
737
+
738
+ convert$1.hsl.hsv = function (hsl) {
739
+ const h = hsl[0];
740
+ let s = hsl[1] / 100;
741
+ let l = hsl[2] / 100;
742
+ let smin = s;
743
+ const lmin = Math.max(l, 0.01);
744
+
745
+ l *= 2;
746
+ s *= (l <= 1) ? l : 2 - l;
747
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
748
+ const v = (l + s) / 2;
749
+ const sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
750
+
751
+ return [h, sv * 100, v * 100];
752
+ };
753
+
754
+ convert$1.hsv.rgb = function (hsv) {
755
+ const h = hsv[0] / 60;
756
+ const s = hsv[1] / 100;
757
+ let v = hsv[2] / 100;
758
+ const hi = Math.floor(h) % 6;
759
+
760
+ const f = h - Math.floor(h);
761
+ const p = 255 * v * (1 - s);
762
+ const q = 255 * v * (1 - (s * f));
763
+ const t = 255 * v * (1 - (s * (1 - f)));
764
+ v *= 255;
765
+
766
+ switch (hi) {
767
+ case 0:
768
+ return [v, t, p];
769
+ case 1:
770
+ return [q, v, p];
771
+ case 2:
772
+ return [p, v, t];
773
+ case 3:
774
+ return [p, q, v];
775
+ case 4:
776
+ return [t, p, v];
777
+ case 5:
778
+ return [v, p, q];
779
+ }
780
+ };
781
+
782
+ convert$1.hsv.hsl = function (hsv) {
783
+ const h = hsv[0];
784
+ const s = hsv[1] / 100;
785
+ const v = hsv[2] / 100;
786
+ const vmin = Math.max(v, 0.01);
787
+ let sl;
788
+ let l;
789
+
790
+ l = (2 - s) * v;
791
+ const lmin = (2 - s) * vmin;
792
+ sl = s * vmin;
793
+ sl /= (lmin <= 1) ? lmin : 2 - lmin;
794
+ sl = sl || 0;
795
+ l /= 2;
796
+
797
+ return [h, sl * 100, l * 100];
798
+ };
799
+
800
+ // http://dev.w3.org/csswg/css-color/#hwb-to-rgb
801
+ convert$1.hwb.rgb = function (hwb) {
802
+ const h = hwb[0] / 360;
803
+ let wh = hwb[1] / 100;
804
+ let bl = hwb[2] / 100;
805
+ const ratio = wh + bl;
806
+ let f;
807
+
808
+ // Wh + bl cant be > 1
809
+ if (ratio > 1) {
810
+ wh /= ratio;
811
+ bl /= ratio;
812
+ }
813
+
814
+ const i = Math.floor(6 * h);
815
+ const v = 1 - bl;
816
+ f = 6 * h - i;
817
+
818
+ if ((i & 0x01) !== 0) {
819
+ f = 1 - f;
820
+ }
821
+
822
+ const n = wh + f * (v - wh); // Linear interpolation
823
+
824
+ let r;
825
+ let g;
826
+ let b;
827
+ /* eslint-disable max-statements-per-line,no-multi-spaces */
828
+ switch (i) {
829
+ default:
830
+ case 6:
831
+ case 0: r = v; g = n; b = wh; break;
832
+ case 1: r = n; g = v; b = wh; break;
833
+ case 2: r = wh; g = v; b = n; break;
834
+ case 3: r = wh; g = n; b = v; break;
835
+ case 4: r = n; g = wh; b = v; break;
836
+ case 5: r = v; g = wh; b = n; break;
837
+ }
838
+ /* eslint-enable max-statements-per-line,no-multi-spaces */
839
+
840
+ return [r * 255, g * 255, b * 255];
841
+ };
842
+
843
+ convert$1.cmyk.rgb = function (cmyk) {
844
+ const c = cmyk[0] / 100;
845
+ const m = cmyk[1] / 100;
846
+ const y = cmyk[2] / 100;
847
+ const k = cmyk[3] / 100;
848
+
849
+ const r = 1 - Math.min(1, c * (1 - k) + k);
850
+ const g = 1 - Math.min(1, m * (1 - k) + k);
851
+ const b = 1 - Math.min(1, y * (1 - k) + k);
852
+
853
+ return [r * 255, g * 255, b * 255];
854
+ };
855
+
856
+ convert$1.xyz.rgb = function (xyz) {
857
+ const x = xyz[0] / 100;
858
+ const y = xyz[1] / 100;
859
+ const z = xyz[2] / 100;
860
+ let r;
861
+ let g;
862
+ let b;
863
+
864
+ r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
865
+ g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
866
+ b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
867
+
868
+ // Assume sRGB
869
+ r = r > 0.0031308
870
+ ? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)
871
+ : r * 12.92;
872
+
873
+ g = g > 0.0031308
874
+ ? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)
875
+ : g * 12.92;
876
+
877
+ b = b > 0.0031308
878
+ ? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)
879
+ : b * 12.92;
880
+
881
+ r = Math.min(Math.max(0, r), 1);
882
+ g = Math.min(Math.max(0, g), 1);
883
+ b = Math.min(Math.max(0, b), 1);
884
+
885
+ return [r * 255, g * 255, b * 255];
886
+ };
887
+
888
+ convert$1.xyz.lab = function (xyz) {
889
+ let x = xyz[0];
890
+ let y = xyz[1];
891
+ let z = xyz[2];
892
+
893
+ x /= 95.047;
894
+ y /= 100;
895
+ z /= 108.883;
896
+
897
+ x = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);
898
+ y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);
899
+ z = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);
900
+
901
+ const l = (116 * y) - 16;
902
+ const a = 500 * (x - y);
903
+ const b = 200 * (y - z);
904
+
905
+ return [l, a, b];
906
+ };
907
+
908
+ convert$1.lab.xyz = function (lab) {
909
+ const l = lab[0];
910
+ const a = lab[1];
911
+ const b = lab[2];
912
+ let x;
913
+ let y;
914
+ let z;
915
+
916
+ y = (l + 16) / 116;
917
+ x = a / 500 + y;
918
+ z = y - b / 200;
919
+
920
+ const y2 = y ** 3;
921
+ const x2 = x ** 3;
922
+ const z2 = z ** 3;
923
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
924
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
925
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
926
+
927
+ x *= 95.047;
928
+ y *= 100;
929
+ z *= 108.883;
930
+
931
+ return [x, y, z];
932
+ };
933
+
934
+ convert$1.lab.lch = function (lab) {
935
+ const l = lab[0];
936
+ const a = lab[1];
937
+ const b = lab[2];
938
+ let h;
939
+
940
+ const hr = Math.atan2(b, a);
941
+ h = hr * 360 / 2 / Math.PI;
942
+
943
+ if (h < 0) {
944
+ h += 360;
945
+ }
946
+
947
+ const c = Math.sqrt(a * a + b * b);
948
+
949
+ return [l, c, h];
950
+ };
951
+
952
+ convert$1.lch.lab = function (lch) {
953
+ const l = lch[0];
954
+ const c = lch[1];
955
+ const h = lch[2];
956
+
957
+ const hr = h / 360 * 2 * Math.PI;
958
+ const a = c * Math.cos(hr);
959
+ const b = c * Math.sin(hr);
960
+
961
+ return [l, a, b];
962
+ };
963
+
964
+ convert$1.rgb.ansi16 = function (args, saturation = null) {
965
+ const [r, g, b] = args;
966
+ let value = saturation === null ? convert$1.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization
967
+
968
+ value = Math.round(value / 50);
969
+
970
+ if (value === 0) {
971
+ return 30;
972
+ }
973
+
974
+ let ansi = 30
975
+ + ((Math.round(b / 255) << 2)
976
+ | (Math.round(g / 255) << 1)
977
+ | Math.round(r / 255));
978
+
979
+ if (value === 2) {
980
+ ansi += 60;
981
+ }
982
+
983
+ return ansi;
984
+ };
985
+
986
+ convert$1.hsv.ansi16 = function (args) {
987
+ // Optimization here; we already know the value and don't need to get
988
+ // it converted for us.
989
+ return convert$1.rgb.ansi16(convert$1.hsv.rgb(args), args[2]);
990
+ };
991
+
992
+ convert$1.rgb.ansi256 = function (args) {
993
+ const r = args[0];
994
+ const g = args[1];
995
+ const b = args[2];
996
+
997
+ // We use the extended greyscale palette here, with the exception of
998
+ // black and white. normal palette only has 4 greyscale shades.
999
+ if (r === g && g === b) {
1000
+ if (r < 8) {
1001
+ return 16;
1002
+ }
1003
+
1004
+ if (r > 248) {
1005
+ return 231;
1006
+ }
1007
+
1008
+ return Math.round(((r - 8) / 247) * 24) + 232;
1009
+ }
1010
+
1011
+ const ansi = 16
1012
+ + (36 * Math.round(r / 255 * 5))
1013
+ + (6 * Math.round(g / 255 * 5))
1014
+ + Math.round(b / 255 * 5);
1015
+
1016
+ return ansi;
1017
+ };
1018
+
1019
+ convert$1.ansi16.rgb = function (args) {
1020
+ let color = args % 10;
1021
+
1022
+ // Handle greyscale
1023
+ if (color === 0 || color === 7) {
1024
+ if (args > 50) {
1025
+ color += 3.5;
1026
+ }
1027
+
1028
+ color = color / 10.5 * 255;
1029
+
1030
+ return [color, color, color];
1031
+ }
1032
+
1033
+ const mult = (~~(args > 50) + 1) * 0.5;
1034
+ const r = ((color & 1) * mult) * 255;
1035
+ const g = (((color >> 1) & 1) * mult) * 255;
1036
+ const b = (((color >> 2) & 1) * mult) * 255;
1037
+
1038
+ return [r, g, b];
1039
+ };
1040
+
1041
+ convert$1.ansi256.rgb = function (args) {
1042
+ // Handle greyscale
1043
+ if (args >= 232) {
1044
+ const c = (args - 232) * 10 + 8;
1045
+ return [c, c, c];
1046
+ }
1047
+
1048
+ args -= 16;
1049
+
1050
+ let rem;
1051
+ const r = Math.floor(args / 36) / 5 * 255;
1052
+ const g = Math.floor((rem = args % 36) / 6) / 5 * 255;
1053
+ const b = (rem % 6) / 5 * 255;
1054
+
1055
+ return [r, g, b];
1056
+ };
1057
+
1058
+ convert$1.rgb.hex = function (args) {
1059
+ const integer = ((Math.round(args[0]) & 0xFF) << 16)
1060
+ + ((Math.round(args[1]) & 0xFF) << 8)
1061
+ + (Math.round(args[2]) & 0xFF);
1062
+
1063
+ const string = integer.toString(16).toUpperCase();
1064
+ return '000000'.substring(string.length) + string;
1065
+ };
1066
+
1067
+ convert$1.hex.rgb = function (args) {
1068
+ const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
1069
+ if (!match) {
1070
+ return [0, 0, 0];
1071
+ }
1072
+
1073
+ let colorString = match[0];
1074
+
1075
+ if (match[0].length === 3) {
1076
+ colorString = colorString.split('').map(char => {
1077
+ return char + char;
1078
+ }).join('');
1079
+ }
1080
+
1081
+ const integer = parseInt(colorString, 16);
1082
+ const r = (integer >> 16) & 0xFF;
1083
+ const g = (integer >> 8) & 0xFF;
1084
+ const b = integer & 0xFF;
1085
+
1086
+ return [r, g, b];
1087
+ };
1088
+
1089
+ convert$1.rgb.hcg = function (rgb) {
1090
+ const r = rgb[0] / 255;
1091
+ const g = rgb[1] / 255;
1092
+ const b = rgb[2] / 255;
1093
+ const max = Math.max(Math.max(r, g), b);
1094
+ const min = Math.min(Math.min(r, g), b);
1095
+ const chroma = (max - min);
1096
+ let grayscale;
1097
+ let hue;
1098
+
1099
+ if (chroma < 1) {
1100
+ grayscale = min / (1 - chroma);
1101
+ } else {
1102
+ grayscale = 0;
1103
+ }
1104
+
1105
+ if (chroma <= 0) {
1106
+ hue = 0;
1107
+ } else
1108
+ if (max === r) {
1109
+ hue = ((g - b) / chroma) % 6;
1110
+ } else
1111
+ if (max === g) {
1112
+ hue = 2 + (b - r) / chroma;
1113
+ } else {
1114
+ hue = 4 + (r - g) / chroma;
1115
+ }
1116
+
1117
+ hue /= 6;
1118
+ hue %= 1;
1119
+
1120
+ return [hue * 360, chroma * 100, grayscale * 100];
1121
+ };
1122
+
1123
+ convert$1.hsl.hcg = function (hsl) {
1124
+ const s = hsl[1] / 100;
1125
+ const l = hsl[2] / 100;
1126
+
1127
+ const c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));
1128
+
1129
+ let f = 0;
1130
+ if (c < 1.0) {
1131
+ f = (l - 0.5 * c) / (1.0 - c);
1132
+ }
1133
+
1134
+ return [hsl[0], c * 100, f * 100];
1135
+ };
1136
+
1137
+ convert$1.hsv.hcg = function (hsv) {
1138
+ const s = hsv[1] / 100;
1139
+ const v = hsv[2] / 100;
1140
+
1141
+ const c = s * v;
1142
+ let f = 0;
1143
+
1144
+ if (c < 1.0) {
1145
+ f = (v - c) / (1 - c);
1146
+ }
1147
+
1148
+ return [hsv[0], c * 100, f * 100];
1149
+ };
1150
+
1151
+ convert$1.hcg.rgb = function (hcg) {
1152
+ const h = hcg[0] / 360;
1153
+ const c = hcg[1] / 100;
1154
+ const g = hcg[2] / 100;
1155
+
1156
+ if (c === 0.0) {
1157
+ return [g * 255, g * 255, g * 255];
1158
+ }
1159
+
1160
+ const pure = [0, 0, 0];
1161
+ const hi = (h % 1) * 6;
1162
+ const v = hi % 1;
1163
+ const w = 1 - v;
1164
+ let mg = 0;
1165
+
1166
+ /* eslint-disable max-statements-per-line */
1167
+ switch (Math.floor(hi)) {
1168
+ case 0:
1169
+ pure[0] = 1; pure[1] = v; pure[2] = 0; break;
1170
+ case 1:
1171
+ pure[0] = w; pure[1] = 1; pure[2] = 0; break;
1172
+ case 2:
1173
+ pure[0] = 0; pure[1] = 1; pure[2] = v; break;
1174
+ case 3:
1175
+ pure[0] = 0; pure[1] = w; pure[2] = 1; break;
1176
+ case 4:
1177
+ pure[0] = v; pure[1] = 0; pure[2] = 1; break;
1178
+ default:
1179
+ pure[0] = 1; pure[1] = 0; pure[2] = w;
1180
+ }
1181
+ /* eslint-enable max-statements-per-line */
1182
+
1183
+ mg = (1.0 - c) * g;
1184
+
1185
+ return [
1186
+ (c * pure[0] + mg) * 255,
1187
+ (c * pure[1] + mg) * 255,
1188
+ (c * pure[2] + mg) * 255
1189
+ ];
1190
+ };
1191
+
1192
+ convert$1.hcg.hsv = function (hcg) {
1193
+ const c = hcg[1] / 100;
1194
+ const g = hcg[2] / 100;
1195
+
1196
+ const v = c + g * (1.0 - c);
1197
+ let f = 0;
1198
+
1199
+ if (v > 0.0) {
1200
+ f = c / v;
1201
+ }
1202
+
1203
+ return [hcg[0], f * 100, v * 100];
1204
+ };
1205
+
1206
+ convert$1.hcg.hsl = function (hcg) {
1207
+ const c = hcg[1] / 100;
1208
+ const g = hcg[2] / 100;
1209
+
1210
+ const l = g * (1.0 - c) + 0.5 * c;
1211
+ let s = 0;
1212
+
1213
+ if (l > 0.0 && l < 0.5) {
1214
+ s = c / (2 * l);
1215
+ } else
1216
+ if (l >= 0.5 && l < 1.0) {
1217
+ s = c / (2 * (1 - l));
1218
+ }
1219
+
1220
+ return [hcg[0], s * 100, l * 100];
1221
+ };
1222
+
1223
+ convert$1.hcg.hwb = function (hcg) {
1224
+ const c = hcg[1] / 100;
1225
+ const g = hcg[2] / 100;
1226
+ const v = c + g * (1.0 - c);
1227
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
1228
+ };
1229
+
1230
+ convert$1.hwb.hcg = function (hwb) {
1231
+ const w = hwb[1] / 100;
1232
+ const b = hwb[2] / 100;
1233
+ const v = 1 - b;
1234
+ const c = v - w;
1235
+ let g = 0;
1236
+
1237
+ if (c < 1) {
1238
+ g = (v - c) / (1 - c);
1239
+ }
1240
+
1241
+ return [hwb[0], c * 100, g * 100];
1242
+ };
1243
+
1244
+ convert$1.apple.rgb = function (apple) {
1245
+ return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
1246
+ };
1247
+
1248
+ convert$1.rgb.apple = function (rgb) {
1249
+ return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
1250
+ };
1251
+
1252
+ convert$1.gray.rgb = function (args) {
1253
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
1254
+ };
1255
+
1256
+ convert$1.gray.hsl = function (args) {
1257
+ return [0, 0, args[0]];
1258
+ };
1259
+
1260
+ convert$1.gray.hsv = convert$1.gray.hsl;
1261
+
1262
+ convert$1.gray.hwb = function (gray) {
1263
+ return [0, 100, gray[0]];
1264
+ };
1265
+
1266
+ convert$1.gray.cmyk = function (gray) {
1267
+ return [0, 0, 0, gray[0]];
1268
+ };
1269
+
1270
+ convert$1.gray.lab = function (gray) {
1271
+ return [gray[0], 0, 0];
1272
+ };
1273
+
1274
+ convert$1.gray.hex = function (gray) {
1275
+ const val = Math.round(gray[0] / 100 * 255) & 0xFF;
1276
+ const integer = (val << 16) + (val << 8) + val;
1277
+
1278
+ const string = integer.toString(16).toUpperCase();
1279
+ return '000000'.substring(string.length) + string;
1280
+ };
1281
+
1282
+ convert$1.rgb.gray = function (rgb) {
1283
+ const val = (rgb[0] + rgb[1] + rgb[2]) / 3;
1284
+ return [val / 255 * 100];
1285
+ };
1286
+
1287
+ /*
1288
+ This function routes a model to all other models.
1289
+
1290
+ all functions that are routed have a property `.conversion` attached
1291
+ to the returned synthetic function. This property is an array
1292
+ of strings, each with the steps in between the 'from' and 'to'
1293
+ color models (inclusive).
1294
+
1295
+ conversions that are not possible simply are not included.
1296
+ */
1297
+
1298
+ function buildGraph() {
1299
+ const graph = {};
1300
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
1301
+ const models = Object.keys(conversions);
1302
+
1303
+ for (let len = models.length, i = 0; i < len; i++) {
1304
+ graph[models[i]] = {
1305
+ // http://jsperf.com/1-vs-infinity
1306
+ // micro-opt, but this is simple.
1307
+ distance: -1,
1308
+ parent: null
1309
+ };
1310
+ }
1311
+
1312
+ return graph;
1313
+ }
1314
+
1315
+ // https://en.wikipedia.org/wiki/Breadth-first_search
1316
+ function deriveBFS(fromModel) {
1317
+ const graph = buildGraph();
1318
+ const queue = [fromModel]; // Unshift -> queue -> pop
1319
+
1320
+ graph[fromModel].distance = 0;
1321
+
1322
+ while (queue.length) {
1323
+ const current = queue.pop();
1324
+ const adjacents = Object.keys(conversions[current]);
1325
+
1326
+ for (let len = adjacents.length, i = 0; i < len; i++) {
1327
+ const adjacent = adjacents[i];
1328
+ const node = graph[adjacent];
1329
+
1330
+ if (node.distance === -1) {
1331
+ node.distance = graph[current].distance + 1;
1332
+ node.parent = current;
1333
+ queue.unshift(adjacent);
1334
+ }
1335
+ }
1336
+ }
1337
+
1338
+ return graph;
1339
+ }
1340
+
1341
+ function link(from, to) {
1342
+ return function (args) {
1343
+ return to(from(args));
1344
+ };
1345
+ }
1346
+
1347
+ function wrapConversion(toModel, graph) {
1348
+ const path = [graph[toModel].parent, toModel];
1349
+ let fn = conversions[graph[toModel].parent][toModel];
1350
+
1351
+ let cur = graph[toModel].parent;
1352
+ while (graph[cur].parent) {
1353
+ path.unshift(graph[cur].parent);
1354
+ fn = link(conversions[graph[cur].parent][cur], fn);
1355
+ cur = graph[cur].parent;
1356
+ }
1357
+
1358
+ fn.conversion = path;
1359
+ return fn;
1360
+ }
1361
+
1362
+ var route = function (fromModel) {
1363
+ const graph = deriveBFS(fromModel);
1364
+ const conversion = {};
1365
+
1366
+ const models = Object.keys(graph);
1367
+ for (let len = models.length, i = 0; i < len; i++) {
1368
+ const toModel = models[i];
1369
+ const node = graph[toModel];
1370
+
1371
+ if (node.parent === null) {
1372
+ // No possible conversion, or this node is the source model.
1373
+ continue;
1374
+ }
1375
+
1376
+ conversion[toModel] = wrapConversion(toModel, graph);
1377
+ }
1378
+
1379
+ return conversion;
1380
+ };
1381
+
1382
+ const convert = {};
1383
+
1384
+ const models = Object.keys(conversions);
1385
+
1386
+ function wrapRaw(fn) {
1387
+ const wrappedFn = function (...args) {
1388
+ const arg0 = args[0];
1389
+ if (arg0 === undefined || arg0 === null) {
1390
+ return arg0;
1391
+ }
1392
+
1393
+ if (arg0.length > 1) {
1394
+ args = arg0;
1395
+ }
1396
+
1397
+ return fn(args);
1398
+ };
1399
+
1400
+ // Preserve .conversion property if there is one
1401
+ if ('conversion' in fn) {
1402
+ wrappedFn.conversion = fn.conversion;
1403
+ }
1404
+
1405
+ return wrappedFn;
1406
+ }
1407
+
1408
+ function wrapRounded(fn) {
1409
+ const wrappedFn = function (...args) {
1410
+ const arg0 = args[0];
1411
+
1412
+ if (arg0 === undefined || arg0 === null) {
1413
+ return arg0;
1414
+ }
1415
+
1416
+ if (arg0.length > 1) {
1417
+ args = arg0;
1418
+ }
1419
+
1420
+ const result = fn(args);
1421
+
1422
+ // We're assuming the result is an array here.
1423
+ // see notice in conversions.js; don't use box types
1424
+ // in conversion functions.
1425
+ if (typeof result === 'object') {
1426
+ for (let len = result.length, i = 0; i < len; i++) {
1427
+ result[i] = Math.round(result[i]);
1428
+ }
1429
+ }
1430
+
1431
+ return result;
1432
+ };
1433
+
1434
+ // Preserve .conversion property if there is one
1435
+ if ('conversion' in fn) {
1436
+ wrappedFn.conversion = fn.conversion;
1437
+ }
1438
+
1439
+ return wrappedFn;
1440
+ }
1441
+
1442
+ models.forEach(fromModel => {
1443
+ convert[fromModel] = {};
1444
+
1445
+ Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
1446
+ Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
1447
+
1448
+ const routes = route(fromModel);
1449
+ const routeModels = Object.keys(routes);
1450
+
1451
+ routeModels.forEach(toModel => {
1452
+ const fn = routes[toModel];
1453
+
1454
+ convert[fromModel][toModel] = wrapRounded(fn);
1455
+ convert[fromModel][toModel].raw = wrapRaw(fn);
1456
+ });
1457
+ });
1458
+
1459
+ var colorConvert = convert;
1460
+
1461
+ const skippedModels = [
1462
+ // To be honest, I don't really feel like keyword belongs in color convert, but eh.
1463
+ 'keyword',
1464
+
1465
+ // Gray conflicts with some method names, and has its own method defined.
1466
+ 'gray',
1467
+
1468
+ // Shouldn't really be in color-convert either...
1469
+ 'hex',
1470
+ ];
1471
+
1472
+ const hashedModelKeys = {};
1473
+ for (const model of Object.keys(colorConvert)) {
1474
+ hashedModelKeys[[...colorConvert[model].labels].sort().join('')] = model;
1475
+ }
1476
+
1477
+ const limiters = {};
1478
+
1479
+ function Color(object, model) {
1480
+ if (!(this instanceof Color)) {
1481
+ return new Color(object, model);
1482
+ }
1483
+
1484
+ if (model && model in skippedModels) {
1485
+ model = null;
1486
+ }
1487
+
1488
+ if (model && !(model in colorConvert)) {
1489
+ throw new Error('Unknown model: ' + model);
1490
+ }
1491
+
1492
+ let i;
1493
+ let channels;
1494
+
1495
+ if (object == null) { // eslint-disable-line no-eq-null,eqeqeq
1496
+ this.model = 'rgb';
1497
+ this.color = [0, 0, 0];
1498
+ this.valpha = 1;
1499
+ } else if (object instanceof Color) {
1500
+ this.model = object.model;
1501
+ this.color = [...object.color];
1502
+ this.valpha = object.valpha;
1503
+ } else if (typeof object === 'string') {
1504
+ const result = colorString.get(object);
1505
+ if (result === null) {
1506
+ throw new Error('Unable to parse color from string: ' + object);
1507
+ }
1508
+
1509
+ this.model = result.model;
1510
+ channels = colorConvert[this.model].channels;
1511
+ this.color = result.value.slice(0, channels);
1512
+ this.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;
1513
+ } else if (object.length > 0) {
1514
+ this.model = model || 'rgb';
1515
+ channels = colorConvert[this.model].channels;
1516
+ const newArray = Array.prototype.slice.call(object, 0, channels);
1517
+ this.color = zeroArray(newArray, channels);
1518
+ this.valpha = typeof object[channels] === 'number' ? object[channels] : 1;
1519
+ } else if (typeof object === 'number') {
1520
+ // This is always RGB - can be converted later on.
1521
+ this.model = 'rgb';
1522
+ this.color = [
1523
+ (object >> 16) & 0xFF,
1524
+ (object >> 8) & 0xFF,
1525
+ object & 0xFF,
1526
+ ];
1527
+ this.valpha = 1;
1528
+ } else {
1529
+ this.valpha = 1;
1530
+
1531
+ const keys = Object.keys(object);
1532
+ if ('alpha' in object) {
1533
+ keys.splice(keys.indexOf('alpha'), 1);
1534
+ this.valpha = typeof object.alpha === 'number' ? object.alpha : 0;
1535
+ }
1536
+
1537
+ const hashedKeys = keys.sort().join('');
1538
+ if (!(hashedKeys in hashedModelKeys)) {
1539
+ throw new Error('Unable to parse color from object: ' + JSON.stringify(object));
1540
+ }
1541
+
1542
+ this.model = hashedModelKeys[hashedKeys];
1543
+
1544
+ const {labels} = colorConvert[this.model];
1545
+ const color = [];
1546
+ for (i = 0; i < labels.length; i++) {
1547
+ color.push(object[labels[i]]);
1548
+ }
1549
+
1550
+ this.color = zeroArray(color);
1551
+ }
1552
+
1553
+ // Perform limitations (clamping, etc.)
1554
+ if (limiters[this.model]) {
1555
+ channels = colorConvert[this.model].channels;
1556
+ for (i = 0; i < channels; i++) {
1557
+ const limit = limiters[this.model][i];
1558
+ if (limit) {
1559
+ this.color[i] = limit(this.color[i]);
1560
+ }
1561
+ }
1562
+ }
1563
+
1564
+ this.valpha = Math.max(0, Math.min(1, this.valpha));
1565
+
1566
+ if (Object.freeze) {
1567
+ Object.freeze(this);
1568
+ }
1569
+ }
1570
+
1571
+ Color.prototype = {
1572
+ toString() {
1573
+ return this.string();
1574
+ },
1575
+
1576
+ toJSON() {
1577
+ return this[this.model]();
1578
+ },
1579
+
1580
+ string(places) {
1581
+ let self = this.model in colorString.to ? this : this.rgb();
1582
+ self = self.round(typeof places === 'number' ? places : 1);
1583
+ const args = self.valpha === 1 ? self.color : [...self.color, this.valpha];
1584
+ return colorString.to[self.model](args);
1585
+ },
1586
+
1587
+ percentString(places) {
1588
+ const self = this.rgb().round(typeof places === 'number' ? places : 1);
1589
+ const args = self.valpha === 1 ? self.color : [...self.color, this.valpha];
1590
+ return colorString.to.rgb.percent(args);
1591
+ },
1592
+
1593
+ array() {
1594
+ return this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];
1595
+ },
1596
+
1597
+ object() {
1598
+ const result = {};
1599
+ const {channels} = colorConvert[this.model];
1600
+ const {labels} = colorConvert[this.model];
1601
+
1602
+ for (let i = 0; i < channels; i++) {
1603
+ result[labels[i]] = this.color[i];
1604
+ }
1605
+
1606
+ if (this.valpha !== 1) {
1607
+ result.alpha = this.valpha;
1608
+ }
1609
+
1610
+ return result;
1611
+ },
1612
+
1613
+ unitArray() {
1614
+ const rgb = this.rgb().color;
1615
+ rgb[0] /= 255;
1616
+ rgb[1] /= 255;
1617
+ rgb[2] /= 255;
1618
+
1619
+ if (this.valpha !== 1) {
1620
+ rgb.push(this.valpha);
1621
+ }
1622
+
1623
+ return rgb;
1624
+ },
1625
+
1626
+ unitObject() {
1627
+ const rgb = this.rgb().object();
1628
+ rgb.r /= 255;
1629
+ rgb.g /= 255;
1630
+ rgb.b /= 255;
1631
+
1632
+ if (this.valpha !== 1) {
1633
+ rgb.alpha = this.valpha;
1634
+ }
1635
+
1636
+ return rgb;
1637
+ },
1638
+
1639
+ round(places) {
1640
+ places = Math.max(places || 0, 0);
1641
+ return new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);
1642
+ },
1643
+
1644
+ alpha(value) {
1645
+ if (value !== undefined) {
1646
+ return new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);
1647
+ }
1648
+
1649
+ return this.valpha;
1650
+ },
1651
+
1652
+ // Rgb
1653
+ red: getset('rgb', 0, maxfn(255)),
1654
+ green: getset('rgb', 1, maxfn(255)),
1655
+ blue: getset('rgb', 2, maxfn(255)),
1656
+
1657
+ hue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),
1658
+
1659
+ saturationl: getset('hsl', 1, maxfn(100)),
1660
+ lightness: getset('hsl', 2, maxfn(100)),
1661
+
1662
+ saturationv: getset('hsv', 1, maxfn(100)),
1663
+ value: getset('hsv', 2, maxfn(100)),
1664
+
1665
+ chroma: getset('hcg', 1, maxfn(100)),
1666
+ gray: getset('hcg', 2, maxfn(100)),
1667
+
1668
+ white: getset('hwb', 1, maxfn(100)),
1669
+ wblack: getset('hwb', 2, maxfn(100)),
1670
+
1671
+ cyan: getset('cmyk', 0, maxfn(100)),
1672
+ magenta: getset('cmyk', 1, maxfn(100)),
1673
+ yellow: getset('cmyk', 2, maxfn(100)),
1674
+ black: getset('cmyk', 3, maxfn(100)),
1675
+
1676
+ x: getset('xyz', 0, maxfn(95.047)),
1677
+ y: getset('xyz', 1, maxfn(100)),
1678
+ z: getset('xyz', 2, maxfn(108.833)),
1679
+
1680
+ l: getset('lab', 0, maxfn(100)),
1681
+ a: getset('lab', 1),
1682
+ b: getset('lab', 2),
1683
+
1684
+ keyword(value) {
1685
+ if (value !== undefined) {
1686
+ return new Color(value);
1687
+ }
1688
+
1689
+ return colorConvert[this.model].keyword(this.color);
1690
+ },
1691
+
1692
+ hex(value) {
1693
+ if (value !== undefined) {
1694
+ return new Color(value);
1695
+ }
1696
+
1697
+ return colorString.to.hex(this.rgb().round().color);
1698
+ },
1699
+
1700
+ hexa(value) {
1701
+ if (value !== undefined) {
1702
+ return new Color(value);
1703
+ }
1704
+
1705
+ const rgbArray = this.rgb().round().color;
1706
+
1707
+ let alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();
1708
+ if (alphaHex.length === 1) {
1709
+ alphaHex = '0' + alphaHex;
1710
+ }
1711
+
1712
+ return colorString.to.hex(rgbArray) + alphaHex;
1713
+ },
1714
+
1715
+ rgbNumber() {
1716
+ const rgb = this.rgb().color;
1717
+ return ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);
1718
+ },
1719
+
1720
+ luminosity() {
1721
+ // http://www.w3.org/TR/WCAG20/#relativeluminancedef
1722
+ const rgb = this.rgb().color;
1723
+
1724
+ const lum = [];
1725
+ for (const [i, element] of rgb.entries()) {
1726
+ const chan = element / 255;
1727
+ lum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;
1728
+ }
1729
+
1730
+ return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];
1731
+ },
1732
+
1733
+ contrast(color2) {
1734
+ // http://www.w3.org/TR/WCAG20/#contrast-ratiodef
1735
+ const lum1 = this.luminosity();
1736
+ const lum2 = color2.luminosity();
1737
+
1738
+ if (lum1 > lum2) {
1739
+ return (lum1 + 0.05) / (lum2 + 0.05);
1740
+ }
1741
+
1742
+ return (lum2 + 0.05) / (lum1 + 0.05);
1743
+ },
1744
+
1745
+ level(color2) {
1746
+ // https://www.w3.org/TR/WCAG/#contrast-enhanced
1747
+ const contrastRatio = this.contrast(color2);
1748
+ if (contrastRatio >= 7) {
1749
+ return 'AAA';
1750
+ }
1751
+
1752
+ return (contrastRatio >= 4.5) ? 'AA' : '';
1753
+ },
1754
+
1755
+ isDark() {
1756
+ // YIQ equation from http://24ways.org/2010/calculating-color-contrast
1757
+ const rgb = this.rgb().color;
1758
+ const yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;
1759
+ return yiq < 128;
1760
+ },
1761
+
1762
+ isLight() {
1763
+ return !this.isDark();
1764
+ },
1765
+
1766
+ negate() {
1767
+ const rgb = this.rgb();
1768
+ for (let i = 0; i < 3; i++) {
1769
+ rgb.color[i] = 255 - rgb.color[i];
1770
+ }
1771
+
1772
+ return rgb;
1773
+ },
1774
+
1775
+ lighten(ratio) {
1776
+ const hsl = this.hsl();
1777
+ hsl.color[2] += hsl.color[2] * ratio;
1778
+ return hsl;
1779
+ },
1780
+
1781
+ darken(ratio) {
1782
+ const hsl = this.hsl();
1783
+ hsl.color[2] -= hsl.color[2] * ratio;
1784
+ return hsl;
1785
+ },
1786
+
1787
+ saturate(ratio) {
1788
+ const hsl = this.hsl();
1789
+ hsl.color[1] += hsl.color[1] * ratio;
1790
+ return hsl;
1791
+ },
1792
+
1793
+ desaturate(ratio) {
1794
+ const hsl = this.hsl();
1795
+ hsl.color[1] -= hsl.color[1] * ratio;
1796
+ return hsl;
1797
+ },
1798
+
1799
+ whiten(ratio) {
1800
+ const hwb = this.hwb();
1801
+ hwb.color[1] += hwb.color[1] * ratio;
1802
+ return hwb;
1803
+ },
1804
+
1805
+ blacken(ratio) {
1806
+ const hwb = this.hwb();
1807
+ hwb.color[2] += hwb.color[2] * ratio;
1808
+ return hwb;
1809
+ },
1810
+
1811
+ grayscale() {
1812
+ // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale
1813
+ const rgb = this.rgb().color;
1814
+ const value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;
1815
+ return Color.rgb(value, value, value);
1816
+ },
1817
+
1818
+ fade(ratio) {
1819
+ return this.alpha(this.valpha - (this.valpha * ratio));
1820
+ },
1821
+
1822
+ opaquer(ratio) {
1823
+ return this.alpha(this.valpha + (this.valpha * ratio));
1824
+ },
1825
+
1826
+ rotate(degrees) {
1827
+ const hsl = this.hsl();
1828
+ let hue = hsl.color[0];
1829
+ hue = (hue + degrees) % 360;
1830
+ hue = hue < 0 ? 360 + hue : hue;
1831
+ hsl.color[0] = hue;
1832
+ return hsl;
1833
+ },
1834
+
1835
+ mix(mixinColor, weight) {
1836
+ // Ported from sass implementation in C
1837
+ // https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209
1838
+ if (!mixinColor || !mixinColor.rgb) {
1839
+ throw new Error('Argument to "mix" was not a Color instance, but rather an instance of ' + typeof mixinColor);
1840
+ }
1841
+
1842
+ const color1 = mixinColor.rgb();
1843
+ const color2 = this.rgb();
1844
+ const p = weight === undefined ? 0.5 : weight;
1845
+
1846
+ const w = 2 * p - 1;
1847
+ const a = color1.alpha() - color2.alpha();
1848
+
1849
+ const w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;
1850
+ const w2 = 1 - w1;
1851
+
1852
+ return Color.rgb(
1853
+ w1 * color1.red() + w2 * color2.red(),
1854
+ w1 * color1.green() + w2 * color2.green(),
1855
+ w1 * color1.blue() + w2 * color2.blue(),
1856
+ color1.alpha() * p + color2.alpha() * (1 - p));
1857
+ },
1858
+ };
1859
+
1860
+ // Model conversion methods and static constructors
1861
+ for (const model of Object.keys(colorConvert)) {
1862
+ if (skippedModels.includes(model)) {
1863
+ continue;
1864
+ }
1865
+
1866
+ const {channels} = colorConvert[model];
1867
+
1868
+ // Conversion methods
1869
+ Color.prototype[model] = function (...args) {
1870
+ if (this.model === model) {
1871
+ return new Color(this);
1872
+ }
1873
+
1874
+ if (args.length > 0) {
1875
+ return new Color(args, model);
1876
+ }
1877
+
1878
+ return new Color([...assertArray(colorConvert[this.model][model].raw(this.color)), this.valpha], model);
1879
+ };
1880
+
1881
+ // 'static' construction methods
1882
+ Color[model] = function (...args) {
1883
+ let color = args[0];
1884
+ if (typeof color === 'number') {
1885
+ color = zeroArray(args, channels);
1886
+ }
1887
+
1888
+ return new Color(color, model);
1889
+ };
1890
+ }
1891
+
1892
+ function roundTo(number, places) {
1893
+ return Number(number.toFixed(places));
1894
+ }
1895
+
1896
+ function roundToPlace(places) {
1897
+ return function (number) {
1898
+ return roundTo(number, places);
1899
+ };
1900
+ }
1901
+
1902
+ function getset(model, channel, modifier) {
1903
+ model = Array.isArray(model) ? model : [model];
1904
+
1905
+ for (const m of model) {
1906
+ (limiters[m] || (limiters[m] = []))[channel] = modifier;
1907
+ }
1908
+
1909
+ model = model[0];
1910
+
1911
+ return function (value) {
1912
+ let result;
1913
+
1914
+ if (value !== undefined) {
1915
+ if (modifier) {
1916
+ value = modifier(value);
1917
+ }
1918
+
1919
+ result = this[model]();
1920
+ result.color[channel] = value;
1921
+ return result;
1922
+ }
1923
+
1924
+ result = this[model]().color[channel];
1925
+ if (modifier) {
1926
+ result = modifier(result);
1927
+ }
1928
+
1929
+ return result;
1930
+ };
1931
+ }
1932
+
1933
+ function maxfn(max) {
1934
+ return function (v) {
1935
+ return Math.max(0, Math.min(max, v));
1936
+ };
1937
+ }
1938
+
1939
+ function assertArray(value) {
1940
+ return Array.isArray(value) ? value : [value];
1941
+ }
1942
+
1943
+ function zeroArray(array, length) {
1944
+ for (let i = 0; i < length; i++) {
1945
+ if (typeof array[i] !== 'number') {
1946
+ array[i] = 0;
1947
+ }
1948
+ }
1949
+
1950
+ return array;
1951
+ }
1952
+
1953
+ var color = Color;
1954
+
1955
+ /*!
1956
+ * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
1957
+ * See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
1958
+ * v1.0.0-beta.97
1959
+ */
1960
+ const CSS = {
1961
+ swatch: "swatch",
1962
+ noColorIcon: "no-color-icon"
1963
+ };
1964
+ const COLORS = {
1965
+ borderLight: "rgba(0, 0, 0, 0.3)",
1966
+ borderDark: "rgba(255, 255, 255, 0.15)"
1967
+ };
1968
+
1969
+ const colorPickerSwatchCss = "@keyframes in{0%{opacity:0}100%{opacity:1}}@keyframes in-down{0%{opacity:0;transform:translate3D(0, -5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-up{0%{opacity:0;transform:translate3D(0, 5px, 0)}100%{opacity:1;transform:translate3D(0, 0, 0)}}@keyframes in-scale{0%{opacity:0;transform:scale3D(0.95, 0.95, 1)}100%{opacity:1;transform:scale3D(1, 1, 1)}}:root{--calcite-animation-timing:calc(150ms * var(--calcite-internal-duration-factor));--calcite-internal-duration-factor:var(--calcite-duration-factor, 1);--calcite-internal-animation-timing-fast:calc(100ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-medium:calc(200ms * var(--calcite-internal-duration-factor));--calcite-internal-animation-timing-slow:calc(300ms * var(--calcite-internal-duration-factor))}.calcite-animate{opacity:0;animation-fill-mode:both;animation-duration:var(--calcite-animation-timing)}.calcite-animate__in{animation-name:in}.calcite-animate__in-down{animation-name:in-down}.calcite-animate__in-up{animation-name:in-up}.calcite-animate__in-scale{animation-name:in-scale}@media (prefers-reduced-motion: reduce){:root{--calcite-internal-duration-factor:0.01}}:root{--calcite-floating-ui-transition:var(--calcite-animation-timing)}:host([hidden]){display:none}:host{position:relative;display:inline-flex}:host([scale=s]){block-size:1.25rem;inline-size:1.25rem}:host([scale=m]){block-size:1.5rem;inline-size:1.5rem}:host([scale=l]){block-size:2rem;inline-size:2rem}.swatch{overflow:visible;block-size:inherit;inline-size:inherit}.swatch rect{transition-property:all;transition-duration:150ms;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1)}.no-color-icon{position:absolute;inset:0px;block-size:100%;inline-size:100%}";
1970
+
1971
+ const ColorPickerSwatch = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
1972
+ constructor() {
1973
+ super();
1974
+ this.__registerHost();
1975
+ this.__attachShadow();
1976
+ //--------------------------------------------------------------------------
1977
+ //
1978
+ // Properties
1979
+ //
1980
+ //--------------------------------------------------------------------------
1981
+ /**
1982
+ * When `true`, the component is active.
1983
+ */
1984
+ this.active = false;
1985
+ /**
1986
+ * Specifies the size of the component.
1987
+ */
1988
+ this.scale = "m";
1989
+ }
1990
+ handleColorChange(color$1) {
1991
+ this.internalColor = color(color$1);
1992
+ }
1993
+ //--------------------------------------------------------------------------
1994
+ //
1995
+ // Lifecycle
1996
+ //
1997
+ //--------------------------------------------------------------------------
1998
+ componentWillLoad() {
1999
+ this.handleColorChange(this.color);
2000
+ }
2001
+ render() {
2002
+ const { active, el, internalColor } = this;
2003
+ const borderRadius = active ? "100%" : "0";
2004
+ const hex = internalColor.hex();
2005
+ const theme = getThemeName(el);
2006
+ const borderColor = theme === "light" ? COLORS.borderLight : COLORS.borderDark;
2007
+ return (h("svg", { class: CSS.swatch, xmlns: "http://www.w3.org/2000/svg" }, h("title", null, hex), h("rect", { fill: hex, height: "100%", id: "swatch", rx: borderRadius, stroke: borderColor, "stroke-width": "2", style: { "clip-path": `inset(0 round ${borderRadius})` }, width: "100%" })));
2008
+ }
2009
+ get el() { return this; }
2010
+ static get watchers() { return {
2011
+ "color": ["handleColorChange"]
2012
+ }; }
2013
+ static get style() { return colorPickerSwatchCss; }
2014
+ }, [1, "calcite-color-picker-swatch", {
2015
+ "active": [516],
2016
+ "color": [1],
2017
+ "scale": [513]
2018
+ }]);
2019
+ function defineCustomElement() {
2020
+ if (typeof customElements === "undefined") {
2021
+ return;
2022
+ }
2023
+ const components = ["calcite-color-picker-swatch"];
2024
+ components.forEach(tagName => { switch (tagName) {
2025
+ case "calcite-color-picker-swatch":
2026
+ if (!customElements.get(tagName)) {
2027
+ customElements.define(tagName, ColorPickerSwatch);
2028
+ }
2029
+ break;
2030
+ } });
2031
+ }
2032
+ defineCustomElement();
2033
+
2034
+ export { ColorPickerSwatch as C, color as c, defineCustomElement as d };