{ "version": 3, "sources": ["../../../../src/lib/ui/hooks/useHelpMenuSchema.tsx"], "sourcesContent": ["import { Editor, TLLanguage, compact, track, useEditor } from '@tldraw/editor'\nimport React, { useMemo } from 'react'\nimport { KeyboardShortcutsDialog } from '../components/KeyboardShortcutsDialog'\nimport { TLUiMenuSchema, menuCustom, menuGroup, menuItem } from './menuHelpers'\nimport { useActions } from './useActions'\nimport { useDialogs } from './useDialogsProvider'\nimport { useLanguages } from './useTranslation/useLanguages'\n\n/** @public */\nexport type TLUiHelpMenuSchemaContextType = TLUiMenuSchema\n\n/** @internal */\nexport const HelpMenuSchemaContext = React.createContext({} as TLUiHelpMenuSchemaContextType)\n\n/** @public */\nexport type TLUiHelpMenuSchemaProviderProps = {\n\toverrides?: (\n\t\teditor: Editor,\n\t\tschema: TLUiHelpMenuSchemaContextType,\n\t\thelpers: {\n\t\t\tactions: ReturnType\n\t\t\tlanguages: readonly TLLanguage[]\n\t\t\tcurrentLanguage: string\n\t\t\toneSelected: boolean\n\t\t\ttwoSelected: boolean\n\t\t\tthreeSelected: boolean\n\t\t}\n\t) => TLUiHelpMenuSchemaContextType\n\tchildren: any\n}\n\n/** @internal */\nexport const HelpMenuSchemaProvider = track(function HelpMenuSchemaProvider({\n\toverrides,\n\tchildren,\n}: TLUiHelpMenuSchemaProviderProps) {\n\tconst editor = useEditor()\n\tconst actions = useActions()\n\n\tconst selectedCount = editor.selectedShapeIds.length\n\n\tconst oneSelected = selectedCount > 0\n\tconst twoSelected = selectedCount > 1\n\tconst threeSelected = selectedCount > 2\n\n\tconst { languages, currentLanguage } = useLanguages()\n\tconst { addDialog } = useDialogs()\n\n\tconst helpTLUiMenuSchema = useMemo(() => {\n\t\tconst helpTLUiMenuSchema = compact([\n\t\t\tmenuGroup(\n\t\t\t\t'top',\n\t\t\t\tmenuCustom('LANGUAGE_MENU', { readonlyOk: true }),\n\t\t\t\tmenuItem({\n\t\t\t\t\tid: 'keyboard-shortcuts',\n\t\t\t\t\tlabel: 'help-menu.keyboard-shortcuts',\n\t\t\t\t\treadonlyOk: true,\n\t\t\t\t\tonSelect() {\n\t\t\t\t\t\taddDialog({ component: KeyboardShortcutsDialog })\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t),\n\t\t])\n\n\t\tif (overrides) {\n\t\t\treturn overrides(editor, helpTLUiMenuSchema, {\n\t\t\t\tactions,\n\t\t\t\tcurrentLanguage,\n\t\t\t\tlanguages,\n\t\t\t\toneSelected,\n\t\t\t\ttwoSelected,\n\t\t\t\tthreeSelected,\n\t\t\t})\n\t\t}\n\n\t\treturn helpTLUiMenuSchema\n\t}, [\n\t\teditor,\n\t\toverrides,\n\t\tlanguages,\n\t\tactions,\n\t\toneSelected,\n\t\ttwoSelected,\n\t\tthreeSelected,\n\t\tcurrentLanguage,\n\t\taddDialog,\n\t])\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n})\n\n/** @public */\nexport function useHelpMenuSchema(): TLUiMenuSchema {\n\tconst ctx = React.useContext(HelpMenuSchemaContext)\n\n\tif (!ctx) {\n\t\tthrow new Error('useHelpMenuSchema must be used inside of a helpTLUiMenuSchemaProvider.')\n\t}\n\n\treturn ctx\n}\n"], "mappings": "AAyFE;AAzFF,SAA6B,SAAS,OAAO,iBAAiB;AAC9D,OAAO,SAAS,eAAe;AAC/B,SAAS,+BAA+B;AACxC,SAAyB,YAAY,WAAW,gBAAgB;AAChE,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAMtB,MAAM,wBAAwB,MAAM,cAAc,CAAC,CAAkC;AAoBrF,MAAM,yBAAyB,MAAM,SAASA,wBAAuB;AAAA,EAC3E;AAAA,EACA;AACD,GAAoC;AACnC,QAAM,SAAS,UAAU;AACzB,QAAM,UAAU,WAAW;AAE3B,QAAM,gBAAgB,OAAO,iBAAiB;AAE9C,QAAM,cAAc,gBAAgB;AACpC,QAAM,cAAc,gBAAgB;AACpC,QAAM,gBAAgB,gBAAgB;AAEtC,QAAM,EAAE,WAAW,gBAAgB,IAAI,aAAa;AACpD,QAAM,EAAE,UAAU,IAAI,WAAW;AAEjC,QAAM,qBAAqB,QAAwB,MAAM;AACxD,UAAMC,sBAAqB,QAAQ;AAAA,MAClC;AAAA,QACC;AAAA,QACA,WAAW,iBAAiB,EAAE,YAAY,KAAK,CAAC;AAAA,QAChD,SAAS;AAAA,UACR,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,YAAY;AAAA,UACZ,WAAW;AACV,sBAAU,EAAE,WAAW,wBAAwB,CAAC;AAAA,UACjD;AAAA,QACD,CAAC;AAAA,MACF;AAAA,IACD,CAAC;AAED,QAAI,WAAW;AACd,aAAO,UAAU,QAAQA,qBAAoB;AAAA,QAC5C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF;AAEA,WAAOA;AAAA,EACR,GAAG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD,CAAC;AAED,SACC,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,oBACrC,UACF;AAEF,CAAC;AAGM,SAAS,oBAAoC;AACnD,QAAM,MAAM,MAAM,WAAW,qBAAqB;AAElD,MAAI,CAAC,KAAK;AACT,UAAM,IAAI,MAAM,wEAAwE;AAAA,EACzF;AAEA,SAAO;AACR;", "names": ["HelpMenuSchemaProvider", "helpTLUiMenuSchema"] }