import { InjectionToken, WritableSignal, EnvironmentProviders } from '@angular/core'; import { Clipboard } from '@angular/cdk/clipboard'; import { ShareButtonProp } from './share.defaults'; export declare const SHARE_BUTTONS_CONFIG: InjectionToken; export declare const SHARE_ICONS: InjectionToken; export declare function provideShareButtonsOptions(...providers: EnvironmentProviders[]): EnvironmentProviders; export declare function withConfig(options: ShareButtonsConfig): EnvironmentProviders; /** * Share buttons config */ export interface ShareButtonsConfig { sharerMethod?: SharerMethod; sharerTarget?: string; windowObj?: any; windowFuncName?: string; theme?: string; include?: ShareButtonProp[]; exclude?: ShareButtonProp[]; messengerAppId?: string; xAccount?: string; windowWidth?: number; windowHeight?: number; moreButtonIcon?: any; lessButtonIcon?: any; moreButtonAriaLabel?: string; lessButtonAriaLabel?: string; debug?: boolean; } /** * Share buttons collection */ export interface IShareButtons { facebook?: IShareButton; x?: IShareButton; linkedin?: IShareButton; google?: IShareButton; tumblr?: IShareButton; mix?: IShareButton; pinterest?: IShareButton; reddit?: IShareButton; viber?: IShareButton; vk?: IShareButton; telegram?: IShareButton; messenger?: IShareButton; whatsapp?: IShareButton; xing?: IShareButton; line?: IShareButton; sms?: IShareButton; email?: IShareButton; print?: IShareButton; copy?: IShareButton; } export declare class IShareButton { /** Share button type */ type?: string; /** Share button text */ text?: string; /** Share button aria label attribute */ ariaLabel?: string; /** Share button icon (FontAwesome) */ icon?: string | string[] | any; /** Share button color */ color?: string; /** Sharer base URL */ share?: { desktop?: string; android?: string; ios?: string; }; /** Sharer URL params */ params?: ShareParams; requiredParams?: ShareParams; /** * Params function: A function that resolves the param value (Advanced use) * Use case: To define a custom template for share buttons like Email, whatsapp, telegram, sms ...etc */ paramsFunc?: ShareParams; /** * Object used to attach additional data in a custom template for 'paramsFunc' */ data?: any; /** * Some button do not open a share window, instead they execute a function like Print and Copy buttons. */ func?: (args: ShareButtonFuncArgs) => void; } /** * Share params */ export interface ShareParams { url?: T; title?: T; description?: T; image?: T; tags?: T; via?: T; appId?: T; redirectUrl?: T; } /** * Share param function (Used to define message body template) */ export type ShareParamsFunc = (p: ShareParams) => string; /** * Share button function arguments (used in copyToClipboard as function arguments) */ export interface ShareButtonFuncArgs { clipboard?: Clipboard; params?: ShareParams; data?: T; uiState?: WritableSignal; } /** * Share directive updater arguments (used in copyToClipboard to update button text and icon) */ export interface ShareDirectiveUpdater { icon?: any; text?: string; disabled?: boolean; } export declare enum SharerMethods { Anchor = "anchor", Window = "window" } export type SharerMethod = SharerMethods | string;