@yoopta/themes-shadcn 6.0.0-beta.14 → 6.0.0-beta.16
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/table/components/row-controls.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/accordion.js.map +0 -1
- package/dist/blockquote.js.map +0 -1
- package/dist/callout.js.map +0 -1
- package/dist/carousel.js.map +0 -1
- package/dist/chunks/Combination-2202c874.js +0 -1080
- package/dist/chunks/Combination-2202c874.js.map +0 -1
- package/dist/chunks/_tslib-514d60fe.js +0 -67
- package/dist/chunks/_tslib-514d60fe.js.map +0 -1
- package/dist/chunks/arrow-right-cc37c75c.js +0 -30
- package/dist/chunks/arrow-right-cc37c75c.js.map +0 -1
- package/dist/chunks/button-f9af7cb3.js +0 -76
- package/dist/chunks/button-f9af7cb3.js.map +0 -1
- package/dist/chunks/card-29720641.js +0 -38
- package/dist/chunks/card-29720641.js.map +0 -1
- package/dist/chunks/check-530fff0e.js +0 -14
- package/dist/chunks/check-530fff0e.js.map +0 -1
- package/dist/chunks/chevron-down-544d1acd.js +0 -16
- package/dist/chunks/chevron-down-544d1acd.js.map +0 -1
- package/dist/chunks/chevron-up-053cba03.js +0 -14
- package/dist/chunks/chevron-up-053cba03.js.map +0 -1
- package/dist/chunks/code-2ff9cc0c.js +0 -17
- package/dist/chunks/code-2ff9cc0c.js.map +0 -1
- package/dist/chunks/createLucideIcon-02eb7854.js +0 -95
- package/dist/chunks/createLucideIcon-02eb7854.js.map +0 -1
- package/dist/chunks/dropdown-menu-ac777fdc.js +0 -1165
- package/dist/chunks/dropdown-menu-ac777fdc.js.map +0 -1
- package/dist/chunks/external-link-43895ded.js +0 -18
- package/dist/chunks/external-link-43895ded.js.map +0 -1
- package/dist/chunks/file-text-99674d8d.js +0 -20
- package/dist/chunks/file-text-99674d8d.js.map +0 -1
- package/dist/chunks/hover-card-134f053d.js +0 -257
- package/dist/chunks/hover-card-134f053d.js.map +0 -1
- package/dist/chunks/index-056b596e.js +0 -16
- package/dist/chunks/index-056b596e.js.map +0 -1
- package/dist/chunks/index-35823769.js +0 -222
- package/dist/chunks/index-35823769.js.map +0 -1
- package/dist/chunks/index-41c4abc4.js +0 -3805
- package/dist/chunks/index-41c4abc4.js.map +0 -1
- package/dist/chunks/index-454935af.js +0 -71
- package/dist/chunks/index-454935af.js.map +0 -1
- package/dist/chunks/index-ae9b48d5.js +0 -12
- package/dist/chunks/index-ae9b48d5.js.map +0 -1
- package/dist/chunks/index-b8a83ba5.js +0 -335
- package/dist/chunks/index-b8a83ba5.js.map +0 -1
- package/dist/chunks/index-b8f2908d.js +0 -40
- package/dist/chunks/index-b8f2908d.js.map +0 -1
- package/dist/chunks/index-c655a86f.js +0 -7
- package/dist/chunks/index-c655a86f.js.map +0 -1
- package/dist/chunks/index-c90e54a4.js +0 -190
- package/dist/chunks/index-c90e54a4.js.map +0 -1
- package/dist/chunks/index-cf5f0d71.js +0 -2907
- package/dist/chunks/index-cf5f0d71.js.map +0 -1
- package/dist/chunks/index-d9171717.js +0 -13
- package/dist/chunks/index-d9171717.js.map +0 -1
- package/dist/chunks/index-dd0fd848.js +0 -70
- package/dist/chunks/index-dd0fd848.js.map +0 -1
- package/dist/chunks/input-5608c2c9.js +0 -13
- package/dist/chunks/input-5608c2c9.js.map +0 -1
- package/dist/chunks/label-c9152e49.js +0 -168
- package/dist/chunks/label-c9152e49.js.map +0 -1
- package/dist/chunks/language-select-bdc50f20.js +0 -44
- package/dist/chunks/language-select-bdc50f20.js.map +0 -1
- package/dist/chunks/play-1a34ad05.js +0 -16
- package/dist/chunks/play-1a34ad05.js.map +0 -1
- package/dist/chunks/plus-fcea2532.js +0 -17
- package/dist/chunks/plus-fcea2532.js.map +0 -1
- package/dist/chunks/popover-ef29b0ac.js +0 -300
- package/dist/chunks/popover-ef29b0ac.js.map +0 -1
- package/dist/chunks/scroll-area-17d8c584.js +0 -726
- package/dist/chunks/scroll-area-17d8c584.js.map +0 -1
- package/dist/chunks/select-98610101.js +0 -1213
- package/dist/chunks/select-98610101.js.map +0 -1
- package/dist/chunks/separator-9e6aa45b.js +0 -172
- package/dist/chunks/separator-9e6aa45b.js.map +0 -1
- package/dist/chunks/sparkles-8922a4af.js +0 -26
- package/dist/chunks/sparkles-8922a4af.js.map +0 -1
- package/dist/chunks/style-inject.es-746bb8ed.js +0 -29
- package/dist/chunks/style-inject.es-746bb8ed.js.map +0 -1
- package/dist/chunks/tabs-9cfbd3cc.js +0 -204
- package/dist/chunks/tabs-9cfbd3cc.js.map +0 -1
- package/dist/chunks/tooltip-f1e02ae0.js +0 -800
- package/dist/chunks/tooltip-f1e02ae0.js.map +0 -1
- package/dist/chunks/trash-2-be728dd2.js +0 -20
- package/dist/chunks/trash-2-be728dd2.js.map +0 -1
- package/dist/chunks/upload-0f56ec3e.js +0 -44
- package/dist/chunks/upload-0f56ec3e.js.map +0 -1
- package/dist/chunks/utils-131071a4.js +0 -2500
- package/dist/chunks/utils-131071a4.js.map +0 -1
- package/dist/chunks/x-2f6cf742.js +0 -17
- package/dist/chunks/x-2f6cf742.js.map +0 -1
- package/dist/code-group.js.map +0 -1
- package/dist/code.js.map +0 -1
- package/dist/divider.js.map +0 -1
- package/dist/embed.js.map +0 -1
- package/dist/file.js.map +0 -1
- package/dist/headings.js.map +0 -1
- package/dist/image.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/link.js.map +0 -1
- package/dist/lists.js.map +0 -1
- package/dist/mention.js.map +0 -1
- package/dist/paragraph.js.map +0 -1
- package/dist/steps.js.map +0 -1
- package/dist/table-of-contents.js.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/tabs.js.map +0 -1
- package/dist/video.js.map +0 -1
package/dist/embed.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embed.js","sources":["../../../../node_modules/lucide-react/src/icons/map.ts","../../../../node_modules/lucide-react/src/icons/music.ts","../src/embed/elements/embed/embed-placeholder.tsx","../src/embed/elements/embed/embed-inline-toolbar.tsx","../src/embed/elements/embed/embed-render.tsx","../src/embed/elements/embed/embed-element.tsx","../src/embed/index.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Map\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/map\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Map = createLucideIcon('Map', [\n [\n 'path',\n {\n d: 'M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z',\n key: '169xi5',\n },\n ],\n ['path', { d: 'M15 5.764v15', key: '1pn4in' }],\n ['path', { d: 'M9 3.236v15', key: '1uimfh' }],\n]);\n\nexport default Map;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Music\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/music\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Music = createLucideIcon('Music', [\n ['path', { d: 'M9 18V5l12-2v13', key: '1jmyc2' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n ['circle', { cx: '18', cy: '16', r: '3', key: '1hluhg' }],\n]);\n\nexport default Music;\n","import { useState } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport { detectProvider, getSupportedProviders, isEmbedUrl } from '@yoopta/embed';\nimport { Code, LinkIcon, Map, Music, Play } from 'lucide-react';\n\nimport { Button } from '../../../ui/button';\nimport { Input } from '../../../ui/input';\nimport { cn } from '../../../utils';\n\ntype EmbedPlaceholderProps = {\n onInsertUrl: (url: string) => void;\n className?: string;\n attributes: PluginElementRenderProps['attributes'];\n children: React.ReactNode;\n};\n\n// Get provider category icon\nconst getProviderIcon = (type: string) => {\n switch (type) {\n case 'youtube':\n case 'vimeo':\n case 'dailymotion':\n case 'wistia':\n case 'loom':\n return <Play className=\"h-3 w-3\" />;\n case 'spotify':\n case 'soundcloud':\n return <Music className=\"h-3 w-3\" />;\n case 'codepen':\n case 'codesandbox':\n return <Code className=\"h-3 w-3\" />;\n case 'google-maps':\n return <Map className=\"h-3 w-3\" />;\n default:\n return <LinkIcon className=\"h-3 w-3\" />;\n }\n};\n\n// Provider badge\nconst ProviderBadge = ({ name, type }: { name: string; type: string }) => (\n <span className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium bg-muted text-muted-foreground\">\n {getProviderIcon(type)}\n {name}\n </span>\n);\n\n// Link Form Component\ntype EmbedLinkFormProps = {\n onInsertUrl: (url: string) => void;\n};\n\nconst EmbedLinkForm = ({ onInsertUrl }: EmbedLinkFormProps) => {\n const [urlInput, setUrlInput] = useState('');\n const [isValidProvider, setIsValidProvider] = useState(false);\n const [providerName, setProviderName] = useState<string | null>(null);\n\n const handleUrlChange = (value: string) => {\n setUrlInput(value);\n if (value.trim()) {\n const isValid = isEmbedUrl(value.trim());\n setIsValidProvider(isValid);\n if (isValid) {\n const providerType = detectProvider(value.trim());\n const providers = getSupportedProviders();\n const provider = providers.find((p) => p.type === providerType);\n setProviderName(provider?.name ?? null);\n } else {\n setProviderName(null);\n }\n } else {\n setIsValidProvider(false);\n setProviderName(null);\n }\n };\n\n const handleSubmit = () => {\n if (urlInput.trim()) {\n onInsertUrl(urlInput.trim());\n setUrlInput('');\n setIsValidProvider(false);\n setProviderName(null);\n }\n };\n\n return (\n <div className=\"space-y-3\">\n <div className=\"space-y-2\">\n <Input\n placeholder=\"Paste a URL to embed (YouTube, Vimeo, Twitter, Spotify, etc.)\"\n value={urlInput}\n onChange={(e) => handleUrlChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && urlInput.trim() && isValidProvider) {\n e.preventDefault();\n handleSubmit();\n }\n }}\n className=\"h-10\"\n />\n {urlInput.trim() && (\n <div className=\"text-xs text-muted-foreground\">\n {isValidProvider ? (\n <span className=\"flex items-center gap-1.5 text-green-600 dark:text-green-400\">\n {getProviderIcon(detectProvider(urlInput.trim()))}\n {providerName} detected\n </span>\n ) : (\n <span className=\"text-destructive\">\n Unsupported URL. Try YouTube, Vimeo, Twitter, Spotify, Figma, CodePen, etc.\n </span>\n )}\n </div>\n )}\n </div>\n <Button className=\"w-full\" onClick={handleSubmit} disabled={!urlInput.trim() || !isValidProvider}>\n {isValidProvider ? `Embed ${providerName}` : 'Embed content'}\n </Button>\n </div>\n );\n};\n\n// Supported Providers Display\nconst SupportedProviders = () => {\n const providers = getSupportedProviders().filter((p) => p.type !== 'unknown');\n\n return (\n <div className=\"mt-4 space-y-2\">\n <p className=\"text-xs text-muted-foreground text-center\">Supported providers:</p>\n <div className=\"flex flex-wrap gap-1.5 justify-center\">\n {providers.slice(0, 8).map((provider) => (\n <ProviderBadge key={provider.type} name={provider.name} type={provider.type} />\n ))}\n {providers.length > 8 && (\n <span className=\"inline-flex items-center px-2 py-0.5 rounded-full text-[10px] font-medium bg-muted text-muted-foreground\">\n +{providers.length - 8} more\n </span>\n )}\n </div>\n </div>\n );\n};\n\n// Main Component\nexport const EmbedPlaceholder = ({\n onInsertUrl,\n className,\n attributes,\n children,\n}: EmbedPlaceholderProps) => (\n <div\n className={cn('mt-2 relative rounded-lg border bg-background overflow-hidden', className)}\n {...attributes}\n contentEditable={false}\n >\n <div className=\"p-6\">\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"rounded-lg bg-muted p-3\">\n <LinkIcon className=\"h-6 w-6 text-muted-foreground\" />\n </div>\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">Embed content</p>\n <p className=\"text-xs text-muted-foreground\">Paste a URL from supported platforms</p>\n </div>\n </div>\n\n <div className=\"mt-6 max-w-md mx-auto\">\n <EmbedLinkForm onInsertUrl={onInsertUrl} />\n </div>\n\n <SupportedProviders />\n </div>\n {children}\n </div>\n);\n\n","import { useEffect, useState } from 'react';\nimport { autoUpdate, inline, offset, shift, useFloating } from '@floating-ui/react';\nimport copy from 'copy-to-clipboard';\nimport { AlignCenter, AlignLeft, AlignRight, Copy, ExternalLink, RotateCw, Trash2 } from 'lucide-react';\n\nimport { Button } from '../../../ui/button';\nimport { Separator } from '../../../ui/separator';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../../ui/tooltip';\nimport { cn } from '../../../utils';\nimport type { EmbedElementProps } from '../../types';\n\ntype EmbedInlineToolbarProps = {\n referenceRef: React.MutableRefObject<HTMLElement | null>;\n elementProps: EmbedElementProps;\n onUpdate: (props: Partial<EmbedElementProps>) => void;\n onReplace: () => void;\n onDelete: () => void;\n onCopy?: () => void;\n};\n\nexport const EmbedInlineToolbar = ({\n referenceRef,\n elementProps,\n onUpdate,\n onReplace,\n onDelete,\n onCopy,\n}: EmbedInlineToolbarProps) => {\n const [isVisible, setIsVisible] = useState(false);\n const hasProvider = elementProps.provider && elementProps.provider.type;\n const hasAlignment = 'alignment' in elementProps;\n\n const { refs, floatingStyles } = useFloating({\n placement: 'top',\n strategy: 'fixed',\n middleware: [offset(8), inline(), shift({ padding: 10 })],\n whileElementsMounted: autoUpdate,\n });\n\n useEffect(() => {\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n }, []);\n\n useEffect(() => {\n const element = referenceRef.current;\n if (element) {\n refs.setReference(element);\n }\n }, [referenceRef, refs]);\n\n const handleCopy = () => {\n if (onCopy) {\n onCopy();\n } else if (elementProps.provider?.url) {\n copy(elementProps.provider.url);\n }\n };\n\n const handleOpenLink = () => {\n if (elementProps.provider?.url) {\n window.open(elementProps.provider.url, '_blank');\n }\n };\n\n return (\n <div\n ref={refs.setFloating}\n onMouseDown={(e) => e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n className={cn(\n 'pointer-events-auto',\n 'flex items-center gap-1 rounded-lg border bg-background/95 backdrop-blur-sm p-1 shadow-lg',\n 'transition-all duration-200 ease-out',\n isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-2',\n )}\n style={floatingStyles}\n >\n <TooltipProvider delayDuration={0}>\n {hasAlignment && (\n <div className=\"flex items-center gap-0.5 border-r pr-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={(elementProps as any).alignment === 'left' ? 'secondary' : 'ghost'}\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={() => onUpdate({ alignment: 'left' } as any)}\n >\n <AlignLeft className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Align left</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={(elementProps as any).alignment === 'center' ? 'secondary' : 'ghost'}\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={() => onUpdate({ alignment: 'center' } as any)}\n >\n <AlignCenter className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Align center</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={(elementProps as any).alignment === 'right' ? 'secondary' : 'ghost'}\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={() => onUpdate({ alignment: 'right' } as any)}\n >\n <AlignRight className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Align right</TooltipContent>\n </Tooltip>\n </div>\n )}\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={onReplace}>\n <RotateCw className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Replace</TooltipContent>\n </Tooltip>\n\n {hasProvider && elementProps.provider?.url && (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={handleCopy}>\n <Copy className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Copy URL</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={handleOpenLink}>\n <ExternalLink className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Open in new tab</TooltipContent>\n </Tooltip>\n </>\n )}\n\n <Separator orientation=\"vertical\" className=\"h-4\" />\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-destructive hover:bg-destructive/10 hover:text-destructive\"\n onClick={onDelete}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Delete</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n );\n};\n\n","import { useEffect, useRef, useState } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport { useBlockSelected, useElementSelected, useYooptaEditor } from '@yoopta/editor';\nimport type { EmbedPluginOptions } from '@yoopta/embed';\nimport { Rnd } from 'react-rnd';\n\nimport { EmbedInlineToolbar } from './embed-inline-toolbar';\nimport { cn } from '../../../utils';\nimport type { EmbedElementProps } from '../../types';\n\ntype Props = {\n blockId: string;\n elementId: string;\n onUpdate: (props: Partial<EmbedElementProps>) => void;\n onDelete: () => void;\n onReplace: () => void;\n attributes: PluginElementRenderProps['attributes'];\n children: React.ReactNode;\n elementProps: EmbedElementProps;\n pluginOptions?: EmbedPluginOptions;\n};\n\nexport const EmbedRender = ({\n blockId,\n attributes,\n children,\n elementProps,\n onUpdate,\n onDelete,\n onReplace,\n pluginOptions,\n}: Props) => {\n const [sizes, setSizes] = useState(elementProps.sizes || { width: 650, height: 400 });\n const { isElementSelected } = useElementSelected();\n const isBlockSelected = useBlockSelected({ blockId });\n const isSelected = isElementSelected && isBlockSelected;\n const rndRef = useRef<HTMLElement | null>(null);\n const editor = useYooptaEditor();\n\n // Get max sizes from plugin options, with default maxWidth from editor width\n const [maxSizes, setMaxSizes] = useState(() => {\n const editorWidth = editor.refElement?.getBoundingClientRect().width || 650;\n const maxWidth = pluginOptions?.maxWidth ?? editorWidth;\n\n return {\n maxWidth: typeof maxWidth === 'number' ? maxWidth : editorWidth,\n maxHeight: 800, // reasonable max height\n };\n });\n\n // Update maxSizes when editor width changes\n useEffect(() => {\n const updateMaxSizes = () => {\n const editorWidth = editor.refElement?.getBoundingClientRect().width || 650;\n const maxWidth = pluginOptions?.maxWidth ?? editorWidth;\n\n setMaxSizes({\n maxWidth: typeof maxWidth === 'number' ? maxWidth : editorWidth,\n maxHeight: 800,\n });\n };\n\n updateMaxSizes();\n\n const resizeObserver = new ResizeObserver(updateMaxSizes);\n if (editor.refElement) {\n resizeObserver.observe(editor.refElement);\n }\n\n window.addEventListener('resize', updateMaxSizes);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateMaxSizes);\n };\n }, [editor, pluginOptions]);\n\n // Helper function to limit sizes\n const limitEmbedSizes = (\n currentSizes: { width: number | string; height: number | string },\n limits: { width: number | string; height: number | string },\n ): { width: number; height: number } => {\n const parseSize = (value: string | number): number => {\n if (typeof value === 'number') return value;\n return parseInt(String(value).replace(/[^\\d]/g, ''), 10);\n };\n\n const currentWidth = parseSize(currentSizes.width);\n const currentHeight = parseSize(currentSizes.height);\n const maxWidth = parseSize(limits.width);\n const maxHeight = parseSize(limits.height);\n\n if (currentWidth <= maxWidth && currentHeight <= maxHeight) {\n return { width: currentWidth, height: currentHeight };\n }\n\n const widthRatio = currentWidth / maxWidth;\n const heightRatio = currentHeight / maxHeight;\n const ratio = Math.max(widthRatio, heightRatio);\n\n const newWidth = Math.round(currentWidth / ratio);\n const newHeight = Math.round(currentHeight / ratio);\n\n return {\n width: Math.min(newWidth, maxWidth),\n height: Math.min(newHeight, maxHeight),\n };\n };\n\n const onResizeStop = (_e: any, _direction: any, ref: HTMLElement) => {\n const newWidth = parseInt(ref.style.width, 10);\n const newHeight = parseInt(ref.style.height, 10);\n\n // Apply max size limits\n const limitedSizes = limitEmbedSizes(\n { width: newWidth, height: newHeight },\n { width: maxSizes.maxWidth, height: maxSizes.maxHeight },\n );\n\n onUpdate({\n sizes: limitedSizes,\n });\n };\n\n const onResize = (_e: any, _direction: any, ref: HTMLElement) => {\n const newWidth = parseInt(ref.style.width, 10);\n const newHeight = parseInt(ref.style.height, 10);\n\n // Apply max size limits during resize\n const limitedSizes = limitEmbedSizes(\n { width: newWidth, height: newHeight },\n { width: maxSizes.maxWidth, height: maxSizes.maxHeight },\n );\n\n setSizes(limitedSizes);\n };\n\n const provider = elementProps.provider;\n const embedUrl = provider?.embedUrl ?? '';\n\n const copyEmbed = async () => {\n if (!provider?.url) return;\n\n try {\n const { default: copyFn } = await import('copy-to-clipboard');\n copyFn(provider.url);\n } catch {\n // silently fail\n }\n };\n\n const alignmentClass = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n }[(elementProps as any).alignment ?? 'center'];\n\n return (\n <div {...attributes} className={cn('group/embed mt-2 relative transition-all w-full flex', alignmentClass)}>\n <div className=\"relative\" contentEditable={false}>\n <Rnd\n ref={(node) => {\n if (node?.resizableElement && node.resizableElement instanceof HTMLElement) {\n rndRef.current = node.resizableElement;\n }\n }}\n style={{\n position: 'relative',\n outline: isSelected ? '.125rem solid rgba(0, 0, 0, 0)' : 'none',\n outlineColor: isSelected ? 'hsl(var(--primary))' : 'none',\n }}\n size={{\n width: typeof sizes.width === 'number' ? sizes.width : parseInt(String(sizes.width), 10),\n height: typeof sizes.height === 'number' ? sizes.height : parseInt(String(sizes.height), 10),\n }}\n onResize={onResize}\n onResizeStop={onResizeStop}\n lockAspectRatio\n minWidth={200}\n minHeight={150}\n maxWidth={maxSizes.maxWidth}\n maxHeight={maxSizes.maxHeight}\n enableResizing={\n isSelected\n ? {\n bottom: false,\n bottomLeft: false,\n bottomRight: false,\n left: true,\n right: true,\n top: false,\n topLeft: false,\n topRight: false,\n }\n : false\n }\n disableDragging\n resizeHandleStyles={{\n left: {\n width: 'auto',\n height: '40px',\n left: '-5px',\n top: '50%',\n transform: 'translateY(-50%)',\n cursor: 'ew-resize',\n },\n right: {\n width: 'auto',\n height: '40px',\n right: '-5px',\n top: '50%',\n transform: 'translateY(-50%)',\n cursor: 'ew-resize',\n },\n }}\n resizeHandleComponent={{\n left: <div className=\"h-10 w-2 rounded-full border border-primary bg-primary shadow-sm\" />,\n right: <div className=\"h-10 w-2 rounded-full border border-primary bg-primary shadow-sm\" />,\n }}\n className={cn('rounded-sm overflow-hidden')}\n >\n <iframe\n title={provider?.meta?.title ?? `Embedded content from ${provider?.type ?? 'unknown'}`}\n src={embedUrl}\n width=\"100%\"\n height=\"100%\"\n frameBorder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowFullScreen\n className=\"w-full h-full\"\n style={{\n aspectRatio: `${sizes.width} / ${sizes.height}`,\n }}\n />\n </Rnd>\n {isSelected && (\n <EmbedInlineToolbar\n referenceRef={rndRef}\n elementProps={elementProps}\n onUpdate={onUpdate}\n onReplace={onReplace}\n onDelete={onDelete}\n onCopy={copyEmbed}\n />\n )}\n </div>\n {children}\n </div>\n );\n};\n\n","import { useCallback } from 'react';\nimport { type PluginElementRenderProps, useYooptaPluginOptions } from '@yoopta/editor';\nimport { Blocks, Elements, useYooptaEditor } from '@yoopta/editor';\nimport { calculateEmbedDimensions, parseEmbedUrl } from '@yoopta/embed';\nimport type { EmbedElement as EmbedElementType, EmbedPluginOptions } from '@yoopta/embed';\nimport { Editor, Element } from 'slate';\n\nimport { EmbedPlaceholder } from './embed-placeholder';\nimport { EmbedRender } from './embed-render';\nimport type { EmbedElementProps } from '../../types';\n\nexport const EmbedElement = ({ element, attributes, children, blockId }: PluginElementRenderProps) => {\n const editor = useYooptaEditor();\n const pluginOptions = useYooptaPluginOptions<EmbedPluginOptions>('Embed');\n\n const updateElement = useCallback(\n (props: Partial<EmbedElementProps>) => {\n Elements.updateElement(editor, {\n blockId,\n type: 'embed',\n props: {\n ...element.props,\n ...props,\n },\n });\n },\n [editor, blockId, element.props],\n );\n\n const deleteEmbed = useCallback(async () => {\n const slate = Blocks.getBlockSlate(editor, { id: blockId });\n if (!slate) return;\n\n const elementPath = Elements.getElementPath(editor, { blockId, element });\n if (!elementPath) return;\n\n const parentEntry = elementPath ? Editor.parent(slate, elementPath) : undefined;\n if (parentEntry && Element.isElement(parentEntry[0]) && !Editor.isEditor(parentEntry[0])) {\n Elements.deleteElement(editor, {\n blockId,\n type: 'embed',\n path: elementPath,\n });\n return;\n }\n\n Blocks.deleteBlock(editor, { blockId, focus: true });\n }, [editor, blockId, element]);\n\n const replaceEmbed = useCallback(() => {\n Elements.updateElement(editor, {\n blockId,\n type: 'embed',\n props: {\n ...element.props,\n provider: null,\n },\n });\n }, [editor, blockId, element.props]);\n\n const onInsertUrl = useCallback(\n async (url: string) => {\n const provider = parseEmbedUrl(url);\n\n if (provider) {\n // Calculate dimensions based on provider aspect ratio\n const maxWidth = pluginOptions?.maxWidth ?? 650;\n const { width, height } = calculateEmbedDimensions(provider.type, maxWidth);\n\n updateElement({\n provider,\n sizes: { width, height },\n });\n }\n },\n [updateElement, pluginOptions],\n );\n\n const embedElement = element as EmbedElementType;\n\n if (!embedElement.props?.provider) {\n return (\n <EmbedPlaceholder onInsertUrl={onInsertUrl} attributes={attributes}>\n {children}\n </EmbedPlaceholder>\n );\n }\n\n return (\n <EmbedRender\n blockId={blockId}\n elementId={element.id}\n onUpdate={updateElement}\n onDelete={deleteEmbed}\n attributes={attributes}\n onReplace={replaceEmbed}\n elementProps={embedElement.props}\n pluginOptions={pluginOptions}\n >\n {children}\n </EmbedRender>\n );\n};\n\n","import { EmbedElement } from './elements/embed/embed-element';\n\nexport const EmbedUI = {\n embed: {\n render: EmbedElement,\n },\n};\n\n"],"names":["_jsx","LinkIcon","_jsxs","copy","_Fragment"],"mappings":"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","x_google_ignoreList":[0,1]}
|
package/dist/file.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sources":["../../../../node_modules/lucide-react/src/icons/archive.ts","../../../../node_modules/lucide-react/src/icons/file-audio.ts","../../../../node_modules/lucide-react/src/icons/file-image.ts","../../../../node_modules/lucide-react/src/icons/file-spreadsheet.ts","../../../../node_modules/lucide-react/src/icons/file-video.ts","../../../../node_modules/lucide-react/src/icons/file.ts","../../../../node_modules/lucide-react/src/icons/presentation.ts","../src/file/elements/file/file-placeholder.tsx","../src/file/elements/file/file-icons.tsx","../src/file/elements/file/file-inline-toolbar.tsx","../src/file/elements/file/file-render.tsx","../src/file/elements/file/file-element.tsx","../src/file/index.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Archive\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/archive\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Archive = createLucideIcon('Archive', [\n ['rect', { width: '20', height: '5', x: '2', y: '3', rx: '1', key: '1wp1u1' }],\n ['path', { d: 'M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8', key: '1s80jp' }],\n ['path', { d: 'M10 12h4', key: 'a56b0p' }],\n]);\n\nexport default Archive;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileAudio\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-audio\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileAudio = createLucideIcon('FileAudio', [\n ['path', { d: 'M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3', key: 'rslqgf' }],\n ['path', { d: 'M14 2v4a2 2 0 0 0 2 2h4', key: 'tnqrlb' }],\n [\n 'path',\n {\n d: 'M2 19a2 2 0 1 1 4 0v1a2 2 0 1 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 1 1-4 0v-1a2 2 0 1 1 4 0',\n key: '9f7x3i',\n },\n ],\n]);\n\nexport default FileAudio;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileImage\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileImage = createLucideIcon('FileImage', [\n ['path', { d: 'M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z', key: '1rqfz7' }],\n ['path', { d: 'M14 2v4a2 2 0 0 0 2 2h4', key: 'tnqrlb' }],\n ['circle', { cx: '10', cy: '12', r: '2', key: '737tya' }],\n ['path', { d: 'm20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22', key: 'wt3hpn' }],\n]);\n\nexport default FileImage;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileSpreadsheet\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-spreadsheet\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileSpreadsheet = createLucideIcon('FileSpreadsheet', [\n ['path', { d: 'M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z', key: '1rqfz7' }],\n ['path', { d: 'M14 2v4a2 2 0 0 0 2 2h4', key: 'tnqrlb' }],\n ['path', { d: 'M8 13h2', key: 'yr2amv' }],\n ['path', { d: 'M14 13h2', key: 'un5t4a' }],\n ['path', { d: 'M8 17h2', key: '2yhykz' }],\n ['path', { d: 'M14 17h2', key: '10kma7' }],\n]);\n\nexport default FileSpreadsheet;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name FileVideo\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file-video\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst FileVideo = createLucideIcon('FileVideo', [\n ['path', { d: 'M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z', key: '1rqfz7' }],\n ['path', { d: 'M14 2v4a2 2 0 0 0 2 2h4', key: 'tnqrlb' }],\n ['path', { d: 'm10 11 5 3-5 3v-6Z', key: '7ntvm4' }],\n]);\n\nexport default FileVideo;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name File\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/file\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst File = createLucideIcon('File', [\n ['path', { d: 'M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z', key: '1rqfz7' }],\n ['path', { d: 'M14 2v4a2 2 0 0 0 2 2h4', key: 'tnqrlb' }],\n]);\n\nexport default File;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Presentation\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/presentation\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Presentation = createLucideIcon('Presentation', [\n ['path', { d: 'M2 3h20', key: '91anmk' }],\n ['path', { d: 'M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3', key: '2k9sn8' }],\n ['path', { d: 'm7 21 5-5 5 5', key: 'bip4we' }],\n]);\n\nexport default Presentation;\n","import { useRef } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport type { FileUploadProgress } from '@yoopta/file';\nimport { File as FileIcon, Loader2, Upload } from 'lucide-react';\n\nimport { Button } from '../../../ui/button';\nimport { cn } from '../../../utils';\n\ntype FilePlaceholderProps = {\n onUpload: (event: React.ChangeEvent<HTMLInputElement>) => void;\n className?: string;\n attributes: PluginElementRenderProps['attributes'];\n children: React.ReactNode;\n progress: FileUploadProgress | null;\n loading: boolean;\n accept?: string;\n};\n\n// Upload Progress Component\ntype FileUploadProgressProps = {\n progress: FileUploadProgress;\n};\n\nconst FileUploadProgressOverlay = ({ progress }: FileUploadProgressProps) => (\n <div className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-4 bg-background/95 backdrop-blur-sm p-6 rounded-lg border\">\n <div className=\"w-full max-w-md space-y-4\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium\">Uploading file...</span>\n <span className=\"text-muted-foreground\">{progress.percentage}%</span>\n </div>\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-full bg-primary transition-all duration-300 ease-out\"\n style={{ width: `${progress.percentage}%` }}\n />\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>\n {(progress.loaded / 1024 / 1024).toFixed(2)} MB / {(progress.total / 1024 / 1024).toFixed(2)} MB\n </span>\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n </div>\n </div>\n </div>\n </div>\n);\n\n// Upload Form Component\ntype FileUploadFormProps = {\n onUpload: (event: React.ChangeEvent<HTMLInputElement>) => void;\n accept?: string;\n};\n\nconst FileUploadForm = ({ onUpload, accept }: FileUploadFormProps) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n return (\n <div className=\"flex flex-col items-center gap-3 py-6\">\n <div className=\"rounded-lg bg-muted p-3\">\n <FileIcon className=\"h-6 w-6 text-muted-foreground\" />\n </div>\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">Upload a file</p>\n <p className=\"text-xs text-muted-foreground\">Click to select a file</p>\n </div>\n <Button onClick={() => fileInputRef.current?.click()} variant=\"default\" className=\"gap-2\">\n <Upload className=\"h-4 w-4\" />\n Choose file\n </Button>\n <input ref={fileInputRef} type=\"file\" accept={accept} onChange={onUpload} className=\"hidden\" />\n </div>\n );\n};\n\n// Main Component\nexport const FilePlaceholder = ({\n onUpload,\n className,\n attributes,\n children,\n progress,\n loading,\n accept,\n}: FilePlaceholderProps) => {\n const showUploadProgress = loading && progress;\n\n return (\n <div\n className={cn('mt-2 relative rounded-lg border bg-background overflow-hidden', className)}\n {...attributes}\n contentEditable={false}>\n <FileUploadForm onUpload={onUpload} accept={accept} />\n {showUploadProgress && progress && <FileUploadProgressOverlay progress={progress} />}\n {children}\n </div>\n );\n};\n","import type { FileType } from '@yoopta/file';\nimport {\n Archive,\n Code,\n File,\n FileAudio,\n FileImage,\n FileSpreadsheet,\n FileText,\n FileVideo,\n type LucideIcon,\n Presentation,\n} from 'lucide-react';\n\n// Map file types to icons and colors\nconst FILE_TYPE_ICONS: Record<FileType, { icon: LucideIcon; color: string; bgColor: string }> = {\n pdf: {\n icon: FileText,\n color: 'text-red-600 dark:text-red-400',\n bgColor: 'bg-red-100 dark:bg-red-900/30',\n },\n document: {\n icon: FileText,\n color: 'text-blue-600 dark:text-blue-400',\n bgColor: 'bg-blue-100 dark:bg-blue-900/30',\n },\n spreadsheet: {\n icon: FileSpreadsheet,\n color: 'text-green-600 dark:text-green-400',\n bgColor: 'bg-green-100 dark:bg-green-900/30',\n },\n presentation: {\n icon: Presentation,\n color: 'text-orange-600 dark:text-orange-400',\n bgColor: 'bg-orange-100 dark:bg-orange-900/30',\n },\n image: {\n icon: FileImage,\n color: 'text-purple-600 dark:text-purple-400',\n bgColor: 'bg-purple-100 dark:bg-purple-900/30',\n },\n video: {\n icon: FileVideo,\n color: 'text-pink-600 dark:text-pink-400',\n bgColor: 'bg-pink-100 dark:bg-pink-900/30',\n },\n audio: {\n icon: FileAudio,\n color: 'text-yellow-600 dark:text-yellow-400',\n bgColor: 'bg-yellow-100 dark:bg-yellow-900/30',\n },\n archive: {\n icon: Archive,\n color: 'text-amber-600 dark:text-amber-400',\n bgColor: 'bg-amber-100 dark:bg-amber-900/30',\n },\n code: {\n icon: Code,\n color: 'text-cyan-600 dark:text-cyan-400',\n bgColor: 'bg-cyan-100 dark:bg-cyan-900/30',\n },\n text: {\n icon: FileText,\n color: 'text-gray-600 dark:text-gray-400',\n bgColor: 'bg-gray-100 dark:bg-gray-800/50',\n },\n unknown: {\n icon: File,\n color: 'text-muted-foreground',\n bgColor: 'bg-muted',\n },\n};\n\ntype FileIconProps = {\n fileType: FileType;\n className?: string;\n};\n\nexport const FileIcon = ({ fileType, className }: FileIconProps) => {\n const config = FILE_TYPE_ICONS[fileType] ?? FILE_TYPE_ICONS.unknown;\n const Icon = config.icon;\n\n return <Icon className={className} />;\n};\n\nexport const getFileTypeStyles = (fileType: FileType) => FILE_TYPE_ICONS[fileType] ?? FILE_TYPE_ICONS.unknown;\n","import { useEffect, useRef, useState } from 'react';\nimport { autoUpdate, flip, offset, shift, useFloating } from '@floating-ui/react';\nimport copy from 'copy-to-clipboard';\nimport { Copy, Download, ExternalLink, RotateCw, Trash2 } from 'lucide-react';\n\nimport { Button } from '../../../ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../../ui/tooltip';\nimport { cn } from '../../../utils';\nimport type { FileElementProps } from '../../types';\n\ntype FileInlineToolbarProps = {\n referenceRef: React.MutableRefObject<HTMLElement | null>;\n elementProps: FileElementProps;\n onReplace: () => void;\n onDelete: () => void;\n onDownload?: () => void;\n};\n\nexport const FileInlineToolbar = ({\n referenceRef,\n elementProps,\n onReplace,\n onDelete,\n onDownload,\n}: FileInlineToolbarProps) => {\n const [isVisible, setIsVisible] = useState(false);\n const floatingRef = useRef<HTMLDivElement | null>(null);\n\n const { floatingStyles } = useFloating({\n placement: 'top-end',\n strategy: 'fixed',\n middleware: [\n offset(8),\n flip({\n fallbackPlacements: ['bottom', 'top'],\n padding: 10,\n }),\n shift({ padding: 10 }),\n ],\n whileElementsMounted: autoUpdate,\n elements: {\n reference: referenceRef.current,\n floating: floatingRef.current,\n }\n });\n\n useEffect(() => {\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n }, []);\n\n const handleDownload = () => {\n if (onDownload) {\n onDownload();\n } else if (elementProps.src) {\n const a = document.createElement('a');\n a.href = elementProps.src;\n a.download = elementProps.name ?? `file-${Date.now()}`;\n a.click();\n }\n };\n\n const handleCopy = () => {\n if (elementProps.src) {\n copy(elementProps.src);\n }\n };\n\n const handleOpenLink = () => {\n if (elementProps.src) {\n window.open(elementProps.src, '_blank');\n }\n };\n\n return (\n <div\n ref={floatingRef}\n onMouseDown={(e) => e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n className={cn(\n 'pointer-events-auto z-50',\n 'flex items-center gap-1 rounded-lg border bg-background/95 backdrop-blur-sm p-1 shadow-lg',\n 'transition-all duration-200 ease-out',\n isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-2',\n )}\n style={floatingStyles}>\n <TooltipProvider delayDuration={0}>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={onReplace}>\n <RotateCw className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Replace</TooltipContent>\n </Tooltip>\n\n {elementProps.src && (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={handleDownload}>\n <Download className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Download</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={handleCopy}>\n <Copy className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Copy URL</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={handleOpenLink}>\n <ExternalLink className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Open in new tab</TooltipContent>\n </Tooltip>\n </>\n )}\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-destructive hover:bg-destructive/10 hover:text-destructive\"\n onClick={onDelete}>\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Delete</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n );\n};\n","import { useRef } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport { useBlockSelected, useElementSelected } from '@yoopta/editor';\nimport { formatFileSize, getFileType } from '@yoopta/file';\nimport { Download } from 'lucide-react';\n\nimport { FileIcon, getFileTypeStyles } from './file-icons';\nimport { FileInlineToolbar } from './file-inline-toolbar';\nimport { Button } from '../../../ui/button';\nimport { cn } from '../../../utils';\nimport type { FileElementProps } from '../../types';\n\ntype Props = {\n blockId: string;\n onDelete: () => void;\n onReplace: () => void;\n attributes: PluginElementRenderProps['attributes'];\n children: React.ReactNode;\n elementProps: FileElementProps;\n};\n\nexport const FileRender = ({ blockId, attributes, children, elementProps, onDelete, onReplace }: Props) => {\n const { isElementSelected } = useElementSelected();\n const isBlockSelected = useBlockSelected({ blockId });\n const isSelected = isElementSelected && isBlockSelected;\n const cardRef = useRef<HTMLDivElement | null>(null);\n\n const { name, format, size, src } = elementProps;\n const displayName = format ? `${name}.${format}` : name ?? 'Untitled file';\n const fileType = getFileType(displayName);\n const typeStyles = getFileTypeStyles(fileType);\n\n const handleDownload = () => {\n if (!src) return;\n const a = document.createElement('a');\n a.href = src;\n a.download = displayName;\n a.click();\n };\n\n return (\n <div {...attributes} className=\"group/file mt-2 relative transition-all w-full\">\n <div className=\"relative\" contentEditable={false}>\n <div\n ref={cardRef}\n className={cn(\n 'flex items-center gap-3 p-3 rounded-lg border bg-card transition-all',\n 'hover:bg-accent/50',\n isSelected && 'ring-2 ring-primary ring-offset-2',\n )}>\n {/* File Icon */}\n <div className={cn('flex-shrink-0 rounded-lg p-2.5', typeStyles.bgColor)}>\n <FileIcon fileType={fileType} className={cn('h-5 w-5', typeStyles.color)} />\n </div>\n\n {/* File Info */}\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm font-medium truncate\">{displayName}</p>\n <p className=\"text-xs text-muted-foreground\">{formatFileSize(size)}</p>\n </div>\n\n {/* Download Button */}\n {src && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"flex-shrink-0 h-8 w-8 opacity-0 group-hover/file:opacity-100 transition-opacity\"\n onClick={handleDownload}>\n <Download className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n\n {isSelected && (\n <FileInlineToolbar\n referenceRef={cardRef}\n elementProps={elementProps}\n onReplace={onReplace}\n onDelete={onDelete}\n onDownload={handleDownload}\n />\n )}\n </div>\n {children}\n </div>\n );\n};\n","import { useCallback } from 'react';\nimport { type PluginElementRenderProps, useYooptaPluginOptions } from '@yoopta/editor';\nimport { Blocks, Elements, useYooptaEditor } from '@yoopta/editor';\nimport { useFileDelete, useFileUpload } from '@yoopta/file';\nimport type { FileElement as FileElementType, FilePluginOptions } from '@yoopta/file';\nimport { Editor, Element } from 'slate';\n\nimport { FilePlaceholder } from './file-placeholder';\nimport { FileRender } from './file-render';\nimport type { FileElementProps } from '../../types';\n\nexport const FileElement = ({ element, attributes, children, blockId }: PluginElementRenderProps) => {\n const editor = useYooptaEditor();\n const pluginOptions = useYooptaPluginOptions<FilePluginOptions>('File');\n const { upload: uploadFileToStorage, progress, loading } = useFileUpload(pluginOptions.upload);\n const { deleteFile: deleteFileFromStorage } = useFileDelete(pluginOptions.delete);\n\n const updateElement = useCallback(\n (props: Partial<FileElementProps>) => {\n Elements.updateElement(editor, {\n blockId,\n type: 'file',\n props: {\n ...element.props,\n ...props,\n },\n });\n },\n [editor, blockId, element.props],\n );\n\n const deleteFile = useCallback(async () => {\n await deleteFileFromStorage(element as FileElementType);\n const slate = Blocks.getBlockSlate(editor, { id: blockId });\n if (!slate) return;\n\n const elementPath = Elements.getElementPath(editor, { blockId, element });\n if (!elementPath) return;\n\n const parentEntry = elementPath ? Editor.parent(slate, elementPath) : undefined;\n if (parentEntry && Element.isElement(parentEntry[0]) && !Editor.isEditor(parentEntry[0])) {\n Elements.deleteElement(editor, {\n blockId,\n type: 'file',\n path: elementPath,\n });\n return;\n }\n\n Blocks.deleteBlock(editor, { blockId, focus: true });\n }, [editor, blockId, element, deleteFileFromStorage]);\n\n const replaceFile = useCallback(() => {\n Elements.updateElement(editor, {\n blockId,\n type: 'file',\n props: {\n ...element.props,\n id: null,\n src: null,\n name: null,\n size: null,\n format: null,\n },\n });\n }, [editor, blockId, element.props]);\n\n const onUpload = useCallback(\n async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (!file) return;\n\n const result = await uploadFileToStorage(file);\n\n // Parse name and format from result or file\n let name = result.name ?? file.name;\n let format: string | null = null;\n\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex > 0) {\n format = name.slice(dotIndex + 1);\n name = name.slice(0, dotIndex);\n }\n\n updateElement({\n id: result.id,\n src: result.url,\n name,\n size: result.size ?? file.size,\n format,\n });\n },\n [uploadFileToStorage, updateElement],\n );\n\n // Show placeholder if no src\n if (!element.props.src) {\n return (\n <FilePlaceholder\n onUpload={onUpload}\n progress={progress}\n loading={loading}\n accept={pluginOptions.accept}\n attributes={attributes}>\n {children}\n </FilePlaceholder>\n );\n }\n\n return (\n <FileRender\n blockId={blockId}\n onDelete={deleteFile}\n attributes={attributes}\n onReplace={replaceFile}\n elementProps={element.props as FileElementProps}>\n {children}\n </FileRender>\n );\n};\n","import { FileElement } from './elements/file/file-element';\n\nexport const FileUI = {\n file: {\n render: FileElement,\n },\n};\n"],"names":["_jsx","_jsxs","Loader2","FileIcon","copy","_Fragment"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
package/dist/headings.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"headings.js","sources":["../src/headings/heading-one/elements/heading-one.tsx","../src/headings/heading-one/index.ts","../src/headings/heading-three/elements/heading-three.tsx","../src/headings/heading-three/index.ts","../src/headings/heading-two/elements/heading-two.tsx","../src/headings/heading-two/index.ts","../src/headings/index.ts"],"sourcesContent":["import type { PluginElementRenderProps } from '@yoopta/editor';\n\nexport const HeadingOne = (props: PluginElementRenderProps) => {\n const { attributes, children, element } = props;\n\n return (\n <h1\n id={element.id}\n draggable={false}\n {...attributes}\n className=\"scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl\">\n {children}\n </h1>\n );\n};\n","import { HeadingOne } from './elements/heading-one';\n\nexport const HeadingOneUI = {\n 'heading-one': {\n render: HeadingOne,\n },\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\n\nexport const HeadingThree = (props: PluginElementRenderProps) => {\n const { attributes, children, element } = props;\n\n return (\n <h3\n id={element.id}\n draggable={false}\n {...attributes}\n className=\"mt-4 scroll-m-20 text-2xl font-semibold tracking-tight\">\n {children}\n </h3>\n );\n};\n","import { HeadingThree } from './elements/heading-three';\n\nexport const HeadingThreeUI = {\n 'heading-three': {\n render: HeadingThree,\n },\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\n\nexport const HeadingTwo = (props: PluginElementRenderProps) => {\n const { attributes, children, element } = props;\n\n return (\n <h2\n id={element.id}\n draggable={false}\n {...attributes}\n className=\"scroll-m-20 border-b pb-2 text-3xl font-semibold tracking-tight first:mt-0\">\n {children}\n </h2>\n );\n};\n","import { HeadingTwo } from './elements/heading-two';\n\nexport const HeadingTwoUI = {\n 'heading-two': {\n render: HeadingTwo,\n },\n};\n","import { HeadingOneUI } from './heading-one';\nimport { HeadingThreeUI } from './heading-three';\nimport { HeadingTwoUI } from './heading-two';\n\nexport const HeadingsUI = {\n HeadingOne: HeadingOneUI,\n HeadingTwo: HeadingTwoUI,\n HeadingThree: HeadingThreeUI,\n};\n"],"names":["_jsx"],"mappings":";;AAEO,MAAM,UAAU,GAAG,CAAC,KAA+B,KAAI;IAC5D,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEhD,QACEA,0BACE,EAAE,EAAE,OAAO,CAAC,EAAE,EACd,SAAS,EAAE,KAAK,EACZ,EAAA,UAAU,IACd,SAAS,EAAC,gEAAgE,EACzE,EAAA,EAAA,QAAA,EAAA,QAAQ,EACN,CAAA,CAAA,EACL;AACJ,CAAC;;ACZM,MAAM,YAAY,GAAG;AAC1B,IAAA,aAAa,EAAE;AACb,QAAA,MAAM,EAAE,UAAU;AACnB,KAAA;CACF;;ACJM,MAAM,YAAY,GAAG,CAAC,KAA+B,KAAI;IAC9D,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEhD,QACEA,0BACE,EAAE,EAAE,OAAO,CAAC,EAAE,EACd,SAAS,EAAE,KAAK,EACZ,EAAA,UAAU,IACd,SAAS,EAAC,wDAAwD,EACjE,EAAA,EAAA,QAAA,EAAA,QAAQ,EACN,CAAA,CAAA,EACL;AACJ,CAAC;;ACZM,MAAM,cAAc,GAAG;AAC5B,IAAA,eAAe,EAAE;AACf,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;CACF;;ACJM,MAAM,UAAU,GAAG,CAAC,KAA+B,KAAI;IAC5D,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAEhD,QACEA,0BACE,EAAE,EAAE,OAAO,CAAC,EAAE,EACd,SAAS,EAAE,KAAK,EACZ,EAAA,UAAU,IACd,SAAS,EAAC,4EAA4E,EACrF,EAAA,EAAA,QAAA,EAAA,QAAQ,EACN,CAAA,CAAA,EACL;AACJ,CAAC;;ACZM,MAAM,YAAY,GAAG;AAC1B,IAAA,aAAa,EAAE;AACb,QAAA,MAAM,EAAE,UAAU;AACnB,KAAA;CACF;;ACFY,MAAA,UAAU,GAAG;AACxB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,YAAY,EAAE,cAAc;;;;;"}
|
package/dist/image.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sources":["../../../../node_modules/lucide-react/src/icons/image.ts","../src/image/elements/image/image-placeholder-unsplash.tsx","../src/image/elements/image/image-placeholder.tsx","../../../../node_modules/@radix-ui/react-slider/src/slider.tsx","../src/ui/slider.tsx","../src/image/elements/image/image-inline-toolbar-settings.tsx","../src/image/elements/image/image-inline-toolbar.tsx","../src/image/elements/image/image-render.tsx","../src/image/elements/image/image-element.tsx","../src/image/index.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/image\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Image = createLucideIcon('Image', [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n]);\n\nexport default Image;\n","import { Button } from '../../../ui/button';\nimport { TabsContent } from '../../../ui/tabs';\n\nexport const ImagePlaceholderUnsplash = ({ onInsertFromUnsplash }) => (\n <TabsContent value=\"unsplash\" className=\"mt-4\">\n <div className=\"flex flex-col items-center gap-3 py-6\">\n <div className=\"rounded-lg bg-muted p-3\">\n <svg className=\"h-6 w-6\" viewBox=\"0 0 32 32\" fill=\"currentColor\">\n <path d=\"M10 9V0h12v9H10zm12 5h10v18H0V14h10v9h12v-9z\" />\n </svg>\n </div>\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">Browse free photos</p>\n <p className=\"text-xs text-muted-foreground\">Powered by Unsplash</p>\n </div>\n <Button onClick={onInsertFromUnsplash}>Browse photos</Button>\n </div>\n </TabsContent>\n);\n","import { useRef, useState } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport type { ImageUploadPreview, ImageUploadProgress } from '@yoopta/image';\nimport { ImageIcon, LinkIcon, Loader2, Sparkles, Upload } from 'lucide-react';\n\nimport { ImagePlaceholderUnsplash } from './image-placeholder-unsplash';\nimport { Button } from '../../../ui/button';\nimport { Input } from '../../../ui/input';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '../../../ui/tabs';\nimport { cn } from '../../../utils';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../../../ui/tooltip';\n\ntype ImagePlaceholderProps = {\n onUpload: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onInsertUrl: (url: string) => void;\n onInsertFromUnsplash?: () => void;\n onInsertFromAI?: (prompt: string) => void;\n className?: string;\n attributes: PluginElementRenderProps['attributes'];\n children: React.ReactNode;\n preview: ImageUploadPreview | null;\n progress: ImageUploadProgress | null;\n loading: boolean;\n};\n\n// Preview Image Component\ntype ImagePreviewProps = {\n preview: ImageUploadPreview;\n};\n\nconst ImagePreview = ({ preview }: ImagePreviewProps) => (\n <div\n className=\"absolute inset-0 overflow-hidden\"\n style={{\n width: preview.width,\n height: preview.height,\n }}>\n <img\n src={preview.url}\n alt=\"Preview\"\n className=\"h-full w-full object-cover object-center\"\n style={{\n width: preview.width,\n height: preview.height,\n }}\n draggable={false}\n />\n </div>\n);\n\n// Upload Progress Component\ntype ImageUploadProgressProps = {\n progress: ImageUploadProgress;\n};\n\nconst ImageUploadProgressOverlay = ({ progress }: ImageUploadProgressProps) => (\n <div className=\"absolute inset-0 z-20 flex flex-col items-center justify-center gap-4 bg-black/70 backdrop-blur-sm p-6\">\n <div className=\"w-full max-w-md space-y-4\">\n <div className=\"space-y-2\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium text-white\">Uploading...</span>\n <span className=\"text-white/80\">{progress.percentage}%</span>\n </div>\n <div className=\"h-2 w-full overflow-hidden rounded-full bg-white/20\">\n <div\n className=\"h-full bg-primary transition-all duration-300 ease-out\"\n style={{ width: `${progress.percentage}%` }}\n />\n </div>\n <div className=\"flex items-center justify-between text-xs text-white/60\">\n <span>\n {(progress.loaded / 1024 / 1024).toFixed(2)} MB /{' '}\n {(progress.total / 1024 / 1024).toFixed(2)} MB\n </span>\n <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n </div>\n </div>\n </div>\n </div>\n);\n\n// Upload Form Component\ntype ImageUploadFormProps = {\n onUpload: (event: React.ChangeEvent<HTMLInputElement>) => void;\n hasPreview: boolean;\n};\n\nconst ImageUploadForm = ({ onUpload, hasPreview }: ImageUploadFormProps) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n if (hasPreview) {\n return (\n <div className=\"flex flex-col items-center justify-center gap-4 py-8\">\n <div className=\"text-center space-y-2\">\n <p className=\"text-sm font-medium text-white\">Image preview</p>\n <p className=\"text-xs text-white/80\">Uploading your image...</p>\n </div>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={onUpload}\n className=\"hidden\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col items-center gap-3 py-6\">\n <div className=\"rounded-lg bg-muted p-3\">\n <ImageIcon className=\"h-6 w-6 text-muted-foreground\" />\n </div>\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">Upload an image</p>\n <p className=\"text-xs text-muted-foreground\">Click or drag and drop</p>\n </div>\n <Button onClick={() => fileInputRef.current?.click()}>Choose file</Button>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={onUpload}\n className=\"hidden\"\n />\n </div>\n );\n};\n\n// Link Form Component\ntype ImageLinkFormProps = {\n onInsertUrl: (url: string) => void;\n};\n\nconst ImageLinkForm = ({ onInsertUrl }: ImageLinkFormProps) => {\n const [urlInput, setUrlInput] = useState('');\n\n const handleSubmit = () => {\n if (urlInput.trim()) {\n onInsertUrl(urlInput.trim());\n setUrlInput('');\n }\n };\n\n return (\n <div className=\"mt-4 space-y-3\">\n <Input\n placeholder=\"Paste image URL...\"\n value={urlInput}\n onChange={(e) => setUrlInput(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && urlInput.trim()) {\n handleSubmit();\n }\n }}\n />\n <Button className=\"w-full\" onClick={handleSubmit} disabled={!urlInput.trim()}>\n Embed image\n </Button>\n </div>\n );\n};\n\n// AI Form Component\ntype ImageAIFormProps = {\n onInsertFromAI: (prompt: string) => void;\n};\n\nconst ImageAIForm = ({ onInsertFromAI }: ImageAIFormProps) => {\n const [aiPrompt, setAiPrompt] = useState('');\n const [isGenerating, setIsGenerating] = useState(false);\n\n const handleSubmit = () => {\n if (aiPrompt.trim() && !isGenerating) {\n setIsGenerating(true);\n onInsertFromAI(aiPrompt.trim());\n setIsGenerating(false);\n setAiPrompt('');\n }\n };\n\n return (\n <div className=\"mt-4 space-y-3\">\n <div className=\"space-y-2\">\n <Input\n placeholder=\"Describe the image...\"\n value={aiPrompt}\n onChange={(e) => setAiPrompt(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleSubmit();\n }\n }}\n disabled={isGenerating}\n />\n <p className=\"text-xs text-muted-foreground\">\n Example: "A sunset over mountains with dramatic clouds”\n </p>\n </div>\n <Button\n className=\"w-full gap-2\"\n onClick={handleSubmit}\n disabled={!aiPrompt.trim() || isGenerating}>\n {isGenerating ? (\n <>\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n Generating...\n </>\n ) : (\n <>\n <Sparkles className=\"h-4 w-4\" />\n Generate image\n </>\n )}\n </Button>\n </div>\n );\n};\n\n// Tabs Container Component\ntype ImagePlaceholderTabsProps = {\n onUpload: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onInsertUrl: (url: string) => void;\n onInsertFromUnsplash?: () => void;\n onInsertFromAI?: (prompt: string) => void;\n hasPreview: boolean;\n};\n\nconst ImagePlaceholderTabs = ({\n onUpload,\n onInsertUrl,\n onInsertFromUnsplash,\n onInsertFromAI,\n hasPreview,\n}: ImagePlaceholderTabsProps) => (\n <div className={cn('relative p-4', hasPreview && 'min-h-[300px] flex flex-col')}>\n <Tabs defaultValue=\"upload\" className=\"w-full\">\n <TabsList\n className={cn(\n 'grid w-full grid-cols-4',\n hasPreview && 'bg-background/80 backdrop-blur-sm',\n )}>\n <TabsTrigger value=\"upload\" className=\"gap-1.5\">\n <Upload className=\"h-3.5 w-3.5\" />\n Upload\n </TabsTrigger>\n <Tooltip>\n <TooltipTrigger asChild>\n <TabsTrigger value=\"link\" disabled className=\"gap-1.5\">\n <LinkIcon className=\"h-3.5 w-3.5\" />\n Link\n </TabsTrigger>\n </TooltipTrigger>\n <TooltipContent>\n Link is not available yet\n </TooltipContent>\n </Tooltip>\n {onInsertFromUnsplash && (\n <Tooltip>\n <TooltipTrigger asChild>\n <TabsTrigger value=\"unsplash\" disabled className=\"gap-1.5\">\n <svg className=\"h-3.5 w-3.5\" viewBox=\"0 0 32 32\" fill=\"currentColor\">\n <path d=\"M10 9V0h12v9H10zm12 5h10v18H0V14h10v9h12v-9z\" />\n </svg>\n Unsplash\n </TabsTrigger>\n </TooltipTrigger>\n <TooltipContent>\n Unsplash is not available yet\n </TooltipContent>\n </Tooltip>\n )}\n {onInsertFromAI && (\n <Tooltip>\n <TooltipTrigger asChild>\n <TabsTrigger value=\"ai\" disabled className=\"gap-1.5\">\n <Sparkles className=\"h-3.5 w-3.5\" />\n AI\n </TabsTrigger>\n </TooltipTrigger>\n <TooltipContent>\n AI is not available yet\n </TooltipContent>\n </Tooltip>\n )}\n </TabsList>\n\n <TabsContent value=\"upload\" className=\"mt-4\">\n <ImageUploadForm onUpload={onUpload} hasPreview={hasPreview} />\n </TabsContent>\n\n <TabsContent value=\"link\" d>\n <ImageLinkForm onInsertUrl={onInsertUrl} />\n </TabsContent>\n\n {onInsertFromUnsplash && (\n <ImagePlaceholderUnsplash onInsertFromUnsplash={onInsertFromUnsplash} />\n )}\n\n {onInsertFromAI && (\n <TabsContent value=\"ai\">\n <ImageAIForm onInsertFromAI={onInsertFromAI} />\n </TabsContent>\n )}\n </Tabs>\n </div>\n);\n\n// Main Component\nexport const ImagePlaceholder = ({\n onUpload,\n onInsertUrl,\n onInsertFromUnsplash,\n onInsertFromAI,\n className,\n attributes,\n children,\n preview,\n progress,\n loading,\n}: ImagePlaceholderProps) => {\n const hasPreview = preview !== null && !!preview.url;\n const showUploadProgress = loading && progress;\n\n return (\n <div\n className={cn(\n 'mt-2 relative rounded-lg border bg-background overflow-hidden',\n hasPreview && 'min-h-[300px]',\n className,\n )}\n {...attributes}\n contentEditable={false}>\n {hasPreview && <ImagePreview preview={preview} />}\n\n {!hasPreview && (\n <ImagePlaceholderTabs\n onUpload={onUpload}\n onInsertUrl={onInsertUrl}\n onInsertFromUnsplash={onInsertFromUnsplash}\n onInsertFromAI={onInsertFromAI}\n hasPreview={hasPreview}\n />\n )}\n\n {showUploadProgress && progress && <ImageUploadProgressOverlay progress={progress} />}\n {children}\n </div>\n );\n};\n","import * as React from 'react';\nimport { clamp } from '@radix-ui/number';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { createCollection } from '@radix-ui/react-collection';\n\nimport type { Scope } from '@radix-ui/react-context';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst PAGE_KEYS = ['PageUp', 'PageDown'];\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\ntype SlideDirection = 'from-left' | 'from-right' | 'from-bottom' | 'from-top';\nconst BACK_KEYS: Record<SlideDirection, string[]> = {\n 'from-left': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-right': ['Home', 'PageDown', 'ArrowDown', 'ArrowRight'],\n 'from-bottom': ['Home', 'PageDown', 'ArrowDown', 'ArrowLeft'],\n 'from-top': ['Home', 'PageDown', 'ArrowUp', 'ArrowLeft'],\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Slider\n * -----------------------------------------------------------------------------------------------*/\n\nconst SLIDER_NAME = 'Slider';\n\nconst [Collection, useCollection, createCollectionScope] =\n createCollection<SliderThumbElement>(SLIDER_NAME);\n\ntype ScopedProps<P> = P & { __scopeSlider?: Scope };\nconst [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME, [\n createCollectionScope,\n]);\n\ntype SliderContextValue = {\n name: string | undefined;\n disabled: boolean | undefined;\n min: number;\n max: number;\n values: number[];\n valueIndexToChangeRef: React.MutableRefObject<number>;\n thumbs: Set<SliderThumbElement>;\n orientation: SliderProps['orientation'];\n form: string | undefined;\n};\n\nconst [SliderProvider, useSliderContext] = createSliderContext<SliderContextValue>(SLIDER_NAME);\n\ntype SliderElement = SliderHorizontalElement | SliderVerticalElement;\ninterface SliderProps\n extends Omit<\n SliderHorizontalProps | SliderVerticalProps,\n keyof SliderOrientationPrivateProps | 'defaultValue'\n > {\n name?: string;\n disabled?: boolean;\n orientation?: React.AriaAttributes['aria-orientation'];\n dir?: Direction;\n min?: number;\n max?: number;\n step?: number;\n minStepsBetweenThumbs?: number;\n value?: number[];\n defaultValue?: number[];\n onValueChange?(value: number[]): void;\n onValueCommit?(value: number[]): void;\n inverted?: boolean;\n form?: string;\n}\n\nconst Slider = React.forwardRef<SliderElement, SliderProps>(\n (props: ScopedProps<SliderProps>, forwardedRef) => {\n const {\n name,\n min = 0,\n max = 100,\n step = 1,\n orientation = 'horizontal',\n disabled = false,\n minStepsBetweenThumbs = 0,\n defaultValue = [min],\n value,\n onValueChange = () => {},\n onValueCommit = () => {},\n inverted = false,\n form,\n ...sliderProps\n } = props;\n const thumbRefs = React.useRef<SliderContextValue['thumbs']>(new Set());\n const valueIndexToChangeRef = React.useRef<number>(0);\n const isHorizontal = orientation === 'horizontal';\n const SliderOrientation = isHorizontal ? SliderHorizontal : SliderVertical;\n\n const [values = [], setValues] = useControllableState({\n prop: value,\n defaultProp: defaultValue,\n onChange: (value) => {\n const thumbs = [...thumbRefs.current];\n thumbs[valueIndexToChangeRef.current]?.focus();\n onValueChange(value);\n },\n });\n const valuesBeforeSlideStartRef = React.useRef(values);\n\n function handleSlideStart(value: number) {\n const closestIndex = getClosestValueIndex(values, value);\n updateValues(value, closestIndex);\n }\n\n function handleSlideMove(value: number) {\n updateValues(value, valueIndexToChangeRef.current);\n }\n\n function handleSlideEnd() {\n const prevValue = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];\n const nextValue = values[valueIndexToChangeRef.current];\n const hasChanged = nextValue !== prevValue;\n if (hasChanged) onValueCommit(values);\n }\n\n function updateValues(value: number, atIndex: number, { commit } = { commit: false }) {\n const decimalCount = getDecimalCount(step);\n const snapToStep = roundValue(Math.round((value - min) / step) * step + min, decimalCount);\n const nextValue = clamp(snapToStep, [min, max]);\n\n setValues((prevValues = []) => {\n const nextValues = getNextSortedValues(prevValues, nextValue, atIndex);\n if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {\n valueIndexToChangeRef.current = nextValues.indexOf(nextValue);\n const hasChanged = String(nextValues) !== String(prevValues);\n if (hasChanged && commit) onValueCommit(nextValues);\n return hasChanged ? nextValues : prevValues;\n } else {\n return prevValues;\n }\n });\n }\n\n return (\n <SliderProvider\n scope={props.__scopeSlider}\n name={name}\n disabled={disabled}\n min={min}\n max={max}\n valueIndexToChangeRef={valueIndexToChangeRef}\n thumbs={thumbRefs.current}\n values={values}\n orientation={orientation}\n form={form}\n >\n <Collection.Provider scope={props.__scopeSlider}>\n <Collection.Slot scope={props.__scopeSlider}>\n <SliderOrientation\n aria-disabled={disabled}\n data-disabled={disabled ? '' : undefined}\n {...sliderProps}\n ref={forwardedRef}\n onPointerDown={composeEventHandlers(sliderProps.onPointerDown, () => {\n if (!disabled) valuesBeforeSlideStartRef.current = values;\n })}\n min={min}\n max={max}\n inverted={inverted}\n onSlideStart={disabled ? undefined : handleSlideStart}\n onSlideMove={disabled ? undefined : handleSlideMove}\n onSlideEnd={disabled ? undefined : handleSlideEnd}\n onHomeKeyDown={() => !disabled && updateValues(min, 0, { commit: true })}\n onEndKeyDown={() =>\n !disabled && updateValues(max, values.length - 1, { commit: true })\n }\n onStepKeyDown={({ event, direction: stepDirection }) => {\n if (!disabled) {\n const isPageKey = PAGE_KEYS.includes(event.key);\n const isSkipKey = isPageKey || (event.shiftKey && ARROW_KEYS.includes(event.key));\n const multiplier = isSkipKey ? 10 : 1;\n const atIndex = valueIndexToChangeRef.current;\n const value = values[atIndex]!;\n const stepInDirection = step * multiplier * stepDirection;\n updateValues(value + stepInDirection, atIndex, { commit: true });\n }\n }}\n />\n </Collection.Slot>\n </Collection.Provider>\n </SliderProvider>\n );\n }\n);\n\nSlider.displayName = SLIDER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SliderHorizontal\n * -----------------------------------------------------------------------------------------------*/\n\ntype Side = 'top' | 'right' | 'bottom' | 'left';\n\nconst [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext<{\n startEdge: Side;\n endEdge: Side;\n size: keyof NonNullable<ReturnType<typeof useSize>>;\n direction: number;\n}>(SLIDER_NAME, {\n startEdge: 'left',\n endEdge: 'right',\n size: 'width',\n direction: 1,\n});\n\ntype SliderOrientationPrivateProps = {\n min: number;\n max: number;\n inverted: boolean;\n onSlideStart?(value: number): void;\n onSlideMove?(value: number): void;\n onSlideEnd?(): void;\n onHomeKeyDown(event: React.KeyboardEvent): void;\n onEndKeyDown(event: React.KeyboardEvent): void;\n onStepKeyDown(step: { event: React.KeyboardEvent; direction: number }): void;\n};\ninterface SliderOrientationProps\n extends Omit<SliderImplProps, keyof SliderImplPrivateProps>,\n SliderOrientationPrivateProps {}\n\ntype SliderHorizontalElement = SliderImplElement;\ninterface SliderHorizontalProps extends SliderOrientationProps {\n dir?: Direction;\n}\n\nconst SliderHorizontal = React.forwardRef<SliderHorizontalElement, SliderHorizontalProps>(\n (props: ScopedProps<SliderHorizontalProps>, forwardedRef) => {\n const {\n min,\n max,\n dir,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const [slider, setSlider] = React.useState<SliderImplElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setSlider(node));\n const rectRef = React.useRef<DOMRect>(undefined);\n const direction = useDirection(dir);\n const isDirectionLTR = direction === 'ltr';\n const isSlidingFromLeft = (isDirectionLTR && !inverted) || (!isDirectionLTR && inverted);\n\n function getValueFromPointer(pointerPosition: number) {\n const rect = rectRef.current || slider!.getBoundingClientRect();\n const input: [number, number] = [0, rect.width];\n const output: [number, number] = isSlidingFromLeft ? [min, max] : [max, min];\n const value = linearScale(input, output);\n\n rectRef.current = rect;\n return value(pointerPosition - rect.left);\n }\n\n return (\n <SliderOrientationProvider\n scope={props.__scopeSlider}\n startEdge={isSlidingFromLeft ? 'left' : 'right'}\n endEdge={isSlidingFromLeft ? 'right' : 'left'}\n direction={isSlidingFromLeft ? 1 : -1}\n size=\"width\"\n >\n <SliderImpl\n dir={direction}\n data-orientation=\"horizontal\"\n {...sliderProps}\n ref={composedRefs}\n style={{\n ...sliderProps.style,\n ['--radix-slider-thumb-transform' as any]: 'translateX(-50%)',\n }}\n onSlideStart={(event) => {\n const value = getValueFromPointer(event.clientX);\n onSlideStart?.(value);\n }}\n onSlideMove={(event) => {\n const value = getValueFromPointer(event.clientX);\n onSlideMove?.(value);\n }}\n onSlideEnd={() => {\n rectRef.current = undefined;\n onSlideEnd?.();\n }}\n onStepKeyDown={(event) => {\n const slideDirection = isSlidingFromLeft ? 'from-left' : 'from-right';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n }}\n />\n </SliderOrientationProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * SliderVertical\n * -----------------------------------------------------------------------------------------------*/\n\ntype SliderVerticalElement = SliderImplElement;\ninterface SliderVerticalProps extends SliderOrientationProps {}\n\nconst SliderVertical = React.forwardRef<SliderVerticalElement, SliderVerticalProps>(\n (props: ScopedProps<SliderVerticalProps>, forwardedRef) => {\n const {\n min,\n max,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const sliderRef = React.useRef<SliderImplElement>(null);\n const ref = useComposedRefs(forwardedRef, sliderRef);\n const rectRef = React.useRef<DOMRect>(undefined);\n const isSlidingFromBottom = !inverted;\n\n function getValueFromPointer(pointerPosition: number) {\n const rect = rectRef.current || sliderRef.current!.getBoundingClientRect();\n const input: [number, number] = [0, rect.height];\n const output: [number, number] = isSlidingFromBottom ? [max, min] : [min, max];\n const value = linearScale(input, output);\n\n rectRef.current = rect;\n return value(pointerPosition - rect.top);\n }\n\n return (\n <SliderOrientationProvider\n scope={props.__scopeSlider}\n startEdge={isSlidingFromBottom ? 'bottom' : 'top'}\n endEdge={isSlidingFromBottom ? 'top' : 'bottom'}\n size=\"height\"\n direction={isSlidingFromBottom ? 1 : -1}\n >\n <SliderImpl\n data-orientation=\"vertical\"\n {...sliderProps}\n ref={ref}\n style={{\n ...sliderProps.style,\n ['--radix-slider-thumb-transform' as any]: 'translateY(50%)',\n }}\n onSlideStart={(event) => {\n const value = getValueFromPointer(event.clientY);\n onSlideStart?.(value);\n }}\n onSlideMove={(event) => {\n const value = getValueFromPointer(event.clientY);\n onSlideMove?.(value);\n }}\n onSlideEnd={() => {\n rectRef.current = undefined;\n onSlideEnd?.();\n }}\n onStepKeyDown={(event) => {\n const slideDirection = isSlidingFromBottom ? 'from-bottom' : 'from-top';\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n }}\n />\n </SliderOrientationProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * SliderImpl\n * -----------------------------------------------------------------------------------------------*/\n\ntype SliderImplElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ntype SliderImplPrivateProps = {\n onSlideStart(event: React.PointerEvent): void;\n onSlideMove(event: React.PointerEvent): void;\n onSlideEnd(event: React.PointerEvent): void;\n onHomeKeyDown(event: React.KeyboardEvent): void;\n onEndKeyDown(event: React.KeyboardEvent): void;\n onStepKeyDown(event: React.KeyboardEvent): void;\n};\ninterface SliderImplProps extends PrimitiveDivProps, SliderImplPrivateProps {}\n\nconst SliderImpl = React.forwardRef<SliderImplElement, SliderImplProps>(\n (props: ScopedProps<SliderImplProps>, forwardedRef) => {\n const {\n __scopeSlider,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onHomeKeyDown,\n onEndKeyDown,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const context = useSliderContext(SLIDER_NAME, __scopeSlider);\n\n return (\n <Primitive.span\n {...sliderProps}\n ref={forwardedRef}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Home') {\n onHomeKeyDown(event);\n // Prevent scrolling to page start\n event.preventDefault();\n } else if (event.key === 'End') {\n onEndKeyDown(event);\n // Prevent scrolling to page end\n event.preventDefault();\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n onStepKeyDown(event);\n // Prevent scrolling for directional key presses\n event.preventDefault();\n }\n })}\n onPointerDown={composeEventHandlers(props.onPointerDown, (event) => {\n const target = event.target as HTMLElement;\n target.setPointerCapture(event.pointerId);\n // Prevent browser focus behaviour because we focus a thumb manually when values change.\n event.preventDefault();\n // Touch devices have a delay before focusing so won't focus if touch immediately moves\n // away from target (sliding). We want thumb to focus regardless.\n if (context.thumbs.has(target)) {\n target.focus();\n } else {\n onSlideStart(event);\n }\n })}\n onPointerMove={composeEventHandlers(props.onPointerMove, (event) => {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) onSlideMove(event);\n })}\n onPointerUp={composeEventHandlers(props.onPointerUp, (event) => {\n const target = event.target as HTMLElement;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n onSlideEnd(event);\n }\n })}\n />\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * SliderTrack\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRACK_NAME = 'SliderTrack';\n\ntype SliderTrackElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface SliderTrackProps extends PrimitiveSpanProps {}\n\nconst SliderTrack = React.forwardRef<SliderTrackElement, SliderTrackProps>(\n (props: ScopedProps<SliderTrackProps>, forwardedRef) => {\n const { __scopeSlider, ...trackProps } = props;\n const context = useSliderContext(TRACK_NAME, __scopeSlider);\n return (\n <Primitive.span\n data-disabled={context.disabled ? '' : undefined}\n data-orientation={context.orientation}\n {...trackProps}\n ref={forwardedRef}\n />\n );\n }\n);\n\nSliderTrack.displayName = TRACK_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SliderRange\n * -----------------------------------------------------------------------------------------------*/\n\nconst RANGE_NAME = 'SliderRange';\n\ntype SliderRangeElement = React.ComponentRef<typeof Primitive.span>;\ninterface SliderRangeProps extends PrimitiveSpanProps {}\n\nconst SliderRange = React.forwardRef<SliderRangeElement, SliderRangeProps>(\n (props: ScopedProps<SliderRangeProps>, forwardedRef) => {\n const { __scopeSlider, ...rangeProps } = props;\n const context = useSliderContext(RANGE_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(RANGE_NAME, __scopeSlider);\n const ref = React.useRef<HTMLSpanElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const valuesCount = context.values.length;\n const percentages = context.values.map((value) =>\n convertValueToPercentage(value, context.min, context.max)\n );\n const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;\n const offsetEnd = 100 - Math.max(...percentages);\n\n return (\n <Primitive.span\n data-orientation={context.orientation}\n data-disabled={context.disabled ? '' : undefined}\n {...rangeProps}\n ref={composedRefs}\n style={{\n ...props.style,\n [orientation.startEdge]: offsetStart + '%',\n [orientation.endEdge]: offsetEnd + '%',\n }}\n />\n );\n }\n);\n\nSliderRange.displayName = RANGE_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SliderThumb\n * -----------------------------------------------------------------------------------------------*/\n\nconst THUMB_NAME = 'SliderThumb';\n\ntype SliderThumbElement = SliderThumbImplElement;\ninterface SliderThumbProps extends Omit<SliderThumbImplProps, 'index'> {}\n\nconst SliderThumb = React.forwardRef<SliderThumbElement, SliderThumbProps>(\n (props: ScopedProps<SliderThumbProps>, forwardedRef) => {\n const getItems = useCollection(props.__scopeSlider);\n const [thumb, setThumb] = React.useState<SliderThumbImplElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n const index = React.useMemo(\n () => (thumb ? getItems().findIndex((item) => item.ref.current === thumb) : -1),\n [getItems, thumb]\n );\n return <SliderThumbImpl {...props} ref={composedRefs} index={index} />;\n }\n);\n\ntype SliderThumbImplElement = React.ComponentRef<typeof Primitive.span>;\ninterface SliderThumbImplProps extends PrimitiveSpanProps {\n index: number;\n name?: string;\n}\n\nconst SliderThumbImpl = React.forwardRef<SliderThumbImplElement, SliderThumbImplProps>(\n (props: ScopedProps<SliderThumbImplProps>, forwardedRef) => {\n const { __scopeSlider, index, name, ...thumbProps } = props;\n const context = useSliderContext(THUMB_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(THUMB_NAME, __scopeSlider);\n const [thumb, setThumb] = React.useState<HTMLSpanElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setThumb(node));\n // We set this to true by default so that events bubble to forms without JS (SSR)\n const isFormControl = thumb ? context.form || !!thumb.closest('form') : true;\n const size = useSize(thumb);\n // We cast because index could be `-1` which would return undefined\n const value = context.values[index] as number | undefined;\n const percent =\n value === undefined ? 0 : convertValueToPercentage(value, context.min, context.max);\n const label = getLabel(index, context.values.length);\n const orientationSize = size?.[orientation.size];\n const thumbInBoundsOffset = orientationSize\n ? getThumbInBoundsOffset(orientationSize, percent, orientation.direction)\n : 0;\n\n React.useEffect(() => {\n if (thumb) {\n context.thumbs.add(thumb);\n return () => {\n context.thumbs.delete(thumb);\n };\n }\n }, [thumb, context.thumbs]);\n\n return (\n <span\n style={{\n transform: 'var(--radix-slider-thumb-transform)',\n position: 'absolute',\n [orientation.startEdge]: `calc(${percent}% + ${thumbInBoundsOffset}px)`,\n }}\n >\n <Collection.ItemSlot scope={props.__scopeSlider}>\n <Primitive.span\n role=\"slider\"\n aria-label={props['aria-label'] || label}\n aria-valuemin={context.min}\n aria-valuenow={value}\n aria-valuemax={context.max}\n aria-orientation={context.orientation}\n data-orientation={context.orientation}\n data-disabled={context.disabled ? '' : undefined}\n tabIndex={context.disabled ? undefined : 0}\n {...thumbProps}\n ref={composedRefs}\n /**\n * There will be no value on initial render while we work out the index so we hide thumbs\n * without a value, otherwise SSR will render them in the wrong position before they\n * snap into the correct position during hydration which would be visually jarring for\n * slower connections.\n */\n style={value === undefined ? { display: 'none' } : props.style}\n onFocus={composeEventHandlers(props.onFocus, () => {\n context.valueIndexToChangeRef.current = index;\n })}\n />\n </Collection.ItemSlot>\n\n {isFormControl && (\n <SliderBubbleInput\n key={index}\n name={\n name ??\n (context.name ? context.name + (context.values.length > 1 ? '[]' : '') : undefined)\n }\n form={context.form}\n value={value}\n />\n )}\n </span>\n );\n }\n);\n\nSliderThumb.displayName = THUMB_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * SliderBubbleInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst BUBBLE_INPUT_NAME = 'RadioBubbleInput';\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Primitive.input>;\ninterface SliderBubbleInputProps extends InputProps {}\n\nconst SliderBubbleInput = React.forwardRef<HTMLInputElement, SliderBubbleInputProps>(\n ({ __scopeSlider, value, ...props }: ScopedProps<SliderBubbleInputProps>, forwardedRef) => {\n const ref = React.useRef<HTMLInputElement>(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevValue = usePrevious(value);\n\n // Bubble value change to parents (e.g form change event)\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'value') as PropertyDescriptor;\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event('input', { bubbles: true });\n setValue.call(input, value);\n input.dispatchEvent(event);\n }\n }, [prevValue, value]);\n\n /**\n * We purposefully do not use `type=\"hidden\"` here otherwise forms that\n * wrap it will not be able to access its value via the FormData API.\n *\n * We purposefully do not add the `value` attribute here to allow the value\n * to be set programmatically and bubble to any parent form `onChange` event.\n * Adding the `value` will cause React to consider the programmatic\n * dispatch a duplicate and it will get swallowed.\n */\n return (\n <Primitive.input\n style={{ display: 'none' }}\n {...props}\n ref={composedRefs}\n defaultValue={value}\n />\n );\n }\n);\n\nSliderBubbleInput.displayName = BUBBLE_INPUT_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getNextSortedValues(prevValues: number[] = [], nextValue: number, atIndex: number) {\n const nextValues = [...prevValues];\n nextValues[atIndex] = nextValue;\n return nextValues.sort((a, b) => a - b);\n}\n\nfunction convertValueToPercentage(value: number, min: number, max: number) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return clamp(percentage, [0, 100]);\n}\n\n/**\n * Returns a label for each thumb when there are two or more thumbs\n */\nfunction getLabel(index: number, totalValues: number) {\n if (totalValues > 2) {\n return `Value ${index + 1} of ${totalValues}`;\n } else if (totalValues === 2) {\n return ['Minimum', 'Maximum'][index];\n } else {\n return undefined;\n }\n}\n\n/**\n * Given a `values` array and a `nextValue`, determine which value in\n * the array is closest to `nextValue` and return its index.\n *\n * @example\n * // returns 1\n * getClosestValueIndex([10, 30], 25);\n */\nfunction getClosestValueIndex(values: number[], nextValue: number) {\n if (values.length === 1) return 0;\n const distances = values.map((value) => Math.abs(value - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\n\n/**\n * Offsets the thumb centre point while sliding to ensure it remains\n * within the bounds of the slider when reaching the edges\n */\nfunction getThumbInBoundsOffset(width: number, left: number, direction: number) {\n const halfWidth = width / 2;\n const halfPercent = 50;\n const offset = linearScale([0, halfPercent], [0, halfWidth]);\n return (halfWidth - offset(left) * direction) * direction;\n}\n\n/**\n * Gets an array of steps between each value.\n *\n * @example\n * // returns [1, 9]\n * getStepsBetweenValues([10, 11, 20]);\n */\nfunction getStepsBetweenValues(values: number[]) {\n return values.slice(0, -1).map((value, index) => values[index + 1]! - value);\n}\n\n/**\n * Verifies the minimum steps between all values is greater than or equal\n * to the expected minimum steps.\n *\n * @example\n * // returns false\n * hasMinStepsBetweenValues([1,2,3], 2);\n *\n * @example\n * // returns true\n * hasMinStepsBetweenValues([1,2,3], 1);\n */\nfunction hasMinStepsBetweenValues(values: number[], minStepsBetweenValues: number) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = getStepsBetweenValues(values);\n const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n return actualMinStepsBetweenValues >= minStepsBetweenValues;\n }\n return true;\n}\n\n// https://github.com/tmcw-up-for-adoption/simple-linear-scale/blob/master/index.js\nfunction linearScale(input: readonly [number, number], output: readonly [number, number]) {\n return (value: number) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\n\nfunction getDecimalCount(value: number) {\n return (String(value).split('.')[1] || '').length;\n}\n\nfunction roundValue(value: number, decimalCount: number) {\n const rounder = Math.pow(10, decimalCount);\n return Math.round(value * rounder) / rounder;\n}\n\nconst Root = Slider;\nconst Track = SliderTrack;\nconst Range = SliderRange;\nconst Thumb = SliderThumb;\n\nexport {\n createSliderScope,\n //\n Slider,\n SliderTrack,\n SliderRange,\n SliderThumb,\n //\n Root,\n Track,\n Range,\n Thumb,\n};\nexport type { SliderProps, SliderTrackProps, SliderRangeProps, SliderThumbProps };\n","'use client';\n\nimport * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '../utils';\n\nconst Slider = ({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root>) => {\n const values = React.useMemo(\n () => (Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max]),\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n data-slot=\"slider\"\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n 'relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}>\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n 'bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5',\n )}>\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n 'bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full',\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className=\"border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50\"\n />\n ))}\n </SliderPrimitive.Root>\n );\n};\n\nexport { Slider };\n","import { useState } from 'react';\nimport { Settings2 } from 'lucide-react';\n\nimport { Button } from '../../../ui/button';\nimport { Input } from '../../../ui/input';\nimport { Label } from '../../../ui/label';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../../ui/popover';\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '../../../ui/select';\nimport { Separator } from '../../../ui/separator';\nimport { Slider } from '../../../ui/slider';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../../ui/tooltip';\nimport type { ImageElementProps, ObjectFit } from '../../types';\n\ntype ImageInlineToolbarSettingsProps = {\n fit: ObjectFit;\n alt: string;\n borderRadius: number;\n onUpdate: (props: Partial<ImageElementProps>) => void;\n};\n\nconst FIT_LABELS: Partial<Record<ObjectFit, { label: string; description: string }>> = {\n contain: { label: 'Contain', description: 'Fit within bounds' },\n cover: { label: 'Cover', description: 'Fill and crop' },\n fill: { label: 'Fill', description: 'Stretch to fit' },\n};\n\nexport const ImageInlineToolbarSettings = ({\n fit,\n alt,\n borderRadius,\n onUpdate,\n}: ImageInlineToolbarSettingsProps) => {\n const [localAlt, setLocalAlt] = useState(alt);\n const [isOpen, setIsOpen] = useState(false);\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <PopoverTrigger asChild>\n <Button variant={isOpen ? 'secondary' : 'ghost'} size=\"icon\" className=\"h-7 w-7\">\n <Settings2 className=\"h-4 w-4\" />\n </Button>\n </PopoverTrigger>\n </TooltipTrigger>\n <TooltipContent>Settings</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n\n <PopoverContent\n className=\"w-80 p-3\"\n align=\"start\"\n contentEditable={false}\n onMouseDown={(e) => e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"space-y-3\">\n <div>\n <h4 className=\"font-semibold\">Image settings</h4>\n <p className=\"text-xs text-muted-foreground\">Customize how the image appears</p>\n </div>\n <Separator />\n <div className=\"space-y-1\">\n <Label htmlFor=\"alt-text\" className=\"text-sm font-medium\">\n Alt text\n </Label>\n <Input\n id=\"alt-text\"\n value={localAlt}\n onChange={(e) => setLocalAlt(e.target.value)}\n onBlur={() => onUpdate({ alt: localAlt })}\n placeholder=\"Describe this image...\"\n className=\"h-9\"\n />\n <p className=\"text-xs text-muted-foreground\">Important for accessibility and SEO</p>\n </div>\n\n <div className=\"space-y-1\">\n <Label htmlFor=\"object-fit\" className=\"text-sm font-medium\">\n How image fits\n </Label>\n <Select value={fit} onValueChange={(value: ObjectFit) => onUpdate({ fit: value })}>\n <SelectTrigger id=\"object-fit\" className=\"h-9 w-full\">\n <SelectValue placeholder=\"Select how image fits\">\n <div className=\"flex items-center gap-2\">\n <div className=\"font-medium\">{FIT_LABELS[fit]?.label}</div>\n <div className=\"text-xs text-muted-foreground\">\n {FIT_LABELS[fit]?.description}\n </div>\n </div>\n </SelectValue>\n </SelectTrigger>\n <SelectContent>\n <SelectGroup>\n <SelectItem value=\"contain\" className=\"cursor-pointer\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded border\">\n <div className=\"h-4 w-3 rounded bg-primary\" />\n </div>\n <div className=\"flex-1\">\n <div className=\"font-medium\">{FIT_LABELS.contain?.label}</div>\n <div className=\"text-xs text-muted-foreground\">\n {FIT_LABELS.contain?.description}\n </div>\n </div>\n </div>\n </SelectItem>\n <SelectItem value=\"cover\" className=\"cursor-pointer\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded border\">\n <div className=\"h-8 w-6 rounded bg-primary\" />\n </div>\n <div className=\"flex-1\">\n <div className=\"font-medium\">{FIT_LABELS.cover?.label}</div>\n <div className=\"text-xs text-muted-foreground\">\n {FIT_LABELS.cover?.description}\n </div>\n </div>\n </div>\n </SelectItem>\n <SelectItem value=\"fill\" className=\"cursor-pointer\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex h-8 w-8 shrink-0 items-center justify-center rounded border\">\n <div className=\"h-8 w-8 rounded bg-primary\" />\n </div>\n <div className=\"flex-1\">\n <div className=\"font-medium\">{FIT_LABELS.fill?.label}</div>\n <div className=\"text-xs text-muted-foreground\">\n {FIT_LABELS.fill?.description}\n </div>\n </div>\n </div>\n </SelectItem>\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between\">\n <Label className=\"text-sm font-medium\">Border radius</Label>\n <span className=\"text-sm text-muted-foreground\">{borderRadius}px</span>\n </div>\n <Slider\n value={[borderRadius]}\n onValueChange={([value]) => onUpdate({ borderRadius: value })}\n max={50}\n step={1}\n className=\"w-full\"\n />\n </div>\n </div>\n </PopoverContent>\n </Popover>\n );\n};\n","import { useEffect, useState } from 'react';\nimport { autoUpdate, flip, offset, shift, useFloating } from '@floating-ui/react';\nimport { AlignCenter, AlignLeft, AlignRight, Copy, Download, RotateCw, Trash2 } from 'lucide-react';\n\nimport { ImageInlineToolbarSettings } from './image-inline-toolbar-settings';\nimport { Button } from '../../../ui/button';\nimport { Separator } from '../../../ui/separator';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../../ui/tooltip';\nimport { cn } from '../../../utils';\nimport type { ImageElementProps } from '../../types';\n\ntype ImageInlineToolbarProps = {\n referenceRef: React.MutableRefObject<HTMLElement | null>;\n elementProps: ImageElementProps;\n onUpdate: (props: Partial<ImageElementProps>) => void;\n onReplace: () => void;\n onDelete: () => void;\n onDownload: () => void;\n onCopy: () => void;\n};\n\nexport const ImageInlineToolbar = ({\n referenceRef,\n elementProps,\n onUpdate,\n onReplace,\n onDelete,\n onDownload,\n onCopy,\n}: ImageInlineToolbarProps) => {\n const [isVisible, setIsVisible] = useState(false);\n\n const { refs, floatingStyles } = useFloating({\n placement: 'top-end',\n strategy: 'fixed',\n middleware: [\n offset(8),\n flip({\n fallbackPlacements: ['bottom', 'top'],\n padding: 10,\n }),\n shift({ padding: 10 }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n useEffect(() => {\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n }, []);\n\n useEffect(() => {\n const element = referenceRef.current;\n if (element) {\n refs.setReference(element);\n }\n }, [referenceRef, refs]);\n\n return (\n <div\n ref={refs.setFloating}\n onMouseDown={(e) => e.stopPropagation()}\n onClick={(e) => e.stopPropagation()}\n className={cn(\n 'pointer-events-auto',\n 'flex items-center gap-1 rounded-lg border bg-background/95 backdrop-blur-sm p-1 shadow-lg',\n 'transition-all duration-200 ease-out',\n isVisible ? 'opacity-100 translate-y-0' : 'opacity-0 translate-y-2',\n )}\n style={floatingStyles}>\n <TooltipProvider delayDuration={0}>\n <div className=\"flex items-center gap-0.5 border-r pr-1\">\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={elementProps.alignment === 'left' ? 'secondary' : 'ghost'}\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={() => onUpdate({ alignment: 'left' })}>\n <AlignLeft className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Align left</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={elementProps.alignment === 'center' ? 'secondary' : 'ghost'}\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={() => onUpdate({ alignment: 'center' })}>\n <AlignCenter className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Align center</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant={elementProps.alignment === 'right' ? 'secondary' : 'ghost'}\n size=\"icon\"\n className=\"h-7 w-7\"\n onClick={() => onUpdate({ alignment: 'right' })}>\n <AlignRight className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Align right</TooltipContent>\n </Tooltip>\n </div>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={onReplace}>\n <RotateCw className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Replace</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={onDownload}>\n <Download className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Download</TooltipContent>\n </Tooltip>\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-7 w-7\" onClick={onCopy}>\n <Copy className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Copy</TooltipContent>\n </Tooltip>\n\n <Separator orientation=\"vertical\" className=\"h-4\" />\n\n <ImageInlineToolbarSettings\n fit={elementProps.fit ?? 'contain'}\n alt={elementProps.alt || ''}\n borderRadius={elementProps.borderRadius ?? 0}\n onUpdate={onUpdate}\n />\n\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 text-destructive hover:bg-destructive/10 hover:text-destructive\"\n onClick={onDelete}>\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </TooltipTrigger>\n <TooltipContent>Delete</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n </div>\n );\n};\n","import { useEffect, useRef, useState } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport { useBlockSelected, useElementSelected, useYooptaEditor } from '@yoopta/editor';\nimport type { ImagePluginOptions } from '@yoopta/image';\nimport copy from 'copy-to-clipboard';\nimport { Rnd } from 'react-rnd';\n\nimport { ImageInlineToolbar } from './image-inline-toolbar';\nimport { cn } from '../../../utils';\nimport type { ImageElementProps } from '../../types';\n\ntype Props = {\n blockId: string;\n elementId: string;\n onUpdate: (props: Partial<ImageElementProps>) => void;\n onDelete: () => void;\n onReplace: () => void;\n attributes: PluginElementRenderProps['attributes'];\n children: React.ReactNode;\n elementProps: ImageElementProps;\n pluginOptions?: ImagePluginOptions;\n};\n\nexport const ImageRender = ({\n blockId,\n attributes,\n children,\n elementProps,\n onUpdate,\n onDelete,\n onReplace,\n pluginOptions,\n}: Props) => {\n const [sizes, setSizes] = useState(elementProps.sizes);\n const { isElementSelected } = useElementSelected();\n const isBlockSelected = useBlockSelected({ blockId });\n const isSelected = isElementSelected && isBlockSelected;\n const rndRef = useRef<HTMLElement | null>(null);\n const editor = useYooptaEditor();\n\n // Get max sizes from plugin options, with default maxWidth from editor width\n const [maxSizes, setMaxSizes] = useState(() => {\n const editorWidth = editor.refElement?.getBoundingClientRect().width || 650;\n const maxSizesOptions = pluginOptions?.maxSizes;\n\n return {\n maxWidth: maxSizesOptions?.maxWidth\n ? typeof maxSizesOptions.maxWidth === 'number'\n ? maxSizesOptions.maxWidth\n : parseInt(String(maxSizesOptions.maxWidth).replace(/[^\\d]/g, ''), 10)\n : editorWidth,\n maxHeight: maxSizesOptions?.maxHeight\n ? typeof maxSizesOptions.maxHeight === 'number'\n ? maxSizesOptions.maxHeight\n : parseInt(String(maxSizesOptions.maxHeight).replace(/[^\\d]/g, ''), 10)\n : 550,\n };\n });\n\n // Update maxSizes when editor width changes\n useEffect(() => {\n const updateMaxSizes = () => {\n const editorWidth = editor.refElement?.getBoundingClientRect().width || 650;\n const pluginMaxSizes = pluginOptions?.maxSizes;\n\n setMaxSizes({\n maxWidth: pluginMaxSizes?.maxWidth\n ? typeof pluginMaxSizes.maxWidth === 'number'\n ? pluginMaxSizes.maxWidth\n : parseInt(String(pluginMaxSizes.maxWidth).replace(/[^\\d]/g, ''), 10)\n : editorWidth,\n maxHeight: pluginMaxSizes?.maxHeight\n ? typeof pluginMaxSizes.maxHeight === 'number'\n ? pluginMaxSizes.maxHeight\n : parseInt(String(pluginMaxSizes.maxHeight).replace(/[^\\d]/g, ''), 10)\n : 550,\n });\n };\n\n updateMaxSizes();\n\n const resizeObserver = new ResizeObserver(updateMaxSizes);\n if (editor.refElement) {\n resizeObserver.observe(editor.refElement);\n }\n\n window.addEventListener('resize', updateMaxSizes);\n\n return () => {\n resizeObserver.disconnect();\n window.removeEventListener('resize', updateMaxSizes);\n };\n }, [editor, pluginOptions]);\n\n // Helper function to limit sizes (similar to limitSizes from @yoopta/image)\n const limitImageSizes = (\n sizes: { width: number | string; height: number | string },\n maxSizes: { width: number | string; height: number | string },\n ): { width: number; height: number } => {\n const parseSize = (value: string | number): number => {\n if (typeof value === 'number') return value;\n return parseInt(String(value).replace(/[^\\d]/g, ''), 10);\n };\n\n const currentWidth = parseSize(sizes.width);\n const currentHeight = parseSize(sizes.height);\n const maxWidth = parseSize(maxSizes.width);\n const maxHeight = parseSize(maxSizes.height);\n\n if (currentWidth <= maxWidth && currentHeight <= maxHeight) {\n return { width: currentWidth, height: currentHeight };\n }\n\n const widthRatio = currentWidth / maxWidth;\n const heightRatio = currentHeight / maxHeight;\n const ratio = Math.max(widthRatio, heightRatio);\n\n const newWidth = Math.round(currentWidth / ratio);\n const newHeight = Math.round(currentHeight / ratio);\n\n return {\n width: Math.min(newWidth, maxWidth),\n height: Math.min(newHeight, maxHeight),\n };\n };\n\n const onResizeStop = (_e: any, _direction: any, ref: HTMLElement) => {\n const newWidth = parseInt(ref.style.width, 10);\n const newHeight = parseInt(ref.style.height, 10);\n\n // Apply max size limits\n const limitedSizes = limitImageSizes(\n { width: newWidth, height: newHeight },\n { width: maxSizes.maxWidth, height: maxSizes.maxHeight },\n );\n\n onUpdate({\n sizes: limitedSizes,\n });\n };\n\n const onResize = (_e: any, _direction: any, ref: HTMLElement) => {\n const newWidth = parseInt(ref.style.width, 10);\n const newHeight = parseInt(ref.style.height, 10);\n\n // Apply max size limits during resize\n const limitedSizes = limitImageSizes(\n { width: newWidth, height: newHeight },\n { width: maxSizes.maxWidth, height: maxSizes.maxHeight },\n );\n\n setSizes(limitedSizes);\n };\n\n const download = async () => {\n try {\n const response = await fetch(elementProps.src);\n const blob = await response.blob();\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `image-${Date.now()}.jpg`;\n a.click();\n URL.revokeObjectURL(url);\n } catch (error) {\n // error\n }\n };\n\n const copyImage = async () => {\n try {\n const response = await fetch(elementProps.src);\n const blob = await response.blob();\n\n if (navigator.clipboard && ClipboardItem) {\n await navigator.clipboard.write([new ClipboardItem({ [blob.type]: blob })]);\n } else {\n copy(elementProps.src);\n }\n } catch (error) {\n copy(elementProps.src);\n }\n };\n\n const alignmentClass = {\n left: 'justify-start',\n center: 'justify-center',\n right: 'justify-end',\n }[elementProps.alignment ?? 'center'];\n\n return (\n <div\n {...attributes}\n className={cn('group/image mt-2 relative transition-all w-full flex', alignmentClass)}>\n <div className=\"relative\" contentEditable={false}>\n <Rnd\n ref={(node) => {\n // Get the actual DOM element from Rnd\n if (node?.resizableElement && node.resizableElement instanceof HTMLElement) {\n rndRef.current = node.resizableElement;\n }\n }}\n style={{\n position: 'relative',\n outline: isSelected ? '.125rem solid rgba(0, 0, 0, 0)' : 'none',\n outlineColor: isSelected ? 'hsl(var(--primary))' : 'none',\n }}\n size={{\n width: sizes.width,\n height: sizes.height,\n }}\n onResize={onResize}\n onResizeStop={onResizeStop}\n lockAspectRatio\n minWidth={100}\n minHeight={100}\n maxWidth={maxSizes.maxWidth}\n maxHeight={maxSizes.maxHeight}\n enableResizing={\n isSelected\n ? {\n bottom: false,\n bottomLeft: false,\n bottomRight: false,\n left: true,\n right: true,\n top: false,\n topLeft: false,\n topRight: false,\n }\n : false\n }\n disableDragging\n resizeHandleStyles={{\n left: {\n width: 'auto',\n height: '40px',\n left: '-5px',\n top: '50%',\n transform: 'translateY(-50%)',\n cursor: 'ew-resize',\n },\n right: {\n width: 'auto',\n height: '40px',\n right: '-5px',\n top: '50%',\n transform: 'translateY(-50%)',\n cursor: 'ew-resize',\n },\n }}\n resizeHandleComponent={{\n left: (\n <div className=\"h-10 w-2 rounded-full border border-primary bg-primary shadow-sm\" />\n ),\n right: (\n <div className=\"h-10 w-2 rounded-full border border-primary bg-primary shadow-sm\" />\n ),\n }}\n className={cn('rounded-sm')}>\n <img\n src={elementProps.src}\n alt={elementProps.alt || ''}\n className=\"w-full h-full transition-all duration-200\"\n style={{\n objectFit: elementProps.fit,\n borderRadius: `${elementProps.borderRadius}px`,\n }}\n draggable={false}\n />\n </Rnd>\n {isSelected && (\n <ImageInlineToolbar\n referenceRef={rndRef}\n elementProps={elementProps}\n onUpdate={onUpdate}\n onReplace={onReplace}\n onDelete={onDelete}\n onDownload={download}\n onCopy={copyImage}\n />\n )}\n </div>\n {children}\n </div>\n );\n};\n","import { useCallback } from 'react';\nimport { type PluginElementRenderProps, useYooptaPluginOptions } from '@yoopta/editor';\nimport { Blocks, Elements, useYooptaEditor } from '@yoopta/editor';\nimport {\n type ImageElement as ImageElementType,\n type ImagePluginOptions,\n useImageDelete,\n useImagePreview,\n useImageUpload,\n} from '@yoopta/image';\nimport { Editor, Element } from 'slate';\n\nimport { ImagePlaceholder } from './image-placeholder';\nimport { ImageRender } from './image-render';\nimport type { ImageElementProps } from '../../types';\n\nexport const ImageElement = ({\n element,\n attributes,\n children,\n blockId,\n}: PluginElementRenderProps) => {\n const editor = useYooptaEditor();\n const pluginOptions = useYooptaPluginOptions<ImagePluginOptions>('Image');\n const { upload: uploadImageToStorage, progress, loading } = useImageUpload(pluginOptions.upload!);\n const { deleteImage: deleteImageFromStorage } = useImageDelete(pluginOptions.delete!);\n const { preview, generatePreview, clearPreview } = useImagePreview();\n\n const updateElement = useCallback(\n (props: Partial<ImageElementProps>) => {\n Elements.updateElement(editor, {\n blockId,\n type: 'image',\n props: {\n ...element.props,\n ...props,\n },\n });\n },\n [editor, blockId, element.props],\n );\n\n const deleteImage = useCallback(async () => {\n await deleteImageFromStorage(element as ImageElementType);\n const slate = Blocks.getBlockSlate(editor, { id: blockId });\n if (!slate) return;\n\n const elementPath = Elements.getElementPath(editor, { blockId, element });\n if (!elementPath) return;\n\n const parentEntry = elementPath ? Editor.parent(slate, elementPath) : undefined;\n if (parentEntry && Element.isElement(parentEntry[0]) && !Editor.isEditor(parentEntry[0])) {\n Elements.deleteElement(editor, {\n blockId,\n type: 'image',\n path: elementPath,\n });\n return;\n }\n\n Blocks.deleteBlock(editor, { blockId, focus: true });\n }, [editor, blockId, element, deleteImageFromStorage]);\n\n const replaceImage = useCallback(() => {\n Elements.updateElement(editor, {\n blockId,\n type: 'image',\n props: {\n ...element.props,\n src: null,\n alt: null,\n },\n });\n }, [editor, blockId, element.props]);\n\n const onUpload = useCallback(\n async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (!file) return;\n\n generatePreview(file);\n const result = await uploadImageToStorage(file);\n updateElement({\n id: result.id || (result as any).fileId,\n src: result.url,\n alt: file.name,\n sizes: { width: result.width!, height: result.height! },\n });\n clearPreview();\n },\n [uploadImageToStorage, updateElement, generatePreview, clearPreview],\n );\n\n if (!element.props.src) {\n return (\n <ImagePlaceholder\n onUpload={onUpload}\n preview={preview}\n progress={progress}\n loading={loading}\n onInsertUrl={() => { }}\n onInsertFromUnsplash={() => { }}\n onInsertFromAI={async () => { }}\n attributes={attributes}>\n {children}\n </ImagePlaceholder>\n );\n }\n\n return (\n <ImageRender\n blockId={blockId}\n elementId={element.id}\n onUpdate={updateElement}\n onDelete={deleteImage}\n attributes={attributes}\n onReplace={replaceImage}\n elementProps={element.props}\n pluginOptions={pluginOptions}>\n {children}\n </ImageRender>\n );\n};\n","import { ImageElement } from './elements/image/image-element';\n\nexport const ImageUI = {\n image: {\n render: ImageElement,\n },\n};\n"],"names":["_jsx","_jsxs","Loader2","ImageIcon","_Fragment","LinkIcon","Slider","value","SliderPrimitive.Root","SliderPrimitive.Track","SliderPrimitive.Range","SliderPrimitive.Thumb","copy"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaM,MAAA,KAAA,GAAQ,iBAAiB,OAAS,EAAA;AAAA,EACtC,CAAC,MAAQ,EAAA,EAAE,KAAO,EAAA,IAAA,EAAM,MAAA,EAAQ,IAAM,EAAA,CAAA,EAAG,GAAK,EAAA,CAAA,EAAG,GAAK,EAAA,EAAI,EAAA,GAAA,EAAK,IAAI,GAAK,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AAAA,EACvF,CAAC,QAAU,EAAA,EAAE,EAAI,EAAA,GAAA,EAAK,EAAI,EAAA,GAAA,EAAK,CAAG,EAAA,GAAA,EAAK,GAAK,EAAA,QAAA,EAAU,CAAA;AAAA,EACtD,CAAC,MAAQ,EAAA,EAAE,GAAG,2CAA6C,EAAA,GAAA,EAAK,UAAU,CAAA;AAC5E,CAAC,CAAA;;ACdM,MAAM,wBAAwB,GAAG,CAAC,EAAE,oBAAoB,EAAE,MAC/DA,GAAA,CAAC,WAAW,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAC,UAAU,EAAC,SAAS,EAAC,MAAM,EAC5C,EAAA,EAAA,QAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,uCAAuC,iBACpDD,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,yBAAyB,gBACtCA,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,SAAS,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAA,EAAA,EAAA,QAAA,EAC9DA,GAAM,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,8CAA8C,EAAA,CAAG,EACrD,CAAA,CAAA,EAAA,CAAA,CACF,EACNC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,aAAa,EAAA,EAAA,EAAA,QAAA,EAAA,CAC1BD,yBAAG,SAAS,EAAC,qBAAqB,EAAA,EAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,CAAuB,EACzDA,GAAG,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,+BAA+B,EAAA,EAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAA,CAAwB,KAChE,EACNA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAE,oBAAoB,mCAAwB,CACzD,EAAA,CAAA,CAAA,EAAA,CAAA,CACM,CACf;;ACYD,MAAM,YAAY,GAAG,CAAC,EAAE,OAAO,EAAqB,MAClDA,2BACE,SAAS,EAAC,kCAAkC,EAC5C,KAAK,EAAE;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;AACvB,KAAA,EAAA,EAAA,EAAA,QAAA,EACDA,aACE,GAAG,EAAE,OAAO,CAAC,GAAG,EAChB,GAAG,EAAC,SAAS,EACb,SAAS,EAAC,0CAA0C,EACpD,KAAK,EAAE;YACL,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;AACvB,SAAA,EACD,SAAS,EAAE,KAAK,EAChB,CAAA,EAAA,CAAA,CACE,CACP,CAAC;AAOF,MAAM,0BAA0B,GAAG,CAAC,EAAE,QAAQ,EAA4B,MACxEA,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,wGAAwG,EAAA,EAAA,EAAA,QAAA,EACrHA,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,2BAA2B,EACxC,EAAA,EAAA,QAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,WAAW,EAAA,EAAA,EAAA,QAAA,EAAA,CACxBA,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,2CAA2C,EACxD,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAM,SAAS,EAAC,wBAAwB,EAAA,EAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,CAAoB,EAC5DC,IAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAM,SAAS,EAAC,eAAe,EAAA,EAAA,EAAA,QAAA,EAAA,CAAE,QAAQ,CAAC,UAAU,EAAA,GAAA,CAAA,EAAA,CAAA,CAAS,CACzD,EAAA,CAAA,CAAA,EACND,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,qDAAqD,EAClE,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,wDAAwD,EAClE,KAAK,EAAE,EAAE,KAAK,EAAE,CAAG,EAAA,QAAQ,CAAC,UAAU,CAAG,CAAA,CAAA,EAAE,EAC3C,CAAA,EAAA,CAAA,CACE,EACNC,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,yDAAyD,EAAA,EAAA,EAAA,QAAA,EAAA,CACtEA,IACG,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAA,OAAA,EAAO,GAAG,EACpD,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EACrC,KAAA,CAAA,EAAA,CAAA,EACPD,GAAC,CAAAE,YAAO,EAAC,EAAA,SAAS,EAAC,0BAA0B,EAAG,CAAA,CAAA,EAAA,CAAA,CAC5C,CACF,EAAA,CAAA,CAAA,EAAA,CAAA,CACF,EACF,CAAA,CAAA,CACP,CAAC;AAQF,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAwB,KAAI;AACzE,IAAA,MAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;AAEpD,IAAA,IAAI,UAAU,EAAE;QACd,QACED,4BAAK,SAAS,EAAC,sDAAsD,EACnE,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,uBAAuB,iBACpCD,GAAG,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,gCAAgC,EAAA,EAAA,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,CAAkB,EAC/DA,GAAG,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,uBAAuB,EAA4B,EAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAC5D,EACNA,GACE,CAAA,OAAA,EAAA,EAAA,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,QAAQ,EAAA,CAClB,CACE,EAAA,CAAA,CAAA,EACN;AACH,KAAA;AAED,IAAA,QACEC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,uCAAuC,iBACpDD,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,yBAAyB,gBACtCA,GAAC,CAAAG,KAAS,IAAC,SAAS,EAAC,+BAA+B,EAAG,CAAA,EAAA,CAAA,CACnD,EACNF,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,aAAa,EAC1B,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAG,SAAS,EAAC,qBAAqB,EAAoB,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAAA,CAAA,EACtDA,yBAAG,SAAS,EAAC,+BAA+B,EAA2B,EAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACnE,EACNA,GAAC,CAAA,MAAM,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,MAAM,EAAA,IAAA,EAAA,CAAA,CAAA,OAAA,MAAA,YAAY,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAA,EAAA,EAAsB,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,CAAA,EAC1EA,eACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,QAAQ,EAClB,CAAA,CAAA,EAAA,CAAA,CACE,EACN;AACJ,CAAC,CAAC;AAOF,MAAM,aAAa,GAAG,CAAC,EAAE,WAAW,EAAsB,KAAI;IAC5D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAG,MAAK;AACxB,QAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;AACnB,YAAA,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7B,WAAW,CAAC,EAAE,CAAC,CAAC;AACjB,SAAA;AACH,KAAC,CAAC;AAEF,IAAA,QACEC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,gBAAgB,iBAC7BD,GAAC,CAAA,KAAK,EACJ,EAAA,WAAW,EAAC,oBAAoB,EAChC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,SAAS,EAAE,CAAC,CAAC,KAAI;oBACf,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE;AACxC,wBAAA,YAAY,EAAE,CAAC;AAChB,qBAAA;iBACF,EAAA,CACD,EACFA,GAAC,CAAA,MAAM,kBAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAA,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAAA,CAEnE,CACL,EAAA,CAAA,CAAA,EACN;AACJ,CAAC,CAAC;AAOF,MAAM,WAAW,GAAG,CAAC,EAAE,cAAc,EAAoB,KAAI;IAC3D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,MAAK;AACxB,QAAA,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;YACpC,eAAe,CAAC,IAAI,CAAC,CAAC;AACtB,YAAA,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAChC,eAAe,CAAC,KAAK,CAAC,CAAC;YACvB,WAAW,CAAC,EAAE,CAAC,CAAC;AACjB,SAAA;AACH,KAAC,CAAC;AAEF,IAAA,QACEC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,gBAAgB,EAAA,EAAA,EAAA,QAAA,EAAA,CAC7BA,4BAAK,SAAS,EAAC,WAAW,EACxB,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,KAAK,EACJ,EAAA,WAAW,EAAC,uBAAuB,EACnC,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,SAAS,EAAE,CAAC,CAAC,KAAI;AACf,4BAAA,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;AACrB,gCAAA,YAAY,EAAE,CAAC;AAChB,6BAAA;AACH,yBAAC,EACD,QAAQ,EAAE,YAAY,EACtB,CAAA,EACFA,GAAG,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,+BAA+B,EAExC,EAAA,EAAA,QAAA,EAAA,+DAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACA,EACNA,GAAC,CAAA,MAAM,EACL,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,cAAc,EACxB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,YAAY,EACzC,EAAA,EAAA,QAAA,EAAA,YAAY,IACXC,IACE,CAAAG,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAJ,GAAA,CAACE,YAAO,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAA,CAAG,qBAE3C,KAEHD,IAAA,CAAAG,QAAA,EAAA,EAAA,QAAA,EAAA,CACEJ,GAAC,CAAA,QAAQ,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAE/B,gBAAA,CAAA,EAAA,CAAA,CACJ,EACM,CAAA,CAAA,CAAA,EAAA,CAAA,CACL,EACN;AACJ,CAAC,CAAC;AAWF,MAAM,oBAAoB,GAAG,CAAC,EAC5B,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,UAAU,GACgB,MAC1BA,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,UAAU,IAAI,6BAA6B,CAAC,EAAA,EAAA,EAAA,QAAA,EAC7EC,KAAC,IAAI,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,YAAY,EAAC,QAAQ,EAAC,SAAS,EAAC,QAAQ,EAC5C,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAC,QAAQ,EAAA,MAAA,CAAA,MAAA,CAAA,EACP,SAAS,EAAE,EAAE,CACX,yBAAyB,EACzB,UAAU,IAAI,mCAAmC,CAClD,EAAA,EAAA,EAAA,QAAA,EAAA,CACDA,IAAC,CAAA,WAAW,kBAAC,KAAK,EAAC,QAAQ,EAAC,SAAS,EAAC,SAAS,EAAA,EAAA,EAAA,QAAA,EAAA,CAC7CD,IAAC,MAAM,EAAA,EAAC,SAAS,EAAC,aAAa,EAAA,CAAG,EAEtB,QAAA,CAAA,EAAA,CAAA,CAAA,EACdC,IAAC,CAAA,OAAO,EACN,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EACrBC,KAAC,WAAW,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,KAAK,EAAC,MAAM,EAAC,QAAQ,EAAA,IAAA,EAAC,SAAS,EAAC,SAAS,EACpD,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAACK,IAAQ,EAAA,EAAC,SAAS,EAAC,aAAa,EAAG,CAAA,EAAA,MAAA,CAAA,EAAA,CAAA,CAExB,EACC,CAAA,CAAA,EACjBL,GAAC,CAAA,cAAc,EAEE,EAAA,QAAA,EAAA,2BAAA,EAAA,CAAA,CAAA,EAAA,CACT,EACT,oBAAoB,KACnBC,IAAA,CAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,GAAC,CAAA,cAAc,kBAAC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EACrBC,IAAC,CAAA,WAAW,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAC,UAAU,EAAC,QAAQ,EAAA,IAAA,EAAC,SAAS,EAAC,SAAS,EAAA,EAAA,EAAA,QAAA,EAAA,CACxDD,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,aAAa,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,cAAc,EAAA,EAAA,EAAA,QAAA,EAClEA,GAAM,CAAA,MAAA,EAAA,EAAA,CAAC,EAAC,8CAA8C,EAAG,CAAA,EAAA,CAAA,CACrD,iBAEM,EACC,CAAA,CAAA,EACjBA,GAAC,CAAA,cAAc,EAEE,EAAA,QAAA,EAAA,+BAAA,EAAA,CAAA,CAAA,EAAA,CACT,CACX,EACA,cAAc,KACbC,IAAC,CAAA,OAAO,EACN,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EACrB,IAAA,EAAA,EAAA,EAAA,QAAA,EAAAC,IAAA,CAAC,WAAW,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,KAAK,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAA,EAAA,SAAS,EAAC,SAAS,EAClD,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,aAAa,EAAG,CAAA,EAAA,IAAA,CAAA,EAAA,CAAA,CAExB,EACC,CAAA,CAAA,EACjBA,GAAC,CAAA,cAAc,0CAEE,CACT,EAAA,CAAA,CACX,CACQ,EAAA,CAAA,CAAA,EAEXA,GAAC,CAAA,WAAW,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAC,QAAQ,EAAC,SAAS,EAAC,MAAM,EAAA,EAAA,EAAA,QAAA,EAC1CA,GAAC,CAAA,eAAe,EAAC,EAAA,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,GAAI,EACnD,CAAA,CAAA,EAEdA,GAAC,CAAA,WAAW,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAC,MAAM,EAAC,CAAC,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EACzBA,GAAC,CAAA,aAAa,EAAC,EAAA,WAAW,EAAE,WAAW,GAAI,EAC/B,CAAA,CAAA,EAEb,oBAAoB,KACnBA,GAAA,CAAC,wBAAwB,EAAA,EAAC,oBAAoB,EAAE,oBAAoB,EAAI,CAAA,CACzE,EAEA,cAAc,KACbA,IAAC,WAAW,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,KAAK,EAAC,IAAI,EAAA,EAAA,EAAA,QAAA,EACrBA,GAAC,CAAA,WAAW,IAAC,cAAc,EAAE,cAAc,EAAA,CAAI,EACnC,CAAA,CAAA,CACf,CACI,EAAA,CAAA,CAAA,EAAA,CAAA,CACH,CACP,CAAC;AAEF;AACO,MAAM,gBAAgB,GAAG,CAAC,EAC/B,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,GACe,KAAI;IAC1B,MAAM,UAAU,GAAG,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;AACrD,IAAA,MAAM,kBAAkB,GAAG,OAAO,IAAI,QAAQ,CAAC;AAE/C,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,UAAU,IAAI,eAAe,EAC7B,SAAS,CACV,IACG,UAAU,EAAA,EACd,eAAe,EAAE,KAAK,EACrB,EAAA,EAAA,QAAA,EAAA,CAAA,UAAU,IAAID,GAAA,CAAC,YAAY,EAAC,EAAA,OAAO,EAAE,OAAO,GAAI,EAEhD,CAAC,UAAU,KACVA,GAAC,CAAA,oBAAoB,EACnB,EAAA,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,oBAAoB,EAC1C,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,CAAA,CACH,EAEA,kBAAkB,IAAI,QAAQ,IAAIA,IAAC,0BAA0B,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAI,CAAA,EACpF,QAAQ,CAAA,EAAA,CAAA,CACL,EACN;AACJ,CAAC;;AC7UD,IAAM,SAAA,GAAY,CAAC,QAAA,EAAU,UAAU,CAAA,CAAA;AACvC,IAAM,UAAa,GAAA,CAAC,SAAW,EAAA,WAAA,EAAa,aAAa,YAAY,CAAA,CAAA;AAGrE,IAAM,SAA8C,GAAA;AAAA,EAClD,WAAa,EAAA,CAAC,MAAQ,EAAA,UAAA,EAAY,aAAa,WAAW,CAAA;AAAA,EAC1D,YAAc,EAAA,CAAC,MAAQ,EAAA,UAAA,EAAY,aAAa,YAAY,CAAA;AAAA,EAC5D,aAAe,EAAA,CAAC,MAAQ,EAAA,UAAA,EAAY,aAAa,WAAW,CAAA;AAAA,EAC5D,UAAY,EAAA,CAAC,MAAQ,EAAA,UAAA,EAAY,WAAW,WAAW,CAAA;AACzD,CAAA,CAAA;AAMA,IAAM,WAAc,GAAA,QAAA,CAAA;AAEpB,IAAM,CAAC,UAAY,EAAA,aAAA,EAAe,qBAAqB,CAAA,GACrD,iBAAqC,WAAW,CAAA,CAAA;AAGlD,IAAM,CAAC,mBAAA,EAAqB,iBAAiB,CAAA,GAAI,mBAAmB,WAAa,EAAA;AAAA,EAC/E,qBAAA;AACF,CAAC,CAAA,CAAA;AAcD,IAAM,CAAC,cAAA,EAAgB,gBAAgB,CAAA,GAAI,oBAAwC,WAAW,CAAA,CAAA;AAwB9F,IAAMM,QAAe,GAAA,KAAA,CAAA,UAAA;AAAA,EACnB,CAAC,OAAiC,YAAiB,KAAA;AACjD,IAAM,MAAA;AAAA,MACJ,IAAA;AAAA,MACA,GAAM,GAAA,CAAA;AAAA,MACN,GAAM,GAAA,GAAA;AAAA,MACN,IAAO,GAAA,CAAA;AAAA,MACP,WAAc,GAAA,YAAA;AAAA,MACd,QAAW,GAAA,KAAA;AAAA,MACX,qBAAwB,GAAA,CAAA;AAAA,MACxB,YAAA,GAAe,CAAC,GAAG,CAAA;AAAA,MACnB,KAAA;AAAA,MACA,gBAAgB,MAAM;AAAA,OAAC;AAAA,MACvB,gBAAgB,MAAM;AAAA,OAAC;AAAA,MACvB,QAAW,GAAA,KAAA;AAAA,MACX,IAAA;AAAA,MACA,GAAG,WAAA;AAAA,KACD,GAAA,KAAA,CAAA;AACJ,IAAA,MAAM,SAAkB,GAAA,KAAA,CAAA,MAAA,iBAAyC,IAAA,GAAA,EAAK,CAAA,CAAA;AACtE,IAAM,MAAA,qBAAA,GAA8B,aAAe,CAAC,CAAA,CAAA;AACpD,IAAA,MAAM,eAAe,WAAgB,KAAA,YAAA,CAAA;AACrC,IAAM,MAAA,iBAAA,GAAoB,eAAe,gBAAmB,GAAA,cAAA,CAAA;AAE5D,IAAA,MAAM,CAAC,MAAS,GAAA,EAAI,EAAA,SAAS,IAAI,oBAAqB,CAAA;AAAA,MACpD,IAAM,EAAA,KAAA;AAAA,MACN,WAAa,EAAA,YAAA;AAAA,MACb,QAAA,EAAU,CAACC,MAAU,KAAA;AACnB,QAAA,MAAM,MAAS,GAAA,CAAC,GAAG,SAAA,CAAU,OAAO,CAAA,CAAA;AACpC,QAAO,MAAA,CAAA,qBAAA,CAAsB,OAAO,CAAA,EAAG,KAAM,EAAA,CAAA;AAC7C,QAAA,aAAA,CAAcA,MAAK,CAAA,CAAA;AAAA,OACrB;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,yBAAA,GAAkC,aAAO,MAAM,CAAA,CAAA;AAErD,IAAA,SAAS,iBAAiBA,MAAe,EAAA;AACvC,MAAM,MAAA,YAAA,GAAe,oBAAqB,CAAA,MAAA,EAAQA,MAAK,CAAA,CAAA;AACvD,MAAA,YAAA,CAAaA,QAAO,YAAY,CAAA,CAAA;AAAA,KAClC;AAEA,IAAA,SAAS,gBAAgBA,MAAe,EAAA;AACtC,MAAaA,YAAAA,CAAAA,MAAAA,EAAO,sBAAsB,OAAO,CAAA,CAAA;AAAA,KACnD;AAEA,IAAA,SAAS,cAAiB,GAAA;AACxB,MAAA,MAAM,SAAY,GAAA,yBAAA,CAA0B,OAAQ,CAAA,qBAAA,CAAsB,OAAO,CAAA,CAAA;AACjF,MAAM,MAAA,SAAA,GAAY,MAAO,CAAA,qBAAA,CAAsB,OAAO,CAAA,CAAA;AACtD,MAAA,MAAM,aAAa,SAAc,KAAA,SAAA,CAAA;AACjC,MAAI,IAAA,UAAA,gBAA0B,MAAM,CAAA,CAAA;AAAA,KACtC;AAEA,IAAS,SAAA,YAAA,CAAaA,QAAe,OAAiB,EAAA,EAAE,QAAW,GAAA,EAAE,MAAQ,EAAA,KAAA,EAAS,EAAA;AACpF,MAAM,MAAA,YAAA,GAAe,gBAAgB,IAAI,CAAA,CAAA;AACzC,MAAM,MAAA,UAAA,GAAa,UAAW,CAAA,IAAA,CAAK,KAAOA,CAAAA,CAAAA,MAAAA,GAAQ,OAAO,IAAI,CAAA,GAAI,IAAO,GAAA,GAAA,EAAK,YAAY,CAAA,CAAA;AACzF,MAAA,MAAM,YAAY,KAAM,CAAA,UAAA,EAAY,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA,CAAA;AAE9C,MAAU,SAAA,CAAA,CAAC,UAAa,GAAA,EAAO,KAAA;AAC7B,QAAA,MAAM,UAAa,GAAA,mBAAA,CAAoB,UAAY,EAAA,SAAA,EAAW,OAAO,CAAA,CAAA;AACrE,QAAA,IAAI,wBAAyB,CAAA,UAAA,EAAY,qBAAwB,GAAA,IAAI,CAAG,EAAA;AACtE,UAAsB,qBAAA,CAAA,OAAA,GAAU,UAAW,CAAA,OAAA,CAAQ,SAAS,CAAA,CAAA;AAC5D,UAAA,MAAM,UAAa,GAAA,MAAA,CAAO,UAAU,CAAA,KAAM,OAAO,UAAU,CAAA,CAAA;AAC3D,UAAI,IAAA,UAAA,IAAc,MAAQ,EAAA,aAAA,CAAc,UAAU,CAAA,CAAA;AAClD,UAAA,OAAO,aAAa,UAAa,GAAA,UAAA,CAAA;AAAA,SAC5B,MAAA;AACL,UAAO,OAAA,UAAA,CAAA;AAAA,SACT;AAAA,OACD,CAAA,CAAA;AAAA,KACH;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAM,CAAA,aAAA;AAAA,QACb,IAAA;AAAA,QACA,QAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,qBAAA;AAAA,QACA,QAAQ,SAAU,CAAA,OAAA;AAAA,QAClB,MAAA;AAAA,QACA,WAAA;AAAA,QACA,IAAA;AAAA,QAEA,QAAC,kBAAA,GAAA,CAAA,UAAA,CAAW,QAAX,EAAA,EAAoB,KAAO,EAAA,KAAA,CAAM,aAChC,EAAA,QAAA,kBAAA,GAAA,CAAC,UAAW,CAAA,IAAA,EAAX,EAAgB,KAAA,EAAO,MAAM,aAC5B,EAAA,QAAA,kBAAA,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,eAAe,EAAA,QAAA;AAAA,YACf,eAAA,EAAe,WAAW,EAAK,GAAA,KAAA,CAAA;AAAA,YAC9B,GAAG,WAAA;AAAA,YACJ,GAAK,EAAA,YAAA;AAAA,YACL,aAAe,EAAA,oBAAA,CAAqB,WAAY,CAAA,aAAA,EAAe,MAAM;AACnE,cAAI,IAAA,CAAC,QAAU,EAAA,yBAAA,CAA0B,OAAU,GAAA,MAAA,CAAA;AAAA,aACpD,CAAA;AAAA,YACD,GAAA;AAAA,YACA,GAAA;AAAA,YACA,QAAA;AAAA,YACA,YAAA,EAAc,WAAW,KAAY,CAAA,GAAA,gBAAA;AAAA,YACrC,WAAA,EAAa,WAAW,KAAY,CAAA,GAAA,eAAA;AAAA,YACpC,UAAA,EAAY,WAAW,KAAY,CAAA,GAAA,cAAA;AAAA,YACnC,aAAA,EAAe,MAAM,CAAC,QAAY,IAAA,YAAA,CAAa,KAAK,CAAG,EAAA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAA;AAAA,YACvE,YAAc,EAAA,MACZ,CAAC,QAAA,IAAY,YAAa,CAAA,GAAA,EAAK,MAAO,CAAA,MAAA,GAAS,CAAG,EAAA,EAAE,MAAQ,EAAA,IAAA,EAAM,CAAA;AAAA,YAEpE,eAAe,CAAC,EAAE,KAAO,EAAA,SAAA,EAAW,eAAoB,KAAA;AACtD,cAAA,IAAI,CAAC,QAAU,EAAA;AACb,gBAAA,MAAM,SAAY,GAAA,SAAA,CAAU,QAAS,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC9C,gBAAA,MAAM,YAAY,SAAc,IAAA,KAAA,CAAM,YAAY,UAAW,CAAA,QAAA,CAAS,MAAM,GAAG,CAAA,CAAA;AAC/E,gBAAM,MAAA,UAAA,GAAa,YAAY,EAAK,GAAA,CAAA,CAAA;AACpC,gBAAA,MAAM,UAAU,qBAAsB,CAAA,OAAA,CAAA;AACtC,gBAAMA,MAAAA,MAAAA,GAAQ,OAAO,OAAO,CAAA,CAAA;AAC5B,gBAAM,MAAA,eAAA,GAAkB,OAAO,UAAa,GAAA,aAAA,CAAA;AAC5C,gBAAA,YAAA,CAAaA,SAAQ,eAAiB,EAAA,OAAA,EAAS,EAAE,MAAA,EAAQ,MAAM,CAAA,CAAA;AAAA,eACjE;AAAA,aACF;AAAA,WAAA;AAAA,WAEJ,CACF,EAAA,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEAD,QAAA,CAAO,WAAc,GAAA,WAAA,CAAA;AAQrB,IAAM,CAAC,yBAAA,EAA2B,2BAA2B,CAAA,GAAI,oBAK9D,WAAa,EAAA;AAAA,EACd,SAAW,EAAA,MAAA;AAAA,EACX,OAAS,EAAA,OAAA;AAAA,EACT,IAAM,EAAA,OAAA;AAAA,EACN,SAAW,EAAA,CAAA;AACb,CAAC,CAAA,CAAA;AAsBD,IAAM,gBAAyB,GAAA,KAAA,CAAA,UAAA;AAAA,EAC7B,CAAC,OAA2C,YAAiB,KAAA;AAC3D,IAAM,MAAA;AAAA,MACJ,GAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,GAAG,WAAA;AAAA,KACD,GAAA,KAAA,CAAA;AACJ,IAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAU,eAAmC,IAAI,CAAA,CAAA;AACzE,IAAA,MAAM,eAAe,eAAgB,CAAA,YAAA,EAAc,CAAC,IAAS,KAAA,SAAA,CAAU,IAAI,CAAC,CAAA,CAAA;AAC5E,IAAM,MAAA,OAAA,GAAgB,aAAgB,KAAS,CAAA,CAAA,CAAA;AAC/C,IAAM,MAAA,SAAA,GAAY,aAAa,GAAG,CAAA,CAAA;AAClC,IAAA,MAAM,iBAAiB,SAAc,KAAA,KAAA,CAAA;AACrC,IAAA,MAAM,iBAAqB,GAAA,cAAA,IAAkB,CAAC,QAAA,IAAc,CAAC,cAAkB,IAAA,QAAA,CAAA;AAE/E,IAAA,SAAS,oBAAoB,eAAyB,EAAA;AACpD,MAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,OAAW,IAAA,MAAA,CAAQ,qBAAsB,EAAA,CAAA;AAC9D,MAAA,MAAM,KAA0B,GAAA,CAAC,CAAG,EAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAC9C,MAAM,MAAA,MAAA,GAA2B,oBAAoB,CAAC,GAAA,EAAK,GAAG,CAAI,GAAA,CAAC,KAAK,GAAG,CAAA,CAAA;AAC3E,MAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAEvC,MAAA,OAAA,CAAQ,OAAU,GAAA,IAAA,CAAA;AAClB,MAAO,OAAA,KAAA,CAAM,eAAkB,GAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,KAC1C;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,yBAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAM,CAAA,aAAA;AAAA,QACb,SAAA,EAAW,oBAAoB,MAAS,GAAA,OAAA;AAAA,QACxC,OAAA,EAAS,oBAAoB,OAAU,GAAA,MAAA;AAAA,QACvC,SAAA,EAAW,oBAAoB,CAAI,GAAA,CAAA,CAAA;AAAA,QACnC,IAAK,EAAA,OAAA;AAAA,QAEL,QAAA,kBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,GAAK,EAAA,SAAA;AAAA,YACL,kBAAiB,EAAA,YAAA;AAAA,YAChB,GAAG,WAAA;AAAA,YACJ,GAAK,EAAA,YAAA;AAAA,YACL,KAAO,EAAA;AAAA,cACL,GAAG,WAAY,CAAA,KAAA;AAAA,cACf,CAAC,gCAAuC,GAAG,kBAAA;AAAA,aAC7C;AAAA,YACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,cAAM,MAAA,KAAA,GAAQ,mBAAoB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAC/C,cAAA,YAAA,GAAe,KAAK,CAAA,CAAA;AAAA,aACtB;AAAA,YACA,WAAA,EAAa,CAAC,KAAU,KAAA;AACtB,cAAM,MAAA,KAAA,GAAQ,mBAAoB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAC/C,cAAA,WAAA,GAAc,KAAK,CAAA,CAAA;AAAA,aACrB;AAAA,YACA,YAAY,MAAM;AAChB,cAAA,OAAA,CAAQ,OAAU,GAAA,KAAA,CAAA,CAAA;AAClB,cAAa,UAAA,IAAA,CAAA;AAAA,aACf;AAAA,YACA,aAAA,EAAe,CAAC,KAAU,KAAA;AACxB,cAAM,MAAA,cAAA,GAAiB,oBAAoB,WAAc,GAAA,YAAA,CAAA;AACzD,cAAA,MAAM,YAAY,SAAU,CAAA,cAAc,CAAE,CAAA,QAAA,CAAS,MAAM,GAAG,CAAA,CAAA;AAC9D,cAAA,aAAA,GAAgB,EAAE,KAAO,EAAA,SAAA,EAAW,SAAY,GAAA,CAAA,CAAA,GAAK,GAAG,CAAA,CAAA;AAAA,aAC1D;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AASA,IAAM,cAAuB,GAAA,KAAA,CAAA,UAAA;AAAA,EAC3B,CAAC,OAAyC,YAAiB,KAAA;AACzD,IAAM,MAAA;AAAA,MACJ,GAAA;AAAA,MACA,GAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,GAAG,WAAA;AAAA,KACD,GAAA,KAAA,CAAA;AACJ,IAAM,MAAA,SAAA,GAAkB,aAA0B,IAAI,CAAA,CAAA;AACtD,IAAM,MAAA,GAAA,GAAM,eAAgB,CAAA,YAAA,EAAc,SAAS,CAAA,CAAA;AACnD,IAAM,MAAA,OAAA,GAAgB,aAAgB,KAAS,CAAA,CAAA,CAAA;AAC/C,IAAA,MAAM,sBAAsB,CAAC,QAAA,CAAA;AAE7B,IAAA,SAAS,oBAAoB,eAAyB,EAAA;AACpD,MAAA,MAAM,IAAO,GAAA,OAAA,CAAQ,OAAW,IAAA,SAAA,CAAU,QAAS,qBAAsB,EAAA,CAAA;AACzE,MAAA,MAAM,KAA0B,GAAA,CAAC,CAAG,EAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AAC/C,MAAM,MAAA,MAAA,GAA2B,sBAAsB,CAAC,GAAA,EAAK,GAAG,CAAI,GAAA,CAAC,KAAK,GAAG,CAAA,CAAA;AAC7E,MAAM,MAAA,KAAA,GAAQ,WAAY,CAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AAEvC,MAAA,OAAA,CAAQ,OAAU,GAAA,IAAA,CAAA;AAClB,MAAO,OAAA,KAAA,CAAM,eAAkB,GAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,KACzC;AAEA,IACE,uBAAA,GAAA;AAAA,MAAC,yBAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAM,CAAA,aAAA;AAAA,QACb,SAAA,EAAW,sBAAsB,QAAW,GAAA,KAAA;AAAA,QAC5C,OAAA,EAAS,sBAAsB,KAAQ,GAAA,QAAA;AAAA,QACvC,IAAK,EAAA,QAAA;AAAA,QACL,SAAA,EAAW,sBAAsB,CAAI,GAAA,CAAA,CAAA;AAAA,QAErC,QAAA,kBAAA,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,kBAAiB,EAAA,UAAA;AAAA,YAChB,GAAG,WAAA;AAAA,YACJ,GAAA;AAAA,YACA,KAAO,EAAA;AAAA,cACL,GAAG,WAAY,CAAA,KAAA;AAAA,cACf,CAAC,gCAAuC,GAAG,iBAAA;AAAA,aAC7C;AAAA,YACA,YAAA,EAAc,CAAC,KAAU,KAAA;AACvB,cAAM,MAAA,KAAA,GAAQ,mBAAoB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAC/C,cAAA,YAAA,GAAe,KAAK,CAAA,CAAA;AAAA,aACtB;AAAA,YACA,WAAA,EAAa,CAAC,KAAU,KAAA;AACtB,cAAM,MAAA,KAAA,GAAQ,mBAAoB,CAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAC/C,cAAA,WAAA,GAAc,KAAK,CAAA,CAAA;AAAA,aACrB;AAAA,YACA,YAAY,MAAM;AAChB,cAAA,OAAA,CAAQ,OAAU,GAAA,KAAA,CAAA,CAAA;AAClB,cAAa,UAAA,IAAA,CAAA;AAAA,aACf;AAAA,YACA,aAAA,EAAe,CAAC,KAAU,KAAA;AACxB,cAAM,MAAA,cAAA,GAAiB,sBAAsB,aAAgB,GAAA,UAAA,CAAA;AAC7D,cAAA,MAAM,YAAY,SAAU,CAAA,cAAc,CAAE,CAAA,QAAA,CAAS,MAAM,GAAG,CAAA,CAAA;AAC9D,cAAA,aAAA,GAAgB,EAAE,KAAO,EAAA,SAAA,EAAW,SAAY,GAAA,CAAA,CAAA,GAAK,GAAG,CAAA,CAAA;AAAA,aAC1D;AAAA,WAAA;AAAA,SACF;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAkBA,IAAM,UAAmB,GAAA,KAAA,CAAA,UAAA;AAAA,EACvB,CAAC,OAAqC,YAAiB,KAAA;AACrD,IAAM,MAAA;AAAA,MACJ,aAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,aAAA;AAAA,MACA,GAAG,WAAA;AAAA,KACD,GAAA,KAAA,CAAA;AACJ,IAAM,MAAA,OAAA,GAAU,gBAAiB,CAAA,WAAA,EAAa,aAAa,CAAA,CAAA;AAE3D,IACE,uBAAA,GAAA;AAAA,MAAC,SAAU,CAAA,IAAA;AAAA,MAAV;AAAA,QACE,GAAG,WAAA;AAAA,QACJ,GAAK,EAAA,YAAA;AAAA,QACL,SAAW,EAAA,oBAAA,CAAqB,KAAM,CAAA,SAAA,EAAW,CAAC,KAAU,KAAA;AAC1D,UAAI,IAAA,KAAA,CAAM,QAAQ,MAAQ,EAAA;AACxB,YAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAEnB,YAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,WACvB,MAAA,IAAW,KAAM,CAAA,GAAA,KAAQ,KAAO,EAAA;AAC9B,YAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAElB,YAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,WACvB,MAAA,IAAW,UAAU,MAAO,CAAA,UAAU,EAAE,QAAS,CAAA,KAAA,CAAM,GAAG,CAAG,EAAA;AAC3D,YAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAEnB,YAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,WACvB;AAAA,SACD,CAAA;AAAA,QACD,aAAe,EAAA,oBAAA,CAAqB,KAAM,CAAA,aAAA,EAAe,CAAC,KAAU,KAAA;AAClE,UAAA,MAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AACrB,UAAO,MAAA,CAAA,iBAAA,CAAkB,MAAM,SAAS,CAAA,CAAA;AAExC,UAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAGrB,UAAA,IAAI,OAAQ,CAAA,MAAA,CAAO,GAAI,CAAA,MAAM,CAAG,EAAA;AAC9B,YAAA,MAAA,CAAO,KAAM,EAAA,CAAA;AAAA,WACR,MAAA;AACL,YAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAAA,WACpB;AAAA,SACD,CAAA;AAAA,QACD,aAAe,EAAA,oBAAA,CAAqB,KAAM,CAAA,aAAA,EAAe,CAAC,KAAU,KAAA;AAClE,UAAA,MAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AACrB,UAAA,IAAI,OAAO,iBAAkB,CAAA,KAAA,CAAM,SAAS,CAAA,cAAe,KAAK,CAAA,CAAA;AAAA,SACjE,CAAA;AAAA,QACD,WAAa,EAAA,oBAAA,CAAqB,KAAM,CAAA,WAAA,EAAa,CAAC,KAAU,KAAA;AAC9D,UAAA,MAAM,SAAS,KAAM,CAAA,MAAA,CAAA;AACrB,UAAA,IAAI,MAAO,CAAA,iBAAA,CAAkB,KAAM,CAAA,SAAS,CAAG,EAAA;AAC7C,YAAO,MAAA,CAAA,qBAAA,CAAsB,MAAM,SAAS,CAAA,CAAA;AAC5C,YAAA,UAAA,CAAW,KAAK,CAAA,CAAA;AAAA,WAClB;AAAA,SACD,CAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAMA,IAAM,UAAa,GAAA,aAAA,CAAA;AAMnB,IAAM,WAAoB,GAAA,KAAA,CAAA,UAAA;AAAA,EACxB,CAAC,OAAsC,YAAiB,KAAA;AACtD,IAAA,MAAM,EAAE,aAAA,EAAe,GAAG,UAAA,EAAe,GAAA,KAAA,CAAA;AACzC,IAAM,MAAA,OAAA,GAAU,gBAAiB,CAAA,UAAA,EAAY,aAAa,CAAA,CAAA;AAC1D,IACE,uBAAA,GAAA;AAAA,MAAC,SAAU,CAAA,IAAA;AAAA,MAAV;AAAA,QACC,eAAA,EAAe,OAAQ,CAAA,QAAA,GAAW,EAAK,GAAA,KAAA,CAAA;AAAA,QACvC,oBAAkB,OAAQ,CAAA,WAAA;AAAA,QACzB,GAAG,UAAA;AAAA,QACJ,GAAK,EAAA,YAAA;AAAA,OAAA;AAAA,KACP,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEA,WAAA,CAAY,WAAc,GAAA,UAAA,CAAA;AAM1B,IAAM,UAAa,GAAA,aAAA,CAAA;AAKnB,IAAM,WAAoB,GAAA,KAAA,CAAA,UAAA;AAAA,EACxB,CAAC,OAAsC,YAAiB,KAAA;AACtD,IAAA,MAAM,EAAE,aAAA,EAAe,GAAG,UAAA,EAAe,GAAA,KAAA,CAAA;AACzC,IAAM,MAAA,OAAA,GAAU,gBAAiB,CAAA,UAAA,EAAY,aAAa,CAAA,CAAA;AAC1D,IAAM,MAAA,WAAA,GAAc,2BAA4B,CAAA,UAAA,EAAY,aAAa,CAAA,CAAA;AACzE,IAAM,MAAA,GAAA,GAAY,aAAwB,IAAI,CAAA,CAAA;AAC9C,IAAM,MAAA,YAAA,GAAe,eAAgB,CAAA,YAAA,EAAc,GAAG,CAAA,CAAA;AACtD,IAAM,MAAA,WAAA,GAAc,QAAQ,MAAO,CAAA,MAAA,CAAA;AACnC,IAAM,MAAA,WAAA,GAAc,QAAQ,MAAO,CAAA,GAAA;AAAA,MAAI,CAAC,KACtC,KAAA,wBAAA,CAAyB,OAAO,OAAQ,CAAA,GAAA,EAAK,QAAQ,GAAG,CAAA;AAAA,KAC1D,CAAA;AACA,IAAA,MAAM,cAAc,WAAc,GAAA,CAAA,GAAI,KAAK,GAAI,CAAA,GAAG,WAAW,CAAI,GAAA,CAAA,CAAA;AACjE,IAAA,MAAM,SAAY,GAAA,GAAA,GAAM,IAAK,CAAA,GAAA,CAAI,GAAG,WAAW,CAAA,CAAA;AAE/C,IACE,uBAAA,GAAA;AAAA,MAAC,SAAU,CAAA,IAAA;AAAA,MAAV;AAAA,QACC,oBAAkB,OAAQ,CAAA,WAAA;AAAA,QAC1B,eAAA,EAAe,OAAQ,CAAA,QAAA,GAAW,EAAK,GAAA,KAAA,CAAA;AAAA,QACtC,GAAG,UAAA;AAAA,QACJ,GAAK,EAAA,YAAA;AAAA,QACL,KAAO,EAAA;AAAA,UACL,GAAG,KAAM,CAAA,KAAA;AAAA,UACT,CAAC,WAAA,CAAY,SAAS,GAAG,WAAc,GAAA,GAAA;AAAA,UACvC,CAAC,WAAA,CAAY,OAAO,GAAG,SAAY,GAAA,GAAA;AAAA,SACrC;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEA,WAAA,CAAY,WAAc,GAAA,UAAA,CAAA;AAM1B,IAAM,UAAa,GAAA,aAAA,CAAA;AAKnB,IAAM,WAAoB,GAAA,KAAA,CAAA,UAAA;AAAA,EACxB,CAAC,OAAsC,YAAiB,KAAA;AACtD,IAAM,MAAA,QAAA,GAAW,aAAc,CAAA,KAAA,CAAM,aAAa,CAAA,CAAA;AAClD,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,eAAwC,IAAI,CAAA,CAAA;AAC5E,IAAA,MAAM,eAAe,eAAgB,CAAA,YAAA,EAAc,CAAC,IAAS,KAAA,QAAA,CAAS,IAAI,CAAC,CAAA,CAAA;AAC3E,IAAA,MAAM,KAAc,GAAA,KAAA,CAAA,OAAA;AAAA,MAClB,MAAO,KAAQ,GAAA,QAAA,EAAW,CAAA,SAAA,CAAU,CAAC,IAAA,KAAS,IAAK,CAAA,GAAA,CAAI,OAAY,KAAA,KAAK,CAAI,GAAA,CAAA,CAAA;AAAA,MAC5E,CAAC,UAAU,KAAK,CAAA;AAAA,KAClB,CAAA;AACA,IAAA,2BAAQ,eAAiB,EAAA,EAAA,GAAG,KAAO,EAAA,GAAA,EAAK,cAAc,KAAc,EAAA,CAAA,CAAA;AAAA,GACtE;AACF,CAAA,CAAA;AAQA,IAAM,eAAwB,GAAA,KAAA,CAAA,UAAA;AAAA,EAC5B,CAAC,OAA0C,YAAiB,KAAA;AAC1D,IAAA,MAAM,EAAE,aAAe,EAAA,KAAA,EAAO,IAAM,EAAA,GAAG,YAAe,GAAA,KAAA,CAAA;AACtD,IAAM,MAAA,OAAA,GAAU,gBAAiB,CAAA,UAAA,EAAY,aAAa,CAAA,CAAA;AAC1D,IAAM,MAAA,WAAA,GAAc,2BAA4B,CAAA,UAAA,EAAY,aAAa,CAAA,CAAA;AACzE,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAU,eAAiC,IAAI,CAAA,CAAA;AACrE,IAAA,MAAM,eAAe,eAAgB,CAAA,YAAA,EAAc,CAAC,IAAS,KAAA,QAAA,CAAS,IAAI,CAAC,CAAA,CAAA;AAE3E,IAAM,MAAA,aAAA,GAAgB,QAAQ,OAAQ,CAAA,IAAA,IAAQ,CAAC,CAAC,KAAA,CAAM,OAAQ,CAAA,MAAM,CAAI,GAAA,IAAA,CAAA;AACxE,IAAM,MAAA,IAAA,GAAO,QAAQ,KAAK,CAAA,CAAA;AAE1B,IAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAClC,IAAM,MAAA,OAAA,GACJ,UAAU,KAAY,CAAA,GAAA,CAAA,GAAI,yBAAyB,KAAO,EAAA,OAAA,CAAQ,GAAK,EAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AACpF,IAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,KAAO,EAAA,OAAA,CAAQ,OAAO,MAAM,CAAA,CAAA;AACnD,IAAM,MAAA,eAAA,GAAkB,IAAO,GAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAC/C,IAAA,MAAM,sBAAsB,eACxB,GAAA,sBAAA,CAAuB,iBAAiB,OAAS,EAAA,WAAA,CAAY,SAAS,CACtE,GAAA,CAAA,CAAA;AAEJ,IAAM,gBAAU,MAAM;AACpB,MAAA,IAAI,KAAO,EAAA;AACT,QAAQ,OAAA,CAAA,MAAA,CAAO,IAAI,KAAK,CAAA,CAAA;AACxB,QAAA,OAAO,MAAM;AACX,UAAQ,OAAA,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAAA,SAC7B,CAAA;AAAA,OACF;AAAA,KACC,EAAA,CAAC,KAAO,EAAA,OAAA,CAAQ,MAAM,CAAC,CAAA,CAAA;AAE1B,IACE,uBAAA,IAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,KAAO,EAAA;AAAA,UACL,SAAW,EAAA,qCAAA;AAAA,UACX,QAAU,EAAA,UAAA;AAAA,UACV,CAAC,WAAY,CAAA,SAAS,GAAG,CAAQ,KAAA,EAAA,OAAO,OAAO,mBAAmB,CAAA,GAAA,CAAA;AAAA,SACpE;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,UAAW,CAAA,QAAA,EAAX,EAAoB,KAAA,EAAO,MAAM,aAChC,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,SAAU,CAAA,IAAA;AAAA,YAAV;AAAA,cACC,IAAK,EAAA,QAAA;AAAA,cACL,YAAA,EAAY,KAAM,CAAA,YAAY,CAAK,IAAA,KAAA;AAAA,cACnC,iBAAe,OAAQ,CAAA,GAAA;AAAA,cACvB,eAAe,EAAA,KAAA;AAAA,cACf,iBAAe,OAAQ,CAAA,GAAA;AAAA,cACvB,oBAAkB,OAAQ,CAAA,WAAA;AAAA,cAC1B,oBAAkB,OAAQ,CAAA,WAAA;AAAA,cAC1B,eAAA,EAAe,OAAQ,CAAA,QAAA,GAAW,EAAK,GAAA,KAAA,CAAA;AAAA,cACvC,QAAA,EAAU,OAAQ,CAAA,QAAA,GAAW,KAAY,CAAA,GAAA,CAAA;AAAA,cACxC,GAAG,UAAA;AAAA,cACJ,GAAK,EAAA,YAAA;AAAA,cAOL,OAAO,KAAU,KAAA,KAAA,CAAA,GAAY,EAAE,OAAS,EAAA,MAAA,KAAW,KAAM,CAAA,KAAA;AAAA,cACzD,OAAS,EAAA,oBAAA,CAAqB,KAAM,CAAA,OAAA,EAAS,MAAM;AACjD,gBAAA,OAAA,CAAQ,sBAAsB,OAAU,GAAA,KAAA,CAAA;AAAA,eACzC,CAAA;AAAA,aAAA;AAAA,WAEL,EAAA,CAAA;AAAA,UAEC,aACC,oBAAA,GAAA;AAAA,YAAC,iBAAA;AAAA,YAAA;AAAA,cAEC,IAAA,EACE,IACC,KAAA,OAAA,CAAQ,IAAO,GAAA,OAAA,CAAQ,IAAQ,IAAA,OAAA,CAAQ,MAAO,CAAA,MAAA,GAAS,CAAI,GAAA,IAAA,GAAO,EAAM,CAAA,GAAA,KAAA,CAAA,CAAA;AAAA,cAE3E,MAAM,OAAQ,CAAA,IAAA;AAAA,cACd,KAAA;AAAA,aAAA;AAAA,YANK,KAAA;AAAA,WAOP;AAAA,SAAA;AAAA,OAAA;AAAA,KAEJ,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEA,WAAA,CAAY,WAAc,GAAA,UAAA,CAAA;AAM1B,IAAM,iBAAoB,GAAA,kBAAA,CAAA;AAK1B,IAAM,iBAA0B,GAAA,KAAA,CAAA,UAAA;AAAA,EAC9B,CAAC,EAAE,aAAA,EAAe,OAAO,GAAG,KAAA,IAA8C,YAAiB,KAAA;AACzF,IAAM,MAAA,GAAA,GAAY,aAAyB,IAAI,CAAA,CAAA;AAC/C,IAAM,MAAA,YAAA,GAAe,eAAgB,CAAA,GAAA,EAAK,YAAY,CAAA,CAAA;AACtD,IAAM,MAAA,SAAA,GAAY,YAAY,KAAK,CAAA,CAAA;AAGnC,IAAM,gBAAU,MAAM;AACpB,MAAA,MAAM,QAAQ,GAAI,CAAA,OAAA,CAAA;AAClB,MAAA,IAAI,CAAC,KAAO,EAAA,OAAA;AAEZ,MAAM,MAAA,UAAA,GAAa,OAAO,gBAAiB,CAAA,SAAA,CAAA;AAC3C,MAAA,MAAM,UAAa,GAAA,MAAA,CAAO,wBAAyB,CAAA,UAAA,EAAY,OAAO,CAAA,CAAA;AACtE,MAAA,MAAM,WAAW,UAAW,CAAA,GAAA,CAAA;AAC5B,MAAI,IAAA,SAAA,KAAc,SAAS,QAAU,EAAA;AACnC,QAAA,MAAM,QAAQ,IAAI,KAAA,CAAM,SAAS,EAAE,OAAA,EAAS,MAAM,CAAA,CAAA;AAClD,QAAS,QAAA,CAAA,IAAA,CAAK,OAAO,KAAK,CAAA,CAAA;AAC1B,QAAA,KAAA,CAAM,cAAc,KAAK,CAAA,CAAA;AAAA,OAC3B;AAAA,KACC,EAAA,CAAC,SAAW,EAAA,KAAK,CAAC,CAAA,CAAA;AAWrB,IACE,uBAAA,GAAA;AAAA,MAAC,SAAU,CAAA,KAAA;AAAA,MAAV;AAAA,QACC,KAAA,EAAO,EAAE,OAAA,EAAS,MAAO,EAAA;AAAA,QACxB,GAAG,KAAA;AAAA,QACJ,GAAK,EAAA,YAAA;AAAA,QACL,YAAc,EAAA,KAAA;AAAA,OAAA;AAAA,KAChB,CAAA;AAAA,GAEJ;AACF,CAAA,CAAA;AAEA,iBAAA,CAAkB,WAAc,GAAA,iBAAA,CAAA;AAIhC,SAAS,mBAAoB,CAAA,UAAA,GAAuB,EAAC,EAAG,WAAmB,OAAiB,EAAA;AAC1F,EAAM,MAAA,UAAA,GAAa,CAAC,GAAG,UAAU,CAAA,CAAA;AACjC,EAAA,UAAA,CAAW,OAAO,CAAI,GAAA,SAAA,CAAA;AACtB,EAAA,OAAO,WAAW,IAAK,CAAA,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,CAAC,CAAA,CAAA;AACxC,CAAA;AAEA,SAAS,wBAAA,CAAyB,KAAe,EAAA,GAAA,EAAa,GAAa,EAAA;AACzE,EAAA,MAAM,WAAW,GAAM,GAAA,GAAA,CAAA;AACvB,EAAA,MAAM,iBAAiB,GAAM,GAAA,QAAA,CAAA;AAC7B,EAAM,MAAA,UAAA,GAAa,kBAAkB,KAAQ,GAAA,GAAA,CAAA,CAAA;AAC7C,EAAA,OAAO,KAAM,CAAA,UAAA,EAAY,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AACnC,CAAA;AAKA,SAAS,QAAA,CAAS,OAAe,WAAqB,EAAA;AACpD,EAAA,IAAI,cAAc,CAAG,EAAA;AACnB,IAAA,OAAO,CAAS,MAAA,EAAA,KAAA,GAAQ,CAAC,CAAA,IAAA,EAAO,WAAW,CAAA,CAAA,CAAA;AAAA,GAC7C,MAAA,IAAW,gBAAgB,CAAG,EAAA;AAC5B,IAAA,OAAO,CAAC,SAAA,EAAW,SAAS,CAAA,CAAE,KAAK,CAAA,CAAA;AAAA,GAC9B,MAAA;AACL,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AACF,CAAA;AAUA,SAAS,oBAAA,CAAqB,QAAkB,SAAmB,EAAA;AACjE,EAAI,IAAA,MAAA,CAAO,MAAW,KAAA,CAAA,EAAU,OAAA,CAAA,CAAA;AAChC,EAAM,MAAA,SAAA,GAAY,OAAO,GAAI,CAAA,CAAC,UAAU,IAAK,CAAA,GAAA,CAAI,KAAQ,GAAA,SAAS,CAAC,CAAA,CAAA;AACnE,EAAA,MAAM,eAAkB,GAAA,IAAA,CAAK,GAAI,CAAA,GAAG,SAAS,CAAA,CAAA;AAC7C,EAAO,OAAA,SAAA,CAAU,QAAQ,eAAe,CAAA,CAAA;AAC1C,CAAA;AAMA,SAAS,sBAAA,CAAuB,KAAe,EAAA,IAAA,EAAc,SAAmB,EAAA;AAC9E,EAAA,MAAM,YAAY,KAAQ,GAAA,CAAA,CAAA;AAC1B,EAAA,MAAM,WAAc,GAAA,EAAA,CAAA;AACpB,EAAM,MAAA,MAAA,GAAS,YAAY,CAAC,CAAA,EAAG,WAAW,CAAG,EAAA,CAAC,CAAG,EAAA,SAAS,CAAC,CAAA,CAAA;AAC3D,EAAA,OAAA,CAAQ,SAAY,GAAA,MAAA,CAAO,IAAI,CAAA,GAAI,SAAa,IAAA,SAAA,CAAA;AAClD,CAAA;AASA,SAAS,sBAAsB,MAAkB,EAAA;AAC/C,EAAA,OAAO,MAAO,CAAA,KAAA,CAAM,CAAG,EAAA,CAAA,CAAE,CAAE,CAAA,GAAA,CAAI,CAAC,KAAA,EAAO,KAAU,KAAA,MAAA,CAAO,KAAQ,GAAA,CAAC,IAAK,KAAK,CAAA,CAAA;AAC7E,CAAA;AAcA,SAAS,wBAAA,CAAyB,QAAkB,qBAA+B,EAAA;AACjF,EAAA,IAAI,wBAAwB,CAAG,EAAA;AAC7B,IAAM,MAAA,kBAAA,GAAqB,sBAAsB,MAAM,CAAA,CAAA;AACvD,IAAA,MAAM,2BAA8B,GAAA,IAAA,CAAK,GAAI,CAAA,GAAG,kBAAkB,CAAA,CAAA;AAClE,IAAA,OAAO,2BAA+B,IAAA,qBAAA,CAAA;AAAA,GACxC;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAGA,SAAS,WAAA,CAAY,OAAkC,MAAmC,EAAA;AACxF,EAAA,OAAO,CAAC,KAAkB,KAAA;AACxB,IAAA,IAAI,KAAM,CAAA,CAAC,CAAM,KAAA,KAAA,CAAM,CAAC,CAAK,IAAA,MAAA,CAAO,CAAC,CAAA,KAAM,MAAO,CAAA,CAAC,CAAG,EAAA,OAAO,OAAO,CAAC,CAAA,CAAA;AACrE,IAAM,MAAA,KAAA,GAAA,CAAS,MAAO,CAAA,CAAC,CAAI,GAAA,MAAA,CAAO,CAAC,CAAA,KAAM,KAAM,CAAA,CAAC,CAAI,GAAA,KAAA,CAAM,CAAC,CAAA,CAAA,CAAA;AAC3D,IAAA,OAAO,OAAO,CAAC,CAAA,GAAI,KAAS,IAAA,KAAA,GAAQ,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,GAC7C,CAAA;AACF,CAAA;AAEA,SAAS,gBAAgB,KAAe,EAAA;AACtC,EAAQ,OAAA,CAAA,MAAA,CAAO,KAAK,CAAE,CAAA,KAAA,CAAM,GAAG,CAAE,CAAA,CAAC,KAAK,EAAI,EAAA,MAAA,CAAA;AAC7C,CAAA;AAEA,SAAS,UAAA,CAAW,OAAe,YAAsB,EAAA;AACvD,EAAA,MAAM,OAAU,GAAA,IAAA,CAAK,GAAI,CAAA,EAAA,EAAI,YAAY,CAAA,CAAA;AACzC,EAAA,OAAO,IAAK,CAAA,KAAA,CAAM,KAAQ,GAAA,OAAO,CAAI,GAAA,OAAA,CAAA;AACvC,CAAA;AAEA,IAAM,IAAO,GAAAA,QAAA,CAAA;AACb,IAAM,KAAQ,GAAA,WAAA,CAAA;AACd,IAAM,KAAQ,GAAA,WAAA,CAAA;AACd,IAAM,KAAQ,GAAA,WAAA;;ACnxBd,MAAM,MAAM,GAAG,CAAC,EAOoC,KAAI;AAPxC,IAAA,IAAA,EACd,SAAS,EACT,YAAY,EACZ,KAAK,EACL,GAAG,GAAG,CAAC,EACP,GAAG,GAAG,GAAG,EAAA,GAAA,EAEyC,EAD/C,KAAK,GAAA,MAAA,CAAA,EAAA,EANM,oDAOf,CADS,CAAA;IAER,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAC1B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC9F,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAChC,CAAC;IAEF,QACEL,KAACO,IAAoB,EACT,MAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,qOAAqO,EACrO,SAAS,CACV,EAAA,EACG,KAAK,EAAA,EAAA,QAAA,EAAA,CACTR,GAAC,CAAAS,KAAqB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,mMAAmM,CACpM,EAAA,EAAA,EAAA,QAAA,EACDT,GAAC,CAAAU,KAAqB,EAAA,EAAA,WAAA,EACV,cAAc,EACxB,SAAS,EAAE,EAAE,CACX,6FAA6F,CAC9F,EACD,CAAA,EAAA,CAAA,CACoB,EACvB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAC9CV,GAAA,CAACW,KAAqB,EAAA,EAAA,WAAA,EACV,cAAc,EAExB,SAAS,EAAC,wOAAwO,EAD7O,EAAA,KAAK,CAEV,CACH,CAAC,CACmB,EAAA,CAAA,CAAA,EACvB;AACJ,CAAC;;AC1BD,MAAM,UAAU,GAAuE;IACrF,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE;IAC/D,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE;IACvD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE;CACvD,CAAC;AAEK,MAAM,0BAA0B,GAAG,CAAC,EACzC,GAAG,EACH,GAAG,EACH,YAAY,EACZ,QAAQ,GACwB,KAAI;;IACpC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAE5C,IAAA,QACEV,IAAA,CAAC,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAA,EAAA,EAAA,QAAA,EAAA,CAC5CD,IAAC,eAAe,EAAA,EAAA,QAAA,EACdC,IAAC,CAAA,OAAO,EACN,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EACrB,IAAA,EAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EACrBA,GAAC,CAAA,MAAM,kBAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,EAAE,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,EAAA,EAAA,EAAA,QAAA,EAC9EA,GAAC,CAAA,SAAS,EAAC,EAAA,SAAS,EAAC,SAAS,GAAG,EAC1B,CAAA,CAAA,EAAA,CAAA,CACM,EACF,CAAA,CAAA,EACjBA,GAAC,CAAA,cAAc,EAA0B,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA,CACjC,GACM,EAElBA,GAAA,CAAC,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,EACb,SAAS,EAAC,UAAU,EACpB,KAAK,EAAC,OAAO,EACb,eAAe,EAAE,KAAK,EACtB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EACvC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EAEnC,EAAA,EAAA,QAAA,EAAAC,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,WAAW,EACxB,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CACED,GAAI,CAAA,IAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,eAAe,EAAoB,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,EACjDA,yBAAG,SAAS,EAAC,+BAA+B,EAAA,EAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,CAAA,CAAoC,CAC5E,EAAA,CAAA,EACNA,GAAC,CAAA,SAAS,KAAG,EACbC,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,WAAW,EAAA,EAAA,EAAA,QAAA,EAAA,CACxBD,GAAC,CAAA,KAAK,kBAAC,OAAO,EAAC,UAAU,EAAC,SAAS,EAAC,qBAAqB,EAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,CAEjD,EACRA,GAAA,CAAC,KAAK,EAAA,EACJ,EAAE,EAAC,UAAU,EACb,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,MAAM,EAAE,MAAM,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EACzC,WAAW,EAAC,wBAAwB,EACpC,SAAS,EAAC,KAAK,EACf,CAAA,EACFA,GAAG,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,+BAA+B,EAAA,EAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,CAAA,CAAwC,CAChF,EAAA,CAAA,CAAA,EAENC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,WAAW,iBACxBD,GAAC,CAAA,KAAK,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAC,YAAY,EAAC,SAAS,EAAC,qBAAqB,EAEnD,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,CAAA,EACRC,IAAC,CAAA,MAAM,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,KAAgB,KAAK,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,iBAC/ED,GAAC,CAAA,aAAa,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EAAE,EAAC,YAAY,EAAC,SAAS,EAAC,YAAY,EAAA,EAAA,EAAA,QAAA,EACnDA,GAAC,CAAA,WAAW,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,WAAW,EAAC,uBAAuB,gBAC9CC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,yBAAyB,EACtC,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,aAAa,EAAE,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,GAAA,UAAU,CAAC,GAAG,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,IAAO,EAC3DA,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,+BAA+B,EAAA,EAAA,EAAA,QAAA,EAC3C,CAAA,EAAA,GAAA,UAAU,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAA,CAAA,CACzB,CACF,EAAA,CAAA,CAAA,EAAA,CAAA,CACM,IACA,EAChBA,GAAA,CAAC,aAAa,EAAA,EAAA,QAAA,EACZC,IAAC,CAAA,WAAW,EACV,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,UAAU,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAC,SAAS,EAAC,SAAS,EAAC,gBAAgB,gBACpDC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,yBAAyB,EACtC,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,kEAAkE,EAC/E,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA,CAAG,EAC1C,CAAA,CAAA,EACNC,4BAAK,SAAS,EAAC,QAAQ,EAAA,EAAA,EAAA,QAAA,EAAA,CACrBD,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,aAAa,gBAAE,CAAA,EAAA,GAAA,UAAU,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAO,CAAA,CAAA,EAC9DA,2BAAK,SAAS,EAAC,+BAA+B,EAAA,EAAA,EAAA,QAAA,EAC3C,CAAA,EAAA,GAAA,UAAU,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,WAAW,EAC5B,CAAA,CAAA,CAAA,EAAA,CAAA,CACF,CACF,EAAA,CAAA,CAAA,EAAA,CAAA,CACK,EACbA,GAAA,CAAC,UAAU,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAC,OAAO,EAAC,SAAS,EAAC,gBAAgB,gBAClDC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,yBAAyB,EACtC,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,kEAAkE,EAC/E,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA,CAAG,EAC1C,CAAA,CAAA,EACNC,4BAAK,SAAS,EAAC,QAAQ,EAAA,EAAA,EAAA,QAAA,EAAA,CACrBD,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,aAAa,gBAAE,CAAA,EAAA,GAAA,UAAU,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAO,CAAA,CAAA,EAC5DA,2BAAK,SAAS,EAAC,+BAA+B,EAAA,EAAA,EAAA,QAAA,EAC3C,CAAA,EAAA,GAAA,UAAU,CAAC,KAAK,0CAAE,WAAW,EAAA,CAAA,CAC1B,CACF,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACF,EACK,CAAA,CAAA,EACbA,GAAC,CAAA,UAAU,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,gBAAgB,gBACjDC,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,yBAAyB,EACtC,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,kEAAkE,EAC/E,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA,CAAG,EAC1C,CAAA,CAAA,EACNC,4BAAK,SAAS,EAAC,QAAQ,EAAA,EAAA,EAAA,QAAA,EAAA,CACrBD,GAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,aAAa,gBAAE,CAAA,EAAA,GAAA,UAAU,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,EAAO,CAAA,CAAA,EAC3DA,2BAAK,SAAS,EAAC,+BAA+B,EAAA,EAAA,EAAA,QAAA,EAC3C,CAAA,EAAA,GAAA,UAAU,CAAC,IAAI,0CAAE,WAAW,EAAA,CAAA,CACzB,CACF,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACF,EACK,CAAA,CAAA,CAAA,EAAA,CACD,EACA,CAAA,CAAA,EAAA,CAAA,CACT,KACL,EAENC,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,WAAW,EAAA,EAAA,EAAA,QAAA,EAAA,CACxBA,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,mCAAmC,EAAA,EAAA,EAAA,QAAA,EAAA,CAChDD,GAAC,CAAA,KAAK,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,qBAAqB,mCAAsB,EAC5DC,IAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAM,SAAS,EAAC,+BAA+B,EAAA,EAAA,EAAA,QAAA,EAAA,CAAE,YAAY,EAAA,IAAA,CAAA,EAAA,CAAA,CAAU,KACnE,EACND,GAAA,CAAC,MAAM,EAAA,EACL,KAAK,EAAE,CAAC,YAAY,CAAC,EACrB,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,EAC7D,GAAG,EAAE,EAAE,EACP,IAAI,EAAE,CAAC,EACP,SAAS,EAAC,QAAQ,EAAA,CAClB,CACE,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CACF,EACS,CAAA,CAAA,CAAA,EAAA,CAAA,CACT,EACV;AACJ,CAAC;;AC9IM,MAAM,kBAAkB,GAAG,CAAC,EACjC,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,UAAU,EACV,MAAM,GACkB,KAAI;;IAC5B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAElD,IAAA,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,WAAW,CAAC;AAC3C,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,UAAU,EAAE;YACV,MAAM,CAAC,CAAC,CAAC;AACT,YAAA,IAAI,CAAC;AACH,gBAAA,kBAAkB,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrC,gBAAA,OAAO,EAAE,EAAE;aACZ,CAAC;AACF,YAAA,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACvB,SAAA;AACD,QAAA,oBAAoB,EAAE,UAAU;AACjC,KAAA,CAAC,CAAC;IAEH,SAAS,CAAC,MAAK;QACb,qBAAqB,CAAC,MAAK;YACzB,YAAY,CAAC,IAAI,CAAC,CAAC;AACrB,SAAC,CAAC,CAAC;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;AACrC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAC5B,SAAA;AACH,KAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;IAEzB,QACEA,GACE,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAG,EAAE,IAAI,CAAC,WAAW,EACrB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EACvC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EACnC,SAAS,EAAE,EAAE,CACX,qBAAqB,EACrB,2FAA2F,EAC3F,sCAAsC,EACtC,SAAS,GAAG,2BAA2B,GAAG,yBAAyB,CACpE,EACD,KAAK,EAAE,cAAc,EACrB,EAAA,EAAA,QAAA,EAAAC,IAAA,CAAC,eAAe,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,aAAa,EAAE,CAAC,EAC/B,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,yCAAyC,EAAA,EAAA,EAAA,QAAA,EAAA,CACtDA,IAAC,CAAA,OAAO,EACN,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,cAAc,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EACrB,IAAA,EAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,OAAO,EAAE,YAAY,CAAC,SAAS,KAAK,MAAM,GAAG,WAAW,GAAG,OAAO,EAClE,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,MAAM,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAA,EAAA,EAAA,QAAA,EAC9CA,IAAC,SAAS,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAC1B,CAAA,CAAA,EAAA,CAAA,CACM,EACjBA,GAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAA4B,CACnC,EAAA,CAAA,EAEVC,KAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,GAAC,CAAA,cAAc,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EACrB,IAAA,EAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,OAAO,EAAE,YAAY,CAAC,SAAS,KAAK,QAAQ,GAAG,WAAW,GAAG,OAAO,EACpE,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,MAAM,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,EAChD,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAC5B,CAAA,CAAA,EAAA,CAAA,CACM,EACjBA,GAAA,CAAC,cAAc,EAA8B,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,CAAA,EAAA,CACrC,EAEVC,IAAA,CAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,GAAC,CAAA,cAAc,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EACrB,IAAA,EAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,OAAO,EAAE,YAAY,CAAC,SAAS,KAAK,OAAO,GAAG,WAAW,GAAG,OAAO,EACnE,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,MAAM,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAA,EAAA,EAAA,QAAA,EAC/CA,GAAC,CAAA,UAAU,EAAC,EAAA,SAAS,EAAC,SAAS,EAAG,CAAA,EAAA,CAAA,CAC3B,IACM,EACjBA,GAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAA6B,CACpC,EAAA,CAAA,CAAA,EAAA,CAAA,CACN,EAENC,IAAA,CAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,GAAC,CAAA,cAAc,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,sBACrBA,GAAC,CAAA,MAAM,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAE,SAAS,EAAA,EAAA,EAAA,QAAA,EACxEA,GAAC,CAAA,QAAQ,EAAC,EAAA,SAAS,EAAC,SAAS,EAAG,CAAA,EAAA,CAAA,CACzB,EACM,CAAA,CAAA,EACjBA,IAAC,cAAc,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAyB,CAChC,EAAA,CAAA,EAEVC,IAAC,CAAA,OAAO,EACN,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,cAAc,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EACrBA,GAAC,CAAA,MAAM,kBAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAE,UAAU,EACzE,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EACzB,CAAA,CAAA,EAAA,CAAA,CACM,EACjBA,GAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAA0B,IACjC,EAEVC,IAAA,CAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,GAAC,CAAA,cAAc,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EACrB,IAAA,EAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,EAAC,OAAO,EAAE,MAAM,EACrE,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,IAAI,EAAC,EAAA,SAAS,EAAC,SAAS,EAAG,CAAA,EAAA,CAAA,CACrB,EACM,CAAA,CAAA,EACjBA,GAAC,CAAA,cAAc,EAAsB,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA,CAC7B,EAEVA,GAAA,CAAC,SAAS,EAAC,EAAA,WAAW,EAAC,UAAU,EAAC,SAAS,EAAC,KAAK,EAAG,CAAA,EAEpDA,GAAC,CAAA,0BAA0B,EACzB,EAAA,GAAG,EAAE,CAAA,EAAA,GAAA,YAAY,CAAC,GAAG,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,SAAS,EAClC,GAAG,EAAE,YAAY,CAAC,GAAG,IAAI,EAAE,EAC3B,YAAY,EAAE,CAAA,EAAA,GAAA,YAAY,CAAC,YAAY,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,EAC5C,QAAQ,EAAE,QAAQ,EAClB,CAAA,EAEFC,KAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,GAAC,CAAA,cAAc,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EACrB,IAAA,EAAA,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,yEAAyE,EACnF,OAAO,EAAE,QAAQ,EACjB,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EACvB,CAAA,CAAA,EAAA,CAAA,CACM,EACjBA,GAAA,CAAC,cAAc,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAwB,CAC/B,EAAA,CAAA,CAAA,EAAA,CAAA,CACM,EACd,CAAA,CAAA,EACN;AACJ,CAAC;;AC7IM,MAAM,WAAW,GAAG,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,aAAa,GACP,KAAI;;AACV,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACvD,IAAA,MAAM,EAAE,iBAAiB,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACnD,MAAM,eAAe,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;AACtD,IAAA,MAAM,UAAU,GAAG,iBAAiB,IAAI,eAAe,CAAC;AACxD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;AAChD,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;;IAGjC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,MAAK;;AAC5C,QAAA,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,EAAA,CAAG,KAAK,KAAI,GAAG,CAAC;QAC5E,MAAM,eAAe,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,QAAQ,CAAC;QAEhD,OAAO;YACL,QAAQ,EAAE,CAAA,eAAe,KAAA,IAAA,IAAf,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,QAAQ;AACjC,kBAAE,OAAO,eAAe,CAAC,QAAQ,KAAK,QAAQ;sBAC1C,eAAe,CAAC,QAAQ;AAC1B,sBAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACxE,kBAAE,WAAW;YACf,SAAS,EAAE,CAAA,eAAe,KAAA,IAAA,IAAf,eAAe,KAAf,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAe,CAAE,SAAS;AACnC,kBAAE,OAAO,eAAe,CAAC,SAAS,KAAK,QAAQ;sBAC3C,eAAe,CAAC,SAAS;AAC3B,sBAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACzE,kBAAE,GAAG;SACR,CAAC;AACJ,KAAC,CAAC,CAAC;;IAGH,SAAS,CAAC,MAAK;QACb,MAAM,cAAc,GAAG,MAAK;;AAC1B,YAAA,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,qBAAqB,EAAA,CAAG,KAAK,KAAI,GAAG,CAAC;YAC5E,MAAM,cAAc,GAAG,aAAa,KAAA,IAAA,IAAb,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,QAAQ,CAAC;AAE/C,YAAA,WAAW,CAAC;gBACV,QAAQ,EAAE,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAd,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAc,CAAE,QAAQ;AAChC,sBAAE,OAAO,cAAc,CAAC,QAAQ,KAAK,QAAQ;0BACzC,cAAc,CAAC,QAAQ;AACzB,0BAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACvE,sBAAE,WAAW;gBACf,SAAS,EAAE,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAd,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,cAAc,CAAE,SAAS;AAClC,sBAAE,OAAO,cAAc,CAAC,SAAS,KAAK,QAAQ;0BAC1C,cAAc,CAAC,SAAS;AAC1B,0BAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;AACxE,sBAAE,GAAG;AACR,aAAA,CAAC,CAAC;AACL,SAAC,CAAC;AAEF,QAAA,cAAc,EAAE,CAAC;AAEjB,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,cAAc,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,UAAU,EAAE;AACrB,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3C,SAAA;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAElD,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,UAAU,EAAE,CAAC;AAC5B,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;;AAG5B,IAAA,MAAM,eAAe,GAAG,CACtB,KAA0D,EAC1D,QAA6D,KACxB;AACrC,QAAA,MAAM,SAAS,GAAG,CAAC,KAAsB,KAAY;YACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,gBAAA,OAAO,KAAK,CAAC;AAC5C,YAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3D,SAAC,CAAC;QAEF,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAE7C,QAAA,IAAI,YAAY,IAAI,QAAQ,IAAI,aAAa,IAAI,SAAS,EAAE;YAC1D,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACvD,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAC3C,QAAA,MAAM,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;QAEpD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;YACnC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;SACvC,CAAC;AACJ,KAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,EAAO,EAAE,UAAe,EAAE,GAAgB,KAAI;AAClE,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/C,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;AAGjD,QAAA,MAAM,YAAY,GAAG,eAAe,CAClC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EACtC,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,CACzD,CAAC;AAEF,QAAA,QAAQ,CAAC;AACP,YAAA,KAAK,EAAE,YAAY;AACpB,SAAA,CAAC,CAAC;AACL,KAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,EAAO,EAAE,UAAe,EAAE,GAAgB,KAAI;AAC9D,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC/C,QAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;;AAGjD,QAAA,MAAM,YAAY,GAAG,eAAe,CAClC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EACtC,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,CACzD,CAAC;QAEF,QAAQ,CAAC,YAAY,CAAC,CAAC;AACzB,KAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QAC1B,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC,YAAA,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;YACb,CAAC,CAAC,QAAQ,GAAG,CAAA,MAAA,EAAS,IAAI,CAAC,GAAG,EAAE,CAAA,IAAA,CAAM,CAAC;YACvC,CAAC,CAAC,KAAK,EAAE,CAAC;AACV,YAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC1B,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;;AAEf,SAAA;AACH,KAAC,CAAA,CAAC;IAEF,MAAM,SAAS,GAAG,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;QAC3B,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC/C,YAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAEnC,YAAA,IAAI,SAAS,CAAC,SAAS,IAAI,aAAa,EAAE;gBACxC,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7E,aAAA;AAAM,iBAAA;AACL,gBAAAY,eAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxB,aAAA;AACF,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACd,YAAAA,eAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxB,SAAA;AACH,KAAC,CAAA,CAAC;AAEF,IAAA,MAAM,cAAc,GAAG;AACrB,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,MAAM,EAAE,gBAAgB;AACxB,QAAA,KAAK,EAAE,aAAa;AACrB,KAAA,CAAC,MAAA,YAAY,CAAC,SAAS,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,QAAQ,CAAC,CAAC;AAEtC,IAAA,QACEX,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACM,UAAU,EAAA,EACd,SAAS,EAAE,EAAE,CAAC,sDAAsD,EAAE,cAAc,CAAC,iBACrFA,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,UAAU,EAAC,eAAe,EAAE,KAAK,EAC9C,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,GAAG,EAAA,MAAA,CAAA,MAAA,CAAA,EACF,GAAG,EAAE,CAAC,IAAI,KAAI;;AAEZ,4BAAA,IAAI,CAAA,IAAI,KAAJ,IAAA,IAAA,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,KAAI,IAAI,CAAC,gBAAgB,YAAY,WAAW,EAAE;AAC1E,gCAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACxC,6BAAA;yBACF,EACD,KAAK,EAAE;AACL,4BAAA,QAAQ,EAAE,UAAU;4BACpB,OAAO,EAAE,UAAU,GAAG,gCAAgC,GAAG,MAAM;4BAC/D,YAAY,EAAE,UAAU,GAAG,qBAAqB,GAAG,MAAM;AAC1D,yBAAA,EACD,IAAI,EAAE;4BACJ,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,yBAAA,EACD,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,eAAe,EACf,IAAA,EAAA,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,GAAG,EACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS,EAC7B,cAAc,EACZ,UAAU;AACR,8BAAE;AACA,gCAAA,MAAM,EAAE,KAAK;AACb,gCAAA,UAAU,EAAE,KAAK;AACjB,gCAAA,WAAW,EAAE,KAAK;AAClB,gCAAA,IAAI,EAAE,IAAI;AACV,gCAAA,KAAK,EAAE,IAAI;AACX,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,OAAO,EAAE,KAAK;AACd,gCAAA,QAAQ,EAAE,KAAK;AAChB,6BAAA;AACD,8BAAE,KAAK,EAEX,eAAe,EAAA,IAAA,EACf,kBAAkB,EAAE;AAClB,4BAAA,IAAI,EAAE;AACJ,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,IAAI,EAAE,MAAM;AACZ,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,SAAS,EAAE,kBAAkB;AAC7B,gCAAA,MAAM,EAAE,WAAW;AACpB,6BAAA;AACD,4BAAA,KAAK,EAAE;AACL,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,MAAM,EAAE,MAAM;AACd,gCAAA,KAAK,EAAE,MAAM;AACb,gCAAA,GAAG,EAAE,KAAK;AACV,gCAAA,SAAS,EAAE,kBAAkB;AAC7B,gCAAA,MAAM,EAAE,WAAW;AACpB,6BAAA;AACF,yBAAA,EACD,qBAAqB,EAAE;AACrB,4BAAA,IAAI,GACFA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kEAAkE,GAAG,CACrF;AACD,4BAAA,KAAK,GACHA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kEAAkE,GAAG,CACrF;yBACF,EACD,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,EAAA,EAAA,EAAA,QAAA,EAC3BA,GACE,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,YAAY,CAAC,GAAG,EACrB,GAAG,EAAE,YAAY,CAAC,GAAG,IAAI,EAAE,EAC3B,SAAS,EAAC,2CAA2C,EACrD,KAAK,EAAE;gCACL,SAAS,EAAE,YAAY,CAAC,GAAG;AAC3B,gCAAA,YAAY,EAAE,CAAA,EAAG,YAAY,CAAC,YAAY,CAAI,EAAA,CAAA;6BAC/C,EACD,SAAS,EAAE,KAAK,EAAA,CAChB,IACE,EACL,UAAU,KACTA,GAAA,CAAC,kBAAkB,EACjB,EAAA,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,QAAQ,EACpB,MAAM,EAAE,SAAS,EACjB,CAAA,CACH,KACG,EACL,QAAQ,CACL,EAAA,CAAA,CAAA,EACN;AACJ,CAAC;;AC9QM,MAAM,YAAY,GAAG,CAAC,EAC3B,OAAO,EACP,UAAU,EACV,QAAQ,EACR,OAAO,GACkB,KAAI;AAC7B,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;AACjC,IAAA,MAAM,aAAa,GAAG,sBAAsB,CAAqB,OAAO,CAAC,CAAC;AAC1E,IAAA,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,aAAa,CAAC,MAAO,CAAC,CAAC;AAClG,IAAA,MAAM,EAAE,WAAW,EAAE,sBAAsB,EAAE,GAAG,cAAc,CAAC,aAAa,CAAC,MAAO,CAAC,CAAC;IACtF,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;AAErE,IAAA,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAAiC,KAAI;AACpC,QAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7B,OAAO;AACP,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,kCACA,OAAO,CAAC,KAAK,CAAA,EACb,KAAK,CACT;AACF,SAAA,CAAC,CAAC;KACJ,EACD,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CACjC,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAW,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;AACzC,QAAA,MAAM,sBAAsB,CAAC,OAA2B,CAAC,CAAC;AAC1D,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,KAAK;YAAE,OAAO;AAEnB,QAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,WAAW;YAAE,OAAO;AAEzB,QAAA,MAAM,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;QAChF,IAAI,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;AACxF,YAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;gBAC7B,OAAO;AACP,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,IAAI,EAAE,WAAW;AAClB,aAAA,CAAC,CAAC;YACH,OAAO;AACR,SAAA;AAED,QAAA,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,KAAC,CAAA,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAEvD,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;AACpC,QAAA,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE;YAC7B,OAAO;AACP,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EACA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,OAAO,CAAC,KAAK,CAChB,EAAA,EAAA,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,EACV,CAAA;AACF,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAErC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAO,CAAsC,KAAI,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;;QAC/C,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,CAAC,CAAC,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,eAAe,CAAC,IAAI,CAAC,CAAC;AACtB,QAAA,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAChD,QAAA,aAAa,CAAC;AACZ,YAAA,EAAE,EAAE,MAAM,CAAC,EAAE,IAAK,MAAc,CAAC,MAAM;YACvC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,IAAI,CAAC,IAAI;AACd,YAAA,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAO,EAAE;AACxD,SAAA,CAAC,CAAC;AACH,QAAA,YAAY,EAAE,CAAC;AACjB,KAAC,CAAA,EACD,CAAC,oBAAoB,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,CACrE,CAAC;AAEF,IAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;QACtB,QACEA,IAAC,gBAAgB,EAAA,MAAA,CAAA,MAAA,CAAA,EACf,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,SAAS,EACtB,oBAAoB,EAAE,MAAQ,GAAC,EAC/B,cAAc,EAAE,MAAc,SAAA,CAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA,GAAC,CAAA,EAC/B,UAAU,EAAE,UAAU,EACrB,EAAA,EAAA,QAAA,EAAA,QAAQ,EACQ,CAAA,CAAA,EACnB;AACH,KAAA;AAED,IAAA,QACEA,GAAC,CAAA,WAAW,kBACV,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,OAAO,CAAC,EAAE,EACrB,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,YAAY,EACvB,YAAY,EAAE,OAAO,CAAC,KAAK,EAC3B,aAAa,EAAE,aAAa,gBAC3B,QAAQ,EAAA,CAAA,CACG,EACd;AACJ,CAAC;;ACxHY,MAAA,OAAO,GAAG;AACrB,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,YAAY;AACrB,KAAA;;;;;","x_google_ignoreList":[0,3]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/applyTheme.ts","../src/index.ts"],"sourcesContent":["import type { YooptaPlugin } from '@yoopta/editor';\n\nimport { AccordionUI } from './accordion';\nimport { BlockquoteUI } from './blockquote';\nimport { CalloutUI } from './callout';\nimport { CarouselUI } from './carousel';\nimport { CodeUI } from './code';\nimport { CodeGroupUI } from './code-group';\nimport { DividerUI } from './divider';\nimport { EmbedUI } from './embed';\nimport { FileUI } from './file';\nimport { HeadingsUI } from './headings';\nimport { ImageUI } from './image';\nimport { LinkUI } from './link';\nimport { ListsUI } from './lists';\nimport { MentionUI } from './mention';\nimport { ParagraphUI } from './paragraph';\nimport { StepsUI } from './steps';\nimport { TableUI } from './table';\nimport { TableOfContentsUI } from './table-of-contents';\nimport { TabsUI } from './tabs';\nimport { VideoUI } from './video';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype PluginWithUI = YooptaPlugin<any, any>;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype PluginExtensions = Record<\n string,\n {\n injectElementsFromPlugins?: PluginWithUI[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n events?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n options?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elements?: any;\n }\n>;\n\n/**\n * Applies Shadcn UI components to plugins automatically\n *\n * @param plugins - Array of plugins to apply UI to\n * @param extensions - Optional object with additional extensions per plugin type\n * @returns Array of plugins with Shadcn UI applied\n *\n * @example\n * ```typescript\n * const plugins = applyTheme([\n * Accordion,\n * Paragraph,\n * Headings.HeadingOne,\n * ], {\n * Accordion: {\n * injectElementsFromPlugins: [Paragraph, Headings.HeadingOne]\n * }\n * });\n * ```\n */\nexport function applyTheme(\n plugins: PluginWithUI[],\n extensions?: PluginExtensions,\n): PluginWithUI[] {\n // Mapping of plugin types to their UI components\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const uiMap: Record<string, any> = {\n Accordion: AccordionUI,\n Paragraph: ParagraphUI,\n Blockquote: BlockquoteUI,\n Callout: CalloutUI,\n Table: TableUI,\n TableOfContents: TableOfContentsUI,\n Link: LinkUI,\n HeadingOne: HeadingsUI.HeadingOne,\n HeadingTwo: HeadingsUI.HeadingTwo,\n HeadingThree: HeadingsUI.HeadingThree,\n BulletedList: ListsUI.BulletedList,\n NumberedList: ListsUI.NumberedList,\n TodoList: ListsUI.TodoList,\n Image: ImageUI,\n Video: VideoUI,\n Code: CodeUI,\n Tabs: TabsUI,\n CodeGroup: CodeGroupUI,\n Steps: StepsUI,\n Carousel: CarouselUI,\n Divider: DividerUI,\n Embed: EmbedUI,\n File: FileUI,\n Mention: MentionUI,\n };\n\n return plugins.map((plugin) => {\n const pluginType = plugin.getPlugin.type;\n const ui = uiMap[pluginType];\n\n // If no UI found for this plugin type, return as is\n if (!ui) {\n return plugin;\n }\n\n // Get extension config for this plugin type\n const extension = extensions?.[pluginType];\n\n // Apply UI and any additional extensions\n // If extension provides custom elements, use them; otherwise use default UI\n const elementsToApply = extension?.elements ?? ui;\n\n return plugin.extend({\n elements: elementsToApply,\n ...(extension && {\n injectElementsFromPlugins: extension.injectElementsFromPlugins,\n events: extension.events,\n options: extension.options,\n }),\n });\n });\n}\n","// CSS is automatically imported when you import this package\n// No need to manually import CSS files - they are embedded in the JS bundle\nimport './variables.css';\nimport './styles.css';\nimport { applyTheme } from './applyTheme';\n\nexport { AccordionUI } from './accordion';\nexport { TableUI } from './table';\nexport { HeadingsUI } from './headings';\nexport { BlockquoteUI } from './blockquote';\nexport { ParagraphUI } from './paragraph';\nexport { CalloutUI } from './callout';\nexport { ListsUI } from './lists';\nexport { LinkUI } from './link';\nexport { MentionUI, MentionDropdown } from './mention';\nexport { ImageUI } from './image';\nexport { VideoUI } from './video';\nexport { EmbedUI } from './embed';\nexport { FileUI } from './file';\nexport { CodeUI } from './code';\nexport { TabsUI } from './tabs';\nexport { StepsUI } from './steps';\nexport { DividerUI } from './divider';\nexport default applyTheme;\nexport { applyTheme };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA;;;;;;;;;;;;;;;;;;;AAmBG;AACa,SAAA,UAAU,CACxB,OAAuB,EACvB,UAA6B,EAAA;;;AAI7B,IAAA,MAAM,KAAK,GAAwB;AACjC,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,UAAU,EAAE,YAAY;AACxB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;AAC1B,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,SAAS,EAAE,WAAW;AACtB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,IAAI,EAAE,MAAM;AACZ,QAAA,OAAO,EAAE,SAAS;KACnB,CAAC;AAEF,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;;AAC5B,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AACzC,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;;QAG7B,IAAI,CAAC,EAAE,EAAE;AACP,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;;QAGD,MAAM,SAAS,GAAG,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAG,UAAU,CAAC,CAAC;;;AAI3C,QAAA,MAAM,eAAe,GAAG,CAAA,EAAA,GAAA,SAAS,KAAT,IAAA,IAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,SAAS,CAAE,QAAQ,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;QAElD,OAAO,MAAM,CAAC,MAAM,CAClB,MAAA,CAAA,MAAA,CAAA,EAAA,QAAQ,EAAE,eAAe,EAAA,GACrB,SAAS,IAAI;YACf,yBAAyB,EAAE,SAAS,CAAC,yBAAyB;YAC9D,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,OAAO,EAAE,SAAS,CAAC,OAAO;AAC3B,SAAA,GACD,CAAC;AACL,KAAC,CAAC,CAAC;AACL;;ACtHA;AACA;;;;"}
|