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