{ "version": 3, "sources": ["../../../../src/lib/ui/hooks/useToolbarSchema.tsx"], "sourcesContent": ["import { Editor, compact, useEditor } from '@tldraw/editor'\nimport React from 'react'\nimport { TLUiToolItem, TLUiToolsContextType, useTools } from './useTools'\n\n/** @public */\nexport type TLUiToolbarItem = {\n\tid: string\n\ttype: 'item'\n\treadonlyOk: boolean\n\ttoolItem: TLUiToolItem\n}\n\n/** @public */\nexport function toolbarItem(toolItem: TLUiToolItem): TLUiToolbarItem {\n\treturn {\n\t\tid: toolItem.id,\n\t\ttype: 'item',\n\t\treadonlyOk: toolItem.readonlyOk,\n\t\ttoolItem,\n\t}\n}\n\n/** @public */\nexport type TLUiToolbarSchemaContextType = TLUiToolbarItem[]\n\n/** @internal */\nexport const ToolbarSchemaContext = React.createContext([] as TLUiToolbarSchemaContextType)\n\n/** @public */\nexport type TLUiToolbarSchemaProviderProps = {\n\toverrides?: (\n\t\teditor: Editor,\n\t\tschema: TLUiToolbarSchemaContextType,\n\t\tmore: { tools: TLUiToolsContextType }\n\t) => TLUiToolbarSchemaContextType\n\tchildren: any\n}\n\n/** @internal */\nexport function ToolbarSchemaProvider({ overrides, children }: TLUiToolbarSchemaProviderProps) {\n\tconst editor = useEditor()\n\n\tconst tools = useTools()\n\n\tconst toolbarSchema = React.useMemo(() => {\n\t\tconst schema: TLUiToolbarSchemaContextType = compact([\n\t\t\ttoolbarItem(tools.select),\n\t\t\ttoolbarItem(tools.hand),\n\t\t\ttoolbarItem(tools.draw),\n\t\t\ttoolbarItem(tools.eraser),\n\t\t\ttoolbarItem(tools.arrow),\n\t\t\ttoolbarItem(tools.text),\n\t\t\ttoolbarItem(tools.note),\n\t\t\ttoolbarItem(tools.asset),\n\t\t\ttoolbarItem(tools['rectangle']),\n\t\t\ttoolbarItem(tools['ellipse']),\n\t\t\ttoolbarItem(tools['diamond']),\n\t\t\ttoolbarItem(tools['triangle']),\n\t\t\ttoolbarItem(tools['trapezoid']),\n\t\t\ttoolbarItem(tools['rhombus']),\n\t\t\ttoolbarItem(tools['hexagon']),\n\t\t\ttoolbarItem(tools['cloud']),\n\t\t\t// toolbarItem(tools['octagon']),\n\t\t\ttoolbarItem(tools['star']),\n\t\t\ttoolbarItem(tools['oval']),\n\t\t\ttoolbarItem(tools['x-box']),\n\t\t\ttoolbarItem(tools['check-box']),\n\t\t\ttoolbarItem(tools['arrow-left']),\n\t\t\ttoolbarItem(tools['arrow-up']),\n\t\t\ttoolbarItem(tools['arrow-down']),\n\t\t\ttoolbarItem(tools['arrow-right']),\n\t\t\ttoolbarItem(tools.frame),\n\t\t\ttoolbarItem(tools.line),\n\t\t\ttoolbarItem(tools.highlight),\n\t\t\ttoolbarItem(tools.laser),\n\t\t])\n\n\t\tif (overrides) {\n\t\t\treturn overrides(editor, schema, { tools })\n\t\t}\n\n\t\treturn schema\n\t}, [editor, overrides, tools])\n\n\treturn (\n\t\t{children}\n\t)\n}\n\n/** @public */\nexport function useToolbarSchema() {\n\tconst ctx = React.useContext(ToolbarSchemaContext)\n\n\tif (!ctx) {\n\t\tthrow new Error('useToolbarSchema must be used within a ToolbarSchemaProvider')\n\t}\n\n\treturn ctx\n}\n"], "mappings": "AAqFE;AArFF,SAAiB,SAAS,iBAAiB;AAC3C,OAAO,WAAW;AAClB,SAA6C,gBAAgB;AAWtD,SAAS,YAAY,UAAyC;AACpE,SAAO;AAAA,IACN,IAAI,SAAS;AAAA,IACb,MAAM;AAAA,IACN,YAAY,SAAS;AAAA,IACrB;AAAA,EACD;AACD;AAMO,MAAM,uBAAuB,MAAM,cAAc,CAAC,CAAiC;AAanF,SAAS,sBAAsB,EAAE,WAAW,SAAS,GAAmC;AAC9F,QAAM,SAAS,UAAU;AAEzB,QAAM,QAAQ,SAAS;AAEvB,QAAM,gBAAgB,MAAM,QAAsC,MAAM;AACvE,UAAM,SAAuC,QAAQ;AAAA,MACpD,YAAY,MAAM,MAAM;AAAA,MACxB,YAAY,MAAM,IAAI;AAAA,MACtB,YAAY,MAAM,IAAI;AAAA,MACtB,YAAY,MAAM,MAAM;AAAA,MACxB,YAAY,MAAM,KAAK;AAAA,MACvB,YAAY,MAAM,IAAI;AAAA,MACtB,YAAY,MAAM,IAAI;AAAA,MACtB,YAAY,MAAM,KAAK;AAAA,MACvB,YAAY,MAAM,WAAW,CAAC;AAAA,MAC9B,YAAY,MAAM,SAAS,CAAC;AAAA,MAC5B,YAAY,MAAM,SAAS,CAAC;AAAA,MAC5B,YAAY,MAAM,UAAU,CAAC;AAAA,MAC7B,YAAY,MAAM,WAAW,CAAC;AAAA,MAC9B,YAAY,MAAM,SAAS,CAAC;AAAA,MAC5B,YAAY,MAAM,SAAS,CAAC;AAAA,MAC5B,YAAY,MAAM,OAAO,CAAC;AAAA;AAAA,MAE1B,YAAY,MAAM,MAAM,CAAC;AAAA,MACzB,YAAY,MAAM,MAAM,CAAC;AAAA,MACzB,YAAY,MAAM,OAAO,CAAC;AAAA,MAC1B,YAAY,MAAM,WAAW,CAAC;AAAA,MAC9B,YAAY,MAAM,YAAY,CAAC;AAAA,MAC/B,YAAY,MAAM,UAAU,CAAC;AAAA,MAC7B,YAAY,MAAM,YAAY,CAAC;AAAA,MAC/B,YAAY,MAAM,aAAa,CAAC;AAAA,MAChC,YAAY,MAAM,KAAK;AAAA,MACvB,YAAY,MAAM,IAAI;AAAA,MACtB,YAAY,MAAM,SAAS;AAAA,MAC3B,YAAY,MAAM,KAAK;AAAA,IACxB,CAAC;AAED,QAAI,WAAW;AACd,aAAO,UAAU,QAAQ,QAAQ,EAAE,MAAM,CAAC;AAAA,IAC3C;AAEA,WAAO;AAAA,EACR,GAAG,CAAC,QAAQ,WAAW,KAAK,CAAC;AAE7B,SACC,oBAAC,qBAAqB,UAArB,EAA8B,OAAO,eAAgB,UAAS;AAEjE;AAGO,SAAS,mBAAmB;AAClC,QAAM,MAAM,MAAM,WAAW,oBAAoB;AAEjD,MAAI,CAAC,KAAK;AACT,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAC/E;AAEA,SAAO;AACR;", "names": [] }