@yoopta/ui 6.0.0 → 6.0.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-options.js","sources":["../src/block-options/context.tsx","../src/block-options/block-options.tsx","../src/block-options/hooks.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type BlockOptionsContextValue = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n triggerRef: HTMLElement | null;\n setTriggerRef: (ref: HTMLElement | null) => void;\n contentId: string;\n};\n\nexport const BlockOptionsContext = createContext<BlockOptionsContextValue | null>(null);\n\nexport const useBlockOptionsContext = () => {\n const context = useContext(BlockOptionsContext);\n if (!context) {\n throw new Error('BlockOptions components must be used within <BlockOptions>');\n }\n return context;\n};\n","import { cloneElement, forwardRef, isValidElement, useCallback, useMemo, useState } from 'react';\nimport type { CSSProperties, ReactElement, ReactNode } from 'react';\nimport {\n FloatingFocusManager,\n FloatingPortal,\n autoUpdate,\n flip,\n offset,\n shift,\n useDismiss,\n useFloating,\n useId,\n useInteractions,\n useMergeRefs,\n useTransitionStyles,\n} from '@floating-ui/react';\nimport { useYooptaEditor } from '@yoopta/editor';\n\nimport { Overlay } from '../overlay';\nimport { BlockOptionsContext, useBlockOptionsContext } from './context';\nimport './block-options.css';\n\ntype Placement = 'top' | 'right' | 'bottom' | 'left';\ntype Align = 'start' | 'center' | 'end';\n\ntype BlockOptionsRootProps = {\n children: ReactNode;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Default open state for uncontrolled usage */\n defaultOpen?: boolean;\n /** External anchor element for positioning (use when no Trigger is present) */\n anchor?: HTMLElement | null;\n};\n\nconst BlockOptionsRoot = ({\n children,\n open: controlledOpen,\n onOpenChange: controlledOnOpenChange,\n defaultOpen = false,\n anchor = null,\n}: BlockOptionsRootProps) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const [internalTriggerRef, setInternalTriggerRef] = useState<HTMLElement | null>(null);\n const contentId = useId();\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n // Use external anchor if provided, otherwise use internal trigger ref\n const triggerRef = anchor ?? internalTriggerRef;\n\n const onOpenChange = useCallback(\n (newOpen: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(newOpen);\n }\n controlledOnOpenChange?.(newOpen);\n },\n [isControlled, controlledOnOpenChange],\n );\n\n const contextValue = useMemo(\n () => ({\n open,\n onOpenChange,\n triggerRef,\n setTriggerRef: setInternalTriggerRef,\n contentId,\n }),\n [open, onOpenChange, triggerRef, contentId],\n );\n\n return <BlockOptionsContext.Provider value={contextValue}>{children}</BlockOptionsContext.Provider>;\n};\n\nBlockOptionsRoot.displayName = 'BlockOptions';\n\ntype BlockOptionsTriggerProps = {\n children: ReactNode;\n /** Merge props onto child element instead of wrapping */\n asChild?: boolean;\n className?: string;\n};\n\nconst BlockOptionsTrigger = forwardRef<HTMLButtonElement, BlockOptionsTriggerProps>(\n ({ children, asChild = false, className = '' }, forwardedRef) => {\n const { open, onOpenChange, setTriggerRef, contentId } = useBlockOptionsContext();\n\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onOpenChange(!open);\n },\n [open, onOpenChange],\n );\n\n const mergedRef = useMergeRefs([forwardedRef, setTriggerRef]);\n\n const triggerProps = {\n ref: mergedRef,\n onClick: handleClick,\n 'aria-expanded': open,\n 'aria-haspopup': 'menu' as const,\n 'aria-controls': open ? contentId : undefined,\n };\n\n if (asChild && isValidElement(children)) {\n return cloneElement(children as ReactElement<Record<string, unknown>>, triggerProps);\n }\n\n return (\n <button type=\"button\" className={`yoopta-ui-block-options-trigger ${className}`} {...triggerProps}>\n {children}\n </button>\n );\n },\n);\n\nBlockOptionsTrigger.displayName = 'BlockOptions.Trigger';\n\ntype BlockOptionsContentProps = {\n children: ReactNode;\n className?: string;\n style?: CSSProperties;\n /** Placement relative to trigger */\n side?: Placement;\n /** Alignment relative to trigger */\n align?: Align;\n /** Offset from trigger in pixels */\n sideOffset?: number;\n};\n\nconst BlockOptionsContent = forwardRef<HTMLDivElement, BlockOptionsContentProps>(\n ({ children, className = '', style, side = 'right', align = 'start', sideOffset = 5 }, forwardedRef) => {\n const { open, onOpenChange, triggerRef, contentId } = useBlockOptionsContext();\n const editor = useYooptaEditor();\n\n const placement = align === 'center' ? side : (`${side}-${align}` as const);\n\n const { refs, floatingStyles, context } = useFloating({\n elements: {\n reference: triggerRef,\n },\n placement,\n open,\n onOpenChange,\n middleware: [offset(sideOffset), flip(), shift({ padding: 8 })],\n whileElementsMounted: autoUpdate,\n strategy: 'fixed',\n });\n\n const { isMounted, styles: transitionStyles } = useTransitionStyles(context, {\n duration: 150,\n initial: { opacity: 0 },\n open: { opacity: 1 },\n close: { opacity: 0 },\n });\n\n // Handle dismiss (outside click, escape key)\n const dismiss = useDismiss(context, {\n outsidePress: true,\n escapeKey: true,\n });\n\n const { getFloatingProps } = useInteractions([dismiss]);\n\n const contentRef = useMergeRefs([refs.setFloating, forwardedRef]);\n\n if (!isMounted) return null;\n\n return (\n <FloatingPortal root={editor.refElement} id={`yoopta-ui-block-options-portal-${editor.id}`}>\n <Overlay lockScroll onClick={() => onOpenChange(false)}>\n <FloatingFocusManager context={context} modal={false}>\n <div\n ref={contentRef}\n id={contentId}\n role=\"menu\"\n aria-orientation=\"vertical\"\n className={`yoopta-ui-block-options ${className}`}\n style={{ ...floatingStyles, ...transitionStyles, ...style }}\n contentEditable={false}\n {...getFloatingProps({\n onClick: (e) => e.stopPropagation(),\n onMouseDown: (e) => e.stopPropagation(),\n })}\n >\n {children}\n </div>\n </FloatingFocusManager>\n </Overlay>\n </FloatingPortal>\n );\n },\n);\n\nBlockOptionsContent.displayName = 'BlockOptions.Content';\n\ntype BlockOptionsGroupProps = {\n children: ReactNode;\n className?: string;\n};\n\nconst BlockOptionsGroup = forwardRef<HTMLDivElement, BlockOptionsGroupProps>(\n ({ children, className = '' }, ref) => (\n <div ref={ref} role=\"group\" className={`yoopta-ui-block-options-group ${className}`}>\n {children}\n </div>\n ),\n);\n\nBlockOptionsGroup.displayName = 'BlockOptions.Group';\n\ntype BlockOptionsItemProps = {\n children: ReactNode;\n /** Called when item is selected */\n onSelect?: (event: React.MouseEvent) => void;\n className?: string;\n disabled?: boolean;\n icon?: ReactNode;\n /** Visual variant */\n variant?: 'default' | 'destructive';\n /** Keep menu open after selection */\n keepOpen?: boolean;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onSelect'>;\n\nconst BlockOptionsItem = forwardRef<HTMLButtonElement, BlockOptionsItemProps>(\n (\n { children, onSelect, className = '', disabled, icon, variant = 'default', keepOpen = false, ...props },\n ref,\n ) => {\n const { onOpenChange } = useBlockOptionsContext();\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) return;\n\n onSelect?.(e);\n\n // Auto-close menu after selection (Radix behavior) unless keepOpen is true\n if (!keepOpen) {\n onOpenChange(false);\n }\n },\n [disabled, onSelect, onOpenChange, keepOpen],\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"menuitem\"\n disabled={disabled}\n className={`yoopta-ui-block-options-button yoopta-ui-block-options-button-${variant} ${className}`}\n onClick={handleClick}\n {...props}\n >\n {icon && <span className=\"yoopta-ui-block-options-button-icon\">{icon}</span>}\n <span className=\"yoopta-ui-block-options-button-text\">{children}</span>\n </button>\n );\n },\n);\n\nBlockOptionsItem.displayName = 'BlockOptions.Item';\n\ntype BlockOptionsSeparatorProps = {\n className?: string;\n};\n\nconst BlockOptionsSeparator = forwardRef<HTMLDivElement, BlockOptionsSeparatorProps>(\n ({ className = '' }, ref) => (\n <div ref={ref} role=\"separator\" className={`yoopta-ui-block-options-separator ${className}`} />\n ),\n);\n\nBlockOptionsSeparator.displayName = 'BlockOptions.Separator';\n\ntype BlockOptionsLabelProps = {\n children: ReactNode;\n className?: string;\n};\n\nconst BlockOptionsLabel = forwardRef<HTMLDivElement, BlockOptionsLabelProps>(\n ({ children, className = '' }, ref) => (\n <div ref={ref} className={`yoopta-ui-block-options-label ${className}`}>\n {children}\n </div>\n ),\n);\n\nBlockOptionsLabel.displayName = 'BlockOptions.Label';\n\nexport const BlockOptions = Object.assign(BlockOptionsRoot, {\n Root: BlockOptionsRoot,\n Trigger: BlockOptionsTrigger,\n Content: BlockOptionsContent,\n Group: BlockOptionsGroup,\n Item: BlockOptionsItem,\n Separator: BlockOptionsSeparator,\n Label: BlockOptionsLabel,\n});\n\nexport type {\n BlockOptionsRootProps,\n BlockOptionsTriggerProps,\n BlockOptionsContentProps,\n BlockOptionsGroupProps,\n BlockOptionsItemProps,\n BlockOptionsSeparatorProps,\n BlockOptionsLabelProps,\n};\n","import { useCallback } from 'react';\nimport { useYooptaEditor } from '@yoopta/editor';\n\n/**\n * Hook that provides common block actions (duplicate, copy link, delete)\n * Use this alongside BlockOptions component for easy action handling\n *\n * @example\n * ```tsx\n * const { duplicateBlock, deleteBlock, copyBlockLink } = useBlockActions();\n *\n * <BlockOptions.Item onSelect={() => duplicateBlock(blockId)}>\n * Duplicate\n * </BlockOptions.Item>\n * ```\n */\nexport const useBlockActions = () => {\n const editor = useYooptaEditor();\n\n const duplicateBlock = useCallback(\n (blockId: string) => {\n if (!blockId) {\n throw new Error('Block ID is required to duplicate block');\n }\n\n editor.duplicateBlock({ blockId, focus: true });\n },\n [editor],\n );\n\n const copyBlockLink = useCallback(\n (blockId: string) => {\n if (!blockId) {\n throw new Error('Block ID is required to copy block link');\n }\n\n const block = editor.children[blockId];\n if (block) {\n const url = `${window.location.origin}${window.location.pathname}#${block.id}`;\n\n if (navigator.clipboard && navigator.clipboard.writeText) {\n navigator.clipboard.writeText(url);\n } else {\n // Fallback for older browsers\n const textarea = document.createElement('textarea');\n textarea.value = url;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n }\n\n editor.emit?.('block:copy', block);\n }\n },\n [editor],\n );\n\n const deleteBlock = useCallback(\n (blockId: string) => {\n if (!blockId) {\n throw new Error('Block ID is required to delete block');\n }\n\n editor.deleteBlock({ blockId });\n editor.setPath({ current: null });\n },\n [editor],\n );\n\n return {\n duplicateBlock,\n copyBlockLink,\n deleteBlock,\n };\n};\n\n// Re-export context hook for advanced usage\nexport { useBlockOptionsContext } from './context';\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /******************************************************************************
2
+ Copyright (c) Microsoft Corporation.
3
+
4
+ Permission to use, copy, modify, and/or distribute this software for any
5
+ purpose with or without fee is hereby granted.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
8
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
11
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
+ PERFORMANCE OF THIS SOFTWARE.
14
+ ***************************************************************************** */
15
+ /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
16
+
17
+
18
+ var __assign = function() {
19
+ __assign = Object.assign || function __assign(t) {
20
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
21
+ s = arguments[i];
22
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+
29
+ function __rest(s, e) {
30
+ var t = {};
31
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
32
+ t[p] = s[p];
33
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
34
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
35
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
36
+ t[p[i]] = s[p[i]];
37
+ }
38
+ return t;
39
+ }
40
+
41
+ function __spreadArray(to, from, pack) {
42
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
43
+ if (ar || !(i in from)) {
44
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
45
+ ar[i] = from[i];
46
+ }
47
+ }
48
+ return to.concat(ar || Array.prototype.slice.call(from));
49
+ }
50
+
51
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
52
+ var e = new Error(message);
53
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
54
+ };
55
+
56
+ export { __assign as _, __rest as a, __spreadArray as b };
57
+ //# sourceMappingURL=_tslib-8c24563b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_tslib-8c24563b.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,56 @@
1
+ import { forwardRef, createElement } from 'react';
2
+
3
+ /**
4
+ * @license lucide-react v0.294.0 - ISC
5
+ *
6
+ * This source code is licensed under the ISC license.
7
+ * See the LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+ var defaultAttributes = {
11
+ xmlns: "http://www.w3.org/2000/svg",
12
+ width: 24,
13
+ height: 24,
14
+ viewBox: "0 0 24 24",
15
+ fill: "none",
16
+ stroke: "currentColor",
17
+ strokeWidth: 2,
18
+ strokeLinecap: "round",
19
+ strokeLinejoin: "round"
20
+ };
21
+
22
+ /**
23
+ * @license lucide-react v0.294.0 - ISC
24
+ *
25
+ * This source code is licensed under the ISC license.
26
+ * See the LICENSE file in the root directory of this source tree.
27
+ */
28
+
29
+
30
+ const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase().trim();
31
+ const createLucideIcon = (iconName, iconNode) => {
32
+ const Component = forwardRef(
33
+ ({ color = "currentColor", size = 24, strokeWidth = 2, absoluteStrokeWidth, className = "", children, ...rest }, ref) => createElement(
34
+ "svg",
35
+ {
36
+ ref,
37
+ ...defaultAttributes,
38
+ width: size,
39
+ height: size,
40
+ stroke: color,
41
+ strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
42
+ className: ["lucide", `lucide-${toKebabCase(iconName)}`, className].join(" "),
43
+ ...rest
44
+ },
45
+ [
46
+ ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
47
+ ...Array.isArray(children) ? children : [children]
48
+ ]
49
+ )
50
+ );
51
+ Component.displayName = `${iconName}`;
52
+ return Component;
53
+ };
54
+
55
+ export { createLucideIcon as c };
56
+ //# sourceMappingURL=createLucideIcon-6ba35914.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createLucideIcon-6ba35914.js","sources":["../../../../../node_modules/lucide-react/src/defaultAttributes.ts","../../../../../node_modules/lucide-react/src/createLucideIcon.ts"],"sourcesContent":["export default {\n xmlns: 'http://www.w3.org/2000/svg',\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n fill: 'none',\n stroke: 'currentColor',\n strokeWidth: 2,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n};\n","import {\n forwardRef,\n createElement,\n ReactSVG,\n SVGProps,\n ForwardRefExoticComponent,\n RefAttributes,\n} from 'react';\nimport defaultAttributes from './defaultAttributes';\n\nexport type IconNode = [elementName: keyof ReactSVG, attrs: Record<string, string>][];\n\nexport type SVGAttributes = Partial<SVGProps<SVGSVGElement>>;\ntype ComponentAttributes = RefAttributes<SVGSVGElement> & SVGAttributes;\n\nexport interface LucideProps extends ComponentAttributes {\n size?: string | number;\n absoluteStrokeWidth?: boolean;\n}\n\nexport type LucideIcon = ForwardRefExoticComponent<LucideProps>;\n/**\n * Converts string to KebabCase\n * Copied from scripts/helper. If anyone knows how to properly import it here\n * then please fix it.\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .toLowerCase()\n .trim();\n\nconst createLucideIcon = (iconName: string, iconNode: IconNode): LucideIcon => {\n const Component = forwardRef<SVGSVGElement, LucideProps>(\n ({ color = 'currentColor', size = 24, strokeWidth = 2, absoluteStrokeWidth, className = '', children, ...rest }, ref) =>\n createElement(\n 'svg',\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: ['lucide', `lucide-${toKebabCase(iconName)}`, className].join(' '),\n ...rest,\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...(Array.isArray(children) ? children : [children]),\n ]\n )\n );\n\n Component.displayName = `${iconName}`;\n\n return Component;\n};\n\nexport default createLucideIcon;\n"],"names":[],"mappings":";;;;;;;;;AAAA,IAAe,iBAAA,GAAA;AAAA,EACb,KAAO,EAAA,4BAAA;AAAA,EACP,KAAO,EAAA,EAAA;AAAA,EACP,MAAQ,EAAA,EAAA;AAAA,EACR,OAAS,EAAA,WAAA;AAAA,EACT,IAAM,EAAA,MAAA;AAAA,EACN,MAAQ,EAAA,cAAA;AAAA,EACR,WAAa,EAAA,CAAA;AAAA,EACb,aAAe,EAAA,OAAA;AAAA,EACf,cAAgB,EAAA,OAAA;AAClB,CAAA;;;;;;;;;;ACmBa,MAAA,WAAA,GAAc,CAAC,MAAA,KAC1B,MACG,CAAA,OAAA,CAAQ,oBAAA,EAAsB,OAAO,CAAA,CACrC,WAAY,EAAA,CACZ,IAAK,EAAA,CAAA;AAEJ,MAAA,gBAAA,GAAmB,CAAC,QAAA,EAAkB,QAAmC,KAAA;AAC7E,EAAA,MAAM,SAAY,GAAA,UAAA;AAAA,IAChB,CAAC,EAAE,KAAQ,GAAA,cAAA,EAAgB,IAAA,GAAO,EAAI,EAAA,WAAA,GAAc,CAAG,EAAA,mBAAA,EAAqB,SAAY,GAAA,EAAA,EAAI,QAAa,EAAA,GAAA,IAAA,EAAA,EAAQ,GAC/G,KAAA,aAAA;AAAA,MACE,KAAA;AAAA,MACA;AAAA,QACE,GAAA;AAAA,QACA,GAAG,iBAAA;AAAA,QACH,KAAO,EAAA,IAAA;AAAA,QACP,MAAQ,EAAA,IAAA;AAAA,QACR,MAAQ,EAAA,KAAA;AAAA,QACR,WAAA,EAAa,mBAAsB,GAAA,MAAO,CAAA,WAAW,CAAI,GAAA,EAAK,GAAA,MAAA,CAAO,IAAI,CAAI,GAAA,WAAA;AAAA,QAC7E,SAAA,EAAW,CAAC,QAAA,EAAU,CAAU,OAAA,EAAA,WAAA,CAAY,QAAQ,CAAK,CAAA,CAAA,EAAA,SAAS,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA,QAC5E,GAAG,IAAA;AAAA,OACL;AAAA,MACA;AAAA,QACE,GAAG,QAAS,CAAA,GAAA,CAAI,CAAC,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA,aAAA,CAAc,GAAK,EAAA,KAAK,CAAC,CAAA;AAAA,QAC3D,GAAI,KAAM,CAAA,OAAA,CAAQ,QAAQ,CAAI,GAAA,QAAA,GAAW,CAAC,QAAQ,CAAA;AAAA,OACpD;AAAA,KACF;AAAA,GACJ,CAAA;AAEA,EAAA,SAAA,CAAU,WAAA,GAAc,CAAG,EAAA,QAAA,CAAA,CAAA,CAAA;AAE3B,EAAO,OAAA,SAAA,CAAA;AACT;;;;","x_google_ignoreList":[0,1]}
@@ -0,0 +1,40 @@
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
+ function debounce(func, wait) {
6
+ let timeout = null;
7
+ let lastArgs = null;
8
+ const debounced = (...args) => {
9
+ lastArgs = args;
10
+ if (timeout) {
11
+ clearTimeout(timeout);
12
+ }
13
+ timeout = setTimeout(() => {
14
+ timeout = null;
15
+ if (lastArgs) {
16
+ func(...lastArgs);
17
+ lastArgs = null;
18
+ }
19
+ }, wait);
20
+ };
21
+ debounced.cancel = () => {
22
+ if (timeout) {
23
+ clearTimeout(timeout);
24
+ timeout = null;
25
+ }
26
+ lastArgs = null;
27
+ };
28
+ debounced.flush = () => {
29
+ if (timeout && lastArgs) {
30
+ clearTimeout(timeout);
31
+ timeout = null;
32
+ func(...lastArgs);
33
+ lastArgs = null;
34
+ }
35
+ };
36
+ return debounced;
37
+ }
38
+
39
+ export { Oe as O, Z, debounce as d };
40
+ //# sourceMappingURL=debounce-1e7f29bf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce-1e7f29bf.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","../../src/utils/debounce.ts"],"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","export function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n): T & { cancel: () => void; flush: () => void } {\n let timeout: NodeJS.Timeout | null = null;\n let lastArgs: Parameters<T> | null = null;\n\n const debounced = (...args: Parameters<T>) => {\n lastArgs = args;\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n timeout = setTimeout(() => {\n timeout = null;\n if (lastArgs) {\n func(...lastArgs);\n lastArgs = null;\n }\n }, wait);\n };\n\n debounced.cancel = () => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n lastArgs = null;\n };\n\n debounced.flush = () => {\n if (timeout && lastArgs) {\n clearTimeout(timeout);\n timeout = null;\n func(...lastArgs);\n lastArgs = null;\n }\n };\n\n return debounced as T & { cancel: () => void; flush: () => void };\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]}