{
  "version": 3,
  "sources": ["../../../../src/lib/ui/context/asset-urls.tsx"],
  "sourcesContent": ["import { Image, noop } from '@tldraw/editor'\nimport { createContext, useContext, useEffect } from 'react'\nimport { TLUiAssetUrls } from '../assetUrls'\n\n/** @internal */\ntype UiAssetUrlsContextType = TLUiAssetUrls | null\n\nconst AssetUrlsContext = createContext<UiAssetUrlsContextType>(null)\n\n/** @public */\nexport interface AssetUrlsProviderProps {\n\tassetUrls: TLUiAssetUrls\n\tchildren: React.ReactNode\n}\n\n/**\n * Provides asset URLs (icons, fonts, translations, embed icons) to the editor's UI.\n * Required when using `TldrawUiTranslationProvider` without `TldrawUiContextProvider`.\n *\n * @public @react\n */\nexport function AssetUrlsProvider({ assetUrls, children }: AssetUrlsProviderProps) {\n\tuseEffect(() => {\n\t\t// Many icon URLs point at the same sprite sheet and differ only by their\n\t\t// `#fragment` identifier (e.g. `0_merged.svg#tool-arrow`). The fragment\n\t\t// doesn't change the underlying resource, so preload each unique resource\n\t\t// once rather than creating hundreds of redundant Image decodes.\n\t\tconst preloaded = new Set<string>()\n\t\tfor (const src of [...Object.values(assetUrls.icons), ...Object.values(assetUrls.embedIcons)]) {\n\t\t\tif (!src) continue\n\n\t\t\tconst resource = src.split('#')[0]\n\t\t\tif (preloaded.has(resource)) continue\n\t\t\tpreloaded.add(resource)\n\n\t\t\tconst image = Image()\n\t\t\timage.crossOrigin = 'anonymous'\n\t\t\timage.src = src\n\t\t\timage.decode().catch(noop)\n\t\t}\n\t}, [assetUrls])\n\n\treturn <AssetUrlsContext.Provider value={assetUrls}>{children}</AssetUrlsContext.Provider>\n}\n\n/** @public */\nexport function useAssetUrls() {\n\tconst assetUrls = useContext(AssetUrlsContext)\n\tif (!assetUrls) {\n\t\tthrow new Error('useAssetUrls must be used within an AssetUrlsProvider')\n\t}\n\n\treturn assetUrls\n}\n"],
  "mappings": "AA0CQ;AA1CR,SAAS,OAAO,YAAY;AAC5B,SAAS,eAAe,YAAY,iBAAiB;AAMrD,MAAM,mBAAmB,cAAsC,IAAI;AAc5D,SAAS,kBAAkB,EAAE,WAAW,SAAS,GAA2B;AAClF,YAAU,MAAM;AAKf,UAAM,YAAY,oBAAI,IAAY;AAClC,eAAW,OAAO,CAAC,GAAG,OAAO,OAAO,UAAU,KAAK,GAAG,GAAG,OAAO,OAAO,UAAU,UAAU,CAAC,GAAG;AAC9F,UAAI,CAAC,IAAK;AAEV,YAAM,WAAW,IAAI,MAAM,GAAG,EAAE,CAAC;AACjC,UAAI,UAAU,IAAI,QAAQ,EAAG;AAC7B,gBAAU,IAAI,QAAQ;AAEtB,YAAM,QAAQ,MAAM;AACpB,YAAM,cAAc;AACpB,YAAM,MAAM;AACZ,YAAM,OAAO,EAAE,MAAM,IAAI;AAAA,IAC1B;AAAA,EACD,GAAG,CAAC,SAAS,CAAC;AAEd,SAAO,oBAAC,iBAAiB,UAAjB,EAA0B,OAAO,WAAY,UAAS;AAC/D;AAGO,SAAS,eAAe;AAC9B,QAAM,YAAY,WAAW,gBAAgB;AAC7C,MAAI,CAAC,WAAW;AACf,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACxE;AAEA,SAAO;AACR;",
  "names": []
}
