@blockbite/ui 2.1.2 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/ButtonToggle.tsx","../src/AutocompleteDropdown.tsx","../src/Badge.tsx","../src/BitePreview.tsx","../src/Wrap.tsx","../src/Chapter.tsx","../src/ChapterHeading.tsx","../src/Checkbox.tsx","../../icons/jsx/Check.jsx","../../icons/jsx/ChevronDown.jsx","../../icons/jsx/ColorWheel.jsx","../../icons/jsx/Cross1.jsx","../../icons/jsx/Cross2.jsx","../../icons/jsx/InfoCircled.jsx","../../icons/jsx/ListBullet.jsx","../../icons/jsx/Pencil1.jsx","../../icons/jsx/Percentage.jsx","../../icons/jsx/Plus.jsx","../../icons/jsx/Slider.jsx","../../icons/jsx/Tailwind.jsx","../../icons/jsx/Trash.jsx","../src/TextControl.tsx","../src/DataItemList.tsx","../src/DisappearingMessage.tsx","../src/Icon.tsx","../src/DropdownPicker.tsx","../src/EmptyState.tsx","../src/FloatingPanel.tsx","../src/FocalPointControl.tsx","../src/Popover.tsx","../src/SelectControlWrapper.tsx","../src/GradientSwatchPicker.tsx","../src/Label.tsx","../src/LinkPicker.tsx","../src/MediaPicker.tsx","../src/RangeSlider.tsx","../src/MetricsControl.tsx","../src/Modal.tsx","../src/NewWindowPortal.tsx","../src/Notice.tsx","../src/PasswordInput.tsx","../src/ProjectsNavigation.tsx","../src/ResponsiveImage.tsx","../src/ResponsiveVideo.tsx","../src/SaveButton.tsx","../src/ScrollList.tsx","../src/SingleBlockTypeAppender.tsx","../src/SlideIn.tsx","../src/Spinner.tsx","../../libraries/dist/libraries.js","../src/SplitPane.tsx","../src/Tabs.tsx","../src/Tag.tsx","../src/TagInput.tsx","../src/TextControlLabel.tsx","../src/ToggleGroup.tsx","../src/ToggleSwitch.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { Button as WordpressButton } from '@wordpress/components';\nimport { memo, useCallback } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype ButtonToggleProps = {\n children?: React.ReactNode;\n className?: string;\n value: string;\n pressed: boolean;\n variant?: 'primary' | 'secondary';\n size?: 'small' | 'default' | 'compact';\n icon?: any;\n display?: 'icon' | 'label' | '' | null;\n onPressedChange: (value: string) => void;\n label?: string;\n};\n\ntype ButtonToggleGroupOptionProp = {\n value: string;\n label: string;\n tooltip?: string;\n icon?: any;\n children?: React.ReactNode;\n};\n\ntype ButtonToggleGroupProps = {\n className?: string;\n options: ButtonToggleGroupOptionProp[];\n value: string;\n toggle?: boolean;\n size?: 'small' | 'default' | 'compact';\n tabs?: boolean;\n display?: 'icon' | 'label' | '' | null;\n variant?: 'primary' | 'secondary';\n stretch?: boolean;\n icon?: JSX.Element;\n onPressedChange?: (value: string) => void;\n};\n\n// ButtonToggle: now fully controlled via `pressed` prop\nexport const ButtonToggle: React.FC<\n Omit<ButtonToggleProps, 'defaultPressed'> & { pressed: boolean }\n> = memo(\n ({\n children,\n className,\n value,\n variant = 'secondary',\n pressed,\n onPressedChange,\n icon: Icon,\n size = 'compact',\n display = 'auto',\n label,\n }) => {\n const handleClick = useCallback(() => {\n onPressedChange(value);\n }, [onPressedChange, value]);\n\n return (\n <WordpressButton\n aria-label={label}\n className={classNames(className, 'blockbite-ui__button--default')}\n value={value}\n size={size}\n label={label}\n variant={variant}\n showTooltip={true}\n isPressed={pressed}\n onClick={handleClick}\n >\n {Icon && <Icon className=\"w-4 h-4\" />}\n {display !== 'icon' ? children : null}\n {label && !children && display !== 'icon' ? <span>{label}</span> : null}\n </WordpressButton>\n );\n }\n);\n\n// ButtonToggleGroup: now fully controlled via `value` prop\nexport const ButtonToggleGroup: React.FC<\n Omit<ButtonToggleGroupProps, 'defaultPressed'> & { value: string }\n> = memo(\n ({\n className,\n value,\n toggle = true,\n display = 'auto',\n options,\n size = 'compact',\n tabs = false,\n variant = 'secondary',\n stretch = false,\n onPressedChange,\n }) => {\n const handleButtonClick = useCallback(\n (optionValue: string) => {\n const newValue = toggle && value === optionValue ? '' : optionValue;\n onPressedChange?.(newValue);\n },\n [onPressedChange, toggle, value]\n );\n\n const renderContent = (option: ButtonToggleGroupOptionProp) => {\n const Icon = option?.icon || null;\n\n if (display === 'icon' && option?.icon) {\n return <Icon className=\"w-4 h-4\" />;\n } else if (display === 'label') {\n return <span>{option.label}</span>;\n }\n return (\n <span className=\"flex items-center justify-center gap-1\">\n {option.icon && <Icon className=\"w-3 h-3\" />}\n <span>{option.label}</span>\n </span>\n );\n };\n\n return (\n <div\n className={classNames(\n 'blockbite-ui__button-group flex flex-wrap gap-1',\n className,\n tabs ? 'blockbite-ui__button-group--tabs' : ''\n )}\n >\n {options.map((option, index) => (\n <WordpressButton\n key={`ButtonToggleGroup__${option.value}__${option.label}__${index}`}\n className={classNames('blockbite-ui__button--default', {\n grow: stretch,\n 'justify-center': stretch,\n })}\n aria-label={option.label}\n showTooltip={true}\n value={option.value}\n size={size}\n label={option?.tooltip || option.label}\n variant={variant}\n isPressed={value === option.value}\n onClick={() => handleButtonClick(option.value)}\n >\n {renderContent(option)}\n {option.children && option.children}\n </WordpressButton>\n ))}\n </div>\n );\n }\n);\n","import { Button, Dropdown, TextControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { ButtonToggle } from './ButtonToggle.js';\nimport type { OptionProps } from './types.js';\n\ninterface OptionPanelDropdownProps {\n value: string;\n options: { label: string; value: string; style?: string }[];\n onPressedChange: (value: string) => void;\n swatch?: boolean;\n}\n\nexport function AutocompleteDropdown({\n value,\n options,\n swatch,\n onPressedChange,\n}: OptionPanelDropdownProps) {\n const [activeKeyword, setActiveKeyword] = useState('');\n const [filteredOptions, setFilteredOptions] = useState<OptionProps[]>([]);\n\n useEffect(() => {\n setFilteredOptions(\n options.filter((option: OptionProps) =>\n option.label.toLowerCase().includes(activeKeyword.toLowerCase())\n )\n );\n }, [activeKeyword, options]);\n\n useEffect(() => {\n setActiveKeyword('');\n setFilteredOptions(options);\n }, [value, options]);\n\n return (\n <Dropdown\n className=\"option-panel-dropdown\"\n contentClassName=\"option-panel-dropdown-content [&>div]:[scrollbar-width:none] [&>div]:[&::-webkit-scrollbar]:hidden\"\n popoverProps={{ placement: 'bottom-start' }}\n renderToggle={({ isOpen, onToggle }) => (\n <Button\n variant=\"secondary\"\n size=\"small\"\n onClick={onToggle}\n aria-expanded={isOpen}\n >\n <div className=\"flex items-center gap-1.5 !bg-transparent !p-0 !text-[11px] !text-current\">\n {swatch && !!value && (\n <div\n style={{\n backgroundColor: options.find((o) => o.value === value)\n ?.style,\n }}\n className=\"h-3 w-3 rounded-full\"\n />\n )}\n <span>{value || 'Select option…'}</span>\n </div>\n </Button>\n )}\n renderContent={() => (\n <div className=\"w-52\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label=\"Search options\"\n value={activeKeyword}\n onChange={(changedValue) => setActiveKeyword(changedValue)}\n autoComplete=\"off\"\n />\n <div className=\"grid grid-cols-2 gap-1 !bg-transparent p-0 !pt-2\">\n {filteredOptions.length === 0 && (\n <div className=\"!text-gray-medium col-span-2 pb-2 text-center !text-[11px]\">\n No options found.\n </div>\n )}\n {filteredOptions.map((option: OptionProps, index: Number) => (\n <ButtonToggle\n key={`ButtonToggle__${option.value}___${index}`}\n className={classNames({\n 'bg-wp': option.value,\n })}\n size=\"small\"\n value={option.value.toString()}\n pressed={value === option.value}\n onPressedChange={(pressed) => {\n onPressedChange(pressed ? option.value : '');\n }}\n >\n {swatch && (\n <div\n style={{ backgroundColor: option.style }}\n className=\"mr-3 h-3 w-3 rounded-full\"\n />\n )}\n {option.label}\n </ButtonToggle>\n ))}\n </div>\n </div>\n )}\n />\n );\n}\n","import classNames from 'classnames';\n\ntype BadgeProps = {\n children?: React.ReactNode;\n className?: string;\n label?: string;\n onClick?: () => void;\n status?: 'default' | 'info' | 'success' | 'warning' | 'error';\n};\n\nexport const Badge = ({\n children,\n className,\n label,\n onClick,\n status = 'default',\n}: BadgeProps) => {\n return (\n <div\n onClick={onClick}\n className={classNames(\n className,\n 'inline-flex rounded-full overflow-hidden bg-white'\n )}\n >\n <div\n onClick={onClick}\n className={classNames(\n 'inline-flex items-center px-2.5 py-0.5 text-xs font-medium w-full h-full',\n {\n 'bg-wp/10 text-wp': status === 'info',\n 'bg-green-100 text-green-800': status === 'success',\n 'bg-yellow-100 text-yellow-800': status === 'warning',\n 'bg-red-100 text-red-800': status === 'error',\n 'bg-gray-100 text-gray-800': status === 'default',\n }\n )}\n >\n {label && (\n <span className=\"mr-1 text-xs font-semibold text-gray-700\">\n {label}\n </span>\n )}\n {children}\n </div>\n </div>\n );\n};\n","import { createPortal, useEffect, useRef, useState } from '@wordpress/element';\n\nexport const BitePreview = ({ htmlContent, cssContent, frontendAssets }) => {\n const iframeRef = useRef(null);\n const [iframeBody, setIframeBody] = useState(null);\n\n useEffect(() => {\n const iframe = iframeRef.current;\n\n if (iframe) {\n iframe.onload = () => {\n const iframeDocument =\n iframe.contentDocument || iframe.contentWindow.document;\n\n if (iframeDocument) {\n setIframeBody(iframeDocument.body); // Set the iframe body for portal\n\n // Inject CSS content directly\n const styleTag = iframeDocument.createElement('style');\n styleTag.innerHTML = cssContent;\n iframeDocument.head.appendChild(styleTag);\n\n // Adopt or Create Frontend Assets\n frontendAssets.forEach(({ type, id, url }) => {\n const existingElement = document.getElementById(id);\n\n if (existingElement) {\n // If the asset exists in the parent, move it to the iframe\n const adoptedElement = document.adoptNode(\n existingElement.cloneNode(true)\n );\n iframeDocument.head.appendChild(adoptedElement);\n } else {\n // Create a new script or style if not found\n const newElement = iframeDocument.createElement(\n type === 'script' ? 'script' : 'link'\n );\n newElement.id = id;\n\n if (type === 'script') {\n newElement.src = url;\n newElement.async = true;\n } else {\n newElement.rel = 'stylesheet';\n newElement.href = url;\n }\n\n iframeDocument.head.appendChild(newElement);\n }\n });\n }\n };\n }\n\n return () => {\n if (iframe) {\n iframe.onload = null; // Clean up event listener\n }\n };\n }, [htmlContent, cssContent, frontendAssets]);\n\n return (\n <div\n className=\"render-preview-container\"\n style={{ width: '100%', minHeight: '100%' }}\n >\n <iframe\n ref={iframeRef}\n title=\"Preview\"\n sandbox=\"allow-same-origin allow-scripts\"\n className=\"editor-styles-wrapper\"\n width=\"100%\"\n height=\"100%\"\n />\n {iframeBody &&\n createPortal(\n <div className=\"b_\">\n <div\n className=\"b_bites\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n </div>,\n iframeBody\n )}\n </div>\n );\n};\n","type WrapProps = {\n children: React.ReactNode;\n className?: string;\n important?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n};\n\nexport const Wrap = ({\n children,\n className,\n important = false,\n onClick,\n}: WrapProps) => {\n if (important) {\n return (\n <div onClick={onClick}>\n <div className={className}>{children}</div>\n </div>\n );\n }\n\n return <div className={className}>{children}</div>;\n};\n","import classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype ChapterProps = {\n children?: React.ReactNode;\n className?: string;\n title?: string;\n};\n\nexport const Chapter = ({ children, title, className }: ChapterProps) => {\n return (\n <Wrap\n className={classNames(\n 'text-gray-medium my-2 flex items-center gap-1 text-[12px] font-medium',\n className\n )}\n >\n {title && <Wrap className=\"font-medium\">{title}</Wrap>}\n {children}\n </Wrap>\n );\n};\n","import classNames from 'classnames';\nimport { Badge } from './Badge.js';\n\ntype ChapterHeadingProps = {\n title?: string;\n className?: string;\n help?: string;\n badge?: string;\n addon?: React.ReactNode;\n gradient?: boolean;\n [key: string]: any;\n};\n\nexport const ChapterHeading = ({\n title,\n className,\n help,\n badge,\n addon,\n ...props\n}: ChapterHeadingProps) => {\n return (\n <div className={classNames('mb-2', className)} {...props}>\n <div className=\"flex w-[90%] flex-wrap items-center gap-2 justify-between\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"shrink-1 text-[11px] font-medium uppercase leading-snug\">\n {title}\n </span>\n {addon}\n </div>\n\n {!!badge && (\n <Badge className=\"mt-1 text-[10px] py-px px-1\">{badge}</Badge>\n )}\n </div>\n {help && <small className=\"w-full shrink-0 text-[11px]\">{help}</small>}\n </div>\n );\n};\n","import { CheckboxControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\ntype CheckboxProps = {\n id: string;\n label?: string;\n help?: string;\n defaultChecked?: boolean;\n onCheckedChange: (checked: boolean, id: string) => void;\n};\n\nexport const Checkbox = ({ label, help, defaultChecked }: CheckboxProps) => {\n const [isChecked, setChecked] = useState(defaultChecked);\n\n useEffect(() => {\n setChecked(defaultChecked);\n }, [defaultChecked]);\n\n return (\n <Wrap className=\"blockbite-ui__checkbox mx-1 flex items-center gap-2\">\n <CheckboxControl\n label={label}\n help={help}\n checked={isChecked}\n onChange={setChecked}\n />\n </Wrap>\n );\n};\n","const Check = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Check;\n","const ChevronDown = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default ChevronDown;\n","const ColorWheel = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.49991 0.877014C11.1576 0.877014 14.1227 3.84216 14.1227 7.49985C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49985C0.877075 3.84216 3.84222 0.877014 7.49991 0.877014ZM7.09998 1.84089V6.53429L3.78135 3.21565C4.68298 2.43239 5.83429 1.92904 7.09998 1.84089ZM1.84095 7.09997H6.5343L3.21567 3.78134C2.43242 4.68298 1.92909 5.83428 1.84095 7.09997ZM1.84097 7.89997C1.92916 9.16562 2.43253 10.3169 3.21579 11.2185L6.5343 7.89997H1.84097ZM7.09998 13.1588V8.46566L3.78149 11.7842C4.6831 12.5673 5.83435 13.0707 7.09998 13.1588ZM7.89998 13.1588C9.16559 13.0706 10.3168 12.5673 11.2184 11.7841L7.89998 8.46566V13.1588ZM13.1588 7.89997H8.46567L11.7841 11.2184C12.5673 10.3168 13.0707 9.16558 13.1588 7.89997ZM13.1589 7.09997C13.0707 5.83432 12.5674 4.68305 11.7842 3.78143L8.46567 7.09997H13.1589ZM7.89998 1.8409V6.53429L11.2185 3.21573C10.3169 2.43246 9.16565 1.92909 7.89998 1.8409Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default ColorWheel;\n","const Cross1 = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Cross1;\n","const Cross2 = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Cross2;\n","const InfoCircled = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999ZM7.50003 5.99999C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H9.00003V11H6.00003V9.99999H7.00003V6.99999H6.00003V5.99999H7.50003ZM0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972ZM7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default InfoCircled;\n","const ListBullet = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5ZM4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5C4 4.22386 4.22386 4 4.5 4ZM4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5C4.22386 7 4 7.22386 4 7.5ZM4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5C4.22386 10 4 10.2239 4 10.5ZM1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25ZM2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default ListBullet;\n","const Pencil1 = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.1465 1.14645L3.71455 8.57836C3.62459 8.66832 3.55263 8.77461 3.50251 8.89155L2.04044 12.303C1.9599 12.491 2.00189 12.709 2.14646 12.8536C2.29103 12.9981 2.50905 13.0401 2.69697 12.9596L6.10847 11.4975C6.2254 11.4474 6.3317 11.3754 6.42166 11.2855L13.8536 3.85355C14.0488 3.65829 14.0488 3.34171 13.8536 3.14645L11.8536 1.14645C11.6583 0.951184 11.3417 0.951184 11.1465 1.14645ZM11.5 2.20711L12.7929 3.5L5.71455 10.5784L4.21924 11.2192L3.78081 10.7808L4.42166 9.28547L11.5 2.20711Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Pencil1;\n","const Percentage = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <circle cx={4.85355} cy={4.5} r={1.5} fill=\"currentColor\" />\n <circle cx={9.85355} cy={10.5} r={1.5} fill=\"currentColor\" />\n <path\n d=\"M3 11.6464L11 3.64642\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport default Percentage;\n","const Plus = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M7.5 2.25C7.22386 2.25 7 2.47386 7 2.75V7H2.75C2.47386 7 2.25 7.22386 2.25 7.5C2.25 7.77614 2.47386 8 2.75 8H7V12.25C7 12.5261 7.22386 12.75 7.5 12.75C7.77614 12.75 8 12.5261 8 12.25V8H12.25C12.5261 8 12.75 7.77614 12.75 7.5C12.75 7.22386 12.5261 7 12.25 7H8V2.75C8 2.47386 7.77614 2.25 7.5 2.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Plus;\n","const Slider = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.49988 10.2504C7.1516 10.2504 6.0299 9.28026 5.79473 7.99997H0.5C0.223858 7.99997 0 7.77611 0 7.49997C0 7.22383 0.223858 6.99997 0.5 6.99997H5.7947C6.0298 5.71959 7.15154 4.74939 8.49988 4.74939C9.84822 4.74939 10.97 5.71959 11.2051 6.99997H14.5C14.7761 6.99997 15 7.22383 15 7.49997C15 7.77611 14.7761 7.99997 14.5 7.99997H11.205C10.9699 9.28026 9.84816 10.2504 8.49988 10.2504ZM8.49988 9.30038C7.50549 9.30038 6.69938 8.49427 6.69938 7.49988C6.69938 6.5055 7.50549 5.69939 8.49988 5.69939C9.49426 5.69939 10.3004 6.5055 10.3004 7.49988C10.3004 8.49427 9.49426 9.30038 8.49988 9.30038Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Slider;\n","const Tailwind = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M4 5.33333C4.4 3.77778 5.4 3 7 3C9.4 3 9.7 4.75 10.9 5.04167C11.7 5.23611 12.4 4.94444 13 4.16667C12.6 5.72222 11.6 6.5 10 6.5C7.6 6.5 7.3 4.75 6.1 4.45833C5.3 4.26389 4.6 4.55556 4 5.33333ZM1 8.83333C1.4 7.27778 2.4 6.5 4 6.5C6.4 6.5 6.7 8.25 7.9 8.54167C8.7 8.73611 9.4 8.44444 10 7.66667C9.6 9.22222 8.6 10 7 10C4.6 10 4.3 8.25 3.1 7.95833C2.3 7.76389 1.6 8.05556 1 8.83333Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Tailwind;\n","const Trash = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5 1.5C5 1.77614 5.22386 2 5.5 2H9.5C9.77614 2 10 1.77614 10 1.5C10 1.22386 9.77614 1 9.5 1H5.5C5.22386 1 5 1.22386 5 1.5ZM3.5 3H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H11V12C11 12.5523 10.5523 13 10 13H5C4.44772 13 4 12.5523 4 12V4L3.5 4C3.22386 4 3 3.77614 3 3.5C3 3.22386 3.22386 3 3.5 3ZM10 4V12H5V4H10Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Trash;\n","import { forwardRef } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype TextControlProps = {\n className?: string;\n inputClassName?: string;\n value: any;\n children?: React.ReactNode;\n onChange?: (value: string) => void;\n onClick?: () => void;\n readOnly?: boolean;\n placeholder?: string;\n onBlur?: (value) => void;\n type?: string;\n label?: string;\n helper?: string;\n [key: string]: any;\n};\n\nexport const TextControl = forwardRef<HTMLInputElement, TextControlProps>(\n (\n {\n onClick,\n onChange,\n className,\n value,\n children,\n inputClassName,\n readOnly,\n placeholder,\n onBlur,\n type = 'text',\n label,\n helper = '',\n ...props\n },\n ref\n ) => {\n const fieldId = `text-control-${Math.random()\n .toString(36)\n .substring(2, 15)}`;\n\n return (\n <div\n className={classNames('flex items-center p-0', className)}\n {...props}\n >\n {label ? (\n <label htmlFor={fieldId} className=\"text-primary !m-0 !mb-0 !mr-2\">\n {label}\n </label>\n ) : null}\n <input\n id={fieldId}\n className={classNames(\n 'components-text-control__input',\n inputClassName\n )}\n type={type}\n value={value}\n placeholder={placeholder}\n onFocus={() => onClick && onClick()}\n onBlur={(e) => {\n if (onClick) onClick();\n if (onBlur) onBlur(e.target.value);\n }}\n onChange={(e) => onChange && onChange(e.target.value)}\n readOnly={readOnly}\n ref={ref}\n />\n {children}\n {helper && <p className=\"text-primary !m-0 !mb-0 text-xs\">{helper}</p>}\n </div>\n );\n }\n);\n\nTextControl.displayName = 'TextControl'; // Recommended for debugging\n","import { Plus as PlusIcon, Trash as TrashIcon } from '@blockbite/icons';\nimport { Button } from '@wordpress/components';\nimport { useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Badge } from './Badge.js';\nimport { TextControl } from './TextControl.js';\n\ntype DataListProps<T extends { id: string | number; title?: string }> = {\n data: T[];\n active: T;\n setActive: (item: T | undefined) => void;\n onCreate: () => void;\n onDelete: (id: T['id']) => void;\n onUpdate: (id: T['id'], updates: Partial<T>) => void;\n onSwitch: (prevId: T['id'], updates: Partial<T>) => void;\n renderItemActions?: (item: T) => React.ReactNode;\n renderItemContent?: (item: T, isActive: boolean) => React.ReactNode;\n addons?: JSX.Element;\n className?: string;\n footerSlot?: React.ReactNode;\n footerSlotClassName?: string;\n badge?: string;\n};\n\nexport const DataItemList = <\n T extends { id: string | number; title?: string },\n>({\n data,\n active,\n setActive,\n onCreate,\n onDelete,\n onUpdate,\n onSwitch,\n renderItemActions,\n renderItemContent,\n addons,\n className = '',\n footerSlot,\n footerSlotClassName = '',\n badge = '',\n}: DataListProps<T>) => {\n const [rename, setRename] = useState<{ id: T['id']; title: string }>({\n id: '' as T['id'],\n title: '',\n });\n const [isSaving, setIsSaving] = useState(false);\n const textRef = useRef<HTMLInputElement | null>(null);\n\n const handleAdd = () => {\n onCreate();\n };\n\n const handleRemove = () => {\n if (!active || data.length === 0) return;\n\n const newData = data.filter((d) => d.id !== active?.id);\n const currentIndex = data.findIndex((d) => d.id === active?.id);\n const nextActive = newData[currentIndex] || newData[0];\n\n onDelete(active.id);\n setActive(nextActive);\n };\n\n const handleRenameBlur = (value: string) => {\n setIsSaving(true);\n if (rename.id) {\n onUpdate(rename.id, { title: value } as Partial<T>);\n }\n\n setTimeout(() => {\n setRename({ id: '' as T['id'], title: '' });\n setIsSaving(false);\n }, 500);\n };\n\n const renderBadge = (item) => {\n if (!badge || !item[badge]) return null;\n return <Badge className=\"ml-2 max-w-[80px] text-sm\">{item[badge]}</Badge>;\n };\n\n return (\n <div\n className={classNames('flex flex-col justify-between h-full', className)}\n >\n <ul className=\"divide-y overflow-auto\">\n {addons}\n {data.length > 0 && (\n <li>\n <ul className=\"divide-y divide-border border-b border-border\">\n {data.map((item) => (\n <li\n key={`data__${item.id}`}\n className={classNames(\n 'relative !mb-0 flex flex-col hover:bg-wp/10',\n {\n 'bg-[#1e40af]/20': item.id === active?.id,\n }\n )}\n >\n <div className=\"flex items-center justify-between gap-1\">\n <div className=\"flex-1 relative\">\n <button\n className=\"text-gray-medium w-full truncate px-3 py-2 text-left text-sm/6 font-semibold hover:text-wordpress\"\n onClick={() => {\n onSwitch(active?.id, { ...active });\n setActive(item);\n }}\n onDoubleClick={() => {\n setRename({ id: item.id, title: item.title || '' });\n }}\n >\n {isSaving && rename.id === item.id ? (\n <span className=\"animate-pulse text-gray-medium\">\n {rename.title} {renderBadge(item)}\n </span>\n ) : (\n <span className=\"text-gray-medium\">\n {item.title || 'Untitled'} {renderBadge(item)}\n </span>\n )}\n </button>\n {rename.id === item.id && !isSaving && (\n <TextControl\n className=\"absolute left-1 top-0 w-[calc(100%-.5rem)] h-full\"\n inputClassName=\"w-full\"\n defaultValue={rename.title}\n onChange={(value) =>\n setRename({ ...rename, title: value })\n }\n ref={textRef}\n onBlur={() => handleRenameBlur(rename.title)}\n />\n )}\n </div>\n {renderItemActions && (\n <div className=\"flex gap-1 pr-1\">\n {renderItemActions(item)}\n </div>\n )}\n </div>\n {renderItemContent &&\n renderItemContent(item, item.id === active?.id)}\n </li>\n ))}\n </ul>\n </li>\n )}\n </ul>\n <div\n className={classNames(\n 'flex flex-wrap justify-center gap-2 p-2',\n footerSlotClassName\n )}\n >\n {footerSlot}\n <Button\n onClick={handleAdd}\n icon={<PlusIcon className=\"h-4 w-4\" />}\n variant=\"tertiary\"\n size=\"compact\"\n >\n Add\n </Button>\n <Button\n onClick={handleRemove}\n icon={<TrashIcon className=\"h-4 w-4\" />}\n variant=\"tertiary\"\n size=\"compact\"\n disabled={!active || data.length === 0}\n >\n Remove\n </Button>\n </div>\n </div>\n );\n};\n\nexport default DataItemList;\n","import { useEffect, useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { Wrap } from './Wrap.js';\n\ntype DisappearingMessageProps = {\n message?: string;\n className?: string;\n duration?: number;\n children?: React.ReactNode;\n show: boolean;\n onClose?: () => void;\n};\n\nexport const DisappearingMessage = ({\n duration = 3000,\n className,\n children,\n show,\n message,\n onClose,\n}: DisappearingMessageProps) => {\n const [isShowing, setIsShowing] = useState(false);\n const hasMounted = useRef(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n hasMounted.current = true;\n }, []);\n\n useEffect(() => {\n if (!hasMounted.current) return;\n\n if (show) {\n setIsShowing(true);\n timeoutRef.current = setTimeout(() => {\n setIsShowing(false);\n onClose?.();\n }, duration);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [show, duration, onClose]);\n\n if (!isShowing) return null;\n\n return (\n <Wrap\n important\n className={classNames('bb-ui__disappearing-message', className)}\n >\n <div className=\"bb-ui__disappearing-message__content\">\n {message ?? children}\n </div>\n </Wrap>\n );\n};\n","export const Icon = ({ icon, ...rest }) => {\n if (!icon) return null;\n\n const IconComponent = icon;\n\n // icon should be a valid function\n if (typeof icon === 'function') {\n return <IconComponent {...rest} />;\n }\n\n /* eslint-disable no-console */\n console.error(\n `[BlockBite:Icon] You passed a JSX element (<Icon />) instead of a component reference (Icon).\nExpected: { icon: ColumnsIcon }\nReceived: { icon: <ColumnsIcon /> }`\n );\n\n return <div>⚠</div>;\n};\n","import { ChevronDown as ChevronDownIcon } from '@blockbite/icons';\nimport { DropdownMenu } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Icon } from './Icon.js';\n\ntype DropdownPickerProps = {\n label?: string;\n className?: string;\n value: string;\n defaultIcon?: any;\n size?: 'small' | 'medium' | 'large';\n options: {\n icon?: React.ReactElement;\n label: string;\n subtitle?: string;\n value: string;\n }[];\n onPressedChange: (value: string | null) => void; // Updated to allow `null` for reset\n [x: string]: any;\n};\n\nexport const DropdownPicker = ({\n label,\n className,\n value,\n defaultIcon = ChevronDownIcon,\n size = 'medium',\n onPressedChange,\n options,\n ...rest\n}: DropdownPickerProps) => {\n const [currentOption, setCurrentOption] = useState<string | null>(null);\n\n useEffect(() => {\n setCurrentOption(value);\n }, [value]);\n\n const allOptions = [\n ...options.map((option) => ({\n icon: option.icon,\n label: option.label,\n title: option.label,\n value: option.value,\n onClick: () => {\n setCurrentOption(option.value);\n onPressedChange(option.value);\n },\n })),\n {\n icon: <Icon icon={defaultIcon} />,\n title: 'Reset',\n value: 'reset',\n onClick: () => {\n setCurrentOption('reset');\n onPressedChange('reset');\n },\n },\n ];\n\n let iconSize = '1em';\n if (size === 'medium') {\n iconSize = '1.5em';\n } else if (size === 'large') {\n iconSize = '2em';\n }\n\n return (\n <DropdownMenu\n controls={allOptions}\n className={classNames('blockbite-ui__dropdown-picker', className)}\n icon={\n options.find((option) => option.value === currentOption)?.icon || (\n <Icon width={iconSize} height={iconSize} icon={defaultIcon} />\n )\n }\n label={label || 'Select'}\n {...rest}\n />\n );\n};\n","type Props = {\n icon?: JSX.Element;\n title: string;\n description: string;\n children?: React.ReactNode;\n size?: 'small' | 'medium';\n [key: string]: any;\n};\n\nexport function EmptyState({\n icon,\n title,\n description,\n children = null,\n size = 'medium',\n ...rest\n}: Props) {\n return (\n <div {...rest}>\n <div className=\"flex h-full w-full flex-col items-center justify-center text-center !font-sans\">\n <div className=\"max-w-sm\">\n {icon && <div className=\"mx-auto !text-gray-400\">{icon}</div>}\n <h3\n className={`text-gray-medium !mt-2 !mb-0 !font-sans !font-medium !normal-case ${size === 'small' ? '!text-sm' : '!text-lg'}`}\n >\n {title}\n </h3>\n <p\n className={`!mt-1 !font-sans !text-sm !text-gray-500 ${size === 'small' ? '!text-xs' : '!text-sm'}`}\n >\n {description}\n </p>\n {children && <div className=\"mt-4\">{children}</div>}\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef, useState } from '@wordpress/element';\n\ntype DraggablePanelProps = {\n children: React.ReactNode;\n};\n\nexport function FloatingPanel({\n children,\n}: DraggablePanelProps & {\n children: React.ReactNode;\n}) {\n const panelRef = useRef(null);\n const [position, setPosition] = useState({ x: 100, y: 100 });\n const [dragging, setDragging] = useState(false);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n\n useEffect(() => {\n const handleMouseMove = (e) => {\n if (dragging) {\n setPosition({\n x: e.clientX - offset.x,\n y: e.clientY - offset.y,\n });\n }\n };\n\n const handleMouseUp = () => setDragging(false);\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }, [dragging, offset]);\n\n const startDragging = (e) => {\n const rect = panelRef.current.getBoundingClientRect();\n setOffset({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setDragging(true);\n };\n\n return (\n <div>\n <div\n ref={panelRef}\n className=\"fixed bg-white shadow-xl rounded-2xl p-4 w-[400px] h-[550px] z-[9999]\"\n style={{ left: position.x, top: position.y }}\n >\n {children}\n <div\n className=\"absolute top-1 right-1 cursor-move w-5 h-5 bg-gray-300 rounded\"\n onMouseDown={startDragging}\n ></div>\n </div>\n </div>\n );\n}\n","import { FocalPointPicker } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\ntype FocalPointControlProps = {\n value: string;\n onValueChange: (value: string) => void;\n url?: string;\n};\n\nfunction parseFocal(value?: string) {\n // Default if empty/invalid\n const fallback = { x: 0.5, y: 0.5 };\n\n if (!value || !value.includes('%')) return fallback;\n\n const cleaned = value.replace('[', '').replace('%]', '');\n const parts = cleaned.split('_');\n if (parts.length !== 2) return fallback;\n\n const x = parseFloat(parts[0]) / 100;\n const y = parseFloat(parts[1]) / 100;\n\n if (!Number.isFinite(x) || !Number.isFinite(y)) return fallback;\n\n // Clamp to [0,1]\n return {\n x: Math.min(1, Math.max(0, x)),\n y: Math.min(1, Math.max(0, y)),\n };\n}\n\nfunction formatFocal(fp: { x: number; y: number }) {\n return `[${(fp.x * 100).toFixed(2)}%_${(fp.y * 100).toFixed(2)}%]`;\n}\n\nexport const FocalPointControl: React.FC<FocalPointControlProps> = ({\n value,\n onValueChange,\n url,\n}) => {\n const focalPoint = useMemo(() => parseFocal(value), [value]);\n\n const handleChange = useCallback(\n (next: { x: number; y: number }) => {\n onValueChange(formatFocal(next));\n },\n [onValueChange]\n );\n\n return (\n <Wrap className=\"relative flex flex-col\">\n <FocalPointPicker\n url={url}\n value={focalPoint}\n onDrag={handleChange}\n onChange={handleChange}\n />\n </Wrap>\n );\n};\n\nexport default FocalPointControl;\n","// Popover.tsx\nimport { Cross2 } from '@blockbite/icons';\nimport { Button, Popover as WordpressPopover } from '@wordpress/components';\n\ntype PopoverProps = {\n children: React.ReactNode;\n className?: string;\n position?: any;\n visible: boolean; // controlled\n anchor?: HTMLElement | null; // anchor element for positioning\n onClose?: () => void; // simple close callback\n onVisibleChange?: (value: boolean) => void; // compatibility with old API\n offset?: number;\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n className,\n position,\n visible,\n anchor,\n onClose,\n onVisibleChange,\n offset,\n}) => {\n if (!visible) return null;\n\n const handleClose = () => {\n onClose?.();\n onVisibleChange?.(false);\n };\n\n return (\n <WordpressPopover\n position={position}\n className=\"blockbite-ui__popover\"\n anchor={anchor}\n onFocusOutside={handleClose}\n offset={offset}\n onKeyDown={(e: React.KeyboardEvent) => {\n if (e.key === 'Escape') handleClose();\n }}\n >\n <div className={className}>\n <div className=\"relative h-full w-full p-4\">\n <Button\n onClick={handleClose}\n size=\"small\"\n className=\"close-button absolute right-2 top-2 !p-0 !min-w-0 !h-6 w-6 inline-flex items-center justify-center\"\n >\n <Cross2 className=\"w-4 h-4\" />\n </Button>\n {children}\n </div>\n </div>\n </WordpressPopover>\n );\n};\n\nexport default Popover;\n","import { SelectControl as WordpressSelect } from '@wordpress/components';\n\ntype SelectControlWrapperProps = {\n value: string;\n children?: any;\n options: any[];\n label?: string;\n emptyLabel?: string;\n disabled?: boolean;\n onChange?: (value: string) => void;\n className?: string; // allow styling on the wrapper\n};\n\nexport const SelectControlWrapper = ({\n onChange,\n value,\n options,\n label = '',\n disabled = false,\n emptyLabel = 'No options available',\n className,\n}: SelectControlWrapperProps) => {\n const handleChange = (val: string) => {\n if (onChange) {\n onChange(val);\n }\n };\n\n return (\n <div className={className}>\n {options && options.length > 0 ? (\n <WordpressSelect\n __nextHasNoMarginBottom\n label={label || ''}\n value={value || ''}\n disabled={disabled}\n onChange={handleChange}\n options={[\n { value: '', label: 'Select an option' },\n // safeguard: map options to value/label\n ...options.map((o) => ({ value: o.value, label: o.label })),\n ]}\n />\n ) : (\n <p className=\"text-sm text-gray-500 !mb-0\">{emptyLabel}</p>\n )}\n </div>\n );\n};\n","// GradientSwatchPicker.tsx\n\nimport {\n Button,\n ColorIndicator,\n ColorPicker,\n TextControl,\n} from '@wordpress/components';\nimport { useCallback, useRef, useState } from '@wordpress/element';\nimport { ButtonToggleGroup } from './ButtonToggle.js';\nimport { ChapterHeading } from './ChapterHeading.js';\nimport Popover from './Popover.js';\nimport { SelectControlWrapper } from './SelectControlWrapper.js';\n//\n// Types\n//\n\nexport type PaletteColor = {\n name: string; // \"primary\"\n color: string; // \"#f3ff4a\"\n value: string; // \"primary\" (tailwind token)\n};\n\ntype GradientKind = 'linear' | 'radial';\n\ntype Direction =\n | 'to-t'\n | 'to-tr'\n | 'to-r'\n | 'to-br'\n | 'to-b'\n | 'to-bl'\n | 'to-l'\n | 'to-tl';\n\ntype StopRole = 'from' | 'via' | 'to';\n\ntype GradientStop = {\n id: string;\n role: StopRole;\n colorToken: string; // Tailwind color token, e.g. \"primary\", \"neutral\", \"[#ff0000]\"\n position: number; // 0–100 (%)\n opacity: number; // 0–100 (%)\n};\n\nexport type TailwindGradientValue = {\n kind: GradientKind;\n direction: Direction; // used for linear\n stops: GradientStop[];\n};\n\nexport type GradientSwatchPickerProps = {\n colors: PaletteColor[];\n activeOptionValue?: any;\n onChange?: (nextClassGroups: any) => void;\n onGradientChange?: (value: TailwindGradientValue) => void;\n};\n\n//\n// Tailwind direction helpers\n//\n\nconst directionToClass: Record<Direction, string> = {\n 'to-t': 'bg-gradient-to-t',\n 'to-tr': 'bg-gradient-to-tr',\n 'to-r': 'bg-gradient-to-r',\n 'to-br': 'bg-gradient-to-br',\n 'to-b': 'bg-gradient-to-b',\n 'to-bl': 'bg-gradient-to-bl',\n 'to-l': 'bg-gradient-to-l',\n 'to-tl': 'bg-gradient-to-tl',\n};\n\nconst classToDirection: Record<string, Direction> = Object.keys(\n directionToClass\n).reduce(\n (acc, dir) => {\n const cls = directionToClass[dir as Direction];\n acc[cls] = dir as Direction;\n return acc;\n },\n {} as Record<string, Direction>\n);\n\nconst directionToAngle: Record<Direction, number> = {\n 'to-t': 0,\n 'to-tr': 45,\n 'to-r': 90,\n 'to-br': 135,\n 'to-b': 180,\n 'to-bl': 225,\n 'to-l': 270,\n 'to-tl': 315,\n};\n\nconst RADIAL_CLASS = 'bg-radial';\nconst DEFAULT_LINEAR_COORDS = {\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n};\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\n//\n// Color helpers\n//\n\n// token can be \"primary\", \"primary/50\", \"[#ff0000]\" or \"[#ff0000]/50\"\nfunction parseToken(\n palette: PaletteColor[],\n token: string\n): { hex: string | null; baseToken: string; opacityFromToken: number | null } {\n if (!token) return { hex: null, baseToken: token, opacityFromToken: null };\n\n const [base, opacityPart] = token.split('/');\n const opacityFromToken =\n opacityPart != null ? clamp(parseInt(opacityPart, 10) || 0, 0, 100) : null;\n\n let hex: string | null = null;\n\n if (base.startsWith('[') && base.endsWith(']')) {\n hex = base.slice(1, -1);\n } else {\n const found = palette.find((c) => c.value === base);\n hex = found?.color ?? null;\n }\n\n return { hex, baseToken: base, opacityFromToken };\n}\n\nfunction buildToken(baseToken: string, opacity?: number): string {\n if (opacity != null && opacity < 100) {\n return `${baseToken}/${clamp(opacity, 0, 100)}`;\n }\n return baseToken;\n}\n\nfunction hexWithOpacity(hex: string, opacity: number): string {\n // hex: \"#rrggbb\"\n const o = clamp(opacity, 0, 100) / 100;\n const clean = hex.replace('#', '');\n const r = parseInt(clean.slice(0, 2), 16);\n const g = parseInt(clean.slice(2, 4), 16);\n const b = parseInt(clean.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${o})`;\n}\n\n//\n// Gradient CSS for preview\n//\n\nfunction gradientToCss(\n value: TailwindGradientValue,\n palette: PaletteColor[]\n): string {\n const sortedStops = [...value.stops].sort((a, b) => a.position - b.position);\n\n const parts = sortedStops\n .map((stop) => {\n const { hex } = parseToken(palette, stop.colorToken);\n if (!hex) return null;\n const color = hexWithOpacity(hex, stop.opacity ?? 100);\n return `${color} ${stop.position}%`;\n })\n .filter(Boolean)\n .join(', ');\n\n if (value.kind === 'radial') {\n return `radial-gradient(circle, ${parts})`;\n }\n\n const angle = directionToAngle[value.direction] ?? 90;\n return `linear-gradient(${angle}deg, ${parts})`;\n}\n\n//\n// Class groups <-> TailwindGradientValue\n//\n// Expected / emitted groups:\n//\n// 'gradient-direction': 'bg-gradient-to-r' | 'bg-radial'\n// 'gradient-from': [{ from: 'primary/100' }]\n// 'gradient-from-pos': [{ from: '0%' }]\n// 'gradient-via': [{ via: 'neutral/80' }, ...]\n// 'gradient-via-pos': [{ via: '30%' }, ...]\n// 'gradient-to': [{ to: 'neutral/100' }]\n// 'gradient-to-pos': [{ to: '100%' }]\n//\n\n// Helper to parse position values from both [X%] and X% formats\nfunction parsePositionValue(v?: string): number | undefined {\n if (!v) return undefined;\n let cleaned = String(v);\n if (cleaned.startsWith('[') && cleaned.endsWith(']')) {\n cleaned = cleaned.slice(1, -1); // Remove brackets\n }\n const n = parseFloat(cleaned.replace('%', ''));\n return Number.isFinite(n) ? Math.min(100, Math.max(0, n)) : undefined;\n}\n\nexport function classGroupsToGradientValue(\n groups: Record<string, any> | null | undefined,\n palette: PaletteColor[]\n): TailwindGradientValue | null {\n if (!groups) return null;\n\n const directionClass = groups['gradient-direction'] as string | undefined;\n\n const kind: GradientKind =\n directionClass === RADIAL_CLASS ? 'radial' : 'linear';\n\n const direction: Direction =\n kind === 'radial'\n ? 'to-r'\n : directionClass\n ? classToDirection[directionClass] || 'to-r'\n : 'to-r';\n\n const stops: GradientStop[] = [];\n\n const fromGroup = groups['gradient-from']?.[0];\n const fromPosGroup = groups['gradient-from-pos']?.[0];\n if (fromGroup?.from) {\n const token = String(fromGroup.from);\n const { opacityFromToken } = parseToken(palette, token);\n stops.push({\n id: 'from',\n role: 'from',\n colorToken: token,\n position: parsePositionValue(fromPosGroup?.from) ?? 0,\n opacity: opacityFromToken ?? 100,\n });\n }\n\n const viaGroup = groups['gradient-via'] || [];\n const viaPosGroup = groups['gradient-via-pos'] || [];\n viaGroup.forEach((viaItem: any, index: number) => {\n const token = String(viaItem.via);\n const { opacityFromToken } = parseToken(palette, token);\n const pos = viaPosGroup[index]?.via;\n stops.push({\n id: `via-${index}`,\n role: 'via',\n colorToken: token,\n position: parsePositionValue(pos) ?? 50,\n opacity: opacityFromToken ?? 100,\n });\n });\n\n const toGroup = groups['gradient-to']?.[0];\n const toPosGroup = groups['gradient-to-pos']?.[0];\n if (toGroup?.to) {\n const token = String(toGroup.to);\n const { opacityFromToken } = parseToken(palette, token);\n stops.push({\n id: 'to',\n role: 'to',\n colorToken: token,\n position: parsePositionValue(toPosGroup?.to) ?? 100,\n opacity: opacityFromToken ?? 100,\n });\n }\n\n if (!stops.length) return null;\n\n return { kind, direction, stops: normalizeStops(stops) };\n}\n\nexport function gradientValueToClassGroups(\n value: TailwindGradientValue\n): Record<string, any> {\n const groups: Record<string, any> = {};\n\n groups['gradient-direction'] =\n value.kind === 'radial' ? RADIAL_CLASS : directionToClass[value.direction];\n\n const sorted = normalizeStops(value.stops);\n\n const from = sorted.find((s) => s.role === 'from');\n const to = sorted.find((s) => s.role === 'to');\n const vias = sorted.filter((s) => s.role === 'via');\n\n if (from) {\n groups['gradient-from'] = [\n { from: buildToken(from.colorToken, from.opacity) },\n ];\n groups['gradient-from-pos'] = [{ from: `${from.position}%` }];\n }\n\n if (to) {\n groups['gradient-to'] = [{ to: buildToken(to.colorToken, to.opacity) }];\n groups['gradient-to-pos'] = [{ to: `${to.position}%` }];\n }\n\n if (vias.length) {\n groups['gradient-via'] = vias.map((v) => ({\n via: buildToken(v.colorToken, v.opacity),\n }));\n groups['gradient-via-pos'] = vias.map((v) => ({\n via: `${v.position}%`,\n }));\n }\n\n return groups;\n}\n\nexport function gradientDirectionToCoords(direction: Direction): {\n x1: string;\n y1: string;\n x2: string;\n y2: string;\n} {\n switch (direction) {\n case 'to-t':\n return { x1: '0%', y1: '100%', x2: '0%', y2: '0%' };\n case 'to-tr':\n return { x1: '0%', y1: '100%', x2: '100%', y2: '0%' };\n case 'to-r':\n return { x1: '0%', y1: '0%', x2: '100%', y2: '0%' };\n case 'to-br':\n return { x1: '0%', y1: '0%', x2: '100%', y2: '100%' };\n case 'to-b':\n return { x1: '0%', y1: '0%', x2: '0%', y2: '100%' };\n case 'to-bl':\n return { x1: '100%', y1: '0%', x2: '0%', y2: '100%' };\n case 'to-l':\n return { x1: '100%', y1: '0%', x2: '0%', y2: '0%' };\n case 'to-tl':\n return { x1: '100%', y1: '100%', x2: '0%', y2: '0%' };\n default:\n return DEFAULT_LINEAR_COORDS;\n }\n}\n\nexport function gradientArrayToClassGroups(\n items: Array<{ id: string; value: string }> = []\n): Record<string, any> {\n const groups: Record<string, any> = {};\n items.forEach((item) => {\n if (!item?.id) return;\n if (item.id === 'gradient-direction') {\n groups['gradient-direction'] = item.value;\n return;\n }\n if (item.id === 'gradient-from') {\n groups['gradient-from'] = [{ from: item.value }];\n return;\n }\n if (item.id === 'gradient-from-pos') {\n groups['gradient-from-pos'] = [{ from: item.value }];\n return;\n }\n if (item.id === 'gradient-to') {\n groups['gradient-to'] = [{ to: item.value }];\n return;\n }\n if (item.id === 'gradient-to-pos') {\n groups['gradient-to-pos'] = [{ to: item.value }];\n return;\n }\n if (item.id === 'gradient-via') {\n const list = groups['gradient-via'] || [];\n groups['gradient-via'] = [...list, { via: item.value }];\n return;\n }\n if (item.id === 'gradient-via-pos') {\n const list = groups['gradient-via-pos'] || [];\n groups['gradient-via-pos'] = [...list, { via: item.value }];\n }\n });\n return groups;\n}\n\nexport function gradientArrayToClassString(\n items: Array<{ id: string; value: string }> = []\n): string {\n return items\n .map((item) => {\n if (!item?.id || !item?.value) return '';\n if (item.id === 'gradient-direction') return item.value;\n if (item.id === 'gradient-from') return `from-${item.value}`;\n if (item.id === 'gradient-from-pos') return `from-${item.value}`;\n if (item.id === 'gradient-via') return `via-${item.value}`;\n if (item.id === 'gradient-via-pos') return `via-${item.value}`;\n if (item.id === 'gradient-to') return `to-${item.value}`;\n if (item.id === 'gradient-to-pos') return `to-${item.value}`;\n return '';\n })\n .filter(Boolean)\n .join(' ');\n}\n\nexport function resolveGradientStopColor(\n token: string,\n prefix: 'color' | 'bb-color' = 'color'\n): string {\n const raw = String(token || '');\n const base = raw.split('/')[0] || '';\n if (base.startsWith('[') && base.endsWith(']')) {\n return base.slice(1, -1);\n }\n if (base.startsWith('var(')) {\n const targetPrefix = prefix === 'bb-color' ? '--bb-color-' : '--color-';\n return base.replace('--color-', targetPrefix);\n }\n const cssToken = base.replace(/\\./g, '-');\n const varPrefix = prefix === 'bb-color' ? '--bb-color-' : '--color-';\n return `var(${varPrefix}${cssToken})`;\n}\n\n// Convenience mappers for consumers\nexport function gradientClassGroupsToArray(\n groups: Record<string, any>\n): Array<{ id: string; value: string }> {\n const out: Array<{ id: string; value: string }> = [];\n const obj = groups || {};\n Object.keys(obj).forEach((key) => {\n const val = obj[key];\n if (key === 'gradient-direction' && typeof val === 'string') {\n out.push({ id: key, value: val });\n return;\n }\n if (Array.isArray(val)) {\n val.forEach((entry) => {\n const role = entry.from\n ? 'from'\n : entry.via\n ? 'via'\n : entry.to\n ? 'to'\n : undefined;\n if (!role) return;\n let value = entry[role];\n if (key.endsWith('-pos') && typeof value === 'string') {\n const num = parseFloat(String(value).replace('%', ''));\n if (!Number.isNaN(num)) {\n // Use arbitrary value syntax for Tailwind 4 compatibility\n // Format: [X%] where X is rounded to avoid overly precise decimals\n const rounded = Math.round(num * 100) / 100;\n value = `[${rounded}%]`;\n }\n }\n out.push({ id: key, value });\n });\n }\n });\n return out;\n}\n\nexport function gradientValueToArray(\n value: TailwindGradientValue\n): Array<{ id: string; value: string }> {\n return gradientClassGroupsToArray(gradientValueToClassGroups(value));\n}\n\nexport const arrayToGradient = (\n arr: Array<{ id: string; value: string; selector?: string }>\n): TailwindGradientValue => {\n // Filter out empty values up-front to avoid creating phantom stops\n const items = Array.isArray(arr)\n ? arr.filter((i) => String(i?.value ?? '').trim() !== '')\n : [];\n\n // If there are no items at all, bail out immediately before any assignments\n if (items.length === 0) {\n return null as unknown as TailwindGradientValue;\n }\n\n // Detect if the incoming array is the new gradient group format\n // If so, and there are no meaningful values, return null so the\n // consumer can fall back to a sane default (2 stops)\n const raw = Array.isArray(arr) ? arr : [];\n const hasGradientGroupIds = raw.some((i) =>\n [\n 'gradient-direction',\n 'gradient-from',\n 'gradient-from-pos',\n 'gradient-via',\n 'gradient-via-pos',\n 'gradient-to',\n 'gradient-to-pos',\n ].includes(i?.id as string)\n );\n\n // Prefer id-based reconstruction from classGroup-like array\n const get = (id: string) => items.filter((i) => i.id === id);\n\n // If this looks like gradient group data but has no meaningful values, bail out early\n if (hasGradientGroupIds) {\n const hasAnyValues = Boolean(\n get('gradient-from')[0]?.value ||\n get('gradient-to')[0]?.value ||\n get('gradient-direction')[0]?.value ||\n (get('gradient-via').length &&\n get('gradient-via').some((t) => !!t.value)) ||\n get('gradient-from-pos')[0]?.value ||\n get('gradient-to-pos')[0]?.value ||\n (get('gradient-via-pos').length &&\n get('gradient-via-pos').some((t) => !!t.value))\n );\n if (!hasAnyValues) {\n return null as unknown as TailwindGradientValue;\n }\n }\n\n // get() already declared above\n\n const stops: GradientStop[] = [];\n\n const fromToken = get('gradient-from')[0]?.value;\n const fromPos = parsePositionValue(get('gradient-from-pos')[0]?.value);\n if (fromToken) {\n stops.push({\n id: 'from',\n role: 'from',\n colorToken: fromToken,\n position: fromPos ?? 0,\n opacity: 100,\n });\n }\n\n const viaTokens = get('gradient-via');\n const viaPos = get('gradient-via-pos');\n viaTokens.forEach((t, idx) => {\n const token = t.value;\n if (!token) return;\n const pos = parsePositionValue(viaPos[idx]?.value);\n stops.push({\n id: `via-${idx}`,\n role: 'via',\n colorToken: token,\n position: pos ?? 50,\n opacity: 100,\n });\n });\n\n const toToken = get('gradient-to')[0]?.value;\n const toPos = parsePositionValue(get('gradient-to-pos')[0]?.value);\n if (toToken) {\n stops.push({\n id: 'to',\n role: 'to',\n colorToken: toToken,\n position: toPos ?? 100,\n opacity: 100,\n });\n }\n\n if (stops.length) {\n const dirItem = get('gradient-direction')[0];\n const directionClass = dirItem?.value;\n const kind: GradientKind =\n directionClass === RADIAL_CLASS ? 'radial' : 'linear';\n const direction: Direction =\n kind === 'radial'\n ? 'to-r'\n : directionClass && classToDirection[directionClass]\n ? classToDirection[directionClass]\n : 'to-r';\n return { kind, direction, stops: normalizeStops(stops) };\n }\n\n // If this looks like gradient group data but had no values, bail out so caller can default\n // hasGradientGroupIds handled above with value presence check\n\n // Fallback: accept legacy array with selector-based roles (from-/via-/to-)\n const fallbackStops: GradientStop[] = items.map((item, idx) => {\n const sel = item?.selector ?? '';\n let role: StopRole = 'via';\n if (sel.startsWith('from-') || idx === 0) role = 'from';\n else if (sel.startsWith('to-') || idx === items.length - 1) role = 'to';\n return {\n id: item.id ?? (role === 'via' ? `via-${idx}` : role),\n role,\n colorToken: item.value,\n position: idx === 0 ? 0 : idx === items.length - 1 ? 100 : 50,\n opacity: 100,\n };\n });\n\n return {\n kind: 'linear',\n direction: 'to-r',\n stops: normalizeStops(fallbackStops),\n };\n};\n\n//\n// Stop normalization: first = from, last = to, middle = via\n//\n\nexport function normalizeStops(stops: GradientStop[]): GradientStop[] {\n const sorted = [...stops].sort((a, b) => a.position - b.position);\n if (!sorted.length) return sorted;\n\n return sorted.map((stop, index) => {\n let role: StopRole = 'via';\n if (index === 0) role = 'from';\n if (index === sorted.length - 1) role = 'to';\n return { ...stop, role };\n });\n}\n\n//\n// UI component: TailwindGradientPicker\n//\n\nexport type TailwindGradientPickerProps = {\n palette: PaletteColor[];\n value: TailwindGradientValue;\n onChange: (value: TailwindGradientValue) => void;\n};\n\nexport const TailwindGradientPicker: React.FC<TailwindGradientPickerProps> = ({\n palette,\n value,\n onChange,\n}) => {\n const trackRef = useRef<HTMLDivElement | null>(null);\n const [activeStopId, setActiveStopId] = useState<string | null>(null);\n const [popoverVisible, setPopoverVisible] = useState(false);\n const [popoverAnchor, setPopoverAnchor] = useState<HTMLElement | null>(null);\n // Local state for smooth dragging - only visual updates during drag\n const [dragState, setDragState] = useState<{\n stopId: string;\n position: number;\n } | null>(null);\n\n // Use drag position for visual preview, fall back to actual value\n const displayStops = dragState\n ? value.stops.map((s) =>\n s.id === dragState.stopId ? { ...s, position: dragState.position } : s\n )\n : value.stops;\n\n const activeStop = value.stops.find((s) => s.id === activeStopId);\n\n const updateStops = (updater: (stops: GradientStop[]) => GradientStop[]) => {\n const nextStops = normalizeStops(updater(value.stops));\n onChange({ ...value, stops: nextStops });\n };\n\n const updateStop = (id: string, patch: Partial<GradientStop>) => {\n updateStops((stops) =>\n stops.map((s) => (s.id === id ? { ...s, ...patch } : s))\n );\n };\n\n const removeStop = (id: string) => {\n // keep at least 2 stops\n if (value.stops.length <= 2) return;\n updateStops((stops) => stops.filter((s) => s.id !== id));\n };\n\n const handleTrackClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // ignore if click started on a handle\n const target = e.target as HTMLElement;\n if (target.dataset?.stopHandle === 'true') return;\n\n const track = trackRef.current;\n if (!track) return;\n const rect = track.getBoundingClientRect();\n const pos = ((e.clientX - rect.left) / rect.width) * 100;\n const position = clamp(pos, 0, 100);\n\n // nearest stop's color & opacity\n const nearest =\n value.stops.reduce(\n (best, s) =>\n Math.abs(s.position - position) < Math.abs(best.position - position)\n ? s\n : best,\n value.stops[0]\n ) ?? value.stops[0];\n\n const id = `via-${Date.now()}`;\n\n updateStops((stops) => [\n ...stops,\n {\n id,\n role: 'via',\n colorToken: nearest.colorToken,\n position,\n opacity: nearest.opacity,\n },\n ]);\n\n setActiveStopId(id);\n };\n\n const handleHandleMouseDown = (\n e: React.MouseEvent<HTMLDivElement>,\n stop: GradientStop\n ) => {\n e.stopPropagation();\n e.preventDefault();\n if (!trackRef.current) return;\n const track = trackRef.current;\n\n setActiveStopId(stop.id);\n\n const rect = track.getBoundingClientRect();\n\n const onMove = (event: MouseEvent) => {\n const raw = ((event.clientX - rect.left) / rect.width) * 100;\n const position = clamp(raw, 0, 100);\n // Only update local drag state for smooth visual feedback\n setDragState({ stopId: stop.id, position });\n };\n\n const onUp = (event: MouseEvent) => {\n window.removeEventListener('mousemove', onMove);\n window.removeEventListener('mouseup', onUp);\n // Commit the final position to the parent on mouseup\n const raw = ((event.clientX - rect.left) / rect.width) * 100;\n const position = clamp(raw, 0, 100);\n setDragState(null);\n updateStop(stop.id, { position });\n };\n\n window.addEventListener('mousemove', onMove);\n window.addEventListener('mouseup', onUp);\n };\n\n const openColorPopover = (stop: GradientStop, target: HTMLElement) => {\n setActiveStopId(stop.id);\n setPopoverAnchor(target);\n setPopoverVisible(true);\n };\n\n const handleKindChange = (kind: GradientKind) => {\n onChange({ ...value, kind });\n };\n\n const handleDirectionChange = (direction: Direction) => {\n onChange({ ...value, direction });\n };\n\n const handleColorPickerChange = useCallback(\n (color: any) => {\n if (!activeStop) return;\n const hex = typeof color === 'string' ? color : (color?.hex ?? '#000000');\n // arbitrary tailwind color: [#rrggbb]\n const baseToken = `[${hex}]`;\n updateStop(activeStop.id, { colorToken: baseToken });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeStop]\n );\n\n return (\n <div className=\"bb-gradient-picker space-y-3 text-xs\">\n {/* Kind dropdown (Linear / Radial) */}\n <div className=\"flex items-center gap-2\">\n <SelectControlWrapper\n label=\"Type\"\n options={[\n { label: 'Linear', value: 'linear' },\n { label: 'Radial', value: 'radial' },\n ]}\n value={value.kind}\n onChange={(nextKind) => handleKindChange(nextKind as GradientKind)}\n ></SelectControlWrapper>\n </div>\n\n {/* Direction buttons (for linear only) */}\n {value.kind === 'linear' && (\n <ButtonToggleGroup\n options={[\n { value: 'to-l', label: 'to-l' },\n { value: 'to-r', label: 'to-r' },\n { value: 'to-t', label: 'to-t' },\n { value: 'to-b', label: 'to-b' },\n { value: 'to-tl', label: 'to-tl' },\n { value: 'to-tr', label: 'to-tr' },\n { value: 'to-bl', label: 'to-bl' },\n { value: 'to-br', label: 'to-br' },\n ]}\n value={value.direction}\n onPressedChange={(dir) => handleDirectionChange(dir as Direction)}\n ></ButtonToggleGroup>\n )}\n\n {/* Gradient track with draggable handles */}\n <div\n ref={trackRef}\n className=\"relative h-8 w-full cursor-crosshair rounded border\"\n style={{\n backgroundImage: gradientToCss(\n { ...value, stops: displayStops },\n palette\n ),\n }}\n onMouseDown={handleTrackClick}\n >\n {displayStops.map((stop) => (\n <div\n key={stop.id}\n data-stop-handle=\"true\"\n className=\"absolute top-1/2 h-4 w-4 rounded-full -translate-y-1/2 -translate-x-1/2 cursor-pointer ring-2 ring-border\"\n style={{\n left: `${stop.position}%`,\n backgroundColor: stop.colorToken.startsWith('[')\n ? stop.colorToken.slice(1, -1)\n : undefined,\n }}\n onMouseDown={(e) => handleHandleMouseDown(e, stop)}\n onClick={(e) => {\n e.stopPropagation();\n setActiveStopId(stop.id);\n }}\n />\n ))}\n </div>\n\n {/* Stops table (Figma-like) */}\n <div className=\"space-y-1\">\n <div className=\"flex items-start justify-between text-[10px] font-semibold uppercase\">\n <span>Stops</span>\n </div>\n\n <div className=\"space-y-1\">\n {normalizeStops(displayStops).map((stop) => {\n const { hex, baseToken } = parseToken(palette, stop.colorToken);\n return (\n <div\n key={stop.id}\n className={`flex gap-2 items-start ${\n activeStopId === stop.id ? 'bg-wp/10' : 'bg-transparent'\n }`}\n onClick={() => setActiveStopId(stop.id)}\n >\n {/* Position */}\n <TextControl\n className=\"w-16 h-6\"\n __nextHasNoMarginBottom\n value={String(Math.round(stop.position))}\n onChange={(val: string) => {\n const num = clamp(parseFloat(val) || 0, 0, 100);\n updateStop(stop.id, { position: num });\n }}\n type=\"text\"\n suffix=\"%\"\n />\n\n {/* Color cell (indicator + token) */}\n <button\n type=\"button\"\n className=\"flex w-16 h-[32px] items-center gap border border-border\"\n onClick={(e) =>\n openColorPopover(stop, e.currentTarget as HTMLElement)\n }\n >\n <ColorIndicator\n colorValue={hex ?? '#000000'}\n className=\"!h-4 !w-4\"\n />\n <span className=\"truncate text-[11px]\">{baseToken}</span>\n </button>\n\n {/* Opacity */}\n <TextControl\n __nextHasNoMarginBottom\n className=\"w-12\"\n value={String(Math.round(stop.opacity))}\n onChange={(val: string) => {\n const num = clamp(parseFloat(val) || 0, 0, 100);\n updateStop(stop.id, { opacity: num });\n }}\n type=\"text\"\n suffix=\"%\"\n />\n\n {/* Remove */}\n <Button\n type=\"button\"\n className=\"flex h-6 w-6 items-center justify-center rounded border text-xs\"\n onClick={() => removeStop(stop.id)}\n disabled={value.stops.length <= 1}\n >\n –\n </Button>\n </div>\n );\n })}\n </div>\n </div>\n\n {/* Color popover: palette + ColorPicker */}\n <Popover\n visible={popoverVisible && !!activeStop}\n anchor={popoverAnchor}\n onClose={() => setPopoverVisible(false)}\n position=\"bottom center\"\n offset={8}\n >\n {activeStop && (\n <div className=\"space-y-3\">\n <ChapterHeading title=\"Theme tokens\" />\n {/* Palette swatches */}\n <div className=\"flex flex-wrap gap-1 max-w-[200px]\">\n {palette.map((c) => (\n <button\n key={c.value}\n type=\"button\"\n className=\"flex h-6 w-6 items-center justify-center rounded-full border\"\n onClick={() =>\n updateStop(activeStop.id, {\n colorToken: c.value,\n })\n }\n >\n <ColorIndicator\n colorValue={c.color}\n className=\"!h-5 !w-5 !rounded-full\"\n />\n </button>\n ))}\n </div>\n\n {/* Color picker (writes arbitrary color as [#hex]) */}\n <ColorPicker\n color={\n parseToken(palette, activeStop.colorToken).hex ?? '#000000'\n }\n onChange={handleColorPickerChange}\n />\n </div>\n )}\n </Popover>\n </div>\n );\n};\n","import classNames from 'classnames';\n\ntype LabelProps = {\n children?: React.ReactNode;\n className?: string;\n title?: string;\n};\n\nexport const Label = ({ children, title, className }: LabelProps) => {\n return (\n <span\n className={classNames(\n 'text-[11px] font-medium uppercase leading-snug flex gap-2 items-center',\n className\n )}\n >\n {title ? title : children}\n </span>\n );\n};\n","import apiFetch from '@wordpress/api-fetch';\nimport { TextControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Wrap } from './Wrap.js';\n\nexport function LinkPicker(props) {\n const [activeKeyword, setActiveKeyword] = useState('');\n const [links, setLinks] = useState<\n Array<{ id: number; url: string; title: string; post_type: string }>\n >([]);\n const [activeLink, setActiveLink] = useState({\n url: '',\n title: '',\n });\n\n useEffect(() => {\n if (activeKeyword === '') return;\n setLinks(null);\n (apiFetch as any)({\n path: `/blockbite/v1/block-helpers/get-links/${activeKeyword}`,\n }).then(\n (\n fetchedLinks: Array<{\n id: number;\n url: string;\n title: string;\n post_type: string;\n }> | null\n ) => {\n if (fetchedLinks?.length) {\n setLinks([...fetchedLinks]);\n } else {\n setLinks([]);\n }\n }\n );\n }, [activeKeyword]);\n\n useEffect(() => {\n if (activeLink.url !== '') {\n props.parentCallback(activeLink);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeLink]);\n\n return (\n <Wrap className=\"blockbite--editor-linkwrap\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={__('Search link', 'blockbitelinks')}\n value={activeKeyword}\n placeholder=\"Example: About\"\n onChange={(value) => setActiveKeyword(value)}\n help={__('Type a post, page, title', 'blockbitelinks')}\n />\n {activeKeyword ? (\n <div className=\"blockbite--editor-linklist\">\n <LinkList\n links={links}\n onActiveLink={(link) => [\n setActiveLink({ ...link }),\n setActiveKeyword(''),\n ]}\n />\n </div>\n ) : null}\n </Wrap>\n );\n}\nfunction LinkList({ links, onActiveLink }) {\n if (links === null) {\n return <p>Loading...</p>;\n } else if (links.length === 0) {\n return <p>No Results</p>;\n }\n\n const list = links.map((link) => (\n <Wrap key={link.id}>\n <span\n className=\"blockbite--editor-link\"\n onClick={() => onActiveLink(link)}\n >\n dwddw\n <span>{link.title}</span>\n <span className=\"blockbite--preview-link\">{link.url}</span>\n <span className=\"blockbite--preview-link\">{link.post_type}</span>\n </span>\n </Wrap>\n ));\n\n return <>{list}</>; // ✅ Wrapped\n}\n","import { MediaUpload, MediaUploadCheck } from '@wordpress/block-editor';\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport classNames from 'classnames';\n\nexport function MediaPicker({ mediaProps, mediaCallback, className }: any) {\n const allowedTypes = [\n 'image',\n 'video',\n 'image/svg+xml',\n 'svg',\n 'text/plain',\n 'application/json',\n ];\n\n const media = mediaProps || {\n id: null,\n url: '',\n sizes: [],\n alt: '',\n type: '',\n width: 0,\n height: 0,\n };\n\n const removeMedia = () => {\n mediaCallback({\n id: null,\n url: '',\n sizes: [],\n alt: '',\n type: '',\n width: 0,\n height: 0,\n });\n };\n\n const onSelectMedia = (mediaItem) => {\n const safeSizes = {\n thumbnail: null,\n medium: null,\n large: null,\n };\n\n if (mediaItem?.sizes) {\n Object.values(mediaItem.sizes).forEach((size: any) => {\n if (size.width <= 768) safeSizes.thumbnail = size.url;\n if (size.width > 768 && size.width <= 1536) safeSizes.medium = size.url;\n if (size.width > 1536) safeSizes.large = size.url;\n });\n }\n\n let mediaType = mediaItem.type;\n if (mediaItem.url?.endsWith('.json')) mediaType = 'lottie';\n if (mediaItem.url?.endsWith('.svg')) mediaType = 'svg';\n\n mediaCallback({\n id: mediaItem.id,\n url: mediaItem.url,\n sizes: safeSizes,\n alt: mediaItem.alt,\n type: mediaType,\n width: mediaItem.width,\n height: mediaItem.height,\n });\n };\n\n return (\n <div className={classNames('flex items-center gap-2', className)}>\n <MediaUploadCheck>\n <MediaUpload\n onSelect={onSelectMedia}\n allowedTypes={allowedTypes}\n render={({ open }) => (\n <Button\n className={\n !media.id\n ? 'editor-post-featured-image__toggle'\n : 'editor-post-featured-image__preview'\n }\n onClick={open}\n >\n {media?.url ? (\n <div className=\"flex gap-2 items-center w-full\">\n <img\n className=\"w-10 h-10 overflow-hidden rounded-md bg-gray-100 flex items-center justify-center\"\n src={media.url}\n alt={media.alt || __('Image', 'blockbite')}\n />\n {__('Change media', 'blockbite')}\n </div>\n ) : (\n __('Select media', 'blockbite')\n )}\n </Button>\n )}\n />\n {media?.url && (\n <Button\n onClick={removeMedia}\n isDestructive\n icon=\"trash\"\n title={__('Remove media', 'blockbite')}\n />\n )}\n </MediaUploadCheck>\n </div>\n );\n}\n","import { useEffect, useState } from '@wordpress/element';\n\nimport { RangeControl as WordpressRangeControl } from '@wordpress/components';\n\nexport type RangeControlType = {\n value: string;\n label: string;\n min: number;\n max: number;\n withInputField?: boolean;\n onValueChange: (value: string) => void;\n onReset?: () => void;\n allowReset?: boolean;\n gridMode?: boolean;\n showTooltip?: boolean;\n [key: string]: any;\n};\n\nexport const RangeSlider: React.FC<RangeControlType> = ({\n value,\n label,\n min = 0,\n max = 2000,\n withInputField = false,\n onValueChange,\n onReset,\n allowReset = false,\n gridMode = false,\n showTooltip = false,\n ...props\n}) => {\n // Use a sentinel value to detect reset button clicks\n const RESET_SENTINEL = -999;\n const [resetFallbackValue] = useState(RESET_SENTINEL);\n const [rangeValue, setRangeValue] = useState<number>(0);\n\n // Sync local state with controlled value prop\n useEffect(() => {\n setRangeValue(Math.round(parseInt(value) / (gridMode ? 16 : 1)));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n // convert back to arbitrary unit\n function handleRangeUpdate(val: number) {\n // Detect reset button click via sentinel value\n if (val === RESET_SENTINEL) {\n // Call the onReset callback if provided\n if (onReset) {\n onReset();\n } else {\n onValueChange('');\n }\n return;\n }\n\n const gridValue = val * (gridMode ? 16 : 1);\n onValueChange(gridValue.toString());\n }\n\n return (\n <div className=\"flex flex-col\">\n <WordpressRangeControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={label}\n value={rangeValue}\n min={min}\n max={max}\n showTooltip={showTooltip}\n withInputField={withInputField}\n allowReset={allowReset}\n onChange={(val) => {\n setRangeValue(val);\n handleRangeUpdate(val);\n }}\n resetFallbackValue={resetFallbackValue}\n {...props}\n />\n <span>{gridMode ? `${rangeValue * 16}px` : null} </span>\n </div>\n );\n};\n","import {\n ColorWheel as ColorWheelIcon,\n InfoCircled as InfoCircledIcon,\n ListBullet as ListBulletIcon,\n Percentage as PercentageIcon,\n Slider as SliderIcon,\n Tailwind as TailwindUnitIcon,\n} from '@blockbite/icons';\nimport {\n Button,\n __experimentalInputControl as InputControl,\n __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useEffect, useMemo, useRef, useState } from '@wordpress/element';\nimport { ButtonToggleGroup } from './ButtonToggle.js';\nimport { ChapterHeading } from './ChapterHeading.js';\nimport { Popover } from './Popover.js';\nimport { RangeSlider } from './RangeSlider.js';\n\ntype MetricsControlProps = {\n value: string;\n inputClassName?: string;\n classGroupControl?: any;\n onValueChange: (value: string) => void;\n tailwindUi?: any;\n getThemeOptions?: any;\n};\n\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\nconst shadowRegex =\n /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = (value: string) => fractionRegex.test(value);\nconst isNumber = (value: string) => !!value && !Number.isNaN(Number(value));\nconst isPercent = (value: string) =>\n !!value && value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = (value: string) => tshirtUnitRegex.test(value);\nconst CSS_UNITS = [\n { value: 'px', label: 'Pixels' },\n { value: 'rem', label: 'Root EM' },\n { value: 'em', label: 'Relative to font size' },\n { value: '%', label: 'Percentage' },\n { value: 'vh', label: 'Viewport Height' },\n { value: 'vw', label: 'Viewport Width' },\n { value: 'ch', label: 'Character Width' },\n { value: 'ex', label: 'x-height' },\n { value: 'dvh', label: 'Dynamic Viewport Height' },\n { value: 'dvw', label: 'Dynamic Viewport Width' },\n { value: 'svh', label: 'Small Viewport Height' },\n { value: 'svw', label: 'Small Viewport Width' },\n { value: 'lvh', label: 'Large Viewport Height' },\n { value: 'lvw', label: 'Large Viewport Width' },\n];\n\nexport const MetricsControl: React.FC<MetricsControlProps> = ({\n value: propValue,\n onValueChange,\n inputClassName = '',\n classGroupControl,\n tailwindUi = {},\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [localUnit, setLocalUnit] = useState<string>('arbitrary');\n const [localText, setLocalText] = useState<string>('');\n const [rawValue, setRawValue] = useState<string>('');\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Manual overrides from uiSchema\n const {\n manualFraction,\n manualOptions,\n manualRange,\n manualCssVars,\n manualArbitrary,\n placeholder,\n } = classGroupControl?.metadata || {\n manualFraction: true,\n manualOptions: true,\n manualRange: true,\n manualCssVars: true,\n manualArbitrary: true,\n placeholder: '0',\n };\n\n // Allow min/max override for RangeSlider\n const rangeMin = classGroupControl?.metadata?.rangeMin ?? 0;\n const rangeMax = classGroupControl?.metadata?.rangeMax ?? 100;\n\n useEffect(() => {\n setLocalText(getUserFriendlyValue(propValue));\n setRawValue(propValue);\n setLocalUnit(detectUnitFromRawValue(propValue));\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [propValue]);\n\n const normOptions = useMemo(\n () => classGroupControl?.options || [],\n [classGroupControl?.options]\n );\n const supportsArbitrary = useMemo(\n () =>\n hasValidator(classGroupControl?.validators, [\n 'isArbitraryVariable',\n 'isArbitraryValue',\n 'themeGetter',\n ]),\n [classGroupControl?.validators]\n );\n const supportsFraction = useMemo(\n () => hasValidator(classGroupControl?.validators, ['isFraction']),\n [classGroupControl?.validators]\n );\n const supportsTheme = useMemo(\n () => hasValidator(classGroupControl?.validators, ['themeGetter']),\n [classGroupControl?.validators]\n );\n\n function hasValidator(validators: any[] | undefined, names: string[]) {\n if (!validators) return false;\n return validators.some((v) => {\n if (typeof v === 'function' && typeof v.name === 'string') {\n return names.includes(v.name);\n }\n return false;\n });\n }\n\n const getUserFriendlyValue = (raw: string): string => {\n if (!raw) return '';\n\n const arbMatch = raw.match(arbitraryValueRegex);\n if (arbMatch) return arbMatch[2];\n const varMatch = raw.match(arbitraryVariableRegex);\n if (varMatch) return varMatch[2];\n return raw;\n };\n\n const getRawValue = (userFriendly: string): string => {\n if (!userFriendly) return '';\n\n const trimmed = userFriendly.trim();\n\n if (normOptions.some((o) => String(o.value) === trimmed)) return trimmed;\n if (trimmed.startsWith('--')) return `(${trimmed})`;\n\n // For bare numbers: wrap in brackets only if no themeProvider exists\n // (themeProvider means numeric values are valid theme tokens like w-24)\n if (isNumber(trimmed) && !lengthUnitRegex.test(trimmed)) {\n const hasThemeProvider =\n classGroupControl?.themeProvider &&\n Array.isArray(classGroupControl.themeProvider) &&\n classGroupControl.themeProvider.length > 0;\n return hasThemeProvider ? trimmed : `[${trimmed}]`;\n }\n\n if (lengthUnitRegex.test(trimmed)) return `[${trimmed}]`;\n return userFriendly;\n };\n\n const detectUnitFromRawValue = (raw: string): string => {\n const trimmed = (raw || '').trim();\n if (normOptions.some((o) => String(o.value) === trimmed)) return 'list';\n if (trimmed.startsWith('--')) return 'arbitrary';\n if (isFraction(trimmed)) return 'fraction';\n if (arbitraryValueRegex.test(trimmed)) return 'arbitrary';\n if (isNumber(trimmed) && !lengthUnitRegex.test(trimmed)) return 'native';\n if (isPercent(trimmed) || lengthUnitRegex.test(trimmed)) return 'arbitrary';\n if (isTshirtSize(trimmed)) return 'native';\n if (colorFunctionRegex.test(trimmed) || /^#([0-9a-f]{3,8})$/i.test(trimmed))\n return 'color';\n if (shadowRegex.test(trimmed) || imageRegex.test(trimmed))\n return 'arbitrary';\n return 'arbitrary';\n };\n\n const isValidValue = (raw: string): boolean => {\n if (raw === '') return true; // Allow empty value for deselection\n if (isNumber(raw)) return true;\n if (arbitraryValueRegex.test(raw)) return true;\n if (arbitraryVariableRegex.test(raw)) return true;\n if (normOptions.some((o) => String(o.value) === raw)) return true;\n if (isFraction(raw) || raw === 'full') return true;\n return false;\n };\n\n const handleInputChange = (v: string) => {\n setLocalText(v);\n };\n\n const handleBlur = () => {\n const newRaw = getRawValue(localText);\n if (isValidValue(newRaw)) {\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n } else {\n setLocalText(rawValue); // Revert to last valid value\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n const newRaw = getRawValue(localText);\n if (isValidValue(newRaw)) {\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n } else {\n setLocalText(rawValue); // Revert to last valid value\n }\n }\n };\n\n const appendToText = (insertion: string) => {\n const trimmed = localText.trim();\n const isNumeric = !isNaN(Number(trimmed));\n let newText = '';\n // Handle deselection (empty string) - clear the value entirely\n if (insertion === '') {\n newText = '';\n // If insertion is a fraction (eg \"1/2\"), replace whole value —\n // clicking fraction buttons should select the fraction instead of\n // appending to numeric prefixes like \"1/2\" -> \"11/3\".\n } else if (fractionRegex.test(insertion)) {\n newText = insertion;\n } else if (\n localUnit === 'list' ||\n localUnit === 'theme' ||\n trimmed.startsWith('--')\n ) {\n newText = insertion;\n } else if (isNumeric) {\n newText = `${trimmed}${insertion}`;\n } else {\n // Check if the current value has a number with a unit (e.g., \"16ex\", \"2rem\", \"100%\")\n // Extract the numeric part and append the new unit\n const numericMatch = trimmed.match(/^(-?\\d+\\.?\\d*)/);\n if (numericMatch) {\n newText = `${numericMatch[1]}${insertion}`;\n } else {\n newText = insertion;\n }\n }\n\n setLocalText(newText);\n\n // Emit the change immediately for arbitrary units\n const newRaw = getRawValue(newText);\n if (isValidValue(newRaw)) {\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n }\n\n inputRef.current?.focus();\n };\n\n const setValueDirectly = (v: string) => {\n const userFriendly = getUserFriendlyValue(v);\n const newRaw = getRawValue(userFriendly);\n if (isValidValue(newRaw)) {\n setLocalText(userFriendly);\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n } else {\n setLocalText(rawValue);\n }\n };\n\n const CurrentUnitIcon = (() => {\n switch (localUnit) {\n case 'fraction':\n return <PercentageIcon />;\n case 'list':\n return <ListBulletIcon />;\n case 'theme':\n return <ColorWheelIcon />;\n case 'arbitrary':\n return <SliderIcon />;\n default:\n return <TailwindUnitIcon />;\n }\n })();\n\n const openPicker = () => setIsVisible(true);\n\n const renderFractionBody = () => {\n if (!supportsFraction) return null;\n return (\n <ButtonToggleGroup\n options={tailwindUi?.units?.spacing?.fraction?.options || []}\n size=\"small\"\n value={localText}\n className=\"mt-0 w-[200px]\"\n onPressedChange={(v: any) => appendToText(String(v))}\n />\n );\n };\n\n const renderListBody = () => (\n <ButtonToggleGroup\n options={normOptions.map((o: any) => ({\n value: o.value,\n label: o.label,\n }))}\n size=\"small\"\n className=\"mt-0 w-[200px]\"\n value={localText}\n onPressedChange={(v: any) => setValueDirectly(String(v))}\n />\n );\n\n const getCustomCssVariables = useMemo(() => {\n // Extract custom CSS variables from computed styles on the document root\n // WordPress adds custom variables from theme.json as CSS custom properties\n try {\n const rootStyles = window.getComputedStyle(document.documentElement);\n const customVars: any[] = [];\n\n // Get all CSS custom properties from :root\n for (let i = 0; i < rootStyles.length; i++) {\n const propertyName = rootStyles[i];\n // Look for --wp--custom-- prefixed variables\n if (propertyName.startsWith('--wp--custom--')) {\n const value = rootStyles.getPropertyValue(propertyName).trim();\n customVars.push({\n value: propertyName,\n label: `${propertyName} (${value})`,\n });\n }\n }\n\n return customVars;\n } catch (error) {\n return [];\n }\n }, []);\n\n const renderThemeInsert = () => {\n // Get custom CSS variables from theme.json\n const customVars = getCustomCssVariables;\n\n // Build the options list: custom variables + placeholder\n const cssVariableOptions = [\n ...customVars,\n {\n value: '--custom-css-var',\n label: '--custom-css-var',\n },\n ];\n\n return (\n <ButtonToggleGroup\n className=\"mt-0 w-[200px]\"\n options={cssVariableOptions}\n size=\"small\"\n value={localText}\n onPressedChange={(v: any) => setValueDirectly(String(v))}\n />\n );\n };\n\n const renderArbitraryUnitButtons = () => (\n <div className=\"flex gap-2\">\n <ButtonToggleGroup\n className=\"mt-0 w-[200px]\"\n options={CSS_UNITS.map((u) => ({\n value: u.value,\n label: u.value,\n tooltip: u.label,\n }))}\n size=\"small\"\n value={localText}\n onPressedChange={(v: any) => appendToText(String(v))}\n />\n </div>\n );\n\n return (\n <div className=\"relative flex flex-col items-baseline\">\n <InputControl\n __nextHasNoMarginBottom\n className={`w-full ${inputClassName} ${\n !isValidValue(getRawValue(localText)) ? 'border-red-500' : ''\n }`}\n value={localText}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n autoComplete=\"off\"\n suffix={\n <InputControlSuffixWrapper>\n <Popover\n offset={10}\n visible={isVisible}\n position=\"bottom left\"\n className=\"overflow-x-hidden w-[280px] max-h-[400px]\"\n onVisibleChange={setIsVisible}\n >\n <div className=\"flex flex-col divide-y divide-border -m-4\">\n {manualRange && (\n <RangeSlider\n value={localText}\n label=\"Number Value\"\n className=\"w-[200px] pt-4 pb-2 px-4\"\n min={rangeMin}\n max={rangeMax}\n gridMode={false}\n showTooltip={false}\n // instantly render changes while sliding\n onValueChange={(v: string) => {\n const newRaw = getRawValue(v);\n if (isValidValue(newRaw)) {\n setLocalText(v);\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n } else {\n setLocalText(v); // Update local state, but don't emit\n }\n }}\n />\n )}\n {supportsFraction && manualFraction && (\n <div className=\"p-4\">\n <ChapterHeading title=\"Fraction\" />\n {renderFractionBody()}\n </div>\n )}\n {normOptions.length > 0 && manualOptions && (\n <div className=\"p-4\">\n <ChapterHeading title=\"Options\" />\n {renderListBody()}\n </div>\n )}\n {supportsArbitrary && manualArbitrary && (\n <div className=\"p-4\">\n <ChapterHeading title=\"Arbitrary Units\" />\n {renderArbitraryUnitButtons()}\n </div>\n )}\n {supportsTheme && manualCssVars && (\n <div className=\"p-4\">\n <ChapterHeading\n title=\"CSS Variables\"\n help={\n getCustomCssVariables.length === 0\n ? 'Add custom CSS variables to theme.json settings.custom'\n : undefined\n }\n addon={\n <a\n href=\"https://developer.wordpress.org/news/2023/08/adding-and-using-custom-settings-in-theme-json/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center text-gray-500 hover:text-gray-700 -mt-1\"\n aria-label=\"Learn how to add custom CSS variables to theme.json\"\n >\n <InfoCircledIcon className=\"w-3.5 h-3.5\" />\n </a>\n }\n />\n {renderThemeInsert()}\n </div>\n )}\n </div>\n </Popover>\n <Button\n className=\"!p-0 !min-w-0 !h-6 w-6 inline-flex items-center justify-center\"\n onClick={openPicker}\n aria-label=\"Open units\"\n >\n {CurrentUnitIcon}\n </Button>\n </InputControlSuffixWrapper>\n }\n />\n </div>\n );\n};\n\nexport default MetricsControl;\n","import { Button, Modal as WordpressModal } from '@wordpress/components';\nimport {\n Children,\n createContext,\n isValidElement,\n useContext,\n useEffect,\n useState,\n} from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Cross1 } from '@blockbite/icons';\n\ntype ModalContextType = {\n closeModal: () => void;\n openModal: () => void;\n};\n\nconst ModalContext = createContext<ModalContextType | null>(null);\n\nexport const useModalContext = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error('useModalContext must be used within a ModalProvider');\n }\n return context;\n};\n\ntype ModalProps = {\n children: React.ReactElement | React.ReactElement[];\n\n /** controlled */\n open?: boolean;\n\n /** uncontrolled fallback */\n defaultOpen?: boolean;\n\n onOpenChange?: (open: boolean) => void;\n\n title?: string;\n size?: 'small' | 'medium' | 'large' | 'fill' | 'wide';\n\n /** passthrough props */\n onRequestClose?: () => void;\n shouldCloseOnEsc?: boolean;\n shouldCloseOnClickOutside?: boolean;\n [key: string]: any;\n};\n\n// Keep things simple: we render our own header/content/footer sections.\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n open,\n defaultOpen = false,\n onOpenChange,\n title = '',\n className,\n size,\n onRequestClose,\n shouldCloseOnEsc = true,\n shouldCloseOnClickOutside = true,\n ...props\n}) => {\n /** Controlled vs uncontrolled logic */\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = isControlled ? open : uncontrolledOpen;\n\n const setOpen = (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n };\n\n const openModal = () => setOpen(true);\n const closeModal = () => {\n onRequestClose?.();\n setOpen(false);\n };\n\n // Detect direct children for aria and footer presence\n const hasModalHeaderChild = Children.toArray(children).some(\n (child) => isValidElement(child) && child.type === ModalHeader\n );\n\n useEffect(() => {\n onOpenChange?.(isOpen);\n }, [isOpen, onOpenChange]);\n\n let ariaProps: Record<string, string> = {};\n if (hasModalHeaderChild) {\n ariaProps = { labelledby: 'bb-modal-heading' };\n } else if (title) {\n ariaProps = { label: title };\n }\n\n return (\n <ModalContext.Provider value={{ closeModal, openModal }}>\n {Children.map(children, (child) =>\n isValidElement(child) && child.type === ModalTrigger ? child : null\n )}\n\n {isOpen && (\n <WordpressModal\n className={classNames(\n 'blockbite-ui__modal',\n size && `is-${size}`,\n className\n )}\n size={size}\n title=\"\" // prevent WP header from rendering\n aria={ariaProps}\n onRequestClose={closeModal}\n shouldCloseOnEsc={shouldCloseOnEsc}\n shouldCloseOnClickOutside={shouldCloseOnClickOutside}\n {...props}\n >\n <div className=\"relative\">\n <div className=\"absolute right-2 top-2 z-10\">\n <Button\n aria-label=\"Close\"\n label=\"Close\"\n variant=\"secondary\"\n onClick={closeModal}\n >\n <Cross1 className=\"h-4 w-4\" />\n </Button>\n </div>\n {Children.map(children, (child) =>\n isValidElement(child) && child.type === ModalHeader ? child : null\n )}\n\n {Children.map(children, (child) =>\n isValidElement(child) && child.type === ModalContent\n ? child\n : null\n )}\n\n {Children.map(children, (child) =>\n isValidElement(child) && child.type === ModalFooter ? child : null\n )}\n </div>\n </WordpressModal>\n )}\n </ModalContext.Provider>\n );\n};\n\n// --- Subcomponents ---\n\nexport const ModalHeader: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n >\n <h2 id=\"bb-modal-heading\" className=\"text-base font-medium\">\n {children}\n </h2>\n </div>\n);\n\nexport const ModalFooter: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames(\n 'border-border fixed bottom-0 left-0 right-0 flex h-[4rem] flex-row items-center justify-end gap-2 border-t bg-white px-4',\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const ModalContent: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames('text-gray-medium px-4 pb-4 text-sm', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const ModalClose: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const { closeModal } = useModalContext();\n return (\n <div onClick={closeModal} className=\"cursor-pointer\">\n {children}\n </div>\n );\n};\n\nexport const ModalTrigger: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const { openModal } = useModalContext();\n return (\n <div onClick={openModal} className=\"cursor-pointer\">\n {children}\n </div>\n );\n};\n","import { createPortal, useEffect, useMemo } from '@wordpress/element';\n\nfunction copyStyles(sourceDoc, targetDoc) {\n Array.from(sourceDoc.styleSheets).forEach((styleSheet: any) => {\n try {\n if (styleSheet.cssRules) {\n const newStyleEl = targetDoc.createElement('style');\n Array.from(styleSheet.cssRules).forEach((cssRule: any) => {\n newStyleEl.appendChild(targetDoc.createTextNode(cssRule.cssText));\n });\n targetDoc.head.appendChild(newStyleEl);\n } else if (styleSheet.href) {\n const newLinkEl = targetDoc.createElement('link');\n newLinkEl.rel = 'stylesheet';\n newLinkEl.href = styleSheet.href;\n targetDoc.head.appendChild(newLinkEl);\n }\n } catch (e) {\n if (styleSheet.href) {\n const newLinkEl = targetDoc.createElement('link');\n newLinkEl.rel = 'stylesheet';\n newLinkEl.href = styleSheet.href;\n targetDoc.head.appendChild(newLinkEl);\n } else {\n // eslint-disable-next-line no-console\n console.warn('Error copying styles:', e);\n }\n }\n });\n}\n\ntype Props = {\n windowInstance: Window;\n onClose: () => void;\n children: React.ReactNode;\n};\n\nexport const NewWindowPortal = ({\n windowInstance,\n onClose,\n children,\n}: Props) => {\n const containerEl = useMemo(() => document.createElement('div'), []);\n\n useEffect(() => {\n const win = windowInstance;\n\n win.document.body.innerHTML = '';\n win.document.body.appendChild(containerEl);\n copyStyles(document, win.document);\n win.document.title = document.title || 'Blockbite Editor';\n\n const handleBeforeUnload = () => {\n setTimeout(onClose, 100);\n };\n\n win.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n win.removeEventListener('beforeunload', handleBeforeUnload);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [windowInstance]);\n\n // Typecasting: https://github.com/vercel/next.js/discussions/64753\n return createPortal(children as any, containerEl);\n};\n","import { Notice as WordpressNotice } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype NoticeProps = {\n children: React.ReactNode;\n className?: string;\n status?: 'success' | 'error' | 'warning' | 'info';\n isDismissible?: boolean;\n onDismiss?: () => void;\n};\n\nexport const Notice = ({\n children,\n status = 'success',\n className,\n isDismissible = false,\n onDismiss,\n}: NoticeProps) => {\n const [showNotice, setShowNotice] = useState(true);\n\n if (!showNotice) return null;\n\n return (\n <WordpressNotice\n status={status}\n className={classNames(className)}\n onRemove={() => setShowNotice(false)}\n isDismissible={isDismissible}\n onDismiss={onDismiss}\n >\n {children}\n </WordpressNotice>\n );\n};\n","import {\n Button,\n __experimentalInputControl as InputControl,\n __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { Path, SVG } from '@wordpress/primitives';\n\ntype PasswordInputProps = {\n label: string;\n value: string;\n onChange: (value: string) => void;\n [key: string]: any;\n};\n\nexport const PasswordInput = ({\n label,\n value,\n onChange,\n ...rest\n}: PasswordInputProps) => {\n const [showPassword, setShowPassword] = useState(false);\n\n return (\n <InputControl\n label={label}\n value={value}\n type={showPassword ? 'text' : 'password'}\n suffix={\n <InputControlSuffixWrapper variant=\"control\">\n <Button\n icon={\n <SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <Path\n d={\n showPassword\n ? 'M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z'\n : 'M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z'\n }\n />\n </SVG>\n }\n label=\"Show password\"\n onClick={() => setShowPassword((prev) => !prev)}\n size=\"small\"\n />\n </InputControlSuffixWrapper>\n }\n onChange={onChange}\n {...rest}\n />\n );\n};\n","export type ProjectItem = {\n id: string | number;\n name: string;\n description: string;\n};\n\ntype Props = {\n items: ProjectItem[];\n activeId: string | number;\n onSelect: (id: string | number) => void;\n};\n\nexport const ProjectsNavigation = ({ items, activeId, onSelect }: Props) => {\n return (\n <div className=\"w-70 max-h-100 overflow-y-auto\">\n {items.map((item) => (\n <div\n key={item.id}\n onClick={() => onSelect(item.id)}\n className={`cursor-pointer p-3 border-l-4 flex gap-3 items-center hover:bg-gray-50 ${\n activeId === item.id ? 'border-wp bg-white' : 'border-transparent'\n }`}\n >\n <span className=\" bg-border w-10 h-10 flex items-center justify-center text-lg font-bold text-white shrink-0\">\n {item.name.charAt(0).toUpperCase()}\n </span>\n <div className=\"flex flex-col min-w-0\">\n <p className=\"text-sm font-medium truncate my-0! py-0!\">\n {item.name}\n </p>\n {item.description && (\n <p className=\"text-xs text-gray-500 truncate my-0! py-0!\">\n {item.description}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n};\n","export function ResponsiveImage(props) {\n const { media, bbFill } = props;\n const { url, alt, sizes } = media;\n\n if (sizes === undefined) {\n return (\n <picture className=\"b_fill\">\n <img src={url} alt={alt} className={`b_media ${bbFill}`} />\n </picture>\n );\n }\n\n const { thumbnail, medium, large } = sizes;\n const thumbnailImg = thumbnail || url;\n const mediumImg = medium || url;\n const largeImg = large || url;\n\n return (\n <picture className=\"b_fill\">\n {thumbnailImg ? (\n <source\n media=\"(max-width: 768px)\"\n srcSet={thumbnailImg}\n className={`b_media ${bbFill}`}\n />\n ) : null}\n {mediumImg ? (\n <source\n media=\"(min-width: 1024px)\"\n srcSet={mediumImg}\n className={`b_media ${bbFill}`}\n />\n ) : null}\n {largeImg ? (\n <source\n media=\"(min-width: 1536px)\"\n srcSet={largeImg}\n className={`b_media ${bbFill}`}\n />\n ) : null}\n {mediumImg ? (\n <img src={mediumImg} alt={alt} className={`b_media ${bbFill}`} />\n ) : null}\n </picture>\n );\n}\n","export function ResponsiveVideo(props: any) {\n const { media, bbFill } = props;\n const { url } = media;\n\n const videoUrl = url;\n\n return (\n <video\n className={`b_fill ${bbFill}`}\n preload=\"none\"\n playsInline\n controls\n autoPlay\n muted\n loop\n >\n <source src={videoUrl} type=\"video/mp4\" />\n </video>\n );\n}\n","import { Check } from '@blockbite/icons';\nimport { Button as WordpressButton } from '@wordpress/components';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { Icon } from './Icon.js';\n\ntype SaveButtonProps = {\n children?: React.ReactNode;\n asChild?: boolean;\n className?: string;\n display?: 'icon' | 'icon-lg' | 'label' | 'auto' | '' | null;\n onClick?: () => void | Promise<void>;\n label?: string;\n savedLabel?: string;\n savedDuration?: number;\n size?: 'small' | 'default' | 'compact';\n variant?: 'primary' | 'secondary' | 'link' | 'primary' | 'tertiary';\n icon?: any;\n disabled?: boolean;\n} & Omit<React.ComponentProps<typeof WordpressButton>, 'onClick' | 'size'>;\n\nconst DEFAULT_SAVED_DURATION = 2000;\n\nexport const SaveButton = ({\n children,\n size = 'default',\n label,\n className,\n onClick,\n variant = 'primary',\n display = 'auto',\n icon,\n disabled = false,\n savedLabel = 'Saved',\n savedDuration = DEFAULT_SAVED_DURATION,\n ...buttonProps\n}: SaveButtonProps) => {\n const [isSaving, setIsSaving] = useState(false);\n const [showSaved, setShowSaved] = useState(false);\n const timeoutRef = useRef<number | null>(null);\n const isIconDisplay = display === 'icon' || display === 'icon-lg';\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const handleClick = async () => {\n if (disabled || isSaving) return;\n\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n\n setShowSaved(false);\n setIsSaving(true);\n\n try {\n await Promise.resolve(onClick?.());\n setIsSaving(false);\n setShowSaved(true);\n timeoutRef.current = window.setTimeout(() => {\n setShowSaved(false);\n }, savedDuration);\n } catch (error) {\n setIsSaving(false);\n }\n };\n\n const currentLabel = showSaved ? savedLabel : label;\n const currentIcon = showSaved ? Check : icon;\n\n return (\n <WordpressButton\n {...buttonProps}\n size={size}\n variant={variant}\n label={currentLabel}\n showTooltip={true}\n disabled={disabled || isSaving}\n isBusy={isSaving}\n className={classNames(\n className,\n 'blockbite-ui__button',\n 'flex items-center justify-center gap-1',\n { 'is-primary': variant === 'primary' },\n { 'is-secondary': variant === 'secondary' },\n { 'is-link': variant === 'link' },\n { 'is-tertiary': variant === 'tertiary' },\n { 'is-icon': display === 'icon' }\n )}\n onClick={handleClick}\n >\n {currentIcon && (\n <Icon\n icon={currentIcon}\n className={classNames({ 'h-4 w-4': display === 'icon-lg' })}\n />\n )}\n {!isIconDisplay ? (showSaved ? savedLabel : children) : null}\n {currentLabel && !children && !isIconDisplay ? (\n <span>{currentLabel}</span>\n ) : null}\n </WordpressButton>\n );\n};\n","import classNames from 'classnames';\nimport { Wrap } from './Wrap.js';\n\ntype ScrollListProps = {\n children: React.ReactNode;\n className?: string;\n height?: 'small' | 'medium' | 'large';\n};\n\nexport const ScrollList: React.FC<ScrollListProps> = ({\n children,\n className = '',\n height = 'large',\n}) => (\n <Wrap\n className={classNames('scrollbar relative overflow-y-scroll', className, {\n 'h-[400px]': height === 'large',\n 'h-[300px]': height === 'medium',\n 'h-[200px]': height === 'small',\n })}\n >\n {children}\n </Wrap>\n);\n","import { createBlock } from '@wordpress/blocks';\nimport { Button } from '@wordpress/components';\n\nconst { select, dispatch } = wp.data;\n\ninterface SingleBlockTypeAppenderProps {\n buttonText?: string;\n}\n\nexport const SingleBlockTypeAppender = ({\n buttonText = 'Add block',\n}: SingleBlockTypeAppenderProps) => {\n const addLastDuplicate = () => {\n // Get the current block\n const currentBlock = select('core/block-editor').getSelectedBlock();\n const { clientId, innerBlocks } = currentBlock;\n\n // get the last block\n const lastBlock = innerBlocks[innerBlocks.length - 1];\n // duplicate the last block\n const newBlock = createBlock(\n lastBlock.name,\n lastBlock.attributes,\n lastBlock.innerBlocks\n );\n\n dispatch('core/block-editor').insertBlocks(newBlock, 0, clientId);\n };\n\n return (\n <Button variant=\"primary\" onClick={() => addLastDuplicate()}>\n {buttonText}\n </Button>\n );\n};\n","import { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype SlideInProps = {\n children: React.ReactNode;\n className?: string;\n watch?: any;\n};\n\nexport const SlideIn = ({ children, watch, className }: SlideInProps) => {\n const [slide, setSlide] = useState(0);\n\n useEffect(() => {\n setTimeout(() => {\n setSlide(1);\n }, 250);\n }, [watch]);\n\n return (\n <Wrap\n className={classNames(\n className,\n 'duration-50 transform transition-all ease-in-out',\n {\n 'translate-x-0': slide === 1,\n '-translate-x-full': slide === 0,\n }\n )}\n >\n {children}\n </Wrap>\n );\n};\n","import { Spinner as WordpressSpinner } from '@wordpress/components';\n\ntype SpinnerProps = {\n [x: string]: any;\n};\n\nexport const Spinner = ({ ...props }: SpinnerProps) => {\n return <WordpressSpinner {...props} />;\n};\n","function Ne() {\n return Ne = Object.assign ? Object.assign.bind() : function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = arguments[e];\n for (var i in n) ({}).hasOwnProperty.call(n, i) && (t[i] = n[i]);\n }\n return t;\n }, Ne.apply(null, arguments);\n}\nvar et = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Ke(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar en, tn = {\n exports: {}\n};\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar Rt, nn, rn, Ei = (en || (en = 1, Rt = tn, (function() {\n var t = {}.hasOwnProperty;\n function e() {\n for (var r = \"\", s = 0; s < arguments.length; s++) {\n var l = arguments[s];\n l && (r = i(r, n(l)));\n }\n return r;\n }\n function n(r) {\n if (typeof r == \"string\" || typeof r == \"number\") return r;\n if (typeof r != \"object\") return \"\";\n if (Array.isArray(r)) return e.apply(null, r);\n if (r.toString !== Object.prototype.toString && !r.toString.toString().includes(\"[native code]\")) return r.toString();\n var s = \"\";\n for (var l in r) t.call(r, l) && r[l] && (s = i(s, l));\n return s;\n }\n function i(r, s) {\n return s ? r ? r + \" \" + s : r + s : r;\n }\n Rt.exports ? (e.default = e, Rt.exports = e) : window.classNames = e;\n})()), tn.exports), Mt = Ke(Ei), sn, on, Ci = (rn || (rn = 1, nn = function t(e, n) {\n if (e === n) return !0;\n if (e && n && typeof e == \"object\" && typeof n == \"object\") {\n if (e.constructor !== n.constructor) return !1;\n var i, r, s;\n if (Array.isArray(e)) {\n if ((i = e.length) != n.length) return !1;\n for (r = i; r-- !== 0; ) if (!t(e[r], n[r])) return !1;\n return !0;\n }\n if (e instanceof Map && n instanceof Map) {\n if (e.size !== n.size) return !1;\n for (r of e.entries()) if (!n.has(r[0])) return !1;\n for (r of e.entries()) if (!t(r[1], n.get(r[0]))) return !1;\n return !0;\n }\n if (e instanceof Set && n instanceof Set) {\n if (e.size !== n.size) return !1;\n for (r of e.entries()) if (!n.has(r[0])) return !1;\n return !0;\n }\n if (ArrayBuffer.isView(e) && ArrayBuffer.isView(n)) {\n if ((i = e.length) != n.length) return !1;\n for (r = i; r-- !== 0; ) if (e[r] !== n[r]) return !1;\n return !0;\n }\n if (e.constructor === RegExp) return e.source === n.source && e.flags === n.flags;\n if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === n.valueOf();\n if (e.toString !== Object.prototype.toString) return e.toString() === n.toString();\n if ((i = (s = Object.keys(e)).length) !== Object.keys(n).length) return !1;\n for (r = i; r-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(n, s[r])) return !1;\n for (r = i; r-- !== 0; ) {\n var l = s[r];\n if (!t(e[l], n[l])) return !1;\n }\n return !0;\n }\n return e != e && n != n;\n}), nn), _i = Ke(Ci), an, ln, ae = Ke((function() {\n if (on) return sn;\n on = 1;\n var t = /^\\s+|\\s+$/g, e = /^[-+]0x[0-9a-f]+$/i, n = /^0b[01]+$/i, i = /^0o[0-7]+$/i, r = parseInt, s = Object.prototype.toString;\n function l(o) {\n var c = typeof o;\n return !!o && (c == \"object\" || c == \"function\");\n }\n function a(o) {\n if (typeof o == \"number\") return o;\n if ((function(u) {\n return typeof u == \"symbol\" || /* @__PURE__ */ (function(f) {\n return !!f && typeof f == \"object\";\n })(u) && s.call(u) == \"[object Symbol]\";\n })(o)) return NaN;\n if (l(o)) {\n var c = typeof o.valueOf == \"function\" ? o.valueOf() : o;\n o = l(c) ? c + \"\" : c;\n }\n if (typeof o != \"string\") return o === 0 ? o : +o;\n o = o.replace(t, \"\");\n var d = n.test(o);\n return d || i.test(o) ? r(o.slice(2), d ? 2 : 8) : e.test(o) ? NaN : +o;\n }\n return sn = function(o, c, d) {\n return d === void 0 && (d = c, c = void 0), d !== void 0 && (d = (d = a(d)) == d ? d : 0), c !== void 0 && (c = (c = a(c)) == c ? c : 0), (function(u, f, h) {\n return u == u && (h !== void 0 && (u = u <= h ? u : h), f !== void 0 && (u = u >= f ? u : f)), u;\n })(a(o), c, d);\n };\n})()), Oi = Ke((function() {\n if (ln) return an;\n ln = 1;\n var t = /^\\s+|\\s+$/g, e = /^[-+]0x[0-9a-f]+$/i, n = /^0b[01]+$/i, i = /^0o[0-7]+$/i, r = parseInt, s = typeof et == \"object\" && et && et.Object === Object && et, l = typeof self == \"object\" && self && self.Object === Object && self, a = s || l || Function(\"return this\")(), o = Object.prototype.toString, c = Math.max, d = Math.min, u = function() {\n return a.Date.now();\n };\n function f(v) {\n var p = typeof v;\n return !!v && (p == \"object\" || p == \"function\");\n }\n function h(v) {\n if (typeof v == \"number\") return v;\n if ((function(g) {\n return typeof g == \"symbol\" || /* @__PURE__ */ (function(b) {\n return !!b && typeof b == \"object\";\n })(g) && o.call(g) == \"[object Symbol]\";\n })(v)) return NaN;\n if (f(v)) {\n var p = typeof v.valueOf == \"function\" ? v.valueOf() : v;\n v = f(p) ? p + \"\" : p;\n }\n if (typeof v != \"string\") return v === 0 ? v : +v;\n v = v.replace(t, \"\");\n var w = n.test(v);\n return w || i.test(v) ? r(v.slice(2), w ? 2 : 8) : e.test(v) ? NaN : +v;\n }\n return an = function(v, p, w) {\n var g, b, y, S, x, z, m = 0, R = !1, _ = !1, N = !0;\n if (typeof v != \"function\") throw new TypeError(\"Expected a function\");\n function T(V) {\n var M = g, j = b;\n return g = b = void 0, m = V, S = v.apply(j, M);\n }\n function O(V) {\n var M = V - z;\n return z === void 0 || M >= p || M < 0 || _ && V - m >= y;\n }\n function E() {\n var V = u();\n if (O(V)) return P(V);\n x = setTimeout(E, (function(M) {\n var j = p - (M - z);\n return _ ? d(j, y - (M - m)) : j;\n })(V));\n }\n function P(V) {\n return x = void 0, N && g ? T(V) : (g = b = void 0, S);\n }\n function A() {\n var V = u(), M = O(V);\n if (g = arguments, b = this, z = V, M) {\n if (x === void 0) return (function(j) {\n return m = j, x = setTimeout(E, p), R ? T(j) : S;\n })(z);\n if (_) return x = setTimeout(E, p), T(z);\n }\n return x === void 0 && (x = setTimeout(E, p)), S;\n }\n return p = h(p) || 0, f(w) && (R = !!w.leading, y = (_ = \"maxWait\" in w) ? c(h(w.maxWait) || 0, p) : y, N = \"trailing\" in w ? !!w.trailing : N), A.cancel = function() {\n x !== void 0 && clearTimeout(x), m = 0, g = z = b = x = void 0;\n }, A.flush = function() {\n return x === void 0 ? S : P(u());\n }, A;\n };\n})()), cn = {\n width: void 0,\n height: void 0\n};\nfunction Ni(t) {\n const {\n ref: e,\n box: n = \"content-box\"\n } = t, [{\n width: i,\n height: r\n }, s] = window.React.useState(cn), l = (function() {\n const c = window.React.useRef(!1);\n return window.React.useEffect(() => (c.current = !0, () => {\n c.current = !1;\n }), []), window.React.useCallback(() => c.current, []);\n })(), a = window.React.useRef(Ne({}, cn)), o = window.React.useRef(void 0);\n return o.current = t.onResize, window.React.useEffect(() => {\n if (!e.current || typeof window > \"u\" || !(\"ResizeObserver\" in window)) return;\n const c = new ResizeObserver(([d]) => {\n const u = n === \"border-box\" ? \"borderBoxSize\" : n === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\", f = un(d, u, \"inlineSize\"), h = un(d, u, \"blockSize\");\n if (a.current.width !== f || a.current.height !== h) {\n const v = {\n width: f,\n height: h\n };\n a.current.width = f, a.current.height = h, o.current ? o.current(v) : l() && s(v);\n }\n });\n return c.observe(e.current, {\n box: n\n }), () => {\n c.disconnect();\n };\n }, [n, e, l]), {\n width: i,\n height: r\n };\n}\nfunction un(t, e, n) {\n return t[e] ? Array.isArray(t[e]) ? t[e][0][n] : t[e][n] : e === \"contentBoxSize\" ? t.contentRect[n === \"inlineSize\" ? \"width\" : \"height\"] : void 0;\n}\nvar Mi = \"allotment-module_splitView__L-yRc\", Ai = \"allotment-module_sashContainer__fzwJF\", Li = \"allotment-module_splitViewContainer__rQnVa\", Pn = \"allotment-module_splitViewView__MGZ6O\", Ti = \"allotment-module_vertical__WSwwa\", Vi = \"allotment-module_horizontal__7doS8\", Pi = \"allotment-module_separatorBorder__x-rDS\";\nlet Fe, kn = !1, jn = !1;\ntypeof navigator == \"object\" && (Fe = navigator.userAgent, jn = Fe.indexOf(\"Macintosh\") >= 0, kn = (Fe.indexOf(\"Macintosh\") >= 0 || Fe.indexOf(\"iPad\") >= 0 || Fe.indexOf(\"iPhone\") >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0);\nconst Fn = kn, ki = jn, dn = typeof window < \"u\" && window.document !== void 0 && window.document.createElement !== void 0 ? window.React.useLayoutEffect : window.React.useEffect;\nclass ji {\n constructor() {\n this._size = void 0;\n }\n getSize() {\n return this._size;\n }\n setSize(e) {\n this._size = e;\n }\n}\nfunction tt(t, e) {\n const n = t.length, i = n - e.length;\n return i >= 0 && t.slice(i, n) === e;\n}\nvar fn, hn = {\n exports: {}\n}, Fi = (fn || (fn = 1, (function(t) {\n var e = Object.prototype.hasOwnProperty, n = \"~\";\n function i() {\n }\n function r(o, c, d) {\n this.fn = o, this.context = c, this.once = d || !1;\n }\n function s(o, c, d, u, f) {\n if (typeof d != \"function\") throw new TypeError(\"The listener must be a function\");\n var h = new r(d, u || o, f), v = n ? n + c : c;\n return o._events[v] ? o._events[v].fn ? o._events[v] = [o._events[v], h] : o._events[v].push(h) : (o._events[v] = h, o._eventsCount++), o;\n }\n function l(o, c) {\n --o._eventsCount === 0 ? o._events = new i() : delete o._events[c];\n }\n function a() {\n this._events = new i(), this._eventsCount = 0;\n }\n Object.create && (i.prototype = /* @__PURE__ */ Object.create(null), new i().__proto__ || (n = !1)), a.prototype.eventNames = function() {\n var o, c, d = [];\n if (this._eventsCount === 0) return d;\n for (c in o = this._events) e.call(o, c) && d.push(n ? c.slice(1) : c);\n return Object.getOwnPropertySymbols ? d.concat(Object.getOwnPropertySymbols(o)) : d;\n }, a.prototype.listeners = function(o) {\n var c = n ? n + o : o, d = this._events[c];\n if (!d) return [];\n if (d.fn) return [d.fn];\n for (var u = 0, f = d.length, h = new Array(f); u < f; u++) h[u] = d[u].fn;\n return h;\n }, a.prototype.listenerCount = function(o) {\n var c = n ? n + o : o, d = this._events[c];\n return d ? d.fn ? 1 : d.length : 0;\n }, a.prototype.emit = function(o, c, d, u, f, h) {\n var v = n ? n + o : o;\n if (!this._events[v]) return !1;\n var p, w, g = this._events[v], b = arguments.length;\n if (g.fn) {\n switch (g.once && this.removeListener(o, g.fn, void 0, !0), b) {\n case 1:\n return g.fn.call(g.context), !0;\n case 2:\n return g.fn.call(g.context, c), !0;\n case 3:\n return g.fn.call(g.context, c, d), !0;\n case 4:\n return g.fn.call(g.context, c, d, u), !0;\n case 5:\n return g.fn.call(g.context, c, d, u, f), !0;\n case 6:\n return g.fn.call(g.context, c, d, u, f, h), !0;\n }\n for (w = 1, p = new Array(b - 1); w < b; w++) p[w - 1] = arguments[w];\n g.fn.apply(g.context, p);\n } else {\n var y, S = g.length;\n for (w = 0; w < S; w++) switch (g[w].once && this.removeListener(o, g[w].fn, void 0, !0), b) {\n case 1:\n g[w].fn.call(g[w].context);\n break;\n case 2:\n g[w].fn.call(g[w].context, c);\n break;\n case 3:\n g[w].fn.call(g[w].context, c, d);\n break;\n case 4:\n g[w].fn.call(g[w].context, c, d, u);\n break;\n default:\n if (!p) for (y = 1, p = new Array(b - 1); y < b; y++) p[y - 1] = arguments[y];\n g[w].fn.apply(g[w].context, p);\n }\n }\n return !0;\n }, a.prototype.on = function(o, c, d) {\n return s(this, o, c, d, !1);\n }, a.prototype.once = function(o, c, d) {\n return s(this, o, c, d, !0);\n }, a.prototype.removeListener = function(o, c, d, u) {\n var f = n ? n + o : o;\n if (!this._events[f]) return this;\n if (!c) return l(this, f), this;\n var h = this._events[f];\n if (h.fn) h.fn !== c || u && !h.once || d && h.context !== d || l(this, f);\n else {\n for (var v = 0, p = [], w = h.length; v < w; v++) (h[v].fn !== c || u && !h[v].once || d && h[v].context !== d) && p.push(h[v]);\n p.length ? this._events[f] = p.length === 1 ? p[0] : p : l(this, f);\n }\n return this;\n }, a.prototype.removeAllListeners = function(o) {\n var c;\n return o ? (c = n ? n + o : o, this._events[c] && l(this, c)) : (this._events = new i(), this._eventsCount = 0), this;\n }, a.prototype.off = a.prototype.removeListener, a.prototype.addListener = a.prototype.on, a.prefixed = n, a.EventEmitter = a, t.exports = a;\n})(hn)), hn.exports), Vt = Ke(Fi);\nfunction vn(t, e) {\n const n = t.indexOf(e);\n n > -1 && (t.splice(n, 1), t.unshift(e));\n}\nfunction xt(t, e) {\n const n = t.indexOf(e);\n n > -1 && (t.splice(n, 1), t.push(e));\n}\nfunction ne(t, e, n = 1) {\n const i = Math.max(0, Math.ceil((e - t) / n)), r = new Array(i);\n let s = -1;\n for (; ++s < i; ) r[s] = t + s * n;\n return r;\n}\nvar Bi = \"sash-module_sash__K-9lB\", $i = \"sash-module_disabled__Hm-wx\", Yi = \"sash-module_mac__Jf6OJ\", pn = \"sash-module_vertical__pB-rs\", Hi = \"sash-module_minimum__-UKxp\", Xi = \"sash-module_maximum__TCWxD\", wn = \"sash-module_horizontal__kFbiw\", zt = \"sash-module_hover__80W6I\", Dt = \"sash-module_active__bJspD\";\nlet se = (function(t) {\n return t.Vertical = \"VERTICAL\", t.Horizontal = \"HORIZONTAL\", t;\n})({}), ee = (function(t) {\n return t.Disabled = \"DISABLED\", t.Minimum = \"MINIMUM\", t.Maximum = \"MAXIMUM\", t.Enabled = \"ENABLED\", t;\n})({}), Bn = Fn ? 20 : 8;\nconst $n = new Vt();\nclass mn extends Vt {\n get state() {\n return this._state;\n }\n set state(e) {\n this._state !== e && (this.el.classList.toggle($i, e === ee.Disabled), this.el.classList.toggle(\"sash-disabled\", e === ee.Disabled), this.el.classList.toggle(Hi, e === ee.Minimum), this.el.classList.toggle(\"sash-minimum\", e === ee.Minimum), this.el.classList.toggle(Xi, e === ee.Maximum), this.el.classList.toggle(\"sash-maximum\", e === ee.Maximum), this._state = e, this.emit(\"enablementChange\", e));\n }\n constructor(e, n, i) {\n var r;\n super(), this.el = void 0, this.layoutProvider = void 0, this.orientation = void 0, this.size = void 0, this.hoverDelay = 300, this.hoverDelayer = Oi((s) => s.classList.add(\"sash-hover\", zt), this.hoverDelay), this._state = ee.Enabled, this.onPointerStart = (s) => {\n const l = s.pageX, a = s.pageY, o = {\n startX: l,\n currentX: l,\n startY: a,\n currentY: a\n };\n this.el.classList.add(\"sash-active\", Dt), this.emit(\"start\", o), this.el.setPointerCapture(s.pointerId);\n const c = (u) => {\n u.preventDefault();\n const f = {\n startX: l,\n currentX: u.pageX,\n startY: a,\n currentY: u.pageY\n };\n this.emit(\"change\", f);\n }, d = (u) => {\n u.preventDefault(), this.el.classList.remove(\"sash-active\", Dt), this.hoverDelayer.cancel(), this.emit(\"end\"), this.el.releasePointerCapture(u.pointerId), window.removeEventListener(\"pointermove\", c), window.removeEventListener(\"pointerup\", d);\n };\n window.addEventListener(\"pointermove\", c), window.addEventListener(\"pointerup\", d);\n }, this.onPointerDoublePress = () => {\n this.emit(\"reset\");\n }, this.onMouseEnter = () => {\n this.el.classList.contains(Dt) ? (this.hoverDelayer.cancel(), this.el.classList.add(\"sash-hover\", zt)) : this.hoverDelayer(this.el);\n }, this.onMouseLeave = () => {\n this.hoverDelayer.cancel(), this.el.classList.remove(\"sash-hover\", zt);\n }, this.el = document.createElement(\"div\"), this.el.classList.add(\"sash\", Bi), this.el.dataset.testid = \"sash\", e.append(this.el), ki && this.el.classList.add(\"sash-mac\", Yi), this.el.addEventListener(\"pointerdown\", this.onPointerStart), this.el.addEventListener(\"dblclick\", this.onPointerDoublePress), this.el.addEventListener(\"mouseenter\", this.onMouseEnter), this.el.addEventListener(\"mouseleave\", this.onMouseLeave), typeof i.size == \"number\" ? (this.size = i.size, i.orientation === se.Vertical ? this.el.style.width = `${this.size}px` : this.el.style.height = `${this.size}px`) : (this.size = Bn, $n.on(\"onDidChangeGlobalSize\", (s) => {\n this.size = s, this.layout();\n })), this.layoutProvider = n, this.orientation = (r = i.orientation) != null ? r : se.Vertical, this.orientation === se.Horizontal ? (this.el.classList.add(\"sash-horizontal\", wn), this.el.classList.remove(\"sash-vertical\", pn)) : (this.el.classList.remove(\"sash-horizontal\", wn), this.el.classList.add(\"sash-vertical\", pn)), this.layout();\n }\n layout() {\n if (this.orientation === se.Vertical) {\n const e = this.layoutProvider;\n this.el.style.left = e.getVerticalSashLeft(this) - this.size / 2 + \"px\", e.getVerticalSashTop && (this.el.style.top = e.getVerticalSashTop(this) + \"px\"), e.getVerticalSashHeight && (this.el.style.height = e.getVerticalSashHeight(this) + \"px\");\n } else {\n const e = this.layoutProvider;\n this.el.style.top = e.getHorizontalSashTop(this) - this.size / 2 + \"px\", e.getHorizontalSashLeft && (this.el.style.left = e.getHorizontalSashLeft(this) + \"px\"), e.getHorizontalSashWidth && (this.el.style.width = e.getHorizontalSashWidth(this) + \"px\");\n }\n }\n dispose() {\n this.el.removeEventListener(\"pointerdown\", this.onPointerStart), this.el.removeEventListener(\"dblclick\", this.onPointerDoublePress), this.el.removeEventListener(\"mouseenter\", this.onMouseEnter), this.el.removeEventListener(\"mouseleave\", () => this.onMouseLeave), this.el.remove();\n }\n}\nlet ot;\nvar It;\n(It = ot || (ot = {})).Distribute = {\n type: \"distribute\"\n}, It.Split = function(t) {\n return {\n type: \"split\",\n index: t\n };\n}, It.Invisible = function(t) {\n return {\n type: \"invisible\",\n cachedVisibleSize: t\n };\n};\nlet ie = (function(t) {\n return t.Normal = \"NORMAL\", t.Low = \"LOW\", t.High = \"HIGH\", t;\n})({});\nclass Yn {\n constructor(e, n, i) {\n this.container = void 0, this.view = void 0, this._size = void 0, this._cachedVisibleSize = void 0, this.container = e, this.view = n, this.container.classList.add(\"split-view-view\", Pn), this.container.dataset.testid = \"split-view-view\", typeof i == \"number\" ? (this._size = i, this._cachedVisibleSize = void 0, e.classList.add(\"split-view-view-visible\")) : (this._size = 0, this._cachedVisibleSize = i.cachedVisibleSize);\n }\n set size(e) {\n this._size = e;\n }\n get size() {\n return this._size;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return this._cachedVisibleSize === void 0;\n }\n setVisible(e, n) {\n e !== this.visible && (e ? (this.size = ae(this._cachedVisibleSize, this.viewMinimumSize, this.viewMaximumSize), this._cachedVisibleSize = void 0) : (this._cachedVisibleSize = typeof n == \"number\" ? n : this.size, this.size = 0), this.container.classList.toggle(\"split-view-view-visible\", e), this.view.setVisible && this.view.setVisible(e));\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n set enabled(e) {\n this.container.style.pointerEvents = e ? \"\" : \"none\";\n }\n layout(e) {\n this.layoutContainer(e), this.view.layout(this.size, e);\n }\n}\nclass Wi extends Yn {\n layoutContainer(e) {\n this.container.style.left = `${e}px`, this.container.style.width = `${this.size}px`;\n }\n}\nclass Ki extends Yn {\n layoutContainer(e) {\n this.container.style.top = `${e}px`, this.container.style.height = `${this.size}px`;\n }\n}\nclass Ui extends Vt {\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(e) {\n this._startSnappingEnabled !== e && (this._startSnappingEnabled = e, this.updateSashEnablement());\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(e) {\n this._endSnappingEnabled !== e && (this._endSnappingEnabled = e, this.updateSashEnablement());\n }\n constructor(e, n = {}, i, r, s) {\n var l, a;\n if (super(), this.onDidChange = void 0, this.onDidDragStart = void 0, this.onDidDragEnd = void 0, this.orientation = void 0, this.sashContainer = void 0, this.size = 0, this.contentSize = 0, this.proportions = void 0, this.viewItems = [], this.sashItems = [], this.sashDragState = void 0, this.proportionalLayout = void 0, this.getSashOrthogonalSize = void 0, this._startSnappingEnabled = !0, this._endSnappingEnabled = !0, this.onSashEnd = (o) => {\n this.emit(\"sashchange\", o), this.saveProportions();\n for (const c of this.viewItems) c.enabled = !0;\n }, this.orientation = (l = n.orientation) != null ? l : se.Vertical, this.proportionalLayout = (a = n.proportionalLayout) != null ? a : !0, this.getSashOrthogonalSize = n.getSashOrthogonalSize, i && (this.onDidChange = i), r && (this.onDidDragStart = r), s && (this.onDidDragEnd = s), this.sashContainer = document.createElement(\"div\"), this.sashContainer.classList.add(\"sash-container\", Ai), e.prepend(this.sashContainer), n.descriptor) {\n this.size = n.descriptor.size;\n for (const [o, c] of n.descriptor.views.entries()) {\n const d = c.size, u = c.container, f = c.view;\n this.addView(u, f, d, o, !0);\n }\n this.contentSize = this.viewItems.reduce((o, c) => o + c.size, 0), this.saveProportions();\n }\n }\n addView(e, n, i, r = this.viewItems.length, s) {\n let l;\n l = typeof i == \"number\" ? i : i.type === \"split\" ? this.getViewSize(i.index) / 2 : i.type === \"invisible\" ? {\n cachedVisibleSize: i.cachedVisibleSize\n } : n.minimumSize;\n const a = this.orientation === se.Vertical ? new Ki(e, n, l) : new Wi(e, n, l);\n if (this.viewItems.splice(r, 0, a), this.viewItems.length > 1) {\n const o = this.orientation === se.Vertical ? new mn(this.sashContainer, {\n getHorizontalSashTop: (u) => this.getSashPosition(u),\n getHorizontalSashWidth: this.getSashOrthogonalSize\n }, {\n orientation: se.Horizontal\n }) : new mn(this.sashContainer, {\n getVerticalSashLeft: (u) => this.getSashPosition(u),\n getVerticalSashHeight: this.getSashOrthogonalSize\n }, {\n orientation: se.Vertical\n }), c = this.orientation === se.Vertical ? (u) => ({\n sash: o,\n start: u.startY,\n current: u.currentY\n }) : (u) => ({\n sash: o,\n start: u.startX,\n current: u.currentX\n });\n o.on(\"start\", (u) => {\n var f;\n this.emit(\"sashDragStart\"), this.onSashStart(c(u));\n const h = this.viewItems.map((v) => v.size);\n (f = this.onDidDragStart) == null || f.call(this, h);\n }), o.on(\"change\", (u) => this.onSashChange(c(u))), o.on(\"end\", () => {\n var u;\n this.emit(\"sashDragEnd\"), this.onSashEnd(this.sashItems.findIndex((h) => h.sash === o));\n const f = this.viewItems.map((h) => h.size);\n (u = this.onDidDragEnd) == null || u.call(this, f);\n }), o.on(\"reset\", () => {\n const u = this.sashItems.findIndex((w) => w.sash === o), f = ne(u, -1, -1), h = ne(u + 1, this.viewItems.length), v = this.findFirstSnapIndex(f), p = this.findFirstSnapIndex(h);\n (typeof v != \"number\" || this.viewItems[v].visible) && (typeof p != \"number\" || this.viewItems[p].visible) && this.emit(\"sashreset\", u);\n });\n const d = {\n sash: o\n };\n this.sashItems.splice(r - 1, 0, d);\n }\n s || this.relayout(), s || typeof i == \"number\" || i.type !== \"distribute\" || this.distributeViewSizes();\n }\n removeView(e, n) {\n if (e < 0 || e >= this.viewItems.length) throw new Error(\"Index out of bounds\");\n const i = this.viewItems.splice(e, 1)[0].view;\n if (this.viewItems.length >= 1) {\n const r = Math.max(e - 1, 0);\n this.sashItems.splice(r, 1)[0].sash.dispose();\n }\n return this.relayout(), n && n.type === \"distribute\" && this.distributeViewSizes(), i;\n }\n moveView(e, n, i) {\n const r = this.getViewCachedVisibleSize(n), s = r === void 0 ? this.getViewSize(n) : ot.Invisible(r), l = this.removeView(n);\n this.addView(e, l, s, i);\n }\n getViewCachedVisibleSize(e) {\n if (e < 0 || e >= this.viewItems.length) throw new Error(\"Index out of bounds\");\n return this.viewItems[e].cachedVisibleSize;\n }\n layout(e = this.size) {\n const n = Math.max(this.size, this.contentSize);\n if (this.size = e, this.proportions) for (let i = 0; i < this.viewItems.length; i++) {\n const r = this.viewItems[i];\n r.size = ae(Math.round(this.proportions[i] * e), r.minimumSize, r.maximumSize);\n }\n else {\n const i = ne(0, this.viewItems.length), r = i.filter((l) => this.viewItems[l].priority === ie.Low), s = i.filter((l) => this.viewItems[l].priority === ie.High);\n this.resize(this.viewItems.length - 1, e - n, void 0, r, s);\n }\n this.distributeEmptySpace(), this.layoutViews();\n }\n resizeView(e, n) {\n if (e < 0 || e >= this.viewItems.length) return;\n const i = ne(0, this.viewItems.length).filter((a) => a !== e), r = [...i.filter((a) => this.viewItems[a].priority === ie.Low), e], s = i.filter((a) => this.viewItems[a].priority === ie.High), l = this.viewItems[e];\n n = Math.round(n), n = ae(n, l.minimumSize, Math.min(l.maximumSize, this.size)), l.size = n, this.relayout(r, s);\n }\n resizeViews(e) {\n for (let n = 0; n < e.length; n++) {\n const i = this.viewItems[n];\n let r = e[n];\n r = Math.round(r), r = ae(r, i.minimumSize, Math.min(i.maximumSize, this.size)), i.size = r;\n }\n this.contentSize = this.viewItems.reduce((n, i) => n + i.size, 0), this.saveProportions(), this.layout(this.size);\n }\n getViewSize(e) {\n return e < 0 || e >= this.viewItems.length ? -1 : this.viewItems[e].size;\n }\n isViewVisible(e) {\n if (e < 0 || e >= this.viewItems.length) throw new Error(\"Index out of bounds\");\n return this.viewItems[e].visible;\n }\n setViewVisible(e, n) {\n if (e < 0 || e >= this.viewItems.length) throw new Error(\"Index out of bounds\");\n this.viewItems[e].setVisible(n), this.distributeEmptySpace(e), this.layoutViews(), this.saveProportions();\n }\n distributeViewSizes() {\n const e = [];\n let n = 0;\n for (const a of this.viewItems) a.maximumSize - a.minimumSize > 0 && (e.push(a), n += a.size);\n const i = Math.floor(n / e.length);\n for (const a of e) a.size = ae(i, a.minimumSize, a.maximumSize);\n const r = ne(0, this.viewItems.length), s = r.filter((a) => this.viewItems[a].priority === ie.Low), l = r.filter((a) => this.viewItems[a].priority === ie.High);\n this.relayout(s, l);\n }\n dispose() {\n this.sashItems.forEach((e) => e.sash.dispose()), this.sashItems = [], this.sashContainer.remove();\n }\n relayout(e, n) {\n const i = this.viewItems.reduce((r, s) => r + s.size, 0);\n this.resize(this.viewItems.length - 1, this.size - i, void 0, e, n), this.distributeEmptySpace(), this.layoutViews(), this.saveProportions();\n }\n onSashStart({\n sash: e,\n start: n\n }) {\n const i = this.sashItems.findIndex((r) => r.sash === e);\n ((r) => {\n const s = this.viewItems.map((b) => b.size);\n let l, a, o = Number.NEGATIVE_INFINITY, c = Number.POSITIVE_INFINITY;\n const d = ne(i, -1, -1), u = ne(i + 1, this.viewItems.length), f = d.reduce((b, y) => b + (this.viewItems[y].minimumSize - s[y]), 0), h = d.reduce((b, y) => b + (this.viewItems[y].viewMaximumSize - s[y]), 0), v = u.length === 0 ? Number.POSITIVE_INFINITY : u.reduce((b, y) => b + (s[y] - this.viewItems[y].minimumSize), 0), p = u.length === 0 ? Number.NEGATIVE_INFINITY : u.reduce((b, y) => b + (s[y] - this.viewItems[y].viewMaximumSize), 0);\n o = Math.max(f, p), c = Math.min(v, h);\n const w = this.findFirstSnapIndex(d), g = this.findFirstSnapIndex(u);\n if (typeof w == \"number\") {\n const b = this.viewItems[w], y = Math.floor(b.viewMinimumSize / 2);\n l = {\n index: w,\n limitDelta: b.visible ? o - y : o + y,\n size: b.size\n };\n }\n if (typeof g == \"number\") {\n const b = this.viewItems[g], y = Math.floor(b.viewMinimumSize / 2);\n a = {\n index: g,\n limitDelta: b.visible ? c + y : c - y,\n size: b.size\n };\n }\n this.sashDragState = {\n start: r,\n current: r,\n index: i,\n sizes: s,\n minDelta: o,\n maxDelta: c,\n snapBefore: l,\n snapAfter: a\n };\n })(n);\n }\n onSashChange({\n current: e\n }) {\n const {\n index: n,\n start: i,\n sizes: r,\n minDelta: s,\n maxDelta: l,\n snapBefore: a,\n snapAfter: o\n } = this.sashDragState;\n this.sashDragState.current = e;\n const c = e - i;\n this.resize(n, c, r, void 0, void 0, s, l, a, o), this.distributeEmptySpace(), this.layoutViews();\n }\n getSashPosition(e) {\n let n = 0;\n for (let i = 0; i < this.sashItems.length; i++) if (n += this.viewItems[i].size, this.sashItems[i].sash === e) return n;\n return 0;\n }\n resize(e, n, i = this.viewItems.map((d) => d.size), r, s, l = Number.NEGATIVE_INFINITY, a = Number.POSITIVE_INFINITY, o, c) {\n if (e < 0 || e >= this.viewItems.length) return 0;\n const d = ne(e, -1, -1), u = ne(e + 1, this.viewItems.length);\n if (s) for (const m of s) vn(d, m), vn(u, m);\n if (r) for (const m of r) xt(d, m), xt(u, m);\n const f = d.map((m) => this.viewItems[m]), h = d.map((m) => i[m]), v = u.map((m) => this.viewItems[m]), p = u.map((m) => i[m]), w = d.reduce((m, R) => m + (this.viewItems[R].minimumSize - i[R]), 0), g = d.reduce((m, R) => m + (this.viewItems[R].maximumSize - i[R]), 0), b = u.length === 0 ? Number.POSITIVE_INFINITY : u.reduce((m, R) => m + (i[R] - this.viewItems[R].minimumSize), 0), y = u.length === 0 ? Number.NEGATIVE_INFINITY : u.reduce((m, R) => m + (i[R] - this.viewItems[R].maximumSize), 0), S = Math.max(w, y, l), x = Math.min(b, g, a);\n let z = !1;\n if (o) {\n const m = this.viewItems[o.index], R = n >= o.limitDelta;\n z = R !== m.visible, m.setVisible(R, o.size);\n }\n if (!z && c) {\n const m = this.viewItems[c.index], R = n < c.limitDelta;\n z = R !== m.visible, m.setVisible(R, c.size);\n }\n if (z) return this.resize(e, n, i, r, s, l, a);\n for (let m = 0, R = n = ae(n, S, x); m < f.length; m++) {\n const _ = f[m], N = ae(h[m] + R, _.minimumSize, _.maximumSize);\n R -= N - h[m], _.size = N;\n }\n for (let m = 0, R = n; m < v.length; m++) {\n const _ = v[m], N = ae(p[m] - R, _.minimumSize, _.maximumSize);\n R += N - p[m], _.size = N;\n }\n return n;\n }\n distributeEmptySpace(e) {\n const n = this.viewItems.reduce((c, d) => c + d.size, 0);\n let i = this.size - n;\n const r = ne(0, this.viewItems.length), s = [], l = r.filter((c) => this.viewItems[c].priority === ie.Low), a = r.filter((c) => this.viewItems[c].priority === ie.Normal), o = r.filter((c) => this.viewItems[c].priority === ie.High);\n s.push(...o, ...a, ...l), typeof e == \"number\" && xt(s, e);\n for (let c = 0; i !== 0 && c < s.length; c++) {\n const d = this.viewItems[s[c]], u = ae(d.size + i, d.minimumSize, d.maximumSize);\n i -= u - d.size, d.size = u;\n }\n }\n layoutViews() {\n var e;\n this.contentSize = this.viewItems.reduce((i, r) => i + r.size, 0);\n let n = 0;\n for (const i of this.viewItems) i.layout(n), n += i.size;\n (e = this.onDidChange) != null && e.call(this, this.viewItems.map((i) => i.size)), this.sashItems.forEach((i) => i.sash.layout()), this.updateSashEnablement();\n }\n saveProportions() {\n this.proportionalLayout && this.contentSize > 0 && (this.proportions = this.viewItems.map((e) => e.size / this.contentSize));\n }\n updateSashEnablement() {\n let e = !1;\n const n = this.viewItems.map((o) => e = o.size - o.minimumSize > 0 || e);\n e = !1;\n const i = this.viewItems.map((o) => e = o.maximumSize - o.size > 0 || e), r = [...this.viewItems].reverse();\n e = !1;\n const s = r.map((o) => e = o.size - o.minimumSize > 0 || e).reverse();\n e = !1;\n const l = r.map((o) => e = o.maximumSize - o.size > 0 || e).reverse();\n let a = 0;\n for (let o = 0; o < this.sashItems.length; o++) {\n const {\n sash: c\n } = this.sashItems[o];\n a += this.viewItems[o].size;\n const d = !(n[o] && l[o + 1]), u = !(i[o] && s[o + 1]);\n if (d && u) {\n const f = ne(o, -1, -1), h = ne(o + 1, this.viewItems.length), v = this.findFirstSnapIndex(f), p = this.findFirstSnapIndex(h), w = typeof v == \"number\" && !this.viewItems[v].visible, g = typeof p == \"number\" && !this.viewItems[p].visible;\n w && s[o] && (a > 0 || this.startSnappingEnabled) ? c.state = ee.Minimum : g && n[o] && (a < this.contentSize || this.endSnappingEnabled) ? c.state = ee.Maximum : c.state = ee.Disabled;\n } else c.state = d && !u ? ee.Minimum : !d && u ? ee.Maximum : ee.Enabled;\n }\n }\n findFirstSnapIndex(e) {\n for (const n of e) {\n const i = this.viewItems[n];\n if (i.visible && i.snap) return n;\n }\n for (const n of e) {\n const i = this.viewItems[n];\n if (i.visible && i.maximumSize - i.minimumSize > 0) return;\n if (!i.visible && i.snap) return n;\n }\n }\n}\nclass Oe {\n constructor(e) {\n this.size = void 0, this.size = e;\n }\n getPreferredSize() {\n return this.size;\n }\n}\nclass gn {\n constructor(e, n) {\n this.proportion = void 0, this.layoutService = void 0, this.proportion = e, this.layoutService = n;\n }\n getPreferredSize() {\n return this.proportion * this.layoutService.getSize();\n }\n}\nclass nt {\n getPreferredSize() {\n }\n}\nclass bn {\n get preferredSize() {\n return this.layoutStrategy.getPreferredSize();\n }\n set preferredSize(e) {\n if (typeof e == \"number\") this.layoutStrategy = new Oe(e);\n else if (typeof e == \"string\") {\n const n = e.trim();\n if (tt(n, \"%\")) {\n const i = Number(n.slice(0, -1)) / 100;\n this.layoutStrategy = new gn(i, this.layoutService);\n } else if (tt(n, \"px\")) {\n const i = Number(n.slice(0, -2)) / 100;\n this.layoutStrategy = new Oe(i);\n } else if (typeof Number.parseFloat(n) == \"number\") {\n const i = Number.parseFloat(n);\n this.layoutStrategy = new Oe(i);\n } else this.layoutStrategy = new nt();\n } else this.layoutStrategy = new nt();\n }\n constructor(e, n) {\n var i;\n if (this.minimumSize = 0, this.maximumSize = Number.POSITIVE_INFINITY, this.element = void 0, this.priority = void 0, this.snap = void 0, this.layoutService = void 0, this.layoutStrategy = void 0, this.layoutService = e, this.element = n.element, this.minimumSize = typeof n.minimumSize == \"number\" ? n.minimumSize : 30, this.maximumSize = typeof n.maximumSize == \"number\" ? n.maximumSize : Number.POSITIVE_INFINITY, typeof n.preferredSize == \"number\") this.layoutStrategy = new Oe(n.preferredSize);\n else if (typeof n.preferredSize == \"string\") {\n const r = n.preferredSize.trim();\n if (tt(r, \"%\")) {\n const s = Number(r.slice(0, -1)) / 100;\n this.layoutStrategy = new gn(s, this.layoutService);\n } else if (tt(r, \"px\")) {\n const s = Number(r.slice(0, -2));\n this.layoutStrategy = new Oe(s);\n } else if (typeof Number.parseFloat(r) == \"number\") {\n const s = Number.parseFloat(r);\n this.layoutStrategy = new Oe(s);\n } else this.layoutStrategy = new nt();\n } else this.layoutStrategy = new nt();\n this.priority = (i = n.priority) != null ? i : ie.Normal, this.snap = typeof n.snap == \"boolean\" && n.snap;\n }\n layout(e) {\n }\n}\nfunction yn(t) {\n return t.minSize !== void 0 || t.maxSize !== void 0 || t.preferredSize !== void 0 || t.priority !== void 0 || t.visible !== void 0;\n}\nconst Pt = window.React.forwardRef(({\n className: t,\n children: e\n}, n) => window.React.createElement(\"div\", {\n ref: n,\n className: Mt(\"split-view-view\", Pn, t)\n}, e));\nPt.displayName = \"Allotment.Pane\";\nconst Hn = window.React.forwardRef(({\n children: t,\n className: e,\n id: n,\n maxSize: i = 1 / 0,\n minSize: r = 30,\n proportionalLayout: s = !0,\n separator: l = !0,\n sizes: a,\n defaultSizes: o = a,\n snap: c = !1,\n vertical: d = !1,\n onChange: u,\n onReset: f,\n onVisibleChange: h,\n onDragStart: v,\n onDragEnd: p\n}, w) => {\n const g = window.React.useRef(null), b = window.React.useRef([]), y = window.React.useRef(/* @__PURE__ */ new Map()), S = window.React.useRef(null), x = window.React.useRef(/* @__PURE__ */ new Map()), z = window.React.useRef(new ji()), m = window.React.useRef([]), [R, _] = window.React.useState(!1), N = window.React.useMemo(() => window.React.Children.toArray(t).filter(window.React.isValidElement), [t]), T = window.React.useCallback((O) => {\n var E, P;\n const A = (E = m.current) == null ? void 0 : E[O];\n return typeof (A == null ? void 0 : A.preferredSize) == \"number\" && ((P = S.current) != null && P.resizeView(O, Math.round(A.preferredSize)), !0);\n }, []);\n return window.React.useImperativeHandle(w, () => ({\n reset: () => {\n if (f) f();\n else {\n var O;\n (O = S.current) == null || O.distributeViewSizes();\n for (let E = 0; E < m.current.length; E++) T(E);\n }\n },\n resize: (O) => {\n var E;\n (E = S.current) == null || E.resizeViews(O);\n }\n })), dn(() => {\n let O = !0;\n o && x.current.size !== o.length && (O = !1, console.warn(`Expected ${o.length} children based on defaultSizes but found ${x.current.size}`)), O && o && (b.current = N.map((A) => A.key));\n const E = Ne({\n orientation: d ? se.Vertical : se.Horizontal,\n proportionalLayout: s\n }, O && o && {\n descriptor: {\n size: o.reduce((A, V) => A + V, 0),\n views: o.map((A, V) => {\n var M, j, K, oe;\n const B = y.current.get(b.current[V]), $ = new bn(z.current, Ne({\n element: document.createElement(\"div\"),\n minimumSize: (M = B == null ? void 0 : B.minSize) != null ? M : r,\n maximumSize: (j = B == null ? void 0 : B.maxSize) != null ? j : i,\n priority: (K = B == null ? void 0 : B.priority) != null ? K : ie.Normal\n }, (B == null ? void 0 : B.preferredSize) && {\n preferredSize: B == null ? void 0 : B.preferredSize\n }, {\n snap: (oe = B == null ? void 0 : B.snap) != null ? oe : c\n }));\n return m.current.push($), {\n container: [...x.current.values()][V],\n size: A,\n view: $\n };\n })\n }\n });\n S.current = new Ui(g.current, E, u, v, p), S.current.on(\"sashDragStart\", () => {\n var A;\n (A = g.current) == null || A.classList.add(\"split-view-sash-dragging\");\n }), S.current.on(\"sashDragEnd\", () => {\n var A;\n (A = g.current) == null || A.classList.remove(\"split-view-sash-dragging\");\n }), S.current.on(\"sashchange\", (A) => {\n if (h && S.current) {\n const V = N.map((M) => M.key);\n for (let M = 0; M < V.length; M++) {\n const j = y.current.get(V[M]);\n (j == null ? void 0 : j.visible) !== void 0 && j.visible !== S.current.isViewVisible(M) && h(M, S.current.isViewVisible(M));\n }\n }\n }), S.current.on(\"sashreset\", (A) => {\n if (f) f();\n else {\n var V;\n if (T(A) || T(A + 1)) return;\n (V = S.current) == null || V.distributeViewSizes();\n }\n });\n const P = S.current;\n return () => {\n P.dispose();\n };\n }, []), dn(() => {\n if (R) {\n const F = N.map((C) => C.key), U = [...b.current], ue = F.filter((C) => !b.current.includes(C)), G = F.filter((C) => b.current.includes(C)), we = b.current.map((C) => !F.includes(C));\n for (let C = we.length - 1; C >= 0; C--) {\n var O;\n we[C] && ((O = S.current) != null && O.removeView(C), U.splice(C, 1), m.current.splice(C, 1));\n }\n for (const C of ue) {\n var E, P, A, V, M;\n const I = y.current.get(C), D = new bn(z.current, Ne({\n element: document.createElement(\"div\"),\n minimumSize: (E = I == null ? void 0 : I.minSize) != null ? E : r,\n maximumSize: (P = I == null ? void 0 : I.maxSize) != null ? P : i,\n priority: (A = I == null ? void 0 : I.priority) != null ? A : ie.Normal\n }, (I == null ? void 0 : I.preferredSize) && {\n preferredSize: I == null ? void 0 : I.preferredSize\n }, {\n snap: (V = I == null ? void 0 : I.snap) != null ? V : c\n }));\n (M = S.current) != null && M.addView(x.current.get(C), D, ot.Distribute, F.findIndex((k) => k === C)), U.splice(F.findIndex((k) => k === C), 0, C), m.current.splice(F.findIndex((k) => k === C), 0, D);\n }\n for (; !_i(F, U); ) for (const [C, I] of F.entries()) {\n const D = U.findIndex((k) => k === I);\n if (D !== C) {\n var j;\n (j = S.current) == null || j.moveView(x.current.get(I), D, C);\n const k = U[D];\n U.splice(D, 1), U.splice(C, 0, k);\n break;\n }\n }\n for (const C of ue) {\n var K;\n const I = F.findIndex((k) => k === C), D = m.current[I].preferredSize;\n D !== void 0 && ((K = S.current) == null || K.resizeView(I, D));\n }\n for (const C of [...ue, ...G]) {\n var oe, B;\n const I = y.current.get(C), D = F.findIndex((k) => k === C);\n I && yn(I) && I.visible !== void 0 && ((oe = S.current) == null ? void 0 : oe.isViewVisible(D)) !== I.visible && ((B = S.current) == null || B.setViewVisible(D, I.visible));\n }\n for (const C of G) {\n const I = y.current.get(C), D = F.findIndex((k) => k === C);\n if (I && yn(I)) {\n var $;\n I.preferredSize !== void 0 && m.current[D].preferredSize !== I.preferredSize && (m.current[D].preferredSize = I.preferredSize);\n let k = !1;\n I.minSize !== void 0 && m.current[D].minimumSize !== I.minSize && (m.current[D].minimumSize = I.minSize, k = !0), I.maxSize !== void 0 && m.current[D].maximumSize !== I.maxSize && (m.current[D].maximumSize = I.maxSize, k = !0), k && (($ = S.current) == null || $.layout());\n }\n }\n (ue.length > 0 || we.length > 0) && (b.current = F);\n }\n }, [N, R, i, r, c]), window.React.useEffect(() => {\n S.current && (S.current.onDidChange = u);\n }, [u]), window.React.useEffect(() => {\n S.current && (S.current.onDidDragStart = v);\n }, [v]), window.React.useEffect(() => {\n S.current && (S.current.onDidDragEnd = p);\n }, [p]), Ni({\n ref: g,\n onResize: ({\n width: O,\n height: E\n }) => {\n var P;\n O && E && ((P = S.current) != null && P.layout(d ? E : O), z.current.setSize(d ? E : O), _(!0));\n }\n }), window.React.useEffect(() => {\n Fn && Gi(20);\n }, []), window.React.createElement(\"div\", {\n ref: g,\n className: Mt(\"split-view\", d ? \"split-view-vertical\" : \"split-view-horizontal\", {\n \"split-view-separator-border\": l\n }, Mi, d ? Ti : Vi, {\n [Pi]: l\n }, e),\n id: n\n }, window.React.createElement(\"div\", {\n className: Mt(\"split-view-container\", Li)\n }, window.React.Children.toArray(t).map((O) => {\n if (!window.React.isValidElement(O)) return null;\n const E = O.key;\n return O.type.displayName === \"Allotment.Pane\" ? (y.current.set(E, O.props), window.React.cloneElement(O, {\n key: E,\n ref: (P) => {\n const A = O.ref;\n A && (A.current = P), P ? x.current.set(E, P) : x.current.delete(E);\n }\n })) : window.React.createElement(Pt, {\n key: E,\n ref: (P) => {\n P ? x.current.set(E, P) : x.current.delete(E);\n }\n }, O);\n })));\n});\nfunction Gi(t) {\n const e = ae(t, 4, 20), n = ae(t, 1, 8);\n document.documentElement.style.setProperty(\"--sash-size\", e + \"px\"), document.documentElement.style.setProperty(\"--sash-hover-size\", n + \"px\"), (function(i) {\n Bn = i, $n.emit(\"onDidChangeGlobalSize\", i);\n })(e);\n}\nHn.displayName = \"Allotment\";\nvar qs = Object.assign(Hn, {\n Pane: Pt\n});\nfunction qi() {\n for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)\n e[n] = arguments[n];\n return window.React.useMemo(\n () => (i) => {\n e.forEach((r) => r(i));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n e\n );\n}\nconst ht = typeof window < \"u\" && typeof window.document < \"u\" && typeof window.document.createElement < \"u\";\nfunction Ae(t) {\n const e = Object.prototype.toString.call(t);\n return e === \"[object Window]\" || // In Electron context the Window object serializes to [object global]\n e === \"[object global]\";\n}\nfunction kt(t) {\n return \"nodeType\" in t;\n}\nfunction q(t) {\n var e, n;\n return t ? Ae(t) ? t : kt(t) && (e = (n = t.ownerDocument) == null ? void 0 : n.defaultView) != null ? e : window : window;\n}\nfunction jt(t) {\n const {\n Document: e\n } = q(t);\n return t instanceof e;\n}\nfunction Ue(t) {\n return Ae(t) ? !1 : t instanceof q(t).HTMLElement;\n}\nfunction Xn(t) {\n return t instanceof q(t).SVGElement;\n}\nfunction Le(t) {\n return t ? Ae(t) ? t.document : kt(t) ? jt(t) ? t : Ue(t) || Xn(t) ? t.ownerDocument : document : document : document;\n}\nconst le = ht ? window.React.useLayoutEffect : window.React.useEffect;\nfunction vt(t) {\n const e = window.React.useRef(t);\n return le(() => {\n e.current = t;\n }), window.React.useCallback(function() {\n for (var n = arguments.length, i = new Array(n), r = 0; r < n; r++)\n i[r] = arguments[r];\n return e.current == null ? void 0 : e.current(...i);\n }, []);\n}\nfunction Ji() {\n const t = window.React.useRef(null), e = window.React.useCallback((i, r) => {\n t.current = setInterval(i, r);\n }, []), n = window.React.useCallback(() => {\n t.current !== null && (clearInterval(t.current), t.current = null);\n }, []);\n return [e, n];\n}\nfunction He(t, e) {\n e === void 0 && (e = [t]);\n const n = window.React.useRef(t);\n return le(() => {\n n.current !== t && (n.current = t);\n }, e), n;\n}\nfunction Ge(t, e) {\n const n = window.React.useRef();\n return window.React.useMemo(\n () => {\n const i = t(n.current);\n return n.current = i, i;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...e]\n );\n}\nfunction at(t) {\n const e = vt(t), n = window.React.useRef(null), i = window.React.useCallback(\n (r) => {\n r !== n.current && (e == null || e(r, n.current)), n.current = r;\n },\n //eslint-disable-next-line\n []\n );\n return [n, i];\n}\nfunction lt(t) {\n const e = window.React.useRef();\n return window.React.useEffect(() => {\n e.current = t;\n }, [t]), e.current;\n}\nlet Et = {};\nfunction qe(t, e) {\n return window.React.useMemo(() => {\n if (e)\n return e;\n const n = Et[t] == null ? 0 : Et[t] + 1;\n return Et[t] = n, t + \"-\" + n;\n }, [t, e]);\n}\nfunction Wn(t) {\n return function(e) {\n for (var n = arguments.length, i = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++)\n i[r - 1] = arguments[r];\n return i.reduce((s, l) => {\n const a = Object.entries(l);\n for (const [o, c] of a) {\n const d = s[o];\n d != null && (s[o] = d + t * c);\n }\n return s;\n }, {\n ...e\n });\n };\n}\nconst Me = /* @__PURE__ */ Wn(1), Xe = /* @__PURE__ */ Wn(-1);\nfunction Qi(t) {\n return \"clientX\" in t && \"clientY\" in t;\n}\nfunction pt(t) {\n if (!t)\n return !1;\n const {\n KeyboardEvent: e\n } = q(t.target);\n return e && t instanceof e;\n}\nfunction Zi(t) {\n if (!t)\n return !1;\n const {\n TouchEvent: e\n } = q(t.target);\n return e && t instanceof e;\n}\nfunction ct(t) {\n if (Zi(t)) {\n if (t.touches && t.touches.length) {\n const {\n clientX: e,\n clientY: n\n } = t.touches[0];\n return {\n x: e,\n y: n\n };\n } else if (t.changedTouches && t.changedTouches.length) {\n const {\n clientX: e,\n clientY: n\n } = t.changedTouches[0];\n return {\n x: e,\n y: n\n };\n }\n }\n return Qi(t) ? {\n x: t.clientX,\n y: t.clientY\n } : null;\n}\nconst xe = /* @__PURE__ */ Object.freeze({\n Translate: {\n toString(t) {\n if (!t)\n return;\n const {\n x: e,\n y: n\n } = t;\n return \"translate3d(\" + (e ? Math.round(e) : 0) + \"px, \" + (n ? Math.round(n) : 0) + \"px, 0)\";\n }\n },\n Scale: {\n toString(t) {\n if (!t)\n return;\n const {\n scaleX: e,\n scaleY: n\n } = t;\n return \"scaleX(\" + e + \") scaleY(\" + n + \")\";\n }\n },\n Transform: {\n toString(t) {\n if (t)\n return [xe.Translate.toString(t), xe.Scale.toString(t)].join(\" \");\n }\n },\n Transition: {\n toString(t) {\n let {\n property: e,\n duration: n,\n easing: i\n } = t;\n return e + \" \" + n + \"ms \" + i;\n }\n }\n}), Sn = \"a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]\";\nfunction er(t) {\n return t.matches(Sn) ? t : t.querySelector(Sn);\n}\nconst tr = {\n display: \"none\"\n};\nfunction nr(t) {\n let {\n id: e,\n value: n\n } = t;\n return window.React.createElement(\"div\", {\n id: e,\n style: tr\n }, n);\n}\nfunction ir(t) {\n let {\n id: e,\n announcement: n,\n ariaLiveType: i = \"assertive\"\n } = t;\n const r = {\n position: \"fixed\",\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(100%)\",\n whiteSpace: \"nowrap\"\n };\n return window.React.createElement(\"div\", {\n id: e,\n style: r,\n role: \"status\",\n \"aria-live\": i,\n \"aria-atomic\": !0\n }, n);\n}\nfunction rr() {\n const [t, e] = window.React.useState(\"\");\n return {\n announce: window.React.useCallback((i) => {\n i != null && e(i);\n }, []),\n announcement: t\n };\n}\nconst Kn = /* @__PURE__ */ window.React.createContext(null);\nfunction sr(t) {\n const e = window.React.useContext(Kn);\n window.React.useEffect(() => {\n if (!e)\n throw new Error(\"useDndMonitor must be used within a children of <DndContext>\");\n return e(t);\n }, [t, e]);\n}\nfunction or() {\n const [t] = window.React.useState(() => /* @__PURE__ */ new Set()), e = window.React.useCallback((i) => (t.add(i), () => t.delete(i)), [t]);\n return [window.React.useCallback((i) => {\n let {\n type: r,\n event: s\n } = i;\n t.forEach((l) => {\n var a;\n return (a = l[r]) == null ? void 0 : a.call(l, s);\n });\n }, [t]), e];\n}\nconst ar = {\n draggable: `\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n `\n}, lr = {\n onDragStart(t) {\n let {\n active: e\n } = t;\n return \"Picked up draggable item \" + e.id + \".\";\n },\n onDragOver(t) {\n let {\n active: e,\n over: n\n } = t;\n return n ? \"Draggable item \" + e.id + \" was moved over droppable area \" + n.id + \".\" : \"Draggable item \" + e.id + \" is no longer over a droppable area.\";\n },\n onDragEnd(t) {\n let {\n active: e,\n over: n\n } = t;\n return n ? \"Draggable item \" + e.id + \" was dropped over droppable area \" + n.id : \"Draggable item \" + e.id + \" was dropped.\";\n },\n onDragCancel(t) {\n let {\n active: e\n } = t;\n return \"Dragging was cancelled. Draggable item \" + e.id + \" was dropped.\";\n }\n};\nfunction cr(t) {\n let {\n announcements: e = lr,\n container: n,\n hiddenTextDescribedById: i,\n screenReaderInstructions: r = ar\n } = t;\n const {\n announce: s,\n announcement: l\n } = rr(), a = qe(\"DndLiveRegion\"), [o, c] = window.React.useState(!1);\n if (window.React.useEffect(() => {\n c(!0);\n }, []), sr(window.React.useMemo(() => ({\n onDragStart(u) {\n let {\n active: f\n } = u;\n s(e.onDragStart({\n active: f\n }));\n },\n onDragMove(u) {\n let {\n active: f,\n over: h\n } = u;\n e.onDragMove && s(e.onDragMove({\n active: f,\n over: h\n }));\n },\n onDragOver(u) {\n let {\n active: f,\n over: h\n } = u;\n s(e.onDragOver({\n active: f,\n over: h\n }));\n },\n onDragEnd(u) {\n let {\n active: f,\n over: h\n } = u;\n s(e.onDragEnd({\n active: f,\n over: h\n }));\n },\n onDragCancel(u) {\n let {\n active: f,\n over: h\n } = u;\n s(e.onDragCancel({\n active: f,\n over: h\n }));\n }\n }), [s, e])), !o)\n return null;\n const d = window.React.createElement(window.React.Fragment, null, window.React.createElement(nr, {\n id: i,\n value: r.draggable\n }), window.React.createElement(ir, {\n id: a,\n announcement: l\n }));\n return n ? window.ReactDOM.createPortal(d, n) : d;\n}\nvar Y;\n(function(t) {\n t.DragStart = \"dragStart\", t.DragMove = \"dragMove\", t.DragEnd = \"dragEnd\", t.DragCancel = \"dragCancel\", t.DragOver = \"dragOver\", t.RegisterDroppable = \"registerDroppable\", t.SetDroppableDisabled = \"setDroppableDisabled\", t.UnregisterDroppable = \"unregisterDroppable\";\n})(Y || (Y = {}));\nfunction ut() {\n}\nfunction Rn(t, e) {\n return window.React.useMemo(\n () => ({\n sensor: t,\n options: e ?? {}\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [t, e]\n );\n}\nfunction ur() {\n for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)\n e[n] = arguments[n];\n return window.React.useMemo(\n () => [...e].filter((i) => i != null),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...e]\n );\n}\nconst ce = /* @__PURE__ */ Object.freeze({\n x: 0,\n y: 0\n});\nfunction Un(t, e) {\n return Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2));\n}\nfunction dr(t, e) {\n const n = ct(t);\n if (!n)\n return \"0 0\";\n const i = {\n x: (n.x - e.left) / e.width * 100,\n y: (n.y - e.top) / e.height * 100\n };\n return i.x + \"% \" + i.y + \"%\";\n}\nfunction Gn(t, e) {\n let {\n data: {\n value: n\n }\n } = t, {\n data: {\n value: i\n }\n } = e;\n return n - i;\n}\nfunction fr(t, e) {\n let {\n data: {\n value: n\n }\n } = t, {\n data: {\n value: i\n }\n } = e;\n return i - n;\n}\nfunction xn(t) {\n let {\n left: e,\n top: n,\n height: i,\n width: r\n } = t;\n return [{\n x: e,\n y: n\n }, {\n x: e + r,\n y: n\n }, {\n x: e,\n y: n + i\n }, {\n x: e + r,\n y: n + i\n }];\n}\nfunction qn(t, e) {\n if (!t || t.length === 0)\n return null;\n const [n] = t;\n return n[e];\n}\nfunction zn(t, e, n) {\n return e === void 0 && (e = t.left), n === void 0 && (n = t.top), {\n x: e + t.width * 0.5,\n y: n + t.height * 0.5\n };\n}\nconst hr = (t) => {\n let {\n collisionRect: e,\n droppableRects: n,\n droppableContainers: i\n } = t;\n const r = zn(e, e.left, e.top), s = [];\n for (const l of i) {\n const {\n id: a\n } = l, o = n.get(a);\n if (o) {\n const c = Un(zn(o), r);\n s.push({\n id: a,\n data: {\n droppableContainer: l,\n value: c\n }\n });\n }\n }\n return s.sort(Gn);\n}, vr = (t) => {\n let {\n collisionRect: e,\n droppableRects: n,\n droppableContainers: i\n } = t;\n const r = xn(e), s = [];\n for (const l of i) {\n const {\n id: a\n } = l, o = n.get(a);\n if (o) {\n const c = xn(o), d = r.reduce((f, h, v) => f + Un(c[v], h), 0), u = Number((d / 4).toFixed(4));\n s.push({\n id: a,\n data: {\n droppableContainer: l,\n value: u\n }\n });\n }\n }\n return s.sort(Gn);\n};\nfunction pr(t, e) {\n const n = Math.max(e.top, t.top), i = Math.max(e.left, t.left), r = Math.min(e.left + e.width, t.left + t.width), s = Math.min(e.top + e.height, t.top + t.height), l = r - i, a = s - n;\n if (i < r && n < s) {\n const o = e.width * e.height, c = t.width * t.height, d = l * a, u = d / (o + c - d);\n return Number(u.toFixed(4));\n }\n return 0;\n}\nconst wr = (t) => {\n let {\n collisionRect: e,\n droppableRects: n,\n droppableContainers: i\n } = t;\n const r = [];\n for (const s of i) {\n const {\n id: l\n } = s, a = n.get(l);\n if (a) {\n const o = pr(a, e);\n o > 0 && r.push({\n id: l,\n data: {\n droppableContainer: s,\n value: o\n }\n });\n }\n }\n return r.sort(fr);\n};\nfunction mr(t, e, n) {\n return {\n ...t,\n scaleX: e && n ? e.width / n.width : 1,\n scaleY: e && n ? e.height / n.height : 1\n };\n}\nfunction Jn(t, e) {\n return t && e ? {\n x: t.left - e.left,\n y: t.top - e.top\n } : ce;\n}\nfunction gr(t) {\n return function(n) {\n for (var i = arguments.length, r = new Array(i > 1 ? i - 1 : 0), s = 1; s < i; s++)\n r[s - 1] = arguments[s];\n return r.reduce((l, a) => ({\n ...l,\n top: l.top + t * a.y,\n bottom: l.bottom + t * a.y,\n left: l.left + t * a.x,\n right: l.right + t * a.x\n }), {\n ...n\n });\n };\n}\nconst br = /* @__PURE__ */ gr(1);\nfunction Qn(t) {\n if (t.startsWith(\"matrix3d(\")) {\n const e = t.slice(9, -1).split(/, /);\n return {\n x: +e[12],\n y: +e[13],\n scaleX: +e[0],\n scaleY: +e[5]\n };\n } else if (t.startsWith(\"matrix(\")) {\n const e = t.slice(7, -1).split(/, /);\n return {\n x: +e[4],\n y: +e[5],\n scaleX: +e[0],\n scaleY: +e[3]\n };\n }\n return null;\n}\nfunction yr(t, e, n) {\n const i = Qn(e);\n if (!i)\n return t;\n const {\n scaleX: r,\n scaleY: s,\n x: l,\n y: a\n } = i, o = t.left - l - (1 - r) * parseFloat(n), c = t.top - a - (1 - s) * parseFloat(n.slice(n.indexOf(\" \") + 1)), d = r ? t.width / r : t.width, u = s ? t.height / s : t.height;\n return {\n width: d,\n height: u,\n top: c,\n right: o + d,\n bottom: c + u,\n left: o\n };\n}\nconst Sr = {\n ignoreTransform: !1\n};\nfunction Te(t, e) {\n e === void 0 && (e = Sr);\n let n = t.getBoundingClientRect();\n if (e.ignoreTransform) {\n const {\n transform: c,\n transformOrigin: d\n } = q(t).getComputedStyle(t);\n c && (n = yr(n, c, d));\n }\n const {\n top: i,\n left: r,\n width: s,\n height: l,\n bottom: a,\n right: o\n } = n;\n return {\n top: i,\n left: r,\n width: s,\n height: l,\n bottom: a,\n right: o\n };\n}\nfunction Dn(t) {\n return Te(t, {\n ignoreTransform: !0\n });\n}\nfunction Rr(t) {\n const e = t.innerWidth, n = t.innerHeight;\n return {\n top: 0,\n left: 0,\n right: e,\n bottom: n,\n width: e,\n height: n\n };\n}\nfunction xr(t, e) {\n return e === void 0 && (e = q(t).getComputedStyle(t)), e.position === \"fixed\";\n}\nfunction zr(t, e) {\n e === void 0 && (e = q(t).getComputedStyle(t));\n const n = /(auto|scroll|overlay)/;\n return [\"overflow\", \"overflowX\", \"overflowY\"].some((r) => {\n const s = e[r];\n return typeof s == \"string\" ? n.test(s) : !1;\n });\n}\nfunction wt(t, e) {\n const n = [];\n function i(r) {\n if (e != null && n.length >= e || !r)\n return n;\n if (jt(r) && r.scrollingElement != null && !n.includes(r.scrollingElement))\n return n.push(r.scrollingElement), n;\n if (!Ue(r) || Xn(r) || n.includes(r))\n return n;\n const s = q(t).getComputedStyle(r);\n return r !== t && zr(r, s) && n.push(r), xr(r, s) ? n : i(r.parentNode);\n }\n return t ? i(t) : n;\n}\nfunction Zn(t) {\n const [e] = wt(t, 1);\n return e ?? null;\n}\nfunction Ct(t) {\n return !ht || !t ? null : Ae(t) ? t : kt(t) ? jt(t) || t === Le(t).scrollingElement ? window : Ue(t) ? t : null : null;\n}\nfunction ei(t) {\n return Ae(t) ? t.scrollX : t.scrollLeft;\n}\nfunction ti(t) {\n return Ae(t) ? t.scrollY : t.scrollTop;\n}\nfunction At(t) {\n return {\n x: ei(t),\n y: ti(t)\n };\n}\nvar H;\n(function(t) {\n t[t.Forward = 1] = \"Forward\", t[t.Backward = -1] = \"Backward\";\n})(H || (H = {}));\nfunction ni(t) {\n return !ht || !t ? !1 : t === document.scrollingElement;\n}\nfunction ii(t) {\n const e = {\n x: 0,\n y: 0\n }, n = ni(t) ? {\n height: window.innerHeight,\n width: window.innerWidth\n } : {\n height: t.clientHeight,\n width: t.clientWidth\n }, i = {\n x: t.scrollWidth - n.width,\n y: t.scrollHeight - n.height\n }, r = t.scrollTop <= e.y, s = t.scrollLeft <= e.x, l = t.scrollTop >= i.y, a = t.scrollLeft >= i.x;\n return {\n isTop: r,\n isLeft: s,\n isBottom: l,\n isRight: a,\n maxScroll: i,\n minScroll: e\n };\n}\nconst Dr = {\n x: 0.2,\n y: 0.2\n};\nfunction Ir(t, e, n, i, r) {\n let {\n top: s,\n left: l,\n right: a,\n bottom: o\n } = n;\n i === void 0 && (i = 10), r === void 0 && (r = Dr);\n const {\n isTop: c,\n isBottom: d,\n isLeft: u,\n isRight: f\n } = ii(t), h = {\n x: 0,\n y: 0\n }, v = {\n x: 0,\n y: 0\n }, p = {\n height: e.height * r.y,\n width: e.width * r.x\n };\n return !c && s <= e.top + p.height ? (h.y = H.Backward, v.y = i * Math.abs((e.top + p.height - s) / p.height)) : !d && o >= e.bottom - p.height && (h.y = H.Forward, v.y = i * Math.abs((e.bottom - p.height - o) / p.height)), !f && a >= e.right - p.width ? (h.x = H.Forward, v.x = i * Math.abs((e.right - p.width - a) / p.width)) : !u && l <= e.left + p.width && (h.x = H.Backward, v.x = i * Math.abs((e.left + p.width - l) / p.width)), {\n direction: h,\n speed: v\n };\n}\nfunction Er(t) {\n if (t === document.scrollingElement) {\n const {\n innerWidth: s,\n innerHeight: l\n } = window;\n return {\n top: 0,\n left: 0,\n right: s,\n bottom: l,\n width: s,\n height: l\n };\n }\n const {\n top: e,\n left: n,\n right: i,\n bottom: r\n } = t.getBoundingClientRect();\n return {\n top: e,\n left: n,\n right: i,\n bottom: r,\n width: t.clientWidth,\n height: t.clientHeight\n };\n}\nfunction ri(t) {\n return t.reduce((e, n) => Me(e, At(n)), ce);\n}\nfunction Cr(t) {\n return t.reduce((e, n) => e + ei(n), 0);\n}\nfunction _r(t) {\n return t.reduce((e, n) => e + ti(n), 0);\n}\nfunction si(t, e) {\n if (e === void 0 && (e = Te), !t)\n return;\n const {\n top: n,\n left: i,\n bottom: r,\n right: s\n } = e(t);\n Zn(t) && (r <= 0 || s <= 0 || n >= window.innerHeight || i >= window.innerWidth) && t.scrollIntoView({\n block: \"center\",\n inline: \"center\"\n });\n}\nconst Or = [[\"x\", [\"left\", \"right\"], Cr], [\"y\", [\"top\", \"bottom\"], _r]];\nclass Ft {\n constructor(e, n) {\n this.rect = void 0, this.width = void 0, this.height = void 0, this.top = void 0, this.bottom = void 0, this.right = void 0, this.left = void 0;\n const i = wt(n), r = ri(i);\n this.rect = {\n ...e\n }, this.width = e.width, this.height = e.height;\n for (const [s, l, a] of Or)\n for (const o of l)\n Object.defineProperty(this, o, {\n get: () => {\n const c = a(i), d = r[s] - c;\n return this.rect[o] + d;\n },\n enumerable: !0\n });\n Object.defineProperty(this, \"rect\", {\n enumerable: !1\n });\n }\n}\nclass Be {\n constructor(e) {\n this.target = void 0, this.listeners = [], this.removeAll = () => {\n this.listeners.forEach((n) => {\n var i;\n return (i = this.target) == null ? void 0 : i.removeEventListener(...n);\n });\n }, this.target = e;\n }\n add(e, n, i) {\n var r;\n (r = this.target) == null || r.addEventListener(e, n, i), this.listeners.push([e, n, i]);\n }\n}\nfunction Nr(t) {\n const {\n EventTarget: e\n } = q(t);\n return t instanceof e ? t : Le(t);\n}\nfunction _t(t, e) {\n const n = Math.abs(t.x), i = Math.abs(t.y);\n return typeof e == \"number\" ? Math.sqrt(n ** 2 + i ** 2) > e : \"x\" in e && \"y\" in e ? n > e.x && i > e.y : \"x\" in e ? n > e.x : \"y\" in e ? i > e.y : !1;\n}\nvar re;\n(function(t) {\n t.Click = \"click\", t.DragStart = \"dragstart\", t.Keydown = \"keydown\", t.ContextMenu = \"contextmenu\", t.Resize = \"resize\", t.SelectionChange = \"selectionchange\", t.VisibilityChange = \"visibilitychange\";\n})(re || (re = {}));\nfunction In(t) {\n t.preventDefault();\n}\nfunction Mr(t) {\n t.stopPropagation();\n}\nvar L;\n(function(t) {\n t.Space = \"Space\", t.Down = \"ArrowDown\", t.Right = \"ArrowRight\", t.Left = \"ArrowLeft\", t.Up = \"ArrowUp\", t.Esc = \"Escape\", t.Enter = \"Enter\", t.Tab = \"Tab\";\n})(L || (L = {}));\nconst oi = {\n start: [L.Space, L.Enter],\n cancel: [L.Esc],\n end: [L.Space, L.Enter, L.Tab]\n}, Ar = (t, e) => {\n let {\n currentCoordinates: n\n } = e;\n switch (t.code) {\n case L.Right:\n return {\n ...n,\n x: n.x + 25\n };\n case L.Left:\n return {\n ...n,\n x: n.x - 25\n };\n case L.Down:\n return {\n ...n,\n y: n.y + 25\n };\n case L.Up:\n return {\n ...n,\n y: n.y - 25\n };\n }\n};\nclass Bt {\n constructor(e) {\n this.props = void 0, this.autoScrollEnabled = !1, this.referenceCoordinates = void 0, this.listeners = void 0, this.windowListeners = void 0, this.props = e;\n const {\n event: {\n target: n\n }\n } = e;\n this.props = e, this.listeners = new Be(Le(n)), this.windowListeners = new Be(q(n)), this.handleKeyDown = this.handleKeyDown.bind(this), this.handleCancel = this.handleCancel.bind(this), this.attach();\n }\n attach() {\n this.handleStart(), this.windowListeners.add(re.Resize, this.handleCancel), this.windowListeners.add(re.VisibilityChange, this.handleCancel), setTimeout(() => this.listeners.add(re.Keydown, this.handleKeyDown));\n }\n handleStart() {\n const {\n activeNode: e,\n onStart: n\n } = this.props, i = e.node.current;\n i && si(i), n(ce);\n }\n handleKeyDown(e) {\n if (pt(e)) {\n const {\n active: n,\n context: i,\n options: r\n } = this.props, {\n keyboardCodes: s = oi,\n coordinateGetter: l = Ar,\n scrollBehavior: a = \"smooth\"\n } = r, {\n code: o\n } = e;\n if (s.end.includes(o)) {\n this.handleEnd(e);\n return;\n }\n if (s.cancel.includes(o)) {\n this.handleCancel(e);\n return;\n }\n const {\n collisionRect: c\n } = i.current, d = c ? {\n x: c.left,\n y: c.top\n } : ce;\n this.referenceCoordinates || (this.referenceCoordinates = d);\n const u = l(e, {\n active: n,\n context: i.current,\n currentCoordinates: d\n });\n if (u) {\n const f = Xe(u, d), h = {\n x: 0,\n y: 0\n }, {\n scrollableAncestors: v\n } = i.current;\n for (const p of v) {\n const w = e.code, {\n isTop: g,\n isRight: b,\n isLeft: y,\n isBottom: S,\n maxScroll: x,\n minScroll: z\n } = ii(p), m = Er(p), R = {\n x: Math.min(w === L.Right ? m.right - m.width / 2 : m.right, Math.max(w === L.Right ? m.left : m.left + m.width / 2, u.x)),\n y: Math.min(w === L.Down ? m.bottom - m.height / 2 : m.bottom, Math.max(w === L.Down ? m.top : m.top + m.height / 2, u.y))\n }, _ = w === L.Right && !b || w === L.Left && !y, N = w === L.Down && !S || w === L.Up && !g;\n if (_ && R.x !== u.x) {\n const T = p.scrollLeft + f.x, O = w === L.Right && T <= x.x || w === L.Left && T >= z.x;\n if (O && !f.y) {\n p.scrollTo({\n left: T,\n behavior: a\n });\n return;\n }\n O ? h.x = p.scrollLeft - T : h.x = w === L.Right ? p.scrollLeft - x.x : p.scrollLeft - z.x, h.x && p.scrollBy({\n left: -h.x,\n behavior: a\n });\n break;\n } else if (N && R.y !== u.y) {\n const T = p.scrollTop + f.y, O = w === L.Down && T <= x.y || w === L.Up && T >= z.y;\n if (O && !f.x) {\n p.scrollTo({\n top: T,\n behavior: a\n });\n return;\n }\n O ? h.y = p.scrollTop - T : h.y = w === L.Down ? p.scrollTop - x.y : p.scrollTop - z.y, h.y && p.scrollBy({\n top: -h.y,\n behavior: a\n });\n break;\n }\n }\n this.handleMove(e, Me(Xe(u, this.referenceCoordinates), h));\n }\n }\n }\n handleMove(e, n) {\n const {\n onMove: i\n } = this.props;\n e.preventDefault(), i(n);\n }\n handleEnd(e) {\n const {\n onEnd: n\n } = this.props;\n e.preventDefault(), this.detach(), n();\n }\n handleCancel(e) {\n const {\n onCancel: n\n } = this.props;\n e.preventDefault(), this.detach(), n();\n }\n detach() {\n this.listeners.removeAll(), this.windowListeners.removeAll();\n }\n}\nBt.activators = [{\n eventName: \"onKeyDown\",\n handler: (t, e, n) => {\n let {\n keyboardCodes: i = oi,\n onActivation: r\n } = e, {\n active: s\n } = n;\n const {\n code: l\n } = t.nativeEvent;\n if (i.start.includes(l)) {\n const a = s.activatorNode.current;\n return a && t.target !== a ? !1 : (t.preventDefault(), r == null || r({\n event: t.nativeEvent\n }), !0);\n }\n return !1;\n }\n}];\nfunction En(t) {\n return !!(t && \"distance\" in t);\n}\nfunction Cn(t) {\n return !!(t && \"delay\" in t);\n}\nclass $t {\n constructor(e, n, i) {\n var r;\n i === void 0 && (i = Nr(e.event.target)), this.props = void 0, this.events = void 0, this.autoScrollEnabled = !0, this.document = void 0, this.activated = !1, this.initialCoordinates = void 0, this.timeoutId = null, this.listeners = void 0, this.documentListeners = void 0, this.windowListeners = void 0, this.props = e, this.events = n;\n const {\n event: s\n } = e, {\n target: l\n } = s;\n this.props = e, this.events = n, this.document = Le(l), this.documentListeners = new Be(this.document), this.listeners = new Be(i), this.windowListeners = new Be(q(l)), this.initialCoordinates = (r = ct(s)) != null ? r : ce, this.handleStart = this.handleStart.bind(this), this.handleMove = this.handleMove.bind(this), this.handleEnd = this.handleEnd.bind(this), this.handleCancel = this.handleCancel.bind(this), this.handleKeydown = this.handleKeydown.bind(this), this.removeTextSelection = this.removeTextSelection.bind(this), this.attach();\n }\n attach() {\n const {\n events: e,\n props: {\n options: {\n activationConstraint: n,\n bypassActivationConstraint: i\n }\n }\n } = this;\n if (this.listeners.add(e.move.name, this.handleMove, {\n passive: !1\n }), this.listeners.add(e.end.name, this.handleEnd), e.cancel && this.listeners.add(e.cancel.name, this.handleCancel), this.windowListeners.add(re.Resize, this.handleCancel), this.windowListeners.add(re.DragStart, In), this.windowListeners.add(re.VisibilityChange, this.handleCancel), this.windowListeners.add(re.ContextMenu, In), this.documentListeners.add(re.Keydown, this.handleKeydown), n) {\n if (i != null && i({\n event: this.props.event,\n activeNode: this.props.activeNode,\n options: this.props.options\n }))\n return this.handleStart();\n if (Cn(n)) {\n this.timeoutId = setTimeout(this.handleStart, n.delay), this.handlePending(n);\n return;\n }\n if (En(n)) {\n this.handlePending(n);\n return;\n }\n }\n this.handleStart();\n }\n detach() {\n this.listeners.removeAll(), this.windowListeners.removeAll(), setTimeout(this.documentListeners.removeAll, 50), this.timeoutId !== null && (clearTimeout(this.timeoutId), this.timeoutId = null);\n }\n handlePending(e, n) {\n const {\n active: i,\n onPending: r\n } = this.props;\n r(i, e, this.initialCoordinates, n);\n }\n handleStart() {\n const {\n initialCoordinates: e\n } = this, {\n onStart: n\n } = this.props;\n e && (this.activated = !0, this.documentListeners.add(re.Click, Mr, {\n capture: !0\n }), this.removeTextSelection(), this.documentListeners.add(re.SelectionChange, this.removeTextSelection), n(e));\n }\n handleMove(e) {\n var n;\n const {\n activated: i,\n initialCoordinates: r,\n props: s\n } = this, {\n onMove: l,\n options: {\n activationConstraint: a\n }\n } = s;\n if (!r)\n return;\n const o = (n = ct(e)) != null ? n : ce, c = Xe(r, o);\n if (!i && a) {\n if (En(a)) {\n if (a.tolerance != null && _t(c, a.tolerance))\n return this.handleCancel();\n if (_t(c, a.distance))\n return this.handleStart();\n }\n if (Cn(a) && _t(c, a.tolerance))\n return this.handleCancel();\n this.handlePending(a, c);\n return;\n }\n e.cancelable && e.preventDefault(), l(o);\n }\n handleEnd() {\n const {\n onAbort: e,\n onEnd: n\n } = this.props;\n this.detach(), this.activated || e(this.props.active), n();\n }\n handleCancel() {\n const {\n onAbort: e,\n onCancel: n\n } = this.props;\n this.detach(), this.activated || e(this.props.active), n();\n }\n handleKeydown(e) {\n e.code === L.Esc && this.handleCancel();\n }\n removeTextSelection() {\n var e;\n (e = this.document.getSelection()) == null || e.removeAllRanges();\n }\n}\nconst Lr = {\n cancel: {\n name: \"pointercancel\"\n },\n move: {\n name: \"pointermove\"\n },\n end: {\n name: \"pointerup\"\n }\n};\nclass Yt extends $t {\n constructor(e) {\n const {\n event: n\n } = e, i = Le(n.target);\n super(e, Lr, i);\n }\n}\nYt.activators = [{\n eventName: \"onPointerDown\",\n handler: (t, e) => {\n let {\n nativeEvent: n\n } = t, {\n onActivation: i\n } = e;\n return !n.isPrimary || n.button !== 0 ? !1 : (i == null || i({\n event: n\n }), !0);\n }\n}];\nconst Tr = {\n move: {\n name: \"mousemove\"\n },\n end: {\n name: \"mouseup\"\n }\n};\nvar Lt;\n(function(t) {\n t[t.RightClick = 2] = \"RightClick\";\n})(Lt || (Lt = {}));\nclass Vr extends $t {\n constructor(e) {\n super(e, Tr, Le(e.event.target));\n }\n}\nVr.activators = [{\n eventName: \"onMouseDown\",\n handler: (t, e) => {\n let {\n nativeEvent: n\n } = t, {\n onActivation: i\n } = e;\n return n.button === Lt.RightClick ? !1 : (i == null || i({\n event: n\n }), !0);\n }\n}];\nconst Ot = {\n cancel: {\n name: \"touchcancel\"\n },\n move: {\n name: \"touchmove\"\n },\n end: {\n name: \"touchend\"\n }\n};\nclass Pr extends $t {\n constructor(e) {\n super(e, Ot);\n }\n static setup() {\n return window.addEventListener(Ot.move.name, e, {\n capture: !1,\n passive: !1\n }), function() {\n window.removeEventListener(Ot.move.name, e);\n };\n function e() {\n }\n }\n}\nPr.activators = [{\n eventName: \"onTouchStart\",\n handler: (t, e) => {\n let {\n nativeEvent: n\n } = t, {\n onActivation: i\n } = e;\n const {\n touches: r\n } = n;\n return r.length > 1 ? !1 : (i == null || i({\n event: n\n }), !0);\n }\n}];\nvar $e;\n(function(t) {\n t[t.Pointer = 0] = \"Pointer\", t[t.DraggableRect = 1] = \"DraggableRect\";\n})($e || ($e = {}));\nvar dt;\n(function(t) {\n t[t.TreeOrder = 0] = \"TreeOrder\", t[t.ReversedTreeOrder = 1] = \"ReversedTreeOrder\";\n})(dt || (dt = {}));\nfunction kr(t) {\n let {\n acceleration: e,\n activator: n = $e.Pointer,\n canScroll: i,\n draggingRect: r,\n enabled: s,\n interval: l = 5,\n order: a = dt.TreeOrder,\n pointerCoordinates: o,\n scrollableAncestors: c,\n scrollableAncestorRects: d,\n delta: u,\n threshold: f\n } = t;\n const h = Fr({\n delta: u,\n disabled: !s\n }), [v, p] = Ji(), w = window.React.useRef({\n x: 0,\n y: 0\n }), g = window.React.useRef({\n x: 0,\n y: 0\n }), b = window.React.useMemo(() => {\n switch (n) {\n case $e.Pointer:\n return o ? {\n top: o.y,\n bottom: o.y,\n left: o.x,\n right: o.x\n } : null;\n case $e.DraggableRect:\n return r;\n }\n }, [n, r, o]), y = window.React.useRef(null), S = window.React.useCallback(() => {\n const z = y.current;\n if (!z)\n return;\n const m = w.current.x * g.current.x, R = w.current.y * g.current.y;\n z.scrollBy(m, R);\n }, []), x = window.React.useMemo(() => a === dt.TreeOrder ? [...c].reverse() : c, [a, c]);\n window.React.useEffect(\n () => {\n if (!s || !c.length || !b) {\n p();\n return;\n }\n for (const z of x) {\n if ((i == null ? void 0 : i(z)) === !1)\n continue;\n const m = c.indexOf(z), R = d[m];\n if (!R)\n continue;\n const {\n direction: _,\n speed: N\n } = Ir(z, R, b, e, f);\n for (const T of [\"x\", \"y\"])\n h[T][_[T]] || (N[T] = 0, _[T] = 0);\n if (N.x > 0 || N.y > 0) {\n p(), y.current = z, v(S, l), w.current = N, g.current = _;\n return;\n }\n }\n w.current = {\n x: 0,\n y: 0\n }, g.current = {\n x: 0,\n y: 0\n }, p();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n e,\n S,\n i,\n p,\n s,\n l,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(b),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(h),\n v,\n c,\n x,\n d,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(f)\n ]\n );\n}\nconst jr = {\n x: {\n [H.Backward]: !1,\n [H.Forward]: !1\n },\n y: {\n [H.Backward]: !1,\n [H.Forward]: !1\n }\n};\nfunction Fr(t) {\n let {\n delta: e,\n disabled: n\n } = t;\n const i = lt(e);\n return Ge((r) => {\n if (n || !i || !r)\n return jr;\n const s = {\n x: Math.sign(e.x - i.x),\n y: Math.sign(e.y - i.y)\n };\n return {\n x: {\n [H.Backward]: r.x[H.Backward] || s.x === -1,\n [H.Forward]: r.x[H.Forward] || s.x === 1\n },\n y: {\n [H.Backward]: r.y[H.Backward] || s.y === -1,\n [H.Forward]: r.y[H.Forward] || s.y === 1\n }\n };\n }, [n, e, i]);\n}\nfunction Br(t, e) {\n const n = e != null ? t.get(e) : void 0, i = n ? n.node.current : null;\n return Ge((r) => {\n var s;\n return e == null ? null : (s = i ?? r) != null ? s : null;\n }, [i, e]);\n}\nfunction $r(t, e) {\n return window.React.useMemo(() => t.reduce((n, i) => {\n const {\n sensor: r\n } = i, s = r.activators.map((l) => ({\n eventName: l.eventName,\n handler: e(l.handler, i)\n }));\n return [...n, ...s];\n }, []), [t, e]);\n}\nvar We;\n(function(t) {\n t[t.Always = 0] = \"Always\", t[t.BeforeDragging = 1] = \"BeforeDragging\", t[t.WhileDragging = 2] = \"WhileDragging\";\n})(We || (We = {}));\nvar Tt;\n(function(t) {\n t.Optimized = \"optimized\";\n})(Tt || (Tt = {}));\nconst _n = /* @__PURE__ */ new Map();\nfunction Yr(t, e) {\n let {\n dragging: n,\n dependencies: i,\n config: r\n } = e;\n const [s, l] = window.React.useState(null), {\n frequency: a,\n measure: o,\n strategy: c\n } = r, d = window.React.useRef(t), u = w(), f = He(u), h = window.React.useCallback(function(g) {\n g === void 0 && (g = []), !f.current && l((b) => b === null ? g : b.concat(g.filter((y) => !b.includes(y))));\n }, [f]), v = window.React.useRef(null), p = Ge((g) => {\n if (u && !n)\n return _n;\n if (!g || g === _n || d.current !== t || s != null) {\n const b = /* @__PURE__ */ new Map();\n for (let y of t) {\n if (!y)\n continue;\n if (s && s.length > 0 && !s.includes(y.id) && y.rect.current) {\n b.set(y.id, y.rect.current);\n continue;\n }\n const S = y.node.current, x = S ? new Ft(o(S), S) : null;\n y.rect.current = x, x && b.set(y.id, x);\n }\n return b;\n }\n return g;\n }, [t, s, n, u, o]);\n return window.React.useEffect(() => {\n d.current = t;\n }, [t]), window.React.useEffect(\n () => {\n u || h();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [n, u]\n ), window.React.useEffect(\n () => {\n s && s.length > 0 && l(null);\n },\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(s)]\n ), window.React.useEffect(\n () => {\n u || typeof a != \"number\" || v.current !== null || (v.current = setTimeout(() => {\n h(), v.current = null;\n }, a));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [a, u, h, ...i]\n ), {\n droppableRects: p,\n measureDroppableContainers: h,\n measuringScheduled: s != null\n };\n function w() {\n switch (c) {\n case We.Always:\n return !1;\n case We.BeforeDragging:\n return n;\n default:\n return !n;\n }\n }\n}\nfunction Ht(t, e) {\n return Ge((n) => t ? n || (typeof e == \"function\" ? e(t) : t) : null, [e, t]);\n}\nfunction Hr(t, e) {\n return Ht(t, e);\n}\nfunction Xr(t) {\n let {\n callback: e,\n disabled: n\n } = t;\n const i = vt(e), r = window.React.useMemo(() => {\n if (n || typeof window > \"u\" || typeof window.MutationObserver > \"u\")\n return;\n const {\n MutationObserver: s\n } = window;\n return new s(i);\n }, [i, n]);\n return window.React.useEffect(() => () => r == null ? void 0 : r.disconnect(), [r]), r;\n}\nfunction mt(t) {\n let {\n callback: e,\n disabled: n\n } = t;\n const i = vt(e), r = window.React.useMemo(\n () => {\n if (n || typeof window > \"u\" || typeof window.ResizeObserver > \"u\")\n return;\n const {\n ResizeObserver: s\n } = window;\n return new s(i);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [n]\n );\n return window.React.useEffect(() => () => r == null ? void 0 : r.disconnect(), [r]), r;\n}\nfunction Wr(t) {\n return new Ft(Te(t), t);\n}\nfunction On(t, e, n) {\n e === void 0 && (e = Wr);\n const [i, r] = window.React.useState(null);\n function s() {\n r((o) => {\n if (!t)\n return null;\n if (t.isConnected === !1) {\n var c;\n return (c = o ?? n) != null ? c : null;\n }\n const d = e(t);\n return JSON.stringify(o) === JSON.stringify(d) ? o : d;\n });\n }\n const l = Xr({\n callback(o) {\n if (t)\n for (const c of o) {\n const {\n type: d,\n target: u\n } = c;\n if (d === \"childList\" && u instanceof HTMLElement && u.contains(t)) {\n s();\n break;\n }\n }\n }\n }), a = mt({\n callback: s\n });\n return le(() => {\n s(), t ? (a == null || a.observe(t), l == null || l.observe(document.body, {\n childList: !0,\n subtree: !0\n })) : (a == null || a.disconnect(), l == null || l.disconnect());\n }, [t]), i;\n}\nfunction Kr(t) {\n const e = Ht(t);\n return Jn(t, e);\n}\nconst Nn = [];\nfunction Ur(t) {\n const e = window.React.useRef(t), n = Ge((i) => t ? i && i !== Nn && t && e.current && t.parentNode === e.current.parentNode ? i : wt(t) : Nn, [t]);\n return window.React.useEffect(() => {\n e.current = t;\n }, [t]), n;\n}\nfunction Gr(t) {\n const [e, n] = window.React.useState(null), i = window.React.useRef(t), r = window.React.useCallback((s) => {\n const l = Ct(s.target);\n l && n((a) => a ? (a.set(l, At(l)), new Map(a)) : null);\n }, []);\n return window.React.useEffect(() => {\n const s = i.current;\n if (t !== s) {\n l(s);\n const a = t.map((o) => {\n const c = Ct(o);\n return c ? (c.addEventListener(\"scroll\", r, {\n passive: !0\n }), [c, At(c)]) : null;\n }).filter((o) => o != null);\n n(a.length ? new Map(a) : null), i.current = t;\n }\n return () => {\n l(t), l(s);\n };\n function l(a) {\n a.forEach((o) => {\n const c = Ct(o);\n c == null || c.removeEventListener(\"scroll\", r);\n });\n }\n }, [r, t]), window.React.useMemo(() => t.length ? e ? Array.from(e.values()).reduce((s, l) => Me(s, l), ce) : ri(t) : ce, [t, e]);\n}\nfunction Mn(t, e) {\n e === void 0 && (e = []);\n const n = window.React.useRef(null);\n return window.React.useEffect(\n () => {\n n.current = null;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n e\n ), window.React.useEffect(() => {\n const i = t !== ce;\n i && !n.current && (n.current = t), !i && n.current && (n.current = null);\n }, [t]), n.current ? Xe(t, n.current) : ce;\n}\nfunction qr(t) {\n window.React.useEffect(\n () => {\n if (!ht)\n return;\n const e = t.map((n) => {\n let {\n sensor: i\n } = n;\n return i.setup == null ? void 0 : i.setup();\n });\n return () => {\n for (const n of e)\n n == null || n();\n };\n },\n // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n t.map((e) => {\n let {\n sensor: n\n } = e;\n return n;\n })\n );\n}\nfunction Jr(t, e) {\n return window.React.useMemo(() => t.reduce((n, i) => {\n let {\n eventName: r,\n handler: s\n } = i;\n return n[r] = (l) => {\n s(l, e);\n }, n;\n }, {}), [t, e]);\n}\nfunction ai(t) {\n return window.React.useMemo(() => t ? Rr(t) : null, [t]);\n}\nconst An = [];\nfunction Qr(t, e) {\n e === void 0 && (e = Te);\n const [n] = t, i = ai(n ? q(n) : null), [r, s] = window.React.useState(An);\n function l() {\n s(() => t.length ? t.map((o) => ni(o) ? i : new Ft(e(o), o)) : An);\n }\n const a = mt({\n callback: l\n });\n return le(() => {\n a == null || a.disconnect(), l(), t.forEach((o) => a == null ? void 0 : a.observe(o));\n }, [t]), r;\n}\nfunction li(t) {\n if (!t)\n return null;\n if (t.children.length > 1)\n return t;\n const e = t.children[0];\n return Ue(e) ? e : t;\n}\nfunction Zr(t) {\n let {\n measure: e\n } = t;\n const [n, i] = window.React.useState(null), r = window.React.useCallback((c) => {\n for (const {\n target: d\n } of c)\n if (Ue(d)) {\n i((u) => {\n const f = e(d);\n return u ? {\n ...u,\n width: f.width,\n height: f.height\n } : f;\n });\n break;\n }\n }, [e]), s = mt({\n callback: r\n }), l = window.React.useCallback((c) => {\n const d = li(c);\n s == null || s.disconnect(), d && (s == null || s.observe(d)), i(d ? e(d) : null);\n }, [e, s]), [a, o] = at(l);\n return window.React.useMemo(() => ({\n nodeRef: a,\n rect: n,\n setRef: o\n }), [n, a, o]);\n}\nconst es = [{\n sensor: Yt,\n options: {}\n}, {\n sensor: Bt,\n options: {}\n}], ts = {\n current: {}\n}, st = {\n draggable: {\n measure: Dn\n },\n droppable: {\n measure: Dn,\n strategy: We.WhileDragging,\n frequency: Tt.Optimized\n },\n dragOverlay: {\n measure: Te\n }\n};\nclass Ye extends Map {\n get(e) {\n var n;\n return e != null && (n = super.get(e)) != null ? n : void 0;\n }\n toArray() {\n return Array.from(this.values());\n }\n getEnabled() {\n return this.toArray().filter((e) => {\n let {\n disabled: n\n } = e;\n return !n;\n });\n }\n getNodeFor(e) {\n var n, i;\n return (n = (i = this.get(e)) == null ? void 0 : i.node.current) != null ? n : void 0;\n }\n}\nconst ns = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: /* @__PURE__ */ new Map(),\n droppableRects: /* @__PURE__ */ new Map(),\n droppableContainers: /* @__PURE__ */ new Ye(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null\n },\n rect: null,\n setRef: ut\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: st,\n measureDroppableContainers: ut,\n windowRect: null,\n measuringScheduled: !1\n}, ci = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: \"\"\n },\n dispatch: ut,\n draggableNodes: /* @__PURE__ */ new Map(),\n over: null,\n measureDroppableContainers: ut\n}, Je = /* @__PURE__ */ window.React.createContext(ci), ui = /* @__PURE__ */ window.React.createContext(ns);\nfunction is() {\n return {\n draggable: {\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n nodes: /* @__PURE__ */ new Map(),\n translate: {\n x: 0,\n y: 0\n }\n },\n droppable: {\n containers: new Ye()\n }\n };\n}\nfunction rs(t, e) {\n switch (e.type) {\n case Y.DragStart:\n return {\n ...t,\n draggable: {\n ...t.draggable,\n initialCoordinates: e.initialCoordinates,\n active: e.active\n }\n };\n case Y.DragMove:\n return t.draggable.active == null ? t : {\n ...t,\n draggable: {\n ...t.draggable,\n translate: {\n x: e.coordinates.x - t.draggable.initialCoordinates.x,\n y: e.coordinates.y - t.draggable.initialCoordinates.y\n }\n }\n };\n case Y.DragEnd:\n case Y.DragCancel:\n return {\n ...t,\n draggable: {\n ...t.draggable,\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n translate: {\n x: 0,\n y: 0\n }\n }\n };\n case Y.RegisterDroppable: {\n const {\n element: n\n } = e, {\n id: i\n } = n, r = new Ye(t.droppable.containers);\n return r.set(i, n), {\n ...t,\n droppable: {\n ...t.droppable,\n containers: r\n }\n };\n }\n case Y.SetDroppableDisabled: {\n const {\n id: n,\n key: i,\n disabled: r\n } = e, s = t.droppable.containers.get(n);\n if (!s || i !== s.key)\n return t;\n const l = new Ye(t.droppable.containers);\n return l.set(n, {\n ...s,\n disabled: r\n }), {\n ...t,\n droppable: {\n ...t.droppable,\n containers: l\n }\n };\n }\n case Y.UnregisterDroppable: {\n const {\n id: n,\n key: i\n } = e, r = t.droppable.containers.get(n);\n if (!r || i !== r.key)\n return t;\n const s = new Ye(t.droppable.containers);\n return s.delete(n), {\n ...t,\n droppable: {\n ...t.droppable,\n containers: s\n }\n };\n }\n default:\n return t;\n }\n}\nfunction ss(t) {\n let {\n disabled: e\n } = t;\n const {\n active: n,\n activatorEvent: i,\n draggableNodes: r\n } = window.React.useContext(Je), s = lt(i), l = lt(n == null ? void 0 : n.id);\n return window.React.useEffect(() => {\n if (!e && !i && s && l != null) {\n if (!pt(s) || document.activeElement === s.target)\n return;\n const a = r.get(l);\n if (!a)\n return;\n const {\n activatorNode: o,\n node: c\n } = a;\n if (!o.current && !c.current)\n return;\n requestAnimationFrame(() => {\n for (const d of [o.current, c.current]) {\n if (!d)\n continue;\n const u = er(d);\n if (u) {\n u.focus();\n break;\n }\n }\n });\n }\n }, [i, e, r, l, s]), null;\n}\nfunction di(t, e) {\n let {\n transform: n,\n ...i\n } = e;\n return t != null && t.length ? t.reduce((r, s) => s({\n transform: r,\n ...i\n }), n) : n;\n}\nfunction os(t) {\n return window.React.useMemo(\n () => ({\n draggable: {\n ...st.draggable,\n ...t == null ? void 0 : t.draggable\n },\n droppable: {\n ...st.droppable,\n ...t == null ? void 0 : t.droppable\n },\n dragOverlay: {\n ...st.dragOverlay,\n ...t == null ? void 0 : t.dragOverlay\n }\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [t == null ? void 0 : t.draggable, t == null ? void 0 : t.droppable, t == null ? void 0 : t.dragOverlay]\n );\n}\nfunction as(t) {\n let {\n activeNode: e,\n measure: n,\n initialRect: i,\n config: r = !0\n } = t;\n const s = window.React.useRef(!1), {\n x: l,\n y: a\n } = typeof r == \"boolean\" ? {\n x: r,\n y: r\n } : r;\n le(() => {\n if (!l && !a || !e) {\n s.current = !1;\n return;\n }\n if (s.current || !i)\n return;\n const c = e == null ? void 0 : e.node.current;\n if (!c || c.isConnected === !1)\n return;\n const d = n(c), u = Jn(d, i);\n if (l || (u.x = 0), a || (u.y = 0), s.current = !0, Math.abs(u.x) > 0 || Math.abs(u.y) > 0) {\n const f = Zn(c);\n f && f.scrollBy({\n top: u.y,\n left: u.x\n });\n }\n }, [e, l, a, i, n]);\n}\nconst gt = /* @__PURE__ */ window.React.createContext({\n ...ce,\n scaleX: 1,\n scaleY: 1\n});\nvar Re;\n(function(t) {\n t[t.Uninitialized = 0] = \"Uninitialized\", t[t.Initializing = 1] = \"Initializing\", t[t.Initialized = 2] = \"Initialized\";\n})(Re || (Re = {}));\nconst ls = /* @__PURE__ */ window.React.memo(function(e) {\n var n, i, r, s;\n let {\n id: l,\n accessibility: a,\n autoScroll: o = !0,\n children: c,\n sensors: d = es,\n collisionDetection: u = wr,\n measuring: f,\n modifiers: h,\n ...v\n } = e;\n const p = window.React.useReducer(rs, void 0, is), [w, g] = p, [b, y] = or(), [S, x] = window.React.useState(Re.Uninitialized), z = S === Re.Initialized, {\n draggable: {\n active: m,\n nodes: R,\n translate: _\n },\n droppable: {\n containers: N\n }\n } = w, T = m != null ? R.get(m) : null, O = window.React.useRef({\n initial: null,\n translated: null\n }), E = window.React.useMemo(() => {\n var W;\n return m != null ? {\n id: m,\n // It's possible for the active node to unmount while dragging\n data: (W = T == null ? void 0 : T.data) != null ? W : ts,\n rect: O\n } : null;\n }, [m, T]), P = window.React.useRef(null), [A, V] = window.React.useState(null), [M, j] = window.React.useState(null), K = He(v, Object.values(v)), oe = qe(\"DndDescribedBy\", l), B = window.React.useMemo(() => N.getEnabled(), [N]), $ = os(f), {\n droppableRects: F,\n measureDroppableContainers: U,\n measuringScheduled: ue\n } = Yr(B, {\n dragging: z,\n dependencies: [_.x, _.y],\n config: $.droppable\n }), G = Br(R, m), we = window.React.useMemo(() => M ? ct(M) : null, [M]), C = Ii(), I = Hr(G, $.draggable.measure);\n as({\n activeNode: m != null ? R.get(m) : null,\n config: C.layoutShiftCompensation,\n initialRect: I,\n measure: $.draggable.measure\n });\n const D = On(G, $.draggable.measure, I), k = On(G ? G.parentElement : null), de = window.React.useRef({\n activatorEvent: null,\n active: null,\n activeNode: G,\n collisionRect: null,\n collisions: null,\n droppableRects: F,\n draggableNodes: R,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers: N,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null\n }), ze = N.getNodeFor((n = de.current.over) == null ? void 0 : n.id), ve = Zr({\n measure: $.dragOverlay.measure\n }), De = (i = ve.nodeRef.current) != null ? i : G, Ie = z ? (r = ve.rect) != null ? r : D : null, Wt = !!(ve.nodeRef.current && ve.rect), Kt = Kr(Wt ? null : D), bt = ai(De ? q(De) : null), me = Ur(z ? ze ?? G : null), Qe = Qr(me), Ze = di(h, {\n transform: {\n x: _.x - Kt.x,\n y: _.y - Kt.y,\n scaleX: 1,\n scaleY: 1\n },\n activatorEvent: M,\n active: E,\n activeNodeRect: D,\n containerNodeRect: k,\n draggingNodeRect: Ie,\n over: de.current.over,\n overlayNodeRect: ve.rect,\n scrollableAncestors: me,\n scrollableAncestorRects: Qe,\n windowRect: bt\n }), Ut = we ? Me(we, _) : null, Gt = Gr(me), bi = Mn(Gt), yi = Mn(Gt, [D]), Ee = Me(Ze, bi), Ce = Ie ? br(Ie, Ze) : null, Ve = E && Ce ? u({\n active: E,\n collisionRect: Ce,\n droppableRects: F,\n droppableContainers: B,\n pointerCoordinates: Ut\n }) : null, qt = qn(Ve, \"id\"), [ge, Jt] = window.React.useState(null), Si = Wt ? Ze : Me(Ze, yi), Ri = mr(Si, (s = ge == null ? void 0 : ge.rect) != null ? s : null, D), yt = window.React.useRef(null), Qt = window.React.useCallback(\n (W, J) => {\n let {\n sensor: Q,\n options: be\n } = J;\n if (P.current == null)\n return;\n const te = R.get(P.current);\n if (!te)\n return;\n const Z = W.nativeEvent, fe = new Q({\n active: P.current,\n activeNode: te,\n event: Z,\n options: be,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: de,\n onAbort(X) {\n if (!R.get(X))\n return;\n const {\n onDragAbort: he\n } = K.current, pe = {\n id: X\n };\n he == null || he(pe), b({\n type: \"onDragAbort\",\n event: pe\n });\n },\n onPending(X, ye, he, pe) {\n if (!R.get(X))\n return;\n const {\n onDragPending: ke\n } = K.current, Se = {\n id: X,\n constraint: ye,\n initialCoordinates: he,\n offset: pe\n };\n ke == null || ke(Se), b({\n type: \"onDragPending\",\n event: Se\n });\n },\n onStart(X) {\n const ye = P.current;\n if (ye == null)\n return;\n const he = R.get(ye);\n if (!he)\n return;\n const {\n onDragStart: pe\n } = K.current, Pe = {\n activatorEvent: Z,\n active: {\n id: ye,\n data: he.data,\n rect: O\n }\n };\n window.ReactDOM.unstable_batchedUpdates(() => {\n pe == null || pe(Pe), x(Re.Initializing), g({\n type: Y.DragStart,\n initialCoordinates: X,\n active: ye\n }), b({\n type: \"onDragStart\",\n event: Pe\n }), V(yt.current), j(Z);\n });\n },\n onMove(X) {\n g({\n type: Y.DragMove,\n coordinates: X\n });\n },\n onEnd: _e(Y.DragEnd),\n onCancel: _e(Y.DragCancel)\n });\n yt.current = fe;\n function _e(X) {\n return async function() {\n const {\n active: he,\n collisions: pe,\n over: Pe,\n scrollAdjustedTranslate: ke\n } = de.current;\n let Se = null;\n if (he && ke) {\n const {\n cancelDrop: je\n } = K.current;\n Se = {\n activatorEvent: Z,\n active: he,\n collisions: pe,\n delta: ke,\n over: Pe\n }, X === Y.DragEnd && typeof je == \"function\" && await Promise.resolve(je(Se)) && (X = Y.DragCancel);\n }\n P.current = null, window.ReactDOM.unstable_batchedUpdates(() => {\n g({\n type: X\n }), x(Re.Uninitialized), Jt(null), V(null), j(null), yt.current = null;\n const je = X === Y.DragEnd ? \"onDragEnd\" : \"onDragCancel\";\n if (Se) {\n const St = K.current[je];\n St == null || St(Se), b({\n type: je,\n event: Se\n });\n }\n });\n };\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [R]\n ), xi = window.React.useCallback((W, J) => (Q, be) => {\n const te = Q.nativeEvent, Z = R.get(be);\n if (\n // Another sensor is already instantiating\n P.current !== null || // No active draggable\n !Z || // Event has already been captured\n te.dndKit || te.defaultPrevented\n )\n return;\n const fe = {\n active: Z\n };\n W(Q, J.options, fe) === !0 && (te.dndKit = {\n capturedBy: J.sensor\n }, P.current = be, Qt(Q, J));\n }, [R, Qt]), Zt = $r(d, xi);\n qr(d), le(() => {\n D && S === Re.Initializing && x(Re.Initialized);\n }, [D, S]), window.React.useEffect(\n () => {\n const {\n onDragMove: W\n } = K.current, {\n active: J,\n activatorEvent: Q,\n collisions: be,\n over: te\n } = de.current;\n if (!J || !Q)\n return;\n const Z = {\n active: J,\n activatorEvent: Q,\n collisions: be,\n delta: {\n x: Ee.x,\n y: Ee.y\n },\n over: te\n };\n window.ReactDOM.unstable_batchedUpdates(() => {\n W == null || W(Z), b({\n type: \"onDragMove\",\n event: Z\n });\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [Ee.x, Ee.y]\n ), window.React.useEffect(\n () => {\n const {\n active: W,\n activatorEvent: J,\n collisions: Q,\n droppableContainers: be,\n scrollAdjustedTranslate: te\n } = de.current;\n if (!W || P.current == null || !J || !te)\n return;\n const {\n onDragOver: Z\n } = K.current, fe = be.get(qt), _e = fe && fe.rect.current ? {\n id: fe.id,\n rect: fe.rect.current,\n data: fe.data,\n disabled: fe.disabled\n } : null, X = {\n active: W,\n activatorEvent: J,\n collisions: Q,\n delta: {\n x: te.x,\n y: te.y\n },\n over: _e\n };\n window.ReactDOM.unstable_batchedUpdates(() => {\n Jt(_e), Z == null || Z(X), b({\n type: \"onDragOver\",\n event: X\n });\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [qt]\n ), le(() => {\n de.current = {\n activatorEvent: M,\n active: E,\n activeNode: G,\n collisionRect: Ce,\n collisions: Ve,\n droppableRects: F,\n draggableNodes: R,\n draggingNode: De,\n draggingNodeRect: Ie,\n droppableContainers: N,\n over: ge,\n scrollableAncestors: me,\n scrollAdjustedTranslate: Ee\n }, O.current = {\n initial: Ie,\n translated: Ce\n };\n }, [E, G, Ve, Ce, R, De, Ie, F, N, ge, me, Ee]), kr({\n ...C,\n delta: _,\n draggingRect: Ce,\n pointerCoordinates: Ut,\n scrollableAncestors: me,\n scrollableAncestorRects: Qe\n });\n const zi = window.React.useMemo(() => ({\n active: E,\n activeNode: G,\n activeNodeRect: D,\n activatorEvent: M,\n collisions: Ve,\n containerNodeRect: k,\n dragOverlay: ve,\n draggableNodes: R,\n droppableContainers: N,\n droppableRects: F,\n over: ge,\n measureDroppableContainers: U,\n scrollableAncestors: me,\n scrollableAncestorRects: Qe,\n measuringConfiguration: $,\n measuringScheduled: ue,\n windowRect: bt\n }), [E, G, D, M, Ve, k, ve, R, N, F, ge, U, me, Qe, $, ue, bt]), Di = window.React.useMemo(() => ({\n activatorEvent: M,\n activators: Zt,\n active: E,\n activeNodeRect: D,\n ariaDescribedById: {\n draggable: oe\n },\n dispatch: g,\n draggableNodes: R,\n over: ge,\n measureDroppableContainers: U\n }), [M, Zt, E, D, g, oe, R, ge, U]);\n return window.React.createElement(Kn.Provider, {\n value: y\n }, window.React.createElement(Je.Provider, {\n value: Di\n }, window.React.createElement(ui.Provider, {\n value: zi\n }, window.React.createElement(gt.Provider, {\n value: Ri\n }, c)), window.React.createElement(ss, {\n disabled: (a == null ? void 0 : a.restoreFocus) === !1\n })), window.React.createElement(cr, {\n ...a,\n hiddenTextDescribedById: oe\n }));\n function Ii() {\n const W = (A == null ? void 0 : A.autoScrollEnabled) === !1, J = typeof o == \"object\" ? o.enabled === !1 : o === !1, Q = z && !W && !J;\n return typeof o == \"object\" ? {\n ...o,\n enabled: Q\n } : {\n enabled: Q\n };\n }\n}), cs = /* @__PURE__ */ window.React.createContext(null), Ln = \"button\", us = \"Draggable\";\nfunction ds(t) {\n let {\n id: e,\n data: n,\n disabled: i = !1,\n attributes: r\n } = t;\n const s = qe(us), {\n activators: l,\n activatorEvent: a,\n active: o,\n activeNodeRect: c,\n ariaDescribedById: d,\n draggableNodes: u,\n over: f\n } = window.React.useContext(Je), {\n role: h = Ln,\n roleDescription: v = \"draggable\",\n tabIndex: p = 0\n } = r ?? {}, w = (o == null ? void 0 : o.id) === e, g = window.React.useContext(w ? gt : cs), [b, y] = at(), [S, x] = at(), z = Jr(l, e), m = He(n);\n le(\n () => (u.set(e, {\n id: e,\n key: s,\n node: b,\n activatorNode: S,\n data: m\n }), () => {\n const _ = u.get(e);\n _ && _.key === s && u.delete(e);\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [u, e]\n );\n const R = window.React.useMemo(() => ({\n role: h,\n tabIndex: p,\n \"aria-disabled\": i,\n \"aria-pressed\": w && h === Ln ? !0 : void 0,\n \"aria-roledescription\": v,\n \"aria-describedby\": d.draggable\n }), [i, h, p, w, v, d.draggable]);\n return {\n active: o,\n activatorEvent: a,\n activeNodeRect: c,\n attributes: R,\n isDragging: w,\n listeners: i ? void 0 : z,\n node: b,\n over: f,\n setNodeRef: y,\n setActivatorNodeRef: x,\n transform: g\n };\n}\nfunction fi() {\n return window.React.useContext(ui);\n}\nconst fs = \"Droppable\", hs = {\n timeout: 25\n};\nfunction vs(t) {\n let {\n data: e,\n disabled: n = !1,\n id: i,\n resizeObserverConfig: r\n } = t;\n const s = qe(fs), {\n active: l,\n dispatch: a,\n over: o,\n measureDroppableContainers: c\n } = window.React.useContext(Je), d = window.React.useRef({\n disabled: n\n }), u = window.React.useRef(!1), f = window.React.useRef(null), h = window.React.useRef(null), {\n disabled: v,\n updateMeasurementsFor: p,\n timeout: w\n } = {\n ...hs,\n ...r\n }, g = He(p ?? i), b = window.React.useCallback(\n () => {\n if (!u.current) {\n u.current = !0;\n return;\n }\n h.current != null && clearTimeout(h.current), h.current = setTimeout(() => {\n c(Array.isArray(g.current) ? g.current : [g.current]), h.current = null;\n }, w);\n },\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [w]\n ), y = mt({\n callback: b,\n disabled: v || !l\n }), S = window.React.useCallback((R, _) => {\n y && (_ && (y.unobserve(_), u.current = !1), R && y.observe(R));\n }, [y]), [x, z] = at(S), m = He(e);\n return window.React.useEffect(() => {\n !y || !x.current || (y.disconnect(), u.current = !1, y.observe(x.current));\n }, [x, y]), window.React.useEffect(\n () => (a({\n type: Y.RegisterDroppable,\n element: {\n id: i,\n key: s,\n disabled: n,\n node: x,\n rect: f,\n data: m\n }\n }), () => a({\n type: Y.UnregisterDroppable,\n key: s,\n id: i\n })),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [i]\n ), window.React.useEffect(() => {\n n !== d.current.disabled && (a({\n type: Y.SetDroppableDisabled,\n id: i,\n key: s,\n disabled: n\n }), d.current.disabled = n);\n }, [i, s, n, a]), {\n active: l,\n rect: f,\n isOver: (o == null ? void 0 : o.id) === i,\n node: x,\n over: o,\n setNodeRef: z\n };\n}\nfunction ps(t) {\n let {\n animation: e,\n children: n\n } = t;\n const [i, r] = window.React.useState(null), [s, l] = window.React.useState(null), a = lt(n);\n return !n && !i && a && r(a), le(() => {\n if (!s)\n return;\n const o = i == null ? void 0 : i.key, c = i == null ? void 0 : i.props.id;\n if (o == null || c == null) {\n r(null);\n return;\n }\n Promise.resolve(e(c, s)).then(() => {\n r(null);\n });\n }, [e, i, s]), window.React.createElement(window.React.Fragment, null, n, i ? window.React.cloneElement(i, {\n ref: l\n }) : null);\n}\nconst ws = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction ms(t) {\n let {\n children: e\n } = t;\n return window.React.createElement(Je.Provider, {\n value: ci\n }, window.React.createElement(gt.Provider, {\n value: ws\n }, e));\n}\nconst gs = {\n position: \"fixed\",\n touchAction: \"none\"\n}, bs = (t) => pt(t) ? \"transform 250ms ease\" : void 0, ys = /* @__PURE__ */ window.React.forwardRef((t, e) => {\n let {\n as: n,\n activatorEvent: i,\n adjustScale: r,\n children: s,\n className: l,\n rect: a,\n style: o,\n transform: c,\n transition: d = bs\n } = t;\n if (!a)\n return null;\n const u = r ? c : {\n ...c,\n scaleX: 1,\n scaleY: 1\n }, f = {\n ...gs,\n width: a.width,\n height: a.height,\n top: a.top,\n left: a.left,\n transform: xe.Transform.toString(u),\n transformOrigin: r && i ? dr(i, a) : void 0,\n transition: typeof d == \"function\" ? d(i) : d,\n ...o\n };\n return window.React.createElement(n, {\n className: l,\n style: f,\n ref: e\n }, s);\n}), Ss = (t) => (e) => {\n let {\n active: n,\n dragOverlay: i\n } = e;\n const r = {}, {\n styles: s,\n className: l\n } = t;\n if (s != null && s.active)\n for (const [a, o] of Object.entries(s.active))\n o !== void 0 && (r[a] = n.node.style.getPropertyValue(a), n.node.style.setProperty(a, o));\n if (s != null && s.dragOverlay)\n for (const [a, o] of Object.entries(s.dragOverlay))\n o !== void 0 && i.node.style.setProperty(a, o);\n return l != null && l.active && n.node.classList.add(l.active), l != null && l.dragOverlay && i.node.classList.add(l.dragOverlay), function() {\n for (const [o, c] of Object.entries(r))\n n.node.style.setProperty(o, c);\n l != null && l.active && n.node.classList.remove(l.active);\n };\n}, Rs = (t) => {\n let {\n transform: {\n initial: e,\n final: n\n }\n } = t;\n return [{\n transform: xe.Transform.toString(e)\n }, {\n transform: xe.Transform.toString(n)\n }];\n}, xs = {\n duration: 250,\n easing: \"ease\",\n keyframes: Rs,\n sideEffects: /* @__PURE__ */ Ss({\n styles: {\n active: {\n opacity: \"0\"\n }\n }\n })\n};\nfunction zs(t) {\n let {\n config: e,\n draggableNodes: n,\n droppableContainers: i,\n measuringConfiguration: r\n } = t;\n return vt((s, l) => {\n if (e === null)\n return;\n const a = n.get(s);\n if (!a)\n return;\n const o = a.node.current;\n if (!o)\n return;\n const c = li(l);\n if (!c)\n return;\n const {\n transform: d\n } = q(l).getComputedStyle(l), u = Qn(d);\n if (!u)\n return;\n const f = typeof e == \"function\" ? e : Ds(e);\n return si(o, r.draggable.measure), f({\n active: {\n id: s,\n data: a.data,\n node: o,\n rect: r.draggable.measure(o)\n },\n draggableNodes: n,\n dragOverlay: {\n node: l,\n rect: r.dragOverlay.measure(c)\n },\n droppableContainers: i,\n measuringConfiguration: r,\n transform: u\n });\n });\n}\nfunction Ds(t) {\n const {\n duration: e,\n easing: n,\n sideEffects: i,\n keyframes: r\n } = {\n ...xs,\n ...t\n };\n return (s) => {\n let {\n active: l,\n dragOverlay: a,\n transform: o,\n ...c\n } = s;\n if (!e)\n return;\n const d = {\n x: a.rect.left - l.rect.left,\n y: a.rect.top - l.rect.top\n }, u = {\n scaleX: o.scaleX !== 1 ? l.rect.width * o.scaleX / a.rect.width : 1,\n scaleY: o.scaleY !== 1 ? l.rect.height * o.scaleY / a.rect.height : 1\n }, f = {\n x: o.x - d.x,\n y: o.y - d.y,\n ...u\n }, h = r({\n ...c,\n active: l,\n dragOverlay: a,\n transform: {\n initial: o,\n final: f\n }\n }), [v] = h, p = h[h.length - 1];\n if (JSON.stringify(v) === JSON.stringify(p))\n return;\n const w = i == null ? void 0 : i({\n active: l,\n dragOverlay: a,\n ...c\n }), g = a.node.animate(h, {\n duration: e,\n easing: n,\n fill: \"forwards\"\n });\n return new Promise((b) => {\n g.onfinish = () => {\n w == null || w(), b();\n };\n });\n };\n}\nlet Tn = 0;\nfunction Is(t) {\n return window.React.useMemo(() => {\n if (t != null)\n return Tn++, Tn;\n }, [t]);\n}\nconst Es = /* @__PURE__ */ window.React.memo((t) => {\n let {\n adjustScale: e = !1,\n children: n,\n dropAnimation: i,\n style: r,\n transition: s,\n modifiers: l,\n wrapperElement: a = \"div\",\n className: o,\n zIndex: c = 999\n } = t;\n const {\n activatorEvent: d,\n active: u,\n activeNodeRect: f,\n containerNodeRect: h,\n draggableNodes: v,\n droppableContainers: p,\n dragOverlay: w,\n over: g,\n measuringConfiguration: b,\n scrollableAncestors: y,\n scrollableAncestorRects: S,\n windowRect: x\n } = fi(), z = window.React.useContext(gt), m = Is(u == null ? void 0 : u.id), R = di(l, {\n activatorEvent: d,\n active: u,\n activeNodeRect: f,\n containerNodeRect: h,\n draggingNodeRect: w.rect,\n over: g,\n overlayNodeRect: w.rect,\n scrollableAncestors: y,\n scrollableAncestorRects: S,\n transform: z,\n windowRect: x\n }), _ = Ht(f), N = zs({\n config: i,\n draggableNodes: v,\n droppableContainers: p,\n measuringConfiguration: b\n }), T = _ ? w.setRef : void 0;\n return window.React.createElement(ms, null, window.React.createElement(ps, {\n animation: N\n }, u && m ? window.React.createElement(ys, {\n key: m,\n id: u.id,\n ref: T,\n as: a,\n activatorEvent: d,\n adjustScale: e,\n className: o,\n transition: s,\n rect: _,\n style: {\n zIndex: c,\n ...r\n },\n transform: R\n }, n) : null));\n});\nfunction Xt(t, e, n) {\n const i = t.slice();\n return i.splice(n < 0 ? i.length + n : n, 0, i.splice(e, 1)[0]), i;\n}\nfunction Cs(t, e) {\n return t.reduce((n, i, r) => {\n const s = e.get(i);\n return s && (n[r] = s), n;\n }, Array(t.length));\n}\nfunction it(t) {\n return t !== null && t >= 0;\n}\nfunction _s(t, e) {\n if (t === e)\n return !0;\n if (t.length !== e.length)\n return !1;\n for (let n = 0; n < t.length; n++)\n if (t[n] !== e[n])\n return !1;\n return !0;\n}\nfunction Os(t) {\n return typeof t == \"boolean\" ? {\n draggable: t,\n droppable: t\n } : t;\n}\nconst hi = (t) => {\n let {\n rects: e,\n activeIndex: n,\n overIndex: i,\n index: r\n } = t;\n const s = Xt(e, i, n), l = e[r], a = s[r];\n return !a || !l ? null : {\n x: a.left - l.left,\n y: a.top - l.top,\n scaleX: a.width / l.width,\n scaleY: a.height / l.height\n };\n}, rt = {\n scaleX: 1,\n scaleY: 1\n}, Ns = (t) => {\n var e;\n let {\n activeIndex: n,\n activeNodeRect: i,\n index: r,\n rects: s,\n overIndex: l\n } = t;\n const a = (e = s[n]) != null ? e : i;\n if (!a)\n return null;\n if (r === n) {\n const c = s[l];\n return c ? {\n x: 0,\n y: n < l ? c.top + c.height - (a.top + a.height) : c.top - a.top,\n ...rt\n } : null;\n }\n const o = Ms(s, r, n);\n return r > n && r <= l ? {\n x: 0,\n y: -a.height - o,\n ...rt\n } : r < n && r >= l ? {\n x: 0,\n y: a.height + o,\n ...rt\n } : {\n x: 0,\n y: 0,\n ...rt\n };\n};\nfunction Ms(t, e, n) {\n const i = t[e], r = t[e - 1], s = t[e + 1];\n return i ? n < e ? r ? i.top - (r.top + r.height) : s ? s.top - (i.top + i.height) : 0 : s ? s.top - (i.top + i.height) : r ? i.top - (r.top + r.height) : 0 : 0;\n}\nconst vi = \"Sortable\", pi = /* @__PURE__ */ window.React.createContext({\n activeIndex: -1,\n containerId: vi,\n disableTransforms: !1,\n items: [],\n overIndex: -1,\n useDragOverlay: !1,\n sortedRects: [],\n strategy: hi,\n disabled: {\n draggable: !1,\n droppable: !1\n }\n});\nfunction As(t) {\n let {\n children: e,\n id: n,\n items: i,\n strategy: r = hi,\n disabled: s = !1\n } = t;\n const {\n active: l,\n dragOverlay: a,\n droppableRects: o,\n over: c,\n measureDroppableContainers: d\n } = fi(), u = qe(vi, n), f = a.rect !== null, h = window.React.useMemo(() => i.map((z) => typeof z == \"object\" && \"id\" in z ? z.id : z), [i]), v = l != null, p = l ? h.indexOf(l.id) : -1, w = c ? h.indexOf(c.id) : -1, g = window.React.useRef(h), b = !_s(h, g.current), y = w !== -1 && p === -1 || b, S = Os(s);\n le(() => {\n b && v && d(h);\n }, [b, h, v, d]), window.React.useEffect(() => {\n g.current = h;\n }, [h]);\n const x = window.React.useMemo(\n () => ({\n activeIndex: p,\n containerId: u,\n disabled: S,\n disableTransforms: y,\n items: h,\n overIndex: w,\n useDragOverlay: f,\n sortedRects: Cs(h, o),\n strategy: r\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [p, u, S.draggable, S.droppable, y, h, w, o, f, r]\n );\n return window.React.createElement(pi.Provider, {\n value: x\n }, e);\n}\nconst Ls = (t) => {\n let {\n id: e,\n items: n,\n activeIndex: i,\n overIndex: r\n } = t;\n return Xt(n, i, r).indexOf(e);\n}, Ts = (t) => {\n let {\n containerId: e,\n isSorting: n,\n wasDragging: i,\n index: r,\n items: s,\n newIndex: l,\n previousItems: a,\n previousContainerId: o,\n transition: c\n } = t;\n return !c || !i || a !== s && r === l ? !1 : n ? !0 : l !== r && e === o;\n}, Vs = {\n duration: 200,\n easing: \"ease\"\n}, wi = \"transform\", Ps = /* @__PURE__ */ xe.Transition.toString({\n property: wi,\n duration: 0,\n easing: \"linear\"\n}), ks = {\n roleDescription: \"sortable\"\n};\nfunction js(t) {\n let {\n disabled: e,\n index: n,\n node: i,\n rect: r\n } = t;\n const [s, l] = window.React.useState(null), a = window.React.useRef(n);\n return le(() => {\n if (!e && n !== a.current && i.current) {\n const o = r.current;\n if (o) {\n const c = Te(i.current, {\n ignoreTransform: !0\n }), d = {\n x: o.left - c.left,\n y: o.top - c.top,\n scaleX: o.width / c.width,\n scaleY: o.height / c.height\n };\n (d.x || d.y) && l(d);\n }\n }\n n !== a.current && (a.current = n);\n }, [e, n, i, r]), window.React.useEffect(() => {\n s && l(null);\n }, [s]), s;\n}\nfunction Fs(t) {\n let {\n animateLayoutChanges: e = Ts,\n attributes: n,\n disabled: i,\n data: r,\n getNewIndex: s = Ls,\n id: l,\n strategy: a,\n resizeObserverConfig: o,\n transition: c = Vs\n } = t;\n const {\n items: d,\n containerId: u,\n activeIndex: f,\n disabled: h,\n disableTransforms: v,\n sortedRects: p,\n overIndex: w,\n useDragOverlay: g,\n strategy: b\n } = window.React.useContext(pi), y = Bs(i, h), S = d.indexOf(l), x = window.React.useMemo(() => ({\n sortable: {\n containerId: u,\n index: S,\n items: d\n },\n ...r\n }), [u, r, S, d]), z = window.React.useMemo(() => d.slice(d.indexOf(l)), [d, l]), {\n rect: m,\n node: R,\n isOver: _,\n setNodeRef: N\n } = vs({\n id: l,\n data: x,\n disabled: y.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: z,\n ...o\n }\n }), {\n active: T,\n activatorEvent: O,\n activeNodeRect: E,\n attributes: P,\n setNodeRef: A,\n listeners: V,\n isDragging: M,\n over: j,\n setActivatorNodeRef: K,\n transform: oe\n } = ds({\n id: l,\n data: x,\n attributes: {\n ...ks,\n ...n\n },\n disabled: y.draggable\n }), B = qi(N, A), $ = !!T, F = $ && !v && it(f) && it(w), U = !g && M, ue = U && F ? oe : null, we = F ? ue ?? (a ?? b)({\n rects: p,\n activeNodeRect: E,\n activeIndex: f,\n overIndex: w,\n index: S\n }) : null, C = it(f) && it(w) ? s({\n id: l,\n items: d,\n activeIndex: f,\n overIndex: w\n }) : S, I = T == null ? void 0 : T.id, D = window.React.useRef({\n activeId: I,\n items: d,\n newIndex: C,\n containerId: u\n }), k = d !== D.current.items, de = e({\n active: T,\n containerId: u,\n isDragging: M,\n isSorting: $,\n id: l,\n index: S,\n items: d,\n newIndex: D.current.newIndex,\n previousItems: D.current.items,\n previousContainerId: D.current.containerId,\n transition: c,\n wasDragging: D.current.activeId != null\n }), ze = js({\n disabled: !de,\n index: S,\n node: R,\n rect: m\n });\n return window.React.useEffect(() => {\n $ && D.current.newIndex !== C && (D.current.newIndex = C), u !== D.current.containerId && (D.current.containerId = u), d !== D.current.items && (D.current.items = d);\n }, [$, C, u, d]), window.React.useEffect(() => {\n if (I === D.current.activeId)\n return;\n if (I != null && D.current.activeId == null) {\n D.current.activeId = I;\n return;\n }\n const De = setTimeout(() => {\n D.current.activeId = I;\n }, 50);\n return () => clearTimeout(De);\n }, [I]), {\n active: T,\n activeIndex: f,\n attributes: P,\n data: x,\n rect: m,\n index: S,\n newIndex: C,\n items: d,\n isOver: _,\n isSorting: $,\n isDragging: M,\n listeners: V,\n node: R,\n overIndex: w,\n over: j,\n setNodeRef: B,\n setActivatorNodeRef: K,\n setDroppableNodeRef: N,\n setDraggableNodeRef: A,\n transform: ze ?? we,\n transition: ve()\n };\n function ve() {\n if (\n // Temporarily disable transitions for a single frame to set up derived transforms\n ze || // Or to prevent items jumping to back to their \"new\" position when items change\n k && D.current.newIndex === S\n )\n return Ps;\n if (!(U && !pt(O) || !c) && ($ || de))\n return xe.Transition.toString({\n ...c,\n property: wi\n });\n }\n}\nfunction Bs(t, e) {\n var n, i;\n return typeof t == \"boolean\" ? {\n draggable: t,\n // Backwards compatibility\n droppable: !1\n } : {\n draggable: (n = t == null ? void 0 : t.draggable) != null ? n : e.draggable,\n droppable: (i = t == null ? void 0 : t.droppable) != null ? i : e.droppable\n };\n}\nfunction ft(t) {\n if (!t)\n return !1;\n const e = t.data.current;\n return !!(e && \"sortable\" in e && typeof e.sortable == \"object\" && \"containerId\" in e.sortable && \"items\" in e.sortable && \"index\" in e.sortable);\n}\nconst $s = [L.Down, L.Right, L.Up, L.Left], Ys = (t, e) => {\n let {\n context: {\n active: n,\n collisionRect: i,\n droppableRects: r,\n droppableContainers: s,\n over: l,\n scrollableAncestors: a\n }\n } = e;\n if ($s.includes(t.code)) {\n if (t.preventDefault(), !n || !i)\n return;\n const o = [];\n s.getEnabled().forEach((u) => {\n if (!u || u != null && u.disabled)\n return;\n const f = r.get(u.id);\n if (f)\n switch (t.code) {\n case L.Down:\n i.top < f.top && o.push(u);\n break;\n case L.Up:\n i.top > f.top && o.push(u);\n break;\n case L.Left:\n i.left > f.left && o.push(u);\n break;\n case L.Right:\n i.left < f.left && o.push(u);\n break;\n }\n });\n const c = vr({\n collisionRect: i,\n droppableRects: r,\n droppableContainers: o\n });\n let d = qn(c, \"id\");\n if (d === (l == null ? void 0 : l.id) && c.length > 1 && (d = c[1].id), d != null) {\n const u = s.get(n.id), f = s.get(d), h = f ? r.get(f.id) : null, v = f == null ? void 0 : f.node.current;\n if (v && h && u && f) {\n const w = wt(v).some((z, m) => a[m] !== z), g = mi(u, f), b = Hs(u, f), y = w || !g ? {\n x: 0,\n y: 0\n } : {\n x: b ? i.width - h.width : 0,\n y: b ? i.height - h.height : 0\n }, S = {\n x: h.left,\n y: h.top\n };\n return y.x && y.y ? S : Xe(S, y);\n }\n }\n }\n};\nfunction mi(t, e) {\n return !ft(t) || !ft(e) ? !1 : t.data.current.sortable.containerId === e.data.current.sortable.containerId;\n}\nfunction Hs(t, e) {\n return !ft(t) || !ft(e) || !mi(t, e) ? !1 : t.data.current.sortable.index < e.data.current.sortable.index;\n}\nfunction Xs(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar Nt = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar Vn;\nfunction Ws() {\n return Vn || (Vn = 1, (function(t) {\n (function() {\n var e = {}.hasOwnProperty;\n function n() {\n for (var s = \"\", l = 0; l < arguments.length; l++) {\n var a = arguments[l];\n a && (s = r(s, i(a)));\n }\n return s;\n }\n function i(s) {\n if (typeof s == \"string\" || typeof s == \"number\")\n return s;\n if (typeof s != \"object\")\n return \"\";\n if (Array.isArray(s))\n return n.apply(null, s);\n if (s.toString !== Object.prototype.toString && !s.toString.toString().includes(\"[native code]\"))\n return s.toString();\n var l = \"\";\n for (var a in s)\n e.call(s, a) && s[a] && (l = r(l, a));\n return l;\n }\n function r(s, l) {\n return l ? s ? s + \" \" + l : s + l : s;\n }\n t.exports ? (n.default = n, t.exports = n) : window.classNames = n;\n })();\n })(Nt)), Nt.exports;\n}\nvar Ks = Ws();\nconst gi = /* @__PURE__ */ Xs(Ks);\nfunction Us({\n id: t,\n item: e,\n renderItem: n,\n disabled: i,\n itemWrapperClassName: r,\n activeId: s\n}) {\n const {\n attributes: l,\n listeners: a,\n setNodeRef: o,\n setActivatorNodeRef: c,\n transform: d,\n transition: u,\n isDragging: f,\n over: h\n } = Fs({ id: t, disabled: i }), v = {\n transform: xe.Transform.toString(d),\n transition: u,\n opacity: f ? 0.5 : 1,\n zIndex: f ? 1 : 0\n }, p = (h == null ? void 0 : h.id) === t && s !== t, w = {\n ref: c,\n ...a,\n ...l\n };\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n ref: o,\n style: v,\n className: gi(r),\n \"data-sortable-wrapper\": \"true\"\n },\n n(e, { dragHandleProps: w, isDragging: f, isDragOver: p })\n );\n}\nfunction Gs({\n item: t,\n renderItem: e,\n itemWrapperClassName: n\n}) {\n const i = {};\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: gi(n, \"bg-white\"),\n style: {\n boxShadow: \"0 4px 12px rgba(0,0,0,0.15)\",\n transform: \"scale(1.02)\",\n cursor: \"grabbing\"\n }\n },\n e(t, {\n dragHandleProps: i,\n isDragging: !0,\n isDragOver: !1\n })\n );\n}\nfunction Js(t) {\n const {\n items: e,\n onChange: n,\n getId: i,\n renderItem: r,\n validateReorder: s,\n renderError: l,\n disabled: a = !1,\n className: o,\n itemWrapperClassName: c\n } = t, [d, u] = window.wp.element.useState(null), [f, h] = window.wp.element.useState(null), v = window.wp.element.useMemo(() => e.map(i), [e, i]), p = ur(\n Rn(Yt, {\n activationConstraint: {\n distance: 5\n // 5px movement required before drag starts\n }\n }),\n Rn(Bt, {\n coordinateGetter: Ys\n })\n ), w = (S) => {\n u(S.active.id), h(null);\n }, g = (S) => {\n const { active: x, over: z } = S;\n if (u(null), !z || x.id === z.id)\n return;\n const m = v.indexOf(x.id), R = v.indexOf(z.id);\n if (m === -1 || R === -1)\n return;\n const _ = Xt(e, m, R);\n if (s) {\n const N = s(_);\n if (N) {\n h(N);\n return;\n }\n }\n h(null), n(_);\n }, b = () => {\n u(null);\n }, y = d !== null ? e.find((S) => i(S) === d) : null;\n return /* @__PURE__ */ React.createElement(\"div\", { className: o }, f && l ? l(f) : null, /* @__PURE__ */ React.createElement(\n ls,\n {\n sensors: p,\n collisionDetection: hr,\n onDragStart: w,\n onDragEnd: g,\n onDragCancel: b\n },\n /* @__PURE__ */ React.createElement(As, { items: v, strategy: Ns }, /* @__PURE__ */ React.createElement(\"div\", { className: \"flex flex-col gap-2\" }, e.map((S) => {\n const x = i(S);\n return /* @__PURE__ */ React.createElement(\n Us,\n {\n key: x,\n id: x,\n item: S,\n renderItem: r,\n disabled: a,\n itemWrapperClassName: c,\n activeId: d\n }\n );\n }))),\n /* @__PURE__ */ React.createElement(Es, null, y ? /* @__PURE__ */ React.createElement(\n Gs,\n {\n item: y,\n renderItem: r,\n itemWrapperClassName: c\n }\n ) : null)\n ));\n}\nexport {\n qs as Allotment,\n Js as SortableList\n};\n//# sourceMappingURL=libraries.js.map\n","import { Allotment } from '@blockbite/libraries';\nimport { useLayoutEffect, useRef } from '@wordpress/element';\n\nexport const SplitPane = ({\n pane1,\n pane2,\n handle,\n className = '',\n minSize1 = 150,\n minSize2 = 150,\n}) => {\n const allotmentRef = useRef(null);\n const hasPane2 = !!pane2;\n const prevHasPane2 = useRef(false);\n const savedSizesRef = useRef(null);\n const isFirstMount = useRef(true);\n\n // Load saved sizes from localStorage on mount\n if (isFirstMount.current && handle) {\n const savedSizes = localStorage.getItem(`splitPaneSizes-${handle}`);\n if (savedSizes) {\n try {\n savedSizesRef.current = JSON.parse(savedSizes);\n } catch (e) {\n savedSizesRef.current = [70, 30];\n }\n } else {\n savedSizesRef.current = [70, 30];\n }\n isFirstMount.current = false;\n }\n\n // Apply saved sizes when pane2 becomes visible (use layoutEffect to avoid flash)\n useLayoutEffect(() => {\n if (\n hasPane2 &&\n !prevHasPane2.current &&\n allotmentRef.current &&\n savedSizesRef.current\n ) {\n // pane2 just became visible, restore saved sizes\n requestAnimationFrame(() => {\n if (allotmentRef.current?.resize) {\n allotmentRef.current.resize(savedSizesRef.current);\n }\n });\n }\n prevHasPane2.current = hasPane2;\n }, [hasPane2]);\n\n // Save sizes to localStorage when they change\n const handleChange = (newSizes) => {\n // Only save if pane2 is visible and sizes are reasonable (not collapsed)\n if (handle && hasPane2 && newSizes[1] > 10) {\n savedSizesRef.current = newSizes;\n localStorage.setItem(\n `splitPaneSizes-${handle}`,\n JSON.stringify(newSizes)\n );\n }\n };\n\n // Get initial sizes - always use saved sizes when pane2 is visible\n let defaultSizes;\n if (!hasPane2) {\n defaultSizes = [100, 0];\n } else {\n // Always use saved sizes when pane2 is visible\n defaultSizes = savedSizesRef.current || [70, 30];\n }\n\n return (\n <Allotment\n ref={allotmentRef}\n className={className}\n onChange={handleChange}\n defaultSizes={defaultSizes}\n proportionalLayout={true}\n >\n <Allotment.Pane minSize={minSize1}>{pane1}</Allotment.Pane>\n <Allotment.Pane visible={hasPane2} minSize={minSize2}>\n {pane2}\n </Allotment.Pane>\n </Allotment>\n );\n};\n","import { TabPanel } from '@wordpress/components';\nimport { createContext, useContext, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nconst TabsContext = createContext<{\n activeTab: string | undefined;\n setActiveTab: React.Dispatch<React.SetStateAction<string | undefined>>;\n initialTabName?: string;\n} | null>(null);\n\ntype TabsProps = {\n className?: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n style?: React.CSSProperties;\n};\n\nexport const TabsWrapper = ({\n children,\n defaultValue,\n value,\n onValueChange,\n ...rest\n}: TabsProps) => {\n const isControlled = value !== undefined;\n\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n\n const activeTab = isControlled ? value : internalValue;\n\n const handleTabChange = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n\n if (onValueChange) {\n onValueChange(newValue);\n }\n };\n\n const providerValue = {\n activeTab,\n setActiveTab: handleTabChange,\n initialTabName: isControlled ? value : defaultValue,\n };\n\n return (\n <TabsContext.Provider value={providerValue} {...rest}>\n {children}\n </TabsContext.Provider>\n );\n};\n\ntype TabsListProps = {\n options: { name: string; title: any; icon?: any }[];\n children?: React.ReactNode;\n onValueChange?: (value: string) => void;\n className?: string;\n};\n\nexport const TabsList = ({\n options,\n children,\n className,\n onValueChange,\n}: TabsListProps) => {\n const context = useContext(TabsContext);\n const setActiveTab = onValueChange ? onValueChange : context?.setActiveTab;\n\n return (\n <TabPanel\n className={classNames('tabs-list', className)}\n tabs={options}\n initialTabName={context?.initialTabName}\n onSelect={(tabName) => {\n setActiveTab(tabName);\n }}\n >\n {() => children}\n </TabPanel>\n );\n};\n\ntype TabsContentProps = {\n value: string;\n children: React.ReactNode;\n className?: string;\n};\n\nexport const TabsContent = ({\n value,\n children,\n className,\n}: TabsContentProps) => {\n const context = useContext(TabsContext);\n const activeTab = context?.activeTab;\n\n if (activeTab !== value) {\n return null;\n }\n\n return className ? <div className={className}>{children}</div> : children;\n};\n\nexport const Tabs = {\n Wrapper: TabsWrapper,\n List: TabsList,\n Content: TabsContent,\n};\n","import classNames from 'classnames';\n\ntype TagProps = {\n children: React.ReactNode;\n className?: string;\n color:\n | 'blue'\n | 'ruby'\n | 'tomato'\n | 'red'\n | 'crimson'\n | 'pink'\n | 'plum'\n | 'purple'\n | 'violet'\n | 'iris'\n | 'indigo'\n | 'cyan'\n | 'teal'\n | 'jade'\n | 'green'\n | 'grass'\n | 'brown'\n | 'orange'\n | 'sky'\n | 'gray';\n asButton?: boolean;\n onClick?: () => void;\n};\n\nexport const Tag = ({\n children,\n onClick,\n color = 'blue',\n className,\n}: TagProps) => {\n return (\n <button onClick={onClick}>\n <div color={color} className={classNames(className)}>\n {children}\n </div>\n </button>\n );\n};\n","import { Tailwind } from '@blockbite/icons';\nimport { Button, Popover, Spinner } from '@wordpress/components';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\ntype TagInputProps = {\n className?: string;\n inputClassName?: string;\n value: string[];\n label?: string;\n helper?: string;\n placeholder?: string;\n css?: string;\n onChange?: (tokens: string[]) => void;\n onInputChange?: (inputValue: string) => void;\n colorTokenClasses?: Record<string, string>;\n\n suggestions?: string[];\n onLoadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n\n /** If true, user can add arbitrary tokens (not only suggestions). Default true. */\n allowCustom?: boolean;\n\n /** If true, tokens are de-duped. Default true. */\n dedupe?: boolean;\n\n [key: string]: any;\n};\n\nconst splitToTokens = (raw: string): string[] => {\n // Split by whitespace and commas, strip empties.\n return raw\n .split(/[\\s,]+/g)\n .map((t) => t.trim())\n .filter(Boolean);\n};\n\nconst uniq = (arr: string[]) => Array.from(new Set(arr));\n\nexport const TagInput = ({\n className,\n inputClassName,\n value,\n label,\n helper,\n placeholder = 'Type and press Enter',\n onChange,\n onInputChange,\n colorTokenClasses,\n suggestions = [],\n onLoadMore,\n css,\n hasMore = false,\n isLoading = false,\n allowCustom = true,\n dedupe = true,\n ...props\n}: TagInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const editingInputRef = useRef<HTMLInputElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const suppressPopoverRef = useRef(false);\n\n const [inputValue, setInputValue] = useState('');\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const [isSelectingSuggestion, setIsSelectingSuggestion] = useState(false);\n\n // Editing state\n const [editingIndex, setEditingIndex] = useState<number | null>(null);\n const [editingValue, setEditingValue] = useState('');\n\n const closePopover = () => {\n setIsPopoverOpen(false);\n setHighlightedIndex(-1);\n };\n\n const commitTokens = (raw: string) => {\n const next = splitToTokens(raw);\n if (!next.length) return;\n\n const merged = dedupe ? uniq([...value, ...next]) : [...value, ...next];\n onChange?.(merged);\n\n setInputValue('');\n onInputChange?.('');\n closePopover();\n\n // keep focus\n inputRef.current?.focus();\n };\n\n const removeTokenAt = (index: number) => {\n const next = value.filter((_, i) => i !== index);\n onChange?.(next);\n\n // If we removed the token we were editing, clear editor\n if (editingIndex === index) {\n setEditingIndex(null);\n setEditingValue('');\n } else if (editingIndex !== null && index < editingIndex) {\n // shift editing index down if removal is before it\n setEditingIndex(editingIndex - 1);\n }\n };\n\n const startEditToken = (index: number) => {\n suppressPopoverRef.current = true;\n setEditingIndex(index);\n setEditingValue(value[index] ?? '');\n // Keep popover behavior independent of editing\n closePopover();\n };\n\n const saveEditToken = () => {\n if (editingIndex === null) return;\n\n const raw = editingValue.trim();\n // Allow clearing to \"remove\"\n if (!raw) {\n removeTokenAt(editingIndex);\n return;\n }\n\n // If user entered multiple classes while editing, split and replace.\n const replacement = splitToTokens(raw);\n const before = value.slice(0, editingIndex);\n const after = value.slice(editingIndex + 1);\n\n let next = [...before, ...replacement, ...after];\n if (dedupe) next = uniq(next);\n\n onChange?.(next);\n setEditingIndex(null);\n setEditingValue('');\n suppressPopoverRef.current = false;\n inputRef.current?.focus();\n };\n\n const cancelEditToken = () => {\n setEditingIndex(null);\n setEditingValue('');\n suppressPopoverRef.current = false;\n inputRef.current?.focus();\n };\n\n const addSuggestion = (suggestion: string) => {\n setIsSelectingSuggestion(true);\n\n const merged = dedupe\n ? uniq([...value, suggestion])\n : [...value, suggestion];\n onChange?.(merged);\n\n setInputValue('');\n onInputChange?.('');\n closePopover();\n\n // Re-enable blur commits after click settles\n setTimeout(() => {\n setIsSelectingSuggestion(false);\n inputRef.current?.focus();\n }, 0);\n };\n\n const handleInputChange = (newValue: string) => {\n setInputValue(newValue);\n onInputChange?.(newValue);\n setHighlightedIndex(-1);\n\n if (newValue.length > 0 && suggestions.length > 0) {\n setIsPopoverOpen(true);\n } else {\n closePopover();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // Suggestion navigation when popover open\n if (isPopoverOpen) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setHighlightedIndex((prev) =>\n Math.min(prev + 1, suggestions.length - 1)\n );\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n setHighlightedIndex((prev) => Math.max(prev - 1, 0));\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n closePopover();\n return;\n }\n if (event.key === 'Enter') {\n // If a suggestion is highlighted, pick it.\n if (highlightedIndex >= 0 && suggestions[highlightedIndex]) {\n event.preventDefault();\n addSuggestion(suggestions[highlightedIndex]);\n return;\n }\n // Otherwise fall through to commit custom tokens.\n }\n }\n\n // Tokenization keys\n const shouldCommit =\n event.key === 'Enter' || event.key === ',' || event.key === 'Tab';\n\n if (shouldCommit) {\n if (\n !allowCustom &&\n !(highlightedIndex >= 0 && suggestions[highlightedIndex])\n ) {\n // If custom tokens not allowed, only allow commits through suggestion click/enter.\n if (\n event.key === 'Enter' &&\n highlightedIndex >= 0 &&\n suggestions[highlightedIndex]\n ) {\n event.preventDefault();\n addSuggestion(suggestions[highlightedIndex]);\n }\n return;\n }\n\n // Commit the typed input as tokens\n if (inputValue.trim().length > 0) {\n event.preventDefault();\n commitTokens(inputValue);\n } else if (event.key === 'Enter') {\n // Empty input + Enter should just close popover\n event.preventDefault();\n closePopover();\n }\n return;\n }\n\n // Backspace: if input empty, remove last token (common token field behavior)\n if (\n event.key === 'Backspace' &&\n inputValue.length === 0 &&\n value.length > 0\n ) {\n removeTokenAt(value.length - 1);\n return;\n }\n\n // spaces separate Tailwind classes, so commit on space.\n // Only commit if we have something meaningful.\n if (event.key === ' ' && inputValue.trim().length > 0) {\n event.preventDefault();\n commitTokens(inputValue);\n }\n };\n\n const handleBlur = () => {\n // If we're clicking a suggestion button, do not commit/close prematurely.\n if (isSelectingSuggestion) return;\n\n // Commit remaining input on blur (optional; matches FormTokenField behavior)\n if (allowCustom && inputValue.trim().length > 0) {\n commitTokens(inputValue);\n return;\n }\n\n closePopover();\n };\n\n // Infinite scroll handler for the popover list\n useEffect(() => {\n const el = scrollContainerRef.current;\n if (!el || !onLoadMore || !hasMore || isLoading) return;\n\n const onScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = el;\n if (scrollHeight - scrollTop - clientHeight < 50) onLoadMore();\n };\n\n el.addEventListener('scroll', onScroll);\n return () => el.removeEventListener('scroll', onScroll);\n }, [onLoadMore, hasMore, isLoading]);\n\n useEffect(() => {\n if (editingIndex !== null) {\n const input = editingInputRef.current;\n if (!input) return;\n input.focus();\n const end = input.value.length;\n input.setSelectionRange(end, end);\n }\n }, [editingIndex]);\n\n useEffect(() => {\n if (suggestions.length === 0) {\n setIsPopoverOpen(false);\n }\n }, [suggestions.length]);\n\n return (\n <div className={classNames('flex flex-col gap-2', className)} {...props}>\n {css && <style>{css}</style>}\n\n {label && (\n <div className=\"text-xs font-medium flex gap-1 items-center\">\n <Tailwind /> {label}\n </div>\n )}\n\n {/* Token chips (custom tags) */}\n <div className=\"flex flex-wrap gap-2 flex-start\">\n {value.map((token, index) => {\n const isEditing = editingIndex === index;\n const colorClass = colorTokenClasses?.[token];\n\n return (\n <div\n key={`${token}-${index}`}\n className={classNames(\n 'bg-border/50 gap-1 p-1 text-xs hover:bg-border-75 ',\n { 'bg-white border-border/50 border': isEditing }\n )}\n title=\"Click to edit\"\n >\n {isEditing ? (\n <input\n ref={editingInputRef}\n className=\"bg-transparent text-sm outline-none\"\n value={editingValue}\n onChange={(e) => setEditingValue(e.target.value)}\n onBlur={() => saveEditToken()}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n saveEditToken();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n cancelEditToken();\n }\n }}\n />\n ) : (\n <button\n type=\"button\"\n onClick={() => startEditToken(index)}\n onMouseDown={() => {\n suppressPopoverRef.current = true;\n closePopover();\n }}\n className=\"select-none inline-flex justify-center items-center gap-1 w-auto rounded-sm px-1 hover:bg-gray-100\"\n >\n {token}\n {colorClass && (\n <span\n className={classNames(\n 'w-3! h-3! overflow-hidden! rounded-full!',\n colorClass\n )}\n />\n )}\n </button>\n )}\n\n <button\n type=\"button\"\n className=\"inline-flex items-center rounded-full px-1 cursor-pointer hover:bg-gray-100\"\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n removeTokenAt(index);\n }}\n aria-label={`Remove ${token}`}\n >\n ×\n </button>\n </div>\n );\n })}\n </div>\n\n {/* Input + Popover suggestions */}\n <div className=\"relative\">\n <input\n ref={inputRef}\n className={classNames(\n 'w-full border px-3 py-2 text-sm outline-none',\n inputClassName\n )}\n value={inputValue}\n placeholder={placeholder}\n onChange={(e) => handleInputChange(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n // do not auto-open on focus; wait for user input\n }}\n onBlur={handleBlur}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n aria-autocomplete=\"list\"\n />\n\n {isPopoverOpen && (\n <Popover\n position=\"bottom left\"\n onClose={closePopover}\n anchor={inputRef.current ?? undefined}\n focusOnMount={false}\n offset={12}\n >\n <div\n ref={scrollContainerRef}\n role=\"listbox\"\n className=\"max-h-60 min-w-64 overflow-y-auto p-1\"\n >\n {suggestions.map((suggestion, index) => (\n <Button\n key={`${suggestion}-${index}`}\n variant={index === highlightedIndex ? 'primary' : 'tertiary'}\n className={classNames('block w-full text-left', {\n 'is-active': index === highlightedIndex,\n })}\n onMouseDown={() => setIsSelectingSuggestion(true)}\n onMouseEnter={() => setHighlightedIndex(index)}\n onClick={() => addSuggestion(suggestion)}\n tabIndex={-1}\n >\n <span className=\"text-sm\">{suggestion}</span>\n </Button>\n ))}\n\n {isLoading && (\n <div className=\"flex justify-center py-3\">\n <Spinner />\n </div>\n )}\n\n {!isLoading && hasMore && suggestions.length > 0 && (\n <div className=\"text-center text-xs text-gray-500 py-2\">\n Scroll for more\n </div>\n )}\n </div>\n </Popover>\n )}\n </div>\n\n {helper && <p className=\"text-xs text-primary\">{helper}</p>}\n </div>\n );\n};\n\nTagInput.displayName = 'TagInput';\nexport default TagInput;\n","import { Pencil1 as Pencil1Icon } from '@blockbite/icons';\n\nimport { TextControl } from '@wordpress/components';\nimport { Wrap } from './Wrap.js';\n\ntype TextControlLabelProps = {\n className?: string;\n defaultValue: any;\n children?: React.ReactNode;\n onChange?: (value: string) => void;\n onClick?: () => void;\n};\n\nexport const TextControlLabel = ({\n onChange,\n defaultValue,\n children,\n}: TextControlLabelProps) => {\n return (\n <Wrap className=\"blockbite-ui__text-control-label flex items-center\">\n <span className=\"outline-b-2 relative block -outline-offset-2 outline-black\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n type=\"text\"\n value={defaultValue}\n onChange={onChange}\n />\n <Pencil1Icon className=\"absolute right-1 top-2\" />\n </span>{' '}\n {children}\n </Wrap>\n );\n};\n","import { memo } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\nimport {\n __experimentalToggleGroupControlOptionIcon as ToggleGroupControlIcon,\n __experimentalToggleGroupControlOption as ToggleGroupControlOption,\n __experimentalToggleGroupControl as WordpressToggleGroupControl,\n} from '@wordpress/components';\nimport classNames from 'classnames';\n\ntype ToggleProps = {\n className?: string;\n options: { value: string; label: string; icon?: React.ReactElement }[];\n value: string;\n label?: string | boolean;\n variant?: 'primary' | 'secondary';\n display?: 'icon' | 'label';\n size?: 'small' | 'default' | 'compact';\n onPressedChange: (value: string) => void;\n};\n\nexport const ToggleGroup: React.FC<ToggleProps> = memo(\n ({\n className,\n options,\n value,\n display = 'label',\n label = false,\n onPressedChange,\n size = 'default',\n }) => {\n const handlePressChange = (val: string) => {\n onPressedChange(val);\n };\n\n return (\n <Wrap className={classNames(className)}>\n <WordpressToggleGroupControl\n __next40pxDefaultSize={size === 'default'}\n __nextHasNoMarginBottom\n isBlock\n value={value}\n {...(label ? { label } : {})}\n >\n {options.map((option) =>\n display === 'icon' ? (\n <ToggleGroupControlIcon\n icon={option.icon}\n label={option.label}\n key={`ToggleGroupControlIcon-${option.value}`}\n value={option.value}\n onClick={() => handlePressChange(option.value)}\n />\n ) : (\n <ToggleGroupControlOption\n key={`ToggleGroupControlOption-${option.value}`}\n value={option.value}\n label={option.label}\n onClick={() => handlePressChange(option.value)}\n />\n )\n )}\n </WordpressToggleGroupControl>\n </Wrap>\n );\n }\n);\n","import { ToggleControl as Switch } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype ToggleSwitchProps = {\n label?: string;\n className?: string;\n onChange?: (checked: boolean) => void;\n checked?: boolean;\n};\n\nexport const ToggleSwitch = ({\n label,\n className,\n onChange,\n checked = false, // Default to false if undefined, so it's always controlled\n}: ToggleSwitchProps) => {\n const [isChecked, setIsChecked] = useState(checked);\n\n useEffect(() => {\n setIsChecked(checked);\n }, [checked]);\n\n return (\n <Wrap className={classNames(className, 'flex items-center gap-2')}>\n <Switch\n checked={isChecked}\n label={label}\n __nextHasNoMarginBottom={true}\n onChange={(e) => {\n setIsChecked(e);\n onChange && onChange(e);\n }}\n ></Switch>\n </Wrap>\n );\n};\n"],"names":["hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","ButtonToggle","memo","children","className","variant","pressed","onPressedChange","Icon","size","display","label","handleClick","useCallback","WordpressButton","ButtonToggleGroup","toggle","options","tabs","stretch","handleButtonClick","optionValue","newValue","renderContent","option","index","AutocompleteDropdown","swatch","activeKeyword","setActiveKeyword","useState","filteredOptions","setFilteredOptions","useEffect","Dropdown","isOpen","onToggle","Button","_a","o","TextControl","changedValue","Badge","onClick","status","BitePreview","htmlContent","cssContent","frontendAssets","iframeRef","useRef","iframeBody","setIframeBody","iframe","iframeDocument","styleTag","type","id","url","existingElement","adoptedElement","newElement","createPortal","Wrap","important","Chapter","title","ChapterHeading","help","badge","addon","props","Checkbox","defaultChecked","isChecked","setChecked","CheckboxControl","Check","ChevronDown","ColorWheel","Cross1","Cross2","InfoCircled","ListBullet","Pencil1","Percentage","Plus","Slider","Tailwind","Trash","forwardRef","onChange","inputClassName","readOnly","placeholder","onBlur","helper","ref","fieldId","e","DataItemList","data","active","setActive","onCreate","onDelete","onUpdate","onSwitch","renderItemActions","renderItemContent","addons","footerSlot","footerSlotClassName","rename","setRename","isSaving","setIsSaving","textRef","handleAdd","handleRemove","newData","d","currentIndex","nextActive","handleRenameBlur","renderBadge","item","PlusIcon","TrashIcon","DisappearingMessage","duration","show","message","onClose","isShowing","setIsShowing","hasMounted","timeoutRef","icon","rest","IconComponent","DropdownPicker","defaultIcon","ChevronDownIcon","currentOption","setCurrentOption","allOptions","iconSize","DropdownMenu","EmptyState","description","FloatingPanel","panelRef","position","setPosition","dragging","setDragging","offset","setOffset","handleMouseMove","handleMouseUp","startDragging","rect","parseFocal","fallback","parts","x","y","formatFocal","fp","FocalPointControl","onValueChange","focalPoint","useMemo","handleChange","next","FocalPointPicker","Popover","visible","anchor","onVisibleChange","handleClose","WordpressPopover","SelectControlWrapper","disabled","emptyLabel","val","WordpressSelect","directionToClass","classToDirection","acc","dir","cls","directionToAngle","RADIAL_CLASS","DEFAULT_LINEAR_COORDS","clamp","min","max","parseToken","palette","token","base","opacityPart","opacityFromToken","hex","found","buildToken","baseToken","opacity","hexWithOpacity","clean","g","b","gradientToCss","stop","parsePositionValue","v","cleaned","n","classGroupsToGradientValue","groups","directionClass","kind","direction","stops","fromGroup","fromPosGroup","_b","viaGroup","viaPosGroup","viaItem","pos","toGroup","_c","toPosGroup","_d","normalizeStops","gradientValueToClassGroups","sorted","from","s","to","vias","gradientDirectionToCoords","gradientArrayToClassGroups","items","list","gradientArrayToClassString","resolveGradientStopColor","prefix","targetPrefix","cssToken","gradientClassGroupsToArray","out","obj","entry","role","num","gradientValueToArray","arrayToGradient","arr","hasGradientGroupIds","get","t","_e","fromToken","_f","fromPos","_g","viaTokens","viaPos","idx","toToken","_h","toPos","_i","dirItem","fallbackStops","sel","a","TailwindGradientPicker","trackRef","activeStopId","setActiveStopId","popoverVisible","setPopoverVisible","popoverAnchor","setPopoverAnchor","dragState","setDragState","displayStops","activeStop","updateStops","updater","nextStops","updateStop","patch","removeStop","handleTrackClick","track","nearest","best","handleHandleMouseDown","onMove","event","raw","onUp","openColorPopover","target","handleKindChange","handleDirectionChange","handleColorPickerChange","color","nextKind","ColorIndicator","c","ColorPicker","Label","LinkPicker","links","setLinks","activeLink","setActiveLink","apiFetch","fetchedLinks","__","LinkList","link","onActiveLink","MediaPicker","mediaProps","mediaCallback","allowedTypes","media","removeMedia","onSelectMedia","mediaItem","safeSizes","mediaType","MediaUploadCheck","MediaUpload","open","RangeSlider","withInputField","onReset","allowReset","gridMode","showTooltip","resetFallbackValue","rangeValue","setRangeValue","handleRangeUpdate","gridValue","WordpressRangeControl","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isPercent","isTshirtSize","CSS_UNITS","MetricsControl","propValue","classGroupControl","tailwindUi","isVisible","setIsVisible","localUnit","setLocalUnit","localText","setLocalText","rawValue","setRawValue","inputRef","manualFraction","manualOptions","manualRange","manualCssVars","manualArbitrary","rangeMin","rangeMax","getUserFriendlyValue","detectUnitFromRawValue","normOptions","supportsArbitrary","hasValidator","supportsFraction","supportsTheme","validators","names","arbMatch","varMatch","getRawValue","userFriendly","trimmed","isValidValue","handleInputChange","handleBlur","newRaw","handleKeyDown","appendToText","insertion","isNumeric","newText","numericMatch","setValueDirectly","CurrentUnitIcon","PercentageIcon","ListBulletIcon","ColorWheelIcon","SliderIcon","TailwindUnitIcon","openPicker","renderFractionBody","renderListBody","getCustomCssVariables","rootStyles","customVars","propertyName","renderThemeInsert","cssVariableOptions","renderArbitraryUnitButtons","u","InputControl","InputControlSuffixWrapper","InfoCircledIcon","ModalContext","createContext","useModalContext","context","useContext","Modal","defaultOpen","onOpenChange","onRequestClose","shouldCloseOnEsc","shouldCloseOnClickOutside","isControlled","uncontrolledOpen","setUncontrolledOpen","setOpen","openModal","closeModal","hasModalHeaderChild","Children","child","isValidElement","ModalHeader","ariaProps","ModalTrigger","WordpressModal","ModalContent","ModalFooter","ModalClose","copyStyles","sourceDoc","targetDoc","styleSheet","newStyleEl","cssRule","newLinkEl","NewWindowPortal","windowInstance","containerEl","win","handleBeforeUnload","Notice","isDismissible","onDismiss","showNotice","setShowNotice","WordpressNotice","PasswordInput","showPassword","setShowPassword","SVG","Path","prev","ProjectsNavigation","activeId","onSelect","ResponsiveImage","bbFill","alt","sizes","thumbnail","medium","large","thumbnailImg","mediumImg","largeImg","ResponsiveVideo","videoUrl","DEFAULT_SAVED_DURATION","SaveButton","savedLabel","savedDuration","buttonProps","showSaved","setShowSaved","isIconDisplay","currentLabel","currentIcon","ScrollList","height","select","dispatch","SingleBlockTypeAppender","buttonText","addLastDuplicate","currentBlock","clientId","innerBlocks","lastBlock","newBlock","createBlock","SlideIn","watch","slide","setSlide","Spinner","WordpressSpinner","Ne","et","Ke","en","tn","Rt","nn","rn","Ei","l","Mt","sn","on","Ci","an","ln","ae","Oi","p","w","S","z","R","_","N","T","V","M","j","O","E","P","A","cn","Ni","un","Mi","Ai","Li","Pn","Ti","Vi","Pi","Fe","kn","jn","Fn","ki","dn","ji","tt","fn","hn","Fi","Vt","vn","xt","ne","Bi","$i","Yi","pn","Hi","Xi","wn","zt","Dt","se","ee","Bn","$n","mn","ot","It","ie","Yn","Wi","Ki","Ui","Oe","gn","nt","bn","yn","Pt","Hn","oe","B","$","F","C","U","ue","G","we","I","D","k","Gi","qs","ht","Y","ce","H","re","L","Lt","$e","dt","We","Tt","Re","Nt","Vn","Ws","SplitPane","pane1","pane2","handle","minSize1","minSize2","allotmentRef","hasPane2","prevHasPane2","savedSizesRef","isFirstMount","savedSizes","useLayoutEffect","newSizes","defaultSizes","Allotment","TabsContext","TabsWrapper","defaultValue","internalValue","setInternalValue","providerValue","TabsList","setActiveTab","TabPanel","tabName","TabsContent","Tabs","Tag","splitToTokens","uniq","TagInput","onInputChange","colorTokenClasses","suggestions","onLoadMore","css","hasMore","isLoading","allowCustom","dedupe","editingInputRef","scrollContainerRef","suppressPopoverRef","inputValue","setInputValue","isPopoverOpen","setIsPopoverOpen","highlightedIndex","setHighlightedIndex","isSelectingSuggestion","setIsSelectingSuggestion","editingIndex","setEditingIndex","editingValue","setEditingValue","closePopover","commitTokens","merged","removeTokenAt","startEditToken","saveEditToken","replacement","before","after","cancelEditToken","addSuggestion","suggestion","el","onScroll","scrollTop","scrollHeight","clientHeight","input","end","isEditing","colorClass","TextControlLabel","Pencil1Icon","ToggleGroup","handlePressChange","WordpressToggleGroupControl","ToggleGroupControlIcon","ToggleGroupControlOption","ToggleSwitch","checked","setIsChecked","Switch"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js","../src/ButtonToggle.tsx","../src/AutocompleteDropdown.tsx","../src/Badge.tsx","../src/BitePreview.tsx","../src/Wrap.tsx","../src/Chapter.tsx","../src/ChapterHeading.tsx","../src/Checkbox.tsx","../../icons/jsx/Check.jsx","../../icons/jsx/ChevronDown.jsx","../../icons/jsx/ColorWheel.jsx","../../icons/jsx/Cross1.jsx","../../icons/jsx/Cross2.jsx","../../icons/jsx/InfoCircled.jsx","../../icons/jsx/ListBullet.jsx","../../icons/jsx/Pencil1.jsx","../../icons/jsx/Percentage.jsx","../../icons/jsx/Plus.jsx","../../icons/jsx/Slider.jsx","../../icons/jsx/Tailwind.jsx","../../icons/jsx/Trash.jsx","../src/TextControl.tsx","../src/DataItemList.tsx","../src/DisappearingMessage.tsx","../src/Icon.tsx","../src/DropdownPicker.tsx","../src/EmptyState.tsx","../src/FloatingPanel.tsx","../src/FocalPointControl.tsx","../src/Popover.tsx","../src/SelectControlWrapper.tsx","../src/GradientSwatchPicker.tsx","../src/Label.tsx","../src/LinkPicker.tsx","../src/MediaPicker.tsx","../src/RangeSlider.tsx","../src/MetricsControl.tsx","../src/Modal.tsx","../src/NewWindowPortal.tsx","../src/Notice.tsx","../src/PasswordInput.tsx","../src/ProjectsNavigation.tsx","../src/ResponsiveImage.tsx","../src/ResponsiveVideo.tsx","../src/SaveButton.tsx","../src/ScrollList.tsx","../src/SingleBlockTypeAppender.tsx","../src/SlideIn.tsx","../src/Spinner.tsx","../../libraries/dist/libraries.js","../src/SplitPane.tsx","../src/Tabs.tsx","../src/Tag.tsx","../src/TagInput.tsx","../src/TextControlLabel.tsx","../src/ToggleGroup.tsx","../src/ToggleSwitch.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { Button as WordpressButton } from '@wordpress/components';\nimport { memo, useCallback } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype ButtonToggleProps = {\n children?: React.ReactNode;\n className?: string;\n value: string;\n pressed: boolean;\n variant?: 'primary' | 'secondary';\n size?: 'small' | 'default' | 'compact';\n icon?: any;\n display?: 'icon' | 'label' | '' | null;\n onPressedChange: (value: string) => void;\n label?: string;\n};\n\ntype ButtonToggleGroupOptionProp = {\n value: string;\n label: string;\n tooltip?: string;\n icon?: any;\n children?: React.ReactNode;\n};\n\ntype ButtonToggleGroupProps = {\n className?: string;\n options: ButtonToggleGroupOptionProp[];\n value: string;\n toggle?: boolean;\n size?: 'small' | 'default' | 'compact';\n tabs?: boolean;\n display?: 'icon' | 'label' | '' | null;\n variant?: 'primary' | 'secondary';\n stretch?: boolean;\n icon?: JSX.Element;\n onPressedChange?: (value: string) => void;\n};\n\n// ButtonToggle: now fully controlled via `pressed` prop\nexport const ButtonToggle: React.FC<\n Omit<ButtonToggleProps, 'defaultPressed'> & { pressed: boolean }\n> = memo(\n ({\n children,\n className,\n value,\n variant = 'secondary',\n pressed,\n onPressedChange,\n icon: Icon,\n size = 'compact',\n display = 'auto',\n label,\n }) => {\n const handleClick = useCallback(() => {\n onPressedChange(value);\n }, [onPressedChange, value]);\n\n return (\n <WordpressButton\n aria-label={label}\n className={classNames(className, 'blockbite-ui__button--default')}\n value={value}\n size={size}\n label={label}\n variant={variant}\n showTooltip={true}\n isPressed={pressed}\n onClick={handleClick}\n >\n {Icon && <Icon className=\"w-4 h-4\" />}\n {display !== 'icon' ? children : null}\n {label && !children && display !== 'icon' ? <span>{label}</span> : null}\n </WordpressButton>\n );\n }\n);\n\n// ButtonToggleGroup: now fully controlled via `value` prop\nexport const ButtonToggleGroup: React.FC<\n Omit<ButtonToggleGroupProps, 'defaultPressed'> & { value: string }\n> = memo(\n ({\n className,\n value,\n toggle = true,\n display = 'auto',\n options,\n size = 'compact',\n tabs = false,\n variant = 'secondary',\n stretch = false,\n onPressedChange,\n }) => {\n const handleButtonClick = useCallback(\n (optionValue: string) => {\n const newValue = toggle && value === optionValue ? '' : optionValue;\n onPressedChange?.(newValue);\n },\n [onPressedChange, toggle, value]\n );\n\n const renderContent = (option: ButtonToggleGroupOptionProp) => {\n const Icon = option?.icon || null;\n\n if (display === 'icon' && option?.icon) {\n return <Icon className=\"w-4 h-4\" />;\n } else if (display === 'label') {\n return <span>{option.label}</span>;\n }\n return (\n <span className=\"flex items-center justify-center gap-1\">\n {option.icon && <Icon className=\"w-3 h-3\" />}\n <span>{option.label}</span>\n </span>\n );\n };\n\n return (\n <div\n className={classNames(\n 'blockbite-ui__button-group flex flex-wrap gap-1',\n className,\n tabs ? 'blockbite-ui__button-group--tabs' : ''\n )}\n >\n {options.map((option, index) => (\n <WordpressButton\n key={`ButtonToggleGroup__${option.value}__${option.label}__${index}`}\n className={classNames('blockbite-ui__button--default', {\n grow: stretch,\n 'justify-center': stretch,\n })}\n aria-label={option.label}\n showTooltip={true}\n value={option.value}\n size={size}\n label={option?.tooltip || option.label}\n variant={variant}\n isPressed={value === option.value}\n onClick={() => handleButtonClick(option.value)}\n >\n {renderContent(option)}\n {option.children && option.children}\n </WordpressButton>\n ))}\n </div>\n );\n }\n);\n","import { Button, Dropdown, TextControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { ButtonToggle } from './ButtonToggle.js';\nimport type { OptionProps } from './types.js';\n\ninterface OptionPanelDropdownProps {\n value: string;\n options: { label: string; value: string; style?: string }[];\n onPressedChange: (value: string) => void;\n swatch?: boolean;\n}\n\nexport function AutocompleteDropdown({\n value,\n options,\n swatch,\n onPressedChange,\n}: OptionPanelDropdownProps) {\n const [activeKeyword, setActiveKeyword] = useState('');\n const [filteredOptions, setFilteredOptions] = useState<OptionProps[]>([]);\n\n useEffect(() => {\n setFilteredOptions(\n options.filter((option: OptionProps) =>\n option.label.toLowerCase().includes(activeKeyword.toLowerCase())\n )\n );\n }, [activeKeyword, options]);\n\n useEffect(() => {\n setActiveKeyword('');\n setFilteredOptions(options);\n }, [value, options]);\n\n return (\n <Dropdown\n className=\"option-panel-dropdown\"\n contentClassName=\"option-panel-dropdown-content [&>div]:[scrollbar-width:none] [&>div]:[&::-webkit-scrollbar]:hidden\"\n popoverProps={{ placement: 'bottom-start' }}\n renderToggle={({ isOpen, onToggle }) => (\n <Button\n variant=\"secondary\"\n size=\"small\"\n onClick={onToggle}\n aria-expanded={isOpen}\n >\n <div className=\"flex items-center gap-1.5 !bg-transparent !p-0 !text-[11px] !text-current\">\n {swatch && !!value && (\n <div\n style={{\n backgroundColor: options.find((o) => o.value === value)\n ?.style,\n }}\n className=\"h-3 w-3 rounded-full\"\n />\n )}\n <span>{value || 'Select option…'}</span>\n </div>\n </Button>\n )}\n renderContent={() => (\n <div className=\"w-52\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label=\"Search options\"\n value={activeKeyword}\n onChange={(changedValue) => setActiveKeyword(changedValue)}\n autoComplete=\"off\"\n />\n <div className=\"grid grid-cols-2 gap-1 !bg-transparent p-0 !pt-2\">\n {filteredOptions.length === 0 && (\n <div className=\"!text-gray-medium col-span-2 pb-2 text-center !text-[11px]\">\n No options found.\n </div>\n )}\n {filteredOptions.map((option: OptionProps, index: Number) => (\n <ButtonToggle\n key={`ButtonToggle__${option.value}___${index}`}\n className={classNames({\n 'bg-wp': option.value,\n })}\n size=\"small\"\n value={option.value.toString()}\n pressed={value === option.value}\n onPressedChange={(pressed) => {\n onPressedChange(pressed ? option.value : '');\n }}\n >\n {swatch && (\n <div\n style={{ backgroundColor: option.style }}\n className=\"mr-3 h-3 w-3 rounded-full\"\n />\n )}\n {option.label}\n </ButtonToggle>\n ))}\n </div>\n </div>\n )}\n />\n );\n}\n","import classNames from 'classnames';\n\ntype BadgeProps = {\n children?: React.ReactNode;\n className?: string;\n label?: string;\n onClick?: () => void;\n status?: 'default' | 'info' | 'success' | 'warning' | 'error';\n};\n\nexport const Badge = ({\n children,\n className,\n label,\n onClick,\n status = 'default',\n}: BadgeProps) => {\n return (\n <div\n onClick={onClick}\n className={classNames(\n className,\n 'inline-flex rounded-full overflow-hidden bg-white'\n )}\n >\n <div\n onClick={onClick}\n className={classNames(\n 'inline-flex items-center px-2.5 py-0.5 text-xs font-medium w-full h-full',\n {\n 'bg-wp/10 text-wp': status === 'info',\n 'bg-green-100 text-green-800': status === 'success',\n 'bg-yellow-100 text-yellow-800': status === 'warning',\n 'bg-red-100 text-red-800': status === 'error',\n 'bg-gray-100 text-gray-800': status === 'default',\n }\n )}\n >\n {label && (\n <span className=\"mr-1 text-xs font-semibold text-gray-700\">\n {label}\n </span>\n )}\n {children}\n </div>\n </div>\n );\n};\n","import { createPortal, useEffect, useRef, useState } from '@wordpress/element';\n\nexport const BitePreview = ({ htmlContent, cssContent, frontendAssets }) => {\n const iframeRef = useRef(null);\n const [iframeBody, setIframeBody] = useState(null);\n\n useEffect(() => {\n const iframe = iframeRef.current;\n\n if (iframe) {\n iframe.onload = () => {\n const iframeDocument =\n iframe.contentDocument || iframe.contentWindow.document;\n\n if (iframeDocument) {\n setIframeBody(iframeDocument.body); // Set the iframe body for portal\n\n // Inject CSS content directly\n const styleTag = iframeDocument.createElement('style');\n styleTag.innerHTML = cssContent;\n iframeDocument.head.appendChild(styleTag);\n\n // Adopt or Create Frontend Assets\n frontendAssets.forEach(({ type, id, url }) => {\n const existingElement = document.getElementById(id);\n\n if (existingElement) {\n // If the asset exists in the parent, move it to the iframe\n const adoptedElement = document.adoptNode(\n existingElement.cloneNode(true)\n );\n iframeDocument.head.appendChild(adoptedElement);\n } else {\n // Create a new script or style if not found\n const newElement = iframeDocument.createElement(\n type === 'script' ? 'script' : 'link'\n );\n newElement.id = id;\n\n if (type === 'script') {\n newElement.src = url;\n newElement.async = true;\n } else {\n newElement.rel = 'stylesheet';\n newElement.href = url;\n }\n\n iframeDocument.head.appendChild(newElement);\n }\n });\n }\n };\n }\n\n return () => {\n if (iframe) {\n iframe.onload = null; // Clean up event listener\n }\n };\n }, [htmlContent, cssContent, frontendAssets]);\n\n return (\n <div\n className=\"render-preview-container\"\n style={{ width: '100%', minHeight: '100%' }}\n >\n <iframe\n ref={iframeRef}\n title=\"Preview\"\n sandbox=\"allow-same-origin allow-scripts\"\n className=\"editor-styles-wrapper\"\n width=\"100%\"\n height=\"100%\"\n />\n {iframeBody &&\n createPortal(\n <div className=\"b_\">\n <div\n className=\"b_bites\"\n dangerouslySetInnerHTML={{ __html: htmlContent }}\n />\n </div>,\n iframeBody\n )}\n </div>\n );\n};\n","type WrapProps = {\n children: React.ReactNode;\n className?: string;\n important?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n};\n\nexport const Wrap = ({\n children,\n className,\n important = false,\n onClick,\n}: WrapProps) => {\n if (important) {\n return (\n <div onClick={onClick}>\n <div className={className}>{children}</div>\n </div>\n );\n }\n\n return <div className={className}>{children}</div>;\n};\n","import classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype ChapterProps = {\n children?: React.ReactNode;\n className?: string;\n title?: string;\n};\n\nexport const Chapter = ({ children, title, className }: ChapterProps) => {\n return (\n <Wrap\n className={classNames(\n 'text-gray-medium my-2 flex items-center gap-1 text-[12px] font-medium',\n className\n )}\n >\n {title && <Wrap className=\"font-medium\">{title}</Wrap>}\n {children}\n </Wrap>\n );\n};\n","import classNames from 'classnames';\nimport { Badge } from './Badge.js';\n\ntype ChapterHeadingProps = {\n title?: string;\n className?: string;\n help?: string;\n badge?: string;\n addon?: React.ReactNode;\n gradient?: boolean;\n [key: string]: any;\n};\n\nexport const ChapterHeading = ({\n title,\n className,\n help,\n badge,\n addon,\n ...props\n}: ChapterHeadingProps) => {\n return (\n <div className={classNames('mb-2', className)} {...props}>\n <div className=\"flex w-[90%] flex-wrap items-center gap-2 justify-between\">\n <div className=\"flex items-center gap-1.5\">\n <span className=\"shrink-1 text-[11px] font-medium uppercase leading-snug\">\n {title}\n </span>\n {addon}\n </div>\n\n {!!badge && (\n <Badge className=\"mt-1 text-[10px] py-px px-1\">{badge}</Badge>\n )}\n </div>\n {help && <small className=\"w-full shrink-0 text-[11px]\">{help}</small>}\n </div>\n );\n};\n","import { CheckboxControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\ntype CheckboxProps = {\n id: string;\n label?: string;\n help?: string;\n defaultChecked?: boolean;\n onCheckedChange: (checked: boolean, id: string) => void;\n};\n\nexport const Checkbox = ({ label, help, defaultChecked }: CheckboxProps) => {\n const [isChecked, setChecked] = useState(defaultChecked);\n\n useEffect(() => {\n setChecked(defaultChecked);\n }, [defaultChecked]);\n\n return (\n <Wrap className=\"blockbite-ui__checkbox mx-1 flex items-center gap-2\">\n <CheckboxControl\n label={label}\n help={help}\n checked={isChecked}\n onChange={setChecked}\n />\n </Wrap>\n );\n};\n","const Check = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M11.648 4.59198L7.39799 11.092C7.29783 11.2452 7.13556 11.3467 6.95402 11.3699C6.77247 11.3931 6.58989 11.3355 6.45446 11.2124L3.70446 8.71241C3.44905 8.48022 3.43023 8.08494 3.66242 7.82953C3.89461 7.57412 4.28989 7.55529 4.5453 7.78749L6.75292 9.79441L10.6018 3.90792C10.7907 3.61902 11.178 3.53795 11.4669 3.72684C11.7558 3.91574 11.8369 4.30308 11.648 4.59198Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Check;\n","const ChevronDown = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default ChevronDown;\n","const ColorWheel = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.49991 0.877014C11.1576 0.877014 14.1227 3.84216 14.1227 7.49985C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49985C0.877075 3.84216 3.84222 0.877014 7.49991 0.877014ZM7.09998 1.84089V6.53429L3.78135 3.21565C4.68298 2.43239 5.83429 1.92904 7.09998 1.84089ZM1.84095 7.09997H6.5343L3.21567 3.78134C2.43242 4.68298 1.92909 5.83428 1.84095 7.09997ZM1.84097 7.89997C1.92916 9.16562 2.43253 10.3169 3.21579 11.2185L6.5343 7.89997H1.84097ZM7.09998 13.1588V8.46566L3.78149 11.7842C4.6831 12.5673 5.83435 13.0707 7.09998 13.1588ZM7.89998 13.1588C9.16559 13.0706 10.3168 12.5673 11.2184 11.7841L7.89998 8.46566V13.1588ZM13.1588 7.89997H8.46567L11.7841 11.2184C12.5673 10.3168 13.0707 9.16558 13.1588 7.89997ZM13.1589 7.09997C13.0707 5.83432 12.5674 4.68305 11.7842 3.78143L8.46567 7.09997H13.1589ZM7.89998 1.8409V6.53429L11.2185 3.21573C10.3169 2.43246 9.16565 1.92909 7.89998 1.8409Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default ColorWheel;\n","const Cross1 = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Cross1;\n","const Cross2 = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M11.7816 3.2184C11.5571 2.99385 11.193 2.99385 10.9685 3.2184L7.50005 6.68682L4.03164 3.2184C3.80708 2.99385 3.44301 2.99385 3.21846 3.2184C2.99391 3.44295 2.99391 3.80702 3.21846 4.03157L6.68688 7.49999L3.21846 10.9684C2.99391 11.193 2.99391 11.557 3.21846 11.7816C3.44301 12.0061 3.80708 12.0061 4.03164 11.7816L7.50005 8.31316L10.9685 11.7816C11.193 12.0061 11.5571 12.0061 11.7816 11.7816C12.0062 11.557 12.0062 11.193 11.7816 10.9684L8.31322 7.49999L11.7816 4.03157C12.0062 3.80702 12.0062 3.44295 11.7816 3.2184Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Cross2;\n","const InfoCircled = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999ZM7.50003 5.99999C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H9.00003V11H6.00003V9.99999H7.00003V6.99999H6.00003V5.99999H7.50003ZM0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972ZM7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default InfoCircled;\n","const ListBullet = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5ZM4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5C4 4.22386 4.22386 4 4.5 4ZM4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5C4.22386 7 4 7.22386 4 7.5ZM4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5C4.22386 10 4 10.2239 4 10.5ZM1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25ZM2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default ListBullet;\n","const Pencil1 = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.1465 1.14645L3.71455 8.57836C3.62459 8.66832 3.55263 8.77461 3.50251 8.89155L2.04044 12.303C1.9599 12.491 2.00189 12.709 2.14646 12.8536C2.29103 12.9981 2.50905 13.0401 2.69697 12.9596L6.10847 11.4975C6.2254 11.4474 6.3317 11.3754 6.42166 11.2855L13.8536 3.85355C14.0488 3.65829 14.0488 3.34171 13.8536 3.14645L11.8536 1.14645C11.6583 0.951184 11.3417 0.951184 11.1465 1.14645ZM11.5 2.20711L12.7929 3.5L5.71455 10.5784L4.21924 11.2192L3.78081 10.7808L4.42166 9.28547L11.5 2.20711Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Pencil1;\n","const Percentage = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <circle cx={4.85355} cy={4.5} r={1.5} fill=\"currentColor\" />\n <circle cx={9.85355} cy={10.5} r={1.5} fill=\"currentColor\" />\n <path\n d=\"M3 11.6464L11 3.64642\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport default Percentage;\n","const Plus = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M7.5 2.25C7.22386 2.25 7 2.47386 7 2.75V7H2.75C2.47386 7 2.25 7.22386 2.25 7.5C2.25 7.77614 2.47386 8 2.75 8H7V12.25C7 12.5261 7.22386 12.75 7.5 12.75C7.77614 12.75 8 12.5261 8 12.25V8H12.25C12.5261 8 12.75 7.77614 12.75 7.5C12.75 7.22386 12.5261 7 12.25 7H8V2.75C8 2.47386 7.77614 2.25 7.5 2.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Plus;\n","const Slider = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.49988 10.2504C7.1516 10.2504 6.0299 9.28026 5.79473 7.99997H0.5C0.223858 7.99997 0 7.77611 0 7.49997C0 7.22383 0.223858 6.99997 0.5 6.99997H5.7947C6.0298 5.71959 7.15154 4.74939 8.49988 4.74939C9.84822 4.74939 10.97 5.71959 11.2051 6.99997H14.5C14.7761 6.99997 15 7.22383 15 7.49997C15 7.77611 14.7761 7.99997 14.5 7.99997H11.205C10.9699 9.28026 9.84816 10.2504 8.49988 10.2504ZM8.49988 9.30038C7.50549 9.30038 6.69938 8.49427 6.69938 7.49988C6.69938 6.5055 7.50549 5.69939 8.49988 5.69939C9.49426 5.69939 10.3004 6.5055 10.3004 7.49988C10.3004 8.49427 9.49426 9.30038 8.49988 9.30038Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Slider;\n","const Tailwind = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n d=\"M4 5.33333C4.4 3.77778 5.4 3 7 3C9.4 3 9.7 4.75 10.9 5.04167C11.7 5.23611 12.4 4.94444 13 4.16667C12.6 5.72222 11.6 6.5 10 6.5C7.6 6.5 7.3 4.75 6.1 4.45833C5.3 4.26389 4.6 4.55556 4 5.33333ZM1 8.83333C1.4 7.27778 2.4 6.5 4 6.5C6.4 6.5 6.7 8.25 7.9 8.54167C8.7 8.73611 9.4 8.44444 10 7.66667C9.6 9.22222 8.6 10 7 10C4.6 10 4.3 8.25 3.1 7.95833C2.3 7.76389 1.6 8.05556 1 8.83333Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Tailwind;\n","const Trash = (props) => (\n <svg\n width={props.width || '1em'}\n height={props.height || '1em'}\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5 1.5C5 1.77614 5.22386 2 5.5 2H9.5C9.77614 2 10 1.77614 10 1.5C10 1.22386 9.77614 1 9.5 1H5.5C5.22386 1 5 1.22386 5 1.5ZM3.5 3H11.5C11.7761 3 12 3.22386 12 3.5C12 3.77614 11.7761 4 11.5 4H11V12C11 12.5523 10.5523 13 10 13H5C4.44772 13 4 12.5523 4 12V4L3.5 4C3.22386 4 3 3.77614 3 3.5C3 3.22386 3.22386 3 3.5 3ZM10 4V12H5V4H10Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n\nexport default Trash;\n","import { forwardRef } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype TextControlProps = {\n className?: string;\n inputClassName?: string;\n value: any;\n children?: React.ReactNode;\n onChange?: (value: string) => void;\n onClick?: () => void;\n readOnly?: boolean;\n placeholder?: string;\n onBlur?: (value) => void;\n type?: string;\n label?: string;\n helper?: string;\n [key: string]: any;\n};\n\nexport const TextControl = forwardRef<HTMLInputElement, TextControlProps>(\n (\n {\n onClick,\n onChange,\n className,\n value,\n children,\n inputClassName,\n readOnly,\n placeholder,\n onBlur,\n type = 'text',\n label,\n helper = '',\n ...props\n },\n ref\n ) => {\n const fieldId = `text-control-${Math.random()\n .toString(36)\n .substring(2, 15)}`;\n\n return (\n <div\n className={classNames('flex items-center p-0', className)}\n {...props}\n >\n {label ? (\n <label htmlFor={fieldId} className=\"text-primary !m-0 !mb-0 !mr-2\">\n {label}\n </label>\n ) : null}\n <input\n id={fieldId}\n className={classNames(\n 'components-text-control__input',\n inputClassName\n )}\n type={type}\n value={value}\n placeholder={placeholder}\n onFocus={() => onClick && onClick()}\n onBlur={(e) => {\n if (onClick) onClick();\n if (onBlur) onBlur(e.target.value);\n }}\n onChange={(e) => onChange && onChange(e.target.value)}\n readOnly={readOnly}\n ref={ref}\n />\n {children}\n {helper && <p className=\"text-primary !m-0 !mb-0 text-xs\">{helper}</p>}\n </div>\n );\n }\n);\n\nTextControl.displayName = 'TextControl'; // Recommended for debugging\n","import { Plus as PlusIcon, Trash as TrashIcon } from '@blockbite/icons';\nimport { Button } from '@wordpress/components';\nimport { useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Badge } from './Badge.js';\nimport { TextControl } from './TextControl.js';\n\ntype DataListProps<T extends { id: string | number; title?: string }> = {\n data: T[];\n active: T;\n setActive: (item: T | undefined) => void;\n onCreate: () => void;\n onDelete: (id: T['id']) => void;\n onUpdate: (id: T['id'], updates: Partial<T>) => void;\n onSwitch: (prevId: T['id'], updates: Partial<T>) => void;\n allowCreate?: boolean;\n allowDelete?: boolean;\n allowRename?: boolean;\n renderItemActions?: (item: T) => React.ReactNode;\n renderItemContent?: (item: T, isActive: boolean) => React.ReactNode;\n addons?: JSX.Element;\n className?: string;\n footerSlot?: React.ReactNode;\n footerSlotClassName?: string;\n badge?: string;\n};\n\nexport const DataItemList = <\n T extends { id: string | number; title?: string },\n>({\n data,\n active,\n setActive,\n onCreate,\n onDelete,\n onUpdate,\n onSwitch,\n allowCreate = true,\n allowDelete = true,\n allowRename = true,\n renderItemActions,\n renderItemContent,\n addons,\n className = '',\n footerSlot,\n footerSlotClassName = '',\n badge = '',\n}: DataListProps<T>) => {\n const [rename, setRename] = useState<{ id: T['id']; title: string }>({\n id: '' as T['id'],\n title: '',\n });\n const [isSaving, setIsSaving] = useState(false);\n const textRef = useRef<HTMLInputElement | null>(null);\n\n const handleAdd = () => {\n if (!allowCreate) return;\n onCreate();\n };\n\n const handleRemove = () => {\n if (!allowDelete) return;\n if (!active || data.length === 0) return;\n\n const newData = data.filter((d) => d.id !== active?.id);\n const currentIndex = data.findIndex((d) => d.id === active?.id);\n const nextActive = newData[currentIndex] || newData[0];\n\n onDelete(active.id);\n setActive(nextActive);\n };\n\n const handleRenameBlur = (value: string) => {\n if (!allowRename) return;\n setIsSaving(true);\n if (rename.id) {\n onUpdate(rename.id, { title: value } as Partial<T>);\n }\n\n setTimeout(() => {\n setRename({ id: '' as T['id'], title: '' });\n setIsSaving(false);\n }, 500);\n };\n\n const renderBadge = (item) => {\n if (!badge || !item[badge]) return null;\n return <Badge className=\"ml-2 max-w-[80px] text-sm\">{item[badge]}</Badge>;\n };\n\n return (\n <div\n className={classNames('flex flex-col justify-between h-full', className)}\n >\n <ul className=\"divide-y overflow-auto\">\n {addons}\n {data.length > 0 && (\n <li>\n <ul className=\"divide-y divide-border border-b border-border\">\n {data.map((item) => (\n <li\n key={`data__${item.id}`}\n className={classNames(\n 'relative !mb-0 flex flex-col hover:bg-wp/10',\n {\n 'bg-[#1e40af]/20': item.id === active?.id,\n }\n )}\n >\n <div className=\"flex items-center justify-between gap-1\">\n <div className=\"flex-1 relative\">\n <button\n className=\"text-gray-medium w-full truncate py-1 pl-2 text-left text-[11px]! font-semibold hover:text-wordpress\"\n onClick={() => {\n onSwitch(active?.id, { ...active });\n setActive(item);\n }}\n onDoubleClick={() => {\n if (!allowRename) return;\n setRename({ id: item.id, title: item.title || '' });\n }}\n >\n {isSaving && rename.id === item.id ? (\n <span className=\"animate-pulse text-gray-medium\">\n {rename.title} {renderBadge(item)}\n </span>\n ) : (\n <span className=\"text-gray-medium\">\n {item.title || 'Untitled'} {renderBadge(item)}\n </span>\n )}\n </button>\n {rename.id === item.id && !isSaving && (\n <TextControl\n className=\"absolute left-1 top-0 w-[calc(100%-.5rem)] h-full\"\n inputClassName=\"w-full\"\n defaultValue={rename.title}\n onChange={(value) =>\n setRename({ ...rename, title: value })\n }\n ref={textRef}\n onBlur={() => handleRenameBlur(rename.title)}\n />\n )}\n </div>\n {renderItemActions && (\n <div className=\"flex gap-1 pr-1\">\n {renderItemActions(item)}\n </div>\n )}\n </div>\n {renderItemContent &&\n renderItemContent(item, item.id === active?.id)}\n </li>\n ))}\n </ul>\n </li>\n )}\n </ul>\n {(footerSlot || allowCreate || allowDelete) && (\n <div\n className={classNames(\n 'flex flex-wrap justify-center gap-2 p-2',\n footerSlotClassName\n )}\n >\n {footerSlot}\n {allowCreate && (\n <Button\n onClick={handleAdd}\n icon={<PlusIcon className=\"h-4 w-4\" />}\n variant=\"tertiary\"\n size=\"compact\"\n >\n Add\n </Button>\n )}\n {allowDelete && (\n <Button\n onClick={handleRemove}\n icon={<TrashIcon className=\"h-4 w-4\" />}\n variant=\"tertiary\"\n size=\"compact\"\n disabled={!active || data.length === 0}\n >\n Remove\n </Button>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default DataItemList;\n","import { useEffect, useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { Wrap } from './Wrap.js';\n\ntype DisappearingMessageProps = {\n message?: string;\n className?: string;\n duration?: number;\n children?: React.ReactNode;\n show: boolean;\n onClose?: () => void;\n};\n\nexport const DisappearingMessage = ({\n duration = 3000,\n className,\n children,\n show,\n message,\n onClose,\n}: DisappearingMessageProps) => {\n const [isShowing, setIsShowing] = useState(false);\n const hasMounted = useRef(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n hasMounted.current = true;\n }, []);\n\n useEffect(() => {\n if (!hasMounted.current) return;\n\n if (show) {\n setIsShowing(true);\n timeoutRef.current = setTimeout(() => {\n setIsShowing(false);\n onClose?.();\n }, duration);\n }\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, [show, duration, onClose]);\n\n if (!isShowing) return null;\n\n return (\n <Wrap\n important\n className={classNames('bb-ui__disappearing-message', className)}\n >\n <div className=\"bb-ui__disappearing-message__content\">\n {message ?? children}\n </div>\n </Wrap>\n );\n};\n","export const Icon = ({ icon, ...rest }) => {\n if (!icon) return null;\n\n const IconComponent = icon;\n\n // icon should be a valid function\n if (typeof icon === 'function') {\n return <IconComponent {...rest} />;\n }\n\n /* eslint-disable no-console */\n console.error(\n `[BlockBite:Icon] You passed a JSX element (<Icon />) instead of a component reference (Icon).\nExpected: { icon: ColumnsIcon }\nReceived: { icon: <ColumnsIcon /> }`\n );\n\n return <div>⚠</div>;\n};\n","import { ChevronDown as ChevronDownIcon } from '@blockbite/icons';\nimport { DropdownMenu } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Icon } from './Icon.js';\n\ntype DropdownPickerProps = {\n label?: string;\n className?: string;\n value: string;\n defaultIcon?: any;\n size?: 'small' | 'medium' | 'large';\n options: {\n icon?: React.ReactElement;\n label: string;\n subtitle?: string;\n value: string;\n }[];\n onPressedChange: (value: string | null) => void; // Updated to allow `null` for reset\n [x: string]: any;\n};\n\nexport const DropdownPicker = ({\n label,\n className,\n value,\n defaultIcon = ChevronDownIcon,\n size = 'medium',\n onPressedChange,\n options,\n ...rest\n}: DropdownPickerProps) => {\n const [currentOption, setCurrentOption] = useState<string | null>(null);\n\n useEffect(() => {\n setCurrentOption(value);\n }, [value]);\n\n const allOptions = [\n ...options.map((option) => ({\n icon: option.icon,\n label: option.label,\n title: option.label,\n value: option.value,\n onClick: () => {\n setCurrentOption(option.value);\n onPressedChange(option.value);\n },\n })),\n {\n icon: <Icon icon={defaultIcon} />,\n title: 'Reset',\n value: 'reset',\n onClick: () => {\n setCurrentOption('reset');\n onPressedChange('reset');\n },\n },\n ];\n\n let iconSize = '1em';\n if (size === 'medium') {\n iconSize = '1.5em';\n } else if (size === 'large') {\n iconSize = '2em';\n }\n\n return (\n <DropdownMenu\n controls={allOptions}\n className={classNames('blockbite-ui__dropdown-picker', className)}\n icon={\n options.find((option) => option.value === currentOption)?.icon || (\n <Icon width={iconSize} height={iconSize} icon={defaultIcon} />\n )\n }\n label={label || 'Select'}\n {...rest}\n />\n );\n};\n","type Props = {\n icon?: JSX.Element;\n title: string;\n description: string;\n children?: React.ReactNode;\n size?: 'small' | 'medium';\n [key: string]: any;\n};\n\nexport function EmptyState({\n icon,\n title,\n description,\n children = null,\n size = 'medium',\n ...rest\n}: Props) {\n return (\n <div {...rest}>\n <div className=\"flex h-full w-full flex-col items-center justify-center text-center !font-sans\">\n <div className=\"max-w-sm\">\n {icon && <div className=\"mx-auto !text-gray-400\">{icon}</div>}\n <h3\n className={`text-gray-medium !mt-2 !mb-0 !font-sans !font-medium !normal-case ${size === 'small' ? '!text-sm' : '!text-lg'}`}\n >\n {title}\n </h3>\n <p\n className={`!mt-1 !font-sans !text-sm !text-gray-500 ${size === 'small' ? '!text-xs' : '!text-sm'}`}\n >\n {description}\n </p>\n {children && <div className=\"mt-4\">{children}</div>}\n </div>\n </div>\n </div>\n );\n}\n","import { useEffect, useRef, useState } from '@wordpress/element';\n\ntype DraggablePanelProps = {\n children: React.ReactNode;\n};\n\nexport function FloatingPanel({\n children,\n}: DraggablePanelProps & {\n children: React.ReactNode;\n}) {\n const panelRef = useRef(null);\n const [position, setPosition] = useState({ x: 100, y: 100 });\n const [dragging, setDragging] = useState(false);\n const [offset, setOffset] = useState({ x: 0, y: 0 });\n\n useEffect(() => {\n const handleMouseMove = (e) => {\n if (dragging) {\n setPosition({\n x: e.clientX - offset.x,\n y: e.clientY - offset.y,\n });\n }\n };\n\n const handleMouseUp = () => setDragging(false);\n\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }, [dragging, offset]);\n\n const startDragging = (e) => {\n const rect = panelRef.current.getBoundingClientRect();\n setOffset({ x: e.clientX - rect.left, y: e.clientY - rect.top });\n setDragging(true);\n };\n\n return (\n <div>\n <div\n ref={panelRef}\n className=\"fixed bg-white shadow-xl rounded-2xl p-4 w-[400px] h-[550px] z-[9999]\"\n style={{ left: position.x, top: position.y }}\n >\n {children}\n <div\n className=\"absolute top-1 right-1 cursor-move w-5 h-5 bg-gray-300 rounded\"\n onMouseDown={startDragging}\n ></div>\n </div>\n </div>\n );\n}\n","import { FocalPointPicker } from '@wordpress/components';\nimport { useCallback, useMemo } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\ntype FocalPointControlProps = {\n value: string;\n onValueChange: (value: string) => void;\n url?: string;\n};\n\nfunction parseFocal(value?: string) {\n // Default if empty/invalid\n const fallback = { x: 0.5, y: 0.5 };\n\n if (!value || !value.includes('%')) return fallback;\n\n const cleaned = value.replace('[', '').replace('%]', '');\n const parts = cleaned.split('_');\n if (parts.length !== 2) return fallback;\n\n const x = parseFloat(parts[0]) / 100;\n const y = parseFloat(parts[1]) / 100;\n\n if (!Number.isFinite(x) || !Number.isFinite(y)) return fallback;\n\n // Clamp to [0,1]\n return {\n x: Math.min(1, Math.max(0, x)),\n y: Math.min(1, Math.max(0, y)),\n };\n}\n\nfunction formatFocal(fp: { x: number; y: number }) {\n return `[${(fp.x * 100).toFixed(2)}%_${(fp.y * 100).toFixed(2)}%]`;\n}\n\nexport const FocalPointControl: React.FC<FocalPointControlProps> = ({\n value,\n onValueChange,\n url,\n}) => {\n const focalPoint = useMemo(() => parseFocal(value), [value]);\n\n const handleChange = useCallback(\n (next: { x: number; y: number }) => {\n onValueChange(formatFocal(next));\n },\n [onValueChange]\n );\n\n return (\n <Wrap className=\"relative flex flex-col\">\n <FocalPointPicker\n url={url}\n value={focalPoint}\n onDrag={handleChange}\n onChange={handleChange}\n />\n </Wrap>\n );\n};\n\nexport default FocalPointControl;\n","// Popover.tsx\nimport { Cross2 } from '@blockbite/icons';\nimport { Button, Popover as WordpressPopover } from '@wordpress/components';\n\ntype PopoverProps = {\n children: React.ReactNode;\n className?: string;\n position?: any;\n visible: boolean; // controlled\n anchor?: HTMLElement | null; // anchor element for positioning\n onClose?: () => void; // simple close callback\n onVisibleChange?: (value: boolean) => void; // compatibility with old API\n offset?: number;\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n children,\n className,\n position,\n visible,\n anchor,\n onClose,\n onVisibleChange,\n offset,\n}) => {\n if (!visible) return null;\n\n const handleClose = () => {\n onClose?.();\n onVisibleChange?.(false);\n };\n\n return (\n <WordpressPopover\n position={position}\n className=\"blockbite-ui__popover\"\n anchor={anchor}\n onFocusOutside={handleClose}\n offset={offset}\n onKeyDown={(e: React.KeyboardEvent) => {\n if (e.key === 'Escape') handleClose();\n }}\n >\n <div className={className}>\n <div className=\"relative h-full w-full p-4\">\n <Button\n onClick={handleClose}\n size=\"small\"\n className=\"close-button absolute right-2 top-2 !p-0 !min-w-0 !h-6 w-6 inline-flex items-center justify-center\"\n >\n <Cross2 className=\"w-4 h-4\" />\n </Button>\n {children}\n </div>\n </div>\n </WordpressPopover>\n );\n};\n\nexport default Popover;\n","import { SelectControl as WordpressSelect } from '@wordpress/components';\n\ntype SelectControlWrapperProps = {\n value: string;\n children?: any;\n options: any[];\n label?: string;\n emptyLabel?: string;\n disabled?: boolean;\n onChange?: (value: string) => void;\n className?: string; // allow styling on the wrapper\n};\n\nexport const SelectControlWrapper = ({\n onChange,\n value,\n options,\n label = '',\n disabled = false,\n emptyLabel = 'No options available',\n className,\n}: SelectControlWrapperProps) => {\n const handleChange = (val: string) => {\n if (onChange) {\n onChange(val);\n }\n };\n\n return (\n <div className={className}>\n {options && options.length > 0 ? (\n <WordpressSelect\n __nextHasNoMarginBottom\n label={label || ''}\n value={value || ''}\n disabled={disabled}\n onChange={handleChange}\n options={[\n { value: '', label: 'Select an option' },\n // safeguard: map options to value/label\n ...options.map((o) => ({ value: o.value, label: o.label })),\n ]}\n />\n ) : (\n <p className=\"text-sm text-gray-500 !mb-0\">{emptyLabel}</p>\n )}\n </div>\n );\n};\n","// GradientSwatchPicker.tsx\n\nimport {\n Button,\n ColorIndicator,\n ColorPicker,\n TextControl,\n} from '@wordpress/components';\nimport { useCallback, useRef, useState } from '@wordpress/element';\nimport { ButtonToggleGroup } from './ButtonToggle.js';\nimport { ChapterHeading } from './ChapterHeading.js';\nimport Popover from './Popover.js';\nimport { SelectControlWrapper } from './SelectControlWrapper.js';\n//\n// Types\n//\n\nexport type PaletteColor = {\n name: string; // \"primary\"\n color: string; // \"#f3ff4a\"\n value: string; // \"primary\" (tailwind token)\n};\n\ntype GradientKind = 'linear' | 'radial';\n\ntype Direction =\n | 'to-t'\n | 'to-tr'\n | 'to-r'\n | 'to-br'\n | 'to-b'\n | 'to-bl'\n | 'to-l'\n | 'to-tl';\n\ntype StopRole = 'from' | 'via' | 'to';\n\ntype GradientStop = {\n id: string;\n role: StopRole;\n colorToken: string; // Tailwind color token, e.g. \"primary\", \"neutral\", \"[#ff0000]\"\n position: number; // 0–100 (%)\n opacity: number; // 0–100 (%)\n};\n\nexport type TailwindGradientValue = {\n kind: GradientKind;\n direction: Direction; // used for linear\n stops: GradientStop[];\n};\n\nexport type GradientSwatchPickerProps = {\n colors: PaletteColor[];\n activeOptionValue?: any;\n onChange?: (nextClassGroups: any) => void;\n onGradientChange?: (value: TailwindGradientValue) => void;\n};\n\n//\n// Tailwind direction helpers\n//\n\nconst directionToClass: Record<Direction, string> = {\n 'to-t': 'bg-gradient-to-t',\n 'to-tr': 'bg-gradient-to-tr',\n 'to-r': 'bg-gradient-to-r',\n 'to-br': 'bg-gradient-to-br',\n 'to-b': 'bg-gradient-to-b',\n 'to-bl': 'bg-gradient-to-bl',\n 'to-l': 'bg-gradient-to-l',\n 'to-tl': 'bg-gradient-to-tl',\n};\n\nconst classToDirection: Record<string, Direction> = Object.keys(\n directionToClass\n).reduce(\n (acc, dir) => {\n const cls = directionToClass[dir as Direction];\n acc[cls] = dir as Direction;\n return acc;\n },\n {} as Record<string, Direction>\n);\n\nconst directionToAngle: Record<Direction, number> = {\n 'to-t': 0,\n 'to-tr': 45,\n 'to-r': 90,\n 'to-br': 135,\n 'to-b': 180,\n 'to-bl': 225,\n 'to-l': 270,\n 'to-tl': 315,\n};\n\nconst RADIAL_CLASS = 'bg-radial';\nconst DEFAULT_LINEAR_COORDS = {\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n};\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(max, Math.max(min, value));\n\n//\n// Color helpers\n//\n\n// token can be \"primary\", \"primary/50\", \"[#ff0000]\" or \"[#ff0000]/50\"\nfunction parseToken(\n palette: PaletteColor[],\n token: string\n): { hex: string | null; baseToken: string; opacityFromToken: number | null } {\n if (!token) return { hex: null, baseToken: token, opacityFromToken: null };\n\n const [base, opacityPart] = token.split('/');\n const opacityFromToken =\n opacityPart != null ? clamp(parseInt(opacityPart, 10) || 0, 0, 100) : null;\n\n let hex: string | null = null;\n\n if (base.startsWith('[') && base.endsWith(']')) {\n hex = base.slice(1, -1);\n } else {\n const found = palette.find((c) => c.value === base);\n hex = found?.color ?? null;\n }\n\n return { hex, baseToken: base, opacityFromToken };\n}\n\nfunction buildToken(baseToken: string, opacity?: number): string {\n if (opacity != null && opacity < 100) {\n return `${baseToken}/${clamp(opacity, 0, 100)}`;\n }\n return baseToken;\n}\n\nfunction hexWithOpacity(hex: string, opacity: number): string {\n // hex: \"#rrggbb\"\n const o = clamp(opacity, 0, 100) / 100;\n const clean = hex.replace('#', '');\n const r = parseInt(clean.slice(0, 2), 16);\n const g = parseInt(clean.slice(2, 4), 16);\n const b = parseInt(clean.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${o})`;\n}\n\n//\n// Gradient CSS for preview\n//\n\nfunction gradientToCss(\n value: TailwindGradientValue,\n palette: PaletteColor[]\n): string {\n const sortedStops = [...value.stops].sort((a, b) => a.position - b.position);\n\n const parts = sortedStops\n .map((stop) => {\n const { hex } = parseToken(palette, stop.colorToken);\n if (!hex) return null;\n const color = hexWithOpacity(hex, stop.opacity ?? 100);\n return `${color} ${stop.position}%`;\n })\n .filter(Boolean)\n .join(', ');\n\n if (value.kind === 'radial') {\n return `radial-gradient(circle, ${parts})`;\n }\n\n const angle = directionToAngle[value.direction] ?? 90;\n return `linear-gradient(${angle}deg, ${parts})`;\n}\n\n//\n// Class groups <-> TailwindGradientValue\n//\n// Expected / emitted groups:\n//\n// 'gradient-direction': 'bg-gradient-to-r' | 'bg-radial'\n// 'gradient-from': [{ from: 'primary/100' }]\n// 'gradient-from-pos': [{ from: '0%' }]\n// 'gradient-via': [{ via: 'neutral/80' }, ...]\n// 'gradient-via-pos': [{ via: '30%' }, ...]\n// 'gradient-to': [{ to: 'neutral/100' }]\n// 'gradient-to-pos': [{ to: '100%' }]\n//\n\n// Helper to parse position values from both [X%] and X% formats\nfunction parsePositionValue(v?: string): number | undefined {\n if (!v) return undefined;\n let cleaned = String(v);\n if (cleaned.startsWith('[') && cleaned.endsWith(']')) {\n cleaned = cleaned.slice(1, -1); // Remove brackets\n }\n const n = parseFloat(cleaned.replace('%', ''));\n return Number.isFinite(n) ? Math.min(100, Math.max(0, n)) : undefined;\n}\n\nexport function classGroupsToGradientValue(\n groups: Record<string, any> | null | undefined,\n palette: PaletteColor[]\n): TailwindGradientValue | null {\n if (!groups) return null;\n\n const directionClass = groups['gradient-direction'] as string | undefined;\n\n const kind: GradientKind =\n directionClass === RADIAL_CLASS ? 'radial' : 'linear';\n\n const direction: Direction =\n kind === 'radial'\n ? 'to-r'\n : directionClass\n ? classToDirection[directionClass] || 'to-r'\n : 'to-r';\n\n const stops: GradientStop[] = [];\n\n const fromGroup = groups['gradient-from']?.[0];\n const fromPosGroup = groups['gradient-from-pos']?.[0];\n if (fromGroup?.from) {\n const token = String(fromGroup.from);\n const { opacityFromToken } = parseToken(palette, token);\n stops.push({\n id: 'from',\n role: 'from',\n colorToken: token,\n position: parsePositionValue(fromPosGroup?.from) ?? 0,\n opacity: opacityFromToken ?? 100,\n });\n }\n\n const viaGroup = groups['gradient-via'] || [];\n const viaPosGroup = groups['gradient-via-pos'] || [];\n viaGroup.forEach((viaItem: any, index: number) => {\n const token = String(viaItem.via);\n const { opacityFromToken } = parseToken(palette, token);\n const pos = viaPosGroup[index]?.via;\n stops.push({\n id: `via-${index}`,\n role: 'via',\n colorToken: token,\n position: parsePositionValue(pos) ?? 50,\n opacity: opacityFromToken ?? 100,\n });\n });\n\n const toGroup = groups['gradient-to']?.[0];\n const toPosGroup = groups['gradient-to-pos']?.[0];\n if (toGroup?.to) {\n const token = String(toGroup.to);\n const { opacityFromToken } = parseToken(palette, token);\n stops.push({\n id: 'to',\n role: 'to',\n colorToken: token,\n position: parsePositionValue(toPosGroup?.to) ?? 100,\n opacity: opacityFromToken ?? 100,\n });\n }\n\n if (!stops.length) return null;\n\n return { kind, direction, stops: normalizeStops(stops) };\n}\n\nexport function gradientValueToClassGroups(\n value: TailwindGradientValue\n): Record<string, any> {\n const groups: Record<string, any> = {};\n\n groups['gradient-direction'] =\n value.kind === 'radial' ? RADIAL_CLASS : directionToClass[value.direction];\n\n const sorted = normalizeStops(value.stops);\n\n const from = sorted.find((s) => s.role === 'from');\n const to = sorted.find((s) => s.role === 'to');\n const vias = sorted.filter((s) => s.role === 'via');\n\n if (from) {\n groups['gradient-from'] = [\n { from: buildToken(from.colorToken, from.opacity) },\n ];\n groups['gradient-from-pos'] = [{ from: `${from.position}%` }];\n }\n\n if (to) {\n groups['gradient-to'] = [{ to: buildToken(to.colorToken, to.opacity) }];\n groups['gradient-to-pos'] = [{ to: `${to.position}%` }];\n }\n\n if (vias.length) {\n groups['gradient-via'] = vias.map((v) => ({\n via: buildToken(v.colorToken, v.opacity),\n }));\n groups['gradient-via-pos'] = vias.map((v) => ({\n via: `${v.position}%`,\n }));\n }\n\n return groups;\n}\n\nexport function gradientDirectionToCoords(direction: Direction): {\n x1: string;\n y1: string;\n x2: string;\n y2: string;\n} {\n switch (direction) {\n case 'to-t':\n return { x1: '0%', y1: '100%', x2: '0%', y2: '0%' };\n case 'to-tr':\n return { x1: '0%', y1: '100%', x2: '100%', y2: '0%' };\n case 'to-r':\n return { x1: '0%', y1: '0%', x2: '100%', y2: '0%' };\n case 'to-br':\n return { x1: '0%', y1: '0%', x2: '100%', y2: '100%' };\n case 'to-b':\n return { x1: '0%', y1: '0%', x2: '0%', y2: '100%' };\n case 'to-bl':\n return { x1: '100%', y1: '0%', x2: '0%', y2: '100%' };\n case 'to-l':\n return { x1: '100%', y1: '0%', x2: '0%', y2: '0%' };\n case 'to-tl':\n return { x1: '100%', y1: '100%', x2: '0%', y2: '0%' };\n default:\n return DEFAULT_LINEAR_COORDS;\n }\n}\n\nexport function gradientArrayToClassGroups(\n items: Array<{ id: string; value: string }> = []\n): Record<string, any> {\n const groups: Record<string, any> = {};\n items.forEach((item) => {\n if (!item?.id) return;\n if (item.id === 'gradient-direction') {\n groups['gradient-direction'] = item.value;\n return;\n }\n if (item.id === 'gradient-from') {\n groups['gradient-from'] = [{ from: item.value }];\n return;\n }\n if (item.id === 'gradient-from-pos') {\n groups['gradient-from-pos'] = [{ from: item.value }];\n return;\n }\n if (item.id === 'gradient-to') {\n groups['gradient-to'] = [{ to: item.value }];\n return;\n }\n if (item.id === 'gradient-to-pos') {\n groups['gradient-to-pos'] = [{ to: item.value }];\n return;\n }\n if (item.id === 'gradient-via') {\n const list = groups['gradient-via'] || [];\n groups['gradient-via'] = [...list, { via: item.value }];\n return;\n }\n if (item.id === 'gradient-via-pos') {\n const list = groups['gradient-via-pos'] || [];\n groups['gradient-via-pos'] = [...list, { via: item.value }];\n }\n });\n return groups;\n}\n\nexport function gradientArrayToClassString(\n items: Array<{ id: string; value: string }> = []\n): string {\n return items\n .map((item) => {\n if (!item?.id || !item?.value) return '';\n if (item.id === 'gradient-direction') return item.value;\n if (item.id === 'gradient-from') return `from-${item.value}`;\n if (item.id === 'gradient-from-pos') return `from-${item.value}`;\n if (item.id === 'gradient-via') return `via-${item.value}`;\n if (item.id === 'gradient-via-pos') return `via-${item.value}`;\n if (item.id === 'gradient-to') return `to-${item.value}`;\n if (item.id === 'gradient-to-pos') return `to-${item.value}`;\n return '';\n })\n .filter(Boolean)\n .join(' ');\n}\n\nexport function resolveGradientStopColor(\n token: string,\n prefix: 'color' | 'bb-color' = 'color'\n): string {\n const raw = String(token || '');\n const base = raw.split('/')[0] || '';\n if (base.startsWith('[') && base.endsWith(']')) {\n return base.slice(1, -1);\n }\n if (base.startsWith('var(')) {\n const targetPrefix = prefix === 'bb-color' ? '--bb-color-' : '--color-';\n return base.replace('--color-', targetPrefix);\n }\n const cssToken = base.replace(/\\./g, '-');\n const varPrefix = prefix === 'bb-color' ? '--bb-color-' : '--color-';\n return `var(${varPrefix}${cssToken})`;\n}\n\n// Convenience mappers for consumers\nexport function gradientClassGroupsToArray(\n groups: Record<string, any>\n): Array<{ id: string; value: string }> {\n const out: Array<{ id: string; value: string }> = [];\n const obj = groups || {};\n Object.keys(obj).forEach((key) => {\n const val = obj[key];\n if (key === 'gradient-direction' && typeof val === 'string') {\n out.push({ id: key, value: val });\n return;\n }\n if (Array.isArray(val)) {\n val.forEach((entry) => {\n const role = entry.from\n ? 'from'\n : entry.via\n ? 'via'\n : entry.to\n ? 'to'\n : undefined;\n if (!role) return;\n let value = entry[role];\n if (key.endsWith('-pos') && typeof value === 'string') {\n const num = parseFloat(String(value).replace('%', ''));\n if (!Number.isNaN(num)) {\n // Use arbitrary value syntax for Tailwind 4 compatibility\n // Format: [X%] where X is rounded to avoid overly precise decimals\n const rounded = Math.round(num * 100) / 100;\n value = `[${rounded}%]`;\n }\n }\n out.push({ id: key, value });\n });\n }\n });\n return out;\n}\n\nexport function gradientValueToArray(\n value: TailwindGradientValue\n): Array<{ id: string; value: string }> {\n return gradientClassGroupsToArray(gradientValueToClassGroups(value));\n}\n\nexport const arrayToGradient = (\n arr: Array<{ id: string; value: string; selector?: string }>\n): TailwindGradientValue => {\n // Filter out empty values up-front to avoid creating phantom stops\n const items = Array.isArray(arr)\n ? arr.filter((i) => String(i?.value ?? '').trim() !== '')\n : [];\n\n // If there are no items at all, bail out immediately before any assignments\n if (items.length === 0) {\n return null as unknown as TailwindGradientValue;\n }\n\n // Detect if the incoming array is the new gradient group format\n // If so, and there are no meaningful values, return null so the\n // consumer can fall back to a sane default (2 stops)\n const raw = Array.isArray(arr) ? arr : [];\n const hasGradientGroupIds = raw.some((i) =>\n [\n 'gradient-direction',\n 'gradient-from',\n 'gradient-from-pos',\n 'gradient-via',\n 'gradient-via-pos',\n 'gradient-to',\n 'gradient-to-pos',\n ].includes(i?.id as string)\n );\n\n // Prefer id-based reconstruction from classGroup-like array\n const get = (id: string) => items.filter((i) => i.id === id);\n\n // If this looks like gradient group data but has no meaningful values, bail out early\n if (hasGradientGroupIds) {\n const hasAnyValues = Boolean(\n get('gradient-from')[0]?.value ||\n get('gradient-to')[0]?.value ||\n get('gradient-direction')[0]?.value ||\n (get('gradient-via').length &&\n get('gradient-via').some((t) => !!t.value)) ||\n get('gradient-from-pos')[0]?.value ||\n get('gradient-to-pos')[0]?.value ||\n (get('gradient-via-pos').length &&\n get('gradient-via-pos').some((t) => !!t.value))\n );\n if (!hasAnyValues) {\n return null as unknown as TailwindGradientValue;\n }\n }\n\n // get() already declared above\n\n const stops: GradientStop[] = [];\n\n const fromToken = get('gradient-from')[0]?.value;\n const fromPos = parsePositionValue(get('gradient-from-pos')[0]?.value);\n if (fromToken) {\n stops.push({\n id: 'from',\n role: 'from',\n colorToken: fromToken,\n position: fromPos ?? 0,\n opacity: 100,\n });\n }\n\n const viaTokens = get('gradient-via');\n const viaPos = get('gradient-via-pos');\n viaTokens.forEach((t, idx) => {\n const token = t.value;\n if (!token) return;\n const pos = parsePositionValue(viaPos[idx]?.value);\n stops.push({\n id: `via-${idx}`,\n role: 'via',\n colorToken: token,\n position: pos ?? 50,\n opacity: 100,\n });\n });\n\n const toToken = get('gradient-to')[0]?.value;\n const toPos = parsePositionValue(get('gradient-to-pos')[0]?.value);\n if (toToken) {\n stops.push({\n id: 'to',\n role: 'to',\n colorToken: toToken,\n position: toPos ?? 100,\n opacity: 100,\n });\n }\n\n if (stops.length) {\n const dirItem = get('gradient-direction')[0];\n const directionClass = dirItem?.value;\n const kind: GradientKind =\n directionClass === RADIAL_CLASS ? 'radial' : 'linear';\n const direction: Direction =\n kind === 'radial'\n ? 'to-r'\n : directionClass && classToDirection[directionClass]\n ? classToDirection[directionClass]\n : 'to-r';\n return { kind, direction, stops: normalizeStops(stops) };\n }\n\n // If this looks like gradient group data but had no values, bail out so caller can default\n // hasGradientGroupIds handled above with value presence check\n\n // Fallback: accept legacy array with selector-based roles (from-/via-/to-)\n const fallbackStops: GradientStop[] = items.map((item, idx) => {\n const sel = item?.selector ?? '';\n let role: StopRole = 'via';\n if (sel.startsWith('from-') || idx === 0) role = 'from';\n else if (sel.startsWith('to-') || idx === items.length - 1) role = 'to';\n return {\n id: item.id ?? (role === 'via' ? `via-${idx}` : role),\n role,\n colorToken: item.value,\n position: idx === 0 ? 0 : idx === items.length - 1 ? 100 : 50,\n opacity: 100,\n };\n });\n\n return {\n kind: 'linear',\n direction: 'to-r',\n stops: normalizeStops(fallbackStops),\n };\n};\n\n//\n// Stop normalization: first = from, last = to, middle = via\n//\n\nexport function normalizeStops(stops: GradientStop[]): GradientStop[] {\n const sorted = [...stops].sort((a, b) => a.position - b.position);\n if (!sorted.length) return sorted;\n\n return sorted.map((stop, index) => {\n let role: StopRole = 'via';\n if (index === 0) role = 'from';\n if (index === sorted.length - 1) role = 'to';\n return { ...stop, role };\n });\n}\n\n//\n// UI component: TailwindGradientPicker\n//\n\nexport type TailwindGradientPickerProps = {\n palette: PaletteColor[];\n value: TailwindGradientValue;\n onChange: (value: TailwindGradientValue) => void;\n};\n\nexport const TailwindGradientPicker: React.FC<TailwindGradientPickerProps> = ({\n palette,\n value,\n onChange,\n}) => {\n const trackRef = useRef<HTMLDivElement | null>(null);\n const [activeStopId, setActiveStopId] = useState<string | null>(null);\n const [popoverVisible, setPopoverVisible] = useState(false);\n const [popoverAnchor, setPopoverAnchor] = useState<HTMLElement | null>(null);\n // Local state for smooth dragging - only visual updates during drag\n const [dragState, setDragState] = useState<{\n stopId: string;\n position: number;\n } | null>(null);\n\n // Use drag position for visual preview, fall back to actual value\n const displayStops = dragState\n ? value.stops.map((s) =>\n s.id === dragState.stopId ? { ...s, position: dragState.position } : s\n )\n : value.stops;\n\n const activeStop = value.stops.find((s) => s.id === activeStopId);\n\n const updateStops = (updater: (stops: GradientStop[]) => GradientStop[]) => {\n const nextStops = normalizeStops(updater(value.stops));\n onChange({ ...value, stops: nextStops });\n };\n\n const updateStop = (id: string, patch: Partial<GradientStop>) => {\n updateStops((stops) =>\n stops.map((s) => (s.id === id ? { ...s, ...patch } : s))\n );\n };\n\n const removeStop = (id: string) => {\n // keep at least 2 stops\n if (value.stops.length <= 2) return;\n updateStops((stops) => stops.filter((s) => s.id !== id));\n };\n\n const handleTrackClick = (e: React.MouseEvent<HTMLDivElement>) => {\n // ignore if click started on a handle\n const target = e.target as HTMLElement;\n if (target.dataset?.stopHandle === 'true') return;\n\n const track = trackRef.current;\n if (!track) return;\n const rect = track.getBoundingClientRect();\n const pos = ((e.clientX - rect.left) / rect.width) * 100;\n const position = clamp(pos, 0, 100);\n\n // nearest stop's color & opacity\n const nearest =\n value.stops.reduce(\n (best, s) =>\n Math.abs(s.position - position) < Math.abs(best.position - position)\n ? s\n : best,\n value.stops[0]\n ) ?? value.stops[0];\n\n const id = `via-${Date.now()}`;\n\n updateStops((stops) => [\n ...stops,\n {\n id,\n role: 'via',\n colorToken: nearest.colorToken,\n position,\n opacity: nearest.opacity,\n },\n ]);\n\n setActiveStopId(id);\n };\n\n const handleHandleMouseDown = (\n e: React.MouseEvent<HTMLDivElement>,\n stop: GradientStop\n ) => {\n e.stopPropagation();\n e.preventDefault();\n if (!trackRef.current) return;\n const track = trackRef.current;\n\n setActiveStopId(stop.id);\n\n const rect = track.getBoundingClientRect();\n\n const onMove = (event: MouseEvent) => {\n const raw = ((event.clientX - rect.left) / rect.width) * 100;\n const position = clamp(raw, 0, 100);\n // Only update local drag state for smooth visual feedback\n setDragState({ stopId: stop.id, position });\n };\n\n const onUp = (event: MouseEvent) => {\n window.removeEventListener('mousemove', onMove);\n window.removeEventListener('mouseup', onUp);\n // Commit the final position to the parent on mouseup\n const raw = ((event.clientX - rect.left) / rect.width) * 100;\n const position = clamp(raw, 0, 100);\n setDragState(null);\n updateStop(stop.id, { position });\n };\n\n window.addEventListener('mousemove', onMove);\n window.addEventListener('mouseup', onUp);\n };\n\n const openColorPopover = (stop: GradientStop, target: HTMLElement) => {\n setActiveStopId(stop.id);\n setPopoverAnchor(target);\n setPopoverVisible(true);\n };\n\n const handleKindChange = (kind: GradientKind) => {\n onChange({ ...value, kind });\n };\n\n const handleDirectionChange = (direction: Direction) => {\n onChange({ ...value, direction });\n };\n\n const handleColorPickerChange = useCallback(\n (color: any) => {\n if (!activeStop) return;\n const hex = typeof color === 'string' ? color : (color?.hex ?? '#000000');\n // arbitrary tailwind color: [#rrggbb]\n const baseToken = `[${hex}]`;\n updateStop(activeStop.id, { colorToken: baseToken });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [activeStop]\n );\n\n return (\n <div className=\"bb-gradient-picker space-y-3 text-xs\">\n {/* Kind dropdown (Linear / Radial) */}\n <div className=\"flex items-center gap-2\">\n <SelectControlWrapper\n label=\"Type\"\n options={[\n { label: 'Linear', value: 'linear' },\n { label: 'Radial', value: 'radial' },\n ]}\n value={value.kind}\n onChange={(nextKind) => handleKindChange(nextKind as GradientKind)}\n ></SelectControlWrapper>\n </div>\n\n {/* Direction buttons (for linear only) */}\n {value.kind === 'linear' && (\n <ButtonToggleGroup\n options={[\n { value: 'to-l', label: 'to-l' },\n { value: 'to-r', label: 'to-r' },\n { value: 'to-t', label: 'to-t' },\n { value: 'to-b', label: 'to-b' },\n { value: 'to-tl', label: 'to-tl' },\n { value: 'to-tr', label: 'to-tr' },\n { value: 'to-bl', label: 'to-bl' },\n { value: 'to-br', label: 'to-br' },\n ]}\n value={value.direction}\n onPressedChange={(dir) => handleDirectionChange(dir as Direction)}\n ></ButtonToggleGroup>\n )}\n\n {/* Gradient track with draggable handles */}\n <div\n ref={trackRef}\n className=\"relative h-8 w-full cursor-crosshair rounded border\"\n style={{\n backgroundImage: gradientToCss(\n { ...value, stops: displayStops },\n palette\n ),\n }}\n onMouseDown={handleTrackClick}\n >\n {displayStops.map((stop) => (\n <div\n key={stop.id}\n data-stop-handle=\"true\"\n className=\"absolute top-1/2 h-4 w-4 rounded-full -translate-y-1/2 -translate-x-1/2 cursor-pointer ring-2 ring-border\"\n style={{\n left: `${stop.position}%`,\n backgroundColor: stop.colorToken.startsWith('[')\n ? stop.colorToken.slice(1, -1)\n : undefined,\n }}\n onMouseDown={(e) => handleHandleMouseDown(e, stop)}\n onClick={(e) => {\n e.stopPropagation();\n setActiveStopId(stop.id);\n }}\n />\n ))}\n </div>\n\n {/* Stops table (Figma-like) */}\n <div className=\"space-y-1\">\n <div className=\"flex items-start justify-between text-[10px] font-semibold uppercase\">\n <span>Stops</span>\n </div>\n\n <div className=\"space-y-1\">\n {normalizeStops(displayStops).map((stop) => {\n const { hex, baseToken } = parseToken(palette, stop.colorToken);\n return (\n <div\n key={stop.id}\n className={`flex gap-2 items-start ${\n activeStopId === stop.id ? 'bg-wp/10' : 'bg-transparent'\n }`}\n onClick={() => setActiveStopId(stop.id)}\n >\n {/* Position */}\n <TextControl\n className=\"w-16 h-6\"\n __nextHasNoMarginBottom\n value={String(Math.round(stop.position))}\n onChange={(val: string) => {\n const num = clamp(parseFloat(val) || 0, 0, 100);\n updateStop(stop.id, { position: num });\n }}\n type=\"text\"\n suffix=\"%\"\n />\n\n {/* Color cell (indicator + token) */}\n <button\n type=\"button\"\n className=\"flex w-16 h-[32px] items-center gap border border-border\"\n onClick={(e) =>\n openColorPopover(stop, e.currentTarget as HTMLElement)\n }\n >\n <ColorIndicator\n colorValue={hex ?? '#000000'}\n className=\"!h-4 !w-4\"\n />\n <span className=\"truncate text-[11px]\">{baseToken}</span>\n </button>\n\n {/* Opacity */}\n <TextControl\n __nextHasNoMarginBottom\n className=\"w-12\"\n value={String(Math.round(stop.opacity))}\n onChange={(val: string) => {\n const num = clamp(parseFloat(val) || 0, 0, 100);\n updateStop(stop.id, { opacity: num });\n }}\n type=\"text\"\n suffix=\"%\"\n />\n\n {/* Remove */}\n <Button\n type=\"button\"\n className=\"flex h-6 w-6 items-center justify-center rounded border text-xs\"\n onClick={() => removeStop(stop.id)}\n disabled={value.stops.length <= 1}\n >\n –\n </Button>\n </div>\n );\n })}\n </div>\n </div>\n\n {/* Color popover: palette + ColorPicker */}\n <Popover\n visible={popoverVisible && !!activeStop}\n anchor={popoverAnchor}\n onClose={() => setPopoverVisible(false)}\n position=\"bottom center\"\n offset={8}\n >\n {activeStop && (\n <div className=\"space-y-3\">\n <ChapterHeading title=\"Theme tokens\" />\n {/* Palette swatches */}\n <div className=\"flex flex-wrap gap-1 max-w-[200px]\">\n {palette.map((c) => (\n <button\n key={c.value}\n type=\"button\"\n className=\"flex h-6 w-6 items-center justify-center rounded-full border\"\n onClick={() =>\n updateStop(activeStop.id, {\n colorToken: c.value,\n })\n }\n >\n <ColorIndicator\n colorValue={c.color}\n className=\"!h-5 !w-5 !rounded-full\"\n />\n </button>\n ))}\n </div>\n\n {/* Color picker (writes arbitrary color as [#hex]) */}\n <ColorPicker\n color={\n parseToken(palette, activeStop.colorToken).hex ?? '#000000'\n }\n onChange={handleColorPickerChange}\n />\n </div>\n )}\n </Popover>\n </div>\n );\n};\n","import classNames from 'classnames';\n\ntype LabelProps = {\n children?: React.ReactNode;\n className?: string;\n title?: string;\n};\n\nexport const Label = ({ children, title, className }: LabelProps) => {\n return (\n <span\n className={classNames(\n 'text-[11px] font-medium uppercase leading-snug flex gap-2 items-center',\n className\n )}\n >\n {title ? title : children}\n </span>\n );\n};\n","import apiFetch from '@wordpress/api-fetch';\nimport { TextControl } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Wrap } from './Wrap.js';\n\nexport function LinkPicker(props) {\n const [activeKeyword, setActiveKeyword] = useState('');\n const [links, setLinks] = useState<\n Array<{ id: number; url: string; title: string; post_type: string }>\n >([]);\n const [activeLink, setActiveLink] = useState({\n url: '',\n title: '',\n });\n\n useEffect(() => {\n if (activeKeyword === '') return;\n setLinks(null);\n (apiFetch as any)({\n path: `/blockbite/v1/block-helpers/get-links/${activeKeyword}`,\n }).then(\n (\n fetchedLinks: Array<{\n id: number;\n url: string;\n title: string;\n post_type: string;\n }> | null\n ) => {\n if (fetchedLinks?.length) {\n setLinks([...fetchedLinks]);\n } else {\n setLinks([]);\n }\n }\n );\n }, [activeKeyword]);\n\n useEffect(() => {\n if (activeLink.url !== '') {\n props.parentCallback(activeLink);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeLink]);\n\n return (\n <Wrap className=\"blockbite--editor-linkwrap\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={__('Search link', 'blockbitelinks')}\n value={activeKeyword}\n placeholder=\"Example: About\"\n onChange={(value) => setActiveKeyword(value)}\n help={__('Type a post, page, title', 'blockbitelinks')}\n />\n {activeKeyword ? (\n <div className=\"blockbite--editor-linklist\">\n <LinkList\n links={links}\n onActiveLink={(link) => [\n setActiveLink({ ...link }),\n setActiveKeyword(''),\n ]}\n />\n </div>\n ) : null}\n </Wrap>\n );\n}\nfunction LinkList({ links, onActiveLink }) {\n if (links === null) {\n return <p>Loading...</p>;\n } else if (links.length === 0) {\n return <p>No Results</p>;\n }\n\n const list = links.map((link) => (\n <Wrap key={link.id}>\n <span\n className=\"blockbite--editor-link\"\n onClick={() => onActiveLink(link)}\n >\n dwddw\n <span>{link.title}</span>\n <span className=\"blockbite--preview-link\">{link.url}</span>\n <span className=\"blockbite--preview-link\">{link.post_type}</span>\n </span>\n </Wrap>\n ));\n\n return <>{list}</>; // ✅ Wrapped\n}\n","import { MediaUpload, MediaUploadCheck } from '@wordpress/block-editor';\nimport { Button } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport classNames from 'classnames';\n\nexport function MediaPicker({ mediaProps, mediaCallback, className }: any) {\n const allowedTypes = [\n 'image',\n 'video',\n 'image/svg+xml',\n 'svg',\n 'text/plain',\n 'application/json',\n ];\n\n const media = mediaProps || {\n id: null,\n url: '',\n sizes: [],\n alt: '',\n type: '',\n width: 0,\n height: 0,\n };\n\n const removeMedia = () => {\n mediaCallback({\n id: null,\n url: '',\n sizes: [],\n alt: '',\n type: '',\n width: 0,\n height: 0,\n });\n };\n\n const onSelectMedia = (mediaItem) => {\n const safeSizes = {\n thumbnail: null,\n medium: null,\n large: null,\n };\n\n if (mediaItem?.sizes) {\n Object.values(mediaItem.sizes).forEach((size: any) => {\n if (size.width <= 768) safeSizes.thumbnail = size.url;\n if (size.width > 768 && size.width <= 1536) safeSizes.medium = size.url;\n if (size.width > 1536) safeSizes.large = size.url;\n });\n }\n\n let mediaType = mediaItem.type;\n if (mediaItem.url?.endsWith('.json')) mediaType = 'lottie';\n if (mediaItem.url?.endsWith('.svg')) mediaType = 'svg';\n\n mediaCallback({\n id: mediaItem.id,\n url: mediaItem.url,\n sizes: safeSizes,\n alt: mediaItem.alt,\n type: mediaType,\n width: mediaItem.width,\n height: mediaItem.height,\n });\n };\n\n return (\n <div className={classNames('flex items-center gap-2', className)}>\n <MediaUploadCheck>\n <MediaUpload\n onSelect={onSelectMedia}\n allowedTypes={allowedTypes}\n render={({ open }) => (\n <Button\n className={\n !media.id\n ? 'editor-post-featured-image__toggle'\n : 'editor-post-featured-image__preview'\n }\n onClick={open}\n >\n {media?.url ? (\n <div className=\"flex gap-2 items-center w-full\">\n <img\n className=\"w-10 h-10 overflow-hidden rounded-md bg-gray-100 flex items-center justify-center\"\n src={media.url}\n alt={media.alt || __('Image', 'blockbite')}\n />\n {__('Change media', 'blockbite')}\n </div>\n ) : (\n __('Select media', 'blockbite')\n )}\n </Button>\n )}\n />\n {media?.url && (\n <Button\n onClick={removeMedia}\n isDestructive\n icon=\"trash\"\n title={__('Remove media', 'blockbite')}\n />\n )}\n </MediaUploadCheck>\n </div>\n );\n}\n","import { useEffect, useState } from '@wordpress/element';\n\nimport { RangeControl as WordpressRangeControl } from '@wordpress/components';\n\nexport type RangeControlType = {\n value: string;\n label: string;\n min: number;\n max: number;\n withInputField?: boolean;\n onValueChange: (value: string) => void;\n onReset?: () => void;\n allowReset?: boolean;\n gridMode?: boolean;\n showTooltip?: boolean;\n [key: string]: any;\n};\n\nexport const RangeSlider: React.FC<RangeControlType> = ({\n value,\n label,\n min = 0,\n max = 2000,\n withInputField = false,\n onValueChange,\n onReset,\n allowReset = false,\n gridMode = false,\n showTooltip = false,\n ...props\n}) => {\n // Use a sentinel value to detect reset button clicks\n const RESET_SENTINEL = -999;\n const [resetFallbackValue] = useState(RESET_SENTINEL);\n const [rangeValue, setRangeValue] = useState<number>(0);\n\n // Sync local state with controlled value prop\n useEffect(() => {\n setRangeValue(Math.round(parseInt(value) / (gridMode ? 16 : 1)));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n // convert back to arbitrary unit\n function handleRangeUpdate(val: number) {\n // Detect reset button click via sentinel value\n if (val === RESET_SENTINEL) {\n // Call the onReset callback if provided\n if (onReset) {\n onReset();\n } else {\n onValueChange('');\n }\n return;\n }\n\n const gridValue = val * (gridMode ? 16 : 1);\n onValueChange(gridValue.toString());\n }\n\n return (\n <div className=\"flex flex-col\">\n <WordpressRangeControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n label={label}\n value={rangeValue}\n min={min}\n max={max}\n showTooltip={showTooltip}\n withInputField={withInputField}\n allowReset={allowReset}\n onChange={(val) => {\n setRangeValue(val);\n handleRangeUpdate(val);\n }}\n resetFallbackValue={resetFallbackValue}\n {...props}\n />\n <span>{gridMode ? `${rangeValue * 16}px` : null} </span>\n </div>\n );\n};\n","import {\n ColorWheel as ColorWheelIcon,\n InfoCircled as InfoCircledIcon,\n ListBullet as ListBulletIcon,\n Percentage as PercentageIcon,\n Slider as SliderIcon,\n Tailwind as TailwindUnitIcon,\n} from '@blockbite/icons';\nimport {\n Button,\n __experimentalInputControl as InputControl,\n __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useEffect, useMemo, useRef, useState } from '@wordpress/element';\nimport { ButtonToggleGroup } from './ButtonToggle.js';\nimport { ChapterHeading } from './ChapterHeading.js';\nimport { Popover } from './Popover.js';\nimport { RangeSlider } from './RangeSlider.js';\n\ntype MetricsControlProps = {\n value: string;\n inputClassName?: string;\n classGroupControl?: any;\n onValueChange: (value: string) => void;\n tailwindUi?: any;\n getThemeOptions?: any;\n};\n\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\nconst shadowRegex =\n /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = (value: string) => fractionRegex.test(value);\nconst isNumber = (value: string) => !!value && !Number.isNaN(Number(value));\nconst isPercent = (value: string) =>\n !!value && value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = (value: string) => tshirtUnitRegex.test(value);\nconst CSS_UNITS = [\n { value: 'px', label: 'Pixels' },\n { value: 'rem', label: 'Root EM' },\n { value: 'em', label: 'Relative to font size' },\n { value: '%', label: 'Percentage' },\n { value: 'vh', label: 'Viewport Height' },\n { value: 'vw', label: 'Viewport Width' },\n { value: 'ch', label: 'Character Width' },\n { value: 'ex', label: 'x-height' },\n { value: 'dvh', label: 'Dynamic Viewport Height' },\n { value: 'dvw', label: 'Dynamic Viewport Width' },\n { value: 'svh', label: 'Small Viewport Height' },\n { value: 'svw', label: 'Small Viewport Width' },\n { value: 'lvh', label: 'Large Viewport Height' },\n { value: 'lvw', label: 'Large Viewport Width' },\n];\n\nexport const MetricsControl: React.FC<MetricsControlProps> = ({\n value: propValue,\n onValueChange,\n inputClassName = '',\n classGroupControl,\n tailwindUi = {},\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [localUnit, setLocalUnit] = useState<string>('arbitrary');\n const [localText, setLocalText] = useState<string>('');\n const [rawValue, setRawValue] = useState<string>('');\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n // Manual overrides from uiSchema\n const {\n manualFraction,\n manualOptions,\n manualRange,\n manualCssVars,\n manualArbitrary,\n placeholder,\n } = classGroupControl?.metadata || {\n manualFraction: true,\n manualOptions: true,\n manualRange: true,\n manualCssVars: true,\n manualArbitrary: true,\n placeholder: '0',\n };\n\n // Allow min/max override for RangeSlider\n const rangeMin = classGroupControl?.metadata?.rangeMin ?? 0;\n const rangeMax = classGroupControl?.metadata?.rangeMax ?? 100;\n\n useEffect(() => {\n setLocalText(getUserFriendlyValue(propValue));\n setRawValue(propValue);\n setLocalUnit(detectUnitFromRawValue(propValue));\n /* eslint-disable-next-line react-hooks/exhaustive-deps */\n }, [propValue]);\n\n const normOptions = useMemo(\n () => classGroupControl?.options || [],\n [classGroupControl?.options]\n );\n const supportsArbitrary = useMemo(\n () =>\n hasValidator(classGroupControl?.validators, [\n 'isArbitraryVariable',\n 'isArbitraryValue',\n 'themeGetter',\n ]),\n [classGroupControl?.validators]\n );\n const supportsFraction = useMemo(\n () => hasValidator(classGroupControl?.validators, ['isFraction']),\n [classGroupControl?.validators]\n );\n const supportsTheme = useMemo(\n () => hasValidator(classGroupControl?.validators, ['themeGetter']),\n [classGroupControl?.validators]\n );\n\n function hasValidator(validators: any[] | undefined, names: string[]) {\n if (!validators) return false;\n return validators.some((v) => {\n if (typeof v === 'function' && typeof v.name === 'string') {\n return names.includes(v.name);\n }\n return false;\n });\n }\n\n const getUserFriendlyValue = (raw: string): string => {\n if (!raw) return '';\n\n const arbMatch = raw.match(arbitraryValueRegex);\n if (arbMatch) return arbMatch[2];\n const varMatch = raw.match(arbitraryVariableRegex);\n if (varMatch) return varMatch[2];\n return raw;\n };\n\n const getRawValue = (userFriendly: string): string => {\n if (!userFriendly) return '';\n\n const trimmed = userFriendly.trim();\n\n if (normOptions.some((o) => String(o.value) === trimmed)) return trimmed;\n if (trimmed.startsWith('--')) return `(${trimmed})`;\n\n // For bare numbers: wrap in brackets only if no themeProvider exists\n // (themeProvider means numeric values are valid theme tokens like w-24)\n if (isNumber(trimmed) && !lengthUnitRegex.test(trimmed)) {\n const hasThemeProvider =\n classGroupControl?.themeProvider &&\n Array.isArray(classGroupControl.themeProvider) &&\n classGroupControl.themeProvider.length > 0;\n return hasThemeProvider ? trimmed : `[${trimmed}]`;\n }\n\n if (lengthUnitRegex.test(trimmed)) return `[${trimmed}]`;\n return userFriendly;\n };\n\n const detectUnitFromRawValue = (raw: string): string => {\n const trimmed = (raw || '').trim();\n if (normOptions.some((o) => String(o.value) === trimmed)) return 'list';\n if (trimmed.startsWith('--')) return 'arbitrary';\n if (isFraction(trimmed)) return 'fraction';\n if (arbitraryValueRegex.test(trimmed)) return 'arbitrary';\n if (isNumber(trimmed) && !lengthUnitRegex.test(trimmed)) return 'native';\n if (isPercent(trimmed) || lengthUnitRegex.test(trimmed)) return 'arbitrary';\n if (isTshirtSize(trimmed)) return 'native';\n if (colorFunctionRegex.test(trimmed) || /^#([0-9a-f]{3,8})$/i.test(trimmed))\n return 'color';\n if (shadowRegex.test(trimmed) || imageRegex.test(trimmed))\n return 'arbitrary';\n return 'arbitrary';\n };\n\n const isValidValue = (raw: string): boolean => {\n if (raw === '') return true; // Allow empty value for deselection\n if (isNumber(raw)) return true;\n if (arbitraryValueRegex.test(raw)) return true;\n if (arbitraryVariableRegex.test(raw)) return true;\n if (normOptions.some((o) => String(o.value) === raw)) return true;\n if (isFraction(raw) || raw === 'full') return true;\n return false;\n };\n\n const handleInputChange = (v: string) => {\n setLocalText(v);\n };\n\n const handleBlur = () => {\n const newRaw = getRawValue(localText);\n if (isValidValue(newRaw)) {\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n } else {\n setLocalText(rawValue); // Revert to last valid value\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n const newRaw = getRawValue(localText);\n if (isValidValue(newRaw)) {\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n } else {\n setLocalText(rawValue); // Revert to last valid value\n }\n }\n };\n\n const appendToText = (insertion: string) => {\n const trimmed = localText.trim();\n const isNumeric = !isNaN(Number(trimmed));\n let newText = '';\n // Handle deselection (empty string) - clear the value entirely\n if (insertion === '') {\n newText = '';\n // If insertion is a fraction (eg \"1/2\"), replace whole value —\n // clicking fraction buttons should select the fraction instead of\n // appending to numeric prefixes like \"1/2\" -> \"11/3\".\n } else if (fractionRegex.test(insertion)) {\n newText = insertion;\n } else if (\n localUnit === 'list' ||\n localUnit === 'theme' ||\n trimmed.startsWith('--')\n ) {\n newText = insertion;\n } else if (isNumeric) {\n newText = `${trimmed}${insertion}`;\n } else {\n // Check if the current value has a number with a unit (e.g., \"16ex\", \"2rem\", \"100%\")\n // Extract the numeric part and append the new unit\n const numericMatch = trimmed.match(/^(-?\\d+\\.?\\d*)/);\n if (numericMatch) {\n newText = `${numericMatch[1]}${insertion}`;\n } else {\n newText = insertion;\n }\n }\n\n setLocalText(newText);\n\n // Emit the change immediately for arbitrary units\n const newRaw = getRawValue(newText);\n if (isValidValue(newRaw)) {\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n }\n\n inputRef.current?.focus();\n };\n\n const setValueDirectly = (v: string) => {\n const userFriendly = getUserFriendlyValue(v);\n const newRaw = getRawValue(userFriendly);\n if (isValidValue(newRaw)) {\n setLocalText(userFriendly);\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n } else {\n setLocalText(rawValue);\n }\n };\n\n const CurrentUnitIcon = (() => {\n switch (localUnit) {\n case 'fraction':\n return <PercentageIcon />;\n case 'list':\n return <ListBulletIcon />;\n case 'theme':\n return <ColorWheelIcon />;\n case 'arbitrary':\n return <SliderIcon />;\n default:\n return <TailwindUnitIcon />;\n }\n })();\n\n const openPicker = () => setIsVisible(true);\n\n const renderFractionBody = () => {\n if (!supportsFraction) return null;\n return (\n <ButtonToggleGroup\n options={tailwindUi?.units?.spacing?.fraction?.options || []}\n size=\"small\"\n value={localText}\n className=\"mt-0 w-[200px]\"\n onPressedChange={(v: any) => appendToText(String(v))}\n />\n );\n };\n\n const renderListBody = () => (\n <ButtonToggleGroup\n options={normOptions.map((o: any) => ({\n value: o.value,\n label: o.label,\n }))}\n size=\"small\"\n className=\"mt-0 w-[200px]\"\n value={localText}\n onPressedChange={(v: any) => setValueDirectly(String(v))}\n />\n );\n\n const getCustomCssVariables = useMemo(() => {\n // Extract custom CSS variables from computed styles on the document root\n // WordPress adds custom variables from theme.json as CSS custom properties\n try {\n const rootStyles = window.getComputedStyle(document.documentElement);\n const customVars: any[] = [];\n\n // Get all CSS custom properties from :root\n for (let i = 0; i < rootStyles.length; i++) {\n const propertyName = rootStyles[i];\n // Look for --wp--custom-- prefixed variables\n if (propertyName.startsWith('--wp--custom--')) {\n const value = rootStyles.getPropertyValue(propertyName).trim();\n customVars.push({\n value: propertyName,\n label: `${propertyName} (${value})`,\n });\n }\n }\n\n return customVars;\n } catch (error) {\n return [];\n }\n }, []);\n\n const renderThemeInsert = () => {\n // Get custom CSS variables from theme.json\n const customVars = getCustomCssVariables;\n\n // Build the options list: custom variables + placeholder\n const cssVariableOptions = [\n ...customVars,\n {\n value: '--custom-css-var',\n label: '--custom-css-var',\n },\n ];\n\n return (\n <ButtonToggleGroup\n className=\"mt-0 w-[200px]\"\n options={cssVariableOptions}\n size=\"small\"\n value={localText}\n onPressedChange={(v: any) => setValueDirectly(String(v))}\n />\n );\n };\n\n const renderArbitraryUnitButtons = () => (\n <div className=\"flex gap-2\">\n <ButtonToggleGroup\n className=\"mt-0 w-[200px]\"\n options={CSS_UNITS.map((u) => ({\n value: u.value,\n label: u.value,\n tooltip: u.label,\n }))}\n size=\"small\"\n value={localText}\n onPressedChange={(v: any) => appendToText(String(v))}\n />\n </div>\n );\n\n return (\n <div className=\"relative flex flex-col items-baseline\">\n <InputControl\n __nextHasNoMarginBottom\n className={`w-full ${inputClassName} ${\n !isValidValue(getRawValue(localText)) ? 'border-red-500' : ''\n }`}\n value={localText}\n onChange={handleInputChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n autoComplete=\"off\"\n suffix={\n <InputControlSuffixWrapper>\n <Popover\n offset={10}\n visible={isVisible}\n position=\"bottom left\"\n className=\"overflow-x-hidden w-[280px] max-h-[400px]\"\n onVisibleChange={setIsVisible}\n >\n <div className=\"flex flex-col divide-y divide-border -m-4\">\n {manualRange && (\n <RangeSlider\n value={localText}\n label=\"Number Value\"\n className=\"w-[200px] pt-4 pb-2 px-4\"\n min={rangeMin}\n max={rangeMax}\n gridMode={false}\n showTooltip={false}\n // instantly render changes while sliding\n onValueChange={(v: string) => {\n const newRaw = getRawValue(v);\n if (isValidValue(newRaw)) {\n setLocalText(v);\n setRawValue(newRaw);\n onValueChange(newRaw);\n setLocalUnit(detectUnitFromRawValue(newRaw));\n } else {\n setLocalText(v); // Update local state, but don't emit\n }\n }}\n />\n )}\n {supportsFraction && manualFraction && (\n <div className=\"p-4\">\n <ChapterHeading title=\"Fraction\" />\n {renderFractionBody()}\n </div>\n )}\n {normOptions.length > 0 && manualOptions && (\n <div className=\"p-4\">\n <ChapterHeading title=\"Options\" />\n {renderListBody()}\n </div>\n )}\n {supportsArbitrary && manualArbitrary && (\n <div className=\"p-4\">\n <ChapterHeading title=\"Arbitrary Units\" />\n {renderArbitraryUnitButtons()}\n </div>\n )}\n {supportsTheme && manualCssVars && (\n <div className=\"p-4\">\n <ChapterHeading\n title=\"CSS Variables\"\n help={\n getCustomCssVariables.length === 0\n ? 'Add custom CSS variables to theme.json settings.custom'\n : undefined\n }\n addon={\n <a\n href=\"https://developer.wordpress.org/news/2023/08/adding-and-using-custom-settings-in-theme-json/\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center text-gray-500 hover:text-gray-700 -mt-1\"\n aria-label=\"Learn how to add custom CSS variables to theme.json\"\n >\n <InfoCircledIcon className=\"w-3.5 h-3.5\" />\n </a>\n }\n />\n {renderThemeInsert()}\n </div>\n )}\n </div>\n </Popover>\n <Button\n className=\"!p-0 !min-w-0 !h-6 w-6 inline-flex items-center justify-center\"\n onClick={openPicker}\n aria-label=\"Open units\"\n >\n {CurrentUnitIcon}\n </Button>\n </InputControlSuffixWrapper>\n }\n />\n </div>\n );\n};\n\nexport default MetricsControl;\n","import { Button, Modal as WordpressModal } from '@wordpress/components';\nimport {\n Children,\n createContext,\n isValidElement,\n useContext,\n useEffect,\n useState,\n} from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Cross1 } from '@blockbite/icons';\n\ntype ModalContextType = {\n closeModal: () => void;\n openModal: () => void;\n};\n\nconst ModalContext = createContext<ModalContextType | null>(null);\n\nexport const useModalContext = () => {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error('useModalContext must be used within a ModalProvider');\n }\n return context;\n};\n\ntype ModalProps = {\n children: React.ReactElement | React.ReactElement[];\n\n /** controlled */\n open?: boolean;\n\n /** uncontrolled fallback */\n defaultOpen?: boolean;\n\n onOpenChange?: (open: boolean) => void;\n\n title?: string;\n size?: 'small' | 'medium' | 'large' | 'fill' | 'wide';\n\n /** passthrough props */\n onRequestClose?: () => void;\n shouldCloseOnEsc?: boolean;\n shouldCloseOnClickOutside?: boolean;\n [key: string]: any;\n};\n\n// Keep things simple: we render our own header/content/footer sections.\n\nexport const Modal: React.FC<ModalProps> = ({\n children,\n open,\n defaultOpen = false,\n onOpenChange,\n title = '',\n className,\n size,\n onRequestClose,\n shouldCloseOnEsc = true,\n shouldCloseOnClickOutside = true,\n ...props\n}) => {\n /** Controlled vs uncontrolled logic */\n const isControlled = open !== undefined;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isOpen = isControlled ? open : uncontrolledOpen;\n\n const setOpen = (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n };\n\n const openModal = () => setOpen(true);\n const closeModal = () => {\n onRequestClose?.();\n setOpen(false);\n };\n\n // Detect direct children for aria and footer presence\n const hasModalHeaderChild = Children.toArray(children).some(\n (child) => isValidElement(child) && child.type === ModalHeader\n );\n\n useEffect(() => {\n onOpenChange?.(isOpen);\n }, [isOpen, onOpenChange]);\n\n let ariaProps: Record<string, string> = {};\n if (hasModalHeaderChild) {\n ariaProps = { labelledby: 'bb-modal-heading' };\n } else if (title) {\n ariaProps = { label: title };\n }\n\n return (\n <ModalContext.Provider value={{ closeModal, openModal }}>\n {Children.map(children, (child) =>\n isValidElement(child) && child.type === ModalTrigger ? child : null\n )}\n\n {isOpen && (\n <WordpressModal\n className={classNames(\n 'blockbite-ui__modal',\n size && `is-${size}`,\n className\n )}\n size={size}\n title=\"\" // prevent WP header from rendering\n aria={ariaProps}\n onRequestClose={closeModal}\n shouldCloseOnEsc={shouldCloseOnEsc}\n shouldCloseOnClickOutside={shouldCloseOnClickOutside}\n {...props}\n >\n <div className=\"relative\">\n <div className=\"absolute right-2 top-2 z-10\">\n <Button\n aria-label=\"Close\"\n label=\"Close\"\n variant=\"secondary\"\n onClick={closeModal}\n >\n <Cross1 className=\"h-4 w-4\" />\n </Button>\n </div>\n {Children.map(children, (child) =>\n isValidElement(child) && child.type === ModalHeader ? child : null\n )}\n\n {Children.map(children, (child) =>\n isValidElement(child) && child.type === ModalContent\n ? child\n : null\n )}\n\n {Children.map(children, (child) =>\n isValidElement(child) && child.type === ModalFooter ? child : null\n )}\n </div>\n </WordpressModal>\n )}\n </ModalContext.Provider>\n );\n};\n\n// --- Subcomponents ---\n\nexport const ModalHeader: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n >\n <h2 id=\"bb-modal-heading\" className=\"text-base font-medium\">\n {children}\n </h2>\n </div>\n);\n\nexport const ModalFooter: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames(\n 'border-border fixed bottom-0 left-0 right-0 flex h-[4rem] flex-row items-center justify-end gap-2 border-t bg-white px-4',\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const ModalContent: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className = '', ...props }) => (\n <div\n className={classNames('text-gray-medium px-4 pb-4 text-sm', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nexport const ModalClose: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const { closeModal } = useModalContext();\n return (\n <div onClick={closeModal} className=\"cursor-pointer\">\n {children}\n </div>\n );\n};\n\nexport const ModalTrigger: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const { openModal } = useModalContext();\n return (\n <div onClick={openModal} className=\"cursor-pointer\">\n {children}\n </div>\n );\n};\n","import { createPortal, useEffect, useMemo } from '@wordpress/element';\n\nfunction copyStyles(sourceDoc, targetDoc) {\n Array.from(sourceDoc.styleSheets).forEach((styleSheet: any) => {\n try {\n if (styleSheet.cssRules) {\n const newStyleEl = targetDoc.createElement('style');\n Array.from(styleSheet.cssRules).forEach((cssRule: any) => {\n newStyleEl.appendChild(targetDoc.createTextNode(cssRule.cssText));\n });\n targetDoc.head.appendChild(newStyleEl);\n } else if (styleSheet.href) {\n const newLinkEl = targetDoc.createElement('link');\n newLinkEl.rel = 'stylesheet';\n newLinkEl.href = styleSheet.href;\n targetDoc.head.appendChild(newLinkEl);\n }\n } catch (e) {\n if (styleSheet.href) {\n const newLinkEl = targetDoc.createElement('link');\n newLinkEl.rel = 'stylesheet';\n newLinkEl.href = styleSheet.href;\n targetDoc.head.appendChild(newLinkEl);\n } else {\n // eslint-disable-next-line no-console\n console.warn('Error copying styles:', e);\n }\n }\n });\n}\n\ntype Props = {\n windowInstance: Window;\n onClose: () => void;\n children: React.ReactNode;\n};\n\nexport const NewWindowPortal = ({\n windowInstance,\n onClose,\n children,\n}: Props) => {\n const containerEl = useMemo(() => document.createElement('div'), []);\n\n useEffect(() => {\n const win = windowInstance;\n\n win.document.body.innerHTML = '';\n win.document.body.appendChild(containerEl);\n copyStyles(document, win.document);\n win.document.title = document.title || 'Blockbite Editor';\n\n const handleBeforeUnload = () => {\n setTimeout(onClose, 100);\n };\n\n win.addEventListener('beforeunload', handleBeforeUnload);\n\n return () => {\n win.removeEventListener('beforeunload', handleBeforeUnload);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [windowInstance]);\n\n // Typecasting: https://github.com/vercel/next.js/discussions/64753\n return createPortal(children as any, containerEl);\n};\n","import { Notice as WordpressNotice } from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\ntype NoticeProps = {\n children: React.ReactNode;\n className?: string;\n status?: 'success' | 'error' | 'warning' | 'info';\n isDismissible?: boolean;\n onDismiss?: () => void;\n};\n\nexport const Notice = ({\n children,\n status = 'success',\n className,\n isDismissible = false,\n onDismiss,\n}: NoticeProps) => {\n const [showNotice, setShowNotice] = useState(true);\n\n if (!showNotice) return null;\n\n return (\n <WordpressNotice\n status={status}\n className={classNames(className)}\n onRemove={() => setShowNotice(false)}\n isDismissible={isDismissible}\n onDismiss={onDismiss}\n >\n {children}\n </WordpressNotice>\n );\n};\n","import {\n Button,\n __experimentalInputControl as InputControl,\n __experimentalInputControlSuffixWrapper as InputControlSuffixWrapper,\n} from '@wordpress/components';\nimport { useState } from '@wordpress/element';\nimport { Path, SVG } from '@wordpress/primitives';\n\ntype PasswordInputProps = {\n label: string;\n value: string;\n onChange: (value: string) => void;\n [key: string]: any;\n};\n\nexport const PasswordInput = ({\n label,\n value,\n onChange,\n ...rest\n}: PasswordInputProps) => {\n const [showPassword, setShowPassword] = useState(false);\n\n return (\n <InputControl\n label={label}\n value={value}\n type={showPassword ? 'text' : 'password'}\n suffix={\n <InputControlSuffixWrapper variant=\"control\">\n <Button\n icon={\n <SVG viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <Path\n d={\n showPassword\n ? 'M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z'\n : 'M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z'\n }\n />\n </SVG>\n }\n label=\"Show password\"\n onClick={() => setShowPassword((prev) => !prev)}\n size=\"small\"\n />\n </InputControlSuffixWrapper>\n }\n onChange={onChange}\n {...rest}\n />\n );\n};\n","export type ProjectItem = {\n id: string | number;\n name: string;\n description: string;\n};\n\ntype Props = {\n items: ProjectItem[];\n activeId: string | number;\n onSelect: (id: string | number) => void;\n};\n\nexport const ProjectsNavigation = ({ items, activeId, onSelect }: Props) => {\n return (\n <div className=\"w-70 max-h-100 overflow-y-auto\">\n {items.map((item) => (\n <div\n key={item.id}\n onClick={() => onSelect(item.id)}\n className={`cursor-pointer p-3 border-l-4 flex gap-3 items-center hover:bg-gray-50 ${\n activeId === item.id ? 'border-wp bg-white' : 'border-transparent'\n }`}\n >\n <span className=\" bg-border w-10 h-10 flex items-center justify-center text-lg font-bold text-white shrink-0\">\n {item.name.charAt(0).toUpperCase()}\n </span>\n <div className=\"flex flex-col min-w-0\">\n <p className=\"text-sm font-medium truncate my-0! py-0!\">\n {item.name}\n </p>\n {item.description && (\n <p className=\"text-xs text-gray-500 truncate my-0! py-0!\">\n {item.description}\n </p>\n )}\n </div>\n </div>\n ))}\n </div>\n );\n};\n","export function ResponsiveImage(props) {\n const { media, bbFill } = props;\n const { url, alt, sizes } = media;\n\n if (sizes === undefined) {\n return (\n <picture className=\"b_fill\">\n <img src={url} alt={alt} className={`b_media ${bbFill}`} />\n </picture>\n );\n }\n\n const { thumbnail, medium, large } = sizes;\n const thumbnailImg = thumbnail || url;\n const mediumImg = medium || url;\n const largeImg = large || url;\n\n return (\n <picture className=\"b_fill\">\n {thumbnailImg ? (\n <source\n media=\"(max-width: 768px)\"\n srcSet={thumbnailImg}\n className={`b_media ${bbFill}`}\n />\n ) : null}\n {mediumImg ? (\n <source\n media=\"(min-width: 1024px)\"\n srcSet={mediumImg}\n className={`b_media ${bbFill}`}\n />\n ) : null}\n {largeImg ? (\n <source\n media=\"(min-width: 1536px)\"\n srcSet={largeImg}\n className={`b_media ${bbFill}`}\n />\n ) : null}\n {mediumImg ? (\n <img src={mediumImg} alt={alt} className={`b_media ${bbFill}`} />\n ) : null}\n </picture>\n );\n}\n","export function ResponsiveVideo(props: any) {\n const { media, bbFill } = props;\n const { url } = media;\n\n const videoUrl = url;\n\n return (\n <video\n className={`b_fill ${bbFill}`}\n preload=\"none\"\n playsInline\n controls\n autoPlay\n muted\n loop\n >\n <source src={videoUrl} type=\"video/mp4\" />\n </video>\n );\n}\n","import { Check } from '@blockbite/icons';\nimport { Button as WordpressButton } from '@wordpress/components';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\nimport { Icon } from './Icon.js';\n\ntype SaveButtonProps = {\n children?: React.ReactNode;\n asChild?: boolean;\n className?: string;\n display?: 'icon' | 'icon-lg' | 'label' | 'auto' | '' | null;\n onClick?: () => void | Promise<void>;\n label?: string;\n savedLabel?: string;\n savedDuration?: number;\n size?: 'small' | 'default' | 'compact';\n variant?: 'primary' | 'secondary' | 'link' | 'primary' | 'tertiary';\n icon?: any;\n disabled?: boolean;\n} & Omit<React.ComponentProps<typeof WordpressButton>, 'onClick' | 'size'>;\n\nconst DEFAULT_SAVED_DURATION = 2000;\n\nexport const SaveButton = ({\n children,\n size = 'default',\n label,\n className,\n onClick,\n variant = 'primary',\n display = 'auto',\n icon,\n disabled = false,\n savedLabel = 'Saved',\n savedDuration = DEFAULT_SAVED_DURATION,\n ...buttonProps\n}: SaveButtonProps) => {\n const [isSaving, setIsSaving] = useState(false);\n const [showSaved, setShowSaved] = useState(false);\n const timeoutRef = useRef<number | null>(null);\n const isIconDisplay = display === 'icon' || display === 'icon-lg';\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const handleClick = async () => {\n if (disabled || isSaving) return;\n\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n }\n\n setShowSaved(false);\n setIsSaving(true);\n\n try {\n await Promise.resolve(onClick?.());\n setIsSaving(false);\n setShowSaved(true);\n timeoutRef.current = window.setTimeout(() => {\n setShowSaved(false);\n }, savedDuration);\n } catch (error) {\n setIsSaving(false);\n }\n };\n\n const currentLabel = showSaved ? savedLabel : label;\n const currentIcon = showSaved ? Check : icon;\n\n return (\n <WordpressButton\n {...buttonProps}\n size={size}\n variant={variant}\n label={currentLabel}\n showTooltip={true}\n disabled={disabled || isSaving}\n isBusy={isSaving}\n className={classNames(\n className,\n 'blockbite-ui__button',\n 'flex items-center justify-center gap-1',\n { 'is-primary': variant === 'primary' },\n { 'is-secondary': variant === 'secondary' },\n { 'is-link': variant === 'link' },\n { 'is-tertiary': variant === 'tertiary' },\n { 'is-icon': display === 'icon' }\n )}\n onClick={handleClick}\n >\n {currentIcon && (\n <Icon\n icon={currentIcon}\n className={classNames({ 'h-4 w-4': display === 'icon-lg' })}\n />\n )}\n {!isIconDisplay ? (showSaved ? savedLabel : children) : null}\n {currentLabel && !children && !isIconDisplay ? (\n <span>{currentLabel}</span>\n ) : null}\n </WordpressButton>\n );\n};\n","import classNames from 'classnames';\nimport { Wrap } from './Wrap.js';\n\ntype ScrollListProps = {\n children: React.ReactNode;\n className?: string;\n height?: 'small' | 'medium' | 'large';\n};\n\nexport const ScrollList: React.FC<ScrollListProps> = ({\n children,\n className = '',\n height = 'large',\n}) => (\n <Wrap\n className={classNames('scrollbar relative overflow-y-scroll', className, {\n 'h-[400px]': height === 'large',\n 'h-[300px]': height === 'medium',\n 'h-[200px]': height === 'small',\n })}\n >\n {children}\n </Wrap>\n);\n","import { createBlock } from '@wordpress/blocks';\nimport { Button } from '@wordpress/components';\n\nconst { select, dispatch } = wp.data;\n\ninterface SingleBlockTypeAppenderProps {\n buttonText?: string;\n}\n\nexport const SingleBlockTypeAppender = ({\n buttonText = 'Add block',\n}: SingleBlockTypeAppenderProps) => {\n const addLastDuplicate = () => {\n // Get the current block\n const currentBlock = select('core/block-editor').getSelectedBlock();\n const { clientId, innerBlocks } = currentBlock;\n\n // get the last block\n const lastBlock = innerBlocks[innerBlocks.length - 1];\n // duplicate the last block\n const newBlock = createBlock(\n lastBlock.name,\n lastBlock.attributes,\n lastBlock.innerBlocks\n );\n\n dispatch('core/block-editor').insertBlocks(newBlock, 0, clientId);\n };\n\n return (\n <Button variant=\"primary\" onClick={() => addLastDuplicate()}>\n {buttonText}\n </Button>\n );\n};\n","import { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype SlideInProps = {\n children: React.ReactNode;\n className?: string;\n watch?: any;\n};\n\nexport const SlideIn = ({ children, watch, className }: SlideInProps) => {\n const [slide, setSlide] = useState(0);\n\n useEffect(() => {\n setTimeout(() => {\n setSlide(1);\n }, 250);\n }, [watch]);\n\n return (\n <Wrap\n className={classNames(\n className,\n 'duration-50 transform transition-all ease-in-out',\n {\n 'translate-x-0': slide === 1,\n '-translate-x-full': slide === 0,\n }\n )}\n >\n {children}\n </Wrap>\n );\n};\n","import { Spinner as WordpressSpinner } from '@wordpress/components';\n\ntype SpinnerProps = {\n [x: string]: any;\n};\n\nexport const Spinner = ({ ...props }: SpinnerProps) => {\n return <WordpressSpinner {...props} />;\n};\n","function Ne() {\n return Ne = Object.assign ? Object.assign.bind() : function(t) {\n for (var e = 1; e < arguments.length; e++) {\n var n = arguments[e];\n for (var i in n) ({}).hasOwnProperty.call(n, i) && (t[i] = n[i]);\n }\n return t;\n }, Ne.apply(null, arguments);\n}\nvar et = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : typeof global < \"u\" ? global : typeof self < \"u\" ? self : {};\nfunction Ke(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar en, tn = {\n exports: {}\n};\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar Rt, nn, rn, Ei = (en || (en = 1, Rt = tn, (function() {\n var t = {}.hasOwnProperty;\n function e() {\n for (var r = \"\", s = 0; s < arguments.length; s++) {\n var l = arguments[s];\n l && (r = i(r, n(l)));\n }\n return r;\n }\n function n(r) {\n if (typeof r == \"string\" || typeof r == \"number\") return r;\n if (typeof r != \"object\") return \"\";\n if (Array.isArray(r)) return e.apply(null, r);\n if (r.toString !== Object.prototype.toString && !r.toString.toString().includes(\"[native code]\")) return r.toString();\n var s = \"\";\n for (var l in r) t.call(r, l) && r[l] && (s = i(s, l));\n return s;\n }\n function i(r, s) {\n return s ? r ? r + \" \" + s : r + s : r;\n }\n Rt.exports ? (e.default = e, Rt.exports = e) : window.classNames = e;\n})()), tn.exports), Mt = Ke(Ei), sn, on, Ci = (rn || (rn = 1, nn = function t(e, n) {\n if (e === n) return !0;\n if (e && n && typeof e == \"object\" && typeof n == \"object\") {\n if (e.constructor !== n.constructor) return !1;\n var i, r, s;\n if (Array.isArray(e)) {\n if ((i = e.length) != n.length) return !1;\n for (r = i; r-- !== 0; ) if (!t(e[r], n[r])) return !1;\n return !0;\n }\n if (e instanceof Map && n instanceof Map) {\n if (e.size !== n.size) return !1;\n for (r of e.entries()) if (!n.has(r[0])) return !1;\n for (r of e.entries()) if (!t(r[1], n.get(r[0]))) return !1;\n return !0;\n }\n if (e instanceof Set && n instanceof Set) {\n if (e.size !== n.size) return !1;\n for (r of e.entries()) if (!n.has(r[0])) return !1;\n return !0;\n }\n if (ArrayBuffer.isView(e) && ArrayBuffer.isView(n)) {\n if ((i = e.length) != n.length) return !1;\n for (r = i; r-- !== 0; ) if (e[r] !== n[r]) return !1;\n return !0;\n }\n if (e.constructor === RegExp) return e.source === n.source && e.flags === n.flags;\n if (e.valueOf !== Object.prototype.valueOf) return e.valueOf() === n.valueOf();\n if (e.toString !== Object.prototype.toString) return e.toString() === n.toString();\n if ((i = (s = Object.keys(e)).length) !== Object.keys(n).length) return !1;\n for (r = i; r-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(n, s[r])) return !1;\n for (r = i; r-- !== 0; ) {\n var l = s[r];\n if (!t(e[l], n[l])) return !1;\n }\n return !0;\n }\n return e != e && n != n;\n}), nn), _i = Ke(Ci), an, ln, ae = Ke((function() {\n if (on) return sn;\n on = 1;\n var t = /^\\s+|\\s+$/g, e = /^[-+]0x[0-9a-f]+$/i, n = /^0b[01]+$/i, i = /^0o[0-7]+$/i, r = parseInt, s = Object.prototype.toString;\n function l(o) {\n var c = typeof o;\n return !!o && (c == \"object\" || c == \"function\");\n }\n function a(o) {\n if (typeof o == \"number\") return o;\n if ((function(u) {\n return typeof u == \"symbol\" || /* @__PURE__ */ (function(f) {\n return !!f && typeof f == \"object\";\n })(u) && s.call(u) == \"[object Symbol]\";\n })(o)) return NaN;\n if (l(o)) {\n var c = typeof o.valueOf == \"function\" ? o.valueOf() : o;\n o = l(c) ? c + \"\" : c;\n }\n if (typeof o != \"string\") return o === 0 ? o : +o;\n o = o.replace(t, \"\");\n var d = n.test(o);\n return d || i.test(o) ? r(o.slice(2), d ? 2 : 8) : e.test(o) ? NaN : +o;\n }\n return sn = function(o, c, d) {\n return d === void 0 && (d = c, c = void 0), d !== void 0 && (d = (d = a(d)) == d ? d : 0), c !== void 0 && (c = (c = a(c)) == c ? c : 0), (function(u, f, h) {\n return u == u && (h !== void 0 && (u = u <= h ? u : h), f !== void 0 && (u = u >= f ? u : f)), u;\n })(a(o), c, d);\n };\n})()), Oi = Ke((function() {\n if (ln) return an;\n ln = 1;\n var t = /^\\s+|\\s+$/g, e = /^[-+]0x[0-9a-f]+$/i, n = /^0b[01]+$/i, i = /^0o[0-7]+$/i, r = parseInt, s = typeof et == \"object\" && et && et.Object === Object && et, l = typeof self == \"object\" && self && self.Object === Object && self, a = s || l || Function(\"return this\")(), o = Object.prototype.toString, c = Math.max, d = Math.min, u = function() {\n return a.Date.now();\n };\n function f(v) {\n var p = typeof v;\n return !!v && (p == \"object\" || p == \"function\");\n }\n function h(v) {\n if (typeof v == \"number\") return v;\n if ((function(g) {\n return typeof g == \"symbol\" || /* @__PURE__ */ (function(b) {\n return !!b && typeof b == \"object\";\n })(g) && o.call(g) == \"[object Symbol]\";\n })(v)) return NaN;\n if (f(v)) {\n var p = typeof v.valueOf == \"function\" ? v.valueOf() : v;\n v = f(p) ? p + \"\" : p;\n }\n if (typeof v != \"string\") return v === 0 ? v : +v;\n v = v.replace(t, \"\");\n var w = n.test(v);\n return w || i.test(v) ? r(v.slice(2), w ? 2 : 8) : e.test(v) ? NaN : +v;\n }\n return an = function(v, p, w) {\n var g, b, y, S, x, z, m = 0, R = !1, _ = !1, N = !0;\n if (typeof v != \"function\") throw new TypeError(\"Expected a function\");\n function T(V) {\n var M = g, j = b;\n return g = b = void 0, m = V, S = v.apply(j, M);\n }\n function O(V) {\n var M = V - z;\n return z === void 0 || M >= p || M < 0 || _ && V - m >= y;\n }\n function E() {\n var V = u();\n if (O(V)) return P(V);\n x = setTimeout(E, (function(M) {\n var j = p - (M - z);\n return _ ? d(j, y - (M - m)) : j;\n })(V));\n }\n function P(V) {\n return x = void 0, N && g ? T(V) : (g = b = void 0, S);\n }\n function A() {\n var V = u(), M = O(V);\n if (g = arguments, b = this, z = V, M) {\n if (x === void 0) return (function(j) {\n return m = j, x = setTimeout(E, p), R ? T(j) : S;\n })(z);\n if (_) return x = setTimeout(E, p), T(z);\n }\n return x === void 0 && (x = setTimeout(E, p)), S;\n }\n return p = h(p) || 0, f(w) && (R = !!w.leading, y = (_ = \"maxWait\" in w) ? c(h(w.maxWait) || 0, p) : y, N = \"trailing\" in w ? !!w.trailing : N), A.cancel = function() {\n x !== void 0 && clearTimeout(x), m = 0, g = z = b = x = void 0;\n }, A.flush = function() {\n return x === void 0 ? S : P(u());\n }, A;\n };\n})()), cn = {\n width: void 0,\n height: void 0\n};\nfunction Ni(t) {\n const {\n ref: e,\n box: n = \"content-box\"\n } = t, [{\n width: i,\n height: r\n }, s] = window.React.useState(cn), l = (function() {\n const c = window.React.useRef(!1);\n return window.React.useEffect(() => (c.current = !0, () => {\n c.current = !1;\n }), []), window.React.useCallback(() => c.current, []);\n })(), a = window.React.useRef(Ne({}, cn)), o = window.React.useRef(void 0);\n return o.current = t.onResize, window.React.useEffect(() => {\n if (!e.current || typeof window > \"u\" || !(\"ResizeObserver\" in window)) return;\n const c = new ResizeObserver(([d]) => {\n const u = n === \"border-box\" ? \"borderBoxSize\" : n === \"device-pixel-content-box\" ? \"devicePixelContentBoxSize\" : \"contentBoxSize\", f = un(d, u, \"inlineSize\"), h = un(d, u, \"blockSize\");\n if (a.current.width !== f || a.current.height !== h) {\n const v = {\n width: f,\n height: h\n };\n a.current.width = f, a.current.height = h, o.current ? o.current(v) : l() && s(v);\n }\n });\n return c.observe(e.current, {\n box: n\n }), () => {\n c.disconnect();\n };\n }, [n, e, l]), {\n width: i,\n height: r\n };\n}\nfunction un(t, e, n) {\n return t[e] ? Array.isArray(t[e]) ? t[e][0][n] : t[e][n] : e === \"contentBoxSize\" ? t.contentRect[n === \"inlineSize\" ? \"width\" : \"height\"] : void 0;\n}\nvar Mi = \"allotment-module_splitView__L-yRc\", Ai = \"allotment-module_sashContainer__fzwJF\", Li = \"allotment-module_splitViewContainer__rQnVa\", Pn = \"allotment-module_splitViewView__MGZ6O\", Ti = \"allotment-module_vertical__WSwwa\", Vi = \"allotment-module_horizontal__7doS8\", Pi = \"allotment-module_separatorBorder__x-rDS\";\nlet Fe, kn = !1, jn = !1;\ntypeof navigator == \"object\" && (Fe = navigator.userAgent, jn = Fe.indexOf(\"Macintosh\") >= 0, kn = (Fe.indexOf(\"Macintosh\") >= 0 || Fe.indexOf(\"iPad\") >= 0 || Fe.indexOf(\"iPhone\") >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0);\nconst Fn = kn, ki = jn, dn = typeof window < \"u\" && window.document !== void 0 && window.document.createElement !== void 0 ? window.React.useLayoutEffect : window.React.useEffect;\nclass ji {\n constructor() {\n this._size = void 0;\n }\n getSize() {\n return this._size;\n }\n setSize(e) {\n this._size = e;\n }\n}\nfunction tt(t, e) {\n const n = t.length, i = n - e.length;\n return i >= 0 && t.slice(i, n) === e;\n}\nvar fn, hn = {\n exports: {}\n}, Fi = (fn || (fn = 1, (function(t) {\n var e = Object.prototype.hasOwnProperty, n = \"~\";\n function i() {\n }\n function r(o, c, d) {\n this.fn = o, this.context = c, this.once = d || !1;\n }\n function s(o, c, d, u, f) {\n if (typeof d != \"function\") throw new TypeError(\"The listener must be a function\");\n var h = new r(d, u || o, f), v = n ? n + c : c;\n return o._events[v] ? o._events[v].fn ? o._events[v] = [o._events[v], h] : o._events[v].push(h) : (o._events[v] = h, o._eventsCount++), o;\n }\n function l(o, c) {\n --o._eventsCount === 0 ? o._events = new i() : delete o._events[c];\n }\n function a() {\n this._events = new i(), this._eventsCount = 0;\n }\n Object.create && (i.prototype = /* @__PURE__ */ Object.create(null), new i().__proto__ || (n = !1)), a.prototype.eventNames = function() {\n var o, c, d = [];\n if (this._eventsCount === 0) return d;\n for (c in o = this._events) e.call(o, c) && d.push(n ? c.slice(1) : c);\n return Object.getOwnPropertySymbols ? d.concat(Object.getOwnPropertySymbols(o)) : d;\n }, a.prototype.listeners = function(o) {\n var c = n ? n + o : o, d = this._events[c];\n if (!d) return [];\n if (d.fn) return [d.fn];\n for (var u = 0, f = d.length, h = new Array(f); u < f; u++) h[u] = d[u].fn;\n return h;\n }, a.prototype.listenerCount = function(o) {\n var c = n ? n + o : o, d = this._events[c];\n return d ? d.fn ? 1 : d.length : 0;\n }, a.prototype.emit = function(o, c, d, u, f, h) {\n var v = n ? n + o : o;\n if (!this._events[v]) return !1;\n var p, w, g = this._events[v], b = arguments.length;\n if (g.fn) {\n switch (g.once && this.removeListener(o, g.fn, void 0, !0), b) {\n case 1:\n return g.fn.call(g.context), !0;\n case 2:\n return g.fn.call(g.context, c), !0;\n case 3:\n return g.fn.call(g.context, c, d), !0;\n case 4:\n return g.fn.call(g.context, c, d, u), !0;\n case 5:\n return g.fn.call(g.context, c, d, u, f), !0;\n case 6:\n return g.fn.call(g.context, c, d, u, f, h), !0;\n }\n for (w = 1, p = new Array(b - 1); w < b; w++) p[w - 1] = arguments[w];\n g.fn.apply(g.context, p);\n } else {\n var y, S = g.length;\n for (w = 0; w < S; w++) switch (g[w].once && this.removeListener(o, g[w].fn, void 0, !0), b) {\n case 1:\n g[w].fn.call(g[w].context);\n break;\n case 2:\n g[w].fn.call(g[w].context, c);\n break;\n case 3:\n g[w].fn.call(g[w].context, c, d);\n break;\n case 4:\n g[w].fn.call(g[w].context, c, d, u);\n break;\n default:\n if (!p) for (y = 1, p = new Array(b - 1); y < b; y++) p[y - 1] = arguments[y];\n g[w].fn.apply(g[w].context, p);\n }\n }\n return !0;\n }, a.prototype.on = function(o, c, d) {\n return s(this, o, c, d, !1);\n }, a.prototype.once = function(o, c, d) {\n return s(this, o, c, d, !0);\n }, a.prototype.removeListener = function(o, c, d, u) {\n var f = n ? n + o : o;\n if (!this._events[f]) return this;\n if (!c) return l(this, f), this;\n var h = this._events[f];\n if (h.fn) h.fn !== c || u && !h.once || d && h.context !== d || l(this, f);\n else {\n for (var v = 0, p = [], w = h.length; v < w; v++) (h[v].fn !== c || u && !h[v].once || d && h[v].context !== d) && p.push(h[v]);\n p.length ? this._events[f] = p.length === 1 ? p[0] : p : l(this, f);\n }\n return this;\n }, a.prototype.removeAllListeners = function(o) {\n var c;\n return o ? (c = n ? n + o : o, this._events[c] && l(this, c)) : (this._events = new i(), this._eventsCount = 0), this;\n }, a.prototype.off = a.prototype.removeListener, a.prototype.addListener = a.prototype.on, a.prefixed = n, a.EventEmitter = a, t.exports = a;\n})(hn)), hn.exports), Vt = Ke(Fi);\nfunction vn(t, e) {\n const n = t.indexOf(e);\n n > -1 && (t.splice(n, 1), t.unshift(e));\n}\nfunction xt(t, e) {\n const n = t.indexOf(e);\n n > -1 && (t.splice(n, 1), t.push(e));\n}\nfunction ne(t, e, n = 1) {\n const i = Math.max(0, Math.ceil((e - t) / n)), r = new Array(i);\n let s = -1;\n for (; ++s < i; ) r[s] = t + s * n;\n return r;\n}\nvar Bi = \"sash-module_sash__K-9lB\", $i = \"sash-module_disabled__Hm-wx\", Yi = \"sash-module_mac__Jf6OJ\", pn = \"sash-module_vertical__pB-rs\", Hi = \"sash-module_minimum__-UKxp\", Xi = \"sash-module_maximum__TCWxD\", wn = \"sash-module_horizontal__kFbiw\", zt = \"sash-module_hover__80W6I\", Dt = \"sash-module_active__bJspD\";\nlet se = (function(t) {\n return t.Vertical = \"VERTICAL\", t.Horizontal = \"HORIZONTAL\", t;\n})({}), ee = (function(t) {\n return t.Disabled = \"DISABLED\", t.Minimum = \"MINIMUM\", t.Maximum = \"MAXIMUM\", t.Enabled = \"ENABLED\", t;\n})({}), Bn = Fn ? 20 : 8;\nconst $n = new Vt();\nclass mn extends Vt {\n get state() {\n return this._state;\n }\n set state(e) {\n this._state !== e && (this.el.classList.toggle($i, e === ee.Disabled), this.el.classList.toggle(\"sash-disabled\", e === ee.Disabled), this.el.classList.toggle(Hi, e === ee.Minimum), this.el.classList.toggle(\"sash-minimum\", e === ee.Minimum), this.el.classList.toggle(Xi, e === ee.Maximum), this.el.classList.toggle(\"sash-maximum\", e === ee.Maximum), this._state = e, this.emit(\"enablementChange\", e));\n }\n constructor(e, n, i) {\n var r;\n super(), this.el = void 0, this.layoutProvider = void 0, this.orientation = void 0, this.size = void 0, this.hoverDelay = 300, this.hoverDelayer = Oi((s) => s.classList.add(\"sash-hover\", zt), this.hoverDelay), this._state = ee.Enabled, this.onPointerStart = (s) => {\n const l = s.pageX, a = s.pageY, o = {\n startX: l,\n currentX: l,\n startY: a,\n currentY: a\n };\n this.el.classList.add(\"sash-active\", Dt), this.emit(\"start\", o), this.el.setPointerCapture(s.pointerId);\n const c = (u) => {\n u.preventDefault();\n const f = {\n startX: l,\n currentX: u.pageX,\n startY: a,\n currentY: u.pageY\n };\n this.emit(\"change\", f);\n }, d = (u) => {\n u.preventDefault(), this.el.classList.remove(\"sash-active\", Dt), this.hoverDelayer.cancel(), this.emit(\"end\"), this.el.releasePointerCapture(u.pointerId), window.removeEventListener(\"pointermove\", c), window.removeEventListener(\"pointerup\", d);\n };\n window.addEventListener(\"pointermove\", c), window.addEventListener(\"pointerup\", d);\n }, this.onPointerDoublePress = () => {\n this.emit(\"reset\");\n }, this.onMouseEnter = () => {\n this.el.classList.contains(Dt) ? (this.hoverDelayer.cancel(), this.el.classList.add(\"sash-hover\", zt)) : this.hoverDelayer(this.el);\n }, this.onMouseLeave = () => {\n this.hoverDelayer.cancel(), this.el.classList.remove(\"sash-hover\", zt);\n }, this.el = document.createElement(\"div\"), this.el.classList.add(\"sash\", Bi), this.el.dataset.testid = \"sash\", e.append(this.el), ki && this.el.classList.add(\"sash-mac\", Yi), this.el.addEventListener(\"pointerdown\", this.onPointerStart), this.el.addEventListener(\"dblclick\", this.onPointerDoublePress), this.el.addEventListener(\"mouseenter\", this.onMouseEnter), this.el.addEventListener(\"mouseleave\", this.onMouseLeave), typeof i.size == \"number\" ? (this.size = i.size, i.orientation === se.Vertical ? this.el.style.width = `${this.size}px` : this.el.style.height = `${this.size}px`) : (this.size = Bn, $n.on(\"onDidChangeGlobalSize\", (s) => {\n this.size = s, this.layout();\n })), this.layoutProvider = n, this.orientation = (r = i.orientation) != null ? r : se.Vertical, this.orientation === se.Horizontal ? (this.el.classList.add(\"sash-horizontal\", wn), this.el.classList.remove(\"sash-vertical\", pn)) : (this.el.classList.remove(\"sash-horizontal\", wn), this.el.classList.add(\"sash-vertical\", pn)), this.layout();\n }\n layout() {\n if (this.orientation === se.Vertical) {\n const e = this.layoutProvider;\n this.el.style.left = e.getVerticalSashLeft(this) - this.size / 2 + \"px\", e.getVerticalSashTop && (this.el.style.top = e.getVerticalSashTop(this) + \"px\"), e.getVerticalSashHeight && (this.el.style.height = e.getVerticalSashHeight(this) + \"px\");\n } else {\n const e = this.layoutProvider;\n this.el.style.top = e.getHorizontalSashTop(this) - this.size / 2 + \"px\", e.getHorizontalSashLeft && (this.el.style.left = e.getHorizontalSashLeft(this) + \"px\"), e.getHorizontalSashWidth && (this.el.style.width = e.getHorizontalSashWidth(this) + \"px\");\n }\n }\n dispose() {\n this.el.removeEventListener(\"pointerdown\", this.onPointerStart), this.el.removeEventListener(\"dblclick\", this.onPointerDoublePress), this.el.removeEventListener(\"mouseenter\", this.onMouseEnter), this.el.removeEventListener(\"mouseleave\", () => this.onMouseLeave), this.el.remove();\n }\n}\nlet ot;\nvar It;\n(It = ot || (ot = {})).Distribute = {\n type: \"distribute\"\n}, It.Split = function(t) {\n return {\n type: \"split\",\n index: t\n };\n}, It.Invisible = function(t) {\n return {\n type: \"invisible\",\n cachedVisibleSize: t\n };\n};\nlet ie = (function(t) {\n return t.Normal = \"NORMAL\", t.Low = \"LOW\", t.High = \"HIGH\", t;\n})({});\nclass Yn {\n constructor(e, n, i) {\n this.container = void 0, this.view = void 0, this._size = void 0, this._cachedVisibleSize = void 0, this.container = e, this.view = n, this.container.classList.add(\"split-view-view\", Pn), this.container.dataset.testid = \"split-view-view\", typeof i == \"number\" ? (this._size = i, this._cachedVisibleSize = void 0, e.classList.add(\"split-view-view-visible\")) : (this._size = 0, this._cachedVisibleSize = i.cachedVisibleSize);\n }\n set size(e) {\n this._size = e;\n }\n get size() {\n return this._size;\n }\n get priority() {\n return this.view.priority;\n }\n get snap() {\n return !!this.view.snap;\n }\n get cachedVisibleSize() {\n return this._cachedVisibleSize;\n }\n get visible() {\n return this._cachedVisibleSize === void 0;\n }\n setVisible(e, n) {\n e !== this.visible && (e ? (this.size = ae(this._cachedVisibleSize, this.viewMinimumSize, this.viewMaximumSize), this._cachedVisibleSize = void 0) : (this._cachedVisibleSize = typeof n == \"number\" ? n : this.size, this.size = 0), this.container.classList.toggle(\"split-view-view-visible\", e), this.view.setVisible && this.view.setVisible(e));\n }\n get minimumSize() {\n return this.visible ? this.view.minimumSize : 0;\n }\n get viewMinimumSize() {\n return this.view.minimumSize;\n }\n get maximumSize() {\n return this.visible ? this.view.maximumSize : 0;\n }\n get viewMaximumSize() {\n return this.view.maximumSize;\n }\n set enabled(e) {\n this.container.style.pointerEvents = e ? \"\" : \"none\";\n }\n layout(e) {\n this.layoutContainer(e), this.view.layout(this.size, e);\n }\n}\nclass Wi extends Yn {\n layoutContainer(e) {\n this.container.style.left = `${e}px`, this.container.style.width = `${this.size}px`;\n }\n}\nclass Ki extends Yn {\n layoutContainer(e) {\n this.container.style.top = `${e}px`, this.container.style.height = `${this.size}px`;\n }\n}\nclass Ui extends Vt {\n get startSnappingEnabled() {\n return this._startSnappingEnabled;\n }\n set startSnappingEnabled(e) {\n this._startSnappingEnabled !== e && (this._startSnappingEnabled = e, this.updateSashEnablement());\n }\n get endSnappingEnabled() {\n return this._endSnappingEnabled;\n }\n set endSnappingEnabled(e) {\n this._endSnappingEnabled !== e && (this._endSnappingEnabled = e, this.updateSashEnablement());\n }\n constructor(e, n = {}, i, r, s) {\n var l, a;\n if (super(), this.onDidChange = void 0, this.onDidDragStart = void 0, this.onDidDragEnd = void 0, this.orientation = void 0, this.sashContainer = void 0, this.size = 0, this.contentSize = 0, this.proportions = void 0, this.viewItems = [], this.sashItems = [], this.sashDragState = void 0, this.proportionalLayout = void 0, this.getSashOrthogonalSize = void 0, this._startSnappingEnabled = !0, this._endSnappingEnabled = !0, this.onSashEnd = (o) => {\n this.emit(\"sashchange\", o), this.saveProportions();\n for (const c of this.viewItems) c.enabled = !0;\n }, this.orientation = (l = n.orientation) != null ? l : se.Vertical, this.proportionalLayout = (a = n.proportionalLayout) != null ? a : !0, this.getSashOrthogonalSize = n.getSashOrthogonalSize, i && (this.onDidChange = i), r && (this.onDidDragStart = r), s && (this.onDidDragEnd = s), this.sashContainer = document.createElement(\"div\"), this.sashContainer.classList.add(\"sash-container\", Ai), e.prepend(this.sashContainer), n.descriptor) {\n this.size = n.descriptor.size;\n for (const [o, c] of n.descriptor.views.entries()) {\n const d = c.size, u = c.container, f = c.view;\n this.addView(u, f, d, o, !0);\n }\n this.contentSize = this.viewItems.reduce((o, c) => o + c.size, 0), this.saveProportions();\n }\n }\n addView(e, n, i, r = this.viewItems.length, s) {\n let l;\n l = typeof i == \"number\" ? i : i.type === \"split\" ? this.getViewSize(i.index) / 2 : i.type === \"invisible\" ? {\n cachedVisibleSize: i.cachedVisibleSize\n } : n.minimumSize;\n const a = this.orientation === se.Vertical ? new Ki(e, n, l) : new Wi(e, n, l);\n if (this.viewItems.splice(r, 0, a), this.viewItems.length > 1) {\n const o = this.orientation === se.Vertical ? new mn(this.sashContainer, {\n getHorizontalSashTop: (u) => this.getSashPosition(u),\n getHorizontalSashWidth: this.getSashOrthogonalSize\n }, {\n orientation: se.Horizontal\n }) : new mn(this.sashContainer, {\n getVerticalSashLeft: (u) => this.getSashPosition(u),\n getVerticalSashHeight: this.getSashOrthogonalSize\n }, {\n orientation: se.Vertical\n }), c = this.orientation === se.Vertical ? (u) => ({\n sash: o,\n start: u.startY,\n current: u.currentY\n }) : (u) => ({\n sash: o,\n start: u.startX,\n current: u.currentX\n });\n o.on(\"start\", (u) => {\n var f;\n this.emit(\"sashDragStart\"), this.onSashStart(c(u));\n const h = this.viewItems.map((v) => v.size);\n (f = this.onDidDragStart) == null || f.call(this, h);\n }), o.on(\"change\", (u) => this.onSashChange(c(u))), o.on(\"end\", () => {\n var u;\n this.emit(\"sashDragEnd\"), this.onSashEnd(this.sashItems.findIndex((h) => h.sash === o));\n const f = this.viewItems.map((h) => h.size);\n (u = this.onDidDragEnd) == null || u.call(this, f);\n }), o.on(\"reset\", () => {\n const u = this.sashItems.findIndex((w) => w.sash === o), f = ne(u, -1, -1), h = ne(u + 1, this.viewItems.length), v = this.findFirstSnapIndex(f), p = this.findFirstSnapIndex(h);\n (typeof v != \"number\" || this.viewItems[v].visible) && (typeof p != \"number\" || this.viewItems[p].visible) && this.emit(\"sashreset\", u);\n });\n const d = {\n sash: o\n };\n this.sashItems.splice(r - 1, 0, d);\n }\n s || this.relayout(), s || typeof i == \"number\" || i.type !== \"distribute\" || this.distributeViewSizes();\n }\n removeView(e, n) {\n if (e < 0 || e >= this.viewItems.length) throw new Error(\"Index out of bounds\");\n const i = this.viewItems.splice(e, 1)[0].view;\n if (this.viewItems.length >= 1) {\n const r = Math.max(e - 1, 0);\n this.sashItems.splice(r, 1)[0].sash.dispose();\n }\n return this.relayout(), n && n.type === \"distribute\" && this.distributeViewSizes(), i;\n }\n moveView(e, n, i) {\n const r = this.getViewCachedVisibleSize(n), s = r === void 0 ? this.getViewSize(n) : ot.Invisible(r), l = this.removeView(n);\n this.addView(e, l, s, i);\n }\n getViewCachedVisibleSize(e) {\n if (e < 0 || e >= this.viewItems.length) throw new Error(\"Index out of bounds\");\n return this.viewItems[e].cachedVisibleSize;\n }\n layout(e = this.size) {\n const n = Math.max(this.size, this.contentSize);\n if (this.size = e, this.proportions) for (let i = 0; i < this.viewItems.length; i++) {\n const r = this.viewItems[i];\n r.size = ae(Math.round(this.proportions[i] * e), r.minimumSize, r.maximumSize);\n }\n else {\n const i = ne(0, this.viewItems.length), r = i.filter((l) => this.viewItems[l].priority === ie.Low), s = i.filter((l) => this.viewItems[l].priority === ie.High);\n this.resize(this.viewItems.length - 1, e - n, void 0, r, s);\n }\n this.distributeEmptySpace(), this.layoutViews();\n }\n resizeView(e, n) {\n if (e < 0 || e >= this.viewItems.length) return;\n const i = ne(0, this.viewItems.length).filter((a) => a !== e), r = [...i.filter((a) => this.viewItems[a].priority === ie.Low), e], s = i.filter((a) => this.viewItems[a].priority === ie.High), l = this.viewItems[e];\n n = Math.round(n), n = ae(n, l.minimumSize, Math.min(l.maximumSize, this.size)), l.size = n, this.relayout(r, s);\n }\n resizeViews(e) {\n for (let n = 0; n < e.length; n++) {\n const i = this.viewItems[n];\n let r = e[n];\n r = Math.round(r), r = ae(r, i.minimumSize, Math.min(i.maximumSize, this.size)), i.size = r;\n }\n this.contentSize = this.viewItems.reduce((n, i) => n + i.size, 0), this.saveProportions(), this.layout(this.size);\n }\n getViewSize(e) {\n return e < 0 || e >= this.viewItems.length ? -1 : this.viewItems[e].size;\n }\n isViewVisible(e) {\n if (e < 0 || e >= this.viewItems.length) throw new Error(\"Index out of bounds\");\n return this.viewItems[e].visible;\n }\n setViewVisible(e, n) {\n if (e < 0 || e >= this.viewItems.length) throw new Error(\"Index out of bounds\");\n this.viewItems[e].setVisible(n), this.distributeEmptySpace(e), this.layoutViews(), this.saveProportions();\n }\n distributeViewSizes() {\n const e = [];\n let n = 0;\n for (const a of this.viewItems) a.maximumSize - a.minimumSize > 0 && (e.push(a), n += a.size);\n const i = Math.floor(n / e.length);\n for (const a of e) a.size = ae(i, a.minimumSize, a.maximumSize);\n const r = ne(0, this.viewItems.length), s = r.filter((a) => this.viewItems[a].priority === ie.Low), l = r.filter((a) => this.viewItems[a].priority === ie.High);\n this.relayout(s, l);\n }\n dispose() {\n this.sashItems.forEach((e) => e.sash.dispose()), this.sashItems = [], this.sashContainer.remove();\n }\n relayout(e, n) {\n const i = this.viewItems.reduce((r, s) => r + s.size, 0);\n this.resize(this.viewItems.length - 1, this.size - i, void 0, e, n), this.distributeEmptySpace(), this.layoutViews(), this.saveProportions();\n }\n onSashStart({\n sash: e,\n start: n\n }) {\n const i = this.sashItems.findIndex((r) => r.sash === e);\n ((r) => {\n const s = this.viewItems.map((b) => b.size);\n let l, a, o = Number.NEGATIVE_INFINITY, c = Number.POSITIVE_INFINITY;\n const d = ne(i, -1, -1), u = ne(i + 1, this.viewItems.length), f = d.reduce((b, y) => b + (this.viewItems[y].minimumSize - s[y]), 0), h = d.reduce((b, y) => b + (this.viewItems[y].viewMaximumSize - s[y]), 0), v = u.length === 0 ? Number.POSITIVE_INFINITY : u.reduce((b, y) => b + (s[y] - this.viewItems[y].minimumSize), 0), p = u.length === 0 ? Number.NEGATIVE_INFINITY : u.reduce((b, y) => b + (s[y] - this.viewItems[y].viewMaximumSize), 0);\n o = Math.max(f, p), c = Math.min(v, h);\n const w = this.findFirstSnapIndex(d), g = this.findFirstSnapIndex(u);\n if (typeof w == \"number\") {\n const b = this.viewItems[w], y = Math.floor(b.viewMinimumSize / 2);\n l = {\n index: w,\n limitDelta: b.visible ? o - y : o + y,\n size: b.size\n };\n }\n if (typeof g == \"number\") {\n const b = this.viewItems[g], y = Math.floor(b.viewMinimumSize / 2);\n a = {\n index: g,\n limitDelta: b.visible ? c + y : c - y,\n size: b.size\n };\n }\n this.sashDragState = {\n start: r,\n current: r,\n index: i,\n sizes: s,\n minDelta: o,\n maxDelta: c,\n snapBefore: l,\n snapAfter: a\n };\n })(n);\n }\n onSashChange({\n current: e\n }) {\n const {\n index: n,\n start: i,\n sizes: r,\n minDelta: s,\n maxDelta: l,\n snapBefore: a,\n snapAfter: o\n } = this.sashDragState;\n this.sashDragState.current = e;\n const c = e - i;\n this.resize(n, c, r, void 0, void 0, s, l, a, o), this.distributeEmptySpace(), this.layoutViews();\n }\n getSashPosition(e) {\n let n = 0;\n for (let i = 0; i < this.sashItems.length; i++) if (n += this.viewItems[i].size, this.sashItems[i].sash === e) return n;\n return 0;\n }\n resize(e, n, i = this.viewItems.map((d) => d.size), r, s, l = Number.NEGATIVE_INFINITY, a = Number.POSITIVE_INFINITY, o, c) {\n if (e < 0 || e >= this.viewItems.length) return 0;\n const d = ne(e, -1, -1), u = ne(e + 1, this.viewItems.length);\n if (s) for (const m of s) vn(d, m), vn(u, m);\n if (r) for (const m of r) xt(d, m), xt(u, m);\n const f = d.map((m) => this.viewItems[m]), h = d.map((m) => i[m]), v = u.map((m) => this.viewItems[m]), p = u.map((m) => i[m]), w = d.reduce((m, R) => m + (this.viewItems[R].minimumSize - i[R]), 0), g = d.reduce((m, R) => m + (this.viewItems[R].maximumSize - i[R]), 0), b = u.length === 0 ? Number.POSITIVE_INFINITY : u.reduce((m, R) => m + (i[R] - this.viewItems[R].minimumSize), 0), y = u.length === 0 ? Number.NEGATIVE_INFINITY : u.reduce((m, R) => m + (i[R] - this.viewItems[R].maximumSize), 0), S = Math.max(w, y, l), x = Math.min(b, g, a);\n let z = !1;\n if (o) {\n const m = this.viewItems[o.index], R = n >= o.limitDelta;\n z = R !== m.visible, m.setVisible(R, o.size);\n }\n if (!z && c) {\n const m = this.viewItems[c.index], R = n < c.limitDelta;\n z = R !== m.visible, m.setVisible(R, c.size);\n }\n if (z) return this.resize(e, n, i, r, s, l, a);\n for (let m = 0, R = n = ae(n, S, x); m < f.length; m++) {\n const _ = f[m], N = ae(h[m] + R, _.minimumSize, _.maximumSize);\n R -= N - h[m], _.size = N;\n }\n for (let m = 0, R = n; m < v.length; m++) {\n const _ = v[m], N = ae(p[m] - R, _.minimumSize, _.maximumSize);\n R += N - p[m], _.size = N;\n }\n return n;\n }\n distributeEmptySpace(e) {\n const n = this.viewItems.reduce((c, d) => c + d.size, 0);\n let i = this.size - n;\n const r = ne(0, this.viewItems.length), s = [], l = r.filter((c) => this.viewItems[c].priority === ie.Low), a = r.filter((c) => this.viewItems[c].priority === ie.Normal), o = r.filter((c) => this.viewItems[c].priority === ie.High);\n s.push(...o, ...a, ...l), typeof e == \"number\" && xt(s, e);\n for (let c = 0; i !== 0 && c < s.length; c++) {\n const d = this.viewItems[s[c]], u = ae(d.size + i, d.minimumSize, d.maximumSize);\n i -= u - d.size, d.size = u;\n }\n }\n layoutViews() {\n var e;\n this.contentSize = this.viewItems.reduce((i, r) => i + r.size, 0);\n let n = 0;\n for (const i of this.viewItems) i.layout(n), n += i.size;\n (e = this.onDidChange) != null && e.call(this, this.viewItems.map((i) => i.size)), this.sashItems.forEach((i) => i.sash.layout()), this.updateSashEnablement();\n }\n saveProportions() {\n this.proportionalLayout && this.contentSize > 0 && (this.proportions = this.viewItems.map((e) => e.size / this.contentSize));\n }\n updateSashEnablement() {\n let e = !1;\n const n = this.viewItems.map((o) => e = o.size - o.minimumSize > 0 || e);\n e = !1;\n const i = this.viewItems.map((o) => e = o.maximumSize - o.size > 0 || e), r = [...this.viewItems].reverse();\n e = !1;\n const s = r.map((o) => e = o.size - o.minimumSize > 0 || e).reverse();\n e = !1;\n const l = r.map((o) => e = o.maximumSize - o.size > 0 || e).reverse();\n let a = 0;\n for (let o = 0; o < this.sashItems.length; o++) {\n const {\n sash: c\n } = this.sashItems[o];\n a += this.viewItems[o].size;\n const d = !(n[o] && l[o + 1]), u = !(i[o] && s[o + 1]);\n if (d && u) {\n const f = ne(o, -1, -1), h = ne(o + 1, this.viewItems.length), v = this.findFirstSnapIndex(f), p = this.findFirstSnapIndex(h), w = typeof v == \"number\" && !this.viewItems[v].visible, g = typeof p == \"number\" && !this.viewItems[p].visible;\n w && s[o] && (a > 0 || this.startSnappingEnabled) ? c.state = ee.Minimum : g && n[o] && (a < this.contentSize || this.endSnappingEnabled) ? c.state = ee.Maximum : c.state = ee.Disabled;\n } else c.state = d && !u ? ee.Minimum : !d && u ? ee.Maximum : ee.Enabled;\n }\n }\n findFirstSnapIndex(e) {\n for (const n of e) {\n const i = this.viewItems[n];\n if (i.visible && i.snap) return n;\n }\n for (const n of e) {\n const i = this.viewItems[n];\n if (i.visible && i.maximumSize - i.minimumSize > 0) return;\n if (!i.visible && i.snap) return n;\n }\n }\n}\nclass Oe {\n constructor(e) {\n this.size = void 0, this.size = e;\n }\n getPreferredSize() {\n return this.size;\n }\n}\nclass gn {\n constructor(e, n) {\n this.proportion = void 0, this.layoutService = void 0, this.proportion = e, this.layoutService = n;\n }\n getPreferredSize() {\n return this.proportion * this.layoutService.getSize();\n }\n}\nclass nt {\n getPreferredSize() {\n }\n}\nclass bn {\n get preferredSize() {\n return this.layoutStrategy.getPreferredSize();\n }\n set preferredSize(e) {\n if (typeof e == \"number\") this.layoutStrategy = new Oe(e);\n else if (typeof e == \"string\") {\n const n = e.trim();\n if (tt(n, \"%\")) {\n const i = Number(n.slice(0, -1)) / 100;\n this.layoutStrategy = new gn(i, this.layoutService);\n } else if (tt(n, \"px\")) {\n const i = Number(n.slice(0, -2)) / 100;\n this.layoutStrategy = new Oe(i);\n } else if (typeof Number.parseFloat(n) == \"number\") {\n const i = Number.parseFloat(n);\n this.layoutStrategy = new Oe(i);\n } else this.layoutStrategy = new nt();\n } else this.layoutStrategy = new nt();\n }\n constructor(e, n) {\n var i;\n if (this.minimumSize = 0, this.maximumSize = Number.POSITIVE_INFINITY, this.element = void 0, this.priority = void 0, this.snap = void 0, this.layoutService = void 0, this.layoutStrategy = void 0, this.layoutService = e, this.element = n.element, this.minimumSize = typeof n.minimumSize == \"number\" ? n.minimumSize : 30, this.maximumSize = typeof n.maximumSize == \"number\" ? n.maximumSize : Number.POSITIVE_INFINITY, typeof n.preferredSize == \"number\") this.layoutStrategy = new Oe(n.preferredSize);\n else if (typeof n.preferredSize == \"string\") {\n const r = n.preferredSize.trim();\n if (tt(r, \"%\")) {\n const s = Number(r.slice(0, -1)) / 100;\n this.layoutStrategy = new gn(s, this.layoutService);\n } else if (tt(r, \"px\")) {\n const s = Number(r.slice(0, -2));\n this.layoutStrategy = new Oe(s);\n } else if (typeof Number.parseFloat(r) == \"number\") {\n const s = Number.parseFloat(r);\n this.layoutStrategy = new Oe(s);\n } else this.layoutStrategy = new nt();\n } else this.layoutStrategy = new nt();\n this.priority = (i = n.priority) != null ? i : ie.Normal, this.snap = typeof n.snap == \"boolean\" && n.snap;\n }\n layout(e) {\n }\n}\nfunction yn(t) {\n return t.minSize !== void 0 || t.maxSize !== void 0 || t.preferredSize !== void 0 || t.priority !== void 0 || t.visible !== void 0;\n}\nconst Pt = window.React.forwardRef(({\n className: t,\n children: e\n}, n) => window.React.createElement(\"div\", {\n ref: n,\n className: Mt(\"split-view-view\", Pn, t)\n}, e));\nPt.displayName = \"Allotment.Pane\";\nconst Hn = window.React.forwardRef(({\n children: t,\n className: e,\n id: n,\n maxSize: i = 1 / 0,\n minSize: r = 30,\n proportionalLayout: s = !0,\n separator: l = !0,\n sizes: a,\n defaultSizes: o = a,\n snap: c = !1,\n vertical: d = !1,\n onChange: u,\n onReset: f,\n onVisibleChange: h,\n onDragStart: v,\n onDragEnd: p\n}, w) => {\n const g = window.React.useRef(null), b = window.React.useRef([]), y = window.React.useRef(/* @__PURE__ */ new Map()), S = window.React.useRef(null), x = window.React.useRef(/* @__PURE__ */ new Map()), z = window.React.useRef(new ji()), m = window.React.useRef([]), [R, _] = window.React.useState(!1), N = window.React.useMemo(() => window.React.Children.toArray(t).filter(window.React.isValidElement), [t]), T = window.React.useCallback((O) => {\n var E, P;\n const A = (E = m.current) == null ? void 0 : E[O];\n return typeof (A == null ? void 0 : A.preferredSize) == \"number\" && ((P = S.current) != null && P.resizeView(O, Math.round(A.preferredSize)), !0);\n }, []);\n return window.React.useImperativeHandle(w, () => ({\n reset: () => {\n if (f) f();\n else {\n var O;\n (O = S.current) == null || O.distributeViewSizes();\n for (let E = 0; E < m.current.length; E++) T(E);\n }\n },\n resize: (O) => {\n var E;\n (E = S.current) == null || E.resizeViews(O);\n }\n })), dn(() => {\n let O = !0;\n o && x.current.size !== o.length && (O = !1, console.warn(`Expected ${o.length} children based on defaultSizes but found ${x.current.size}`)), O && o && (b.current = N.map((A) => A.key));\n const E = Ne({\n orientation: d ? se.Vertical : se.Horizontal,\n proportionalLayout: s\n }, O && o && {\n descriptor: {\n size: o.reduce((A, V) => A + V, 0),\n views: o.map((A, V) => {\n var M, j, K, oe;\n const B = y.current.get(b.current[V]), $ = new bn(z.current, Ne({\n element: document.createElement(\"div\"),\n minimumSize: (M = B == null ? void 0 : B.minSize) != null ? M : r,\n maximumSize: (j = B == null ? void 0 : B.maxSize) != null ? j : i,\n priority: (K = B == null ? void 0 : B.priority) != null ? K : ie.Normal\n }, (B == null ? void 0 : B.preferredSize) && {\n preferredSize: B == null ? void 0 : B.preferredSize\n }, {\n snap: (oe = B == null ? void 0 : B.snap) != null ? oe : c\n }));\n return m.current.push($), {\n container: [...x.current.values()][V],\n size: A,\n view: $\n };\n })\n }\n });\n S.current = new Ui(g.current, E, u, v, p), S.current.on(\"sashDragStart\", () => {\n var A;\n (A = g.current) == null || A.classList.add(\"split-view-sash-dragging\");\n }), S.current.on(\"sashDragEnd\", () => {\n var A;\n (A = g.current) == null || A.classList.remove(\"split-view-sash-dragging\");\n }), S.current.on(\"sashchange\", (A) => {\n if (h && S.current) {\n const V = N.map((M) => M.key);\n for (let M = 0; M < V.length; M++) {\n const j = y.current.get(V[M]);\n (j == null ? void 0 : j.visible) !== void 0 && j.visible !== S.current.isViewVisible(M) && h(M, S.current.isViewVisible(M));\n }\n }\n }), S.current.on(\"sashreset\", (A) => {\n if (f) f();\n else {\n var V;\n if (T(A) || T(A + 1)) return;\n (V = S.current) == null || V.distributeViewSizes();\n }\n });\n const P = S.current;\n return () => {\n P.dispose();\n };\n }, []), dn(() => {\n if (R) {\n const F = N.map((C) => C.key), U = [...b.current], ue = F.filter((C) => !b.current.includes(C)), G = F.filter((C) => b.current.includes(C)), we = b.current.map((C) => !F.includes(C));\n for (let C = we.length - 1; C >= 0; C--) {\n var O;\n we[C] && ((O = S.current) != null && O.removeView(C), U.splice(C, 1), m.current.splice(C, 1));\n }\n for (const C of ue) {\n var E, P, A, V, M;\n const I = y.current.get(C), D = new bn(z.current, Ne({\n element: document.createElement(\"div\"),\n minimumSize: (E = I == null ? void 0 : I.minSize) != null ? E : r,\n maximumSize: (P = I == null ? void 0 : I.maxSize) != null ? P : i,\n priority: (A = I == null ? void 0 : I.priority) != null ? A : ie.Normal\n }, (I == null ? void 0 : I.preferredSize) && {\n preferredSize: I == null ? void 0 : I.preferredSize\n }, {\n snap: (V = I == null ? void 0 : I.snap) != null ? V : c\n }));\n (M = S.current) != null && M.addView(x.current.get(C), D, ot.Distribute, F.findIndex((k) => k === C)), U.splice(F.findIndex((k) => k === C), 0, C), m.current.splice(F.findIndex((k) => k === C), 0, D);\n }\n for (; !_i(F, U); ) for (const [C, I] of F.entries()) {\n const D = U.findIndex((k) => k === I);\n if (D !== C) {\n var j;\n (j = S.current) == null || j.moveView(x.current.get(I), D, C);\n const k = U[D];\n U.splice(D, 1), U.splice(C, 0, k);\n break;\n }\n }\n for (const C of ue) {\n var K;\n const I = F.findIndex((k) => k === C), D = m.current[I].preferredSize;\n D !== void 0 && ((K = S.current) == null || K.resizeView(I, D));\n }\n for (const C of [...ue, ...G]) {\n var oe, B;\n const I = y.current.get(C), D = F.findIndex((k) => k === C);\n I && yn(I) && I.visible !== void 0 && ((oe = S.current) == null ? void 0 : oe.isViewVisible(D)) !== I.visible && ((B = S.current) == null || B.setViewVisible(D, I.visible));\n }\n for (const C of G) {\n const I = y.current.get(C), D = F.findIndex((k) => k === C);\n if (I && yn(I)) {\n var $;\n I.preferredSize !== void 0 && m.current[D].preferredSize !== I.preferredSize && (m.current[D].preferredSize = I.preferredSize);\n let k = !1;\n I.minSize !== void 0 && m.current[D].minimumSize !== I.minSize && (m.current[D].minimumSize = I.minSize, k = !0), I.maxSize !== void 0 && m.current[D].maximumSize !== I.maxSize && (m.current[D].maximumSize = I.maxSize, k = !0), k && (($ = S.current) == null || $.layout());\n }\n }\n (ue.length > 0 || we.length > 0) && (b.current = F);\n }\n }, [N, R, i, r, c]), window.React.useEffect(() => {\n S.current && (S.current.onDidChange = u);\n }, [u]), window.React.useEffect(() => {\n S.current && (S.current.onDidDragStart = v);\n }, [v]), window.React.useEffect(() => {\n S.current && (S.current.onDidDragEnd = p);\n }, [p]), Ni({\n ref: g,\n onResize: ({\n width: O,\n height: E\n }) => {\n var P;\n O && E && ((P = S.current) != null && P.layout(d ? E : O), z.current.setSize(d ? E : O), _(!0));\n }\n }), window.React.useEffect(() => {\n Fn && Gi(20);\n }, []), window.React.createElement(\"div\", {\n ref: g,\n className: Mt(\"split-view\", d ? \"split-view-vertical\" : \"split-view-horizontal\", {\n \"split-view-separator-border\": l\n }, Mi, d ? Ti : Vi, {\n [Pi]: l\n }, e),\n id: n\n }, window.React.createElement(\"div\", {\n className: Mt(\"split-view-container\", Li)\n }, window.React.Children.toArray(t).map((O) => {\n if (!window.React.isValidElement(O)) return null;\n const E = O.key;\n return O.type.displayName === \"Allotment.Pane\" ? (y.current.set(E, O.props), window.React.cloneElement(O, {\n key: E,\n ref: (P) => {\n const A = O.ref;\n A && (A.current = P), P ? x.current.set(E, P) : x.current.delete(E);\n }\n })) : window.React.createElement(Pt, {\n key: E,\n ref: (P) => {\n P ? x.current.set(E, P) : x.current.delete(E);\n }\n }, O);\n })));\n});\nfunction Gi(t) {\n const e = ae(t, 4, 20), n = ae(t, 1, 8);\n document.documentElement.style.setProperty(\"--sash-size\", e + \"px\"), document.documentElement.style.setProperty(\"--sash-hover-size\", n + \"px\"), (function(i) {\n Bn = i, $n.emit(\"onDidChangeGlobalSize\", i);\n })(e);\n}\nHn.displayName = \"Allotment\";\nvar qs = Object.assign(Hn, {\n Pane: Pt\n});\nfunction qi() {\n for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)\n e[n] = arguments[n];\n return window.React.useMemo(\n () => (i) => {\n e.forEach((r) => r(i));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n e\n );\n}\nconst ht = typeof window < \"u\" && typeof window.document < \"u\" && typeof window.document.createElement < \"u\";\nfunction Ae(t) {\n const e = Object.prototype.toString.call(t);\n return e === \"[object Window]\" || // In Electron context the Window object serializes to [object global]\n e === \"[object global]\";\n}\nfunction kt(t) {\n return \"nodeType\" in t;\n}\nfunction q(t) {\n var e, n;\n return t ? Ae(t) ? t : kt(t) && (e = (n = t.ownerDocument) == null ? void 0 : n.defaultView) != null ? e : window : window;\n}\nfunction jt(t) {\n const {\n Document: e\n } = q(t);\n return t instanceof e;\n}\nfunction Ue(t) {\n return Ae(t) ? !1 : t instanceof q(t).HTMLElement;\n}\nfunction Xn(t) {\n return t instanceof q(t).SVGElement;\n}\nfunction Le(t) {\n return t ? Ae(t) ? t.document : kt(t) ? jt(t) ? t : Ue(t) || Xn(t) ? t.ownerDocument : document : document : document;\n}\nconst le = ht ? window.React.useLayoutEffect : window.React.useEffect;\nfunction vt(t) {\n const e = window.React.useRef(t);\n return le(() => {\n e.current = t;\n }), window.React.useCallback(function() {\n for (var n = arguments.length, i = new Array(n), r = 0; r < n; r++)\n i[r] = arguments[r];\n return e.current == null ? void 0 : e.current(...i);\n }, []);\n}\nfunction Ji() {\n const t = window.React.useRef(null), e = window.React.useCallback((i, r) => {\n t.current = setInterval(i, r);\n }, []), n = window.React.useCallback(() => {\n t.current !== null && (clearInterval(t.current), t.current = null);\n }, []);\n return [e, n];\n}\nfunction He(t, e) {\n e === void 0 && (e = [t]);\n const n = window.React.useRef(t);\n return le(() => {\n n.current !== t && (n.current = t);\n }, e), n;\n}\nfunction Ge(t, e) {\n const n = window.React.useRef();\n return window.React.useMemo(\n () => {\n const i = t(n.current);\n return n.current = i, i;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...e]\n );\n}\nfunction at(t) {\n const e = vt(t), n = window.React.useRef(null), i = window.React.useCallback(\n (r) => {\n r !== n.current && (e == null || e(r, n.current)), n.current = r;\n },\n //eslint-disable-next-line\n []\n );\n return [n, i];\n}\nfunction lt(t) {\n const e = window.React.useRef();\n return window.React.useEffect(() => {\n e.current = t;\n }, [t]), e.current;\n}\nlet Et = {};\nfunction qe(t, e) {\n return window.React.useMemo(() => {\n if (e)\n return e;\n const n = Et[t] == null ? 0 : Et[t] + 1;\n return Et[t] = n, t + \"-\" + n;\n }, [t, e]);\n}\nfunction Wn(t) {\n return function(e) {\n for (var n = arguments.length, i = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++)\n i[r - 1] = arguments[r];\n return i.reduce((s, l) => {\n const a = Object.entries(l);\n for (const [o, c] of a) {\n const d = s[o];\n d != null && (s[o] = d + t * c);\n }\n return s;\n }, {\n ...e\n });\n };\n}\nconst Me = /* @__PURE__ */ Wn(1), Xe = /* @__PURE__ */ Wn(-1);\nfunction Qi(t) {\n return \"clientX\" in t && \"clientY\" in t;\n}\nfunction pt(t) {\n if (!t)\n return !1;\n const {\n KeyboardEvent: e\n } = q(t.target);\n return e && t instanceof e;\n}\nfunction Zi(t) {\n if (!t)\n return !1;\n const {\n TouchEvent: e\n } = q(t.target);\n return e && t instanceof e;\n}\nfunction ct(t) {\n if (Zi(t)) {\n if (t.touches && t.touches.length) {\n const {\n clientX: e,\n clientY: n\n } = t.touches[0];\n return {\n x: e,\n y: n\n };\n } else if (t.changedTouches && t.changedTouches.length) {\n const {\n clientX: e,\n clientY: n\n } = t.changedTouches[0];\n return {\n x: e,\n y: n\n };\n }\n }\n return Qi(t) ? {\n x: t.clientX,\n y: t.clientY\n } : null;\n}\nconst xe = /* @__PURE__ */ Object.freeze({\n Translate: {\n toString(t) {\n if (!t)\n return;\n const {\n x: e,\n y: n\n } = t;\n return \"translate3d(\" + (e ? Math.round(e) : 0) + \"px, \" + (n ? Math.round(n) : 0) + \"px, 0)\";\n }\n },\n Scale: {\n toString(t) {\n if (!t)\n return;\n const {\n scaleX: e,\n scaleY: n\n } = t;\n return \"scaleX(\" + e + \") scaleY(\" + n + \")\";\n }\n },\n Transform: {\n toString(t) {\n if (t)\n return [xe.Translate.toString(t), xe.Scale.toString(t)].join(\" \");\n }\n },\n Transition: {\n toString(t) {\n let {\n property: e,\n duration: n,\n easing: i\n } = t;\n return e + \" \" + n + \"ms \" + i;\n }\n }\n}), Sn = \"a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]\";\nfunction er(t) {\n return t.matches(Sn) ? t : t.querySelector(Sn);\n}\nconst tr = {\n display: \"none\"\n};\nfunction nr(t) {\n let {\n id: e,\n value: n\n } = t;\n return window.React.createElement(\"div\", {\n id: e,\n style: tr\n }, n);\n}\nfunction ir(t) {\n let {\n id: e,\n announcement: n,\n ariaLiveType: i = \"assertive\"\n } = t;\n const r = {\n position: \"fixed\",\n top: 0,\n left: 0,\n width: 1,\n height: 1,\n margin: -1,\n border: 0,\n padding: 0,\n overflow: \"hidden\",\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(100%)\",\n whiteSpace: \"nowrap\"\n };\n return window.React.createElement(\"div\", {\n id: e,\n style: r,\n role: \"status\",\n \"aria-live\": i,\n \"aria-atomic\": !0\n }, n);\n}\nfunction rr() {\n const [t, e] = window.React.useState(\"\");\n return {\n announce: window.React.useCallback((i) => {\n i != null && e(i);\n }, []),\n announcement: t\n };\n}\nconst Kn = /* @__PURE__ */ window.React.createContext(null);\nfunction sr(t) {\n const e = window.React.useContext(Kn);\n window.React.useEffect(() => {\n if (!e)\n throw new Error(\"useDndMonitor must be used within a children of <DndContext>\");\n return e(t);\n }, [t, e]);\n}\nfunction or() {\n const [t] = window.React.useState(() => /* @__PURE__ */ new Set()), e = window.React.useCallback((i) => (t.add(i), () => t.delete(i)), [t]);\n return [window.React.useCallback((i) => {\n let {\n type: r,\n event: s\n } = i;\n t.forEach((l) => {\n var a;\n return (a = l[r]) == null ? void 0 : a.call(l, s);\n });\n }, [t]), e];\n}\nconst ar = {\n draggable: `\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n `\n}, lr = {\n onDragStart(t) {\n let {\n active: e\n } = t;\n return \"Picked up draggable item \" + e.id + \".\";\n },\n onDragOver(t) {\n let {\n active: e,\n over: n\n } = t;\n return n ? \"Draggable item \" + e.id + \" was moved over droppable area \" + n.id + \".\" : \"Draggable item \" + e.id + \" is no longer over a droppable area.\";\n },\n onDragEnd(t) {\n let {\n active: e,\n over: n\n } = t;\n return n ? \"Draggable item \" + e.id + \" was dropped over droppable area \" + n.id : \"Draggable item \" + e.id + \" was dropped.\";\n },\n onDragCancel(t) {\n let {\n active: e\n } = t;\n return \"Dragging was cancelled. Draggable item \" + e.id + \" was dropped.\";\n }\n};\nfunction cr(t) {\n let {\n announcements: e = lr,\n container: n,\n hiddenTextDescribedById: i,\n screenReaderInstructions: r = ar\n } = t;\n const {\n announce: s,\n announcement: l\n } = rr(), a = qe(\"DndLiveRegion\"), [o, c] = window.React.useState(!1);\n if (window.React.useEffect(() => {\n c(!0);\n }, []), sr(window.React.useMemo(() => ({\n onDragStart(u) {\n let {\n active: f\n } = u;\n s(e.onDragStart({\n active: f\n }));\n },\n onDragMove(u) {\n let {\n active: f,\n over: h\n } = u;\n e.onDragMove && s(e.onDragMove({\n active: f,\n over: h\n }));\n },\n onDragOver(u) {\n let {\n active: f,\n over: h\n } = u;\n s(e.onDragOver({\n active: f,\n over: h\n }));\n },\n onDragEnd(u) {\n let {\n active: f,\n over: h\n } = u;\n s(e.onDragEnd({\n active: f,\n over: h\n }));\n },\n onDragCancel(u) {\n let {\n active: f,\n over: h\n } = u;\n s(e.onDragCancel({\n active: f,\n over: h\n }));\n }\n }), [s, e])), !o)\n return null;\n const d = window.React.createElement(window.React.Fragment, null, window.React.createElement(nr, {\n id: i,\n value: r.draggable\n }), window.React.createElement(ir, {\n id: a,\n announcement: l\n }));\n return n ? window.ReactDOM.createPortal(d, n) : d;\n}\nvar Y;\n(function(t) {\n t.DragStart = \"dragStart\", t.DragMove = \"dragMove\", t.DragEnd = \"dragEnd\", t.DragCancel = \"dragCancel\", t.DragOver = \"dragOver\", t.RegisterDroppable = \"registerDroppable\", t.SetDroppableDisabled = \"setDroppableDisabled\", t.UnregisterDroppable = \"unregisterDroppable\";\n})(Y || (Y = {}));\nfunction ut() {\n}\nfunction Rn(t, e) {\n return window.React.useMemo(\n () => ({\n sensor: t,\n options: e ?? {}\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [t, e]\n );\n}\nfunction ur() {\n for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++)\n e[n] = arguments[n];\n return window.React.useMemo(\n () => [...e].filter((i) => i != null),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [...e]\n );\n}\nconst ce = /* @__PURE__ */ Object.freeze({\n x: 0,\n y: 0\n});\nfunction Un(t, e) {\n return Math.sqrt(Math.pow(t.x - e.x, 2) + Math.pow(t.y - e.y, 2));\n}\nfunction dr(t, e) {\n const n = ct(t);\n if (!n)\n return \"0 0\";\n const i = {\n x: (n.x - e.left) / e.width * 100,\n y: (n.y - e.top) / e.height * 100\n };\n return i.x + \"% \" + i.y + \"%\";\n}\nfunction Gn(t, e) {\n let {\n data: {\n value: n\n }\n } = t, {\n data: {\n value: i\n }\n } = e;\n return n - i;\n}\nfunction fr(t, e) {\n let {\n data: {\n value: n\n }\n } = t, {\n data: {\n value: i\n }\n } = e;\n return i - n;\n}\nfunction xn(t) {\n let {\n left: e,\n top: n,\n height: i,\n width: r\n } = t;\n return [{\n x: e,\n y: n\n }, {\n x: e + r,\n y: n\n }, {\n x: e,\n y: n + i\n }, {\n x: e + r,\n y: n + i\n }];\n}\nfunction qn(t, e) {\n if (!t || t.length === 0)\n return null;\n const [n] = t;\n return n[e];\n}\nfunction zn(t, e, n) {\n return e === void 0 && (e = t.left), n === void 0 && (n = t.top), {\n x: e + t.width * 0.5,\n y: n + t.height * 0.5\n };\n}\nconst hr = (t) => {\n let {\n collisionRect: e,\n droppableRects: n,\n droppableContainers: i\n } = t;\n const r = zn(e, e.left, e.top), s = [];\n for (const l of i) {\n const {\n id: a\n } = l, o = n.get(a);\n if (o) {\n const c = Un(zn(o), r);\n s.push({\n id: a,\n data: {\n droppableContainer: l,\n value: c\n }\n });\n }\n }\n return s.sort(Gn);\n}, vr = (t) => {\n let {\n collisionRect: e,\n droppableRects: n,\n droppableContainers: i\n } = t;\n const r = xn(e), s = [];\n for (const l of i) {\n const {\n id: a\n } = l, o = n.get(a);\n if (o) {\n const c = xn(o), d = r.reduce((f, h, v) => f + Un(c[v], h), 0), u = Number((d / 4).toFixed(4));\n s.push({\n id: a,\n data: {\n droppableContainer: l,\n value: u\n }\n });\n }\n }\n return s.sort(Gn);\n};\nfunction pr(t, e) {\n const n = Math.max(e.top, t.top), i = Math.max(e.left, t.left), r = Math.min(e.left + e.width, t.left + t.width), s = Math.min(e.top + e.height, t.top + t.height), l = r - i, a = s - n;\n if (i < r && n < s) {\n const o = e.width * e.height, c = t.width * t.height, d = l * a, u = d / (o + c - d);\n return Number(u.toFixed(4));\n }\n return 0;\n}\nconst wr = (t) => {\n let {\n collisionRect: e,\n droppableRects: n,\n droppableContainers: i\n } = t;\n const r = [];\n for (const s of i) {\n const {\n id: l\n } = s, a = n.get(l);\n if (a) {\n const o = pr(a, e);\n o > 0 && r.push({\n id: l,\n data: {\n droppableContainer: s,\n value: o\n }\n });\n }\n }\n return r.sort(fr);\n};\nfunction mr(t, e, n) {\n return {\n ...t,\n scaleX: e && n ? e.width / n.width : 1,\n scaleY: e && n ? e.height / n.height : 1\n };\n}\nfunction Jn(t, e) {\n return t && e ? {\n x: t.left - e.left,\n y: t.top - e.top\n } : ce;\n}\nfunction gr(t) {\n return function(n) {\n for (var i = arguments.length, r = new Array(i > 1 ? i - 1 : 0), s = 1; s < i; s++)\n r[s - 1] = arguments[s];\n return r.reduce((l, a) => ({\n ...l,\n top: l.top + t * a.y,\n bottom: l.bottom + t * a.y,\n left: l.left + t * a.x,\n right: l.right + t * a.x\n }), {\n ...n\n });\n };\n}\nconst br = /* @__PURE__ */ gr(1);\nfunction Qn(t) {\n if (t.startsWith(\"matrix3d(\")) {\n const e = t.slice(9, -1).split(/, /);\n return {\n x: +e[12],\n y: +e[13],\n scaleX: +e[0],\n scaleY: +e[5]\n };\n } else if (t.startsWith(\"matrix(\")) {\n const e = t.slice(7, -1).split(/, /);\n return {\n x: +e[4],\n y: +e[5],\n scaleX: +e[0],\n scaleY: +e[3]\n };\n }\n return null;\n}\nfunction yr(t, e, n) {\n const i = Qn(e);\n if (!i)\n return t;\n const {\n scaleX: r,\n scaleY: s,\n x: l,\n y: a\n } = i, o = t.left - l - (1 - r) * parseFloat(n), c = t.top - a - (1 - s) * parseFloat(n.slice(n.indexOf(\" \") + 1)), d = r ? t.width / r : t.width, u = s ? t.height / s : t.height;\n return {\n width: d,\n height: u,\n top: c,\n right: o + d,\n bottom: c + u,\n left: o\n };\n}\nconst Sr = {\n ignoreTransform: !1\n};\nfunction Te(t, e) {\n e === void 0 && (e = Sr);\n let n = t.getBoundingClientRect();\n if (e.ignoreTransform) {\n const {\n transform: c,\n transformOrigin: d\n } = q(t).getComputedStyle(t);\n c && (n = yr(n, c, d));\n }\n const {\n top: i,\n left: r,\n width: s,\n height: l,\n bottom: a,\n right: o\n } = n;\n return {\n top: i,\n left: r,\n width: s,\n height: l,\n bottom: a,\n right: o\n };\n}\nfunction Dn(t) {\n return Te(t, {\n ignoreTransform: !0\n });\n}\nfunction Rr(t) {\n const e = t.innerWidth, n = t.innerHeight;\n return {\n top: 0,\n left: 0,\n right: e,\n bottom: n,\n width: e,\n height: n\n };\n}\nfunction xr(t, e) {\n return e === void 0 && (e = q(t).getComputedStyle(t)), e.position === \"fixed\";\n}\nfunction zr(t, e) {\n e === void 0 && (e = q(t).getComputedStyle(t));\n const n = /(auto|scroll|overlay)/;\n return [\"overflow\", \"overflowX\", \"overflowY\"].some((r) => {\n const s = e[r];\n return typeof s == \"string\" ? n.test(s) : !1;\n });\n}\nfunction wt(t, e) {\n const n = [];\n function i(r) {\n if (e != null && n.length >= e || !r)\n return n;\n if (jt(r) && r.scrollingElement != null && !n.includes(r.scrollingElement))\n return n.push(r.scrollingElement), n;\n if (!Ue(r) || Xn(r) || n.includes(r))\n return n;\n const s = q(t).getComputedStyle(r);\n return r !== t && zr(r, s) && n.push(r), xr(r, s) ? n : i(r.parentNode);\n }\n return t ? i(t) : n;\n}\nfunction Zn(t) {\n const [e] = wt(t, 1);\n return e ?? null;\n}\nfunction Ct(t) {\n return !ht || !t ? null : Ae(t) ? t : kt(t) ? jt(t) || t === Le(t).scrollingElement ? window : Ue(t) ? t : null : null;\n}\nfunction ei(t) {\n return Ae(t) ? t.scrollX : t.scrollLeft;\n}\nfunction ti(t) {\n return Ae(t) ? t.scrollY : t.scrollTop;\n}\nfunction At(t) {\n return {\n x: ei(t),\n y: ti(t)\n };\n}\nvar H;\n(function(t) {\n t[t.Forward = 1] = \"Forward\", t[t.Backward = -1] = \"Backward\";\n})(H || (H = {}));\nfunction ni(t) {\n return !ht || !t ? !1 : t === document.scrollingElement;\n}\nfunction ii(t) {\n const e = {\n x: 0,\n y: 0\n }, n = ni(t) ? {\n height: window.innerHeight,\n width: window.innerWidth\n } : {\n height: t.clientHeight,\n width: t.clientWidth\n }, i = {\n x: t.scrollWidth - n.width,\n y: t.scrollHeight - n.height\n }, r = t.scrollTop <= e.y, s = t.scrollLeft <= e.x, l = t.scrollTop >= i.y, a = t.scrollLeft >= i.x;\n return {\n isTop: r,\n isLeft: s,\n isBottom: l,\n isRight: a,\n maxScroll: i,\n minScroll: e\n };\n}\nconst Dr = {\n x: 0.2,\n y: 0.2\n};\nfunction Ir(t, e, n, i, r) {\n let {\n top: s,\n left: l,\n right: a,\n bottom: o\n } = n;\n i === void 0 && (i = 10), r === void 0 && (r = Dr);\n const {\n isTop: c,\n isBottom: d,\n isLeft: u,\n isRight: f\n } = ii(t), h = {\n x: 0,\n y: 0\n }, v = {\n x: 0,\n y: 0\n }, p = {\n height: e.height * r.y,\n width: e.width * r.x\n };\n return !c && s <= e.top + p.height ? (h.y = H.Backward, v.y = i * Math.abs((e.top + p.height - s) / p.height)) : !d && o >= e.bottom - p.height && (h.y = H.Forward, v.y = i * Math.abs((e.bottom - p.height - o) / p.height)), !f && a >= e.right - p.width ? (h.x = H.Forward, v.x = i * Math.abs((e.right - p.width - a) / p.width)) : !u && l <= e.left + p.width && (h.x = H.Backward, v.x = i * Math.abs((e.left + p.width - l) / p.width)), {\n direction: h,\n speed: v\n };\n}\nfunction Er(t) {\n if (t === document.scrollingElement) {\n const {\n innerWidth: s,\n innerHeight: l\n } = window;\n return {\n top: 0,\n left: 0,\n right: s,\n bottom: l,\n width: s,\n height: l\n };\n }\n const {\n top: e,\n left: n,\n right: i,\n bottom: r\n } = t.getBoundingClientRect();\n return {\n top: e,\n left: n,\n right: i,\n bottom: r,\n width: t.clientWidth,\n height: t.clientHeight\n };\n}\nfunction ri(t) {\n return t.reduce((e, n) => Me(e, At(n)), ce);\n}\nfunction Cr(t) {\n return t.reduce((e, n) => e + ei(n), 0);\n}\nfunction _r(t) {\n return t.reduce((e, n) => e + ti(n), 0);\n}\nfunction si(t, e) {\n if (e === void 0 && (e = Te), !t)\n return;\n const {\n top: n,\n left: i,\n bottom: r,\n right: s\n } = e(t);\n Zn(t) && (r <= 0 || s <= 0 || n >= window.innerHeight || i >= window.innerWidth) && t.scrollIntoView({\n block: \"center\",\n inline: \"center\"\n });\n}\nconst Or = [[\"x\", [\"left\", \"right\"], Cr], [\"y\", [\"top\", \"bottom\"], _r]];\nclass Ft {\n constructor(e, n) {\n this.rect = void 0, this.width = void 0, this.height = void 0, this.top = void 0, this.bottom = void 0, this.right = void 0, this.left = void 0;\n const i = wt(n), r = ri(i);\n this.rect = {\n ...e\n }, this.width = e.width, this.height = e.height;\n for (const [s, l, a] of Or)\n for (const o of l)\n Object.defineProperty(this, o, {\n get: () => {\n const c = a(i), d = r[s] - c;\n return this.rect[o] + d;\n },\n enumerable: !0\n });\n Object.defineProperty(this, \"rect\", {\n enumerable: !1\n });\n }\n}\nclass Be {\n constructor(e) {\n this.target = void 0, this.listeners = [], this.removeAll = () => {\n this.listeners.forEach((n) => {\n var i;\n return (i = this.target) == null ? void 0 : i.removeEventListener(...n);\n });\n }, this.target = e;\n }\n add(e, n, i) {\n var r;\n (r = this.target) == null || r.addEventListener(e, n, i), this.listeners.push([e, n, i]);\n }\n}\nfunction Nr(t) {\n const {\n EventTarget: e\n } = q(t);\n return t instanceof e ? t : Le(t);\n}\nfunction _t(t, e) {\n const n = Math.abs(t.x), i = Math.abs(t.y);\n return typeof e == \"number\" ? Math.sqrt(n ** 2 + i ** 2) > e : \"x\" in e && \"y\" in e ? n > e.x && i > e.y : \"x\" in e ? n > e.x : \"y\" in e ? i > e.y : !1;\n}\nvar re;\n(function(t) {\n t.Click = \"click\", t.DragStart = \"dragstart\", t.Keydown = \"keydown\", t.ContextMenu = \"contextmenu\", t.Resize = \"resize\", t.SelectionChange = \"selectionchange\", t.VisibilityChange = \"visibilitychange\";\n})(re || (re = {}));\nfunction In(t) {\n t.preventDefault();\n}\nfunction Mr(t) {\n t.stopPropagation();\n}\nvar L;\n(function(t) {\n t.Space = \"Space\", t.Down = \"ArrowDown\", t.Right = \"ArrowRight\", t.Left = \"ArrowLeft\", t.Up = \"ArrowUp\", t.Esc = \"Escape\", t.Enter = \"Enter\", t.Tab = \"Tab\";\n})(L || (L = {}));\nconst oi = {\n start: [L.Space, L.Enter],\n cancel: [L.Esc],\n end: [L.Space, L.Enter, L.Tab]\n}, Ar = (t, e) => {\n let {\n currentCoordinates: n\n } = e;\n switch (t.code) {\n case L.Right:\n return {\n ...n,\n x: n.x + 25\n };\n case L.Left:\n return {\n ...n,\n x: n.x - 25\n };\n case L.Down:\n return {\n ...n,\n y: n.y + 25\n };\n case L.Up:\n return {\n ...n,\n y: n.y - 25\n };\n }\n};\nclass Bt {\n constructor(e) {\n this.props = void 0, this.autoScrollEnabled = !1, this.referenceCoordinates = void 0, this.listeners = void 0, this.windowListeners = void 0, this.props = e;\n const {\n event: {\n target: n\n }\n } = e;\n this.props = e, this.listeners = new Be(Le(n)), this.windowListeners = new Be(q(n)), this.handleKeyDown = this.handleKeyDown.bind(this), this.handleCancel = this.handleCancel.bind(this), this.attach();\n }\n attach() {\n this.handleStart(), this.windowListeners.add(re.Resize, this.handleCancel), this.windowListeners.add(re.VisibilityChange, this.handleCancel), setTimeout(() => this.listeners.add(re.Keydown, this.handleKeyDown));\n }\n handleStart() {\n const {\n activeNode: e,\n onStart: n\n } = this.props, i = e.node.current;\n i && si(i), n(ce);\n }\n handleKeyDown(e) {\n if (pt(e)) {\n const {\n active: n,\n context: i,\n options: r\n } = this.props, {\n keyboardCodes: s = oi,\n coordinateGetter: l = Ar,\n scrollBehavior: a = \"smooth\"\n } = r, {\n code: o\n } = e;\n if (s.end.includes(o)) {\n this.handleEnd(e);\n return;\n }\n if (s.cancel.includes(o)) {\n this.handleCancel(e);\n return;\n }\n const {\n collisionRect: c\n } = i.current, d = c ? {\n x: c.left,\n y: c.top\n } : ce;\n this.referenceCoordinates || (this.referenceCoordinates = d);\n const u = l(e, {\n active: n,\n context: i.current,\n currentCoordinates: d\n });\n if (u) {\n const f = Xe(u, d), h = {\n x: 0,\n y: 0\n }, {\n scrollableAncestors: v\n } = i.current;\n for (const p of v) {\n const w = e.code, {\n isTop: g,\n isRight: b,\n isLeft: y,\n isBottom: S,\n maxScroll: x,\n minScroll: z\n } = ii(p), m = Er(p), R = {\n x: Math.min(w === L.Right ? m.right - m.width / 2 : m.right, Math.max(w === L.Right ? m.left : m.left + m.width / 2, u.x)),\n y: Math.min(w === L.Down ? m.bottom - m.height / 2 : m.bottom, Math.max(w === L.Down ? m.top : m.top + m.height / 2, u.y))\n }, _ = w === L.Right && !b || w === L.Left && !y, N = w === L.Down && !S || w === L.Up && !g;\n if (_ && R.x !== u.x) {\n const T = p.scrollLeft + f.x, O = w === L.Right && T <= x.x || w === L.Left && T >= z.x;\n if (O && !f.y) {\n p.scrollTo({\n left: T,\n behavior: a\n });\n return;\n }\n O ? h.x = p.scrollLeft - T : h.x = w === L.Right ? p.scrollLeft - x.x : p.scrollLeft - z.x, h.x && p.scrollBy({\n left: -h.x,\n behavior: a\n });\n break;\n } else if (N && R.y !== u.y) {\n const T = p.scrollTop + f.y, O = w === L.Down && T <= x.y || w === L.Up && T >= z.y;\n if (O && !f.x) {\n p.scrollTo({\n top: T,\n behavior: a\n });\n return;\n }\n O ? h.y = p.scrollTop - T : h.y = w === L.Down ? p.scrollTop - x.y : p.scrollTop - z.y, h.y && p.scrollBy({\n top: -h.y,\n behavior: a\n });\n break;\n }\n }\n this.handleMove(e, Me(Xe(u, this.referenceCoordinates), h));\n }\n }\n }\n handleMove(e, n) {\n const {\n onMove: i\n } = this.props;\n e.preventDefault(), i(n);\n }\n handleEnd(e) {\n const {\n onEnd: n\n } = this.props;\n e.preventDefault(), this.detach(), n();\n }\n handleCancel(e) {\n const {\n onCancel: n\n } = this.props;\n e.preventDefault(), this.detach(), n();\n }\n detach() {\n this.listeners.removeAll(), this.windowListeners.removeAll();\n }\n}\nBt.activators = [{\n eventName: \"onKeyDown\",\n handler: (t, e, n) => {\n let {\n keyboardCodes: i = oi,\n onActivation: r\n } = e, {\n active: s\n } = n;\n const {\n code: l\n } = t.nativeEvent;\n if (i.start.includes(l)) {\n const a = s.activatorNode.current;\n return a && t.target !== a ? !1 : (t.preventDefault(), r == null || r({\n event: t.nativeEvent\n }), !0);\n }\n return !1;\n }\n}];\nfunction En(t) {\n return !!(t && \"distance\" in t);\n}\nfunction Cn(t) {\n return !!(t && \"delay\" in t);\n}\nclass $t {\n constructor(e, n, i) {\n var r;\n i === void 0 && (i = Nr(e.event.target)), this.props = void 0, this.events = void 0, this.autoScrollEnabled = !0, this.document = void 0, this.activated = !1, this.initialCoordinates = void 0, this.timeoutId = null, this.listeners = void 0, this.documentListeners = void 0, this.windowListeners = void 0, this.props = e, this.events = n;\n const {\n event: s\n } = e, {\n target: l\n } = s;\n this.props = e, this.events = n, this.document = Le(l), this.documentListeners = new Be(this.document), this.listeners = new Be(i), this.windowListeners = new Be(q(l)), this.initialCoordinates = (r = ct(s)) != null ? r : ce, this.handleStart = this.handleStart.bind(this), this.handleMove = this.handleMove.bind(this), this.handleEnd = this.handleEnd.bind(this), this.handleCancel = this.handleCancel.bind(this), this.handleKeydown = this.handleKeydown.bind(this), this.removeTextSelection = this.removeTextSelection.bind(this), this.attach();\n }\n attach() {\n const {\n events: e,\n props: {\n options: {\n activationConstraint: n,\n bypassActivationConstraint: i\n }\n }\n } = this;\n if (this.listeners.add(e.move.name, this.handleMove, {\n passive: !1\n }), this.listeners.add(e.end.name, this.handleEnd), e.cancel && this.listeners.add(e.cancel.name, this.handleCancel), this.windowListeners.add(re.Resize, this.handleCancel), this.windowListeners.add(re.DragStart, In), this.windowListeners.add(re.VisibilityChange, this.handleCancel), this.windowListeners.add(re.ContextMenu, In), this.documentListeners.add(re.Keydown, this.handleKeydown), n) {\n if (i != null && i({\n event: this.props.event,\n activeNode: this.props.activeNode,\n options: this.props.options\n }))\n return this.handleStart();\n if (Cn(n)) {\n this.timeoutId = setTimeout(this.handleStart, n.delay), this.handlePending(n);\n return;\n }\n if (En(n)) {\n this.handlePending(n);\n return;\n }\n }\n this.handleStart();\n }\n detach() {\n this.listeners.removeAll(), this.windowListeners.removeAll(), setTimeout(this.documentListeners.removeAll, 50), this.timeoutId !== null && (clearTimeout(this.timeoutId), this.timeoutId = null);\n }\n handlePending(e, n) {\n const {\n active: i,\n onPending: r\n } = this.props;\n r(i, e, this.initialCoordinates, n);\n }\n handleStart() {\n const {\n initialCoordinates: e\n } = this, {\n onStart: n\n } = this.props;\n e && (this.activated = !0, this.documentListeners.add(re.Click, Mr, {\n capture: !0\n }), this.removeTextSelection(), this.documentListeners.add(re.SelectionChange, this.removeTextSelection), n(e));\n }\n handleMove(e) {\n var n;\n const {\n activated: i,\n initialCoordinates: r,\n props: s\n } = this, {\n onMove: l,\n options: {\n activationConstraint: a\n }\n } = s;\n if (!r)\n return;\n const o = (n = ct(e)) != null ? n : ce, c = Xe(r, o);\n if (!i && a) {\n if (En(a)) {\n if (a.tolerance != null && _t(c, a.tolerance))\n return this.handleCancel();\n if (_t(c, a.distance))\n return this.handleStart();\n }\n if (Cn(a) && _t(c, a.tolerance))\n return this.handleCancel();\n this.handlePending(a, c);\n return;\n }\n e.cancelable && e.preventDefault(), l(o);\n }\n handleEnd() {\n const {\n onAbort: e,\n onEnd: n\n } = this.props;\n this.detach(), this.activated || e(this.props.active), n();\n }\n handleCancel() {\n const {\n onAbort: e,\n onCancel: n\n } = this.props;\n this.detach(), this.activated || e(this.props.active), n();\n }\n handleKeydown(e) {\n e.code === L.Esc && this.handleCancel();\n }\n removeTextSelection() {\n var e;\n (e = this.document.getSelection()) == null || e.removeAllRanges();\n }\n}\nconst Lr = {\n cancel: {\n name: \"pointercancel\"\n },\n move: {\n name: \"pointermove\"\n },\n end: {\n name: \"pointerup\"\n }\n};\nclass Yt extends $t {\n constructor(e) {\n const {\n event: n\n } = e, i = Le(n.target);\n super(e, Lr, i);\n }\n}\nYt.activators = [{\n eventName: \"onPointerDown\",\n handler: (t, e) => {\n let {\n nativeEvent: n\n } = t, {\n onActivation: i\n } = e;\n return !n.isPrimary || n.button !== 0 ? !1 : (i == null || i({\n event: n\n }), !0);\n }\n}];\nconst Tr = {\n move: {\n name: \"mousemove\"\n },\n end: {\n name: \"mouseup\"\n }\n};\nvar Lt;\n(function(t) {\n t[t.RightClick = 2] = \"RightClick\";\n})(Lt || (Lt = {}));\nclass Vr extends $t {\n constructor(e) {\n super(e, Tr, Le(e.event.target));\n }\n}\nVr.activators = [{\n eventName: \"onMouseDown\",\n handler: (t, e) => {\n let {\n nativeEvent: n\n } = t, {\n onActivation: i\n } = e;\n return n.button === Lt.RightClick ? !1 : (i == null || i({\n event: n\n }), !0);\n }\n}];\nconst Ot = {\n cancel: {\n name: \"touchcancel\"\n },\n move: {\n name: \"touchmove\"\n },\n end: {\n name: \"touchend\"\n }\n};\nclass Pr extends $t {\n constructor(e) {\n super(e, Ot);\n }\n static setup() {\n return window.addEventListener(Ot.move.name, e, {\n capture: !1,\n passive: !1\n }), function() {\n window.removeEventListener(Ot.move.name, e);\n };\n function e() {\n }\n }\n}\nPr.activators = [{\n eventName: \"onTouchStart\",\n handler: (t, e) => {\n let {\n nativeEvent: n\n } = t, {\n onActivation: i\n } = e;\n const {\n touches: r\n } = n;\n return r.length > 1 ? !1 : (i == null || i({\n event: n\n }), !0);\n }\n}];\nvar $e;\n(function(t) {\n t[t.Pointer = 0] = \"Pointer\", t[t.DraggableRect = 1] = \"DraggableRect\";\n})($e || ($e = {}));\nvar dt;\n(function(t) {\n t[t.TreeOrder = 0] = \"TreeOrder\", t[t.ReversedTreeOrder = 1] = \"ReversedTreeOrder\";\n})(dt || (dt = {}));\nfunction kr(t) {\n let {\n acceleration: e,\n activator: n = $e.Pointer,\n canScroll: i,\n draggingRect: r,\n enabled: s,\n interval: l = 5,\n order: a = dt.TreeOrder,\n pointerCoordinates: o,\n scrollableAncestors: c,\n scrollableAncestorRects: d,\n delta: u,\n threshold: f\n } = t;\n const h = Fr({\n delta: u,\n disabled: !s\n }), [v, p] = Ji(), w = window.React.useRef({\n x: 0,\n y: 0\n }), g = window.React.useRef({\n x: 0,\n y: 0\n }), b = window.React.useMemo(() => {\n switch (n) {\n case $e.Pointer:\n return o ? {\n top: o.y,\n bottom: o.y,\n left: o.x,\n right: o.x\n } : null;\n case $e.DraggableRect:\n return r;\n }\n }, [n, r, o]), y = window.React.useRef(null), S = window.React.useCallback(() => {\n const z = y.current;\n if (!z)\n return;\n const m = w.current.x * g.current.x, R = w.current.y * g.current.y;\n z.scrollBy(m, R);\n }, []), x = window.React.useMemo(() => a === dt.TreeOrder ? [...c].reverse() : c, [a, c]);\n window.React.useEffect(\n () => {\n if (!s || !c.length || !b) {\n p();\n return;\n }\n for (const z of x) {\n if ((i == null ? void 0 : i(z)) === !1)\n continue;\n const m = c.indexOf(z), R = d[m];\n if (!R)\n continue;\n const {\n direction: _,\n speed: N\n } = Ir(z, R, b, e, f);\n for (const T of [\"x\", \"y\"])\n h[T][_[T]] || (N[T] = 0, _[T] = 0);\n if (N.x > 0 || N.y > 0) {\n p(), y.current = z, v(S, l), w.current = N, g.current = _;\n return;\n }\n }\n w.current = {\n x: 0,\n y: 0\n }, g.current = {\n x: 0,\n y: 0\n }, p();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n e,\n S,\n i,\n p,\n s,\n l,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(b),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(h),\n v,\n c,\n x,\n d,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n JSON.stringify(f)\n ]\n );\n}\nconst jr = {\n x: {\n [H.Backward]: !1,\n [H.Forward]: !1\n },\n y: {\n [H.Backward]: !1,\n [H.Forward]: !1\n }\n};\nfunction Fr(t) {\n let {\n delta: e,\n disabled: n\n } = t;\n const i = lt(e);\n return Ge((r) => {\n if (n || !i || !r)\n return jr;\n const s = {\n x: Math.sign(e.x - i.x),\n y: Math.sign(e.y - i.y)\n };\n return {\n x: {\n [H.Backward]: r.x[H.Backward] || s.x === -1,\n [H.Forward]: r.x[H.Forward] || s.x === 1\n },\n y: {\n [H.Backward]: r.y[H.Backward] || s.y === -1,\n [H.Forward]: r.y[H.Forward] || s.y === 1\n }\n };\n }, [n, e, i]);\n}\nfunction Br(t, e) {\n const n = e != null ? t.get(e) : void 0, i = n ? n.node.current : null;\n return Ge((r) => {\n var s;\n return e == null ? null : (s = i ?? r) != null ? s : null;\n }, [i, e]);\n}\nfunction $r(t, e) {\n return window.React.useMemo(() => t.reduce((n, i) => {\n const {\n sensor: r\n } = i, s = r.activators.map((l) => ({\n eventName: l.eventName,\n handler: e(l.handler, i)\n }));\n return [...n, ...s];\n }, []), [t, e]);\n}\nvar We;\n(function(t) {\n t[t.Always = 0] = \"Always\", t[t.BeforeDragging = 1] = \"BeforeDragging\", t[t.WhileDragging = 2] = \"WhileDragging\";\n})(We || (We = {}));\nvar Tt;\n(function(t) {\n t.Optimized = \"optimized\";\n})(Tt || (Tt = {}));\nconst _n = /* @__PURE__ */ new Map();\nfunction Yr(t, e) {\n let {\n dragging: n,\n dependencies: i,\n config: r\n } = e;\n const [s, l] = window.React.useState(null), {\n frequency: a,\n measure: o,\n strategy: c\n } = r, d = window.React.useRef(t), u = w(), f = He(u), h = window.React.useCallback(function(g) {\n g === void 0 && (g = []), !f.current && l((b) => b === null ? g : b.concat(g.filter((y) => !b.includes(y))));\n }, [f]), v = window.React.useRef(null), p = Ge((g) => {\n if (u && !n)\n return _n;\n if (!g || g === _n || d.current !== t || s != null) {\n const b = /* @__PURE__ */ new Map();\n for (let y of t) {\n if (!y)\n continue;\n if (s && s.length > 0 && !s.includes(y.id) && y.rect.current) {\n b.set(y.id, y.rect.current);\n continue;\n }\n const S = y.node.current, x = S ? new Ft(o(S), S) : null;\n y.rect.current = x, x && b.set(y.id, x);\n }\n return b;\n }\n return g;\n }, [t, s, n, u, o]);\n return window.React.useEffect(() => {\n d.current = t;\n }, [t]), window.React.useEffect(\n () => {\n u || h();\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [n, u]\n ), window.React.useEffect(\n () => {\n s && s.length > 0 && l(null);\n },\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [JSON.stringify(s)]\n ), window.React.useEffect(\n () => {\n u || typeof a != \"number\" || v.current !== null || (v.current = setTimeout(() => {\n h(), v.current = null;\n }, a));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [a, u, h, ...i]\n ), {\n droppableRects: p,\n measureDroppableContainers: h,\n measuringScheduled: s != null\n };\n function w() {\n switch (c) {\n case We.Always:\n return !1;\n case We.BeforeDragging:\n return n;\n default:\n return !n;\n }\n }\n}\nfunction Ht(t, e) {\n return Ge((n) => t ? n || (typeof e == \"function\" ? e(t) : t) : null, [e, t]);\n}\nfunction Hr(t, e) {\n return Ht(t, e);\n}\nfunction Xr(t) {\n let {\n callback: e,\n disabled: n\n } = t;\n const i = vt(e), r = window.React.useMemo(() => {\n if (n || typeof window > \"u\" || typeof window.MutationObserver > \"u\")\n return;\n const {\n MutationObserver: s\n } = window;\n return new s(i);\n }, [i, n]);\n return window.React.useEffect(() => () => r == null ? void 0 : r.disconnect(), [r]), r;\n}\nfunction mt(t) {\n let {\n callback: e,\n disabled: n\n } = t;\n const i = vt(e), r = window.React.useMemo(\n () => {\n if (n || typeof window > \"u\" || typeof window.ResizeObserver > \"u\")\n return;\n const {\n ResizeObserver: s\n } = window;\n return new s(i);\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [n]\n );\n return window.React.useEffect(() => () => r == null ? void 0 : r.disconnect(), [r]), r;\n}\nfunction Wr(t) {\n return new Ft(Te(t), t);\n}\nfunction On(t, e, n) {\n e === void 0 && (e = Wr);\n const [i, r] = window.React.useState(null);\n function s() {\n r((o) => {\n if (!t)\n return null;\n if (t.isConnected === !1) {\n var c;\n return (c = o ?? n) != null ? c : null;\n }\n const d = e(t);\n return JSON.stringify(o) === JSON.stringify(d) ? o : d;\n });\n }\n const l = Xr({\n callback(o) {\n if (t)\n for (const c of o) {\n const {\n type: d,\n target: u\n } = c;\n if (d === \"childList\" && u instanceof HTMLElement && u.contains(t)) {\n s();\n break;\n }\n }\n }\n }), a = mt({\n callback: s\n });\n return le(() => {\n s(), t ? (a == null || a.observe(t), l == null || l.observe(document.body, {\n childList: !0,\n subtree: !0\n })) : (a == null || a.disconnect(), l == null || l.disconnect());\n }, [t]), i;\n}\nfunction Kr(t) {\n const e = Ht(t);\n return Jn(t, e);\n}\nconst Nn = [];\nfunction Ur(t) {\n const e = window.React.useRef(t), n = Ge((i) => t ? i && i !== Nn && t && e.current && t.parentNode === e.current.parentNode ? i : wt(t) : Nn, [t]);\n return window.React.useEffect(() => {\n e.current = t;\n }, [t]), n;\n}\nfunction Gr(t) {\n const [e, n] = window.React.useState(null), i = window.React.useRef(t), r = window.React.useCallback((s) => {\n const l = Ct(s.target);\n l && n((a) => a ? (a.set(l, At(l)), new Map(a)) : null);\n }, []);\n return window.React.useEffect(() => {\n const s = i.current;\n if (t !== s) {\n l(s);\n const a = t.map((o) => {\n const c = Ct(o);\n return c ? (c.addEventListener(\"scroll\", r, {\n passive: !0\n }), [c, At(c)]) : null;\n }).filter((o) => o != null);\n n(a.length ? new Map(a) : null), i.current = t;\n }\n return () => {\n l(t), l(s);\n };\n function l(a) {\n a.forEach((o) => {\n const c = Ct(o);\n c == null || c.removeEventListener(\"scroll\", r);\n });\n }\n }, [r, t]), window.React.useMemo(() => t.length ? e ? Array.from(e.values()).reduce((s, l) => Me(s, l), ce) : ri(t) : ce, [t, e]);\n}\nfunction Mn(t, e) {\n e === void 0 && (e = []);\n const n = window.React.useRef(null);\n return window.React.useEffect(\n () => {\n n.current = null;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n e\n ), window.React.useEffect(() => {\n const i = t !== ce;\n i && !n.current && (n.current = t), !i && n.current && (n.current = null);\n }, [t]), n.current ? Xe(t, n.current) : ce;\n}\nfunction qr(t) {\n window.React.useEffect(\n () => {\n if (!ht)\n return;\n const e = t.map((n) => {\n let {\n sensor: i\n } = n;\n return i.setup == null ? void 0 : i.setup();\n });\n return () => {\n for (const n of e)\n n == null || n();\n };\n },\n // TO-DO: Sensors length could theoretically change which would not be a valid dependency\n // eslint-disable-next-line react-hooks/exhaustive-deps\n t.map((e) => {\n let {\n sensor: n\n } = e;\n return n;\n })\n );\n}\nfunction Jr(t, e) {\n return window.React.useMemo(() => t.reduce((n, i) => {\n let {\n eventName: r,\n handler: s\n } = i;\n return n[r] = (l) => {\n s(l, e);\n }, n;\n }, {}), [t, e]);\n}\nfunction ai(t) {\n return window.React.useMemo(() => t ? Rr(t) : null, [t]);\n}\nconst An = [];\nfunction Qr(t, e) {\n e === void 0 && (e = Te);\n const [n] = t, i = ai(n ? q(n) : null), [r, s] = window.React.useState(An);\n function l() {\n s(() => t.length ? t.map((o) => ni(o) ? i : new Ft(e(o), o)) : An);\n }\n const a = mt({\n callback: l\n });\n return le(() => {\n a == null || a.disconnect(), l(), t.forEach((o) => a == null ? void 0 : a.observe(o));\n }, [t]), r;\n}\nfunction li(t) {\n if (!t)\n return null;\n if (t.children.length > 1)\n return t;\n const e = t.children[0];\n return Ue(e) ? e : t;\n}\nfunction Zr(t) {\n let {\n measure: e\n } = t;\n const [n, i] = window.React.useState(null), r = window.React.useCallback((c) => {\n for (const {\n target: d\n } of c)\n if (Ue(d)) {\n i((u) => {\n const f = e(d);\n return u ? {\n ...u,\n width: f.width,\n height: f.height\n } : f;\n });\n break;\n }\n }, [e]), s = mt({\n callback: r\n }), l = window.React.useCallback((c) => {\n const d = li(c);\n s == null || s.disconnect(), d && (s == null || s.observe(d)), i(d ? e(d) : null);\n }, [e, s]), [a, o] = at(l);\n return window.React.useMemo(() => ({\n nodeRef: a,\n rect: n,\n setRef: o\n }), [n, a, o]);\n}\nconst es = [{\n sensor: Yt,\n options: {}\n}, {\n sensor: Bt,\n options: {}\n}], ts = {\n current: {}\n}, st = {\n draggable: {\n measure: Dn\n },\n droppable: {\n measure: Dn,\n strategy: We.WhileDragging,\n frequency: Tt.Optimized\n },\n dragOverlay: {\n measure: Te\n }\n};\nclass Ye extends Map {\n get(e) {\n var n;\n return e != null && (n = super.get(e)) != null ? n : void 0;\n }\n toArray() {\n return Array.from(this.values());\n }\n getEnabled() {\n return this.toArray().filter((e) => {\n let {\n disabled: n\n } = e;\n return !n;\n });\n }\n getNodeFor(e) {\n var n, i;\n return (n = (i = this.get(e)) == null ? void 0 : i.node.current) != null ? n : void 0;\n }\n}\nconst ns = {\n activatorEvent: null,\n active: null,\n activeNode: null,\n activeNodeRect: null,\n collisions: null,\n containerNodeRect: null,\n draggableNodes: /* @__PURE__ */ new Map(),\n droppableRects: /* @__PURE__ */ new Map(),\n droppableContainers: /* @__PURE__ */ new Ye(),\n over: null,\n dragOverlay: {\n nodeRef: {\n current: null\n },\n rect: null,\n setRef: ut\n },\n scrollableAncestors: [],\n scrollableAncestorRects: [],\n measuringConfiguration: st,\n measureDroppableContainers: ut,\n windowRect: null,\n measuringScheduled: !1\n}, ci = {\n activatorEvent: null,\n activators: [],\n active: null,\n activeNodeRect: null,\n ariaDescribedById: {\n draggable: \"\"\n },\n dispatch: ut,\n draggableNodes: /* @__PURE__ */ new Map(),\n over: null,\n measureDroppableContainers: ut\n}, Je = /* @__PURE__ */ window.React.createContext(ci), ui = /* @__PURE__ */ window.React.createContext(ns);\nfunction is() {\n return {\n draggable: {\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n nodes: /* @__PURE__ */ new Map(),\n translate: {\n x: 0,\n y: 0\n }\n },\n droppable: {\n containers: new Ye()\n }\n };\n}\nfunction rs(t, e) {\n switch (e.type) {\n case Y.DragStart:\n return {\n ...t,\n draggable: {\n ...t.draggable,\n initialCoordinates: e.initialCoordinates,\n active: e.active\n }\n };\n case Y.DragMove:\n return t.draggable.active == null ? t : {\n ...t,\n draggable: {\n ...t.draggable,\n translate: {\n x: e.coordinates.x - t.draggable.initialCoordinates.x,\n y: e.coordinates.y - t.draggable.initialCoordinates.y\n }\n }\n };\n case Y.DragEnd:\n case Y.DragCancel:\n return {\n ...t,\n draggable: {\n ...t.draggable,\n active: null,\n initialCoordinates: {\n x: 0,\n y: 0\n },\n translate: {\n x: 0,\n y: 0\n }\n }\n };\n case Y.RegisterDroppable: {\n const {\n element: n\n } = e, {\n id: i\n } = n, r = new Ye(t.droppable.containers);\n return r.set(i, n), {\n ...t,\n droppable: {\n ...t.droppable,\n containers: r\n }\n };\n }\n case Y.SetDroppableDisabled: {\n const {\n id: n,\n key: i,\n disabled: r\n } = e, s = t.droppable.containers.get(n);\n if (!s || i !== s.key)\n return t;\n const l = new Ye(t.droppable.containers);\n return l.set(n, {\n ...s,\n disabled: r\n }), {\n ...t,\n droppable: {\n ...t.droppable,\n containers: l\n }\n };\n }\n case Y.UnregisterDroppable: {\n const {\n id: n,\n key: i\n } = e, r = t.droppable.containers.get(n);\n if (!r || i !== r.key)\n return t;\n const s = new Ye(t.droppable.containers);\n return s.delete(n), {\n ...t,\n droppable: {\n ...t.droppable,\n containers: s\n }\n };\n }\n default:\n return t;\n }\n}\nfunction ss(t) {\n let {\n disabled: e\n } = t;\n const {\n active: n,\n activatorEvent: i,\n draggableNodes: r\n } = window.React.useContext(Je), s = lt(i), l = lt(n == null ? void 0 : n.id);\n return window.React.useEffect(() => {\n if (!e && !i && s && l != null) {\n if (!pt(s) || document.activeElement === s.target)\n return;\n const a = r.get(l);\n if (!a)\n return;\n const {\n activatorNode: o,\n node: c\n } = a;\n if (!o.current && !c.current)\n return;\n requestAnimationFrame(() => {\n for (const d of [o.current, c.current]) {\n if (!d)\n continue;\n const u = er(d);\n if (u) {\n u.focus();\n break;\n }\n }\n });\n }\n }, [i, e, r, l, s]), null;\n}\nfunction di(t, e) {\n let {\n transform: n,\n ...i\n } = e;\n return t != null && t.length ? t.reduce((r, s) => s({\n transform: r,\n ...i\n }), n) : n;\n}\nfunction os(t) {\n return window.React.useMemo(\n () => ({\n draggable: {\n ...st.draggable,\n ...t == null ? void 0 : t.draggable\n },\n droppable: {\n ...st.droppable,\n ...t == null ? void 0 : t.droppable\n },\n dragOverlay: {\n ...st.dragOverlay,\n ...t == null ? void 0 : t.dragOverlay\n }\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [t == null ? void 0 : t.draggable, t == null ? void 0 : t.droppable, t == null ? void 0 : t.dragOverlay]\n );\n}\nfunction as(t) {\n let {\n activeNode: e,\n measure: n,\n initialRect: i,\n config: r = !0\n } = t;\n const s = window.React.useRef(!1), {\n x: l,\n y: a\n } = typeof r == \"boolean\" ? {\n x: r,\n y: r\n } : r;\n le(() => {\n if (!l && !a || !e) {\n s.current = !1;\n return;\n }\n if (s.current || !i)\n return;\n const c = e == null ? void 0 : e.node.current;\n if (!c || c.isConnected === !1)\n return;\n const d = n(c), u = Jn(d, i);\n if (l || (u.x = 0), a || (u.y = 0), s.current = !0, Math.abs(u.x) > 0 || Math.abs(u.y) > 0) {\n const f = Zn(c);\n f && f.scrollBy({\n top: u.y,\n left: u.x\n });\n }\n }, [e, l, a, i, n]);\n}\nconst gt = /* @__PURE__ */ window.React.createContext({\n ...ce,\n scaleX: 1,\n scaleY: 1\n});\nvar Re;\n(function(t) {\n t[t.Uninitialized = 0] = \"Uninitialized\", t[t.Initializing = 1] = \"Initializing\", t[t.Initialized = 2] = \"Initialized\";\n})(Re || (Re = {}));\nconst ls = /* @__PURE__ */ window.React.memo(function(e) {\n var n, i, r, s;\n let {\n id: l,\n accessibility: a,\n autoScroll: o = !0,\n children: c,\n sensors: d = es,\n collisionDetection: u = wr,\n measuring: f,\n modifiers: h,\n ...v\n } = e;\n const p = window.React.useReducer(rs, void 0, is), [w, g] = p, [b, y] = or(), [S, x] = window.React.useState(Re.Uninitialized), z = S === Re.Initialized, {\n draggable: {\n active: m,\n nodes: R,\n translate: _\n },\n droppable: {\n containers: N\n }\n } = w, T = m != null ? R.get(m) : null, O = window.React.useRef({\n initial: null,\n translated: null\n }), E = window.React.useMemo(() => {\n var W;\n return m != null ? {\n id: m,\n // It's possible for the active node to unmount while dragging\n data: (W = T == null ? void 0 : T.data) != null ? W : ts,\n rect: O\n } : null;\n }, [m, T]), P = window.React.useRef(null), [A, V] = window.React.useState(null), [M, j] = window.React.useState(null), K = He(v, Object.values(v)), oe = qe(\"DndDescribedBy\", l), B = window.React.useMemo(() => N.getEnabled(), [N]), $ = os(f), {\n droppableRects: F,\n measureDroppableContainers: U,\n measuringScheduled: ue\n } = Yr(B, {\n dragging: z,\n dependencies: [_.x, _.y],\n config: $.droppable\n }), G = Br(R, m), we = window.React.useMemo(() => M ? ct(M) : null, [M]), C = Ii(), I = Hr(G, $.draggable.measure);\n as({\n activeNode: m != null ? R.get(m) : null,\n config: C.layoutShiftCompensation,\n initialRect: I,\n measure: $.draggable.measure\n });\n const D = On(G, $.draggable.measure, I), k = On(G ? G.parentElement : null), de = window.React.useRef({\n activatorEvent: null,\n active: null,\n activeNode: G,\n collisionRect: null,\n collisions: null,\n droppableRects: F,\n draggableNodes: R,\n draggingNode: null,\n draggingNodeRect: null,\n droppableContainers: N,\n over: null,\n scrollableAncestors: [],\n scrollAdjustedTranslate: null\n }), ze = N.getNodeFor((n = de.current.over) == null ? void 0 : n.id), ve = Zr({\n measure: $.dragOverlay.measure\n }), De = (i = ve.nodeRef.current) != null ? i : G, Ie = z ? (r = ve.rect) != null ? r : D : null, Wt = !!(ve.nodeRef.current && ve.rect), Kt = Kr(Wt ? null : D), bt = ai(De ? q(De) : null), me = Ur(z ? ze ?? G : null), Qe = Qr(me), Ze = di(h, {\n transform: {\n x: _.x - Kt.x,\n y: _.y - Kt.y,\n scaleX: 1,\n scaleY: 1\n },\n activatorEvent: M,\n active: E,\n activeNodeRect: D,\n containerNodeRect: k,\n draggingNodeRect: Ie,\n over: de.current.over,\n overlayNodeRect: ve.rect,\n scrollableAncestors: me,\n scrollableAncestorRects: Qe,\n windowRect: bt\n }), Ut = we ? Me(we, _) : null, Gt = Gr(me), bi = Mn(Gt), yi = Mn(Gt, [D]), Ee = Me(Ze, bi), Ce = Ie ? br(Ie, Ze) : null, Ve = E && Ce ? u({\n active: E,\n collisionRect: Ce,\n droppableRects: F,\n droppableContainers: B,\n pointerCoordinates: Ut\n }) : null, qt = qn(Ve, \"id\"), [ge, Jt] = window.React.useState(null), Si = Wt ? Ze : Me(Ze, yi), Ri = mr(Si, (s = ge == null ? void 0 : ge.rect) != null ? s : null, D), yt = window.React.useRef(null), Qt = window.React.useCallback(\n (W, J) => {\n let {\n sensor: Q,\n options: be\n } = J;\n if (P.current == null)\n return;\n const te = R.get(P.current);\n if (!te)\n return;\n const Z = W.nativeEvent, fe = new Q({\n active: P.current,\n activeNode: te,\n event: Z,\n options: be,\n // Sensors need to be instantiated with refs for arguments that change over time\n // otherwise they are frozen in time with the stale arguments\n context: de,\n onAbort(X) {\n if (!R.get(X))\n return;\n const {\n onDragAbort: he\n } = K.current, pe = {\n id: X\n };\n he == null || he(pe), b({\n type: \"onDragAbort\",\n event: pe\n });\n },\n onPending(X, ye, he, pe) {\n if (!R.get(X))\n return;\n const {\n onDragPending: ke\n } = K.current, Se = {\n id: X,\n constraint: ye,\n initialCoordinates: he,\n offset: pe\n };\n ke == null || ke(Se), b({\n type: \"onDragPending\",\n event: Se\n });\n },\n onStart(X) {\n const ye = P.current;\n if (ye == null)\n return;\n const he = R.get(ye);\n if (!he)\n return;\n const {\n onDragStart: pe\n } = K.current, Pe = {\n activatorEvent: Z,\n active: {\n id: ye,\n data: he.data,\n rect: O\n }\n };\n window.ReactDOM.unstable_batchedUpdates(() => {\n pe == null || pe(Pe), x(Re.Initializing), g({\n type: Y.DragStart,\n initialCoordinates: X,\n active: ye\n }), b({\n type: \"onDragStart\",\n event: Pe\n }), V(yt.current), j(Z);\n });\n },\n onMove(X) {\n g({\n type: Y.DragMove,\n coordinates: X\n });\n },\n onEnd: _e(Y.DragEnd),\n onCancel: _e(Y.DragCancel)\n });\n yt.current = fe;\n function _e(X) {\n return async function() {\n const {\n active: he,\n collisions: pe,\n over: Pe,\n scrollAdjustedTranslate: ke\n } = de.current;\n let Se = null;\n if (he && ke) {\n const {\n cancelDrop: je\n } = K.current;\n Se = {\n activatorEvent: Z,\n active: he,\n collisions: pe,\n delta: ke,\n over: Pe\n }, X === Y.DragEnd && typeof je == \"function\" && await Promise.resolve(je(Se)) && (X = Y.DragCancel);\n }\n P.current = null, window.ReactDOM.unstable_batchedUpdates(() => {\n g({\n type: X\n }), x(Re.Uninitialized), Jt(null), V(null), j(null), yt.current = null;\n const je = X === Y.DragEnd ? \"onDragEnd\" : \"onDragCancel\";\n if (Se) {\n const St = K.current[je];\n St == null || St(Se), b({\n type: je,\n event: Se\n });\n }\n });\n };\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [R]\n ), xi = window.React.useCallback((W, J) => (Q, be) => {\n const te = Q.nativeEvent, Z = R.get(be);\n if (\n // Another sensor is already instantiating\n P.current !== null || // No active draggable\n !Z || // Event has already been captured\n te.dndKit || te.defaultPrevented\n )\n return;\n const fe = {\n active: Z\n };\n W(Q, J.options, fe) === !0 && (te.dndKit = {\n capturedBy: J.sensor\n }, P.current = be, Qt(Q, J));\n }, [R, Qt]), Zt = $r(d, xi);\n qr(d), le(() => {\n D && S === Re.Initializing && x(Re.Initialized);\n }, [D, S]), window.React.useEffect(\n () => {\n const {\n onDragMove: W\n } = K.current, {\n active: J,\n activatorEvent: Q,\n collisions: be,\n over: te\n } = de.current;\n if (!J || !Q)\n return;\n const Z = {\n active: J,\n activatorEvent: Q,\n collisions: be,\n delta: {\n x: Ee.x,\n y: Ee.y\n },\n over: te\n };\n window.ReactDOM.unstable_batchedUpdates(() => {\n W == null || W(Z), b({\n type: \"onDragMove\",\n event: Z\n });\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [Ee.x, Ee.y]\n ), window.React.useEffect(\n () => {\n const {\n active: W,\n activatorEvent: J,\n collisions: Q,\n droppableContainers: be,\n scrollAdjustedTranslate: te\n } = de.current;\n if (!W || P.current == null || !J || !te)\n return;\n const {\n onDragOver: Z\n } = K.current, fe = be.get(qt), _e = fe && fe.rect.current ? {\n id: fe.id,\n rect: fe.rect.current,\n data: fe.data,\n disabled: fe.disabled\n } : null, X = {\n active: W,\n activatorEvent: J,\n collisions: Q,\n delta: {\n x: te.x,\n y: te.y\n },\n over: _e\n };\n window.ReactDOM.unstable_batchedUpdates(() => {\n Jt(_e), Z == null || Z(X), b({\n type: \"onDragOver\",\n event: X\n });\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [qt]\n ), le(() => {\n de.current = {\n activatorEvent: M,\n active: E,\n activeNode: G,\n collisionRect: Ce,\n collisions: Ve,\n droppableRects: F,\n draggableNodes: R,\n draggingNode: De,\n draggingNodeRect: Ie,\n droppableContainers: N,\n over: ge,\n scrollableAncestors: me,\n scrollAdjustedTranslate: Ee\n }, O.current = {\n initial: Ie,\n translated: Ce\n };\n }, [E, G, Ve, Ce, R, De, Ie, F, N, ge, me, Ee]), kr({\n ...C,\n delta: _,\n draggingRect: Ce,\n pointerCoordinates: Ut,\n scrollableAncestors: me,\n scrollableAncestorRects: Qe\n });\n const zi = window.React.useMemo(() => ({\n active: E,\n activeNode: G,\n activeNodeRect: D,\n activatorEvent: M,\n collisions: Ve,\n containerNodeRect: k,\n dragOverlay: ve,\n draggableNodes: R,\n droppableContainers: N,\n droppableRects: F,\n over: ge,\n measureDroppableContainers: U,\n scrollableAncestors: me,\n scrollableAncestorRects: Qe,\n measuringConfiguration: $,\n measuringScheduled: ue,\n windowRect: bt\n }), [E, G, D, M, Ve, k, ve, R, N, F, ge, U, me, Qe, $, ue, bt]), Di = window.React.useMemo(() => ({\n activatorEvent: M,\n activators: Zt,\n active: E,\n activeNodeRect: D,\n ariaDescribedById: {\n draggable: oe\n },\n dispatch: g,\n draggableNodes: R,\n over: ge,\n measureDroppableContainers: U\n }), [M, Zt, E, D, g, oe, R, ge, U]);\n return window.React.createElement(Kn.Provider, {\n value: y\n }, window.React.createElement(Je.Provider, {\n value: Di\n }, window.React.createElement(ui.Provider, {\n value: zi\n }, window.React.createElement(gt.Provider, {\n value: Ri\n }, c)), window.React.createElement(ss, {\n disabled: (a == null ? void 0 : a.restoreFocus) === !1\n })), window.React.createElement(cr, {\n ...a,\n hiddenTextDescribedById: oe\n }));\n function Ii() {\n const W = (A == null ? void 0 : A.autoScrollEnabled) === !1, J = typeof o == \"object\" ? o.enabled === !1 : o === !1, Q = z && !W && !J;\n return typeof o == \"object\" ? {\n ...o,\n enabled: Q\n } : {\n enabled: Q\n };\n }\n}), cs = /* @__PURE__ */ window.React.createContext(null), Ln = \"button\", us = \"Draggable\";\nfunction ds(t) {\n let {\n id: e,\n data: n,\n disabled: i = !1,\n attributes: r\n } = t;\n const s = qe(us), {\n activators: l,\n activatorEvent: a,\n active: o,\n activeNodeRect: c,\n ariaDescribedById: d,\n draggableNodes: u,\n over: f\n } = window.React.useContext(Je), {\n role: h = Ln,\n roleDescription: v = \"draggable\",\n tabIndex: p = 0\n } = r ?? {}, w = (o == null ? void 0 : o.id) === e, g = window.React.useContext(w ? gt : cs), [b, y] = at(), [S, x] = at(), z = Jr(l, e), m = He(n);\n le(\n () => (u.set(e, {\n id: e,\n key: s,\n node: b,\n activatorNode: S,\n data: m\n }), () => {\n const _ = u.get(e);\n _ && _.key === s && u.delete(e);\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [u, e]\n );\n const R = window.React.useMemo(() => ({\n role: h,\n tabIndex: p,\n \"aria-disabled\": i,\n \"aria-pressed\": w && h === Ln ? !0 : void 0,\n \"aria-roledescription\": v,\n \"aria-describedby\": d.draggable\n }), [i, h, p, w, v, d.draggable]);\n return {\n active: o,\n activatorEvent: a,\n activeNodeRect: c,\n attributes: R,\n isDragging: w,\n listeners: i ? void 0 : z,\n node: b,\n over: f,\n setNodeRef: y,\n setActivatorNodeRef: x,\n transform: g\n };\n}\nfunction fi() {\n return window.React.useContext(ui);\n}\nconst fs = \"Droppable\", hs = {\n timeout: 25\n};\nfunction vs(t) {\n let {\n data: e,\n disabled: n = !1,\n id: i,\n resizeObserverConfig: r\n } = t;\n const s = qe(fs), {\n active: l,\n dispatch: a,\n over: o,\n measureDroppableContainers: c\n } = window.React.useContext(Je), d = window.React.useRef({\n disabled: n\n }), u = window.React.useRef(!1), f = window.React.useRef(null), h = window.React.useRef(null), {\n disabled: v,\n updateMeasurementsFor: p,\n timeout: w\n } = {\n ...hs,\n ...r\n }, g = He(p ?? i), b = window.React.useCallback(\n () => {\n if (!u.current) {\n u.current = !0;\n return;\n }\n h.current != null && clearTimeout(h.current), h.current = setTimeout(() => {\n c(Array.isArray(g.current) ? g.current : [g.current]), h.current = null;\n }, w);\n },\n //eslint-disable-next-line react-hooks/exhaustive-deps\n [w]\n ), y = mt({\n callback: b,\n disabled: v || !l\n }), S = window.React.useCallback((R, _) => {\n y && (_ && (y.unobserve(_), u.current = !1), R && y.observe(R));\n }, [y]), [x, z] = at(S), m = He(e);\n return window.React.useEffect(() => {\n !y || !x.current || (y.disconnect(), u.current = !1, y.observe(x.current));\n }, [x, y]), window.React.useEffect(\n () => (a({\n type: Y.RegisterDroppable,\n element: {\n id: i,\n key: s,\n disabled: n,\n node: x,\n rect: f,\n data: m\n }\n }), () => a({\n type: Y.UnregisterDroppable,\n key: s,\n id: i\n })),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [i]\n ), window.React.useEffect(() => {\n n !== d.current.disabled && (a({\n type: Y.SetDroppableDisabled,\n id: i,\n key: s,\n disabled: n\n }), d.current.disabled = n);\n }, [i, s, n, a]), {\n active: l,\n rect: f,\n isOver: (o == null ? void 0 : o.id) === i,\n node: x,\n over: o,\n setNodeRef: z\n };\n}\nfunction ps(t) {\n let {\n animation: e,\n children: n\n } = t;\n const [i, r] = window.React.useState(null), [s, l] = window.React.useState(null), a = lt(n);\n return !n && !i && a && r(a), le(() => {\n if (!s)\n return;\n const o = i == null ? void 0 : i.key, c = i == null ? void 0 : i.props.id;\n if (o == null || c == null) {\n r(null);\n return;\n }\n Promise.resolve(e(c, s)).then(() => {\n r(null);\n });\n }, [e, i, s]), window.React.createElement(window.React.Fragment, null, n, i ? window.React.cloneElement(i, {\n ref: l\n }) : null);\n}\nconst ws = {\n x: 0,\n y: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction ms(t) {\n let {\n children: e\n } = t;\n return window.React.createElement(Je.Provider, {\n value: ci\n }, window.React.createElement(gt.Provider, {\n value: ws\n }, e));\n}\nconst gs = {\n position: \"fixed\",\n touchAction: \"none\"\n}, bs = (t) => pt(t) ? \"transform 250ms ease\" : void 0, ys = /* @__PURE__ */ window.React.forwardRef((t, e) => {\n let {\n as: n,\n activatorEvent: i,\n adjustScale: r,\n children: s,\n className: l,\n rect: a,\n style: o,\n transform: c,\n transition: d = bs\n } = t;\n if (!a)\n return null;\n const u = r ? c : {\n ...c,\n scaleX: 1,\n scaleY: 1\n }, f = {\n ...gs,\n width: a.width,\n height: a.height,\n top: a.top,\n left: a.left,\n transform: xe.Transform.toString(u),\n transformOrigin: r && i ? dr(i, a) : void 0,\n transition: typeof d == \"function\" ? d(i) : d,\n ...o\n };\n return window.React.createElement(n, {\n className: l,\n style: f,\n ref: e\n }, s);\n}), Ss = (t) => (e) => {\n let {\n active: n,\n dragOverlay: i\n } = e;\n const r = {}, {\n styles: s,\n className: l\n } = t;\n if (s != null && s.active)\n for (const [a, o] of Object.entries(s.active))\n o !== void 0 && (r[a] = n.node.style.getPropertyValue(a), n.node.style.setProperty(a, o));\n if (s != null && s.dragOverlay)\n for (const [a, o] of Object.entries(s.dragOverlay))\n o !== void 0 && i.node.style.setProperty(a, o);\n return l != null && l.active && n.node.classList.add(l.active), l != null && l.dragOverlay && i.node.classList.add(l.dragOverlay), function() {\n for (const [o, c] of Object.entries(r))\n n.node.style.setProperty(o, c);\n l != null && l.active && n.node.classList.remove(l.active);\n };\n}, Rs = (t) => {\n let {\n transform: {\n initial: e,\n final: n\n }\n } = t;\n return [{\n transform: xe.Transform.toString(e)\n }, {\n transform: xe.Transform.toString(n)\n }];\n}, xs = {\n duration: 250,\n easing: \"ease\",\n keyframes: Rs,\n sideEffects: /* @__PURE__ */ Ss({\n styles: {\n active: {\n opacity: \"0\"\n }\n }\n })\n};\nfunction zs(t) {\n let {\n config: e,\n draggableNodes: n,\n droppableContainers: i,\n measuringConfiguration: r\n } = t;\n return vt((s, l) => {\n if (e === null)\n return;\n const a = n.get(s);\n if (!a)\n return;\n const o = a.node.current;\n if (!o)\n return;\n const c = li(l);\n if (!c)\n return;\n const {\n transform: d\n } = q(l).getComputedStyle(l), u = Qn(d);\n if (!u)\n return;\n const f = typeof e == \"function\" ? e : Ds(e);\n return si(o, r.draggable.measure), f({\n active: {\n id: s,\n data: a.data,\n node: o,\n rect: r.draggable.measure(o)\n },\n draggableNodes: n,\n dragOverlay: {\n node: l,\n rect: r.dragOverlay.measure(c)\n },\n droppableContainers: i,\n measuringConfiguration: r,\n transform: u\n });\n });\n}\nfunction Ds(t) {\n const {\n duration: e,\n easing: n,\n sideEffects: i,\n keyframes: r\n } = {\n ...xs,\n ...t\n };\n return (s) => {\n let {\n active: l,\n dragOverlay: a,\n transform: o,\n ...c\n } = s;\n if (!e)\n return;\n const d = {\n x: a.rect.left - l.rect.left,\n y: a.rect.top - l.rect.top\n }, u = {\n scaleX: o.scaleX !== 1 ? l.rect.width * o.scaleX / a.rect.width : 1,\n scaleY: o.scaleY !== 1 ? l.rect.height * o.scaleY / a.rect.height : 1\n }, f = {\n x: o.x - d.x,\n y: o.y - d.y,\n ...u\n }, h = r({\n ...c,\n active: l,\n dragOverlay: a,\n transform: {\n initial: o,\n final: f\n }\n }), [v] = h, p = h[h.length - 1];\n if (JSON.stringify(v) === JSON.stringify(p))\n return;\n const w = i == null ? void 0 : i({\n active: l,\n dragOverlay: a,\n ...c\n }), g = a.node.animate(h, {\n duration: e,\n easing: n,\n fill: \"forwards\"\n });\n return new Promise((b) => {\n g.onfinish = () => {\n w == null || w(), b();\n };\n });\n };\n}\nlet Tn = 0;\nfunction Is(t) {\n return window.React.useMemo(() => {\n if (t != null)\n return Tn++, Tn;\n }, [t]);\n}\nconst Es = /* @__PURE__ */ window.React.memo((t) => {\n let {\n adjustScale: e = !1,\n children: n,\n dropAnimation: i,\n style: r,\n transition: s,\n modifiers: l,\n wrapperElement: a = \"div\",\n className: o,\n zIndex: c = 999\n } = t;\n const {\n activatorEvent: d,\n active: u,\n activeNodeRect: f,\n containerNodeRect: h,\n draggableNodes: v,\n droppableContainers: p,\n dragOverlay: w,\n over: g,\n measuringConfiguration: b,\n scrollableAncestors: y,\n scrollableAncestorRects: S,\n windowRect: x\n } = fi(), z = window.React.useContext(gt), m = Is(u == null ? void 0 : u.id), R = di(l, {\n activatorEvent: d,\n active: u,\n activeNodeRect: f,\n containerNodeRect: h,\n draggingNodeRect: w.rect,\n over: g,\n overlayNodeRect: w.rect,\n scrollableAncestors: y,\n scrollableAncestorRects: S,\n transform: z,\n windowRect: x\n }), _ = Ht(f), N = zs({\n config: i,\n draggableNodes: v,\n droppableContainers: p,\n measuringConfiguration: b\n }), T = _ ? w.setRef : void 0;\n return window.React.createElement(ms, null, window.React.createElement(ps, {\n animation: N\n }, u && m ? window.React.createElement(ys, {\n key: m,\n id: u.id,\n ref: T,\n as: a,\n activatorEvent: d,\n adjustScale: e,\n className: o,\n transition: s,\n rect: _,\n style: {\n zIndex: c,\n ...r\n },\n transform: R\n }, n) : null));\n});\nfunction Xt(t, e, n) {\n const i = t.slice();\n return i.splice(n < 0 ? i.length + n : n, 0, i.splice(e, 1)[0]), i;\n}\nfunction Cs(t, e) {\n return t.reduce((n, i, r) => {\n const s = e.get(i);\n return s && (n[r] = s), n;\n }, Array(t.length));\n}\nfunction it(t) {\n return t !== null && t >= 0;\n}\nfunction _s(t, e) {\n if (t === e)\n return !0;\n if (t.length !== e.length)\n return !1;\n for (let n = 0; n < t.length; n++)\n if (t[n] !== e[n])\n return !1;\n return !0;\n}\nfunction Os(t) {\n return typeof t == \"boolean\" ? {\n draggable: t,\n droppable: t\n } : t;\n}\nconst hi = (t) => {\n let {\n rects: e,\n activeIndex: n,\n overIndex: i,\n index: r\n } = t;\n const s = Xt(e, i, n), l = e[r], a = s[r];\n return !a || !l ? null : {\n x: a.left - l.left,\n y: a.top - l.top,\n scaleX: a.width / l.width,\n scaleY: a.height / l.height\n };\n}, rt = {\n scaleX: 1,\n scaleY: 1\n}, Ns = (t) => {\n var e;\n let {\n activeIndex: n,\n activeNodeRect: i,\n index: r,\n rects: s,\n overIndex: l\n } = t;\n const a = (e = s[n]) != null ? e : i;\n if (!a)\n return null;\n if (r === n) {\n const c = s[l];\n return c ? {\n x: 0,\n y: n < l ? c.top + c.height - (a.top + a.height) : c.top - a.top,\n ...rt\n } : null;\n }\n const o = Ms(s, r, n);\n return r > n && r <= l ? {\n x: 0,\n y: -a.height - o,\n ...rt\n } : r < n && r >= l ? {\n x: 0,\n y: a.height + o,\n ...rt\n } : {\n x: 0,\n y: 0,\n ...rt\n };\n};\nfunction Ms(t, e, n) {\n const i = t[e], r = t[e - 1], s = t[e + 1];\n return i ? n < e ? r ? i.top - (r.top + r.height) : s ? s.top - (i.top + i.height) : 0 : s ? s.top - (i.top + i.height) : r ? i.top - (r.top + r.height) : 0 : 0;\n}\nconst vi = \"Sortable\", pi = /* @__PURE__ */ window.React.createContext({\n activeIndex: -1,\n containerId: vi,\n disableTransforms: !1,\n items: [],\n overIndex: -1,\n useDragOverlay: !1,\n sortedRects: [],\n strategy: hi,\n disabled: {\n draggable: !1,\n droppable: !1\n }\n});\nfunction As(t) {\n let {\n children: e,\n id: n,\n items: i,\n strategy: r = hi,\n disabled: s = !1\n } = t;\n const {\n active: l,\n dragOverlay: a,\n droppableRects: o,\n over: c,\n measureDroppableContainers: d\n } = fi(), u = qe(vi, n), f = a.rect !== null, h = window.React.useMemo(() => i.map((z) => typeof z == \"object\" && \"id\" in z ? z.id : z), [i]), v = l != null, p = l ? h.indexOf(l.id) : -1, w = c ? h.indexOf(c.id) : -1, g = window.React.useRef(h), b = !_s(h, g.current), y = w !== -1 && p === -1 || b, S = Os(s);\n le(() => {\n b && v && d(h);\n }, [b, h, v, d]), window.React.useEffect(() => {\n g.current = h;\n }, [h]);\n const x = window.React.useMemo(\n () => ({\n activeIndex: p,\n containerId: u,\n disabled: S,\n disableTransforms: y,\n items: h,\n overIndex: w,\n useDragOverlay: f,\n sortedRects: Cs(h, o),\n strategy: r\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [p, u, S.draggable, S.droppable, y, h, w, o, f, r]\n );\n return window.React.createElement(pi.Provider, {\n value: x\n }, e);\n}\nconst Ls = (t) => {\n let {\n id: e,\n items: n,\n activeIndex: i,\n overIndex: r\n } = t;\n return Xt(n, i, r).indexOf(e);\n}, Ts = (t) => {\n let {\n containerId: e,\n isSorting: n,\n wasDragging: i,\n index: r,\n items: s,\n newIndex: l,\n previousItems: a,\n previousContainerId: o,\n transition: c\n } = t;\n return !c || !i || a !== s && r === l ? !1 : n ? !0 : l !== r && e === o;\n}, Vs = {\n duration: 200,\n easing: \"ease\"\n}, wi = \"transform\", Ps = /* @__PURE__ */ xe.Transition.toString({\n property: wi,\n duration: 0,\n easing: \"linear\"\n}), ks = {\n roleDescription: \"sortable\"\n};\nfunction js(t) {\n let {\n disabled: e,\n index: n,\n node: i,\n rect: r\n } = t;\n const [s, l] = window.React.useState(null), a = window.React.useRef(n);\n return le(() => {\n if (!e && n !== a.current && i.current) {\n const o = r.current;\n if (o) {\n const c = Te(i.current, {\n ignoreTransform: !0\n }), d = {\n x: o.left - c.left,\n y: o.top - c.top,\n scaleX: o.width / c.width,\n scaleY: o.height / c.height\n };\n (d.x || d.y) && l(d);\n }\n }\n n !== a.current && (a.current = n);\n }, [e, n, i, r]), window.React.useEffect(() => {\n s && l(null);\n }, [s]), s;\n}\nfunction Fs(t) {\n let {\n animateLayoutChanges: e = Ts,\n attributes: n,\n disabled: i,\n data: r,\n getNewIndex: s = Ls,\n id: l,\n strategy: a,\n resizeObserverConfig: o,\n transition: c = Vs\n } = t;\n const {\n items: d,\n containerId: u,\n activeIndex: f,\n disabled: h,\n disableTransforms: v,\n sortedRects: p,\n overIndex: w,\n useDragOverlay: g,\n strategy: b\n } = window.React.useContext(pi), y = Bs(i, h), S = d.indexOf(l), x = window.React.useMemo(() => ({\n sortable: {\n containerId: u,\n index: S,\n items: d\n },\n ...r\n }), [u, r, S, d]), z = window.React.useMemo(() => d.slice(d.indexOf(l)), [d, l]), {\n rect: m,\n node: R,\n isOver: _,\n setNodeRef: N\n } = vs({\n id: l,\n data: x,\n disabled: y.droppable,\n resizeObserverConfig: {\n updateMeasurementsFor: z,\n ...o\n }\n }), {\n active: T,\n activatorEvent: O,\n activeNodeRect: E,\n attributes: P,\n setNodeRef: A,\n listeners: V,\n isDragging: M,\n over: j,\n setActivatorNodeRef: K,\n transform: oe\n } = ds({\n id: l,\n data: x,\n attributes: {\n ...ks,\n ...n\n },\n disabled: y.draggable\n }), B = qi(N, A), $ = !!T, F = $ && !v && it(f) && it(w), U = !g && M, ue = U && F ? oe : null, we = F ? ue ?? (a ?? b)({\n rects: p,\n activeNodeRect: E,\n activeIndex: f,\n overIndex: w,\n index: S\n }) : null, C = it(f) && it(w) ? s({\n id: l,\n items: d,\n activeIndex: f,\n overIndex: w\n }) : S, I = T == null ? void 0 : T.id, D = window.React.useRef({\n activeId: I,\n items: d,\n newIndex: C,\n containerId: u\n }), k = d !== D.current.items, de = e({\n active: T,\n containerId: u,\n isDragging: M,\n isSorting: $,\n id: l,\n index: S,\n items: d,\n newIndex: D.current.newIndex,\n previousItems: D.current.items,\n previousContainerId: D.current.containerId,\n transition: c,\n wasDragging: D.current.activeId != null\n }), ze = js({\n disabled: !de,\n index: S,\n node: R,\n rect: m\n });\n return window.React.useEffect(() => {\n $ && D.current.newIndex !== C && (D.current.newIndex = C), u !== D.current.containerId && (D.current.containerId = u), d !== D.current.items && (D.current.items = d);\n }, [$, C, u, d]), window.React.useEffect(() => {\n if (I === D.current.activeId)\n return;\n if (I != null && D.current.activeId == null) {\n D.current.activeId = I;\n return;\n }\n const De = setTimeout(() => {\n D.current.activeId = I;\n }, 50);\n return () => clearTimeout(De);\n }, [I]), {\n active: T,\n activeIndex: f,\n attributes: P,\n data: x,\n rect: m,\n index: S,\n newIndex: C,\n items: d,\n isOver: _,\n isSorting: $,\n isDragging: M,\n listeners: V,\n node: R,\n overIndex: w,\n over: j,\n setNodeRef: B,\n setActivatorNodeRef: K,\n setDroppableNodeRef: N,\n setDraggableNodeRef: A,\n transform: ze ?? we,\n transition: ve()\n };\n function ve() {\n if (\n // Temporarily disable transitions for a single frame to set up derived transforms\n ze || // Or to prevent items jumping to back to their \"new\" position when items change\n k && D.current.newIndex === S\n )\n return Ps;\n if (!(U && !pt(O) || !c) && ($ || de))\n return xe.Transition.toString({\n ...c,\n property: wi\n });\n }\n}\nfunction Bs(t, e) {\n var n, i;\n return typeof t == \"boolean\" ? {\n draggable: t,\n // Backwards compatibility\n droppable: !1\n } : {\n draggable: (n = t == null ? void 0 : t.draggable) != null ? n : e.draggable,\n droppable: (i = t == null ? void 0 : t.droppable) != null ? i : e.droppable\n };\n}\nfunction ft(t) {\n if (!t)\n return !1;\n const e = t.data.current;\n return !!(e && \"sortable\" in e && typeof e.sortable == \"object\" && \"containerId\" in e.sortable && \"items\" in e.sortable && \"index\" in e.sortable);\n}\nconst $s = [L.Down, L.Right, L.Up, L.Left], Ys = (t, e) => {\n let {\n context: {\n active: n,\n collisionRect: i,\n droppableRects: r,\n droppableContainers: s,\n over: l,\n scrollableAncestors: a\n }\n } = e;\n if ($s.includes(t.code)) {\n if (t.preventDefault(), !n || !i)\n return;\n const o = [];\n s.getEnabled().forEach((u) => {\n if (!u || u != null && u.disabled)\n return;\n const f = r.get(u.id);\n if (f)\n switch (t.code) {\n case L.Down:\n i.top < f.top && o.push(u);\n break;\n case L.Up:\n i.top > f.top && o.push(u);\n break;\n case L.Left:\n i.left > f.left && o.push(u);\n break;\n case L.Right:\n i.left < f.left && o.push(u);\n break;\n }\n });\n const c = vr({\n collisionRect: i,\n droppableRects: r,\n droppableContainers: o\n });\n let d = qn(c, \"id\");\n if (d === (l == null ? void 0 : l.id) && c.length > 1 && (d = c[1].id), d != null) {\n const u = s.get(n.id), f = s.get(d), h = f ? r.get(f.id) : null, v = f == null ? void 0 : f.node.current;\n if (v && h && u && f) {\n const w = wt(v).some((z, m) => a[m] !== z), g = mi(u, f), b = Hs(u, f), y = w || !g ? {\n x: 0,\n y: 0\n } : {\n x: b ? i.width - h.width : 0,\n y: b ? i.height - h.height : 0\n }, S = {\n x: h.left,\n y: h.top\n };\n return y.x && y.y ? S : Xe(S, y);\n }\n }\n }\n};\nfunction mi(t, e) {\n return !ft(t) || !ft(e) ? !1 : t.data.current.sortable.containerId === e.data.current.sortable.containerId;\n}\nfunction Hs(t, e) {\n return !ft(t) || !ft(e) || !mi(t, e) ? !1 : t.data.current.sortable.index < e.data.current.sortable.index;\n}\nfunction Xs(t) {\n return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, \"default\") ? t.default : t;\n}\nvar Nt = { exports: {} };\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\nvar Vn;\nfunction Ws() {\n return Vn || (Vn = 1, (function(t) {\n (function() {\n var e = {}.hasOwnProperty;\n function n() {\n for (var s = \"\", l = 0; l < arguments.length; l++) {\n var a = arguments[l];\n a && (s = r(s, i(a)));\n }\n return s;\n }\n function i(s) {\n if (typeof s == \"string\" || typeof s == \"number\")\n return s;\n if (typeof s != \"object\")\n return \"\";\n if (Array.isArray(s))\n return n.apply(null, s);\n if (s.toString !== Object.prototype.toString && !s.toString.toString().includes(\"[native code]\"))\n return s.toString();\n var l = \"\";\n for (var a in s)\n e.call(s, a) && s[a] && (l = r(l, a));\n return l;\n }\n function r(s, l) {\n return l ? s ? s + \" \" + l : s + l : s;\n }\n t.exports ? (n.default = n, t.exports = n) : window.classNames = n;\n })();\n })(Nt)), Nt.exports;\n}\nvar Ks = Ws();\nconst gi = /* @__PURE__ */ Xs(Ks);\nfunction Us({\n id: t,\n item: e,\n renderItem: n,\n disabled: i,\n itemWrapperClassName: r,\n activeId: s\n}) {\n const {\n attributes: l,\n listeners: a,\n setNodeRef: o,\n setActivatorNodeRef: c,\n transform: d,\n transition: u,\n isDragging: f,\n over: h\n } = Fs({ id: t, disabled: i }), v = {\n transform: xe.Transform.toString(d),\n transition: u,\n opacity: f ? 0.5 : 1,\n zIndex: f ? 1 : 0\n }, p = (h == null ? void 0 : h.id) === t && s !== t, w = {\n ref: c,\n ...a,\n ...l\n };\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n ref: o,\n style: v,\n className: gi(r),\n \"data-sortable-wrapper\": \"true\"\n },\n n(e, { dragHandleProps: w, isDragging: f, isDragOver: p })\n );\n}\nfunction Gs({\n item: t,\n renderItem: e,\n itemWrapperClassName: n\n}) {\n const i = {};\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: gi(n, \"bg-white\"),\n style: {\n boxShadow: \"0 4px 12px rgba(0,0,0,0.15)\",\n transform: \"scale(1.02)\",\n cursor: \"grabbing\"\n }\n },\n e(t, {\n dragHandleProps: i,\n isDragging: !0,\n isDragOver: !1\n })\n );\n}\nfunction Js(t) {\n const {\n items: e,\n onChange: n,\n getId: i,\n renderItem: r,\n validateReorder: s,\n renderError: l,\n disabled: a = !1,\n className: o,\n itemWrapperClassName: c\n } = t, [d, u] = window.wp.element.useState(null), [f, h] = window.wp.element.useState(null), v = window.wp.element.useMemo(() => e.map(i), [e, i]), p = ur(\n Rn(Yt, {\n activationConstraint: {\n distance: 5\n // 5px movement required before drag starts\n }\n }),\n Rn(Bt, {\n coordinateGetter: Ys\n })\n ), w = (S) => {\n u(S.active.id), h(null);\n }, g = (S) => {\n const { active: x, over: z } = S;\n if (u(null), !z || x.id === z.id)\n return;\n const m = v.indexOf(x.id), R = v.indexOf(z.id);\n if (m === -1 || R === -1)\n return;\n const _ = Xt(e, m, R);\n if (s) {\n const N = s(_);\n if (N) {\n h(N);\n return;\n }\n }\n h(null), n(_);\n }, b = () => {\n u(null);\n }, y = d !== null ? e.find((S) => i(S) === d) : null;\n return /* @__PURE__ */ React.createElement(\"div\", { className: o }, f && l ? l(f) : null, /* @__PURE__ */ React.createElement(\n ls,\n {\n sensors: p,\n collisionDetection: hr,\n onDragStart: w,\n onDragEnd: g,\n onDragCancel: b\n },\n /* @__PURE__ */ React.createElement(As, { items: v, strategy: Ns }, /* @__PURE__ */ React.createElement(\"div\", { className: \"flex flex-col gap-2\" }, e.map((S) => {\n const x = i(S);\n return /* @__PURE__ */ React.createElement(\n Us,\n {\n key: x,\n id: x,\n item: S,\n renderItem: r,\n disabled: a,\n itemWrapperClassName: c,\n activeId: d\n }\n );\n }))),\n /* @__PURE__ */ React.createElement(Es, null, y ? /* @__PURE__ */ React.createElement(\n Gs,\n {\n item: y,\n renderItem: r,\n itemWrapperClassName: c\n }\n ) : null)\n ));\n}\nexport {\n qs as Allotment,\n Js as SortableList\n};\n//# sourceMappingURL=libraries.js.map\n","import { Allotment } from '@blockbite/libraries';\nimport { useLayoutEffect, useRef } from '@wordpress/element';\n\nexport const SplitPane = ({\n pane1,\n pane2,\n handle,\n className = '',\n minSize1 = 150,\n minSize2 = 150,\n}) => {\n const allotmentRef = useRef(null);\n const hasPane2 = !!pane2;\n const prevHasPane2 = useRef(false);\n const savedSizesRef = useRef(null);\n const isFirstMount = useRef(true);\n\n // Load saved sizes from localStorage on mount\n if (isFirstMount.current && handle) {\n const savedSizes = localStorage.getItem(`splitPaneSizes-${handle}`);\n if (savedSizes) {\n try {\n savedSizesRef.current = JSON.parse(savedSizes);\n } catch (e) {\n savedSizesRef.current = [70, 30];\n }\n } else {\n savedSizesRef.current = [70, 30];\n }\n isFirstMount.current = false;\n }\n\n // Apply saved sizes when pane2 becomes visible (use layoutEffect to avoid flash)\n useLayoutEffect(() => {\n if (\n hasPane2 &&\n !prevHasPane2.current &&\n allotmentRef.current &&\n savedSizesRef.current\n ) {\n // pane2 just became visible, restore saved sizes\n requestAnimationFrame(() => {\n if (allotmentRef.current?.resize) {\n allotmentRef.current.resize(savedSizesRef.current);\n }\n });\n }\n prevHasPane2.current = hasPane2;\n }, [hasPane2]);\n\n // Save sizes to localStorage when they change\n const handleChange = (newSizes) => {\n // Only save if pane2 is visible and sizes are reasonable (not collapsed)\n if (handle && hasPane2 && newSizes[1] > 10) {\n savedSizesRef.current = newSizes;\n localStorage.setItem(\n `splitPaneSizes-${handle}`,\n JSON.stringify(newSizes)\n );\n }\n };\n\n // Get initial sizes - always use saved sizes when pane2 is visible\n let defaultSizes;\n if (!hasPane2) {\n defaultSizes = [100, 0];\n } else {\n // Always use saved sizes when pane2 is visible\n defaultSizes = savedSizesRef.current || [70, 30];\n }\n\n return (\n <Allotment\n ref={allotmentRef}\n className={className}\n onChange={handleChange}\n defaultSizes={defaultSizes}\n proportionalLayout={true}\n >\n <Allotment.Pane minSize={minSize1}>{pane1}</Allotment.Pane>\n <Allotment.Pane visible={hasPane2} minSize={minSize2}>\n {pane2}\n </Allotment.Pane>\n </Allotment>\n );\n};\n","import { TabPanel } from '@wordpress/components';\nimport { createContext, useContext, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nconst TabsContext = createContext<{\n activeTab: string | undefined;\n setActiveTab: React.Dispatch<React.SetStateAction<string | undefined>>;\n initialTabName?: string;\n} | null>(null);\n\ntype TabsProps = {\n className?: string;\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n children?: React.ReactNode;\n style?: React.CSSProperties;\n};\n\nexport const TabsWrapper = ({\n children,\n defaultValue,\n value,\n onValueChange,\n ...rest\n}: TabsProps) => {\n const isControlled = value !== undefined;\n\n const [internalValue, setInternalValue] = useState(defaultValue || '');\n\n const activeTab = isControlled ? value : internalValue;\n\n const handleTabChange = (newValue: string) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n\n if (onValueChange) {\n onValueChange(newValue);\n }\n };\n\n const providerValue = {\n activeTab,\n setActiveTab: handleTabChange,\n initialTabName: isControlled ? value : defaultValue,\n };\n\n return (\n <TabsContext.Provider value={providerValue} {...rest}>\n {children}\n </TabsContext.Provider>\n );\n};\n\ntype TabsListProps = {\n options: { name: string; title: any; icon?: any }[];\n children?: React.ReactNode;\n onValueChange?: (value: string) => void;\n className?: string;\n};\n\nexport const TabsList = ({\n options,\n children,\n className,\n onValueChange,\n}: TabsListProps) => {\n const context = useContext(TabsContext);\n const setActiveTab = onValueChange ? onValueChange : context?.setActiveTab;\n\n return (\n <TabPanel\n className={classNames('tabs-list', className)}\n tabs={options}\n initialTabName={context?.initialTabName}\n onSelect={(tabName) => {\n setActiveTab(tabName);\n }}\n >\n {() => children}\n </TabPanel>\n );\n};\n\ntype TabsContentProps = {\n value: string;\n children: React.ReactNode;\n className?: string;\n};\n\nexport const TabsContent = ({\n value,\n children,\n className,\n}: TabsContentProps) => {\n const context = useContext(TabsContext);\n const activeTab = context?.activeTab;\n\n if (activeTab !== value) {\n return null;\n }\n\n return className ? <div className={className}>{children}</div> : children;\n};\n\nexport const Tabs = {\n Wrapper: TabsWrapper,\n List: TabsList,\n Content: TabsContent,\n};\n","import classNames from 'classnames';\n\ntype TagProps = {\n children: React.ReactNode;\n className?: string;\n color:\n | 'blue'\n | 'ruby'\n | 'tomato'\n | 'red'\n | 'crimson'\n | 'pink'\n | 'plum'\n | 'purple'\n | 'violet'\n | 'iris'\n | 'indigo'\n | 'cyan'\n | 'teal'\n | 'jade'\n | 'green'\n | 'grass'\n | 'brown'\n | 'orange'\n | 'sky'\n | 'gray';\n asButton?: boolean;\n onClick?: () => void;\n};\n\nexport const Tag = ({\n children,\n onClick,\n color = 'blue',\n className,\n}: TagProps) => {\n return (\n <button onClick={onClick}>\n <div color={color} className={classNames(className)}>\n {children}\n </div>\n </button>\n );\n};\n","import { Tailwind } from '@blockbite/icons';\nimport { Button, Popover, Spinner } from '@wordpress/components';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport classNames from 'classnames';\ntype TagInputProps = {\n className?: string;\n inputClassName?: string;\n value: string[];\n label?: string;\n helper?: string;\n placeholder?: string;\n css?: string;\n onChange?: (tokens: string[]) => void;\n onInputChange?: (inputValue: string) => void;\n colorTokenClasses?: Record<string, string>;\n\n suggestions?: string[];\n onLoadMore?: () => void;\n hasMore?: boolean;\n isLoading?: boolean;\n\n /** If true, user can add arbitrary tokens (not only suggestions). Default true. */\n allowCustom?: boolean;\n\n /** If true, tokens are de-duped. Default true. */\n dedupe?: boolean;\n\n [key: string]: any;\n};\n\nconst splitToTokens = (raw: string): string[] => {\n // Split by whitespace and commas, strip empties.\n return raw\n .split(/[\\s,]+/g)\n .map((t) => t.trim())\n .filter(Boolean);\n};\n\nconst uniq = (arr: string[]) => Array.from(new Set(arr));\n\nexport const TagInput = ({\n className,\n inputClassName,\n value,\n label,\n helper,\n placeholder = 'Type and press Enter',\n onChange,\n onInputChange,\n colorTokenClasses,\n suggestions = [],\n onLoadMore,\n css,\n hasMore = false,\n isLoading = false,\n allowCustom = true,\n dedupe = true,\n ...props\n}: TagInputProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const editingInputRef = useRef<HTMLInputElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const suppressPopoverRef = useRef(false);\n\n const [inputValue, setInputValue] = useState('');\n const [isPopoverOpen, setIsPopoverOpen] = useState(false);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n\n const [isSelectingSuggestion, setIsSelectingSuggestion] = useState(false);\n\n // Editing state\n const [editingIndex, setEditingIndex] = useState<number | null>(null);\n const [editingValue, setEditingValue] = useState('');\n\n const closePopover = () => {\n setIsPopoverOpen(false);\n setHighlightedIndex(-1);\n };\n\n const commitTokens = (raw: string) => {\n const next = splitToTokens(raw);\n if (!next.length) return;\n\n const merged = dedupe ? uniq([...value, ...next]) : [...value, ...next];\n onChange?.(merged);\n\n setInputValue('');\n onInputChange?.('');\n closePopover();\n\n // keep focus\n inputRef.current?.focus();\n };\n\n const removeTokenAt = (index: number) => {\n const next = value.filter((_, i) => i !== index);\n onChange?.(next);\n\n // If we removed the token we were editing, clear editor\n if (editingIndex === index) {\n setEditingIndex(null);\n setEditingValue('');\n } else if (editingIndex !== null && index < editingIndex) {\n // shift editing index down if removal is before it\n setEditingIndex(editingIndex - 1);\n }\n };\n\n const startEditToken = (index: number) => {\n suppressPopoverRef.current = true;\n setEditingIndex(index);\n setEditingValue(value[index] ?? '');\n // Keep popover behavior independent of editing\n closePopover();\n };\n\n const saveEditToken = () => {\n if (editingIndex === null) return;\n\n const raw = editingValue.trim();\n // Allow clearing to \"remove\"\n if (!raw) {\n removeTokenAt(editingIndex);\n return;\n }\n\n // If user entered multiple classes while editing, split and replace.\n const replacement = splitToTokens(raw);\n const before = value.slice(0, editingIndex);\n const after = value.slice(editingIndex + 1);\n\n let next = [...before, ...replacement, ...after];\n if (dedupe) next = uniq(next);\n\n onChange?.(next);\n setEditingIndex(null);\n setEditingValue('');\n suppressPopoverRef.current = false;\n inputRef.current?.focus();\n };\n\n const cancelEditToken = () => {\n setEditingIndex(null);\n setEditingValue('');\n suppressPopoverRef.current = false;\n inputRef.current?.focus();\n };\n\n const addSuggestion = (suggestion: string) => {\n setIsSelectingSuggestion(true);\n\n const merged = dedupe\n ? uniq([...value, suggestion])\n : [...value, suggestion];\n onChange?.(merged);\n\n setInputValue('');\n onInputChange?.('');\n closePopover();\n\n // Re-enable blur commits after click settles\n setTimeout(() => {\n setIsSelectingSuggestion(false);\n inputRef.current?.focus();\n }, 0);\n };\n\n const handleInputChange = (newValue: string) => {\n setInputValue(newValue);\n onInputChange?.(newValue);\n setHighlightedIndex(-1);\n\n if (newValue.length > 0 && suggestions.length > 0) {\n setIsPopoverOpen(true);\n } else {\n closePopover();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n // Suggestion navigation when popover open\n if (isPopoverOpen) {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setHighlightedIndex((prev) =>\n Math.min(prev + 1, suggestions.length - 1)\n );\n return;\n }\n if (event.key === 'ArrowUp') {\n event.preventDefault();\n setHighlightedIndex((prev) => Math.max(prev - 1, 0));\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n closePopover();\n return;\n }\n if (event.key === 'Enter') {\n // If a suggestion is highlighted, pick it.\n if (highlightedIndex >= 0 && suggestions[highlightedIndex]) {\n event.preventDefault();\n addSuggestion(suggestions[highlightedIndex]);\n return;\n }\n // Otherwise fall through to commit custom tokens.\n }\n }\n\n // Tokenization keys\n const shouldCommit =\n event.key === 'Enter' || event.key === ',' || event.key === 'Tab';\n\n if (shouldCommit) {\n if (\n !allowCustom &&\n !(highlightedIndex >= 0 && suggestions[highlightedIndex])\n ) {\n // If custom tokens not allowed, only allow commits through suggestion click/enter.\n if (\n event.key === 'Enter' &&\n highlightedIndex >= 0 &&\n suggestions[highlightedIndex]\n ) {\n event.preventDefault();\n addSuggestion(suggestions[highlightedIndex]);\n }\n return;\n }\n\n // Commit the typed input as tokens\n if (inputValue.trim().length > 0) {\n event.preventDefault();\n commitTokens(inputValue);\n } else if (event.key === 'Enter') {\n // Empty input + Enter should just close popover\n event.preventDefault();\n closePopover();\n }\n return;\n }\n\n // Backspace: if input empty, remove last token (common token field behavior)\n if (\n event.key === 'Backspace' &&\n inputValue.length === 0 &&\n value.length > 0\n ) {\n removeTokenAt(value.length - 1);\n return;\n }\n\n // spaces separate Tailwind classes, so commit on space.\n // Only commit if we have something meaningful.\n if (event.key === ' ' && inputValue.trim().length > 0) {\n event.preventDefault();\n commitTokens(inputValue);\n }\n };\n\n const handleBlur = () => {\n // If we're clicking a suggestion button, do not commit/close prematurely.\n if (isSelectingSuggestion) return;\n\n // Commit remaining input on blur (optional; matches FormTokenField behavior)\n if (allowCustom && inputValue.trim().length > 0) {\n commitTokens(inputValue);\n return;\n }\n\n closePopover();\n };\n\n // Infinite scroll handler for the popover list\n useEffect(() => {\n const el = scrollContainerRef.current;\n if (!el || !onLoadMore || !hasMore || isLoading) return;\n\n const onScroll = () => {\n const { scrollTop, scrollHeight, clientHeight } = el;\n if (scrollHeight - scrollTop - clientHeight < 50) onLoadMore();\n };\n\n el.addEventListener('scroll', onScroll);\n return () => el.removeEventListener('scroll', onScroll);\n }, [onLoadMore, hasMore, isLoading]);\n\n useEffect(() => {\n if (editingIndex !== null) {\n const input = editingInputRef.current;\n if (!input) return;\n input.focus();\n const end = input.value.length;\n input.setSelectionRange(end, end);\n }\n }, [editingIndex]);\n\n useEffect(() => {\n if (suggestions.length === 0) {\n setIsPopoverOpen(false);\n }\n }, [suggestions.length]);\n\n return (\n <div className={classNames('flex flex-col gap-2', className)} {...props}>\n {css && <style>{css}</style>}\n\n {label && (\n <div className=\"text-xs font-medium flex gap-1 items-center\">\n <Tailwind /> {label}\n </div>\n )}\n\n {/* Token chips (custom tags) */}\n <div className=\"flex flex-wrap gap-2 flex-start\">\n {value.map((token, index) => {\n const isEditing = editingIndex === index;\n const colorClass = colorTokenClasses?.[token];\n\n return (\n <div\n key={`${token}-${index}`}\n className={classNames(\n 'bg-border/50 gap-1 p-1 text-xs hover:bg-border-75 ',\n { 'bg-white border-border/50 border': isEditing }\n )}\n title=\"Click to edit\"\n >\n {isEditing ? (\n <input\n ref={editingInputRef}\n className=\"bg-transparent text-sm outline-none\"\n value={editingValue}\n onChange={(e) => setEditingValue(e.target.value)}\n onBlur={() => saveEditToken()}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n saveEditToken();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n cancelEditToken();\n }\n }}\n />\n ) : (\n <button\n type=\"button\"\n onClick={() => startEditToken(index)}\n onMouseDown={() => {\n suppressPopoverRef.current = true;\n closePopover();\n }}\n className=\"select-none inline-flex justify-center items-center gap-1 w-auto rounded-sm px-1 hover:bg-gray-100\"\n >\n {token}\n {colorClass && (\n <span\n className={classNames(\n 'w-3! h-3! overflow-hidden! rounded-full!',\n colorClass\n )}\n />\n )}\n </button>\n )}\n\n <button\n type=\"button\"\n className=\"inline-flex items-center rounded-full px-1 cursor-pointer hover:bg-gray-100\"\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n removeTokenAt(index);\n }}\n aria-label={`Remove ${token}`}\n >\n ×\n </button>\n </div>\n );\n })}\n </div>\n\n {/* Input + Popover suggestions */}\n <div className=\"relative\">\n <input\n ref={inputRef}\n className={classNames(\n 'w-full border px-3 py-2 text-sm outline-none',\n inputClassName\n )}\n value={inputValue}\n placeholder={placeholder}\n onChange={(e) => handleInputChange(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => {\n // do not auto-open on focus; wait for user input\n }}\n onBlur={handleBlur}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n aria-autocomplete=\"list\"\n />\n\n {isPopoverOpen && (\n <Popover\n position=\"bottom left\"\n onClose={closePopover}\n anchor={inputRef.current ?? undefined}\n focusOnMount={false}\n offset={12}\n >\n <div\n ref={scrollContainerRef}\n role=\"listbox\"\n className=\"max-h-60 min-w-64 overflow-y-auto p-1\"\n >\n {suggestions.map((suggestion, index) => (\n <Button\n key={`${suggestion}-${index}`}\n variant={index === highlightedIndex ? 'primary' : 'tertiary'}\n className={classNames('block w-full text-left', {\n 'is-active': index === highlightedIndex,\n })}\n onMouseDown={() => setIsSelectingSuggestion(true)}\n onMouseEnter={() => setHighlightedIndex(index)}\n onClick={() => addSuggestion(suggestion)}\n tabIndex={-1}\n >\n <span className=\"text-sm\">{suggestion}</span>\n </Button>\n ))}\n\n {isLoading && (\n <div className=\"flex justify-center py-3\">\n <Spinner />\n </div>\n )}\n\n {!isLoading && hasMore && suggestions.length > 0 && (\n <div className=\"text-center text-xs text-gray-500 py-2\">\n Scroll for more\n </div>\n )}\n </div>\n </Popover>\n )}\n </div>\n\n {helper && <p className=\"text-xs text-primary\">{helper}</p>}\n </div>\n );\n};\n\nTagInput.displayName = 'TagInput';\nexport default TagInput;\n","import { Pencil1 as Pencil1Icon } from '@blockbite/icons';\n\nimport { TextControl } from '@wordpress/components';\nimport { Wrap } from './Wrap.js';\n\ntype TextControlLabelProps = {\n className?: string;\n defaultValue: any;\n children?: React.ReactNode;\n onChange?: (value: string) => void;\n onClick?: () => void;\n};\n\nexport const TextControlLabel = ({\n onChange,\n defaultValue,\n children,\n}: TextControlLabelProps) => {\n return (\n <Wrap className=\"blockbite-ui__text-control-label flex items-center\">\n <span className=\"outline-b-2 relative block -outline-offset-2 outline-black\">\n <TextControl\n __next40pxDefaultSize\n __nextHasNoMarginBottom\n type=\"text\"\n value={defaultValue}\n onChange={onChange}\n />\n <Pencil1Icon className=\"absolute right-1 top-2\" />\n </span>{' '}\n {children}\n </Wrap>\n );\n};\n","import { memo } from '@wordpress/element';\n\nimport { Wrap } from './Wrap.js';\n\nimport {\n __experimentalToggleGroupControlOptionIcon as ToggleGroupControlIcon,\n __experimentalToggleGroupControlOption as ToggleGroupControlOption,\n __experimentalToggleGroupControl as WordpressToggleGroupControl,\n} from '@wordpress/components';\nimport classNames from 'classnames';\n\ntype ToggleProps = {\n className?: string;\n options: { value: string; label: string; icon?: React.ReactElement }[];\n value: string;\n label?: string | boolean;\n variant?: 'primary' | 'secondary';\n display?: 'icon' | 'label';\n size?: 'small' | 'default' | 'compact';\n onPressedChange: (value: string) => void;\n};\n\nexport const ToggleGroup: React.FC<ToggleProps> = memo(\n ({\n className,\n options,\n value,\n display = 'label',\n label = false,\n onPressedChange,\n size = 'default',\n }) => {\n const handlePressChange = (val: string) => {\n onPressedChange(val);\n };\n\n return (\n <Wrap className={classNames(className)}>\n <WordpressToggleGroupControl\n __next40pxDefaultSize={size === 'default'}\n __nextHasNoMarginBottom\n isBlock\n value={value}\n {...(label ? { label } : {})}\n >\n {options.map((option) =>\n display === 'icon' ? (\n <ToggleGroupControlIcon\n icon={option.icon}\n label={option.label}\n key={`ToggleGroupControlIcon-${option.value}`}\n value={option.value}\n onClick={() => handlePressChange(option.value)}\n />\n ) : (\n <ToggleGroupControlOption\n key={`ToggleGroupControlOption-${option.value}`}\n value={option.value}\n label={option.label}\n onClick={() => handlePressChange(option.value)}\n />\n )\n )}\n </WordpressToggleGroupControl>\n </Wrap>\n );\n }\n);\n","import { ToggleControl as Switch } from '@wordpress/components';\nimport { useEffect, useState } from '@wordpress/element';\nimport classNames from 'classnames';\n\nimport { Wrap } from './Wrap.js';\n\ntype ToggleSwitchProps = {\n label?: string;\n className?: string;\n onChange?: (checked: boolean) => void;\n checked?: boolean;\n};\n\nexport const ToggleSwitch = ({\n label,\n className,\n onChange,\n checked = false, // Default to false if undefined, so it's always controlled\n}: ToggleSwitchProps) => {\n const [isChecked, setIsChecked] = useState(checked);\n\n useEffect(() => {\n setIsChecked(checked);\n }, [checked]);\n\n return (\n <Wrap className={classNames(className, 'flex items-center gap-2')}>\n <Switch\n checked={isChecked}\n label={label}\n __nextHasNoMarginBottom={true}\n onChange={(e) => {\n setIsChecked(e);\n onChange && onChange(e);\n }}\n ></Switch>\n </Wrap>\n );\n};\n"],"names":["hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","value","newClass","module","ButtonToggle","memo","children","className","variant","pressed","onPressedChange","Icon","size","display","label","handleClick","useCallback","WordpressButton","ButtonToggleGroup","toggle","options","tabs","stretch","handleButtonClick","optionValue","newValue","renderContent","option","index","AutocompleteDropdown","swatch","activeKeyword","setActiveKeyword","useState","filteredOptions","setFilteredOptions","useEffect","Dropdown","isOpen","onToggle","Button","_a","o","TextControl","changedValue","Badge","onClick","status","BitePreview","htmlContent","cssContent","frontendAssets","iframeRef","useRef","iframeBody","setIframeBody","iframe","iframeDocument","styleTag","type","id","url","existingElement","adoptedElement","newElement","createPortal","Wrap","important","Chapter","title","ChapterHeading","help","badge","addon","props","Checkbox","defaultChecked","isChecked","setChecked","CheckboxControl","Check","ChevronDown","ColorWheel","Cross1","Cross2","InfoCircled","ListBullet","Pencil1","Percentage","Plus","Slider","Tailwind","Trash","forwardRef","onChange","inputClassName","readOnly","placeholder","onBlur","helper","ref","fieldId","e","DataItemList","data","active","setActive","onCreate","onDelete","onUpdate","onSwitch","allowCreate","allowDelete","allowRename","renderItemActions","renderItemContent","addons","footerSlot","footerSlotClassName","rename","setRename","isSaving","setIsSaving","textRef","handleAdd","handleRemove","newData","d","currentIndex","nextActive","handleRenameBlur","renderBadge","item","PlusIcon","TrashIcon","DisappearingMessage","duration","show","message","onClose","isShowing","setIsShowing","hasMounted","timeoutRef","icon","rest","IconComponent","DropdownPicker","defaultIcon","ChevronDownIcon","currentOption","setCurrentOption","allOptions","iconSize","DropdownMenu","EmptyState","description","FloatingPanel","panelRef","position","setPosition","dragging","setDragging","offset","setOffset","handleMouseMove","handleMouseUp","startDragging","rect","parseFocal","fallback","parts","x","y","formatFocal","fp","FocalPointControl","onValueChange","focalPoint","useMemo","handleChange","next","FocalPointPicker","Popover","visible","anchor","onVisibleChange","handleClose","WordpressPopover","SelectControlWrapper","disabled","emptyLabel","val","WordpressSelect","directionToClass","classToDirection","acc","dir","cls","directionToAngle","RADIAL_CLASS","DEFAULT_LINEAR_COORDS","clamp","min","max","parseToken","palette","token","base","opacityPart","opacityFromToken","hex","found","buildToken","baseToken","opacity","hexWithOpacity","clean","g","b","gradientToCss","stop","parsePositionValue","v","cleaned","n","classGroupsToGradientValue","groups","directionClass","kind","direction","stops","fromGroup","fromPosGroup","_b","viaGroup","viaPosGroup","viaItem","pos","toGroup","_c","toPosGroup","_d","normalizeStops","gradientValueToClassGroups","sorted","from","s","to","vias","gradientDirectionToCoords","gradientArrayToClassGroups","items","list","gradientArrayToClassString","resolveGradientStopColor","prefix","targetPrefix","cssToken","gradientClassGroupsToArray","out","obj","entry","role","num","gradientValueToArray","arrayToGradient","arr","hasGradientGroupIds","get","t","_e","fromToken","_f","fromPos","_g","viaTokens","viaPos","idx","toToken","_h","toPos","_i","dirItem","fallbackStops","sel","a","TailwindGradientPicker","trackRef","activeStopId","setActiveStopId","popoverVisible","setPopoverVisible","popoverAnchor","setPopoverAnchor","dragState","setDragState","displayStops","activeStop","updateStops","updater","nextStops","updateStop","patch","removeStop","handleTrackClick","track","nearest","best","handleHandleMouseDown","onMove","event","raw","onUp","openColorPopover","target","handleKindChange","handleDirectionChange","handleColorPickerChange","color","nextKind","ColorIndicator","c","ColorPicker","Label","LinkPicker","links","setLinks","activeLink","setActiveLink","apiFetch","fetchedLinks","__","LinkList","link","onActiveLink","MediaPicker","mediaProps","mediaCallback","allowedTypes","media","removeMedia","onSelectMedia","mediaItem","safeSizes","mediaType","MediaUploadCheck","MediaUpload","open","RangeSlider","withInputField","onReset","allowReset","gridMode","showTooltip","resetFallbackValue","rangeValue","setRangeValue","handleRangeUpdate","gridValue","WordpressRangeControl","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isPercent","isTshirtSize","CSS_UNITS","MetricsControl","propValue","classGroupControl","tailwindUi","isVisible","setIsVisible","localUnit","setLocalUnit","localText","setLocalText","rawValue","setRawValue","inputRef","manualFraction","manualOptions","manualRange","manualCssVars","manualArbitrary","rangeMin","rangeMax","getUserFriendlyValue","detectUnitFromRawValue","normOptions","supportsArbitrary","hasValidator","supportsFraction","supportsTheme","validators","names","arbMatch","varMatch","getRawValue","userFriendly","trimmed","isValidValue","handleInputChange","handleBlur","newRaw","handleKeyDown","appendToText","insertion","isNumeric","newText","numericMatch","setValueDirectly","CurrentUnitIcon","PercentageIcon","ListBulletIcon","ColorWheelIcon","SliderIcon","TailwindUnitIcon","openPicker","renderFractionBody","renderListBody","getCustomCssVariables","rootStyles","customVars","propertyName","renderThemeInsert","cssVariableOptions","renderArbitraryUnitButtons","u","InputControl","InputControlSuffixWrapper","InfoCircledIcon","ModalContext","createContext","useModalContext","context","useContext","Modal","defaultOpen","onOpenChange","onRequestClose","shouldCloseOnEsc","shouldCloseOnClickOutside","isControlled","uncontrolledOpen","setUncontrolledOpen","setOpen","openModal","closeModal","hasModalHeaderChild","Children","child","isValidElement","ModalHeader","ariaProps","ModalTrigger","WordpressModal","ModalContent","ModalFooter","ModalClose","copyStyles","sourceDoc","targetDoc","styleSheet","newStyleEl","cssRule","newLinkEl","NewWindowPortal","windowInstance","containerEl","win","handleBeforeUnload","Notice","isDismissible","onDismiss","showNotice","setShowNotice","WordpressNotice","PasswordInput","showPassword","setShowPassword","SVG","Path","prev","ProjectsNavigation","activeId","onSelect","ResponsiveImage","bbFill","alt","sizes","thumbnail","medium","large","thumbnailImg","mediumImg","largeImg","ResponsiveVideo","videoUrl","DEFAULT_SAVED_DURATION","SaveButton","savedLabel","savedDuration","buttonProps","showSaved","setShowSaved","isIconDisplay","currentLabel","currentIcon","ScrollList","height","select","dispatch","SingleBlockTypeAppender","buttonText","addLastDuplicate","currentBlock","clientId","innerBlocks","lastBlock","newBlock","createBlock","SlideIn","watch","slide","setSlide","Spinner","WordpressSpinner","Ne","et","Ke","en","tn","Rt","nn","rn","Ei","l","Mt","sn","on","Ci","an","ln","ae","h","Oi","p","w","S","z","m","R","_","N","T","V","M","j","O","E","P","A","cn","Ni","un","Mi","Ai","Li","Pn","Ti","Vi","Pi","Fe","kn","jn","Fn","ki","dn","ji","tt","fn","hn","Fi","Vt","vn","xt","ne","Bi","$i","Yi","pn","Hi","Xi","wn","zt","Dt","se","ee","Bn","$n","mn","ot","It","ie","Yn","Wi","Ki","Ui","Oe","gn","nt","bn","yn","Pt","Hn","oe","B","$","F","C","U","ue","G","we","I","D","k","Gi","qs","ht","Y","ce","H","re","L","Lt","$e","dt","We","Tt","Re","Nt","Vn","Ws","SplitPane","pane1","pane2","handle","minSize1","minSize2","allotmentRef","hasPane2","prevHasPane2","savedSizesRef","isFirstMount","savedSizes","useLayoutEffect","newSizes","defaultSizes","Allotment","TabsContext","TabsWrapper","defaultValue","internalValue","setInternalValue","providerValue","TabsList","setActiveTab","TabPanel","tabName","TabsContent","Tabs","Tag","splitToTokens","uniq","TagInput","onInputChange","colorTokenClasses","suggestions","onLoadMore","css","hasMore","isLoading","allowCustom","dedupe","editingInputRef","scrollContainerRef","suppressPopoverRef","inputValue","setInputValue","isPopoverOpen","setIsPopoverOpen","highlightedIndex","setHighlightedIndex","isSelectingSuggestion","setIsSelectingSuggestion","editingIndex","setEditingIndex","editingValue","setEditingValue","closePopover","commitTokens","merged","removeTokenAt","startEditToken","saveEditToken","replacement","before","after","cancelEditToken","addSuggestion","suggestion","el","onScroll","scrollTop","scrollHeight","clientHeight","input","end","isEditing","colorClass","TextControlLabel","Pencil1Icon","ToggleGroup","handlePressChange","WordpressToggleGroupControl","ToggleGroupControlIcon","ToggleGroupControlOption","ToggleSwitch","checked","setIsChecked","Switch"],"mappings":"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","x_google_ignoreList":[0]}