@luzmo/lucero 1.0.1-alpha.3 → 1.0.1-alpha.31

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 (232) hide show
  1. package/components/accordion/index.cjs +6 -6
  2. package/components/accordion/index.js +13 -12
  3. package/components/action-bar/index.cjs +4 -4
  4. package/components/action-bar/index.js +11 -9
  5. package/components/action-button/index.cjs +3 -3
  6. package/components/action-button/index.js +6 -5
  7. package/components/action-group/index.cjs +1 -1
  8. package/components/action-group/index.js +1 -1
  9. package/components/{action-group-DBImibFn.js → action-group-Bwt9w8Vh.js} +10 -9
  10. package/components/action-group-D917z7XF.cjs +20 -0
  11. package/components/action-menu/index.cjs +9 -9
  12. package/components/action-menu/index.js +9 -9
  13. package/components/avatar/index.cjs +3 -3
  14. package/components/avatar/index.js +6 -6
  15. package/components/base-5nDSSNeT.cjs +18 -0
  16. package/components/base-CdYjmV_8.js +96 -0
  17. package/components/button/button-base.d.ts +16 -0
  18. package/components/button/button.d.ts +38 -2
  19. package/components/button/index.cjs +2 -2
  20. package/components/button/index.js +34 -29
  21. package/components/{button-base-DbkDzb71.js → button-base-B5uul3tZ.js} +54 -39
  22. package/components/button-base-C7or8-FB.cjs +25 -0
  23. package/components/button-group/index.cjs +1 -1
  24. package/components/button-group/index.js +10 -8
  25. package/components/calendar/index.cjs +96 -1
  26. package/components/calendar/index.js +538 -6
  27. package/components/checkbox/index.cjs +4 -4
  28. package/components/checkbox/index.js +6 -4
  29. package/components/{checkbox-mixin-Do7EgtpQ.js → checkbox-mixin-DUbGDm7f.js} +9 -9
  30. package/components/{checkbox-mixin-BDN0dBtS.cjs → checkbox-mixin-DhN8CIXY.cjs} +3 -3
  31. package/components/{clear-button-DoeRUWQ3.js → clear-button-Bjp7N52G.js} +14 -13
  32. package/components/clear-button-C39c3PH0.cjs +18 -0
  33. package/components/{close-button-BWXdHSx3.js → close-button-CqlkCakI.js} +13 -12
  34. package/components/close-button-rjMQFibf.cjs +18 -0
  35. package/components/color-area/index.cjs +5 -5
  36. package/components/color-area/index.js +11 -10
  37. package/components/color-controller-7sNUf7SP.js +386 -0
  38. package/components/color-controller-ChN-A9Ft.cjs +18 -0
  39. package/components/color-field/color-field.d.ts +8 -0
  40. package/components/color-field/index.cjs +4 -4
  41. package/components/color-field/index.js +37 -24
  42. package/components/color-handle/index.cjs +2 -2
  43. package/components/color-handle/index.js +7 -5
  44. package/components/color-loupe/index.cjs +1 -1
  45. package/components/color-loupe/index.js +1 -1
  46. package/components/color-loupe-CIEFp7ln.cjs +56 -0
  47. package/components/{color-loupe-CmMsXbjT.js → color-loupe-CLPX6xVb.js} +6 -4
  48. package/components/color-menu/index.cjs +8 -8
  49. package/components/color-menu/index.js +45 -45
  50. package/components/color-palette/color-palette.d.ts +38 -3
  51. package/components/color-palette/index.cjs +1 -1
  52. package/components/color-palette/index.js +53 -39
  53. package/components/color-palette-group/color-palette-group.d.ts +79 -0
  54. package/components/color-palette-group/index.cjs +28 -0
  55. package/components/color-palette-group/index.d.ts +7 -0
  56. package/components/color-palette-group/index.js +206 -0
  57. package/components/color-picker/color-picker.d.ts +31 -2
  58. package/components/color-picker/index.cjs +6 -5
  59. package/components/color-picker/index.js +15 -11
  60. package/components/color-slider/index.cjs +40 -1
  61. package/components/color-slider/index.js +452 -6
  62. package/components/date-time-picker/index.cjs +16 -16
  63. package/components/date-time-picker/index.js +104 -105
  64. package/components/{dependency-manger-CEXvGQUV.js → dependency-manger-CO-VPlqq.js} +4 -4
  65. package/components/{dependency-manger-C5HCkMMB.cjs → dependency-manger-uthev62E.cjs} +1 -1
  66. package/components/divider/index.cjs +1 -1
  67. package/components/divider/index.js +10 -8
  68. package/components/field-group/index.cjs +1 -1
  69. package/components/field-group/index.js +1 -1
  70. package/components/field-group-BYHNJmv0.cjs +23 -0
  71. package/components/{field-group-DXfBWrkO.js → field-group-CHmw159R.js} +7 -5
  72. package/components/field-label/index.cjs +1 -1
  73. package/components/field-label/index.js +1 -1
  74. package/components/{field-label-CZ2zzChK.js → field-label-Cy3xMWZ-.js} +9 -8
  75. package/components/field-label-DZoeqJJX.cjs +25 -0
  76. package/components/{focus-visible-DBlJGoEW.js → focus-visible-BvScGDCE.js} +20 -20
  77. package/components/focus-visible-D4BXb5RB.cjs +18 -0
  78. package/components/{focusable-BxtpnzWp.js → focusable-BjvsvVam.js} +3 -2
  79. package/components/focusable-CbVKgGfS.cjs +18 -0
  80. package/components/icon/index.cjs +1 -1
  81. package/components/icon/index.js +22 -20
  82. package/components/index.cjs +1 -1
  83. package/components/index.js +139 -137
  84. package/components/infield-button/index.cjs +2 -2
  85. package/components/infield-button/index.js +4 -3
  86. package/components/label/index.cjs +1 -1
  87. package/components/label/index.js +6 -4
  88. package/components/{language-resolution-8yZa5r_P.js → language-resolution-B-wjV5bb.js} +9 -8
  89. package/components/{directive-C7oCP5Bh.cjs → language-resolution-EUER43cg.cjs} +1 -5
  90. package/components/like-anchor-B2EqJPdw.cjs +32 -0
  91. package/components/{like-anchor-Bvn_vLQ8.js → like-anchor-CgqCU210.js} +23 -22
  92. package/components/{manage-help-text-DhgARkZX.cjs → manage-help-text-Bat9yGvF.cjs} +3 -3
  93. package/components/{manage-help-text-syYnjKGL.js → manage-help-text-C9sCHK3R.js} +8 -8
  94. package/components/menu/index.cjs +38 -13
  95. package/components/menu/index.js +137 -104
  96. package/components/menu/menu-item.d.ts +8 -1
  97. package/components/multi-language-field/index.cjs +2 -2
  98. package/components/multi-language-field/index.js +8 -6
  99. package/components/number-field/index.cjs +6 -6
  100. package/components/number-field/index.js +33 -34
  101. package/components/observe-slot-presence-CNltc0C0.cjs +18 -0
  102. package/components/{observe-slot-presence-CmVi0zTc.js → observe-slot-presence-DFi6GE3H.js} +1 -1
  103. package/components/observe-slot-text-CBMHpuIK.cjs +18 -0
  104. package/components/{observe-slot-text-BPfIQQtz.js → observe-slot-text-DorVpCL4.js} +14 -15
  105. package/components/options/index.cjs +26 -58
  106. package/components/options/index.js +205 -849
  107. package/components/overlay/index.cjs +6 -6
  108. package/components/overlay/index.js +30 -31
  109. package/components/overlay-DpWon1Rp.js +1736 -0
  110. package/components/overlay-nUwFClQq.cjs +47 -0
  111. package/components/{pending-state-CaH1si5b.cjs → pending-state-DQctFHI8.cjs} +2 -2
  112. package/components/{pending-state-DTX7ggyF.js → pending-state-Dx1u3EXA.js} +2 -2
  113. package/components/picker/index.cjs +1 -1
  114. package/components/picker/index.js +2 -2
  115. package/components/{picker-BmoXv1jt.js → picker-Cm6_didQ.js} +44 -44
  116. package/components/picker-DxYgh4LR.cjs +123 -0
  117. package/components/picker-button/index.cjs +4 -4
  118. package/components/picker-button/index.js +7 -6
  119. package/components/{platform-BiXhwqk3.cjs → platform-BJnOJJag.cjs} +1 -1
  120. package/components/{platform-BM-uMWpX.js → platform-CqwNrovd.js} +12 -12
  121. package/components/popover/index.cjs +1 -1
  122. package/components/popover/index.js +1 -1
  123. package/components/popover-lcZnODPK.cjs +30 -0
  124. package/components/{popover-DjX0aAnY.js → popover-ucIgjbQs.js} +8 -7
  125. package/components/progress-circle/index.cjs +1 -1
  126. package/components/progress-circle/index.js +1 -1
  127. package/components/{progress-circle-DXH9z8-6.js → progress-circle-D5J0ZwY0.js} +8 -7
  128. package/components/progress-circle-DgMbqrzG.cjs +33 -0
  129. package/components/radio/index.cjs +2 -2
  130. package/components/radio/index.js +11 -10
  131. package/components/search/index.cjs +6 -6
  132. package/components/search/index.js +5 -5
  133. package/components/select/index.cjs +43 -43
  134. package/components/select/index.js +106 -91
  135. package/components/select/select.d.ts +1 -1
  136. package/components/{base-BjTwmyRF.cjs → sized-mixin-DcvJLFeo.cjs} +1 -5
  137. package/components/{sized-mixin-D4ACoVUr.js → sized-mixin-cJbo3PKR.js} +5 -5
  138. package/components/slider/index.cjs +1 -1
  139. package/components/slider/index.js +48 -1101
  140. package/components/{strategies-9indNIEb.js → strategies-Bk97oVn1.js} +15 -50
  141. package/components/strategies-CNgBb6dM.cjs +18 -0
  142. package/components/{streaming-listener-CP-JE6Fa.js → streaming-listener-BlWm-XZU.js} +5 -6
  143. package/components/streaming-listener-D9Wc7skA.cjs +18 -0
  144. package/components/swatch/index.cjs +7 -7
  145. package/components/swatch/index.js +17 -16
  146. package/components/switch/index.cjs +2 -2
  147. package/components/switch/index.js +5 -4
  148. package/components/tabs/index.cjs +16 -24
  149. package/components/tabs/index.js +93 -161
  150. package/components/tags/index.cjs +4 -4
  151. package/components/tags/index.js +14 -13
  152. package/components/text-field/index.cjs +3 -3
  153. package/components/text-field/index.js +12 -10
  154. package/components/text-field/text-field.d.ts +1 -0
  155. package/components/{text-field-BIADXoLC.js → text-field-BTEpwGFu.js} +73 -99
  156. package/components/text-field-JMrsh-zo.cjs +81 -0
  157. package/components/{text-field.module-ColtFhf_.js → text-field.module-C2KVUJcX.js} +1 -1
  158. package/components/{text-field.module-p_VF2tC_.cjs → text-field.module-DXhFA9G-.cjs} +1 -1
  159. package/components/toast/index.cjs +11 -11
  160. package/components/toast/index.js +10 -8
  161. package/components/tooltip/index.cjs +4 -4
  162. package/components/tooltip/index.js +60 -36
  163. package/components/tooltip/tooltip.d.ts +12 -1
  164. package/components/unit-input/index.cjs +6 -6
  165. package/components/unit-input/index.js +10 -9
  166. package/components/utils.cjs +1 -1
  167. package/components/utils.js +6 -6
  168. package/custom-elements.json +1 -1
  169. package/index.d.ts +1 -0
  170. package/package.json +67 -1
  171. package/components/NumberFormatter-DewVDY5w.cjs +0 -18
  172. package/components/NumberFormatter-DgOUVrge.js +0 -136
  173. package/components/NumberParser-Dik4a0h-.cjs +0 -18
  174. package/components/NumberParser-ci9J5EKv.js +0 -173
  175. package/components/action-group-DJGMcRHb.cjs +0 -20
  176. package/components/async-directive-BX1T1e1_.cjs +0 -22
  177. package/components/async-directive-BfcqVjDp.js +0 -82
  178. package/components/base-CBCg3yyw.cjs +0 -40
  179. package/components/base-D76d76ww.js +0 -26
  180. package/components/base-WsynuqaS.js +0 -677
  181. package/components/button-base-XgPLmwP-.cjs +0 -25
  182. package/components/class-map-Di1D_rCm.cjs +0 -22
  183. package/components/class-map-NbVXqBU0.js +0 -51
  184. package/components/clear-button-Qi1pMA5S.cjs +0 -18
  185. package/components/close-button-BFMBEw3q.cjs +0 -18
  186. package/components/color-controller-DTp1juRz.js +0 -3198
  187. package/components/color-controller-_ZwyhvaU.cjs +0 -18
  188. package/components/color-loupe-CaA_Lfkk.cjs +0 -56
  189. package/components/directive-helpers-Cm6gitnu.js +0 -62
  190. package/components/directive-helpers-DyIRTWwA.cjs +0 -22
  191. package/components/directive-oAbCiebi.js +0 -44
  192. package/components/field-group-DkGst3r5.cjs +0 -23
  193. package/components/field-label-mO1AkUgR.cjs +0 -25
  194. package/components/flow-D-0MTYCm.js +0 -527
  195. package/components/flow-DM3dNAKs.cjs +0 -30
  196. package/components/focus-visible-B0P9aY_G.cjs +0 -18
  197. package/components/focusable-EbipgXRh.cjs +0 -18
  198. package/components/if-defined-C9YGdo33.cjs +0 -22
  199. package/components/if-defined-DOaE2coe.js +0 -27
  200. package/components/index-A-yOTB_d.js +0 -1490
  201. package/components/index-BLWuwZXx.cjs +0 -113
  202. package/components/index-BwxgAdzi.cjs +0 -57
  203. package/components/index-HjQa8tew.js +0 -1174
  204. package/components/language-resolution-DJzmyzZq.cjs +0 -18
  205. package/components/like-anchor-sod1C1fR.cjs +0 -32
  206. package/components/luzmo-icons-DbwDQtuO.js +0 -229
  207. package/components/luzmo-icons-DletXGWU.cjs +0 -29
  208. package/components/mutation-controller-DH7YOCyj.js +0 -52
  209. package/components/mutation-controller-DkOMCW-c.cjs +0 -22
  210. package/components/observe-slot-presence-bc9chhsi.cjs +0 -18
  211. package/components/observe-slot-text-Ceb7SvYT.cjs +0 -18
  212. package/components/overlay-Cig9r6uU.js +0 -2747
  213. package/components/overlay-KSKMzzkh.cjs +0 -47
  214. package/components/picker-DWsBWdPN.cjs +0 -123
  215. package/components/popover-KFfO0IYL.cjs +0 -30
  216. package/components/progress-circle-BvRJNuNo.cjs +0 -33
  217. package/components/query-BL-TJj7K.cjs +0 -22
  218. package/components/query-D_KR_GUc.js +0 -51
  219. package/components/query-assigned-elements-DjfhL1cl.js +0 -36
  220. package/components/query-assigned-elements-DsKsfk7G.cjs +0 -22
  221. package/components/query-assigned-nodes-BcKWmGzy.cjs +0 -22
  222. package/components/query-assigned-nodes-C76XVPWY.js +0 -36
  223. package/components/sized-mixin-CPxE5C96.cjs +0 -18
  224. package/components/state-D8JEtYqe.cjs +0 -22
  225. package/components/state-Deh-vKYE.js +0 -29
  226. package/components/strategies-BACP6MhR.cjs +0 -18
  227. package/components/streaming-listener-B00MvALi.cjs +0 -18
  228. package/components/style-map-CeilmSgs.cjs +0 -22
  229. package/components/style-map-IgqIKvlE.js +0 -53
  230. package/components/text-field-D5d_Gt0t.cjs +0 -85
  231. package/components/when-CDK1Tt5Y.js +0 -28
  232. package/components/when-CDZyJPvd.cjs +0 -22
@@ -15,10 +15,10 @@
15
15
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
16
  * SOFTWARE.
17
17
  * */
18
- import { a as z, r as d, x as u, n as l } from "../base-WsynuqaS.js";
19
- import { r as h } from "../state-Deh-vKYE.js";
20
- import { e as c } from "../query-D_KR_GUc.js";
21
- import { S as g } from "../sized-mixin-D4ACoVUr.js";
18
+ import { unsafeCSS as z, html as u } from "lit";
19
+ import { property as l, query as c, state as d } from "lit/decorators.js";
20
+ import { a as h } from "../base-CdYjmV_8.js";
21
+ import { S as g } from "../sized-mixin-cJbo3PKR.js";
22
22
  import "../color-menu/index.js";
23
23
  import "../overlay/index.js";
24
24
  import { r as f } from "../slottable-request-event-DggLA4Rx.js";
@@ -31,15 +31,15 @@ const p = () => {
31
31
  }
32
32
  };
33
33
  p();
34
- const b = "luzmo-popover{margin-left:var(--luzmo-color-picker-popover-horizontal-gap, var(--color-picker-popover-horizontal-gap));margin-right:var(--luzmo-color-picker-popover-horizontal-gap, var(--color-picker-popover-horizontal-gap))}luzmo-swatch{cursor:pointer}:host{--luzmo-popover-content-area-spacing-vertical: 0;--color-picker-popover-horizontal-gap: var(--luzmo-spacing-4)}:host([size=s]){--color-picker-popover-horizontal-gap: var(--luzmo-spacing-3)}:host([size=l]),:host([size=xl]){--color-picker-popover-horizontal-gap: var(--luzmo-spacing-5)}";
35
- var v = Object.defineProperty, e = (t, r, s, x) => {
34
+ const b = "luzmo-popover{margin-left:var(--luzmo-color-picker-popover-horizontal-gap, var(--color-picker-popover-horizontal-gap));margin-right:var(--luzmo-color-picker-popover-horizontal-gap, var(--color-picker-popover-horizontal-gap))}luzmo-swatch{cursor:pointer}:host([read-only]) luzmo-swatch{cursor:default;pointer-events:none}:host{--luzmo-popover-content-area-spacing-vertical: 0;--color-picker-popover-horizontal-gap: var(--luzmo-spacing-4)}:host([size=s]){--color-picker-popover-horizontal-gap: var(--luzmo-spacing-3)}:host([size=l]),:host([size=xl]){--color-picker-popover-horizontal-gap: var(--luzmo-spacing-5)}";
35
+ var v = Object.defineProperty, e = (t, r, s, y) => {
36
36
  for (var n = void 0, i = t.length - 1, m; i >= 0; i--)
37
37
  (m = t[i]) && (n = m(r, s, n) || n);
38
38
  return n && v(r, s, n), n;
39
39
  };
40
- const a = class a extends g(z) {
40
+ const a = class a extends g(h) {
41
41
  constructor() {
42
- super(...arguments), this.color = "rgb(255, 0, 0)", this.open = !1, this.disabled = !1, this.placement = "left-start", this.rounding = "full", this.swatches = [], this.noAlphaChannel = !1, this._renderMenu = !1;
42
+ super(...arguments), this.color = "rgb(255, 0, 0)", this.open = !1, this.disabled = !1, this.readOnly = !1, this.placement = "left-start", this.rounding = "full", this.swatches = [], this.noAlphaChannel = !1, this._renderMenu = !1;
43
43
  }
44
44
  overlayCloseEvent() {
45
45
  this.open = !1;
@@ -85,11 +85,12 @@ const a = class a extends g(z) {
85
85
  .color=${this.color}
86
86
  .selected=${this.open && !this.disabled}
87
87
  ?disabled=${this.disabled}
88
+ ?read-only=${this.readOnly}
88
89
  @luzmo-closed=${this.overlayCloseEvent}
89
90
  @luzmo-opened=${this.overlayOpenEvent}
90
91
  ></luzmo-swatch>
91
92
  <luzmo-overlay
92
- trigger=${this.disabled ? "" : "trigger@click"}
93
+ trigger=${this.disabled || this.readOnly ? "" : "trigger@click"}
93
94
  .placement=${this.placement}
94
95
  type="auto"
95
96
  >
@@ -100,7 +101,7 @@ const a = class a extends g(z) {
100
101
  `;
101
102
  }
102
103
  };
103
- a.styles = d(b);
104
+ a.styles = z(b);
104
105
  let o = a;
105
106
  e([
106
107
  l({ type: String, reflect: !0 })
@@ -111,6 +112,9 @@ e([
111
112
  e([
112
113
  l({ type: Boolean, reflect: !0 })
113
114
  ], o.prototype, "disabled");
115
+ e([
116
+ l({ type: Boolean, reflect: !0, attribute: "read-only" })
117
+ ], o.prototype, "readOnly");
114
118
  e([
115
119
  l({ type: String, reflect: !0 })
116
120
  ], o.prototype, "placement");
@@ -133,7 +137,7 @@ e([
133
137
  c("luzmo-overlay")
134
138
  ], o.prototype, "overlayElement");
135
139
  e([
136
- h()
140
+ d()
137
141
  ], o.prototype, "_renderMenu");
138
142
  customElements.get("luzmo-color-picker") || customElements.define("luzmo-color-picker", o);
139
143
  export {
@@ -15,4 +15,43 @@
15
15
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
16
  * SOFTWARE.
17
17
  * */
18
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../index-BwxgAdzi.cjs");exports.LuzmoColorSlider=e.LuzmoColorSlider;
18
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@ctrl/tinycolor"),y=require("lit"),n=require("lit/decorators.js"),f=require("lit/directives/if-defined.js"),_=require("lit/directives/style-map.js");require("../color-handle/index.cjs");const x=require("../focusable-CbVKgGfS.cjs"),P=require("../language-resolution-EUER43cg.cjs"),H=require("../streaming-listener-D9Wc7skA.cjs"),C=/^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/,z=/(^hs[v|l]a?\s?\()\d{1,3}\.?\d*?(,?\s?)\d{1,3}/,S=/(^hs[v|l]a?\()\d{1,3}/,v=(p,t)=>t?p.toHexString():p.toHex();class k{constructor(t,{applyColorToState:e,extractColorFromState:r,maintains:s}){this.maintains="hue",this._hue=0,this._opacity=1,this.getColorProcesses={rgb:(o,i)=>i?o.toRgbString():o.toRgb(),prgb:(o,i)=>i?o.toPercentageRgbString():o.toPercentageRgb(),hex8:(o,i)=>i?o.toHex8String():o.toHex8(),name:o=>o.toName()||o.toRgbString(),hsl:(o,i)=>{if(this.maintains==="hue"){if(i)return o.toHslString().replace(S,`$1${this.hue}`);const{s:c,l:m,a:b}=o.toHsl();return{h:this.hue,s:c,l:m,a:b}}if(i)return o.toHslString().replace(z,`$1${this.hue}$2${this.saturation}`);const{s:h,l:d,a:g}=o.toHsl();return{h:this.hue,s:h,l:d,a:g}},hsv:(o,i)=>{if(this.maintains==="hue"){if(i)return o.toHsvString().replace(S,`$1${this.hue}`);const{s:c,v:m,a:b}=o.toHsv();return{h:this.hue,s:c,v:m,a:b}}if(i)return o.toHsvString().replace(z,`$1${this.hue}$2${this.saturation}`);const{s:h,v:d,a:g}=o.toHsv();return{h:this.hue,s:h,v:d,a:g}},hex:v,hex3:v,hex4:v,hex6:v},this._color=new u.TinyColor({h:0,s:1,v:1}),this._previousColor=new u.TinyColor({h:0,s:1,v:1}),this._format={format:"",isString:!1},this.host=t,this.applyColorToState=e,this.extractColorFromState=r,this.maintains=s||this.maintains}setColorProcess(t,e,r,s){this.maintains==="hue"?this.setColorMaintainHue(t,e,r,s):this.maintains==="saturation"&&this.setColorMaintainSaturation(t,e,r,s)}setColorMaintainHue(t,e,r,s){const{h:o,s:i,v:h,a:d}=this._color.toHsv();let g;if(s&&r.startsWith("hs")){const c=C.exec(e);if(c!==null){const[,m]=c;g=Number(m)}}else if(!s&&r.startsWith("hs")){const c=t.originalInput;g=Object.values(c)[0]}this.hue=g||o,this.opacity=d??1,this.applyColorToState({h:o,s:i,v:h,a:d})}setColorMaintainSaturation(t,e,r,s){const{a:o}=this._color.toHsv();if(s&&r.startsWith("hs")){const i=C.exec(e);if(i!==null){const[,h,d]=i;this.hue=Number(h),this.saturation=Number(d)}}else if(!s&&r.startsWith("hs")){const i=t.originalInput,h=Object.values(i);this.hue=h[0],this.saturation=h[1]}else{const{h:i}=t.toHsv();this.hue=i}this.opacity=o??1,this.applyColorToState(t.toHsv())}applyColorFromState(){this._color=new u.TinyColor(this.extractColorFromState(this))}get hue(){return this._hue}set hue(t){const e=Math.min(360,Math.max(0,t));if(e===this.hue)return;const r=this.hue,{s,v:o,a:i}=this._color.toHsv();this._color=new u.TinyColor({h:e,s,v:o,a:i}),this._hue=e,this.host.requestUpdate("hue",r)}get opacity(){return this._opacity}set opacity(t){const e=Math.min(1,Math.max(0,t));if(e===this.opacity)return;const r=this.opacity,{h:s,s:o,v:i}=this._color.toHsv();this._color=new u.TinyColor({h:s,s:o,v:i,a:e}),this._opacity=e,this.host.requestUpdate("opacity",r)}get value(){return this.color}get color(){return this.getColorProcesses[this._format.format||"hex"](this._color,this._format.isString)}set color(t){if(t===this.color)return;const e=this._color;this._color=new u.TinyColor(t);const r=this._color.format;let s=typeof t=="string"||t instanceof String;r.startsWith("hex")&&(s=t.startsWith("#")),this._format={format:r,isString:s},this.setColorProcess(this._color,t,r,s),this.host.requestUpdate("color",e)}getColor(t){const e={hsl:"toHsl"};return this._color[e[t]]()}setColor(t){this._color=t;const e=typeof this._color.originalInput=="string"||this._color.originalInput instanceof String;this.setColorProcess(this._color,t,this._color.format,e)}getHslString(){return this._color.toHslString()}savePreviousColor(){this._previousColor=this._color.clone()}restorePreviousColor(){this.setColor(this._previousColor)}}const $='.opacity-checkerboard{position:absolute;block-size:100%;inline-size:100%;background:repeating-conic-gradient(var(--luzmo-color-loupe-checkerboard-light, rgb(255, 255, 255)) 0 25%,var(--luzmo-color-loupe-checkerboard-dark, rgb(230, 230, 230)) 0 50%) var(--luzmo-color-loupe-checkerboard-position, left top)/calc(var(--luzmo-color-loupe-checkerboard-size, 8px) * 2) calc(var(--luzmo-color-loupe-checkerboard-size, 8px) * 2)}:host{--luzmo-color-slider-gradient-fallback: rgb(255 0 0) 0%, rgb(255 255 0) 17%, rgb(0 255 0) 33%, rgb(0 255 255) 50%, rgb(0 0 255) 67%, rgb(255 0 255) 83%, rgb(255 0 0) 100%;touch-action:none}:host([vertical]) .handle{inset-block-start:unset;inset-block-end:0}:host([vertical]) .slider{-webkit-appearance:slider-vertical;-moz-appearance:slider-vertical;appearance:slider-vertical}:host(:focus){outline:none}.gradient{overflow:hidden}::slotted(*){width:100%;height:100%}@media (forced-colors: active){:host{--highcontrast-color-slider-border-color: CanvasText;--highcontrast-color-slider-border-color-disabled: GrayText;--highcontrast-color-slider-background-color-disabled: Canvas;forced-color-adjust:none}}:host{--luzmo-color-handle-hitarea-border-radius: var( --luzmo-color-slider-handle-hitarea-border-radius, 0px );min-inline-size:var(--luzmo-color-slider-minimum-length, 80px);inline-size:var(--luzmo-color-slider-length, 192px);block-size:var(--luzmo-color-slider-control-track-width, 24px);-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([disabled]) .gradient{display:none}:host([vertical]){min-block-size:var(--luzmo-color-slider-vertical-minimum-height, var(--luzmo-color-slider-minimum-length, 80px));block-size:var(--luzmo-color-slider-vertical-height, var(--luzmo-color-slider-length, 192px));min-inline-size:0;inline-size:var(--luzmo-color-slider-vertical-control-track-width, var(--luzmo-color-slider-control-track-height, 24px));display:inline-block}:host([vertical]) .handle{inset-inline-start:50%}.handle{inset-block-start:50%;inset-inline-start:0}.checkerboard{--luzmo-color-slider-border-color-local: var( --highcontrast-color-slider-border-color, var(--luzmo-color-slider-border-color, var(--luzmo-border-color)) )}.checkerboard:before{content:"";z-index:1;box-shadow:inset 0 0 0 var(--luzmo-color-slider-border-width, var(--luzmo-border-width)) var(--luzmo-color-slider-border-color-local);border-radius:var(--luzmo-color-slider-border-rounding, var(--luzmo-border-radius-s));position:absolute;top:0;right:0;bottom:0;left:0}:host([disabled]) .checkerboard{--luzmo-color-slider-border-color-local: var( --highcontrast-color-slider-border-color-disabled, var(--luzmo-color-slider-border-color-disabled, var(--luzmo-dimmed-color)) );background:var(--highcontrast-color-slider-background-color-disabled, var(--luzmo-color-slider-background-color-disabled, var(--luzmo-dimmed-color)))}.checkerboard,.gradient{inline-size:100%;block-size:100%;border-radius:var(--luzmo-color-slider-border-rounding, var(--luzmo-border-radius-s))}.gradient:dir(rtl),:host([dir=rtl]) .gradient{transform:scaleX(-1)}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}';var R=Object.defineProperty,T=Object.getOwnPropertyDescriptor,a=(p,t,e,r)=>{for(var s=r>1?void 0:r?T(t,e):t,o=p.length-1,i;o>=0;o--)(i=p[o])&&(s=(r?i(t,e,s):i(s))||s);return r&&s&&R(t,e,s),s};class l extends x.Focusable{constructor(){super(...arguments),this.disabled=!1,this.focused=!1,this.label="hue",this.vertical=!1,this.languageResolver=new P.LanguageResolutionController(this),this.colorController=new k(this,{applyColorToState:()=>{if(this.mode==="opacity"){const t=new u.TinyColor(this.colorController.color);this.sliderHandlePosition=100*t.getAlpha()}else this.sliderHandlePosition=100*(this.colorController.hue/360)},extractColorFromState:t=>this.mode==="opacity"?{...t.getColor("hsl"),a:this.value}:{...t.getColor("hsl"),h:this.value},maintains:"saturation"}),this.sliderHandlePosition=0,this.step=1,this.isLTR=!0,this._altered=0,this._pointerDown=!1}static get styles(){return[y.unsafeCSS($)]}get value(){return this.mode==="opacity"?this.colorController.opacity:this.colorController.hue}set value(t){this.mode==="opacity"?this.colorController.opacity=t:this.colorController.hue=t}get color(){return this.colorController.color}set color(t){this.colorController.color=t}get altered(){return this._altered}set altered(t){this._altered=t,this.step=Math.max(1,this.altered*10)}get focusElement(){return this.input}handleKeydown(t){const{key:e}=t;this.focused=!0,this.altered=[t.shiftKey,t.ctrlKey,t.altKey].filter(i=>!!i).length;let r=0;switch(e){case"ArrowUp":{r=this.step;break}case"ArrowDown":{r=-this.step;break}case"ArrowLeft":{r=this.step*(this.isLTR?-1:1);break}case"ArrowRight":{r=this.step*(this.isLTR?1:-1);break}default:return}t.preventDefault();const o=100/(this.mode==="opacity"?100:360);this.sliderHandlePosition=Math.min(100,Math.max(0,this.sliderHandlePosition+r*o)),this.value=this.mode==="opacity"?Math.min(1,Math.max(0,this.value+r/100)):Math.min(360,Math.max(0,this.value+r)),this.colorController.applyColorFromState(),r!==0&&(this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})))}handleInput(t){const{valueAsNumber:e}=t.target;this.value=e,this.sliderHandlePosition=100*(this.mode==="opacity"?this.value:this.value/360),this.colorController.applyColorFromState()}handleChange(t){this.handleInput(t),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}focus(t={}){super.focus(t),this.forwardFocus()}forwardFocus(){this.input.focus()}handleFocus(){this.focused=!0}handleBlur(){this._pointerDown||(this.altered=0,this.focused=!1)}handlePointerdown(t){if(t.button!==0){t.preventDefault();return}this._pointerDown=!0,this.colorController.savePreviousColor(),this.boundingClientRect=this.getBoundingClientRect(),t.target.setPointerCapture(t.pointerId),t.pointerType==="mouse"&&(this.focused=!0)}handlePointermove(t){this.sliderHandlePosition=this.calculateHandlePosition(t),this.value=(this.mode==="opacity"?1:360)*(this.sliderHandlePosition/100),this.colorController.applyColorFromState(),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0,cancelable:!0}))}handlePointerup(t){this._pointerDown=!1,t.target.releasePointerCapture(t.pointerId),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0,cancelable:!0}))||this.colorController.restorePreviousColor(),this.focus(),t.pointerType==="mouse"&&(this.focused=!1)}calculateHandlePosition(t){if(!this.boundingClientRect)return this.sliderHandlePosition;const e=this.boundingClientRect,r=this.vertical?e.top:e.left,s=this.vertical?t.clientY:t.clientX,o=this.vertical?e.height:e.width,i=Math.max(0,Math.min(1,(s-r)/o));return this.vertical||!this.isLTR?100-100*i:100*i}handleGradientPointerdown(t){t.button===0&&(t.stopPropagation(),t.preventDefault(),this.handle.dispatchEvent(new PointerEvent("pointerdown",t)),this.handlePointermove(t))}get handlePositionStyles(){return`${this.vertical?"inset-block-end":"inset-inline-start"}: ${this.sliderHandlePosition}%`}get getColorSliderStyle(){const t=this.vertical?"top":"right";if(this.mode==="opacity"){const e=new u.TinyColor(this.colorController.color).setAlpha(1).toRgbString();return{background:`linear-gradient(to ${t}, transparent, ${e})`}}return{background:`linear-gradient(to ${t}, var(--luzmo-color-slider-gradient, var(--luzmo-color-slider-gradient-fallback)))`}}render(){return y.html`
19
+ <div
20
+ class="opacity-checkerboard checkerboard"
21
+ role="presentation"
22
+ @pointerdown=${this.handleGradientPointerdown}
23
+ >
24
+ <div
25
+ class="gradient"
26
+ role="presentation"
27
+ style=${_.styleMap(this.getColorSliderStyle)}
28
+ >
29
+ <slot name="gradient"></slot>
30
+ </div>
31
+ </div>
32
+ <luzmo-color-handle
33
+ tabindex=${f.ifDefined(this.focused?void 0:"0")}
34
+ @focus=${this.forwardFocus}
35
+ ?focused=${this.focused}
36
+ class="handle"
37
+ color=${this.mode==="opacity"?this.color:"hsl("+this.value+", 100%, 50%)"}
38
+ ?disabled=${this.disabled}
39
+ style=${this.handlePositionStyles}
40
+ ${H.streamingListener({start:["pointerdown",this.handlePointerdown],streamInside:["pointermove",this.handlePointermove],end:[["pointerup","pointercancel","pointerleave"],this.handlePointerup]})}
41
+ ></luzmo-color-handle>
42
+ <input
43
+ type="range"
44
+ class="slider"
45
+ min="0"
46
+ max=${this.mode==="opacity"?"100":"360"}
47
+ aria-orientation=${f.ifDefined(this.vertical?"vertical":void 0)}
48
+ orient=${f.ifDefined(this.vertical?"vertical":void 0)}
49
+ step=${this.step}
50
+ aria-label=${this.label}
51
+ .value=${String(this.mode==="opacity"?this.value*100:this.value)}
52
+ aria-valuetext=${`${new Intl.NumberFormat(this.languageResolver.language,{maximumFractionDigits:0,minimumIntegerDigits:1,style:"unit",unit:this.mode==="opacity"?"percent":"degree",unitDisplay:"narrow"}).format(this.mode==="opacity"?this.value*100:this.value)}`}
53
+ @input=${this.handleInput}
54
+ @change=${this.handleChange}
55
+ @keydown=${this.handleKeydown}
56
+ />
57
+ `}firstUpdated(t){super.firstUpdated(t),this.boundingClientRect=this.getBoundingClientRect(),this.addEventListener("focus",this.handleFocus),this.addEventListener("blur",this.handleBlur)}updated(t){t.has("mode")&&(this.handle.style.insetInlineStart="",this.handle.style.insetBlockEnd="",this.mode==="opacity"&&(this.colorController.color=new u.TinyColor(this.colorController.color).toRgbString(),this.handle.style.insetInlineStart=100*this.colorController.opacity+"%"))}}a([n.property({type:String,reflect:!0})],l.prototype,"dir",2);a([n.property({type:String,reflect:!0})],l.prototype,"mode",2);a([n.property({type:Boolean,reflect:!0})],l.prototype,"disabled",2);a([n.property({type:Boolean,reflect:!0})],l.prototype,"focused",2);a([n.query(".handle")],l.prototype,"handle",2);a([n.property({type:String})],l.prototype,"label",2);a([n.property({type:Boolean,reflect:!0})],l.prototype,"vertical",2);a([n.property({type:Number})],l.prototype,"value",1);a([n.property({type:Number,reflect:!0})],l.prototype,"sliderHandlePosition",2);a([n.property({type:String})],l.prototype,"color",1);a([n.property({type:Number})],l.prototype,"step",2);a([n.property({type:Boolean,attribute:"is-ltr"})],l.prototype,"isLTR",2);a([n.query("input")],l.prototype,"input",2);customElements.get("luzmo-color-slider")||customElements.define("luzmo-color-slider",l);exports.LuzmoColorSlider=l;
@@ -15,14 +15,460 @@
15
15
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
16
  * SOFTWARE.
17
17
  * */
18
- import { L as u } from "../index-HjQa8tew.js";
19
- const l = () => {
18
+ import { TinyColor as d } from "@ctrl/tinycolor";
19
+ import { unsafeCSS as k, html as _ } from "lit";
20
+ import { property as h, query as C } from "lit/decorators.js";
21
+ import { ifDefined as z } from "lit/directives/if-defined.js";
22
+ import { styleMap as H } from "lit/directives/style-map.js";
23
+ import "../color-handle/index.js";
24
+ import { F as P } from "../focusable-BjvsvVam.js";
25
+ import { L as $ } from "../language-resolution-B-wjV5bb.js";
26
+ import { s as R } from "../streaming-listener-BlWm-XZU.js";
27
+ const S = () => {
20
28
  if (typeof document < "u" && !document.querySelector("style[data-luzmo-vars]")) {
21
- const o = document.createElement("style");
22
- o.setAttribute("data-luzmo-vars", ""), o.textContent = 'html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: rgb(140, 140, 140);--luzmo-border-color-full-down: rgb(110, 110, 110);--luzmo-border-color-full-focus: rgb(140, 140, 140);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: #f0f0fc;--luzmo-background-color-down: #f1f1ff;--luzmo-background-color-focus: #f0f0fc;--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: rgb(225, 225, 225);--luzmo-background-color-highlight-down: rgb(215, 215, 215);--luzmo-background-color-highlight-focus: rgb(225, 225, 225);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-hard: #000;--luzmo-font-color-disabled: var(--luzmo-disabled-color);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: #333;--luzmo-font-color-down: #111;--luzmo-font-color-focus: #333;--luzmo-primary: #4434ff;--luzmo-primary-hover: #4234e4;--luzmo-primary-down: #392cc7;--luzmo-primary-focus: #4234e4;--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #ff00ff;--luzmo-secondary-hover: #e309e3;--luzmo-secondary-down: #c711c7;--luzmo-secondary-focus: #e309e3;--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 255, 0, 255;--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: #b3241f;--luzmo-negative-color-down: #9f231f;--luzmo-negative-color-focus: #b3241f;--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-positive-color: rgb(20, 150, 101);--luzmo-positive-color-hover: rgb(17, 128, 86);--luzmo-positive-color-down: rgb(16, 105, 71);--luzmo-positive-color-focus: rgb(17, 128, 86);--luzmo-positive-color-rgb: 20, 150, 101;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: rgb(70, 70, 70);--luzmo-selected-color-down: rgb(40, 40, 40);--luzmo-selected-color-focus: rgb(70, 70, 70);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: rgb(0, 0, 0);--luzmo-selected-color-hard-down: rgb(0, 0, 0);--luzmo-selected-color-hard-focus: rgb(0, 0, 0);--luzmo-informative-color: #1a77e9;--luzmo-informative-color-rgb: 26, 119, 233;--luzmo-disabled-color: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 12px;--luzmo-icon-size-xs: 14px;--luzmo-icon-size-s: 16px;--luzmo-icon-size-m: 18px;--luzmo-icon-size-l: 20px;--luzmo-icon-size-xl: 22px;--luzmo-icon-size-xxl: 32px}', document.head.appendChild(o);
29
+ const a = document.createElement("style");
30
+ a.setAttribute("data-luzmo-vars", ""), a.textContent = 'html{--luzmo-animation-duration: 0.15s;--luzmo-border-color: rgba(var(--luzmo-border-color-rgb), 0.1);--luzmo-border-color-hover: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-down: rgba(var(--luzmo-border-color-rgb), 0.3);--luzmo-border-color-focus: rgba(var(--luzmo-border-color-rgb), 0.15);--luzmo-border-color-rgb: 0, 0, 0;--luzmo-border-color-full: rgb(180, 180, 180);--luzmo-border-color-full-hover: rgb(140, 140, 140);--luzmo-border-color-full-down: rgb(110, 110, 110);--luzmo-border-color-full-focus: rgb(140, 140, 140);--luzmo-border-color-disabled: #dddddd;--luzmo-border-radius: 6px;--luzmo-border-radius-s: 4px;--luzmo-border-radius-l: 8px;--luzmo-border-radius-xl: 12px;--luzmo-border-radius-full: 999rem;--luzmo-background-color: #ffffff;--luzmo-background-color-rgb: 255, 255, 255;--luzmo-background-color-disabled: #eeeeee;--luzmo-background-color-hover: #f0f0fc;--luzmo-background-color-down: #f1f1ff;--luzmo-background-color-focus: #f0f0fc;--luzmo-background-color-highlight: rgb(240, 240, 240);--luzmo-background-color-highlight-disabled: rgb(245, 245, 245);--luzmo-background-color-highlight-hover: rgb(225, 225, 225);--luzmo-background-color-highlight-down: rgb(215, 215, 215);--luzmo-background-color-highlight-focus: rgb(225, 225, 225);--luzmo-border-width: 1px;--luzmo-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;--luzmo-font-size-xs: 10px;--luzmo-font-size-s: 12px;--luzmo-font-size-m: 14px;--luzmo-font-size: 14px;--luzmo-font-size-l: 16px;--luzmo-font-size-xl: 18px;--luzmo-font-size-xxl: 20px;--luzmo-font-style: normal;--luzmo-line-height: normal;--luzmo-font-weight: 400;--luzmo-font-weight-semibold: 500;--luzmo-font-weight-bold: 600;--luzmo-font-color: #333;--luzmo-font-color-hard: #000;--luzmo-font-color-disabled: var(--luzmo-disabled-color);--luzmo-font-color-extra-dimmed: #888;--luzmo-font-color-hover: #333;--luzmo-font-color-down: #111;--luzmo-font-color-focus: #333;--luzmo-primary: #4434ff;--luzmo-primary-hover: #4234e4;--luzmo-primary-down: #392cc7;--luzmo-primary-focus: #4234e4;--luzmo-primary-inverse-color: #ffffff;--luzmo-primary-rgb: 68, 52, 255;--luzmo-secondary: #ff00ff;--luzmo-secondary-hover: #e309e3;--luzmo-secondary-down: #c711c7;--luzmo-secondary-focus: #e309e3;--luzmo-secondary-inverse-color: #ffffff;--luzmo-secondary-rgb: 255, 0, 255;--luzmo-negative-color: #ca221c;--luzmo-negative-color-hover: #b3241f;--luzmo-negative-color-down: #9f231f;--luzmo-negative-color-focus: #b3241f;--luzmo-negative-color-rgb: 202, 34, 28;--luzmo-positive-color: rgb(20, 150, 101);--luzmo-positive-color-hover: rgb(17, 128, 86);--luzmo-positive-color-down: rgb(16, 105, 71);--luzmo-positive-color-focus: rgb(17, 128, 86);--luzmo-positive-color-rgb: 20, 150, 101;--luzmo-selected-color: rgb(110, 110, 110);--luzmo-selected-color-hover: rgb(70, 70, 70);--luzmo-selected-color-down: rgb(40, 40, 40);--luzmo-selected-color-focus: rgb(70, 70, 70);--luzmo-selected-color-hard: #1e1e1e;--luzmo-selected-color-hard-hover: rgb(0, 0, 0);--luzmo-selected-color-hard-down: rgb(0, 0, 0);--luzmo-selected-color-hard-focus: rgb(0, 0, 0);--luzmo-informative-color: #1a77e9;--luzmo-informative-color-rgb: 26, 119, 233;--luzmo-disabled-color: #aaaaaa;--luzmo-spacing-1: 2px;--luzmo-spacing-2: 4px;--luzmo-spacing-3: 8px;--luzmo-spacing-4: 12px;--luzmo-spacing-5: 16px;--luzmo-indicator-gap: 2px;--luzmo-indicator-width: 1px;--luzmo-indicator-color: var(--luzmo-primary);--luzmo-component-height-xxs: 20px;--luzmo-component-height-xs: 24px;--luzmo-component-height-s: 28px;--luzmo-component-height: 32px;--luzmo-component-height-l: 40px;--luzmo-component-height-xl: 48px;--luzmo-component-height-xxl: 64px;--luzmo-icon-size-xxs: 12px;--luzmo-icon-size-xs: 14px;--luzmo-icon-size-s: 16px;--luzmo-icon-size-m: 18px;--luzmo-icon-size-l: 20px;--luzmo-icon-size-xl: 22px;--luzmo-icon-size-xxl: 32px}', document.head.appendChild(a);
23
31
  }
24
32
  };
25
- l();
33
+ S();
34
+ const v = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, y = /(^hs[v|l]a?\s?\()\d{1,3}\.?\d*?(,?\s?)\d{1,3}/, x = /(^hs[v|l]a?\()\d{1,3}/, b = (a, o) => o ? a.toHexString() : a.toHex();
35
+ class E {
36
+ constructor(o, {
37
+ applyColorToState: t,
38
+ extractColorFromState: r,
39
+ maintains: l
40
+ }) {
41
+ this.maintains = "hue", this._hue = 0, this._opacity = 1, this.getColorProcesses = {
42
+ rgb: (e, i) => i ? e.toRgbString() : e.toRgb(),
43
+ prgb: (e, i) => i ? e.toPercentageRgbString() : e.toPercentageRgb(),
44
+ hex8: (e, i) => i ? e.toHex8String() : e.toHex8(),
45
+ name: (e) => e.toName() || e.toRgbString(),
46
+ hsl: (e, i) => {
47
+ if (this.maintains === "hue") {
48
+ if (i)
49
+ return e.toHslString().replace(x, `$1${this.hue}`);
50
+ const { s: u, l: g, a: f } = e.toHsl();
51
+ return { h: this.hue, s: u, l: g, a: f };
52
+ }
53
+ if (i)
54
+ return e.toHslString().replace(
55
+ y,
56
+ `$1${this.hue}$2${this.saturation}`
57
+ );
58
+ const { s: c, l: m, a: p } = e.toHsl();
59
+ return { h: this.hue, s: c, l: m, a: p };
60
+ },
61
+ hsv: (e, i) => {
62
+ if (this.maintains === "hue") {
63
+ if (i)
64
+ return e.toHsvString().replace(x, `$1${this.hue}`);
65
+ const { s: u, v: g, a: f } = e.toHsv();
66
+ return { h: this.hue, s: u, v: g, a: f };
67
+ }
68
+ if (i)
69
+ return e.toHsvString().replace(
70
+ y,
71
+ `$1${this.hue}$2${this.saturation}`
72
+ );
73
+ const { s: c, v: m, a: p } = e.toHsv();
74
+ return { h: this.hue, s: c, v: m, a: p };
75
+ },
76
+ hex: b,
77
+ hex3: b,
78
+ hex4: b,
79
+ hex6: b
80
+ }, this._color = new d({ h: 0, s: 1, v: 1 }), this._previousColor = new d({ h: 0, s: 1, v: 1 }), this._format = {
81
+ format: "",
82
+ isString: !1
83
+ }, this.host = o, this.applyColorToState = t, this.extractColorFromState = r, this.maintains = l || this.maintains;
84
+ }
85
+ setColorProcess(o, t, r, l) {
86
+ this.maintains === "hue" ? this.setColorMaintainHue(o, t, r, l) : this.maintains === "saturation" && this.setColorMaintainSaturation(
87
+ o,
88
+ t,
89
+ r,
90
+ l
91
+ );
92
+ }
93
+ setColorMaintainHue(o, t, r, l) {
94
+ const { h: e, s: i, v: c, a: m } = this._color.toHsv();
95
+ let p;
96
+ if (l && r.startsWith("hs")) {
97
+ const u = v.exec(t);
98
+ if (u !== null) {
99
+ const [, g] = u;
100
+ p = Number(g);
101
+ }
102
+ } else if (!l && r.startsWith("hs")) {
103
+ const u = o.originalInput;
104
+ p = Object.values(u)[0];
105
+ }
106
+ this.hue = p || e, this.opacity = m ?? 1, this.applyColorToState({ h: e, s: i, v: c, a: m });
107
+ }
108
+ setColorMaintainSaturation(o, t, r, l) {
109
+ const { a: e } = this._color.toHsv();
110
+ if (l && r.startsWith("hs")) {
111
+ const i = v.exec(t);
112
+ if (i !== null) {
113
+ const [, c, m] = i;
114
+ this.hue = Number(c), this.saturation = Number(m);
115
+ }
116
+ } else if (!l && r.startsWith("hs")) {
117
+ const i = o.originalInput, c = Object.values(i);
118
+ this.hue = c[0], this.saturation = c[1];
119
+ } else {
120
+ const { h: i } = o.toHsv();
121
+ this.hue = i;
122
+ }
123
+ this.opacity = e ?? 1, this.applyColorToState(o.toHsv());
124
+ }
125
+ applyColorFromState() {
126
+ this._color = new d(this.extractColorFromState(this));
127
+ }
128
+ get hue() {
129
+ return this._hue;
130
+ }
131
+ set hue(o) {
132
+ const t = Math.min(360, Math.max(0, o));
133
+ if (t === this.hue)
134
+ return;
135
+ const r = this.hue, { s: l, v: e, a: i } = this._color.toHsv();
136
+ this._color = new d({ h: t, s: l, v: e, a: i }), this._hue = t, this.host.requestUpdate("hue", r);
137
+ }
138
+ get opacity() {
139
+ return this._opacity;
140
+ }
141
+ set opacity(o) {
142
+ const t = Math.min(1, Math.max(0, o));
143
+ if (t === this.opacity)
144
+ return;
145
+ const r = this.opacity, { h: l, s: e, v: i } = this._color.toHsv();
146
+ this._color = new d({ h: l, s: e, v: i, a: t }), this._opacity = t, this.host.requestUpdate("opacity", r);
147
+ }
148
+ /* c8 ignore next 3 */
149
+ get value() {
150
+ return this.color;
151
+ }
152
+ get color() {
153
+ return this.getColorProcesses[this._format.format || "hex"](
154
+ this._color,
155
+ this._format.isString
156
+ );
157
+ }
158
+ set color(o) {
159
+ if (o === this.color)
160
+ return;
161
+ const t = this._color;
162
+ this._color = new d(o);
163
+ const r = this._color.format;
164
+ let l = typeof o == "string" || o instanceof String;
165
+ r.startsWith("hex") && (l = o.startsWith("#")), this._format = {
166
+ format: r,
167
+ isString: l
168
+ }, this.setColorProcess(this._color, o, r, l), this.host.requestUpdate("color", t);
169
+ }
170
+ getColor(o) {
171
+ const t = {
172
+ hsl: "toHsl"
173
+ };
174
+ return this._color[t[o]]();
175
+ }
176
+ setColor(o) {
177
+ this._color = o;
178
+ const t = typeof this._color.originalInput == "string" || this._color.originalInput instanceof String;
179
+ this.setColorProcess(this._color, o, this._color.format, t);
180
+ }
181
+ getHslString() {
182
+ return this._color.toHslString();
183
+ }
184
+ savePreviousColor() {
185
+ this._previousColor = this._color.clone();
186
+ }
187
+ restorePreviousColor() {
188
+ this.setColor(this._previousColor);
189
+ }
190
+ }
191
+ const M = '.opacity-checkerboard{position:absolute;block-size:100%;inline-size:100%;background:repeating-conic-gradient(var(--luzmo-color-loupe-checkerboard-light, rgb(255, 255, 255)) 0 25%,var(--luzmo-color-loupe-checkerboard-dark, rgb(230, 230, 230)) 0 50%) var(--luzmo-color-loupe-checkerboard-position, left top)/calc(var(--luzmo-color-loupe-checkerboard-size, 8px) * 2) calc(var(--luzmo-color-loupe-checkerboard-size, 8px) * 2)}:host{--luzmo-color-slider-gradient-fallback: rgb(255 0 0) 0%, rgb(255 255 0) 17%, rgb(0 255 0) 33%, rgb(0 255 255) 50%, rgb(0 0 255) 67%, rgb(255 0 255) 83%, rgb(255 0 0) 100%;touch-action:none}:host([vertical]) .handle{inset-block-start:unset;inset-block-end:0}:host([vertical]) .slider{-webkit-appearance:slider-vertical;-moz-appearance:slider-vertical;appearance:slider-vertical}:host(:focus){outline:none}.gradient{overflow:hidden}::slotted(*){width:100%;height:100%}@media (forced-colors: active){:host{--highcontrast-color-slider-border-color: CanvasText;--highcontrast-color-slider-border-color-disabled: GrayText;--highcontrast-color-slider-background-color-disabled: Canvas;forced-color-adjust:none}}:host{--luzmo-color-handle-hitarea-border-radius: var( --luzmo-color-slider-handle-hitarea-border-radius, 0px );min-inline-size:var(--luzmo-color-slider-minimum-length, 80px);inline-size:var(--luzmo-color-slider-length, 192px);block-size:var(--luzmo-color-slider-control-track-width, 24px);-webkit-user-select:none;user-select:none;cursor:default;display:block;position:relative}:host([focused]){z-index:2}:host([disabled]){pointer-events:none}:host([disabled]) .gradient{display:none}:host([vertical]){min-block-size:var(--luzmo-color-slider-vertical-minimum-height, var(--luzmo-color-slider-minimum-length, 80px));block-size:var(--luzmo-color-slider-vertical-height, var(--luzmo-color-slider-length, 192px));min-inline-size:0;inline-size:var(--luzmo-color-slider-vertical-control-track-width, var(--luzmo-color-slider-control-track-height, 24px));display:inline-block}:host([vertical]) .handle{inset-inline-start:50%}.handle{inset-block-start:50%;inset-inline-start:0}.checkerboard{--luzmo-color-slider-border-color-local: var( --highcontrast-color-slider-border-color, var(--luzmo-color-slider-border-color, var(--luzmo-border-color)) )}.checkerboard:before{content:"";z-index:1;box-shadow:inset 0 0 0 var(--luzmo-color-slider-border-width, var(--luzmo-border-width)) var(--luzmo-color-slider-border-color-local);border-radius:var(--luzmo-color-slider-border-rounding, var(--luzmo-border-radius-s));position:absolute;top:0;right:0;bottom:0;left:0}:host([disabled]) .checkerboard{--luzmo-color-slider-border-color-local: var( --highcontrast-color-slider-border-color-disabled, var(--luzmo-color-slider-border-color-disabled, var(--luzmo-dimmed-color)) );background:var(--highcontrast-color-slider-background-color-disabled, var(--luzmo-color-slider-background-color-disabled, var(--luzmo-dimmed-color)))}.checkerboard,.gradient{inline-size:100%;block-size:100%;border-radius:var(--luzmo-color-slider-border-rounding, var(--luzmo-border-radius-s))}.gradient:dir(rtl),:host([dir=rtl]) .gradient{transform:scaleX(-1)}.slider{opacity:0;inline-size:100%;block-size:100%;z-index:0;pointer-events:none;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}';
192
+ var F = Object.defineProperty, I = Object.getOwnPropertyDescriptor, n = (a, o, t, r) => {
193
+ for (var l = r > 1 ? void 0 : r ? I(o, t) : o, e = a.length - 1, i; e >= 0; e--)
194
+ (i = a[e]) && (l = (r ? i(o, t, l) : i(l)) || l);
195
+ return r && l && F(o, t, l), l;
196
+ };
197
+ class s extends P {
198
+ constructor() {
199
+ super(...arguments), this.disabled = !1, this.focused = !1, this.label = "hue", this.vertical = !1, this.languageResolver = new $(this), this.colorController = new E(this, {
200
+ /* c8 ignore next 3 */
201
+ applyColorToState: () => {
202
+ if (this.mode === "opacity") {
203
+ const o = new d(this.colorController.color);
204
+ this.sliderHandlePosition = 100 * o.getAlpha();
205
+ } else
206
+ this.sliderHandlePosition = 100 * (this.colorController.hue / 360);
207
+ },
208
+ extractColorFromState: (o) => this.mode === "opacity" ? {
209
+ ...o.getColor("hsl"),
210
+ a: this.value
211
+ } : {
212
+ ...o.getColor("hsl"),
213
+ h: this.value
214
+ },
215
+ maintains: "saturation"
216
+ }), this.sliderHandlePosition = 0, this.step = 1, this.isLTR = !0, this._altered = 0, this._pointerDown = !1;
217
+ }
218
+ static get styles() {
219
+ return [k(M)];
220
+ }
221
+ get value() {
222
+ return this.mode === "opacity" ? this.colorController.opacity : this.colorController.hue;
223
+ }
224
+ set value(o) {
225
+ this.mode === "opacity" ? this.colorController.opacity = o : this.colorController.hue = o;
226
+ }
227
+ get color() {
228
+ return this.colorController.color;
229
+ }
230
+ set color(o) {
231
+ this.colorController.color = o;
232
+ }
233
+ get altered() {
234
+ return this._altered;
235
+ }
236
+ set altered(o) {
237
+ this._altered = o, this.step = Math.max(1, this.altered * 10);
238
+ }
239
+ get focusElement() {
240
+ return this.input;
241
+ }
242
+ handleKeydown(o) {
243
+ const { key: t } = o;
244
+ this.focused = !0, this.altered = [o.shiftKey, o.ctrlKey, o.altKey].filter(
245
+ (i) => !!i
246
+ ).length;
247
+ let r = 0;
248
+ switch (t) {
249
+ case "ArrowUp": {
250
+ r = this.step;
251
+ break;
252
+ }
253
+ case "ArrowDown": {
254
+ r = -this.step;
255
+ break;
256
+ }
257
+ case "ArrowLeft": {
258
+ r = this.step * (this.isLTR ? -1 : 1);
259
+ break;
260
+ }
261
+ case "ArrowRight": {
262
+ r = this.step * (this.isLTR ? 1 : -1);
263
+ break;
264
+ }
265
+ default:
266
+ return;
267
+ }
268
+ o.preventDefault();
269
+ const e = 100 / (this.mode === "opacity" ? 100 : 360);
270
+ this.sliderHandlePosition = Math.min(
271
+ 100,
272
+ Math.max(0, this.sliderHandlePosition + r * e)
273
+ ), this.value = this.mode === "opacity" ? Math.min(1, Math.max(0, this.value + r / 100)) : Math.min(360, Math.max(0, this.value + r)), this.colorController.applyColorFromState(), r !== 0 && (this.dispatchEvent(
274
+ new Event("input", {
275
+ bubbles: !0,
276
+ composed: !0
277
+ })
278
+ ), this.dispatchEvent(
279
+ new Event("change", {
280
+ bubbles: !0,
281
+ composed: !0
282
+ })
283
+ ));
284
+ }
285
+ handleInput(o) {
286
+ const { valueAsNumber: t } = o.target;
287
+ this.value = t, this.sliderHandlePosition = 100 * (this.mode === "opacity" ? this.value : this.value / 360), this.colorController.applyColorFromState();
288
+ }
289
+ handleChange(o) {
290
+ this.handleInput(o), this.dispatchEvent(
291
+ new Event("change", {
292
+ bubbles: !0,
293
+ composed: !0
294
+ })
295
+ );
296
+ }
297
+ focus(o = {}) {
298
+ super.focus(o), this.forwardFocus();
299
+ }
300
+ forwardFocus() {
301
+ this.input.focus();
302
+ }
303
+ handleFocus() {
304
+ this.focused = !0;
305
+ }
306
+ handleBlur() {
307
+ this._pointerDown || (this.altered = 0, this.focused = !1);
308
+ }
309
+ handlePointerdown(o) {
310
+ if (o.button !== 0) {
311
+ o.preventDefault();
312
+ return;
313
+ }
314
+ this._pointerDown = !0, this.colorController.savePreviousColor(), this.boundingClientRect = this.getBoundingClientRect(), o.target.setPointerCapture(o.pointerId), o.pointerType === "mouse" && (this.focused = !0);
315
+ }
316
+ handlePointermove(o) {
317
+ this.sliderHandlePosition = this.calculateHandlePosition(o), this.value = (this.mode === "opacity" ? 1 : 360) * (this.sliderHandlePosition / 100), this.colorController.applyColorFromState(), this.dispatchEvent(
318
+ new Event("input", {
319
+ bubbles: !0,
320
+ composed: !0,
321
+ cancelable: !0
322
+ })
323
+ );
324
+ }
325
+ handlePointerup(o) {
326
+ this._pointerDown = !1, o.target.releasePointerCapture(o.pointerId), this.dispatchEvent(
327
+ new Event("change", {
328
+ bubbles: !0,
329
+ composed: !0,
330
+ cancelable: !0
331
+ })
332
+ ) || this.colorController.restorePreviousColor(), this.focus(), o.pointerType === "mouse" && (this.focused = !1);
333
+ }
334
+ /**
335
+ * Returns the value under the cursor
336
+ * @param: PointerEvent on slider
337
+ * @return: Slider value that correlates to the position under the pointer
338
+ */
339
+ calculateHandlePosition(o) {
340
+ if (!this.boundingClientRect)
341
+ return this.sliderHandlePosition;
342
+ const t = this.boundingClientRect, r = this.vertical ? t.top : t.left, l = this.vertical ? o.clientY : o.clientX, e = this.vertical ? t.height : t.width, i = Math.max(0, Math.min(1, (l - r) / e));
343
+ return this.vertical || !this.isLTR ? 100 - 100 * i : 100 * i;
344
+ }
345
+ handleGradientPointerdown(o) {
346
+ o.button === 0 && (o.stopPropagation(), o.preventDefault(), this.handle.dispatchEvent(new PointerEvent("pointerdown", o)), this.handlePointermove(o));
347
+ }
348
+ get handlePositionStyles() {
349
+ return `${this.vertical ? "inset-block-end" : "inset-inline-start"}: ${this.sliderHandlePosition}%`;
350
+ }
351
+ get getColorSliderStyle() {
352
+ const o = this.vertical ? "top" : "right";
353
+ if (this.mode === "opacity") {
354
+ const t = new d(this.colorController.color).setAlpha(1).toRgbString();
355
+ return {
356
+ background: `linear-gradient(to ${o}, transparent, ${t})`
357
+ };
358
+ }
359
+ return {
360
+ background: `linear-gradient(to ${o}, var(--luzmo-color-slider-gradient, var(--luzmo-color-slider-gradient-fallback)))`
361
+ };
362
+ }
363
+ render() {
364
+ return _`
365
+ <div
366
+ class="opacity-checkerboard checkerboard"
367
+ role="presentation"
368
+ @pointerdown=${this.handleGradientPointerdown}
369
+ >
370
+ <div
371
+ class="gradient"
372
+ role="presentation"
373
+ style=${H(this.getColorSliderStyle)}
374
+ >
375
+ <slot name="gradient"></slot>
376
+ </div>
377
+ </div>
378
+ <luzmo-color-handle
379
+ tabindex=${z(this.focused ? void 0 : "0")}
380
+ @focus=${this.forwardFocus}
381
+ ?focused=${this.focused}
382
+ class="handle"
383
+ color=${this.mode === "opacity" ? this.color : "hsl(" + this.value + ", 100%, 50%)"}
384
+ ?disabled=${this.disabled}
385
+ style=${this.handlePositionStyles}
386
+ ${R({
387
+ start: ["pointerdown", this.handlePointerdown],
388
+ streamInside: ["pointermove", this.handlePointermove],
389
+ end: [
390
+ ["pointerup", "pointercancel", "pointerleave"],
391
+ this.handlePointerup
392
+ ]
393
+ })}
394
+ ></luzmo-color-handle>
395
+ <input
396
+ type="range"
397
+ class="slider"
398
+ min="0"
399
+ max=${this.mode === "opacity" ? "100" : "360"}
400
+ aria-orientation=${z(this.vertical ? "vertical" : void 0)}
401
+ orient=${z(this.vertical ? "vertical" : void 0)}
402
+ step=${this.step}
403
+ aria-label=${this.label}
404
+ .value=${String(
405
+ this.mode === "opacity" ? this.value * 100 : this.value
406
+ )}
407
+ aria-valuetext=${`${new Intl.NumberFormat(
408
+ this.languageResolver.language,
409
+ {
410
+ maximumFractionDigits: 0,
411
+ minimumIntegerDigits: 1,
412
+ style: "unit",
413
+ unit: this.mode === "opacity" ? "percent" : "degree",
414
+ unitDisplay: "narrow"
415
+ }
416
+ ).format(this.mode === "opacity" ? this.value * 100 : this.value)}`}
417
+ @input=${this.handleInput}
418
+ @change=${this.handleChange}
419
+ @keydown=${this.handleKeydown}
420
+ />
421
+ `;
422
+ }
423
+ firstUpdated(o) {
424
+ super.firstUpdated(o), this.boundingClientRect = this.getBoundingClientRect(), this.addEventListener("focus", this.handleFocus), this.addEventListener("blur", this.handleBlur);
425
+ }
426
+ updated(o) {
427
+ o.has("mode") && (this.handle.style.insetInlineStart = "", this.handle.style.insetBlockEnd = "", this.mode === "opacity" && (this.colorController.color = new d(
428
+ this.colorController.color
429
+ ).toRgbString(), this.handle.style.insetInlineStart = 100 * this.colorController.opacity + "%"));
430
+ }
431
+ }
432
+ n([
433
+ h({ type: String, reflect: !0 })
434
+ ], s.prototype, "dir", 2);
435
+ n([
436
+ h({ type: String, reflect: !0 })
437
+ ], s.prototype, "mode", 2);
438
+ n([
439
+ h({ type: Boolean, reflect: !0 })
440
+ ], s.prototype, "disabled", 2);
441
+ n([
442
+ h({ type: Boolean, reflect: !0 })
443
+ ], s.prototype, "focused", 2);
444
+ n([
445
+ C(".handle")
446
+ ], s.prototype, "handle", 2);
447
+ n([
448
+ h({ type: String })
449
+ ], s.prototype, "label", 2);
450
+ n([
451
+ h({ type: Boolean, reflect: !0 })
452
+ ], s.prototype, "vertical", 2);
453
+ n([
454
+ h({ type: Number })
455
+ ], s.prototype, "value", 1);
456
+ n([
457
+ h({ type: Number, reflect: !0 })
458
+ ], s.prototype, "sliderHandlePosition", 2);
459
+ n([
460
+ h({ type: String })
461
+ ], s.prototype, "color", 1);
462
+ n([
463
+ h({ type: Number })
464
+ ], s.prototype, "step", 2);
465
+ n([
466
+ h({ type: Boolean, attribute: "is-ltr" })
467
+ ], s.prototype, "isLTR", 2);
468
+ n([
469
+ C("input")
470
+ ], s.prototype, "input", 2);
471
+ customElements.get("luzmo-color-slider") || customElements.define("luzmo-color-slider", s);
26
472
  export {
27
- u as LuzmoColorSlider
473
+ s as LuzmoColorSlider
28
474
  };