UNPKG

tldraw

Version:

A tiny little drawing editor.

8 lines (7 loc) 2.38 kB
{ "version": 3, "sources": ["../../../../src/lib/ui/hooks/useInsertMedia.ts"], "sourcesContent": ["import {\n\tDEFAULT_SUPPORTED_MEDIA_TYPE_LIST,\n\tuseEditor,\n\tuseShallowArrayIdentity,\n} from '@tldraw/editor'\nimport React, { useCallback, useEffect, useRef } from 'react'\n\nexport const MimeTypeContext = React.createContext<string[] | undefined>([])\n\nexport function useInsertMedia() {\n\tconst editor = useEditor()\n\tconst inputRef = useRef<HTMLInputElement>()\n\tconst mimeTypes = useShallowArrayIdentity(React.useContext(MimeTypeContext))\n\n\tuseEffect(() => {\n\t\tconst input = window.document.createElement('input')\n\t\tinput.type = 'file'\n\t\tinput.accept = mimeTypes?.join(',') ?? DEFAULT_SUPPORTED_MEDIA_TYPE_LIST\n\t\tinput.multiple = true\n\t\tinputRef.current = input\n\t\tasync function onchange(e: Event) {\n\t\t\tconst fileList = (e.target as HTMLInputElement).files\n\t\t\tif (!fileList || fileList.length === 0) return\n\t\t\teditor.markHistoryStoppingPoint('insert media')\n\t\t\tawait editor.putExternalContent({\n\t\t\t\ttype: 'files',\n\t\t\t\tfiles: Array.from(fileList),\n\t\t\t\tpoint: editor.getViewportPageBounds().center,\n\t\t\t\tignoreParent: false,\n\t\t\t})\n\t\t\tinput.value = ''\n\t\t}\n\t\tinput.addEventListener('change', onchange)\n\t\treturn () => {\n\t\t\tinputRef.current = undefined\n\t\t\tinput.removeEventListener('change', onchange)\n\t\t}\n\t}, [editor, mimeTypes])\n\n\treturn useCallback(() => {\n\t\tinputRef.current?.click()\n\t}, [inputRef])\n}\n"], "mappings": "AAAA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,OAAO,SAAS,aAAa,WAAW,cAAc;AAE/C,MAAM,kBAAkB,MAAM,cAAoC,CAAC,CAAC;AAEpE,SAAS,iBAAiB;AAChC,QAAM,SAAS,UAAU;AACzB,QAAM,WAAW,OAAyB;AAC1C,QAAM,YAAY,wBAAwB,MAAM,WAAW,eAAe,CAAC;AAE3E,YAAU,MAAM;AACf,UAAM,QAAQ,OAAO,SAAS,cAAc,OAAO;AACnD,UAAM,OAAO;AACb,UAAM,SAAS,WAAW,KAAK,GAAG,KAAK;AACvC,UAAM,WAAW;AACjB,aAAS,UAAU;AACnB,mBAAe,SAAS,GAAU;AACjC,YAAM,WAAY,EAAE,OAA4B;AAChD,UAAI,CAAC,YAAY,SAAS,WAAW,EAAG;AACxC,aAAO,yBAAyB,cAAc;AAC9C,YAAM,OAAO,mBAAmB;AAAA,QAC/B,MAAM;AAAA,QACN,OAAO,MAAM,KAAK,QAAQ;AAAA,QAC1B,OAAO,OAAO,sBAAsB,EAAE;AAAA,QACtC,cAAc;AAAA,MACf,CAAC;AACD,YAAM,QAAQ;AAAA,IACf;AACA,UAAM,iBAAiB,UAAU,QAAQ;AACzC,WAAO,MAAM;AACZ,eAAS,UAAU;AACnB,YAAM,oBAAoB,UAAU,QAAQ;AAAA,IAC7C;AAAA,EACD,GAAG,CAAC,QAAQ,SAAS,CAAC;AAEtB,SAAO,YAAY,MAAM;AACxB,aAAS,SAAS,MAAM;AAAA,EACzB,GAAG,CAAC,QAAQ,CAAC;AACd;", "names": [] }