@luzmo/lucero 2.5.2 → 2.6.0
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.
- package/components/color-area/color-area.d.ts +15 -0
- package/components/color-area/index.cjs +1 -1
- package/components/color-area/index.d.ts +1 -0
- package/components/color-area/index.js +1 -1
- package/components/color-area-CFBE-rG3.cjs +80 -0
- package/components/{color-area-qlEAp8ZN.js → color-area-GGa8KJyd.js} +85 -44
- package/components/color-handle/index.cjs +1 -1
- package/components/color-handle/index.js +1 -1
- package/components/{color-handle-Dc0uLgkf.js → color-handle-Ya92rdpA.js} +5 -2
- package/components/{color-handle-BE0Z1gTU.cjs → color-handle-hJ7Kblh4.cjs} +1 -1
- package/components/color-menu/color-menu.d.ts +11 -0
- package/components/color-menu/index.cjs +1 -1
- package/components/color-menu/index.d.ts +1 -0
- package/components/color-menu/index.js +1 -1
- package/components/{color-menu-Cus3S-Re.cjs → color-menu-COhe5VUB.cjs} +1 -1
- package/components/{color-menu-BxFQnH79.js → color-menu-Ct3f01bI.js} +6 -3
- package/components/color-picker/color-picker.d.ts +13 -0
- package/components/color-picker/index.cjs +1 -1
- package/components/color-picker/index.d.ts +1 -0
- package/components/color-picker/index.js +1 -1
- package/components/{color-picker-orFSIqoZ.js → color-picker-DWERcNZi.js} +5 -2
- package/components/{color-picker-BTT1O-76.cjs → color-picker-ELa0yF2F.cjs} +1 -1
- package/components/color-slider/color-slider.d.ts +17 -0
- package/components/color-slider/index.cjs +1 -1
- package/components/color-slider/index.d.ts +1 -0
- package/components/color-slider/index.js +1 -1
- package/components/{color-slider-X1EArAnx.js → color-slider-DNd_ZrD6.js} +95 -56
- package/components/color-slider-IYBn2DL7.cjs +58 -0
- package/components/index.cjs +1 -1
- package/components/index.js +8 -8
- package/components/interaction-BjXWVy_C.cjs +18 -0
- package/components/interaction-BpCLJ1OV.js +83 -0
- package/components/number-field/index.cjs +1 -1
- package/components/number-field/index.js +1 -1
- package/components/number-field/number-field.d.ts +4 -0
- package/components/{number-field-Ceeli_mh.cjs → number-field-CV7g2Q20.cjs} +2 -2
- package/components/{number-field-D9UqpqpW.js → number-field-Crol6vc9.js} +15 -9
- package/components/slider/index.cjs +1 -1
- package/components/slider/index.d.ts +1 -0
- package/components/slider/index.js +1 -1
- package/components/slider/slider.d.ts +18 -0
- package/components/{slider-Ch7OgTdj.js → slider-BFTuAXK1.js} +167 -151
- package/components/slider-Ce6qgPZ4.cjs +136 -0
- package/components/{streaming-listener-Bfyk6Fsx.cjs → streaming-listener-BzGZUHkj.cjs} +1 -1
- package/components/{streaming-listener-B6mDl4pZ.js → streaming-listener-DyS3scAi.js} +1 -1
- package/components/utils.cjs +1 -1
- package/components/utils.js +1 -1
- package/custom-elements.json +1 -1
- package/package.json +1 -1
- package/standalone/chunks/color-area-D-AVcZza.js +66 -0
- package/standalone/chunks/{color-handle-BLQiuRSS.js → color-handle-DO7dxFGx.js} +1 -1
- package/standalone/chunks/{color-menu-BDZh85nX.js → color-menu-DIX2y9m_.js} +1 -1
- package/standalone/chunks/color-slider-MSADvkPC.js +50 -0
- package/standalone/chunks/interaction-BQyflxg-.js +2 -0
- package/standalone/chunks/{number-field-Dc4nBa6l.js → number-field-BoIKbmIv.js} +2 -2
- package/standalone/chunks/{streaming-listener-DbMoHlSj.js → streaming-listener-0FSzb9QY.js} +1 -1
- package/standalone/color-area.js +1 -1
- package/standalone/color-handle.js +1 -1
- package/standalone/color-menu.js +1 -1
- package/standalone/color-picker.js +1 -1
- package/standalone/color-slider.js +1 -1
- package/standalone/manifest.json +7 -6
- package/standalone/number-field.js +1 -1
- package/standalone/slider.js +11 -10
- package/standalone/utils.js +1 -1
- package/utils/reactive-controllers/interaction.d.ts +85 -0
- package/components/color-area-D1fRozE0.cjs +0 -80
- package/components/color-slider-9Ck28Qdk.cjs +0 -57
- package/components/slider-C1AdDTfB.cjs +0 -135
- package/standalone/chunks/color-area-BCI2oMGd.js +0 -66
- package/standalone/chunks/color-slider-Bipcekrc.js +0 -49
|
@@ -15,6 +15,13 @@ declare const LuzmoColorPicker_base: typeof LuzmoElement & {
|
|
|
15
15
|
* @element luzmo-color-picker
|
|
16
16
|
* @fires input - The value of the Color Picker has changed.
|
|
17
17
|
* @fires change - An alteration to the value of the Color Picker has been committed by the user.
|
|
18
|
+
* @fires {CustomEvent<InteractionEventDetail>} luzmo-interaction-start - Bubbles
|
|
19
|
+
* up from the menu's color area or color sliders when a pointer drag or
|
|
20
|
+
* held-key interaction starts, before the first `change` it causes.
|
|
21
|
+
* @fires {CustomEvent<InteractionEventDetail>} luzmo-interaction-end - Bubbles
|
|
22
|
+
* up when that interaction ends, after its last `change`. Closing the popover
|
|
23
|
+
* ends an interaction in progress. Swatch picks and typed values are single
|
|
24
|
+
* `change` events without an interaction.
|
|
18
25
|
*/
|
|
19
26
|
export declare class LuzmoColorPicker extends LuzmoColorPicker_base {
|
|
20
27
|
static styles: import("lit").CSSResult;
|
|
@@ -58,6 +65,12 @@ export declare class LuzmoColorPicker extends LuzmoColorPicker_base {
|
|
|
58
65
|
private overlayElement;
|
|
59
66
|
private _renderMenu;
|
|
60
67
|
private overlayCloseEvent;
|
|
68
|
+
/**
|
|
69
|
+
* Finishes a drag or held-key interaction in progress inside the open menu
|
|
70
|
+
* as if the user released it, so a host can settle the color before it
|
|
71
|
+
* removes or hides the picker. Does nothing otherwise.
|
|
72
|
+
*/
|
|
73
|
+
endInteraction(): void;
|
|
61
74
|
private overlayOpenEvent;
|
|
62
75
|
private handleColorChange;
|
|
63
76
|
protected firstUpdated(): void;
|
|
@@ -15,4 +15,4 @@
|
|
|
15
15
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
16
16
|
* SOFTWARE.
|
|
17
17
|
* */
|
|
18
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../tokens.cjs");const e=require("../color-picker-
|
|
18
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../tokens.cjs");const e=require("../color-picker-ELa0yF2F.cjs");exports.LuzmoColorPicker=e.t;
|
|
@@ -22,7 +22,7 @@ import "./popover-CWrRLzOL.js";
|
|
|
22
22
|
import { n as r } from "./slottable-request-event-24jJOhbh.js";
|
|
23
23
|
import "./overlay-D_Xfq92b.js";
|
|
24
24
|
import "./swatch-BBVsuSAV.js";
|
|
25
|
-
import "./color-menu-
|
|
25
|
+
import "./color-menu-Ct3f01bI.js";
|
|
26
26
|
import { html as i, unsafeCSS as a } from "lit";
|
|
27
27
|
import { property as o, query as s, state as c } from "lit/decorators.js";
|
|
28
28
|
// src/components/color-picker/color-picker.module.scss?inline
|
|
@@ -34,7 +34,10 @@ var l = "luzmo-popover{margin-left:var(--luzmo-color-picker-popover-horizontal-g
|
|
|
34
34
|
this.styles = a(l);
|
|
35
35
|
}
|
|
36
36
|
overlayCloseEvent() {
|
|
37
|
-
this.open = !1;
|
|
37
|
+
this.endInteraction(), this.open = !1;
|
|
38
|
+
}
|
|
39
|
+
endInteraction() {
|
|
40
|
+
this.menuElement?.endInteraction();
|
|
38
41
|
}
|
|
39
42
|
overlayOpenEvent() {
|
|
40
43
|
this.open = !0;
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
16
16
|
* SOFTWARE.
|
|
17
17
|
* */
|
|
18
|
-
require("./tokens.cjs");const e=require("./decorate-SO02l0A6.cjs"),t=require("./sized-mixin-CSajkMro.cjs");require("./popover-CFzz83f8.cjs");const n=require("./slottable-request-event-C6eb7Ch3.cjs");require("./overlay-DAOyrYJL.cjs"),require("./swatch-DiNMN-SZ.cjs"),require("./color-menu-
|
|
18
|
+
require("./tokens.cjs");const e=require("./decorate-SO02l0A6.cjs"),t=require("./sized-mixin-CSajkMro.cjs");require("./popover-CFzz83f8.cjs");const n=require("./slottable-request-event-C6eb7Ch3.cjs");require("./overlay-DAOyrYJL.cjs"),require("./swatch-DiNMN-SZ.cjs"),require("./color-menu-COhe5VUB.cjs");let r=require("lit"),i=require("lit/decorators.js");var a=`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)}`,o=class extends t.n(e.n){constructor(...e){super(...e),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}static{this.styles=(0,r.unsafeCSS)(a)}overlayCloseEvent(){this.endInteraction(),this.open=!1}endInteraction(){this.menuElement?.endInteraction()}overlayOpenEvent(){this.open=!0}handleColorChange(){let e=this.menuElement.color;this.color=typeof e==`string`?e:String(e),this.dispatchEvent(new Event(`change`,{bubbles:!0,composed:!0}))}firstUpdated(){this.overlayElement.addEventListener(`slottable-request`,e=>{this._renderMenu=e.data!==n.n})}updated(e){e.has(`open`)&&this.open===!0&&(this._renderMenu=!0)}renderColorMenu(){return r.html`
|
|
19
19
|
<luzmo-color-menu
|
|
20
20
|
.size=${this.size}
|
|
21
21
|
.color=${this.color}
|
|
@@ -6,6 +6,11 @@ import { ColorValue } from '../../utils/reactive-controllers/color';
|
|
|
6
6
|
* @element luzmo-color-slider
|
|
7
7
|
* @fires input - The value of the Color Slider has changed.
|
|
8
8
|
* @fires change - An alteration to the value of the Color Slider has been committed by the user.
|
|
9
|
+
* @fires {CustomEvent<InteractionEventDetail>} luzmo-interaction-start - A
|
|
10
|
+
* pointer drag or held-key interaction starts, before its first value change.
|
|
11
|
+
* @fires {CustomEvent<InteractionEventDetail>} luzmo-interaction-end - The
|
|
12
|
+
* interaction ends after its last `input`/`change`, even when nothing changed.
|
|
13
|
+
* A cancelled pointer commits and ends the same way.
|
|
9
14
|
*/
|
|
10
15
|
export declare class LuzmoColorSlider extends Focusable {
|
|
11
16
|
static get styles(): CSSResultArray;
|
|
@@ -18,6 +23,7 @@ export declare class LuzmoColorSlider extends Focusable {
|
|
|
18
23
|
vertical: boolean;
|
|
19
24
|
private languageResolver;
|
|
20
25
|
private colorController;
|
|
26
|
+
private readonly _interaction;
|
|
21
27
|
get value(): number;
|
|
22
28
|
set value(value: number);
|
|
23
29
|
sliderHandlePosition: number;
|
|
@@ -31,6 +37,7 @@ export declare class LuzmoColorSlider extends Focusable {
|
|
|
31
37
|
input: HTMLInputElement;
|
|
32
38
|
get focusElement(): HTMLInputElement;
|
|
33
39
|
private handleKeydown;
|
|
40
|
+
private handleKeyup;
|
|
34
41
|
private handleInput;
|
|
35
42
|
private handleChange;
|
|
36
43
|
focus(focusOptions?: FocusOptions): void;
|
|
@@ -39,9 +46,18 @@ export declare class LuzmoColorSlider extends Focusable {
|
|
|
39
46
|
private handleBlur;
|
|
40
47
|
private boundingClientRect;
|
|
41
48
|
private _pointerDown;
|
|
49
|
+
private _capturedPointer?;
|
|
42
50
|
private handlePointerdown;
|
|
43
51
|
private handlePointermove;
|
|
44
52
|
private handlePointerup;
|
|
53
|
+
/** Commits the pointer interaction in progress, then ends it. */
|
|
54
|
+
private _finishPointer;
|
|
55
|
+
/**
|
|
56
|
+
* Finishes the pointer drag or held-key interaction in progress as if the
|
|
57
|
+
* user released it, so a host can settle the value before it removes or
|
|
58
|
+
* hides the slider. Does nothing when no interaction is in progress.
|
|
59
|
+
*/
|
|
60
|
+
endInteraction(): void;
|
|
45
61
|
/**
|
|
46
62
|
* Returns the value under the cursor
|
|
47
63
|
* @param: PointerEvent on slider
|
|
@@ -52,6 +68,7 @@ export declare class LuzmoColorSlider extends Focusable {
|
|
|
52
68
|
private get handlePositionStyles();
|
|
53
69
|
private get getColorSliderStyle();
|
|
54
70
|
protected render(): TemplateResult;
|
|
71
|
+
disconnectedCallback(): void;
|
|
55
72
|
protected firstUpdated(changed: PropertyValues): void;
|
|
56
73
|
protected updated(changedProperties: PropertyValues): void;
|
|
57
74
|
}
|
|
@@ -15,4 +15,4 @@
|
|
|
15
15
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
16
16
|
* SOFTWARE.
|
|
17
17
|
* */
|
|
18
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../tokens.cjs");const e=require("../color-slider-
|
|
18
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../tokens.cjs");const e=require("../color-slider-IYBn2DL7.cjs");exports.LuzmoColorSlider=e.t;
|
|
@@ -19,22 +19,23 @@ import "./tokens.js";
|
|
|
19
19
|
import { t as e } from "./decorate-CpKsOs9z.js";
|
|
20
20
|
import { t } from "./focusable-xjv79E40.js";
|
|
21
21
|
import { t as n } from "./language-resolution-7rc0khIK.js";
|
|
22
|
-
import "./color-handle-
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
22
|
+
import "./color-handle-Ya92rdpA.js";
|
|
23
|
+
import { n as r, t as i } from "./interaction-BpCLJ1OV.js";
|
|
24
|
+
import { t as a } from "./streaming-listener-DyS3scAi.js";
|
|
25
|
+
import { html as o, unsafeCSS as s } from "lit";
|
|
26
|
+
import { property as c, query as l } from "lit/decorators.js";
|
|
27
|
+
import { ifDefined as u } from "lit/directives/if-defined.js";
|
|
28
|
+
import { styleMap as d } from "lit/directives/style-map.js";
|
|
29
|
+
import { TinyColor as f } from "@ctrl/tinycolor";
|
|
29
30
|
// src/utils/reactive-controllers/color.ts
|
|
30
|
-
var
|
|
31
|
+
var p = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, m = /(^hs[v|l]a?\s?\()\d{1,3}\.?\d*?(,?\s?)\d{1,3}/, h = /(^hs[v|l]a?\()\d{1,3}/, g = (e, t) => t ? e.toHexString() : e.toHex(), _ = class {
|
|
31
32
|
setColorProcess(e, t, n, r) {
|
|
32
33
|
this.maintains === "hue" ? this.setColorMaintainHue(e, t, n, r) : this.maintains === "saturation" && this.setColorMaintainSaturation(e, t, n, r);
|
|
33
34
|
}
|
|
34
35
|
setColorMaintainHue(e, t, n, r) {
|
|
35
36
|
let { h: i, s: a, v: o, a: s } = this._color.toHsv(), c;
|
|
36
37
|
if (r && n.startsWith("hs")) {
|
|
37
|
-
let e =
|
|
38
|
+
let e = p.exec(t);
|
|
38
39
|
if (e !== null) {
|
|
39
40
|
let [, t] = e;
|
|
40
41
|
c = Number(t);
|
|
@@ -53,7 +54,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
53
54
|
setColorMaintainSaturation(e, t, n, r) {
|
|
54
55
|
let { a: i } = this._color.toHsv();
|
|
55
56
|
if (r && n.startsWith("hs")) {
|
|
56
|
-
let e =
|
|
57
|
+
let e = p.exec(t);
|
|
57
58
|
if (e !== null) {
|
|
58
59
|
let [, t, n] = e;
|
|
59
60
|
this.hue = Number(t), this.saturation = Number(n);
|
|
@@ -75,7 +76,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
75
76
|
name: (e) => e.toName() || e.toRgbString(),
|
|
76
77
|
hsl: (e, t) => {
|
|
77
78
|
if (this.maintains === "hue") {
|
|
78
|
-
if (t) return e.toHslString().replace(
|
|
79
|
+
if (t) return e.toHslString().replace(h, `$1${this.hue}`);
|
|
79
80
|
let { s: n, l: r, a: i } = e.toHsl();
|
|
80
81
|
return {
|
|
81
82
|
h: this.hue,
|
|
@@ -84,7 +85,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
84
85
|
a: i
|
|
85
86
|
};
|
|
86
87
|
}
|
|
87
|
-
if (t) return e.toHslString().replace(
|
|
88
|
+
if (t) return e.toHslString().replace(m, `$1${this.hue}$2${this.saturation}`);
|
|
88
89
|
let { s: n, l: r, a: i } = e.toHsl();
|
|
89
90
|
return {
|
|
90
91
|
h: this.hue,
|
|
@@ -95,7 +96,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
95
96
|
},
|
|
96
97
|
hsv: (e, t) => {
|
|
97
98
|
if (this.maintains === "hue") {
|
|
98
|
-
if (t) return e.toHsvString().replace(
|
|
99
|
+
if (t) return e.toHsvString().replace(h, `$1${this.hue}`);
|
|
99
100
|
let { s: n, v: r, a: i } = e.toHsv();
|
|
100
101
|
return {
|
|
101
102
|
h: this.hue,
|
|
@@ -104,7 +105,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
104
105
|
a: i
|
|
105
106
|
};
|
|
106
107
|
}
|
|
107
|
-
if (t) return e.toHsvString().replace(
|
|
108
|
+
if (t) return e.toHsvString().replace(m, `$1${this.hue}$2${this.saturation}`);
|
|
108
109
|
let { s: n, v: r, a: i } = e.toHsv();
|
|
109
110
|
return {
|
|
110
111
|
h: this.hue,
|
|
@@ -113,15 +114,15 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
113
114
|
a: i
|
|
114
115
|
};
|
|
115
116
|
},
|
|
116
|
-
hex:
|
|
117
|
-
hex3:
|
|
118
|
-
hex4:
|
|
119
|
-
hex6:
|
|
120
|
-
}, this._color = new
|
|
117
|
+
hex: g,
|
|
118
|
+
hex3: g,
|
|
119
|
+
hex4: g,
|
|
120
|
+
hex6: g
|
|
121
|
+
}, this._color = new f({
|
|
121
122
|
h: 0,
|
|
122
123
|
s: 1,
|
|
123
124
|
v: 1
|
|
124
|
-
}), this._previousColor = new
|
|
125
|
+
}), this._previousColor = new f({
|
|
125
126
|
h: 0,
|
|
126
127
|
s: 1,
|
|
127
128
|
v: 1
|
|
@@ -131,7 +132,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
131
132
|
}, this.host = e, this.applyColorToState = t, this.extractColorFromState = n, this.maintains = r || this.maintains;
|
|
132
133
|
}
|
|
133
134
|
applyColorFromState() {
|
|
134
|
-
this._color = new
|
|
135
|
+
this._color = new f(this.extractColorFromState(this));
|
|
135
136
|
}
|
|
136
137
|
get hue() {
|
|
137
138
|
return this._hue;
|
|
@@ -140,7 +141,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
140
141
|
let t = Math.min(360, Math.max(0, e));
|
|
141
142
|
if (t === this.hue) return;
|
|
142
143
|
let n = this.hue, { s: r, v: i, a } = this._color.toHsv();
|
|
143
|
-
this._color = new
|
|
144
|
+
this._color = new f({
|
|
144
145
|
h: t,
|
|
145
146
|
s: r,
|
|
146
147
|
v: i,
|
|
@@ -154,7 +155,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
154
155
|
let t = Math.min(1, Math.max(0, e));
|
|
155
156
|
if (t === this.opacity) return;
|
|
156
157
|
let n = this.opacity, { h: r, s: i, v: a } = this._color.toHsv();
|
|
157
|
-
this._color = new
|
|
158
|
+
this._color = new f({
|
|
158
159
|
h: r,
|
|
159
160
|
s: i,
|
|
160
161
|
v: a,
|
|
@@ -172,7 +173,7 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
172
173
|
/* c8 ignore next 3 */
|
|
173
174
|
if (e === this.color) return;
|
|
174
175
|
let t = this._color;
|
|
175
|
-
this._color = new
|
|
176
|
+
this._color = new f(e);
|
|
176
177
|
let n = this._color.format, r = typeof e == "string" || e instanceof String;
|
|
177
178
|
n.startsWith("hex") && (r = e.startsWith("#")), this._format = {
|
|
178
179
|
format: n,
|
|
@@ -196,13 +197,13 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
196
197
|
restorePreviousColor() {
|
|
197
198
|
this.setColor(this._previousColor);
|
|
198
199
|
}
|
|
199
|
-
},
|
|
200
|
+
}, v = ".opacity-checkerboard{background:repeating-conic-gradient(var(--luzmo-color-loupe-checkerboard-light,#fff) 0 25%, var(--luzmo-color-loupe-checkerboard-dark,#e6e6e6) 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);block-size:100%;inline-size:100%;position:absolute}:host{--luzmo-color-slider-gradient-fallback:red 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%;touch-action:none}:host([vertical]) .handle{inset-block-start:unset;inset-block-end:0}:host([vertical]) .slider{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;inset: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{border-radius:var(--luzmo-color-slider-border-rounding,var(--luzmo-border-radius-s));block-size:100%;inline-size:100%}:host([dir=rtl]) .gradient{transform:scaleX(-1)}.gradient:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){transform:scaleX(-1)}.slider{opacity:0;z-index:0;pointer-events:none;block-size:100%;inline-size:100%;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}", y = class extends t {
|
|
200
201
|
constructor(...e) {
|
|
201
|
-
super(...e), this.disabled = !1, this.focused = !1, this.label = "hue", this.vertical = !1, this.languageResolver = new n(this), this.colorController = new
|
|
202
|
+
super(...e), this.disabled = !1, this.focused = !1, this.label = "hue", this.vertical = !1, this.languageResolver = new n(this), this.colorController = new _(this, {
|
|
202
203
|
/* c8 ignore next 3 */
|
|
203
204
|
applyColorToState: () => {
|
|
204
205
|
if (this.mode === "opacity") {
|
|
205
|
-
let e = new
|
|
206
|
+
let e = new f(this.colorController.color);
|
|
206
207
|
this.sliderHandlePosition = 100 * e.getAlpha();
|
|
207
208
|
} else this.sliderHandlePosition = 100 * (this.colorController.hue / 360);
|
|
208
209
|
},
|
|
@@ -214,10 +215,10 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
214
215
|
h: this.value
|
|
215
216
|
},
|
|
216
217
|
maintains: "saturation"
|
|
217
|
-
}), this.sliderHandlePosition = 0, this.step = 1, this.isLTR = !0, this._altered = 0, this._pointerDown = !1;
|
|
218
|
+
}), this._interaction = new i(this, { value: () => this.value }), this.sliderHandlePosition = 0, this.step = 1, this.isLTR = !0, this._altered = 0, this._pointerDown = !1;
|
|
218
219
|
}
|
|
219
220
|
static get styles() {
|
|
220
|
-
return [
|
|
221
|
+
return [s(v)];
|
|
221
222
|
}
|
|
222
223
|
get value() {
|
|
223
224
|
return this.mode === "opacity" ? this.colorController.opacity : this.colorController.hue;
|
|
@@ -263,16 +264,23 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
263
264
|
break;
|
|
264
265
|
default: return;
|
|
265
266
|
}
|
|
266
|
-
e.preventDefault();
|
|
267
|
+
if (e.preventDefault(), this.disabled || !this._interaction.keyDown(t)) return;
|
|
268
|
+
if (this.disabled) {
|
|
269
|
+
this._interaction.end();
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
267
272
|
let r = 100 / (this.mode === "opacity" ? 100 : 360);
|
|
268
|
-
this.sliderHandlePosition = Math.min(100, Math.max(0, this.sliderHandlePosition + n * r)), this.value = this.mode === "opacity" ? Math.min(1, Math.max(0, this.value + n / 100)) : Math.min(360, Math.max(0, this.value + n)), this.colorController.applyColorFromState(), n !== 0 && (this.dispatchEvent(new Event("input", {
|
|
273
|
+
this.sliderHandlePosition = Math.min(100, Math.max(0, this.sliderHandlePosition + n * r)), this.value = this.mode === "opacity" ? Math.min(1, Math.max(0, this.value + n / 100)) : Math.min(360, Math.max(0, this.value + n)), this.colorController.applyColorFromState(), n !== 0 && this._interaction.commit(() => this.dispatchEvent(new Event("input", {
|
|
269
274
|
bubbles: !0,
|
|
270
275
|
composed: !0
|
|
271
|
-
})), this.dispatchEvent(new Event("change", {
|
|
276
|
+
})), () => this.dispatchEvent(new Event("change", {
|
|
272
277
|
bubbles: !0,
|
|
273
278
|
composed: !0
|
|
274
279
|
})));
|
|
275
280
|
}
|
|
281
|
+
handleKeyup(e) {
|
|
282
|
+
this._interaction.keyUp(e.key);
|
|
283
|
+
}
|
|
276
284
|
handleInput(e) {
|
|
277
285
|
let { valueAsNumber: t } = e.target;
|
|
278
286
|
this.value = t, this.sliderHandlePosition = 100 * (this.mode === "opacity" ? this.value : this.value / 360), this.colorController.applyColorFromState();
|
|
@@ -293,24 +301,50 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
293
301
|
this.focused = !0;
|
|
294
302
|
}
|
|
295
303
|
handleBlur() {
|
|
296
|
-
this._pointerDown
|
|
304
|
+
this._interaction.endKeyboard(), !this._pointerDown && (this.altered = 0, this.focused = !1);
|
|
297
305
|
}
|
|
298
306
|
handlePointerdown(e) {
|
|
299
|
-
e.button
|
|
307
|
+
if (e.button !== 0 || !this._interaction.start(r(e))) {
|
|
308
|
+
e.preventDefault();
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
if (this.disabled) {
|
|
312
|
+
this._interaction.end(), e.preventDefault();
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
this._pointerDown = !0, this.colorController.savePreviousColor(), this.boundingClientRect = this.getBoundingClientRect();
|
|
316
|
+
let t = e.target;
|
|
317
|
+
try {
|
|
318
|
+
t.setPointerCapture(e.pointerId), this._capturedPointer = {
|
|
319
|
+
target: t,
|
|
320
|
+
pointerId: e.pointerId
|
|
321
|
+
};
|
|
322
|
+
} catch {}
|
|
323
|
+
e.pointerType === "mouse" && (this.focused = !0);
|
|
300
324
|
}
|
|
301
325
|
handlePointermove(e) {
|
|
302
|
-
this.sliderHandlePosition = this.calculateHandlePosition(e), this.value = (this.mode === "opacity" ? 1 : 360) * (this.sliderHandlePosition / 100), this.colorController.applyColorFromState(), this.dispatchEvent(new Event("input", {
|
|
326
|
+
this._pointerDown && (this.sliderHandlePosition = this.calculateHandlePosition(e), this.value = (this.mode === "opacity" ? 1 : 360) * (this.sliderHandlePosition / 100), this.colorController.applyColorFromState(), this.dispatchEvent(new Event("input", {
|
|
303
327
|
bubbles: !0,
|
|
304
328
|
composed: !0,
|
|
305
329
|
cancelable: !0
|
|
306
|
-
}));
|
|
330
|
+
})));
|
|
307
331
|
}
|
|
308
332
|
handlePointerup(e) {
|
|
309
|
-
this._pointerDown
|
|
333
|
+
this._pointerDown && this._finishPointer(() => {
|
|
334
|
+
this.focus(), e.pointerType === "mouse" && (this.focused = !1);
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
_finishPointer(e) {
|
|
338
|
+
this._pointerDown = !1;
|
|
339
|
+
let t = this._capturedPointer;
|
|
340
|
+
this._capturedPointer = void 0, t?.target.hasPointerCapture(t.pointerId) && t.target.releasePointerCapture(t.pointerId), this.dispatchEvent(new Event("change", {
|
|
310
341
|
bubbles: !0,
|
|
311
342
|
composed: !0,
|
|
312
343
|
cancelable: !0
|
|
313
|
-
})) || this.colorController.restorePreviousColor(),
|
|
344
|
+
})) || this.colorController.restorePreviousColor(), e?.(), this._interaction.end();
|
|
345
|
+
}
|
|
346
|
+
endInteraction() {
|
|
347
|
+
this._pointerDown ? this._finishPointer() : this._interaction.end();
|
|
314
348
|
}
|
|
315
349
|
calculateHandlePosition(e) {
|
|
316
350
|
/* c8 ignore next 3 */
|
|
@@ -326,10 +360,10 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
326
360
|
}
|
|
327
361
|
get getColorSliderStyle() {
|
|
328
362
|
let e = this.vertical ? "top" : "right";
|
|
329
|
-
return this.mode === "opacity" ? { background: `linear-gradient(to ${e}, transparent, ${new
|
|
363
|
+
return this.mode === "opacity" ? { background: `linear-gradient(to ${e}, transparent, ${new f(this.colorController.color).setAlpha(1).toRgbString()})` } : { background: `linear-gradient(to ${e}, var(--luzmo-color-slider-gradient, var(--luzmo-color-slider-gradient-fallback)))` };
|
|
330
364
|
}
|
|
331
365
|
render() {
|
|
332
|
-
return
|
|
366
|
+
return o`
|
|
333
367
|
<div
|
|
334
368
|
class="opacity-checkerboard checkerboard"
|
|
335
369
|
role="presentation"
|
|
@@ -338,26 +372,27 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
338
372
|
<div
|
|
339
373
|
class="gradient"
|
|
340
374
|
role="presentation"
|
|
341
|
-
style=${
|
|
375
|
+
style=${d(this.getColorSliderStyle)}
|
|
342
376
|
>
|
|
343
377
|
<slot name="gradient"></slot>
|
|
344
378
|
</div>
|
|
345
379
|
</div>
|
|
346
380
|
<luzmo-color-handle
|
|
347
|
-
tabindex=${
|
|
381
|
+
tabindex=${u(this.focused ? void 0 : "0")}
|
|
348
382
|
@focus=${this.forwardFocus}
|
|
349
383
|
?focused=${this.focused}
|
|
350
384
|
class="handle"
|
|
351
385
|
color=${this.mode === "opacity" ? this.color : "hsl(" + this.value + ", 100%, 50%)"}
|
|
352
386
|
?disabled=${this.disabled}
|
|
353
387
|
style=${this.handlePositionStyles}
|
|
354
|
-
${
|
|
388
|
+
${a({
|
|
355
389
|
start: ["pointerdown", this.handlePointerdown],
|
|
356
390
|
streamInside: ["pointermove", this.handlePointermove],
|
|
357
391
|
end: [[
|
|
358
392
|
"pointerup",
|
|
359
393
|
"pointercancel",
|
|
360
|
-
"pointerleave"
|
|
394
|
+
"pointerleave",
|
|
395
|
+
"lostpointercapture"
|
|
361
396
|
], this.handlePointerup]
|
|
362
397
|
})}
|
|
363
398
|
></luzmo-color-handle>
|
|
@@ -366,8 +401,8 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
366
401
|
class="slider"
|
|
367
402
|
min="0"
|
|
368
403
|
max=${this.mode === "opacity" ? "100" : "360"}
|
|
369
|
-
aria-orientation=${
|
|
370
|
-
orient=${
|
|
404
|
+
aria-orientation=${u(this.vertical ? "vertical" : void 0)}
|
|
405
|
+
orient=${u(this.vertical ? "vertical" : void 0)}
|
|
371
406
|
step=${this.step}
|
|
372
407
|
aria-label=${this.label}
|
|
373
408
|
.value=${String(this.mode === "opacity" ? this.value * 100 : this.value)}
|
|
@@ -381,37 +416,41 @@ var d = /^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/, f = /(^hs[v|l]a?\s?\()\
|
|
|
381
416
|
@input=${this.handleInput}
|
|
382
417
|
@change=${this.handleChange}
|
|
383
418
|
@keydown=${this.handleKeydown}
|
|
419
|
+
@keyup=${this.handleKeyup}
|
|
384
420
|
/>
|
|
385
421
|
`;
|
|
386
422
|
}
|
|
423
|
+
disconnectedCallback() {
|
|
424
|
+
this._pointerDown = !1, this._capturedPointer = void 0, super.disconnectedCallback();
|
|
425
|
+
}
|
|
387
426
|
firstUpdated(e) {
|
|
388
427
|
super.firstUpdated(e), this.boundingClientRect = this.getBoundingClientRect(), this.addEventListener("focus", this.handleFocus), this.addEventListener("blur", this.handleBlur);
|
|
389
428
|
}
|
|
390
429
|
updated(e) {
|
|
391
|
-
e.has("mode") && (this.handle.style.insetInlineStart = "", this.handle.style.insetBlockEnd = "", this.mode === "opacity" && (this.colorController.color = new
|
|
430
|
+
e.has("mode") && (this.handle.style.insetInlineStart = "", this.handle.style.insetBlockEnd = "", this.mode === "opacity" && (this.colorController.color = new f(this.colorController.color).toRgbString(), this.handle.style.insetInlineStart = 100 * this.colorController.opacity + "%"));
|
|
392
431
|
}
|
|
393
432
|
};
|
|
394
433
|
// src/components/color-slider/index.ts
|
|
395
|
-
e([
|
|
434
|
+
e([c({
|
|
396
435
|
type: String,
|
|
397
436
|
reflect: !0
|
|
398
|
-
})],
|
|
437
|
+
})], y.prototype, "dir", void 0), e([c({
|
|
399
438
|
type: String,
|
|
400
439
|
reflect: !0
|
|
401
|
-
})],
|
|
440
|
+
})], y.prototype, "mode", void 0), e([c({
|
|
402
441
|
type: Boolean,
|
|
403
442
|
reflect: !0
|
|
404
|
-
})],
|
|
443
|
+
})], y.prototype, "disabled", void 0), e([c({
|
|
405
444
|
type: Boolean,
|
|
406
445
|
reflect: !0
|
|
407
|
-
})],
|
|
446
|
+
})], y.prototype, "focused", void 0), e([l(".handle")], y.prototype, "handle", void 0), e([c({ type: String })], y.prototype, "label", void 0), e([c({
|
|
408
447
|
type: Boolean,
|
|
409
448
|
reflect: !0
|
|
410
|
-
})],
|
|
449
|
+
})], y.prototype, "vertical", void 0), e([c({ type: Number })], y.prototype, "value", null), e([c({
|
|
411
450
|
type: Number,
|
|
412
451
|
reflect: !0
|
|
413
|
-
})],
|
|
452
|
+
})], y.prototype, "sliderHandlePosition", void 0), e([c({ type: String })], y.prototype, "color", null), e([c({ type: Number })], y.prototype, "step", void 0), e([c({
|
|
414
453
|
type: Boolean,
|
|
415
454
|
attribute: "is-ltr"
|
|
416
|
-
})],
|
|
417
|
-
export {
|
|
455
|
+
})], y.prototype, "isLTR", void 0), e([l("input")], y.prototype, "input", void 0), customElements.get("luzmo-color-slider") || customElements.define("luzmo-color-slider", y);
|
|
456
|
+
export { y as t };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*! * Lucero - The design system for Luzmo.
|
|
2
|
+
*
|
|
3
|
+
* Copyright © 2026 Luzmo
|
|
4
|
+
* All rights reserved.
|
|
5
|
+
* Lucero (“Luzmo Design System”) must be used according to the Luzmo Terms of Service.
|
|
6
|
+
* This license allows users with a current active Luzmo account to use Lucero.
|
|
7
|
+
* This license terminates automatically if a user no longer has an active Luzmo account.
|
|
8
|
+
* Please view the Luzmo Terms of Service at: https://www.luzmo.com/information-pages/terms-of-use.
|
|
9
|
+
*
|
|
10
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
11
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
12
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
13
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
14
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
15
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
16
|
+
* SOFTWARE.
|
|
17
|
+
* */
|
|
18
|
+
require("./tokens.cjs");const e=require("./decorate-SO02l0A6.cjs"),t=require("./focusable-BIHTrJd6.cjs"),n=require("./language-resolution-B7D3hQ6_.cjs");require("./color-handle-hJ7Kblh4.cjs");const r=require("./interaction-BjXWVy_C.cjs"),i=require("./streaming-listener-BzGZUHkj.cjs");let a=require("lit"),o=require("lit/decorators.js"),s=require("lit/directives/if-defined.js"),c=require("lit/directives/style-map.js"),l=require("@ctrl/tinycolor");var u=/^hs[v|l]a?\s?\((\d{1,3}\.?\d*?),?\s?(\d{1,3})/,d=/(^hs[v|l]a?\s?\()\d{1,3}\.?\d*?(,?\s?)\d{1,3}/,f=/(^hs[v|l]a?\()\d{1,3}/,p=(e,t)=>t?e.toHexString():e.toHex(),m=class{setColorProcess(e,t,n,r){this.maintains===`hue`?this.setColorMaintainHue(e,t,n,r):this.maintains===`saturation`&&this.setColorMaintainSaturation(e,t,n,r)}setColorMaintainHue(e,t,n,r){let{h:i,s:a,v:o,a:s}=this._color.toHsv(),c;if(r&&n.startsWith(`hs`)){let e=u.exec(t);if(e!==null){let[,t]=e;c=Number(t)}}else if(!r&&n.startsWith(`hs`)){let t=e.originalInput;c=Object.values(t)[0]}this.hue=c||i,this.opacity=s??1,this.applyColorToState({h:i,s:a,v:o,a:s})}setColorMaintainSaturation(e,t,n,r){let{a:i}=this._color.toHsv();if(r&&n.startsWith(`hs`)){let e=u.exec(t);if(e!==null){let[,t,n]=e;this.hue=Number(t),this.saturation=Number(n)}}else if(!r&&n.startsWith(`hs`)){let t=e.originalInput,n=Object.values(t);this.hue=n[0],this.saturation=n[1]}else{let{h:t}=e.toHsv();this.hue=t}this.opacity=i??1,this.applyColorToState(e.toHsv())}constructor(e,{applyColorToState:t,extractColorFromState:n,maintains:r}){this.maintains=`hue`,this._hue=0,this._opacity=1,this.getColorProcesses={rgb:(e,t)=>t?e.toRgbString():e.toRgb(),prgb:(e,t)=>t?e.toPercentageRgbString():e.toPercentageRgb(),hex8:(e,t)=>t?e.toHex8String():e.toHex8(),name:e=>e.toName()||e.toRgbString(),hsl:(e,t)=>{if(this.maintains===`hue`){if(t)return e.toHslString().replace(f,`$1${this.hue}`);let{s:n,l:r,a:i}=e.toHsl();return{h:this.hue,s:n,l:r,a:i}}if(t)return e.toHslString().replace(d,`$1${this.hue}$2${this.saturation}`);let{s:n,l:r,a:i}=e.toHsl();return{h:this.hue,s:n,l:r,a:i}},hsv:(e,t)=>{if(this.maintains===`hue`){if(t)return e.toHsvString().replace(f,`$1${this.hue}`);let{s:n,v:r,a:i}=e.toHsv();return{h:this.hue,s:n,v:r,a:i}}if(t)return e.toHsvString().replace(d,`$1${this.hue}$2${this.saturation}`);let{s:n,v:r,a:i}=e.toHsv();return{h:this.hue,s:n,v:r,a:i}},hex:p,hex3:p,hex4:p,hex6:p},this._color=new l.TinyColor({h:0,s:1,v:1}),this._previousColor=new l.TinyColor({h:0,s:1,v:1}),this._format={format:``,isString:!1},this.host=e,this.applyColorToState=t,this.extractColorFromState=n,this.maintains=r||this.maintains}applyColorFromState(){this._color=new l.TinyColor(this.extractColorFromState(this))}get hue(){return this._hue}set hue(e){let t=Math.min(360,Math.max(0,e));if(t===this.hue)return;let n=this.hue,{s:r,v:i,a}=this._color.toHsv();this._color=new l.TinyColor({h:t,s:r,v:i,a}),this._hue=t,this.host.requestUpdate(`hue`,n)}get opacity(){return this._opacity}set opacity(e){let t=Math.min(1,Math.max(0,e));if(t===this.opacity)return;let n=this.opacity,{h:r,s:i,v:a}=this._color.toHsv();this._color=new l.TinyColor({h:r,s:i,v:a,a:t}),this._opacity=t,this.host.requestUpdate(`opacity`,n)}get value(){return this.color}get color(){return this.getColorProcesses[this._format.format||`hex`](this._color,this._format.isString)}set color(e){if(e===this.color)return;let t=this._color;this._color=new l.TinyColor(e);let n=this._color.format,r=typeof e==`string`||e instanceof String;n.startsWith(`hex`)&&(r=e.startsWith(`#`)),this._format={format:n,isString:r},this.setColorProcess(this._color,e,n,r),this.host.requestUpdate(`color`,t)}getColor(e){return this._color[{hsl:`toHsl`}[e]]()}setColor(e){this._color=e;let t=typeof this._color.originalInput==`string`||this._color.originalInput instanceof String;this.setColorProcess(this._color,e,this._color.format,t)}getHslString(){return this._color.toHslString()}savePreviousColor(){this._previousColor=this._color.clone()}restorePreviousColor(){this.setColor(this._previousColor)}},h=`.opacity-checkerboard{background:repeating-conic-gradient(var(--luzmo-color-loupe-checkerboard-light,#fff) 0 25%, var(--luzmo-color-loupe-checkerboard-dark,#e6e6e6) 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);block-size:100%;inline-size:100%;position:absolute}:host{--luzmo-color-slider-gradient-fallback:red 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, red 100%;touch-action:none}:host([vertical]) .handle{inset-block-start:unset;inset-block-end:0}:host([vertical]) .slider{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;inset: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{border-radius:var(--luzmo-color-slider-border-rounding,var(--luzmo-border-radius-s));block-size:100%;inline-size:100%}:host([dir=rtl]) .gradient{transform:scaleX(-1)}.gradient:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){transform:scaleX(-1)}.slider{opacity:0;z-index:0;pointer-events:none;block-size:100%;inline-size:100%;margin:0;position:absolute;inset-block-start:0;inset-inline-start:0}`,g=class extends t.t{constructor(...e){super(...e),this.disabled=!1,this.focused=!1,this.label=`hue`,this.vertical=!1,this.languageResolver=new n.t(this),this.colorController=new m(this,{applyColorToState:()=>{if(this.mode===`opacity`){let e=new l.TinyColor(this.colorController.color);this.sliderHandlePosition=100*e.getAlpha()}else this.sliderHandlePosition=100*(this.colorController.hue/360)},extractColorFromState:e=>this.mode===`opacity`?{...e.getColor(`hsl`),a:this.value}:{...e.getColor(`hsl`),h:this.value},maintains:`saturation`}),this._interaction=new r.t(this,{value:()=>this.value}),this.sliderHandlePosition=0,this.step=1,this.isLTR=!0,this._altered=0,this._pointerDown=!1}static get styles(){return[(0,a.unsafeCSS)(h)]}get value(){return this.mode===`opacity`?this.colorController.opacity:this.colorController.hue}set value(e){this.mode===`opacity`?this.colorController.opacity=e:this.colorController.hue=e}get color(){return this.colorController.color}set color(e){this.colorController.color=e}get altered(){return this._altered}set altered(e){this._altered=e,this.step=Math.max(1,this.altered*10)}get focusElement(){return this.input}handleKeydown(e){let{key:t}=e;this.focused=!0,this.altered=[e.shiftKey,e.ctrlKey,e.altKey].filter(e=>!!e).length;let n=0;switch(t){case`ArrowUp`:n=this.step;break;case`ArrowDown`:n=-this.step;break;case`ArrowLeft`:n=this.step*(this.isLTR?-1:1);break;case`ArrowRight`:n=this.step*(this.isLTR?1:-1);break;default:return}if(e.preventDefault(),this.disabled||!this._interaction.keyDown(t))return;if(this.disabled){this._interaction.end();return}let r=100/(this.mode===`opacity`?100:360);this.sliderHandlePosition=Math.min(100,Math.max(0,this.sliderHandlePosition+n*r)),this.value=this.mode===`opacity`?Math.min(1,Math.max(0,this.value+n/100)):Math.min(360,Math.max(0,this.value+n)),this.colorController.applyColorFromState(),n!==0&&this._interaction.commit(()=>this.dispatchEvent(new Event(`input`,{bubbles:!0,composed:!0})),()=>this.dispatchEvent(new Event(`change`,{bubbles:!0,composed:!0})))}handleKeyup(e){this._interaction.keyUp(e.key)}handleInput(e){let{valueAsNumber:t}=e.target;this.value=t,this.sliderHandlePosition=100*(this.mode===`opacity`?this.value:this.value/360),this.colorController.applyColorFromState()}handleChange(e){this.handleInput(e),this.dispatchEvent(new Event(`change`,{bubbles:!0,composed:!0}))}focus(e={}){super.focus(e),this.forwardFocus()}forwardFocus(){this.input.focus()}handleFocus(){this.focused=!0}handleBlur(){this._interaction.endKeyboard(),!this._pointerDown&&(this.altered=0,this.focused=!1)}handlePointerdown(e){if(e.button!==0||!this._interaction.start(r.n(e))){e.preventDefault();return}if(this.disabled){this._interaction.end(),e.preventDefault();return}this._pointerDown=!0,this.colorController.savePreviousColor(),this.boundingClientRect=this.getBoundingClientRect();let t=e.target;try{t.setPointerCapture(e.pointerId),this._capturedPointer={target:t,pointerId:e.pointerId}}catch{}e.pointerType===`mouse`&&(this.focused=!0)}handlePointermove(e){this._pointerDown&&(this.sliderHandlePosition=this.calculateHandlePosition(e),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(e){this._pointerDown&&this._finishPointer(()=>{this.focus(),e.pointerType===`mouse`&&(this.focused=!1)})}_finishPointer(e){this._pointerDown=!1;let t=this._capturedPointer;this._capturedPointer=void 0,t?.target.hasPointerCapture(t.pointerId)&&t.target.releasePointerCapture(t.pointerId),this.dispatchEvent(new Event(`change`,{bubbles:!0,composed:!0,cancelable:!0}))||this.colorController.restorePreviousColor(),e?.(),this._interaction.end()}endInteraction(){this._pointerDown?this._finishPointer():this._interaction.end()}calculateHandlePosition(e){if(!this.boundingClientRect)return this.sliderHandlePosition;let t=this.boundingClientRect,n=this.vertical?t.top:t.left,r=this.vertical?e.clientY:e.clientX,i=this.vertical?t.height:t.width,a=Math.max(0,Math.min(1,(r-n)/i));return this.vertical||!this.isLTR?100-100*a:100*a}handleGradientPointerdown(e){e.button===0&&(e.stopPropagation(),e.preventDefault(),this.handle.dispatchEvent(new PointerEvent(`pointerdown`,e)),this.handlePointermove(e))}get handlePositionStyles(){return`${this.vertical?`inset-block-end`:`inset-inline-start`}: ${this.sliderHandlePosition}%`}get getColorSliderStyle(){let e=this.vertical?`top`:`right`;return this.mode===`opacity`?{background:`linear-gradient(to ${e}, transparent, ${new l.TinyColor(this.colorController.color).setAlpha(1).toRgbString()})`}:{background:`linear-gradient(to ${e}, var(--luzmo-color-slider-gradient, var(--luzmo-color-slider-gradient-fallback)))`}}render(){return a.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=${(0,c.styleMap)(this.getColorSliderStyle)}
|
|
28
|
+
>
|
|
29
|
+
<slot name="gradient"></slot>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
<luzmo-color-handle
|
|
33
|
+
tabindex=${(0,s.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
|
+
${i.t({start:[`pointerdown`,this.handlePointerdown],streamInside:[`pointermove`,this.handlePointermove],end:[[`pointerup`,`pointercancel`,`pointerleave`,`lostpointercapture`],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=${(0,s.ifDefined)(this.vertical?`vertical`:void 0)}
|
|
48
|
+
orient=${(0,s.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
|
+
@keyup=${this.handleKeyup}
|
|
57
|
+
/>
|
|
58
|
+
`}disconnectedCallback(){this._pointerDown=!1,this._capturedPointer=void 0,super.disconnectedCallback()}firstUpdated(e){super.firstUpdated(e),this.boundingClientRect=this.getBoundingClientRect(),this.addEventListener(`focus`,this.handleFocus),this.addEventListener(`blur`,this.handleBlur)}updated(e){e.has(`mode`)&&(this.handle.style.insetInlineStart=``,this.handle.style.insetBlockEnd=``,this.mode===`opacity`&&(this.colorController.color=new l.TinyColor(this.colorController.color).toRgbString(),this.handle.style.insetInlineStart=100*this.colorController.opacity+`%`))}};e.t([(0,o.property)({type:String,reflect:!0})],g.prototype,`dir`,void 0),e.t([(0,o.property)({type:String,reflect:!0})],g.prototype,`mode`,void 0),e.t([(0,o.property)({type:Boolean,reflect:!0})],g.prototype,`disabled`,void 0),e.t([(0,o.property)({type:Boolean,reflect:!0})],g.prototype,`focused`,void 0),e.t([(0,o.query)(`.handle`)],g.prototype,`handle`,void 0),e.t([(0,o.property)({type:String})],g.prototype,`label`,void 0),e.t([(0,o.property)({type:Boolean,reflect:!0})],g.prototype,`vertical`,void 0),e.t([(0,o.property)({type:Number})],g.prototype,`value`,null),e.t([(0,o.property)({type:Number,reflect:!0})],g.prototype,`sliderHandlePosition`,void 0),e.t([(0,o.property)({type:String})],g.prototype,`color`,null),e.t([(0,o.property)({type:Number})],g.prototype,`step`,void 0),e.t([(0,o.property)({type:Boolean,attribute:`is-ltr`})],g.prototype,`isLTR`,void 0),e.t([(0,o.query)(`input`)],g.prototype,`input`,void 0),customElements.get(`luzmo-color-slider`)||customElements.define(`luzmo-color-slider`,g),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return g}});
|