@zag-js/color-picker 0.26.0 → 0.27.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 CHANGED
@@ -167,14 +167,10 @@ interface MachineApi<T extends PropTypes = PropTypes> {
167
167
  * The current color value (as a Color object)
168
168
  */
169
169
  valueAsString: string;
170
- /**
171
- * The current color channels of the color
172
- */
173
- channels: [ColorChannel, ColorChannel, ColorChannel];
174
170
  /**
175
171
  * Function to set the color value
176
172
  */
177
- setColor(value: string | Color): void;
173
+ setValue(value: string | Color): void;
178
174
  /**
179
175
  * Function to set the color value
180
176
  */
package/dist/index.d.ts CHANGED
@@ -167,14 +167,10 @@ interface MachineApi<T extends PropTypes = PropTypes> {
167
167
  * The current color value (as a Color object)
168
168
  */
169
169
  valueAsString: string;
170
- /**
171
- * The current color channels of the color
172
- */
173
- channels: [ColorChannel, ColorChannel, ColorChannel];
174
170
  /**
175
171
  * Function to set the color value
176
172
  */
177
- setColor(value: string | Color): void;
173
+ setValue(value: string | Color): void;
178
174
  /**
179
175
  * Function to set the color value
180
176
  */
package/dist/index.js CHANGED
@@ -75,12 +75,16 @@ var dom = (0, import_dom_query.createScope)({
75
75
  getAreaGradientId: (ctx) => ctx.ids?.areaGradient ?? `color-picker:${ctx.id}:area-gradient`,
76
76
  getAreaThumbId: (ctx) => ctx.ids?.areaThumb ?? `color-picker:${ctx.id}:area-thumb`,
77
77
  getChannelSliderId: (ctx, channel) => ctx.ids?.channelSliderTrack?.(channel) ?? `color-picker:${ctx.id}:slider-track:${channel}`,
78
- getChannelInputId: (ctx, channel) => ctx.ids?.channelInput?.(channel) ?? `color-picker:${ctx.id}:input:${channel}`,
79
78
  getChannelSliderThumbId: (ctx, channel) => ctx.ids?.channelSliderThumb?.(channel) ?? `color-picker:${ctx.id}:slider-thumb:${channel}`,
80
79
  getContentEl: (ctx) => dom.getById(ctx, dom.getContentId(ctx)),
81
80
  getAreaThumbEl: (ctx) => dom.getById(ctx, dom.getAreaThumbId(ctx)),
82
81
  getChannelSliderThumbEl: (ctx, channel) => dom.getById(ctx, dom.getChannelSliderThumbId(ctx, channel)),
83
- getChannelInputEl: (ctx, channel) => dom.getById(ctx, dom.getChannelInputId(ctx, channel)),
82
+ getChannelInputEl: (ctx, channel) => {
83
+ return [
84
+ ...(0, import_dom_query.queryAll)(dom.getContentEl(ctx), `input[data-channel="${channel}"]`),
85
+ ...(0, import_dom_query.queryAll)(dom.getControlEl(ctx), `input[data-channel="${channel}"]`)
86
+ ];
87
+ },
84
88
  getHiddenInputEl: (ctx) => dom.getById(ctx, dom.getHiddenInputId(ctx)),
85
89
  getAreaEl: (ctx) => dom.getById(ctx, dom.getAreaId(ctx)),
86
90
  getAreaValueFromPoint(ctx, point) {
@@ -155,7 +159,7 @@ function getChannelValue(color, channel) {
155
159
  if (channel in color) {
156
160
  return color.getChannelValue(channel).toString();
157
161
  }
158
- const isHSL = color.getFormat() === "hsl";
162
+ const isHSL = color.getFormat() === "hsla";
159
163
  switch (channel) {
160
164
  case "hue":
161
165
  return isHSL ? color.toFormat("hsla").getChannelValue("hue").toString() : color.toFormat("hsba").getChannelValue("hue").toString();
@@ -247,12 +251,11 @@ function connect(state, send, normalize) {
247
251
  const isInteractive = state.context.isInteractive;
248
252
  const isDragging = state.hasTag("dragging");
249
253
  const isOpen = state.hasTag("open");
250
- const channels = value.getChannels();
251
254
  const getAreaChannels = (props) => {
252
- const channels2 = value.getChannels();
255
+ const channels = value.getChannels();
253
256
  return {
254
- xChannel: props.xChannel ?? channels2[1],
255
- yChannel: props.yChannel ?? channels2[2]
257
+ xChannel: props.xChannel ?? channels[1],
258
+ yChannel: props.yChannel ?? channels[2]
256
259
  };
257
260
  };
258
261
  const currentPlacement = state.context.currentPlacement;
@@ -265,8 +268,7 @@ function connect(state, send, normalize) {
265
268
  isOpen,
266
269
  valueAsString,
267
270
  value,
268
- channels,
269
- setColor(value2) {
271
+ setValue(value2) {
270
272
  send({ type: "VALUE.SET", value: (0, import_color_utils3.normalizeColor)(value2), src: "set-color" });
271
273
  },
272
274
  getChannelValue(channel) {
@@ -598,7 +600,6 @@ function connect(state, send, normalize) {
598
600
  disabled: isDisabled,
599
601
  "data-disabled": (0, import_dom_query2.dataAttr)(isDisabled),
600
602
  readOnly: state.context.readOnly,
601
- id: dom.getChannelInputId(state.context, channel),
602
603
  defaultValue: getChannelValue(value, channel),
603
604
  min: range?.minValue,
604
605
  max: range?.maxValue,
@@ -697,7 +698,7 @@ function connect(state, send, normalize) {
697
698
 
698
699
  // src/color-picker.machine.ts
699
700
  var import_color_utils5 = require("@zag-js/color-utils");
700
- var import_core2 = require("@zag-js/core");
701
+ var import_core = require("@zag-js/core");
701
702
  var import_dismissable = require("@zag-js/dismissable");
702
703
  var import_dom_event3 = require("@zag-js/dom-event");
703
704
  var import_dom_query3 = require("@zag-js/dom-query");
@@ -708,21 +709,19 @@ var import_utils2 = require("@zag-js/utils");
708
709
 
709
710
  // src/color-picker.parse.ts
710
711
  var import_color_utils4 = require("@zag-js/color-utils");
711
- var import_core = require("@zag-js/core");
712
712
  var parse = (color) => {
713
713
  const value = (0, import_color_utils4.parseColor)(color);
714
714
  const colorFormat = value.getFormat();
715
- const lockedFormat = colorFormat.startsWith("hsl") ? "hsla" : "hsba";
715
+ const lockedFormat = colorFormat === "hsla" ? "hsla" : "hsba";
716
716
  const result = value.toFormat(lockedFormat);
717
717
  result.outputFormat = colorFormat;
718
- return (0, import_core.ref)(result);
718
+ return result;
719
719
  };
720
720
 
721
721
  // src/color-picker.machine.ts
722
- var { stateIn } = import_core2.guards;
723
722
  function machine(userContext) {
724
723
  const ctx = (0, import_utils2.compact)(userContext);
725
- return (0, import_core2.createMachine)(
724
+ return (0, import_core.createMachine)(
726
725
  {
727
726
  id: "color-picker",
728
727
  initial: ctx.open ? "open" : "idle",
@@ -752,33 +751,13 @@ function machine(userContext) {
752
751
  },
753
752
  activities: ["trackFormControl"],
754
753
  watch: {
755
- valueAsString: ["syncInputElements"],
754
+ value: ["syncInputElements"],
756
755
  open: ["toggleVisibility"]
757
756
  },
758
757
  on: {
759
758
  "VALUE.SET": {
760
759
  actions: ["setValue"]
761
760
  },
762
- "CHANNEL_INPUT.FOCUS": [
763
- {
764
- guard: stateIn("idle"),
765
- target: "focused",
766
- actions: ["setActiveChannel"]
767
- },
768
- {
769
- actions: ["setActiveChannel"]
770
- }
771
- ],
772
- "CHANNEL_INPUT.BLUR": [
773
- {
774
- guard: stateIn("focused"),
775
- target: "idle",
776
- actions: ["setChannelColorFromInput"]
777
- },
778
- {
779
- actions: ["setChannelColorFromInput"]
780
- }
781
- ],
782
761
  "CHANNEL_INPUT.CHANGE": {
783
762
  actions: ["setChannelColorFromInput"]
784
763
  }
@@ -794,6 +773,10 @@ function machine(userContext) {
794
773
  "TRIGGER.CLICK": {
795
774
  target: "open",
796
775
  actions: ["setInitialFocus", "invokeOnOpen"]
776
+ },
777
+ "CHANNEL_INPUT.FOCUS": {
778
+ target: "focused",
779
+ actions: ["setActiveChannel"]
797
780
  }
798
781
  }
799
782
  },
@@ -807,6 +790,13 @@ function machine(userContext) {
807
790
  "TRIGGER.CLICK": {
808
791
  target: "open",
809
792
  actions: ["setInitialFocus", "invokeOnOpen"]
793
+ },
794
+ "CHANNEL_INPUT.FOCUS": {
795
+ actions: ["setActiveChannel"]
796
+ },
797
+ "CHANNEL_INPUT.BLUR": {
798
+ target: "idle",
799
+ actions: ["setChannelColorFromInput"]
810
800
  }
811
801
  }
812
802
  },
@@ -877,6 +867,9 @@ function machine(userContext) {
877
867
  "CHANNEL_SLIDER.END": {
878
868
  actions: ["setChannelToMax"]
879
869
  },
870
+ "CHANNEL_INPUT.BLUR": {
871
+ actions: ["setChannelColorFromInput"]
872
+ },
880
873
  INTERACT_OUTSIDE: [
881
874
  {
882
875
  guard: "shouldRestoreFocus",
@@ -1056,19 +1049,23 @@ function machine(userContext) {
1056
1049
  },
1057
1050
  setChannelColorFromInput(ctx2, evt) {
1058
1051
  const { channel, isTextField, value } = evt;
1052
+ const currentAlpha = ctx2.value.getChannelValue("alpha");
1059
1053
  if (channel === "alpha") {
1060
- const newColor = ctx2.value.withChannelValue("alpha", parseFloat(value));
1054
+ let valueAsNumber = parseFloat(value);
1055
+ valueAsNumber = Number.isNaN(valueAsNumber) ? currentAlpha : valueAsNumber;
1056
+ const newColor = ctx2.value.withChannelValue("alpha", valueAsNumber);
1061
1057
  set.value(ctx2, newColor);
1062
1058
  return;
1063
1059
  }
1064
1060
  if (isTextField) {
1065
- const currentAlpha = ctx2.value.getChannelValue("alpha");
1066
1061
  const color2 = (0, import_utils2.tryCatch)(
1067
1062
  () => parse(value).withChannelValue("alpha", currentAlpha),
1068
1063
  () => ctx2.value
1069
1064
  );
1070
- const inputEl = dom.getChannelInputEl(ctx2, channel);
1071
- dom.setValue(inputEl, getChannelValue(color2, channel));
1065
+ const inputEls = dom.getChannelInputEl(ctx2, channel);
1066
+ inputEls.forEach((inputEl) => {
1067
+ dom.setValue(inputEl, getChannelValue(color2, channel));
1068
+ });
1072
1069
  set.value(ctx2, color2);
1073
1070
  return;
1074
1071
  }
@@ -1175,7 +1172,6 @@ var invoke = {
1175
1172
  };
1176
1173
  var set = {
1177
1174
  value(ctx, color) {
1178
- sync.inputs(ctx);
1179
1175
  if (!color || ctx.value.isEqual(color))
1180
1176
  return;
1181
1177
  const currentFormat = ctx.value.getFormat();
@@ -1184,7 +1180,7 @@ var set = {
1184
1180
  outputColor.outputFormat = ctx.value.outputFormat;
1185
1181
  } catch {
1186
1182
  }
1187
- ctx.value = (0, import_core2.ref)(outputColor);
1183
+ ctx.value = outputColor;
1188
1184
  invoke.change(ctx);
1189
1185
  }
1190
1186
  };
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 { 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 SwatchProps,\n TransparencyGridProps,\n SwatchTriggerProps,\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 \"swatch\",\n \"eyeDropperTrigger\",\n])\n\nexport const parts = anatomy.build()\n","import { getColorAreaGradient, normalizeColor } from \"@zag-js/color-utils\"\nimport {\n getEventKey,\n getEventPoint,\n getEventStep,\n getNativeEvent,\n isLeftClick,\n isModifiedEvent,\n type EventKeyMap,\n} from \"@zag-js/dom-event\"\nimport { dataAttr, query } from \"@zag-js/dom-query\"\nimport { getPlacementStyles } from \"@zag-js/popper\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { visuallyHiddenStyle } from \"@zag-js/visually-hidden\"\nimport { parts } from \"./color-picker.anatomy\"\nimport { dom } from \"./color-picker.dom\"\nimport type { AreaProps, MachineApi, Send, State } 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 valueAsString = state.context.valueAsString\n\n const isDisabled = state.context.isDisabled\n const isInteractive = state.context.isInteractive\n\n const isDragging = state.hasTag(\"dragging\")\n const isOpen = state.hasTag(\"open\")\n\n const channels = value.getChannels()\n\n const getAreaChannels = (props: AreaProps) => {\n const channels = value.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 return {\n isDragging,\n isOpen,\n valueAsString,\n value,\n channels,\n setColor(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: value.outputFormat ?? value.getFormat(),\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(isDisabled),\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(isDisabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\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(isDisabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n }),\n\n triggerProps: normalize.button({\n ...parts.trigger.attrs,\n id: dom.getTriggerId(state.context),\n dir: state.context.dir,\n \"aria-labelledby\": dom.getLabelId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n \"data-placement\": currentPlacement,\n type: \"button\",\n onClick() {\n send({ type: \"TRIGGER.CLICK\" })\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 hidden: !isOpen,\n }),\n\n getAreaProps(props = {}) {\n const { xChannel, yChannel } = getAreaChannels(props)\n const { areaStyles } = getColorAreaGradient(value, {\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 (!isInteractive) return\n\n const evt = getNativeEvent(event)\n if (!isLeftClick(evt) || isModifiedEvent(evt)) return\n\n const point = getEventPoint(evt)\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(value, {\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 x = value.getChannelValuePercent(xChannel)\n const y = 1 - value.getChannelValuePercent(yChannel)\n\n return normalize.element({\n ...parts.areaThumb.attrs,\n id: dom.getAreaThumbId(state.context),\n dir: state.context.dir,\n tabIndex: isDisabled ? undefined : 0,\n \"data-disabled\": dataAttr(isDisabled),\n role: \"presentation\",\n style: {\n position: \"absolute\",\n left: `${x * 100}%`,\n top: `${y * 100}%`,\n transform: \"translate(-50%, -50%)\",\n touchAction: \"none\",\n forcedColorAdjust: \"none\",\n background: value.withChannelValue(\"alpha\", 1).toString(\"css\"),\n },\n onFocus() {\n send({ type: \"AREA.FOCUS\", id: \"area\", channel })\n },\n onKeyDown(event) {\n if (!isInteractive) 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 (!isInteractive) return\n\n const evt = getNativeEvent(event)\n if (!isLeftClick(evt) || isModifiedEvent(evt)) return\n\n const point = getEventPoint(evt)\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: value,\n }),\n },\n })\n },\n\n getChannelSliderThumbProps(props) {\n const { orientation = \"horizontal\", channel } = props\n const { minValue, maxValue, step: stepValue } = value.getChannelRange(channel)\n const channelValue = value.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: isDisabled ? undefined : 0,\n \"data-channel\": channel,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": orientation,\n \"aria-disabled\": dataAttr(isDisabled),\n \"aria-orientation\": orientation,\n \"aria-valuemax\": maxValue,\n \"aria-valuemin\": minValue,\n \"aria-valuenow\": channelValue,\n style: {\n forcedColorAdjust: \"none\",\n position: \"absolute\",\n background: getChannelDisplayColor(value, channel).toString(\"css\"),\n ...placementStyles,\n },\n onFocus() {\n if (!isInteractive) return\n send({ type: \"CHANNEL_SLIDER.FOCUS\", channel })\n },\n onKeyDown(event) {\n if (!isInteractive) return\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 disabled: isDisabled,\n \"data-disabled\": dataAttr(isDisabled),\n readOnly: state.context.readOnly,\n id: dom.getChannelInputId(state.context, channel),\n defaultValue: getChannelValue(value, channel),\n min: range?.minValue,\n max: range?.maxValue,\n step: range?.step,\n onBeforeInput(event) {\n if (isTextField) return\n const value = event.currentTarget.value\n if (value.match(/[^0-9.]/g)) {\n event.preventDefault()\n }\n },\n onFocus(event) {\n send({ type: \"CHANNEL_INPUT.FOCUS\", channel })\n event.target.select()\n },\n onBlur(event) {\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.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: isDisabled,\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: isDisabled,\n \"data-disabled\": dataAttr(isDisabled),\n \"aria-label\": \"Pick a color from the screen\",\n onClick() {\n if (!isInteractive) return\n send(\"EYEDROPPER.CLICK\")\n },\n }),\n\n swatchGroupProps: normalize.element({\n ...parts.swatchGroup.attrs,\n role: \"group\",\n }),\n\n getSwatchTriggerProps(props) {\n const { value: valueProp } = props\n const color = normalizeColor(valueProp).toFormat(value.getFormat())\n return normalize.button({\n ...parts.swatchTrigger.attrs,\n disabled: isDisabled,\n dir: state.context.dir,\n type: \"button\",\n \"data-value\": color.toString(\"hex\"),\n onClick() {\n if (!isInteractive) return\n send({ type: \"VALUE.SET\", value: color })\n },\n style: {\n position: \"relative\",\n },\n })\n },\n\n getSwatchProps(props) {\n const { value: valueProp, respectAlpha = true } = props\n const colorValue = normalizeColor(valueProp)\n const color = colorValue.toFormat(value.getFormat())\n return normalize.element({\n ...parts.swatch.attrs,\n dir: state.context.dir,\n \"data-state\": colorValue.isEqual(value) ? \"selected\" : \"unselected\",\n \"data-value\": color.toString(\"hex\"),\n style: {\n position: \"relative\",\n background: color.toString(respectAlpha ? \"css\" : \"hex\"),\n },\n })\n },\n }\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\"\nimport { getFirstFocusable } from \"@zag-js/tabbable\"\nimport { runIfFn } from \"@zag-js/utils\"\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\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 getChannelInputId: (ctx: Ctx, channel: string) =>\n ctx.ids?.channelInput?.(channel) ?? `color-picker:${ctx.id}:input:${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) =>\n dom.getById<HTMLInputElement>(ctx, dom.getChannelInputId(ctx, channel)),\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 getFirstFocusableEl: (ctx: Ctx) => getFirstFocusable(dom.getContentEl(ctx), \"if-empty\"),\n getInitialFocusEl: (ctx: Ctx): HTMLElement | undefined => {\n let el: any = runIfFn(ctx.initialFocusEl)\n if (!el && ctx.autoFocus) el = dom.getFirstFocusableEl(ctx)\n if (!el) el = dom.getContentEl(ctx)\n return el\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() === \"hsl\"\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(\"hsl\").getChannelValue(\"saturation\").toString()\n : color.toFormat(\"hsb\").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(\"hsl\").getChannelRange(channel)\n\n case \"brightness\":\n return color.toFormat(\"hsb\").getChannelRange(channel)\n\n case \"red\":\n case \"green\":\n case \"blue\":\n return color.toFormat(\"rgb\").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, ref } from \"@zag-js/core\"\nimport { trackDismissableElement } from \"@zag-js/dismissable\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { 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 ColorType,\n ExtendedColorChannel,\n MachineContext,\n MachineState,\n UserDefinedContext,\n} from \"./color-picker.types\"\nimport { getChannelValue } from \"./utils/get-channel-input-value\"\n\nconst { stateIn } = 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 disabled: false,\n ...ctx,\n activeId: null,\n activeChannel: null,\n activeOrientation: null,\n fieldsetDisabled: false,\n autoFocus: 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) => {\n const color = ctx.value.outputFormat ? ctx.value.toFormat(ctx.value.outputFormat) : ctx.value\n return color.toString(\"css\")\n },\n },\n\n activities: [\"trackFormControl\"],\n\n watch: {\n valueAsString: [\"syncInputElements\"],\n open: [\"toggleVisibility\"],\n },\n\n on: {\n \"VALUE.SET\": {\n actions: [\"setValue\"],\n },\n \"CHANNEL_INPUT.FOCUS\": [\n {\n guard: stateIn(\"idle\"),\n target: \"focused\",\n actions: [\"setActiveChannel\"],\n },\n {\n actions: [\"setActiveChannel\"],\n },\n ],\n \"CHANNEL_INPUT.BLUR\": [\n {\n guard: stateIn(\"focused\"),\n target: \"idle\",\n actions: [\"setChannelColorFromInput\"],\n },\n {\n actions: [\"setChannelColorFromInput\"],\n },\n ],\n \"CHANNEL_INPUT.CHANGE\": {\n actions: [\"setChannelColorFromInput\"],\n },\n },\n\n states: {\n idle: {\n tags: [\"closed\"],\n on: {\n OPEN: {\n target: \"open\",\n actions: [\"setInitialFocus\", \"invokeOnOpen\"],\n },\n \"TRIGGER.CLICK\": {\n target: \"open\",\n actions: [\"setInitialFocus\", \"invokeOnOpen\"],\n },\n },\n },\n\n focused: {\n tags: [\"closed\", \"focused\"],\n on: {\n OPEN: {\n target: \"open\",\n actions: [\"setInitialFocus\", \"invokeOnOpen\"],\n },\n \"TRIGGER.CLICK\": {\n target: \"open\",\n actions: [\"setInitialFocus\", \"invokeOnOpen\"],\n },\n },\n },\n\n open: {\n tags: [\"open\"],\n activities: [\"trackPositioning\", \"trackDismissableElement\"],\n on: {\n \"TRIGGER.CLICK\": {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n \"EYEDROPPER.CLICK\": {\n actions: [\"openEyeDropper\"],\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 INTERACT_OUTSIDE: [\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"setReturnFocus\", \"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n CLOSE: {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n },\n },\n\n \"open:dragging\": {\n tags: [\"open\"],\n exit: [\"clearActiveChannel\"],\n activities: [\"trackPointerMove\", \"disableTextSelection\", \"trackPositioning\", \"trackDismissableElement\"],\n on: {\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: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"setReturnFocus\", \"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n CLOSE: {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n },\n },\n },\n },\n {\n guards: {\n isTargetFocusable: (_ctx, evt) => evt.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 onCleanup() {\n ctx.currentPlacement = undefined\n },\n })\n },\n trackDismissableElement(ctx, _evt, { send }) {\n const getContentEl = () => dom.getContentEl(ctx)\n let restoreFocus = true\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 restoreFocus = !(event.detail.focusable || event.detail.contextmenu)\n },\n onPointerDownOutside: ctx.onPointerDownOutside,\n onFocusOutside: ctx.onFocusOutside,\n onDismiss() {\n send({ type: \"INTERACT_OUTSIDE\", restoreFocus })\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) as any\n const picker = new win.EyeDropper()\n picker\n .open()\n .then(({ sRGBHex }: { sRGBHex: string }) => {\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.value.getChannelPercentValue(xChannel, percent.x)\n const yValue = ctx.value.getChannelPercentValue(yChannel, 1 - percent.y)\n\n const color = ctx.value.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.value.getChannelPercentValue(channel, channelPercent)\n const color = ctx.value.withChannelValue(channel, value)\n set.value(ctx, color)\n },\n setValue(ctx, evt) {\n set.value(ctx, evt.value)\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\n // handle alpha channel\n if (channel === \"alpha\") {\n const newColor = ctx.value.withChannelValue(\"alpha\", parseFloat(value))\n set.value(ctx, newColor)\n return\n }\n\n // handle other text channels\n if (isTextField) {\n const currentAlpha = ctx.value.getChannelValue(\"alpha\")\n\n const color = tryCatch(\n () => parse(value).withChannelValue(\"alpha\", currentAlpha),\n () => ctx.value,\n )\n\n // set channel input value immediately (in event user types native css color, we need to convert it to the current channel format)\n const inputEl = dom.getChannelInputEl(ctx, channel)\n dom.setValue(inputEl, getChannelValue(color, channel))\n\n set.value(ctx, color)\n return\n }\n\n // handle other channels\n const color = ctx.value.toFormat(ctx.value.outputFormat!).withChannelValue(channel, value)\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.value.incrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n decrementXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.value.decrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n incrementYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.value.incrementChannel(yChannel, evt.step)\n set.value(ctx, color)\n },\n decrementYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.value.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?.focus(ctx, dom.getAreaThumbEl(ctx))\n })\n },\n focusChannelThumb(ctx, evt) {\n raf(() => {\n dom?.focus(ctx, dom.getChannelSliderThumbEl(ctx, evt.channel))\n })\n },\n setInitialFocus(ctx) {\n raf(() => {\n dom.getInitialFocusEl(ctx)?.focus({ preventScroll: true })\n })\n },\n setReturnFocus(ctx) {\n raf(() => {\n dom?.focus(ctx, dom.getTriggerEl(ctx))\n })\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 ? \"OPEN\" : \"CLOSE\", src: \"controlled\" })\n },\n },\n compareFns: {\n value: (a, b) => a.isEqual(b),\n },\n },\n )\n}\n\nconst sync = {\n inputs(ctx: MachineContext) {\n // sync channel inputs\n const channelInputs = dom.getChannelInputEls(ctx)\n channelInputs.forEach((inputEl) => {\n const channel = inputEl.dataset.channel as ExtendedColorChannel | null\n dom.setValue(inputEl, getChannelValue(ctx.value, channel))\n })\n },\n}\n\nconst invoke = {\n changeEnd(ctx: MachineContext) {\n ctx.onValueChangeEnd?.({\n value: ctx.value,\n valueAsString: ctx.valueAsString,\n })\n },\n change(ctx: MachineContext) {\n ctx.onValueChange?.({\n value: ctx.value,\n valueAsString: ctx.valueAsString,\n })\n\n dispatchInputValueEvent(dom.getHiddenInputEl(ctx), { value: ctx.valueAsString })\n },\n}\n\nconst set = {\n value(ctx: MachineContext, color: Color | ColorType | undefined) {\n sync.inputs(ctx)\n if (!color || ctx.value.isEqual(color)) return\n const currentFormat = ctx.value.getFormat()\n const outputColor = color.toFormat(currentFormat)\n try {\n outputColor.outputFormat = ctx.value.outputFormat\n } catch {}\n\n ctx.value = ref(outputColor) as Color\n invoke.change(ctx)\n },\n}\n","import { parseColor, type Color } from \"@zag-js/color-utils\"\nimport { ref } from \"@zag-js/core\"\n\nexport const parse = (color: string): Color => {\n const value = parseColor(color)\n\n const colorFormat = value.getFormat()\n const lockedFormat = colorFormat.startsWith(\"hsl\") ? \"hsla\" : \"hsba\"\n\n const result = value.toFormat(lockedFormat)\n result.outputFormat = colorFormat\n\n return ref(result)\n}\n"],"mappings":"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","names":["import_color_utils","import_dom_event","import_dom_query","import_color_utils","channels","value","event","import_color_utils","import_core","import_dom_event","import_dom_query","import_popper","import_utils","import_color_utils","ctx","color"]}
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 { 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 SwatchProps,\n TransparencyGridProps,\n SwatchTriggerProps,\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 \"swatch\",\n \"eyeDropperTrigger\",\n])\n\nexport const parts = anatomy.build()\n","import { getColorAreaGradient, normalizeColor } from \"@zag-js/color-utils\"\nimport {\n getEventKey,\n getEventPoint,\n getEventStep,\n getNativeEvent,\n isLeftClick,\n isModifiedEvent,\n type EventKeyMap,\n} from \"@zag-js/dom-event\"\nimport { dataAttr, query } from \"@zag-js/dom-query\"\nimport { getPlacementStyles } from \"@zag-js/popper\"\nimport type { NormalizeProps, PropTypes } from \"@zag-js/types\"\nimport { visuallyHiddenStyle } from \"@zag-js/visually-hidden\"\nimport { parts } from \"./color-picker.anatomy\"\nimport { dom } from \"./color-picker.dom\"\nimport type { AreaProps, MachineApi, Send, State } 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 valueAsString = state.context.valueAsString\n\n const isDisabled = state.context.isDisabled\n const isInteractive = state.context.isInteractive\n\n const isDragging = state.hasTag(\"dragging\")\n const isOpen = state.hasTag(\"open\")\n\n const getAreaChannels = (props: AreaProps) => {\n const channels = value.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 return {\n isDragging,\n isOpen,\n valueAsString,\n value,\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: value.outputFormat ?? value.getFormat(),\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(isDisabled),\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(isDisabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\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(isDisabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n }),\n\n triggerProps: normalize.button({\n ...parts.trigger.attrs,\n id: dom.getTriggerId(state.context),\n dir: state.context.dir,\n \"aria-labelledby\": dom.getLabelId(state.context),\n \"data-disabled\": dataAttr(isDisabled),\n \"data-readonly\": dataAttr(state.context.readOnly),\n \"data-placement\": currentPlacement,\n type: \"button\",\n onClick() {\n send({ type: \"TRIGGER.CLICK\" })\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 hidden: !isOpen,\n }),\n\n getAreaProps(props = {}) {\n const { xChannel, yChannel } = getAreaChannels(props)\n const { areaStyles } = getColorAreaGradient(value, {\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 (!isInteractive) return\n\n const evt = getNativeEvent(event)\n if (!isLeftClick(evt) || isModifiedEvent(evt)) return\n\n const point = getEventPoint(evt)\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(value, {\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 x = value.getChannelValuePercent(xChannel)\n const y = 1 - value.getChannelValuePercent(yChannel)\n\n return normalize.element({\n ...parts.areaThumb.attrs,\n id: dom.getAreaThumbId(state.context),\n dir: state.context.dir,\n tabIndex: isDisabled ? undefined : 0,\n \"data-disabled\": dataAttr(isDisabled),\n role: \"presentation\",\n style: {\n position: \"absolute\",\n left: `${x * 100}%`,\n top: `${y * 100}%`,\n transform: \"translate(-50%, -50%)\",\n touchAction: \"none\",\n forcedColorAdjust: \"none\",\n background: value.withChannelValue(\"alpha\", 1).toString(\"css\"),\n },\n onFocus() {\n send({ type: \"AREA.FOCUS\", id: \"area\", channel })\n },\n onKeyDown(event) {\n if (!isInteractive) 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 (!isInteractive) return\n\n const evt = getNativeEvent(event)\n if (!isLeftClick(evt) || isModifiedEvent(evt)) return\n\n const point = getEventPoint(evt)\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: value,\n }),\n },\n })\n },\n\n getChannelSliderThumbProps(props) {\n const { orientation = \"horizontal\", channel } = props\n const { minValue, maxValue, step: stepValue } = value.getChannelRange(channel)\n const channelValue = value.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: isDisabled ? undefined : 0,\n \"data-channel\": channel,\n \"data-disabled\": dataAttr(isDisabled),\n \"data-orientation\": orientation,\n \"aria-disabled\": dataAttr(isDisabled),\n \"aria-orientation\": orientation,\n \"aria-valuemax\": maxValue,\n \"aria-valuemin\": minValue,\n \"aria-valuenow\": channelValue,\n style: {\n forcedColorAdjust: \"none\",\n position: \"absolute\",\n background: getChannelDisplayColor(value, channel).toString(\"css\"),\n ...placementStyles,\n },\n onFocus() {\n if (!isInteractive) return\n send({ type: \"CHANNEL_SLIDER.FOCUS\", channel })\n },\n onKeyDown(event) {\n if (!isInteractive) return\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 disabled: isDisabled,\n \"data-disabled\": dataAttr(isDisabled),\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) return\n const value = event.currentTarget.value\n if (value.match(/[^0-9.]/g)) {\n event.preventDefault()\n }\n },\n onFocus(event) {\n send({ type: \"CHANNEL_INPUT.FOCUS\", channel })\n event.target.select()\n },\n onBlur(event) {\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.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: isDisabled,\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: isDisabled,\n \"data-disabled\": dataAttr(isDisabled),\n \"aria-label\": \"Pick a color from the screen\",\n onClick() {\n if (!isInteractive) return\n send(\"EYEDROPPER.CLICK\")\n },\n }),\n\n swatchGroupProps: normalize.element({\n ...parts.swatchGroup.attrs,\n role: \"group\",\n }),\n\n getSwatchTriggerProps(props) {\n const { value: valueProp } = props\n const color = normalizeColor(valueProp).toFormat(value.getFormat())\n return normalize.button({\n ...parts.swatchTrigger.attrs,\n disabled: isDisabled,\n dir: state.context.dir,\n type: \"button\",\n \"data-value\": color.toString(\"hex\"),\n onClick() {\n if (!isInteractive) return\n send({ type: \"VALUE.SET\", value: color })\n },\n style: {\n position: \"relative\",\n },\n })\n },\n\n getSwatchProps(props) {\n const { value: valueProp, respectAlpha = true } = props\n const colorValue = normalizeColor(valueProp)\n const color = colorValue.toFormat(value.getFormat())\n return normalize.element({\n ...parts.swatch.attrs,\n dir: state.context.dir,\n \"data-state\": colorValue.isEqual(value) ? \"selected\" : \"unselected\",\n \"data-value\": color.toString(\"hex\"),\n style: {\n position: \"relative\",\n background: color.toString(respectAlpha ? \"css\" : \"hex\"),\n },\n })\n },\n }\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\"\nimport { getFirstFocusable } from \"@zag-js/tabbable\"\nimport { runIfFn } from \"@zag-js/utils\"\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\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\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 getFirstFocusableEl: (ctx: Ctx) => getFirstFocusable(dom.getContentEl(ctx), \"if-empty\"),\n getInitialFocusEl: (ctx: Ctx): HTMLElement | undefined => {\n let el: any = runIfFn(ctx.initialFocusEl)\n if (!el && ctx.autoFocus) el = dom.getFirstFocusableEl(ctx)\n if (!el) el = dom.getContentEl(ctx)\n return el\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(\"hsl\").getChannelValue(\"saturation\").toString()\n : color.toFormat(\"hsb\").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(\"hsl\").getChannelRange(channel)\n\n case \"brightness\":\n return color.toFormat(\"hsb\").getChannelRange(channel)\n\n case \"red\":\n case \"green\":\n case \"blue\":\n return color.toFormat(\"rgb\").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 } from \"@zag-js/core\"\nimport { trackDismissableElement } from \"@zag-js/dismissable\"\nimport { trackPointerMove } from \"@zag-js/dom-event\"\nimport { 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 ColorType,\n ExtendedColorChannel,\n MachineContext,\n MachineState,\n UserDefinedContext,\n} from \"./color-picker.types\"\nimport { getChannelValue } from \"./utils/get-channel-input-value\"\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 disabled: false,\n ...ctx,\n activeId: null,\n activeChannel: null,\n activeOrientation: null,\n fieldsetDisabled: false,\n autoFocus: 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) => {\n const color = ctx.value.outputFormat ? ctx.value.toFormat(ctx.value.outputFormat) : ctx.value\n return color.toString(\"css\")\n },\n },\n\n activities: [\"trackFormControl\"],\n\n watch: {\n value: [\"syncInputElements\"],\n open: [\"toggleVisibility\"],\n },\n\n on: {\n \"VALUE.SET\": {\n actions: [\"setValue\"],\n },\n \"CHANNEL_INPUT.CHANGE\": {\n actions: [\"setChannelColorFromInput\"],\n },\n },\n\n states: {\n idle: {\n tags: [\"closed\"],\n on: {\n OPEN: {\n target: \"open\",\n actions: [\"setInitialFocus\", \"invokeOnOpen\"],\n },\n \"TRIGGER.CLICK\": {\n target: \"open\",\n actions: [\"setInitialFocus\", \"invokeOnOpen\"],\n },\n \"CHANNEL_INPUT.FOCUS\": {\n target: \"focused\",\n actions: [\"setActiveChannel\"],\n },\n },\n },\n\n focused: {\n tags: [\"closed\", \"focused\"],\n on: {\n OPEN: {\n target: \"open\",\n actions: [\"setInitialFocus\", \"invokeOnOpen\"],\n },\n \"TRIGGER.CLICK\": {\n target: \"open\",\n actions: [\"setInitialFocus\", \"invokeOnOpen\"],\n },\n \"CHANNEL_INPUT.FOCUS\": {\n actions: [\"setActiveChannel\"],\n },\n \"CHANNEL_INPUT.BLUR\": {\n target: \"idle\",\n actions: [\"setChannelColorFromInput\"],\n },\n },\n },\n\n open: {\n tags: [\"open\"],\n activities: [\"trackPositioning\", \"trackDismissableElement\"],\n on: {\n \"TRIGGER.CLICK\": {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n \"EYEDROPPER.CLICK\": {\n actions: [\"openEyeDropper\"],\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: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"setReturnFocus\", \"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n CLOSE: {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n },\n },\n\n \"open:dragging\": {\n tags: [\"open\"],\n exit: [\"clearActiveChannel\"],\n activities: [\"trackPointerMove\", \"disableTextSelection\", \"trackPositioning\", \"trackDismissableElement\"],\n on: {\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: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"setReturnFocus\", \"invokeOnClose\"],\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n ],\n CLOSE: {\n target: \"idle\",\n actions: [\"invokeOnClose\"],\n },\n },\n },\n },\n },\n {\n guards: {\n isTargetFocusable: (_ctx, evt) => evt.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 onCleanup() {\n ctx.currentPlacement = undefined\n },\n })\n },\n trackDismissableElement(ctx, _evt, { send }) {\n const getContentEl = () => dom.getContentEl(ctx)\n let restoreFocus = true\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 restoreFocus = !(event.detail.focusable || event.detail.contextmenu)\n },\n onPointerDownOutside: ctx.onPointerDownOutside,\n onFocusOutside: ctx.onFocusOutside,\n onDismiss() {\n send({ type: \"INTERACT_OUTSIDE\", restoreFocus })\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) as any\n const picker = new win.EyeDropper()\n picker\n .open()\n .then(({ sRGBHex }: { sRGBHex: string }) => {\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.value.getChannelPercentValue(xChannel, percent.x)\n const yValue = ctx.value.getChannelPercentValue(yChannel, 1 - percent.y)\n\n const color = ctx.value.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.value.getChannelPercentValue(channel, channelPercent)\n const color = ctx.value.withChannelValue(channel, value)\n set.value(ctx, color)\n },\n setValue(ctx, evt) {\n set.value(ctx, evt.value)\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 alpha channel\n if (channel === \"alpha\") {\n let valueAsNumber = parseFloat(value)\n valueAsNumber = Number.isNaN(valueAsNumber) ? currentAlpha : valueAsNumber\n const newColor = ctx.value.withChannelValue(\"alpha\", valueAsNumber)\n set.value(ctx, newColor)\n return\n }\n\n // handle other text channels\n if (isTextField) {\n const color = tryCatch(\n () => parse(value).withChannelValue(\"alpha\", currentAlpha),\n () => ctx.value,\n )\n\n // set channel input value immediately (in event user types native css color, we need to convert it to the current channel format)\n const inputEls = dom.getChannelInputEl(ctx, channel)\n inputEls.forEach((inputEl) => {\n dom.setValue(inputEl, getChannelValue(color, channel))\n })\n\n set.value(ctx, color)\n return\n }\n\n // handle other channels\n const color = ctx.value.toFormat(ctx.value.outputFormat!).withChannelValue(channel, value)\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.value.incrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n decrementXChannel(ctx, evt) {\n const { xChannel } = evt.channel\n const color = ctx.value.decrementChannel(xChannel, evt.step)\n set.value(ctx, color)\n },\n incrementYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.value.incrementChannel(yChannel, evt.step)\n set.value(ctx, color)\n },\n decrementYChannel(ctx, evt) {\n const { yChannel } = evt.channel\n const color = ctx.value.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?.focus(ctx, dom.getAreaThumbEl(ctx))\n })\n },\n focusChannelThumb(ctx, evt) {\n raf(() => {\n dom?.focus(ctx, dom.getChannelSliderThumbEl(ctx, evt.channel))\n })\n },\n setInitialFocus(ctx) {\n raf(() => {\n dom.getInitialFocusEl(ctx)?.focus({ preventScroll: true })\n })\n },\n setReturnFocus(ctx) {\n raf(() => {\n dom?.focus(ctx, dom.getTriggerEl(ctx))\n })\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 ? \"OPEN\" : \"CLOSE\", src: \"controlled\" })\n },\n },\n compareFns: {\n value: (a, b) => a.isEqual(b),\n },\n },\n )\n}\n\nconst sync = {\n inputs(ctx: MachineContext) {\n // sync channel inputs\n const channelInputs = dom.getChannelInputEls(ctx)\n channelInputs.forEach((inputEl) => {\n const channel = inputEl.dataset.channel as ExtendedColorChannel | null\n dom.setValue(inputEl, getChannelValue(ctx.value, channel))\n })\n },\n}\n\nconst invoke = {\n changeEnd(ctx: MachineContext) {\n ctx.onValueChangeEnd?.({\n value: ctx.value,\n valueAsString: ctx.valueAsString,\n })\n },\n change(ctx: MachineContext) {\n ctx.onValueChange?.({\n value: ctx.value,\n valueAsString: ctx.valueAsString,\n })\n\n dispatchInputValueEvent(dom.getHiddenInputEl(ctx), { value: ctx.valueAsString })\n },\n}\n\nconst set = {\n value(ctx: MachineContext, color: Color | ColorType | undefined) {\n if (!color || ctx.value.isEqual(color)) return\n const currentFormat = ctx.value.getFormat()\n const outputColor = color.toFormat(currentFormat)\n try {\n outputColor.outputFormat = ctx.value.outputFormat\n } catch {}\n\n ctx.value = outputColor\n invoke.change(ctx)\n },\n}\n","import { parseColor, type Color } from \"@zag-js/color-utils\"\n\nexport const parse = (color: string): Color => {\n const value = parseColor(color)\n\n const colorFormat = value.getFormat()\n const lockedFormat = colorFormat === \"hsla\" ? \"hsla\" : \"hsba\"\n\n const result = value.toFormat(lockedFormat)\n result.outputFormat = colorFormat\n\n return result\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,qBAA8B;AAEvB,IAAM,cAAU,8BAAc,gBAAgB;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,QAAQ,QAAQ,MAAM;;;ACvBnC,IAAAA,sBAAqD;AACrD,IAAAC,oBAQO;AACP,IAAAC,oBAAgC;AAChC,oBAAmC;AAEnC,6BAAoC;;;ACZpC,uBAA6C;AAC7C,uBAAsC;AAEtC,sBAAkC;AAClC,mBAAwB;AAEjB,IAAM,UAAM,8BAAY;AAAA,EAC7B,WAAW,CAAC,QAAa,IAAI,KAAK,QAAQ,gBAAgB,IAAI,EAAE;AAAA,EAChE,YAAY,CAAC,QAAa,IAAI,KAAK,SAAS,gBAAgB,IAAI,EAAE;AAAA,EAClE,kBAAkB,CAAC,QAAa,gBAAgB,IAAI,EAAE;AAAA,EACtD,cAAc,CAAC,QAAa,IAAI,KAAK,WAAW,gBAAgB,IAAI,EAAE;AAAA,EACtE,cAAc,CAAC,QAAa,IAAI,KAAK,WAAW,gBAAgB,IAAI,EAAE;AAAA,EACtE,cAAc,CAAC,QAAa,IAAI,KAAK,WAAW,gBAAgB,IAAI,EAAE;AAAA,EACtE,iBAAiB,CAAC,QAAa,gBAAgB,IAAI,EAAE;AAAA,EAErD,WAAW,CAAC,QAAa,IAAI,KAAK,QAAQ,gBAAgB,IAAI,EAAE;AAAA,EAChE,mBAAmB,CAAC,QAAa,IAAI,KAAK,gBAAgB,gBAAgB,IAAI,EAAE;AAAA,EAChF,gBAAgB,CAAC,QAAa,IAAI,KAAK,aAAa,gBAAgB,IAAI,EAAE;AAAA,EAE1E,oBAAoB,CAAC,KAAU,YAC7B,IAAI,KAAK,qBAAqB,OAAO,KAAK,gBAAgB,IAAI,EAAE,iBAAiB,OAAO;AAAA,EAC1F,yBAAyB,CAAC,KAAU,YAClC,IAAI,KAAK,qBAAqB,OAAO,KAAK,gBAAgB,IAAI,EAAE,iBAAiB,OAAO;AAAA,EAE1F,cAAc,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,aAAa,GAAG,CAAC;AAAA,EAClE,gBAAgB,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,eAAe,GAAG,CAAC;AAAA,EACtE,yBAAyB,CAAC,KAAU,YAClC,IAAI,QAAQ,KAAK,IAAI,wBAAwB,KAAK,OAAO,CAAC;AAAA,EAC5D,mBAAmB,CAAC,KAAU,YAAwC;AACpE,WAAO;AAAA,MACL,OAAG,2BAA2B,IAAI,aAAa,GAAG,GAAG,uBAAuB,OAAO,IAAI;AAAA,MACvF,OAAG,2BAA2B,IAAI,aAAa,GAAG,GAAG,uBAAuB,OAAO,IAAI;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,kBAAkB,CAAC,QAAa,IAAI,QAA0B,KAAK,IAAI,iBAAiB,GAAG,CAAC;AAAA,EAC5F,WAAW,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,UAAU,GAAG,CAAC;AAAA,EAC5D,sBAAsB,KAAU,OAAc;AAC5C,UAAM,SAAS,IAAI,UAAU,GAAG;AAChC,QAAI,CAAC;AAAQ;AACb,UAAM,EAAE,QAAQ,QAAI,mCAAiB,OAAO,MAAM;AAClD,WAAO;AAAA,EACT;AAAA,EAEA,cAAc,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,aAAa,GAAG,CAAC;AAAA,EAClE,cAAc,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,aAAa,GAAG,CAAC;AAAA,EAClE,iBAAiB,CAAC,QAAa,IAAI,QAAQ,KAAK,IAAI,gBAAgB,GAAG,CAAC;AAAA,EACxE,yBAAyB,CAAC,KAAU,YAA0B;AAC5D,WAAO,IAAI,QAAQ,KAAK,IAAI,mBAAmB,KAAK,OAAO,CAAC;AAAA,EAC9D;AAAA,EACA,+BAA+B,KAAU,OAAc,SAAuB;AAC5E,UAAM,UAAU,IAAI,wBAAwB,KAAK,OAAO;AACxD,QAAI,CAAC;AAAS;AACd,UAAM,EAAE,QAAQ,QAAI,mCAAiB,OAAO,OAAO;AACnD,WAAO;AAAA,EACT;AAAA,EACA,oBAAoB,CAAC,QAAa;AAChC,WAAO;AAAA,MACL,OAAG,2BAA2B,IAAI,aAAa,GAAG,GAAG,qBAAqB;AAAA,MAC1E,OAAG,2BAA2B,IAAI,aAAa,GAAG,GAAG,qBAAqB;AAAA,IAC5E;AAAA,EACF;AAAA,EACA,qBAAqB,CAAC,YAAa,mCAAkB,IAAI,aAAa,GAAG,GAAG,UAAU;AAAA,EACtF,mBAAmB,CAAC,QAAsC;AACxD,QAAI,SAAU,sBAAQ,IAAI,cAAc;AACxC,QAAI,CAAC,MAAM,IAAI;AAAW,WAAK,IAAI,oBAAoB,GAAG;AAC1D,QAAI,CAAC;AAAI,WAAK,IAAI,aAAa,GAAG;AAClC,WAAO;AAAA,EACT;AACF,CAAC;;;ACtED,yBAA0D;AAEnD,SAAS,uBAAuB,OAAc,SAAuB;AAC1E,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,iBAAO,+BAAW,OAAO,MAAM,gBAAgB,KAAK,CAAC,cAAc;AAAA,IACrE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,MAAM,iBAAiB,SAAS,CAAC;AAAA,IAC1C,KAAK,SAAS;AACZ,aAAO;AAAA,IACT;AAAA,IACA;AACE,YAAM,IAAI,MAAM,4BAA4B,OAAO;AAAA,EACvD;AACF;;;ACnBA,IAAAC,sBAA+D;AAGxD,SAAS,gBAAgB,OAAc,SAA0D;AACtG,MAAI,WAAW;AAAM,WAAO;AAE5B,MAAI,YAAY,OAAO;AACrB,WAAO,MAAM,SAAS,KAAK;AAAA,EAC7B;AAEA,MAAI,YAAY,OAAO;AACrB,WAAO,MAAM,SAAS,KAAK;AAAA,EAC7B;AAEA,MAAI,WAAW,OAAO;AACpB,WAAO,MAAM,gBAAgB,OAAO,EAAE,SAAS;AAAA,EACjD;AAEA,QAAM,QAAQ,MAAM,UAAU,MAAM;AAEpC,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,QACH,MAAM,SAAS,MAAM,EAAE,gBAAgB,KAAK,EAAE,SAAS,IACvD,MAAM,SAAS,MAAM,EAAE,gBAAgB,KAAK,EAAE,SAAS;AAAA,IAE7D,KAAK;AACH,aAAO,QACH,MAAM,SAAS,KAAK,EAAE,gBAAgB,YAAY,EAAE,SAAS,IAC7D,MAAM,SAAS,KAAK,EAAE,gBAAgB,YAAY,EAAE,SAAS;AAAA,IAEnE,KAAK;AACH,aAAO,MAAM,SAAS,MAAM,EAAE,gBAAgB,WAAW,EAAE,SAAS;AAAA,IAEtE,KAAK;AACH,aAAO,MAAM,SAAS,MAAM,EAAE,gBAAgB,YAAY,EAAE,SAAS;AAAA,IAEvE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,MAAM,SAAS,MAAM,EAAE,gBAAgB,OAAO,EAAE,SAAS;AAAA,IAElE;AACE,aAAO,MAAM,gBAAgB,OAAO,EAAE,SAAS;AAAA,EACnD;AACF;AAEO,SAAS,gBAAgB,OAAc,SAA8D;AAC1G,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,YAAM,eAAW,gCAAW,SAAS;AACrC,YAAM,eAAW,gCAAW,SAAS;AACrC,aAAO;AAAA,QACL,UAAU,SAAS,SAAS;AAAA,QAC5B,UAAU,SAAS,SAAS;AAAA,QAC5B,UAAU;AAAA,QACV,MAAM;AAAA,MACR;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,IAET,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,MAAM,SAAS,KAAK,EAAE,gBAAgB,OAAO;AAAA,IAEtD,KAAK;AACH,aAAO,MAAM,SAAS,KAAK,EAAE,gBAAgB,OAAO;AAAA,IAEtD,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,MAAM,SAAS,KAAK,EAAE,gBAAgB,OAAO;AAAA,IAEtD;AACE,aAAO,MAAM,gBAAgB,OAAO;AAAA,EACxC;AACF;;;AC5EA,SAAS,6BAA6B,aAAwC,KAAoB;AAChG,MAAI,gBAAgB,YAAY;AAC9B,WAAO;AAAA,EACT,WAAW,QAAQ,OAAO;AACxB,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAOO,IAAM,sBAAsB,CAAC,UAAiC;AACnE,QAAM,EAAE,SAAS,OAAO,IAAI,IAAI;AAChC,QAAM,cAAc,6BAA6B,MAAM,aAAa,GAAI;AACxE,QAAM,EAAE,UAAU,SAAS,IAAI,MAAM,gBAAgB,OAAO;AAE5D,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO,sBAAsB,WAAW;AAAA,IAC1C,KAAK,aAAa;AAChB,UAAI,QAAQ,MAAM,iBAAiB,SAAS,QAAQ,EAAE,SAAS,KAAK;AACpE,UAAI,SAAS,MAAM,iBAAiB,UAAU,WAAW,YAAY,CAAC,EAAE,SAAS,KAAK;AACtF,UAAI,MAAM,MAAM,iBAAiB,SAAS,QAAQ,EAAE,SAAS,KAAK;AAClE,aAAO,sBAAsB,WAAW,KAAK,KAAK,KAAK,MAAM,KAAK,GAAG;AAAA,IACvE;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,SAAS;AACZ,UAAI,QAAQ,MAAM,iBAAiB,SAAS,QAAQ,EAAE,SAAS,KAAK;AACpE,UAAI,MAAM,MAAM,iBAAiB,SAAS,QAAQ,EAAE,SAAS,KAAK;AAClE,aAAO,sBAAsB,WAAW,KAAK,KAAK,KAAK,GAAG;AAAA,IAC5D;AAAA,IACA;AACE,YAAM,IAAI,MAAM,4BAA4B,OAAO;AAAA,EACvD;AACF;;;AJvBO,SAAS,QAA6B,OAAc,MAAY,WAA6C;AAClH,QAAM,QAAQ,MAAM,QAAQ;AAC5B,QAAM,gBAAgB,MAAM,QAAQ;AAEpC,QAAM,aAAa,MAAM,QAAQ;AACjC,QAAM,gBAAgB,MAAM,QAAQ;AAEpC,QAAM,aAAa,MAAM,OAAO,UAAU;AAC1C,QAAM,SAAS,MAAM,OAAO,MAAM;AAElC,QAAM,kBAAkB,CAAC,UAAqB;AAC5C,UAAM,WAAW,MAAM,YAAY;AACnC,WAAO;AAAA,MACL,UAAU,MAAM,YAAY,SAAS,CAAC;AAAA,MACtC,UAAU,MAAM,YAAY,SAAS,CAAC;AAAA,IACxC;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM,QAAQ;AACvC,QAAM,mBAAe,kCAAmB;AAAA,IACtC,GAAG,MAAM,QAAQ;AAAA,IACjB,WAAW;AAAA,EACb,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAASC,QAAO;AACd,WAAK,EAAE,MAAM,aAAa,WAAO,oCAAeA,MAAK,GAAG,KAAK,YAAY,CAAC;AAAA,IAC5E;AAAA,IACA,gBAAgB,SAAS;AACvB,aAAO,gBAAgB,OAAO,OAAO;AAAA,IACvC;AAAA,IACA,gBAAgB,SAAS,cAAc;AACrC,YAAM,QAAQ,MAAM,iBAAiB,SAAS,YAAY;AAC1D,WAAK,EAAE,MAAM,aAAa,OAAO,OAAO,KAAK,cAAc,CAAC;AAAA,IAC9D;AAAA,IACA,QAAQ,MAAM,gBAAgB,MAAM,UAAU;AAAA,IAC9C,UAAU,QAAQ;AAChB,YAAM,cAAc,MAAM,SAAS,MAAM;AACzC,WAAK,EAAE,MAAM,aAAa,OAAO,aAAa,KAAK,aAAa,CAAC;AAAA,IACnE;AAAA,IACA,OAAO,MAAM,gBAAgB,OAAO;AAAA,IACpC,SAAS,YAAY;AACnB,YAAM,QAAQ,MAAM,iBAAiB,SAAS,UAAU;AACxD,WAAK,EAAE,MAAM,aAAa,OAAO,OAAO,KAAK,YAAY,CAAC;AAAA,IAC5D;AAAA,IAEA,WAAW,UAAU,QAAQ;AAAA,MAC3B,GAAG,MAAM,KAAK;AAAA,MACd,KAAK,MAAM,QAAQ;AAAA,MACnB,IAAI,IAAI,UAAU,MAAM,OAAO;AAAA,MAC/B,qBAAiB,4BAAS,UAAU;AAAA,MACpC,qBAAiB,4BAAS,MAAM,QAAQ,QAAQ;AAAA,MAChD,OAAO;AAAA,QACL,WAAW,MAAM,SAAS,KAAK;AAAA,MACjC;AAAA,IACF,CAAC;AAAA,IAED,YAAY,UAAU,QAAQ;AAAA,MAC5B,GAAG,MAAM,MAAM;AAAA,MACf,KAAK,MAAM,QAAQ;AAAA,MACnB,IAAI,IAAI,WAAW,MAAM,OAAO;AAAA,MAChC,SAAS,IAAI,iBAAiB,MAAM,OAAO;AAAA,MAC3C,qBAAiB,4BAAS,UAAU;AAAA,MACpC,qBAAiB,4BAAS,MAAM,QAAQ,QAAQ;AAAA,MAChD,QAAQ,OAAO;AACb,cAAM,eAAe;AACrB,cAAM,cAAU,yBAAM,IAAI,aAAa,MAAM,OAAO,GAAG,oBAAoB;AAC3E,iBAAS,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA,MACxC;AAAA,IACF,CAAC;AAAA,IAED,cAAc,UAAU,QAAQ;AAAA,MAC9B,GAAG,MAAM,QAAQ;AAAA,MACjB,IAAI,IAAI,aAAa,MAAM,OAAO;AAAA,MAClC,KAAK,MAAM,QAAQ;AAAA,MACnB,qBAAiB,4BAAS,UAAU;AAAA,MACpC,qBAAiB,4BAAS,MAAM,QAAQ,QAAQ;AAAA,IAClD,CAAC;AAAA,IAED,cAAc,UAAU,OAAO;AAAA,MAC7B,GAAG,MAAM,QAAQ;AAAA,MACjB,IAAI,IAAI,aAAa,MAAM,OAAO;AAAA,MAClC,KAAK,MAAM,QAAQ;AAAA,MACnB,mBAAmB,IAAI,WAAW,MAAM,OAAO;AAAA,MAC/C,qBAAiB,4BAAS,UAAU;AAAA,MACpC,qBAAiB,4BAAS,MAAM,QAAQ,QAAQ;AAAA,MAChD,kBAAkB;AAAA,MAClB,MAAM;AAAA,MACN,UAAU;AACR,aAAK,EAAE,MAAM,gBAAgB,CAAC;AAAA,MAChC;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,IAED,iBAAiB,UAAU,QAAQ;AAAA,MACjC,GAAG,MAAM,WAAW;AAAA,MACpB,IAAI,IAAI,gBAAgB,MAAM,OAAO;AAAA,MACrC,KAAK,MAAM,QAAQ;AAAA,MACnB,OAAO,aAAa;AAAA,IACtB,CAAC;AAAA,IAED,cAAc,UAAU,QAAQ;AAAA,MAC9B,GAAG,MAAM,QAAQ;AAAA,MACjB,IAAI,IAAI,aAAa,MAAM,OAAO;AAAA,MAClC,KAAK,MAAM,QAAQ;AAAA,MACnB,kBAAkB;AAAA,MAClB,QAAQ,CAAC;AAAA,IACX,CAAC;AAAA,IAED,aAAa,QAAQ,CAAC,GAAG;AACvB,YAAM,EAAE,UAAU,SAAS,IAAI,gBAAgB,KAAK;AACpD,YAAM,EAAE,WAAW,QAAI,0CAAqB,OAAO;AAAA,QACjD;AAAA,QACA;AAAA,QACA,KAAK,MAAM,QAAQ;AAAA,MACrB,CAAC;AAED,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,KAAK;AAAA,QACd,IAAI,IAAI,UAAU,MAAM,OAAO;AAAA,QAC/B,MAAM;AAAA,QACN,cAAc,OAAO;AACnB,cAAI,CAAC;AAAe;AAEpB,gBAAM,UAAM,kCAAe,KAAK;AAChC,cAAI,KAAC,+BAAY,GAAG,SAAK,mCAAgB,GAAG;AAAG;AAE/C,gBAAM,YAAQ,iCAAc,GAAG;AAC/B,gBAAM,UAAU,EAAE,UAAU,SAAS;AAErC,eAAK,EAAE,MAAM,qBAAqB,OAAO,SAAS,IAAI,OAAO,CAAC;AAC9D,gBAAM,eAAe;AAAA,QACvB;AAAA,QACA,OAAO;AAAA,UACL,UAAU;AAAA,UACV,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,GAAG;AAAA,QACL;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,uBAAuB,QAAQ,CAAC,GAAG;AACjC,YAAM,EAAE,UAAU,SAAS,IAAI,gBAAgB,KAAK;AACpD,YAAM,EAAE,mBAAmB,QAAI,0CAAqB,OAAO;AAAA,QACzD;AAAA,QACA;AAAA,QACA,KAAK,MAAM,QAAQ;AAAA,MACrB,CAAC;AAED,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,eAAe;AAAA,QACxB,IAAI,IAAI,kBAAkB,MAAM,OAAO;AAAA,QACvC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,GAAG;AAAA,QACL;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB,QAAQ,CAAC,GAAG;AAC5B,YAAM,EAAE,UAAU,SAAS,IAAI,gBAAgB,KAAK;AACpD,YAAM,UAAU,EAAE,UAAU,SAAS;AAErC,YAAM,IAAI,MAAM,uBAAuB,QAAQ;AAC/C,YAAM,IAAI,IAAI,MAAM,uBAAuB,QAAQ;AAEnD,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,UAAU;AAAA,QACnB,IAAI,IAAI,eAAe,MAAM,OAAO;AAAA,QACpC,KAAK,MAAM,QAAQ;AAAA,QACnB,UAAU,aAAa,SAAY;AAAA,QACnC,qBAAiB,4BAAS,UAAU;AAAA,QACpC,MAAM;AAAA,QACN,OAAO;AAAA,UACL,UAAU;AAAA,UACV,MAAM,GAAG,IAAI,GAAG;AAAA,UAChB,KAAK,GAAG,IAAI,GAAG;AAAA,UACf,WAAW;AAAA,UACX,aAAa;AAAA,UACb,mBAAmB;AAAA,UACnB,YAAY,MAAM,iBAAiB,SAAS,CAAC,EAAE,SAAS,KAAK;AAAA,QAC/D;AAAA,QACA,UAAU;AACR,eAAK,EAAE,MAAM,cAAc,IAAI,QAAQ,QAAQ,CAAC;AAAA,QAClD;AAAA,QACA,UAAU,OAAO;AACf,cAAI,CAAC;AAAe;AAEpB,gBAAM,WAAO,gCAAa,KAAK;AAE/B,gBAAM,SAAsB;AAAA,YAC1B,UAAU;AACR,mBAAK,EAAE,MAAM,iBAAiB,SAAS,KAAK,CAAC;AAAA,YAC/C;AAAA,YACA,YAAY;AACV,mBAAK,EAAE,MAAM,mBAAmB,SAAS,KAAK,CAAC;AAAA,YACjD;AAAA,YACA,YAAY;AACV,mBAAK,EAAE,MAAM,mBAAmB,SAAS,KAAK,CAAC;AAAA,YACjD;AAAA,YACA,aAAa;AACX,mBAAK,EAAE,MAAM,oBAAoB,SAAS,KAAK,CAAC;AAAA,YAClD;AAAA,YACA,SAAS;AACP,mBAAK,EAAE,MAAM,gBAAgB,SAAS,KAAK,CAAC;AAAA,YAC9C;AAAA,YACA,WAAW;AACT,mBAAK,EAAE,MAAM,kBAAkB,SAAS,KAAK,CAAC;AAAA,YAChD;AAAA,YACA,OAAOC,QAAO;AACZ,cAAAA,OAAM,gBAAgB;AAAA,YACxB;AAAA,UACF;AAEA,gBAAM,OAAO,WAAO,+BAAY,OAAO,MAAM,OAAO,CAAC;AAErD,cAAI,MAAM;AACR,iBAAK,KAAK;AACV,kBAAM,eAAe;AAAA,UACvB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,yBAAyB,QAAQ,CAAC,GAAG;AACnC,YAAM,EAAE,OAAO,OAAO,IAAI;AAC1B,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,iBAAiB;AAAA,QAC1B,OAAO;AAAA,UACL,UAAU;AAAA,UACV,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,iBAAiB;AAAA,UACjB,iBAAiB;AAAA,UACjB,gBAAgB;AAAA,UAChB,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,eAAe;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,sBAAsB,OAAO;AAC3B,YAAM,EAAE,cAAc,cAAc,QAAQ,IAAI;AAChD,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,cAAc;AAAA,QACvB,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,QACpB,MAAM;AAAA,QACN,cAAc,OAAO;AACnB,cAAI,CAAC;AAAe;AAEpB,gBAAM,UAAM,kCAAe,KAAK;AAChC,cAAI,KAAC,+BAAY,GAAG,SAAK,mCAAgB,GAAG;AAAG;AAE/C,gBAAM,YAAQ,iCAAc,GAAG;AAC/B,eAAK,EAAE,MAAM,+BAA+B,SAAS,OAAO,IAAI,SAAS,YAAY,CAAC;AAEtF,gBAAM,eAAe;AAAA,QACvB;AAAA,QACA,OAAO;AAAA,UACL,UAAU;AAAA,UACV,aAAa;AAAA,QACf;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,2BAA2B,OAAO;AAChC,YAAM,EAAE,cAAc,cAAc,QAAQ,IAAI;AAEhD,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,mBAAmB;AAAA,QAC5B,IAAI,IAAI,mBAAmB,MAAM,SAAS,OAAO;AAAA,QACjD,MAAM;AAAA,QACN,gBAAgB;AAAA,QAChB,oBAAoB;AAAA,QACpB,OAAO;AAAA,UACL,UAAU;AAAA,UACV,mBAAmB;AAAA,UACnB,iBAAiB,oBAAoB;AAAA,YACnC;AAAA,YACA;AAAA,YACA,KAAK,MAAM,QAAQ;AAAA,YACnB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,2BAA2B,OAAO;AAChC,YAAM,EAAE,cAAc,cAAc,QAAQ,IAAI;AAChD,YAAM,EAAE,UAAU,UAAU,MAAM,UAAU,IAAI,MAAM,gBAAgB,OAAO;AAC7E,YAAM,eAAe,MAAM,gBAAgB,OAAO;AAElD,YAAM,UAAU,eAAe,aAAa,WAAW;AAEvD,YAAM,kBACJ,gBAAgB,eACZ,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,KAAK,MAAM,IACvC,EAAE,KAAK,GAAG,SAAS,GAAG,KAAK,MAAM,MAAM;AAE7C,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,mBAAmB;AAAA,QAC5B,IAAI,IAAI,wBAAwB,MAAM,SAAS,OAAO;AAAA,QACtD,MAAM;AAAA,QACN,cAAc;AAAA,QACd,UAAU,aAAa,SAAY;AAAA,QACnC,gBAAgB;AAAA,QAChB,qBAAiB,4BAAS,UAAU;AAAA,QACpC,oBAAoB;AAAA,QACpB,qBAAiB,4BAAS,UAAU;AAAA,QACpC,oBAAoB;AAAA,QACpB,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,iBAAiB;AAAA,QACjB,OAAO;AAAA,UACL,mBAAmB;AAAA,UACnB,UAAU;AAAA,UACV,YAAY,uBAAuB,OAAO,OAAO,EAAE,SAAS,KAAK;AAAA,UACjE,GAAG;AAAA,QACL;AAAA,QACA,UAAU;AACR,cAAI,CAAC;AAAe;AACpB,eAAK,EAAE,MAAM,wBAAwB,QAAQ,CAAC;AAAA,QAChD;AAAA,QACA,UAAU,OAAO;AACf,cAAI,CAAC;AAAe;AACpB,gBAAM,WAAO,gCAAa,KAAK,IAAI;AAEnC,gBAAM,SAAsB;AAAA,YAC1B,UAAU;AACR,mBAAK,EAAE,MAAM,2BAA2B,SAAS,KAAK,CAAC;AAAA,YACzD;AAAA,YACA,YAAY;AACV,mBAAK,EAAE,MAAM,6BAA6B,SAAS,KAAK,CAAC;AAAA,YAC3D;AAAA,YACA,YAAY;AACV,mBAAK,EAAE,MAAM,6BAA6B,SAAS,KAAK,CAAC;AAAA,YAC3D;AAAA,YACA,aAAa;AACX,mBAAK,EAAE,MAAM,8BAA8B,SAAS,KAAK,CAAC;AAAA,YAC5D;AAAA,YACA,SAAS;AACP,mBAAK,EAAE,MAAM,0BAA0B,QAAQ,CAAC;AAAA,YAClD;AAAA,YACA,WAAW;AACT,mBAAK,EAAE,MAAM,4BAA4B,QAAQ,CAAC;AAAA,YACpD;AAAA,YACA,OAAO;AACL,mBAAK,EAAE,MAAM,uBAAuB,QAAQ,CAAC;AAAA,YAC/C;AAAA,YACA,MAAM;AACJ,mBAAK,EAAE,MAAM,sBAAsB,QAAQ,CAAC;AAAA,YAC9C;AAAA,YACA,OAAOA,QAAO;AACZ,cAAAA,OAAM,gBAAgB;AAAA,YACxB;AAAA,UACF;AAEA,gBAAM,OAAO,WAAO,+BAAY,OAAO,MAAM,OAAO,CAAC;AAErD,cAAI,MAAM;AACR,iBAAK,KAAK;AACV,kBAAM,eAAe;AAAA,UACvB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,qBAAqB,OAAO;AAC1B,YAAM,EAAE,QAAQ,IAAI;AACpB,YAAM,cAAc,YAAY,SAAS,YAAY;AACrD,YAAM,QAAQ,gBAAgB,OAAO,OAAO;AAE5C,aAAO,UAAU,MAAM;AAAA,QACrB,GAAG,MAAM,aAAa;AAAA,QACtB,KAAK,MAAM,QAAQ;AAAA,QACnB,MAAM,cAAc,SAAS;AAAA,QAC7B,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,UAAU;AAAA,QACV,qBAAiB,4BAAS,UAAU;AAAA,QACpC,UAAU,MAAM,QAAQ;AAAA,QACxB,cAAc,gBAAgB,OAAO,OAAO;AAAA,QAC5C,KAAK,OAAO;AAAA,QACZ,KAAK,OAAO;AAAA,QACZ,MAAM,OAAO;AAAA,QACb,cAAc,OAAO;AACnB,cAAI;AAAa;AACjB,gBAAMD,SAAQ,MAAM,cAAc;AAClC,cAAIA,OAAM,MAAM,UAAU,GAAG;AAC3B,kBAAM,eAAe;AAAA,UACvB;AAAA,QACF;AAAA,QACA,QAAQ,OAAO;AACb,eAAK,EAAE,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,gBAAM,OAAO,OAAO;AAAA,QACtB;AAAA,QACA,OAAO,OAAO;AACZ,gBAAMA,SAAQ,cAAc,MAAM,cAAc,QAAQ,MAAM,cAAc;AAC5E,eAAK,EAAE,MAAM,sBAAsB,SAAS,OAAAA,QAAO,YAAY,CAAC;AAAA,QAClE;AAAA,QACA,UAAU,OAAO;AACf,cAAI,MAAM,QAAQ,SAAS;AACzB,kBAAMA,SAAQ,cAAc,MAAM,cAAc,QAAQ,MAAM,cAAc;AAC5E,iBAAK,EAAE,MAAM,wBAAwB,SAAS,OAAAA,QAAO,YAAY,CAAC;AAClE,kBAAM,eAAe;AAAA,UACvB;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL,YAAY;AAAA,UACZ,kBAAkB;AAAA,UAClB,eAAe;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,kBAAkB,UAAU,MAAM;AAAA,MAChC,MAAM;AAAA,MACN,UAAU;AAAA,MACV,MAAM,MAAM,QAAQ;AAAA,MACpB,IAAI,IAAI,iBAAiB,MAAM,OAAO;AAAA,MACtC,OAAO;AAAA,MACP,cAAc;AAAA,IAChB,CAAC;AAAA,IAED,wBAAwB,UAAU,OAAO;AAAA,MACvC,GAAG,MAAM,kBAAkB;AAAA,MAC3B,MAAM;AAAA,MACN,KAAK,MAAM,QAAQ;AAAA,MACnB,UAAU;AAAA,MACV,qBAAiB,4BAAS,UAAU;AAAA,MACpC,cAAc;AAAA,MACd,UAAU;AACR,YAAI,CAAC;AAAe;AACpB,aAAK,kBAAkB;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,IAED,kBAAkB,UAAU,QAAQ;AAAA,MAClC,GAAG,MAAM,YAAY;AAAA,MACrB,MAAM;AAAA,IACR,CAAC;AAAA,IAED,sBAAsB,OAAO;AAC3B,YAAM,EAAE,OAAO,UAAU,IAAI;AAC7B,YAAM,YAAQ,oCAAe,SAAS,EAAE,SAAS,MAAM,UAAU,CAAC;AAClE,aAAO,UAAU,OAAO;AAAA,QACtB,GAAG,MAAM,cAAc;AAAA,QACvB,UAAU;AAAA,QACV,KAAK,MAAM,QAAQ;AAAA,QACnB,MAAM;AAAA,QACN,cAAc,MAAM,SAAS,KAAK;AAAA,QAClC,UAAU;AACR,cAAI,CAAC;AAAe;AACpB,eAAK,EAAE,MAAM,aAAa,OAAO,MAAM,CAAC;AAAA,QAC1C;AAAA,QACA,OAAO;AAAA,UACL,UAAU;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA,eAAe,OAAO;AACpB,YAAM,EAAE,OAAO,WAAW,eAAe,KAAK,IAAI;AAClD,YAAM,iBAAa,oCAAe,SAAS;AAC3C,YAAM,QAAQ,WAAW,SAAS,MAAM,UAAU,CAAC;AACnD,aAAO,UAAU,QAAQ;AAAA,QACvB,GAAG,MAAM,OAAO;AAAA,QAChB,KAAK,MAAM,QAAQ;AAAA,QACnB,cAAc,WAAW,QAAQ,KAAK,IAAI,aAAa;AAAA,QACvD,cAAc,MAAM,SAAS,KAAK;AAAA,QAClC,OAAO;AAAA,UACL,UAAU;AAAA,UACV,YAAY,MAAM,SAAS,eAAe,QAAQ,KAAK;AAAA,QACzD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AK9fA,IAAAE,sBAAuC;AACvC,kBAA8B;AAC9B,yBAAwC;AACxC,IAAAC,oBAAiC;AACjC,IAAAC,oBAAoB;AACpB,wBAA0D;AAC1D,IAAAC,iBAA6B;AAC7B,4BAAqC;AACrC,IAAAC,gBAAkC;;;ACRlC,IAAAC,sBAAuC;AAEhC,IAAM,QAAQ,CAAC,UAAyB;AAC7C,QAAM,YAAQ,gCAAW,KAAK;AAE9B,QAAM,cAAc,MAAM,UAAU;AACpC,QAAM,eAAe,gBAAgB,SAAS,SAAS;AAEvD,QAAM,SAAS,MAAM,SAAS,YAAY;AAC1C,SAAO,eAAe;AAEtB,SAAO;AACT;;;ADQO,SAAS,QAAQ,aAAiC;AACvD,QAAM,UAAM,uBAAQ,WAAW;AAC/B,aAAO;AAAA,IACL;AAAA,MACE,IAAI;AAAA,MACJ,SAAS,IAAI,OAAO,SAAS;AAAA,MAC7B,SAAS;AAAA,QACP,KAAK;AAAA,QACL,OAAO,MAAM,SAAS;AAAA,QACtB,UAAU;AAAA,QACV,GAAG;AAAA,QACH,UAAU;AAAA,QACV,eAAe;AAAA,QACf,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,WAAW;AAAA,QACX,aAAa;AAAA,UACX,GAAG,IAAI;AAAA,UACP,WAAW;AAAA,QACb;AAAA,MACF;AAAA,MAEA,UAAU;AAAA,QACR,OAAO,CAACC,SAAQA,KAAI,QAAQ;AAAA,QAC5B,YAAY,CAACA,SAAQ,CAAC,CAACA,KAAI,YAAYA,KAAI;AAAA,QAC3C,eAAe,CAACA,SAAQ,EAAEA,KAAI,cAAcA,KAAI;AAAA,QAChD,eAAe,CAACA,SAAQ;AACtB,gBAAM,QAAQA,KAAI,MAAM,eAAeA,KAAI,MAAM,SAASA,KAAI,MAAM,YAAY,IAAIA,KAAI;AACxF,iBAAO,MAAM,SAAS,KAAK;AAAA,QAC7B;AAAA,MACF;AAAA,MAEA,YAAY,CAAC,kBAAkB;AAAA,MAE/B,OAAO;AAAA,QACL,OAAO,CAAC,mBAAmB;AAAA,QAC3B,MAAM,CAAC,kBAAkB;AAAA,MAC3B;AAAA,MAEA,IAAI;AAAA,QACF,aAAa;AAAA,UACX,SAAS,CAAC,UAAU;AAAA,QACtB;AAAA,QACA,wBAAwB;AAAA,UACtB,SAAS,CAAC,0BAA0B;AAAA,QACtC;AAAA,MACF;AAAA,MAEA,QAAQ;AAAA,QACN,MAAM;AAAA,UACJ,MAAM,CAAC,QAAQ;AAAA,UACf,IAAI;AAAA,YACF,MAAM;AAAA,cACJ,QAAQ;AAAA,cACR,SAAS,CAAC,mBAAmB,cAAc;AAAA,YAC7C;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,SAAS,CAAC,mBAAmB,cAAc;AAAA,YAC7C;AAAA,YACA,uBAAuB;AAAA,cACrB,QAAQ;AAAA,cACR,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAAA,QAEA,SAAS;AAAA,UACP,MAAM,CAAC,UAAU,SAAS;AAAA,UAC1B,IAAI;AAAA,YACF,MAAM;AAAA,cACJ,QAAQ;AAAA,cACR,SAAS,CAAC,mBAAmB,cAAc;AAAA,YAC7C;AAAA,YACA,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,SAAS,CAAC,mBAAmB,cAAc;AAAA,YAC7C;AAAA,YACA,uBAAuB;AAAA,cACrB,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,sBAAsB;AAAA,cACpB,QAAQ;AAAA,cACR,SAAS,CAAC,0BAA0B;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAAA,QAEA,MAAM;AAAA,UACJ,MAAM,CAAC,MAAM;AAAA,UACb,YAAY,CAAC,oBAAoB,yBAAyB;AAAA,UAC1D,IAAI;AAAA,YACF,iBAAiB;AAAA,cACf,QAAQ;AAAA,cACR,SAAS,CAAC,eAAe;AAAA,YAC3B;AAAA,YACA,oBAAoB;AAAA,cAClB,SAAS,CAAC,gBAAgB;AAAA,YAC5B;AAAA,YACA,qBAAqB;AAAA,cACnB,QAAQ;AAAA,cACR,SAAS,CAAC,oBAAoB,yBAAyB,gBAAgB;AAAA,YACzE;AAAA,YACA,cAAc;AAAA,cACZ,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,+BAA+B;AAAA,cAC7B,QAAQ;AAAA,cACR,SAAS,CAAC,oBAAoB,4BAA4B,mBAAmB;AAAA,YAC/E;AAAA,YACA,wBAAwB;AAAA,cACtB,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,mBAAmB;AAAA,cACjB,SAAS,CAAC,mBAAmB;AAAA,YAC/B;AAAA,YACA,oBAAoB;AAAA,cAClB,SAAS,CAAC,mBAAmB;AAAA,YAC/B;AAAA,YACA,iBAAiB;AAAA,cACf,SAAS,CAAC,mBAAmB;AAAA,YAC/B;AAAA,YACA,mBAAmB;AAAA,cACjB,SAAS,CAAC,mBAAmB;AAAA,YAC/B;AAAA,YACA,gBAAgB;AAAA,cACd,SAAS,CAAC,mBAAmB;AAAA,YAC/B;AAAA,YACA,kBAAkB;AAAA,cAChB,SAAS,CAAC,mBAAmB;AAAA,YAC/B;AAAA,YACA,6BAA6B;AAAA,cAC3B,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,8BAA8B;AAAA,cAC5B,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,2BAA2B;AAAA,cACzB,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,6BAA6B;AAAA,cAC3B,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,0BAA0B;AAAA,cACxB,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,4BAA4B;AAAA,cAC1B,SAAS,CAAC,kBAAkB;AAAA,YAC9B;AAAA,YACA,uBAAuB;AAAA,cACrB,SAAS,CAAC,iBAAiB;AAAA,YAC7B;AAAA,YACA,sBAAsB;AAAA,cACpB,SAAS,CAAC,iBAAiB;AAAA,YAC7B;AAAA,YACA,sBAAsB;AAAA,cACpB,SAAS,CAAC,0BAA0B;AAAA,YACtC;AAAA,YACA,kBAAkB;AAAA,cAChB;AAAA,gBACE,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,SAAS,CAAC,kBAAkB,eAAe;AAAA,cAC7C;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,SAAS,CAAC,eAAe;AAAA,cAC3B;AAAA,YACF;AAAA,YACA,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS,CAAC,eAAe;AAAA,YAC3B;AAAA,UACF;AAAA,QACF;AAAA,QAEA,iBAAiB;AAAA,UACf,MAAM,CAAC,MAAM;AAAA,UACb,MAAM,CAAC,oBAAoB;AAAA,UAC3B,YAAY,CAAC,oBAAoB,wBAAwB,oBAAoB,yBAAyB;AAAA,UACtG,IAAI;AAAA,YACF,qBAAqB;AAAA,cACnB,SAAS,CAAC,yBAAyB,gBAAgB;AAAA,YACrD;AAAA,YACA,mBAAmB;AAAA,cACjB,QAAQ;AAAA,cACR,SAAS,CAAC,mBAAmB;AAAA,YAC/B;AAAA,YACA,+BAA+B;AAAA,cAC7B,SAAS,CAAC,4BAA4B,mBAAmB;AAAA,YAC3D;AAAA,YACA,6BAA6B;AAAA,cAC3B,QAAQ;AAAA,cACR,SAAS,CAAC,mBAAmB;AAAA,YAC/B;AAAA,YACA,kBAAkB;AAAA,cAChB;AAAA,gBACE,OAAO;AAAA,gBACP,QAAQ;AAAA,gBACR,SAAS,CAAC,kBAAkB,eAAe;AAAA,cAC7C;AAAA,cACA;AAAA,gBACE,QAAQ;AAAA,gBACR,SAAS,CAAC,eAAe;AAAA,cAC3B;AAAA,YACF;AAAA,YACA,OAAO;AAAA,cACL,QAAQ;AAAA,cACR,SAAS,CAAC,eAAe;AAAA,YAC3B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,QACN,mBAAmB,CAAC,MAAM,QAAQ,IAAI;AAAA,MACxC;AAAA,MACA,YAAY;AAAA,QACV,iBAAiBA,MAAK;AACpB,UAAAA,KAAI,mBAAmBA,KAAI,YAAY;AACvC,gBAAM,WAAW,IAAI,aAAaA,IAAG;AACrC,gBAAM,kBAAkB,MAAM,IAAI,gBAAgBA,IAAG;AACrD,qBAAO,6BAAa,UAAU,iBAAiB;AAAA,YAC7C,GAAGA,KAAI;AAAA,YACP,OAAO;AAAA,YACP,WAAW,MAAM;AACf,cAAAA,KAAI,mBAAmB,KAAK;AAAA,YAC9B;AAAA,YACA,YAAY;AACV,cAAAA,KAAI,mBAAmB;AAAA,YACzB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,wBAAwBA,MAAK,MAAM,EAAE,KAAK,GAAG;AAC3C,gBAAM,eAAe,MAAM,IAAI,aAAaA,IAAG;AAC/C,cAAI,eAAe;AACnB,qBAAO,4CAAwB,cAAc;AAAA,YAC3C,SAAS,IAAI,aAAaA,IAAG;AAAA,YAC7B,OAAO;AAAA,YACP,kBAAkB,OAAO;AACvB,cAAAA,KAAI,oBAAoB,KAAK;AAC7B,kBAAI,MAAM;AAAkB;AAC5B,6BAAe,EAAE,MAAM,OAAO,aAAa,MAAM,OAAO;AAAA,YAC1D;AAAA,YACA,sBAAsBA,KAAI;AAAA,YAC1B,gBAAgBA,KAAI;AAAA,YACpB,YAAY;AACV,mBAAK,EAAE,MAAM,oBAAoB,aAAa,CAAC;AAAA,YACjD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,iBAAiBA,MAAK,MAAM,EAAE,MAAM,eAAe,GAAG;AACpD,gBAAM,UAAU,IAAI,iBAAiBA,IAAG;AACxC,qBAAO,oCAAiB,SAAS;AAAA,YAC/B,yBAAyB,UAAU;AACjC,cAAAA,KAAI,mBAAmB;AAAA,YACzB;AAAA,YACA,cAAc;AACZ,mBAAK,EAAE,MAAM,aAAa,OAAO,eAAe,OAAO,KAAK,aAAa,CAAC;AAAA,YAC5E;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,iBAAiBA,MAAK,MAAM,EAAE,KAAK,GAAG;AACpC,qBAAO,oCAAiB,IAAI,OAAOA,IAAG,GAAG;AAAA,YACvC,cAAc,EAAE,MAAM,GAAG;AACvB,oBAAM,OAAOA,KAAI,aAAa,SAAS,sBAAsB;AAC7D,mBAAK,EAAE,MAAM,MAAM,CAAC;AAAA,YACtB;AAAA,YACA,cAAc;AACZ,oBAAM,OAAOA,KAAI,aAAa,SAAS,oBAAoB;AAC3D,mBAAK,EAAE,KAAK,CAAC;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,qBAAqBA,MAAK;AACxB,qBAAO,4CAAqB,EAAE,KAAK,IAAI,OAAOA,IAAG,GAAG,QAAQ,IAAI,aAAaA,IAAG,EAAE,CAAC;AAAA,QACrF;AAAA,MACF;AAAA,MACA,SAAS;AAAA,QACP,eAAeA,MAAK;AAClB,gBAAM,cAAc,gBAAgB,IAAI,OAAOA,IAAG;AAClD,cAAI,CAAC;AAAa;AAClB,gBAAM,MAAM,IAAI,OAAOA,IAAG;AAC1B,gBAAM,SAAS,IAAI,IAAI,WAAW;AAClC,iBACG,KAAK,EACL,KAAK,CAAC,EAAE,QAAQ,MAA2B;AAC1C,kBAAM,SAASA,KAAI,MAAM,UAAU;AACnC,kBAAM,YAAQ,gCAAW,OAAO,EAAE,SAAS,MAAM;AACjD,gBAAI,MAAMA,MAAK,KAAK;AACpB,YAAAA,KAAI,mBAAmB,EAAE,OAAOA,KAAI,OAAO,eAAeA,KAAI,cAAc,CAAC;AAAA,UAC/E,CAAC,EACA,MAAM,MAAM,MAAM;AAAA,QACvB;AAAA,QACA,iBAAiBA,MAAK,KAAK;AACzB,UAAAA,KAAI,WAAW,IAAI;AACnB,cAAI,IAAI;AAAS,YAAAA,KAAI,gBAAgB,IAAI;AACzC,cAAI,IAAI;AAAa,YAAAA,KAAI,oBAAoB,IAAI;AAAA,QACnD;AAAA,QACA,mBAAmBA,MAAK;AACtB,UAAAA,KAAI,gBAAgB;AACpB,UAAAA,KAAI,WAAW;AACf,UAAAA,KAAI,oBAAoB;AAAA,QAC1B;AAAA,QACA,sBAAsBA,MAAK,KAAK;AAC9B,gBAAM,EAAE,UAAU,SAAS,IAAI,IAAI,WAAWA,KAAI;AAElD,gBAAM,UAAU,IAAI,sBAAsBA,MAAK,IAAI,KAAK;AACxD,cAAI,CAAC;AAAS;AAEd,gBAAM,SAASA,KAAI,MAAM,uBAAuB,UAAU,QAAQ,CAAC;AACnE,gBAAM,SAASA,KAAI,MAAM,uBAAuB,UAAU,IAAI,QAAQ,CAAC;AAEvE,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,UAAU,MAAM,EAAE,iBAAiB,UAAU,MAAM;AAC5F,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,yBAAyBA,MAAK,KAAK;AACjC,gBAAM,UAAU,IAAI,WAAWA,KAAI;AAEnC,gBAAM,UAAU,IAAI,+BAA+BA,MAAK,IAAI,OAAO,OAAO;AAC1E,cAAI,CAAC;AAAS;AAEd,gBAAM,cAAcA,KAAI,qBAAqB;AAC7C,gBAAM,iBAAiB,gBAAgB,eAAe,QAAQ,IAAI,QAAQ;AAE1E,gBAAM,QAAQA,KAAI,MAAM,uBAAuB,SAAS,cAAc;AACtE,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,SAAS,KAAK;AACvD,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,SAASA,MAAK,KAAK;AACjB,cAAI,MAAMA,MAAK,IAAI,KAAK;AAAA,QAC1B;AAAA,QACA,kBAAkBA,MAAK;AACrB,eAAK,OAAOA,IAAG;AAAA,QACjB;AAAA,QACA,kBAAkBA,MAAK;AACrB,iBAAO,UAAUA,IAAG;AAAA,QACtB;AAAA,QACA,yBAAyBA,MAAK,KAAK;AACjC,gBAAM,EAAE,SAAS,aAAa,MAAM,IAAI;AACxC,gBAAM,eAAeA,KAAI,MAAM,gBAAgB,OAAO;AAGtD,cAAI,YAAY,SAAS;AACvB,gBAAI,gBAAgB,WAAW,KAAK;AACpC,4BAAgB,OAAO,MAAM,aAAa,IAAI,eAAe;AAC7D,kBAAM,WAAWA,KAAI,MAAM,iBAAiB,SAAS,aAAa;AAClE,gBAAI,MAAMA,MAAK,QAAQ;AACvB;AAAA,UACF;AAGA,cAAI,aAAa;AACf,kBAAMC,aAAQ;AAAA,cACZ,MAAM,MAAM,KAAK,EAAE,iBAAiB,SAAS,YAAY;AAAA,cACzD,MAAMD,KAAI;AAAA,YACZ;AAGA,kBAAM,WAAW,IAAI,kBAAkBA,MAAK,OAAO;AACnD,qBAAS,QAAQ,CAAC,YAAY;AAC5B,kBAAI,SAAS,SAAS,gBAAgBC,QAAO,OAAO,CAAC;AAAA,YACvD,CAAC;AAED,gBAAI,MAAMD,MAAKC,MAAK;AACpB;AAAA,UACF;AAGA,gBAAM,QAAQD,KAAI,MAAM,SAASA,KAAI,MAAM,YAAa,EAAE,iBAAiB,SAAS,KAAK;AACzF,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,iBAAiBA,MAAK,KAAK;AACzB,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,IAAI,SAAS,IAAI,IAAI;AAC9D,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,iBAAiBA,MAAK,KAAK;AACzB,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,IAAI,SAAS,IAAI,IAAI;AAC9D,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,kBAAkBA,MAAK,KAAK;AAC1B,gBAAM,EAAE,SAAS,IAAI,IAAI;AACzB,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,UAAU,IAAI,IAAI;AAC3D,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,kBAAkBA,MAAK,KAAK;AAC1B,gBAAM,EAAE,SAAS,IAAI,IAAI;AACzB,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,UAAU,IAAI,IAAI;AAC3D,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,kBAAkBA,MAAK,KAAK;AAC1B,gBAAM,EAAE,SAAS,IAAI,IAAI;AACzB,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,UAAU,IAAI,IAAI;AAC3D,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,kBAAkBA,MAAK,KAAK;AAC1B,gBAAM,EAAE,SAAS,IAAI,IAAI;AACzB,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,UAAU,IAAI,IAAI;AAC3D,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,gBAAgBA,MAAK,KAAK;AACxB,gBAAM,QAAQA,KAAI,MAAM,gBAAgB,IAAI,OAAO;AACnD,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,IAAI,SAAS,MAAM,QAAQ;AACpE,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,gBAAgBA,MAAK,KAAK;AACxB,gBAAM,QAAQA,KAAI,MAAM,gBAAgB,IAAI,OAAO;AACnD,gBAAM,QAAQA,KAAI,MAAM,iBAAiB,IAAI,SAAS,MAAM,QAAQ;AACpE,cAAI,MAAMA,MAAK,KAAK;AAAA,QACtB;AAAA,QACA,eAAeA,MAAK;AAClB,qCAAI,MAAM;AACR,iBAAK,MAAMA,MAAK,IAAI,eAAeA,IAAG,CAAC;AAAA,UACzC,CAAC;AAAA,QACH;AAAA,QACA,kBAAkBA,MAAK,KAAK;AAC1B,qCAAI,MAAM;AACR,iBAAK,MAAMA,MAAK,IAAI,wBAAwBA,MAAK,IAAI,OAAO,CAAC;AAAA,UAC/D,CAAC;AAAA,QACH;AAAA,QACA,gBAAgBA,MAAK;AACnB,qCAAI,MAAM;AACR,gBAAI,kBAAkBA,IAAG,GAAG,MAAM,EAAE,eAAe,KAAK,CAAC;AAAA,UAC3D,CAAC;AAAA,QACH;AAAA,QACA,eAAeA,MAAK;AAClB,qCAAI,MAAM;AACR,iBAAK,MAAMA,MAAK,IAAI,aAAaA,IAAG,CAAC;AAAA,UACvC,CAAC;AAAA,QACH;AAAA,QACA,aAAaA,MAAK;AAChB,UAAAA,KAAI,eAAe,EAAE,MAAM,KAAK,CAAC;AAAA,QACnC;AAAA,QACA,cAAcA,MAAK;AACjB,UAAAA,KAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AAAA,QACpC;AAAA,QACA,iBAAiBA,MAAK,MAAM,EAAE,KAAK,GAAG;AACpC,eAAK,EAAE,MAAMA,KAAI,OAAO,SAAS,SAAS,KAAK,aAAa,CAAC;AAAA,QAC/D;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,OAAO,CAAC,GAAG,MAAM,EAAE,QAAQ,CAAC;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,OAAO;AAAA,EACX,OAAO,KAAqB;AAE1B,UAAM,gBAAgB,IAAI,mBAAmB,GAAG;AAChD,kBAAc,QAAQ,CAAC,YAAY;AACjC,YAAM,UAAU,QAAQ,QAAQ;AAChC,UAAI,SAAS,SAAS,gBAAgB,IAAI,OAAO,OAAO,CAAC;AAAA,IAC3D,CAAC;AAAA,EACH;AACF;AAEA,IAAM,SAAS;AAAA,EACb,UAAU,KAAqB;AAC7B,QAAI,mBAAmB;AAAA,MACrB,OAAO,IAAI;AAAA,MACX,eAAe,IAAI;AAAA,IACrB,CAAC;AAAA,EACH;AAAA,EACA,OAAO,KAAqB;AAC1B,QAAI,gBAAgB;AAAA,MAClB,OAAO,IAAI;AAAA,MACX,eAAe,IAAI;AAAA,IACrB,CAAC;AAED,mDAAwB,IAAI,iBAAiB,GAAG,GAAG,EAAE,OAAO,IAAI,cAAc,CAAC;AAAA,EACjF;AACF;AAEA,IAAM,MAAM;AAAA,EACV,MAAM,KAAqB,OAAsC;AAC/D,QAAI,CAAC,SAAS,IAAI,MAAM,QAAQ,KAAK;AAAG;AACxC,UAAM,gBAAgB,IAAI,MAAM,UAAU;AAC1C,UAAM,cAAc,MAAM,SAAS,aAAa;AAChD,QAAI;AACF,kBAAY,eAAe,IAAI,MAAM;AAAA,IACvC,QAAQ;AAAA,IAAC;AAET,QAAI,QAAQ;AACZ,WAAO,OAAO,GAAG;AAAA,EACnB;AACF;","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_utils","import_color_utils","ctx","color"]}