@gunkin/uiify 0.0.4-alpha → 0.0.5-alpha

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.
Files changed (41) hide show
  1. package/dist/components/color-picker/ColorPicker.d.ts +4 -34
  2. package/dist/components/color-picker/ColorPicker.d.ts.map +1 -1
  3. package/dist/components/color-picker/ColorPicker.js +96 -164
  4. package/dist/components/color-picker/ColorPicker.js.map +1 -1
  5. package/dist/components/color-picker/index.d.ts +2 -3
  6. package/dist/components/color-picker/index.d.ts.map +1 -1
  7. package/dist/components/color-picker/index.js +2 -40
  8. package/dist/components/color-picker/index.js.map +1 -1
  9. package/dist/components/color-picker/types.d.ts +13 -69
  10. package/dist/components/color-picker/types.d.ts.map +1 -1
  11. package/dist/components/context-menu/ContextMenu.d.ts.map +1 -1
  12. package/dist/components/context-menu/ContextMenu.js +13 -1
  13. package/dist/components/context-menu/ContextMenu.js.map +1 -1
  14. package/dist/components/number-field/NumberField.d.ts.map +1 -1
  15. package/dist/components/number-field/NumberField.js +5 -1
  16. package/dist/components/number-field/NumberField.js.map +1 -1
  17. package/dist/components/slider/Slider.d.ts.map +1 -1
  18. package/dist/components/slider/Slider.js +15 -0
  19. package/dist/components/slider/Slider.js.map +1 -1
  20. package/dist/components/slider/client/SliderClient.d.ts +7 -0
  21. package/dist/components/slider/client/SliderClient.d.ts.map +1 -0
  22. package/dist/components/slider/client/SliderClient.js +170 -0
  23. package/dist/components/slider/client/SliderClient.js.map +1 -0
  24. package/dist/components/slider/client/index.d.ts +3 -0
  25. package/dist/components/slider/client/index.d.ts.map +1 -0
  26. package/dist/components/slider/client/index.js +5 -0
  27. package/dist/components/slider/client/index.js.map +1 -0
  28. package/dist/components/slider/client.d.ts +1 -0
  29. package/dist/components/slider/client.js +1 -0
  30. package/dist/components/slider/slider-values.d.ts +4 -0
  31. package/dist/components/slider/slider-values.d.ts.map +1 -0
  32. package/dist/components/slider/slider-values.js +26 -0
  33. package/dist/components/slider/slider-values.js.map +1 -0
  34. package/dist/components/slider/types.d.ts +26 -1
  35. package/dist/components/slider/types.d.ts.map +1 -1
  36. package/dist/styles/index.css +1 -1
  37. package/package.json +1 -1
  38. package/dist/components/color-picker/color.d.ts +0 -15
  39. package/dist/components/color-picker/color.d.ts.map +0 -1
  40. package/dist/components/color-picker/color.js +0 -190
  41. package/dist/components/color-picker/color.js.map +0 -1
@@ -1,37 +1,7 @@
1
- import type { ReactElement } from "react";
2
- import type { ColorPickerRootProps, ColorPickerTriggerOwnProps, ColorPickerContentOwnProps, ColorPickerAreaOwnProps, ColorPickerSliderOwnProps, ColorPickerSwatchOwnProps, ColorPickerSwatchGroupOwnProps, ColorPickerFieldOwnProps } from "./types.js";
3
- export type { Color, ColorFormat } from "./types.js";
4
- export declare function ColorPickerRoot(props: ColorPickerRootProps): ReactElement | null;
5
- export declare namespace ColorPickerRoot {
1
+ import { type ReactElement } from "react";
2
+ import type { ColorPickerProps } from "./types.js";
3
+ export declare function ColorPicker(props: ColorPickerProps): ReactElement;
4
+ export declare namespace ColorPicker {
6
5
  var displayName: string;
7
6
  }
8
- export declare function ColorPickerTrigger(props: ColorPickerTriggerOwnProps): ReactElement | null;
9
- export declare namespace ColorPickerTrigger {
10
- var displayName: string;
11
- }
12
- export declare function ColorPickerContent(props: ColorPickerContentOwnProps): ReactElement | null;
13
- export declare namespace ColorPickerContent {
14
- var displayName: string;
15
- }
16
- export declare function ColorPickerArea(props: ColorPickerAreaOwnProps): ReactElement | null;
17
- export declare namespace ColorPickerArea {
18
- var displayName: string;
19
- }
20
- export declare function ColorPickerSlider(props: ColorPickerSliderOwnProps): ReactElement | null;
21
- export declare namespace ColorPickerSlider {
22
- var displayName: string;
23
- }
24
- export declare function ColorPickerSwatch(props: ColorPickerSwatchOwnProps): ReactElement | null;
25
- export declare function ColorPickerSwatchGroup(props: ColorPickerSwatchGroupOwnProps): ReactElement | null;
26
- export declare function ColorPickerField(props: ColorPickerFieldOwnProps): ReactElement | null;
27
- export declare const ColorPicker: {
28
- Area: typeof ColorPickerArea;
29
- Content: typeof ColorPickerContent;
30
- Field: typeof ColorPickerField;
31
- Root: typeof ColorPickerRoot;
32
- Slider: typeof ColorPickerSlider;
33
- Swatch: typeof ColorPickerSwatch;
34
- SwatchGroup: typeof ColorPickerSwatchGroup;
35
- Trigger: typeof ColorPickerTrigger;
36
- };
37
7
  //# sourceMappingURL=ColorPicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.d.ts","sourceRoot":"","sources":["../../../src/components/color-picker/ColorPicker.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,OAAO,CAAC;AAO1D,OAAO,KAAK,EAGV,oBAAoB,EACpB,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKrD,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,GAAG,IAAI,CA2BhF;yBA3Be,eAAe;;;AA8B/B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,YAAY,GAAG,IAAI,CASzF;yBATe,kBAAkB;;;AAYlC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,0BAA0B,GAAG,YAAY,GAAG,IAAI,CAQzF;yBARe,kBAAkB;;;AAWlC,wBAAgB,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,YAAY,GAAG,IAAI,CAmCnF;yBAnCe,eAAe;;;AAsC/B,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,YAAY,GAAG,IAAI,CA4BvF;yBA5Be,iBAAiB;;;AA+BjC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,YAAY,GAAG,IAAI,CAiBvF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,8BAA8B,GAAG,YAAY,GAAG,IAAI,CAajG;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,YAAY,GAAG,IAAI,CAkBrF;AAED,eAAO,MAAM,WAAW;;;;;;;;;CASvB,CAAC"}
1
+ {"version":3,"file":"ColorPicker.d.ts","sourceRoot":"","sources":["../../../src/components/color-picker/ColorPicker.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA+C,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAEvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAwGjE;yBAxGe,WAAW"}
@@ -1,185 +1,117 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useMemo } from "react";
4
- import { useControllableState, useId } from "@gunkin/uiify/hooks";
5
- import { createPartContext } from "@gunkin/uiify/core";
6
- import { Popup } from "../popup/index.js";
7
- import { Slider } from "../slider/Slider.js";
8
- import { useRenderElement } from "@gunkin/uiify/core/render";
9
- import { colorToHex, createColor, formatColor, hsbToRgb, parseHex, rgbToHsb } from "./color.js";
10
- const [ColorPickerProvider, useColorPickerContext] = createPartContext("ColorPicker");
11
- function ColorPickerRoot(props) {
3
+ import { useId, useRef, useState } from "react";
4
+ import { Field } from "../field/index.js";
5
+ function ColorPicker(props) {
12
6
  const {
13
- alpha = true,
14
- children,
15
- defaultValue = createColor({ r: 255, g: 0, b: 0, a: 1 }),
16
- format = "hex",
7
+ alpha = false,
8
+ "aria-label": ariaLabel,
9
+ "aria-invalid": ariaInvalid,
10
+ className,
11
+ colorSpace,
12
+ defaultValue = "#2563eb",
13
+ disabled = false,
14
+ id,
15
+ label,
17
16
  onChange,
18
- value: controlledValue
17
+ onValueChange,
18
+ ref,
19
+ style,
20
+ value,
21
+ ...nativeProps
19
22
  } = props;
20
- const [color, setColor] = useControllableState({
21
- defaultValue,
22
- ...controlledValue !== void 0 ? { value: controlledValue } : {},
23
- ...onChange ? { onChange } : {}
24
- });
25
- const popoverId = useId(void 0, "uiify-color-picker");
26
- const contextValue = useMemo(
27
- () => ({ alpha, color, format, popoverId, setColor }),
28
- [alpha, color, format, popoverId, setColor]
29
- );
30
- return /* @__PURE__ */ jsx(ColorPickerProvider, { value: contextValue, children: /* @__PURE__ */ jsx(Popup.Root, { id: popoverId, children }) });
31
- }
32
- ColorPickerRoot.displayName = "ColorPickerRoot";
33
- function ColorPickerTrigger(props) {
34
- const { children, className } = props;
35
- const { color, popoverId } = useColorPickerContext("Trigger");
36
- return /* @__PURE__ */ jsx(Popup.Trigger, { __popupId: popoverId, ...className ? { className } : {}, children: children ?? colorToHex(color) });
37
- }
38
- ColorPickerTrigger.displayName = "ColorPickerTrigger";
39
- function ColorPickerContent(props) {
40
- const { children, className } = props;
41
- const { popoverId } = useColorPickerContext("Content");
42
- return /* @__PURE__ */ jsx(Popup.Content, { __popupId: popoverId, ...className ? { className } : {}, children });
43
- }
44
- ColorPickerContent.displayName = "ColorPickerContent";
45
- function ColorPickerArea(props) {
46
- const { className } = props;
47
- const { color, setColor } = useColorPickerContext("Area");
48
- const hsb = rgbToHsb(color.rgb);
23
+ const generatedId = useId();
24
+ const inputId = id ?? generatedId;
25
+ const fieldId = `${inputId}-field`;
26
+ const nativeInputRef = useRef(null);
27
+ const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
28
+ const selectedValue = value ?? uncontrolledValue;
29
+ const rootDataProps = {};
30
+ const nativeInputProps = {};
31
+ for (const [name, propValue] of Object.entries(nativeProps)) {
32
+ if (name.startsWith("data-")) rootDataProps[name] = propValue;
33
+ else nativeInputProps[name] = propValue;
34
+ }
35
+ const controlStyle = {
36
+ "--uiify-color-picker-value": selectedValue
37
+ };
38
+ const invalid = ariaInvalid !== void 0 && ariaInvalid !== false && ariaInvalid !== "false" || rootDataProps["data-invalid"] === true || rootDataProps["data-invalid"] === "" || rootDataProps["data-invalid"] === "true";
39
+ const required = Boolean(nativeInputProps.required);
49
40
  return /* @__PURE__ */ jsxs(
50
- "div",
41
+ Field.Root,
51
42
  {
52
43
  className,
53
- "data-channel": "area",
54
- style: {
55
- background: `hsl(${Math.round(hsb.h)}, 100%, 50%)`
56
- },
44
+ ...rootDataProps,
45
+ "data-uiify-color-picker": "",
46
+ disabled,
47
+ id: fieldId,
48
+ invalid,
49
+ required,
50
+ style,
57
51
  children: [
58
52
  /* @__PURE__ */ jsx(
59
- Slider,
53
+ Field.Label,
60
54
  {
61
- "aria-label": "Saturation",
62
- max: 100,
63
- min: 0,
64
- onValueChange: (value) => {
65
- setColor(createColor(hsbToRgb({ ...hsb, s: value })));
55
+ disabled,
56
+ fieldId,
57
+ onClick: (event) => {
58
+ event.preventDefault();
59
+ nativeInputRef.current?.click();
66
60
  },
67
- step: 1,
68
- value: hsb.s
61
+ required,
62
+ children: label
69
63
  }
70
64
  ),
71
- /* @__PURE__ */ jsx(
72
- Slider,
73
- {
74
- "aria-label": "Brightness",
75
- max: 100,
76
- min: 0,
77
- onValueChange: (value) => {
78
- setColor(createColor(hsbToRgb({ ...hsb, b: value })));
79
- },
80
- step: 1,
81
- value: hsb.b
82
- }
83
- )
65
+ /* @__PURE__ */ jsxs("div", { "data-part": "surface", "data-value": selectedValue, style: controlStyle, children: [
66
+ /* @__PURE__ */ jsx(
67
+ Field.Control,
68
+ {
69
+ "aria-hidden": "true",
70
+ as: "input",
71
+ disabled,
72
+ fieldId,
73
+ invalid,
74
+ readOnly: true,
75
+ required,
76
+ tabIndex: -1,
77
+ type: "text",
78
+ value: selectedValue
79
+ }
80
+ ),
81
+ /* @__PURE__ */ jsx(
82
+ "input",
83
+ {
84
+ ...nativeInputProps,
85
+ "aria-invalid": invalid || void 0,
86
+ "aria-label": ariaLabel,
87
+ "aria-labelledby": ariaLabel ? void 0 : `${fieldId}-label`,
88
+ "data-part": "native-input",
89
+ disabled,
90
+ id: inputId,
91
+ onChange: (event) => {
92
+ const nextValue = event.currentTarget.value;
93
+ if (value === void 0) setUncontrolledValue(nextValue);
94
+ onValueChange?.(nextValue);
95
+ onChange?.(event);
96
+ },
97
+ type: "color",
98
+ value: selectedValue,
99
+ ref: (element) => {
100
+ nativeInputRef.current = element;
101
+ if (typeof ref === "function") return ref(element);
102
+ else if (ref) ref.current = element;
103
+ },
104
+ ...alpha ? { alpha: "" } : {},
105
+ ...colorSpace ? { colorspace: colorSpace } : {}
106
+ }
107
+ )
108
+ ] })
84
109
  ]
85
110
  }
86
111
  );
87
112
  }
88
- ColorPickerArea.displayName = "ColorPickerArea";
89
- function ColorPickerSlider(props) {
90
- const { channel, className } = props;
91
- const { alpha, color, setColor } = useColorPickerContext("Slider");
92
- const hsb = rgbToHsb(color.rgb);
93
- if (channel === "alpha" && !alpha) return null;
94
- const value = channel === "hue" ? hsb.h : color.rgb.a * 100;
95
- const max = channel === "hue" ? 360 : 100;
96
- return /* @__PURE__ */ jsx(
97
- Slider,
98
- {
99
- "aria-label": channel,
100
- "aria-valuetext": String(Math.round(value)),
101
- className,
102
- max,
103
- min: 0,
104
- onValueChange: (next) => {
105
- if (channel === "hue") {
106
- setColor(createColor(hsbToRgb({ ...hsb, h: next })));
107
- } else {
108
- setColor(createColor({ ...color.rgb, a: next / 100 }));
109
- }
110
- },
111
- step: 1,
112
- value
113
- }
114
- );
115
- }
116
- ColorPickerSlider.displayName = "ColorPickerSlider";
117
- function ColorPickerSwatch(props) {
118
- const { className, value } = props;
119
- const { setColor } = useColorPickerContext("Swatch");
120
- const parsed = parseHex(value) ?? createColor({ r: 0, g: 0, b: 0, a: 1 });
121
- return useRenderElement({
122
- defaultTag: "button",
123
- props: {
124
- type: "button",
125
- "aria-label": value,
126
- "data-value": value,
127
- style: { backgroundColor: value },
128
- ...className ? { className } : {},
129
- onClick: () => setColor(parsed)
130
- },
131
- state: {}
132
- });
133
- }
134
- function ColorPickerSwatchGroup(props) {
135
- const { children, className, swatches = [] } = props;
136
- return useRenderElement({
137
- defaultTag: "div",
138
- props: {
139
- role: "group",
140
- ...className ? { className } : {},
141
- children: children ?? swatches.map((swatch) => /* @__PURE__ */ jsx(ColorPickerSwatch, { value: swatch }, swatch))
142
- },
143
- state: {}
144
- });
145
- }
146
- function ColorPickerField(props) {
147
- const { className } = props;
148
- const { color, format, setColor } = useColorPickerContext("Field");
149
- return useRenderElement({
150
- defaultTag: "input",
151
- props: {
152
- type: "text",
153
- "aria-label": "Color value",
154
- value: formatColor(color, format),
155
- ...className ? { className } : {},
156
- onChange(event) {
157
- const parsed = parseHex(event.currentTarget.value);
158
- if (parsed) setColor(parsed);
159
- }
160
- },
161
- state: {}
162
- });
163
- }
164
- const ColorPicker = {
165
- Area: ColorPickerArea,
166
- Content: ColorPickerContent,
167
- Field: ColorPickerField,
168
- Root: ColorPickerRoot,
169
- Slider: ColorPickerSlider,
170
- Swatch: ColorPickerSwatch,
171
- SwatchGroup: ColorPickerSwatchGroup,
172
- Trigger: ColorPickerTrigger
173
- };
113
+ ColorPicker.displayName = "ColorPicker";
174
114
  export {
175
- ColorPicker,
176
- ColorPickerArea,
177
- ColorPickerContent,
178
- ColorPickerField,
179
- ColorPickerRoot,
180
- ColorPickerSlider,
181
- ColorPickerSwatch,
182
- ColorPickerSwatchGroup,
183
- ColorPickerTrigger
115
+ ColorPicker
184
116
  };
185
117
  //# sourceMappingURL=ColorPicker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/color-picker/ColorPicker.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo } from \"react\";\nimport type { ReactElement, SyntheticEvent } from \"react\";\nimport { useControllableState, useId } from \"@gunkin/uiify/hooks\";\nimport { createPartContext } from \"@gunkin/uiify/core\";\nimport { Popup } from \"../popup/index.js\";\nimport { Slider } from \"../slider/Slider.js\";\nimport { useRenderElement } from \"@gunkin/uiify/core/render\";\nimport { colorToHex, createColor, formatColor, hsbToRgb, parseHex, rgbToHsb } from \"./color.js\";\nimport type {\n Color,\n ColorPickerContextValue,\n ColorPickerRootProps,\n ColorPickerTriggerOwnProps,\n ColorPickerContentOwnProps,\n ColorPickerAreaOwnProps,\n ColorPickerSliderOwnProps,\n ColorPickerSwatchOwnProps,\n ColorPickerSwatchGroupOwnProps,\n ColorPickerFieldOwnProps,\n} from \"./types.js\";\n\nexport type { Color, ColorFormat } from \"./types.js\";\n\nconst [ColorPickerProvider, useColorPickerContext] =\n createPartContext<ColorPickerContextValue>(\"ColorPicker\");\n\nexport function ColorPickerRoot(props: ColorPickerRootProps): ReactElement | null {\n const {\n alpha = true,\n children,\n defaultValue = createColor({ r: 255, g: 0, b: 0, a: 1 }),\n format = \"hex\",\n onChange,\n value: controlledValue,\n } = props;\n\n const [color, setColor] = useControllableState<Color>({\n defaultValue,\n ...(controlledValue !== undefined ? { value: controlledValue } : {}),\n ...(onChange ? { onChange } : {}),\n });\n const popoverId = useId(undefined, \"uiify-color-picker\");\n\n const contextValue = useMemo(\n () => ({ alpha, color, format, popoverId, setColor }),\n [alpha, color, format, popoverId, setColor],\n );\n\n return (\n <ColorPickerProvider value={contextValue}>\n <Popup.Root id={popoverId}>{children}</Popup.Root>\n </ColorPickerProvider>\n );\n}\nColorPickerRoot.displayName = \"ColorPickerRoot\";\n\nexport function ColorPickerTrigger(props: ColorPickerTriggerOwnProps): ReactElement | null {\n const { children, className } = props;\n const { color, popoverId } = useColorPickerContext(\"Trigger\");\n\n return (\n <Popup.Trigger __popupId={popoverId} {...(className ? { className } : {})}>\n {children ?? colorToHex(color)}\n </Popup.Trigger>\n );\n}\nColorPickerTrigger.displayName = \"ColorPickerTrigger\";\n\nexport function ColorPickerContent(props: ColorPickerContentOwnProps): ReactElement | null {\n const { children, className } = props;\n const { popoverId } = useColorPickerContext(\"Content\");\n return (\n <Popup.Content __popupId={popoverId} {...(className ? { className } : {})}>\n {children}\n </Popup.Content>\n );\n}\nColorPickerContent.displayName = \"ColorPickerContent\";\n\nexport function ColorPickerArea(props: ColorPickerAreaOwnProps): ReactElement | null {\n const { className } = props;\n const { color, setColor } = useColorPickerContext(\"Area\");\n const hsb = rgbToHsb(color.rgb);\n\n return (\n <div\n className={className}\n data-channel=\"area\"\n style={{\n background: `hsl(${Math.round(hsb.h)}, 100%, 50%)`,\n }}\n >\n <Slider\n aria-label=\"Saturation\"\n max={100}\n min={0}\n onValueChange={(value) => {\n setColor(createColor(hsbToRgb({ ...hsb, s: value })));\n }}\n step={1}\n value={hsb.s}\n />\n <Slider\n aria-label=\"Brightness\"\n max={100}\n min={0}\n onValueChange={(value) => {\n setColor(createColor(hsbToRgb({ ...hsb, b: value })));\n }}\n step={1}\n value={hsb.b}\n />\n </div>\n );\n}\nColorPickerArea.displayName = \"ColorPickerArea\";\n\nexport function ColorPickerSlider(props: ColorPickerSliderOwnProps): ReactElement | null {\n const { channel, className } = props;\n const { alpha, color, setColor } = useColorPickerContext(\"Slider\");\n const hsb = rgbToHsb(color.rgb);\n\n if (channel === \"alpha\" && !alpha) return null;\n\n const value = channel === \"hue\" ? hsb.h : color.rgb.a * 100;\n const max = channel === \"hue\" ? 360 : 100;\n\n return (\n <Slider\n aria-label={channel}\n aria-valuetext={String(Math.round(value))}\n className={className}\n max={max}\n min={0}\n onValueChange={(next) => {\n if (channel === \"hue\") {\n setColor(createColor(hsbToRgb({ ...hsb, h: next })));\n } else {\n setColor(createColor({ ...color.rgb, a: next / 100 }));\n }\n }}\n step={1}\n value={value}\n />\n );\n}\nColorPickerSlider.displayName = \"ColorPickerSlider\";\n\nexport function ColorPickerSwatch(props: ColorPickerSwatchOwnProps): ReactElement | null {\n const { className, value } = props;\n const { setColor } = useColorPickerContext(\"Swatch\");\n const parsed = parseHex(value) ?? createColor({ r: 0, g: 0, b: 0, a: 1 });\n\n return useRenderElement({\n defaultTag: \"button\",\n props: {\n type: \"button\",\n \"aria-label\": value,\n \"data-value\": value,\n style: { backgroundColor: value },\n ...(className ? { className } : {}),\n onClick: () => setColor(parsed),\n },\n state: {},\n });\n}\n\nexport function ColorPickerSwatchGroup(props: ColorPickerSwatchGroupOwnProps): ReactElement | null {\n const { children, className, swatches = [] } = props;\n\n return useRenderElement({\n defaultTag: \"div\",\n props: {\n role: \"group\",\n ...(className ? { className } : {}),\n children:\n children ?? swatches.map((swatch) => <ColorPickerSwatch key={swatch} value={swatch} />),\n },\n state: {},\n });\n}\n\nexport function ColorPickerField(props: ColorPickerFieldOwnProps): ReactElement | null {\n const { className } = props;\n const { color, format, setColor } = useColorPickerContext(\"Field\");\n\n return useRenderElement({\n defaultTag: \"input\",\n props: {\n type: \"text\",\n \"aria-label\": \"Color value\",\n value: formatColor(color, format),\n ...(className ? { className } : {}),\n onChange(event: SyntheticEvent<HTMLInputElement>) {\n const parsed = parseHex(event.currentTarget.value);\n if (parsed) setColor(parsed);\n },\n },\n state: {},\n });\n}\n\nexport const ColorPicker = {\n Area: ColorPickerArea,\n Content: ColorPickerContent,\n Field: ColorPickerField,\n Root: ColorPickerRoot,\n Slider: ColorPickerSlider,\n Swatch: ColorPickerSwatch,\n SwatchGroup: ColorPickerSwatchGroup,\n Trigger: ColorPickerTrigger,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/components/color-picker/ColorPicker.tsx"],"sourcesContent":["\"use client\";\n\nimport { useId, useRef, useState, type CSSProperties, type ReactElement } from \"react\";\nimport { Field } from \"../field/index.js\";\nimport type { ColorPickerProps } from \"./types.js\";\n\nexport function ColorPicker(props: ColorPickerProps): ReactElement {\n const {\n alpha = false,\n \"aria-label\": ariaLabel,\n \"aria-invalid\": ariaInvalid,\n className,\n colorSpace,\n defaultValue = \"#2563eb\",\n disabled = false,\n id,\n label,\n onChange,\n onValueChange,\n ref,\n style,\n value,\n ...nativeProps\n } = props;\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const fieldId = `${inputId}-field`;\n const nativeInputRef = useRef<HTMLInputElement>(null);\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const selectedValue = value ?? uncontrolledValue;\n const rootDataProps: Record<string, unknown> = {};\n const nativeInputProps: Record<string, unknown> = {};\n\n for (const [name, propValue] of Object.entries(nativeProps)) {\n if (name.startsWith(\"data-\")) rootDataProps[name] = propValue;\n else nativeInputProps[name] = propValue;\n }\n\n const controlStyle = {\n \"--uiify-color-picker-value\": selectedValue,\n } as CSSProperties;\n const invalid =\n (ariaInvalid !== undefined && ariaInvalid !== false && ariaInvalid !== \"false\") ||\n rootDataProps[\"data-invalid\"] === true ||\n rootDataProps[\"data-invalid\"] === \"\" ||\n rootDataProps[\"data-invalid\"] === \"true\";\n const required = Boolean(nativeInputProps.required);\n\n return (\n <Field.Root\n className={className}\n {...rootDataProps}\n data-uiify-color-picker=\"\"\n disabled={disabled}\n id={fieldId}\n invalid={invalid}\n required={required}\n style={style}\n >\n <Field.Label\n disabled={disabled}\n fieldId={fieldId}\n onClick={(event) => {\n event.preventDefault();\n nativeInputRef.current?.click();\n }}\n required={required}\n >\n {label}\n </Field.Label>\n <div data-part=\"surface\" data-value={selectedValue} style={controlStyle}>\n <Field.Control\n aria-hidden=\"true\"\n as=\"input\"\n disabled={disabled}\n fieldId={fieldId}\n invalid={invalid}\n readOnly\n required={required}\n tabIndex={-1}\n type=\"text\"\n value={selectedValue}\n />\n <input\n {...nativeInputProps}\n aria-invalid={invalid || undefined}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabel ? undefined : `${fieldId}-label`}\n data-part=\"native-input\"\n disabled={disabled}\n id={inputId}\n onChange={(event) => {\n const nextValue = event.currentTarget.value;\n if (value === undefined) setUncontrolledValue(nextValue);\n onValueChange?.(nextValue);\n onChange?.(event);\n }}\n type=\"color\"\n value={selectedValue}\n ref={(element) => {\n nativeInputRef.current = element;\n if (typeof ref === \"function\") return ref(element);\n else if (ref) ref.current = element;\n }}\n {...(alpha ? { alpha: \"\" } : {})}\n {...(colorSpace ? { colorspace: colorSpace } : {})}\n />\n </div>\n </Field.Root>\n );\n}\nColorPicker.displayName = \"ColorPicker\";\n"],"mappings":";AA2DM,cAWA,YAXA;AAzDN,SAAS,OAAO,QAAQ,gBAAuD;AAC/E,SAAS,aAAa;AAGf,SAAS,YAAY,OAAuC;AACjE,QAAM;AAAA,IACJ,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,gBAAgB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI;AACJ,QAAM,cAAc,MAAM;AAC1B,QAAM,UAAU,MAAM;AACtB,QAAM,UAAU,GAAG,OAAO;AAC1B,QAAM,iBAAiB,OAAyB,IAAI;AACpD,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,YAAY;AACvE,QAAM,gBAAgB,SAAS;AAC/B,QAAM,gBAAyC,CAAC;AAChD,QAAM,mBAA4C,CAAC;AAEnD,aAAW,CAAC,MAAM,SAAS,KAAK,OAAO,QAAQ,WAAW,GAAG;AAC3D,QAAI,KAAK,WAAW,OAAO,EAAG,eAAc,IAAI,IAAI;AAAA,QAC/C,kBAAiB,IAAI,IAAI;AAAA,EAChC;AAEA,QAAM,eAAe;AAAA,IACnB,8BAA8B;AAAA,EAChC;AACA,QAAM,UACH,gBAAgB,UAAa,gBAAgB,SAAS,gBAAgB,WACvE,cAAc,cAAc,MAAM,QAClC,cAAc,cAAc,MAAM,MAClC,cAAc,cAAc,MAAM;AACpC,QAAM,WAAW,QAAQ,iBAAiB,QAAQ;AAElD,SACE;AAAA,IAAC,MAAM;AAAA,IAAN;AAAA,MACC;AAAA,MACC,GAAG;AAAA,MACJ,2BAAwB;AAAA,MACxB;AAAA,MACA,IAAI;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA;AAAA,UAAC,MAAM;AAAA,UAAN;AAAA,YACC;AAAA,YACA;AAAA,YACA,SAAS,CAAC,UAAU;AAClB,oBAAM,eAAe;AACrB,6BAAe,SAAS,MAAM;AAAA,YAChC;AAAA,YACA;AAAA,YAEC;AAAA;AAAA,QACH;AAAA,QACA,qBAAC,SAAI,aAAU,WAAU,cAAY,eAAe,OAAO,cACzD;AAAA;AAAA,YAAC,MAAM;AAAA,YAAN;AAAA,cACC,eAAY;AAAA,cACZ,IAAG;AAAA,cACH;AAAA,cACA;AAAA,cACA;AAAA,cACA,UAAQ;AAAA,cACR;AAAA,cACA,UAAU;AAAA,cACV,MAAK;AAAA,cACL,OAAO;AAAA;AAAA,UACT;AAAA,UACA;AAAA,YAAC;AAAA;AAAA,cACE,GAAG;AAAA,cACJ,gBAAc,WAAW;AAAA,cACzB,cAAY;AAAA,cACZ,mBAAiB,YAAY,SAAY,GAAG,OAAO;AAAA,cACnD,aAAU;AAAA,cACV;AAAA,cACA,IAAI;AAAA,cACJ,UAAU,CAAC,UAAU;AACnB,sBAAM,YAAY,MAAM,cAAc;AACtC,oBAAI,UAAU,OAAW,sBAAqB,SAAS;AACvD,gCAAgB,SAAS;AACzB,2BAAW,KAAK;AAAA,cAClB;AAAA,cACA,MAAK;AAAA,cACL,OAAO;AAAA,cACP,KAAK,CAAC,YAAY;AAChB,+BAAe,UAAU;AACzB,oBAAI,OAAO,QAAQ,WAAY,QAAO,IAAI,OAAO;AAAA,yBACxC,IAAK,KAAI,UAAU;AAAA,cAC9B;AAAA,cACC,GAAI,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;AAAA,cAC7B,GAAI,aAAa,EAAE,YAAY,WAAW,IAAI,CAAC;AAAA;AAAA,UAClD;AAAA,WACF;AAAA;AAAA;AAAA,EACF;AAEJ;AACA,YAAY,cAAc;","names":[]}
@@ -1,4 +1,3 @@
1
- export { ColorPicker, ColorPickerArea, ColorPickerContent, ColorPickerField, ColorPickerRoot, ColorPickerSlider, ColorPickerSwatch, ColorPickerSwatchGroup, ColorPickerTrigger, } from "./ColorPicker.js";
2
- export type { ColorPickerAreaOwnProps, ColorPickerContentOwnProps, ColorPickerFieldOwnProps, ColorPickerRootControlledOwnProps, ColorPickerRootShellOwnProps, ColorPickerRootShellProps, ColorPickerRootProps, ColorPickerSliderOwnProps, ColorPickerSwatchGroupOwnProps, ColorPickerSwatchOwnProps, ColorPickerTriggerOwnProps, Color, ColorFormat, HsbColor, HslColor, RgbColor, } from "./types.js";
3
- export { colorToHex, createColor, formatColor, hsbToRgb, hslToRgb, parseColor, parseHex, rgbToHsb, rgbToHsl, } from "./color.js";
1
+ export { ColorPicker } from "./ColorPicker.js";
2
+ export type { ColorPickerProps, ColorSpace } from "./types.js";
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/color-picker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,iCAAiC,EACjC,4BAA4B,EAC5B,yBAAyB,EACzB,oBAAoB,EACpB,yBAAyB,EACzB,8BAA8B,EAC9B,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,EACL,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/color-picker/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -1,43 +1,5 @@
1
- import {
2
- ColorPicker,
3
- ColorPickerArea,
4
- ColorPickerContent,
5
- ColorPickerField,
6
- ColorPickerRoot,
7
- ColorPickerSlider,
8
- ColorPickerSwatch,
9
- ColorPickerSwatchGroup,
10
- ColorPickerTrigger
11
- } from "./ColorPicker.js";
12
- import {
13
- colorToHex,
14
- createColor,
15
- formatColor,
16
- hsbToRgb,
17
- hslToRgb,
18
- parseColor,
19
- parseHex,
20
- rgbToHsb,
21
- rgbToHsl
22
- } from "./color.js";
1
+ import { ColorPicker } from "./ColorPicker.js";
23
2
  export {
24
- ColorPicker,
25
- ColorPickerArea,
26
- ColorPickerContent,
27
- ColorPickerField,
28
- ColorPickerRoot,
29
- ColorPickerSlider,
30
- ColorPickerSwatch,
31
- ColorPickerSwatchGroup,
32
- ColorPickerTrigger,
33
- colorToHex,
34
- createColor,
35
- formatColor,
36
- hsbToRgb,
37
- hslToRgb,
38
- parseColor,
39
- parseHex,
40
- rgbToHsb,
41
- rgbToHsl
3
+ ColorPicker
42
4
  };
43
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/color-picker/index.ts"],"sourcesContent":["export {\n ColorPicker,\n ColorPickerArea,\n ColorPickerContent,\n ColorPickerField,\n ColorPickerRoot,\n ColorPickerSlider,\n ColorPickerSwatch,\n ColorPickerSwatchGroup,\n ColorPickerTrigger,\n} from \"./ColorPicker.js\";\nexport type {\n ColorPickerAreaOwnProps,\n ColorPickerContentOwnProps,\n ColorPickerFieldOwnProps,\n ColorPickerRootControlledOwnProps,\n ColorPickerRootShellOwnProps,\n ColorPickerRootShellProps,\n ColorPickerRootProps,\n ColorPickerSliderOwnProps,\n ColorPickerSwatchGroupOwnProps,\n ColorPickerSwatchOwnProps,\n ColorPickerTriggerOwnProps,\n Color,\n ColorFormat,\n HsbColor,\n HslColor,\n RgbColor,\n} from \"./types.js\";\nexport {\n colorToHex,\n createColor,\n formatColor,\n hsbToRgb,\n hslToRgb,\n parseColor,\n parseHex,\n rgbToHsb,\n rgbToHsl,\n} from \"./color.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAmBP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/color-picker/index.ts"],"sourcesContent":["export { ColorPicker } from \"./ColorPicker.js\";\nexport type { ColorPickerProps, ColorSpace } from \"./types.js\";\n"],"mappings":"AAAA,SAAS,mBAAmB;","names":[]}
@@ -1,73 +1,17 @@
1
- import type { ReactNode } from "react";
2
- export interface RgbColor {
3
- readonly r: number;
4
- readonly g: number;
5
- readonly b: number;
6
- readonly a: number;
7
- }
8
- export interface HslColor {
9
- readonly h: number;
10
- readonly s: number;
11
- readonly l: number;
12
- readonly a: number;
13
- }
14
- export interface HsbColor {
15
- readonly h: number;
16
- readonly s: number;
17
- readonly b: number;
18
- readonly a: number;
19
- }
20
- export type ColorFormat = "hex" | "rgb" | "hsl" | "hsb";
21
- export interface Color {
22
- readonly rgb: RgbColor;
23
- }
24
- export interface ColorPickerContextValue {
25
- readonly alpha: boolean;
26
- readonly color: Color;
27
- readonly format: ColorFormat;
28
- readonly popoverId: string;
29
- readonly setColor: (color: Color) => void;
30
- }
31
- export interface ColorPickerRootShellOwnProps {
1
+ import type { ChangeEventHandler, ComponentPropsWithRef, CSSProperties, Ref } from "react";
2
+ export type ColorSpace = "limited-srgb" | "display-p3";
3
+ export interface ColorPickerOwnProps {
32
4
  readonly alpha?: boolean;
33
- readonly defaultValue?: Color;
34
- readonly format?: ColorFormat;
35
- }
36
- export interface ColorPickerRootControlledOwnProps {
37
- readonly onChange?: (color: Color) => void;
38
- readonly value?: Color;
5
+ readonly colorSpace?: ColorSpace;
6
+ readonly defaultValue?: string;
7
+ readonly label: string;
8
+ readonly onValueChange?: (value: string) => void;
9
+ readonly value?: string;
39
10
  }
40
- export interface ColorPickerRootShellProps extends ColorPickerRootShellOwnProps {
41
- readonly children?: ReactNode;
42
- }
43
- export interface ColorPickerRootProps extends ColorPickerRootShellOwnProps, ColorPickerRootControlledOwnProps {
44
- readonly children?: ReactNode;
45
- }
46
- export interface ColorPickerTriggerOwnProps {
47
- readonly children?: ReactNode;
11
+ export type ColorPickerProps = Omit<ComponentPropsWithRef<"input">, "alpha" | "className" | "colorSpace" | "defaultValue" | "onChange" | "ref" | "style" | "type" | "value"> & ColorPickerOwnProps & {
48
12
  readonly className?: string;
49
- }
50
- export interface ColorPickerContentOwnProps {
51
- readonly children?: ReactNode;
52
- readonly className?: string;
53
- }
54
- export interface ColorPickerAreaOwnProps {
55
- readonly className?: string;
56
- }
57
- export interface ColorPickerSliderOwnProps {
58
- readonly channel: "hue" | "alpha";
59
- readonly className?: string;
60
- }
61
- export interface ColorPickerSwatchOwnProps {
62
- readonly className?: string;
63
- readonly value: string;
64
- }
65
- export interface ColorPickerSwatchGroupOwnProps {
66
- readonly children?: ReactNode;
67
- readonly className?: string;
68
- readonly swatches?: readonly string[];
69
- }
70
- export interface ColorPickerFieldOwnProps {
71
- readonly className?: string;
72
- }
13
+ readonly onChange?: ChangeEventHandler<HTMLInputElement>;
14
+ readonly ref?: Ref<HTMLInputElement>;
15
+ readonly style?: CSSProperties;
16
+ };
73
17
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/color-picker/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/color-picker/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAE3F,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,qBAAqB,CAAC,OAAO,CAAC,EAC5B,OAAO,GACP,WAAW,GACX,YAAY,GACZ,cAAc,GACd,UAAU,GACV,KAAK,GACL,OAAO,GACP,MAAM,GACN,OAAO,CACV,GACC,mBAAmB,GAAG;IACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACzD,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/components/context-menu/ContextMenu.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAKX,YAAY,EAEb,MAAM,OAAO,CAAC;AAQf,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAEV,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,+BAA+B,EAC/B,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,CAAC;AAKhC,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,GAAG,IAAI,CA8DhF;yBA9De,eAAe;;;AAiE/B,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAChE,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,GAClC,YAAY,GAAG,IAAI,CAsBrB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAChE,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,GAClC,YAAY,GAAG,IAAI,CA4CrB;yBA9Ce,kBAAkB;;;AAiDlC,wBAAgB,eAAe,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC7D,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAC/B,YAAY,GAAG,IAAI,CA6DrB;yBA/De,eAAe;;;AA8F/B,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,+BAA+B,GACrC,YAAY,GAAG,IAAI,CAyCrB;yBA3Ce,uBAAuB;;;AA8CvC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,4BAA4B,GAAG,YAAY,GAAG,IAAI,CAgC7F;yBAhCe,oBAAoB;;;AA6CpC,wBAAgB,cAAc,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI,CAKjF;yBALe,cAAc;;;AAQ9B,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CAsC/F;yBAtCe,qBAAqB;;;AAyCrC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CAoB/F;AAED,eAAO,MAAM,gBAAgB,kBAAY,CAAC;AAE1C,eAAO,MAAM,oBAAoB,sBAAgB,CAAC;AAElD,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAavB,CAAC"}
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/components/context-menu/ContextMenu.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EAKX,YAAY,EAEb,MAAM,OAAO,CAAC;AAQf,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAEV,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,+BAA+B,EAC/B,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,eAAe,EAAE,CAAC;AAKhC,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,GAAG,IAAI,CA8DhF;yBA9De,eAAe;;;AAiE/B,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAChE,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,GAClC,YAAY,GAAG,IAAI,CAsBrB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAChE,KAAK,EAAE,uBAAuB,CAAC,GAAG,CAAC,GAClC,YAAY,GAAG,IAAI,CA6DrB;yBA/De,kBAAkB;;;AAkElC,wBAAgB,eAAe,CAAC,GAAG,SAAS,WAAW,GAAG,KAAK,EAC7D,KAAK,EAAE,oBAAoB,CAAC,GAAG,CAAC,GAC/B,YAAY,GAAG,IAAI,CA6DrB;yBA/De,eAAe;;;AA8F/B,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,+BAA+B,GACrC,YAAY,GAAG,IAAI,CAyCrB;yBA3Ce,uBAAuB;;;AA8CvC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,4BAA4B,GAAG,YAAY,GAAG,IAAI,CAgC7F;yBAhCe,oBAAoB;;;AA6CpC,wBAAgB,cAAc,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI,CAKjF;yBALe,cAAc;;;AAQ9B,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CAsC/F;yBAtCe,qBAAqB;;;AAyCrC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,6BAA6B,GAAG,YAAY,GAAG,IAAI,CAoB/F;AAED,eAAO,MAAM,gBAAgB,kBAAY,CAAC;AAE1C,eAAO,MAAM,oBAAoB,sBAAgB,CAAC;AAElD,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAavB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useCallback, useMemo, useRef, useState } from "react";
4
- import { useMergedRefs } from "@gunkin/uiify/hooks";
4
+ import { useIsomorphicLayoutEffect, useMergedRefs } from "@gunkin/uiify/hooks";
5
5
  import { createPartContext, splitRef } from "@gunkin/uiify/core";
6
6
  import { composeEventHandlers } from "@gunkin/uiify/core/compose-event-handlers";
7
7
  import { RovingFocusItem, RovingFocusRoot } from "@gunkin/uiify/core/roving-focus";
@@ -96,6 +96,18 @@ function ContextMenuContent(props) {
96
96
  const { close, contentRef, focusTrigger, open, popupProps, popupRef, positionerProps } = useContextMenuContext("Content");
97
97
  const [consumerRef, withoutRef] = splitRef(consumerProps);
98
98
  const mergedRef = useMergedRefs(popupRef, contentRef, consumerRef);
99
+ useIsomorphicLayoutEffect(() => {
100
+ if (!open) return;
101
+ const content = contentRef.current;
102
+ const ownerDocument = content?.ownerDocument;
103
+ if (!content || !ownerDocument) return;
104
+ const handlePointerDown = (event) => {
105
+ if (event.composedPath().includes(content)) return;
106
+ close();
107
+ };
108
+ ownerDocument.addEventListener("pointerdown", handlePointerDown, true);
109
+ return () => ownerDocument.removeEventListener("pointerdown", handlePointerDown, true);
110
+ }, [close, contentRef, open]);
99
111
  const { onKeyDown: consumerOnKeyDown } = withoutRef;
100
112
  const handleKeyDown = (event) => {
101
113
  if (event.key === "Escape") {