@yoopta/themes-shadcn 6.0.0-beta.14 → 6.0.0-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/table/components/row-controls.d.ts.map +1 -1
  2. package/package.json +2 -2
  3. package/dist/accordion.js.map +0 -1
  4. package/dist/blockquote.js.map +0 -1
  5. package/dist/callout.js.map +0 -1
  6. package/dist/carousel.js.map +0 -1
  7. package/dist/chunks/Combination-2202c874.js +0 -1080
  8. package/dist/chunks/Combination-2202c874.js.map +0 -1
  9. package/dist/chunks/_tslib-514d60fe.js +0 -67
  10. package/dist/chunks/_tslib-514d60fe.js.map +0 -1
  11. package/dist/chunks/arrow-right-cc37c75c.js +0 -30
  12. package/dist/chunks/arrow-right-cc37c75c.js.map +0 -1
  13. package/dist/chunks/button-f9af7cb3.js +0 -76
  14. package/dist/chunks/button-f9af7cb3.js.map +0 -1
  15. package/dist/chunks/card-29720641.js +0 -38
  16. package/dist/chunks/card-29720641.js.map +0 -1
  17. package/dist/chunks/check-530fff0e.js +0 -14
  18. package/dist/chunks/check-530fff0e.js.map +0 -1
  19. package/dist/chunks/chevron-down-544d1acd.js +0 -16
  20. package/dist/chunks/chevron-down-544d1acd.js.map +0 -1
  21. package/dist/chunks/chevron-up-053cba03.js +0 -14
  22. package/dist/chunks/chevron-up-053cba03.js.map +0 -1
  23. package/dist/chunks/code-2ff9cc0c.js +0 -17
  24. package/dist/chunks/code-2ff9cc0c.js.map +0 -1
  25. package/dist/chunks/createLucideIcon-02eb7854.js +0 -95
  26. package/dist/chunks/createLucideIcon-02eb7854.js.map +0 -1
  27. package/dist/chunks/dropdown-menu-ac777fdc.js +0 -1165
  28. package/dist/chunks/dropdown-menu-ac777fdc.js.map +0 -1
  29. package/dist/chunks/external-link-43895ded.js +0 -18
  30. package/dist/chunks/external-link-43895ded.js.map +0 -1
  31. package/dist/chunks/file-text-99674d8d.js +0 -20
  32. package/dist/chunks/file-text-99674d8d.js.map +0 -1
  33. package/dist/chunks/hover-card-134f053d.js +0 -257
  34. package/dist/chunks/hover-card-134f053d.js.map +0 -1
  35. package/dist/chunks/index-056b596e.js +0 -16
  36. package/dist/chunks/index-056b596e.js.map +0 -1
  37. package/dist/chunks/index-35823769.js +0 -222
  38. package/dist/chunks/index-35823769.js.map +0 -1
  39. package/dist/chunks/index-41c4abc4.js +0 -3805
  40. package/dist/chunks/index-41c4abc4.js.map +0 -1
  41. package/dist/chunks/index-454935af.js +0 -71
  42. package/dist/chunks/index-454935af.js.map +0 -1
  43. package/dist/chunks/index-ae9b48d5.js +0 -12
  44. package/dist/chunks/index-ae9b48d5.js.map +0 -1
  45. package/dist/chunks/index-b8a83ba5.js +0 -335
  46. package/dist/chunks/index-b8a83ba5.js.map +0 -1
  47. package/dist/chunks/index-b8f2908d.js +0 -40
  48. package/dist/chunks/index-b8f2908d.js.map +0 -1
  49. package/dist/chunks/index-c655a86f.js +0 -7
  50. package/dist/chunks/index-c655a86f.js.map +0 -1
  51. package/dist/chunks/index-c90e54a4.js +0 -190
  52. package/dist/chunks/index-c90e54a4.js.map +0 -1
  53. package/dist/chunks/index-cf5f0d71.js +0 -2907
  54. package/dist/chunks/index-cf5f0d71.js.map +0 -1
  55. package/dist/chunks/index-d9171717.js +0 -13
  56. package/dist/chunks/index-d9171717.js.map +0 -1
  57. package/dist/chunks/index-dd0fd848.js +0 -70
  58. package/dist/chunks/index-dd0fd848.js.map +0 -1
  59. package/dist/chunks/input-5608c2c9.js +0 -13
  60. package/dist/chunks/input-5608c2c9.js.map +0 -1
  61. package/dist/chunks/label-c9152e49.js +0 -168
  62. package/dist/chunks/label-c9152e49.js.map +0 -1
  63. package/dist/chunks/language-select-bdc50f20.js +0 -44
  64. package/dist/chunks/language-select-bdc50f20.js.map +0 -1
  65. package/dist/chunks/play-1a34ad05.js +0 -16
  66. package/dist/chunks/play-1a34ad05.js.map +0 -1
  67. package/dist/chunks/plus-fcea2532.js +0 -17
  68. package/dist/chunks/plus-fcea2532.js.map +0 -1
  69. package/dist/chunks/popover-ef29b0ac.js +0 -300
  70. package/dist/chunks/popover-ef29b0ac.js.map +0 -1
  71. package/dist/chunks/scroll-area-17d8c584.js +0 -726
  72. package/dist/chunks/scroll-area-17d8c584.js.map +0 -1
  73. package/dist/chunks/select-98610101.js +0 -1213
  74. package/dist/chunks/select-98610101.js.map +0 -1
  75. package/dist/chunks/separator-9e6aa45b.js +0 -172
  76. package/dist/chunks/separator-9e6aa45b.js.map +0 -1
  77. package/dist/chunks/sparkles-8922a4af.js +0 -26
  78. package/dist/chunks/sparkles-8922a4af.js.map +0 -1
  79. package/dist/chunks/style-inject.es-746bb8ed.js +0 -29
  80. package/dist/chunks/style-inject.es-746bb8ed.js.map +0 -1
  81. package/dist/chunks/tabs-9cfbd3cc.js +0 -204
  82. package/dist/chunks/tabs-9cfbd3cc.js.map +0 -1
  83. package/dist/chunks/tooltip-f1e02ae0.js +0 -800
  84. package/dist/chunks/tooltip-f1e02ae0.js.map +0 -1
  85. package/dist/chunks/trash-2-be728dd2.js +0 -20
  86. package/dist/chunks/trash-2-be728dd2.js.map +0 -1
  87. package/dist/chunks/upload-0f56ec3e.js +0 -44
  88. package/dist/chunks/upload-0f56ec3e.js.map +0 -1
  89. package/dist/chunks/utils-131071a4.js +0 -2500
  90. package/dist/chunks/utils-131071a4.js.map +0 -1
  91. package/dist/chunks/x-2f6cf742.js +0 -17
  92. package/dist/chunks/x-2f6cf742.js.map +0 -1
  93. package/dist/code-group.js.map +0 -1
  94. package/dist/code.js.map +0 -1
  95. package/dist/divider.js.map +0 -1
  96. package/dist/embed.js.map +0 -1
  97. package/dist/file.js.map +0 -1
  98. package/dist/headings.js.map +0 -1
  99. package/dist/image.js.map +0 -1
  100. package/dist/index.js.map +0 -1
  101. package/dist/link.js.map +0 -1
  102. package/dist/lists.js.map +0 -1
  103. package/dist/mention.js.map +0 -1
  104. package/dist/paragraph.js.map +0 -1
  105. package/dist/steps.js.map +0 -1
  106. package/dist/table-of-contents.js.map +0 -1
  107. package/dist/table.js.map +0 -1
  108. package/dist/tabs.js.map +0 -1
  109. package/dist/video.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"paragraph.js","sources":["../src/paragraph/elements/paragraph.tsx","../src/paragraph/index.ts"],"sourcesContent":["import type { PluginElementRenderProps } from '@yoopta/editor';\n\nexport const Paragraph = (props: PluginElementRenderProps) => {\n const { attributes, children } = props;\n\n return (\n <p {...attributes} className=\"leading-7 [&:not(:first-child)]:mt-6\">\n {children}\n </p>\n );\n};\n","import { Paragraph } from './elements/paragraph';\n\nexport const ParagraphUI = {\n paragraph: {\n render: Paragraph,\n },\n};\n"],"names":["_jsx"],"mappings":";;AAEO,MAAM,SAAS,GAAG,CAAC,KAA+B,KAAI;AAC3D,IAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEvC,QACEA,GAAO,CAAA,GAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,UAAU,EAAE,EAAA,SAAS,EAAC,sCAAsC,EAChE,EAAA,EAAA,QAAA,EAAA,QAAQ,EACP,CAAA,CAAA,EACJ;AACJ,CAAC;;ACRY,MAAA,WAAW,GAAG;AACzB,IAAA,SAAS,EAAE;AACT,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;;;;;"}
package/dist/steps.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"steps.js","sources":["../src/steps/elements/steps-container.tsx","../src/steps/elements/steps-list.tsx","../src/steps/elements/steps-list-item.tsx","../src/steps/elements/steps-list-item-content.tsx","../src/steps/elements/steps-list-item-heading.tsx","../src/steps/index.ts"],"sourcesContent":["import type { PluginElementRenderProps } from '@yoopta/editor';\nimport { Blocks, useYooptaEditor } from '@yoopta/editor';\nimport { StepsCommands } from '@yoopta/steps';\nimport { Plus } from 'lucide-react';\n\nimport { Button } from '../../ui/button';\nimport { cn } from '../../utils';\n\nexport const StepContainer = (props: PluginElementRenderProps) => {\n const editor = useYooptaEditor();\n const { attributes, children } = props;\n\n const addStep = () => {\n if (editor.readOnly) return;\n\n const slate = Blocks.getBlockSlate(editor, { id: props.blockId });\n if (!slate) return;\n\n StepsCommands.addStep(editor, { blockId: props.blockId });\n };\n\n return (\n <div {...attributes} role=\"list\" className=\"ml-3.5 my-4 relative group/steps-node\">\n {children}\n <div\n contentEditable={false}\n className={cn(\n '-ml-3.5 z-20 absolute left-0 flex',\n 'transition-opacity duration-300',\n 'opacity-0 group-hover/steps-node:opacity-100',\n )}\n style={{ bottom: '-4px' }}>\n {!editor.readOnly && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n 'w-7 h-7 shrink-0 rounded-lg',\n 'bg-muted hover:bg-muted/80',\n 'text-sm font-semibold',\n )}\n onClick={addStep}\n aria-label=\"Add more Step\">\n <Plus className=\"w-4 h-4\" />\n </Button>\n )}\n </div>\n </div>\n );\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\n\nexport const StepList = (props: PluginElementRenderProps) => {\n const { attributes, children } = props;\n\n return (\n <div {...attributes} className=\"[&>div]:contents contents\">\n {children}\n </div>\n );\n};\n","import { useMemo } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport { Elements, useYooptaEditor } from '@yoopta/editor';\nimport { StepsCommands } from '@yoopta/steps';\nimport { ArrowDown, ArrowUp, MoreVertical, Trash2 } from 'lucide-react';\n\nimport { Button } from '../../ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu';\nimport { cn } from '../../utils';\n\nexport const StepListItem = (props: PluginElementRenderProps) => {\n const { attributes, children, element } = props;\n const editor = useYooptaEditor();\n\n const order = useMemo(() => {\n const path = Elements.getElementPath(editor, { blockId: props.blockId, element });\n const orderNumber = path?.[path.length - 1];\n if (!orderNumber) return 0;\n\n return orderNumber;\n }, [editor, element, props.blockId]);\n\n const stepNumber = order + 1;\n const isLast = order === element.children.length - 1;\n const isEmpty = element.children.length === 0;\n\n const moveUp = () => {\n StepsCommands.moveUp(editor, { blockId: props.blockId, stepId: element.id });\n };\n\n const moveDown = () => {\n StepsCommands.moveDown(editor, { blockId: props.blockId, stepId: element.id });\n };\n\n const deleteStep = () => {\n StepsCommands.deleteStep(editor, { blockId: props.blockId, stepId: element.id });\n };\n\n return (\n <div className=\"prose dark:prose-invert\">\n <div className=\"relative group/component-wrapper group/step\">\n <div\n {...attributes}\n role=\"listitem\"\n className=\"step group/step relative flex items-start pb-5\">\n <div\n data-component-part=\"step-line\"\n contentEditable={false}\n className={cn(\n 'absolute w-px h-[calc(100%-2.75rem)] top-[2.75rem]',\n isLast\n ? 'bg-transparent bg-gradient-to-b from-border via-80% to-transparent'\n : 'bg-border/70',\n isLast && isEmpty && 'hidden',\n )}\n />\n\n <div\n data-component-part=\"step-number\"\n contentEditable={false}\n className=\"absolute ml-[-13px] py-2 pointer-events-none select-none\">\n <div\n className={cn(\n 'size-7 shrink-0 rounded-full',\n 'bg-muted',\n 'text-xs font-semibold',\n 'flex items-center justify-center',\n 'text-foreground',\n )}>\n {stepNumber}\n </div>\n </div>\n\n <div className=\"w-full overflow-hidden pl-8 pr-px\">{children}</div>\n </div>\n\n <div\n contentEditable={false}\n className={cn(\n 'z-20 absolute top-0 right-3 flex',\n 'transition-opacity duration-300',\n 'opacity-0 hover:opacity-100 group-hover/step:opacity-100',\n )}>\n {!editor.readOnly && (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\n 'size-8 shrink-0 rounded-lg',\n 'border border-transparent',\n 'hover:bg-muted',\n )}\n aria-label=\"Edit Step attributes\">\n <MoreVertical className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={moveUp} className=\"cursor-pointer\">\n <ArrowUp className=\"h-4 w-4\" /> Move up\n </DropdownMenuItem>\n <DropdownMenuItem onClick={moveDown} className=\"cursor-pointer\">\n <ArrowDown className=\"h-4 w-4\" /> Move down\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={deleteStep}\n className=\"text-destructive focus:text-destructive cursor-pointer\">\n <Trash2 className=\"h-4 w-4\" /> Delete step\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\n\nexport const StepListItemContent = (props: PluginElementRenderProps) => {\n const { attributes, children } = props;\n\n return (\n <div\n {...attributes}\n data-component-part=\"step-content\"\n className=\"my-2 prose dark:prose-invert\">\n {children}\n </div>\n );\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\n\nexport const StepListItemHeading = (props: PluginElementRenderProps) => {\n const { attributes, children } = props;\n\n return (\n <p\n {...attributes}\n data-component-part=\"step-title\"\n className=\"mt-2 font-semibold prose dark:prose-invert text-foreground\">\n {children}\n </p>\n );\n};\n","import { StepContainer } from './elements/steps-container';\nimport { StepList } from './elements/steps-list';\nimport { StepListItem } from './elements/steps-list-item';\nimport { StepListItemContent } from './elements/steps-list-item-content';\nimport { StepListItemHeading } from './elements/steps-list-item-heading';\n\nexport const StepsUI = {\n 'step-container': {\n render: StepContainer,\n },\n 'step-list': {\n render: StepList,\n },\n 'step-list-item': {\n render: StepListItem,\n },\n 'step-list-item-heading': {\n render: StepListItemHeading,\n },\n 'step-list-item-content': {\n render: StepListItemContent,\n },\n};\n"],"names":["_jsxs","_jsx","MoreVertical"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-of-contents.js","sources":["../src/table-of-contents/elements/table-of-contents.tsx","../src/table-of-contents/index.ts"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport { useYooptaEditor } from '@yoopta/editor';\nimport {\n type TableOfContentsEditor,\n type TableOfContentsElementProps,\n useTableOfContentsItems,\n} from '@yoopta/table-of-contents';\nimport { ChevronDown, ChevronUp } from 'lucide-react';\n\nimport { Button } from '../../ui/button';\nimport { Card, CardContent, CardHeader, CardTitle } from '../../ui/card';\nimport { ScrollArea } from '../../ui/scroll-area';\nimport { cn } from '../../utils';\n\nconst defaultTocProps: TableOfContentsElementProps = {\n depth: 3,\n title: 'Table of Contents',\n headingTypes: ['HeadingOne', 'HeadingTwo', 'HeadingThree'],\n showNumbers: false,\n collapsible: false,\n};\n\nexport const TableOfContents = (props: PluginElementRenderProps) => {\n const editor = useYooptaEditor();\n const { blockId, element } = props;\n const tocProps = (element.props ?? defaultTocProps) as TableOfContentsElementProps;\n const {\n depth = 3,\n title = defaultTocProps.title,\n headingTypes = defaultTocProps.headingTypes ?? [],\n showNumbers = true,\n collapsible = true,\n } = tocProps;\n\n const [isExpanded, setIsExpanded] = useState(true);\n const items = useTableOfContentsItems(editor as TableOfContentsEditor, blockId, {\n depth,\n headingTypes,\n });\n\n const handleItemClick = (targetBlockId: string) => {\n editor.focusBlock(targetBlockId);\n setTimeout(() => {\n const blockEl = document.querySelector(`[data-yoopta-block-id=\"${targetBlockId}\"]`);\n blockEl?.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }, 100);\n };\n\n const showContent = !collapsible || isExpanded;\n\n return (\n <div {...props.attributes} contentEditable={false}>\n <Card\n className=\"w-full overflow-hidden\"\n role=\"navigation\"\n aria-label={title ?? 'Table of contents'}>\n {title ? (\n <CardHeader className=\"pb-4 pt-4\">\n <div className=\"flex items-center gap-1\">\n <CardTitle className=\"text-base font-semibold\">{title}</CardTitle>\n {collapsible ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7 shrink-0\"\n aria-expanded={isExpanded}\n onClick={() => setIsExpanded((v) => !v)}>\n {isExpanded ? (\n <ChevronUp className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4\" />\n )}\n </Button>\n ) : null}\n </div>\n </CardHeader>\n ) : collapsible ? (\n <CardHeader className=\"pb-4 pt-4\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-7 w-7\"\n aria-expanded={isExpanded}\n onClick={() => setIsExpanded((v) => !v)}>\n {isExpanded ? (\n <ChevronUp className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4\" />\n )}\n </Button>\n </CardHeader>\n ) : null}\n {showContent ? (\n <CardContent className={cn('pt-0', title || collapsible ? 'pb-4' : 'py-4')}>\n {items.length > 0 ? (\n <ScrollArea className=\"max-h-[280px] pr-3 overflow-y-auto\">\n <ol\n className=\"space-y-1\"\n data-show-numbers={showNumbers}\n style={{\n listStyle: showNumbers ? 'decimal' : 'none',\n paddingLeft: showNumbers ? 20 : 0,\n }}>\n {items.map((item) => (\n <li\n key={item.id}\n data-level={item.level}\n className={cn(\n 'leading-tight',\n item.level === 1 && 'font-medium',\n item.level === 2 && 'pl-3 text-sm',\n item.level === 3 && 'pl-6 text-sm text-muted-foreground',\n )}>\n <Button\n type=\"button\"\n variant=\"link\"\n size=\"sm\"\n className=\"h-auto justify-start p-0 text-left font-inherit text-inherit no-underline hover:underline\"\n onClick={() => handleItemClick(item.id)}>\n {item.text || '(Untitled)'}\n </Button>\n </li>\n ))}\n </ol>\n </ScrollArea>\n ) : (\n <p className=\"text-sm text-muted-foreground\">No headings in this document.</p>\n )}\n </CardContent>\n ) : null}\n </Card>\n {props.children}\n </div>\n );\n};\n","import { TableOfContents } from './elements/table-of-contents';\n\nexport const TableOfContentsUI = {\n 'table-of-contents': {\n render: TableOfContents,\n },\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
package/dist/table.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"table.js","sources":["../../../../node_modules/lucide-react/src/icons/ellipsis.ts","../../../../node_modules/lucide-react/src/icons/eraser.ts","../../../../node_modules/lucide-react/src/icons/merge.ts","../../../../node_modules/lucide-react/src/icons/move-horizontal.ts","../../../../node_modules/lucide-react/src/icons/move-vertical.ts","../../../../node_modules/lucide-react/src/icons/paintbrush.ts","../../../../node_modules/lucide-react/src/icons/table-2.ts","../../../../node_modules/lucide-react/src/icons/type.ts","../src/ui/table.tsx","../src/table/components/column-resize-handles.tsx","../src/table/components/add-column-button.tsx","../src/table/components/add-row-button.tsx","../src/table/components/column-controls.tsx","../src/table/components/row-controls.tsx","../src/table/components/table-controls.tsx","../src/table/components/table-selection-overlay.tsx","../src/table/elements/table.tsx","../src/table/elements/table-data-cell.tsx","../src/table/elements/table-row.tsx","../src/table/index.ts"],"sourcesContent":["import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxIiAvPgogIDxjaXJjbGUgY3g9IjE5IiBjeT0iMTIiIHI9IjEiIC8+CiAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIxIiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/ellipsis\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 Ellipsis = createLucideIcon('Ellipsis', [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n]);\n\nexport default Ellipsis;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Eraser\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtNyAyMS00LjMtNC4zYy0xLTEtMS0yLjUgMC0zLjRsOS42LTkuNmMxLTEgMi41LTEgMy40IDBsNS42IDUuNmMxIDEgMSAyLjUgMCAzLjRMMTMgMjEiIC8+CiAgPHBhdGggZD0iTTIyIDIxSDciIC8+CiAgPHBhdGggZD0ibTUgMTEgOSA5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/eraser\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 Eraser = createLucideIcon('Eraser', [\n [\n 'path',\n {\n d: 'm7 21-4.3-4.3c-1-1-1-2.5 0-3.4l9.6-9.6c1-1 2.5-1 3.4 0l5.6 5.6c1 1 1 2.5 0 3.4L13 21',\n key: '182aya',\n },\n ],\n ['path', { d: 'M22 21H7', key: 't4ddhn' }],\n ['path', { d: 'm5 11 9 9', key: '1mo9qw' }],\n]);\n\nexport default Eraser;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Merge\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtOCA2IDQtNCA0IDQiIC8+CiAgPHBhdGggZD0iTTEyIDJ2MTAuM2E0IDQgMCAwIDEtMS4xNzIgMi44NzJMNCAyMiIgLz4KICA8cGF0aCBkPSJtMjAgMjItNS01IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/merge\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 Merge = createLucideIcon('Merge', [\n ['path', { d: 'm8 6 4-4 4 4', key: 'ybng9g' }],\n ['path', { d: 'M12 2v10.3a4 4 0 0 1-1.172 2.872L4 22', key: '1hyw0i' }],\n ['path', { d: 'm20 22-5-5', key: '1m27yz' }],\n]);\n\nexport default Merge;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name MoveHorizontal\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWxpbmUgcG9pbnRzPSIxOCA4IDIyIDEyIDE4IDE2IiAvPgogIDxwb2x5bGluZSBwb2ludHM9IjYgOCAyIDEyIDYgMTYiIC8+CiAgPGxpbmUgeDE9IjIiIHgyPSIyMiIgeTE9IjEyIiB5Mj0iMTIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/move-horizontal\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 MoveHorizontal = createLucideIcon('MoveHorizontal', [\n ['polyline', { points: '18 8 22 12 18 16', key: '1hqrds' }],\n ['polyline', { points: '6 8 2 12 6 16', key: 'f0ernq' }],\n ['line', { x1: '2', x2: '22', y1: '12', y2: '12', key: '1dnqot' }],\n]);\n\nexport default MoveHorizontal;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name MoveVertical\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWxpbmUgcG9pbnRzPSI4IDE4IDEyIDIyIDE2IDE4IiAvPgogIDxwb2x5bGluZSBwb2ludHM9IjggNiAxMiAyIDE2IDYiIC8+CiAgPGxpbmUgeDE9IjEyIiB4Mj0iMTIiIHkxPSIyIiB5Mj0iMjIiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/move-vertical\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 MoveVertical = createLucideIcon('MoveVertical', [\n ['polyline', { points: '8 18 12 22 16 18', key: '1uutw3' }],\n ['polyline', { points: '8 6 12 2 16 6', key: 'd60sxy' }],\n ['line', { x1: '12', x2: '12', y1: '2', y2: '22', key: '7eqyqh' }],\n]);\n\nexport default MoveVertical;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Paintbrush\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTguMzcgMi42MyAxNCA3bC0xLjU5LTEuNTlhMiAyIDAgMCAwLTIuODIgMEw4IDdsOSA5IDEuNTktMS41OWEyIDIgMCAwIDAgMC0yLjgyTDE3IDEwbDQuMzctNC4zN2EyLjEyIDIuMTIgMCAxIDAtMy0zWiIgLz4KICA8cGF0aCBkPSJNOSA4Yy0yIDMtNCAzLjUtNyA0bDggMTBjMi0xIDYtNSA2LTciIC8+CiAgPHBhdGggZD0iTTE0LjUgMTcuNSA0LjUgMTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/paintbrush\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 Paintbrush = createLucideIcon('Paintbrush', [\n [\n 'path',\n {\n d: 'M18.37 2.63 14 7l-1.59-1.59a2 2 0 0 0-2.82 0L8 7l9 9 1.59-1.59a2 2 0 0 0 0-2.82L17 10l4.37-4.37a2.12 2.12 0 1 0-3-3Z',\n key: 'm6k5sh',\n },\n ],\n ['path', { d: 'M9 8c-2 3-4 3.5-7 4l8 10c2-1 6-5 6-7', key: 'arzq70' }],\n ['path', { d: 'M14.5 17.5 4.5 15', key: 's7fvrz' }],\n]);\n\nexport default Paintbrush;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Table2\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNOSAzSDVhMiAyIDAgMCAwLTIgMnY0bTYtNmgxMGEyIDIgMCAwIDEgMiAydjRNOSAzdjE4bTAgMGgxMGEyIDIgMCAwIDAgMi0yVjlNOSAyMUg1YTIgMiAwIDAgMS0yLTJWOW0wIDBoMTgiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/table-2\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 Table2 = createLucideIcon('Table2', [\n [\n 'path',\n {\n d: 'M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18',\n key: 'gugj83',\n },\n ],\n]);\n\nexport default Table2;\n","import createLucideIcon from '../createLucideIcon';\n\n/**\n * @component @name Type\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cG9seWxpbmUgcG9pbnRzPSI0IDcgNCA0IDIwIDQgMjAgNyIgLz4KICA8bGluZSB4MT0iOSIgeDI9IjE1IiB5MT0iMjAiIHkyPSIyMCIgLz4KICA8bGluZSB4MT0iMTIiIHgyPSIxMiIgeTE9IjQiIHkyPSIyMCIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/type\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 Type = createLucideIcon('Type', [\n ['polyline', { points: '4 7 4 4 20 4 20 7', key: '1nosan' }],\n ['line', { x1: '9', x2: '15', y1: '20', y2: '20', key: 'swin9y' }],\n ['line', { x1: '12', x2: '12', y1: '4', y2: '20', key: '1tx1rr' }],\n]);\n\nexport default Type;\n","import { forwardRef } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../utils';\n\nconst Table = forwardRef<HTMLTableElement, ComponentProps<'table'>>(\n ({ className, ...props }, ref) => (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto rounded-md\">\n <table\n ref={ref}\n data-slot=\"table\"\n className={cn('caption-bottom text-sm table-fixed border-collapse', className)}\n {...props}\n />\n </div>\n ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = forwardRef<HTMLTableSectionElement, ComponentProps<'thead'>>(\n ({ className, ...props }, ref) => (\n <thead\n ref={ref}\n data-slot=\"table-header\"\n className={cn('[&_tr]:border-b', className)}\n {...props}\n />\n ),\n);\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = forwardRef<HTMLTableSectionElement, ComponentProps<'tbody'>>(\n ({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n data-slot=\"table-body\"\n className={cn('[&_tr:first-child]:border-t [&_tr]:border-b [&_tr]:border-border', className)}\n {...props}\n />\n ),\n);\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = forwardRef<HTMLTableSectionElement, ComponentProps<'tfoot'>>(\n ({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n data-slot=\"table-footer\"\n className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n ),\n);\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = forwardRef<HTMLTableRowElement, ComponentProps<'tr'>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n data-slot=\"table-row\"\n className={cn(\n 'hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors',\n className,\n )}\n {...props}\n />\n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = forwardRef<HTMLTableCellElement, ComponentProps<'th'>>(\n ({ className, ...props }, ref) => (\n <th\n ref={ref}\n data-slot=\"table-head\"\n className={cn(\n 'border-border border-r last:border-r-0 text-foreground h-10 px-2 text-left font-medium [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] bg-muted/50',\n className,\n )}\n {...props}\n />\n ),\n);\nTableHead.displayName = 'TableHead';\n\nconst TableCell = forwardRef<HTMLTableCellElement, ComponentProps<'td'>>(\n ({ className, ...props }, ref) => (\n <td\n ref={ref}\n data-slot=\"table-cell\"\n className={cn(\n 'border-border border-r last:border-r-0 p-2 [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n ),\n);\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = forwardRef<HTMLTableCaptionElement, ComponentProps<'caption'>>(\n ({ className, ...props }, ref) => (\n <caption\n ref={ref}\n data-slot=\"table-caption\"\n className={cn('text-muted-foreground mt-4 text-sm', className)}\n {...props}\n />\n ),\n);\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useYooptaEditor } from '@yoopta/editor';\nimport { TableCommands } from '@yoopta/table';\nimport { Portal } from '@yoopta/ui/portal';\n\ntype ColumnResizeHandlesProps = {\n blockId: string;\n};\n\ntype ColumnInfo = {\n index: number;\n left: number;\n width: number;\n};\n\nconst MIN_COLUMN_WIDTH = 50;\n\nexport const ColumnResizeHandles = ({ blockId }: ColumnResizeHandlesProps) => {\n const editor = useYooptaEditor();\n\n const [tableRect, setTableRect] = useState<DOMRect | null>(null);\n const [isResizing, setIsResizing] = useState(false);\n const [resizingColumnIndex, setResizingColumnIndex] = useState<number | null>(null);\n\n // Local widths for smooth resizing (not committed to Slate yet)\n const [localWidths, setLocalWidths] = useState<number[]>([]);\n\n // Refs for drag operation (to avoid stale closure issues)\n const startXRef = useRef<number>(0);\n const startWidthRef = useRef<number>(0);\n const currentWidthsRef = useRef<number[]>([]);\n const resizingIndexRef = useRef<number | null>(null);\n const tableRectRef = useRef<DOMRect | null>(null);\n const colGroupRef = useRef<HTMLElement | null>(null);\n\n // Keep refs in sync\n useEffect(() => {\n currentWidthsRef.current = localWidths;\n }, [localWidths]);\n\n useEffect(() => {\n tableRectRef.current = tableRect;\n }, [tableRect]);\n\n useEffect(() => {\n resizingIndexRef.current = resizingColumnIndex;\n }, [resizingColumnIndex]);\n\n // Get column positions and widths\n const updateColumnInfo = useCallback(() => {\n const tableContainer = document.querySelector(\n `[data-yoopta-block-id=\"${blockId}\"][data-table-container]`,\n ) as HTMLElement;\n\n if (!tableContainer) return;\n\n const tableElement = tableContainer.querySelector('table');\n if (!tableElement) return;\n\n const rect = tableElement.getBoundingClientRect();\n setTableRect(rect);\n\n // Get colgroup for direct DOM manipulation during resize\n const colGroup = tableElement.querySelector('colgroup');\n colGroupRef.current = colGroup;\n\n // Get column widths from colgroup or first row cells\n const colElements = tableElement.querySelectorAll('colgroup col');\n const firstRow = tableElement.querySelector('tr');\n\n if (colElements.length > 0) {\n const columnInfos: ColumnInfo[] = [];\n const widths: number[] = [];\n let accumulatedLeft = rect.left;\n\n colElements.forEach((col, index) => {\n const style = window.getComputedStyle(col);\n const width = parseInt(style.width, 10) || 200;\n widths.push(width);\n\n columnInfos.push({\n index,\n left: accumulatedLeft,\n width,\n });\n\n accumulatedLeft += width;\n });\n\n // setColumns(columnInfos);\n setLocalWidths(widths);\n } else if (firstRow) {\n // Fallback to measuring cells\n const cells = firstRow.querySelectorAll('td, th');\n const columnInfos: ColumnInfo[] = [];\n const widths: number[] = [];\n\n cells.forEach((cell, index) => {\n const cellRect = cell.getBoundingClientRect();\n widths.push(cellRect.width);\n columnInfos.push({\n index,\n left: cellRect.left,\n width: cellRect.width,\n });\n });\n\n // setColumns(columnInfos);\n setLocalWidths(widths);\n }\n }, [blockId]);\n\n useEffect(() => {\n updateColumnInfo();\n\n const tableContainer = document.querySelector(\n `[data-yoopta-block-id=\"${blockId}\"][data-table-container]`,\n ) as HTMLElement;\n\n if (!tableContainer) return;\n\n const tableElement = tableContainer.querySelector('table');\n if (!tableElement) return;\n\n const resizeObserver = new ResizeObserver(() => {\n if (!isResizing) {\n updateColumnInfo();\n }\n });\n resizeObserver.observe(tableElement);\n\n // Also observe mutations for when columns are added/removed\n const mutationObserver = new MutationObserver(() => {\n if (!isResizing) {\n updateColumnInfo();\n }\n });\n mutationObserver.observe(tableElement, { childList: true, subtree: true });\n\n const handleScroll = () => {\n if (!isResizing) {\n updateColumnInfo();\n }\n };\n\n window.addEventListener('scroll', handleScroll, true);\n\n return () => {\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n window.removeEventListener('scroll', handleScroll, true);\n };\n }, [blockId, updateColumnInfo, isResizing]);\n\n // Apply local widths directly to DOM during resize for smooth feedback\n const applyWidthsToDOM = useCallback((widths: number[]) => {\n if (!colGroupRef.current) return;\n\n const colElements = colGroupRef.current.querySelectorAll('col');\n colElements.forEach((col, index) => {\n if (widths[index] !== undefined) {\n (col as HTMLElement).style.width = `${widths[index]}px`;\n }\n });\n }, []);\n\n // Recalculate column positions based on widths\n const getColumnsFromWidths = useCallback((widths: number[], rect: DOMRect | null): ColumnInfo[] => {\n if (!rect || widths.length === 0) return [];\n\n let accumulatedLeft = rect.left;\n return widths.map((width, index) => {\n const col: ColumnInfo = {\n index,\n left: accumulatedLeft,\n width,\n };\n accumulatedLeft += width;\n return col;\n });\n }, []);\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent, columnIndex: number) => {\n e.preventDefault();\n e.stopPropagation();\n\n const width = localWidths[columnIndex];\n if (width === undefined) return;\n\n setIsResizing(true);\n setResizingColumnIndex(columnIndex);\n startXRef.current = e.clientX;\n startWidthRef.current = width;\n\n document.body.classList.add('resizing-column');\n },\n [localWidths],\n );\n\n // Use refs in mouse move for latest values\n const handleMouseMove = useCallback((e: MouseEvent) => {\n const columnIndex = resizingIndexRef.current;\n if (columnIndex === null) return;\n\n const deltaX = e.clientX - startXRef.current;\n const newWidth = Math.max(MIN_COLUMN_WIDTH, startWidthRef.current + deltaX);\n\n // Update local widths using ref to get current values\n const newWidths = [...currentWidthsRef.current];\n newWidths[columnIndex] = newWidth;\n\n // Update state for re-render (handle positions)\n setLocalWidths(newWidths);\n\n // Apply directly to DOM for smooth visual feedback\n applyWidthsToDOM(newWidths);\n }, [applyWidthsToDOM]);\n\n const handleMouseUp = useCallback(() => {\n const columnIndex = resizingIndexRef.current;\n const widths = currentWidthsRef.current;\n\n if (columnIndex !== null && widths[columnIndex] !== undefined) {\n // Commit the final width to Slate\n TableCommands.setColumnWidth(editor, blockId, columnIndex, widths[columnIndex]);\n }\n\n setIsResizing(false);\n setResizingColumnIndex(null);\n document.body.classList.remove('resizing-column');\n\n // Update column info after commit\n setTimeout(updateColumnInfo, 50);\n }, [editor, blockId, updateColumnInfo]);\n\n // Attach global mouse events for dragging\n useEffect(() => {\n if (isResizing) {\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }\n }, [isResizing, handleMouseMove, handleMouseUp]);\n\n if (!tableRect || localWidths.length === 0) return null;\n\n // Calculate display columns from local widths\n const displayColumns = getColumnsFromWidths(localWidths, tableRect);\n\n // Render resize handles between columns (not after the last one)\n const resizeHandles = displayColumns.slice(0, -1).map((column) => {\n const handleLeft = column.left + column.width - 3; // Position at right edge of column\n\n return (\n <div\n key={`resize-${column.index}`}\n className=\"column-resize-handle\"\n style={{\n position: 'fixed',\n left: `${handleLeft}px`,\n top: `${tableRect.top}px`,\n width: '6px',\n height: `${tableRect.height}px`,\n cursor: 'col-resize',\n zIndex: 50,\n backgroundColor:\n isResizing && resizingColumnIndex === column.index\n ? 'hsl(var(--primary))'\n : 'transparent',\n }}\n onMouseDown={(e) => handleMouseDown(e, column.index)}\n onMouseEnter={(e) => {\n if (!isResizing) {\n (e.target as HTMLElement).style.backgroundColor = 'hsl(var(--primary) / 0.3)';\n }\n }}\n onMouseLeave={(e) => {\n if (!isResizing) {\n (e.target as HTMLElement).style.backgroundColor = 'transparent';\n }\n }}\n />\n );\n });\n\n return (<Portal id='column-resize-handles-container'>\n <div\n className=\"column-resize-handles-container\"\n style={{ pointerEvents: isResizing ? 'auto' : undefined }}\n >\n {resizeHandles}\n </div>\n </Portal>)\n};\n","import { useCallback } from 'react';\nimport { useYooptaEditor } from '@yoopta/editor';\nimport { TableCommands } from '@yoopta/table';\nimport { Portal } from '@yoopta/ui/portal';\nimport { Plus } from 'lucide-react';\n\nimport { Button } from '../../ui/button';\n\ntype AddColumnButtonProps = {\n blockId: string;\n totalColumns: number;\n position: {\n left: number;\n top: number;\n height: number;\n };\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n};\n\nexport const AddColumnButton = ({\n blockId,\n totalColumns,\n position,\n onMouseEnter,\n onMouseLeave,\n}: AddColumnButtonProps) => {\n const editor = useYooptaEditor();\n\n const handleAddColumn = useCallback(() => {\n // Path to the last cell in first row: [table, firstRow, lastCell, textNode]\n const lastColumnCellPath = [0, 0, totalColumns - 1, 0];\n TableCommands.insertTableColumn(editor, blockId, {\n // @ts-expect-error - Path type mismatch with Location\n path: lastColumnCellPath,\n insertMode: 'after',\n });\n }, [editor, blockId, totalColumns]);\n\n return (\n <Portal id={`table-add-column-button-${blockId}`}>\n <div\n className=\"fixed z-[9999] pointer-events-auto\"\n style={{\n left: `${position.left + 4}px`,\n top: `${position.top}px`,\n width: '18px',\n height: `${position.height}px`,\n }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"p-0 h-full w-full bg-background/95 hover:bg-accent border border-border/50 shadow-sm rounded-md transition-all hover:shadow-md flex items-center justify-center text-muted-foreground hover:text-foreground\"\n onClick={handleAddColumn}\n onMouseDown={(e) => e.preventDefault()}>\n <Plus className=\"h-3 w-3\" />\n </Button>\n </div>\n </Portal>\n );\n};\n","import { useCallback } from 'react';\nimport { useYooptaEditor } from '@yoopta/editor';\nimport { TableCommands } from '@yoopta/table';\nimport { Portal } from '@yoopta/ui/portal';\nimport { Plus } from 'lucide-react';\n\nimport { Button } from '../../ui/button';\n\ntype AddRowButtonProps = {\n blockId: string;\n totalRows: number;\n position: {\n left: number;\n top: number;\n width: number;\n };\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n};\n\nexport const AddRowButton = ({\n blockId,\n totalRows,\n position,\n onMouseEnter,\n onMouseLeave,\n}: AddRowButtonProps) => {\n const editor = useYooptaEditor();\n\n const handleAddRow = useCallback(() => {\n // Path to any cell in the last row: [table, lastRow, firstCell, textNode]\n const lastRowCellPath = [0, totalRows - 1, 0, 0];\n TableCommands.insertTableRow(editor, blockId, {\n // @ts-expect-error - Path type mismatch with Location\n path: lastRowCellPath,\n insertMode: 'after',\n });\n }, [editor, blockId, totalRows]);\n\n return (\n <Portal id={`table-add-row-button-${blockId}`}>\n <div\n className=\"fixed z-[9999] pointer-events-auto\"\n style={{\n left: `${position.left}px`,\n top: `${position.top + 4}px`,\n width: `${position.width}px`,\n height: '18px',\n }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-full w-full bg-background/95 hover:bg-accent border border-border/50 shadow-sm rounded-md transition-all hover:shadow-md flex items-center justify-center gap-1.5 text-muted-foreground hover:text-foreground\"\n onClick={handleAddRow}\n onMouseDown={(e) => e.preventDefault()}>\n <Plus className=\"h-3 w-3\" />\n </Button>\n </div>\n </Portal>\n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useYooptaEditor } from '@yoopta/editor';\nimport { TableCommands } from '@yoopta/table';\nimport { Portal } from '@yoopta/ui/portal';\nimport { ArrowLeft, ArrowRight, MoreHorizontal, Table2Icon, Trash2 } from 'lucide-react';\n\nimport { Button } from '../../ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu';\n\ntype ColumnControlsProps = {\n blockId: string;\n colIndex: number;\n position: {\n left: number;\n top: number;\n width: number;\n };\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n};\n\nexport const ColumnControls = ({\n blockId,\n colIndex,\n position,\n onMouseEnter,\n onMouseLeave,\n}: ColumnControlsProps) => {\n const editor = useYooptaEditor();\n\n // Create a cell path for the target column: [table, firstRow, column, textNode]\n const cellPath = useMemo(() => [0, 0, colIndex, 0], [colIndex]);\n\n const handleInsertColumnLeft = useCallback(() => {\n TableCommands.insertTableColumn(editor, blockId, {\n // @ts-expect-error - Path type mismatch with Location\n path: cellPath,\n insertMode: 'before',\n });\n }, [editor, blockId, cellPath]);\n\n const handleInsertColumnRight = useCallback(() => {\n TableCommands.insertTableColumn(editor, blockId, {\n // @ts-expect-error - Path type mismatch with Location\n path: cellPath,\n insertMode: 'after',\n });\n }, [editor, blockId, cellPath]);\n\n const handleDeleteColumn = useCallback(() => {\n TableCommands.deleteTableColumn(editor, blockId, {\n // @ts-expect-error - Path type mismatch with Location\n path: cellPath,\n });\n }, [editor, blockId, cellPath]);\n\n const handleToggleHeaderColumn = useCallback(() => {\n TableCommands.toggleHeaderColumn(editor, blockId);\n }, [editor, blockId]);\n\n return (\n <Portal id={`table-column-controls-${blockId}-${colIndex}`}>\n <div\n className=\"fixed z-[9999] pointer-events-auto\"\n style={{\n left: `${position.left}px`,\n top: `${position.top + 4}px`,\n width: `${position.width}px`,\n height: '18px',\n }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-full w-full bg-background/95 hover:bg-accent border border-border/50 shadow-sm rounded-md p-0 transition-all hover:shadow-md\"\n onMouseDown={(e) => e.preventDefault()}>\n <MoreHorizontal className=\"h-3 w-3 text-muted-foreground\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" side=\"top\" className=\"w-48\">\n {colIndex === 0 && (\n <>\n <DropdownMenuItem onClick={handleToggleHeaderColumn}>\n <Table2Icon className=\"mr-2 h-4 w-4\" />\n Header column\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n </>\n )}\n <DropdownMenuItem onClick={handleInsertColumnLeft}>\n <ArrowLeft className=\"mr-2 h-4 w-4\" />\n Insert column left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={handleInsertColumnRight}>\n <ArrowRight className=\"mr-2 h-4 w-4\" />\n Insert column right\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={handleDeleteColumn}\n className=\"text-destructive focus:text-destructive\">\n <Trash2 className=\"mr-2 h-4 w-4\" />\n Delete column\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </Portal>\n );\n};\n","import { useCallback, useMemo } from 'react';\nimport { useYooptaEditor } from '@yoopta/editor';\nimport { TableCommands } from '@yoopta/table';\nimport { Portal } from '@yoopta/ui/portal';\nimport { ArrowDown, ArrowUp, MoreVertical, Table2Icon, Trash2 } from 'lucide-react';\n\nimport { Button } from '../../ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu';\n\ntype RowControlsProps = {\n blockId: string;\n rowIndex: number;\n position: {\n left: number;\n top: number;\n height: number;\n };\n onMouseEnter: () => void;\n onMouseLeave: () => void;\n};\n\nexport const RowControls = ({\n blockId,\n rowIndex,\n position,\n onMouseEnter,\n onMouseLeave,\n}: RowControlsProps) => {\n const editor = useYooptaEditor();\n\n // Create a cell path for the target row: [table, row, firstCell, textNode]\n const cellPath = useMemo(() => [0, rowIndex, 0, 0], [rowIndex]);\n\n const insertRowAbove = useCallback(() => {\n TableCommands.insertTableRow(editor, blockId, {\n // @ts-expect-error - Path type mismatch with Location\n path: cellPath,\n insertMode: 'before',\n });\n }, [editor, blockId, cellPath]);\n\n const insertRowBelow = useCallback(() => {\n TableCommands.insertTableRow(editor, blockId, {\n // @ts-expect-error - Path type mismatch with Location\n path: cellPath,\n insertMode: 'after',\n });\n }, [editor, blockId, cellPath]);\n\n const deleteRow = useCallback(() => {\n TableCommands.deleteTableRow(editor, blockId, {\n // @ts-expect-error - Path type mismatch with Location\n path: cellPath,\n });\n }, [editor, blockId, cellPath]);\n\n const toggleHeaderRow = useCallback(() => {\n TableCommands.toggleHeaderRow(editor, blockId);\n }, [editor, blockId]);\n\n return (\n <Portal id={`table-row-controls-${blockId}-${rowIndex}`}>\n <div\n className=\"fixed z-[9998] pointer-events-auto\"\n style={{\n left: `${position.left + 20}px`,\n top: `${position.top}px`,\n width: '18px',\n height: `${position.height}px`,\n }}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-full w-full bg-background/95 hover:bg-accent border border-border/50 shadow-sm rounded-md p-0 transition-all hover:shadow-md flex items-center justify-center\"\n onMouseDown={(e) => e.preventDefault()}>\n <MoreVertical className=\"h-3 w-3 text-muted-foreground\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" side=\"left\" className=\"w-48\">\n {rowIndex === 0 && (\n <>\n <DropdownMenuItem onClick={toggleHeaderRow}>\n <Table2Icon className=\"mr-2 h-4 w-4\" />\n Header row\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n </>\n )}\n <DropdownMenuItem onClick={insertRowAbove}>\n <ArrowUp className=\"mr-2 h-4 w-4\" />\n Insert row above\n </DropdownMenuItem>\n <DropdownMenuItem onClick={insertRowBelow}>\n <ArrowDown className=\"mr-2 h-4 w-4\" />\n Insert row below\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onClick={deleteRow}\n className=\"text-destructive focus:text-destructive\">\n <Trash2 className=\"mr-2 h-4 w-4\" />\n Delete row\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </Portal>\n );\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Blocks, useYooptaEditor } from '@yoopta/editor';\nimport type { SlateElement } from '@yoopta/editor';\nimport { type TableCellElement } from '@yoopta/table';\nimport { Editor, Element } from 'slate';\n\nimport { AddColumnButton } from './add-column-button';\nimport { AddRowButton } from './add-row-button';\nimport { ColumnControls } from './column-controls';\nimport { RowControls } from './row-controls';\n\ntype TableControlsProps = {\n blockId: string;\n};\n\ntype HoveredCellInfo = {\n rowIndex: number;\n colIndex: number;\n cellElementId: string;\n totalRows: number;\n totalColumns: number;\n};\n\ntype ControlPositions = {\n rowControls: { left: number; top: number; height: number } | null;\n columnControls: { left: number; top: number; width: number } | null;\n addRowButton: { left: number; top: number; width: number } | null;\n addColumnButton: { left: number; top: number; height: number } | null;\n};\n\nconst HIDE_DELAY = 150;\n\nexport const TableControls = ({ blockId }: TableControlsProps) => {\n const editor = useYooptaEditor();\n const slate = useMemo(() => Blocks.getBlockSlate(editor, { id: blockId }), [blockId, editor]);\n\n // Store cell info (indices, not rects) - rects are calculated on demand\n const [hoveredCellInfo, setHoveredCellInfo] = useState<HoveredCellInfo | null>(null);\n const [isVisible, setIsVisible] = useState(false);\n const [positions, setPositions] = useState<ControlPositions>({\n rowControls: null,\n columnControls: null,\n addRowButton: null,\n addColumnButton: null,\n });\n\n // Refs for hover tracking to avoid stale closures\n const isOverTableRef = useRef(false);\n const isOverControlsRef = useRef(false);\n const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const hoveredCellInfoRef = useRef<HoveredCellInfo | null>(null);\n\n // Keep ref in sync with state\n hoveredCellInfoRef.current = hoveredCellInfo;\n\n // Calculate positions from stored cell info\n const recalculatePositions = useCallback(() => {\n const cellInfo = hoveredCellInfoRef.current;\n if (!cellInfo) {\n setPositions({\n rowControls: null,\n columnControls: null,\n addRowButton: null,\n addColumnButton: null,\n });\n return;\n }\n\n const tableContainer = document.querySelector(\n `[data-yoopta-block-id=\"${blockId}\"][data-table-container]`,\n ) as HTMLElement;\n if (!tableContainer) return;\n\n const tableElement = tableContainer.querySelector('table');\n if (!tableElement) return;\n\n const tableRect = tableElement.getBoundingClientRect();\n const tableRows = Array.from(tableContainer.querySelectorAll('tr'));\n\n // Get current row element\n const currentRow = tableRows[cellInfo.rowIndex] as HTMLElement | undefined;\n if (!currentRow) return;\n\n // Get cells in current row for row height calculation\n const rowCells = Array.from(\n currentRow.querySelectorAll('[data-element-type=\"table-data-cell\"]'),\n ) as HTMLElement[];\n\n if (rowCells.length === 0) return;\n\n const rowCellRects = rowCells.map((cell) => cell.getBoundingClientRect());\n const rowTop = Math.min(...rowCellRects.map((r) => r.top));\n const rowBottom = Math.max(...rowCellRects.map((r) => r.bottom));\n const rowLeft = Math.min(...rowCellRects.map((r) => r.left));\n const rowRight = Math.max(...rowCellRects.map((r) => r.right));\n const rowHeight = rowBottom - rowTop;\n\n const columnCells: DOMRect[] = [];\n\n tableRows.forEach((row) => {\n const cells = Array.from(\n row.querySelectorAll('[data-element-type=\"table-data-cell\"]'),\n ) as HTMLElement[];\n if (cells[cellInfo.colIndex]) {\n columnCells.push(cells[cellInfo.colIndex].getBoundingClientRect());\n }\n });\n\n const columnLeft = columnCells.length > 0 ? Math.min(...columnCells.map((r) => r.left)) : rowLeft;\n const columnRight = columnCells.length > 0 ? Math.max(...columnCells.map((r) => r.right)) : rowRight;\n const columnWidth = columnRight - columnLeft;\n const columnTop = columnCells.length > 0 ? Math.min(...columnCells.map((r) => r.top)) : rowTop;\n\n const isLastRow = cellInfo.rowIndex === cellInfo.totalRows - 1;\n const isLastColumn = cellInfo.colIndex === cellInfo.totalColumns - 1;\n\n setPositions({\n rowControls: {\n left: Math.max(0, rowLeft - 32),\n top: rowTop,\n height: rowHeight,\n },\n columnControls: {\n left: columnLeft,\n top: columnTop - 32,\n width: columnWidth,\n },\n addRowButton: isLastRow\n ? {\n left: tableRect.left,\n top: tableRect.bottom,\n width: tableRect.width,\n }\n : null,\n addColumnButton: isLastColumn\n ? {\n left: tableRect.right,\n top: tableRect.top,\n height: tableRect.height,\n }\n : null,\n });\n }, [blockId]);\n\n // Recalculate positions on scroll/resize\n useEffect(() => {\n if (!hoveredCellInfo || !isVisible) return;\n\n const handleScrollOrResize = () => {\n recalculatePositions();\n };\n\n window.addEventListener('scroll', handleScrollOrResize, true);\n window.addEventListener('resize', handleScrollOrResize);\n\n // Initial calculation\n recalculatePositions();\n\n return () => {\n window.removeEventListener('scroll', handleScrollOrResize, true);\n window.removeEventListener('resize', handleScrollOrResize);\n };\n }, [hoveredCellInfo, isVisible, recalculatePositions]);\n\n // Clear timeout helper\n const clearHideTimeout = useCallback(() => {\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n }, []);\n\n // Schedule hide helper\n const scheduleHide = useCallback(() => {\n clearHideTimeout();\n hideTimeoutRef.current = setTimeout(() => {\n if (!isOverTableRef.current && !isOverControlsRef.current) {\n setIsVisible(false);\n setHoveredCellInfo(null);\n }\n }, HIDE_DELAY);\n }, [clearHideTimeout]);\n\n // Find cell info from slate by element ID\n const findCellInfo = useCallback(\n (elementId: string): HoveredCellInfo | null => {\n if (!slate) return null;\n\n const cellEntries = Array.from(\n Editor.nodes<TableCellElement>(slate, {\n at: [0],\n match: (n) => {\n if (!Element.isElement(n)) return false;\n const element = n as TableCellElement;\n return element.type === 'table-data-cell' && 'id' in element && element.id === elementId;\n },\n mode: 'all',\n }),\n );\n\n if (cellEntries.length === 0) return null;\n\n const [, path] = cellEntries[0];\n const rowIndex = path[path.length - 2];\n const colIndex = path[path.length - 1];\n\n // Get table structure info\n const tableEntries = Array.from(\n Editor.nodes<SlateElement>(slate, {\n at: [0],\n match: (n) => Element.isElement(n) && (n as SlateElement).type === 'table',\n mode: 'lowest',\n }),\n );\n\n if (tableEntries.length === 0) return null;\n\n const [tableNode] = tableEntries[0];\n if (!Element.isElement(tableNode)) return null;\n\n const totalRows = tableNode.children.length;\n const firstRowNode = tableNode.children[0];\n if (!Element.isElement(firstRowNode)) return null;\n\n const totalColumns = firstRowNode.children.length;\n\n return {\n rowIndex,\n colIndex,\n cellElementId: elementId,\n totalRows,\n totalColumns,\n };\n },\n [slate],\n );\n\n // Mouse move handler\n useEffect(() => {\n const tableContainer = document.querySelector(\n `[data-yoopta-block-id=\"${blockId}\"][data-table-container]`,\n );\n\n if (!tableContainer || !slate) return;\n\n const handleMouseMove = (e: Event) => {\n clearHideTimeout();\n isOverTableRef.current = true;\n\n const mouseEvent = e as MouseEvent;\n const target = mouseEvent.target as HTMLElement;\n const cellElement = target.closest('[data-element-type=\"table-data-cell\"]') as HTMLElement;\n\n if (!cellElement) return;\n\n const elementId = cellElement.getAttribute('data-yoopta-element-id');\n if (!elementId) return;\n\n // Only update if cell changed\n const currentInfo = hoveredCellInfoRef.current;\n if (currentInfo?.cellElementId === elementId) {\n setIsVisible(true);\n return;\n }\n\n const cellInfo = findCellInfo(elementId);\n if (cellInfo) {\n setHoveredCellInfo(cellInfo);\n setIsVisible(true);\n }\n };\n\n const handleMouseLeave = () => {\n isOverTableRef.current = false;\n scheduleHide();\n };\n\n tableContainer.addEventListener('mousemove', handleMouseMove as EventListener);\n tableContainer.addEventListener('mouseleave', handleMouseLeave);\n\n return () => {\n clearHideTimeout();\n tableContainer.removeEventListener('mousemove', handleMouseMove as EventListener);\n tableContainer.removeEventListener('mouseleave', handleMouseLeave);\n };\n }, [blockId, slate, findCellInfo, clearHideTimeout, scheduleHide]);\n\n // Control hover handlers\n const handleControlMouseEnter = useCallback(() => {\n clearHideTimeout();\n isOverControlsRef.current = true;\n }, [clearHideTimeout]);\n\n const handleControlMouseLeave = useCallback(() => {\n isOverControlsRef.current = false;\n scheduleHide();\n }, [scheduleHide]);\n\n // Don't render if not visible or no cell info\n if (!isVisible || !hoveredCellInfo) return null;\n\n return (\n <>\n {positions.rowControls && (\n <RowControls\n blockId={blockId}\n rowIndex={hoveredCellInfo.rowIndex}\n position={positions.rowControls}\n onMouseEnter={handleControlMouseEnter}\n onMouseLeave={handleControlMouseLeave}\n />\n )}\n\n {positions.columnControls && (\n <ColumnControls\n blockId={blockId}\n colIndex={hoveredCellInfo.colIndex}\n position={positions.columnControls}\n onMouseEnter={handleControlMouseEnter}\n onMouseLeave={handleControlMouseLeave}\n />\n )}\n\n {positions.addColumnButton && (\n <AddColumnButton\n blockId={blockId}\n totalColumns={hoveredCellInfo.totalColumns}\n position={positions.addColumnButton}\n onMouseEnter={handleControlMouseEnter}\n onMouseLeave={handleControlMouseLeave}\n />\n )}\n\n {positions.addRowButton && (\n <AddRowButton\n blockId={blockId}\n totalRows={hoveredCellInfo.totalRows}\n position={positions.addRowButton}\n onMouseEnter={handleControlMouseEnter}\n onMouseLeave={handleControlMouseLeave}\n />\n )}\n </>\n );\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { Blocks, useYooptaEditor } from '@yoopta/editor';\nimport { TABLE_CELLS_IN_SELECTION, TableCommands } from '@yoopta/table';\nimport type { TableCellElement } from '@yoopta/table';\nimport {\n ChevronDown,\n Eraser,\n Merge,\n MoreVertical,\n MoveHorizontal,\n MoveVertical,\n Paintbrush,\n Type,\n} from 'lucide-react';\nimport type { Path } from 'slate';\n\nimport { Button } from '../../ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n} from '../../ui/dropdown-menu';\nimport { Label } from '../../ui/label';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../ui/popover';\nimport { Separator } from '../../ui/separator';\n\ntype TableSelectionOverlayProps = {\n blockId: string;\n};\n\nconst BG_COLORS = [\n { label: 'None', value: 'transparent', color: 'transparent' },\n { label: 'Gray', value: 'hsl(var(--muted))', color: 'hsl(var(--muted))' },\n { label: 'Red', value: 'hsl(0 70% 95%)', color: 'hsl(0 70% 95%)' },\n { label: 'Orange', value: 'hsl(30 70% 95%)', color: 'hsl(30 70% 95%)' },\n { label: 'Yellow', value: 'hsl(60 70% 95%)', color: 'hsl(60 70% 95%)' },\n { label: 'Green', value: 'hsl(120 70% 95%)', color: 'hsl(120 70% 95%)' },\n { label: 'Blue', value: 'hsl(210 70% 95%)', color: 'hsl(210 70% 95%)' },\n { label: 'Purple', value: 'hsl(270 70% 95%)', color: 'hsl(270 70% 95%)' },\n];\n\nconst TEXT_COLORS = [\n { label: 'Default', value: 'inherit', color: 'currentColor' },\n { label: 'Gray', value: 'hsl(var(--muted-foreground))', color: 'hsl(var(--muted-foreground))' },\n { label: 'Red', value: 'hsl(0 70% 50%)', color: 'hsl(0 70% 50%)' },\n { label: 'Orange', value: 'hsl(30 70% 50%)', color: 'hsl(30 70% 50%)' },\n { label: 'Yellow', value: 'hsl(60 70% 40%)', color: 'hsl(60 70% 40%)' },\n { label: 'Green', value: 'hsl(120 70% 40%)', color: 'hsl(120 70% 40%)' },\n { label: 'Blue', value: 'hsl(210 70% 50%)', color: 'hsl(210 70% 50%)' },\n { label: 'Purple', value: 'hsl(270 70% 50%)', color: 'hsl(270 70% 50%)' },\n];\n\nexport const TableSelectionOverlay = ({ blockId }: TableSelectionOverlayProps) => {\n const editor = useYooptaEditor();\n const slate = useMemo(() => Blocks.getBlockSlate(editor, { id: blockId }), [blockId, editor]);\n const [selectionRect, setSelectionRect] = useState<{\n top: number;\n left: number;\n width: number;\n height: number;\n } | null>(null);\n const [isOptionsOpen, setIsOptionsOpen] = useState(false);\n\n const [savedSelectedCells, setSavedSelectedCells] = useState<\n [TableCellElement, Path][] | undefined\n >([]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const selectedCells = slate ? TABLE_CELLS_IN_SELECTION.get(slate) : [];\n\n useEffect(() => {\n setSavedSelectedCells(selectedCells);\n }, [selectedCells]);\n\n const cellsToUse =\n Array.isArray(selectedCells) && selectedCells?.length > 0 ? selectedCells : savedSelectedCells;\n\n useEffect(() => {\n if (!slate || !cellsToUse || cellsToUse.length <= 1) {\n setSelectionRect(null);\n return;\n }\n\n const tableElement = document.querySelector(`[data-yoopta-block-id=\"${blockId}\"]`);\n if (!tableElement) {\n setSelectionRect(null);\n return;\n }\n\n const tableRect = tableElement.getBoundingClientRect();\n\n let minTop = Infinity;\n let maxBottom = -Infinity;\n let minLeft = Infinity;\n let maxRight = -Infinity;\n\n for (const [cell] of cellsToUse) {\n const cellEl = document.querySelector(\n `[data-yoopta-block-id=\"${blockId}\"] [data-yoopta-element-id=\"${cell.id}\"]`,\n );\n\n if (!cellEl) continue;\n\n const cellRect = cellEl.getBoundingClientRect();\n if (!cellRect) continue;\n\n const { top, bottom, left, right } = cellRect;\n minTop = Math.min(minTop, top);\n maxBottom = Math.max(maxBottom, bottom);\n minLeft = Math.min(minLeft, left);\n maxRight = Math.max(maxRight, right);\n }\n\n if (minTop === Infinity) {\n setSelectionRect(null);\n return;\n }\n\n setSelectionRect({\n top: minTop - tableRect.top,\n left: minLeft - tableRect.left,\n width: maxRight - minLeft,\n height: maxBottom - minTop,\n });\n }, [slate, cellsToUse, blockId]);\n\n useEffect(() => {\n if (!cellsToUse || cellsToUse.length <= 1) return;\n\n const handleUpdate = () => {\n setSelectionRect((prev) => (prev ? { ...prev } : null));\n };\n\n window.addEventListener('scroll', handleUpdate, true);\n window.addEventListener('resize', handleUpdate);\n\n return () => {\n window.removeEventListener('scroll', handleUpdate, true);\n window.removeEventListener('resize', handleUpdate);\n };\n }, [cellsToUse]);\n\n const mergeCells = () => {\n if (!editor || !cellsToUse || cellsToUse.length <= 1) return;\n TableCommands.mergeCells(editor, blockId, {\n cells: cellsToUse,\n });\n\n setIsOptionsOpen(false);\n };\n\n const clearContents = () => {\n if (!editor || !cellsToUse || cellsToUse.length === 0) return;\n TableCommands.clearContents(editor, blockId, {\n cells: cellsToUse,\n });\n\n setIsOptionsOpen(false);\n };\n\n const setBackgroundColor = (color: string) => {\n if (!editor || !cellsToUse || cellsToUse.length === 0) return;\n TableCommands.setCellBackgroundColor(editor, blockId, {\n cells: cellsToUse,\n color,\n });\n setIsOptionsOpen(false);\n };\n\n const setTextColor = (color: string) => {\n if (!editor || !cellsToUse || cellsToUse.length === 0) return;\n TableCommands.setCellTextColor(editor, blockId, {\n cells: cellsToUse,\n color,\n });\n setIsOptionsOpen(false);\n };\n\n const setHorizontalAlign = (align: 'left' | 'center' | 'right' | 'justify') => {\n if (!editor || !cellsToUse || cellsToUse.length === 0) return;\n TableCommands.setCellHorizontalAlign(editor, blockId, {\n cells: cellsToUse,\n align,\n });\n setIsOptionsOpen(false);\n };\n\n const setVerticalAlign = (align: 'top' | 'middle' | 'bottom') => {\n if (!editor || !cellsToUse || cellsToUse.length === 0) return;\n TableCommands.setCellVerticalAlign(editor, blockId, {\n cells: cellsToUse,\n align,\n });\n setIsOptionsOpen(false);\n };\n\n if (!selectionRect) return null;\n\n return (\n <>\n {/* Selection overlay */}\n <div\n className=\"pointer-events-none absolute z-[9999]\"\n style={{\n top: `${selectionRect.top}px`,\n left: `${selectionRect.left}px`,\n width: `${selectionRect.width}px`,\n height: `${selectionRect.height}px`,\n border: '2px solid hsl(var(--primary))',\n backgroundColor: 'hsl(var(--primary) / 0.05)',\n borderRadius: '2px',\n }}\n />\n\n <div\n className=\"absolute z-20 pointer-events-auto\"\n style={{\n top: `${selectionRect.top + selectionRect.height / 2}px`,\n left: `${selectionRect.left + selectionRect.width}px`,\n transform: 'translate(-50%, -50%)', // Center on the border\n }}>\n <Popover open={isOptionsOpen} onOpenChange={setIsOptionsOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"secondary\"\n size=\"icon\"\n className=\"h-4 w-4 rounded-full shadow-lg bg-primary hover:bg-primary/90\"\n onMouseDown={(e) => e.preventDefault()}>\n <MoreVertical className=\"h-3 w-3 text-primary-foreground\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-64 p-2\" align=\"start\" side=\"right\">\n <div className=\"space-y-2\">\n {/* Merge cells */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start gap-2\"\n onClick={mergeCells}\n disabled={!cellsToUse || cellsToUse.length <= 1}>\n <Merge className=\"h-4 w-4\" />\n Merge cells\n </Button>\n\n <Separator />\n\n {/* Color dropdown */}\n <div className=\"space-y-1\">\n <Label className=\"text-sm font-medium\">Color</Label>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full justify-between\">\n <span className=\"flex items-center gap-2\">\n <Paintbrush className=\"h-4 w-4\" />\n Select color\n </span>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\" align=\"start\">\n {/* Background color submenu */}\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <Paintbrush className=\"mr-2 h-4 w-4\" />\n Background color\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n {BG_COLORS.map((color) => (\n <DropdownMenuItem\n key={color.value}\n onClick={() => setBackgroundColor(color.value)}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"h-4 w-4 rounded border\"\n style={{ backgroundColor: color.color }}\n />\n {color.label}\n </div>\n </DropdownMenuItem>\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n\n {/* Text color submenu */}\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <Type className=\"mr-2 h-4 w-4\" />\n Text color\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n {TEXT_COLORS.map((color) => (\n <DropdownMenuItem\n key={color.value}\n onClick={() => setTextColor(color.value)}>\n <div className=\"flex items-center gap-2\">\n <div\n className=\"h-4 w-4 rounded border flex items-center justify-center text-xs font-bold\"\n style={{ color: color.color }}>\n A\n </div>\n {color.label}\n </div>\n </DropdownMenuItem>\n ))}\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n {/* Alignment dropdown */}\n <div className=\"space-y-1\">\n <Label className=\"text-sm font-medium\">Alignment</Label>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full justify-between\">\n <span className=\"flex items-center gap-2\">\n <MoveHorizontal className=\"h-4 w-4\" />\n Select alignment\n </span>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className=\"w-56\" align=\"start\">\n {/* Horizontal alignment submenu */}\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <MoveHorizontal className=\"mr-2 h-4 w-4\" />\n Horizontal\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem onClick={() => setHorizontalAlign('left')}>\n Left\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setHorizontalAlign('center')}>\n Center\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setHorizontalAlign('right')}>\n Right\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setHorizontalAlign('justify')}>\n Justify\n </DropdownMenuItem>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n\n {/* Vertical alignment submenu */}\n <DropdownMenuSub>\n <DropdownMenuSubTrigger>\n <MoveVertical className=\"mr-2 h-4 w-4\" />\n Vertical\n </DropdownMenuSubTrigger>\n <DropdownMenuSubContent>\n <DropdownMenuItem onClick={() => setVerticalAlign('top')}>\n Top\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setVerticalAlign('middle')}>\n Middle\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => setVerticalAlign('bottom')}>\n Bottom\n </DropdownMenuItem>\n </DropdownMenuSubContent>\n </DropdownMenuSub>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n <Separator />\n\n {/* Clear contents */}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-full justify-start gap-2 text-destructive hover:text-destructive\"\n onClick={clearContents}>\n <Eraser className=\"h-4 w-4\" />\n Clear contents\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n </div>\n </>\n );\n};\n","import { useMemo } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport { Blocks, useYooptaEditor } from '@yoopta/editor';\nimport type { TableElement } from '@yoopta/table';\nimport { TABLE_SLATE_TO_SELECTION_SET } from '@yoopta/table';\n\nimport { TableBody, Table as TableUI } from '../../ui/table';\nimport { ColumnResizeHandles } from '../components/column-resize-handles';\nimport { TableControls } from '../components/table-controls';\nimport { TableSelectionOverlay } from '../components/table-selection-overlay';\n\nexport const Table = (props: PluginElementRenderProps) => {\n const { attributes, children, element } = props;\n const tableElement = element as TableElement;\n const editor = useYooptaEditor();\n const slate = useMemo(\n () => Blocks.getBlockSlate(editor, { id: props.blockId }),\n [editor, props.blockId],\n );\n\n const isSelecting = slate ? TABLE_SLATE_TO_SELECTION_SET.get(slate) : null;\n\n return (\n <div className=\"p-4 overflow-x-auto\" data-yoopta-block-id={props.blockId} data-table-container>\n <TableUI {...attributes} data-is-selecting={!!isSelecting}>\n <colgroup>\n {tableElement.props?.columnWidths?.map((width, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <col key={i} style={{ width: `${width}px` }} />\n ))}\n </colgroup>\n <TableBody>{children}</TableBody>\n </TableUI>\n\n {!editor.readOnly && (\n <>\n <TableSelectionOverlay blockId={props.blockId} />\n <TableControls blockId={props.blockId} />\n <ColumnResizeHandles blockId={props.blockId} />\n </>\n )}\n </div>\n );\n};\n","import { useMemo } from 'react';\nimport type { PluginElementRenderProps } from '@yoopta/editor';\nimport { Blocks, useYooptaEditor } from '@yoopta/editor';\nimport type { TableCellElement } from '@yoopta/table';\nimport { TABLE_CELLS_IN_SELECTION, TABLE_SLATE_TO_SELECTION_SET } from '@yoopta/table';\n\nimport { TableCell, TableHead } from '../../ui/table';\nimport { cn } from '../../utils';\n\nexport const TableDataCell = (props: PluginElementRenderProps) => {\n const { attributes, children, element } = props;\n const cellElement = element as TableCellElement;\n const editor = useYooptaEditor();\n const slate = useMemo(\n () => Blocks.getBlockSlate(editor, { id: props.blockId }),\n [editor, props.blockId],\n );\n\n const CellTag = cellElement.props?.asHeader ? TableHead : TableCell;\n\n const onMouseDown = (e: React.MouseEvent<HTMLTableCellElement>) => {\n if (editor.readOnly) return;\n e.stopPropagation();\n\n if (slate) {\n TABLE_CELLS_IN_SELECTION.delete(slate);\n TABLE_SLATE_TO_SELECTION_SET.delete(slate);\n }\n };\n\n return (\n <CellTag\n {...attributes}\n onMouseDown={onMouseDown}\n colSpan={cellElement.props?.colSpan ?? 1}\n rowSpan={cellElement.props?.rowSpan ?? 1}\n align={cellElement.props?.align ?? 'left'}\n valign={cellElement.props?.verticalAlign ?? 'middle'}\n data-yoopta-element-id={cellElement.id}\n className={cn(\n 'relative group transition-colors',\n )}\n style={{\n backgroundColor: cellElement.props?.backgroundColor,\n color: cellElement.props?.color ?? 'inherit',\n }}>\n {children}\n </CellTag>\n );\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\n\nimport { TableRow as TableRowUI } from '../../ui/table';\n\nexport const TableRow = (props: PluginElementRenderProps) => {\n const { attributes, children } = props;\n\n return <TableRowUI {...attributes}>{children}</TableRowUI>;\n};\n","import { Table } from './elements/table';\nimport { TableDataCell } from './elements/table-data-cell';\nimport { TableRow } from './elements/table-row';\nimport './styles.css';\n\nexport const TableUI = {\n table: {\n render: Table,\n },\n 'table-row': {\n render: TableRow,\n },\n 'table-data-cell': {\n render: TableDataCell,\n },\n};\n"],"names":["Table","_jsx","TableRow","_jsxs","MoreHorizontal","_Fragment","Table2Icon","MoreVertical","TableUI","TableRowUI"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaM,MAAA,QAAA,GAAW,iBAAiB,UAAY,EAAA;AAAA,EAC5C,CAAC,QAAU,EAAA,EAAE,EAAI,EAAA,IAAA,EAAM,EAAI,EAAA,IAAA,EAAM,CAAG,EAAA,GAAA,EAAK,GAAK,EAAA,QAAA,EAAU,CAAA;AAAA,EACxD,CAAC,QAAU,EAAA,EAAE,EAAI,EAAA,IAAA,EAAM,EAAI,EAAA,IAAA,EAAM,CAAG,EAAA,GAAA,EAAK,GAAK,EAAA,QAAA,EAAU,CAAA;AAAA,EACxD,CAAC,QAAU,EAAA,EAAE,EAAI,EAAA,GAAA,EAAK,EAAI,EAAA,IAAA,EAAM,CAAG,EAAA,GAAA,EAAK,GAAK,EAAA,QAAA,EAAU,CAAA;AACzD,CAAC,CAAA;;;;;;;;;;ACJK,MAAA,MAAA,GAAS,iBAAiB,QAAU,EAAA;AAAA,EACxC;AAAA,IACE,MAAA;AAAA,IACA;AAAA,MACE,CAAG,EAAA,sFAAA;AAAA,MACH,GAAK,EAAA,QAAA;AAAA,KACP;AAAA,GACF;AAAA,EACA,CAAC,MAAQ,EAAA,EAAE,CAAA,EAAG,UAAY,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AAAA,EACzC,CAAC,MAAQ,EAAA,EAAE,CAAA,EAAG,WAAa,EAAA,GAAA,EAAK,UAAU,CAAA;AAC5C,CAAC,CAAA;;;;;;;;;;ACVK,MAAA,KAAA,GAAQ,iBAAiB,OAAS,EAAA;AAAA,EACtC,CAAC,MAAQ,EAAA,EAAE,CAAA,EAAG,cAAgB,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AAAA,EAC7C,CAAC,MAAQ,EAAA,EAAE,CAAG,EAAA,uCAAyC,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AAAA,EACtE,CAAC,MAAQ,EAAA,EAAE,CAAA,EAAG,YAAc,EAAA,GAAA,EAAK,UAAU,CAAA;AAC7C,CAAC,CAAA;;;;;;;;;;ACJK,MAAA,cAAA,GAAiB,gBAAiB,CAAA,gBAAkB,EAAA;AAAA,EACxD,CAAC,UAAY,EAAA,EAAE,QAAQ,kBAAoB,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AAAA,EAC1D,CAAC,UAAY,EAAA,EAAE,MAAA,EAAQ,eAAiB,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AAAA,EACvD,CAAC,MAAA,EAAQ,EAAE,EAAA,EAAI,GAAK,EAAA,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,IAAM,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AACnE,CAAC,CAAA;;;;;;;;;;ACJK,MAAA,YAAA,GAAe,gBAAiB,CAAA,cAAgB,EAAA;AAAA,EACpD,CAAC,UAAY,EAAA,EAAE,QAAQ,kBAAoB,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AAAA,EAC1D,CAAC,UAAY,EAAA,EAAE,MAAA,EAAQ,eAAiB,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AAAA,EACvD,CAAC,MAAA,EAAQ,EAAE,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,GAAK,EAAA,EAAA,EAAI,IAAM,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AACnE,CAAC,CAAA;;;;;;;;;;ACJK,MAAA,UAAA,GAAa,gBAAiB,CAAA,YAAc,EAAA;AAAA,EAChD;AAAA,IACE,MAAA;AAAA,IACA;AAAA,MACE,CAAG,EAAA,sHAAA;AAAA,MACH,GAAK,EAAA,QAAA;AAAA,KACP;AAAA,GACF;AAAA,EACA,CAAC,MAAQ,EAAA,EAAE,CAAG,EAAA,sCAAwC,EAAA,GAAA,EAAK,QAAU,EAAA,CAAA;AAAA,EACrE,CAAC,MAAQ,EAAA,EAAE,CAAG,EAAA,mBAAqB,EAAA,GAAA,EAAK,UAAU,CAAA;AACpD,CAAC,CAAA;;;;;;;;;;ACVK,MAAA,MAAA,GAAS,iBAAiB,QAAU,EAAA;AAAA,EACxC;AAAA,IACE,MAAA;AAAA,IACA;AAAA,MACE,CAAG,EAAA,2GAAA;AAAA,MACH,GAAK,EAAA,QAAA;AAAA,KACP;AAAA,GACF;AACF,CAAC,CAAA;;;;;;;;;;ACRK,MAAA,IAAA,GAAO,gBAAA,CAAiB,MAAQ,EAAA;AAAA,EACpC,CAAC,UAAY,EAAA,EAAE,QAAQ,mBAAqB,EAAA,GAAA,EAAK,QAAU,EAAA,CAAA;AAAA,EAC3D,CAAC,MAAA,EAAQ,EAAE,EAAA,EAAI,GAAK,EAAA,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,IAAM,EAAA,GAAA,EAAK,QAAU,EAAA,CAAA;AAAA,EACjE,CAAC,MAAA,EAAQ,EAAE,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,IAAM,EAAA,EAAA,EAAI,GAAK,EAAA,EAAA,EAAI,IAAM,EAAA,GAAA,EAAK,QAAA,EAAU,CAAA;AACnE,CAAC,CAAA;;ACZD,MAAMA,OAAK,GAAG,UAAU,CACtB,CAAC,EAAuB,EAAE,GAAG,KAAI;AAAhC,IAAA,IAAA,EAAE,SAAS,EAAY,GAAA,EAAA,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF,CAAA;AAAY,IAAA,QAChCC,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EACY,iBAAiB,EAC3B,SAAS,EAAC,4CAA4C,EAAA,EAAA,EAAA,QAAA,EACtDA,GACE,CAAA,OAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAG,EAAE,GAAG,EACE,WAAA,EAAA,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,oDAAoD,EAAE,SAAS,CAAC,EAAA,EAC1E,KAAK,CAAA,CACT,EACE,CAAA,CAAA,EACP;AAAA,CAAA,CACF,CAAC;AACFD,OAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,MAAM,WAAW,GAAG,UAAU,CAC5B,CAAC,EAAuB,EAAE,GAAG,KAAI;AAAhC,IAAA,IAAA,EAAE,SAAS,EAAY,GAAA,EAAA,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF,CAAA;IAAY,QAChCC,6BACE,GAAG,EAAE,GAAG,EACE,WAAA,EAAA,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,IACvC,KAAK,CAAA,CACT,EACH;AAAA,CAAA,CACF,CAAC;AACF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;AAExC,MAAM,SAAS,GAAG,UAAU,CAC1B,CAAC,EAAuB,EAAE,GAAG,KAAI;AAAhC,IAAA,IAAA,EAAE,SAAS,EAAY,GAAA,EAAA,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF,CAAA;IAAY,QAChCA,6BACE,GAAG,EAAE,GAAG,EACE,WAAA,EAAA,YAAY,EACtB,SAAS,EAAE,EAAE,CAAC,kEAAkE,EAAE,SAAS,CAAC,IACxF,KAAK,CAAA,CACT,EACH;AAAA,CAAA,CACF,CAAC;AACF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAEpC,MAAM,WAAW,GAAG,UAAU,CAC5B,CAAC,EAAuB,EAAE,GAAG,KAAI;AAAhC,IAAA,IAAA,EAAE,SAAS,EAAY,GAAA,EAAA,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF,CAAA;IAAY,QAChCA,6BACE,GAAG,EAAE,GAAG,EACE,WAAA,EAAA,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,yDAAyD,EAAE,SAAS,CAAC,IAC/E,KAAK,CAAA,CACT,EACH;AAAA,CAAA,CACF,CAAC;AACF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC;AAExC,MAAMC,UAAQ,GAAG,UAAU,CACzB,CAAC,EAAuB,EAAE,GAAG,KAAI;AAAhC,IAAA,IAAA,EAAE,SAAS,EAAY,GAAA,EAAA,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF,CAAA;IAAY,QAChCD,0BACE,GAAG,EAAE,GAAG,EACE,WAAA,EAAA,WAAW,EACrB,SAAS,EAAE,EAAE,CACX,6EAA6E,EAC7E,SAAS,CACV,IACG,KAAK,CAAA,CACT,EACH;AAAA,CAAA,CACF,CAAC;AACFC,UAAQ,CAAC,WAAW,GAAG,UAAU,CAAC;AAElC,MAAM,SAAS,GAAG,UAAU,CAC1B,CAAC,EAAuB,EAAE,GAAG,KAAI;AAAhC,IAAA,IAAA,EAAE,SAAS,EAAY,GAAA,EAAA,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF,CAAA;IAAY,QAChCD,0BACE,GAAG,EAAE,GAAG,EACE,WAAA,EAAA,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,wKAAwK,EACxK,SAAS,CACV,IACG,KAAK,CAAA,CACT,EACH;AAAA,CAAA,CACF,CAAC;AACF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAEpC,MAAM,SAAS,GAAG,UAAU,CAC1B,CAAC,EAAuB,EAAE,GAAG,KAAI;AAAhC,IAAA,IAAA,EAAE,SAAS,EAAY,GAAA,EAAA,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF,CAAA;IAAY,QAChCA,0BACE,GAAG,EAAE,GAAG,EACE,WAAA,EAAA,YAAY,EACtB,SAAS,EAAE,EAAE,CACX,gHAAgH,EAChH,SAAS,CACV,IACG,KAAK,CAAA,CACT,EACH;AAAA,CAAA,CACF,CAAC;AACF,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAEpC,MAAM,YAAY,GAAG,UAAU,CAC7B,CAAC,EAAuB,EAAE,GAAG,KAAI;AAAhC,IAAA,IAAA,EAAE,SAAS,EAAY,GAAA,EAAA,EAAP,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF,CAAA;IAAY,QAChCA,+BACE,GAAG,EAAE,GAAG,EACE,WAAA,EAAA,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,IAC1D,KAAK,CAAA,CACT,EACH;AAAA,CAAA,CACF,CAAC;AACF,YAAY,CAAC,WAAW,GAAG,cAAc;;ACjGzC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAErB,MAAM,mBAAmB,GAAG,CAAC,EAAE,OAAO,EAA4B,KAAI;AAC3E,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IAEjC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;;IAGpF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;;AAG7D,IAAA,MAAM,SAAS,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AACpC,IAAA,MAAM,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AACxC,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;AAC9C,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAgB,IAAI,CAAC,CAAC;AACrD,IAAA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;AAClD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;;IAGrD,SAAS,CAAC,MAAK;AACb,QAAA,gBAAgB,CAAC,OAAO,GAAG,WAAW,CAAC;AACzC,KAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,SAAS,CAAC,MAAK;AACb,QAAA,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC;AACnC,KAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,SAAS,CAAC,MAAK;AACb,QAAA,gBAAgB,CAAC,OAAO,GAAG,mBAAmB,CAAC;AACjD,KAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;;AAG1B,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAK;QACxC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAC3C,CAA0B,uBAAA,EAAA,OAAO,CAA0B,wBAAA,CAAA,CAC7C,CAAC;AAEjB,QAAA,IAAI,CAAC,cAAc;YAAE,OAAO;QAE5B,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;AAE1B,QAAA,MAAM,IAAI,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;QAClD,YAAY,CAAC,IAAI,CAAC,CAAC;;QAGnB,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AACxD,QAAA,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;;QAG/B,MAAM,WAAW,GAAG,YAAY,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAElD,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAE1B,MAAM,MAAM,GAAa,EAAE,CAAC;AAC5B,YAAsB,IAAI,CAAC,KAAK;YAEhC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;gBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC3C,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;AAC/C,gBAAA,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AASrB,aAAC,CAAC,CAAC;;YAGH,cAAc,CAAC,MAAM,CAAC,CAAC;AACxB,SAAA;AAAM,aAAA,IAAI,QAAQ,EAAE;;YAEnB,MAAM,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,WAAW,GAAiB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAa,EAAE,CAAC;YAE5B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC5B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC9C,gBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC5B,WAAW,CAAC,IAAI,CAAC;oBACf,KAAK;oBACL,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;AACtB,iBAAA,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;;YAGH,cAAc,CAAC,MAAM,CAAC,CAAC;AACxB,SAAA;AACH,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,MAAK;AACb,QAAA,gBAAgB,EAAE,CAAC;QAEnB,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAC3C,CAA0B,uBAAA,EAAA,OAAO,CAA0B,wBAAA,CAAA,CAC7C,CAAC;AAEjB,QAAA,IAAI,CAAC,cAAc;YAAE,OAAO;QAE5B,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;AAE1B,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;YAC7C,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,gBAAgB,EAAE,CAAC;AACpB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;AAGrC,QAAA,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAK;YACjD,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,gBAAgB,EAAE,CAAC;AACpB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3E,MAAM,YAAY,GAAG,MAAK;YACxB,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,gBAAgB,EAAE,CAAC;AACpB,aAAA;AACH,SAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAEtD,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,UAAU,EAAE,CAAC;YAC5B,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAC9B,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAC3D,SAAC,CAAC;KACH,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;;AAG5C,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,MAAgB,KAAI;QACxD,IAAI,CAAC,WAAW,CAAC,OAAO;YAAE,OAAO;QAEjC,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAChE,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,KAAI;AACjC,YAAA,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;gBAC9B,GAAmB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,MAAM,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI,CAAC;AACzD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ,EAAE,EAAE,CAAC,CAAC;;IAGP,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,MAAgB,EAAE,IAAoB,KAAkB;AAChG,QAAA,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;AAE5C,QAAA,IAAI,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACjC,YAAA,MAAM,GAAG,GAAe;gBACtB,KAAK;AACL,gBAAA,IAAI,EAAE,eAAe;gBACrB,KAAK;aACN,CAAC;YACF,eAAe,IAAI,KAAK,CAAC;AACzB,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC;KACJ,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,CAAmB,EAAE,WAAmB,KAAI;QAC3C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;AAEpB,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO;QAEhC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,sBAAsB,CAAC,WAAW,CAAC,CAAC;AACpC,QAAA,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AAC9B,QAAA,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;QAE9B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACjD,KAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAC;;AAGF,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAa,KAAI;AACpD,QAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAC7C,IAAI,WAAW,KAAK,IAAI;YAAE,OAAO;QAEjC,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AAC7C,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;;QAG5E,MAAM,SAAS,GAAG,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAChD,QAAA,SAAS,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;;QAGlC,cAAc,CAAC,SAAS,CAAC,CAAC;;QAG1B,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC9B,KAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAEvB,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAK;AACrC,QAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC7C,QAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC;QAExC,IAAI,WAAW,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS,EAAE;;AAE7D,YAAA,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;AACjF,SAAA;QAED,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;;AAGlD,QAAA,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;KAClC,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;;IAGxC,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AACxD,YAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAEpD,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AAC3D,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACzD,aAAC,CAAC;AACH,SAAA;KACF,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC;AAEjD,IAAA,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;;IAGxD,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;;AAGpE,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAI;AAC/D,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AAElD,QAAA,QACEA,GAEE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,sBAAsB,EAChC,KAAK,EAAE;AACL,gBAAA,QAAQ,EAAE,OAAO;gBACjB,IAAI,EAAE,CAAG,EAAA,UAAU,CAAI,EAAA,CAAA;AACvB,gBAAA,GAAG,EAAE,CAAA,EAAG,SAAS,CAAC,GAAG,CAAI,EAAA,CAAA;AACzB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,CAAA,EAAG,SAAS,CAAC,MAAM,CAAI,EAAA,CAAA;AAC/B,gBAAA,MAAM,EAAE,YAAY;AACpB,gBAAA,MAAM,EAAE,EAAE;AACV,gBAAA,eAAe,EACb,UAAU,IAAI,mBAAmB,KAAK,MAAM,CAAC,KAAK;AAChD,sBAAE,qBAAqB;AACvB,sBAAE,aAAa;aACpB,EACD,WAAW,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EACpD,YAAY,EAAE,CAAC,CAAC,KAAI;gBAClB,IAAI,CAAC,UAAU,EAAE;oBACd,CAAC,CAAC,MAAsB,CAAC,KAAK,CAAC,eAAe,GAAG,2BAA2B,CAAC;AAC/E,iBAAA;AACH,aAAC,EACD,YAAY,EAAE,CAAC,CAAC,KAAI;gBAClB,IAAI,CAAC,UAAU,EAAE;oBACd,CAAC,CAAC,MAAsB,CAAC,KAAK,CAAC,eAAe,GAAG,aAAa,CAAC;AACjE,iBAAA;aACF,EAAA,EAzBI,UAAU,MAAM,CAAC,KAAK,CAAE,CAAA,CA0B7B,EACF;AACJ,KAAC,CAAC,CAAC;AAEH,IAAA,QAAQA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,EAAE,EAAC,iCAAiC,EAClD,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EACE,SAAS,EAAC,iCAAiC,EAC3C,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EAAE,EAExD,EAAA,EAAA,QAAA,EAAA,aAAa,EACV,CAAA,CAAA,EAAA,CAAA,CACC,EAAC;AACZ,CAAC;;ACtRM,MAAM,eAAe,GAAG,CAAC,EAC9B,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,YAAY,GACS,KAAI;AACzB,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;AAEjC,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,MAAK;;AAEvC,QAAA,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,QAAA,aAAa,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE;;AAE/C,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,UAAU,EAAE,OAAO;AACpB,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;AAEpC,IAAA,QACEA,GAAC,CAAA,MAAM,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EAAE,EAAE,CAA2B,wBAAA,EAAA,OAAO,CAAE,CAAA,EAAA,EAAA,EAAA,QAAA,EAC9CA,2BACE,SAAS,EAAC,oCAAoC,EAC9C,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,CAAG,EAAA,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAI,EAAA,CAAA;AAC9B,gBAAA,GAAG,EAAE,CAAA,EAAG,QAAQ,CAAC,GAAG,CAAI,EAAA,CAAA;AACxB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAI,EAAA,CAAA;aAC/B,EACD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,6MAA6M,EACvN,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,gBACtCA,GAAC,CAAA,IAAI,EAAC,EAAA,SAAS,EAAC,SAAS,GAAG,EACrB,CAAA,CAAA,EAAA,CAAA,CACL,EACC,CAAA,CAAA,EACT;AACJ,CAAC;;AC1CM,MAAM,YAAY,GAAG,CAAC,EAC3B,OAAO,EACP,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,YAAY,GACM,KAAI;AACtB,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;AAEjC,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;;AAEpC,QAAA,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,QAAA,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;;AAE5C,YAAA,IAAI,EAAE,eAAe;AACrB,YAAA,UAAU,EAAE,OAAO;AACpB,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAEjC,IAAA,QACEA,GAAC,CAAA,MAAM,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,EAAE,EAAE,CAAwB,qBAAA,EAAA,OAAO,CAAE,CAAA,EAAA,EAAA,EAAA,QAAA,EAC3CA,2BACE,SAAS,EAAC,oCAAoC,EAC9C,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAI,EAAA,CAAA;AAC1B,gBAAA,GAAG,EAAE,CAAG,EAAA,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAI,EAAA,CAAA;AAC5B,gBAAA,KAAK,EAAE,CAAA,EAAG,QAAQ,CAAC,KAAK,CAAI,EAAA,CAAA;AAC5B,gBAAA,MAAM,EAAE,MAAM;aACf,EACD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAC1B,EAAA,EAAA,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,iNAAiN,EAC3N,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,gBACtCA,GAAC,CAAA,IAAI,EAAC,EAAA,SAAS,EAAC,SAAS,GAAG,EACrB,CAAA,CAAA,EAAA,CAAA,CACL,EACC,CAAA,CAAA,EACT;AACJ,CAAC;;ACnCM,MAAM,cAAc,GAAG,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,GACQ,KAAI;AACxB,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;;IAGjC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEhE,IAAA,MAAM,sBAAsB,GAAG,WAAW,CAAC,MAAK;AAC9C,QAAA,aAAa,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE;;AAE/C,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE,QAAQ;AACrB,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhC,IAAA,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAK;AAC/C,QAAA,aAAa,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE;;AAE/C,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE,OAAO;AACpB,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhC,IAAA,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAK;AAC1C,QAAA,aAAa,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE;;AAE/C,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhC,IAAA,MAAM,wBAAwB,GAAG,WAAW,CAAC,MAAK;AAChD,QAAA,aAAa,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,KAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtB,IAAA,QACEA,GAAC,CAAA,MAAM,kBAAC,EAAE,EAAE,yBAAyB,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,gBACxDA,GACE,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,oCAAoC,EAC9C,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAI,EAAA,CAAA;AAC1B,gBAAA,GAAG,EAAE,CAAG,EAAA,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAI,EAAA,CAAA;AAC5B,gBAAA,KAAK,EAAE,CAAA,EAAG,QAAQ,CAAC,KAAK,CAAI,EAAA,CAAA;AAC5B,gBAAA,MAAM,EAAE,MAAM;AACf,aAAA,EACD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAAA,EAAA,EAAA,QAAA,EAC1BE,IAAC,CAAA,YAAY,eACXF,GAAC,CAAA,mBAAmB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,sBAC1BA,GAAC,CAAA,MAAM,EACL,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,gIAAgI,EAC1I,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EAAA,EAAA,EAAA,QAAA,EACtCA,GAAC,CAAAG,QAAc,IAAC,SAAS,EAAC,+BAA+B,EAAA,CAAG,IACrD,EACW,CAAA,CAAA,EACtBD,IAAC,CAAA,mBAAmB,kBAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,SAAS,EAAC,MAAM,EAAA,EAAA,EAAA,QAAA,EAAA,CAC3D,QAAQ,KAAK,CAAC,KACbA,IACE,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAF,IAAA,CAAC,gBAAgB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,wBAAwB,iBACjDF,GAAC,CAAAK,MAAU,EAAC,EAAA,SAAS,EAAC,cAAc,EAAA,CAAG,EAEtB,eAAA,CAAA,EAAA,CAAA,CAAA,EACnBL,IAAC,qBAAqB,EAAA,EAAA,CAAG,CACxB,EAAA,CAAA,CACJ,EACDE,IAAC,CAAA,gBAAgB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,sBAAsB,EAAA,EAAA,EAAA,QAAA,EAAA,CAC/CF,GAAC,CAAA,SAAS,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,2BAErB,EACnBE,IAAA,CAAC,gBAAgB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAE,uBAAuB,EAChD,EAAA,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,UAAU,EAAC,EAAA,SAAS,EAAC,cAAc,GAAG,EAEtB,qBAAA,CAAA,EAAA,CAAA,CAAA,EACnBA,GAAC,CAAA,qBAAqB,KAAG,EACzBE,IAAA,CAAC,gBAAgB,EAAA,MAAA,CAAA,MAAA,CAAA,EACf,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAC,yCAAyC,EAAA,EAAA,EAAA,QAAA,EAAA,CACnDF,GAAC,CAAA,MAAM,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,sBAElB,CACC,EAAA,CAAA,CAAA,CAAA,EAAA,CACT,EACX,CAAA,CAAA,EAAA,CAAA,CACC,EACT;AACJ,CAAC;;AC3FM,MAAM,WAAW,GAAG,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,GACK,KAAI;AACrB,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;;IAGjC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEhE,IAAA,MAAM,cAAc,GAAG,WAAW,CAAC,MAAK;AACtC,QAAA,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;;AAE5C,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE,QAAQ;AACrB,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhC,IAAA,MAAM,cAAc,GAAG,WAAW,CAAC,MAAK;AACtC,QAAA,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;;AAE5C,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,UAAU,EAAE,OAAO;AACpB,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhC,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAK;AACjC,QAAA,aAAa,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE;;AAE5C,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhC,IAAA,MAAM,eAAe,GAAG,WAAW,CAAC,MAAK;AACvC,QAAA,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,KAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtB,IAAA,QACEA,GAAC,CAAA,MAAM,kBAAC,EAAE,EAAE,sBAAsB,OAAO,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,gBACrDA,GACE,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,oCAAoC,EAC9C,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,CAAG,EAAA,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAI,EAAA,CAAA;AAC/B,gBAAA,GAAG,EAAE,CAAA,EAAG,QAAQ,CAAC,GAAG,CAAI,EAAA,CAAA;AACxB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,CAAA,EAAG,QAAQ,CAAC,MAAM,CAAI,EAAA,CAAA;AAC/B,aAAA,EACD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,EAAA,EAAA,EAAA,QAAA,EAC1BE,IAAC,CAAA,YAAY,eACXF,GAAC,CAAA,mBAAmB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,sBAC1BA,GAAC,CAAA,MAAM,EACL,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,iKAAiK,EAC3K,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EAAA,EAAA,EAAA,QAAA,EACtCA,GAAC,CAAAM,gBAAY,IAAC,SAAS,EAAC,+BAA+B,EAAA,CAAG,IACnD,EACW,CAAA,CAAA,EACtBJ,IAAC,CAAA,mBAAmB,kBAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,EAAA,EAAA,EAAA,QAAA,EAAA,CAC5D,QAAQ,KAAK,CAAC,KACbA,IACE,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAF,IAAA,CAAC,gBAAgB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,eAAe,iBACxCF,GAAC,CAAAK,MAAU,EAAC,EAAA,SAAS,EAAC,cAAc,EAAA,CAAG,EAEtB,YAAA,CAAA,EAAA,CAAA,CAAA,EACnBL,IAAC,qBAAqB,EAAA,EAAA,CAAG,CACxB,EAAA,CAAA,CACJ,EACDE,IAAC,CAAA,gBAAgB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,cAAc,EAAA,EAAA,EAAA,QAAA,EAAA,CACvCF,GAAC,CAAA,OAAO,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,yBAEnB,EACnBE,IAAA,CAAC,gBAAgB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAE,cAAc,EACvC,EAAA,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,SAAS,EAAC,EAAA,SAAS,EAAC,cAAc,GAAG,EAErB,kBAAA,CAAA,EAAA,CAAA,CAAA,EACnBA,GAAC,CAAA,qBAAqB,KAAG,EACzBE,IAAA,CAAC,gBAAgB,EAAA,MAAA,CAAA,MAAA,CAAA,EACf,OAAO,EAAE,SAAS,EAClB,SAAS,EAAC,yCAAyC,EAAA,EAAA,EAAA,QAAA,EAAA,CACnDF,GAAC,CAAA,MAAM,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,mBAElB,CACC,EAAA,CAAA,CAAA,CAAA,EAAA,CACT,EACX,CAAA,CAAA,EAAA,CAAA,CACC,EACT;AACJ,CAAC;;ACxFD,MAAM,UAAU,GAAG,GAAG,CAAC;AAEhB,MAAM,aAAa,GAAG,CAAC,EAAE,OAAO,EAAsB,KAAI;AAC/D,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;;IAG9F,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAC;IACrF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClD,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAmB;AAC3D,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,eAAe,EAAE,IAAI;AACtB,KAAA,CAAC,CAAC;;AAGH,IAAA,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,IAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACxC,IAAA,MAAM,cAAc,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;AAC3D,IAAA,MAAM,kBAAkB,GAAG,MAAM,CAAyB,IAAI,CAAC,CAAC;;AAGhE,IAAA,kBAAkB,CAAC,OAAO,GAAG,eAAe,CAAC;;AAG7C,IAAA,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAK;AAC5C,QAAA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC5C,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,YAAY,CAAC;AACX,gBAAA,WAAW,EAAE,IAAI;AACjB,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,eAAe,EAAE,IAAI;AACtB,aAAA,CAAC,CAAC;YACH,OAAO;AACR,SAAA;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAC3C,CAA0B,uBAAA,EAAA,OAAO,CAA0B,wBAAA,CAAA,CAC7C,CAAC;AACjB,QAAA,IAAI,CAAC,cAAc;YAAE,OAAO;QAE5B,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,YAAY;YAAE,OAAO;AAE1B,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;AACvD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;;QAGpE,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAA4B,CAAC;AAC3E,QAAA,IAAI,CAAC,UAAU;YAAE,OAAO;;AAGxB,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,UAAU,CAAC,gBAAgB,CAAC,uCAAuC,CAAC,CACpD,CAAC;AAEnB,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAElC,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,QAAA,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;QAErC,MAAM,WAAW,GAAc,EAAE,CAAC;AAElC,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACxB,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,GAAG,CAAC,gBAAgB,CAAC,uCAAuC,CAAC,CAC7C,CAAC;AACnB,YAAA,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC5B,gBAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC;AACpE,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC;AAClG,QAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC;AACrG,QAAA,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;AAC7C,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QAE/F,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC;AAErE,QAAA,YAAY,CAAC;AACX,YAAA,WAAW,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC;AAC/B,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA;AACD,YAAA,cAAc,EAAE;AACd,gBAAA,IAAI,EAAE,UAAU;gBAChB,GAAG,EAAE,SAAS,GAAG,EAAE;AACnB,gBAAA,KAAK,EAAE,WAAW;AACnB,aAAA;AACD,YAAA,YAAY,EAAE,SAAS;AACrB,kBAAE;oBACA,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,GAAG,EAAE,SAAS,CAAC,MAAM;oBACrB,KAAK,EAAE,SAAS,CAAC,KAAK;AACvB,iBAAA;AACD,kBAAE,IAAI;AACR,YAAA,eAAe,EAAE,YAAY;AAC3B,kBAAE;oBACA,IAAI,EAAE,SAAS,CAAC,KAAK;oBACrB,GAAG,EAAE,SAAS,CAAC,GAAG;oBAClB,MAAM,EAAE,SAAS,CAAC,MAAM;AACzB,iBAAA;AACD,kBAAE,IAAI;AACT,SAAA,CAAC,CAAC;AACL,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;;IAGd,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,eAAe,IAAI,CAAC,SAAS;YAAE,OAAO;QAE3C,MAAM,oBAAoB,GAAG,MAAK;AAChC,YAAA,oBAAoB,EAAE,CAAC;AACzB,SAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;;AAGxD,QAAA,oBAAoB,EAAE,CAAC;AAEvB,QAAA,OAAO,MAAK;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,IAAI,CAAC,CAAC;AACjE,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC7D,SAAC,CAAC;KACH,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC,CAAC;;AAGvD,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAK;QACxC,IAAI,cAAc,CAAC,OAAO,EAAE;AAC1B,YAAA,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACrC,YAAA,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;AAC/B,SAAA;KACF,EAAE,EAAE,CAAC,CAAC;;AAGP,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;AACpC,QAAA,gBAAgB,EAAE,CAAC;AACnB,QAAA,cAAc,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;YACvC,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;gBACzD,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC1B,aAAA;SACF,EAAE,UAAU,CAAC,CAAC;AACjB,KAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;;AAGvB,IAAA,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,SAAiB,KAA4B;AAC5C,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI,CAAC;QAExB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC5B,MAAM,CAAC,KAAK,CAAmB,KAAK,EAAE;YACpC,EAAE,EAAE,CAAC,CAAC,CAAC;AACP,YAAA,KAAK,EAAE,CAAC,CAAC,KAAI;AACX,gBAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAAE,oBAAA,OAAO,KAAK,CAAC;gBACxC,MAAM,OAAO,GAAG,CAAqB,CAAC;AACtC,gBAAA,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,IAAI,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC;aAC1F;AACD,YAAA,IAAI,EAAE,KAAK;AACZ,SAAA,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QAE1C,MAAM,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;QAGvC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,MAAM,CAAC,KAAK,CAAe,KAAK,EAAE;YAChC,EAAE,EAAE,CAAC,CAAC,CAAC;AACP,YAAA,KAAK,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAK,CAAkB,CAAC,IAAI,KAAK,OAAO;AAC1E,YAAA,IAAI,EAAE,QAAQ;AACf,SAAA,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;QAE3C,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AACpC,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AAE/C,QAAA,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AAElD,QAAA,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;QAElD,OAAO;YACH,QAAQ;YACR,QAAQ;AACV,YAAA,aAAa,EAAE,SAAS;YACtB,SAAS;YACT,YAAY;SACf,CAAC;AACJ,KAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;;IAGF,SAAS,CAAC,MAAK;QACb,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAC3C,CAA0B,uBAAA,EAAA,OAAO,CAA0B,wBAAA,CAAA,CAC5D,CAAC;AAEF,QAAA,IAAI,CAAC,cAAc,IAAI,CAAC,KAAK;YAAE,OAAO;AAEtC,QAAA,MAAM,eAAe,GAAG,CAAC,CAAQ,KAAI;AACnC,YAAA,gBAAgB,EAAE,CAAC;AACnB,YAAA,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;YAE9B,MAAM,UAAU,GAAG,CAAe,CAAC;AACnC,YAAA,MAAM,MAAM,GAAG,UAAU,CAAC,MAAqB,CAAC;YAChD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAgB,CAAC;AAE3F,YAAA,IAAI,CAAC,WAAW;gBAAE,OAAO;YAEzB,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,SAAS;gBAAE,OAAO;;AAGvB,YAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC;YAC/C,IAAI,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,aAAa,MAAK,SAAS,EAAE;gBAC5C,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,OAAO;AACR,aAAA;AAED,YAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AACzC,YAAA,IAAI,QAAQ,EAAE;gBACZ,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAC7B,YAAY,CAAC,IAAI,CAAC,CAAC;AACpB,aAAA;AACH,SAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,MAAK;AAC5B,YAAA,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;AAC/B,YAAA,YAAY,EAAE,CAAC;AACjB,SAAC,CAAC;AAEF,QAAA,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAgC,CAAC,CAAC;AAC/E,QAAA,cAAc,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAEhE,QAAA,OAAO,MAAK;AACV,YAAA,gBAAgB,EAAE,CAAC;AACnB,YAAA,cAAc,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAgC,CAAC,CAAC;AAClF,YAAA,cAAc,CAAC,mBAAmB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACrE,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC;;AAGnE,IAAA,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAK;AAC/C,QAAA,gBAAgB,EAAE,CAAC;AACnB,QAAA,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;AACnC,KAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAEvB,IAAA,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAK;AAC/C,QAAA,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,QAAA,YAAY,EAAE,CAAC;AACjB,KAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;;AAGnB,IAAA,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe;AAAE,QAAA,OAAO,IAAI,CAAC;AAEhD,IAAA,QACEE,IAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CACG,SAAS,CAAC,WAAW,KACpBJ,GAAA,CAAC,WAAW,EAAA,EACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAClC,QAAQ,EAAE,SAAS,CAAC,WAAW,EAC/B,YAAY,EAAE,uBAAuB,EACrC,YAAY,EAAE,uBAAuB,EACrC,CAAA,CACH,EAEA,SAAS,CAAC,cAAc,KACvBA,GAAA,CAAC,cAAc,EAAA,EACb,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAClC,QAAQ,EAAE,SAAS,CAAC,cAAc,EAClC,YAAY,EAAE,uBAAuB,EACrC,YAAY,EAAE,uBAAuB,EACrC,CAAA,CACH,EAEA,SAAS,CAAC,eAAe,KACxBA,IAAC,eAAe,EAAA,EACd,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,eAAe,CAAC,YAAY,EAC1C,QAAQ,EAAE,SAAS,CAAC,eAAe,EACnC,YAAY,EAAE,uBAAuB,EACrC,YAAY,EAAE,uBAAuB,EAAA,CACrC,CACH,EAEA,SAAS,CAAC,YAAY,KACrBA,GAAC,CAAA,YAAY,IACX,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,eAAe,CAAC,SAAS,EACpC,QAAQ,EAAE,SAAS,CAAC,YAAY,EAChC,YAAY,EAAE,uBAAuB,EACrC,YAAY,EAAE,uBAAuB,EAAA,CACrC,CACH,CAAA,EAAA,CACA,EACH;AACJ,CAAC;;ACtTD,MAAM,SAAS,GAAG;IAChB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC7D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;IACzE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAClE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACvE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACvE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACvE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;CAC1E,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;IAC7D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,8BAA8B,EAAE;IAC/F,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAClE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACvE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACvE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACvE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;CAC1E,CAAC;AAEK,MAAM,qBAAqB,GAAG,CAAC,EAAE,OAAO,EAA8B,KAAI;AAC/E,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAKxC,IAAI,CAAC,CAAC;IAChB,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAE1D,EAAE,CAAC,CAAC;;AAGN,IAAA,MAAM,aAAa,GAAG,KAAK,GAAG,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IAEvE,SAAS,CAAC,MAAK;QACb,qBAAqB,CAAC,aAAa,CAAC,CAAC;AACvC,KAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,UAAU,GACd,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAA,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,MAAM,IAAG,CAAC,GAAG,aAAa,GAAG,kBAAkB,CAAC;IAEjG,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YACnD,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO;AACR,SAAA;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,CAA0B,uBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;QACnF,IAAI,CAAC,YAAY,EAAE;YACjB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,MAAM,SAAS,GAAG,YAAY,CAAC,qBAAqB,EAAE,CAAC;QAEvD,IAAI,MAAM,GAAG,QAAQ,CAAC;AACtB,QAAA,IAAI,SAAS,GAAG,CAAC,QAAQ,CAAC;QAC1B,IAAI,OAAO,GAAG,QAAQ,CAAC;AACvB,QAAA,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAEzB,QAAA,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CACnC,CAAA,uBAAA,EAA0B,OAAO,CAAA,4BAAA,EAA+B,IAAI,CAAC,EAAE,CAAA,EAAA,CAAI,CAC5E,CAAC;AAEF,YAAA,IAAI,CAAC,MAAM;gBAAE,SAAS;AAEtB,YAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;AAChD,YAAA,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC;YAC9C,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACxC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAClC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACtC,SAAA;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE;YACvB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO;AACR,SAAA;AAED,QAAA,gBAAgB,CAAC;AACf,YAAA,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG;AAC3B,YAAA,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC,IAAI;YAC9B,KAAK,EAAE,QAAQ,GAAG,OAAO;YACzB,MAAM,EAAE,SAAS,GAAG,MAAM;AAC3B,SAAA,CAAC,CAAC;KACJ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjC,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;QAElD,MAAM,YAAY,GAAG,MAAK;AACxB,YAAA,gBAAgB,CAAC,CAAC,IAAI,MAAM,IAAI,GAAE,MAAA,CAAA,MAAA,CAAA,EAAA,EAAM,IAAI,CAAG,GAAE,IAAI,CAAC,CAAC,CAAC;AAC1D,SAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AACtD,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AAEhD,QAAA,OAAO,MAAK;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AACzD,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,MAAM,UAAU,GAAG,MAAK;QACtB,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;AAC7D,QAAA,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE;AACxC,YAAA,KAAK,EAAE,UAAU;AAClB,SAAA,CAAC,CAAC;QAEH,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,CAAC;IAEF,MAAM,aAAa,GAAG,MAAK;QACzB,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC9D,QAAA,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE;AAC3C,YAAA,KAAK,EAAE,UAAU;AAClB,SAAA,CAAC,CAAC;QAEH,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,CAAC;AAEF,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAa,KAAI;QAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC9D,QAAA,aAAa,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE;AACpD,YAAA,KAAK,EAAE,UAAU;YACjB,KAAK;AACN,SAAA,CAAC,CAAC;QACH,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,CAAC;AAEF,IAAA,MAAM,YAAY,GAAG,CAAC,KAAa,KAAI;QACrC,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC9D,QAAA,aAAa,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE;AAC9C,YAAA,KAAK,EAAE,UAAU;YACjB,KAAK;AACN,SAAA,CAAC,CAAC;QACH,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,CAAC;AAEF,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAA8C,KAAI;QAC5E,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC9D,QAAA,aAAa,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE;AACpD,YAAA,KAAK,EAAE,UAAU;YACjB,KAAK;AACN,SAAA,CAAC,CAAC;QACH,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,CAAC;AAEF,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAAkC,KAAI;QAC9D,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;AAC9D,QAAA,aAAa,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;AAClD,YAAA,KAAK,EAAE,UAAU;YACjB,KAAK;AACN,SAAA,CAAC,CAAC;QACH,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC1B,KAAC,CAAC;AAEF,IAAA,IAAI,CAAC,aAAa;AAAE,QAAA,OAAO,IAAI,CAAC;IAEhC,QACEE,4BAEEF,GACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,uCAAuC,EACjD,KAAK,EAAE;AACL,oBAAA,GAAG,EAAE,CAAA,EAAG,aAAa,CAAC,GAAG,CAAI,EAAA,CAAA;AAC7B,oBAAA,IAAI,EAAE,CAAA,EAAG,aAAa,CAAC,IAAI,CAAI,EAAA,CAAA;AAC/B,oBAAA,KAAK,EAAE,CAAA,EAAG,aAAa,CAAC,KAAK,CAAI,EAAA,CAAA;AACjC,oBAAA,MAAM,EAAE,CAAA,EAAG,aAAa,CAAC,MAAM,CAAI,EAAA,CAAA;AACnC,oBAAA,MAAM,EAAE,+BAA+B;AACvC,oBAAA,eAAe,EAAE,4BAA4B;AAC7C,oBAAA,YAAY,EAAE,KAAK;AACpB,iBAAA,EAAA,CACD,EAEFA,GACE,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,mCAAmC,EAC7C,KAAK,EAAE;oBACL,GAAG,EAAE,CAAG,EAAA,aAAa,CAAC,GAAG,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAI,EAAA,CAAA;oBACxD,IAAI,EAAE,GAAG,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAI,EAAA,CAAA;oBACrD,SAAS,EAAE,uBAAuB;AACnC,iBAAA,EAAA,EAAA,EAAA,QAAA,EACDE,IAAC,CAAA,OAAO,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAA,EAAA,EAAA,QAAA,EAAA,CAC1DF,GAAC,CAAA,cAAc,kBAAC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EACrBA,GAAC,CAAA,MAAM,EACL,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,+DAA+D,EACzE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EACtC,EAAA,EAAA,QAAA,EAAAA,GAAA,CAACM,gBAAY,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,CAAG,IACrD,EACM,CAAA,CAAA,EACjBN,GAAC,CAAA,cAAc,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,UAAU,EAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,EAC7D,EAAA,EAAA,QAAA,EAAAE,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,WAAW,EAExB,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,4BAA4B,EACtC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAC/C,EAAA,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,SAAS,EAAG,CAAA,EAAA,aAAA,CAAA,EAAA,CAAA,CAEtB,EAETA,GAAA,CAAC,SAAS,EAAA,EAAA,CAAG,EAGbE,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,WAAW,iBACxBF,GAAC,CAAA,KAAK,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,qBAAqB,EAAA,EAAA,EAAA,QAAA,EAAA,OAAA,EAAA,CAAA,CAAc,EACpDE,IAAA,CAAC,YAAY,EAAA,EAAA,QAAA,EAAA,CACXF,GAAC,CAAA,mBAAmB,kBAAC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAC1BE,IAAC,CAAA,MAAM,kBAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,wBAAwB,EACpE,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAM,SAAS,EAAC,yBAAyB,EACvC,EAAA,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,UAAU,EAAA,EAAC,SAAS,EAAC,SAAS,EAAG,CAAA,EAAA,cAAA,CAAA,EAAA,CAAA,CAE7B,EACPA,GAAA,CAAC,WAAW,EAAA,EAAC,SAAS,EAAC,oBAAoB,EAAG,CAAA,CAAA,EAAA,CAAA,CACvC,EACW,CAAA,CAAA,EACtBE,KAAC,mBAAmB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAEjD,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAC,eAAe,EAAA,EAAA,QAAA,EAAA,CACdA,KAAC,sBAAsB,EAAA,EAAA,QAAA,EAAA,CACrBF,GAAC,CAAA,UAAU,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,wBAEhB,EACzBA,GAAA,CAAC,sBAAsB,EAAA,EAAA,QAAA,EACpB,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,MACnBA,GAAC,CAAA,gBAAgB,EAEf,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,EAC9C,EAAA,EAAA,QAAA,EAAAE,IAAA,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,EAAA,EAAA,QAAA,EAAA,CACtCF,GACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wBAAwB,EAClC,KAAK,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,EACvC,CAAA,EACD,KAAK,CAAC,KAAK,CACR,EAAA,CAAA,CAAA,EAAA,CAAA,EARD,KAAK,CAAC,KAAK,CASC,CACpB,CAAC,EAAA,CACqB,CACT,EAAA,CAAA,EAGlBE,KAAC,eAAe,EAAA,EAAA,QAAA,EAAA,CACdA,IAAC,CAAA,sBAAsB,eACrBF,GAAC,CAAA,IAAI,EAAC,EAAA,SAAS,EAAC,cAAc,EAAA,CAAG,EAEV,YAAA,CAAA,EAAA,CAAA,EACzBA,GAAC,CAAA,sBAAsB,EACpB,EAAA,QAAA,EAAA,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,MACrBA,GAAA,CAAC,gBAAgB,EAEf,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAA,EAAA,EAAA,QAAA,EACxCE,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,yBAAyB,iBACtCF,GACE,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,2EAA2E,EACrF,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAEzB,EAAA,EAAA,QAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EACL,KAAK,CAAC,KAAK,CACR,EAAA,CAAA,CAAA,EAAA,CAAA,EATD,KAAK,CAAC,KAAK,CAUC,CACpB,CAAC,GACqB,CACT,EAAA,CAAA,CAAA,EAAA,CAAA,CACE,CACT,EAAA,CAAA,CAAA,EAAA,CAAA,CACX,EAGNE,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,WAAW,iBACxBF,GAAC,CAAA,KAAK,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,qBAAqB,EAAkB,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,CAAA,EACxDE,KAAC,YAAY,EAAA,EAAA,QAAA,EAAA,CACXF,GAAC,CAAA,mBAAmB,kBAAC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAC1BE,IAAC,CAAA,MAAM,kBAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,wBAAwB,EACpE,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAA,MAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAM,SAAS,EAAC,yBAAyB,EAAA,EAAA,EAAA,QAAA,EAAA,CACvCF,IAAC,cAAc,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAEjC,kBAAA,CAAA,EAAA,CAAA,CAAA,EACPA,IAAC,WAAW,EAAA,EAAC,SAAS,EAAC,oBAAoB,EAAG,CAAA,CAAA,EAAA,CAAA,CACvC,EACW,CAAA,CAAA,EACtBE,KAAC,mBAAmB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,SAAS,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAEjD,EAAA,EAAA,QAAA,EAAA,CAAAA,IAAA,CAAC,eAAe,EAAA,EAAA,QAAA,EAAA,CACdA,KAAC,sBAAsB,EAAA,EAAA,QAAA,EAAA,CACrBF,GAAC,CAAA,cAAc,IAAC,SAAS,EAAC,cAAc,EAAA,CAAG,EAEpB,YAAA,CAAA,EAAA,CAAA,EACzBE,IAAC,CAAA,sBAAsB,eACrBF,GAAC,CAAA,gBAAgB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAExC,EAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EACnBA,GAAC,CAAA,gBAAgB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC,QAAQ,CAAC,EAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAA,CAE1C,EACnBA,GAAC,CAAA,gBAAgB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC,OAAO,CAAC,EAAA,EAAA,EAAA,QAAA,EAAA,OAAA,EAAA,CAAA,CAEzC,EACnBA,GAAC,CAAA,gBAAgB,EAAC,MAAA,CAAA,MAAA,CAAA,EAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC,SAAS,CAAC,EAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,CAAA,CAE3C,IACI,CACT,EAAA,CAAA,EAGlBE,IAAC,CAAA,eAAe,eACdA,IAAC,CAAA,sBAAsB,EACrB,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,YAAY,EAAC,EAAA,SAAS,EAAC,cAAc,EAAG,CAAA,EAAA,UAAA,CAAA,EAAA,CAElB,EACzBE,IAAA,CAAC,sBAAsB,EACrB,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,gBAAgB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,EAAA,EAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,CAErC,EACnBA,GAAA,CAAC,gBAAgB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,4BAExC,EACnBA,GAAA,CAAC,gBAAgB,EAAA,MAAA,CAAA,MAAA,CAAA,EAAC,OAAO,EAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,4BAExC,CACI,EAAA,CAAA,CAAA,EAAA,CACT,CACE,EAAA,CAAA,CAAA,CAAA,EAAA,CACT,KACX,EAENA,GAAA,CAAC,SAAS,EAAA,EAAA,CAAG,EAGbE,IAAA,CAAC,MAAM,EAAA,MAAA,CAAA,MAAA,CAAA,EACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,oEAAoE,EAC9E,OAAO,EAAE,aAAa,EACtB,EAAA,EAAA,QAAA,EAAA,CAAAF,GAAA,CAAC,MAAM,EAAA,EAAC,SAAS,EAAC,SAAS,EAAG,CAAA,EAAA,gBAAA,CAAA,EAAA,CAAA,CAEvB,KACL,EACS,CAAA,CAAA,CAAA,EAAA,CAAA,CACT,EACN,CAAA,CAAA,CAAA,EAAA,CACL,EACH;AACJ,CAAC;;AC1XM,MAAM,KAAK,GAAG,CAAC,KAA+B,KAAI;;IACvD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAChD,MAAM,YAAY,GAAG,OAAuB,CAAC;AAC7C,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;AACjC,IAAA,MAAM,KAAK,GAAG,OAAO,CACnB,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EACzD,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CACxB,CAAC;AAEF,IAAA,MAAM,WAAW,GAAG,KAAK,GAAG,4BAA4B,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAE3E,IAAA,QACEE,IAAK,CAAA,KAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,SAAS,EAAC,qBAAqB,0BAAuB,KAAK,CAAC,OAAO,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CACtEA,KAACK,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,UAAU,EAAA,EAAA,mBAAA,EAAqB,CAAC,CAAC,WAAW,EACvD,EAAA,EAAA,QAAA,EAAA,CAAAP,GAAA,CAAA,UAAA,EAAA,EAAA,QAAA,EACG,MAAA,CAAA,EAAA,GAAA,YAAY,CAAC,KAAK,0CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;;AAE9C,wBAAAA,GAAA,CAAA,KAAA,EAAA,EAAa,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,EAAE,EAAA,EAAjC,CAAC,CAAoC,CAChD,CAAC,EACO,CAAA,EACXA,GAAC,CAAA,SAAS,EAAE,EAAA,QAAA,EAAA,QAAQ,EAAa,CAAA,CAAA,EAAA,CAAA,CACzB,EAET,CAAC,MAAM,CAAC,QAAQ,KACfE,IACE,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAJ,GAAA,CAAC,qBAAqB,EAAA,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAA,CAAI,EACjDA,GAAA,CAAC,aAAa,EAAA,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAI,CAAA,EACzCA,GAAC,CAAA,mBAAmB,EAAC,EAAA,OAAO,EAAE,KAAK,CAAC,OAAO,EAAI,CAAA,CAAA,EAAA,CAC9C,CACJ,CAAA,EAAA,CAAA,CACG,EACN;AACJ,CAAC;;AClCM,MAAM,aAAa,GAAG,CAAC,KAA+B,KAAI;;IAC/D,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAChD,MAAM,WAAW,GAAG,OAA2B,CAAC;AAChD,IAAA,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;AACjC,IAAA,MAAM,KAAK,GAAG,OAAO,CACnB,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EACzD,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CACxB,CAAC;AAEF,IAAA,MAAM,OAAO,GAAG,CAAA,CAAA,EAAA,GAAA,WAAW,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,IAAG,SAAS,GAAG,SAAS,CAAC;AAEpE,IAAA,MAAM,WAAW,GAAG,CAAC,CAAyC,KAAI;QAChE,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO;QAC5B,CAAC,CAAC,eAAe,EAAE,CAAC;AAEpB,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACvC,YAAA,4BAA4B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,SAAA;AACH,KAAC,CAAC;AAEF,IAAA,QACEA,GAAA,CAAC,OAAO,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACF,UAAU,EACd,EAAA,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,CAAA,EAAA,GAAA,MAAA,WAAW,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,EACxC,OAAO,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,CAAC,EACxC,KAAK,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,CAAC,KAAK,0CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,MAAM,EACzC,MAAM,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,CAAC,KAAK,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,aAAa,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,QAAQ,EAC5B,wBAAA,EAAA,WAAW,CAAC,EAAE,EACtC,SAAS,EAAE,EAAE,CACX,kCAAkC,CACnC,EACD,KAAK,EAAE;AACL,YAAA,eAAe,EAAE,CAAA,EAAA,GAAA,WAAW,CAAC,KAAK,0CAAE,eAAe;YACnD,KAAK,EAAE,MAAA,CAAA,EAAA,GAAA,WAAW,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,SAAS;SAC7C,EACA,EAAA,EAAA,QAAA,EAAA,QAAQ,EACD,CAAA,CAAA,EACV;AACJ,CAAC;;AC7CM,MAAM,QAAQ,GAAG,CAAC,KAA+B,KAAI;AAC1D,IAAA,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;AAEvC,IAAA,OAAOA,IAACQ,UAAU,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAK,UAAU,EAAG,EAAA,QAAA,EAAA,QAAQ,IAAc,CAAC;AAC7D,CAAC;;;;;ACHY,MAAA,OAAO,GAAG;AACrB,IAAA,KAAK,EAAE;AACL,QAAA,MAAM,EAAE,KAAK;AACd,KAAA;AACD,IAAA,WAAW,EAAE;AACX,QAAA,MAAM,EAAE,QAAQ;AACjB,KAAA;AACD,IAAA,iBAAiB,EAAE;AACjB,QAAA,MAAM,EAAE,aAAa;AACtB,KAAA;;;;;","x_google_ignoreList":[0,1,2,3,4,5,6,7]}
package/dist/tabs.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"tabs.js","sources":["../src/tabs/elements/tabs-container.tsx","../src/tabs/elements/tabs-item-content.tsx","../src/tabs/elements/tabs-item-heading.tsx","../src/tabs/elements/tabs-list.tsx","../src/tabs/index.ts"],"sourcesContent":["import type { PluginElementRenderProps, SlateElement } from '@yoopta/editor';\nimport { Blocks, useYooptaEditor } from '@yoopta/editor';\nimport { Element, Transforms } from 'slate';\n\nimport { Tabs } from '../../ui/tabs';\n\nexport const TabsContainer = (props: PluginElementRenderProps) => {\n const { attributes, children, blockId, element } = props;\n const editor = useYooptaEditor();\n\n const onValueChange = (value: string) => {\n const slate = Blocks.getBlockSlate(editor, { id: blockId });\n if (!slate) return;\n\n Transforms.setNodes<SlateElement>(\n slate,\n { props: { ...element.props, activeTabId: value } },\n {\n at: [0],\n match: (n) => Element.isElement(n) && (n as SlateElement).type === 'tabs-container',\n },\n );\n };\n\n return (\n <Tabs\n {...attributes}\n value={element.props?.activeTabId}\n onValueChange={onValueChange}\n className=\"w-full\">\n {children}\n </Tabs>\n );\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\n\nimport { TabsContent } from '../../ui/tabs';\n\nexport const TabsItemContent = (props: PluginElementRenderProps) => {\n const { attributes, children, element } = props;\n\n return (\n <TabsContent {...attributes} value={element.props?.referenceId} className=\"mt-2\">\n {children}\n </TabsContent>\n );\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\nimport { useYooptaEditor } from '@yoopta/editor';\nimport { TabsCommands } from '@yoopta/tabs';\nimport { X } from 'lucide-react';\n\nimport { TabsTrigger } from '../../ui/tabs';\n\nexport const TabsItemHeading = (props: PluginElementRenderProps) => {\n const { attributes, children, element, blockId } = props;\n const editor = useYooptaEditor();\n\n const deleteTabItem = () => {\n if (editor.readOnly) return;\n\n TabsCommands.deleteTabItem(editor, blockId, { tabId: element.id });\n };\n\n return (\n <TabsTrigger\n {...attributes}\n value={element.id}\n className=\"relative group/tab flex items-center gap-2 pr-8 whitespace-nowrap\">\n <div className=\"flex-1 min-w-0\">{children}</div>\n {!editor.readOnly && (\n <span\n contentEditable={false}\n onClick={deleteTabItem}\n className=\"absolute right-1 flex items-center justify-center rounded-sm opacity-0 group-hover/tab:opacity-100 transition-opacity hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 p-1\"\n title=\"Close tab\">\n <X className=\"h-3 w-3 shrink-0 text-muted-foreground\" />\n </span>\n )}\n </TabsTrigger>\n );\n};\n","import type { PluginElementRenderProps } from '@yoopta/editor';\nimport { useYooptaEditor } from '@yoopta/editor';\nimport { TabsCommands } from '@yoopta/tabs';\nimport { Plus } from 'lucide-react';\n\nimport { ScrollArea, ScrollBar } from '../../ui/scroll-area';\nimport { TabsList } from '../../ui/tabs';\n\nexport const TabsListElement = (props: PluginElementRenderProps) => {\n const { attributes, children, blockId } = props;\n const editor = useYooptaEditor();\n\n const addTabItem = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n\n TabsCommands.addTabItem(editor, blockId);\n };\n\n return (\n <ScrollArea className=\"w-full\">\n <TabsList {...attributes} className=\"w-full relative justify-start\">\n {children}\n {!editor.readOnly && (\n <button\n type=\"button\"\n contentEditable={false}\n onClick={addTabItem}\n className=\"ml-1 flex items-center justify-center rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 p-1.5\"\n title=\"Add tab\">\n <Plus className=\"h-4 w-4 shrink-0 text-muted-foreground\" />\n </button>\n )}\n </TabsList>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n );\n};\n","import { TabsContainer } from './elements/tabs-container';\nimport { TabsItemContent } from './elements/tabs-item-content';\nimport { TabsItemHeading } from './elements/tabs-item-heading';\nimport { TabsListElement } from './elements/tabs-list';\n\nexport const TabsUI = {\n 'tabs-container': {\n render: TabsContainer,\n },\n 'tabs-list': {\n render: TabsListElement,\n },\n 'tabs-item-heading': {\n render: TabsItemHeading,\n },\n 'tabs-item-content': {\n render: TabsItemContent,\n },\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}