{
  "version": 3,
  "sources": ["../../../../../src/lib/ui/components/primitives/DropdownMenu.tsx"],
  "sourcesContent": ["import { preventDefault, useContainer } from '@bigbluebutton/editor'\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu'\nimport { useMenuIsOpen } from '../../hooks/useMenuIsOpen'\nimport { TLUiTranslationKey } from '../../hooks/useTranslation/TLUiTranslationKey'\nimport { Button, TLUiButtonProps } from './Button'\nimport { Icon } from './Icon'\n\n/** @public */\nexport function Root({\n\tid,\n\tchildren,\n\tmodal = false,\n\tdebugOpen = false,\n}: {\n\tid: string\n\tchildren: any\n\tmodal?: boolean\n\tdebugOpen?: boolean\n}) {\n\tconst [open, onOpenChange] = useMenuIsOpen(id)\n\n\treturn (\n\t\t<DropdownMenu.Root open={debugOpen || open} dir=\"ltr\" modal={modal} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</DropdownMenu.Root>\n\t)\n}\n\n/** @public */\nexport function Trigger({\n\tchildren,\n\t'data-testid': testId,\n}: {\n\tchildren: any\n\t'data-testid'?: string\n}) {\n\treturn (\n\t\t<DropdownMenu.Trigger\n\t\t\tdir=\"ltr\"\n\t\t\tdata-testid={testId}\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>\n\t\t\t{children}\n\t\t</DropdownMenu.Trigger>\n\t)\n}\n\n/** @public */\nexport function Content({\n\tside = 'bottom',\n\talign = 'start',\n\tsideOffset = 8,\n\talignOffset = 8,\n\tchildren,\n}: {\n\tchildren: any\n\talignOffset?: number\n\tsideOffset?: number\n\talign?: 'start' | 'center' | 'end'\n\tside?: 'bottom' | 'top' | 'right' | 'left'\n}) {\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=\"tlui-menu\"\n\t\t\t\talign={align}\n\t\t\t\tsideOffset={sideOffset}\n\t\t\t\tside={side}\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 function Sub({ id, children }: { id: string; children: any }) {\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 function SubTrigger({\n\tlabel,\n\t'data-testid': testId,\n\t'data-direction': dataDirection,\n}: {\n\tlabel: TLUiTranslationKey | Exclude<string, TLUiTranslationKey>\n\t'data-testid'?: string\n\t'data-direction'?: 'left' | 'right'\n}) {\n\treturn (\n\t\t<DropdownMenu.SubTrigger dir=\"ltr\" data-direction={dataDirection} data-testid={testId} asChild>\n\t\t\t<Button\n\t\t\t\ttype=\"menu\"\n\t\t\t\tclassName=\"tlui-menu__submenu__trigger\"\n\t\t\t\tlabel={label}\n\t\t\t\ticon=\"chevron-right\"\n\t\t\t/>\n\t\t</DropdownMenu.SubTrigger>\n\t)\n}\n\n/** @public */\nexport function SubContent({\n\talignOffset = 0,\n\tsideOffset = 5,\n\tchildren,\n}: {\n\talignOffset?: number\n\tsideOffset?: number\n\tchildren: any\n}) {\n\tconst container = useContainer()\n\treturn (\n\t\t<DropdownMenu.Portal container={container}>\n\t\t\t<DropdownMenu.SubContent\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>\n\t\t\t\t{children}\n\t\t\t</DropdownMenu.SubContent>\n\t\t</DropdownMenu.Portal>\n\t)\n}\n\n/** @public */\nexport function Group({\n\tchildren,\n\tsize = 'medium',\n}: {\n\tchildren: any\n\tsize?: 'tiny' | 'small' | 'medium' | 'wide'\n}) {\n\treturn (\n\t\t<DropdownMenu.Group dir=\"ltr\" className=\"tlui-menu__group\" data-size={size}>\n\t\t\t{children}\n\t\t</DropdownMenu.Group>\n\t)\n}\n\n/** @public */\nexport function Indicator() {\n\treturn (\n\t\t<DropdownMenu.ItemIndicator dir=\"ltr\" asChild>\n\t\t\t<Icon icon=\"check\" />\n\t\t</DropdownMenu.ItemIndicator>\n\t)\n}\n\n/** @public */\nexport interface DropdownMenuItemProps extends TLUiButtonProps {\n\tnoClose?: boolean\n}\n\n/** @public */\nexport function Item({ noClose, ...props }: DropdownMenuItemProps) {\n\treturn (\n\t\t<DropdownMenu.Item\n\t\t\tdir=\"ltr\"\n\t\t\tasChild\n\t\t\tonClick={noClose || props.isChecked !== undefined ? preventDefault : undefined}\n\t\t>\n\t\t\t<Button {...props} />\n\t\t</DropdownMenu.Item>\n\t)\n}\n\n/** @public */\nexport interface DropdownMenuCheckboxItemProps {\n\tchecked?: boolean\n\tonSelect?: (e: Event) => void\n\tdisabled?: boolean\n\ttitle: string\n\tchildren: any\n}\n\n/** @public */\nexport function CheckboxItem({ children, onSelect, ...rest }: DropdownMenuCheckboxItemProps) {\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<Icon small icon={rest.checked ? 'check' : 'checkbox-empty'} />\n\t\t\t{children}\n\t\t</DropdownMenu.CheckboxItem>\n\t)\n}\n\n/** @public */\nexport function RadioItem({ children, onSelect, ...rest }: DropdownMenuCheckboxItemProps) {\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<Icon 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": []
}
