UNPKG

react-inlinesvg

Version:
146 lines (144 loc) 3.94 kB
import { ReactNode, Ref, SVGProps } from "react"; //#region src/config.d.ts declare const STATUS: { readonly IDLE: "idle"; readonly LOADING: "loading"; readonly LOADED: "loaded"; readonly FAILED: "failed"; readonly READY: "ready"; readonly UNSUPPORTED: "unsupported"; }; //#endregion //#region src/types.d.ts /** * Called when loading the SVG fails. */ type ErrorCallback = (error: Error | FetchError) => void; /** * Called when the SVG loads successfully. */ type LoadCallback = (src: string, isCached: boolean) => void; /** * Pre-processes the SVG string before parsing. * Must return a string. */ type PreProcessorCallback = (code: string) => string; type Props = Simplify<Omit<SVGProps<SVGElement>, 'onLoad' | 'onError' | 'ref'> & { /** * A URL to prepend to url() references inside the SVG when using `uniquifyIDs`. * Only required if your page uses an HTML `<base>` tag. */ baseURL?: string; /** * Cache remote SVGs in memory. * * When used with the CacheProvider, requests are also persisted in the browser cache. * @default true */ cacheRequests?: boolean; /** * Fallback content rendered on fetch error or unsupported browser. */ children?: ReactNode; /** * A description for the SVG. * Overrides an existing `<desc>` tag. */ description?: string; /** * Custom options for the fetch request. */ fetchOptions?: RequestInit; /** * A ref to the rendered SVG element. * Not available on initial render — use `onLoad` instead. */ innerRef?: Ref<SVGElement | null>; /** * A component shown while the SVG is loading. */ loader?: ReactNode; /** * Called when loading the SVG fails. * Receives an `Error` or `FetchError`. */ onError?: ErrorCallback; /** * Called when the SVG loads successfully. * Receives the `src` and an `isCached` flag. */ onLoad?: LoadCallback; /** * A function to pre-process the SVG string before parsing. * Must return a string. */ preProcessor?: PreProcessorCallback; /** * The SVG to load. * Accepts a URL or path, a data URI (base64 or URL-encoded), or a raw SVG string. */ src: string; /** * A title for the SVG. Overrides an existing `<title>` tag. * Pass `null` to remove it. */ title?: string | null; /** * A string to use with `uniquifyIDs`. * @default random 8-character alphanumeric string */ uniqueHash?: string; /** * Create unique IDs for each icon. * @default false */ uniquifyIDs?: boolean; }>; type Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {}; type Status = (typeof STATUS)[keyof typeof STATUS]; interface FetchError extends Error { code: string; errno: string; message: string; type: string; } interface State { content: string; element: ReactNode; isCached: boolean; status: Status; } interface StorageItem { content: string; error?: Error; status: Status; } //#endregion //#region src/modules/cache.d.ts interface CacheStoreOptions { name?: string; persistent?: boolean; } declare class CacheStore { private cacheApi; private readonly cacheStore; private readonly subscribers; isReady: boolean; constructor(options?: CacheStoreOptions); onReady(callback: () => void): () => void; private waitForReady; get(url: string, fetchOptions?: RequestInit): Promise<string>; getContent(url: string): string; set(url: string, data: StorageItem): void; isCached(url: string): boolean; private fetchAndCache; private fetchFromPersistentCache; private handleLoading; keys(): Array<string>; data(): Array<Record<string, StorageItem>>; delete(url: string): Promise<void>; clear(): Promise<void>; } //#endregion export { PreProcessorCallback as a, State as c, LoadCallback as i, Status as l, ErrorCallback as n, Props as o, FetchError as r, Simplify as s, CacheStore as t, StorageItem as u }; //# sourceMappingURL=cache-DdM7QpJp.d.mts.map