{
  "version": 3,
  "sources": ["../../../../../src/lib/ui/components/primitives/TldrawUiDropdownMenu.tsx"],
  "sourcesContent": ["import * as _DropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { preventDefault, useContainer } from '@tldraw/editor'\nimport classNames from 'classnames'\nimport { ReactNode } from 'react'\nimport { useMenuIsOpen } from '../../hooks/useMenuIsOpen'\nimport { TldrawUiButton } from './Button/TldrawUiButton'\nimport { TldrawUiButtonIcon } from './Button/TldrawUiButtonIcon'\nimport { TldrawUiButtonLabel } from './Button/TldrawUiButtonLabel'\nimport { TldrawUiIcon } from './TldrawUiIcon'\n\n/** @public */\nexport interface TLUiDropdownMenuRootProps {\n\tid: string\n\tchildren: ReactNode\n\tmodal?: boolean\n\tdebugOpen?: boolean\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuRoot({\n\tid,\n\tchildren,\n\tmodal = false,\n\tdebugOpen = false,\n}: TLUiDropdownMenuRootProps) {\n\tconst [open, onOpenChange] = useMenuIsOpen(id)\n\n\treturn (\n\t\t<_DropdownMenu.Root\n\t\t\topen={debugOpen || open}\n\t\t\tdir=\"ltr\"\n\t\t\tmodal={modal}\n\t\t\tonOpenChange={onOpenChange}\n\t\t>\n\t\t\t{children}\n\t\t</_DropdownMenu.Root>\n\t)\n}\n\n/** @public */\nexport interface TLUiDropdownMenuTriggerProps {\n\tchildren?: ReactNode\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuTrigger({ children, ...rest }: TLUiDropdownMenuTriggerProps) {\n\treturn (\n\t\t<_DropdownMenu.Trigger\n\t\t\tdir=\"ltr\"\n\t\t\tasChild\n\t\t\t// Firefox fix: Stop the dropdown immediately closing after touch\n\t\t\tonTouchEnd={(e) => preventDefault(e)}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</_DropdownMenu.Trigger>\n\t)\n}\n\n/** @public */\nexport interface TLUiDropdownMenuContentProps {\n\tid?: string\n\tclassName?: string\n\tside?: 'bottom' | 'top' | 'right' | 'left'\n\talign?: 'start' | 'center' | 'end'\n\tsideOffset?: number\n\talignOffset?: number\n\tchildren: ReactNode\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuContent({\n\tclassName,\n\tside = 'bottom',\n\talign = 'start',\n\tsideOffset = 8,\n\talignOffset = 8,\n\tchildren,\n}: TLUiDropdownMenuContentProps) {\n\tconst container = useContainer()\n\n\treturn (\n\t\t<_DropdownMenu.Portal container={container}>\n\t\t\t<_DropdownMenu.Content\n\t\t\t\tclassName={classNames('tlui-menu', className)}\n\t\t\t\tside={side}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\talign={align}\n\t\t\t\talignOffset={alignOffset}\n\t\t\t\tcollisionPadding={4}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</_DropdownMenu.Content>\n\t\t</_DropdownMenu.Portal>\n\t)\n}\n\n/** @public */\nexport interface TLUiDropdownMenuSubProps {\n\tid: string\n\tchildren: ReactNode\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuSub({ id, children }: TLUiDropdownMenuSubProps) {\n\tconst [open, onOpenChange] = useMenuIsOpen(id)\n\n\treturn (\n\t\t<_DropdownMenu.Sub open={open} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</_DropdownMenu.Sub>\n\t)\n}\n\n/** @public */\nexport interface TLUiDropdownMenuSubTriggerProps {\n\tlabel: string\n\tid?: string\n\ttitle?: string\n\tdisabled?: boolean\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuSubTrigger({\n\tid,\n\tlabel,\n\ttitle,\n\tdisabled,\n}: TLUiDropdownMenuSubTriggerProps) {\n\treturn (\n\t\t<_DropdownMenu.SubTrigger dir=\"ltr\" asChild disabled={disabled}>\n\t\t\t<TldrawUiButton\n\t\t\t\tdata-testid={id}\n\t\t\t\ttype=\"menu\"\n\t\t\t\tclassName=\"tlui-menu__submenu__trigger\"\n\t\t\t\tdisabled={disabled}\n\t\t\t\ttitle={title}\n\t\t\t>\n\t\t\t\t<TldrawUiButtonLabel>{label}</TldrawUiButtonLabel>\n\t\t\t\t<TldrawUiButtonIcon icon=\"chevron-right\" small />\n\t\t\t</TldrawUiButton>\n\t\t</_DropdownMenu.SubTrigger>\n\t)\n}\n\n/** @public */\nexport interface TLUiDropdownMenuSubContentProps {\n\tid?: string\n\talignOffset?: number\n\tsideOffset?: number\n\tsize?: 'tiny' | 'small' | 'medium' | 'wide'\n\tchildren: ReactNode\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuSubContent({\n\tid,\n\talignOffset = -1,\n\tsideOffset = -6,\n\tsize = 'small',\n\tchildren,\n}: TLUiDropdownMenuSubContentProps) {\n\tconst container = useContainer()\n\treturn (\n\t\t<_DropdownMenu.Portal container={container}>\n\t\t\t<_DropdownMenu.SubContent\n\t\t\t\tdata-testid={id}\n\t\t\t\tclassName=\"tlui-menu tlui-menu__submenu__content\"\n\t\t\t\talignOffset={alignOffset}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tcollisionPadding={4}\n\t\t\t\tdata-size={size}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</_DropdownMenu.SubContent>\n\t\t</_DropdownMenu.Portal>\n\t)\n}\n\n/** @public */\nexport interface TLUiDropdownMenuGroupProps {\n\tchildren: ReactNode\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuGroup({ children }: TLUiDropdownMenuGroupProps) {\n\treturn (\n\t\t<_DropdownMenu.Group dir=\"ltr\" className=\"tlui-menu__group\">\n\t\t\t{children}\n\t\t</_DropdownMenu.Group>\n\t)\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuIndicator() {\n\treturn (\n\t\t<_DropdownMenu.ItemIndicator dir=\"ltr\" asChild>\n\t\t\t<TldrawUiIcon icon=\"check\" />\n\t\t</_DropdownMenu.ItemIndicator>\n\t)\n}\n\n/** @public */\nexport interface TLUiDropdownMenuItemProps {\n\tnoClose?: boolean\n\tchildren: ReactNode\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuItem({ noClose, children }: TLUiDropdownMenuItemProps) {\n\treturn (\n\t\t<_DropdownMenu.Item dir=\"ltr\" asChild onClick={noClose ? preventDefault : undefined}>\n\t\t\t{children}\n\t\t</_DropdownMenu.Item>\n\t)\n}\n\n/** @public */\nexport interface TLUiDropdownMenuCheckboxItemProps {\n\tchecked?: boolean\n\tonSelect?(e: Event): void\n\tdisabled?: boolean\n\ttitle: string\n\tchildren: ReactNode\n}\n\n/** @public @react */\nexport function TldrawUiDropdownMenuCheckboxItem({\n\tchildren,\n\tonSelect,\n\t...rest\n}: TLUiDropdownMenuCheckboxItemProps) {\n\treturn (\n\t\t<_DropdownMenu.CheckboxItem\n\t\t\tdir=\"ltr\"\n\t\t\tclassName=\"tlui-button tlui-button__menu tlui-button__checkbox\"\n\t\t\tonSelect={(e) => {\n\t\t\t\tonSelect?.(e)\n\t\t\t\tpreventDefault(e)\n\t\t\t}}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<div className=\"tlui-button__checkbox__indicator\">\n\t\t\t\t<_DropdownMenu.ItemIndicator dir=\"ltr\">\n\t\t\t\t\t<TldrawUiIcon icon=\"check\" small />\n\t\t\t\t</_DropdownMenu.ItemIndicator>\n\t\t\t</div>\n\t\t\t{children}\n\t\t</_DropdownMenu.CheckboxItem>\n\t)\n}\n"],
  "mappings": "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",
  "names": []
}
