{ "version": 3, "sources": ["../../../../src/lib/ui/components/Menu.tsx"], "sourcesContent": ["import { Editor, useEditor } from '@tldraw/editor'\nimport * as React from 'react'\nimport { TLUiMenuChild } from '../hooks/menuHelpers'\nimport { useBreakpoint } from '../hooks/useBreakpoint'\nimport { useMenuSchema } from '../hooks/useMenuSchema'\nimport { useReadonly } from '../hooks/useReadonly'\nimport { useTranslation } from '../hooks/useTranslation/useTranslation'\nimport { LanguageMenu } from './LanguageMenu'\nimport { Button } from './primitives/Button'\nimport * as M from './primitives/DropdownMenu'\nimport { Kbd } from './primitives/Kbd'\n\nexport const Menu = React.memo(function Menu() {\n\tconst msg = useTranslation()\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n})\n\nfunction MenuContent() {\n\tconst editor = useEditor()\n\tconst msg = useTranslation()\n\tconst menuSchema = useMenuSchema()\n\tconst breakpoint = useBreakpoint()\n\tconst isReadonly = useReadonly()\n\n\tfunction getMenuItem(\n\t\teditor: Editor,\n\t\titem: TLUiMenuChild,\n\t\tparent: TLUiMenuChild | null,\n\t\tdepth: number\n\t) {\n\t\tswitch (item.type) {\n\t\t\tcase 'custom': {\n\t\t\t\tif (isReadonly && !item.readonlyOk) return null\n\n\t\t\t\tif (item.id === 'LANGUAGE_MENU') {\n\t\t\t\t\treturn \n\t\t\t\t}\n\n\t\t\t\treturn null\n\t\t\t}\n\t\t\tcase 'group': {\n\t\t\t\tif (isReadonly && !item.readonlyOk) return null\n\n\t\t\t\treturn (\n\t\t\t\t\t 2)\n\t\t\t\t\t\t\t\t? 'tiny'\n\t\t\t\t\t\t\t\t: 'medium'\n\t\t\t\t\t\t}\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.children.map((child) => getMenuItem(editor, child, item, depth + 1))}\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t\tcase 'submenu': {\n\t\t\t\tif (isReadonly && !item.readonlyOk) return null\n\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{item.children.map((child) => getMenuItem(editor, child, item, depth + 1))}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)\n\t\t\t}\n\t\t\tcase 'item': {\n\t\t\t\tif (isReadonly && !item.readonlyOk) return null\n\n\t\t\t\tconst { id, checkbox, menuLabel, label, onSelect, kbd } = item.actionItem\n\t\t\t\tconst labelToUse = menuLabel ?? label\n\t\t\t\tconst labelStr = labelToUse ? msg(labelToUse) : undefined\n\n\t\t\t\tif (checkbox) {\n\t\t\t\t\t// Item is in a checkbox group\n\t\t\t\t\treturn (\n\t\t\t\t\t\t onSelect('menu')}\n\t\t\t\t\t\t\ttitle={labelStr ? labelStr : ''}\n\t\t\t\t\t\t\tchecked={item.checked}\n\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{labelStr && {labelStr}}\n\t\t\t\t\t\t\t{kbd && {kbd}}\n\t\t\t\t\t\t\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\t// Item is a button\n\t\t\t\treturn (\n\t\t\t\t\t onSelect('menu')}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn <>{menuSchema.map((item) => getMenuItem(editor, item, null, 0))}\n}\n"], "mappings": "AAgBE,SA2GM,UAzGJ,KAFF;AAhBF,SAAiB,iBAAiB;AAClC,YAAY,WAAW;AAEvB,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,cAAc;AACvB,YAAY,OAAO;AACnB,SAAS,WAAW;AAEb,MAAM,OAAO,MAAM,KAAK,SAASA,QAAO;AAC9C,QAAM,MAAM,eAAe;AAE3B,SACC,qBAAC,EAAE,MAAF,EAAO,IAAG,aACV;AAAA,wBAAC,EAAE,SAAF,EACA;AAAA,MAAC;AAAA;AAAA,QACA,WAAU;AAAA,QACV,eAAY;AAAA,QACZ,OAAO,IAAI,YAAY;AAAA,QACvB,MAAK;AAAA;AAAA,IACN,GACD;AAAA,IACA,oBAAC,EAAE,SAAF,EAAU,aAAa,GAAG,YAAY,GACtC,8BAAC,eAAY,GACd;AAAA,KACD;AAEF,CAAC;AAED,SAAS,cAAc;AACtB,QAAM,SAAS,UAAU;AACzB,QAAM,MAAM,eAAe;AAC3B,QAAM,aAAa,cAAc;AACjC,QAAM,aAAa,cAAc;AACjC,QAAM,aAAa,YAAY;AAE/B,WAAS,YACRC,SACA,MACA,QACA,OACC;AACD,YAAQ,KAAK,MAAM;AAAA,MAClB,KAAK,UAAU;AACd,YAAI,cAAc,CAAC,KAAK;AAAY,iBAAO;AAE3C,YAAI,KAAK,OAAO,iBAAiB;AAChC,iBAAO,oBAAC,kBAAiB,MAAO;AAAA,QACjC;AAEA,eAAO;AAAA,MACR;AAAA,MACA,KAAK,SAAS;AACb,YAAI,cAAc,CAAC,KAAK;AAAY,iBAAO;AAE3C,eACC;AAAA,UAAC,EAAE;AAAA,UAAF;AAAA,YACA,MACC,SAAS,IACN,WACA,aAAa,KAAM,QAAQ,SAAS,aAAa,QAAQ,IACzD,SACA;AAAA,YAIH,eAAK,SAAS,IAAI,CAAC,UAAU,YAAYA,SAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA;AAAA,UAFpE,KAAK;AAAA,QAGX;AAAA,MAEF;AAAA,MACA,KAAK,WAAW;AACf,YAAI,cAAc,CAAC,KAAK;AAAY,iBAAO;AAE3C,eACC,qBAAC,EAAE,KAAF,EAAM,IAAI,aAAa,SAAS,OAAO,KAAK,MAAM,EAAE,GAAG,KAAK,EAAE,IAC9D;AAAA,8BAAC,EAAE,YAAF,EAAa,OAAO,KAAK,OAAO,eAAa,aAAa,KAAK,EAAE,IAAI;AAAA,UACtE,oBAAC,EAAE,YAAF,EAAa,YAAY,IAAI,aAAa,IACzC,eAAK,SAAS,IAAI,CAAC,UAAU,YAAYA,SAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC,GAC1E;AAAA,aAJuE,KAAK,EAK7E;AAAA,MAEF;AAAA,MACA,KAAK,QAAQ;AACZ,YAAI,cAAc,CAAC,KAAK;AAAY,iBAAO;AAE3C,cAAM,EAAE,IAAI,UAAU,WAAW,OAAO,UAAU,IAAI,IAAI,KAAK;AAC/D,cAAM,aAAa,aAAa;AAChC,cAAM,WAAW,aAAa,IAAI,UAAU,IAAI;AAEhD,YAAI,UAAU;AAEb,iBACC;AAAA,YAAC,EAAE;AAAA,YAAF;AAAA,cAEA,UAAU,MAAM,SAAS,MAAM;AAAA,cAC/B,OAAO,WAAW,WAAW;AAAA,cAC7B,SAAS,KAAK;AAAA,cACd,UAAU,KAAK;AAAA,cAEd;AAAA,4BAAY,oBAAC,UAAM,oBAAS;AAAA,gBAC5B,OAAO,oBAAC,OAAK,eAAI;AAAA;AAAA;AAAA,YAPb;AAAA,UAQN;AAAA,QAEF;AAGA,eACC;AAAA,UAAC,EAAE;AAAA,UAAF;AAAA,YAEA,eAAa,aAAa,KAAK,EAAE;AAAA,YACjC;AAAA,YACA,OAAO;AAAA,YACP,SAAS,MAAM,SAAS,MAAM;AAAA,YAC9B,UAAU,KAAK;AAAA;AAAA,UALV;AAAA,QAMN;AAAA,MAEF;AAAA,IACD;AAAA,EACD;AAEA,SAAO,gCAAG,qBAAW,IAAI,CAAC,SAAS,YAAY,QAAQ,MAAM,MAAM,CAAC,CAAC,GAAE;AACxE;", "names": ["Menu", "editor"] }