{
  "version": 3,
  "sources": ["../../../../../src/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.tsx"],
  "sourcesContent": ["import { SharedStyle, StyleProp, tlmenus, useEditor } from '@tldraw/editor'\nimport * as React from 'react'\nimport { StyleValuesForUi } from '../../../styles'\nimport { TLUiTranslationKey } from '../../hooks/useTranslation/TLUiTranslationKey'\nimport { useTranslation } from '../../hooks/useTranslation/useTranslation'\nimport { styleMessageId, stylePanelMessages } from '../../styleMessages'\nimport { TldrawUiButtonIcon } from '../primitives/Button/TldrawUiButtonIcon'\nimport { TldrawUiMenuContextProvider } from '../primitives/menus/TldrawUiMenuContext'\nimport {\n\tTldrawUiPopover,\n\tTldrawUiPopoverContent,\n\tTldrawUiPopoverTrigger,\n} from '../primitives/TldrawUiPopover'\nimport { TldrawUiToolbar, TldrawUiToolbarButton } from '../primitives/TldrawUiToolbar'\nimport { useStylePanelContext } from './StylePanelContext'\n\n/** @public */\nexport interface StylePanelDoubleDropdownPickerProps<T extends string> {\n\tuiTypeA: string\n\tuiTypeB: string\n\tlabel: TLUiTranslationKey | Exclude<string, TLUiTranslationKey>\n\tlabelA: TLUiTranslationKey | Exclude<string, TLUiTranslationKey>\n\tlabelB: TLUiTranslationKey | Exclude<string, TLUiTranslationKey>\n\titemsA: StyleValuesForUi<T>\n\titemsB: StyleValuesForUi<T>\n\tstyleA: StyleProp<T>\n\tstyleB: StyleProp<T>\n\tvalueA: SharedStyle<T>\n\tvalueB: SharedStyle<T>\n\tonValueChange?(style: StyleProp<T>, value: T): void\n}\n\nfunction StylePanelDoubleDropdownPickerInner<T extends string>(\n\tprops: StylePanelDoubleDropdownPickerProps<T>\n) {\n\tconst msg = useTranslation()\n\treturn (\n\t\t<div className=\"tlui-style-panel__double-select-picker\">\n\t\t\t<div title={msg(props.label)} className=\"tlui-style-panel__double-select-picker-label\">\n\t\t\t\t{msg(props.label)}\n\t\t\t</div>\n\t\t\t<TldrawUiToolbar orientation=\"horizontal\" label={msg(props.label)}>\n\t\t\t\t<StylePanelDoubleDropdownPickerInline {...props} />\n\t\t\t</TldrawUiToolbar>\n\t\t</div>\n\t)\n}\n\nfunction StylePanelDoubleDropdownPickerInlineInner<T extends string>(\n\tprops: StylePanelDoubleDropdownPickerProps<T>\n) {\n\tconst ctx = useStylePanelContext()\n\tconst {\n\t\tuiTypeA,\n\t\tuiTypeB,\n\t\tlabelA,\n\t\tlabelB,\n\t\titemsA,\n\t\titemsB,\n\t\tstyleA,\n\t\tstyleB,\n\t\tvalueA,\n\t\tvalueB,\n\t\tonValueChange = ctx.onValueChange,\n\t} = props\n\n\tif (valueA === undefined && valueB === undefined) return null\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownHalf\n\t\t\t\tid={`style panel ${uiTypeA} A`}\n\t\t\t\tuiType={uiTypeA}\n\t\t\t\tlabel={labelA}\n\t\t\t\titems={itemsA}\n\t\t\t\tstyle={styleA}\n\t\t\t\tvalue={valueA}\n\t\t\t\tonValueChange={onValueChange}\n\t\t\t\tsideOffset={80}\n\t\t\t\tinvertIcon\n\t\t\t/>\n\t\t\t<DropdownHalf\n\t\t\t\tid={`style panel ${uiTypeB} B`}\n\t\t\t\tuiType={uiTypeB}\n\t\t\t\tlabel={labelB}\n\t\t\t\titems={itemsB}\n\t\t\t\tstyle={styleB}\n\t\t\t\tvalue={valueB}\n\t\t\t\tonValueChange={onValueChange}\n\t\t\t\tsideOffset={116}\n\t\t\t/>\n\t\t</>\n\t)\n}\n\nfunction DropdownHalf<T extends string>({\n\tid,\n\tuiType,\n\tlabel,\n\titems,\n\tstyle,\n\tvalue,\n\tonValueChange,\n\tsideOffset,\n\tinvertIcon,\n}: {\n\tid: string\n\tuiType: string\n\tlabel: TLUiTranslationKey | Exclude<string, TLUiTranslationKey>\n\titems: StyleValuesForUi<T>\n\tstyle: StyleProp<T>\n\tvalue: SharedStyle<T>\n\tonValueChange(style: StyleProp<T>, value: T): void\n\tsideOffset: number\n\tinvertIcon?: boolean\n}) {\n\tconst ctx = useStylePanelContext()\n\tconst editor = useEditor()\n\tconst msg = useTranslation()\n\tconst [isOpen, setIsOpen] = React.useState(false)\n\n\tconst icon = React.useMemo(\n\t\t() =>\n\t\t\titems.find((item) => value.type === 'shared' && value.value === item.value)?.icon ?? 'mixed',\n\t\t[items, value]\n\t)\n\n\treturn (\n\t\t<TldrawUiPopover id={id} open={isOpen} onOpenChange={setIsOpen}>\n\t\t\t<TldrawUiPopoverTrigger>\n\t\t\t\t<TldrawUiToolbarButton\n\t\t\t\t\ttype=\"icon\"\n\t\t\t\t\tdata-testid={`style.${uiType}`}\n\t\t\t\t\ttitle={\n\t\t\t\t\t\tmsg(label) +\n\t\t\t\t\t\t' \u2014 ' +\n\t\t\t\t\t\t(value === null || value.type === 'mixed'\n\t\t\t\t\t\t\t? msg(stylePanelMessages.mixed)\n\t\t\t\t\t\t\t: msg(styleMessageId(uiType, value.value)))\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<TldrawUiButtonIcon icon={icon} small invertIcon={invertIcon} />\n\t\t\t\t</TldrawUiToolbarButton>\n\t\t\t</TldrawUiPopoverTrigger>\n\t\t\t<TldrawUiPopoverContent side=\"left\" align=\"center\" sideOffset={sideOffset} alignOffset={0}>\n\t\t\t\t<TldrawUiToolbar orientation=\"grid\" label={msg(label)}>\n\t\t\t\t\t<TldrawUiMenuContextProvider type=\"icons\" sourceId=\"style-panel\">\n\t\t\t\t\t\t{items.map((item) => (\n\t\t\t\t\t\t\t<TldrawUiToolbarButton\n\t\t\t\t\t\t\t\tkey={item.value}\n\t\t\t\t\t\t\t\ttype=\"icon\"\n\t\t\t\t\t\t\t\tdata-testid={`style.${uiType}.${item.value}`}\n\t\t\t\t\t\t\t\ttitle={`${msg(label)} \u2014 ${msg(styleMessageId(uiType, item.value))}`}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tctx.onHistoryMark('select style dropdown item')\n\t\t\t\t\t\t\t\t\tonValueChange(style, item.value)\n\t\t\t\t\t\t\t\t\ttlmenus.deleteOpenMenu(id, editor.contextId)\n\t\t\t\t\t\t\t\t\tsetIsOpen(false)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<TldrawUiButtonIcon icon={item.icon} invertIcon={invertIcon} />\n\t\t\t\t\t\t\t</TldrawUiToolbarButton>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</TldrawUiMenuContextProvider>\n\t\t\t\t</TldrawUiToolbar>\n\t\t\t</TldrawUiPopoverContent>\n\t\t</TldrawUiPopover>\n\t)\n}\n\n// need to memo like this to get generics\n/** @public @react */\nexport const StylePanelDoubleDropdownPicker = React.memo(StylePanelDoubleDropdownPickerInner) as <\n\tT extends string,\n>(\n\tprops: StylePanelDoubleDropdownPickerProps<T>\n) => React.JSX.Element\n\n/** @public @react */\nexport const StylePanelDoubleDropdownPickerInline = React.memo(\n\tStylePanelDoubleDropdownPickerInlineInner\n) as <T extends string>(props: StylePanelDoubleDropdownPickerProps<T>) => React.JSX.Element\n"],
  "mappings": "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",
  "names": []
}
