{ "version": 3, "sources": ["../../../../src/lib/ui/hooks/useKeyboardShortcutsSchema.tsx"], "sourcesContent": ["import { Editor, compact, track, useEditor } from '@tldraw/editor'\nimport React, { useMemo } from 'react'\nimport { TLUiMenuSchema, menuGroup, menuItem } from './menuHelpers'\nimport { TLUiActionsContextType, useActions } from './useActions'\nimport { TLUiToolsContextType, useTools } from './useTools'\n\n/** @public */\nexport type TLUiKeyboardShortcutsSchemaContextType = TLUiMenuSchema\n\n/** @internal */\nexport const KeyboardShortcutsSchemaContext = React.createContext(\n\t{} as TLUiKeyboardShortcutsSchemaContextType\n)\n\n/** @public */\nexport type TLUiKeyboardShortcutsSchemaProviderProps = {\n\toverrides?: (\n\t\teditor: Editor,\n\t\tschema: TLUiKeyboardShortcutsSchemaContextType,\n\t\tmore: { tools: TLUiToolsContextType; actions: TLUiActionsContextType }\n\t) => TLUiKeyboardShortcutsSchemaContextType\n\tchildren: any\n}\n\n/** @internal */\nexport const KeyboardShortcutsSchemaProvider = track(function KeyboardShortcutsSchemaProvider({\n\toverrides,\n\tchildren,\n}: TLUiKeyboardShortcutsSchemaProviderProps) {\n\tconst editor = useEditor()\n\tconst tools = useTools()\n\tconst actions = useActions()\n\n\tconst keyboardShortcutsSchema = useMemo(() => {\n\t\tconst keyboardShortcutsSchema = compact([\n\t\t\tmenuGroup(\n\t\t\t\t'shortcuts-dialog.tools',\n\t\t\t\tmenuItem(actions['toggle-tool-lock']),\n\t\t\t\tmenuItem(tools['select']),\n\t\t\t\tmenuItem(tools['draw']),\n\t\t\t\tmenuItem(tools['eraser']),\n\t\t\t\tmenuItem(tools['hand']),\n\t\t\t\tmenuItem(tools['rectangle']),\n\t\t\t\tmenuItem(tools['ellipse']),\n\t\t\t\tmenuItem(tools['arrow']),\n\t\t\t\tmenuItem(tools['line']),\n\t\t\t\tmenuItem(tools['text']),\n\t\t\t\tmenuItem(tools['frame']),\n\t\t\t\tmenuItem(tools['note']),\n\t\t\t\tmenuItem(tools['laser'])\n\t\t\t),\n\t\t\tmenuGroup(\n\t\t\t\t'shortcuts-dialog.file',\n\t\t\t\tmenuItem(actions['insert-media']),\n\t\t\t\tmenuItem(actions['print'])\n\t\t\t),\n\t\t\tmenuGroup(\n\t\t\t\t'shortcuts-dialog.preferences',\n\t\t\t\tmenuItem(actions['toggle-dark-mode']),\n\t\t\t\tmenuItem(actions['toggle-focus-mode']),\n\t\t\t\tmenuItem(actions['toggle-grid'])\n\t\t\t),\n\t\t\tmenuGroup(\n\t\t\t\t'shortcuts-dialog.edit',\n\t\t\t\tmenuItem(actions['undo']),\n\t\t\t\tmenuItem(actions['redo']),\n\t\t\t\tmenuItem(actions['cut']),\n\t\t\t\tmenuItem(actions['copy']),\n\t\t\t\tmenuItem(actions['paste']),\n\t\t\t\tmenuItem(actions['select-all']),\n\t\t\t\tmenuItem(actions['delete']),\n\t\t\t\tmenuItem(actions['duplicate']),\n\t\t\t\tmenuItem(actions['export-as-svg']),\n\t\t\t\tmenuItem(actions['export-as-png'])\n\t\t\t),\n\n\t\t\tmenuGroup(\n\t\t\t\t'shortcuts-dialog.view',\n\t\t\t\tmenuItem(actions['zoom-in']),\n\t\t\t\tmenuItem(actions['zoom-out']),\n\t\t\t\tmenuItem(actions['zoom-to-100']),\n\t\t\t\tmenuItem(actions['zoom-to-fit']),\n\t\t\t\tmenuItem(actions['zoom-to-selection'])\n\t\t\t),\n\t\t\tmenuGroup(\n\t\t\t\t'shortcuts-dialog.transform',\n\t\t\t\tmenuItem(actions['bring-to-front']),\n\t\t\t\tmenuItem(actions['bring-forward']),\n\t\t\t\tmenuItem(actions['send-backward']),\n\t\t\t\tmenuItem(actions['send-to-back']),\n\t\t\t\tmenuItem(actions['group']),\n\t\t\t\tmenuItem(actions['ungroup']),\n\t\t\t\tmenuItem(actions['flip-horizontal']),\n\t\t\t\tmenuItem(actions['flip-vertical']),\n\t\t\t\tmenuItem(actions['align-top']),\n\t\t\t\tmenuItem(actions['align-center-vertical']),\n\t\t\t\tmenuItem(actions['align-bottom']),\n\t\t\t\tmenuItem(actions['align-left']),\n\t\t\t\tmenuItem(actions['align-center-horizontal']),\n\t\t\t\tmenuItem(actions['align-right'])\n\t\t\t),\n\t\t])\n\n\t\tif (overrides) {\n\t\t\treturn overrides(editor, keyboardShortcutsSchema, { tools, actions })\n\t\t}\n\n\t\treturn keyboardShortcutsSchema\n\t}, [editor, overrides, actions, tools])\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n})\n\n/** @public */\nexport function useKeyboardShortcutsSchema(): TLUiKeyboardShortcutsSchemaContextType {\n\tconst ctx = React.useContext(KeyboardShortcutsSchemaContext)\n\n\tif (!ctx) {\n\t\tthrow new Error('Shortcuts must be used inside of a ShortcutsProvider.')\n\t}\n\n\treturn ctx\n}\n"], "mappings": "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", "names": ["KeyboardShortcutsSchemaProvider", "keyboardShortcutsSchema"] }