{"version":3,"file":"index.cjs","names":[],"sources":["../index.ts"],"sourcesContent":["import { App } from 'vue';\n\nconst ONESIGNAL_SDK_ID = 'onesignal-sdk';\nconst DEFAULT_SCRIPT_SRC =\n  'https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js';\n\nlet isOneSignalInitialized = false;\nlet isOneSignalScriptFailed = false;\nlet pendingInitReject: ((reason?: unknown) => void) | undefined;\n\nif (typeof window !== 'undefined') {\n  window.OneSignalDeferred = window.OneSignalDeferred || [];\n}\n\n/* H E L P E R S */\n\nfunction handleOnError() {\n  isOneSignalScriptFailed = true;\n  pendingInitReject?.(new Error('OneSignal script failed to load.'));\n  pendingInitReject = undefined;\n}\n\nfunction addSDKScript(scriptSrc?: string) {\n  if (document.getElementById(ONESIGNAL_SDK_ID)) {\n    return;\n  }\n\n  const script = document.createElement('script');\n  script.id = ONESIGNAL_SDK_ID;\n  script.defer = true;\n  script.src = scriptSrc || DEFAULT_SCRIPT_SRC;\n\n  // Always resolve whether or not the script is successfully initialized.\n  // This is important for users who may block cdn.onesignal.com w/ adblock.\n  script.onerror = () => {\n    handleOnError();\n  };\n\n  document.head.appendChild(script);\n}\n/* T Y P E   D E C L A R A T I O N S */\n\ndeclare module 'vue' {\n  export interface ComponentCustomProperties {\n    $OneSignal: IOneSignalOneSignal;\n  }\n}\n\ndeclare global {\n  interface Window {\n    OneSignalDeferred?: OneSignalDeferredLoadedCallback[];\n    OneSignal?: IOneSignalOneSignal;\n    safari?: {\n      pushNotification: any;\n    };\n  }\n}\n\n/* O N E S I G N A L   A P I  */\n\n/**\n * @PublicApi\n */\nconst init = (options: IInitObject): Promise<void> => {\n  if (isOneSignalInitialized) {\n    return Promise.reject(`OneSignal is already initialized.`);\n  }\n\n  if (!options || !options.appId) {\n    return Promise.reject('You need to provide your OneSignal appId.');\n  }\n\n  if (!document) {\n    return Promise.reject(`Document is not defined.`);\n  }\n\n  // Required: the CDN script silently exits on unsupported browsers without\n  // draining OneSignalDeferred, so init() would hang forever otherwise.\n  if (!isPushNotificationsSupported()) {\n    return Promise.reject(\n      new Error('This browser does not support Web Push notifications.'),\n    );\n  }\n\n  // Handle both disabled and disable keys for welcome notification\n  if (options.welcomeNotification?.disabled !== undefined) {\n    options.welcomeNotification.disable = options.welcomeNotification.disabled;\n  }\n\n  addSDKScript(options.scriptSrc);\n\n  return new Promise<void>((resolve, reject) => {\n    pendingInitReject = reject;\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.init(options)\n        .then(() => {\n          isOneSignalInitialized = true;\n          pendingInitReject = undefined;\n          resolve();\n        })\n        .catch((err) => {\n          pendingInitReject = undefined;\n          reject(err);\n        });\n    });\n  });\n};\n\n/**\n * The following code is copied directly from the native SDK source file BrowserSupportsPush.ts\n * S T A R T\n */\n\n// Checks if the browser supports push notifications by checking if specific\n//   classes and properties on them exist\nfunction isPushNotificationsSupported() {\n  return supportsVapidPush() || supportsSafariPush();\n}\n\nfunction isMacOSSafariInIframe(): boolean {\n  // Fallback detection for Safari on macOS in an iframe context\n  return (\n    window.top !== window && // isContextIframe\n    navigator.vendor === 'Apple Computer, Inc.' && // isSafari\n    navigator.platform === 'MacIntel'\n  ); // isMacOS\n}\n\nfunction supportsSafariPush(): boolean {\n  return (\n    (window.safari && typeof window.safari.pushNotification !== 'undefined') ||\n    isMacOSSafariInIframe()\n  );\n}\n\n// Does the browser support the standard Push API\nfunction supportsVapidPush(): boolean {\n  return (\n    typeof PushSubscriptionOptions !== 'undefined' &&\n    PushSubscriptionOptions.prototype.hasOwnProperty('applicationServerKey')\n  );\n}\n/* E N D */\n\n/**\n * @PublicApi\n */\nconst isPushSupported = (): boolean => {\n  return isPushNotificationsSupported();\n};\n\nexport interface AutoPromptOptions { force?: boolean; forceSlidedownOverNative?: boolean; slidedownPromptOptions?: IOneSignalAutoPromptOptions; }\nexport interface IOneSignalAutoPromptOptions { force?: boolean; forceSlidedownOverNative?: boolean; isInUpdateMode?: boolean; categoryOptions?: IOneSignalCategories; }\nexport interface IOneSignalCategories { positiveUpdateButton: string; negativeUpdateButton: string; savingButtonText: string; errorButtonText: string; updateMessage: string; tags: IOneSignalTagCategory[]; }\nexport interface IOneSignalTagCategory { tag: string; label: string; checked?: boolean; }\nexport type PushSubscriptionNamespaceProperties = { id: string | null | undefined; token: string | null | undefined; optedIn: boolean; };\nexport type SubscriptionChangeEvent = { previous: PushSubscriptionNamespaceProperties; current: PushSubscriptionNamespaceProperties; };\nexport type NotificationEventName = 'click' | 'foregroundWillDisplay' | 'dismiss' | 'permissionChange' | 'permissionPromptDisplay';\nexport type SlidedownEventName = 'slidedownAllowClick' | 'slidedownCancelClick' | 'slidedownClosed' | 'slidedownQueued' | 'slidedownShown';\nexport type OneSignalDeferredLoadedCallback = (onesignal: IOneSignalOneSignal) => void;\nexport interface IOSNotification {\n  /**\n   * The OneSignal notification id;\n   *  - Primary id on OneSignal's REST API and dashboard\n   */\n  readonly notificationId: string;\n\n  /**\n   * Visible title text on the notification\n   */\n  readonly title?: string;\n\n  /**\n   * Visible body text on the notification\n   */\n  readonly body: string;\n\n  /**\n   * Visible icon the notification; URL format\n   */\n  readonly icon?: string;\n\n  /**\n   * Visible small badgeIcon that displays on some devices; URL format\n   * Example: On Android's status bar\n   */\n  readonly badgeIcon?: string;\n\n  /**\n   * Visible image on the notification; URL format\n   */\n  readonly image?: string;\n\n  /**\n   * Visible buttons on the notification\n   */\n  readonly actionButtons?: IOSNotificationActionButton[];\n\n  /**\n   * If this value is the same as existing notification, it will replace it\n   * Can be set when creating the notification with \"Web Push Topic\" on the dashboard\n   * or web_push_topic from the REST API.\n   */\n  readonly topic?: string;\n\n  /**\n   * Custom object that was sent with the notification;\n   * definable when creating the notification from the OneSignal REST API or dashboard\n   */\n  readonly additionalData?: object;\n\n  /**\n   * URL to open when clicking or tapping on the notification\n   */\n  readonly launchURL?: string;\n\n  /**\n   * Confirm the push was received by reporting back to OneSignal\n   */\n  readonly confirmDelivery: boolean;\n}\n\nexport interface IOSNotificationActionButton {\n  /**\n   * Any unique identifier to represent which button was clicked. This is typically passed back to the service worker\n   * and host page through events to identify which button was clicked.\n   * e.g. 'like-button'\n   */\n  readonly actionId: string;\n  /**\n   * The notification action button's text.\n   */\n  readonly text: string;\n  /**\n   * A valid publicly reachable HTTPS URL to an image.\n   */\n  readonly icon?: string;\n  /**\n   * The URL to open the web browser to when this action button is clicked.\n   */\n  readonly launchURL?: string;\n}\n\nexport interface IDisplayableOSNotification extends IOSNotification {\n  display(): void;\n}\n\nexport interface NotificationClickResult {\n  readonly actionId?: string;\n  readonly url?: string;\n}\n\nexport type NotificationEventTypeMap = {\n  'click': NotificationClickEvent;\n  'foregroundWillDisplay': NotificationForegroundWillDisplayEvent;\n  'dismiss': NotificationDismissEvent;\n  'permissionChange': boolean;\n  'permissionPromptDisplay': void;\n};\n\nexport interface NotificationForegroundWillDisplayEvent {\n  readonly notification: IDisplayableOSNotification;\n  preventDefault(): void;\n}\n\nexport interface NotificationDismissEvent {\n  notification: IOSNotification;\n}\n\nexport interface NotificationClickEvent {\n  readonly notification: IOSNotification;\n  readonly result: NotificationClickResult;\n}\n\nexport type UserChangeEvent = {\n  current: UserNamespaceProperties;\n};\nexport type UserNamespaceProperties = {\n  onesignalId: string | undefined;\n  externalId: string | undefined;\n};\n\nexport interface IInitObject {\n  appId: string;\n  requiresUserPrivacyConsent?: boolean;\n  safari_web_id?: string;\n  subdomainName?: string;\n  promptOptions?: {\n    slidedown: {\n      prompts: {\n        /**\n         * Whether to automatically display the prompt.\n         * `true` will display the prompt based on the delay options.\n         * `false` will prevent the prompt from displaying until the Slidedowns methods are used.\n         */\n        autoPrompt: boolean;\n\n        /**\n         * Only available for type: category. Up to 10 categories.\n         * @example\n         *  categories: [{ tag: 'local_news', label: 'Local News' }] // The user will be tagged with local_news but will see \"Local News\" in the prompt.\n         */\n        categories?: {\n          /** Should identify the action. */\n          tag: string;\n\n          /** What the user will see. */\n          label: string;\n        }[];\n\n        /**\n         * The delay options for the prompt.\n         * @example delay: { pageViews: 3, timeDelay: 20 } // The user will not be shown the prompt until 20 seconds after the 3rd page view.\n         */\n        delay: {\n          /** The number of pages a user needs to visit before the prompt is displayed. */\n          pageViews?: number;\n\n          /** The number of seconds a user needs to wait before the prompt is displayed.Both options must be satisfied for the prompt to display */\n          timeDelay?: number;\n        };\n\n        /**\n         * The text to display in the prompt.\n         */\n        text?: {\n          /** The callout asking the user to opt-in. Up to 90 characters. */\n          actionMessage?: string;\n\n          /** Triggers the opt-in. Up to 15 characters. */\n          acceptButton?: string;\n\n          /** Cancels opt-in. Up to 15 characters. */\n          cancelButton?: string;\n\n          /** The message of the confirmation prompt displayed after the email and/or phone number is provided. Up to 90 characters. */\n          confirmMessage?: string;\n\n          /** Identifies the email text field. Up to 15 characters. */\n          emailLabel?: string;\n\n          /** Cancels the category update. Up to 15 characters. */\n          negativeUpdateButton?: string;\n\n          /** Saves the updated category tags. Up to 15 characters. */\n          positiveUpdateButton?: string;\n\n          /** Identifies the phone number text field. Up to 15 characters. */\n          smsLabel?: string;\n\n          /** A different message shown to subscribers presented the prompt again to update categories. Up to 90 characters. */\n          updateMessage?: string;\n        };\n\n        /**\n         * The type of prompt to display.\n         * `push` which is the Slide Prompt without categories.\n         * `category` which is the Slide Prompt with categories.\n         * `sms` only asks for phone number.\n         * `email` only asks for email address.\n         * `smsAndEmail` asks for both phone number and email address.\n         */\n        type: 'push' | 'category' | 'sms' | 'email' | 'smsAndEmail';\n      }[];\n    };\n  };\n  welcomeNotification?: {\n    /**\n     * Disables sending a welcome notification to new site visitors. If you want to disable welcome notifications, this is the only option you need.\n     * @deprecated Use 'disable' instead. This will be removed in a future version.\n     */\n    disabled?: boolean;\n\n    /**\n     * Disables sending a welcome notification to new site visitors. If you want to disable welcome notifications, this is the only option you need.\n     */\n    disable?: boolean;\n\n    /**\n     * The welcome notification's message. You can localize this to your own language.\n     * If left blank or set to blank, the default of 'Thanks for subscribing!' will be used.\n     */\n    message: string;\n\n    /**\n     * The welcome notification's title. You can localize this to your own language. If not set, or left blank, the site's title will be used.\n     * Set to one space ' ' to clear the title, although this is not recommended.\n     */\n    title?: string;\n\n    /**\n     * By default, clicking the welcome notification does not open any link.\n     * This is recommended because the user has just visited your site and subscribed.\n     */\n    url?: string;\n  };\n\n  /**\n   * Will enable customization of the notify/subscription bell button.\n   */\n  notifyButton?: {\n    /**\n     * A function you define that returns true to show the Subscription Bell, or false to hide it.\n     * Typically used the hide the Subscription Bell after the user is subscribed.\n     * This function is not re-evaluated on every state change; this function is only evaluated once when the Subscription Bell begins to show.\n     */\n    displayPredicate?: () => boolean | Promise<boolean>;\n\n    /**\n     * Enable the Subscription Bell. The Subscription Bell is otherwise disabled by default.\n     */\n    enable?: boolean;\n\n    /** Specify CSS-valid pixel offsets using bottom, left, and right. */\n    offset?: { bottom: string; left: string; right: string };\n\n    /**\n     * If `true`, the Subscription Bell will display an icon that there is 1 unread message.\n     * When hovering over the Subscription Bell, the user will see custom text set by message.prenotify.\n     */\n    prenotify: boolean;\n\n    /** Either `bottom-left` or `bottom-right`. The Subscription Bell will be fixed at this location on your page. */\n    position?: 'bottom-left' | 'bottom-right';\n\n    /**  Set `false` to hide the 'Powered by OneSignal' text in the Subscription Bell dialog popup. */\n    showCredit: boolean;\n\n    /**\n     * The Subscription Bell will initially appear at one of these sizes, and then shrink down to size `small` after the user subscribes.\n     */\n    size?: 'small' | 'medium' | 'large';\n\n    /** Customize the Subscription Bell text. */\n    text: {\n      'dialog.blocked.message': string;\n      'dialog.blocked.title': string;\n      'dialog.main.button.subscribe': string;\n      'dialog.main.button.unsubscribe': string;\n      'dialog.main.title': string;\n      'message.action.resubscribed': string;\n      'message.action.subscribed': string;\n      'message.action.subscribing': string;\n      'message.action.unsubscribed': string;\n      'message.prenotify': string;\n      'tip.state.blocked': string;\n      'tip.state.subscribed': string;\n      'tip.state.unsubscribed': string;\n    };\n  };\n\n  persistNotification?: boolean;\n  webhooks?: {\n    /**\n     * Enable this setting only if your server has CORS enabled and supports non-simple CORS requests.\n     * If this setting is disabled, your webhook will not need CORS to receive data, but it will not receive the custom headers.\n     * The simplest option is to leave it disabled.\n     * @default false\n     */\n    cors: boolean;\n\n    /**\n     * This event occurs after a notification is clicked.\n     * @example https://site.com/hook\n     */\n    'notification.clicked'?: string;\n\n    /**\n     * This event occurs after a notification is intentionally dismissed by the user (clicking the notification body or one of the notification action buttons does not trigger the dismissed webhook),\n     * after a group of notifications are all dismissed (with this notification as part of that group), or after a notification expires on its own time and disappears. This event is supported on Chrome only.\n     * @example https://site.com/hook\n     */\n    'notification.dismissed'?: string;\n\n    /**\n     * This event occurs after a notification is displayed.\n     * @example https://site.com/hook\n     */\n    'notification.willDisplay'?: string;\n  };\n  autoResubscribe?: boolean;\n  autoRegister?: boolean;\n  notificationClickHandlerMatch?: 'exact' | 'origin';\n  notificationClickHandlerAction?: 'navigate' | 'focus';\n  path?: string;\n  serviceWorkerParam?: { scope: string };\n  serviceWorkerPath?: string;\n  serviceWorkerOverrideForTypical?: boolean;\n  /**\n   * Overrides the default OneSignal SDK script URL.\n   * Use this to self-host the SDK script on your own domain, e.g. to comply\n   * with strict Cross-Origin-Embedder-Policy (COEP) or Content-Security-Policy (CSP) headers.\n   * @default 'https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js'\n   */\n  scriptSrc?: string;\n  [key: string]: unknown;\n}\n\nexport interface IOneSignalOneSignal {\n\tSlidedown: IOneSignalSlidedown;\n\tNotifications: IOneSignalNotifications;\n\tSession: IOneSignalSession;\n\tUser: IOneSignalUser;\n\tDebug: IOneSignalDebug;\n\tlogin(externalId: string, jwtToken?: string): Promise<void>;\n\tlogout(): Promise<void>;\n\tinit(options: IInitObject): Promise<void>;\n\tsetConsentGiven(consent: boolean): Promise<void>;\n\tsetConsentRequired(requiresConsent: boolean): Promise<void>;\n}\nexport interface IOneSignalNotifications {\n\tpermissionNative: NotificationPermission;\n\tpermission: boolean;\n\tsetDefaultUrl(url: string): Promise<void>;\n\tsetDefaultTitle(title: string): Promise<void>;\n\tisPushSupported(): boolean;\n\trequestPermission(): Promise<boolean>;\n\taddEventListener<K extends NotificationEventName>(event: K, listener: (obj: NotificationEventTypeMap[K]) => void): void;\n\tremoveEventListener<K extends NotificationEventName>(event: K, listener: (obj: NotificationEventTypeMap[K]) => void): void;\n}\nexport interface IOneSignalSlidedown {\n\tpromptPush(options?: AutoPromptOptions): Promise<void>;\n\tpromptPushCategories(options?: AutoPromptOptions): Promise<void>;\n\tpromptSms(options?: AutoPromptOptions): Promise<void>;\n\tpromptEmail(options?: AutoPromptOptions): Promise<void>;\n\tpromptSmsAndEmail(options?: AutoPromptOptions): Promise<void>;\n\taddEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void;\n\tremoveEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void;\n}\nexport interface IOneSignalDebug {\n\tsetLogLevel(logLevel: 'trace' | 'debug' | 'info' | 'warn' | 'error'): void;\n}\nexport interface IOneSignalSession {\n\tsendOutcome(outcomeName: string, outcomeWeight?: number): Promise<void>;\n\tsendUniqueOutcome(outcomeName: string): Promise<void>;\n}\nexport interface IOneSignalUser {\n\tonesignalId: string | undefined;\n\texternalId: string | undefined;\n\tPushSubscription: IOneSignalPushSubscription;\n\taddAlias(label: string, id: string): void;\n\taddAliases(aliases: { [key: string]: string }): void;\n\tremoveAlias(label: string): void;\n\tremoveAliases(labels: string[]): void;\n\taddEmail(email: string): void;\n\tremoveEmail(email: string): void;\n\taddSms(smsNumber: string): void;\n\tremoveSms(smsNumber: string): void;\n\taddTag(key: string, value: string): void;\n\taddTags(tags: { [key: string]: string }): void;\n\tremoveTag(key: string): void;\n\tremoveTags(keys: string[]): void;\n\tgetTags(): { [key: string]: string };\n\taddEventListener(event: 'change', listener: (change: UserChangeEvent) => void): void;\n\tremoveEventListener(event: 'change', listener: (change: UserChangeEvent) => void): void;\n\tsetLanguage(language: string): void;\n\tgetLanguage(): string;\n\ttrackEvent(name: string, properties?: Record<string, unknown>): void;\n}\nexport interface IOneSignalPushSubscription {\n\tid: string | null | undefined;\n\ttoken: string | null | undefined;\n\toptedIn: boolean | undefined;\n\toptIn(): Promise<void>;\n\toptOut(): Promise<void>;\n\taddEventListener(event: 'change', listener: (change: SubscriptionChangeEvent) => void): void;\n\tremoveEventListener(event: 'change', listener: (change: SubscriptionChangeEvent) => void): void;\n}\nfunction oneSignalLogin(externalId: string, jwtToken?: string): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.login(externalId, jwtToken)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction oneSignalLogout(): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.logout()\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction oneSignalSetConsentGiven(consent: boolean): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.setConsentGiven(consent)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction oneSignalSetConsentRequired(requiresConsent: boolean): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.setConsentRequired(requiresConsent)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction slidedownPromptPush(options?: AutoPromptOptions): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Slidedown.promptPush(options)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction slidedownPromptPushCategories(options?: AutoPromptOptions): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Slidedown.promptPushCategories(options)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction slidedownPromptSms(options?: AutoPromptOptions): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Slidedown.promptSms(options)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction slidedownPromptEmail(options?: AutoPromptOptions): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Slidedown.promptEmail(options)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction slidedownPromptSmsAndEmail(options?: AutoPromptOptions): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Slidedown.promptSmsAndEmail(options)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction slidedownAddEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.Slidedown.addEventListener(event, listener);\n  });\n  \n}\nfunction slidedownRemoveEventListener(event: SlidedownEventName, listener: (wasShown: boolean) => void): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.Slidedown.removeEventListener(event, listener);\n  });\n  \n}\nfunction notificationsSetDefaultUrl(url: string): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Notifications.setDefaultUrl(url)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction notificationsSetDefaultTitle(title: string): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Notifications.setDefaultTitle(title)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction notificationsRequestPermission(): Promise<boolean> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Notifications.requestPermission()\n        .then(result => resolve(result))\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction notificationsAddEventListener<K extends NotificationEventName>(event: K, listener: (obj: NotificationEventTypeMap[K]) => void): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.Notifications.addEventListener(event, listener);\n  });\n  \n}\nfunction notificationsRemoveEventListener<K extends NotificationEventName>(event: K, listener: (obj: NotificationEventTypeMap[K]) => void): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.Notifications.removeEventListener(event, listener);\n  });\n  \n}\nfunction sessionSendOutcome(outcomeName: string, outcomeWeight?: number): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Session.sendOutcome(outcomeName, outcomeWeight)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction sessionSendUniqueOutcome(outcomeName: string): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.Session.sendUniqueOutcome(outcomeName)\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction userAddAlias(label: string, id: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.addAlias(label, id);\n  });\n  \n}\nfunction userAddAliases(aliases: { [key: string]: string }): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.addAliases(aliases);\n  });\n  \n}\nfunction userRemoveAlias(label: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.removeAlias(label);\n  });\n  \n}\nfunction userRemoveAliases(labels: string[]): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.removeAliases(labels);\n  });\n  \n}\nfunction userAddEmail(email: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.addEmail(email);\n  });\n  \n}\nfunction userRemoveEmail(email: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.removeEmail(email);\n  });\n  \n}\nfunction userAddSms(smsNumber: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.addSms(smsNumber);\n  });\n  \n}\nfunction userRemoveSms(smsNumber: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.removeSms(smsNumber);\n  });\n  \n}\nfunction userAddTag(key: string, value: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.addTag(key, value);\n  });\n  \n}\nfunction userAddTags(tags: { [key: string]: string }): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.addTags(tags);\n  });\n  \n}\nfunction userRemoveTag(key: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.removeTag(key);\n  });\n  \n}\nfunction userRemoveTags(keys: string[]): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.removeTags(keys);\n  });\n  \n}\n// @ts-expect-error - return non-Promise type despite needing to await OneSignalDeferred\nasync function userGetTags(): { [key: string]: string } {\n  let retVal: { [key: string]: string };\n  await window.OneSignalDeferred?.push((OneSignal) => {\n    retVal = OneSignal.User.getTags();\n  });\n  return retVal;\n}\nfunction userAddEventListener(event: 'change', listener: (change: UserChangeEvent) => void): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.addEventListener(event, listener);\n  });\n  \n}\nfunction userRemoveEventListener(event: 'change', listener: (change: UserChangeEvent) => void): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.removeEventListener(event, listener);\n  });\n  \n}\nfunction userSetLanguage(language: string): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.setLanguage(language);\n  });\n  \n}\n// @ts-expect-error - return non-Promise type despite needing to await OneSignalDeferred\nasync function userGetLanguage(): string {\n  let retVal: string;\n  await window.OneSignalDeferred?.push((OneSignal) => {\n    retVal = OneSignal.User.getLanguage();\n  });\n  return retVal;\n}\nfunction userTrackEvent(name: string, properties?: Record<string, unknown>): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.trackEvent(name, properties);\n  });\n  \n}\nfunction pushSubscriptionOptIn(): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.User.PushSubscription.optIn()\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction pushSubscriptionOptOut(): Promise<void> {\n  return new Promise((resolve, reject) => {\n    if (isOneSignalScriptFailed) {\n      reject(new Error('OneSignal script failed to load.'));\n      return;\n    }\n\n    window.OneSignalDeferred?.push((OneSignal) => {\n      OneSignal.User.PushSubscription.optOut()\n        .then(() => resolve())\n        .catch(error => reject(error));\n    });\n  });\n}\nfunction pushSubscriptionAddEventListener(event: 'change', listener: (change: SubscriptionChangeEvent) => void): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.PushSubscription.addEventListener(event, listener);\n  });\n  \n}\nfunction pushSubscriptionRemoveEventListener(event: 'change', listener: (change: SubscriptionChangeEvent) => void): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.User.PushSubscription.removeEventListener(event, listener);\n  });\n  \n}\nfunction debugSetLogLevel(logLevel: 'trace' | 'debug' | 'info' | 'warn' | 'error'): void {\n  \n  window.OneSignalDeferred?.push((OneSignal) => {\n    OneSignal.Debug.setLogLevel(logLevel);\n  });\n  \n}\nconst PushSubscriptionNamespace: IOneSignalPushSubscription = {\n\tget id(): string | null | undefined { return window.OneSignal?.User?.PushSubscription?.id; },\n\tget token(): string | null | undefined { return window.OneSignal?.User?.PushSubscription?.token; },\n\tget optedIn(): boolean | undefined { return window.OneSignal?.User?.PushSubscription?.optedIn; },\n\toptIn: pushSubscriptionOptIn,\n\toptOut: pushSubscriptionOptOut,\n\taddEventListener: pushSubscriptionAddEventListener,\n\tremoveEventListener: pushSubscriptionRemoveEventListener,\n};\n\nconst UserNamespace: IOneSignalUser = {\n\tget onesignalId(): string | undefined { return window.OneSignal?.User?.onesignalId; },\n\tget externalId(): string | undefined { return window.OneSignal?.User?.externalId; },\n\taddAlias: userAddAlias,\n\taddAliases: userAddAliases,\n\tremoveAlias: userRemoveAlias,\n\tremoveAliases: userRemoveAliases,\n\taddEmail: userAddEmail,\n\tremoveEmail: userRemoveEmail,\n\taddSms: userAddSms,\n\tremoveSms: userRemoveSms,\n\taddTag: userAddTag,\n\taddTags: userAddTags,\n\tremoveTag: userRemoveTag,\n\tremoveTags: userRemoveTags,\n\tgetTags: userGetTags,\n\taddEventListener: userAddEventListener,\n\tremoveEventListener: userRemoveEventListener,\n\tsetLanguage: userSetLanguage,\n\tgetLanguage: userGetLanguage,\n\ttrackEvent: userTrackEvent,\n\tPushSubscription: PushSubscriptionNamespace,\n};\n\nconst SessionNamespace: IOneSignalSession = {\n\tsendOutcome: sessionSendOutcome,\n\tsendUniqueOutcome: sessionSendUniqueOutcome,\n};\n\nconst DebugNamespace: IOneSignalDebug = {\n\tsetLogLevel: debugSetLogLevel,\n};\n\nconst SlidedownNamespace: IOneSignalSlidedown = {\n\tpromptPush: slidedownPromptPush,\n\tpromptPushCategories: slidedownPromptPushCategories,\n\tpromptSms: slidedownPromptSms,\n\tpromptEmail: slidedownPromptEmail,\n\tpromptSmsAndEmail: slidedownPromptSmsAndEmail,\n\taddEventListener: slidedownAddEventListener,\n\tremoveEventListener: slidedownRemoveEventListener,\n};\n\nconst NotificationsNamespace: IOneSignalNotifications = {\n\tget permissionNative(): NotificationPermission { return window.OneSignal?.Notifications?.permissionNative ?? 'default'; },\n\tget permission(): boolean { return window.OneSignal?.Notifications?.permission ?? false; },\n\tsetDefaultUrl: notificationsSetDefaultUrl,\n\tsetDefaultTitle: notificationsSetDefaultTitle,\n\tisPushSupported,\n\trequestPermission: notificationsRequestPermission,\n\taddEventListener: notificationsAddEventListener,\n\tremoveEventListener: notificationsRemoveEventListener,\n};\n\nconst OneSignalNamespace: IOneSignalOneSignal = {\n\tlogin: oneSignalLogin,\n\tlogout: oneSignalLogout,\n\tinit,\n\tsetConsentGiven: oneSignalSetConsentGiven,\n\tsetConsentRequired: oneSignalSetConsentRequired,\n\tSlidedown: SlidedownNamespace,\n\tNotifications: NotificationsNamespace,\n\tSession: SessionNamespace,\n\tUser: UserNamespace,\n\tDebug: DebugNamespace,\n};\n\nexport const useOneSignal = () => {\n  return OneSignalNamespace;\n};\n\nconst OneSignalVuePlugin = {\n  install(app: App, options: IInitObject) {\n    app.config.globalProperties.$OneSignal =\n      OneSignalNamespace as IOneSignalOneSignal;\n    app.config.globalProperties.$OneSignal.init(options);\n  },\n};\n\nexport default OneSignalVuePlugin;\n"],"mappings":"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"}