@zag-js/color-picker 0.57.0 → 0.58.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 +10 -2
- package/dist/index.d.ts +10 -2
- package/dist/index.js +11 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +12 -12
- package/src/color-picker.connect.ts +4 -2
- package/src/color-picker.dom.ts +8 -7
- package/src/color-picker.props.ts +2 -0
- package/src/color-picker.types.ts +10 -1
- package/src/index.ts +1 -0
package/dist/index.d.mts
CHANGED
|
@@ -5,7 +5,7 @@ import { RequiredBy, Orientation, PropTypes, CommonProperties, DirectionProperty
|
|
|
5
5
|
import { Color, ColorFormat, ColorChannel } from '@zag-js/color-utils';
|
|
6
6
|
export { Color, ColorAxes, ColorChannel, ColorFormat, ColorType } from '@zag-js/color-utils';
|
|
7
7
|
import * as _zag_js_core from '@zag-js/core';
|
|
8
|
-
import { StateMachine } from '@zag-js/core';
|
|
8
|
+
import { Machine, StateMachine } from '@zag-js/core';
|
|
9
9
|
import { PositioningOptions } from '@zag-js/popper';
|
|
10
10
|
export { PositioningOptions } from '@zag-js/popper';
|
|
11
11
|
|
|
@@ -42,9 +42,12 @@ type ElementIds = Partial<{
|
|
|
42
42
|
trigger: string;
|
|
43
43
|
label: string;
|
|
44
44
|
input: string;
|
|
45
|
+
hiddenInput: string;
|
|
45
46
|
content: string;
|
|
46
47
|
area: string;
|
|
47
48
|
areaGradient: string;
|
|
49
|
+
positioner: string;
|
|
50
|
+
formatSelect: string;
|
|
48
51
|
areaThumb: string;
|
|
49
52
|
channelInput(id: string): string;
|
|
50
53
|
channelSliderTrack(id: ColorChannel): string;
|
|
@@ -68,6 +71,10 @@ interface PublicContext extends CommonProperties, DirectionProperty, InteractOut
|
|
|
68
71
|
* Whether the color picker is read-only
|
|
69
72
|
*/
|
|
70
73
|
readOnly?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Whether the color picker is required
|
|
76
|
+
*/
|
|
77
|
+
required?: boolean;
|
|
71
78
|
/**
|
|
72
79
|
* Handler that is called when the value changes, as the user drags.
|
|
73
80
|
*/
|
|
@@ -153,6 +160,7 @@ interface MachineState {
|
|
|
153
160
|
}
|
|
154
161
|
type State = StateMachine.State<MachineContext, MachineState>;
|
|
155
162
|
type Send = StateMachine.Send<StateMachine.AnyEventObject>;
|
|
163
|
+
type Service = Machine<MachineContext, MachineState, StateMachine.AnyEventObject>;
|
|
156
164
|
interface ChannelProps {
|
|
157
165
|
channel: ColorChannel;
|
|
158
166
|
orientation?: Orientation;
|
|
@@ -283,4 +291,4 @@ declare function machine(userContext: UserDefinedContext): _zag_js_core.Machine<
|
|
|
283
291
|
|
|
284
292
|
declare const parse: (colorString: string) => Color;
|
|
285
293
|
|
|
286
|
-
export { type MachineApi as Api, type AreaProps, type ChannelInputProps, type ChannelProps, type ChannelSliderProps, type UserDefinedContext as Context, type ElementIds, type FormatChangeDetails, type OpenChangeDetails, type SwatchProps, type SwatchTriggerProps, type SwatchTriggerState, type TransparencyGridProps, type ValueChangeDetails, anatomy, connect, machine, parse };
|
|
294
|
+
export { type MachineApi as Api, type AreaProps, type ChannelInputProps, type ChannelProps, type ChannelSliderProps, type UserDefinedContext as Context, type ElementIds, type FormatChangeDetails, type OpenChangeDetails, type Service, type SwatchProps, type SwatchTriggerProps, type SwatchTriggerState, type TransparencyGridProps, type ValueChangeDetails, anatomy, connect, machine, parse };
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { RequiredBy, Orientation, PropTypes, CommonProperties, DirectionProperty
|
|
|
5
5
|
import { Color, ColorFormat, ColorChannel } from '@zag-js/color-utils';
|
|
6
6
|
export { Color, ColorAxes, ColorChannel, ColorFormat, ColorType } from '@zag-js/color-utils';
|
|
7
7
|
import * as _zag_js_core from '@zag-js/core';
|
|
8
|
-
import { StateMachine } from '@zag-js/core';
|
|
8
|
+
import { Machine, StateMachine } from '@zag-js/core';
|
|
9
9
|
import { PositioningOptions } from '@zag-js/popper';
|
|
10
10
|
export { PositioningOptions } from '@zag-js/popper';
|
|
11
11
|
|
|
@@ -42,9 +42,12 @@ type ElementIds = Partial<{
|
|
|
42
42
|
trigger: string;
|
|
43
43
|
label: string;
|
|
44
44
|
input: string;
|
|
45
|
+
hiddenInput: string;
|
|
45
46
|
content: string;
|
|
46
47
|
area: string;
|
|
47
48
|
areaGradient: string;
|
|
49
|
+
positioner: string;
|
|
50
|
+
formatSelect: string;
|
|
48
51
|
areaThumb: string;
|
|
49
52
|
channelInput(id: string): string;
|
|
50
53
|
channelSliderTrack(id: ColorChannel): string;
|
|
@@ -68,6 +71,10 @@ interface PublicContext extends CommonProperties, DirectionProperty, InteractOut
|
|
|
68
71
|
* Whether the color picker is read-only
|
|
69
72
|
*/
|
|
70
73
|
readOnly?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Whether the color picker is required
|
|
76
|
+
*/
|
|
77
|
+
required?: boolean;
|
|
71
78
|
/**
|
|
72
79
|
* Handler that is called when the value changes, as the user drags.
|
|
73
80
|
*/
|
|
@@ -153,6 +160,7 @@ interface MachineState {
|
|
|
153
160
|
}
|
|
154
161
|
type State = StateMachine.State<MachineContext, MachineState>;
|
|
155
162
|
type Send = StateMachine.Send<StateMachine.AnyEventObject>;
|
|
163
|
+
type Service = Machine<MachineContext, MachineState, StateMachine.AnyEventObject>;
|
|
156
164
|
interface ChannelProps {
|
|
157
165
|
channel: ColorChannel;
|
|
158
166
|
orientation?: Orientation;
|
|
@@ -283,4 +291,4 @@ declare function machine(userContext: UserDefinedContext): _zag_js_core.Machine<
|
|
|
283
291
|
|
|
284
292
|
declare const parse: (colorString: string) => Color;
|
|
285
293
|
|
|
286
|
-
export { type MachineApi as Api, type AreaProps, type ChannelInputProps, type ChannelProps, type ChannelSliderProps, type UserDefinedContext as Context, type ElementIds, type FormatChangeDetails, type OpenChangeDetails, type SwatchProps, type SwatchTriggerProps, type SwatchTriggerState, type TransparencyGridProps, type ValueChangeDetails, anatomy, connect, machine, parse };
|
|
294
|
+
export { type MachineApi as Api, type AreaProps, type ChannelInputProps, type ChannelProps, type ChannelSliderProps, type UserDefinedContext as Context, type ElementIds, type FormatChangeDetails, type OpenChangeDetails, type Service, type SwatchProps, type SwatchTriggerProps, type SwatchTriggerState, type TransparencyGridProps, type ValueChangeDetails, anatomy, connect, machine, parse };
|
package/dist/index.js
CHANGED
|
@@ -68,24 +68,25 @@ var import_dom_query = require("@zag-js/dom-query");
|
|
|
68
68
|
var dom = (0, import_dom_query.createScope)({
|
|
69
69
|
getRootId: (ctx) => ctx.ids?.root ?? `color-picker:${ctx.id}`,
|
|
70
70
|
getLabelId: (ctx) => ctx.ids?.label ?? `color-picker:${ctx.id}:label`,
|
|
71
|
-
getHiddenInputId: (ctx) => `color-picker:${ctx.id}:hidden-input`,
|
|
71
|
+
getHiddenInputId: (ctx) => ctx.ids?.hiddenInput ?? `color-picker:${ctx.id}:hidden-input`,
|
|
72
72
|
getControlId: (ctx) => ctx.ids?.control ?? `color-picker:${ctx.id}:control`,
|
|
73
73
|
getTriggerId: (ctx) => ctx.ids?.trigger ?? `color-picker:${ctx.id}:trigger`,
|
|
74
74
|
getContentId: (ctx) => ctx.ids?.content ?? `color-picker:${ctx.id}:content`,
|
|
75
|
-
getPositionerId: (ctx) => `color-picker:${ctx.id}:positioner`,
|
|
76
|
-
getFormatSelectId: (ctx) => `color-picker:${ctx.id}:format-select`,
|
|
75
|
+
getPositionerId: (ctx) => ctx.ids?.positioner ?? `color-picker:${ctx.id}:positioner`,
|
|
76
|
+
getFormatSelectId: (ctx) => ctx.ids?.formatSelect ?? `color-picker:${ctx.id}:format-select`,
|
|
77
77
|
getAreaId: (ctx) => ctx.ids?.area ?? `color-picker:${ctx.id}:area`,
|
|
78
78
|
getAreaGradientId: (ctx) => ctx.ids?.areaGradient ?? `color-picker:${ctx.id}:area-gradient`,
|
|
79
79
|
getAreaThumbId: (ctx) => ctx.ids?.areaThumb ?? `color-picker:${ctx.id}:area-thumb`,
|
|
80
|
-
|
|
80
|
+
getChannelSliderTrackId: (ctx, channel) => ctx.ids?.channelSliderTrack?.(channel) ?? `color-picker:${ctx.id}:slider-track:${channel}`,
|
|
81
81
|
getChannelSliderThumbId: (ctx, channel) => ctx.ids?.channelSliderThumb?.(channel) ?? `color-picker:${ctx.id}:slider-thumb:${channel}`,
|
|
82
82
|
getContentEl: (ctx) => dom.getById(ctx, dom.getContentId(ctx)),
|
|
83
83
|
getAreaThumbEl: (ctx) => dom.getById(ctx, dom.getAreaThumbId(ctx)),
|
|
84
84
|
getChannelSliderThumbEl: (ctx, channel) => dom.getById(ctx, dom.getChannelSliderThumbId(ctx, channel)),
|
|
85
85
|
getChannelInputEl: (ctx, channel) => {
|
|
86
|
+
const selector = `input[data-channel="${channel}"]`;
|
|
86
87
|
return [
|
|
87
|
-
...(0, import_dom_query.queryAll)(dom.getContentEl(ctx),
|
|
88
|
-
...(0, import_dom_query.queryAll)(dom.getControlEl(ctx),
|
|
88
|
+
...(0, import_dom_query.queryAll)(dom.getContentEl(ctx), selector),
|
|
89
|
+
...(0, import_dom_query.queryAll)(dom.getControlEl(ctx), selector)
|
|
89
90
|
];
|
|
90
91
|
},
|
|
91
92
|
getFormatSelectEl: (ctx) => dom.getById(ctx, dom.getFormatSelectId(ctx)),
|
|
@@ -101,7 +102,7 @@ var dom = (0, import_dom_query.createScope)({
|
|
|
101
102
|
getTriggerEl: (ctx) => dom.getById(ctx, dom.getTriggerId(ctx)),
|
|
102
103
|
getPositionerEl: (ctx) => dom.getById(ctx, dom.getPositionerId(ctx)),
|
|
103
104
|
getChannelSliderTrackEl: (ctx, channel) => {
|
|
104
|
-
return dom.getById(ctx, dom.
|
|
105
|
+
return dom.getById(ctx, dom.getChannelSliderTrackId(ctx, channel));
|
|
105
106
|
},
|
|
106
107
|
getChannelSliderValueFromPoint(ctx, point, channel) {
|
|
107
108
|
const trackEl = dom.getChannelSliderTrackEl(ctx, channel);
|
|
@@ -542,7 +543,7 @@ function connect(state, send, normalize) {
|
|
|
542
543
|
const normalizedValue = format ? value.toFormat(format) : areaValue;
|
|
543
544
|
return normalize.element({
|
|
544
545
|
...parts.channelSliderTrack.attrs,
|
|
545
|
-
id: dom.
|
|
546
|
+
id: dom.getChannelSliderTrackId(state.context, channel),
|
|
546
547
|
role: "group",
|
|
547
548
|
"data-channel": channel,
|
|
548
549
|
"data-orientation": orientation,
|
|
@@ -711,6 +712,8 @@ function connect(state, send, normalize) {
|
|
|
711
712
|
type: "text",
|
|
712
713
|
disabled,
|
|
713
714
|
name: state.context.name,
|
|
715
|
+
readOnly: state.context.readOnly,
|
|
716
|
+
required: state.context.required,
|
|
714
717
|
id: dom.getHiddenInputId(state.context),
|
|
715
718
|
style: import_dom_query2.visuallyHiddenStyle,
|
|
716
719
|
defaultValue: valueAsString
|
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 ChannelSliderProps,\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 \"channelSliderLabel\",\n \"channelSliderTrack\",\n \"channelSliderThumb\",\n \"channelSliderValueText\",\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 getChannelValueText(channel, locale) {\n return value.formatChannelValue(channel, locale)\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 getRootProps() {\n return 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\n getLabelProps() {\n return 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\n getControlProps() {\n return 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\n getTriggerProps() {\n return 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\n getPositionerProps() {\n return normalize.element({\n ...parts.positioner.attrs,\n id: dom.getPositionerId(state.context),\n dir: state.context.dir,\n style: popperStyles.floating,\n })\n },\n\n getContentProps() {\n return 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\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, format } = 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, format, 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, format } = props\n const normalizedValue = format ? value.toFormat(format) : areaValue\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: normalizedValue,\n }),\n },\n })\n },\n\n getChannelSliderLabelProps(props) {\n const { channel } = props\n return normalize.element({\n ...parts.channelSliderLabel.attrs,\n \"data-channel\": channel,\n onClick(event) {\n if (!interactive) return\n event.preventDefault()\n const thumbId = dom.getChannelSliderThumbId(state.context, channel)\n dom.getById(state.context, thumbId)?.focus({ preventScroll: true })\n },\n style: {\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n },\n })\n },\n\n getChannelSliderValueTextProps(props) {\n return normalize.element({\n ...parts.channelSliderValueText.attrs,\n \"data-channel\": props.channel,\n })\n },\n\n getChannelSliderThumbProps(props) {\n const { orientation = \"horizontal\", channel, format } = props\n\n const normalizedValue = format ? value.toFormat(format) : areaValue\n const channelRange = normalizedValue.getChannelRange(channel)\n const channelValue = normalizedValue.getChannelValue(channel)\n\n const offset = (channelValue - channelRange.minValue) / (channelRange.maxValue - channelRange.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\": channelRange.maxValue,\n \"aria-valuemin\": channelRange.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) * channelRange.step\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\n const isTextField = channel === \"hex\" || channel === \"css\"\n const channelRange = 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: channelRange?.minValue,\n max: channelRange?.maxValue,\n step: channelRange?.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 getHiddenInputProps() {\n return 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\n getEyeDropperTriggerProps() {\n return 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\n getSwatchGroupProps() {\n return normalize.element({\n ...parts.swatchGroup.attrs,\n role: \"group\",\n })\n },\n\n getSwatchTriggerState,\n\n getSwatchTriggerProps(props) {\n const swatchState = getSwatchTriggerState(props)\n return normalize.button({\n ...parts.swatchTrigger.attrs,\n disabled: swatchState.disabled,\n dir: state.context.dir,\n type: \"button\",\n \"aria-label\": `select ${swatchState.valueAsString} as the color`,\n \"data-state\": swatchState.checked ? \"checked\" : \"unchecked\",\n \"data-value\": swatchState.valueAsString,\n \"data-disabled\": dataAttr(swatchState.disabled),\n onClick() {\n if (swatchState.disabled) return\n send({ type: \"SWATCH_TRIGGER.CLICK\", value: swatchState.value })\n },\n style: {\n position: \"relative\",\n },\n })\n },\n\n getSwatchIndicatorProps(props) {\n const swatchState = getSwatchTriggerState(props)\n return normalize.element({\n ...parts.swatchIndicator.attrs,\n dir: state.context.dir,\n hidden: !swatchState.checked,\n })\n },\n\n getSwatchProps(props) {\n const { respectAlpha = true } = props\n const swatchState = getSwatchTriggerState(props)\n return normalize.element({\n ...parts.swatch.attrs,\n dir: state.context.dir,\n \"data-state\": swatchState.checked ? \"checked\" : \"unchecked\",\n \"data-value\": swatchState.valueAsString,\n style: {\n position: \"relative\",\n background: swatchState.value.toString(respectAlpha ? \"css\" : \"hex\"),\n },\n })\n },\n\n getFormatTriggerProps() {\n return 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\n getFormatSelectProps() {\n return 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}\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: [\"decrementAreaXChannel\"],\n },\n \"AREA.ARROW_RIGHT\": {\n actions: [\"incrementAreaXChannel\"],\n },\n \"AREA.ARROW_UP\": {\n actions: [\"incrementAreaYChannel\"],\n },\n \"AREA.ARROW_DOWN\": {\n actions: [\"decrementAreaYChannel\"],\n },\n \"AREA.PAGE_UP\": {\n actions: [\"incrementAreaXChannel\"],\n },\n \"AREA.PAGE_DOWN\": {\n actions: [\"decrementAreaXChannel\"],\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, format: evt.format })\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 normalizedValue = evt.format ? ctx.value.toFormat(evt.format) : ctx.areaValue\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 = normalizedValue.getChannelPercentValue(xChannel, percent.x)\n const yValue = normalizedValue.getChannelPercentValue(yChannel, 1 - percent.y)\n\n const color = normalizedValue.withChannelValue(xChannel, xValue).withChannelValue(yChannel, yValue)\n set.value(ctx, color)\n },\n setChannelColorFromPoint(ctx, evt) {\n const channel = evt.channel || ctx.activeId\n const normalizedValue = evt.format ? ctx.value.toFormat(evt.format) : ctx.areaValue\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 = normalizedValue.getChannelPercentValue(channel, channelPercent)\n const color = normalizedValue.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 incrementAreaXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.areaValue.incrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n decrementAreaXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.areaValue.decrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n incrementAreaYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.areaValue.incrementChannel(yChannel, evt.step)\n set.value(ctx, color)\n },\n decrementAreaYChannel(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"]}
|
|
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 ChannelSliderProps,\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 Service,\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 \"channelSliderLabel\",\n \"channelSliderTrack\",\n \"channelSliderThumb\",\n \"channelSliderValueText\",\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 getChannelValueText(channel, locale) {\n return value.formatChannelValue(channel, locale)\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 getRootProps() {\n return 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\n getLabelProps() {\n return 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\n getControlProps() {\n return 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\n getTriggerProps() {\n return 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\n getPositionerProps() {\n return normalize.element({\n ...parts.positioner.attrs,\n id: dom.getPositionerId(state.context),\n dir: state.context.dir,\n style: popperStyles.floating,\n })\n },\n\n getContentProps() {\n return 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\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, format } = 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, format, 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, format } = props\n const normalizedValue = format ? value.toFormat(format) : areaValue\n\n return normalize.element({\n ...parts.channelSliderTrack.attrs,\n id: dom.getChannelSliderTrackId(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: normalizedValue,\n }),\n },\n })\n },\n\n getChannelSliderLabelProps(props) {\n const { channel } = props\n return normalize.element({\n ...parts.channelSliderLabel.attrs,\n \"data-channel\": channel,\n onClick(event) {\n if (!interactive) return\n event.preventDefault()\n const thumbId = dom.getChannelSliderThumbId(state.context, channel)\n dom.getById(state.context, thumbId)?.focus({ preventScroll: true })\n },\n style: {\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n },\n })\n },\n\n getChannelSliderValueTextProps(props) {\n return normalize.element({\n ...parts.channelSliderValueText.attrs,\n \"data-channel\": props.channel,\n })\n },\n\n getChannelSliderThumbProps(props) {\n const { orientation = \"horizontal\", channel, format } = props\n\n const normalizedValue = format ? value.toFormat(format) : areaValue\n const channelRange = normalizedValue.getChannelRange(channel)\n const channelValue = normalizedValue.getChannelValue(channel)\n\n const offset = (channelValue - channelRange.minValue) / (channelRange.maxValue - channelRange.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\": channelRange.maxValue,\n \"aria-valuemin\": channelRange.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) * channelRange.step\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\n const isTextField = channel === \"hex\" || channel === \"css\"\n const channelRange = 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: channelRange?.minValue,\n max: channelRange?.maxValue,\n step: channelRange?.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 getHiddenInputProps() {\n return normalize.input({\n type: \"text\",\n disabled,\n name: state.context.name,\n readOnly: state.context.readOnly,\n required: state.context.required,\n id: dom.getHiddenInputId(state.context),\n style: visuallyHiddenStyle,\n defaultValue: valueAsString,\n })\n },\n\n getEyeDropperTriggerProps() {\n return 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\n getSwatchGroupProps() {\n return normalize.element({\n ...parts.swatchGroup.attrs,\n role: \"group\",\n })\n },\n\n getSwatchTriggerState,\n\n getSwatchTriggerProps(props) {\n const swatchState = getSwatchTriggerState(props)\n return normalize.button({\n ...parts.swatchTrigger.attrs,\n disabled: swatchState.disabled,\n dir: state.context.dir,\n type: \"button\",\n \"aria-label\": `select ${swatchState.valueAsString} as the color`,\n \"data-state\": swatchState.checked ? \"checked\" : \"unchecked\",\n \"data-value\": swatchState.valueAsString,\n \"data-disabled\": dataAttr(swatchState.disabled),\n onClick() {\n if (swatchState.disabled) return\n send({ type: \"SWATCH_TRIGGER.CLICK\", value: swatchState.value })\n },\n style: {\n position: \"relative\",\n },\n })\n },\n\n getSwatchIndicatorProps(props) {\n const swatchState = getSwatchTriggerState(props)\n return normalize.element({\n ...parts.swatchIndicator.attrs,\n dir: state.context.dir,\n hidden: !swatchState.checked,\n })\n },\n\n getSwatchProps(props) {\n const { respectAlpha = true } = props\n const swatchState = getSwatchTriggerState(props)\n return normalize.element({\n ...parts.swatch.attrs,\n dir: state.context.dir,\n \"data-state\": swatchState.checked ? \"checked\" : \"unchecked\",\n \"data-value\": swatchState.valueAsString,\n style: {\n position: \"relative\",\n background: swatchState.value.toString(respectAlpha ? \"css\" : \"hex\"),\n },\n })\n },\n\n getFormatTriggerProps() {\n return 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\n getFormatSelectProps() {\n return 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}\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) => ctx.ids?.hiddenInput ?? `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) => ctx.ids?.positioner ?? `color-picker:${ctx.id}:positioner`,\n getFormatSelectId: (ctx: Ctx) => ctx.ids?.formatSelect ?? `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 getChannelSliderTrackId: (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 const selector = `input[data-channel=\"${channel}\"]`\n return [\n ...queryAll<HTMLInputElement>(dom.getContentEl(ctx), selector),\n ...queryAll<HTMLInputElement>(dom.getControlEl(ctx), selector),\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.getChannelSliderTrackId(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: [\"decrementAreaXChannel\"],\n },\n \"AREA.ARROW_RIGHT\": {\n actions: [\"incrementAreaXChannel\"],\n },\n \"AREA.ARROW_UP\": {\n actions: [\"incrementAreaYChannel\"],\n },\n \"AREA.ARROW_DOWN\": {\n actions: [\"decrementAreaYChannel\"],\n },\n \"AREA.PAGE_UP\": {\n actions: [\"incrementAreaXChannel\"],\n },\n \"AREA.PAGE_DOWN\": {\n actions: [\"decrementAreaXChannel\"],\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, format: evt.format })\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 normalizedValue = evt.format ? ctx.value.toFormat(evt.format) : ctx.areaValue\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 = normalizedValue.getChannelPercentValue(xChannel, percent.x)\n const yValue = normalizedValue.getChannelPercentValue(yChannel, 1 - percent.y)\n\n const color = normalizedValue.withChannelValue(xChannel, xValue).withChannelValue(yChannel, yValue)\n set.value(ctx, color)\n },\n setChannelColorFromPoint(ctx, evt) {\n const channel = evt.channel || ctx.activeId\n const normalizedValue = evt.format ? ctx.value.toFormat(evt.format) : ctx.areaValue\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 = normalizedValue.getChannelPercentValue(channel, channelPercent)\n const color = normalizedValue.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 incrementAreaXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.areaValue.incrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n decrementAreaXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.areaValue.decrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n incrementAreaYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.areaValue.incrementChannel(yChannel, evt.step)\n set.value(ctx, color)\n },\n decrementAreaYChannel(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"]}
|