@zag-js/color-picker 0.51.2 → 0.53.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/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -12
- package/src/color-picker.machine.ts +4 -1
package/dist/index.d.mts
CHANGED
|
@@ -9,7 +9,7 @@ import { StateMachine } from '@zag-js/core';
|
|
|
9
9
|
import { PositioningOptions } from '@zag-js/popper';
|
|
10
10
|
export { PositioningOptions } from '@zag-js/popper';
|
|
11
11
|
|
|
12
|
-
declare const anatomy: _zag_js_anatomy.Anatomy<"area" | "label" | "
|
|
12
|
+
declare const anatomy: _zag_js_anatomy.Anatomy<"area" | "label" | "root" | "content" | "control" | "trigger" | "positioner" | "areaThumb" | "areaBackground" | "channelSlider" | "channelSliderTrack" | "channelSliderThumb" | "channelInput" | "transparencyGrid" | "swatchGroup" | "swatchTrigger" | "swatchIndicator" | "swatch" | "eyeDropperTrigger" | "formatTrigger" | "formatSelect">;
|
|
13
13
|
|
|
14
14
|
type ExtendedColorChannel = ColorChannel | "hex" | "css";
|
|
15
15
|
interface EyeDropper {
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { StateMachine } from '@zag-js/core';
|
|
|
9
9
|
import { PositioningOptions } from '@zag-js/popper';
|
|
10
10
|
export { PositioningOptions } from '@zag-js/popper';
|
|
11
11
|
|
|
12
|
-
declare const anatomy: _zag_js_anatomy.Anatomy<"area" | "label" | "
|
|
12
|
+
declare const anatomy: _zag_js_anatomy.Anatomy<"area" | "label" | "root" | "content" | "control" | "trigger" | "positioner" | "areaThumb" | "areaBackground" | "channelSlider" | "channelSliderTrack" | "channelSliderThumb" | "channelInput" | "transparencyGrid" | "swatchGroup" | "swatchTrigger" | "swatchIndicator" | "swatch" | "eyeDropperTrigger" | "formatTrigger" | "formatSelect">;
|
|
13
13
|
|
|
14
14
|
type ExtendedColorChannel = ColorChannel | "hex" | "css";
|
|
15
15
|
interface EyeDropper {
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var src_exports={};__export(src_exports,{anatomy:()=>anatomy,connect:()=>connect,machine:()=>machine,parse:()=>parse});module.exports=__toCommonJS(src_exports);var import_anatomy=require("@zag-js/anatomy");var anatomy=(0,import_anatomy.createAnatomy)("color-picker",["root","label","control","trigger","positioner","content","area","areaThumb","areaBackground","channelSlider","channelSliderTrack","channelSliderThumb","channelInput","transparencyGrid","swatchGroup","swatchTrigger","swatchIndicator","swatch","eyeDropperTrigger","formatTrigger","formatSelect"]);var parts=anatomy.build();var import_color_utils3=require("@zag-js/color-utils");var import_dom_event2=require("@zag-js/dom-event");var import_dom_query2=require("@zag-js/dom-query");var import_popper=require("@zag-js/popper");var import_dom_event=require("@zag-js/dom-event");var import_dom_query=require("@zag-js/dom-query");var dom=(0,import_dom_query.createScope)({getRootId:ctx=>ctx.ids?.root??`color-picker:${ctx.id}`,getLabelId:ctx=>ctx.ids?.label??`color-picker:${ctx.id}:label`,getHiddenInputId:ctx=>`color-picker:${ctx.id}:hidden-input`,getControlId:ctx=>ctx.ids?.control??`color-picker:${ctx.id}:control`,getTriggerId:ctx=>ctx.ids?.trigger??`color-picker:${ctx.id}:trigger`,getContentId:ctx=>ctx.ids?.content??`color-picker:${ctx.id}:content`,getPositionerId:ctx=>`color-picker:${ctx.id}:positioner`,getFormatSelectId:ctx=>`color-picker:${ctx.id}:format-select`,getAreaId:ctx=>ctx.ids?.area??`color-picker:${ctx.id}:area`,getAreaGradientId:ctx=>ctx.ids?.areaGradient??`color-picker:${ctx.id}:area-gradient`,getAreaThumbId:ctx=>ctx.ids?.areaThumb??`color-picker:${ctx.id}:area-thumb`,getChannelSliderId:(ctx,channel)=>ctx.ids?.channelSliderTrack?.(channel)??`color-picker:${ctx.id}:slider-track:${channel}`,getChannelSliderThumbId:(ctx,channel)=>ctx.ids?.channelSliderThumb?.(channel)??`color-picker:${ctx.id}:slider-thumb:${channel}`,getContentEl:ctx=>dom.getById(ctx,dom.getContentId(ctx)),getAreaThumbEl:ctx=>dom.getById(ctx,dom.getAreaThumbId(ctx)),getChannelSliderThumbEl:(ctx,channel)=>dom.getById(ctx,dom.getChannelSliderThumbId(ctx,channel)),getChannelInputEl:(ctx,channel)=>{return[...(0,import_dom_query.queryAll)(dom.getContentEl(ctx),`input[data-channel="${channel}"]`),...(0,import_dom_query.queryAll)(dom.getControlEl(ctx),`input[data-channel="${channel}"]`)]},getFormatSelectEl:ctx=>dom.getById(ctx,dom.getFormatSelectId(ctx)),getHiddenInputEl:ctx=>dom.getById(ctx,dom.getHiddenInputId(ctx)),getAreaEl:ctx=>dom.getById(ctx,dom.getAreaId(ctx)),getAreaValueFromPoint(ctx,point){const areaEl=dom.getAreaEl(ctx);if(!areaEl)return;const{percent}=(0,import_dom_event.getRelativePoint)(point,areaEl);return percent},getControlEl:ctx=>dom.getById(ctx,dom.getControlId(ctx)),getTriggerEl:ctx=>dom.getById(ctx,dom.getTriggerId(ctx)),getPositionerEl:ctx=>dom.getById(ctx,dom.getPositionerId(ctx)),getChannelSliderTrackEl:(ctx,channel)=>{return dom.getById(ctx,dom.getChannelSliderId(ctx,channel))},getChannelSliderValueFromPoint(ctx,point,channel){const trackEl=dom.getChannelSliderTrackEl(ctx,channel);if(!trackEl)return;const{percent}=(0,import_dom_event.getRelativePoint)(point,trackEl);return percent},getChannelInputEls:ctx=>{return[...(0,import_dom_query.queryAll)(dom.getContentEl(ctx),"input[data-channel]"),...(0,import_dom_query.queryAll)(dom.getControlEl(ctx),"input[data-channel]")]}});var import_color_utils=require("@zag-js/color-utils");function getChannelDisplayColor(color,channel){switch(channel){case"hue":return(0,import_color_utils.parseColor)(`hsl(${color.getChannelValue("hue")}, 100%, 50%)`);case"lightness":case"brightness":case"saturation":case"red":case"green":case"blue":return color.withChannelValue("alpha",1);case"alpha":{return color}default:throw new Error("Unknown color channel: "+channel)}}var import_color_utils2=require("@zag-js/color-utils");function getChannelValue(color,channel){if(channel==null)return"";if(channel==="hex"){return color.toString("hex")}if(channel==="css"){return color.toString("css")}if(channel in color){return color.getChannelValue(channel).toString()}const isHSL=color.getFormat()==="hsla";switch(channel){case"hue":return isHSL?color.toFormat("hsla").getChannelValue("hue").toString():color.toFormat("hsba").getChannelValue("hue").toString();case"saturation":return isHSL?color.toFormat("hsla").getChannelValue("saturation").toString():color.toFormat("hsba").getChannelValue("saturation").toString();case"lightness":return color.toFormat("hsla").getChannelValue("lightness").toString();case"brightness":return color.toFormat("hsba").getChannelValue("brightness").toString();case"red":case"green":case"blue":return color.toFormat("rgba").getChannelValue(channel).toString();default:return color.getChannelValue(channel).toString()}}function getChannelRange(color,channel){switch(channel){case"hex":const minColor=(0,import_color_utils2.parseColor)("#000000");const maxColor=(0,import_color_utils2.parseColor)("#FFFFFF");return{minValue:minColor.toHexInt(),maxValue:maxColor.toHexInt(),pageSize:10,step:1};case"css":return void 0;case"hue":case"saturation":case"lightness":return color.toFormat("hsla").getChannelRange(channel);case"brightness":return color.toFormat("hsba").getChannelRange(channel);case"red":case"green":case"blue":return color.toFormat("rgba").getChannelRange(channel);default:return color.getChannelRange(channel)}}function getSliderBackgroundDirection(orientation,dir){if(orientation==="vertical"){return"top"}else if(dir==="ltr"){return"right"}else{return"left"}}var getSliderBackground=props=>{const{channel,value,dir}=props;const bgDirection=getSliderBackgroundDirection(props.orientation,dir);const{minValue,maxValue}=value.getChannelRange(channel);switch(channel){case"hue":return`linear-gradient(to ${bgDirection}, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)`;case"lightness":{let start=value.withChannelValue(channel,minValue).toString("css");let middle=value.withChannelValue(channel,(maxValue-minValue)/2).toString("css");let end=value.withChannelValue(channel,maxValue).toString("css");return`linear-gradient(to ${bgDirection}, ${start}, ${middle}, ${end})`}case"saturation":case"brightness":case"red":case"green":case"blue":case"alpha":{let start=value.withChannelValue(channel,minValue).toString("css");let end=value.withChannelValue(channel,maxValue).toString("css");return`linear-gradient(to ${bgDirection}, ${start}, ${end})`}default:throw new Error("Unknown color channel: "+channel)}};function connect(state,send,normalize){const value=state.context.value;const areaValue=state.context.areaValue;const valueAsString=state.context.valueAsString;const disabled=state.context.isDisabled;const interactive=state.context.isInteractive;const dragging=state.hasTag("dragging");const open=state.hasTag("open");const focused=state.hasTag("focused");const getAreaChannels=props=>{const channels=areaValue.getChannels();return{xChannel:props.xChannel??channels[1],yChannel:props.yChannel??channels[2]}};const currentPlacement=state.context.currentPlacement;const popperStyles=(0,import_popper.getPlacementStyles)({...state.context.positioning,placement:currentPlacement});function getSwatchTriggerState(props){const color=(0,import_color_utils3.normalizeColor)(props.value).toFormat(state.context.format);return{value:color,valueAsString:color.toString("hex"),checked:color.isEqual(value),disabled:props.disabled||!interactive}}return{dragging,open,valueAsString,value,setOpen(nextOpen){if(nextOpen===open)return;send({type:nextOpen?"OPEN":"CLOSE"})},setValue(value2){send({type:"VALUE.SET",value:(0,import_color_utils3.normalizeColor)(value2),src:"set-color"})},getChannelValue(channel){return getChannelValue(value,channel)},setChannelValue(channel,channelValue){const color=value.withChannelValue(channel,channelValue);send({type:"VALUE.SET",value:color,src:"set-channel"})},format:state.context.format,setFormat(format){const formatValue=value.toFormat(format);send({type:"VALUE.SET",value:formatValue,src:"set-format"})},alpha:value.getChannelValue("alpha"),setAlpha(alphaValue){const color=value.withChannelValue("alpha",alphaValue);send({type:"VALUE.SET",value:color,src:"set-alpha"})},rootProps:normalize.element({...parts.root.attrs,dir:state.context.dir,id:dom.getRootId(state.context),"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-readonly":(0,import_dom_query2.dataAttr)(state.context.readOnly),style:{"--value":value.toString("css")}}),labelProps:normalize.element({...parts.label.attrs,dir:state.context.dir,id:dom.getLabelId(state.context),htmlFor:dom.getHiddenInputId(state.context),"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-readonly":(0,import_dom_query2.dataAttr)(state.context.readOnly),"data-focus":(0,import_dom_query2.dataAttr)(focused),onClick(event){event.preventDefault();const inputEl=(0,import_dom_query2.query)(dom.getControlEl(state.context),"[data-channel=hex]");inputEl?.focus({preventScroll:true})}}),controlProps:normalize.element({...parts.control.attrs,id:dom.getControlId(state.context),dir:state.context.dir,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-readonly":(0,import_dom_query2.dataAttr)(state.context.readOnly),"data-state":open?"open":"closed","data-focus":(0,import_dom_query2.dataAttr)(focused)}),triggerProps:normalize.button({...parts.trigger.attrs,id:dom.getTriggerId(state.context),dir:state.context.dir,disabled,"aria-label":`select color. current color is ${valueAsString}`,"aria-controls":dom.getContentId(state.context),"aria-labelledby":dom.getLabelId(state.context),"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-readonly":(0,import_dom_query2.dataAttr)(state.context.readOnly),"data-placement":currentPlacement,"aria-expanded":(0,import_dom_query2.dataAttr)(open),"data-state":open?"open":"closed","data-focus":(0,import_dom_query2.dataAttr)(focused),type:"button",onClick(){if(!interactive)return;send({type:"TRIGGER.CLICK"})},onBlur(){if(!interactive)return;send({type:"TRIGGER.BLUR"})},style:{position:"relative"}}),positionerProps:normalize.element({...parts.positioner.attrs,id:dom.getPositionerId(state.context),dir:state.context.dir,style:popperStyles.floating}),contentProps:normalize.element({...parts.content.attrs,id:dom.getContentId(state.context),dir:state.context.dir,"data-placement":currentPlacement,"data-state":open?"open":"closed",hidden:!open}),getAreaProps(props={}){const{xChannel,yChannel}=getAreaChannels(props);const{areaStyles}=(0,import_color_utils3.getColorAreaGradient)(areaValue,{xChannel,yChannel,dir:state.context.dir});return normalize.element({...parts.area.attrs,id:dom.getAreaId(state.context),role:"group",onPointerDown(event){if(!interactive)return;if(!(0,import_dom_event2.isLeftClick)(event))return;if((0,import_dom_event2.isModifierKey)(event))return;const point=(0,import_dom_event2.getEventPoint)(event);const channel={xChannel,yChannel};send({type:"AREA.POINTER_DOWN",point,channel,id:"area"});event.preventDefault()},style:{position:"relative",touchAction:"none",forcedColorAdjust:"none",...areaStyles}})},getAreaBackgroundProps(props={}){const{xChannel,yChannel}=getAreaChannels(props);const{areaGradientStyles}=(0,import_color_utils3.getColorAreaGradient)(areaValue,{xChannel,yChannel,dir:state.context.dir});return normalize.element({...parts.areaBackground.attrs,id:dom.getAreaGradientId(state.context),style:{position:"relative",touchAction:"none",forcedColorAdjust:"none",...areaGradientStyles}})},getAreaThumbProps(props={}){const{xChannel,yChannel}=getAreaChannels(props);const channel={xChannel,yChannel};const xPercent=areaValue.getChannelValuePercent(xChannel);const yPercent=1-areaValue.getChannelValuePercent(yChannel);const xValue=areaValue.getChannelValue(xChannel);const yValue=areaValue.getChannelValue(yChannel);return normalize.element({...parts.areaThumb.attrs,id:dom.getAreaThumbId(state.context),dir:state.context.dir,tabIndex:disabled?void 0:0,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),role:"slider","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":xValue,"aria-label":`${xChannel} and ${yChannel}`,"aria-roledescription":"2d slider","aria-valuetext":`${xChannel} ${xValue}, ${yChannel} ${yValue}`,style:{position:"absolute",left:`${xPercent*100}%`,top:`${yPercent*100}%`,transform:"translate(-50%, -50%)",touchAction:"none",forcedColorAdjust:"none",background:areaValue.withChannelValue("alpha",1).toString("css")},onFocus(){if(!interactive)return;send({type:"AREA.FOCUS",id:"area",channel})},onKeyDown(event){if(event.defaultPrevented)return;if(!interactive)return;const step=(0,import_dom_event2.getEventStep)(event);const keyMap={ArrowUp(){send({type:"AREA.ARROW_UP",channel,step})},ArrowDown(){send({type:"AREA.ARROW_DOWN",channel,step})},ArrowLeft(){send({type:"AREA.ARROW_LEFT",channel,step})},ArrowRight(){send({type:"AREA.ARROW_RIGHT",channel,step})},PageUp(){send({type:"AREA.PAGE_UP",channel,step})},PageDown(){send({type:"AREA.PAGE_DOWN",channel,step})},Escape(event2){event2.stopPropagation()}};const exec=keyMap[(0,import_dom_event2.getEventKey)(event,state.context)];if(exec){exec(event);event.preventDefault()}}})},getTransparencyGridProps(props={}){const{size="12px"}=props;return normalize.element({...parts.transparencyGrid.attrs,style:{"--size":size,width:"100%",height:"100%",position:"absolute",backgroundColor:"#fff",backgroundImage:"conic-gradient(#eeeeee 0 25%, transparent 0 50%, #eeeeee 0 75%, transparent 0)",backgroundSize:"var(--size) var(--size)",inset:"0px",zIndex:"auto",pointerEvents:"none"}})},getChannelSliderProps(props){const{orientation="horizontal",channel}=props;return normalize.element({...parts.channelSlider.attrs,"data-channel":channel,"data-orientation":orientation,role:"presentation",onPointerDown(event){if(!interactive)return;if(!(0,import_dom_event2.isLeftClick)(event))return;if((0,import_dom_event2.isModifierKey)(event))return;const point=(0,import_dom_event2.getEventPoint)(event);send({type:"CHANNEL_SLIDER.POINTER_DOWN",channel,point,id:channel,orientation});event.preventDefault()},style:{position:"relative",touchAction:"none"}})},getChannelSliderTrackProps(props){const{orientation="horizontal",channel}=props;return normalize.element({...parts.channelSliderTrack.attrs,id:dom.getChannelSliderId(state.context,channel),role:"group","data-channel":channel,"data-orientation":orientation,style:{position:"relative",forcedColorAdjust:"none",backgroundImage:getSliderBackground({orientation,channel,dir:state.context.dir,value:areaValue})}})},getChannelSliderThumbProps(props){const{orientation="horizontal",channel}=props;const{minValue,maxValue,step:stepValue}=areaValue.getChannelRange(channel);const channelValue=areaValue.getChannelValue(channel);const offset=(channelValue-minValue)/(maxValue-minValue);const placementStyles=orientation==="horizontal"?{left:`${offset*100}%`,top:"50%"}:{top:`${offset*100}%`,left:"50%"};return normalize.element({...parts.channelSliderThumb.attrs,id:dom.getChannelSliderThumbId(state.context,channel),role:"slider","aria-label":channel,tabIndex:disabled?void 0:0,"data-channel":channel,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-orientation":orientation,"aria-disabled":(0,import_dom_query2.dataAttr)(disabled),"aria-orientation":orientation,"aria-valuemax":maxValue,"aria-valuemin":minValue,"aria-valuenow":channelValue,"aria-valuetext":`${channel} ${channelValue}`,style:{forcedColorAdjust:"none",position:"absolute",background:getChannelDisplayColor(areaValue,channel).toString("css"),...placementStyles},onFocus(){if(!interactive)return;send({type:"CHANNEL_SLIDER.FOCUS",channel})},onKeyDown(event){if(event.defaultPrevented)return;if(!interactive)return;const step=(0,import_dom_event2.getEventStep)(event)*stepValue;const keyMap={ArrowUp(){send({type:"CHANNEL_SLIDER.ARROW_UP",channel,step})},ArrowDown(){send({type:"CHANNEL_SLIDER.ARROW_DOWN",channel,step})},ArrowLeft(){send({type:"CHANNEL_SLIDER.ARROW_LEFT",channel,step})},ArrowRight(){send({type:"CHANNEL_SLIDER.ARROW_RIGHT",channel,step})},PageUp(){send({type:"CHANNEL_SLIDER.PAGE_UP",channel})},PageDown(){send({type:"CHANNEL_SLIDER.PAGE_DOWN",channel})},Home(){send({type:"CHANNEL_SLIDER.HOME",channel})},End(){send({type:"CHANNEL_SLIDER.END",channel})},Escape(event2){event2.stopPropagation()}};const exec=keyMap[(0,import_dom_event2.getEventKey)(event,state.context)];if(exec){exec(event);event.preventDefault()}}})},getChannelInputProps(props){const{channel}=props;const isTextField=channel==="hex"||channel==="css";const range=getChannelRange(value,channel);return normalize.input({...parts.channelInput.attrs,dir:state.context.dir,type:isTextField?"text":"number","data-channel":channel,"aria-label":channel,spellCheck:false,autoComplete:"off",disabled,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),readOnly:state.context.readOnly,defaultValue:getChannelValue(value,channel),min:range?.minValue,max:range?.maxValue,step:range?.step,onBeforeInput(event){if(isTextField||!interactive)return;const value2=event.currentTarget.value;if(value2.match(/[^0-9.]/g)){event.preventDefault()}},onFocus(event){if(!interactive)return;send({type:"CHANNEL_INPUT.FOCUS",channel});event.target.select()},onBlur(event){if(!interactive)return;const value2=isTextField?event.currentTarget.value:event.currentTarget.valueAsNumber;send({type:"CHANNEL_INPUT.BLUR",channel,value:value2,isTextField})},onKeyDown(event){if(event.defaultPrevented)return;if(!interactive)return;if(event.key==="Enter"){const value2=isTextField?event.currentTarget.value:event.currentTarget.valueAsNumber;send({type:"CHANNEL_INPUT.CHANGE",channel,value:value2,isTextField});event.preventDefault()}},style:{appearance:"none",WebkitAppearance:"none",MozAppearance:"textfield"}})},hiddenInputProps:normalize.input({type:"text",disabled,name:state.context.name,id:dom.getHiddenInputId(state.context),style:import_dom_query2.visuallyHiddenStyle,defaultValue:valueAsString}),eyeDropperTriggerProps:normalize.button({...parts.eyeDropperTrigger.attrs,type:"button",dir:state.context.dir,disabled,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"aria-label":"Pick a color from the screen",onClick(){if(!interactive)return;send("EYEDROPPER.CLICK")}}),swatchGroupProps:normalize.element({...parts.swatchGroup.attrs,role:"group"}),getSwatchTriggerState,getSwatchTriggerProps(props){const triggerState=getSwatchTriggerState(props);return normalize.button({...parts.swatchTrigger.attrs,disabled:triggerState.disabled,dir:state.context.dir,type:"button","aria-label":`select ${triggerState.valueAsString} as the color`,"data-state":triggerState.checked?"checked":"unchecked","data-value":triggerState.valueAsString,"data-disabled":(0,import_dom_query2.dataAttr)(triggerState.disabled),onClick(){if(triggerState.disabled)return;send({type:"SWATCH_TRIGGER.CLICK",value:triggerState.value})},style:{position:"relative"}})},getSwatchIndicatorProps(props){const triggerState=getSwatchTriggerState(props);return normalize.element({...parts.swatchIndicator.attrs,dir:state.context.dir,hidden:!triggerState.checked})},getSwatchProps(props){const{respectAlpha=true}=props;const triggerState=getSwatchTriggerState(props);return normalize.element({...parts.swatch.attrs,dir:state.context.dir,"data-state":triggerState.checked?"checked":"unchecked","data-value":triggerState.valueAsString,style:{position:"relative",background:triggerState.value.toString(respectAlpha?"css":"hex")}})},formatTriggerProps:normalize.button({...parts.formatTrigger.attrs,dir:state.context.dir,type:"button","aria-label":`change color format to ${getNextFormat(state.context.format)}`,onClick(event){if(event.currentTarget.disabled)return;const nextFormat=getNextFormat(state.context.format);send({type:"FORMAT.SET",format:nextFormat,src:"format-trigger"})}}),formatSelectProps:normalize.select({...parts.formatSelect.attrs,"aria-label":"change color format",dir:state.context.dir,defaultValue:state.context.format,disabled,onChange(event){const format=assertFormat(event.currentTarget.value);send({type:"FORMAT.SET",format,src:"format-select"})}})}}var formats=["hsba","hsla","rgba"];var formatRegex=new RegExp(`^(${formats.join("|")})$`);function getNextFormat(format){const index=formats.indexOf(format);return formats[index+1]??formats[0]}function assertFormat(format){if(formatRegex.test(format))return format;throw new Error(`Unsupported color format: ${format}`)}var import_color_utils5=require("@zag-js/color-utils");var import_core=require("@zag-js/core");var import_dismissable=require("@zag-js/dismissable");var import_dom_event3=require("@zag-js/dom-event");var import_dom_query3=require("@zag-js/dom-query");var import_form_utils=require("@zag-js/form-utils");var import_popper2=require("@zag-js/popper");var import_text_selection=require("@zag-js/text-selection");var import_utils=require("@zag-js/utils");var import_color_utils4=require("@zag-js/color-utils");var parse=colorString=>{return(0,import_color_utils4.parseColor)(colorString)};var{and}=import_core.guards;function machine(userContext){const ctx=(0,import_utils.compact)(userContext);return(0,import_core.createMachine)({id:"color-picker",initial:ctx.open?"open":"idle",context:{dir:"ltr",value:parse("#000000"),format:"rgba",disabled:false,closeOnSelect:false,...ctx,activeId:null,activeChannel:null,activeOrientation:null,fieldsetDisabled:false,restoreFocus:true,positioning:{...ctx.positioning,placement:"bottom"}},computed:{isRtl:ctx2=>ctx2.dir==="rtl",isDisabled:ctx2=>!!ctx2.disabled||ctx2.fieldsetDisabled,isInteractive:ctx2=>!(ctx2.isDisabled||ctx2.readOnly),valueAsString:ctx2=>ctx2.value.toString(ctx2.format),areaValue:ctx2=>{const format=ctx2.format.startsWith("hsl")?"hsla":"hsba";return ctx2.value.toFormat(format)}},activities:["trackFormControl"],watch:{value:["syncInputElements"],format:["syncFormatSelectElement"],open:["toggleVisibility"]},on:{"VALUE.SET":{actions:["setValue"]},"FORMAT.SET":{actions:["setFormat"]},"CHANNEL_INPUT.CHANGE":{actions:["setChannelColorFromInput"]},"EYEDROPPER.CLICK":{actions:["openEyeDropper"]}},states:{idle:{tags:["closed"],on:{"CONTROLLED.OPEN":{target:"open",actions:["setInitialFocus"]},OPEN:[{guard:"isOpenControlled",actions:["invokeOnOpen"]},{target:"open",actions:["invokeOnOpen","setInitialFocus"]}],"TRIGGER.CLICK":[{guard:"isOpenControlled",actions:["invokeOnOpen"]},{target:"open",actions:["invokeOnOpen","setInitialFocus"]}],"CHANNEL_INPUT.FOCUS":{target:"focused",actions:["setActiveChannel"]}}},focused:{tags:["closed","focused"],on:{"CONTROLLED.OPEN":{target:"open",actions:["setInitialFocus"]},OPEN:[{guard:"isOpenControlled",actions:["invokeOnOpen"]},{target:"open",actions:["invokeOnOpen","setInitialFocus"]}],"TRIGGER.CLICK":[{guard:"isOpenControlled",actions:["invokeOnOpen"]},{target:"open",actions:["invokeOnOpen","setInitialFocus"]}],"CHANNEL_INPUT.FOCUS":{actions:["setActiveChannel"]},"CHANNEL_INPUT.BLUR":{target:"idle",actions:["setChannelColorFromInput"]},"TRIGGER.BLUR":{target:"idle"}}},open:{tags:["open"],activities:["trackPositioning","trackDismissableElement"],on:{"CONTROLLED.CLOSE":[{guard:"shouldRestoreFocus",target:"focused",actions:["setReturnFocus"]},{target:"idle"}],"TRIGGER.CLICK":[{guard:"isOpenControlled",actions:["invokeOnClose"]},{target:"idle",actions:["invokeOnClose"]}],"AREA.POINTER_DOWN":{target:"open:dragging",actions:["setActiveChannel","setAreaColorFromPoint","focusAreaThumb"]},"AREA.FOCUS":{actions:["setActiveChannel"]},"CHANNEL_SLIDER.POINTER_DOWN":{target:"open:dragging",actions:["setActiveChannel","setChannelColorFromPoint","focusChannelThumb"]},"CHANNEL_SLIDER.FOCUS":{actions:["setActiveChannel"]},"AREA.ARROW_LEFT":{actions:["decrementXChannel"]},"AREA.ARROW_RIGHT":{actions:["incrementXChannel"]},"AREA.ARROW_UP":{actions:["incrementYChannel"]},"AREA.ARROW_DOWN":{actions:["decrementYChannel"]},"AREA.PAGE_UP":{actions:["incrementXChannel"]},"AREA.PAGE_DOWN":{actions:["decrementXChannel"]},"CHANNEL_SLIDER.ARROW_LEFT":{actions:["decrementChannel"]},"CHANNEL_SLIDER.ARROW_RIGHT":{actions:["incrementChannel"]},"CHANNEL_SLIDER.ARROW_UP":{actions:["incrementChannel"]},"CHANNEL_SLIDER.ARROW_DOWN":{actions:["decrementChannel"]},"CHANNEL_SLIDER.PAGE_UP":{actions:["incrementChannel"]},"CHANNEL_SLIDER.PAGE_DOWN":{actions:["decrementChannel"]},"CHANNEL_SLIDER.HOME":{actions:["setChannelToMin"]},"CHANNEL_SLIDER.END":{actions:["setChannelToMax"]},"CHANNEL_INPUT.BLUR":{actions:["setChannelColorFromInput"]},INTERACT_OUTSIDE:[{guard:"isOpenControlled",actions:["invokeOnClose"]},{guard:"shouldRestoreFocus",target:"focused",actions:["invokeOnClose","setReturnFocus"]},{target:"idle",actions:["invokeOnClose"]}],CLOSE:[{guard:"isOpenControlled",actions:["invokeOnClose"]},{target:"idle",actions:["invokeOnClose"]}],"SWATCH_TRIGGER.CLICK":[{guard:and("isOpenControlled","closeOnSelect"),actions:["setValue","invokeOnClose"]},{guard:"closeOnSelect",target:"focused",actions:["setValue","invokeOnClose","setReturnFocus"]},{actions:["setValue"]}]}},"open:dragging":{tags:["open"],exit:["clearActiveChannel"],activities:["trackPointerMove","disableTextSelection","trackPositioning","trackDismissableElement"],on:{"CONTROLLED.CLOSE":[{guard:"shouldRestoreFocus",target:"focused",actions:["setReturnFocus"]},{target:"idle"}],"AREA.POINTER_MOVE":{actions:["setAreaColorFromPoint","focusAreaThumb"]},"AREA.POINTER_UP":{target:"open",actions:["invokeOnChangeEnd"]},"CHANNEL_SLIDER.POINTER_MOVE":{actions:["setChannelColorFromPoint","focusChannelThumb"]},"CHANNEL_SLIDER.POINTER_UP":{target:"open",actions:["invokeOnChangeEnd"]},INTERACT_OUTSIDE:[{guard:"isOpenControlled",actions:["invokeOnClose"]},{guard:"shouldRestoreFocus",target:"focused",actions:["invokeOnClose","setReturnFocus"]},{target:"idle",actions:["invokeOnClose"]}],CLOSE:[{guard:"isOpenControlled",actions:["invokeOnClose"]},{target:"idle",actions:["invokeOnClose"]}]}}}},{guards:{closeOnSelect:ctx2=>!!ctx2.closeOnSelect,isOpenControlled:ctx2=>!!ctx2["open.controlled"],shouldRestoreFocus:ctx2=>!!ctx2.restoreFocus},activities:{trackPositioning(ctx2){ctx2.currentPlacement=ctx2.positioning.placement;const anchorEl=dom.getTriggerEl(ctx2);const getPositionerEl=()=>dom.getPositionerEl(ctx2);return(0,import_popper2.getPlacement)(anchorEl,getPositionerEl,{...ctx2.positioning,defer:true,onComplete(data){ctx2.currentPlacement=data.placement}})},trackDismissableElement(ctx2,_evt,{send}){const getContentEl=()=>dom.getContentEl(ctx2);return(0,import_dismissable.trackDismissableElement)(getContentEl,{exclude:dom.getTriggerEl(ctx2),defer:true,onInteractOutside(event){ctx2.onInteractOutside?.(event);if(event.defaultPrevented)return;ctx2.restoreFocus=!(event.detail.focusable||event.detail.contextmenu)},onPointerDownOutside:ctx2.onPointerDownOutside,onFocusOutside:ctx2.onFocusOutside,onDismiss(){send({type:"INTERACT_OUTSIDE"})}})},trackFormControl(ctx2,_evt,{send,initialContext}){const inputEl=dom.getHiddenInputEl(ctx2);return(0,import_form_utils.trackFormControl)(inputEl,{onFieldsetDisabledChange(disabled){ctx2.fieldsetDisabled=disabled},onFormReset(){send({type:"VALUE.SET",value:initialContext.value,src:"form.reset"})}})},trackPointerMove(ctx2,_evt,{send}){return(0,import_dom_event3.trackPointerMove)(dom.getDoc(ctx2),{onPointerMove({point}){const type=ctx2.activeId==="area"?"AREA.POINTER_MOVE":"CHANNEL_SLIDER.POINTER_MOVE";send({type,point})},onPointerUp(){const type=ctx2.activeId==="area"?"AREA.POINTER_UP":"CHANNEL_SLIDER.POINTER_UP";send({type})}})},disableTextSelection(ctx2){return(0,import_text_selection.disableTextSelection)({doc:dom.getDoc(ctx2),target:dom.getContentEl(ctx2)})}},actions:{openEyeDropper(ctx2){const isSupported="EyeDropper"in dom.getWin(ctx2);if(!isSupported)return;const win=dom.getWin(ctx2);const picker=new win.EyeDropper;picker.open().then(({sRGBHex})=>{const format=ctx2.value.getFormat();const color=(0,import_color_utils5.parseColor)(sRGBHex).toFormat(format);set.value(ctx2,color);ctx2.onValueChangeEnd?.({value:ctx2.value,valueAsString:ctx2.valueAsString})}).catch(()=>void 0)},setActiveChannel(ctx2,evt){ctx2.activeId=evt.id;if(evt.channel)ctx2.activeChannel=evt.channel;if(evt.orientation)ctx2.activeOrientation=evt.orientation},clearActiveChannel(ctx2){ctx2.activeChannel=null;ctx2.activeId=null;ctx2.activeOrientation=null},setAreaColorFromPoint(ctx2,evt){const{xChannel,yChannel}=evt.channel||ctx2.activeChannel;const percent=dom.getAreaValueFromPoint(ctx2,evt.point);if(!percent)return;const xValue=ctx2.areaValue.getChannelPercentValue(xChannel,percent.x);const yValue=ctx2.areaValue.getChannelPercentValue(yChannel,1-percent.y);const color=ctx2.areaValue.withChannelValue(xChannel,xValue).withChannelValue(yChannel,yValue);set.value(ctx2,color)},setChannelColorFromPoint(ctx2,evt){const channel=evt.channel||ctx2.activeId;const percent=dom.getChannelSliderValueFromPoint(ctx2,evt.point,channel);if(!percent)return;const orientation=ctx2.activeOrientation||"horizontal";const channelPercent=orientation==="horizontal"?percent.x:percent.y;const value=ctx2.areaValue.getChannelPercentValue(channel,channelPercent);const color=ctx2.areaValue.withChannelValue(channel,value);set.value(ctx2,color)},setValue(ctx2,evt){set.value(ctx2,evt.value)},setFormat(ctx2,evt){set.format(ctx2,evt.format)},syncInputElements(ctx2){sync.inputs(ctx2)},invokeOnChangeEnd(ctx2){invoke.changeEnd(ctx2)},setChannelColorFromInput(ctx2,evt){const{channel,isTextField,value}=evt;const currentAlpha=ctx2.value.getChannelValue("alpha");let color;if(channel==="alpha"){let valueAsNumber=parseFloat(value);valueAsNumber=Number.isNaN(valueAsNumber)?currentAlpha:valueAsNumber;color=ctx2.value.withChannelValue("alpha",valueAsNumber)}else if(isTextField){color=(0,import_utils.tryCatch)(()=>parse(value).withChannelValue("alpha",currentAlpha),()=>ctx2.value)}else{const current=ctx2.value.toFormat(ctx2.format);const valueAsNumber=Number.isNaN(value)?current.getChannelValue(channel):value;color=current.withChannelValue(channel,valueAsNumber)}sync.inputs(ctx2,color);set.value(ctx2,color)},incrementChannel(ctx2,evt){const color=ctx2.value.incrementChannel(evt.channel,evt.step);set.value(ctx2,color)},decrementChannel(ctx2,evt){const color=ctx2.value.decrementChannel(evt.channel,evt.step);set.value(ctx2,color)},incrementXChannel(ctx2,evt){const{xChannel}=evt.channel;const color=ctx2.areaValue.incrementChannel(xChannel,evt.step);set.value(ctx2,color)},decrementXChannel(ctx2,evt){const{xChannel}=evt.channel;const color=ctx2.areaValue.decrementChannel(xChannel,evt.step);set.value(ctx2,color)},incrementYChannel(ctx2,evt){const{yChannel}=evt.channel;const color=ctx2.areaValue.incrementChannel(yChannel,evt.step);set.value(ctx2,color)},decrementYChannel(ctx2,evt){const{yChannel}=evt.channel;const color=ctx2.areaValue.decrementChannel(yChannel,evt.step);set.value(ctx2,color)},setChannelToMax(ctx2,evt){const range=ctx2.value.getChannelRange(evt.channel);const color=ctx2.value.withChannelValue(evt.channel,range.maxValue);set.value(ctx2,color)},setChannelToMin(ctx2,evt){const range=ctx2.value.getChannelRange(evt.channel);const color=ctx2.value.withChannelValue(evt.channel,range.minValue);set.value(ctx2,color)},focusAreaThumb(ctx2){(0,import_dom_query3.raf)(()=>{dom.getAreaThumbEl(ctx2)?.focus({preventScroll:true})})},focusChannelThumb(ctx2,evt){(0,import_dom_query3.raf)(()=>{dom.getChannelSliderThumbEl(ctx2,evt.channel)?.focus({preventScroll:true})})},setInitialFocus(ctx2){(0,import_dom_query3.raf)(()=>{const element=(0,import_dom_query3.getInitialFocus)(dom.getContentEl(ctx2),ctx2.initialFocusEl);element?.focus({preventScroll:true})})},setReturnFocus(ctx2){(0,import_dom_query3.raf)(()=>{dom.getTriggerEl(ctx2)?.focus({preventScroll:true})})},syncFormatSelectElement(ctx2){sync.formatSelect(ctx2)},invokeOnOpen(ctx2){ctx2.onOpenChange?.({open:true})},invokeOnClose(ctx2){ctx2.onOpenChange?.({open:false})},toggleVisibility(ctx2,evt,{send}){send({type:ctx2.open?"CONTROLLED.OPEN":"CONTROLLED.CLOSE",previousEvent:evt})}},compareFns:{value:(a,b)=>a.isEqual(b)}})}var sync={inputs(ctx,color){const channelInputs=dom.getChannelInputEls(ctx);(0,import_dom_query3.raf)(()=>{channelInputs.forEach(inputEl=>{const channel=inputEl.dataset.channel;dom.setValue(inputEl,getChannelValue(color||ctx.value,channel))})})},formatSelect(ctx){const selectEl=dom.getFormatSelectEl(ctx);(0,import_dom_query3.raf)(()=>{dom.setValue(selectEl,ctx.format)})}};var invoke={changeEnd(ctx){const value=ctx.value.toFormat(ctx.format);ctx.onValueChangeEnd?.({value,valueAsString:ctx.valueAsString})},change(ctx){const value=ctx.value.toFormat(ctx.format);ctx.onValueChange?.({value,valueAsString:ctx.valueAsString});(0,import_form_utils.dispatchInputValueEvent)(dom.getHiddenInputEl(ctx),{value:ctx.valueAsString})},formatChange(ctx){ctx.onFormatChange?.({format:ctx.format})}};var set={value(ctx,color){if(!color||ctx.value.isEqual(color))return;ctx.value=color;invoke.change(ctx)},format(ctx,format){if(ctx.format===format)return;ctx.format=format;invoke.formatChange(ctx)}};0&&(module.exports={anatomy,connect,machine,parse});
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:true})};var __copyProps=(to,from,except,desc)=>{if(from&&typeof from==="object"||typeof from==="function"){for(let key of __getOwnPropNames(from))if(!__hasOwnProp.call(to,key)&&key!==except)__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable})}return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:true}),mod);var src_exports={};__export(src_exports,{anatomy:()=>anatomy,connect:()=>connect,machine:()=>machine,parse:()=>parse});module.exports=__toCommonJS(src_exports);var import_anatomy=require("@zag-js/anatomy");var anatomy=(0,import_anatomy.createAnatomy)("color-picker",["root","label","control","trigger","positioner","content","area","areaThumb","areaBackground","channelSlider","channelSliderTrack","channelSliderThumb","channelInput","transparencyGrid","swatchGroup","swatchTrigger","swatchIndicator","swatch","eyeDropperTrigger","formatTrigger","formatSelect"]);var parts=anatomy.build();var import_color_utils3=require("@zag-js/color-utils");var import_dom_event2=require("@zag-js/dom-event");var import_dom_query2=require("@zag-js/dom-query");var import_popper=require("@zag-js/popper");var import_dom_event=require("@zag-js/dom-event");var import_dom_query=require("@zag-js/dom-query");var dom=(0,import_dom_query.createScope)({getRootId:ctx=>ctx.ids?.root??`color-picker:${ctx.id}`,getLabelId:ctx=>ctx.ids?.label??`color-picker:${ctx.id}:label`,getHiddenInputId:ctx=>`color-picker:${ctx.id}:hidden-input`,getControlId:ctx=>ctx.ids?.control??`color-picker:${ctx.id}:control`,getTriggerId:ctx=>ctx.ids?.trigger??`color-picker:${ctx.id}:trigger`,getContentId:ctx=>ctx.ids?.content??`color-picker:${ctx.id}:content`,getPositionerId:ctx=>`color-picker:${ctx.id}:positioner`,getFormatSelectId:ctx=>`color-picker:${ctx.id}:format-select`,getAreaId:ctx=>ctx.ids?.area??`color-picker:${ctx.id}:area`,getAreaGradientId:ctx=>ctx.ids?.areaGradient??`color-picker:${ctx.id}:area-gradient`,getAreaThumbId:ctx=>ctx.ids?.areaThumb??`color-picker:${ctx.id}:area-thumb`,getChannelSliderId:(ctx,channel)=>ctx.ids?.channelSliderTrack?.(channel)??`color-picker:${ctx.id}:slider-track:${channel}`,getChannelSliderThumbId:(ctx,channel)=>ctx.ids?.channelSliderThumb?.(channel)??`color-picker:${ctx.id}:slider-thumb:${channel}`,getContentEl:ctx=>dom.getById(ctx,dom.getContentId(ctx)),getAreaThumbEl:ctx=>dom.getById(ctx,dom.getAreaThumbId(ctx)),getChannelSliderThumbEl:(ctx,channel)=>dom.getById(ctx,dom.getChannelSliderThumbId(ctx,channel)),getChannelInputEl:(ctx,channel)=>{return[...(0,import_dom_query.queryAll)(dom.getContentEl(ctx),`input[data-channel="${channel}"]`),...(0,import_dom_query.queryAll)(dom.getControlEl(ctx),`input[data-channel="${channel}"]`)]},getFormatSelectEl:ctx=>dom.getById(ctx,dom.getFormatSelectId(ctx)),getHiddenInputEl:ctx=>dom.getById(ctx,dom.getHiddenInputId(ctx)),getAreaEl:ctx=>dom.getById(ctx,dom.getAreaId(ctx)),getAreaValueFromPoint(ctx,point){const areaEl=dom.getAreaEl(ctx);if(!areaEl)return;const{percent}=(0,import_dom_event.getRelativePoint)(point,areaEl);return percent},getControlEl:ctx=>dom.getById(ctx,dom.getControlId(ctx)),getTriggerEl:ctx=>dom.getById(ctx,dom.getTriggerId(ctx)),getPositionerEl:ctx=>dom.getById(ctx,dom.getPositionerId(ctx)),getChannelSliderTrackEl:(ctx,channel)=>{return dom.getById(ctx,dom.getChannelSliderId(ctx,channel))},getChannelSliderValueFromPoint(ctx,point,channel){const trackEl=dom.getChannelSliderTrackEl(ctx,channel);if(!trackEl)return;const{percent}=(0,import_dom_event.getRelativePoint)(point,trackEl);return percent},getChannelInputEls:ctx=>{return[...(0,import_dom_query.queryAll)(dom.getContentEl(ctx),"input[data-channel]"),...(0,import_dom_query.queryAll)(dom.getControlEl(ctx),"input[data-channel]")]}});var import_color_utils=require("@zag-js/color-utils");function getChannelDisplayColor(color,channel){switch(channel){case"hue":return(0,import_color_utils.parseColor)(`hsl(${color.getChannelValue("hue")}, 100%, 50%)`);case"lightness":case"brightness":case"saturation":case"red":case"green":case"blue":return color.withChannelValue("alpha",1);case"alpha":{return color}default:throw new Error("Unknown color channel: "+channel)}}var import_color_utils2=require("@zag-js/color-utils");function getChannelValue(color,channel){if(channel==null)return"";if(channel==="hex"){return color.toString("hex")}if(channel==="css"){return color.toString("css")}if(channel in color){return color.getChannelValue(channel).toString()}const isHSL=color.getFormat()==="hsla";switch(channel){case"hue":return isHSL?color.toFormat("hsla").getChannelValue("hue").toString():color.toFormat("hsba").getChannelValue("hue").toString();case"saturation":return isHSL?color.toFormat("hsla").getChannelValue("saturation").toString():color.toFormat("hsba").getChannelValue("saturation").toString();case"lightness":return color.toFormat("hsla").getChannelValue("lightness").toString();case"brightness":return color.toFormat("hsba").getChannelValue("brightness").toString();case"red":case"green":case"blue":return color.toFormat("rgba").getChannelValue(channel).toString();default:return color.getChannelValue(channel).toString()}}function getChannelRange(color,channel){switch(channel){case"hex":const minColor=(0,import_color_utils2.parseColor)("#000000");const maxColor=(0,import_color_utils2.parseColor)("#FFFFFF");return{minValue:minColor.toHexInt(),maxValue:maxColor.toHexInt(),pageSize:10,step:1};case"css":return void 0;case"hue":case"saturation":case"lightness":return color.toFormat("hsla").getChannelRange(channel);case"brightness":return color.toFormat("hsba").getChannelRange(channel);case"red":case"green":case"blue":return color.toFormat("rgba").getChannelRange(channel);default:return color.getChannelRange(channel)}}function getSliderBackgroundDirection(orientation,dir){if(orientation==="vertical"){return"top"}else if(dir==="ltr"){return"right"}else{return"left"}}var getSliderBackground=props=>{const{channel,value,dir}=props;const bgDirection=getSliderBackgroundDirection(props.orientation,dir);const{minValue,maxValue}=value.getChannelRange(channel);switch(channel){case"hue":return`linear-gradient(to ${bgDirection}, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)`;case"lightness":{let start=value.withChannelValue(channel,minValue).toString("css");let middle=value.withChannelValue(channel,(maxValue-minValue)/2).toString("css");let end=value.withChannelValue(channel,maxValue).toString("css");return`linear-gradient(to ${bgDirection}, ${start}, ${middle}, ${end})`}case"saturation":case"brightness":case"red":case"green":case"blue":case"alpha":{let start=value.withChannelValue(channel,minValue).toString("css");let end=value.withChannelValue(channel,maxValue).toString("css");return`linear-gradient(to ${bgDirection}, ${start}, ${end})`}default:throw new Error("Unknown color channel: "+channel)}};function connect(state,send,normalize){const value=state.context.value;const areaValue=state.context.areaValue;const valueAsString=state.context.valueAsString;const disabled=state.context.isDisabled;const interactive=state.context.isInteractive;const dragging=state.hasTag("dragging");const open=state.hasTag("open");const focused=state.hasTag("focused");const getAreaChannels=props=>{const channels=areaValue.getChannels();return{xChannel:props.xChannel??channels[1],yChannel:props.yChannel??channels[2]}};const currentPlacement=state.context.currentPlacement;const popperStyles=(0,import_popper.getPlacementStyles)({...state.context.positioning,placement:currentPlacement});function getSwatchTriggerState(props){const color=(0,import_color_utils3.normalizeColor)(props.value).toFormat(state.context.format);return{value:color,valueAsString:color.toString("hex"),checked:color.isEqual(value),disabled:props.disabled||!interactive}}return{dragging,open,valueAsString,value,setOpen(nextOpen){if(nextOpen===open)return;send({type:nextOpen?"OPEN":"CLOSE"})},setValue(value2){send({type:"VALUE.SET",value:(0,import_color_utils3.normalizeColor)(value2),src:"set-color"})},getChannelValue(channel){return getChannelValue(value,channel)},setChannelValue(channel,channelValue){const color=value.withChannelValue(channel,channelValue);send({type:"VALUE.SET",value:color,src:"set-channel"})},format:state.context.format,setFormat(format){const formatValue=value.toFormat(format);send({type:"VALUE.SET",value:formatValue,src:"set-format"})},alpha:value.getChannelValue("alpha"),setAlpha(alphaValue){const color=value.withChannelValue("alpha",alphaValue);send({type:"VALUE.SET",value:color,src:"set-alpha"})},rootProps:normalize.element({...parts.root.attrs,dir:state.context.dir,id:dom.getRootId(state.context),"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-readonly":(0,import_dom_query2.dataAttr)(state.context.readOnly),style:{"--value":value.toString("css")}}),labelProps:normalize.element({...parts.label.attrs,dir:state.context.dir,id:dom.getLabelId(state.context),htmlFor:dom.getHiddenInputId(state.context),"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-readonly":(0,import_dom_query2.dataAttr)(state.context.readOnly),"data-focus":(0,import_dom_query2.dataAttr)(focused),onClick(event){event.preventDefault();const inputEl=(0,import_dom_query2.query)(dom.getControlEl(state.context),"[data-channel=hex]");inputEl?.focus({preventScroll:true})}}),controlProps:normalize.element({...parts.control.attrs,id:dom.getControlId(state.context),dir:state.context.dir,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-readonly":(0,import_dom_query2.dataAttr)(state.context.readOnly),"data-state":open?"open":"closed","data-focus":(0,import_dom_query2.dataAttr)(focused)}),triggerProps:normalize.button({...parts.trigger.attrs,id:dom.getTriggerId(state.context),dir:state.context.dir,disabled,"aria-label":`select color. current color is ${valueAsString}`,"aria-controls":dom.getContentId(state.context),"aria-labelledby":dom.getLabelId(state.context),"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-readonly":(0,import_dom_query2.dataAttr)(state.context.readOnly),"data-placement":currentPlacement,"aria-expanded":(0,import_dom_query2.dataAttr)(open),"data-state":open?"open":"closed","data-focus":(0,import_dom_query2.dataAttr)(focused),type:"button",onClick(){if(!interactive)return;send({type:"TRIGGER.CLICK"})},onBlur(){if(!interactive)return;send({type:"TRIGGER.BLUR"})},style:{position:"relative"}}),positionerProps:normalize.element({...parts.positioner.attrs,id:dom.getPositionerId(state.context),dir:state.context.dir,style:popperStyles.floating}),contentProps:normalize.element({...parts.content.attrs,id:dom.getContentId(state.context),dir:state.context.dir,"data-placement":currentPlacement,"data-state":open?"open":"closed",hidden:!open}),getAreaProps(props={}){const{xChannel,yChannel}=getAreaChannels(props);const{areaStyles}=(0,import_color_utils3.getColorAreaGradient)(areaValue,{xChannel,yChannel,dir:state.context.dir});return normalize.element({...parts.area.attrs,id:dom.getAreaId(state.context),role:"group",onPointerDown(event){if(!interactive)return;if(!(0,import_dom_event2.isLeftClick)(event))return;if((0,import_dom_event2.isModifierKey)(event))return;const point=(0,import_dom_event2.getEventPoint)(event);const channel={xChannel,yChannel};send({type:"AREA.POINTER_DOWN",point,channel,id:"area"});event.preventDefault()},style:{position:"relative",touchAction:"none",forcedColorAdjust:"none",...areaStyles}})},getAreaBackgroundProps(props={}){const{xChannel,yChannel}=getAreaChannels(props);const{areaGradientStyles}=(0,import_color_utils3.getColorAreaGradient)(areaValue,{xChannel,yChannel,dir:state.context.dir});return normalize.element({...parts.areaBackground.attrs,id:dom.getAreaGradientId(state.context),style:{position:"relative",touchAction:"none",forcedColorAdjust:"none",...areaGradientStyles}})},getAreaThumbProps(props={}){const{xChannel,yChannel}=getAreaChannels(props);const channel={xChannel,yChannel};const xPercent=areaValue.getChannelValuePercent(xChannel);const yPercent=1-areaValue.getChannelValuePercent(yChannel);const xValue=areaValue.getChannelValue(xChannel);const yValue=areaValue.getChannelValue(yChannel);return normalize.element({...parts.areaThumb.attrs,id:dom.getAreaThumbId(state.context),dir:state.context.dir,tabIndex:disabled?void 0:0,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),role:"slider","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":xValue,"aria-label":`${xChannel} and ${yChannel}`,"aria-roledescription":"2d slider","aria-valuetext":`${xChannel} ${xValue}, ${yChannel} ${yValue}`,style:{position:"absolute",left:`${xPercent*100}%`,top:`${yPercent*100}%`,transform:"translate(-50%, -50%)",touchAction:"none",forcedColorAdjust:"none",background:areaValue.withChannelValue("alpha",1).toString("css")},onFocus(){if(!interactive)return;send({type:"AREA.FOCUS",id:"area",channel})},onKeyDown(event){if(event.defaultPrevented)return;if(!interactive)return;const step=(0,import_dom_event2.getEventStep)(event);const keyMap={ArrowUp(){send({type:"AREA.ARROW_UP",channel,step})},ArrowDown(){send({type:"AREA.ARROW_DOWN",channel,step})},ArrowLeft(){send({type:"AREA.ARROW_LEFT",channel,step})},ArrowRight(){send({type:"AREA.ARROW_RIGHT",channel,step})},PageUp(){send({type:"AREA.PAGE_UP",channel,step})},PageDown(){send({type:"AREA.PAGE_DOWN",channel,step})},Escape(event2){event2.stopPropagation()}};const exec=keyMap[(0,import_dom_event2.getEventKey)(event,state.context)];if(exec){exec(event);event.preventDefault()}}})},getTransparencyGridProps(props={}){const{size="12px"}=props;return normalize.element({...parts.transparencyGrid.attrs,style:{"--size":size,width:"100%",height:"100%",position:"absolute",backgroundColor:"#fff",backgroundImage:"conic-gradient(#eeeeee 0 25%, transparent 0 50%, #eeeeee 0 75%, transparent 0)",backgroundSize:"var(--size) var(--size)",inset:"0px",zIndex:"auto",pointerEvents:"none"}})},getChannelSliderProps(props){const{orientation="horizontal",channel}=props;return normalize.element({...parts.channelSlider.attrs,"data-channel":channel,"data-orientation":orientation,role:"presentation",onPointerDown(event){if(!interactive)return;if(!(0,import_dom_event2.isLeftClick)(event))return;if((0,import_dom_event2.isModifierKey)(event))return;const point=(0,import_dom_event2.getEventPoint)(event);send({type:"CHANNEL_SLIDER.POINTER_DOWN",channel,point,id:channel,orientation});event.preventDefault()},style:{position:"relative",touchAction:"none"}})},getChannelSliderTrackProps(props){const{orientation="horizontal",channel}=props;return normalize.element({...parts.channelSliderTrack.attrs,id:dom.getChannelSliderId(state.context,channel),role:"group","data-channel":channel,"data-orientation":orientation,style:{position:"relative",forcedColorAdjust:"none",backgroundImage:getSliderBackground({orientation,channel,dir:state.context.dir,value:areaValue})}})},getChannelSliderThumbProps(props){const{orientation="horizontal",channel}=props;const{minValue,maxValue,step:stepValue}=areaValue.getChannelRange(channel);const channelValue=areaValue.getChannelValue(channel);const offset=(channelValue-minValue)/(maxValue-minValue);const placementStyles=orientation==="horizontal"?{left:`${offset*100}%`,top:"50%"}:{top:`${offset*100}%`,left:"50%"};return normalize.element({...parts.channelSliderThumb.attrs,id:dom.getChannelSliderThumbId(state.context,channel),role:"slider","aria-label":channel,tabIndex:disabled?void 0:0,"data-channel":channel,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"data-orientation":orientation,"aria-disabled":(0,import_dom_query2.dataAttr)(disabled),"aria-orientation":orientation,"aria-valuemax":maxValue,"aria-valuemin":minValue,"aria-valuenow":channelValue,"aria-valuetext":`${channel} ${channelValue}`,style:{forcedColorAdjust:"none",position:"absolute",background:getChannelDisplayColor(areaValue,channel).toString("css"),...placementStyles},onFocus(){if(!interactive)return;send({type:"CHANNEL_SLIDER.FOCUS",channel})},onKeyDown(event){if(event.defaultPrevented)return;if(!interactive)return;const step=(0,import_dom_event2.getEventStep)(event)*stepValue;const keyMap={ArrowUp(){send({type:"CHANNEL_SLIDER.ARROW_UP",channel,step})},ArrowDown(){send({type:"CHANNEL_SLIDER.ARROW_DOWN",channel,step})},ArrowLeft(){send({type:"CHANNEL_SLIDER.ARROW_LEFT",channel,step})},ArrowRight(){send({type:"CHANNEL_SLIDER.ARROW_RIGHT",channel,step})},PageUp(){send({type:"CHANNEL_SLIDER.PAGE_UP",channel})},PageDown(){send({type:"CHANNEL_SLIDER.PAGE_DOWN",channel})},Home(){send({type:"CHANNEL_SLIDER.HOME",channel})},End(){send({type:"CHANNEL_SLIDER.END",channel})},Escape(event2){event2.stopPropagation()}};const exec=keyMap[(0,import_dom_event2.getEventKey)(event,state.context)];if(exec){exec(event);event.preventDefault()}}})},getChannelInputProps(props){const{channel}=props;const isTextField=channel==="hex"||channel==="css";const range=getChannelRange(value,channel);return normalize.input({...parts.channelInput.attrs,dir:state.context.dir,type:isTextField?"text":"number","data-channel":channel,"aria-label":channel,spellCheck:false,autoComplete:"off",disabled,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),readOnly:state.context.readOnly,defaultValue:getChannelValue(value,channel),min:range?.minValue,max:range?.maxValue,step:range?.step,onBeforeInput(event){if(isTextField||!interactive)return;const value2=event.currentTarget.value;if(value2.match(/[^0-9.]/g)){event.preventDefault()}},onFocus(event){if(!interactive)return;send({type:"CHANNEL_INPUT.FOCUS",channel});event.target.select()},onBlur(event){if(!interactive)return;const value2=isTextField?event.currentTarget.value:event.currentTarget.valueAsNumber;send({type:"CHANNEL_INPUT.BLUR",channel,value:value2,isTextField})},onKeyDown(event){if(event.defaultPrevented)return;if(!interactive)return;if(event.key==="Enter"){const value2=isTextField?event.currentTarget.value:event.currentTarget.valueAsNumber;send({type:"CHANNEL_INPUT.CHANGE",channel,value:value2,isTextField});event.preventDefault()}},style:{appearance:"none",WebkitAppearance:"none",MozAppearance:"textfield"}})},hiddenInputProps:normalize.input({type:"text",disabled,name:state.context.name,id:dom.getHiddenInputId(state.context),style:import_dom_query2.visuallyHiddenStyle,defaultValue:valueAsString}),eyeDropperTriggerProps:normalize.button({...parts.eyeDropperTrigger.attrs,type:"button",dir:state.context.dir,disabled,"data-disabled":(0,import_dom_query2.dataAttr)(disabled),"aria-label":"Pick a color from the screen",onClick(){if(!interactive)return;send("EYEDROPPER.CLICK")}}),swatchGroupProps:normalize.element({...parts.swatchGroup.attrs,role:"group"}),getSwatchTriggerState,getSwatchTriggerProps(props){const triggerState=getSwatchTriggerState(props);return normalize.button({...parts.swatchTrigger.attrs,disabled:triggerState.disabled,dir:state.context.dir,type:"button","aria-label":`select ${triggerState.valueAsString} as the color`,"data-state":triggerState.checked?"checked":"unchecked","data-value":triggerState.valueAsString,"data-disabled":(0,import_dom_query2.dataAttr)(triggerState.disabled),onClick(){if(triggerState.disabled)return;send({type:"SWATCH_TRIGGER.CLICK",value:triggerState.value})},style:{position:"relative"}})},getSwatchIndicatorProps(props){const triggerState=getSwatchTriggerState(props);return normalize.element({...parts.swatchIndicator.attrs,dir:state.context.dir,hidden:!triggerState.checked})},getSwatchProps(props){const{respectAlpha=true}=props;const triggerState=getSwatchTriggerState(props);return normalize.element({...parts.swatch.attrs,dir:state.context.dir,"data-state":triggerState.checked?"checked":"unchecked","data-value":triggerState.valueAsString,style:{position:"relative",background:triggerState.value.toString(respectAlpha?"css":"hex")}})},formatTriggerProps:normalize.button({...parts.formatTrigger.attrs,dir:state.context.dir,type:"button","aria-label":`change color format to ${getNextFormat(state.context.format)}`,onClick(event){if(event.currentTarget.disabled)return;const nextFormat=getNextFormat(state.context.format);send({type:"FORMAT.SET",format:nextFormat,src:"format-trigger"})}}),formatSelectProps:normalize.select({...parts.formatSelect.attrs,"aria-label":"change color format",dir:state.context.dir,defaultValue:state.context.format,disabled,onChange(event){const format=assertFormat(event.currentTarget.value);send({type:"FORMAT.SET",format,src:"format-select"})}})}}var formats=["hsba","hsla","rgba"];var formatRegex=new RegExp(`^(${formats.join("|")})$`);function getNextFormat(format){const index=formats.indexOf(format);return formats[index+1]??formats[0]}function assertFormat(format){if(formatRegex.test(format))return format;throw new Error(`Unsupported color format: ${format}`)}var import_color_utils5=require("@zag-js/color-utils");var import_core=require("@zag-js/core");var import_dismissable=require("@zag-js/dismissable");var import_dom_event3=require("@zag-js/dom-event");var import_dom_query3=require("@zag-js/dom-query");var import_form_utils=require("@zag-js/form-utils");var import_popper2=require("@zag-js/popper");var import_text_selection=require("@zag-js/text-selection");var import_utils=require("@zag-js/utils");var import_color_utils4=require("@zag-js/color-utils");var parse=colorString=>{return(0,import_color_utils4.parseColor)(colorString)};var{and}=import_core.guards;function machine(userContext){const ctx=(0,import_utils.compact)(userContext);return(0,import_core.createMachine)({id:"color-picker",initial:ctx.open?"open":"idle",context:{dir:"ltr",value:parse("#000000"),format:"rgba",disabled:false,closeOnSelect:false,...ctx,activeId:null,activeChannel:null,activeOrientation:null,fieldsetDisabled:false,restoreFocus:true,positioning:{...ctx.positioning,placement:"bottom"}},computed:{isRtl:ctx2=>ctx2.dir==="rtl",isDisabled:ctx2=>!!ctx2.disabled||ctx2.fieldsetDisabled,isInteractive:ctx2=>!(ctx2.isDisabled||ctx2.readOnly),valueAsString:ctx2=>ctx2.value.toString(ctx2.format),areaValue:ctx2=>{const format=ctx2.format.startsWith("hsl")?"hsla":"hsba";return ctx2.value.toFormat(format)}},activities:["trackFormControl"],watch:{value:["syncInputElements"],format:["syncFormatSelectElement"],open:["toggleVisibility"]},on:{"VALUE.SET":{actions:["setValue"]},"FORMAT.SET":{actions:["setFormat"]},"CHANNEL_INPUT.CHANGE":{actions:["setChannelColorFromInput"]},"EYEDROPPER.CLICK":{actions:["openEyeDropper"]}},states:{idle:{tags:["closed"],on:{"CONTROLLED.OPEN":{target:"open",actions:["setInitialFocus"]},OPEN:[{guard:"isOpenControlled",actions:["invokeOnOpen"]},{target:"open",actions:["invokeOnOpen","setInitialFocus"]}],"TRIGGER.CLICK":[{guard:"isOpenControlled",actions:["invokeOnOpen"]},{target:"open",actions:["invokeOnOpen","setInitialFocus"]}],"CHANNEL_INPUT.FOCUS":{target:"focused",actions:["setActiveChannel"]}}},focused:{tags:["closed","focused"],on:{"CONTROLLED.OPEN":{target:"open",actions:["setInitialFocus"]},OPEN:[{guard:"isOpenControlled",actions:["invokeOnOpen"]},{target:"open",actions:["invokeOnOpen","setInitialFocus"]}],"TRIGGER.CLICK":[{guard:"isOpenControlled",actions:["invokeOnOpen"]},{target:"open",actions:["invokeOnOpen","setInitialFocus"]}],"CHANNEL_INPUT.FOCUS":{actions:["setActiveChannel"]},"CHANNEL_INPUT.BLUR":{target:"idle",actions:["setChannelColorFromInput"]},"TRIGGER.BLUR":{target:"idle"}}},open:{tags:["open"],activities:["trackPositioning","trackDismissableElement"],on:{"CONTROLLED.CLOSE":[{guard:"shouldRestoreFocus",target:"focused",actions:["setReturnFocus"]},{target:"idle"}],"TRIGGER.CLICK":[{guard:"isOpenControlled",actions:["invokeOnClose"]},{target:"idle",actions:["invokeOnClose"]}],"AREA.POINTER_DOWN":{target:"open:dragging",actions:["setActiveChannel","setAreaColorFromPoint","focusAreaThumb"]},"AREA.FOCUS":{actions:["setActiveChannel"]},"CHANNEL_SLIDER.POINTER_DOWN":{target:"open:dragging",actions:["setActiveChannel","setChannelColorFromPoint","focusChannelThumb"]},"CHANNEL_SLIDER.FOCUS":{actions:["setActiveChannel"]},"AREA.ARROW_LEFT":{actions:["decrementXChannel"]},"AREA.ARROW_RIGHT":{actions:["incrementXChannel"]},"AREA.ARROW_UP":{actions:["incrementYChannel"]},"AREA.ARROW_DOWN":{actions:["decrementYChannel"]},"AREA.PAGE_UP":{actions:["incrementXChannel"]},"AREA.PAGE_DOWN":{actions:["decrementXChannel"]},"CHANNEL_SLIDER.ARROW_LEFT":{actions:["decrementChannel"]},"CHANNEL_SLIDER.ARROW_RIGHT":{actions:["incrementChannel"]},"CHANNEL_SLIDER.ARROW_UP":{actions:["incrementChannel"]},"CHANNEL_SLIDER.ARROW_DOWN":{actions:["decrementChannel"]},"CHANNEL_SLIDER.PAGE_UP":{actions:["incrementChannel"]},"CHANNEL_SLIDER.PAGE_DOWN":{actions:["decrementChannel"]},"CHANNEL_SLIDER.HOME":{actions:["setChannelToMin"]},"CHANNEL_SLIDER.END":{actions:["setChannelToMax"]},"CHANNEL_INPUT.BLUR":{actions:["setChannelColorFromInput"]},INTERACT_OUTSIDE:[{guard:"isOpenControlled",actions:["invokeOnClose"]},{guard:"shouldRestoreFocus",target:"focused",actions:["invokeOnClose","setReturnFocus"]},{target:"idle",actions:["invokeOnClose"]}],CLOSE:[{guard:"isOpenControlled",actions:["invokeOnClose"]},{target:"idle",actions:["invokeOnClose"]}],"SWATCH_TRIGGER.CLICK":[{guard:and("isOpenControlled","closeOnSelect"),actions:["setValue","invokeOnClose"]},{guard:"closeOnSelect",target:"focused",actions:["setValue","invokeOnClose","setReturnFocus"]},{actions:["setValue"]}]}},"open:dragging":{tags:["open"],exit:["clearActiveChannel"],activities:["trackPointerMove","disableTextSelection","trackPositioning","trackDismissableElement"],on:{"CONTROLLED.CLOSE":[{guard:"shouldRestoreFocus",target:"focused",actions:["setReturnFocus"]},{target:"idle"}],"AREA.POINTER_MOVE":{actions:["setAreaColorFromPoint","focusAreaThumb"]},"AREA.POINTER_UP":{target:"open",actions:["invokeOnChangeEnd"]},"CHANNEL_SLIDER.POINTER_MOVE":{actions:["setChannelColorFromPoint","focusChannelThumb"]},"CHANNEL_SLIDER.POINTER_UP":{target:"open",actions:["invokeOnChangeEnd"]},INTERACT_OUTSIDE:[{guard:"isOpenControlled",actions:["invokeOnClose"]},{guard:"shouldRestoreFocus",target:"focused",actions:["invokeOnClose","setReturnFocus"]},{target:"idle",actions:["invokeOnClose"]}],CLOSE:[{guard:"isOpenControlled",actions:["invokeOnClose"]},{target:"idle",actions:["invokeOnClose"]}]}}}},{guards:{closeOnSelect:ctx2=>!!ctx2.closeOnSelect,isOpenControlled:ctx2=>!!ctx2["open.controlled"],shouldRestoreFocus:ctx2=>!!ctx2.restoreFocus},activities:{trackPositioning(ctx2){ctx2.currentPlacement=ctx2.positioning.placement;const anchorEl=dom.getTriggerEl(ctx2);const getPositionerEl=()=>dom.getPositionerEl(ctx2);return(0,import_popper2.getPlacement)(anchorEl,getPositionerEl,{...ctx2.positioning,defer:true,onComplete(data){ctx2.currentPlacement=data.placement}})},trackDismissableElement(ctx2,_evt,{send}){const getContentEl=()=>dom.getContentEl(ctx2);return(0,import_dismissable.trackDismissableElement)(getContentEl,{exclude:dom.getTriggerEl(ctx2),defer:true,onInteractOutside(event){ctx2.onInteractOutside?.(event);if(event.defaultPrevented)return;ctx2.restoreFocus=!(event.detail.focusable||event.detail.contextmenu)},onPointerDownOutside:ctx2.onPointerDownOutside,onFocusOutside:ctx2.onFocusOutside,onDismiss(){send({type:"INTERACT_OUTSIDE"})}})},trackFormControl(ctx2,_evt,{send,initialContext}){const inputEl=dom.getHiddenInputEl(ctx2);return(0,import_form_utils.trackFormControl)(inputEl,{onFieldsetDisabledChange(disabled){ctx2.fieldsetDisabled=disabled},onFormReset(){send({type:"VALUE.SET",value:initialContext.value,src:"form.reset"})}})},trackPointerMove(ctx2,_evt,{send}){return(0,import_dom_event3.trackPointerMove)(dom.getDoc(ctx2),{onPointerMove({point}){const type=ctx2.activeId==="area"?"AREA.POINTER_MOVE":"CHANNEL_SLIDER.POINTER_MOVE";send({type,point})},onPointerUp(){const type=ctx2.activeId==="area"?"AREA.POINTER_UP":"CHANNEL_SLIDER.POINTER_UP";send({type})}})},disableTextSelection(ctx2){return(0,import_text_selection.disableTextSelection)({doc:dom.getDoc(ctx2),target:dom.getContentEl(ctx2)})}},actions:{openEyeDropper(ctx2){const isSupported="EyeDropper"in dom.getWin(ctx2);if(!isSupported)return;const win=dom.getWin(ctx2);const picker=new win.EyeDropper;picker.open().then(({sRGBHex})=>{const format=ctx2.value.getFormat();const color=(0,import_color_utils5.parseColor)(sRGBHex).toFormat(format);set.value(ctx2,color);ctx2.onValueChangeEnd?.({value:ctx2.value,valueAsString:ctx2.valueAsString})}).catch(()=>void 0)},setActiveChannel(ctx2,evt){ctx2.activeId=evt.id;if(evt.channel)ctx2.activeChannel=evt.channel;if(evt.orientation)ctx2.activeOrientation=evt.orientation},clearActiveChannel(ctx2){ctx2.activeChannel=null;ctx2.activeId=null;ctx2.activeOrientation=null},setAreaColorFromPoint(ctx2,evt){const{xChannel,yChannel}=evt.channel||ctx2.activeChannel;const percent=dom.getAreaValueFromPoint(ctx2,evt.point);if(!percent)return;const xValue=ctx2.areaValue.getChannelPercentValue(xChannel,percent.x);const yValue=ctx2.areaValue.getChannelPercentValue(yChannel,1-percent.y);const color=ctx2.areaValue.withChannelValue(xChannel,xValue).withChannelValue(yChannel,yValue);set.value(ctx2,color)},setChannelColorFromPoint(ctx2,evt){const channel=evt.channel||ctx2.activeId;const percent=dom.getChannelSliderValueFromPoint(ctx2,evt.point,channel);if(!percent)return;const orientation=ctx2.activeOrientation||"horizontal";const channelPercent=orientation==="horizontal"?percent.x:percent.y;const value=ctx2.areaValue.getChannelPercentValue(channel,channelPercent);const color=ctx2.areaValue.withChannelValue(channel,value);set.value(ctx2,color)},setValue(ctx2,evt){set.value(ctx2,evt.value)},setFormat(ctx2,evt){set.format(ctx2,evt.format)},syncInputElements(ctx2){sync.inputs(ctx2)},invokeOnChangeEnd(ctx2){invoke.changeEnd(ctx2)},setChannelColorFromInput(ctx2,evt){const{channel,isTextField,value}=evt;const currentAlpha=ctx2.value.getChannelValue("alpha");let color;if(channel==="alpha"){let valueAsNumber=parseFloat(value);valueAsNumber=Number.isNaN(valueAsNumber)?currentAlpha:valueAsNumber;color=ctx2.value.withChannelValue("alpha",valueAsNumber)}else if(isTextField){color=(0,import_utils.tryCatch)(()=>parse(value).withChannelValue("alpha",currentAlpha),()=>ctx2.value)}else{const current=ctx2.value.toFormat(ctx2.format);const valueAsNumber=Number.isNaN(value)?current.getChannelValue(channel):value;color=current.withChannelValue(channel,valueAsNumber)}sync.inputs(ctx2,color);set.value(ctx2,color)},incrementChannel(ctx2,evt){const color=ctx2.value.incrementChannel(evt.channel,evt.step);set.value(ctx2,color)},decrementChannel(ctx2,evt){const color=ctx2.value.decrementChannel(evt.channel,evt.step);set.value(ctx2,color)},incrementXChannel(ctx2,evt){const{xChannel}=evt.channel;const color=ctx2.areaValue.incrementChannel(xChannel,evt.step);set.value(ctx2,color)},decrementXChannel(ctx2,evt){const{xChannel}=evt.channel;const color=ctx2.areaValue.decrementChannel(xChannel,evt.step);set.value(ctx2,color)},incrementYChannel(ctx2,evt){const{yChannel}=evt.channel;const color=ctx2.areaValue.incrementChannel(yChannel,evt.step);set.value(ctx2,color)},decrementYChannel(ctx2,evt){const{yChannel}=evt.channel;const color=ctx2.areaValue.decrementChannel(yChannel,evt.step);set.value(ctx2,color)},setChannelToMax(ctx2,evt){const range=ctx2.value.getChannelRange(evt.channel);const color=ctx2.value.withChannelValue(evt.channel,range.maxValue);set.value(ctx2,color)},setChannelToMin(ctx2,evt){const range=ctx2.value.getChannelRange(evt.channel);const color=ctx2.value.withChannelValue(evt.channel,range.minValue);set.value(ctx2,color)},focusAreaThumb(ctx2){(0,import_dom_query3.raf)(()=>{dom.getAreaThumbEl(ctx2)?.focus({preventScroll:true})})},focusChannelThumb(ctx2,evt){(0,import_dom_query3.raf)(()=>{dom.getChannelSliderThumbEl(ctx2,evt.channel)?.focus({preventScroll:true})})},setInitialFocus(ctx2){(0,import_dom_query3.raf)(()=>{const element=(0,import_dom_query3.getInitialFocus)({root:dom.getContentEl(ctx2),getInitialEl:ctx2.initialFocusEl});element?.focus({preventScroll:true})})},setReturnFocus(ctx2){(0,import_dom_query3.raf)(()=>{dom.getTriggerEl(ctx2)?.focus({preventScroll:true})})},syncFormatSelectElement(ctx2){sync.formatSelect(ctx2)},invokeOnOpen(ctx2){ctx2.onOpenChange?.({open:true})},invokeOnClose(ctx2){ctx2.onOpenChange?.({open:false})},toggleVisibility(ctx2,evt,{send}){send({type:ctx2.open?"CONTROLLED.OPEN":"CONTROLLED.CLOSE",previousEvent:evt})}},compareFns:{value:(a,b)=>a.isEqual(b)}})}var sync={inputs(ctx,color){const channelInputs=dom.getChannelInputEls(ctx);(0,import_dom_query3.raf)(()=>{channelInputs.forEach(inputEl=>{const channel=inputEl.dataset.channel;dom.setValue(inputEl,getChannelValue(color||ctx.value,channel))})})},formatSelect(ctx){const selectEl=dom.getFormatSelectEl(ctx);(0,import_dom_query3.raf)(()=>{dom.setValue(selectEl,ctx.format)})}};var invoke={changeEnd(ctx){const value=ctx.value.toFormat(ctx.format);ctx.onValueChangeEnd?.({value,valueAsString:ctx.valueAsString})},change(ctx){const value=ctx.value.toFormat(ctx.format);ctx.onValueChange?.({value,valueAsString:ctx.valueAsString});(0,import_form_utils.dispatchInputValueEvent)(dom.getHiddenInputEl(ctx),{value:ctx.valueAsString})},formatChange(ctx){ctx.onFormatChange?.({format:ctx.format})}};var set={value(ctx,color){if(!color||ctx.value.isEqual(color))return;ctx.value=color;invoke.change(ctx)},format(ctx,format){if(ctx.format===format)return;ctx.format=format;invoke.formatChange(ctx)}};0&&(module.exports={anatomy,connect,machine,parse});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/color-picker.anatomy.ts","../src/color-picker.connect.ts","../src/color-picker.dom.ts","../src/utils/get-channel-display-color.ts","../src/utils/get-channel-input-value.ts","../src/utils/get-slider-background.ts","../src/color-picker.machine.ts","../src/color-picker.parse.ts"],"sourcesContent":["export type { FocusOutsideEvent, InteractOutsideEvent, PointerDownOutsideEvent } from \"@zag-js/dismissable\"\nexport { anatomy } from \"./color-picker.anatomy\"\nexport { connect } from \"./color-picker.connect\"\nexport { machine } from \"./color-picker.machine\"\nexport { parse } from \"./color-picker.parse\"\nexport type {\n MachineApi as Api,\n AreaProps,\n ChannelInputProps,\n ChannelProps,\n Color,\n ColorAxes,\n ColorChannel,\n ColorFormat,\n ColorType,\n UserDefinedContext as Context,\n ElementIds,\n FormatChangeDetails,\n OpenChangeDetails,\n PositioningOptions,\n SwatchProps,\n SwatchTriggerProps,\n SwatchTriggerState,\n TransparencyGridProps,\n ValueChangeDetails,\n} from \"./color-picker.types\"\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"color-picker\", [\n \"root\",\n \"label\",\n \"control\",\n \"trigger\",\n \"positioner\",\n \"content\",\n \"area\",\n \"areaThumb\",\n \"areaBackground\",\n \"channelSlider\",\n \"channelSliderTrack\",\n \"channelSliderThumb\",\n \"channelInput\",\n \"transparencyGrid\",\n \"swatchGroup\",\n \"swatchTrigger\",\n \"swatchIndicator\",\n \"swatch\",\n \"eyeDropperTrigger\",\n \"formatTrigger\",\n \"formatSelect\",\n])\n\nexport const parts = anatomy.build()\n","import { getColorAreaGradient, normalizeColor } from \"@zag-js/color-utils\"\nimport {\n getEventKey,\n getEventPoint,\n getEventStep,\n isLeftClick,\n isModifierKey,\n type EventKeyMap,\n} from \"@zag-js/dom-event\"\nimport { dataAttr, query, visuallyHiddenStyle } from \"@zag-js/dom-query\"\nimport { getPlacementStyles } from \"@zag-js/popper\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./color-picker.anatomy\"\nimport { dom } from \"./color-picker.dom\"\nimport type {\n AreaProps,\n ColorFormat,\n MachineApi,\n Send,\n State,\n SwatchTriggerProps,\n SwatchTriggerState,\n} from \"./color-picker.types\"\nimport { getChannelDisplayColor } from \"./utils/get-channel-display-color\"\nimport { getChannelRange, getChannelValue } from \"./utils/get-channel-input-value\"\nimport { getSliderBackground } from \"./utils/get-slider-background\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const value = state.context.value\n const areaValue = state.context.areaValue\n const valueAsString = state.context.valueAsString\n\n const disabled = state.context.isDisabled\n const interactive = state.context.isInteractive\n\n const dragging = state.hasTag(\"dragging\")\n const open = state.hasTag(\"open\")\n const focused = state.hasTag(\"focused\")\n\n const getAreaChannels = (props: AreaProps) => {\n const channels = areaValue.getChannels()\n return {\n xChannel: props.xChannel ?? channels[1],\n yChannel: props.yChannel ?? channels[2],\n }\n }\n\n const currentPlacement = state.context.currentPlacement\n const popperStyles = getPlacementStyles({\n ...state.context.positioning,\n placement: currentPlacement,\n })\n\n function getSwatchTriggerState(props: SwatchTriggerProps): SwatchTriggerState {\n const color = normalizeColor(props.value).toFormat(state.context.format)\n return {\n value: color,\n valueAsString: color.toString(\"hex\"),\n checked: color.isEqual(value),\n disabled: props.disabled || !interactive,\n }\n }\n\n return {\n dragging,\n open,\n valueAsString,\n value,\n setOpen(nextOpen) {\n if (nextOpen === open) return\n send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" })\n },\n setValue(value) {\n send({ type: \"VALUE.SET\", value: normalizeColor(value), src: \"set-color\" })\n },\n getChannelValue(channel) {\n return getChannelValue(value, channel)\n },\n setChannelValue(channel, channelValue) {\n const color = value.withChannelValue(channel, channelValue)\n send({ type: \"VALUE.SET\", value: color, src: \"set-channel\" })\n },\n format: state.context.format,\n setFormat(format) {\n const formatValue = value.toFormat(format)\n send({ type: \"VALUE.SET\", value: formatValue, src: \"set-format\" })\n },\n alpha: value.getChannelValue(\"alpha\"),\n setAlpha(alphaValue) {\n const color = value.withChannelValue(\"alpha\", alphaValue)\n send({ type: \"VALUE.SET\", value: color, src: \"set-alpha\" })\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n style: {\n \"--value\": value.toString(\"css\"),\n },\n }),\n\n labelProps: normalize.element({\n ...parts.label.attrs,\n dir: state.context.dir,\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n \"data-focus\": dataAttr(focused),\n onClick(event) {\n event.preventDefault()\n const inputEl = query(dom.getControlEl(state.context), \"[data-channel=hex]\")\n inputEl?.focus({ preventScroll: true })\n },\n }),\n\n controlProps: normalize.element({\n ...parts.control.attrs,\n id: dom.getControlId(state.context),\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n }),\n\n triggerProps: normalize.button({\n ...parts.trigger.attrs,\n id: dom.getTriggerId(state.context),\n dir: state.context.dir,\n disabled: disabled,\n \"aria-label\": `select color. current color is ${valueAsString}`,\n \"aria-controls\": dom.getContentId(state.context),\n \"aria-labelledby\": dom.getLabelId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n \"data-placement\": currentPlacement,\n \"aria-expanded\": dataAttr(open),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n type: \"button\",\n onClick() {\n if (!interactive) return\n send({ type: \"TRIGGER.CLICK\" })\n },\n onBlur() {\n if (!interactive) return\n send({ type: \"TRIGGER.BLUR\" })\n },\n style: {\n position: \"relative\",\n },\n }),\n\n positionerProps: normalize.element({\n ...parts.positioner.attrs,\n id: dom.getPositionerId(state.context),\n dir: state.context.dir,\n style: popperStyles.floating,\n }),\n\n contentProps: normalize.element({\n ...parts.content.attrs,\n id: dom.getContentId(state.context),\n dir: state.context.dir,\n \"data-placement\": currentPlacement,\n \"data-state\": open ? \"open\" : \"closed\",\n hidden: !open,\n }),\n\n getAreaProps(props = {}) {\n const { xChannel, yChannel } = getAreaChannels(props)\n const { areaStyles } = getColorAreaGradient(areaValue, {\n xChannel,\n yChannel,\n dir: state.context.dir,\n })\n\n return normalize.element({\n ...parts.area.attrs,\n id: dom.getAreaId(state.context),\n role: \"group\",\n onPointerDown(event) {\n if (!interactive) return\n if (!isLeftClick(event)) return\n if (isModifierKey(event)) return\n\n const point = getEventPoint(event)\n const channel = { xChannel, yChannel }\n\n send({ type: \"AREA.POINTER_DOWN\", point, channel, id: \"area\" })\n event.preventDefault()\n },\n style: {\n position: \"relative\",\n touchAction: \"none\",\n forcedColorAdjust: \"none\",\n ...areaStyles,\n },\n })\n },\n\n getAreaBackgroundProps(props = {}) {\n const { xChannel, yChannel } = getAreaChannels(props)\n const { areaGradientStyles } = getColorAreaGradient(areaValue, {\n xChannel,\n yChannel,\n dir: state.context.dir,\n })\n\n return normalize.element({\n ...parts.areaBackground.attrs,\n id: dom.getAreaGradientId(state.context),\n style: {\n position: \"relative\",\n touchAction: \"none\",\n forcedColorAdjust: \"none\",\n ...areaGradientStyles,\n },\n })\n },\n\n getAreaThumbProps(props = {}) {\n const { xChannel, yChannel } = getAreaChannels(props)\n const channel = { xChannel, yChannel }\n\n const xPercent = areaValue.getChannelValuePercent(xChannel)\n const yPercent = 1 - areaValue.getChannelValuePercent(yChannel)\n\n const xValue = areaValue.getChannelValue(xChannel)\n const yValue = areaValue.getChannelValue(yChannel)\n\n return normalize.element({\n ...parts.areaThumb.attrs,\n id: dom.getAreaThumbId(state.context),\n dir: state.context.dir,\n tabIndex: disabled ? undefined : 0,\n \"data-disabled\": dataAttr(disabled),\n role: \"slider\",\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100,\n \"aria-valuenow\": xValue,\n \"aria-label\": `${xChannel} and ${yChannel}`,\n \"aria-roledescription\": \"2d slider\",\n \"aria-valuetext\": `${xChannel} ${xValue}, ${yChannel} ${yValue}`,\n style: {\n position: \"absolute\",\n left: `${xPercent * 100}%`,\n top: `${yPercent * 100}%`,\n transform: \"translate(-50%, -50%)\",\n touchAction: \"none\",\n forcedColorAdjust: \"none\",\n background: areaValue.withChannelValue(\"alpha\", 1).toString(\"css\"),\n },\n onFocus() {\n if (!interactive) return\n send({ type: \"AREA.FOCUS\", id: \"area\", channel })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n\n const step = getEventStep(event)\n\n const keyMap: EventKeyMap = {\n ArrowUp() {\n send({ type: \"AREA.ARROW_UP\", channel, step })\n },\n ArrowDown() {\n send({ type: \"AREA.ARROW_DOWN\", channel, step })\n },\n ArrowLeft() {\n send({ type: \"AREA.ARROW_LEFT\", channel, step })\n },\n ArrowRight() {\n send({ type: \"AREA.ARROW_RIGHT\", channel, step })\n },\n PageUp() {\n send({ type: \"AREA.PAGE_UP\", channel, step })\n },\n PageDown() {\n send({ type: \"AREA.PAGE_DOWN\", channel, step })\n },\n Escape(event) {\n event.stopPropagation()\n },\n }\n\n const exec = keyMap[getEventKey(event, state.context)]\n\n if (exec) {\n exec(event)\n event.preventDefault()\n }\n },\n })\n },\n\n getTransparencyGridProps(props = {}) {\n const { size = \"12px\" } = props\n return normalize.element({\n ...parts.transparencyGrid.attrs,\n style: {\n \"--size\": size,\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n backgroundColor: \"#fff\",\n backgroundImage: \"conic-gradient(#eeeeee 0 25%, transparent 0 50%, #eeeeee 0 75%, transparent 0)\",\n backgroundSize: \"var(--size) var(--size)\",\n inset: \"0px\",\n zIndex: \"auto\",\n pointerEvents: \"none\",\n },\n })\n },\n\n getChannelSliderProps(props) {\n const { orientation = \"horizontal\", channel } = props\n return normalize.element({\n ...parts.channelSlider.attrs,\n \"data-channel\": channel,\n \"data-orientation\": orientation,\n role: \"presentation\",\n onPointerDown(event) {\n if (!interactive) return\n if (!isLeftClick(event)) return\n if (isModifierKey(event)) return\n\n const point = getEventPoint(event)\n send({ type: \"CHANNEL_SLIDER.POINTER_DOWN\", channel, point, id: channel, orientation })\n\n event.preventDefault()\n },\n style: {\n position: \"relative\",\n touchAction: \"none\",\n },\n })\n },\n\n getChannelSliderTrackProps(props) {\n const { orientation = \"horizontal\", channel } = props\n\n return normalize.element({\n ...parts.channelSliderTrack.attrs,\n id: dom.getChannelSliderId(state.context, channel),\n role: \"group\",\n \"data-channel\": channel,\n \"data-orientation\": orientation,\n style: {\n position: \"relative\",\n forcedColorAdjust: \"none\",\n backgroundImage: getSliderBackground({\n orientation,\n channel,\n dir: state.context.dir,\n value: areaValue,\n }),\n },\n })\n },\n\n getChannelSliderThumbProps(props) {\n const { orientation = \"horizontal\", channel } = props\n const { minValue, maxValue, step: stepValue } = areaValue.getChannelRange(channel)\n const channelValue = areaValue.getChannelValue(channel)\n\n const offset = (channelValue - minValue) / (maxValue - minValue)\n\n const placementStyles =\n orientation === \"horizontal\"\n ? { left: `${offset * 100}%`, top: \"50%\" }\n : { top: `${offset * 100}%`, left: \"50%\" }\n\n return normalize.element({\n ...parts.channelSliderThumb.attrs,\n id: dom.getChannelSliderThumbId(state.context, channel),\n role: \"slider\",\n \"aria-label\": channel,\n tabIndex: disabled ? undefined : 0,\n \"data-channel\": channel,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": orientation,\n \"aria-disabled\": dataAttr(disabled),\n \"aria-orientation\": orientation,\n \"aria-valuemax\": maxValue,\n \"aria-valuemin\": minValue,\n \"aria-valuenow\": channelValue,\n \"aria-valuetext\": `${channel} ${channelValue}`,\n style: {\n forcedColorAdjust: \"none\",\n position: \"absolute\",\n background: getChannelDisplayColor(areaValue, channel).toString(\"css\"),\n ...placementStyles,\n },\n onFocus() {\n if (!interactive) return\n send({ type: \"CHANNEL_SLIDER.FOCUS\", channel })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n\n const step = getEventStep(event) * stepValue\n\n const keyMap: EventKeyMap = {\n ArrowUp() {\n send({ type: \"CHANNEL_SLIDER.ARROW_UP\", channel, step })\n },\n ArrowDown() {\n send({ type: \"CHANNEL_SLIDER.ARROW_DOWN\", channel, step })\n },\n ArrowLeft() {\n send({ type: \"CHANNEL_SLIDER.ARROW_LEFT\", channel, step })\n },\n ArrowRight() {\n send({ type: \"CHANNEL_SLIDER.ARROW_RIGHT\", channel, step })\n },\n PageUp() {\n send({ type: \"CHANNEL_SLIDER.PAGE_UP\", channel })\n },\n PageDown() {\n send({ type: \"CHANNEL_SLIDER.PAGE_DOWN\", channel })\n },\n Home() {\n send({ type: \"CHANNEL_SLIDER.HOME\", channel })\n },\n End() {\n send({ type: \"CHANNEL_SLIDER.END\", channel })\n },\n Escape(event) {\n event.stopPropagation()\n },\n }\n\n const exec = keyMap[getEventKey(event, state.context)]\n\n if (exec) {\n exec(event)\n event.preventDefault()\n }\n },\n })\n },\n\n getChannelInputProps(props) {\n const { channel } = props\n const isTextField = channel === \"hex\" || channel === \"css\"\n const range = getChannelRange(value, channel)\n\n return normalize.input({\n ...parts.channelInput.attrs,\n dir: state.context.dir,\n type: isTextField ? \"text\" : \"number\",\n \"data-channel\": channel,\n \"aria-label\": channel,\n spellCheck: false,\n autoComplete: \"off\",\n disabled: disabled,\n \"data-disabled\": dataAttr(disabled),\n readOnly: state.context.readOnly,\n defaultValue: getChannelValue(value, channel),\n min: range?.minValue,\n max: range?.maxValue,\n step: range?.step,\n onBeforeInput(event) {\n if (isTextField || !interactive) return\n const value = event.currentTarget.value\n if (value.match(/[^0-9.]/g)) {\n event.preventDefault()\n }\n },\n onFocus(event) {\n if (!interactive) return\n send({ type: \"CHANNEL_INPUT.FOCUS\", channel })\n event.target.select()\n },\n onBlur(event) {\n if (!interactive) return\n const value = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber\n send({ type: \"CHANNEL_INPUT.BLUR\", channel, value, isTextField })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n if (event.key === \"Enter\") {\n const value = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber\n send({ type: \"CHANNEL_INPUT.CHANGE\", channel, value, isTextField })\n event.preventDefault()\n }\n },\n style: {\n appearance: \"none\",\n WebkitAppearance: \"none\",\n MozAppearance: \"textfield\",\n },\n })\n },\n\n hiddenInputProps: normalize.input({\n type: \"text\",\n disabled: disabled,\n name: state.context.name,\n id: dom.getHiddenInputId(state.context),\n style: visuallyHiddenStyle,\n defaultValue: valueAsString,\n }),\n\n eyeDropperTriggerProps: normalize.button({\n ...parts.eyeDropperTrigger.attrs,\n type: \"button\",\n dir: state.context.dir,\n disabled: disabled,\n \"data-disabled\": dataAttr(disabled),\n \"aria-label\": \"Pick a color from the screen\",\n onClick() {\n if (!interactive) return\n send(\"EYEDROPPER.CLICK\")\n },\n }),\n\n swatchGroupProps: normalize.element({\n ...parts.swatchGroup.attrs,\n role: \"group\",\n }),\n\n getSwatchTriggerState,\n\n getSwatchTriggerProps(props) {\n const triggerState = getSwatchTriggerState(props)\n return normalize.button({\n ...parts.swatchTrigger.attrs,\n disabled: triggerState.disabled,\n dir: state.context.dir,\n type: \"button\",\n \"aria-label\": `select ${triggerState.valueAsString} as the color`,\n \"data-state\": triggerState.checked ? \"checked\" : \"unchecked\",\n \"data-value\": triggerState.valueAsString,\n \"data-disabled\": dataAttr(triggerState.disabled),\n onClick() {\n if (triggerState.disabled) return\n send({ type: \"SWATCH_TRIGGER.CLICK\", value: triggerState.value })\n },\n style: {\n position: \"relative\",\n },\n })\n },\n\n getSwatchIndicatorProps(props) {\n const triggerState = getSwatchTriggerState(props)\n return normalize.element({\n ...parts.swatchIndicator.attrs,\n dir: state.context.dir,\n hidden: !triggerState.checked,\n })\n },\n\n getSwatchProps(props) {\n const { respectAlpha = true } = props\n const triggerState = getSwatchTriggerState(props)\n return normalize.element({\n ...parts.swatch.attrs,\n dir: state.context.dir,\n \"data-state\": triggerState.checked ? \"checked\" : \"unchecked\",\n \"data-value\": triggerState.valueAsString,\n style: {\n position: \"relative\",\n background: triggerState.value.toString(respectAlpha ? \"css\" : \"hex\"),\n },\n })\n },\n\n formatTriggerProps: normalize.button({\n ...parts.formatTrigger.attrs,\n dir: state.context.dir,\n type: \"button\",\n \"aria-label\": `change color format to ${getNextFormat(state.context.format)}`,\n onClick(event) {\n if (event.currentTarget.disabled) return\n const nextFormat = getNextFormat(state.context.format)\n send({ type: \"FORMAT.SET\", format: nextFormat, src: \"format-trigger\" })\n },\n }),\n\n formatSelectProps: normalize.select({\n ...parts.formatSelect.attrs,\n \"aria-label\": \"change color format\",\n dir: state.context.dir,\n defaultValue: state.context.format,\n disabled: disabled,\n onChange(event) {\n const format = assertFormat(event.currentTarget.value)\n send({ type: \"FORMAT.SET\", format, src: \"format-select\" })\n },\n }),\n }\n}\n\nconst formats: ColorFormat[] = [\"hsba\", \"hsla\", \"rgba\"]\nconst formatRegex = new RegExp(`^(${formats.join(\"|\")})$`)\n\nfunction getNextFormat(format: ColorFormat) {\n const index = formats.indexOf(format)\n return formats[index + 1] ?? formats[0]\n}\n\nfunction assertFormat(format: string) {\n if (formatRegex.test(format)) return format as ColorFormat\n throw new Error(`Unsupported color format: ${format}`)\n}\n","import type { ColorChannel } from \"@zag-js/color-utils\"\nimport { getRelativePoint, type Point } from \"@zag-js/dom-event\"\nimport { createScope, queryAll } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx } from \"./color-picker.types\"\n\nexport const dom = createScope({\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `color-picker:${ctx.id}`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `color-picker:${ctx.id}:label`,\n getHiddenInputId: (ctx: Ctx) => `color-picker:${ctx.id}:hidden-input`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `color-picker:${ctx.id}:control`,\n getTriggerId: (ctx: Ctx) => ctx.ids?.trigger ?? `color-picker:${ctx.id}:trigger`,\n getContentId: (ctx: Ctx) => ctx.ids?.content ?? `color-picker:${ctx.id}:content`,\n getPositionerId: (ctx: Ctx) => `color-picker:${ctx.id}:positioner`,\n getFormatSelectId: (ctx: Ctx) => `color-picker:${ctx.id}:format-select`,\n\n getAreaId: (ctx: Ctx) => ctx.ids?.area ?? `color-picker:${ctx.id}:area`,\n getAreaGradientId: (ctx: Ctx) => ctx.ids?.areaGradient ?? `color-picker:${ctx.id}:area-gradient`,\n getAreaThumbId: (ctx: Ctx) => ctx.ids?.areaThumb ?? `color-picker:${ctx.id}:area-thumb`,\n\n getChannelSliderId: (ctx: Ctx, channel: ColorChannel) =>\n ctx.ids?.channelSliderTrack?.(channel) ?? `color-picker:${ctx.id}:slider-track:${channel}`,\n getChannelSliderThumbId: (ctx: Ctx, channel: ColorChannel) =>\n ctx.ids?.channelSliderThumb?.(channel) ?? `color-picker:${ctx.id}:slider-thumb:${channel}`,\n\n getContentEl: (ctx: Ctx) => dom.getById(ctx, dom.getContentId(ctx)),\n getAreaThumbEl: (ctx: Ctx) => dom.getById(ctx, dom.getAreaThumbId(ctx)),\n getChannelSliderThumbEl: (ctx: Ctx, channel: ColorChannel) =>\n dom.getById(ctx, dom.getChannelSliderThumbId(ctx, channel)),\n getChannelInputEl: (ctx: Ctx, channel: string): HTMLInputElement[] => {\n return [\n ...queryAll<HTMLInputElement>(dom.getContentEl(ctx), `input[data-channel=\"${channel}\"]`),\n ...queryAll<HTMLInputElement>(dom.getControlEl(ctx), `input[data-channel=\"${channel}\"]`),\n ]\n },\n getFormatSelectEl: (ctx: Ctx) => dom.getById<HTMLSelectElement>(ctx, dom.getFormatSelectId(ctx)),\n\n getHiddenInputEl: (ctx: Ctx) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx)),\n getAreaEl: (ctx: Ctx) => dom.getById(ctx, dom.getAreaId(ctx)),\n getAreaValueFromPoint(ctx: Ctx, point: Point) {\n const areaEl = dom.getAreaEl(ctx)\n if (!areaEl) return\n const { percent } = getRelativePoint(point, areaEl)\n return percent\n },\n\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getTriggerEl: (ctx: Ctx) => dom.getById(ctx, dom.getTriggerId(ctx)),\n getPositionerEl: (ctx: Ctx) => dom.getById(ctx, dom.getPositionerId(ctx)),\n getChannelSliderTrackEl: (ctx: Ctx, channel: ColorChannel) => {\n return dom.getById(ctx, dom.getChannelSliderId(ctx, channel))\n },\n getChannelSliderValueFromPoint(ctx: Ctx, point: Point, channel: ColorChannel) {\n const trackEl = dom.getChannelSliderTrackEl(ctx, channel)\n if (!trackEl) return\n const { percent } = getRelativePoint(point, trackEl)\n return percent\n },\n getChannelInputEls: (ctx: Ctx) => {\n return [\n ...queryAll<HTMLInputElement>(dom.getContentEl(ctx), \"input[data-channel]\"),\n ...queryAll<HTMLInputElement>(dom.getControlEl(ctx), \"input[data-channel]\"),\n ]\n },\n})\n","import { parseColor, type Color, type ColorChannel } from \"@zag-js/color-utils\"\n\nexport function getChannelDisplayColor(color: Color, channel: ColorChannel) {\n switch (channel) {\n case \"hue\":\n return parseColor(`hsl(${color.getChannelValue(\"hue\")}, 100%, 50%)`)\n case \"lightness\":\n case \"brightness\":\n case \"saturation\":\n case \"red\":\n case \"green\":\n case \"blue\":\n return color.withChannelValue(\"alpha\", 1)\n case \"alpha\": {\n return color\n }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n}\n","import { parseColor, type Color, type ColorChannelRange } from \"@zag-js/color-utils\"\nimport type { ExtendedColorChannel } from \"../color-picker.types\"\n\nexport function getChannelValue(color: Color, channel: ExtendedColorChannel | null | undefined): string {\n if (channel == null) return \"\"\n\n if (channel === \"hex\") {\n return color.toString(\"hex\")\n }\n\n if (channel === \"css\") {\n return color.toString(\"css\")\n }\n\n if (channel in color) {\n return color.getChannelValue(channel).toString()\n }\n\n const isHSL = color.getFormat() === \"hsla\"\n\n switch (channel) {\n case \"hue\":\n return isHSL\n ? color.toFormat(\"hsla\").getChannelValue(\"hue\").toString()\n : color.toFormat(\"hsba\").getChannelValue(\"hue\").toString()\n\n case \"saturation\":\n return isHSL\n ? color.toFormat(\"hsla\").getChannelValue(\"saturation\").toString()\n : color.toFormat(\"hsba\").getChannelValue(\"saturation\").toString()\n\n case \"lightness\":\n return color.toFormat(\"hsla\").getChannelValue(\"lightness\").toString()\n\n case \"brightness\":\n return color.toFormat(\"hsba\").getChannelValue(\"brightness\").toString()\n\n case \"red\":\n case \"green\":\n case \"blue\":\n return color.toFormat(\"rgba\").getChannelValue(channel).toString()\n\n default:\n return color.getChannelValue(channel).toString()\n }\n}\n\nexport function getChannelRange(color: Color, channel: ExtendedColorChannel): ColorChannelRange | undefined {\n switch (channel) {\n case \"hex\":\n const minColor = parseColor(\"#000000\")\n const maxColor = parseColor(\"#FFFFFF\")\n return {\n minValue: minColor.toHexInt(),\n maxValue: maxColor.toHexInt(),\n pageSize: 10,\n step: 1,\n }\n\n case \"css\":\n return undefined\n\n case \"hue\":\n case \"saturation\":\n case \"lightness\":\n return color.toFormat(\"hsla\").getChannelRange(channel)\n\n case \"brightness\":\n return color.toFormat(\"hsba\").getChannelRange(channel)\n\n case \"red\":\n case \"green\":\n case \"blue\":\n return color.toFormat(\"rgba\").getChannelRange(channel)\n\n default:\n return color.getChannelRange(channel)\n }\n}\n","import type { ChannelProps, Color, MachineContext } from \"../color-picker.types\"\n\nfunction getSliderBackgroundDirection(orientation: \"vertical\" | \"horizontal\", dir: \"ltr\" | \"rtl\") {\n if (orientation === \"vertical\") {\n return \"top\"\n } else if (dir === \"ltr\") {\n return \"right\"\n } else {\n return \"left\"\n }\n}\n\ninterface SliderBackgroundProps extends Required<ChannelProps> {\n value: Color\n dir: MachineContext[\"dir\"]\n}\n\nexport const getSliderBackground = (props: SliderBackgroundProps) => {\n const { channel, value, dir } = props\n const bgDirection = getSliderBackgroundDirection(props.orientation, dir!)\n const { minValue, maxValue } = value.getChannelRange(channel)\n\n switch (channel) {\n case \"hue\":\n return `linear-gradient(to ${bgDirection}, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)`\n case \"lightness\": {\n let start = value.withChannelValue(channel, minValue).toString(\"css\")\n let middle = value.withChannelValue(channel, (maxValue - minValue) / 2).toString(\"css\")\n let end = value.withChannelValue(channel, maxValue).toString(\"css\")\n return `linear-gradient(to ${bgDirection}, ${start}, ${middle}, ${end})`\n }\n case \"saturation\":\n case \"brightness\":\n case \"red\":\n case \"green\":\n case \"blue\":\n case \"alpha\": {\n let start = value.withChannelValue(channel, minValue).toString(\"css\")\n let end = value.withChannelValue(channel, maxValue).toString(\"css\")\n return `linear-gradient(to ${bgDirection}, ${start}, ${end})`\n }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n}\n","import { parseColor, type Color } from \"@zag-js/color-utils\"\nimport { createMachine, guards } from \"@zag-js/core\"\nimport { trackDismissableElement } from \"@zag-js/dismissable\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { getInitialFocus, raf } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent, trackFormControl } from \"@zag-js/form-utils\"\nimport { getPlacement } from \"@zag-js/popper\"\nimport { disableTextSelection } from \"@zag-js/text-selection\"\nimport { compact, tryCatch } from \"@zag-js/utils\"\nimport { dom } from \"./color-picker.dom\"\nimport { parse } from \"./color-picker.parse\"\nimport type {\n ColorFormat,\n ColorType,\n ExtendedColorChannel,\n MachineContext,\n MachineState,\n UserDefinedContext,\n} from \"./color-picker.types\"\nimport { getChannelValue } from \"./utils/get-channel-input-value\"\n\nconst { and } = guards\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"color-picker\",\n initial: ctx.open ? \"open\" : \"idle\",\n context: {\n dir: \"ltr\",\n value: parse(\"#000000\"),\n format: \"rgba\",\n disabled: false,\n closeOnSelect: false,\n ...ctx,\n activeId: null,\n activeChannel: null,\n activeOrientation: null,\n fieldsetDisabled: false,\n restoreFocus: true,\n positioning: {\n ...ctx.positioning,\n placement: \"bottom\",\n },\n },\n\n computed: {\n isRtl: (ctx) => ctx.dir === \"rtl\",\n isDisabled: (ctx) => !!ctx.disabled || ctx.fieldsetDisabled,\n isInteractive: (ctx) => !(ctx.isDisabled || ctx.readOnly),\n valueAsString: (ctx) => ctx.value.toString(ctx.format),\n areaValue: (ctx) => {\n const format = ctx.format.startsWith(\"hsl\") ? \"hsla\" : \"hsba\"\n return ctx.value.toFormat(format)\n },\n },\n\n activities: [\"trackFormControl\"],\n\n watch: {\n value: [\"syncInputElements\"],\n format: [\"syncFormatSelectElement\"],\n open: [\"toggleVisibility\"],\n },\n\n on: {\n \"VALUE.SET\": {\n actions: [\"setValue\"],\n },\n \"FORMAT.SET\": {\n actions: [\"setFormat\"],\n },\n \"CHANNEL_INPUT.CHANGE\": {\n actions: [\"setChannelColorFromInput\"],\n },\n \"EYEDROPPER.CLICK\": {\n actions: [\"openEyeDropper\"],\n },\n },\n\n states: {\n idle: {\n tags: [\"closed\"],\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open\",\n actions: [\"setInitialFocus\"],\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"],\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setInitialFocus\"],\n },\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"],\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setInitialFocus\"],\n },\n ],\n \"CHANNEL_INPUT.FOCUS\": {\n target: \"focused\",\n actions: [\"setActiveChannel\"],\n },\n },\n },\n\n focused: {\n tags: [\"closed\", \"focused\"],\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open\",\n actions: [\"setInitialFocus\"],\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"],\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setInitialFocus\"],\n },\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"],\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setInitialFocus\"],\n },\n ],\n \"CHANNEL_INPUT.FOCUS\": {\n actions: [\"setActiveChannel\"],\n },\n \"CHANNEL_INPUT.BLUR\": {\n target: \"idle\",\n actions: [\"setChannelColorFromInput\"],\n },\n \"TRIGGER.BLUR\": {\n target: \"idle\",\n },\n },\n },\n\n open: {\n tags: [\"open\"],\n activities: [\"trackPositioning\", \"trackDismissableElement\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"setReturnFocus\"],\n },\n {\n target: \"idle\",\n },\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n \"AREA.POINTER_DOWN\": {\n target: \"open:dragging\",\n actions: [\"setActiveChannel\", \"setAreaColorFromPoint\", \"focusAreaThumb\"],\n },\n \"AREA.FOCUS\": {\n actions: [\"setActiveChannel\"],\n },\n \"CHANNEL_SLIDER.POINTER_DOWN\": {\n target: \"open:dragging\",\n actions: [\"setActiveChannel\", \"setChannelColorFromPoint\", \"focusChannelThumb\"],\n },\n \"CHANNEL_SLIDER.FOCUS\": {\n actions: [\"setActiveChannel\"],\n },\n \"AREA.ARROW_LEFT\": {\n actions: [\"decrementXChannel\"],\n },\n \"AREA.ARROW_RIGHT\": {\n actions: [\"incrementXChannel\"],\n },\n \"AREA.ARROW_UP\": {\n actions: [\"incrementYChannel\"],\n },\n \"AREA.ARROW_DOWN\": {\n actions: [\"decrementYChannel\"],\n },\n \"AREA.PAGE_UP\": {\n actions: [\"incrementXChannel\"],\n },\n \"AREA.PAGE_DOWN\": {\n actions: [\"decrementXChannel\"],\n },\n \"CHANNEL_SLIDER.ARROW_LEFT\": {\n actions: [\"decrementChannel\"],\n },\n \"CHANNEL_SLIDER.ARROW_RIGHT\": {\n actions: [\"incrementChannel\"],\n },\n \"CHANNEL_SLIDER.ARROW_UP\": {\n actions: [\"incrementChannel\"],\n },\n \"CHANNEL_SLIDER.ARROW_DOWN\": {\n actions: [\"decrementChannel\"],\n },\n \"CHANNEL_SLIDER.PAGE_UP\": {\n actions: [\"incrementChannel\"],\n },\n \"CHANNEL_SLIDER.PAGE_DOWN\": {\n actions: [\"decrementChannel\"],\n },\n \"CHANNEL_SLIDER.HOME\": {\n actions: [\"setChannelToMin\"],\n },\n \"CHANNEL_SLIDER.END\": {\n actions: [\"setChannelToMax\"],\n },\n \"CHANNEL_INPUT.BLUR\": {\n actions: [\"setChannelColorFromInput\"],\n },\n INTERACT_OUTSIDE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setReturnFocus\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n \"SWATCH_TRIGGER.CLICK\": [\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"setValue\", \"invokeOnClose\"],\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"setValue\", \"invokeOnClose\", \"setReturnFocus\"],\n },\n {\n actions: [\"setValue\"],\n },\n ],\n },\n },\n\n \"open:dragging\": {\n tags: [\"open\"],\n exit: [\"clearActiveChannel\"],\n activities: [\"trackPointerMove\", \"disableTextSelection\", \"trackPositioning\", \"trackDismissableElement\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"setReturnFocus\"],\n },\n {\n target: \"idle\",\n },\n ],\n \"AREA.POINTER_MOVE\": {\n actions: [\"setAreaColorFromPoint\", \"focusAreaThumb\"],\n },\n \"AREA.POINTER_UP\": {\n target: \"open\",\n actions: [\"invokeOnChangeEnd\"],\n },\n \"CHANNEL_SLIDER.POINTER_MOVE\": {\n actions: [\"setChannelColorFromPoint\", \"focusChannelThumb\"],\n },\n \"CHANNEL_SLIDER.POINTER_UP\": {\n target: \"open\",\n actions: [\"invokeOnChangeEnd\"],\n },\n INTERACT_OUTSIDE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setReturnFocus\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n },\n },\n },\n },\n {\n guards: {\n closeOnSelect: (ctx) => !!ctx.closeOnSelect,\n isOpenControlled: (ctx) => !!ctx[\"open.controlled\"],\n shouldRestoreFocus: (ctx) => !!ctx.restoreFocus,\n },\n activities: {\n trackPositioning(ctx) {\n ctx.currentPlacement = ctx.positioning.placement\n const anchorEl = dom.getTriggerEl(ctx)\n const getPositionerEl = () => dom.getPositionerEl(ctx)\n return getPlacement(anchorEl, getPositionerEl, {\n ...ctx.positioning,\n defer: true,\n onComplete(data) {\n ctx.currentPlacement = data.placement\n },\n })\n },\n trackDismissableElement(ctx, _evt, { send }) {\n const getContentEl = () => dom.getContentEl(ctx)\n return trackDismissableElement(getContentEl, {\n exclude: dom.getTriggerEl(ctx),\n defer: true,\n onInteractOutside(event) {\n ctx.onInteractOutside?.(event)\n if (event.defaultPrevented) return\n ctx.restoreFocus = !(event.detail.focusable || event.detail.contextmenu)\n },\n onPointerDownOutside: ctx.onPointerDownOutside,\n onFocusOutside: ctx.onFocusOutside,\n onDismiss() {\n send({ type: \"INTERACT_OUTSIDE\" })\n },\n })\n },\n trackFormControl(ctx, _evt, { send, initialContext }) {\n const inputEl = dom.getHiddenInputEl(ctx)\n return trackFormControl(inputEl, {\n onFieldsetDisabledChange(disabled) {\n ctx.fieldsetDisabled = disabled\n },\n onFormReset() {\n send({ type: \"VALUE.SET\", value: initialContext.value, src: \"form.reset\" })\n },\n })\n },\n trackPointerMove(ctx, _evt, { send }) {\n return trackPointerMove(dom.getDoc(ctx), {\n onPointerMove({ point }) {\n const type = ctx.activeId === \"area\" ? \"AREA.POINTER_MOVE\" : \"CHANNEL_SLIDER.POINTER_MOVE\"\n send({ type, point })\n },\n onPointerUp() {\n const type = ctx.activeId === \"area\" ? \"AREA.POINTER_UP\" : \"CHANNEL_SLIDER.POINTER_UP\"\n send({ type })\n },\n })\n },\n disableTextSelection(ctx) {\n return disableTextSelection({ doc: dom.getDoc(ctx), target: dom.getContentEl(ctx) })\n },\n },\n actions: {\n openEyeDropper(ctx) {\n const isSupported = \"EyeDropper\" in dom.getWin(ctx)\n if (!isSupported) return\n const win = dom.getWin(ctx)\n const picker = new win.EyeDropper()\n picker\n .open()\n .then(({ sRGBHex }) => {\n const format = ctx.value.getFormat()\n const color = parseColor(sRGBHex).toFormat(format) as Color\n set.value(ctx, color)\n ctx.onValueChangeEnd?.({ value: ctx.value, valueAsString: ctx.valueAsString })\n })\n .catch(() => void 0)\n },\n setActiveChannel(ctx, evt) {\n ctx.activeId = evt.id\n if (evt.channel) ctx.activeChannel = evt.channel\n if (evt.orientation) ctx.activeOrientation = evt.orientation\n },\n clearActiveChannel(ctx) {\n ctx.activeChannel = null\n ctx.activeId = null\n ctx.activeOrientation = null\n },\n setAreaColorFromPoint(ctx, evt) {\n const { xChannel, yChannel } = evt.channel || ctx.activeChannel\n\n const percent = dom.getAreaValueFromPoint(ctx, evt.point)\n if (!percent) return\n\n const xValue = ctx.areaValue.getChannelPercentValue(xChannel, percent.x)\n const yValue = ctx.areaValue.getChannelPercentValue(yChannel, 1 - percent.y)\n\n const color = ctx.areaValue.withChannelValue(xChannel, xValue).withChannelValue(yChannel, yValue)\n set.value(ctx, color)\n },\n setChannelColorFromPoint(ctx, evt) {\n const channel = evt.channel || ctx.activeId\n\n const percent = dom.getChannelSliderValueFromPoint(ctx, evt.point, channel)\n if (!percent) return\n\n const orientation = ctx.activeOrientation || \"horizontal\"\n const channelPercent = orientation === \"horizontal\" ? percent.x : percent.y\n\n const value = ctx.areaValue.getChannelPercentValue(channel, channelPercent)\n const color = ctx.areaValue.withChannelValue(channel, value)\n set.value(ctx, color)\n },\n setValue(ctx, evt) {\n set.value(ctx, evt.value)\n },\n setFormat(ctx, evt) {\n set.format(ctx, evt.format)\n },\n syncInputElements(ctx) {\n sync.inputs(ctx)\n },\n invokeOnChangeEnd(ctx) {\n invoke.changeEnd(ctx)\n },\n setChannelColorFromInput(ctx, evt) {\n const { channel, isTextField, value } = evt\n const currentAlpha = ctx.value.getChannelValue(\"alpha\")\n\n // handle other text channels\n let color: Color\n\n // handle alpha channel\n if (channel === \"alpha\") {\n //\n let valueAsNumber = parseFloat(value)\n valueAsNumber = Number.isNaN(valueAsNumber) ? currentAlpha : valueAsNumber\n color = ctx.value.withChannelValue(\"alpha\", valueAsNumber)\n //\n } else if (isTextField) {\n //\n color = tryCatch(\n () => parse(value).withChannelValue(\"alpha\", currentAlpha),\n () => ctx.value,\n )\n //\n } else {\n //\n const current = ctx.value.toFormat(ctx.format)\n const valueAsNumber = Number.isNaN(value) ? current.getChannelValue(channel) : value\n color = current.withChannelValue(channel, valueAsNumber)\n //\n }\n\n // sync channel input value immediately (in event user types native css color, we need to convert it to the current channel format)\n sync.inputs(ctx, color)\n\n // set new color\n set.value(ctx, color)\n },\n incrementChannel(ctx, evt) {\n const color = ctx.value.incrementChannel(evt.channel, evt.step)\n set.value(ctx, color)\n },\n decrementChannel(ctx, evt) {\n const color = ctx.value.decrementChannel(evt.channel, evt.step)\n set.value(ctx, color)\n },\n incrementXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.areaValue.incrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n decrementXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.areaValue.decrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n incrementYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.areaValue.incrementChannel(yChannel, evt.step)\n set.value(ctx, color)\n },\n decrementYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.areaValue.decrementChannel(yChannel, evt.step)\n set.value(ctx, color)\n },\n setChannelToMax(ctx, evt) {\n const range = ctx.value.getChannelRange(evt.channel)\n const color = ctx.value.withChannelValue(evt.channel, range.maxValue)\n set.value(ctx, color)\n },\n setChannelToMin(ctx, evt) {\n const range = ctx.value.getChannelRange(evt.channel)\n const color = ctx.value.withChannelValue(evt.channel, range.minValue)\n set.value(ctx, color)\n },\n focusAreaThumb(ctx) {\n raf(() => {\n dom.getAreaThumbEl(ctx)?.focus({ preventScroll: true })\n })\n },\n focusChannelThumb(ctx, evt) {\n raf(() => {\n dom.getChannelSliderThumbEl(ctx, evt.channel)?.focus({ preventScroll: true })\n })\n },\n setInitialFocus(ctx) {\n raf(() => {\n const element = getInitialFocus(dom.getContentEl(ctx), ctx.initialFocusEl)\n element?.focus({ preventScroll: true })\n })\n },\n setReturnFocus(ctx) {\n raf(() => {\n dom.getTriggerEl(ctx)?.focus({ preventScroll: true })\n })\n },\n syncFormatSelectElement(ctx) {\n sync.formatSelect(ctx)\n },\n invokeOnOpen(ctx) {\n ctx.onOpenChange?.({ open: true })\n },\n invokeOnClose(ctx) {\n ctx.onOpenChange?.({ open: false })\n },\n toggleVisibility(ctx, evt, { send }) {\n send({ type: ctx.open ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: evt })\n },\n },\n compareFns: {\n value: (a, b) => a.isEqual(b),\n },\n },\n )\n}\n\nconst sync = {\n // sync channel inputs\n inputs(ctx: MachineContext, color?: Color) {\n const channelInputs = dom.getChannelInputEls(ctx)\n raf(() => {\n channelInputs.forEach((inputEl) => {\n const channel = inputEl.dataset.channel as ExtendedColorChannel | null\n dom.setValue(inputEl, getChannelValue(color || ctx.value, channel))\n })\n })\n },\n // sync format select\n formatSelect(ctx: MachineContext) {\n const selectEl = dom.getFormatSelectEl(ctx)\n raf(() => {\n dom.setValue(selectEl, ctx.format)\n })\n },\n}\n\nconst invoke = {\n changeEnd(ctx: MachineContext) {\n const value = ctx.value.toFormat(ctx.format)\n ctx.onValueChangeEnd?.({\n value,\n valueAsString: ctx.valueAsString,\n })\n },\n change(ctx: MachineContext) {\n const value = ctx.value.toFormat(ctx.format)\n ctx.onValueChange?.({\n value,\n valueAsString: ctx.valueAsString,\n })\n\n dispatchInputValueEvent(dom.getHiddenInputEl(ctx), { value: ctx.valueAsString })\n },\n formatChange(ctx: MachineContext) {\n ctx.onFormatChange?.({ format: ctx.format })\n },\n}\n\nconst set = {\n value(ctx: MachineContext, color: Color | ColorType | undefined) {\n if (!color || ctx.value.isEqual(color)) return\n ctx.value = color\n invoke.change(ctx)\n },\n format(ctx: MachineContext, format: ColorFormat) {\n if (ctx.format === format) return\n ctx.format = format\n invoke.formatChange(ctx)\n },\n}\n","import { parseColor, type Color } from \"@zag-js/color-utils\"\n\nexport const parse = (colorString: string): Color => {\n return parseColor(colorString)\n}\n"],"mappings":"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","names":["import_color_utils","import_dom_event","import_dom_query","import_color_utils","value","event","import_color_utils","import_dom_event","import_dom_query","import_popper","import_color_utils","ctx"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/color-picker.anatomy.ts","../src/color-picker.connect.ts","../src/color-picker.dom.ts","../src/utils/get-channel-display-color.ts","../src/utils/get-channel-input-value.ts","../src/utils/get-slider-background.ts","../src/color-picker.machine.ts","../src/color-picker.parse.ts"],"sourcesContent":["export type { FocusOutsideEvent, InteractOutsideEvent, PointerDownOutsideEvent } from \"@zag-js/dismissable\"\nexport { anatomy } from \"./color-picker.anatomy\"\nexport { connect } from \"./color-picker.connect\"\nexport { machine } from \"./color-picker.machine\"\nexport { parse } from \"./color-picker.parse\"\nexport type {\n MachineApi as Api,\n AreaProps,\n ChannelInputProps,\n ChannelProps,\n Color,\n ColorAxes,\n ColorChannel,\n ColorFormat,\n ColorType,\n UserDefinedContext as Context,\n ElementIds,\n FormatChangeDetails,\n OpenChangeDetails,\n PositioningOptions,\n SwatchProps,\n SwatchTriggerProps,\n SwatchTriggerState,\n TransparencyGridProps,\n ValueChangeDetails,\n} from \"./color-picker.types\"\n","import { createAnatomy } from \"@zag-js/anatomy\"\n\nexport const anatomy = createAnatomy(\"color-picker\", [\n \"root\",\n \"label\",\n \"control\",\n \"trigger\",\n \"positioner\",\n \"content\",\n \"area\",\n \"areaThumb\",\n \"areaBackground\",\n \"channelSlider\",\n \"channelSliderTrack\",\n \"channelSliderThumb\",\n \"channelInput\",\n \"transparencyGrid\",\n \"swatchGroup\",\n \"swatchTrigger\",\n \"swatchIndicator\",\n \"swatch\",\n \"eyeDropperTrigger\",\n \"formatTrigger\",\n \"formatSelect\",\n])\n\nexport const parts = anatomy.build()\n","import { getColorAreaGradient, normalizeColor } from \"@zag-js/color-utils\"\nimport {\n getEventKey,\n getEventPoint,\n getEventStep,\n isLeftClick,\n isModifierKey,\n type EventKeyMap,\n} from \"@zag-js/dom-event\"\nimport { dataAttr, query, visuallyHiddenStyle } from \"@zag-js/dom-query\"\nimport { getPlacementStyles } from \"@zag-js/popper\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { parts } from \"./color-picker.anatomy\"\nimport { dom } from \"./color-picker.dom\"\nimport type {\n AreaProps,\n ColorFormat,\n MachineApi,\n Send,\n State,\n SwatchTriggerProps,\n SwatchTriggerState,\n} from \"./color-picker.types\"\nimport { getChannelDisplayColor } from \"./utils/get-channel-display-color\"\nimport { getChannelRange, getChannelValue } from \"./utils/get-channel-input-value\"\nimport { getSliderBackground } from \"./utils/get-slider-background\"\n\nexport function connect<T extends PropTypes>(state: State, send: Send, normalize: NormalizeProps<T>): MachineApi<T> {\n const value = state.context.value\n const areaValue = state.context.areaValue\n const valueAsString = state.context.valueAsString\n\n const disabled = state.context.isDisabled\n const interactive = state.context.isInteractive\n\n const dragging = state.hasTag(\"dragging\")\n const open = state.hasTag(\"open\")\n const focused = state.hasTag(\"focused\")\n\n const getAreaChannels = (props: AreaProps) => {\n const channels = areaValue.getChannels()\n return {\n xChannel: props.xChannel ?? channels[1],\n yChannel: props.yChannel ?? channels[2],\n }\n }\n\n const currentPlacement = state.context.currentPlacement\n const popperStyles = getPlacementStyles({\n ...state.context.positioning,\n placement: currentPlacement,\n })\n\n function getSwatchTriggerState(props: SwatchTriggerProps): SwatchTriggerState {\n const color = normalizeColor(props.value).toFormat(state.context.format)\n return {\n value: color,\n valueAsString: color.toString(\"hex\"),\n checked: color.isEqual(value),\n disabled: props.disabled || !interactive,\n }\n }\n\n return {\n dragging,\n open,\n valueAsString,\n value,\n setOpen(nextOpen) {\n if (nextOpen === open) return\n send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" })\n },\n setValue(value) {\n send({ type: \"VALUE.SET\", value: normalizeColor(value), src: \"set-color\" })\n },\n getChannelValue(channel) {\n return getChannelValue(value, channel)\n },\n setChannelValue(channel, channelValue) {\n const color = value.withChannelValue(channel, channelValue)\n send({ type: \"VALUE.SET\", value: color, src: \"set-channel\" })\n },\n format: state.context.format,\n setFormat(format) {\n const formatValue = value.toFormat(format)\n send({ type: \"VALUE.SET\", value: formatValue, src: \"set-format\" })\n },\n alpha: value.getChannelValue(\"alpha\"),\n setAlpha(alphaValue) {\n const color = value.withChannelValue(\"alpha\", alphaValue)\n send({ type: \"VALUE.SET\", value: color, src: \"set-alpha\" })\n },\n\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n style: {\n \"--value\": value.toString(\"css\"),\n },\n }),\n\n labelProps: normalize.element({\n ...parts.label.attrs,\n dir: state.context.dir,\n id: dom.getLabelId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n \"data-focus\": dataAttr(focused),\n onClick(event) {\n event.preventDefault()\n const inputEl = query(dom.getControlEl(state.context), \"[data-channel=hex]\")\n inputEl?.focus({ preventScroll: true })\n },\n }),\n\n controlProps: normalize.element({\n ...parts.control.attrs,\n id: dom.getControlId(state.context),\n dir: state.context.dir,\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n }),\n\n triggerProps: normalize.button({\n ...parts.trigger.attrs,\n id: dom.getTriggerId(state.context),\n dir: state.context.dir,\n disabled: disabled,\n \"aria-label\": `select color. current color is ${valueAsString}`,\n \"aria-controls\": dom.getContentId(state.context),\n \"aria-labelledby\": dom.getLabelId(state.context),\n \"data-disabled\": dataAttr(disabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n \"data-placement\": currentPlacement,\n \"aria-expanded\": dataAttr(open),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n type: \"button\",\n onClick() {\n if (!interactive) return\n send({ type: \"TRIGGER.CLICK\" })\n },\n onBlur() {\n if (!interactive) return\n send({ type: \"TRIGGER.BLUR\" })\n },\n style: {\n position: \"relative\",\n },\n }),\n\n positionerProps: normalize.element({\n ...parts.positioner.attrs,\n id: dom.getPositionerId(state.context),\n dir: state.context.dir,\n style: popperStyles.floating,\n }),\n\n contentProps: normalize.element({\n ...parts.content.attrs,\n id: dom.getContentId(state.context),\n dir: state.context.dir,\n \"data-placement\": currentPlacement,\n \"data-state\": open ? \"open\" : \"closed\",\n hidden: !open,\n }),\n\n getAreaProps(props = {}) {\n const { xChannel, yChannel } = getAreaChannels(props)\n const { areaStyles } = getColorAreaGradient(areaValue, {\n xChannel,\n yChannel,\n dir: state.context.dir,\n })\n\n return normalize.element({\n ...parts.area.attrs,\n id: dom.getAreaId(state.context),\n role: \"group\",\n onPointerDown(event) {\n if (!interactive) return\n if (!isLeftClick(event)) return\n if (isModifierKey(event)) return\n\n const point = getEventPoint(event)\n const channel = { xChannel, yChannel }\n\n send({ type: \"AREA.POINTER_DOWN\", point, channel, id: \"area\" })\n event.preventDefault()\n },\n style: {\n position: \"relative\",\n touchAction: \"none\",\n forcedColorAdjust: \"none\",\n ...areaStyles,\n },\n })\n },\n\n getAreaBackgroundProps(props = {}) {\n const { xChannel, yChannel } = getAreaChannels(props)\n const { areaGradientStyles } = getColorAreaGradient(areaValue, {\n xChannel,\n yChannel,\n dir: state.context.dir,\n })\n\n return normalize.element({\n ...parts.areaBackground.attrs,\n id: dom.getAreaGradientId(state.context),\n style: {\n position: \"relative\",\n touchAction: \"none\",\n forcedColorAdjust: \"none\",\n ...areaGradientStyles,\n },\n })\n },\n\n getAreaThumbProps(props = {}) {\n const { xChannel, yChannel } = getAreaChannels(props)\n const channel = { xChannel, yChannel }\n\n const xPercent = areaValue.getChannelValuePercent(xChannel)\n const yPercent = 1 - areaValue.getChannelValuePercent(yChannel)\n\n const xValue = areaValue.getChannelValue(xChannel)\n const yValue = areaValue.getChannelValue(yChannel)\n\n return normalize.element({\n ...parts.areaThumb.attrs,\n id: dom.getAreaThumbId(state.context),\n dir: state.context.dir,\n tabIndex: disabled ? undefined : 0,\n \"data-disabled\": dataAttr(disabled),\n role: \"slider\",\n \"aria-valuemin\": 0,\n \"aria-valuemax\": 100,\n \"aria-valuenow\": xValue,\n \"aria-label\": `${xChannel} and ${yChannel}`,\n \"aria-roledescription\": \"2d slider\",\n \"aria-valuetext\": `${xChannel} ${xValue}, ${yChannel} ${yValue}`,\n style: {\n position: \"absolute\",\n left: `${xPercent * 100}%`,\n top: `${yPercent * 100}%`,\n transform: \"translate(-50%, -50%)\",\n touchAction: \"none\",\n forcedColorAdjust: \"none\",\n background: areaValue.withChannelValue(\"alpha\", 1).toString(\"css\"),\n },\n onFocus() {\n if (!interactive) return\n send({ type: \"AREA.FOCUS\", id: \"area\", channel })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n\n const step = getEventStep(event)\n\n const keyMap: EventKeyMap = {\n ArrowUp() {\n send({ type: \"AREA.ARROW_UP\", channel, step })\n },\n ArrowDown() {\n send({ type: \"AREA.ARROW_DOWN\", channel, step })\n },\n ArrowLeft() {\n send({ type: \"AREA.ARROW_LEFT\", channel, step })\n },\n ArrowRight() {\n send({ type: \"AREA.ARROW_RIGHT\", channel, step })\n },\n PageUp() {\n send({ type: \"AREA.PAGE_UP\", channel, step })\n },\n PageDown() {\n send({ type: \"AREA.PAGE_DOWN\", channel, step })\n },\n Escape(event) {\n event.stopPropagation()\n },\n }\n\n const exec = keyMap[getEventKey(event, state.context)]\n\n if (exec) {\n exec(event)\n event.preventDefault()\n }\n },\n })\n },\n\n getTransparencyGridProps(props = {}) {\n const { size = \"12px\" } = props\n return normalize.element({\n ...parts.transparencyGrid.attrs,\n style: {\n \"--size\": size,\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n backgroundColor: \"#fff\",\n backgroundImage: \"conic-gradient(#eeeeee 0 25%, transparent 0 50%, #eeeeee 0 75%, transparent 0)\",\n backgroundSize: \"var(--size) var(--size)\",\n inset: \"0px\",\n zIndex: \"auto\",\n pointerEvents: \"none\",\n },\n })\n },\n\n getChannelSliderProps(props) {\n const { orientation = \"horizontal\", channel } = props\n return normalize.element({\n ...parts.channelSlider.attrs,\n \"data-channel\": channel,\n \"data-orientation\": orientation,\n role: \"presentation\",\n onPointerDown(event) {\n if (!interactive) return\n if (!isLeftClick(event)) return\n if (isModifierKey(event)) return\n\n const point = getEventPoint(event)\n send({ type: \"CHANNEL_SLIDER.POINTER_DOWN\", channel, point, id: channel, orientation })\n\n event.preventDefault()\n },\n style: {\n position: \"relative\",\n touchAction: \"none\",\n },\n })\n },\n\n getChannelSliderTrackProps(props) {\n const { orientation = \"horizontal\", channel } = props\n\n return normalize.element({\n ...parts.channelSliderTrack.attrs,\n id: dom.getChannelSliderId(state.context, channel),\n role: \"group\",\n \"data-channel\": channel,\n \"data-orientation\": orientation,\n style: {\n position: \"relative\",\n forcedColorAdjust: \"none\",\n backgroundImage: getSliderBackground({\n orientation,\n channel,\n dir: state.context.dir,\n value: areaValue,\n }),\n },\n })\n },\n\n getChannelSliderThumbProps(props) {\n const { orientation = \"horizontal\", channel } = props\n const { minValue, maxValue, step: stepValue } = areaValue.getChannelRange(channel)\n const channelValue = areaValue.getChannelValue(channel)\n\n const offset = (channelValue - minValue) / (maxValue - minValue)\n\n const placementStyles =\n orientation === \"horizontal\"\n ? { left: `${offset * 100}%`, top: \"50%\" }\n : { top: `${offset * 100}%`, left: \"50%\" }\n\n return normalize.element({\n ...parts.channelSliderThumb.attrs,\n id: dom.getChannelSliderThumbId(state.context, channel),\n role: \"slider\",\n \"aria-label\": channel,\n tabIndex: disabled ? undefined : 0,\n \"data-channel\": channel,\n \"data-disabled\": dataAttr(disabled),\n \"data-orientation\": orientation,\n \"aria-disabled\": dataAttr(disabled),\n \"aria-orientation\": orientation,\n \"aria-valuemax\": maxValue,\n \"aria-valuemin\": minValue,\n \"aria-valuenow\": channelValue,\n \"aria-valuetext\": `${channel} ${channelValue}`,\n style: {\n forcedColorAdjust: \"none\",\n position: \"absolute\",\n background: getChannelDisplayColor(areaValue, channel).toString(\"css\"),\n ...placementStyles,\n },\n onFocus() {\n if (!interactive) return\n send({ type: \"CHANNEL_SLIDER.FOCUS\", channel })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n\n const step = getEventStep(event) * stepValue\n\n const keyMap: EventKeyMap = {\n ArrowUp() {\n send({ type: \"CHANNEL_SLIDER.ARROW_UP\", channel, step })\n },\n ArrowDown() {\n send({ type: \"CHANNEL_SLIDER.ARROW_DOWN\", channel, step })\n },\n ArrowLeft() {\n send({ type: \"CHANNEL_SLIDER.ARROW_LEFT\", channel, step })\n },\n ArrowRight() {\n send({ type: \"CHANNEL_SLIDER.ARROW_RIGHT\", channel, step })\n },\n PageUp() {\n send({ type: \"CHANNEL_SLIDER.PAGE_UP\", channel })\n },\n PageDown() {\n send({ type: \"CHANNEL_SLIDER.PAGE_DOWN\", channel })\n },\n Home() {\n send({ type: \"CHANNEL_SLIDER.HOME\", channel })\n },\n End() {\n send({ type: \"CHANNEL_SLIDER.END\", channel })\n },\n Escape(event) {\n event.stopPropagation()\n },\n }\n\n const exec = keyMap[getEventKey(event, state.context)]\n\n if (exec) {\n exec(event)\n event.preventDefault()\n }\n },\n })\n },\n\n getChannelInputProps(props) {\n const { channel } = props\n const isTextField = channel === \"hex\" || channel === \"css\"\n const range = getChannelRange(value, channel)\n\n return normalize.input({\n ...parts.channelInput.attrs,\n dir: state.context.dir,\n type: isTextField ? \"text\" : \"number\",\n \"data-channel\": channel,\n \"aria-label\": channel,\n spellCheck: false,\n autoComplete: \"off\",\n disabled: disabled,\n \"data-disabled\": dataAttr(disabled),\n readOnly: state.context.readOnly,\n defaultValue: getChannelValue(value, channel),\n min: range?.minValue,\n max: range?.maxValue,\n step: range?.step,\n onBeforeInput(event) {\n if (isTextField || !interactive) return\n const value = event.currentTarget.value\n if (value.match(/[^0-9.]/g)) {\n event.preventDefault()\n }\n },\n onFocus(event) {\n if (!interactive) return\n send({ type: \"CHANNEL_INPUT.FOCUS\", channel })\n event.target.select()\n },\n onBlur(event) {\n if (!interactive) return\n const value = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber\n send({ type: \"CHANNEL_INPUT.BLUR\", channel, value, isTextField })\n },\n onKeyDown(event) {\n if (event.defaultPrevented) return\n if (!interactive) return\n if (event.key === \"Enter\") {\n const value = isTextField ? event.currentTarget.value : event.currentTarget.valueAsNumber\n send({ type: \"CHANNEL_INPUT.CHANGE\", channel, value, isTextField })\n event.preventDefault()\n }\n },\n style: {\n appearance: \"none\",\n WebkitAppearance: \"none\",\n MozAppearance: \"textfield\",\n },\n })\n },\n\n hiddenInputProps: normalize.input({\n type: \"text\",\n disabled: disabled,\n name: state.context.name,\n id: dom.getHiddenInputId(state.context),\n style: visuallyHiddenStyle,\n defaultValue: valueAsString,\n }),\n\n eyeDropperTriggerProps: normalize.button({\n ...parts.eyeDropperTrigger.attrs,\n type: \"button\",\n dir: state.context.dir,\n disabled: disabled,\n \"data-disabled\": dataAttr(disabled),\n \"aria-label\": \"Pick a color from the screen\",\n onClick() {\n if (!interactive) return\n send(\"EYEDROPPER.CLICK\")\n },\n }),\n\n swatchGroupProps: normalize.element({\n ...parts.swatchGroup.attrs,\n role: \"group\",\n }),\n\n getSwatchTriggerState,\n\n getSwatchTriggerProps(props) {\n const triggerState = getSwatchTriggerState(props)\n return normalize.button({\n ...parts.swatchTrigger.attrs,\n disabled: triggerState.disabled,\n dir: state.context.dir,\n type: \"button\",\n \"aria-label\": `select ${triggerState.valueAsString} as the color`,\n \"data-state\": triggerState.checked ? \"checked\" : \"unchecked\",\n \"data-value\": triggerState.valueAsString,\n \"data-disabled\": dataAttr(triggerState.disabled),\n onClick() {\n if (triggerState.disabled) return\n send({ type: \"SWATCH_TRIGGER.CLICK\", value: triggerState.value })\n },\n style: {\n position: \"relative\",\n },\n })\n },\n\n getSwatchIndicatorProps(props) {\n const triggerState = getSwatchTriggerState(props)\n return normalize.element({\n ...parts.swatchIndicator.attrs,\n dir: state.context.dir,\n hidden: !triggerState.checked,\n })\n },\n\n getSwatchProps(props) {\n const { respectAlpha = true } = props\n const triggerState = getSwatchTriggerState(props)\n return normalize.element({\n ...parts.swatch.attrs,\n dir: state.context.dir,\n \"data-state\": triggerState.checked ? \"checked\" : \"unchecked\",\n \"data-value\": triggerState.valueAsString,\n style: {\n position: \"relative\",\n background: triggerState.value.toString(respectAlpha ? \"css\" : \"hex\"),\n },\n })\n },\n\n formatTriggerProps: normalize.button({\n ...parts.formatTrigger.attrs,\n dir: state.context.dir,\n type: \"button\",\n \"aria-label\": `change color format to ${getNextFormat(state.context.format)}`,\n onClick(event) {\n if (event.currentTarget.disabled) return\n const nextFormat = getNextFormat(state.context.format)\n send({ type: \"FORMAT.SET\", format: nextFormat, src: \"format-trigger\" })\n },\n }),\n\n formatSelectProps: normalize.select({\n ...parts.formatSelect.attrs,\n \"aria-label\": \"change color format\",\n dir: state.context.dir,\n defaultValue: state.context.format,\n disabled: disabled,\n onChange(event) {\n const format = assertFormat(event.currentTarget.value)\n send({ type: \"FORMAT.SET\", format, src: \"format-select\" })\n },\n }),\n }\n}\n\nconst formats: ColorFormat[] = [\"hsba\", \"hsla\", \"rgba\"]\nconst formatRegex = new RegExp(`^(${formats.join(\"|\")})$`)\n\nfunction getNextFormat(format: ColorFormat) {\n const index = formats.indexOf(format)\n return formats[index + 1] ?? formats[0]\n}\n\nfunction assertFormat(format: string) {\n if (formatRegex.test(format)) return format as ColorFormat\n throw new Error(`Unsupported color format: ${format}`)\n}\n","import type { ColorChannel } from \"@zag-js/color-utils\"\nimport { getRelativePoint, type Point } from \"@zag-js/dom-event\"\nimport { createScope, queryAll } from \"@zag-js/dom-query\"\nimport type { MachineContext as Ctx } from \"./color-picker.types\"\n\nexport const dom = createScope({\n getRootId: (ctx: Ctx) => ctx.ids?.root ?? `color-picker:${ctx.id}`,\n getLabelId: (ctx: Ctx) => ctx.ids?.label ?? `color-picker:${ctx.id}:label`,\n getHiddenInputId: (ctx: Ctx) => `color-picker:${ctx.id}:hidden-input`,\n getControlId: (ctx: Ctx) => ctx.ids?.control ?? `color-picker:${ctx.id}:control`,\n getTriggerId: (ctx: Ctx) => ctx.ids?.trigger ?? `color-picker:${ctx.id}:trigger`,\n getContentId: (ctx: Ctx) => ctx.ids?.content ?? `color-picker:${ctx.id}:content`,\n getPositionerId: (ctx: Ctx) => `color-picker:${ctx.id}:positioner`,\n getFormatSelectId: (ctx: Ctx) => `color-picker:${ctx.id}:format-select`,\n\n getAreaId: (ctx: Ctx) => ctx.ids?.area ?? `color-picker:${ctx.id}:area`,\n getAreaGradientId: (ctx: Ctx) => ctx.ids?.areaGradient ?? `color-picker:${ctx.id}:area-gradient`,\n getAreaThumbId: (ctx: Ctx) => ctx.ids?.areaThumb ?? `color-picker:${ctx.id}:area-thumb`,\n\n getChannelSliderId: (ctx: Ctx, channel: ColorChannel) =>\n ctx.ids?.channelSliderTrack?.(channel) ?? `color-picker:${ctx.id}:slider-track:${channel}`,\n getChannelSliderThumbId: (ctx: Ctx, channel: ColorChannel) =>\n ctx.ids?.channelSliderThumb?.(channel) ?? `color-picker:${ctx.id}:slider-thumb:${channel}`,\n\n getContentEl: (ctx: Ctx) => dom.getById(ctx, dom.getContentId(ctx)),\n getAreaThumbEl: (ctx: Ctx) => dom.getById(ctx, dom.getAreaThumbId(ctx)),\n getChannelSliderThumbEl: (ctx: Ctx, channel: ColorChannel) =>\n dom.getById(ctx, dom.getChannelSliderThumbId(ctx, channel)),\n getChannelInputEl: (ctx: Ctx, channel: string): HTMLInputElement[] => {\n return [\n ...queryAll<HTMLInputElement>(dom.getContentEl(ctx), `input[data-channel=\"${channel}\"]`),\n ...queryAll<HTMLInputElement>(dom.getControlEl(ctx), `input[data-channel=\"${channel}\"]`),\n ]\n },\n getFormatSelectEl: (ctx: Ctx) => dom.getById<HTMLSelectElement>(ctx, dom.getFormatSelectId(ctx)),\n\n getHiddenInputEl: (ctx: Ctx) => dom.getById<HTMLInputElement>(ctx, dom.getHiddenInputId(ctx)),\n getAreaEl: (ctx: Ctx) => dom.getById(ctx, dom.getAreaId(ctx)),\n getAreaValueFromPoint(ctx: Ctx, point: Point) {\n const areaEl = dom.getAreaEl(ctx)\n if (!areaEl) return\n const { percent } = getRelativePoint(point, areaEl)\n return percent\n },\n\n getControlEl: (ctx: Ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getTriggerEl: (ctx: Ctx) => dom.getById(ctx, dom.getTriggerId(ctx)),\n getPositionerEl: (ctx: Ctx) => dom.getById(ctx, dom.getPositionerId(ctx)),\n getChannelSliderTrackEl: (ctx: Ctx, channel: ColorChannel) => {\n return dom.getById(ctx, dom.getChannelSliderId(ctx, channel))\n },\n getChannelSliderValueFromPoint(ctx: Ctx, point: Point, channel: ColorChannel) {\n const trackEl = dom.getChannelSliderTrackEl(ctx, channel)\n if (!trackEl) return\n const { percent } = getRelativePoint(point, trackEl)\n return percent\n },\n getChannelInputEls: (ctx: Ctx) => {\n return [\n ...queryAll<HTMLInputElement>(dom.getContentEl(ctx), \"input[data-channel]\"),\n ...queryAll<HTMLInputElement>(dom.getControlEl(ctx), \"input[data-channel]\"),\n ]\n },\n})\n","import { parseColor, type Color, type ColorChannel } from \"@zag-js/color-utils\"\n\nexport function getChannelDisplayColor(color: Color, channel: ColorChannel) {\n switch (channel) {\n case \"hue\":\n return parseColor(`hsl(${color.getChannelValue(\"hue\")}, 100%, 50%)`)\n case \"lightness\":\n case \"brightness\":\n case \"saturation\":\n case \"red\":\n case \"green\":\n case \"blue\":\n return color.withChannelValue(\"alpha\", 1)\n case \"alpha\": {\n return color\n }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n}\n","import { parseColor, type Color, type ColorChannelRange } from \"@zag-js/color-utils\"\nimport type { ExtendedColorChannel } from \"../color-picker.types\"\n\nexport function getChannelValue(color: Color, channel: ExtendedColorChannel | null | undefined): string {\n if (channel == null) return \"\"\n\n if (channel === \"hex\") {\n return color.toString(\"hex\")\n }\n\n if (channel === \"css\") {\n return color.toString(\"css\")\n }\n\n if (channel in color) {\n return color.getChannelValue(channel).toString()\n }\n\n const isHSL = color.getFormat() === \"hsla\"\n\n switch (channel) {\n case \"hue\":\n return isHSL\n ? color.toFormat(\"hsla\").getChannelValue(\"hue\").toString()\n : color.toFormat(\"hsba\").getChannelValue(\"hue\").toString()\n\n case \"saturation\":\n return isHSL\n ? color.toFormat(\"hsla\").getChannelValue(\"saturation\").toString()\n : color.toFormat(\"hsba\").getChannelValue(\"saturation\").toString()\n\n case \"lightness\":\n return color.toFormat(\"hsla\").getChannelValue(\"lightness\").toString()\n\n case \"brightness\":\n return color.toFormat(\"hsba\").getChannelValue(\"brightness\").toString()\n\n case \"red\":\n case \"green\":\n case \"blue\":\n return color.toFormat(\"rgba\").getChannelValue(channel).toString()\n\n default:\n return color.getChannelValue(channel).toString()\n }\n}\n\nexport function getChannelRange(color: Color, channel: ExtendedColorChannel): ColorChannelRange | undefined {\n switch (channel) {\n case \"hex\":\n const minColor = parseColor(\"#000000\")\n const maxColor = parseColor(\"#FFFFFF\")\n return {\n minValue: minColor.toHexInt(),\n maxValue: maxColor.toHexInt(),\n pageSize: 10,\n step: 1,\n }\n\n case \"css\":\n return undefined\n\n case \"hue\":\n case \"saturation\":\n case \"lightness\":\n return color.toFormat(\"hsla\").getChannelRange(channel)\n\n case \"brightness\":\n return color.toFormat(\"hsba\").getChannelRange(channel)\n\n case \"red\":\n case \"green\":\n case \"blue\":\n return color.toFormat(\"rgba\").getChannelRange(channel)\n\n default:\n return color.getChannelRange(channel)\n }\n}\n","import type { ChannelProps, Color, MachineContext } from \"../color-picker.types\"\n\nfunction getSliderBackgroundDirection(orientation: \"vertical\" | \"horizontal\", dir: \"ltr\" | \"rtl\") {\n if (orientation === \"vertical\") {\n return \"top\"\n } else if (dir === \"ltr\") {\n return \"right\"\n } else {\n return \"left\"\n }\n}\n\ninterface SliderBackgroundProps extends Required<ChannelProps> {\n value: Color\n dir: MachineContext[\"dir\"]\n}\n\nexport const getSliderBackground = (props: SliderBackgroundProps) => {\n const { channel, value, dir } = props\n const bgDirection = getSliderBackgroundDirection(props.orientation, dir!)\n const { minValue, maxValue } = value.getChannelRange(channel)\n\n switch (channel) {\n case \"hue\":\n return `linear-gradient(to ${bgDirection}, rgb(255, 0, 0) 0%, rgb(255, 255, 0) 17%, rgb(0, 255, 0) 33%, rgb(0, 255, 255) 50%, rgb(0, 0, 255) 67%, rgb(255, 0, 255) 83%, rgb(255, 0, 0) 100%)`\n case \"lightness\": {\n let start = value.withChannelValue(channel, minValue).toString(\"css\")\n let middle = value.withChannelValue(channel, (maxValue - minValue) / 2).toString(\"css\")\n let end = value.withChannelValue(channel, maxValue).toString(\"css\")\n return `linear-gradient(to ${bgDirection}, ${start}, ${middle}, ${end})`\n }\n case \"saturation\":\n case \"brightness\":\n case \"red\":\n case \"green\":\n case \"blue\":\n case \"alpha\": {\n let start = value.withChannelValue(channel, minValue).toString(\"css\")\n let end = value.withChannelValue(channel, maxValue).toString(\"css\")\n return `linear-gradient(to ${bgDirection}, ${start}, ${end})`\n }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n}\n","import { parseColor, type Color } from \"@zag-js/color-utils\"\nimport { createMachine, guards } from \"@zag-js/core\"\nimport { trackDismissableElement } from \"@zag-js/dismissable\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { getInitialFocus, raf } from \"@zag-js/dom-query\"\nimport { dispatchInputValueEvent, trackFormControl } from \"@zag-js/form-utils\"\nimport { getPlacement } from \"@zag-js/popper\"\nimport { disableTextSelection } from \"@zag-js/text-selection\"\nimport { compact, tryCatch } from \"@zag-js/utils\"\nimport { dom } from \"./color-picker.dom\"\nimport { parse } from \"./color-picker.parse\"\nimport type {\n ColorFormat,\n ColorType,\n ExtendedColorChannel,\n MachineContext,\n MachineState,\n UserDefinedContext,\n} from \"./color-picker.types\"\nimport { getChannelValue } from \"./utils/get-channel-input-value\"\n\nconst { and } = guards\n\nexport function machine(userContext: UserDefinedContext) {\n const ctx = compact(userContext)\n return createMachine<MachineContext, MachineState>(\n {\n id: \"color-picker\",\n initial: ctx.open ? \"open\" : \"idle\",\n context: {\n dir: \"ltr\",\n value: parse(\"#000000\"),\n format: \"rgba\",\n disabled: false,\n closeOnSelect: false,\n ...ctx,\n activeId: null,\n activeChannel: null,\n activeOrientation: null,\n fieldsetDisabled: false,\n restoreFocus: true,\n positioning: {\n ...ctx.positioning,\n placement: \"bottom\",\n },\n },\n\n computed: {\n isRtl: (ctx) => ctx.dir === \"rtl\",\n isDisabled: (ctx) => !!ctx.disabled || ctx.fieldsetDisabled,\n isInteractive: (ctx) => !(ctx.isDisabled || ctx.readOnly),\n valueAsString: (ctx) => ctx.value.toString(ctx.format),\n areaValue: (ctx) => {\n const format = ctx.format.startsWith(\"hsl\") ? \"hsla\" : \"hsba\"\n return ctx.value.toFormat(format)\n },\n },\n\n activities: [\"trackFormControl\"],\n\n watch: {\n value: [\"syncInputElements\"],\n format: [\"syncFormatSelectElement\"],\n open: [\"toggleVisibility\"],\n },\n\n on: {\n \"VALUE.SET\": {\n actions: [\"setValue\"],\n },\n \"FORMAT.SET\": {\n actions: [\"setFormat\"],\n },\n \"CHANNEL_INPUT.CHANGE\": {\n actions: [\"setChannelColorFromInput\"],\n },\n \"EYEDROPPER.CLICK\": {\n actions: [\"openEyeDropper\"],\n },\n },\n\n states: {\n idle: {\n tags: [\"closed\"],\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open\",\n actions: [\"setInitialFocus\"],\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"],\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setInitialFocus\"],\n },\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"],\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setInitialFocus\"],\n },\n ],\n \"CHANNEL_INPUT.FOCUS\": {\n target: \"focused\",\n actions: [\"setActiveChannel\"],\n },\n },\n },\n\n focused: {\n tags: [\"closed\", \"focused\"],\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open\",\n actions: [\"setInitialFocus\"],\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"],\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setInitialFocus\"],\n },\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"],\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setInitialFocus\"],\n },\n ],\n \"CHANNEL_INPUT.FOCUS\": {\n actions: [\"setActiveChannel\"],\n },\n \"CHANNEL_INPUT.BLUR\": {\n target: \"idle\",\n actions: [\"setChannelColorFromInput\"],\n },\n \"TRIGGER.BLUR\": {\n target: \"idle\",\n },\n },\n },\n\n open: {\n tags: [\"open\"],\n activities: [\"trackPositioning\", \"trackDismissableElement\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"setReturnFocus\"],\n },\n {\n target: \"idle\",\n },\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n \"AREA.POINTER_DOWN\": {\n target: \"open:dragging\",\n actions: [\"setActiveChannel\", \"setAreaColorFromPoint\", \"focusAreaThumb\"],\n },\n \"AREA.FOCUS\": {\n actions: [\"setActiveChannel\"],\n },\n \"CHANNEL_SLIDER.POINTER_DOWN\": {\n target: \"open:dragging\",\n actions: [\"setActiveChannel\", \"setChannelColorFromPoint\", \"focusChannelThumb\"],\n },\n \"CHANNEL_SLIDER.FOCUS\": {\n actions: [\"setActiveChannel\"],\n },\n \"AREA.ARROW_LEFT\": {\n actions: [\"decrementXChannel\"],\n },\n \"AREA.ARROW_RIGHT\": {\n actions: [\"incrementXChannel\"],\n },\n \"AREA.ARROW_UP\": {\n actions: [\"incrementYChannel\"],\n },\n \"AREA.ARROW_DOWN\": {\n actions: [\"decrementYChannel\"],\n },\n \"AREA.PAGE_UP\": {\n actions: [\"incrementXChannel\"],\n },\n \"AREA.PAGE_DOWN\": {\n actions: [\"decrementXChannel\"],\n },\n \"CHANNEL_SLIDER.ARROW_LEFT\": {\n actions: [\"decrementChannel\"],\n },\n \"CHANNEL_SLIDER.ARROW_RIGHT\": {\n actions: [\"incrementChannel\"],\n },\n \"CHANNEL_SLIDER.ARROW_UP\": {\n actions: [\"incrementChannel\"],\n },\n \"CHANNEL_SLIDER.ARROW_DOWN\": {\n actions: [\"decrementChannel\"],\n },\n \"CHANNEL_SLIDER.PAGE_UP\": {\n actions: [\"incrementChannel\"],\n },\n \"CHANNEL_SLIDER.PAGE_DOWN\": {\n actions: [\"decrementChannel\"],\n },\n \"CHANNEL_SLIDER.HOME\": {\n actions: [\"setChannelToMin\"],\n },\n \"CHANNEL_SLIDER.END\": {\n actions: [\"setChannelToMax\"],\n },\n \"CHANNEL_INPUT.BLUR\": {\n actions: [\"setChannelColorFromInput\"],\n },\n INTERACT_OUTSIDE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setReturnFocus\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n \"SWATCH_TRIGGER.CLICK\": [\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"setValue\", \"invokeOnClose\"],\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"setValue\", \"invokeOnClose\", \"setReturnFocus\"],\n },\n {\n actions: [\"setValue\"],\n },\n ],\n },\n },\n\n \"open:dragging\": {\n tags: [\"open\"],\n exit: [\"clearActiveChannel\"],\n activities: [\"trackPointerMove\", \"disableTextSelection\", \"trackPositioning\", \"trackDismissableElement\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"setReturnFocus\"],\n },\n {\n target: \"idle\",\n },\n ],\n \"AREA.POINTER_MOVE\": {\n actions: [\"setAreaColorFromPoint\", \"focusAreaThumb\"],\n },\n \"AREA.POINTER_UP\": {\n target: \"open\",\n actions: [\"invokeOnChangeEnd\"],\n },\n \"CHANNEL_SLIDER.POINTER_MOVE\": {\n actions: [\"setChannelColorFromPoint\", \"focusChannelThumb\"],\n },\n \"CHANNEL_SLIDER.POINTER_UP\": {\n target: \"open\",\n actions: [\"invokeOnChangeEnd\"],\n },\n INTERACT_OUTSIDE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"invokeOnClose\", \"setReturnFocus\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n },\n },\n },\n },\n {\n guards: {\n closeOnSelect: (ctx) => !!ctx.closeOnSelect,\n isOpenControlled: (ctx) => !!ctx[\"open.controlled\"],\n shouldRestoreFocus: (ctx) => !!ctx.restoreFocus,\n },\n activities: {\n trackPositioning(ctx) {\n ctx.currentPlacement = ctx.positioning.placement\n const anchorEl = dom.getTriggerEl(ctx)\n const getPositionerEl = () => dom.getPositionerEl(ctx)\n return getPlacement(anchorEl, getPositionerEl, {\n ...ctx.positioning,\n defer: true,\n onComplete(data) {\n ctx.currentPlacement = data.placement\n },\n })\n },\n trackDismissableElement(ctx, _evt, { send }) {\n const getContentEl = () => dom.getContentEl(ctx)\n return trackDismissableElement(getContentEl, {\n exclude: dom.getTriggerEl(ctx),\n defer: true,\n onInteractOutside(event) {\n ctx.onInteractOutside?.(event)\n if (event.defaultPrevented) return\n ctx.restoreFocus = !(event.detail.focusable || event.detail.contextmenu)\n },\n onPointerDownOutside: ctx.onPointerDownOutside,\n onFocusOutside: ctx.onFocusOutside,\n onDismiss() {\n send({ type: \"INTERACT_OUTSIDE\" })\n },\n })\n },\n trackFormControl(ctx, _evt, { send, initialContext }) {\n const inputEl = dom.getHiddenInputEl(ctx)\n return trackFormControl(inputEl, {\n onFieldsetDisabledChange(disabled) {\n ctx.fieldsetDisabled = disabled\n },\n onFormReset() {\n send({ type: \"VALUE.SET\", value: initialContext.value, src: \"form.reset\" })\n },\n })\n },\n trackPointerMove(ctx, _evt, { send }) {\n return trackPointerMove(dom.getDoc(ctx), {\n onPointerMove({ point }) {\n const type = ctx.activeId === \"area\" ? \"AREA.POINTER_MOVE\" : \"CHANNEL_SLIDER.POINTER_MOVE\"\n send({ type, point })\n },\n onPointerUp() {\n const type = ctx.activeId === \"area\" ? \"AREA.POINTER_UP\" : \"CHANNEL_SLIDER.POINTER_UP\"\n send({ type })\n },\n })\n },\n disableTextSelection(ctx) {\n return disableTextSelection({ doc: dom.getDoc(ctx), target: dom.getContentEl(ctx) })\n },\n },\n actions: {\n openEyeDropper(ctx) {\n const isSupported = \"EyeDropper\" in dom.getWin(ctx)\n if (!isSupported) return\n const win = dom.getWin(ctx)\n const picker = new win.EyeDropper()\n picker\n .open()\n .then(({ sRGBHex }) => {\n const format = ctx.value.getFormat()\n const color = parseColor(sRGBHex).toFormat(format) as Color\n set.value(ctx, color)\n ctx.onValueChangeEnd?.({ value: ctx.value, valueAsString: ctx.valueAsString })\n })\n .catch(() => void 0)\n },\n setActiveChannel(ctx, evt) {\n ctx.activeId = evt.id\n if (evt.channel) ctx.activeChannel = evt.channel\n if (evt.orientation) ctx.activeOrientation = evt.orientation\n },\n clearActiveChannel(ctx) {\n ctx.activeChannel = null\n ctx.activeId = null\n ctx.activeOrientation = null\n },\n setAreaColorFromPoint(ctx, evt) {\n const { xChannel, yChannel } = evt.channel || ctx.activeChannel\n\n const percent = dom.getAreaValueFromPoint(ctx, evt.point)\n if (!percent) return\n\n const xValue = ctx.areaValue.getChannelPercentValue(xChannel, percent.x)\n const yValue = ctx.areaValue.getChannelPercentValue(yChannel, 1 - percent.y)\n\n const color = ctx.areaValue.withChannelValue(xChannel, xValue).withChannelValue(yChannel, yValue)\n set.value(ctx, color)\n },\n setChannelColorFromPoint(ctx, evt) {\n const channel = evt.channel || ctx.activeId\n\n const percent = dom.getChannelSliderValueFromPoint(ctx, evt.point, channel)\n if (!percent) return\n\n const orientation = ctx.activeOrientation || \"horizontal\"\n const channelPercent = orientation === \"horizontal\" ? percent.x : percent.y\n\n const value = ctx.areaValue.getChannelPercentValue(channel, channelPercent)\n const color = ctx.areaValue.withChannelValue(channel, value)\n set.value(ctx, color)\n },\n setValue(ctx, evt) {\n set.value(ctx, evt.value)\n },\n setFormat(ctx, evt) {\n set.format(ctx, evt.format)\n },\n syncInputElements(ctx) {\n sync.inputs(ctx)\n },\n invokeOnChangeEnd(ctx) {\n invoke.changeEnd(ctx)\n },\n setChannelColorFromInput(ctx, evt) {\n const { channel, isTextField, value } = evt\n const currentAlpha = ctx.value.getChannelValue(\"alpha\")\n\n // handle other text channels\n let color: Color\n\n // handle alpha channel\n if (channel === \"alpha\") {\n //\n let valueAsNumber = parseFloat(value)\n valueAsNumber = Number.isNaN(valueAsNumber) ? currentAlpha : valueAsNumber\n color = ctx.value.withChannelValue(\"alpha\", valueAsNumber)\n //\n } else if (isTextField) {\n //\n color = tryCatch(\n () => parse(value).withChannelValue(\"alpha\", currentAlpha),\n () => ctx.value,\n )\n //\n } else {\n //\n const current = ctx.value.toFormat(ctx.format)\n const valueAsNumber = Number.isNaN(value) ? current.getChannelValue(channel) : value\n color = current.withChannelValue(channel, valueAsNumber)\n //\n }\n\n // sync channel input value immediately (in event user types native css color, we need to convert it to the current channel format)\n sync.inputs(ctx, color)\n\n // set new color\n set.value(ctx, color)\n },\n incrementChannel(ctx, evt) {\n const color = ctx.value.incrementChannel(evt.channel, evt.step)\n set.value(ctx, color)\n },\n decrementChannel(ctx, evt) {\n const color = ctx.value.decrementChannel(evt.channel, evt.step)\n set.value(ctx, color)\n },\n incrementXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.areaValue.incrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n decrementXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.areaValue.decrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n incrementYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.areaValue.incrementChannel(yChannel, evt.step)\n set.value(ctx, color)\n },\n decrementYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.areaValue.decrementChannel(yChannel, evt.step)\n set.value(ctx, color)\n },\n setChannelToMax(ctx, evt) {\n const range = ctx.value.getChannelRange(evt.channel)\n const color = ctx.value.withChannelValue(evt.channel, range.maxValue)\n set.value(ctx, color)\n },\n setChannelToMin(ctx, evt) {\n const range = ctx.value.getChannelRange(evt.channel)\n const color = ctx.value.withChannelValue(evt.channel, range.minValue)\n set.value(ctx, color)\n },\n focusAreaThumb(ctx) {\n raf(() => {\n dom.getAreaThumbEl(ctx)?.focus({ preventScroll: true })\n })\n },\n focusChannelThumb(ctx, evt) {\n raf(() => {\n dom.getChannelSliderThumbEl(ctx, evt.channel)?.focus({ preventScroll: true })\n })\n },\n setInitialFocus(ctx) {\n raf(() => {\n const element = getInitialFocus({\n root: dom.getContentEl(ctx),\n getInitialEl: ctx.initialFocusEl,\n })\n element?.focus({ preventScroll: true })\n })\n },\n setReturnFocus(ctx) {\n raf(() => {\n dom.getTriggerEl(ctx)?.focus({ preventScroll: true })\n })\n },\n syncFormatSelectElement(ctx) {\n sync.formatSelect(ctx)\n },\n invokeOnOpen(ctx) {\n ctx.onOpenChange?.({ open: true })\n },\n invokeOnClose(ctx) {\n ctx.onOpenChange?.({ open: false })\n },\n toggleVisibility(ctx, evt, { send }) {\n send({ type: ctx.open ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: evt })\n },\n },\n compareFns: {\n value: (a, b) => a.isEqual(b),\n },\n },\n )\n}\n\nconst sync = {\n // sync channel inputs\n inputs(ctx: MachineContext, color?: Color) {\n const channelInputs = dom.getChannelInputEls(ctx)\n raf(() => {\n channelInputs.forEach((inputEl) => {\n const channel = inputEl.dataset.channel as ExtendedColorChannel | null\n dom.setValue(inputEl, getChannelValue(color || ctx.value, channel))\n })\n })\n },\n // sync format select\n formatSelect(ctx: MachineContext) {\n const selectEl = dom.getFormatSelectEl(ctx)\n raf(() => {\n dom.setValue(selectEl, ctx.format)\n })\n },\n}\n\nconst invoke = {\n changeEnd(ctx: MachineContext) {\n const value = ctx.value.toFormat(ctx.format)\n ctx.onValueChangeEnd?.({\n value,\n valueAsString: ctx.valueAsString,\n })\n },\n change(ctx: MachineContext) {\n const value = ctx.value.toFormat(ctx.format)\n ctx.onValueChange?.({\n value,\n valueAsString: ctx.valueAsString,\n })\n\n dispatchInputValueEvent(dom.getHiddenInputEl(ctx), { value: ctx.valueAsString })\n },\n formatChange(ctx: MachineContext) {\n ctx.onFormatChange?.({ format: ctx.format })\n },\n}\n\nconst set = {\n value(ctx: MachineContext, color: Color | ColorType | undefined) {\n if (!color || ctx.value.isEqual(color)) return\n ctx.value = color\n invoke.change(ctx)\n },\n format(ctx: MachineContext, format: ColorFormat) {\n if (ctx.format === format) return\n ctx.format = format\n invoke.formatChange(ctx)\n },\n}\n","import { parseColor, type Color } from \"@zag-js/color-utils\"\n\nexport const parse = (colorString: string): Color => {\n return parseColor(colorString)\n}\n"],"mappings":"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","names":["import_color_utils","import_dom_event","import_dom_query","import_color_utils","value","event","import_color_utils","import_dom_event","import_dom_query","import_popper","import_color_utils","ctx"]}
|