@yoopta/ui 6.0.0-beta.13 → 6.0.0-beta.14

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 (42) hide show
  1. package/dist/action-menu-list.js +1 -1
  2. package/dist/action-menu-list.js.map +1 -0
  3. package/dist/block-dnd.js.map +1 -0
  4. package/dist/block-options.js +1 -1
  5. package/dist/block-options.js.map +1 -0
  6. package/dist/chunks/_tslib-8f8de673.js +36 -0
  7. package/dist/chunks/_tslib-8f8de673.js.map +1 -0
  8. package/dist/chunks/floating-ui.react-b048728e.js +5 -0
  9. package/dist/chunks/floating-ui.react-d2303b03.js +4506 -0
  10. package/dist/chunks/floating-ui.react-d2303b03.js.map +1 -0
  11. package/dist/chunks/floating-ui.react-feaab622.js +4506 -0
  12. package/dist/chunks/floating-ui.react-feaab622.js.map +1 -0
  13. package/dist/chunks/highlight-color-picker-027fa4b4.js +93 -0
  14. package/dist/chunks/highlight-color-picker-027fa4b4.js.map +1 -0
  15. package/dist/chunks/highlight-color-picker-a1a292a9.js +1 -0
  16. package/dist/chunks/highlight-color-picker-a979e7a3.js +93 -0
  17. package/dist/chunks/highlight-color-picker-a979e7a3.js.map +1 -0
  18. package/dist/chunks/index-bfd2e7c4.js +6 -0
  19. package/dist/chunks/index-bfd2e7c4.js.map +1 -0
  20. package/dist/chunks/style-inject.es-746bb8ed.js +29 -0
  21. package/dist/chunks/style-inject.es-746bb8ed.js.map +1 -0
  22. package/dist/chunks/throttle-278836f4.js +45 -0
  23. package/dist/chunks/throttle-278836f4.js.map +1 -0
  24. package/dist/element-options.js +1 -1
  25. package/dist/element-options.js.map +1 -0
  26. package/dist/floating-block-actions.js.map +1 -0
  27. package/dist/floating-toolbar/floating-toolbar.d.ts.map +1 -1
  28. package/dist/floating-toolbar.js +1 -1
  29. package/dist/floating-toolbar.js.map +1 -0
  30. package/dist/highlight-color-picker.js +1 -1
  31. package/dist/highlight-color-picker.js.map +1 -0
  32. package/dist/index.js +1 -1
  33. package/dist/index.js.map +1 -0
  34. package/dist/overlay.js +1 -1
  35. package/dist/overlay.js.map +1 -0
  36. package/dist/portal/Portal.d.ts.map +1 -1
  37. package/dist/portal.js +1 -1
  38. package/dist/portal.js.map +1 -0
  39. package/dist/selection-box.js.map +1 -0
  40. package/dist/slash-command-menu.js +1 -1
  41. package/dist/slash-command-menu.js.map +1 -0
  42. package/package.json +2 -2
@@ -0,0 +1,93 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, useState, useEffect, cloneElement } from 'react';
3
+ import { u as useFloating, o as offset, f as flip, s as shift, a as autoUpdate } from './floating-ui.react-d2303b03.js';
4
+ import { Z, O as Oe } from './index-bfd2e7c4.js';
5
+
6
+ const DEFAULT_PRESETS = [
7
+ '#FFFF00',
8
+ '#FFE066',
9
+ '#FFCC99',
10
+ '#FF9999',
11
+ '#99CCFF',
12
+ '#99FF99',
13
+ '#FF99FF',
14
+ '#CC99FF',
15
+ ];
16
+ const HighlightColorPicker = forwardRef(({ value = { backgroundColor: '#FFFF00' }, onChange, presets = DEFAULT_PRESETS, showInput = true, className, children, placement = 'bottom', offset: offsetValue = 8, }, ref) => {
17
+ const [isOpen, setIsOpen] = useState(false);
18
+ const [mode, setMode] = useState('backgroundColor');
19
+ const [color, setColor] = useState(value.backgroundColor);
20
+ const [textColor, setTextColor] = useState(value.color);
21
+ const { refs, floatingStyles } = useFloating({
22
+ open: isOpen,
23
+ onOpenChange: setIsOpen,
24
+ placement,
25
+ middleware: [offset(offsetValue), flip(), shift()],
26
+ whileElementsMounted: autoUpdate,
27
+ });
28
+ useEffect(() => {
29
+ if (value.backgroundColor) {
30
+ setColor(value.backgroundColor);
31
+ }
32
+ if (value.color) {
33
+ setTextColor(value.color);
34
+ }
35
+ }, [value]);
36
+ // Close on outside click
37
+ useEffect(() => {
38
+ if (!isOpen)
39
+ return;
40
+ const handleClickOutside = (event) => {
41
+ const target = event.target;
42
+ const referenceEl = refs.reference.current;
43
+ const floatingEl = refs.floating.current;
44
+ // `referenceEl` may be a VirtualElement (no `contains`)
45
+ if (referenceEl && referenceEl instanceof Element && referenceEl.contains(target))
46
+ return;
47
+ if (floatingEl === null || floatingEl === void 0 ? void 0 : floatingEl.contains(target))
48
+ return;
49
+ setIsOpen(false);
50
+ };
51
+ document.addEventListener('mousedown', handleClickOutside);
52
+ return () => document.removeEventListener('mousedown', handleClickOutside);
53
+ }, [isOpen, refs.floating, refs.reference]);
54
+ const handleColorChange = (newColor) => {
55
+ if (mode === 'backgroundColor') {
56
+ setColor(newColor);
57
+ onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, value), { backgroundColor: newColor }));
58
+ }
59
+ else {
60
+ setTextColor(newColor);
61
+ onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, value), { color: newColor }));
62
+ }
63
+ };
64
+ const currentColor = mode === 'backgroundColor' ? color : textColor;
65
+ const trigger = cloneElement(children, {
66
+ ref: refs.setReference,
67
+ onClick: (e) => {
68
+ var _a, _b;
69
+ e.stopPropagation();
70
+ setIsOpen((v) => !v);
71
+ (_b = (_a = children.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);
72
+ },
73
+ });
74
+ const setFloatingRef = (node) => {
75
+ refs.setFloating(node);
76
+ if (!ref)
77
+ return;
78
+ if (typeof ref === 'function')
79
+ ref(node);
80
+ else {
81
+ // eslint-disable-next-line no-param-reassign
82
+ ref.current = node;
83
+ }
84
+ };
85
+ return (jsxs(Fragment, { children: [trigger, isOpen && (jsxs("div", Object.assign({ ref: setFloatingRef, style: floatingStyles, className: `yoopta-highlight-color-picker ${className !== null && className !== void 0 ? className : ''}`, onClick: (e) => e.stopPropagation(), onMouseDown: (e) => e.stopPropagation() }, { children: [jsxs("div", Object.assign({ className: "yoopta-highlight-color-picker__mode-toggle" }, { children: [jsx("button", Object.assign({ type: "button", className: "yoopta-highlight-color-picker__mode-btn", "data-active": mode === 'backgroundColor', onClick: () => setMode('backgroundColor'), "aria-label": "Background color" }, { children: "Background" })), jsx("button", Object.assign({ type: "button", className: "yoopta-highlight-color-picker__mode-btn", "data-active": mode === 'color', onClick: () => setMode('color'), "aria-label": "Text color" }, { children: "Text" }))] })), jsx("div", Object.assign({ className: "yoopta-highlight-color-picker__picker" }, { children: jsx(Z, { color: currentColor, onChange: handleColorChange, className: "yoopta-highlight-color-picker__react-colorful" }) })), presets.length > 0 && (jsx("div", Object.assign({ className: "yoopta-highlight-color-picker__presets" }, { children: presets.map((presetColor) => {
86
+ const isSelected = (currentColor === null || currentColor === void 0 ? void 0 : currentColor.toLowerCase()) === presetColor.toLowerCase();
87
+ return (jsx("button", { type: "button", className: "yoopta-highlight-color-picker__preset", "data-selected": isSelected, style: { backgroundColor: presetColor }, onClick: () => handleColorChange(presetColor), "aria-label": `Select color ${presetColor}` }, presetColor));
88
+ }) }))), showInput && (jsxs("div", Object.assign({ className: "yoopta-highlight-color-picker__hex-row" }, { children: [jsx("div", { className: "yoopta-highlight-color-picker__swatch", style: { backgroundColor: currentColor } }), jsx(Oe, { color: currentColor, onChange: handleColorChange, className: "yoopta-highlight-color-picker__hex-input", prefixed: true })] })))] })))] }));
89
+ });
90
+ HighlightColorPicker.displayName = 'HighlightColorPicker';
91
+
92
+ export { HighlightColorPicker as H };
93
+ //# sourceMappingURL=highlight-color-picker-027fa4b4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight-color-picker-027fa4b4.js","sources":["../../src/highlight-color-picker/highlight-color-picker.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { cloneElement, forwardRef, useEffect, useState } from 'react';\nimport { autoUpdate, flip, offset, shift, useFloating } from '@floating-ui/react';\nimport { HexColorInput, HexColorPicker } from 'react-colorful';\n\nexport type HighlightColorPickerProps = {\n /** Current color values (hex format) */\n value?: {\n color?: string;\n backgroundColor?: string;\n };\n /** Callback when color changes */\n onChange?: (values: { color?: string; backgroundColor?: string }) => void;\n /** Preset colors to display */\n presets?: string[];\n /** Show hex input field */\n showInput?: boolean;\n /** Custom className */\n className?: string;\n /** Trigger element */\n children: ReactElement;\n /** Placement of the popover */\n placement?: 'top' | 'bottom' | 'left' | 'right';\n /** Offset from trigger */\n offset?: number;\n};\n\nconst DEFAULT_PRESETS = [\n '#FFFF00',\n '#FFE066',\n '#FFCC99',\n '#FF9999',\n '#99CCFF',\n '#99FF99',\n '#FF99FF',\n '#CC99FF',\n];\n\nexport const HighlightColorPicker = forwardRef<HTMLDivElement, HighlightColorPickerProps>(\n (\n {\n value = { backgroundColor: '#FFFF00' },\n onChange,\n presets = DEFAULT_PRESETS,\n showInput = true,\n className,\n children,\n placement = 'bottom',\n offset: offsetValue = 8,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [mode, setMode] = useState<'color' | 'backgroundColor'>('backgroundColor');\n const [color, setColor] = useState(value.backgroundColor);\n const [textColor, setTextColor] = useState(value.color);\n\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n placement,\n middleware: [offset(offsetValue), flip(), shift()],\n whileElementsMounted: autoUpdate,\n });\n\n useEffect(() => {\n if (value.backgroundColor) {\n setColor(value.backgroundColor);\n }\n if (value.color) {\n setTextColor(value.color);\n }\n }, [value]);\n\n // Close on outside click\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node;\n const referenceEl = refs.reference.current;\n const floatingEl = refs.floating.current;\n\n // `referenceEl` may be a VirtualElement (no `contains`)\n if (referenceEl && referenceEl instanceof Element && referenceEl.contains(target)) return;\n if (floatingEl?.contains(target)) return;\n\n setIsOpen(false);\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, refs.floating, refs.reference]);\n\n const handleColorChange = (newColor: string) => {\n if (mode === 'backgroundColor') {\n setColor(newColor);\n onChange?.({ ...value, backgroundColor: newColor });\n } else {\n setTextColor(newColor);\n onChange?.({ ...value, color: newColor });\n }\n };\n\n const currentColor = mode === 'backgroundColor' ? color : textColor;\n\n const trigger = cloneElement(children, {\n ref: refs.setReference,\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n setIsOpen((v) => !v);\n children.props.onClick?.(e);\n },\n });\n\n const setFloatingRef = (node: HTMLDivElement | null) => {\n refs.setFloating(node);\n if (!ref) return;\n if (typeof ref === 'function') ref(node);\n else {\n // eslint-disable-next-line no-param-reassign\n ref.current = node;\n }\n };\n\n return (\n <>\n {trigger}\n {isOpen && (\n <div\n ref={setFloatingRef}\n style={floatingStyles}\n className={`yoopta-highlight-color-picker ${className ?? ''}`}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}>\n {/* Mode Toggle */}\n <div className=\"yoopta-highlight-color-picker__mode-toggle\">\n <button\n type=\"button\"\n className=\"yoopta-highlight-color-picker__mode-btn\"\n data-active={mode === 'backgroundColor'}\n onClick={() => setMode('backgroundColor')}\n aria-label=\"Background color\">\n Background\n </button>\n <button\n type=\"button\"\n className=\"yoopta-highlight-color-picker__mode-btn\"\n data-active={mode === 'color'}\n onClick={() => setMode('color')}\n aria-label=\"Text color\">\n Text\n </button>\n </div>\n\n <div className=\"yoopta-highlight-color-picker__picker\">\n <HexColorPicker\n color={currentColor}\n onChange={handleColorChange}\n className=\"yoopta-highlight-color-picker__react-colorful\"\n />\n </div>\n\n {presets.length > 0 && (\n <div className=\"yoopta-highlight-color-picker__presets\">\n {presets.map((presetColor) => {\n const isSelected = currentColor?.toLowerCase() === presetColor.toLowerCase();\n return (\n <button\n key={presetColor}\n type=\"button\"\n className=\"yoopta-highlight-color-picker__preset\"\n data-selected={isSelected}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n aria-label={`Select color ${presetColor}`}\n />\n );\n })}\n </div>\n )}\n\n {showInput && (\n <div className=\"yoopta-highlight-color-picker__hex-row\">\n <div\n className=\"yoopta-highlight-color-picker__swatch\"\n style={{ backgroundColor: currentColor }}\n />\n <HexColorInput\n color={currentColor}\n onChange={handleColorChange}\n className=\"yoopta-highlight-color-picker__hex-input\"\n prefixed\n />\n </div>\n )}\n </div>\n )}\n </>\n );\n },\n);\n\nHighlightColorPicker.displayName = 'HighlightColorPicker';\n\n"],"names":["_jsxs","_Fragment","_jsx","HexColorPicker","HexColorInput"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import{jsxs as o,Fragment as e,jsx as t}from"react/jsx-runtime";import{forwardRef as r,useState as a,useEffect as c,cloneElement as l}from"react";import{u as n,o as i,f as s,s as g,a as h}from"./floating-ui.react-b048728e.js";import{Z as p,O as d}from"./index-e0185864.js";const u=["#FFFF00","#FFE066","#FFCC99","#FF9999","#99CCFF","#99FF99","#FF99FF","#CC99FF"],m=r(({value:r={backgroundColor:"#FFFF00"},onChange:m,presets:b=u,showInput:k=!0,className:C,children:F,placement:f="bottom",offset:y=8},_)=>{const[v,j]=a(!1),[N,O]=a("backgroundColor"),[w,x]=a(r.backgroundColor),[E,L]=a(r.color),{refs:P,floatingStyles:B}=n({open:v,onOpenChange:j,placement:f,middleware:[i(y),s(),g()],whileElementsMounted:h});c(()=>{r.backgroundColor&&x(r.backgroundColor),r.color&&L(r.color)},[r]),c(()=>{if(!v)return;const o=o=>{const e=o.target,t=P.reference.current,r=P.floating.current;t&&t instanceof Element&&t.contains(e)||(null==r?void 0:r.contains(e))||j(!1)};return document.addEventListener("mousedown",o),()=>document.removeEventListener("mousedown",o)},[v,P.floating,P.reference]);const H=o=>{"backgroundColor"===N?(x(o),null==m||m(Object.assign(Object.assign({},r),{backgroundColor:o}))):(L(o),null==m||m(Object.assign(Object.assign({},r),{color:o})))},M="backgroundColor"===N?w:E,S=l(F,{ref:P.setReference,onClick:o=>{var e,t;o.stopPropagation(),j(o=>!o),null===(t=(e=F.props).onClick)||void 0===t||t.call(e,o)}});return o(e,{children:[S,v&&o("div",Object.assign({ref:o=>{P.setFloating(o),_&&("function"==typeof _?_(o):_.current=o)},style:B,className:`yoopta-highlight-color-picker ${null!=C?C:""}`,onClick:o=>o.stopPropagation(),onMouseDown:o=>o.stopPropagation()},{children:[o("div",Object.assign({className:"yoopta-highlight-color-picker__mode-toggle"},{children:[t("button",Object.assign({type:"button",className:"yoopta-highlight-color-picker__mode-btn","data-active":"backgroundColor"===N,onClick:()=>O("backgroundColor"),"aria-label":"Background color"},{children:"Background"})),t("button",Object.assign({type:"button",className:"yoopta-highlight-color-picker__mode-btn","data-active":"color"===N,onClick:()=>O("color"),"aria-label":"Text color"},{children:"Text"}))]})),t("div",Object.assign({className:"yoopta-highlight-color-picker__picker"},{children:t(p,{color:M,onChange:H,className:"yoopta-highlight-color-picker__react-colorful"})})),b.length>0&&t("div",Object.assign({className:"yoopta-highlight-color-picker__presets"},{children:b.map(o=>{const e=(null==M?void 0:M.toLowerCase())===o.toLowerCase();return t("button",{type:"button",className:"yoopta-highlight-color-picker__preset","data-selected":e,style:{backgroundColor:o},onClick:()=>H(o),"aria-label":`Select color ${o}`},o)})})),k&&o("div",Object.assign({className:"yoopta-highlight-color-picker__hex-row"},{children:[t("div",{className:"yoopta-highlight-color-picker__swatch",style:{backgroundColor:M}}),t(d,{color:M,onChange:H,className:"yoopta-highlight-color-picker__hex-input",prefixed:!0})]}))]}))]})});m.displayName="HighlightColorPicker";export{m as H};
@@ -0,0 +1,93 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, useState, useEffect, cloneElement } from 'react';
3
+ import { u as useFloating, o as offset, f as flip, s as shift, a as autoUpdate } from './floating-ui.react-feaab622.js';
4
+ import { Z, O as Oe } from './index-bfd2e7c4.js';
5
+
6
+ const DEFAULT_PRESETS = [
7
+ '#FFFF00',
8
+ '#FFE066',
9
+ '#FFCC99',
10
+ '#FF9999',
11
+ '#99CCFF',
12
+ '#99FF99',
13
+ '#FF99FF',
14
+ '#CC99FF',
15
+ ];
16
+ const HighlightColorPicker = forwardRef(({ value = { backgroundColor: '#FFFF00' }, onChange, presets = DEFAULT_PRESETS, showInput = true, className, children, placement = 'bottom', offset: offsetValue = 8, }, ref) => {
17
+ const [isOpen, setIsOpen] = useState(false);
18
+ const [mode, setMode] = useState('backgroundColor');
19
+ const [color, setColor] = useState(value.backgroundColor);
20
+ const [textColor, setTextColor] = useState(value.color);
21
+ const { refs, floatingStyles } = useFloating({
22
+ open: isOpen,
23
+ onOpenChange: setIsOpen,
24
+ placement,
25
+ middleware: [offset(offsetValue), flip(), shift()],
26
+ whileElementsMounted: autoUpdate,
27
+ });
28
+ useEffect(() => {
29
+ if (value.backgroundColor) {
30
+ setColor(value.backgroundColor);
31
+ }
32
+ if (value.color) {
33
+ setTextColor(value.color);
34
+ }
35
+ }, [value]);
36
+ // Close on outside click
37
+ useEffect(() => {
38
+ if (!isOpen)
39
+ return;
40
+ const handleClickOutside = (event) => {
41
+ const target = event.target;
42
+ const referenceEl = refs.reference.current;
43
+ const floatingEl = refs.floating.current;
44
+ // `referenceEl` may be a VirtualElement (no `contains`)
45
+ if (referenceEl && referenceEl instanceof Element && referenceEl.contains(target))
46
+ return;
47
+ if (floatingEl === null || floatingEl === void 0 ? void 0 : floatingEl.contains(target))
48
+ return;
49
+ setIsOpen(false);
50
+ };
51
+ document.addEventListener('mousedown', handleClickOutside);
52
+ return () => document.removeEventListener('mousedown', handleClickOutside);
53
+ }, [isOpen, refs.floating, refs.reference]);
54
+ const handleColorChange = (newColor) => {
55
+ if (mode === 'backgroundColor') {
56
+ setColor(newColor);
57
+ onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, value), { backgroundColor: newColor }));
58
+ }
59
+ else {
60
+ setTextColor(newColor);
61
+ onChange === null || onChange === void 0 ? void 0 : onChange(Object.assign(Object.assign({}, value), { color: newColor }));
62
+ }
63
+ };
64
+ const currentColor = mode === 'backgroundColor' ? color : textColor;
65
+ const trigger = cloneElement(children, {
66
+ ref: refs.setReference,
67
+ onClick: (e) => {
68
+ var _a, _b;
69
+ e.stopPropagation();
70
+ setIsOpen((v) => !v);
71
+ (_b = (_a = children.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);
72
+ },
73
+ });
74
+ const setFloatingRef = (node) => {
75
+ refs.setFloating(node);
76
+ if (!ref)
77
+ return;
78
+ if (typeof ref === 'function')
79
+ ref(node);
80
+ else {
81
+ // eslint-disable-next-line no-param-reassign
82
+ ref.current = node;
83
+ }
84
+ };
85
+ return (jsxs(Fragment, { children: [trigger, isOpen && (jsxs("div", Object.assign({ ref: setFloatingRef, style: floatingStyles, className: `yoopta-highlight-color-picker ${className !== null && className !== void 0 ? className : ''}`, onClick: (e) => e.stopPropagation(), onMouseDown: (e) => e.stopPropagation() }, { children: [jsxs("div", Object.assign({ className: "yoopta-highlight-color-picker__mode-toggle" }, { children: [jsx("button", Object.assign({ type: "button", className: "yoopta-highlight-color-picker__mode-btn", "data-active": mode === 'backgroundColor', onClick: () => setMode('backgroundColor'), "aria-label": "Background color" }, { children: "Background" })), jsx("button", Object.assign({ type: "button", className: "yoopta-highlight-color-picker__mode-btn", "data-active": mode === 'color', onClick: () => setMode('color'), "aria-label": "Text color" }, { children: "Text" }))] })), jsx("div", Object.assign({ className: "yoopta-highlight-color-picker__picker" }, { children: jsx(Z, { color: currentColor, onChange: handleColorChange, className: "yoopta-highlight-color-picker__react-colorful" }) })), presets.length > 0 && (jsx("div", Object.assign({ className: "yoopta-highlight-color-picker__presets" }, { children: presets.map((presetColor) => {
86
+ const isSelected = (currentColor === null || currentColor === void 0 ? void 0 : currentColor.toLowerCase()) === presetColor.toLowerCase();
87
+ return (jsx("button", { type: "button", className: "yoopta-highlight-color-picker__preset", "data-selected": isSelected, style: { backgroundColor: presetColor }, onClick: () => handleColorChange(presetColor), "aria-label": `Select color ${presetColor}` }, presetColor));
88
+ }) }))), showInput && (jsxs("div", Object.assign({ className: "yoopta-highlight-color-picker__hex-row" }, { children: [jsx("div", { className: "yoopta-highlight-color-picker__swatch", style: { backgroundColor: currentColor } }), jsx(Oe, { color: currentColor, onChange: handleColorChange, className: "yoopta-highlight-color-picker__hex-input", prefixed: true })] })))] })))] }));
89
+ });
90
+ HighlightColorPicker.displayName = 'HighlightColorPicker';
91
+
92
+ export { HighlightColorPicker as H };
93
+ //# sourceMappingURL=highlight-color-picker-a979e7a3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight-color-picker-a979e7a3.js","sources":["../../src/highlight-color-picker/highlight-color-picker.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport { cloneElement, forwardRef, useEffect, useState } from 'react';\nimport { autoUpdate, flip, offset, shift, useFloating } from '@floating-ui/react';\nimport { HexColorInput, HexColorPicker } from 'react-colorful';\n\nexport type HighlightColorPickerProps = {\n /** Current color values (hex format) */\n value?: {\n color?: string;\n backgroundColor?: string;\n };\n /** Callback when color changes */\n onChange?: (values: { color?: string; backgroundColor?: string }) => void;\n /** Preset colors to display */\n presets?: string[];\n /** Show hex input field */\n showInput?: boolean;\n /** Custom className */\n className?: string;\n /** Trigger element */\n children: ReactElement;\n /** Placement of the popover */\n placement?: 'top' | 'bottom' | 'left' | 'right';\n /** Offset from trigger */\n offset?: number;\n};\n\nconst DEFAULT_PRESETS = [\n '#FFFF00',\n '#FFE066',\n '#FFCC99',\n '#FF9999',\n '#99CCFF',\n '#99FF99',\n '#FF99FF',\n '#CC99FF',\n];\n\nexport const HighlightColorPicker = forwardRef<HTMLDivElement, HighlightColorPickerProps>(\n (\n {\n value = { backgroundColor: '#FFFF00' },\n onChange,\n presets = DEFAULT_PRESETS,\n showInput = true,\n className,\n children,\n placement = 'bottom',\n offset: offsetValue = 8,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [mode, setMode] = useState<'color' | 'backgroundColor'>('backgroundColor');\n const [color, setColor] = useState(value.backgroundColor);\n const [textColor, setTextColor] = useState(value.color);\n\n const { refs, floatingStyles } = useFloating({\n open: isOpen,\n onOpenChange: setIsOpen,\n placement,\n middleware: [offset(offsetValue), flip(), shift()],\n whileElementsMounted: autoUpdate,\n });\n\n useEffect(() => {\n if (value.backgroundColor) {\n setColor(value.backgroundColor);\n }\n if (value.color) {\n setTextColor(value.color);\n }\n }, [value]);\n\n // Close on outside click\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node;\n const referenceEl = refs.reference.current;\n const floatingEl = refs.floating.current;\n\n // `referenceEl` may be a VirtualElement (no `contains`)\n if (referenceEl && referenceEl instanceof Element && referenceEl.contains(target)) return;\n if (floatingEl?.contains(target)) return;\n\n setIsOpen(false);\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, refs.floating, refs.reference]);\n\n const handleColorChange = (newColor: string) => {\n if (mode === 'backgroundColor') {\n setColor(newColor);\n onChange?.({ ...value, backgroundColor: newColor });\n } else {\n setTextColor(newColor);\n onChange?.({ ...value, color: newColor });\n }\n };\n\n const currentColor = mode === 'backgroundColor' ? color : textColor;\n\n const trigger = cloneElement(children, {\n ref: refs.setReference,\n onClick: (e: MouseEvent) => {\n e.stopPropagation();\n setIsOpen((v) => !v);\n children.props.onClick?.(e);\n },\n });\n\n const setFloatingRef = (node: HTMLDivElement | null) => {\n refs.setFloating(node);\n if (!ref) return;\n if (typeof ref === 'function') ref(node);\n else {\n // eslint-disable-next-line no-param-reassign\n ref.current = node;\n }\n };\n\n return (\n <>\n {trigger}\n {isOpen && (\n <div\n ref={setFloatingRef}\n style={floatingStyles}\n className={`yoopta-highlight-color-picker ${className ?? ''}`}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}>\n {/* Mode Toggle */}\n <div className=\"yoopta-highlight-color-picker__mode-toggle\">\n <button\n type=\"button\"\n className=\"yoopta-highlight-color-picker__mode-btn\"\n data-active={mode === 'backgroundColor'}\n onClick={() => setMode('backgroundColor')}\n aria-label=\"Background color\">\n Background\n </button>\n <button\n type=\"button\"\n className=\"yoopta-highlight-color-picker__mode-btn\"\n data-active={mode === 'color'}\n onClick={() => setMode('color')}\n aria-label=\"Text color\">\n Text\n </button>\n </div>\n\n <div className=\"yoopta-highlight-color-picker__picker\">\n <HexColorPicker\n color={currentColor}\n onChange={handleColorChange}\n className=\"yoopta-highlight-color-picker__react-colorful\"\n />\n </div>\n\n {presets.length > 0 && (\n <div className=\"yoopta-highlight-color-picker__presets\">\n {presets.map((presetColor) => {\n const isSelected = currentColor?.toLowerCase() === presetColor.toLowerCase();\n return (\n <button\n key={presetColor}\n type=\"button\"\n className=\"yoopta-highlight-color-picker__preset\"\n data-selected={isSelected}\n style={{ backgroundColor: presetColor }}\n onClick={() => handleColorChange(presetColor)}\n aria-label={`Select color ${presetColor}`}\n />\n );\n })}\n </div>\n )}\n\n {showInput && (\n <div className=\"yoopta-highlight-color-picker__hex-row\">\n <div\n className=\"yoopta-highlight-color-picker__swatch\"\n style={{ backgroundColor: currentColor }}\n />\n <HexColorInput\n color={currentColor}\n onChange={handleColorChange}\n className=\"yoopta-highlight-color-picker__hex-input\"\n prefixed\n />\n </div>\n )}\n </div>\n )}\n </>\n );\n },\n);\n\nHighlightColorPicker.displayName = 'HighlightColorPicker';\n\n"],"names":["_jsxs","_Fragment","_jsx","HexColorPicker","HexColorInput"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import React__default, { useRef, useMemo, useEffect, useCallback, useState, useLayoutEffect } from 'react';
2
+
3
+ function u(){return (u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);}return e}).apply(this,arguments)}function c(e,r){if(null==e)return {};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r.indexOf(t=a[n])>=0||(o[t]=e[t]);return o}function i(e){var t=useRef(e),n=useRef(function(e){t.current&&t.current(e);});return t.current=e,n.current}var s=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=1),e>t?t:e<r?r:e},f=function(e){return "touches"in e},v=function(e){return e&&e.ownerDocument.defaultView||self},d=function(e,r,t){var n=e.getBoundingClientRect(),o=f(r)?function(e,r){for(var t=0;t<e.length;t++)if(e[t].identifier===r)return e[t];return e[0]}(r.touches,t):r;return {left:s((o.pageX-(n.left+v(e).pageXOffset))/n.width),top:s((o.pageY-(n.top+v(e).pageYOffset))/n.height)}},h=function(e){!f(e)&&e.preventDefault();},m=React__default.memo(function(o){var a=o.onMove,l=o.onKey,s=c(o,["onMove","onKey"]),m=useRef(null),g=i(a),p=i(l),b=useRef(null),_=useRef(!1),x=useMemo(function(){var e=function(e){h(e),(f(e)?e.touches.length>0:e.buttons>0)&&m.current?g(d(m.current,e,b.current)):t(!1);},r=function(){return t(!1)};function t(t){var n=_.current,o=v(m.current),a=t?o.addEventListener:o.removeEventListener;a(n?"touchmove":"mousemove",e),a(n?"touchend":"mouseup",r);}return [function(e){var r=e.nativeEvent,n=m.current;if(n&&(h(r),!function(e,r){return r&&!f(e)}(r,_.current)&&n)){if(f(r)){_.current=!0;var o=r.changedTouches||[];o.length&&(b.current=o[0].identifier);}n.focus(),g(d(n,r,b.current)),t(!0);}},function(e){var r=e.which||e.keyCode;r<37||r>40||(e.preventDefault(),p({left:39===r?.05:37===r?-.05:0,top:40===r?.05:38===r?-.05:0}));},t]},[p,g]),C=x[0],E=x[1],H=x[2];return useEffect(function(){return H},[H]),React__default.createElement("div",u({},s,{onTouchStart:C,onMouseDown:C,className:"react-colorful__interactive",ref:m,onKeyDown:E,tabIndex:0,role:"slider"}))}),g=function(e){return e.filter(Boolean).join(" ")},p=function(r){var t=r.color,n=r.left,o=r.top,a=void 0===o?.5:o,l=g(["react-colorful__pointer",r.className]);return React__default.createElement("div",{className:l,style:{top:100*a+"%",left:100*n+"%"}},React__default.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},b=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=Math.pow(10,r)),Math.round(t*e)/t},x=function(e){return L(C(e))},C=function(e){return "#"===e[0]&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?b(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:8===e.length?b(parseInt(e.substring(6,8),16)/255,2):1}},w=function(e){return K(I(e))},y=function(e){var r=e.s,t=e.v,n=e.a,o=(200-r)*t/100;return {h:b(e.h),s:b(o>0&&o<200?r*t/100/(o<=100?o:200-o)*100:0),l:b(o/2),a:b(n,2)}},q=function(e){var r=y(e);return "hsl("+r.h+", "+r.s+"%, "+r.l+"%)"},I=function(e){var r=e.h,t=e.s,n=e.v,o=e.a;r=r/360*6,t/=100,n/=100;var a=Math.floor(r),l=n*(1-t),u=n*(1-(r-a)*t),c=n*(1-(1-r+a)*t),i=a%6;return {r:b(255*[n,u,l,l,c,n][i]),g:b(255*[c,n,n,u,l,l][i]),b:b(255*[l,l,c,n,n,u][i]),a:b(o,2)}},D=function(e){var r=e.toString(16);return r.length<2?"0"+r:r},K=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=o<1?D(b(255*o)):"";return "#"+D(r)+D(t)+D(n)+a},L=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=Math.max(r,t,n),l=a-Math.min(r,t,n),u=l?a===r?(t-n)/l:a===t?2+(n-r)/l:4+(r-t)/l:0;return {h:b(60*(u<0?u+6:u)),s:b(a?l/a*100:0),v:b(a/255*100),a:o}},S=React__default.memo(function(r){var t=r.hue,n=r.onChange,o=g(["react-colorful__hue",r.className]);return React__default.createElement("div",{className:o},React__default.createElement(m,{onMove:function(e){n({h:360*e.left});},onKey:function(e){n({h:s(t+360*e.left,0,360)});},"aria-label":"Hue","aria-valuenow":b(t),"aria-valuemax":"360","aria-valuemin":"0"},React__default.createElement(p,{className:"react-colorful__hue-pointer",left:t/360,color:q({h:t,s:100,v:100,a:1})})))}),T=React__default.memo(function(r){var t=r.hsva,n=r.onChange,o={backgroundColor:q({h:t.h,s:100,v:100,a:1})};return React__default.createElement("div",{className:"react-colorful__saturation",style:o},React__default.createElement(m,{onMove:function(e){n({s:100*e.left,v:100-100*e.top});},onKey:function(e){n({s:s(t.s+100*e.left,0,100),v:s(t.v-100*e.top,0,100)});},"aria-label":"Color","aria-valuetext":"Saturation "+b(t.s)+"%, Brightness "+b(t.v)+"%"},React__default.createElement(p,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:q(t)})))}),F=function(e,r){if(e===r)return !0;for(var t in e)if(e[t]!==r[t])return !1;return !0},X=function(e,r){return e.toLowerCase()===r.toLowerCase()||F(C(e),C(r))};function Y(e,t,l){var u=i(l),c=useState(function(){return e.toHsva(t)}),s=c[0],f=c[1],v=useRef({color:t,hsva:s});useEffect(function(){if(!e.equal(t,v.current.color)){var r=e.toHsva(t);v.current={hsva:r,color:t},f(r);}},[t,e]),useEffect(function(){var r;F(s,v.current.hsva)||e.equal(r=e.fromHsva(s),v.current.color)||(v.current={hsva:s,color:r},u(r));},[s,e,u]);var d=useCallback(function(e){f(function(r){return Object.assign({},r,e)});},[]);return [s,d]}var V="undefined"!=typeof window?useLayoutEffect:useEffect,$=function(){return ("undefined"!=typeof __webpack_nonce__?__webpack_nonce__:void 0)},J=new Map,Q=function(e){V(function(){var r=e.current?e.current.ownerDocument:document;if(void 0!==r&&!J.has(r)){var t=r.createElement("style");t.innerHTML='.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}',J.set(r,t);var n=$();n&&t.setAttribute("nonce",n),r.head.appendChild(t);}},[]);},U=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=c(t,["className","colorModel","color","onChange"]),f=useRef(null);Q(f);var v=Y(o,l,i),d=v[0],h=v[1],m=g(["react-colorful",n]);return React__default.createElement("div",u({},s,{ref:f,className:m}),React__default.createElement(T,{hsva:d,onChange:h}),React__default.createElement(S,{hue:d.h,onChange:h,className:"react-colorful__last-control"}))},W={defaultColor:"000",toHsva:x,fromHsva:function(e){return w({h:e.h,s:e.s,v:e.v,a:1})},equal:X},Z=function(r){return React__default.createElement(U,u({},r,{colorModel:W}))},qe=/^#?([0-9A-F]{3,8})$/i,ke=function(r){var t=r.color,l=void 0===t?"":t,s=r.onChange,f=r.onBlur,v=r.escape,d=r.validate,h=r.format,m=r.process,g=c(r,["color","onChange","onBlur","escape","validate","format","process"]),p=useState(function(){return v(l)}),b=p[0],_=p[1],x=i(s),C=i(f),E=useCallback(function(e){var r=v(e.target.value);_(r),d(r)&&x(m?m(r):r);},[v,m,d,x]),H=useCallback(function(e){d(e.target.value)||_(v(l)),C(e);},[l,v,d,C]);return useEffect(function(){_(v(l));},[l,v]),React__default.createElement("input",u({},g,{value:h?h(b):b,spellCheck:"false",onChange:E,onBlur:H}))},Ie=function(e){return "#"+e},Oe=function(r){var t=r.prefixed,n=r.alpha,o=c(r,["prefixed","alpha"]),l=useCallback(function(e){return e.replace(/([^0-9A-F]+)/gi,"").substring(0,n?8:6)},[n]),i=useCallback(function(e){return function(e,r){var t=qe.exec(e),n=t?t[1].length:0;return 3===n||6===n||!!r&&4===n||!!r&&8===n}(e,n)},[n]);return React__default.createElement(ke,u({},o,{escape:l,format:t?Ie:void 0,process:Ie,validate:i}))};
4
+
5
+ export { Oe as O, Z };
6
+ //# sourceMappingURL=index-bfd2e7c4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-bfd2e7c4.js","sources":["../../../../../node_modules/react-colorful/src/hooks/useEventCallback.ts","../../../../../node_modules/react-colorful/src/utils/clamp.ts","../../../../../node_modules/react-colorful/src/components/common/Interactive.tsx","../../../../../node_modules/react-colorful/src/utils/format.ts","../../../../../node_modules/react-colorful/src/components/common/Pointer.tsx","../../../../../node_modules/react-colorful/src/utils/round.ts","../../../../../node_modules/react-colorful/src/utils/convert.ts","../../../../../node_modules/react-colorful/src/components/common/Hue.tsx","../../../../../node_modules/react-colorful/src/components/common/Saturation.tsx","../../../../../node_modules/react-colorful/src/utils/compare.ts","../../../../../node_modules/react-colorful/src/hooks/useColorManipulation.ts","../../../../../node_modules/react-colorful/src/hooks/useIsomorphicLayoutEffect.ts","../../../../../node_modules/react-colorful/src/utils/nonce.ts","../../../../../node_modules/react-colorful/src/hooks/useStyleSheet.ts","../../../../../node_modules/react-colorful/src/components/common/ColorPicker.tsx","../../../../../node_modules/react-colorful/src/components/HexColorPicker.tsx","../../../../../node_modules/react-colorful/src/components/common/Alpha.tsx","../../../../../node_modules/react-colorful/src/utils/validate.ts","../../../../../node_modules/react-colorful/src/components/common/ColorInput.tsx","../../../../../node_modules/react-colorful/src/components/HexColorInput.tsx"],"sourcesContent":["import { useRef } from \"react\";\n\n// Saves incoming handler to the ref in order to avoid \"useCallback hell\"\nexport function useEventCallback<T>(handler?: (value: T) => void): (value: T) => void {\n const callbackRef = useRef(handler);\n const fn = useRef((value: T) => {\n callbackRef.current && callbackRef.current(value);\n });\n callbackRef.current = handler;\n\n return fn.current;\n}\n","// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport const clamp = (number: number, min = 0, max = 1): number => {\n return number > max ? max : number < min ? min : number;\n};\n","import React, { useRef, useMemo, useEffect } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { clamp } from \"../../utils/clamp\";\n\nexport interface Interaction {\n left: number;\n top: number;\n}\n\n// Check if an event was triggered by touch\nconst isTouch = (event: MouseEvent | TouchEvent): event is TouchEvent => \"touches\" in event;\n\n// Finds a proper touch point by its identifier\nconst getTouchPoint = (touches: TouchList, touchId: null | number): Touch => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === touchId) return touches[i];\n }\n return touches[0];\n};\n\n// Finds the proper window object to fix iframe embedding issues\nconst getParentWindow = (node?: HTMLDivElement | null): Window => {\n return (node && node.ownerDocument.defaultView) || self;\n};\n\n// Returns a relative position of the pointer inside the node's bounding box\nconst getRelativePosition = (\n node: HTMLDivElement,\n event: MouseEvent | TouchEvent,\n touchId: null | number\n): Interaction => {\n const rect = node.getBoundingClientRect();\n\n // Get user's pointer position from `touches` array if it's a `TouchEvent`\n const pointer = isTouch(event) ? getTouchPoint(event.touches, touchId) : (event as MouseEvent);\n\n return {\n left: clamp((pointer.pageX - (rect.left + getParentWindow(node).pageXOffset)) / rect.width),\n top: clamp((pointer.pageY - (rect.top + getParentWindow(node).pageYOffset)) / rect.height),\n };\n};\n\n// Browsers introduced an intervention, making touch events passive by default.\n// This workaround removes `preventDefault` call from the touch handlers.\n// https://github.com/facebook/react/issues/19651\nconst preventDefaultMove = (event: MouseEvent | TouchEvent): void => {\n !isTouch(event) && event.preventDefault();\n};\n\n// Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n// If we detected a touch interaction before, we prefer reacting to touch events only.\nconst isInvalid = (event: MouseEvent | TouchEvent, hasTouch: boolean): boolean => {\n return hasTouch && !isTouch(event);\n};\n\ninterface Props {\n onMove: (interaction: Interaction) => void;\n onKey: (offset: Interaction) => void;\n children: React.ReactNode;\n}\n\nconst InteractiveBase = ({ onMove, onKey, ...rest }: Props) => {\n const container = useRef<HTMLDivElement>(null);\n const onMoveCallback = useEventCallback<Interaction>(onMove);\n const onKeyCallback = useEventCallback<Interaction>(onKey);\n const touchId = useRef<null | number>(null);\n const hasTouch = useRef(false);\n\n const [handleMoveStart, handleKeyDown, toggleDocumentEvents] = useMemo(() => {\n const handleMoveStart = ({ nativeEvent }: React.MouseEvent | React.TouchEvent) => {\n const el = container.current;\n if (!el) return;\n\n // Prevent text selection\n preventDefaultMove(nativeEvent);\n\n if (isInvalid(nativeEvent, hasTouch.current) || !el) return;\n\n if (isTouch(nativeEvent)) {\n hasTouch.current = true;\n const changedTouches = nativeEvent.changedTouches || [];\n if (changedTouches.length) touchId.current = changedTouches[0].identifier;\n }\n\n el.focus();\n onMoveCallback(getRelativePosition(el, nativeEvent, touchId.current));\n toggleDocumentEvents(true);\n };\n\n const handleMove = (event: MouseEvent | TouchEvent) => {\n // Prevent text selection\n preventDefaultMove(event);\n\n // If user moves the pointer outside of the window or iframe bounds and release it there,\n // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\n // after the user has moved the mouse/finger back to the document, we check `event.buttons`\n // and `event.touches`. It allows us to detect that the user is just moving his pointer\n // without pressing it down\n const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n\n if (isDown && container.current) {\n onMoveCallback(getRelativePosition(container.current, event, touchId.current));\n } else {\n toggleDocumentEvents(false);\n }\n };\n\n const handleMoveEnd = () => toggleDocumentEvents(false);\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n\n // Ignore all keys except arrow ones\n if (keyCode < 37 || keyCode > 40) return;\n // Do not scroll page by arrow keys when document is focused on the element\n event.preventDefault();\n // Send relative offset to the parent component.\n // We use codes (37←, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\n // to reduce the size of the library\n onKeyCallback({\n left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\n top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\n });\n };\n\n function toggleDocumentEvents(state?: boolean) {\n const touch = hasTouch.current;\n const el = container.current;\n const parentWindow = getParentWindow(el);\n\n // Add or remove additional pointer event listeners\n const toggleEvent = state ? parentWindow.addEventListener : parentWindow.removeEventListener;\n toggleEvent(touch ? \"touchmove\" : \"mousemove\", handleMove);\n toggleEvent(touch ? \"touchend\" : \"mouseup\", handleMoveEnd);\n }\n\n return [handleMoveStart, handleKeyDown, toggleDocumentEvents];\n }, [onKeyCallback, onMoveCallback]);\n\n // Remove window event listeners before unmounting\n useEffect(() => toggleDocumentEvents, [toggleDocumentEvents]);\n\n return (\n <div\n {...rest}\n onTouchStart={handleMoveStart}\n onMouseDown={handleMoveStart}\n className=\"react-colorful__interactive\"\n ref={container}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n role=\"slider\"\n />\n );\n};\n\nexport const Interactive = React.memo(InteractiveBase);\n","export const formatClassName = (names: unknown[]): string => names.filter(Boolean).join(\" \");\n","import React from \"react\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props {\n className?: string;\n top?: number;\n left: number;\n color: string;\n}\n\nexport const Pointer = ({ className, color, left, top = 0.5 }: Props): JSX.Element => {\n const nodeClassName = formatClassName([\"react-colorful__pointer\", className]);\n\n const style = {\n top: `${top * 100}%`,\n left: `${left * 100}%`,\n };\n\n return (\n <div className={nodeClassName} style={style}>\n <div className=\"react-colorful__pointer-fill\" style={{ backgroundColor: color }} />\n </div>\n );\n};\n","export const round = (number: number, digits = 0, base = Math.pow(10, digits)): number => {\n return Math.round(base * number) / base;\n};\n","import { round } from \"./round\";\nimport { RgbaColor, RgbColor, HslaColor, HslColor, HsvaColor, HsvColor } from \"../types\";\n\n/**\n * Valid CSS <angle> units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits: Record<string, number> = {\n grad: 360 / 400,\n turn: 360,\n rad: 360 / (Math.PI * 2),\n};\n\nexport const hexToHsva = (hex: string): HsvaColor => rgbaToHsva(hexToRgba(hex));\n\nexport const hexToRgba = (hex: string): RgbaColor => {\n if (hex[0] === \"#\") hex = hex.substring(1);\n\n if (hex.length < 6) {\n return {\n r: parseInt(hex[0] + hex[0], 16),\n g: parseInt(hex[1] + hex[1], 16),\n b: parseInt(hex[2] + hex[2], 16),\n a: hex.length === 4 ? round(parseInt(hex[3] + hex[3], 16) / 255, 2) : 1,\n };\n }\n\n return {\n r: parseInt(hex.substring(0, 2), 16),\n g: parseInt(hex.substring(2, 4), 16),\n b: parseInt(hex.substring(4, 6), 16),\n a: hex.length === 8 ? round(parseInt(hex.substring(6, 8), 16) / 255, 2) : 1,\n };\n};\n\nexport const parseHue = (value: string, unit = \"deg\"): number => {\n return Number(value) * (angleUnits[unit] || 1);\n};\n\nexport const hslaStringToHsva = (hslString: string): HsvaColor => {\n const matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hslString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hslStringToHsva = hslaStringToHsva;\n\nexport const hslaToHsva = ({ h, s, l, a }: HslaColor): HsvaColor => {\n s *= (l < 50 ? l : 100 - l) / 100;\n\n return {\n h: h,\n s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0,\n v: l + s,\n a,\n };\n};\n\nexport const hsvaToHex = (hsva: HsvaColor): string => rgbaToHex(hsvaToRgba(hsva));\n\nexport const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => {\n const hh = ((200 - s) * v) / 100;\n\n return {\n h: round(h),\n s: round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n l: round(hh / 2),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToHslString = (hsva: HsvaColor): string => {\n const { h, s, l } = hsvaToHsla(hsva);\n return `hsl(${h}, ${s}%, ${l}%)`;\n};\n\nexport const hsvaToHsvString = (hsva: HsvaColor): string => {\n const { h, s, v } = roundHsva(hsva);\n return `hsv(${h}, ${s}%, ${v}%)`;\n};\n\nexport const hsvaToHsvaString = (hsva: HsvaColor): string => {\n const { h, s, v, a } = roundHsva(hsva);\n return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n};\n\nexport const hsvaToHslaString = (hsva: HsvaColor): string => {\n const { h, s, l, a } = hsvaToHsla(hsva);\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\n\nexport const hsvaToRgba = ({ h, s, v, a }: HsvaColor): RgbaColor => {\n h = (h / 360) * 6;\n s = s / 100;\n v = v / 100;\n\n const hh = Math.floor(h),\n b = v * (1 - s),\n c = v * (1 - (h - hh) * s),\n d = v * (1 - (1 - h + hh) * s),\n module = hh % 6;\n\n return {\n r: round([v, c, b, b, d, v][module] * 255),\n g: round([d, v, v, c, b, b][module] * 255),\n b: round([b, b, d, v, v, c][module] * 255),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToRgbString = (hsva: HsvaColor): string => {\n const { r, g, b } = hsvaToRgba(hsva);\n return `rgb(${r}, ${g}, ${b})`;\n};\n\nexport const hsvaToRgbaString = (hsva: HsvaColor): string => {\n const { r, g, b, a } = hsvaToRgba(hsva);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const hsvaStringToHsva = (hsvString: string): HsvaColor => {\n const matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hsvString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return roundHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n v: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hsvStringToHsva = hsvaStringToHsva;\n\nexport const rgbaStringToHsva = (rgbaString: string): HsvaColor => {\n const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(rgbaString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n });\n};\n\nexport const rgbStringToHsva = rgbaStringToHsva;\n\nconst format = (number: number) => {\n const hex = number.toString(16);\n return hex.length < 2 ? \"0\" + hex : hex;\n};\n\nexport const rgbaToHex = ({ r, g, b, a }: RgbaColor): string => {\n const alphaHex = a < 1 ? format(round(a * 255)) : \"\";\n return \"#\" + format(r) + format(g) + format(b) + alphaHex;\n};\n\nexport const rgbaToHsva = ({ r, g, b, a }: RgbaColor): HsvaColor => {\n const max = Math.max(r, g, b);\n const delta = max - Math.min(r, g, b);\n\n // prettier-ignore\n const hh = delta\n ? max === r\n ? (g - b) / delta\n : max === g\n ? 2 + (b - r) / delta\n : 4 + (r - g) / delta\n : 0;\n\n return {\n h: round(60 * (hh < 0 ? hh + 6 : hh)),\n s: round(max ? (delta / max) * 100 : 0),\n v: round((max / 255) * 100),\n a,\n };\n};\n\nexport const roundHsva = (hsva: HsvaColor): HsvaColor => ({\n h: round(hsva.h),\n s: round(hsva.s),\n v: round(hsva.v),\n a: round(hsva.a, 2),\n});\n\nexport const rgbaToRgb = ({ r, g, b }: RgbaColor): RgbColor => ({ r, g, b });\n\nexport const hslaToHsl = ({ h, s, l }: HslaColor): HslColor => ({ h, s, l });\n\nexport const hsvaToHsv = (hsva: HsvaColor): HsvColor => {\n const { h, s, v } = roundHsva(hsva);\n return { h, s, v };\n};\n","import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n className?: string;\n hue: number;\n onChange: (newHue: { h: number }) => void;\n}\n\nconst HueBase = ({ className, hue, onChange }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({ h: 360 * interaction.left });\n };\n\n const handleKey = (offset: Interaction) => {\n // Hue measured in degrees of the color circle ranging from 0 to 360\n onChange({\n h: clamp(hue + offset.left * 360, 0, 360),\n });\n };\n\n const nodeClassName = formatClassName([\"react-colorful__hue\", className]);\n\n return (\n <div className={nodeClassName}>\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n aria-label=\"Hue\"\n aria-valuenow={round(hue)}\n aria-valuemax=\"360\"\n aria-valuemin=\"0\"\n >\n <Pointer\n className=\"react-colorful__hue-pointer\"\n left={hue / 360}\n color={hsvaToHslString({ h: hue, s: 100, v: 100, a: 1 })}\n />\n </Interactive>\n </div>\n );\n};\n\nexport const Hue = React.memo(HueBase);\n","import React from \"react\";\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\nimport { HsvaColor } from \"../../types\";\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n hsva: HsvaColor;\n onChange: (newColor: { s: number; v: number }) => void;\n}\n\nconst SaturationBase = ({ hsva, onChange }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({\n s: interaction.left * 100,\n v: 100 - interaction.top * 100,\n });\n };\n\n const handleKey = (offset: Interaction) => {\n // Saturation and brightness always fit into [0, 100] range\n onChange({\n s: clamp(hsva.s + offset.left * 100, 0, 100),\n v: clamp(hsva.v - offset.top * 100, 0, 100),\n });\n };\n\n const containerStyle = {\n backgroundColor: hsvaToHslString({ h: hsva.h, s: 100, v: 100, a: 1 }),\n };\n\n return (\n <div className=\"react-colorful__saturation\" style={containerStyle}>\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n aria-label=\"Color\"\n aria-valuetext={`Saturation ${round(hsva.s)}%, Brightness ${round(hsva.v)}%`}\n >\n <Pointer\n className=\"react-colorful__saturation-pointer\"\n top={1 - hsva.v / 100}\n left={hsva.s / 100}\n color={hsvaToHslString(hsva)}\n />\n </Interactive>\n </div>\n );\n};\n\nexport const Saturation = React.memo(SaturationBase);\n","import { hexToRgba } from \"./convert\";\nimport { ObjectColor } from \"../types\";\n\nexport const equalColorObjects = (first: ObjectColor, second: ObjectColor): boolean => {\n if (first === second) return true;\n\n for (const prop in first) {\n // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n // we must cast our object to unknown (as RGB demands `r` be a key, while `Record<string, x>` does not care if\n // there is or not), and then as a type TS can iterate over.\n if (\n ((first as unknown) as Record<string, number>)[prop] !==\n ((second as unknown) as Record<string, number>)[prop]\n )\n return false;\n }\n\n return true;\n};\n\nexport const equalColorString = (first: string, second: string): boolean => {\n return first.replace(/\\s/g, \"\") === second.replace(/\\s/g, \"\");\n};\n\nexport const equalHex = (first: string, second: string): boolean => {\n if (first.toLowerCase() === second.toLowerCase()) return true;\n\n // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { ColorModel, AnyColor, HsvaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { useEventCallback } from \"./useEventCallback\";\n\nexport function useColorManipulation<T extends AnyColor>(\n colorModel: ColorModel<T>,\n color: T,\n onChange?: (color: T) => void\n): [HsvaColor, (color: Partial<HsvaColor>) => void] {\n // Save onChange callback in the ref for avoiding \"useCallback hell\"\n const onChangeCallback = useEventCallback<T>(onChange);\n\n // No matter which color model is used (HEX, RGB(A) or HSL(A)),\n // all internal calculations are based on HSVA model\n const [hsva, updateHsva] = useState<HsvaColor>(() => colorModel.toHsva(color));\n\n // By using this ref we're able to prevent extra updates\n // and the effects recursion during the color conversion\n const cache = useRef({ color, hsva });\n\n // Update local HSVA-value if `color` property value is changed,\n // but only if that's not the same color that we just sent to the parent\n useEffect(() => {\n if (!colorModel.equal(color, cache.current.color)) {\n const newHsva = colorModel.toHsva(color);\n cache.current = { hsva: newHsva, color };\n updateHsva(newHsva);\n }\n }, [color, colorModel]);\n\n // Trigger `onChange` callback only if an updated color is different from cached one;\n // save the new color to the ref to prevent unnecessary updates\n useEffect(() => {\n let newColor;\n if (\n !equalColorObjects(hsva, cache.current.hsva) &&\n !colorModel.equal((newColor = colorModel.fromHsva(hsva)), cache.current.color)\n ) {\n cache.current = { hsva, color: newColor };\n onChangeCallback(newColor);\n }\n }, [hsva, colorModel, onChangeCallback]);\n\n // Merge the current HSVA color object with updated params.\n // For example, when a child component sends `h` or `s` only\n const handleChange = useCallback((params: Partial<HsvaColor>) => {\n updateHsva((current) => Object.assign({}, current, params));\n }, []);\n\n return [hsva, handleChange];\n}\n","import { useLayoutEffect, useEffect } from \"react\";\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n","declare const __webpack_nonce__: string | undefined;\nlet nonce: string | undefined;\n\n/**\n * Returns a nonce hash included by Webpack or the one defined manually by developer.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce\n * https://webpack.js.org/guides/csp/\n */\nexport const getNonce = (): string | undefined => {\n if (nonce) return nonce;\n if (typeof __webpack_nonce__ !== \"undefined\") return __webpack_nonce__;\n return undefined;\n};\n\n/**\n * Signs the style tag with a base64-encoded string (nonce) to conforms to Content Security Policies.\n * This function has to be invoked before any picker is rendered if you aren't using Webpack for CSP.\n */\nexport const setNonce = (hash: string): void => {\n nonce = hash;\n};\n","import { RefObject } from \"react\";\n\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { getNonce } from \"../utils/nonce\";\n\n// Bundler is configured to load this as a processed minified CSS-string\nimport styles from \"../css/styles.css\";\n\nconst styleElementMap: Map<Document, HTMLStyleElement> = new Map();\n\n/**\n * Injects CSS code into the document's <head>\n */\nexport const useStyleSheet = (nodeRef: RefObject<HTMLDivElement>): void => {\n useIsomorphicLayoutEffect(() => {\n const parentDocument = nodeRef.current ? nodeRef.current.ownerDocument : document;\n\n if (typeof parentDocument !== \"undefined\" && !styleElementMap.has(parentDocument)) {\n const styleElement = parentDocument.createElement(\"style\");\n styleElement.innerHTML = styles;\n styleElementMap.set(parentDocument, styleElement);\n\n // Conform to CSP rules by setting `nonce` attribute to the inline styles\n const nonce = getNonce();\n if (nonce) styleElement.setAttribute(\"nonce\", nonce);\n\n parentDocument.head.appendChild(styleElement);\n }\n }, []);\n};\n","import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n colorModel: ColorModel<T>;\n}\n\nexport const ColorPicker = <T extends AnyColor>({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n ...rest\n}: Props<T>): JSX.Element => {\n const nodeRef = useRef<HTMLDivElement>(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva] = useColorManipulation<T>(colorModel, color, onChange);\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n <div {...rest} ref={nodeRef} className={nodeClassName}>\n <Saturation hsva={hsva} onChange={updateHsva} />\n <Hue hue={hsva.h} onChange={updateHsva} className=\"react-colorful__last-control\" />\n </div>\n );\n};\n","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalHex } from \"../utils/compare\";\nimport { hexToHsva, hsvaToHex } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"000\",\n toHsva: hexToHsva,\n fromHsva: ({ h, s, v }) => hsvaToHex({ h, s, v, a: 1 }),\n equal: equalHex,\n};\n\nexport const HexColorPicker = (props: Partial<ColorPickerBaseProps<string>>): JSX.Element => (\n <ColorPicker {...props} colorModel={colorModel} />\n);\n","import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslaString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\nimport { HsvaColor } from \"../../types\";\n\ninterface Props {\n className?: string;\n hsva: HsvaColor;\n onChange: (newAlpha: { a: number }) => void;\n}\n\nexport const Alpha = ({ className, hsva, onChange }: Props): JSX.Element => {\n const handleMove = (interaction: Interaction) => {\n onChange({ a: interaction.left });\n };\n\n const handleKey = (offset: Interaction) => {\n // Alpha always fit into [0, 1] range\n onChange({ a: clamp(hsva.a + offset.left) });\n };\n\n // We use `Object.assign` instead of the spread operator\n // to prevent adding the polyfill (about 150 bytes gzipped)\n const colorFrom = hsvaToHslaString(Object.assign({}, hsva, { a: 0 }));\n const colorTo = hsvaToHslaString(Object.assign({}, hsva, { a: 1 }));\n\n const gradientStyle = {\n backgroundImage: `linear-gradient(90deg, ${colorFrom}, ${colorTo})`,\n };\n\n const nodeClassName = formatClassName([\"react-colorful__alpha\", className]);\n const ariaValue = round(hsva.a * 100);\n\n return (\n <div className={nodeClassName}>\n <div className=\"react-colorful__alpha-gradient\" style={gradientStyle} />\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n aria-label=\"Alpha\"\n aria-valuetext={`${ariaValue}%`}\n aria-valuenow={ariaValue}\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <Pointer\n className=\"react-colorful__alpha-pointer\"\n left={hsva.a}\n color={hsvaToHslaString(hsva)}\n />\n </Interactive>\n </div>\n );\n};\n","const matcher = /^#?([0-9A-F]{3,8})$/i;\n\nexport const validHex = (value: string, alpha?: boolean): boolean => {\n const match = matcher.exec(value);\n const length = match ? match[1].length : 0;\n\n return (\n length === 3 || // '#rgb' format\n length === 6 || // '#rrggbb' format\n (!!alpha && length === 4) || // '#rgba' format\n (!!alpha && length === 8) // '#rrggbbaa' format\n );\n};\n","import React, { useState, useEffect, useCallback } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { ColorInputBaseProps } from \"../../types\";\n\ninterface Props extends ColorInputBaseProps {\n /** Blocks typing invalid characters and limits string length */\n escape: (value: string) => string;\n /** Checks that value is valid color string */\n validate: (value: string) => boolean;\n /** Processes value before displaying it in the input */\n format?: (value: string) => string;\n /** Processes value before sending it in `onChange` */\n process?: (value: string) => string;\n}\n\nexport const ColorInput = (props: Props): JSX.Element => {\n const { color = \"\", onChange, onBlur, escape, validate, format, process, ...rest } = props;\n const [value, setValue] = useState(() => escape(color));\n const onChangeCallback = useEventCallback<string>(onChange);\n const onBlurCallback = useEventCallback<React.FocusEvent<HTMLInputElement>>(onBlur);\n\n // Trigger `onChange` handler only if the input value is a valid color\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = escape(e.target.value);\n setValue(inputValue);\n if (validate(inputValue)) onChangeCallback(process ? process(inputValue) : inputValue);\n },\n [escape, process, validate, onChangeCallback]\n );\n\n // Take the color from props if the last typed color (in local state) is not valid\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n if (!validate(e.target.value)) setValue(escape(color));\n onBlurCallback(e);\n },\n [color, escape, validate, onBlurCallback]\n );\n\n // Update the local state when `color` property value is changed\n useEffect(() => {\n setValue(escape(color));\n }, [color, escape]);\n\n return (\n <input\n {...rest}\n value={format ? format(value) : value}\n spellCheck=\"false\" // the element should not be checked for spelling errors\n onChange={handleChange}\n onBlur={handleBlur}\n />\n );\n};\n","import React, { useCallback } from \"react\";\nimport { ColorInputBaseProps } from \"../types\";\n\nimport { validHex } from \"../utils/validate\";\nimport { ColorInput } from \"./common/ColorInput\";\n\ninterface HexColorInputProps extends ColorInputBaseProps {\n /** Enables `#` prefix displaying */\n prefixed?: boolean;\n /** Allows `#rgba` and `#rrggbbaa` color formats */\n alpha?: boolean;\n}\n\n/** Adds \"#\" symbol to the beginning of the string */\nconst prefix = (value: string) => \"#\" + value;\n\nexport const HexColorInput = (props: HexColorInputProps): JSX.Element => {\n const { prefixed, alpha, ...rest } = props;\n\n /** Escapes all non-hexadecimal characters including \"#\" */\n const escape = useCallback(\n (value: string) => value.replace(/([^0-9A-F]+)/gi, \"\").substring(0, alpha ? 8 : 6),\n [alpha]\n );\n\n /** Validates hexadecimal strings */\n const validate = useCallback((value: string) => validHex(value, alpha), [alpha]);\n\n return (\n <ColorInput\n {...rest}\n escape={escape}\n format={prefixed ? prefix : undefined}\n process={prefix}\n validate={validate}\n />\n );\n};\n"],"names":["useEventCallback","handler","callbackRef","useRef","fn","value","current","clamp","number","min","max","isTouch","event","getParentWindow","node","ownerDocument","defaultView","self","getRelativePosition","touchId","rect","getBoundingClientRect","pointer","touches","i","length","identifier","getTouchPoint","left","pageX","pageXOffset","width","top","pageY","pageYOffset","height","preventDefaultMove","preventDefault","Interactive","React","memo","onMove","onKey","rest","container","onMoveCallback","onKeyCallback","hasTouch","useMemo","handleMove","buttons","toggleDocumentEvents","handleMoveEnd","state","touch","parentWindow","toggleEvent","addEventListener","removeEventListener","nativeEvent","el","isInvalid","changedTouches","focus","keyCode","which","handleMoveStart","handleKeyDown","useEffect","onTouchStart","onMouseDown","className","ref","onKeyDown","tabIndex","role","formatClassName","names","filter","Boolean","join","Pointer","color","nodeClassName","style","backgroundColor","round","digits","base","Math","pow","angleUnits","hexToHsva","hex","rgbaToHsva","hexToRgba","substring","r","parseInt","g","b","a","parseHue","hsvaToHex","hsva","rgbaToHex","hsvaToRgba","hsvaToHsla","s","v","hh","h","l","hsvaToHslString","hsvaToHslaString","floor","c","d","module","format","toString","alphaHex","delta","Hue","hue","onChange","interaction","offset","aria-label","aria-valuenow","aria-valuemax","aria-valuemin","Saturation","containerStyle","aria-valuetext","equalColorObjects","first","second","prop","equalColorString","equalHex","toLowerCase","useColorManipulation","colorModel","onChangeCallback","useState","toHsva","updateHsva","cache","equal","newHsva","newColor","fromHsva","handleChange","useCallback","params","Object","assign","useIsomorphicLayoutEffect","window","useLayoutEffect","getNonce","nonce","__webpack_nonce__","styleElementMap","Map","useStyleSheet","nodeRef","parentDocument","document","has","styleElement","createElement","innerHTML","set","setAttribute","head","appendChild","ColorPicker","defaultColor","HexColorPicker","props","Alpha","matcher","ColorInput","onBlur","escape","validate","process","setValue","onBlurCallback","e","inputValue","target","handleBlur","spellCheck","prefix","HexColorInput","prefixed","alpha","replace","match","exec","validHex","undefined"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]}
@@ -0,0 +1,29 @@
1
+ function styleInject(css, ref) {
2
+ if ( ref === void 0 ) ref = {};
3
+ var insertAt = ref.insertAt;
4
+
5
+ if (!css || typeof document === 'undefined') { return; }
6
+
7
+ var head = document.head || document.getElementsByTagName('head')[0];
8
+ var style = document.createElement('style');
9
+ style.type = 'text/css';
10
+
11
+ if (insertAt === 'top') {
12
+ if (head.firstChild) {
13
+ head.insertBefore(style, head.firstChild);
14
+ } else {
15
+ head.appendChild(style);
16
+ }
17
+ } else {
18
+ head.appendChild(style);
19
+ }
20
+
21
+ if (style.styleSheet) {
22
+ style.styleSheet.cssText = css;
23
+ } else {
24
+ style.appendChild(document.createTextNode(css));
25
+ }
26
+ }
27
+
28
+ export { styleInject as s };
29
+ //# sourceMappingURL=style-inject.es-746bb8ed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style-inject.es-746bb8ed.js","sources":["../../../../../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;","x_google_ignoreList":[0]}
@@ -0,0 +1,45 @@
1
+ function throttle(func, wait, { leading = true, trailing = true } = {}) {
2
+ let lastCallTime = 0;
3
+ let timeout = null;
4
+ let lastArgs = null;
5
+ const invokeFunc = (time) => {
6
+ func(...lastArgs);
7
+ lastCallTime = time;
8
+ lastArgs = null;
9
+ };
10
+ const throttled = (...args) => {
11
+ const now = Date.now();
12
+ if (!lastCallTime && !leading) {
13
+ lastCallTime = now;
14
+ }
15
+ const remainingTime = wait - (now - lastCallTime);
16
+ lastArgs = args;
17
+ if (remainingTime <= 0 || remainingTime > wait) {
18
+ if (timeout) {
19
+ clearTimeout(timeout);
20
+ timeout = null;
21
+ }
22
+ invokeFunc(now);
23
+ }
24
+ else if (!timeout && trailing) {
25
+ timeout = setTimeout(() => {
26
+ timeout = null;
27
+ if (trailing && lastArgs) {
28
+ invokeFunc(Date.now());
29
+ }
30
+ }, remainingTime);
31
+ }
32
+ };
33
+ throttled.cancel = () => {
34
+ if (timeout) {
35
+ clearTimeout(timeout);
36
+ timeout = null;
37
+ }
38
+ lastArgs = null;
39
+ lastCallTime = 0;
40
+ };
41
+ return throttled;
42
+ }
43
+
44
+ export { throttle as t };
45
+ //# sourceMappingURL=throttle-278836f4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throttle-278836f4.js","sources":["../../src/utils/throttle.ts"],"sourcesContent":["export type ThrottleOptions = {\n leading?: boolean;\n trailing?: boolean;\n};\n\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n { leading = true, trailing = true }: ThrottleOptions = {},\n): T & { cancel: () => void } {\n let lastCallTime = 0;\n let timeout: NodeJS.Timeout | null = null;\n let lastArgs: Parameters<T> | null = null;\n\n const invokeFunc = (time: number) => {\n func(...(lastArgs as Parameters<T>));\n lastCallTime = time;\n lastArgs = null;\n };\n\n const throttled = (...args: Parameters<T>) => {\n const now = Date.now();\n\n if (!lastCallTime && !leading) {\n lastCallTime = now;\n }\n\n const remainingTime = wait - (now - lastCallTime);\n lastArgs = args;\n\n if (remainingTime <= 0 || remainingTime > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n invokeFunc(now);\n } else if (!timeout && trailing) {\n timeout = setTimeout(() => {\n timeout = null;\n if (trailing && lastArgs) {\n invokeFunc(Date.now());\n }\n }, remainingTime);\n }\n };\n\n throttled.cancel = () => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n lastArgs = null;\n lastCallTime = 0;\n };\n\n return throttled as T & { cancel: () => void };\n}\n"],"names":[],"mappings":"SAKgB,QAAQ,CACtB,IAAO,EACP,IAAY,EACZ,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAsB,EAAE,EAAA;IAEzD,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,OAAO,GAA0B,IAAI,CAAC;IAC1C,IAAI,QAAQ,GAAyB,IAAI,CAAC;AAE1C,IAAA,MAAM,UAAU,GAAG,CAAC,IAAY,KAAI;AAClC,QAAA,IAAI,CAAC,GAAI,QAA0B,CAAC,CAAC;QACrC,YAAY,GAAG,IAAI,CAAC;QACpB,QAAQ,GAAG,IAAI,CAAC;AAClB,KAAC,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAmB,KAAI;AAC3C,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE;YAC7B,YAAY,GAAG,GAAG,CAAC;AACpB,SAAA;QAED,MAAM,aAAa,GAAG,IAAI,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC;QAClD,QAAQ,GAAG,IAAI,CAAC;AAEhB,QAAA,IAAI,aAAa,IAAI,CAAC,IAAI,aAAa,GAAG,IAAI,EAAE;AAC9C,YAAA,IAAI,OAAO,EAAE;gBACX,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;AAChB,aAAA;YACD,UAAU,CAAC,GAAG,CAAC,CAAC;AACjB,SAAA;AAAM,aAAA,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE;AAC/B,YAAA,OAAO,GAAG,UAAU,CAAC,MAAK;gBACxB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,QAAQ,IAAI,QAAQ,EAAE;AACxB,oBAAA,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACxB,iBAAA;aACF,EAAE,aAAa,CAAC,CAAC;AACnB,SAAA;AACH,KAAC,CAAC;AAEF,IAAA,SAAS,CAAC,MAAM,GAAG,MAAK;AACtB,QAAA,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;AAChB,SAAA;QACD,QAAQ,GAAG,IAAI,CAAC;QAChB,YAAY,GAAG,CAAC,CAAC;AACnB,KAAC,CAAC;AAEF,IAAA,OAAO,SAAuC,CAAC;AACjD;;;;"}
@@ -1,4 +1,4 @@
1
- import{s as e}from"./chunks/style-inject.es-e87a8d02.js";import{jsxs as t,Fragment as o,jsx as n}from"react/jsx-runtime";import{useState as a,useRef as r,useEffect as s,createContext as l,useContext as i,useMemo as d,forwardRef as c,createElement as p}from"react";import{u as m,o as u,f as g,s as b,a as f}from"./chunks/floating-ui.react-727e4287.js";import{Z as h}from"./chunks/index-e0185864.js";import{Portal as x}from"./portal.js";import{Elements as y,useYooptaEditor as k}from"@yoopta/editor";import"react-dom";e('[data-element-options-root]{position:relative}[data-element-options-trigger]{align-items:center;background:transparent;border:none;border-radius:4px;cursor:pointer;display:inline-flex;justify-content:center;padding:4px;transition:background-color .15s ease,opacity .15s ease}[data-element-options-trigger]:hover{background-color:rgba(0,0,0,.05)}[data-element-options-trigger]:focus-visible{outline:2px solid rgba(59,130,246,.5);outline-offset:2px}.yoo-element-options-trigger-icon{color:#6b7280;height:16px;width:16px}[data-element-options-content]{background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);min-width:180px;padding:8px;z-index:50}[data-element-options-group]{display:flex;flex-direction:column;gap:6px}[data-element-options-group]+[data-element-options-group]{margin-top:8px}[data-element-options-label]{color:#6b7280;font-size:12px;font-weight:500}[data-element-options-separator]{background-color:#e5e7eb;height:1px;margin:8px 0}[data-element-options-select]{align-items:center;background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;cursor:pointer;display:flex;font-size:13px;justify-content:space-between;padding:6px 10px;transition:border-color .15s ease;width:100%}[data-element-options-select]:hover{border-color:#d1d5db}[data-element-options-select]:focus-visible{outline:2px solid rgba(59,130,246,.5);outline-offset:2px}[data-element-options-select-value]{align-items:center;display:flex;gap:8px}[data-element-options-select-chevron]{color:#9ca3af;height:14px;transition:transform .15s ease;width:14px}[data-element-options-select][data-state=open] [data-element-options-select-chevron]{transform:rotate(180deg)}[data-element-options-select-content]{background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);min-width:140px;padding:4px;z-index:51}[data-element-options-select-item]{align-items:center;background:transparent;border:none;border-radius:4px;cursor:pointer;display:flex;font-size:13px;justify-content:space-between;padding:6px 8px;text-align:left;transition:background-color .15s ease;width:100%}[data-element-options-select-item]:hover{background-color:#f3f4f6}[data-element-options-select-item][data-selected=true]{background-color:#eff6ff}[data-element-options-select-item-content]{align-items:center;display:flex;gap:8px}[data-element-options-select-check]{color:#3b82f6;height:14px;width:14px}[data-element-options-select-icon]{align-items:center;display:flex;height:16px;justify-content:center;width:16px}[data-element-options-select-color]{border:1px solid rgba(0,0,0,.1);border-radius:50%;display:inline-block;height:12px;width:12px}[data-element-options-color-picker]{align-items:center;background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;cursor:pointer;display:flex;font-size:13px;gap:8px;padding:6px 10px;transition:border-color .15s ease;width:100%}[data-element-options-color-picker]:hover{border-color:#d1d5db}[data-element-options-color-preview]{border:1px solid rgba(0,0,0,.1);border-radius:4px;display:inline-block;height:20px;width:20px}[data-element-options-color-value]{color:#6b7280;font-family:monospace;font-size:12px}[data-element-options-color-picker-content]{background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);padding:12px;z-index:51}[data-element-options-color-picker-content] .react-colorful{height:150px;width:180px}[data-element-options-color-presets]{border-top:1px solid #e5e7eb;display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px}[data-element-options-color-preset]{border:2px solid transparent;border-radius:4px;cursor:pointer;height:20px;padding:0;transition:border-color .15s ease,transform .15s ease;width:20px}[data-element-options-color-preset]:hover{transform:scale(1.1)}[data-element-options-color-preset][data-selected=true]{border-color:#3b82f6}[data-element-options-toggle]{align-items:center;background:transparent;border:none;cursor:pointer;display:inline-flex;gap:8px;padding:0}[data-element-options-toggle-thumb]{background-color:#e5e7eb;border-radius:10px;height:20px;position:relative;transition:background-color .2s ease;width:36px}[data-element-options-toggle-thumb]:after{background-color:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.1);content:"";height:16px;left:2px;position:absolute;top:2px;transition:transform .2s ease;width:16px}[data-element-options-toggle][data-state=checked] [data-element-options-toggle-thumb]{background-color:#3b82f6}[data-element-options-toggle][data-state=checked] [data-element-options-toggle-thumb]:after{transform:translateX(16px)}[data-element-options-toggle-label]{color:#374151;font-size:13px}[data-element-options-slider]{align-items:center;display:flex;gap:10px}[data-element-options-slider-input]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,#3b82f6 0,#3b82f6 var(--slider-percentage,0),#e5e7eb var(--slider-percentage,0),#e5e7eb 100%);border-radius:2px;cursor:pointer;flex:1;height:4px}[data-element-options-slider-input]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#fff;border:2px solid #3b82f6;border-radius:50%;cursor:pointer;height:14px;-webkit-transition:transform .15s ease;transition:transform .15s ease;width:14px}[data-element-options-slider-input]::-webkit-slider-thumb:hover{transform:scale(1.1)}[data-element-options-slider-value]{color:#6b7280;font-family:monospace;font-size:12px;min-width:32px;text-align:right}[data-element-options-input]{background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;padding:6px 10px;transition:border-color .15s ease;width:100%}[data-element-options-input]:hover{border-color:#d1d5db}[data-element-options-input]:focus{border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,.1);outline:none}[data-element-options-input]::-moz-placeholder{color:#9ca3af}[data-element-options-input]::placeholder{color:#9ca3af}@media (prefers-color-scheme:dark){[data-element-options-color-picker-content],[data-element-options-content],[data-element-options-select-content]{background-color:#1f2937;border-color:#374151}[data-element-options-label]{color:#9ca3af}[data-element-options-separator]{background-color:#374151}[data-element-options-color-picker],[data-element-options-input],[data-element-options-select]{background-color:#1f2937;border-color:#374151;color:#f3f4f6}[data-element-options-color-picker]:hover,[data-element-options-input]:hover,[data-element-options-select]:hover{border-color:#4b5563}[data-element-options-select-item]:hover{background-color:#374151}[data-element-options-select-item][data-selected=true]{background-color:rgba(59,130,246,.2)}[data-element-options-color-presets]{border-top-color:#374151}[data-element-options-toggle-thumb]{background-color:#374151}[data-element-options-toggle-label]{color:#d1d5db}[data-element-options-slider-input]{background:linear-gradient(to right,#3b82f6 0,#3b82f6 var(--slider-percentage,0),#374151 var(--slider-percentage,0),#374151 100%)}.yoo-element-options-trigger-icon{color:#9ca3af}[data-element-options-trigger]:hover{background-color:hsla(0,0%,100%,.1)}}');const v=["#000000","#6B7280","#EF4444","#F59E0B","#22C55E","#3B82F6","#8B5CF6","#EC4899"],w=({value:e,onChange:l,presetColors:i=v,className:d,style:c})=>{const[p,y]=a(!1),k=r(null),{refs:w,floatingStyles:O}=m({open:p,placement:"bottom-start",middleware:[u(4),g({padding:8}),b({padding:8})],whileElementsMounted:f});s(()=>{k.current&&w.setReference(k.current)},[w]),s(()=>{if(!p)return;const e=e=>{const t=e.target;k.current&&!k.current.contains(t)&&w.floating.current&&!w.floating.current.contains(t)&&y(!1)},t=e=>{"Escape"===e.key&&y(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[p,w.floating]);const N=e=>{e.preventDefault()};return t(o,{children:[t("button",Object.assign({ref:k,type:"button",className:d,style:c,onClick:e=>{e.preventDefault(),e.stopPropagation(),y(!p)},onMouseDown:N,"data-element-options-color-picker":!0,"data-state":p?"open":"closed","aria-expanded":p},{children:[n("span",{"data-element-options-color-preview":!0,style:{backgroundColor:e}}),n("span",Object.assign({"data-element-options-color-value":!0},{children:e}))]})),p&&n(x,Object.assign({id:"element-options-color-picker-portal"},{children:t("div",Object.assign({ref:w.setFloating,style:O,"data-element-options-color-picker-content":!0,onMouseDown:N},{children:[n(h,{color:e,onChange:l}),i.length>0&&n("div",Object.assign({"data-element-options-color-presets":!0},{children:i.map(t=>n("button",{type:"button","data-element-options-color-preset":!0,"data-selected":t===e,style:{backgroundColor:t},onClick:()=>(e=>{l(e)})(t),onMouseDown:N,"aria-label":`Select color ${t}`},t))}))]}))}))]})};w.displayName="ElementOptions.ColorPicker";const O=l(null);function N(){const e=i(O);if(!e)throw new Error("useElementOptionsContext must be used within an ElementOptions.Root");return e}function j(){const{blockId:e,element:t,editor:o,isOpen:n,setIsOpen:a}=N();return{blockId:e,element:t,editor:o,isOpen:n,setIsOpen:a}}function E(){const{blockId:e,element:t,editor:o}=N();return n=>{y.updateElement(o,{blockId:e,type:t.type,props:Object.assign(Object.assign({},t.props),n)})}}O.displayName="ElementOptionsContext";const C=({children:e,className:t,style:o,side:a="bottom",align:l="end",sideOffset:i=4,alignOffset:d=0})=>{const{isOpen:c,setIsOpen:p,triggerRef:h,contentRef:y}=N(),k=r(null),v="center"===l?a:`${a}-${l}`,{refs:w,floatingStyles:O}=m({open:c,placement:v,middleware:[u({mainAxis:i,crossAxis:d}),g({padding:8}),b({padding:8})],whileElementsMounted:f});return s(()=>{h.current&&w.setReference(h.current)},[h,w]),s(()=>{if(!c)return;const e=e=>{const t=e.target,o=h.current,n=k.current;o&&!o.contains(t)&&n&&!n.contains(t)&&p(!1)},t=e=>{"Escape"===e.key&&p(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[c,p,h]),c?n(x,Object.assign({id:"element-options-portal"},{children:n("div",Object.assign({ref:e=>{w.setFloating(e),k.current=e,y&&(y.current=e)},className:t,style:Object.assign(Object.assign({},O),o),"data-element-options-content":!0,"data-state":"open","data-side":a,"data-align":l,role:"dialog","aria-modal":"true"},{children:e}))})):null};C.displayName="ElementOptions.Content";const D=({children:e,className:t,style:o})=>n("div",Object.assign({className:t,style:o,"data-element-options-group":!0},{children:e}));D.displayName="ElementOptions.Group";const z=({value:e,onChange:t,placeholder:o,type:a="text",className:r,style:s})=>n("input",{type:a,value:e,onChange:e=>{t(e.target.value)},onMouseDown:e=>{e.stopPropagation()},placeholder:o,className:r,style:s,"data-element-options-input":!0});z.displayName="ElementOptions.Input";const L=({children:e,className:t,style:o})=>n("label",Object.assign({className:t,style:o,"data-element-options-label":!0},{children:e}));L.displayName="ElementOptions.Label";const R=({blockId:e,element:t,children:o,anchorRef:s,className:l,style:i})=>{const c=k(),[p,m]=a(!1),u=r(null),g=r(null),b=d(()=>({blockId:e,element:t,editor:c,isOpen:p,setIsOpen:m,triggerRef:u,contentRef:g,anchorRef:null!=s?s:null}),[e,t,c,p,s]);return n(O.Provider,Object.assign({value:b},{children:n("div",Object.assign({className:l,style:i,"data-element-options-root":!0,"data-state":p?"open":"closed"},{children:o}))}))};R.displayName="ElementOptions.Root";
1
+ import{s as e}from"./chunks/style-inject.es-e87a8d02.js";import{jsxs as t,Fragment as o,jsx as n}from"react/jsx-runtime";import{useState as a,useRef as r,useEffect as s,createContext as l,useContext as i,useMemo as d,forwardRef as c,createElement as p}from"react";import{u as m,o as u,f as g,s as b,a as f}from"./chunks/floating-ui.react-b048728e.js";import{Z as h}from"./chunks/index-e0185864.js";import{Portal as x}from"./portal.js";import{Elements as y,useYooptaEditor as k}from"@yoopta/editor";import"react-dom";e('[data-element-options-root]{position:relative}[data-element-options-trigger]{align-items:center;background:transparent;border:none;border-radius:4px;cursor:pointer;display:inline-flex;justify-content:center;padding:4px;transition:background-color .15s ease,opacity .15s ease}[data-element-options-trigger]:hover{background-color:rgba(0,0,0,.05)}[data-element-options-trigger]:focus-visible{outline:2px solid rgba(59,130,246,.5);outline-offset:2px}.yoo-element-options-trigger-icon{color:#6b7280;height:16px;width:16px}[data-element-options-content]{background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);min-width:180px;padding:8px;z-index:50}[data-element-options-group]{display:flex;flex-direction:column;gap:6px}[data-element-options-group]+[data-element-options-group]{margin-top:8px}[data-element-options-label]{color:#6b7280;font-size:12px;font-weight:500}[data-element-options-separator]{background-color:#e5e7eb;height:1px;margin:8px 0}[data-element-options-select]{align-items:center;background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;cursor:pointer;display:flex;font-size:13px;justify-content:space-between;padding:6px 10px;transition:border-color .15s ease;width:100%}[data-element-options-select]:hover{border-color:#d1d5db}[data-element-options-select]:focus-visible{outline:2px solid rgba(59,130,246,.5);outline-offset:2px}[data-element-options-select-value]{align-items:center;display:flex;gap:8px}[data-element-options-select-chevron]{color:#9ca3af;height:14px;transition:transform .15s ease;width:14px}[data-element-options-select][data-state=open] [data-element-options-select-chevron]{transform:rotate(180deg)}[data-element-options-select-content]{background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);min-width:140px;padding:4px;z-index:51}[data-element-options-select-item]{align-items:center;background:transparent;border:none;border-radius:4px;cursor:pointer;display:flex;font-size:13px;justify-content:space-between;padding:6px 8px;text-align:left;transition:background-color .15s ease;width:100%}[data-element-options-select-item]:hover{background-color:#f3f4f6}[data-element-options-select-item][data-selected=true]{background-color:#eff6ff}[data-element-options-select-item-content]{align-items:center;display:flex;gap:8px}[data-element-options-select-check]{color:#3b82f6;height:14px;width:14px}[data-element-options-select-icon]{align-items:center;display:flex;height:16px;justify-content:center;width:16px}[data-element-options-select-color]{border:1px solid rgba(0,0,0,.1);border-radius:50%;display:inline-block;height:12px;width:12px}[data-element-options-color-picker]{align-items:center;background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;cursor:pointer;display:flex;font-size:13px;gap:8px;padding:6px 10px;transition:border-color .15s ease;width:100%}[data-element-options-color-picker]:hover{border-color:#d1d5db}[data-element-options-color-preview]{border:1px solid rgba(0,0,0,.1);border-radius:4px;display:inline-block;height:20px;width:20px}[data-element-options-color-value]{color:#6b7280;font-family:monospace;font-size:12px}[data-element-options-color-picker-content]{background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);padding:12px;z-index:51}[data-element-options-color-picker-content] .react-colorful{height:150px;width:180px}[data-element-options-color-presets]{border-top:1px solid #e5e7eb;display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px}[data-element-options-color-preset]{border:2px solid transparent;border-radius:4px;cursor:pointer;height:20px;padding:0;transition:border-color .15s ease,transform .15s ease;width:20px}[data-element-options-color-preset]:hover{transform:scale(1.1)}[data-element-options-color-preset][data-selected=true]{border-color:#3b82f6}[data-element-options-toggle]{align-items:center;background:transparent;border:none;cursor:pointer;display:inline-flex;gap:8px;padding:0}[data-element-options-toggle-thumb]{background-color:#e5e7eb;border-radius:10px;height:20px;position:relative;transition:background-color .2s ease;width:36px}[data-element-options-toggle-thumb]:after{background-color:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.1);content:"";height:16px;left:2px;position:absolute;top:2px;transition:transform .2s ease;width:16px}[data-element-options-toggle][data-state=checked] [data-element-options-toggle-thumb]{background-color:#3b82f6}[data-element-options-toggle][data-state=checked] [data-element-options-toggle-thumb]:after{transform:translateX(16px)}[data-element-options-toggle-label]{color:#374151;font-size:13px}[data-element-options-slider]{align-items:center;display:flex;gap:10px}[data-element-options-slider-input]{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,#3b82f6 0,#3b82f6 var(--slider-percentage,0),#e5e7eb var(--slider-percentage,0),#e5e7eb 100%);border-radius:2px;cursor:pointer;flex:1;height:4px}[data-element-options-slider-input]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background-color:#fff;border:2px solid #3b82f6;border-radius:50%;cursor:pointer;height:14px;-webkit-transition:transform .15s ease;transition:transform .15s ease;width:14px}[data-element-options-slider-input]::-webkit-slider-thumb:hover{transform:scale(1.1)}[data-element-options-slider-value]{color:#6b7280;font-family:monospace;font-size:12px;min-width:32px;text-align:right}[data-element-options-input]{background-color:#fff;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;padding:6px 10px;transition:border-color .15s ease;width:100%}[data-element-options-input]:hover{border-color:#d1d5db}[data-element-options-input]:focus{border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,.1);outline:none}[data-element-options-input]::-moz-placeholder{color:#9ca3af}[data-element-options-input]::placeholder{color:#9ca3af}@media (prefers-color-scheme:dark){[data-element-options-color-picker-content],[data-element-options-content],[data-element-options-select-content]{background-color:#1f2937;border-color:#374151}[data-element-options-label]{color:#9ca3af}[data-element-options-separator]{background-color:#374151}[data-element-options-color-picker],[data-element-options-input],[data-element-options-select]{background-color:#1f2937;border-color:#374151;color:#f3f4f6}[data-element-options-color-picker]:hover,[data-element-options-input]:hover,[data-element-options-select]:hover{border-color:#4b5563}[data-element-options-select-item]:hover{background-color:#374151}[data-element-options-select-item][data-selected=true]{background-color:rgba(59,130,246,.2)}[data-element-options-color-presets]{border-top-color:#374151}[data-element-options-toggle-thumb]{background-color:#374151}[data-element-options-toggle-label]{color:#d1d5db}[data-element-options-slider-input]{background:linear-gradient(to right,#3b82f6 0,#3b82f6 var(--slider-percentage,0),#374151 var(--slider-percentage,0),#374151 100%)}.yoo-element-options-trigger-icon{color:#9ca3af}[data-element-options-trigger]:hover{background-color:hsla(0,0%,100%,.1)}}');const v=["#000000","#6B7280","#EF4444","#F59E0B","#22C55E","#3B82F6","#8B5CF6","#EC4899"],w=({value:e,onChange:l,presetColors:i=v,className:d,style:c})=>{const[p,y]=a(!1),k=r(null),{refs:w,floatingStyles:O}=m({open:p,placement:"bottom-start",middleware:[u(4),g({padding:8}),b({padding:8})],whileElementsMounted:f});s(()=>{k.current&&w.setReference(k.current)},[w]),s(()=>{if(!p)return;const e=e=>{const t=e.target;k.current&&!k.current.contains(t)&&w.floating.current&&!w.floating.current.contains(t)&&y(!1)},t=e=>{"Escape"===e.key&&y(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[p,w.floating]);const N=e=>{e.preventDefault()};return t(o,{children:[t("button",Object.assign({ref:k,type:"button",className:d,style:c,onClick:e=>{e.preventDefault(),e.stopPropagation(),y(!p)},onMouseDown:N,"data-element-options-color-picker":!0,"data-state":p?"open":"closed","aria-expanded":p},{children:[n("span",{"data-element-options-color-preview":!0,style:{backgroundColor:e}}),n("span",Object.assign({"data-element-options-color-value":!0},{children:e}))]})),p&&n(x,Object.assign({id:"element-options-color-picker-portal"},{children:t("div",Object.assign({ref:w.setFloating,style:O,"data-element-options-color-picker-content":!0,onMouseDown:N},{children:[n(h,{color:e,onChange:l}),i.length>0&&n("div",Object.assign({"data-element-options-color-presets":!0},{children:i.map(t=>n("button",{type:"button","data-element-options-color-preset":!0,"data-selected":t===e,style:{backgroundColor:t},onClick:()=>(e=>{l(e)})(t),onMouseDown:N,"aria-label":`Select color ${t}`},t))}))]}))}))]})};w.displayName="ElementOptions.ColorPicker";const O=l(null);function N(){const e=i(O);if(!e)throw new Error("useElementOptionsContext must be used within an ElementOptions.Root");return e}function j(){const{blockId:e,element:t,editor:o,isOpen:n,setIsOpen:a}=N();return{blockId:e,element:t,editor:o,isOpen:n,setIsOpen:a}}function E(){const{blockId:e,element:t,editor:o}=N();return n=>{y.updateElement(o,{blockId:e,type:t.type,props:Object.assign(Object.assign({},t.props),n)})}}O.displayName="ElementOptionsContext";const C=({children:e,className:t,style:o,side:a="bottom",align:l="end",sideOffset:i=4,alignOffset:d=0})=>{const{isOpen:c,setIsOpen:p,triggerRef:h,contentRef:y}=N(),k=r(null),v="center"===l?a:`${a}-${l}`,{refs:w,floatingStyles:O}=m({open:c,placement:v,middleware:[u({mainAxis:i,crossAxis:d}),g({padding:8}),b({padding:8})],whileElementsMounted:f});return s(()=>{h.current&&w.setReference(h.current)},[h,w]),s(()=>{if(!c)return;const e=e=>{const t=e.target,o=h.current,n=k.current;o&&!o.contains(t)&&n&&!n.contains(t)&&p(!1)},t=e=>{"Escape"===e.key&&p(!1)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",t)}},[c,p,h]),c?n(x,Object.assign({id:"element-options-portal"},{children:n("div",Object.assign({ref:e=>{w.setFloating(e),k.current=e,y&&(y.current=e)},className:t,style:Object.assign(Object.assign({},O),o),"data-element-options-content":!0,"data-state":"open","data-side":a,"data-align":l,role:"dialog","aria-modal":"true"},{children:e}))})):null};C.displayName="ElementOptions.Content";const D=({children:e,className:t,style:o})=>n("div",Object.assign({className:t,style:o,"data-element-options-group":!0},{children:e}));D.displayName="ElementOptions.Group";const z=({value:e,onChange:t,placeholder:o,type:a="text",className:r,style:s})=>n("input",{type:a,value:e,onChange:e=>{t(e.target.value)},onMouseDown:e=>{e.stopPropagation()},placeholder:o,className:r,style:s,"data-element-options-input":!0});z.displayName="ElementOptions.Input";const L=({children:e,className:t,style:o})=>n("label",Object.assign({className:t,style:o,"data-element-options-label":!0},{children:e}));L.displayName="ElementOptions.Label";const R=({blockId:e,element:t,children:o,anchorRef:s,className:l,style:i})=>{const c=k(),[p,m]=a(!1),u=r(null),g=r(null),b=d(()=>({blockId:e,element:t,editor:c,isOpen:p,setIsOpen:m,triggerRef:u,contentRef:g,anchorRef:null!=s?s:null}),[e,t,c,p,s]);return n(O.Provider,Object.assign({value:b},{children:n("div",Object.assign({className:l,style:i,"data-element-options-root":!0,"data-state":p?"open":"closed"},{children:o}))}))};R.displayName="ElementOptions.Root";
2
2
  /**
3
3
  * @license lucide-react v0.378.0 - ISC
4
4
  *