UNPKG

tiny-essentials

Version:

Collection of small, essential scripts designed to be used across various projects. These simple utilities are crafted for speed, ease of use, and versatility.

106 lines 4.77 kB
export default TinyNotifications; /** * A utility class to manage browser notifications with sound and custom behavior. * Useful for triggering system notifications with optional sound, avatar icon, body truncation, and click actions. * * @class */ declare class TinyNotifications { /** * Constructs a new instance of TinyNotifications. * * @param {Object} [settings={}] - Optional settings to initialize the notification manager. * @param {string|HTMLAudioElement|null} [settings.audio] - Path or URL to the audio file for notification sounds. * @param {string|null} [settings.defaultIcon] - Default icon URL to be used in notifications. * @param {number} [settings.bodyLimit=100] - Maximum number of characters allowed in the notification body. * @param {(this: Notification, evt: Event) => any} [settings.defaultOnClick] - Default function to execute when a notification is clicked. * @throws {TypeError} If any of the parameters are of an invalid type. */ constructor({ audio, defaultIcon, bodyLimit, defaultOnClick, }?: { audio?: string | HTMLAudioElement | null | undefined; defaultIcon?: string | null | undefined; bodyLimit?: number | undefined; defaultOnClick?: ((this: Notification, evt: Event) => any) | undefined; }); /** * Requests permission from the user to show notifications. * Updates the internal `#allowed` flag. * * @returns {Promise<boolean>} Resolves to `true` if permission is granted, otherwise `false`. */ requestPerm(): Promise<boolean>; /** * Checks if the Notification API is supported by the current browser. * * @returns {boolean} Returns `true` if notifications are supported, otherwise `false`. */ isCompatible(): boolean; /** * Sends a browser notification with the provided title and configuration. * Truncates the body if necessary and plays a sound if configured. * * @param {string} title - The title of the notification. * @param {NotificationOptions & { vibrate?: number[] }} [config={}] - Optional configuration for the notification. * @returns {Notification|null} The created `Notification` instance, or `null` if permission is not granted. * @throws {TypeError} If the title is not a string or config is not a valid object. */ send(title: string, config?: NotificationOptions & { vibrate?: number[]; }): Notification | null; /** * Whether the requestPerm() method was already called. * @returns {boolean} */ wasPermissionRequested(): boolean; /** * Returns the current permission status. * @returns {boolean} `true` if permission was granted, otherwise `false`. */ isAllowed(): boolean; /** * Gets the current notification audio. * @returns {HTMLAudioElement|null} The sound element, or `null` if not set. */ getAudio(): HTMLAudioElement | null; /** * Sets the audio element used for notification sounds. * @param {HTMLAudioElement|string|null} value - A valid `HTMLAudioElement` or `null` to disable sound. * @throws {TypeError} If the value is not an `HTMLAudioElement` or `null`. */ setAudio(value: HTMLAudioElement | string | null): void; /** * Gets the maximum length of the notification body text. * @returns {number} Number of characters allowed. */ getBodyLimit(): number; /** * Sets the maximum number of characters allowed in the notification body. * @param {number} value - A non-negative integer. * @throws {TypeError} If the value is not a valid non-negative number. */ setBodyLimit(value: number): void; /** * Gets the default avatar icon URL. * @returns {string|null} The URL string or `null`. */ getDefaultAvatar(): string | null; /** * Sets the default avatar icon URL. * @param {string|null} value - A string URL or `null` to disable default icon. * @throws {TypeError} If the value is not a string or `null`. */ setDefaultAvatar(value: string | null): void; /** * Gets the default click event handler for notifications. * @returns {(this: Notification, evt: Event) => any} The current click handler function. */ getDefaultOnClick(): (this: Notification, evt: Event) => any; /** * Sets the default click event handler for notifications. * @param {(this: Notification, evt: Event) => any} value - A function to handle the notification click event. * @throws {TypeError} If the value is not a function. */ setDefaultOnClick(value: (this: Notification, evt: Event) => any): void; #private; } //# sourceMappingURL=TinyNotifications.d.mts.map