@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
|
@@ -7,6 +7,11 @@ import { ColorTypes } from '../../utils/reactive-controllers/color-controller';
|
|
|
7
7
|
* @slot gradient - a custom gradient visually outlining the available color values
|
|
8
8
|
* @fires input - The value of the Color Area has changed.
|
|
9
9
|
* @fires change - An alteration to the value of the Color Area has been committed by the user.
|
|
10
|
+
* @fires {CustomEvent<InteractionEventDetail>} luzmo-interaction-start - A
|
|
11
|
+
* pointer drag or held-key interaction starts, before its first value change.
|
|
12
|
+
* @fires {CustomEvent<InteractionEventDetail>} luzmo-interaction-end - The
|
|
13
|
+
* interaction ends after its last `input`/`change`, even when nothing changed.
|
|
14
|
+
* A cancelled pointer commits and ends the same way.
|
|
10
15
|
*/
|
|
11
16
|
export declare class LuzmoColorArea extends LuzmoElement {
|
|
12
17
|
static get styles(): CSSResultArray;
|
|
@@ -47,6 +52,7 @@ export declare class LuzmoColorArea extends LuzmoElement {
|
|
|
47
52
|
* @property {string} options.manageAs - Specifies the color model to manage, in this case 'hsv'.
|
|
48
53
|
*/
|
|
49
54
|
private colorController;
|
|
55
|
+
private readonly _interaction;
|
|
50
56
|
get hue(): number;
|
|
51
57
|
set hue(value: number);
|
|
52
58
|
get value(): ColorTypes;
|
|
@@ -74,9 +80,18 @@ export declare class LuzmoColorArea extends LuzmoElement {
|
|
|
74
80
|
private handleChange;
|
|
75
81
|
private boundingClientRect;
|
|
76
82
|
_pointerDown: boolean;
|
|
83
|
+
private _capturedPointer?;
|
|
77
84
|
private handlePointerdown;
|
|
78
85
|
private handlePointermove;
|
|
79
86
|
private handlePointerup;
|
|
87
|
+
/** Commits the pointer interaction in progress, then ends it. */
|
|
88
|
+
private _finishPointer;
|
|
89
|
+
/**
|
|
90
|
+
* Finishes the pointer drag or held-key interaction in progress as if the
|
|
91
|
+
* user released it, so a host can settle the value before it removes or
|
|
92
|
+
* hides the area. Does nothing when no interaction is in progress.
|
|
93
|
+
*/
|
|
94
|
+
endInteraction(): void;
|
|
80
95
|
/**
|
|
81
96
|
* Returns the value under the cursor
|
|
82
97
|
* @param: PointerEvent on slider
|
|
@@ -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-area-
|
|
18
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../tokens.cjs");const e=require("../color-area-CFBE-rG3.cjs");exports.LuzmoColorArea=e.t;
|
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
const e=require("./color-controller-BpdydwTO.cjs");require("./tokens.cjs");const t=require("./decorate-SO02l0A6.cjs"),n=require("./language-resolution-B7D3hQ6_.cjs"),r=require("./platform-BAjeJp2W.cjs");require("./color-handle-hJ7Kblh4.cjs");const i=require("./interaction-BjXWVy_C.cjs"),a=require("./streaming-listener-BzGZUHkj.cjs");let o=require("lit"),s=require("lit/decorators.js"),c=require("lit/directives/if-defined.js");var l=`@media (forced-colors:active){:host{--highcontrast-color-area-border-color-disabled:GrayText;--highcontrast-color-area-border-color:Canvas;--highcontrast-color-area-fill-color-disabled:Canvas}.gradient,:host([disabled]){forced-color-adjust:none}}:host{cursor:default;-webkit-user-select:none;user-select:none;min-inline-size:var(--luzmo-color-area-min-width,64px);min-block-size:var(--luzmo-color-area-min-height,64px);inline-size:var(--luzmo-color-area-width,192px);block-size:var(--luzmo-color-area-height,192px);box-sizing:border-box;border-radius:var(--luzmo-color-area-border-radius,var(--luzmo-border-radius-s));display:inline-block;position:relative;border:var(--luzmo-color-area-border-width,var(--luzmo-border-width)) solid var(--highcontrast-color-area-border-color,var(--luzmo-color-area-border-color,var(--luzmo-border-color)))!important}:host([focused]){z-index:1}:host([disabled]){pointer-events:none;background:var(--highcontrast-color-area-fill-color-disabled,var(--luzmo-color-area-disabled-background-color,var(--luzmo-dimmed-color)));border:var(--luzmo-color-area-border-width,var(--luzmo-border-width)) solid var(--highcontrast-color-area-border-color-disabled)!important}:host([disabled]) .gradient{display:none}.handle{transform:translate(calc(var(--luzmo-color-area-width,192px) - var(--luzmo-border-width)));inset-block-start:0}:host([dir=rtl]) .handle{inset-inline-end:0}.handle: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)){inset-inline-end:0}.gradient{border-radius:var(--luzmo-color-area-border-radius,var(--luzmo-border-radius-s));block-size:100%;inline-size:100%}.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}:host{touch-action:none}:host:before{pointer-events:none}.gradient{overflow:hidden}.handle{transform:translate(var(--luzmo-color-area-default-width), 0)}::slotted(*){width:100%;height:100%}:host([dir=rtl]) .gradient{transform:scaleX(-1)}.slider[orient=vertical]{appearance:slider-vertical}.slider:focus{z-index:1}.fieldset{border:0;margin:0;padding:0}`,u=class extends t.n{constructor(...t){super(...t),this.disabled=!1,this.focused=!1,this.labelX=`saturation`,this.labelY=`luminosity`,this.isLTR=!0,this.languageResolver=new n.t(this),this.colorController=new e.t(this,{manageAs:`hsv`}),this._interaction=new i.t(this,{value:()=>[this.x,this.y],isEqual:(e,t)=>e[0]===t[0]&&e[1]===t[1]}),this.activeAxis=`x`,this.step=.01,this.altered=0,this.activeKeys=new Set,this._valueChanged=!1,this._pointerDown=!1,this.resizeRafId=0,this.handleResize=e=>{let t=e.at(-1);t&&(this.resizeRafId&&cancelAnimationFrame(this.resizeRafId),this.resizeRafId=requestAnimationFrame(()=>{this.resizeRafId=0,this.boundingClientRect=t.contentRect,this.requestUpdate()}))}}static get styles(){return[(0,o.unsafeCSS)(l)]}get hue(){return this.colorController.hue}set hue(e){this.colorController.hue=e}get value(){return this.colorController.colorValue}get color(){return this.colorController.colorValue}set color(e){this.colorController.color=e}get x(){return this.colorController.color.hsv.s/100}set x(e){if(e===this.x)return;let t=this.x;this.inputX?(this.inputX.value=e.toString(),this.colorController.color.set(`s`,this.inputX.valueAsNumber*100)):this.colorController.color.set(`s`,e*100),this.requestUpdate(`x`,t)}get y(){return this.colorController.color.hsv.v/100}set y(e){if(e===this.y)return;let t=this.y;this.inputY&&(this.inputY.value=e.toString(),this.colorController.color.set(`v`,this.inputY.valueAsNumber*100)),this.requestUpdate(`y`,t)}focus(e={}){super.focus(e),this.forwardFocus()}forwardFocus(){this.activeAxis===`x`?this.inputX.focus():this.inputY.focus()}handleFocus(){this.focused=!0,this._valueChanged=!1}handleBlur(){this.activeKeys.clear(),this._interaction.endKeyboard(),!this._pointerDown&&(this.altered=0,this.focused=!1,this._valueChanged=!1)}handleKeydown(e){let{code:t}=e;if(this.focused=!0,this.altered=[e.shiftKey,e.ctrlKey,e.altKey].filter(e=>!!e).length,t.search(`Arrow`)===0||t.search(`Page`)===0||t.search(`Home`)===0||t.search(`End`)===0){if(e.preventDefault(),this.disabled||!this._interaction.keyDown(t))return;if(this.disabled){this._interaction.end();return}this.activeKeys.add(t),this.handleKeypress()}}handleKeypress(){let e=0,t=0,n=Math.max(this.step,this.altered*5*this.step);this.activeKeys.forEach(r=>{switch(r){case`ArrowUp`:t=n;break;case`ArrowDown`:t=n*-1;break;case`ArrowLeft`:e=this.step*(this.isLTR?-1:1);break;case`ArrowRight`:e=this.step*(this.isLTR?1:-1);break;case`PageUp`:t=n*10;break;case`PageDown`:t=n*-10;break;case`Home`:e=n*(this.isLTR?-10:10);break;case`End`:e=n*(this.isLTR?10:-10)}}),e===0?t!==0&&(this.activeAxis=`y`,this.inputY.focus()):(this.activeAxis=`x`,this.inputX.focus()),this.x=Math.min(1,Math.max(this.x+e,0)),this.y=Math.min(1,Math.max(this.y+t,0)),this.colorController.savePreviousColor(),(e!==0||t!==0)&&(this._valueChanged=!0,this._interaction.commit(()=>this.dispatchEvent(new Event(`input`,{bubbles:!0,composed:!0})),()=>{this.dispatchEvent(new Event(`change`,{bubbles:!0,composed:!0,cancelable:!0}))||this.colorController.restorePreviousColor()}))}handleKeyup(e){e.preventDefault();let{code:t}=e;this.activeKeys.delete(t),this._interaction.keyUp(t)}handleInput(e){let{valueAsNumber:t,name:n}=e.target;this[n]=t}handleChange(e){this.handleInput(e),this.dispatchEvent(new Event(`change`,{bubbles:!0,composed:!0,cancelable:!0}))}handlePointerdown(e){if(e.button!==0||!this._interaction.start(i.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){if(!this._pointerDown)return;let[t,n]=this.calculateHandlePosition(e);this._valueChanged=!1,this.x=t,this.y=n,this.dispatchEvent(new Event(`input`,{bubbles:!0,composed:!0,cancelable:!0}))}handlePointerup(e){e.preventDefault(),this._pointerDown&&this._finishPointer(()=>{this.inputX.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);let n=this.dispatchEvent(new Event(`change`,{bubbles:!0,composed:!0,cancelable:!0}));e?.(),n||this.colorController.restorePreviousColor(),this._interaction.end()}endInteraction(){this._pointerDown?this._finishPointer():(this.activeKeys.clear(),this._interaction.end())}calculateHandlePosition(e){if(!this.boundingClientRect)return[this.x,this.y];let t=this.boundingClientRect,n=t.left,r=t.top,i=e.clientX,a=e.clientY,o=t.width,s=t.height,c=Math.max(0,Math.min(1,(i-n)/o)),l=Math.max(0,Math.min(1,(a-r)/s));return[this.isLTR?c:1-c,1-l]}handleAreaPointerdown(e){e.button===0&&(e.stopPropagation(),e.preventDefault(),this.handle.dispatchEvent(new PointerEvent(`pointerdown`,e)),this.handlePointermove(e))}render(){let{width:e=0,height:t=0}=this.boundingClientRect||{},n=r.t()||r.a(),i=`Color Picker`,s=(0,c.ifDefined)(n?void 0:`2d slider`),l=this.labelX,u=this.labelY,d=new Intl.NumberFormat(this.languageResolver.language,{style:`percent`,unitDisplay:`narrow`}).format(this.x),f=new Intl.NumberFormat(this.languageResolver.language,{style:`percent`,unitDisplay:`narrow`}).format(this.y),p={background:`linear-gradient(to top, black 0%, hsla(${this.hue}, 100%, 0.01%, 0) 100%),linear-gradient(to right, white 0%, hsla(${this.hue}, 100%, 0.01%, 0) 100%), hsl(${this.hue}, 100%, 50%);`};return o.html`
|
|
19
|
+
<div
|
|
20
|
+
@pointerdown=${this.handleAreaPointerdown}
|
|
21
|
+
class="gradient"
|
|
22
|
+
style="background: ${p.background}"
|
|
23
|
+
>
|
|
24
|
+
<slot name="gradient"></slot>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<luzmo-color-handle
|
|
28
|
+
tabindex=${(0,c.ifDefined)(this.focused?void 0:`0`)}
|
|
29
|
+
@focus=${this.forwardFocus}
|
|
30
|
+
?focused=${this.focused}
|
|
31
|
+
class="handle"
|
|
32
|
+
color=${this.colorController.getHslString()}
|
|
33
|
+
?disabled=${this.disabled}
|
|
34
|
+
style=${`transform: translate(${(this.isLTR?this.x:1-this.x)*e}px, ${t-this.y*t}px);`}
|
|
35
|
+
${a.t({start:[`pointerdown`,this.handlePointerdown],streamInside:[`pointermove`,this.handlePointermove],end:[[`pointerup`,`pointercancel`,`pointerleave`,`lostpointercapture`],this.handlePointerup]})}
|
|
36
|
+
></luzmo-color-handle>
|
|
37
|
+
|
|
38
|
+
<fieldset
|
|
39
|
+
class="fieldset"
|
|
40
|
+
aria-label=${(0,c.ifDefined)(n?i:void 0)}
|
|
41
|
+
>
|
|
42
|
+
<div role="presentation">
|
|
43
|
+
<input
|
|
44
|
+
type="range"
|
|
45
|
+
class="slider"
|
|
46
|
+
name="x"
|
|
47
|
+
aria-label=${n?l:`${l} ${i}`}
|
|
48
|
+
aria-roledescription=${s}
|
|
49
|
+
aria-orientation="horizontal"
|
|
50
|
+
aria-valuetext=${n?d:`${d}, ${l}${this._valueChanged?``:`, ${f}, ${u}`}`}
|
|
51
|
+
min="0"
|
|
52
|
+
max="1"
|
|
53
|
+
step=${this.step}
|
|
54
|
+
tabindex="-1"
|
|
55
|
+
.value=${String(this.x)}
|
|
56
|
+
@input=${this.handleInput}
|
|
57
|
+
@change=${this.handleChange}
|
|
58
|
+
/>
|
|
59
|
+
</div>
|
|
60
|
+
<div role="presentation">
|
|
61
|
+
<input
|
|
62
|
+
type="range"
|
|
63
|
+
class="slider"
|
|
64
|
+
name="y"
|
|
65
|
+
aria-label=${n?u:`${u} ${i}`}
|
|
66
|
+
aria-roledescription=${s}
|
|
67
|
+
aria-orientation="vertical"
|
|
68
|
+
aria-valuetext=${n?f:`${f}, ${u}${this._valueChanged?``:`, ${d}, ${l}`}`}
|
|
69
|
+
orient="vertical"
|
|
70
|
+
min="0"
|
|
71
|
+
max="1"
|
|
72
|
+
step=${this.step}
|
|
73
|
+
tabindex="-1"
|
|
74
|
+
.value=${String(this.y)}
|
|
75
|
+
@input=${this.handleInput}
|
|
76
|
+
@change=${this.handleChange}
|
|
77
|
+
/>
|
|
78
|
+
</div>
|
|
79
|
+
</fieldset>
|
|
80
|
+
`}firstUpdated(e){super.firstUpdated(e),this.boundingClientRect=this.getBoundingClientRect(),this.addEventListener(`focus`,this.handleFocus),this.addEventListener(`blur`,this.handleBlur),this.addEventListener(`keyup`,this.handleKeyup),this.addEventListener(`keydown`,this.handleKeydown)}updated(e){if(super.updated(e),this.x!==this.inputX.valueAsNumber&&this.colorController.color.set(`s`,this.inputX.valueAsNumber*100),this.y!==this.inputY.valueAsNumber&&this.colorController.color.set(`v`,(1-this.inputY.valueAsNumber)*100),e.has(`focused`)&&this.focused){let e=this.inputX.parentElement,t=this.inputY.parentElement;if(!e.shadowRoot&&!t.shadowRoot){e.attachShadow({mode:`open`}),t.attachShadow({mode:`open`});let n=`<div tabindex="-1"><slot></slot></div>`;e.shadowRoot.innerHTML=n,t.shadowRoot.innerHTML=n}}}connectedCallback(){super.connectedCallback(),!this.observer&&window.ResizeObserver&&(this.observer=new window.ResizeObserver(this.handleResize)),this.observer?.observe(this)}disconnectedCallback(){this._pointerDown=!1,this._capturedPointer=void 0,this.activeKeys.clear(),this.resizeRafId&&=(cancelAnimationFrame(this.resizeRafId),0),this.observer?.disconnect(),this.observer=void 0,super.disconnectedCallback()}};t.t([(0,s.property)({type:String,reflect:!0})],u.prototype,`dir`,void 0),t.t([(0,s.property)({type:Boolean,reflect:!0})],u.prototype,`disabled`,void 0),t.t([(0,s.property)({type:Boolean,reflect:!0})],u.prototype,`focused`,void 0),t.t([(0,s.property)({type:String,attribute:`label-x`})],u.prototype,`labelX`,void 0),t.t([(0,s.property)({type:String,attribute:`label-y`})],u.prototype,`labelY`,void 0),t.t([(0,s.property)({type:Boolean,attribute:`is-ltr`})],u.prototype,`isLTR`,void 0),t.t([(0,s.query)(`.handle`)],u.prototype,`handle`,void 0),t.t([(0,s.property)({type:Number})],u.prototype,`hue`,null),t.t([(0,s.property)({type:String})],u.prototype,`value`,null),t.t([(0,s.property)({type:String})],u.prototype,`color`,null),t.t([(0,s.property)({attribute:!1})],u.prototype,`activeAxis`,void 0),t.t([(0,s.property)({type:Number})],u.prototype,`x`,null),t.t([(0,s.property)({type:Number})],u.prototype,`y`,null),t.t([(0,s.property)({type:Number})],u.prototype,`step`,void 0),t.t([(0,s.query)(`[name="x"]`)],u.prototype,`inputX`,void 0),t.t([(0,s.query)(`[name="y"]`)],u.prototype,`inputY`,void 0),customElements.get(`luzmo-color-area`)||customElements.define(`luzmo-color-area`,u),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return u}});
|
|
@@ -19,16 +19,20 @@ import "./tokens.js";
|
|
|
19
19
|
import { n as e, t } from "./decorate-CpKsOs9z.js";
|
|
20
20
|
import { t as n } from "./language-resolution-7rc0khIK.js";
|
|
21
21
|
import { a as r, t as i } from "./platform-CDW-WdXN.js";
|
|
22
|
-
import "./color-handle-
|
|
23
|
-
import {
|
|
24
|
-
import { t as
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
22
|
+
import "./color-handle-Ya92rdpA.js";
|
|
23
|
+
import { n as a, t as o } from "./interaction-BpCLJ1OV.js";
|
|
24
|
+
import { t as s } from "./color-controller-CauSxC_r.js";
|
|
25
|
+
import { t as c } from "./streaming-listener-DyS3scAi.js";
|
|
26
|
+
import { html as l, unsafeCSS as u } from "lit";
|
|
27
|
+
import { property as d, query as f } from "lit/decorators.js";
|
|
28
|
+
import { ifDefined as p } from "lit/directives/if-defined.js";
|
|
28
29
|
// src/components/color-area/color-area.module.scss?inline
|
|
29
|
-
var
|
|
30
|
+
var m = "@media (forced-colors:active){:host{--highcontrast-color-area-border-color-disabled:GrayText;--highcontrast-color-area-border-color:Canvas;--highcontrast-color-area-fill-color-disabled:Canvas}.gradient,:host([disabled]){forced-color-adjust:none}}:host{cursor:default;-webkit-user-select:none;user-select:none;min-inline-size:var(--luzmo-color-area-min-width,64px);min-block-size:var(--luzmo-color-area-min-height,64px);inline-size:var(--luzmo-color-area-width,192px);block-size:var(--luzmo-color-area-height,192px);box-sizing:border-box;border-radius:var(--luzmo-color-area-border-radius,var(--luzmo-border-radius-s));display:inline-block;position:relative;border:var(--luzmo-color-area-border-width,var(--luzmo-border-width)) solid var(--highcontrast-color-area-border-color,var(--luzmo-color-area-border-color,var(--luzmo-border-color)))!important}:host([focused]){z-index:1}:host([disabled]){pointer-events:none;background:var(--highcontrast-color-area-fill-color-disabled,var(--luzmo-color-area-disabled-background-color,var(--luzmo-dimmed-color)));border:var(--luzmo-color-area-border-width,var(--luzmo-border-width)) solid var(--highcontrast-color-area-border-color-disabled)!important}:host([disabled]) .gradient{display:none}.handle{transform:translate(calc(var(--luzmo-color-area-width,192px) - var(--luzmo-border-width)));inset-block-start:0}:host([dir=rtl]) .handle{inset-inline-end:0}.handle: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)){inset-inline-end:0}.gradient{border-radius:var(--luzmo-color-area-border-radius,var(--luzmo-border-radius-s));block-size:100%;inline-size:100%}.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}:host{touch-action:none}:host:before{pointer-events:none}.gradient{overflow:hidden}.handle{transform:translate(var(--luzmo-color-area-default-width), 0)}::slotted(*){width:100%;height:100%}:host([dir=rtl]) .gradient{transform:scaleX(-1)}.slider[orient=vertical]{appearance:slider-vertical}.slider:focus{z-index:1}.fieldset{border:0;margin:0;padding:0}", h = class extends e {
|
|
30
31
|
constructor(...e) {
|
|
31
|
-
super(...e), this.disabled = !1, this.focused = !1, this.labelX = "saturation", this.labelY = "luminosity", this.isLTR = !0, this.languageResolver = new n(this), this.colorController = new
|
|
32
|
+
super(...e), this.disabled = !1, this.focused = !1, this.labelX = "saturation", this.labelY = "luminosity", this.isLTR = !0, this.languageResolver = new n(this), this.colorController = new s(this, { manageAs: "hsv" }), this._interaction = new o(this, {
|
|
33
|
+
value: () => [this.x, this.y],
|
|
34
|
+
isEqual: (e, t) => e[0] === t[0] && e[1] === t[1]
|
|
35
|
+
}), this.activeAxis = "x", this.step = .01, this.altered = 0, this.activeKeys = /* @__PURE__ */ new Set(), this._valueChanged = !1, this._pointerDown = !1, this.resizeRafId = 0, this.handleResize = (e) => {
|
|
32
36
|
let t = e.at(-1);
|
|
33
37
|
t && (this.resizeRafId && cancelAnimationFrame(this.resizeRafId), this.resizeRafId = requestAnimationFrame(() => {
|
|
34
38
|
this.resizeRafId = 0, this.boundingClientRect = t.contentRect, this.requestUpdate();
|
|
@@ -36,7 +40,7 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
36
40
|
};
|
|
37
41
|
}
|
|
38
42
|
static get styles() {
|
|
39
|
-
return [
|
|
43
|
+
return [u(m)];
|
|
40
44
|
}
|
|
41
45
|
get hue() {
|
|
42
46
|
return this.colorController.hue;
|
|
@@ -79,15 +83,22 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
79
83
|
this.focused = !0, this._valueChanged = !1;
|
|
80
84
|
}
|
|
81
85
|
handleBlur() {
|
|
82
|
-
this._pointerDown
|
|
86
|
+
this.activeKeys.clear(), this._interaction.endKeyboard(), !this._pointerDown && (this.altered = 0, this.focused = !1, this._valueChanged = !1);
|
|
83
87
|
}
|
|
84
88
|
handleKeydown(e) {
|
|
85
89
|
let { code: t } = e;
|
|
86
|
-
this.focused = !0, this.altered = [
|
|
90
|
+
if (this.focused = !0, this.altered = [
|
|
87
91
|
e.shiftKey,
|
|
88
92
|
e.ctrlKey,
|
|
89
93
|
e.altKey
|
|
90
|
-
].filter((e) => !!e).length,
|
|
94
|
+
].filter((e) => !!e).length, t.search("Arrow") === 0 || t.search("Page") === 0 || t.search("Home") === 0 || t.search("End") === 0) {
|
|
95
|
+
if (e.preventDefault(), this.disabled || !this._interaction.keyDown(t)) return;
|
|
96
|
+
if (this.disabled) {
|
|
97
|
+
this._interaction.end();
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
this.activeKeys.add(t), this.handleKeypress();
|
|
101
|
+
}
|
|
91
102
|
}
|
|
92
103
|
handleKeypress() {
|
|
93
104
|
let e = 0, t = 0, n = Math.max(this.step, this.altered * 5 * this.step);
|
|
@@ -116,19 +127,21 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
116
127
|
break;
|
|
117
128
|
case "End": e = n * (this.isLTR ? 10 : -10);
|
|
118
129
|
}
|
|
119
|
-
}), e === 0 ? t !== 0 && (this.activeAxis = "y", this.inputY.focus()) : (this.activeAxis = "x", this.inputX.focus()), this.x = Math.min(1, Math.max(this.x + e, 0)), this.y = Math.min(1, Math.max(this.y + t, 0)), this.colorController.savePreviousColor(), (e !== 0 || t !== 0) && (this._valueChanged = !0, this.dispatchEvent(new Event("input", {
|
|
130
|
+
}), e === 0 ? t !== 0 && (this.activeAxis = "y", this.inputY.focus()) : (this.activeAxis = "x", this.inputX.focus()), this.x = Math.min(1, Math.max(this.x + e, 0)), this.y = Math.min(1, Math.max(this.y + t, 0)), this.colorController.savePreviousColor(), (e !== 0 || t !== 0) && (this._valueChanged = !0, this._interaction.commit(() => this.dispatchEvent(new Event("input", {
|
|
120
131
|
bubbles: !0,
|
|
121
132
|
composed: !0
|
|
122
|
-
})),
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
133
|
+
})), () => {
|
|
134
|
+
this.dispatchEvent(new Event("change", {
|
|
135
|
+
bubbles: !0,
|
|
136
|
+
composed: !0,
|
|
137
|
+
cancelable: !0
|
|
138
|
+
})) || this.colorController.restorePreviousColor();
|
|
139
|
+
}));
|
|
127
140
|
}
|
|
128
141
|
handleKeyup(e) {
|
|
129
142
|
e.preventDefault();
|
|
130
143
|
let { code: t } = e;
|
|
131
|
-
this.activeKeys.delete(t);
|
|
144
|
+
this.activeKeys.delete(t), this._interaction.keyUp(t);
|
|
132
145
|
}
|
|
133
146
|
handleInput(e) {
|
|
134
147
|
let { valueAsNumber: t, name: n } = e.target;
|
|
@@ -142,9 +155,26 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
142
155
|
}));
|
|
143
156
|
}
|
|
144
157
|
handlePointerdown(e) {
|
|
145
|
-
e.button
|
|
158
|
+
if (e.button !== 0 || !this._interaction.start(a(e))) {
|
|
159
|
+
e.preventDefault();
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (this.disabled) {
|
|
163
|
+
this._interaction.end(), e.preventDefault();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
this._pointerDown = !0, this.colorController.savePreviousColor(), this.boundingClientRect = this.getBoundingClientRect();
|
|
167
|
+
let t = e.target;
|
|
168
|
+
try {
|
|
169
|
+
t.setPointerCapture(e.pointerId), this._capturedPointer = {
|
|
170
|
+
target: t,
|
|
171
|
+
pointerId: e.pointerId
|
|
172
|
+
};
|
|
173
|
+
} catch {}
|
|
174
|
+
e.pointerType === "mouse" && (this.focused = !0);
|
|
146
175
|
}
|
|
147
176
|
handlePointermove(e) {
|
|
177
|
+
if (!this._pointerDown) return;
|
|
148
178
|
let [t, n] = this.calculateHandlePosition(e);
|
|
149
179
|
this._valueChanged = !1, this.x = t, this.y = n, this.dispatchEvent(new Event("input", {
|
|
150
180
|
bubbles: !0,
|
|
@@ -153,13 +183,23 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
153
183
|
}));
|
|
154
184
|
}
|
|
155
185
|
handlePointerup(e) {
|
|
156
|
-
e.preventDefault(), this._pointerDown
|
|
157
|
-
|
|
186
|
+
e.preventDefault(), this._pointerDown && this._finishPointer(() => {
|
|
187
|
+
this.inputX.focus(), e.pointerType === "mouse" && (this.focused = !1);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
_finishPointer(e) {
|
|
191
|
+
this._pointerDown = !1;
|
|
192
|
+
let t = this._capturedPointer;
|
|
193
|
+
this._capturedPointer = void 0, t?.target.hasPointerCapture(t.pointerId) && t.target.releasePointerCapture(t.pointerId);
|
|
194
|
+
let n = this.dispatchEvent(new Event("change", {
|
|
158
195
|
bubbles: !0,
|
|
159
196
|
composed: !0,
|
|
160
197
|
cancelable: !0
|
|
161
198
|
}));
|
|
162
|
-
|
|
199
|
+
e?.(), n || this.colorController.restorePreviousColor(), this._interaction.end();
|
|
200
|
+
}
|
|
201
|
+
endInteraction() {
|
|
202
|
+
this._pointerDown ? this._finishPointer() : (this.activeKeys.clear(), this._interaction.end());
|
|
163
203
|
}
|
|
164
204
|
calculateHandlePosition(e) {
|
|
165
205
|
/* c8 ignore next 3 */
|
|
@@ -171,14 +211,14 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
171
211
|
e.button === 0 && (e.stopPropagation(), e.preventDefault(), this.handle.dispatchEvent(new PointerEvent("pointerdown", e)), this.handlePointermove(e));
|
|
172
212
|
}
|
|
173
213
|
render() {
|
|
174
|
-
let { width: e = 0, height: t = 0 } = this.boundingClientRect || {}, n = i() || r(), a = "Color Picker",
|
|
214
|
+
let { width: e = 0, height: t = 0 } = this.boundingClientRect || {}, n = i() || r(), a = "Color Picker", o = p(n ? void 0 : "2d slider"), s = this.labelX, u = this.labelY, d = new Intl.NumberFormat(this.languageResolver.language, {
|
|
175
215
|
style: "percent",
|
|
176
216
|
unitDisplay: "narrow"
|
|
177
|
-
}).format(this.x),
|
|
217
|
+
}).format(this.x), f = new Intl.NumberFormat(this.languageResolver.language, {
|
|
178
218
|
style: "percent",
|
|
179
219
|
unitDisplay: "narrow"
|
|
180
220
|
}).format(this.y), m = { background: `linear-gradient(to top, black 0%, hsla(${this.hue}, 100%, 0.01%, 0) 100%),linear-gradient(to right, white 0%, hsla(${this.hue}, 100%, 0.01%, 0) 100%), hsl(${this.hue}, 100%, 50%);` };
|
|
181
|
-
return
|
|
221
|
+
return l`
|
|
182
222
|
<div
|
|
183
223
|
@pointerdown=${this.handleAreaPointerdown}
|
|
184
224
|
class="gradient"
|
|
@@ -188,37 +228,38 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
188
228
|
</div>
|
|
189
229
|
|
|
190
230
|
<luzmo-color-handle
|
|
191
|
-
tabindex=${
|
|
231
|
+
tabindex=${p(this.focused ? void 0 : "0")}
|
|
192
232
|
@focus=${this.forwardFocus}
|
|
193
233
|
?focused=${this.focused}
|
|
194
234
|
class="handle"
|
|
195
235
|
color=${this.colorController.getHslString()}
|
|
196
236
|
?disabled=${this.disabled}
|
|
197
237
|
style=${`transform: translate(${(this.isLTR ? this.x : 1 - this.x) * e}px, ${t - this.y * t}px);`}
|
|
198
|
-
${
|
|
238
|
+
${c({
|
|
199
239
|
start: ["pointerdown", this.handlePointerdown],
|
|
200
240
|
streamInside: ["pointermove", this.handlePointermove],
|
|
201
241
|
end: [[
|
|
202
242
|
"pointerup",
|
|
203
243
|
"pointercancel",
|
|
204
|
-
"pointerleave"
|
|
244
|
+
"pointerleave",
|
|
245
|
+
"lostpointercapture"
|
|
205
246
|
], this.handlePointerup]
|
|
206
247
|
})}
|
|
207
248
|
></luzmo-color-handle>
|
|
208
249
|
|
|
209
250
|
<fieldset
|
|
210
251
|
class="fieldset"
|
|
211
|
-
aria-label=${
|
|
252
|
+
aria-label=${p(n ? a : void 0)}
|
|
212
253
|
>
|
|
213
254
|
<div role="presentation">
|
|
214
255
|
<input
|
|
215
256
|
type="range"
|
|
216
257
|
class="slider"
|
|
217
258
|
name="x"
|
|
218
|
-
aria-label=${n ?
|
|
219
|
-
aria-roledescription=${
|
|
259
|
+
aria-label=${n ? s : `${s} ${a}`}
|
|
260
|
+
aria-roledescription=${o}
|
|
220
261
|
aria-orientation="horizontal"
|
|
221
|
-
aria-valuetext=${n ?
|
|
262
|
+
aria-valuetext=${n ? d : `${d}, ${s}${this._valueChanged ? "" : `, ${f}, ${u}`}`}
|
|
222
263
|
min="0"
|
|
223
264
|
max="1"
|
|
224
265
|
step=${this.step}
|
|
@@ -234,9 +275,9 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
234
275
|
class="slider"
|
|
235
276
|
name="y"
|
|
236
277
|
aria-label=${n ? u : `${u} ${a}`}
|
|
237
|
-
aria-roledescription=${
|
|
278
|
+
aria-roledescription=${o}
|
|
238
279
|
aria-orientation="vertical"
|
|
239
|
-
aria-valuetext=${n ?
|
|
280
|
+
aria-valuetext=${n ? f : `${f}, ${u}${this._valueChanged ? "" : `, ${d}, ${s}`}`}
|
|
240
281
|
orient="vertical"
|
|
241
282
|
min="0"
|
|
242
283
|
max="1"
|
|
@@ -267,27 +308,27 @@ var f = "@media (forced-colors:active){:host{--highcontrast-color-area-border-co
|
|
|
267
308
|
super.connectedCallback(), !this.observer && window.ResizeObserver && (this.observer = new window.ResizeObserver(this.handleResize)), this.observer?.observe(this);
|
|
268
309
|
}
|
|
269
310
|
disconnectedCallback() {
|
|
270
|
-
this.resizeRafId &&= (cancelAnimationFrame(this.resizeRafId), 0), this.observer?.disconnect(), this.observer = void 0, super.disconnectedCallback();
|
|
311
|
+
this._pointerDown = !1, this._capturedPointer = void 0, this.activeKeys.clear(), this.resizeRafId &&= (cancelAnimationFrame(this.resizeRafId), 0), this.observer?.disconnect(), this.observer = void 0, super.disconnectedCallback();
|
|
271
312
|
}
|
|
272
313
|
};
|
|
273
314
|
// src/components/color-area/index.ts
|
|
274
|
-
t([
|
|
315
|
+
t([d({
|
|
275
316
|
type: String,
|
|
276
317
|
reflect: !0
|
|
277
|
-
})],
|
|
318
|
+
})], h.prototype, "dir", void 0), t([d({
|
|
278
319
|
type: Boolean,
|
|
279
320
|
reflect: !0
|
|
280
|
-
})],
|
|
321
|
+
})], h.prototype, "disabled", void 0), t([d({
|
|
281
322
|
type: Boolean,
|
|
282
323
|
reflect: !0
|
|
283
|
-
})],
|
|
324
|
+
})], h.prototype, "focused", void 0), t([d({
|
|
284
325
|
type: String,
|
|
285
326
|
attribute: "label-x"
|
|
286
|
-
})],
|
|
327
|
+
})], h.prototype, "labelX", void 0), t([d({
|
|
287
328
|
type: String,
|
|
288
329
|
attribute: "label-y"
|
|
289
|
-
})],
|
|
330
|
+
})], h.prototype, "labelY", void 0), t([d({
|
|
290
331
|
type: Boolean,
|
|
291
332
|
attribute: "is-ltr"
|
|
292
|
-
})],
|
|
293
|
-
export {
|
|
333
|
+
})], h.prototype, "isLTR", void 0), t([f(".handle")], h.prototype, "handle", void 0), t([d({ type: Number })], h.prototype, "hue", null), t([d({ type: String })], h.prototype, "value", null), t([d({ type: String })], h.prototype, "color", null), t([d({ attribute: !1 })], h.prototype, "activeAxis", void 0), t([d({ type: Number })], h.prototype, "x", null), t([d({ type: Number })], h.prototype, "y", null), t([d({ type: Number })], h.prototype, "step", void 0), t([f("[name=\"x\"]")], h.prototype, "inputX", void 0), t([f("[name=\"y\"]")], h.prototype, "inputY", void 0), customElements.get("luzmo-color-area") || customElements.define("luzmo-color-area", h);
|
|
334
|
+
export { h as t };
|
|
@@ -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-handle-
|
|
18
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../tokens.cjs");const e=require("../color-handle-hJ7Kblh4.cjs");exports.LuzmoColorHandle=e.t;
|
|
@@ -29,10 +29,13 @@ var a = ":host{touch-action:none;transition:inline-size var(--luzmo-color-handle
|
|
|
29
29
|
this.styles = r(a);
|
|
30
30
|
}
|
|
31
31
|
handlePointerdown(e) {
|
|
32
|
-
e.pointerType === "touch" && (this.open = !0)
|
|
32
|
+
e.pointerType === "touch" && (this.open = !0);
|
|
33
|
+
try {
|
|
34
|
+
this.setPointerCapture(e.pointerId);
|
|
35
|
+
} catch {}
|
|
33
36
|
}
|
|
34
37
|
handlePointerup(e) {
|
|
35
|
-
this.open = !1, this.releasePointerCapture(e.pointerId);
|
|
38
|
+
this.open = !1, this.hasPointerCapture(e.pointerId) && this.releasePointerCapture(e.pointerId);
|
|
36
39
|
}
|
|
37
40
|
render() {
|
|
38
41
|
return n`
|
|
@@ -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");require("./color-loupe-2X1bCYU9.cjs");let t=require("lit"),n=require("lit/decorators.js");var r=`:host{touch-action:none;transition:inline-size var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out), block-size var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out), border-width var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out), margin-inline var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out), margin-block var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out);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);background-position:50%}:host(:focus){outline:none}:host{z-index:1;box-sizing:border-box;inline-size:var(--luzmo-color-handle-size,16px);block-size:var(--luzmo-color-handle-size,16px);margin-inline:calc(var(--luzmo-color-handle-size,16px) / 2 * -1);margin-block:calc(var(--luzmo-color-handle-size,16px) / 2 * -1);box-shadow:0 0 0 var(--luzmo-color-handle-outer-border-width,1px) var(--luzmo-color-handle-outer-border-color,#0000006b);transition:all var(--luzmo-color-handle-animation-duration,0) var(--luzmo-color-handle-animation-easing,ease-in-out);border-width:var(--luzmo-color-handle-border-width,2px)!important;border-color:var(--luzmo-color-handle-border-color,#fff)!important;border-style:solid!important}:host,:host:after{border-radius:100%;display:block;position:absolute}:host:after{content:"";inset-inline:calc(50% - var(--luzmo-color-handle-hitarea-size,24px) / 2);inset-block:calc(50% - var(--luzmo-color-handle-hitarea-size,24px) / 2);inline-size:var(--luzmo-color-handle-hitarea-size,24px);block-size:var(--luzmo-color-handle-hitarea-size,24px);border-radius:var(--luzmo-color-handle-hitarea-border-radius,100%)}:host([focused]),:host(:focus-visible){inline-size:var(--luzmo-color-handle-focused-size,32px);block-size:var(--luzmo-color-handle-focused-size,32px);margin-inline:calc(var(--luzmo-color-handle-size,16px) * -1);margin-block:calc(var(--luzmo-color-handle-size,16px) * -1);outline:none}:host([disabled]){pointer-events:none;background:var(--highcontrast-color-handle-fill-color-disabled,var(--luzmo-color-handle-fill-color-disabled,var(--luzmo-font-color-disabled)));box-shadow:none;border-color:var(--highcontrast-color-handle-border-color-disabled,var(--luzmo-color-handle-border-color-disabled,var(--luzmo-font-color-disabled)))!important}:host([disabled]) .inner{display:none}.inner{block-size:100%;inline-size:100%;box-shadow:inset 0 0 0 var(--luzmo-color-handle-inner-border-width,var(--luzmo-border-width)) var(--luzmo-color-handle-inner-border-color,#0000006b);background-color:var(--luzmo-picked-color);border-radius:100%}@media (forced-colors:active){:host{forced-color-adjust:none}:host([disabled]){--highcontrast-color-handle-border-color-disabled:GrayText;--highcontrast-color-handle-fill-color-disabled:Canvas}}`,i=class extends e.n{constructor(...e){super(...e),this.disabled=!1,this.focused=!1,this.open=!1,this.color=`rgba(255, 0, 0, 0.5)`}static{this.styles=(0,t.unsafeCSS)(r)}handlePointerdown(e){e.pointerType===`touch`&&(this.open=!0)
|
|
18
|
+
require("./tokens.cjs");const e=require("./decorate-SO02l0A6.cjs");require("./color-loupe-2X1bCYU9.cjs");let t=require("lit"),n=require("lit/decorators.js");var r=`:host{touch-action:none;transition:inline-size var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out), block-size var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out), border-width var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out), margin-inline var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out), margin-block var(--luzmo-color-handle-animation-duration,.13s) var(--luzmo-color-handle-animation-easing,ease-in-out);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);background-position:50%}:host(:focus){outline:none}:host{z-index:1;box-sizing:border-box;inline-size:var(--luzmo-color-handle-size,16px);block-size:var(--luzmo-color-handle-size,16px);margin-inline:calc(var(--luzmo-color-handle-size,16px) / 2 * -1);margin-block:calc(var(--luzmo-color-handle-size,16px) / 2 * -1);box-shadow:0 0 0 var(--luzmo-color-handle-outer-border-width,1px) var(--luzmo-color-handle-outer-border-color,#0000006b);transition:all var(--luzmo-color-handle-animation-duration,0) var(--luzmo-color-handle-animation-easing,ease-in-out);border-width:var(--luzmo-color-handle-border-width,2px)!important;border-color:var(--luzmo-color-handle-border-color,#fff)!important;border-style:solid!important}:host,:host:after{border-radius:100%;display:block;position:absolute}:host:after{content:"";inset-inline:calc(50% - var(--luzmo-color-handle-hitarea-size,24px) / 2);inset-block:calc(50% - var(--luzmo-color-handle-hitarea-size,24px) / 2);inline-size:var(--luzmo-color-handle-hitarea-size,24px);block-size:var(--luzmo-color-handle-hitarea-size,24px);border-radius:var(--luzmo-color-handle-hitarea-border-radius,100%)}:host([focused]),:host(:focus-visible){inline-size:var(--luzmo-color-handle-focused-size,32px);block-size:var(--luzmo-color-handle-focused-size,32px);margin-inline:calc(var(--luzmo-color-handle-size,16px) * -1);margin-block:calc(var(--luzmo-color-handle-size,16px) * -1);outline:none}:host([disabled]){pointer-events:none;background:var(--highcontrast-color-handle-fill-color-disabled,var(--luzmo-color-handle-fill-color-disabled,var(--luzmo-font-color-disabled)));box-shadow:none;border-color:var(--highcontrast-color-handle-border-color-disabled,var(--luzmo-color-handle-border-color-disabled,var(--luzmo-font-color-disabled)))!important}:host([disabled]) .inner{display:none}.inner{block-size:100%;inline-size:100%;box-shadow:inset 0 0 0 var(--luzmo-color-handle-inner-border-width,var(--luzmo-border-width)) var(--luzmo-color-handle-inner-border-color,#0000006b);background-color:var(--luzmo-picked-color);border-radius:100%}@media (forced-colors:active){:host{forced-color-adjust:none}:host([disabled]){--highcontrast-color-handle-border-color-disabled:GrayText;--highcontrast-color-handle-fill-color-disabled:Canvas}}`,i=class extends e.n{constructor(...e){super(...e),this.disabled=!1,this.focused=!1,this.open=!1,this.color=`rgba(255, 0, 0, 0.5)`}static{this.styles=(0,t.unsafeCSS)(r)}handlePointerdown(e){e.pointerType===`touch`&&(this.open=!0);try{this.setPointerCapture(e.pointerId)}catch{}}handlePointerup(e){this.open=!1,this.hasPointerCapture(e.pointerId)&&this.releasePointerCapture(e.pointerId)}render(){return t.html`
|
|
19
19
|
<div class="inner" style="background-color: ${this.color}"></div>
|
|
20
20
|
<luzmo-color-loupe
|
|
21
21
|
color=${this.color}
|
|
@@ -16,6 +16,12 @@ declare const LuzmoColorMenu_base: typeof Focusable & {
|
|
|
16
16
|
/**
|
|
17
17
|
* @element luzmo-color-menu
|
|
18
18
|
* @fires change - An alteration to the value of the Color Menu has been committed by the user.
|
|
19
|
+
* @fires {CustomEvent<InteractionEventDetail>} luzmo-interaction-start - Bubbles
|
|
20
|
+
* up from the color area or a color slider when a pointer drag or held-key
|
|
21
|
+
* interaction starts. The menu forwards it unchanged and adds none of its own.
|
|
22
|
+
* @fires {CustomEvent<InteractionEventDetail>} luzmo-interaction-end - Bubbles
|
|
23
|
+
* up from the same control when that interaction ends. Swatch picks and typed
|
|
24
|
+
* values are single `change` events without an interaction.
|
|
19
25
|
*/
|
|
20
26
|
export declare class LuzmoColorMenu extends LuzmoColorMenu_base {
|
|
21
27
|
static styles: import("lit").CSSResult;
|
|
@@ -43,6 +49,11 @@ export declare class LuzmoColorMenu extends LuzmoColorMenu_base {
|
|
|
43
49
|
private _format;
|
|
44
50
|
setColor(event: CustomEvent): void;
|
|
45
51
|
private handleAreaChange;
|
|
52
|
+
/**
|
|
53
|
+
* Finishes a drag or held-key interaction in progress on the color area or a
|
|
54
|
+
* color slider as if the user released it. Does nothing otherwise.
|
|
55
|
+
*/
|
|
56
|
+
endInteraction(): void;
|
|
46
57
|
get focusElement(): HTMLElement;
|
|
47
58
|
private handleHueSliderChange;
|
|
48
59
|
private handleOpacitySliderChange;
|
|
@@ -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-menu-
|
|
18
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("../tokens.cjs");const e=require("../color-menu-COhe5VUB.cjs");exports.LuzmoColorMenu=e.t;
|
|
@@ -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"),n=require("./focusable-BIHTrJd6.cjs");require("./popover-CFzz83f8.cjs"),require("./color-handle-BE0Z1gTU.cjs"),require("./color-area-D1fRozE0.cjs"),require("./color-field-CN8shDl_.cjs"),require("./color-slider-9Ck28Qdk.cjs"),require("./divider-fWGUxO6A.cjs"),require("./swatch-DiNMN-SZ.cjs");let r=require("lit"),i=require("lit/decorators.js"),a=require("@luzmo/icons"),o=require("@ctrl/tinycolor");var s=`:host{width:var(--luzmo-color-menu-width,var(--color-menu-width))}.hue-opacity-text-swatches-container{gap:var(--luzmo-color-menu-color-controls-vertical-gap,var(--color-menu-color-controls-vertical-gap));padding:var(--luzmo-color-menu-hue-opacity-text-swatches-vertical-padding,var(--color-menu-hue-opacity-text-swatches-vertical-padding)) var(--luzmo-color-menu-hue-opacity-text-swatches-horizontal-padding,var(--color-menu-hue-opacity-text-swatches-horizontal-padding));flex-direction:column;display:flex}.swatch-sliders-container{gap:var(--luzmo-color-menu-swatch-to-sliders-space,var(--color-menu-swatch-to-sliders-space));display:flex}.swatch-example-container{align-items:center;display:flex}.field-container{align-items:center;gap:var(--luzmo-color-menu-format-field-to-format-space,var(--color-menu-format-field-to-format-space));display:flex}.format-container{text-transform:uppercase;height:var(--luzmo-color-menu-format-height,var(--color-menu-format-height));cursor:pointer;font-size:var(--luzmo-color-menu-format-font-size,var(--color-menu-format-font-size));color:var(--luzmo-color-menu-format-font-color,var(--color-menu-format-font-color));align-items:center;gap:var(--luzmo-color-menu-format-name-to-icon,var(--color-menu-format-name-to-icon-space));padding:0 var(--luzmo-color-menu-format-horizontal-padding,var(--color-menu-format-horizontal-padding));background:0 0;border:none;outline:none;display:flex;position:relative}.format-container:hover{color:var(--luzmo-color-menu-format-font-color-hover,var(--color-menu-format-font-color-hover))}.format-container:focus-visible{outline:none}.format-container:focus-visible:after{content:"";box-sizing:border-box;border:var(--luzmo-color-menu-format-indicator-width,var(--luzmo-indicator-width)) solid var(--luzmo-color-menu-format-indicator-color,var(--luzmo-indicator-color));border-radius:var(--luzmo-color-menu-format-label-indicator-border-radius,var(--luzmo-border-radius-s));width:100%;height:100%;position:absolute;top:0;left:0}.format-container:focus-visible,.format-container:active{color:var(--luzmo-color-menu-format-font-color-down,var(--color-menu-format-font-color-down))}.format-container .format-label{-webkit-user-select:none;user-select:none}.format-container .angle-icon{height:calc(var(--color-menu-format-font-size) / 1.5);align-items:center;display:flex}.slider-container{justify-content:center;gap:var(--luzmo-color-menu-slider-gap,var(--color-menu-slider-gap));flex-direction:column;display:flex}luzmo-color-area{width:100%;height:var(--luzmo-color-menu-height,var(--color-menu-height))}luzmo-color-slider{width:100%}luzmo-divider{margin:var(--luzmo-spacing-5) à}.swatches-container{gap:var(--luzmo-color-menu-swatches-gap,var(--color-menu-swatches-gap));grid-template-columns:repeat(6,1fr);display:grid}.swatches-container luzmo-swatch{cursor:pointer}.swatches-container .swatch-choice{justify-content:center;align-items:center;display:flex}:host{--luzmo-text-field-icon-size-valid:0px;--luzmo-text-field-icon-spacing-inline-end-valid:1px;--luzmo-text-field-text-align:center;--color-menu-width:290px;--luzmo-text-field-width:220px;--luzmo-color-slider-control-track-width:8px;--color-menu-height:140px;--color-menu-hue-opacity-text-swatches-horizontal-padding:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-hue-opacity-text-swatches-vertical-padding:var(--luzmo-spacing-5);--color-menu-color-controls-vertical-gap:var(--luzmo-spacing-5);--color-menu-swatch-to-sliders-space:var(--luzmo-spacing-5);--color-menu-slider-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-format-height:var(--luzmo-component-height);--color-menu-format-font-size:var(--luzmo-font-size-s);--color-menu-format-name-to-icon-space:var(--luzmo-spacing-2);--color-menu-format-field-to-format-space:var(--luzmo-spacing-2);--color-menu-format-horizontal-padding:var(--luzmo-spacing-3);--color-menu-format-font-color:var(--luzmo-font-color);--color-menu-format-font-color-hover:var(--luzmo-font-color-hover);--color-menu-format-font-color-down:var(--luzmo-font-color-down);--color-menu-swatches-gap:var(--luzmo-spacing-4)}:host .swatches-container{--luzmo-swatch-size:22px}:host([size=s]){--color-menu-width:260px;--luzmo-text-field-width:200px;--luzmo-color-slider-control-track-width:8px;--color-menu-hue-opacity-text-swatches-horizontal-padding:var(--luzmo-spacing-5);--color-menu-hue-opacity-text-swatches-vertical-padding:var(--luzmo-spacing-4);--color-menu-color-controls-vertical-gap:var(--luzmo-spacing-4);--color-menu-swatch-to-sliders-space:var(--luzmo-spacing-4);--color-menu-slider-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-format-height:var(--luzmo-component-height-s);--color-menu-format-font-size:var(--luzmo-font-size-xs);--color-menu-format-name-to-icon-space:var(--luzmo-spacing-2);--color-menu-format-field-to-format-space:var(--luzmo-spacing-2);--color-menu-format-horizontal-padding:var(--luzmo-spacing-2);--color-menu-swatches-gap:var(--luzmo-spacing-3)}:host([size=s]) .swatches-container{--luzmo-swatch-size:20px}:host([size=l]){--color-menu-width:350px;--luzmo-text-field-width:240px;--luzmo-color-slider-control-track-width:16px;--color-menu-hue-opacity-text-swatches-horizontal-padding:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-2));--color-menu-hue-opacity-text-swatches-vertical-padding:var(--luzmo-spacing-5);--color-menu-color-controls-vertical-gap:var(--luzmo-spacing-5);--color-menu-swatch-to-sliders-space:var(--luzmo-spacing-5);--color-menu-slider-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-2));--color-menu-format-height:var(--luzmo-component-height-l);--color-menu-format-font-size:var(--luzmo-font-size);--color-menu-format-name-to-icon-space:var(--luzmo-spacing-3);--color-menu-format-field-to-format-space:var(--luzmo-spacing-2);--color-menu-format-horizontal-padding:var(--luzmo-spacing-4);--color-menu-swatches-gap:var(--luzmo-spacing-4)}:host([size=l]) .swatches-container{--luzmo-swatch-size:24px}:host([size=l]) .swatch-example-container{--luzmo-swatch-size:56px}:host([size=xl]){--color-menu-width:380px;--luzmo-text-field-width:280px;--luzmo-color-slider-control-track-width:16px;--color-menu-hue-opacity-text-swatches-horizontal-padding:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-2));--color-menu-hue-opacity-text-swatches-vertical-padding:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-color-controls-vertical-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-swatch-to-sliders-space:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-slider-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-format-height:var(--luzmo-component-height-xl);--color-menu-format-font-size:var(--luzmo-font-size-l);--color-menu-format-name-to-icon-space:var(--luzmo-spacing-3);--color-menu-format-field-to-format-space:var(--luzmo-spacing-3);--color-menu-format-horizontal-padding:var(--luzmo-spacing-4);--color-menu-swatches-gap:var(--luzmo-spacing-4)}:host([size=xl]) .swatches-container{--luzmo-swatch-size:26px}:host([size=xl]) .swatch-example-container{--luzmo-swatch-size:64px}`,c=class extends t.n(n.t){constructor(...e){super(...e),this.color=`rgb(255, 0, 0)`,this.noAlphaChannel=!1,this._alpha=1,this._rgbColor=`rgb(255, 0, 0)`,this._rgbaColor=`rgb(255, 0, 0, 1)`,this._previousColor=`rgb(255, 0, 0)`}static{this.styles=(0,r.unsafeCSS)(s)}setColor(e){let t=new o.TinyColor(e?.target?.color);this._format=t.format===`name`?`rgb`:t.format,this._rgbaColor=t.toRgbString(),this._alpha=this.noAlphaChannel?1:t.getAlpha(),this._rgbColor=t.setAlpha(1).toRgbString(),this.hueSliderElement.color=this._rgbColor,this.areaElement.color=this._rgbColor,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.swatchElement.color=this._rgbaColor,this.colorFieldElement.value=this.formatTextField(t),this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}handleAreaChange(e){e.stopPropagation(),e.preventDefault(),this._rgbColor=this.areaElement.color;let t=new o.TinyColor(this._rgbColor);this._rgbaColor=t.setAlpha(this._alpha).toRgbString(),this.colorFieldElement.value=this._rgbaColor,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.colorFieldElement.value=this.formatTextField(t),this.swatchElement.color=this._rgbaColor,this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}get focusElement(){return this.areaElement||this.colorFieldElement||this}handleHueSliderChange(e){e.stopPropagation(),e.preventDefault();let t=new o.TinyColor(this._rgbColor).toHsl();t.h=this.hueSliderElement.value;let n=new o.TinyColor(t);this._rgbColor=n.toRgbString(),this._rgbaColor=n.setAlpha(this._alpha).toRgbString(),this.areaElement.color=`hsla(${t.h}, ${t.s*100}%, ${t.l*100}%, ${t.a})`,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.colorFieldElement.value=this.formatTextField(n),this.swatchElement.color=this._rgbaColor,this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}handleOpacitySliderChange(e){e.stopPropagation(),e.preventDefault(),this._alpha=this.opacitySliderElement.sliderHandlePosition/100;let t=new o.TinyColor(this._rgbColor).setAlpha(this._alpha);this._rgbaColor=t.toRgbString(),this.colorFieldElement.value=this.formatTextField(t),this.swatchElement.color=this._rgbaColor,this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}handleFieldChange(e){if(e.stopPropagation(),e.preventDefault(),this.colorFieldElement.checkValidity()){let e=new o.TinyColor(this.colorFieldElement.value);this._format=e.format,this._rgbaColor=e.toRgbString(),this._alpha=e.getAlpha(),this._rgbColor=e.setAlpha(1).toRgbString(),this.noAlphaChannel&&(this._rgbaColor=this._rgbColor,this._alpha=1),this.hueSliderElement.color=this._rgbColor,this.areaElement.color=this._rgbColor,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.swatchElement.color=this._rgbaColor,this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}}formatTextField(e){return this._format===`hsl`?e.toHslString():this._format===`hex`?this.noAlphaChannel?e.toHexString():e.toHex8String():(this._format===`name`&&(this._format=`rgb`),e.toRgbString())}cycleFormat(){let e=[`rgb`,`hsl`,`hex`];this._format=e[(e.indexOf(this._format)+1)%e.length];let t=new o.TinyColor(this.color),n=this.formatTextField(t);this.colorFieldElement.value=n}updated(e){if(e.has(`color`)&&this.color!==this._previousColor){this._previousColor=this.color;let e=new o.TinyColor(this.color);this._alpha=e.getAlpha(),this._rgbColor=e.setAlpha(1).toRgbString(),this._rgbaColor=e.setAlpha(this._alpha).toRgbString(),this.areaElement.color=this._rgbColor,this.hueSliderElement.color=this._rgbColor,this.colorFieldElement.value=this._rgbaColor,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.swatchElement.color=this._rgbaColor,this._format=`rgb`}e.has(`noAlphaChannel`)&&!this.noAlphaChannel&&(this.opacitySliderElement.color=this._rgbaColor)}renderOpacitySlider(){return r.html`
|
|
18
|
+
require("./tokens.cjs");const e=require("./decorate-SO02l0A6.cjs"),t=require("./sized-mixin-CSajkMro.cjs"),n=require("./focusable-BIHTrJd6.cjs");require("./popover-CFzz83f8.cjs"),require("./color-handle-hJ7Kblh4.cjs"),require("./color-area-CFBE-rG3.cjs"),require("./color-field-CN8shDl_.cjs"),require("./color-slider-IYBn2DL7.cjs"),require("./divider-fWGUxO6A.cjs"),require("./swatch-DiNMN-SZ.cjs");let r=require("lit"),i=require("lit/decorators.js"),a=require("@luzmo/icons"),o=require("@ctrl/tinycolor");var s=`:host{width:var(--luzmo-color-menu-width,var(--color-menu-width))}.hue-opacity-text-swatches-container{gap:var(--luzmo-color-menu-color-controls-vertical-gap,var(--color-menu-color-controls-vertical-gap));padding:var(--luzmo-color-menu-hue-opacity-text-swatches-vertical-padding,var(--color-menu-hue-opacity-text-swatches-vertical-padding)) var(--luzmo-color-menu-hue-opacity-text-swatches-horizontal-padding,var(--color-menu-hue-opacity-text-swatches-horizontal-padding));flex-direction:column;display:flex}.swatch-sliders-container{gap:var(--luzmo-color-menu-swatch-to-sliders-space,var(--color-menu-swatch-to-sliders-space));display:flex}.swatch-example-container{align-items:center;display:flex}.field-container{align-items:center;gap:var(--luzmo-color-menu-format-field-to-format-space,var(--color-menu-format-field-to-format-space));display:flex}.format-container{text-transform:uppercase;height:var(--luzmo-color-menu-format-height,var(--color-menu-format-height));cursor:pointer;font-size:var(--luzmo-color-menu-format-font-size,var(--color-menu-format-font-size));color:var(--luzmo-color-menu-format-font-color,var(--color-menu-format-font-color));align-items:center;gap:var(--luzmo-color-menu-format-name-to-icon,var(--color-menu-format-name-to-icon-space));padding:0 var(--luzmo-color-menu-format-horizontal-padding,var(--color-menu-format-horizontal-padding));background:0 0;border:none;outline:none;display:flex;position:relative}.format-container:hover{color:var(--luzmo-color-menu-format-font-color-hover,var(--color-menu-format-font-color-hover))}.format-container:focus-visible{outline:none}.format-container:focus-visible:after{content:"";box-sizing:border-box;border:var(--luzmo-color-menu-format-indicator-width,var(--luzmo-indicator-width)) solid var(--luzmo-color-menu-format-indicator-color,var(--luzmo-indicator-color));border-radius:var(--luzmo-color-menu-format-label-indicator-border-radius,var(--luzmo-border-radius-s));width:100%;height:100%;position:absolute;top:0;left:0}.format-container:focus-visible,.format-container:active{color:var(--luzmo-color-menu-format-font-color-down,var(--color-menu-format-font-color-down))}.format-container .format-label{-webkit-user-select:none;user-select:none}.format-container .angle-icon{height:calc(var(--color-menu-format-font-size) / 1.5);align-items:center;display:flex}.slider-container{justify-content:center;gap:var(--luzmo-color-menu-slider-gap,var(--color-menu-slider-gap));flex-direction:column;display:flex}luzmo-color-area{width:100%;height:var(--luzmo-color-menu-height,var(--color-menu-height))}luzmo-color-slider{width:100%}luzmo-divider{margin:var(--luzmo-spacing-5) à}.swatches-container{gap:var(--luzmo-color-menu-swatches-gap,var(--color-menu-swatches-gap));grid-template-columns:repeat(6,1fr);display:grid}.swatches-container luzmo-swatch{cursor:pointer}.swatches-container .swatch-choice{justify-content:center;align-items:center;display:flex}:host{--luzmo-text-field-icon-size-valid:0px;--luzmo-text-field-icon-spacing-inline-end-valid:1px;--luzmo-text-field-text-align:center;--color-menu-width:290px;--luzmo-text-field-width:220px;--luzmo-color-slider-control-track-width:8px;--color-menu-height:140px;--color-menu-hue-opacity-text-swatches-horizontal-padding:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-hue-opacity-text-swatches-vertical-padding:var(--luzmo-spacing-5);--color-menu-color-controls-vertical-gap:var(--luzmo-spacing-5);--color-menu-swatch-to-sliders-space:var(--luzmo-spacing-5);--color-menu-slider-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-format-height:var(--luzmo-component-height);--color-menu-format-font-size:var(--luzmo-font-size-s);--color-menu-format-name-to-icon-space:var(--luzmo-spacing-2);--color-menu-format-field-to-format-space:var(--luzmo-spacing-2);--color-menu-format-horizontal-padding:var(--luzmo-spacing-3);--color-menu-format-font-color:var(--luzmo-font-color);--color-menu-format-font-color-hover:var(--luzmo-font-color-hover);--color-menu-format-font-color-down:var(--luzmo-font-color-down);--color-menu-swatches-gap:var(--luzmo-spacing-4)}:host .swatches-container{--luzmo-swatch-size:22px}:host([size=s]){--color-menu-width:260px;--luzmo-text-field-width:200px;--luzmo-color-slider-control-track-width:8px;--color-menu-hue-opacity-text-swatches-horizontal-padding:var(--luzmo-spacing-5);--color-menu-hue-opacity-text-swatches-vertical-padding:var(--luzmo-spacing-4);--color-menu-color-controls-vertical-gap:var(--luzmo-spacing-4);--color-menu-swatch-to-sliders-space:var(--luzmo-spacing-4);--color-menu-slider-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-format-height:var(--luzmo-component-height-s);--color-menu-format-font-size:var(--luzmo-font-size-xs);--color-menu-format-name-to-icon-space:var(--luzmo-spacing-2);--color-menu-format-field-to-format-space:var(--luzmo-spacing-2);--color-menu-format-horizontal-padding:var(--luzmo-spacing-2);--color-menu-swatches-gap:var(--luzmo-spacing-3)}:host([size=s]) .swatches-container{--luzmo-swatch-size:20px}:host([size=l]){--color-menu-width:350px;--luzmo-text-field-width:240px;--luzmo-color-slider-control-track-width:16px;--color-menu-hue-opacity-text-swatches-horizontal-padding:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-2));--color-menu-hue-opacity-text-swatches-vertical-padding:var(--luzmo-spacing-5);--color-menu-color-controls-vertical-gap:var(--luzmo-spacing-5);--color-menu-swatch-to-sliders-space:var(--luzmo-spacing-5);--color-menu-slider-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-2));--color-menu-format-height:var(--luzmo-component-height-l);--color-menu-format-font-size:var(--luzmo-font-size);--color-menu-format-name-to-icon-space:var(--luzmo-spacing-3);--color-menu-format-field-to-format-space:var(--luzmo-spacing-2);--color-menu-format-horizontal-padding:var(--luzmo-spacing-4);--color-menu-swatches-gap:var(--luzmo-spacing-4)}:host([size=l]) .swatches-container{--luzmo-swatch-size:24px}:host([size=l]) .swatch-example-container{--luzmo-swatch-size:56px}:host([size=xl]){--color-menu-width:380px;--luzmo-text-field-width:280px;--luzmo-color-slider-control-track-width:16px;--color-menu-hue-opacity-text-swatches-horizontal-padding:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-2));--color-menu-hue-opacity-text-swatches-vertical-padding:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-color-controls-vertical-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-swatch-to-sliders-space:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-slider-gap:calc(var(--luzmo-spacing-5) + var(--luzmo-spacing-1));--color-menu-format-height:var(--luzmo-component-height-xl);--color-menu-format-font-size:var(--luzmo-font-size-l);--color-menu-format-name-to-icon-space:var(--luzmo-spacing-3);--color-menu-format-field-to-format-space:var(--luzmo-spacing-3);--color-menu-format-horizontal-padding:var(--luzmo-spacing-4);--color-menu-swatches-gap:var(--luzmo-spacing-4)}:host([size=xl]) .swatches-container{--luzmo-swatch-size:26px}:host([size=xl]) .swatch-example-container{--luzmo-swatch-size:64px}`,c=class extends t.n(n.t){constructor(...e){super(...e),this.color=`rgb(255, 0, 0)`,this.noAlphaChannel=!1,this._alpha=1,this._rgbColor=`rgb(255, 0, 0)`,this._rgbaColor=`rgb(255, 0, 0, 1)`,this._previousColor=`rgb(255, 0, 0)`}static{this.styles=(0,r.unsafeCSS)(s)}setColor(e){let t=new o.TinyColor(e?.target?.color);this._format=t.format===`name`?`rgb`:t.format,this._rgbaColor=t.toRgbString(),this._alpha=this.noAlphaChannel?1:t.getAlpha(),this._rgbColor=t.setAlpha(1).toRgbString(),this.hueSliderElement.color=this._rgbColor,this.areaElement.color=this._rgbColor,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.swatchElement.color=this._rgbaColor,this.colorFieldElement.value=this.formatTextField(t),this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}handleAreaChange(e){e.stopPropagation(),e.preventDefault(),this._rgbColor=this.areaElement.color;let t=new o.TinyColor(this._rgbColor);this._rgbaColor=t.setAlpha(this._alpha).toRgbString(),this.colorFieldElement.value=this._rgbaColor,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.colorFieldElement.value=this.formatTextField(t),this.swatchElement.color=this._rgbaColor,this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}endInteraction(){this.areaElement?.endInteraction(),this.hueSliderElement?.endInteraction(),this.opacitySliderElement?.endInteraction()}get focusElement(){return this.areaElement||this.colorFieldElement||this}handleHueSliderChange(e){e.stopPropagation(),e.preventDefault();let t=new o.TinyColor(this._rgbColor).toHsl();t.h=this.hueSliderElement.value;let n=new o.TinyColor(t);this._rgbColor=n.toRgbString(),this._rgbaColor=n.setAlpha(this._alpha).toRgbString(),this.areaElement.color=`hsla(${t.h}, ${t.s*100}%, ${t.l*100}%, ${t.a})`,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.colorFieldElement.value=this.formatTextField(n),this.swatchElement.color=this._rgbaColor,this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}handleOpacitySliderChange(e){e.stopPropagation(),e.preventDefault(),this._alpha=this.opacitySliderElement.sliderHandlePosition/100;let t=new o.TinyColor(this._rgbColor).setAlpha(this._alpha);this._rgbaColor=t.toRgbString(),this.colorFieldElement.value=this.formatTextField(t),this.swatchElement.color=this._rgbaColor,this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}handleFieldChange(e){if(e.stopPropagation(),e.preventDefault(),this.colorFieldElement.checkValidity()){let e=new o.TinyColor(this.colorFieldElement.value);this._format=e.format,this._rgbaColor=e.toRgbString(),this._alpha=e.getAlpha(),this._rgbColor=e.setAlpha(1).toRgbString(),this.noAlphaChannel&&(this._rgbaColor=this._rgbColor,this._alpha=1),this.hueSliderElement.color=this._rgbColor,this.areaElement.color=this._rgbColor,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.swatchElement.color=this._rgbaColor,this._previousColor=this._rgbaColor,this.color=this._rgbaColor,this.dispatchEvent(new CustomEvent(`change`,{detail:this.color}))}}formatTextField(e){return this._format===`hsl`?e.toHslString():this._format===`hex`?this.noAlphaChannel?e.toHexString():e.toHex8String():(this._format===`name`&&(this._format=`rgb`),e.toRgbString())}cycleFormat(){let e=[`rgb`,`hsl`,`hex`];this._format=e[(e.indexOf(this._format)+1)%e.length];let t=new o.TinyColor(this.color),n=this.formatTextField(t);this.colorFieldElement.value=n}updated(e){if(e.has(`color`)&&this.color!==this._previousColor){this._previousColor=this.color;let e=new o.TinyColor(this.color);this._alpha=e.getAlpha(),this._rgbColor=e.setAlpha(1).toRgbString(),this._rgbaColor=e.setAlpha(this._alpha).toRgbString(),this.areaElement.color=this._rgbColor,this.hueSliderElement.color=this._rgbColor,this.colorFieldElement.value=this._rgbaColor,this.noAlphaChannel||(this.opacitySliderElement.color=this._rgbaColor),this.swatchElement.color=this._rgbaColor,this._format=`rgb`}e.has(`noAlphaChannel`)&&!this.noAlphaChannel&&(this.opacitySliderElement.color=this._rgbaColor)}renderOpacitySlider(){return r.html`
|
|
19
19
|
<luzmo-color-slider
|
|
20
20
|
id="luzmo-opacity-slider"
|
|
21
21
|
label="Opacity"
|
|
@@ -20,10 +20,10 @@ import { t as e } from "./decorate-CpKsOs9z.js";
|
|
|
20
20
|
import { n as t } from "./sized-mixin-BmxIAuoH.js";
|
|
21
21
|
import { t as n } from "./focusable-xjv79E40.js";
|
|
22
22
|
import "./popover-CWrRLzOL.js";
|
|
23
|
-
import "./color-handle-
|
|
24
|
-
import "./color-area-
|
|
23
|
+
import "./color-handle-Ya92rdpA.js";
|
|
24
|
+
import "./color-area-GGa8KJyd.js";
|
|
25
25
|
import "./color-field-CVyDNZ4b.js";
|
|
26
|
-
import "./color-slider-
|
|
26
|
+
import "./color-slider-DNd_ZrD6.js";
|
|
27
27
|
import "./divider-Bt0NIqfu.js";
|
|
28
28
|
import "./swatch-BBVsuSAV.js";
|
|
29
29
|
import { html as r, unsafeCSS as i } from "lit";
|
|
@@ -47,6 +47,9 @@ var f = ":host{width:var(--luzmo-color-menu-width,var(--color-menu-width))}.hue-
|
|
|
47
47
|
let t = new d(this._rgbColor);
|
|
48
48
|
this._rgbaColor = t.setAlpha(this._alpha).toRgbString(), this.colorFieldElement.value = this._rgbaColor, this.noAlphaChannel || (this.opacitySliderElement.color = this._rgbaColor), this.colorFieldElement.value = this.formatTextField(t), this.swatchElement.color = this._rgbaColor, this._previousColor = this._rgbaColor, this.color = this._rgbaColor, this.dispatchEvent(new CustomEvent("change", { detail: this.color }));
|
|
49
49
|
}
|
|
50
|
+
endInteraction() {
|
|
51
|
+
this.areaElement?.endInteraction(), this.hueSliderElement?.endInteraction(), this.opacitySliderElement?.endInteraction();
|
|
52
|
+
}
|
|
50
53
|
get focusElement() {
|
|
51
54
|
return this.areaElement || this.colorFieldElement || this;
|
|
52
55
|
}
|