{"version":3,"file":"ngx-sharebuttons.mjs","sources":["../../../projects/ngx-sharebuttons/src/lib/utils.ts","../../../projects/ngx-sharebuttons/src/lib/share.models.ts","../../../projects/ngx-sharebuttons/src/lib/share.defaults.ts","../../../projects/ngx-sharebuttons/src/lib/share.service.ts","../../../projects/ngx-sharebuttons/src/lib/custom-share-button-provider.ts","../../../projects/ngx-sharebuttons/src/lib/share-button.directive.ts","../../../projects/ngx-sharebuttons/src/ngx-sharebuttons.ts"],"sourcesContent":["import { ShareButtonFuncArgs } from './share.models';\r\n\r\n/** Returns a valid URL or falls back to current URL */\r\nexport function getValidUrl(url: string): string {\r\n  const isValidUrl: boolean = /^(http|https):\\/\\//.test(url);\r\n  if (isValidUrl) {\r\n    return url;\r\n  }\r\n  console.warn(`[ShareButtons]: Sharing link '${ url }' is invalid!`);\r\n  return null;\r\n}\r\n\r\nexport function printPage(): void {\r\n  return document.defaultView.print();\r\n}\r\n\r\nexport function copyToClipboard({\r\n                                  params,\r\n                                  data,\r\n                                  clipboard,\r\n                                  uiState\r\n                                }: ShareButtonFuncArgs<CopyToClipboardDataArgs>): void {\r\n  clipboard.copy(params.url);\r\n  // Disable copy button\r\n  uiState.set({ icon: data.successIcon, text: data.successText, disabled: true });\r\n  setTimeout(() => {\r\n    uiState.set({ icon: data.icon, text: data.text, disabled: false })\r\n  }, data.delay);\r\n}\r\n\r\ninterface CopyToClipboardDataArgs {\r\n  delay: number;\r\n  text: string;\r\n  icon: any;\r\n  successText: string;\r\n  successIcon: any;\r\n}\r\n","import { InjectionToken, WritableSignal, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { defaultOptions, ShareButtonProp } from './share.defaults';\r\n\r\nexport const SHARE_BUTTONS_CONFIG: InjectionToken<ShareButtonsConfig> = new InjectionToken<ShareButtonsConfig>('SHARE_BUTTONS_CONFIG', {\r\n  providedIn: 'root',\r\n  factory: () => defaultOptions\r\n});\r\n\r\nexport const SHARE_ICONS: InjectionToken<unknown> = new InjectionToken('SHARE_ICONS');\r\n\r\nexport function provideShareButtonsOptions(...providers: EnvironmentProviders[]): EnvironmentProviders {\r\n  return makeEnvironmentProviders(providers);\r\n}\r\n\r\nexport function withConfig(options: ShareButtonsConfig): EnvironmentProviders {\r\n  return makeEnvironmentProviders([\r\n    {\r\n      provide: SHARE_BUTTONS_CONFIG,\r\n      useValue: { ...defaultOptions, ...options }\r\n    }\r\n  ])\r\n}\r\n\r\n/**\r\n * Share buttons config\r\n */\r\nexport interface ShareButtonsConfig {\r\n  sharerMethod?: SharerMethod;\r\n  sharerTarget?: string;\r\n  windowObj?: any;\r\n  windowFuncName?: string;\r\n  theme?: string;\r\n  include?: ShareButtonProp[];\r\n  exclude?: ShareButtonProp[];\r\n  messengerAppId?: string;\r\n  xAccount?: string;\r\n  windowWidth?: number;\r\n  windowHeight?: number;\r\n  moreButtonIcon?: any;\r\n  lessButtonIcon?: any;\r\n  moreButtonAriaLabel?: string;\r\n  lessButtonAriaLabel?: string;\r\n  debug?: boolean;\r\n}\r\n\r\n/**\r\n * Share buttons collection\r\n */\r\nexport interface IShareButtons {\r\n  facebook?: IShareButton;\r\n  x?: IShareButton;\r\n  linkedin?: IShareButton;\r\n  google?: IShareButton;\r\n  tumblr?: IShareButton;\r\n  mix?: IShareButton;\r\n  pinterest?: IShareButton;\r\n  reddit?: IShareButton;\r\n  viber?: IShareButton;\r\n  vk?: IShareButton;\r\n  telegram?: IShareButton;\r\n  messenger?: IShareButton;\r\n  whatsapp?: IShareButton;\r\n  xing?: IShareButton;\r\n  line?: IShareButton;\r\n  sms?: IShareButton;\r\n  email?: IShareButton;\r\n  print?: IShareButton;\r\n  copy?: IShareButton;\r\n}\r\n\r\nexport class IShareButton {\r\n  /** Share button type */\r\n  type?: string;\r\n  /** Share button text */\r\n  text?: string;\r\n  /** Share button aria label attribute */\r\n  ariaLabel?: string;\r\n  /** Share button icon (FontAwesome) */\r\n  icon?: string | string[] | any;\r\n  /** Share button color */\r\n  color?: string;\r\n  /** Sharer base URL */\r\n  share?: {\r\n    desktop?: string;\r\n    android?: string;\r\n    ios?: string;\r\n  };\r\n  /** Sharer URL params */\r\n  params?: ShareParams;\r\n  requiredParams?: ShareParams<boolean>;\r\n  /**\r\n   * Params function: A function that resolves the param value (Advanced use)\r\n   *  Use case: To define a custom template for share buttons like Email, whatsapp, telegram, sms ...etc\r\n   */\r\n  paramsFunc?: ShareParams<ShareParamsFunc>;\r\n  /**\r\n   * Object used to attach additional data in a custom template for 'paramsFunc'\r\n   */\r\n  data?: any;\r\n  /**\r\n   * Some button do not open a share window, instead they execute a function like Print and Copy buttons.\r\n   */\r\n  func?: (args: ShareButtonFuncArgs<any>) => void;\r\n}\r\n\r\n/**\r\n * Share params\r\n */\r\nexport interface ShareParams<T = string> {\r\n  url?: T;\r\n  title?: T;\r\n  description?: T;\r\n  image?: T;\r\n  tags?: T;\r\n  via?: T;\r\n  appId?: T;\r\n  redirectUrl?: T;\r\n}\r\n\r\n/**\r\n * Share param function (Used to define message body template)\r\n */\r\nexport type ShareParamsFunc = (p: ShareParams) => string;\r\n\r\n/**\r\n * Share button function arguments (used in copyToClipboard as function arguments)\r\n */\r\nexport interface ShareButtonFuncArgs<T> {\r\n  clipboard?: Clipboard;\r\n  params?: ShareParams;\r\n  data?: T;\r\n  uiState?: WritableSignal<ShareDirectiveUpdater>;\r\n}\r\n\r\n/**\r\n * Share directive updater arguments (used in copyToClipboard to update button text and icon)\r\n */\r\nexport interface ShareDirectiveUpdater {\r\n  icon?: any;\r\n  text?: string;\r\n  disabled?: boolean;\r\n}\r\n\r\nexport enum SharerMethods {\r\n  Anchor = 'anchor',\r\n  Window = 'window'\r\n}\r\n\r\nexport type SharerMethod = SharerMethods | string;\r\n\r\n","import {\r\n  IShareButton,\r\n  IShareButtons,\r\n  ShareButtonsConfig,\r\n  ShareParams,\r\n  ShareParamsFunc,\r\n  SharerMethods\r\n} from './share.models';\r\nimport { copyToClipboard, printPage } from './utils';\r\n\r\n\r\nexport const defaultOptions: ShareButtonsConfig = {\r\n  sharerMethod: SharerMethods.Anchor,\r\n  theme: 'default',\r\n  windowWidth: 800,\r\n  windowHeight: 500,\r\n  moreButtonIcon: ['fas', 'ellipsis-h'],\r\n  lessButtonIcon: ['fas', 'minus'],\r\n  moreButtonAriaLabel: 'Show more share buttons',\r\n  lessButtonAriaLabel: 'Show less share buttons'\r\n};\r\n\r\n// Create message body that includes the sharing link used for Email, SMS and WhatsApp buttons\r\nconst linkInDescription: ShareParams<ShareParamsFunc> = {\r\n  description: (p: ShareParams) => {\r\n    return p.description ? `${ p.description }\\r\\n${ p.url }` : p.url;\r\n  }\r\n};\r\n\r\nexport const facebookParams: IShareButton = {\r\n  type: 'facebook',\r\n  text: 'Facebook',\r\n  ariaLabel: 'Share on Facebook',\r\n  icon: ['fab', 'facebook-f'],\r\n  color: '#4267B2',\r\n  share: {\r\n    desktop: 'https://facebook.com/sharer/sharer.php'\r\n  },\r\n  params: {\r\n    url: 'u'\r\n  }\r\n};\r\n\r\nexport const xParams: IShareButton = {\r\n  type: 'x',\r\n  text: 'X',\r\n  ariaLabel: 'Post on X',\r\n  icon: ['fab', 'x-twitter'],\r\n  color: '#000',\r\n  share: {\r\n    desktop: 'https://x.com/intent/post'\r\n  },\r\n  params: {\r\n    url: 'url',\r\n    description: 'text',\r\n    tags: 'hashtags',\r\n    via: 'via'\r\n  }\r\n};\r\n\r\nexport const linkedInParams: IShareButton = {\r\n  type: 'linkedin',\r\n  text: 'LinkedIn',\r\n  ariaLabel: 'Share on LinkedIn',\r\n  icon: ['fab', 'linkedin-in'],\r\n  color: '#0a66c2',\r\n  share: {\r\n    desktop: 'https://www.linkedin.com/sharing/share-offsite'\r\n  },\r\n  params: {\r\n    url: 'url'\r\n  }\r\n};\r\n\r\nexport const pinterestParams: IShareButton = {\r\n  type: 'pinterest',\r\n  text: 'Pinterest',\r\n  ariaLabel: 'Share on Pinterest',\r\n  icon: ['fab', 'pinterest-p'],\r\n  color: '#e60023',\r\n  share: {\r\n    desktop: 'https://pinterest.com/pin/create/button/'\r\n  },\r\n  params: {\r\n    url: 'url',\r\n    description: 'description',\r\n    image: 'media'\r\n  }\r\n};\r\n\r\nexport const redditParams: IShareButton = {\r\n  type: 'reddit',\r\n  text: 'Reddit',\r\n  ariaLabel: 'Share on Reddit',\r\n  icon: ['fab', 'reddit-alien'],\r\n  color: '#FF4006',\r\n  share: {\r\n    desktop: 'https://www.reddit.com/submit'\r\n  },\r\n  params: {\r\n    url: 'url',\r\n    title: 'title'\r\n  }\r\n};\r\n\r\nexport const tumblrParams: IShareButton = {\r\n  type: 'tumblr',\r\n  text: 'Tumblr',\r\n  ariaLabel: 'Share on Tumblr',\r\n  icon: ['fab', 'tumblr'],\r\n  color: '#36465D',\r\n  share: {\r\n    desktop: 'https://tumblr.com/widgets/share/tool'\r\n  },\r\n  params: {\r\n    url: 'canonicalUrl',\r\n    description: 'caption',\r\n    tags: 'tags'\r\n  }\r\n};\r\n\r\nexport const mixParams: IShareButton = {\r\n  type: 'mix',\r\n  text: 'Mix',\r\n  ariaLabel: 'Share on Mix',\r\n  icon: ['fab', 'mix'],\r\n  color: '#eb4924',\r\n  share: {\r\n    desktop: 'https://mix.com/add'\r\n  },\r\n  params: {\r\n    url: 'url'\r\n  }\r\n};\r\n\r\nexport const viberParams: IShareButton = {\r\n  type: 'viber',\r\n  text: 'Viber',\r\n  ariaLabel: 'Share on Viber',\r\n  icon: ['fab', 'viber'],\r\n  color: '#665ca7',\r\n  share: {\r\n    android: 'viber://forward',\r\n    ios: 'viber://forward'\r\n  },\r\n  params: {\r\n    description: 'text'\r\n  },\r\n  paramsFunc: linkInDescription,\r\n  requiredParams: {\r\n    description: true\r\n  }\r\n};\r\n\r\nexport const vkParams: IShareButton = {\r\n  type: 'vk',\r\n  text: 'VKontakte',\r\n  ariaLabel: 'Share on VKontakte',\r\n  icon: ['fab', 'vk'],\r\n  color: '#4C75A3',\r\n  share: {\r\n    desktop: 'https://vk.com/share.php'\r\n  },\r\n  params: {\r\n    url: 'url'\r\n  }\r\n};\r\n\r\nexport const telegramParams: IShareButton = {\r\n  type: 'telegram',\r\n  text: 'Telegram',\r\n  ariaLabel: 'Share on Telegram',\r\n  icon: ['fab', 'telegram-plane'],\r\n  color: '#0088cc',\r\n  share: {\r\n    desktop: 'https://t.me/share/url'\r\n  },\r\n  params: {\r\n    url: 'url',\r\n    description: 'text'\r\n  }\r\n};\r\n\r\nexport const messengerParams: IShareButton = {\r\n  type: 'messenger',\r\n  text: 'Messenger',\r\n  ariaLabel: 'Share on Messenger',\r\n  icon: ['fab', 'facebook-messenger'],\r\n  color: '#168AFF',\r\n  share: {\r\n    desktop: 'https://www.facebook.com/dialog/send',\r\n    android: 'fb-messenger://share/',\r\n    ios: 'fb-messenger://share/'\r\n  },\r\n  params: {\r\n    url: 'link',\r\n    appId: 'app_id',\r\n    redirectUrl: 'redirect_uri'\r\n  }\r\n};\r\n\r\nexport const whatsappParams: IShareButton = {\r\n  type: 'whatsapp',\r\n  text: 'WhatsApp',\r\n  ariaLabel: 'Share on WhatsApp',\r\n  icon: ['fab', 'whatsapp'],\r\n  color: '#25D366',\r\n  share: {\r\n    desktop: 'https://api.whatsapp.com/send',\r\n    android: 'whatsapp://send',\r\n    ios: 'https://api.whatsapp.com/send'\r\n  },\r\n  params: {\r\n    url: 'link',\r\n    description: 'text'\r\n  },\r\n  requiredParams: {\r\n    description: true\r\n  },\r\n  paramsFunc: linkInDescription\r\n};\r\n\r\nexport const xingParams: IShareButton = {\r\n  type: 'xing',\r\n  text: 'Xing',\r\n  ariaLabel: 'Share on Xing',\r\n  icon: ['fab', 'xing'],\r\n  color: '#006567',\r\n  share: {\r\n    desktop: 'https://www.xing.com/spi/shares/new'\r\n  },\r\n  params: {\r\n    url: 'url'\r\n  }\r\n};\r\n\r\nexport const lineParams: IShareButton = {\r\n  type: 'line',\r\n  text: 'Line',\r\n  ariaLabel: 'Share on Line',\r\n  icon: ['fab', 'line'],\r\n  color: '#00b900',\r\n  share: {\r\n    desktop: 'https://social-plugins.line.me/lineit/share'\r\n  },\r\n  params: {\r\n    url: 'url'\r\n  }\r\n};\r\n\r\nexport const smsParams: IShareButton = {\r\n  type: 'sms',\r\n  text: 'SMS',\r\n  ariaLabel: 'Share link via SMS',\r\n  icon: ['fas', 'sms'],\r\n  color: '#20c16c',\r\n  share: {\r\n    desktop: 'sms:',\r\n    ios: 'sms:&'\r\n  },\r\n  params: {\r\n    description: 'body'\r\n  },\r\n  paramsFunc: linkInDescription,\r\n  requiredParams: {\r\n    description: true\r\n  }\r\n};\r\n\r\nexport const emailParams: IShareButton = {\r\n  type: 'email',\r\n  text: 'Email',\r\n  ariaLabel: 'Share link via email',\r\n  icon: ['fas', 'envelope'],\r\n  color: '#FF961C',\r\n  share: {\r\n    desktop: 'mailto:'\r\n  },\r\n  params: {\r\n    title: 'subject',\r\n    description: 'body'\r\n  },\r\n  paramsFunc: linkInDescription,\r\n  requiredParams: {\r\n    description: true\r\n  }\r\n};\r\n\r\nexport const printerParams: IShareButton = {\r\n  type: 'print',\r\n  text: 'Print',\r\n  ariaLabel: 'Print page',\r\n  icon: ['fas', 'print'],\r\n  color: '#765AA2',\r\n  func: printPage\r\n};\r\n\r\nexport const copyParams: IShareButton = {\r\n  type: 'copy',\r\n  text: 'Copy link',\r\n  ariaLabel: 'Copy link',\r\n  icon: ['fas', 'link'],\r\n  color: '#607D8B',\r\n  data: {\r\n    text: 'Copy link',\r\n    icon: ['fas', 'link'],\r\n    successText: 'Copied',\r\n    successIcon: ['fas', 'check'],\r\n    delay: 2000\r\n  },\r\n  func: copyToClipboard\r\n}\r\n\r\nexport const SHARE_BUTTONS: IShareButtons = {\r\n  facebook: facebookParams,\r\n  x: xParams,\r\n  linkedin: linkedInParams,\r\n  pinterest: pinterestParams,\r\n  reddit: redditParams,\r\n  tumblr: tumblrParams,\r\n  mix: mixParams,\r\n  viber: viberParams,\r\n  vk: vkParams,\r\n  telegram: telegramParams,\r\n  messenger: messengerParams,\r\n  whatsapp: whatsappParams,\r\n  xing: xingParams,\r\n  line: lineParams,\r\n  sms: smsParams,\r\n  email: emailParams,\r\n  print: printerParams,\r\n  copy: copyParams\r\n};\r\n\r\nexport type ShareButtonProp =\r\n  string\r\n  | 'facebook'\r\n  | 'x'\r\n  | 'pinterest'\r\n  | 'linkedin'\r\n  | 'email'\r\n  | 'print'\r\n  | 'reddit'\r\n  | 'copy'\r\n  | 'xing'\r\n  | 'line'\r\n  | 'sms'\r\n  | 'tumblr'\r\n  | 'whatsapp'\r\n  | 'messenger'\r\n  | 'telegram'\r\n  | 'vk'\r\n  | 'viber'\r\n  | 'mix';\r\n","import { inject, Injectable, WritableSignal } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { Meta } from '@angular/platform-browser';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\nimport { getValidUrl } from './utils';\r\nimport { SHARE_BUTTONS } from './share.defaults';\r\nimport { SHARE_ICONS, IShareButton, ShareParams, ShareParamsFunc, SharerMethod, SharerMethods } from './share.models';\r\n\r\ninterface ShareLinkParams {\r\n  url: string;\r\n  params: Record<string, string>;\r\n  target?: string;\r\n}\r\n\r\ninterface WindowOptions {\r\n  windowObj?: Window;\r\n  openFunc?: string;\r\n  width?: number;\r\n  height?: number;\r\n}\r\n\r\ninterface CreateShareButtonOptions {\r\n  name: string;\r\n  params: ShareParams;\r\n  props?: IShareButton;\r\n  method?: SharerMethod;\r\n  target?: string;\r\n  windowOptions?: WindowOptions;\r\n  uiState?: WritableSignal<any>;\r\n  debug?: boolean;\r\n}\r\n\r\ninterface ShareOptions {\r\n  params: ShareParams;\r\n  props?: IShareButton;\r\n  method?: SharerMethod;\r\n  target?: string;\r\n  windowOptions?: WindowOptions;\r\n  uiState?: WritableSignal<any>;\r\n  debug?: boolean;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ShareService {\r\n\r\n  private readonly document: Document = inject(DOCUMENT);\r\n\r\n  // This declaration just to allow SHARE_ICONS to load the icons\r\n  private readonly icons: unknown = inject(SHARE_ICONS, { optional: true });\r\n\r\n  private readonly meta: Meta = inject(Meta);\r\n\r\n  private readonly platform: Platform = inject(Platform);\r\n\r\n  private readonly clipboard: Clipboard = inject(Clipboard);\r\n\r\n  /**\r\n   * Get meta tag content\r\n   */\r\n  _getMetaTagContent(key: string): string {\r\n    const metaUsingProperty: HTMLMetaElement = this.meta.getTag(`property=\"${ key }\"`);\r\n    const metaUsingName: HTMLMetaElement = this.meta.getTag(`name=\"${ key }\"`);\r\n\r\n    return (metaUsingProperty || metaUsingName)?.getAttribute('content') ?? null;\r\n  }\r\n\r\n  _getComputedUrl(url: string): string {\r\n    return getValidUrl(url || this._getMetaTagContent('og:url') || this.document.location.href);\r\n  }\r\n\r\n  _getComputedParams(params: ShareParams): ShareParams {\r\n    // If user provided a URL, then we cannot use the meta tag of the current page for the sharing parameters\r\n    if (params.url) {\r\n      return {\r\n        title: params.title,\r\n        description: params.description,\r\n        image: params.image,\r\n        tags: params.tags,\r\n        via: params.via,\r\n        url: this._getComputedUrl(params.url),\r\n        appId: params.appId || this._getMetaTagContent('fb:app_id'),\r\n        redirectUrl: params.redirectUrl || this.document.location.href\r\n      }\r\n    }\r\n    return {\r\n      title: params.title || this._getMetaTagContent('og:title'),\r\n      description: params.description || this._getMetaTagContent('og:description'),\r\n      image: params.image || this._getMetaTagContent('og:image'),\r\n      tags: params.tags,\r\n      via: params.via,\r\n      url: this._getComputedUrl(params.url),\r\n      appId: params.appId || this._getMetaTagContent('fb:app_id'),\r\n      redirectUrl: params.redirectUrl || this.document.location.href\r\n    }\r\n  }\r\n\r\n  _getComputedUrlParams(shareButton: IShareButton, params: ShareParams): Record<string, string> {\r\n    const computedParams: ShareParams = this._getComputedParams(params);\r\n\r\n    return Object.entries(shareButton.params).reduce((params: Record<string, string>, [key, realKey]: [string, string]) => {\r\n      // Check if param has a value\r\n      if ((shareButton.requiredParams && shareButton.requiredParams[key]) || computedParams[key]) {\r\n        // Check if param has a resolver function\r\n        const resolver: ShareParamsFunc = shareButton.paramsFunc?.[key];\r\n        params[realKey] = resolver ? resolver(computedParams) : computedParams[key];\r\n      }\r\n      return params;\r\n    }, {});\r\n  }\r\n\r\n  _getShareButtonInstance(name: string, props: IShareButton): IShareButton {\r\n    /** Combine injected option with default options */\r\n    const button: IShareButton = props ? { ...SHARE_BUTTONS[name], ...props } : SHARE_BUTTONS[name];\r\n\r\n    if (button) {\r\n      return button;\r\n    }\r\n    throw new Error(`[ShareButtons]: The share button '${ button }' does not exist!`);\r\n  }\r\n\r\n  private share(shareButton: IShareButton, options: ShareOptions): void {\r\n    let sharerLink: string;\r\n    if (this.platform.IOS && shareButton.share.ios) {\r\n      sharerLink = shareButton.share.ios;\r\n    } else if (this.platform.ANDROID && shareButton.share.android) {\r\n      sharerLink = shareButton.share.android;\r\n    } else {\r\n      sharerLink = shareButton.share.desktop;\r\n    }\r\n\r\n    const params: Record<string, string> = this._getComputedUrlParams(shareButton, options.params);\r\n\r\n    if (sharerLink) {\r\n      switch (options.method) {\r\n        case SharerMethods.Anchor:\r\n          this.openViaAnchor({\r\n            params,\r\n            url: sharerLink,\r\n            target: options.target\r\n          }, options.debug);\r\n          break;\r\n\r\n        case SharerMethods.Window:\r\n          this.openViaWindow({\r\n            params,\r\n            url: sharerLink,\r\n            target: options.target\r\n          }, options.windowOptions, options.debug);\r\n          break;\r\n      }\r\n    }\r\n  }\r\n\r\n  open(options: CreateShareButtonOptions): void {\r\n    const button: IShareButton = this._getShareButtonInstance(options.name, options.props);\r\n    this.openInstance(options, button);\r\n  }\r\n\r\n  openInstance(options: ShareOptions, button: IShareButton): void {\r\n    if (button.share) {\r\n      this.share(button, options);\r\n    } else {\r\n      button.func({\r\n        params: this._getComputedParams(options.params),\r\n        data: button.data,\r\n        clipboard: this.clipboard,\r\n        uiState: options.uiState\r\n      });\r\n    }\r\n  }\r\n\r\n  private openViaWindow(args: ShareLinkParams, windowOptions?: WindowOptions, debug?: boolean): void {\r\n    const finalUrl: string = `${ args.url }?${ new HttpParams({ fromObject: args.params }).toString() }`;\r\n\r\n    if (debug) {\r\n      console.log('[SHARE BUTTONS]: open link via window', finalUrl);\r\n    }\r\n\r\n    const windowRef: Window = windowOptions?.windowObj || this.document.defaultView;\r\n    // Open link using Window object\r\n    const openWindow = windowRef?.[windowOptions?.openFunc] || this.document.defaultView.open;\r\n\r\n    openWindow(finalUrl, args.target ?? '_blank', `width=${ windowOptions?.width || 800 }, height=${ windowOptions?.height || 500 }`);\r\n\r\n    // Prevent security vulnerability https://medium.com/@jitbit/target-blank-the-most-underestimated-vulnerability-ever-96e328301f4c\r\n    windowRef.opener ??= null;\r\n  }\r\n\r\n  private openViaAnchor(args: ShareLinkParams, debug?: boolean): void {\r\n    const finalUrl: string = `${ args.url }?${ new HttpParams({ fromObject: args.params }).toString() }`;\r\n\r\n    if (debug) {\r\n      console.log('[SHARE BUTTONS]: open link via anchor', finalUrl);\r\n    }\r\n\r\n    const linkElement: HTMLAnchorElement = this.document.createElement('a');\r\n    // Make it open in a new tab/window (depends on user's browser configuration)\r\n    linkElement.setAttribute('target', args.target ?? '_blank');\r\n\r\n    // Prevent security vulnerability https://medium.com/@jitbit/target-blank-the-most-underestimated-vulnerability-ever-96e328301f4c\r\n    linkElement.setAttribute('rel', 'noopener noreferrer');\r\n    linkElement.href = finalUrl;\r\n    linkElement.click();\r\n    linkElement.remove();\r\n  }\r\n}\r\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core';\r\nimport { IShareButton, IShareButtons } from './share.models';\r\nimport { SHARE_BUTTONS } from './share.defaults';\r\n\r\nexport const SHARE_BUTTONS_PROP: InjectionToken<IShareButtons> = new InjectionToken<IShareButtons>('SHARE_BUTTONS_PROP', {\r\n  providedIn: 'root',\r\n  factory: () => SHARE_BUTTONS\r\n});\r\n\r\nexport function customShareButton(key: string, button: IShareButton): EnvironmentProviders {\r\n  SHARE_BUTTONS[key] = {\r\n    ...SHARE_BUTTONS[key],\r\n    ...button\r\n  };\r\n  return makeEnvironmentProviders([\r\n    {\r\n      provide: SHARE_BUTTONS_PROP,\r\n      useValue: SHARE_BUTTONS\r\n    }\r\n  ]);\r\n}\r\n","import {\r\n  Directive,\r\n  inject,\r\n  signal,\r\n  effect,\r\n  output,\r\n  computed,\r\n  untracked,\r\n  input,\r\n  Signal,\r\n  ElementRef,\r\n  InputSignal,\r\n  WritableSignal,\r\n  OutputEmitterRef,\r\n} from '@angular/core';\r\n\r\nimport { ShareService } from './share.service';\r\nimport {\r\n  IShareButton,\r\n  IShareButtons,\r\n  ShareButtonsConfig,\r\n  ShareDirectiveUpdater,\r\n  SHARE_BUTTONS_CONFIG,\r\n} from './share.models';\r\nimport { ShareButtonProp } from './share.defaults';\r\nimport { SHARE_BUTTONS_PROP } from './custom-share-button-provider';\r\n\r\n@Directive({\r\n  selector: '[shareButton]',\r\n  exportAs: 'shareButton',\r\n  host: {\r\n    '[style.--button-color]': 'color()',\r\n    '[attr.aria-label]': 'shareButtonInstance().ariaLabel',\r\n    '(click)': 'share()'\r\n  }\r\n})\r\nexport class ShareButtonDirective {\r\n\r\n  private readonly shareButtonsProps: IShareButtons = inject(SHARE_BUTTONS_PROP);\r\n\r\n  /** Injected options */\r\n  private readonly options: ShareButtonsConfig = inject(SHARE_BUTTONS_CONFIG);\r\n\r\n  /** Share directive element ref */\r\n  private readonly shareService: ShareService = inject(ShareService);\r\n\r\n  private readonly nativeElement: HTMLElement = inject(ElementRef<HTMLElement>).nativeElement;\r\n\r\n  /** Share button UI state */\r\n  uiState: WritableSignal<ShareDirectiveUpdater> = signal({});\r\n\r\n  /** Share button color */\r\n  color: Signal<string> = computed(() => this.shareButtonInstance().color);\r\n\r\n  /** Share button text */\r\n  text: Signal<string> = computed(() => this.uiState().text);\r\n\r\n  /** Share button icon */\r\n  icon: Signal<any> = computed(() => this.uiState().icon);\r\n\r\n  /** Share button disabled */\r\n  disabled: Signal<boolean> = computed(() => this.uiState().disabled);\r\n\r\n  /** Share button type */\r\n  shareButton: InputSignal<ShareButtonProp> = input.required<ShareButtonProp>();\r\n\r\n  shareButtonInstance: Signal<IShareButton> = computed<IShareButton>(() => {\r\n    return this.shareButtonsProps[this.shareButton()];\r\n  });\r\n\r\n  /** Sets the title parameter */\r\n  title: InputSignal<string> = input<string>();\r\n\r\n  /** Sets the description parameter */\r\n  description: InputSignal<string> = input<string>();\r\n\r\n  /** Sets the image parameter for sharing on Pinterest */\r\n  image: InputSignal<string> = input<string>();\r\n\r\n  /** Sets the tags parameter for sharing on X and Tumblr */\r\n  tags: InputSignal<string> = input<string>();\r\n\r\n  /** Sets the fb messenger redirect url to enable sharing on Messenger desktop */\r\n  redirectUrl: InputSignal<string> = input<string>();\r\n\r\n  /** Sharing link */\r\n  url: InputSignal<string> = input<string>();\r\n\r\n  /** Stream that emits when share dialog is opened */\r\n  opened: OutputEmitterRef<string> = output<string>();\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      const button: IShareButton = this.shareButtonInstance();\r\n\r\n      if (!button) {\r\n        throw new Error(`[ShareButtons]: The share button '${ this.shareButton() }' does not exist!`);\r\n      }\r\n      untracked(() => {\r\n        // Set share button properties\r\n        this.uiState.set({\r\n          icon: button.icon,\r\n          text: button.text,\r\n          disabled: false\r\n        });\r\n      });\r\n    });\r\n\r\n    effect(() => {\r\n      // Set disabled attribute only when disabled state is true, because disabled=\"false\" will also disable the button\r\n      this.nativeElement.toggleAttribute('disabled', this.uiState().disabled);\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Share the link\r\n   */\r\n  share(): void {\r\n    this.shareService.openInstance({\r\n      params: {\r\n        url: this.url(),\r\n        title: this.title(),\r\n        description: this.description(),\r\n        image: this.image(),\r\n        tags: this.tags(),\r\n        redirectUrl: this.redirectUrl()\r\n      },\r\n      target: this.options.sharerTarget,\r\n      debug: this.options.debug,\r\n      method: this.options.sharerMethod,\r\n      uiState: this.uiState,\r\n    }, this.shareButtonInstance());\r\n\r\n    // Emit after share action is done\r\n    this.opened.emit(this.shareButton());\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}