{"version":3,"file":"dist-js-CDoBJ78U.js","names":[],"sources":["../../node_modules/.pnpm/@sableclient+tauri-plugin-notifications-api@0.5.2/node_modules/@sableclient/tauri-plugin-notifications-api/dist-js/index.js"],"sourcesContent":["import { invoke, addPluginListener } from '@tauri-apps/api/core';\n\n/**\n * Send toast notifications (brief auto-expiring OS window element) to your user.\n * Can also be used with the Notification Web API.\n *\n * @module\n */\n/**\n * Predefined intervals for repeating notifications.\n */\nvar ScheduleEvery;\n(function (ScheduleEvery) {\n    ScheduleEvery[\"Year\"] = \"year\";\n    ScheduleEvery[\"Month\"] = \"month\";\n    ScheduleEvery[\"TwoWeeks\"] = \"twoWeeks\";\n    ScheduleEvery[\"Week\"] = \"week\";\n    ScheduleEvery[\"Day\"] = \"day\";\n    ScheduleEvery[\"Hour\"] = \"hour\";\n    ScheduleEvery[\"Minute\"] = \"minute\";\n    /**\n     * Not supported on iOS.\n     */\n    ScheduleEvery[\"Second\"] = \"second\";\n})(ScheduleEvery || (ScheduleEvery = {}));\n/**\n * Schedule configuration for notifications.\n */\nclass Schedule {\n    /**\n     * Creates a schedule to fire at a specific date and time.\n     *\n     * @param date - The date and time to fire the notification.\n     * @param repeating - Whether to repeat the notification at the same time daily.\n     * @param allowWhileIdle - On Android, allows notification to fire even when the device is in idle mode.\n     * @returns A new Schedule instance.\n     */\n    static at(date, repeating = false, allowWhileIdle = false) {\n        return {\n            at: { date, repeating, allowWhileIdle },\n            interval: undefined,\n            every: undefined,\n        };\n    }\n    /**\n     * Creates a schedule using an interval configuration.\n     *\n     * @param interval - The interval configuration specifying when to fire.\n     * @param allowWhileIdle - On Android, allows notification to fire even when the device is in idle mode.\n     * @returns A new Schedule instance.\n     */\n    static interval(interval, allowWhileIdle = false) {\n        return {\n            at: undefined,\n            interval: { interval, allowWhileIdle },\n            every: undefined,\n        };\n    }\n    /**\n     * Creates a schedule to repeat at regular intervals.\n     *\n     * @param kind - The type of interval (year, month, week, day, hour, minute, second).\n     * @param count - The number of intervals between notifications.\n     * @param allowWhileIdle - On Android, allows notification to fire even when the device is in idle mode.\n     * @returns A new Schedule instance.\n     */\n    static every(kind, count, allowWhileIdle = false) {\n        return {\n            at: undefined,\n            interval: undefined,\n            every: { interval: kind, count, allowWhileIdle },\n        };\n    }\n}\n/**\n * The importance level of a notification channel (Android).\n */\nvar Importance;\n(function (Importance) {\n    /** Does not show notifications. */\n    Importance[Importance[\"None\"] = 0] = \"None\";\n    /** Shows notifications only in the notification shade, no sound, no visual interruption. */\n    Importance[Importance[\"Min\"] = 1] = \"Min\";\n    /** Shows notifications everywhere, but is not intrusive. */\n    Importance[Importance[\"Low\"] = 2] = \"Low\";\n    /** Shows notifications everywhere with sound. */\n    Importance[Importance[\"Default\"] = 3] = \"Default\";\n    /** Shows notifications everywhere with sound and heads-up display. */\n    Importance[Importance[\"High\"] = 4] = \"High\";\n})(Importance || (Importance = {}));\n/**\n * The visibility of a notification on the lock screen (Android).\n */\nvar Visibility;\n(function (Visibility) {\n    /** Do not show any part of this notification on the lock screen. */\n    Visibility[Visibility[\"Secret\"] = -1] = \"Secret\";\n    /** Show the notification, but hide sensitive content on the lock screen. */\n    Visibility[Visibility[\"Private\"] = 0] = \"Private\";\n    /** Show the entire notification on the lock screen. */\n    Visibility[Visibility[\"Public\"] = 1] = \"Public\";\n})(Visibility || (Visibility = {}));\n/**\n * Checks if the permission to send notifications is granted.\n * @example\n * ```typescript\n * import { isPermissionGranted } from '@choochmeque/tauri-plugin-notifications-api';\n * const permissionGranted = await isPermissionGranted();\n * ```\n */\nasync function isPermissionGranted() {\n    return await invoke(\"plugin:notifications|is_permission_granted\");\n}\n/**\n * Requests the permission to send notifications.\n * @example\n * ```typescript\n * import { isPermissionGranted, requestPermission } from '@choochmeque/tauri-plugin-notifications-api';\n * let permissionGranted = await isPermissionGranted();\n * if (!permissionGranted) {\n *   const permission = await requestPermission();\n *   permissionGranted = permission === 'granted';\n * }\n * ```\n *\n * @returns A promise resolving to whether the user granted the permission or not.\n */\nasync function requestPermission() {\n    return await invoke(\"plugin:notifications|request_permission\");\n}\n/**\n * Registers the app for push notifications.\n *\n * `deviceToken` is the APNs token on iOS and the UnifiedPush endpoint URL on\n * Android/Linux. Pass a base64url VAPID public key to register against a Web\n * Push distributor; `p256dh` and `auth` are then set on the result.\n *\n * `embeddedGatewayUrl` enables the in-app distributor on Android, used when neither FCM\n * nor an installed distributor can deliver.\n *\n * @returns A promise resolving to the {@link PushRegistration}.\n */\nasync function registerForPushNotifications(vapid, provider = \"auto\", embeddedGatewayUrl) {\n    return await invoke(\"plugin:notifications|register_for_push_notifications\", {\n        vapid,\n        provider,\n        embeddedGatewayUrl,\n    });\n}\n/**\n * Unregisters the app from push notifications.\n *\n * This removes the device's push notification registration and stops\n * receiving remote pushes. On Linux it calls `Unregister` on the active\n * UnifiedPush distributor.\n *\n * @example\n * ```typescript\n * import { unregisterForPushNotifications } from '@choochmeque/tauri-plugin-notifications-api';\n * await unregisterForPushNotifications();\n * console.log('Unregistered from push notifications');\n * ```\n *\n * @returns A promise resolving when unregistration is complete.\n */\nasync function unregisterForPushNotifications() {\n    await invoke(\"plugin:notifications|unregister_for_push_notifications\");\n}\n/**\n * Lists currently running UnifiedPush distributors by D-Bus bus name\n * (e.g. `org.unifiedpush.Distributor.ntfy`).\n *\n * **Linux only, and only when the plugin was built with the\n * `push-notifications` Rust feature** (the Tauri commands are gated behind\n * `#[cfg(all(target_os = \"linux\", feature = \"push-notifications\"))]`).\n * Throws elsewhere because the command isn't registered.\n *\n * Returns an empty array when no UnifiedPush distributor is installed —\n * this is the signal to prompt the user to install one\n * (https://unifiedpush.org/users/distributors/).\n *\n * @example\n * ```typescript\n * import { listDistributors } from '@choochmeque/tauri-plugin-notifications-api';\n * const distributors = await listDistributors();\n * if (distributors.length === 0) {\n *   alert('Please install a UnifiedPush distributor');\n * }\n * ```\n *\n * @returns A promise resolving to the list of distributor bus names.\n * @platform linux\n */\nasync function listDistributors() {\n    return await invoke(\"plugin:notifications|list_distributors\");\n}\n/**\n * Pins the UnifiedPush distributor used for the next\n * {@link registerForPushNotifications} call.\n *\n * **Linux only, and only when the plugin was built with the\n * `push-notifications` Rust feature.** Throws elsewhere because the\n * underlying Tauri command isn't registered.\n *\n * **Must be called before {@link registerForPushNotifications}.** Calling\n * this after a successful register has no effect on the existing endpoint\n * — to switch distributors, unregister and register again.\n *\n * The selection lives only for the current process — it is **not persisted**\n * across launches. If the host app wants to remember the user's choice, it\n * must store the name itself and re-apply it via this function on startup.\n * If never called, the first distributor returned by {@link listDistributors}\n * is used.\n *\n * @example\n * ```typescript\n * import { setDistributor } from '@choochmeque/tauri-plugin-notifications-api';\n * await setDistributor('org.unifiedpush.Distributor.ntfy');\n * ```\n *\n * @param name The distributor bus name. Must be one of the values returned\n *             by {@link listDistributors}; otherwise rejects.\n * @platform linux\n */\nasync function setDistributor(name) {\n    await invoke(\"plugin:notifications|set_distributor\", { name });\n}\n/**\n * Sets the UnifiedPush client token used on subsequent\n * {@link registerForPushNotifications} calls.\n *\n * **Linux only, and only when the plugin was built with the\n * `push-notifications` Rust feature.** Throws elsewhere because the\n * underlying Tauri command isn't registered.\n *\n * **Must be called before {@link registerForPushNotifications}.** Calling\n * this after a successful register has no effect on the existing endpoint\n * — to get a different endpoint URL, unregister and register again.\n *\n * UnifiedPush distributors derive the endpoint URL from\n * `(connector_bus_name, client_token)`, so apps that want endpoint\n * stability across launches should persist a token (any non-empty string,\n * usually a UUID) and call this on startup before registering. If never\n * called, a fresh UUID is generated on each register call and the endpoint\n * URL will be unique per launch — the same model as FCM/APNs token\n * rotation, where the app pushes the new token to its backend each time.\n *\n * The token lives only for the current process — it is **not persisted**\n * across launches.\n *\n * @example\n * ```typescript\n * import { setToken, registerForPushNotifications } from '@choochmeque/tauri-plugin-notifications-api';\n * const storedToken = localStorage.getItem('up-client-token') ?? crypto.randomUUID();\n * localStorage.setItem('up-client-token', storedToken);\n * await setToken(storedToken);\n * const endpoint = await registerForPushNotifications();\n * ```\n *\n * @param token The client token. Must be non-empty.\n * @platform linux\n */\nasync function setToken(token) {\n    await invoke(\"plugin:notifications|set_token\", { token });\n}\n/**\n * Sends a notification to the user.\n * @example\n * ```typescript\n * import { isPermissionGranted, requestPermission, sendNotification } from '@choochmeque/tauri-plugin-notifications-api';\n * let permissionGranted = await isPermissionGranted();\n * if (!permissionGranted) {\n *   const permission = await requestPermission();\n *   permissionGranted = permission === 'granted';\n * }\n * if (permissionGranted) {\n *   sendNotification('Tauri is awesome!');\n *   sendNotification({ title: 'TAURI', body: 'Tauri is awesome!' });\n * }\n * ```\n */\nasync function sendNotification(options) {\n    await invoke(\"plugin:notifications|notify\", {\n        options: typeof options === \"string\"\n            ? {\n                title: options,\n            }\n            : options,\n    });\n}\n/**\n * Register actions that are performed when the user clicks on the notification.\n *\n * @example\n * ```typescript\n * import { registerActionTypes } from '@choochmeque/tauri-plugin-notifications-api';\n * await registerActionTypes([{\n *   id: 'tauri',\n *   actions: [{\n *     id: 'my-action',\n *     title: 'Settings'\n *   }]\n * }])\n * ```\n *\n * @returns A promise indicating the success or failure of the operation.\n */\nasync function registerActionTypes(types) {\n    await invoke(\"plugin:notifications|register_action_types\", { types });\n}\n/**\n * Retrieves the list of pending notifications.\n *\n * @example\n * ```typescript\n * import { pending } from '@choochmeque/tauri-plugin-notifications-api';\n * const pendingNotifications = await pending();\n * ```\n *\n * @returns A promise resolving to the list of pending notifications.\n */\nasync function pending() {\n    return await invoke(\"plugin:notifications|get_pending\");\n}\n/**\n * Cancels the pending notifications with the given list of identifiers.\n *\n * @example\n * ```typescript\n * import { cancel } from '@choochmeque/tauri-plugin-notifications-api';\n * await cancel([-34234, 23432, 4311]);\n * ```\n *\n * @returns A promise indicating the success or failure of the operation.\n */\nasync function cancel(notifications) {\n    await invoke(\"plugin:notifications|cancel\", { notifications });\n}\n/**\n * Cancels all pending notifications.\n *\n * @example\n * ```typescript\n * import { cancelAll } from '@choochmeque/tauri-plugin-notifications-api';\n * await cancelAll();\n * ```\n *\n * @returns A promise indicating the success or failure of the operation.\n */\nasync function cancelAll() {\n    await invoke(\"plugin:notifications|cancel_all\");\n}\n/**\n * Retrieves the list of active notifications.\n *\n * @example\n * ```typescript\n * import { active } from '@choochmeque/tauri-plugin-notifications-api';\n * const activeNotifications = await active();\n * ```\n *\n * @returns A promise resolving to the list of active notifications.\n */\nasync function active() {\n    return await invoke(\"plugin:notifications|get_active\");\n}\n/**\n * Removes the active notifications with the given list of identifiers.\n *\n * @example\n * ```typescript\n * import { removeActive } from '@choochmeque/tauri-plugin-notifications-api';\n * await removeActive([{ id: 1 }, { id: 2, tag: 'news' }]);\n * ```\n *\n * @returns A promise indicating the success or failure of the operation.\n */\nasync function removeActive(notifications) {\n    await invoke(\"plugin:notifications|remove_active\", { notifications });\n}\n/**\n * Removes all active notifications.\n *\n * @example\n * ```typescript\n * import { removeAllActive } from '@choochmeque/tauri-plugin-notifications-api';\n * await removeAllActive()\n * ```\n *\n * @returns A promise indicating the success or failure of the operation.\n */\nasync function removeAllActive() {\n    await invoke(\"plugin:notifications|remove_all\");\n}\n/**\n * Creates a notification channel.\n *\n * @example\n * ```typescript\n * import { createChannel, Importance, Visibility } from '@choochmeque/tauri-plugin-notifications-api';\n * await createChannel({\n *   id: 'new-messages',\n *   name: 'New Messages',\n *   lights: true,\n *   vibration: true,\n *   importance: Importance.Default,\n *   visibility: Visibility.Private\n * });\n * ```\n *\n * @returns A promise indicating the success or failure of the operation.\n */\nasync function createChannel(channel) {\n    await invoke(\"plugin:notifications|create_channel\", { channel });\n}\n/**\n * Removes the channel with the given identifier.\n *\n * @example\n * ```typescript\n * import { removeChannel } from '@choochmeque/tauri-plugin-notifications-api';\n * await removeChannel('new-messages');\n * ```\n *\n * @returns A promise indicating the success or failure of the operation.\n */\nasync function removeChannel(id) {\n    await invoke(\"plugin:notifications|delete_channel\", { id });\n}\n/**\n * Retrieves the list of notification channels.\n *\n * @example\n * ```typescript\n * import { channels } from '@choochmeque/tauri-plugin-notifications-api';\n * const notificationChannels = await channels();\n * ```\n *\n * @returns A promise resolving to the list of notification channels.\n */\nasync function channels() {\n    return await invoke(\"plugin:notifications|list_channels\");\n}\n/**\n * Registers a listener for incoming notifications.\n *\n * @example\n * ```typescript\n * import { onNotificationReceived } from '@choochmeque/tauri-plugin-notifications-api';\n * const unlisten = await onNotificationReceived((notification) => {\n *   console.log('Notification received:', notification);\n * });\n * // Later, to stop listening:\n * // unlisten();\n * ```\n *\n * @param cb - Callback function to handle received notifications.\n * @returns A promise resolving to a function that removes the listener.\n */\nasync function onNotificationReceived(cb) {\n    return await addPluginListener(\"notifications\", \"notification\", cb);\n}\n/**\n * Registers a listener for notification action events.\n *\n * @example\n * ```typescript\n * import { onAction } from '@choochmeque/tauri-plugin-notifications-api';\n * const unlisten = await onAction((notification) => {\n *   console.log('Action performed on notification:', notification);\n * });\n * // Later, to stop listening:\n * // unlisten();\n * ```\n *\n * @param cb - Callback function to handle notification action results.\n * @returns A promise resolving to a function that removes the listener.\n */\nasync function onAction(cb) {\n    const listener = await addPluginListener(\"notifications\", \"actionPerformed\", cb);\n    try {\n        await withActionListenerLock(async () => {\n            if (actionListenerCount === 0) {\n                await invoke(\"plugin:notifications|set_action_listener_active\", {\n                    active: true,\n                });\n            }\n            actionListenerCount += 1;\n        });\n    }\n    catch (error) {\n        await listener.unregister();\n        throw error;\n    }\n    let unregistered = false;\n    return {\n        unregister: async () => {\n            if (unregistered)\n                return;\n            await withActionListenerLock(async () => {\n                if (actionListenerCount > 1) {\n                    actionListenerCount -= 1;\n                    return;\n                }\n                // Keep the final listener until native deactivation succeeds.\n                await invoke(\"plugin:notifications|set_action_listener_active\", {\n                    active: false,\n                });\n                actionListenerCount = 0;\n            });\n            unregistered = true;\n            await listener.unregister();\n        },\n    };\n}\nlet actionListenerCount = 0;\nlet actionListenerLock = Promise.resolve();\nfunction withActionListenerLock(operation) {\n    const result = actionListenerLock.then(operation, operation);\n    actionListenerLock = result.then(() => undefined, () => undefined);\n    return result;\n}\n/**\n * Registers a listener for notification click/tap events.\n * This fires when the user taps on a notification (both push and local).\n *\n * This function handles cold-start scenarios where the app is launched by\n * tapping a notification. Any pending notification click data is automatically\n * delivered when the listener is registered.\n *\n * @example\n * ```typescript\n * import { onNotificationClicked } from '@choochmeque/tauri-plugin-notifications-api';\n * const unlisten = await onNotificationClicked((data) => {\n *   console.log('Notification clicked, id:', data.id);\n *   console.log('Custom data:', data.data);\n * });\n * ```\n *\n * @param cb - Callback function to handle notification clicks.\n * @returns A promise resolving to a function that removes the listener.\n */\nasync function onNotificationClicked(cb) {\n    const listener = await addPluginListener(\"notifications\", \"notificationClicked\", cb);\n    // Tell native side listener is active (triggers pending if any)\n    await invoke(\"plugin:notifications|set_click_listener_active\", {\n        active: true,\n    });\n    // Return wrapped listener that notifies native side on unregister\n    return {\n        unregister: async () => {\n            await invoke(\"plugin:notifications|set_click_listener_active\", {\n                active: false,\n            });\n            return listener.unregister();\n        },\n    };\n}\n\nexport { Importance, Schedule, ScheduleEvery, Visibility, active, cancel, cancelAll, channels, createChannel, isPermissionGranted, listDistributors, onAction, onNotificationClicked, onNotificationReceived, pending, registerActionTypes, registerForPushNotifications, removeActive, removeAllActive, removeChannel, requestPermission, sendNotification, setDistributor, setToken, unregisterForPushNotifications };\n"],"x_google_ignoreList":[0],"mappings":"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"}