import { DefineSetupFnComponent } from 'vue'; import { IconifyIcon } from '@iconify/types'; import { IconifyJSON } from '@iconify/types'; import { IconifyTransformations } from '@iconify/types'; import { PublicProps } from 'vue'; /** * Add custom config for provider */ export declare function addAPIProvider(provider: string, customConfig: PartialIconifyAPIConfig): boolean; /** * Add icon set */ export declare function addCollection(data: IconifyJSON, provider?: string): boolean; /** * Add one icon */ export declare function addIcon(name: string, data: IconifyIcon | null): boolean; /** * Internal API */ export declare const _api: IconifyAPIInternalFunctions; /** * Get SVG attributes and content from icon + customisations * * Does not generate style to make it compatible with frameworks that use objects for style, such as React. * Instead, it generates 'inline' value. If true, rendering engine should add verticalAlign: -0.125em to icon. * * Customisations should be normalised by platform specific parser. * Result should be converted to by platform specific parser. * Use replaceIDs to generate unique IDs for body. */ export declare function buildIcon(icon: IconifyIcon, customisations?: IconifyIconCustomisations_2): IconifyIconBuildResult; /** * Calculate second dimension when only 1 dimension is set */ export declare function calculateSize(size: string, ratio: number, precision?: number): string; export declare function calculateSize(size: number, ratio: number, precision?: number): number; export declare function calculateSize(size: string | number, ratio: number, precision?: number): string | number; /** * Signature for getAPIConfig */ export declare type GetAPIConfig = (provider: string) => IconifyAPIConfig | undefined; /** * Get full icon */ export declare function getIcon(name: string): Required | null | undefined; /** * Component */ export declare const Icon: DefineSetupFnComponent; /** * API config */ export declare interface IconifyAPIConfig extends RedundancyConfig { path: string; maxURL: number; } export declare interface IconifyAPICustomQueryParams { type: 'custom'; provider?: string; uri: string; } /** * Iconify API functions */ export declare interface IconifyAPIFunctions { /** * Load icons */ loadIcons: (icons: (IconifyIconName | string)[], callback?: IconifyIconLoaderCallback) => IconifyIconLoaderAbort; /** * Load one icon, using Promise syntax */ loadIcon: (icon: IconifyIconName | string) => Promise>; /** * Add API provider */ addAPIProvider: (provider: string, customConfig: PartialIconifyAPIConfig) => boolean; /** * Set custom loader for multple icons */ setCustomIconsLoader: (callback: IconifyCustomIconsLoader, prefix: string, provider?: string) => void; /** * Set custom loader for one icon */ setCustomIconLoader: (callback: IconifyCustomIconLoader, prefix: string, provider?: string) => void; } /** * Params for sendQuery() */ declare interface IconifyAPIIconsQueryParams { type: 'icons'; provider: string; prefix: string; icons: string[]; } /** * Exposed internal functions * * Used by plug-ins, such as Icon Finder * * Important: any changes published in a release must be backwards compatible. */ export declare interface IconifyAPIInternalFunctions { /** * Get API config, used by custom modules */ getAPIConfig: GetAPIConfig; /** * Set custom API module */ setAPIModule: (provider: string, item: IconifyAPIModule) => void; /** * Send API query */ sendAPIQuery: (target: string | PartialIconifyAPIConfig, query: IconifyAPIQueryParams, callback: QueryDoneCallback) => QueryAbortCallback; /** * Set and get fetch() */ setFetch: (item: typeof fetch) => void; getFetch: () => typeof fetch | undefined; /** * List all API providers (from config) */ listAPIProviders: () => string[]; } /** * API modules */ export declare interface IconifyAPIModule { prepare: IconifyAPIPrepareIconsQuery; send: IconifyAPISendQuery; } /** * Functions to implement in module */ export declare type IconifyAPIPrepareIconsQuery = (provider: string, prefix: string, icons: string[]) => IconifyAPIIconsQueryParams[]; export declare type IconifyAPIQueryParams = IconifyAPIIconsQueryParams | IconifyAPICustomQueryParams; export declare type IconifyAPISendQuery = (host: string, params: IconifyAPIQueryParams, callback: QueryModuleResponse) => void; /** * Interface for exported builder functions */ export declare interface IconifyBuilderFunctions { replaceIDs?: (body: string, prefix?: string | (() => string)) => string; calculateSize: (size: string | number, ratio: number, precision?: number) => string | number; buildIcon: (icon: IconifyIcon, customisations?: IconifyIconCustomisations_2) => IconifyIconBuildResult; } /** * Custom loader for one icon */ export declare type IconifyCustomIconLoader = (name: string, prefix: string, provider: string) => Promise | IconifyIcon | null; /** * Custom icons loader */ export declare type IconifyCustomIconsLoader = (icons: string[], prefix: string, provider: string) => Promise | IconifyJSON | null; /** * Properties for element that are mentioned in render.ts */ declare interface IconifyElementProps { id?: string; style?: unknown; title?: string; } export { IconifyIcon } /** * Interface for getSVGData() result */ export declare interface IconifyIconBuildResult { attributes: { width?: string; height?: string; viewBox: string; }; viewBox: SVGViewBox; body: string; } /** * Icon customisations */ export declare type IconifyIconCustomisations = IconifyIconCustomisations_2 & { rotate?: string | number; inline?: boolean; ariaHidden?: boolean; }; /** * Icon customisations */ declare interface IconifyIconCustomisations_2 extends IconifyTransformations, IconifyIconSizeCustomisations { } /** * Customise callback */ export declare type IconifyIconCustomiseCallback = (content: string, name: string, prefix: string, provider: string) => string; /** * Function to abort loading (usually just removes callback because loading is already in progress) */ export declare type IconifyIconLoaderAbort = () => void; /** * Loader callback * * Provides list of icons that have been loaded */ export declare type IconifyIconLoaderCallback = (loaded: IconifyIconName[], missing: IconifyIconName[], pending: IconifyIconName[], unsubscribe: IconifyIconLoaderAbort) => void; /** * Icon name */ export declare interface IconifyIconName { readonly provider: string; readonly prefix: string; readonly name: string; } /** * Icon properties */ export declare interface IconifyIconProps extends IconifyIconCustomisations { icon: IconifyIcon | string; mode?: IconifyRenderMode; color?: string; flip?: string; horizontalFlip?: boolean; verticalFlip?: boolean; } /** * Icon size */ export declare type IconifyIconSize = null | string | number; /** * Dimensions */ declare interface IconifyIconSizeCustomisations { width?: IconifyIconSize; height?: IconifyIconSize; } export { IconifyJSON } /** * Function to load icons */ declare type IconifyLoadIcons = (icons: (IconifyIconName | string)[], callback?: IconifyIconLoaderCallback) => IconifyIconLoaderAbort; /** * Icon render mode * * 'style' = 'bg' or 'mask', depending on icon content * 'bg' = with style using `background` * 'mask' = with style using `mask` * 'svg' = */ export declare type IconifyRenderMode = 'style' | 'bg' | 'mask' | 'svg'; /** * Interface for exported storage functions */ export declare interface IconifyStorageFunctions { /** * Check if icon data is available */ iconLoaded: (name: string) => boolean; /** * Get icon data with all properties * * Returns null if icon is missing (attempted to load, but failed) * Returns undefined if icon was not loaded */ getIcon: (name: string) => Required | null | undefined; /** * List all available icons */ listIcons: (provider?: string, prefix?: string) => string[]; /** * Add icon to storage * * Data is null if icon is missing */ addIcon: (name: string, data: IconifyIcon | null) => boolean; /** * Add icon set to storage */ addCollection: (data: IconifyJSON, provider?: string) => boolean; } /** * Check if icon data is available */ export declare function iconLoaded(name: string): boolean; /** * Mix of icon properties and HTMLElement properties */ export declare interface IconProps extends IconifyElementProps, IconifyIconProps { /** * Try load icon on first render during SSR * * This is a low-level API for framework integrations, you don't usually need to use it directly. * Note this might hydration mismatches if the icon data is not handled correctly, use with caution. */ ssr?: boolean; customise?: IconifyIconCustomiseCallback; } /** * List available icons */ export declare function listIcons(provider?: string, prefix?: string): string[]; /** * Load one icon using Promise */ export declare const loadIcon: (icon: IconifyIconName | string) => Promise>; /** * Load icons */ export declare const loadIcons: IconifyLoadIcons; export declare type PartialIconifyAPIConfig = Partial & Pick; /** * Callback for "abort" pending item. */ declare type QueryAbortCallback = () => void; /** * Callback * * If error is present, something went wrong and data is undefined. If error is undefined, data is set. */ declare type QueryDoneCallback = (data?: QueryModuleResponseData, error?: QueryModuleResponseData) => void; declare type QueryModuleResponse = (status: QueryModuleResponseType, data: QueryModuleResponseData) => void; /** * Response from query module */ declare type QueryModuleResponseData = unknown; /** * Response from query module */ declare type QueryModuleResponseType = 'success' | 'next' | 'abort'; /** * Configuration object */ declare interface RedundancyConfig { resources: RedundancyResource[]; index: number; timeout: number; rotate: number; random: boolean; dataAfterTimeout: boolean; } /** * Resource to rotate (usually hostname or partial URL) */ declare type RedundancyResource = string; /** * IDs usage: * * id="{id}" * xlink:href="#{id}" * url(#{id}) * * From SVG animations: * * begin="0;{id}.end" * begin="{id}.end" * begin="{id}.click" */ /** * Replace IDs in SVG output with unique IDs */ export declare function replaceIDs(body: string, prefix?: string | ((id: string) => string)): string; /** * Set custom loader for one icon */ export declare function setCustomIconLoader(loader: IconifyCustomIconLoader, prefix: string, provider?: string): void; /** * Set custom loader for multiple icons */ export declare function setCustomIconsLoader(loader: IconifyCustomIconsLoader, prefix: string, provider?: string): void; /** * SVG viewBox: x, y, width, height */ declare type SVGViewBox = [x: number, y: number, width: number, height: number]; export { }