toastify-all 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/core/NotificationCore.js","../../src/core/AlertService.js","../../src/react/index.jsx"],"sourcesContent":["class NotificationCore {\n constructor() {\n this.notifications = new Map();\n this.counter = 0;\n this.config = {\n position: 'top-right',\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n pauseOnFocusLoss: true,\n draggable: true,\n draggablePercent: 80,\n theme: 'light', // 'light' | 'dark' | 'colored' | 'system'\n transition: 'bounce', // 'bounce' | 'slide' | 'zoom' | 'flip'\n limit: null,\n newestOnTop: true,\n closeButton: true,\n sound: false\n };\n this.containers = new Map();\n this.initialized = false;\n this.isWindowFocused = true;\n\n if (typeof window !== 'undefined') {\n window.addEventListener('focus', () => {\n this.isWindowFocused = true;\n this.resumeAll();\n });\n window.addEventListener('blur', () => {\n this.isWindowFocused = false;\n this.pauseAll();\n });\n\n try {\n const darkQuery = window.matchMedia('(prefers-color-scheme: dark)');\n darkQuery.addEventListener('change', () => {\n if (this.config.theme === 'system') {\n this.refreshSystemTheme();\n }\n });\n } catch (e) { }\n }\n }\n\n getEffectiveTheme(theme = this.config.theme) {\n if (theme === 'system') {\n if (typeof window !== 'undefined' && window.matchMedia) {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return 'light';\n }\n return theme;\n }\n\n refreshSystemTheme() {\n if (typeof document === 'undefined') return;\n const effectiveTheme = this.getEffectiveTheme('system');\n const position = this.config.position;\n this.containers.forEach((container) => {\n container.className = `notification-container toastify-all-container omnitoast-container ${position} ${effectiveTheme} Toastify__toast-container Toastify__toast-container--${position} theme-${effectiveTheme}`;\n });\n }\n\n configure(options = {}) {\n this.config = { ...this.config, ...options };\n if (typeof document !== 'undefined') {\n const effectiveTheme = this.getEffectiveTheme(this.config.theme);\n const position = this.config.position;\n this.containers.forEach((container) => {\n container.className = `notification-container toastify-all-container omnitoast-container ${position} ${effectiveTheme} Toastify__toast-container Toastify__toast-container--${position} theme-${effectiveTheme}`;\n });\n }\n }\n\n init() {\n if (typeof document === 'undefined') return;\n this.injectStyles();\n this.initialized = true;\n }\n\n getContainer(position = this.config.position) {\n if (typeof document === 'undefined') return null;\n this.init();\n\n const effectiveTheme = this.getEffectiveTheme(this.config.theme);\n const key = position;\n\n if (this.containers.has(key)) {\n const existing = this.containers.get(key);\n if (existing && document.body.contains(existing)) {\n return existing;\n }\n }\n\n const container = document.createElement('div');\n container.className = `notification-container toastify-all-container omnitoast-container ${position} ${effectiveTheme} Toastify__toast-container Toastify__toast-container--${position} theme-${effectiveTheme}`;\n container.setAttribute('aria-live', 'polite');\n document.body.appendChild(container);\n this.containers.set(key, container);\n return container;\n }\n\n playChime(type) {\n if (typeof window === 'undefined') return;\n try {\n const AudioContext = window.AudioContext || window.webkitAudioContext;\n if (!AudioContext) return;\n const ctx = new AudioContext();\n const osc = ctx.createOscillator();\n const gain = ctx.createGain();\n\n osc.connect(gain);\n gain.connect(ctx.destination);\n\n const now = ctx.currentTime;\n gain.gain.setValueAtTime(0.04, now);\n gain.gain.exponentialRampToValueAtTime(0.0001, now + 0.16);\n\n if (type === 'error') {\n osc.frequency.setValueAtTime(220, now);\n osc.frequency.setValueAtTime(180, now + 0.08);\n } else if (type === 'success') {\n osc.frequency.setValueAtTime(523.25, now);\n osc.frequency.setValueAtTime(659.25, now + 0.08);\n } else {\n osc.frequency.setValueAtTime(440, now);\n }\n\n osc.start(now);\n osc.stop(now + 0.16);\n } catch (e) { }\n }\n\n injectStyles() {\n if (typeof document === 'undefined' || document.getElementById('omnitoast-styles')) return;\n\n const style = document.createElement('style');\n style.id = 'omnitoast-styles';\n style.textContent = `\n :root {\n --omnitoast-color-light: #ffffff;\n --omnitoast-color-dark: #18181b;\n --omnitoast-color-info: #3b82f6;\n --omnitoast-color-success: #10b981;\n --omnitoast-color-warning: #f59e0b;\n --omnitoast-color-error: #ef4444;\n\n --omnitoast-width: 350px;\n --omnitoast-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", sans-serif;\n --omnitoast-z-index: 999999;\n --omnitoast-radius: 10px;\n }\n\n .notification-container,\n .toastify-all-container,\n .omnitoast-container,\n .Toastify__toast-container {\n z-index: var(--omnitoast-z-index);\n position: fixed;\n padding: 12px;\n width: var(--omnitoast-width);\n max-width: 100vw;\n box-sizing: border-box;\n pointer-events: none;\n display: flex;\n flex-direction: column;\n gap: 10px;\n }\n\n .Toastify__toast-container--top-left, .notification-container.top-left { top: 10px; left: 10px; }\n .Toastify__toast-container--top-center, .notification-container.top-center { top: 10px; left: 50%; transform: translateX(-50%); }\n .Toastify__toast-container--top-right, .notification-container.top-right { top: 10px; right: 10px; }\n .Toastify__toast-container--bottom-left, .notification-container.bottom-left { bottom: 10px; left: 10px; }\n .Toastify__toast-container--bottom-center, .notification-container.bottom-center { bottom: 10px; left: 50%; transform: translateX(-50%); }\n .Toastify__toast-container--bottom-right, .notification-container.bottom-right { bottom: 10px; right: 10px; }\n\n @media only screen and (max-width: 480px) {\n .notification-container,\n .toastify-all-container,\n .omnitoast-container,\n .Toastify__toast-container {\n width: 100vw;\n padding: 8px;\n left: 0 !important;\n margin: 0;\n transform: none !important;\n }\n }\n\n .notification-toast,\n .toastify-all-toast,\n .omnitoast-toast,\n .Toastify__toast {\n position: relative;\n box-sizing: border-box;\n padding: 12px 14px;\n border-radius: var(--omnitoast-radius);\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.12), 0 8px 10px -6px rgba(0, 0, 0, 0.08);\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n overflow: hidden;\n font-family: var(--omnitoast-font-family);\n cursor: default;\n pointer-events: auto;\n user-select: none;\n line-height: 1.45;\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n border: 1px solid rgba(0, 0, 0, 0.08);\n transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s;\n }\n\n .Toastify__toast--theme-light {\n background: rgba(255, 255, 255, 0.96);\n color: #1f2937;\n border: 1px solid rgba(0, 0, 0, 0.06);\n }\n\n .Toastify__toast--theme-dark {\n background: rgba(24, 24, 27, 0.95);\n color: #f4f4f5;\n border: 1px solid rgba(255, 255, 255, 0.12);\n box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.6);\n }\n\n .Toastify__toast--theme-colored.Toastify__toast--info {\n color: #fff;\n background: var(--omnitoast-color-info);\n border-color: transparent;\n }\n .Toastify__toast--theme-colored.Toastify__toast--success {\n color: #fff;\n background: var(--omnitoast-color-success);\n border-color: transparent;\n }\n .Toastify__toast--theme-colored.Toastify__toast--warning {\n color: #1f2937;\n background: var(--omnitoast-color-warning);\n border-color: transparent;\n }\n .Toastify__toast--theme-colored.Toastify__toast--error {\n color: #fff;\n background: var(--omnitoast-color-error);\n border-color: transparent;\n }\n\n .Toastify__toast-body {\n flex: 1 1 auto;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n min-width: 0;\n }\n\n .Toastify__toast-icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n margin-top: 1px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .Toastify__toast-icon svg {\n width: 100%;\n height: 100%;\n }\n\n .omnitoast-text-container {\n flex: 1;\n min-width: 0;\n }\n\n .omnitoast-title {\n font-weight: 600;\n font-size: 13.5px;\n line-height: 1.35;\n margin-bottom: 2px;\n }\n\n .omnitoast-content {\n font-size: 13px;\n line-height: 1.45;\n word-break: break-word;\n opacity: 0.92;\n }\n\n .Toastify__close-button {\n color: #9ca3af;\n background: transparent;\n outline: none;\n border: none;\n padding: 2px;\n cursor: pointer;\n opacity: 0.7;\n transition: opacity 0.15s ease, color 0.15s ease;\n align-self: flex-start;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n line-height: 1;\n margin-left: 8px;\n border-radius: 4px;\n }\n .Toastify__close-button:hover {\n opacity: 1;\n color: inherit;\n background: rgba(0, 0, 0, 0.05);\n }\n\n .Toastify__action-btn {\n margin-top: 6px;\n padding: 5px 12px;\n border: 1px solid rgba(0, 0, 0, 0.15);\n background: rgba(0, 0, 0, 0.05);\n color: inherit;\n border-radius: 6px;\n font-weight: 600;\n font-size: 12px;\n cursor: pointer;\n transition: background 0.15s, border-color 0.15s;\n display: inline-block;\n }\n\n .Toastify__progress-bar {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 3px;\n opacity: 0.45;\n transform-origin: left;\n }\n .Toastify__progress-bar--animated {\n animation: Toastify__trackProgress linear 1 forwards;\n }\n .Toastify__progress-bar--info { background: var(--omnitoast-color-info); }\n .Toastify__progress-bar--success { background: var(--omnitoast-color-success); }\n .Toastify__progress-bar--warning { background: var(--omnitoast-color-warning); }\n .Toastify__progress-bar--error { background: var(--omnitoast-color-error); }\n\n @keyframes Toastify__trackProgress {\n 0% { transform: scaleX(1); }\n 100% { transform: scaleX(0); }\n }\n\n @keyframes Toastify__bounceInRight {\n from { opacity: 0; transform: translate3d(200px, 0, 0) scale(0.9); }\n to { transform: none; }\n }\n @keyframes Toastify__bounceOutRight {\n to { opacity: 0; transform: translate3d(250px, 0, 0) scale(0.85); }\n }\n @keyframes Toastify__bounceInLeft {\n from { opacity: 0; transform: translate3d(-200px, 0, 0) scale(0.9); }\n to { transform: none; }\n }\n @keyframes Toastify__bounceOutLeft {\n to { opacity: 0; transform: translate3d(-250px, 0, 0) scale(0.85); }\n }\n @keyframes Toastify__bounceInDown {\n from { opacity: 0; transform: translate3d(0, -50px, 0) scale(0.9); }\n to { transform: none; }\n }\n @keyframes Toastify__bounceOutUp {\n to { opacity: 0; transform: translate3d(0, -60px, 0) scale(0.85); }\n }\n\n @keyframes Toastify__slideInRight {\n from { transform: translate3d(100%, 0, 0); opacity: 0; }\n to { transform: translate3d(0, 0, 0); opacity: 1; }\n }\n @keyframes Toastify__slideOutRight {\n to { transform: translate3d(100%, 0, 0); opacity: 0; }\n }\n @keyframes Toastify__slideInLeft {\n from { transform: translate3d(-100%, 0, 0); opacity: 0; }\n to { transform: translate3d(0, 0, 0); opacity: 1; }\n }\n @keyframes Toastify__slideOutLeft {\n to { transform: translate3d(-100%, 0, 0); opacity: 0; }\n }\n\n @keyframes Toastify__zoomIn {\n from { opacity: 0; transform: scale3d(0.5, 0.5, 0.5); }\n to { opacity: 1; transform: scale3d(1, 1, 1); }\n }\n @keyframes Toastify__zoomOut {\n to { opacity: 0; transform: scale3d(0.5, 0.5, 0.5); }\n }\n\n @keyframes Toastify__flipIn {\n from { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; }\n to { transform: perspective(400px); opacity: 1; }\n }\n @keyframes Toastify__flipOut {\n to { transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; }\n }\n\n @keyframes Toastify__spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n .Toastify__spinner {\n width: 18px;\n height: 18px;\n box-sizing: border-box;\n border: 2px solid currentColor;\n border-radius: 50%;\n border-right-color: transparent;\n animation: Toastify__spin 0.75s linear infinite;\n }\n `;\n document.head.appendChild(style);\n }\n\n getDefaultIcon(type) {\n switch (type) {\n case 'success':\n return '<svg viewBox=\"0 0 20 20\" fill=\"#10b981\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\" clip-rule=\"evenodd\"/></svg>';\n case 'error':\n return '<svg viewBox=\"0 0 20 20\" fill=\"#ef4444\"><path fill-rule=\"evenodd\" d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\" clip-rule=\"evenodd\"/></svg>';\n case 'warning':\n return '<svg viewBox=\"0 0 20 20\" fill=\"#f59e0b\"><path fill-rule=\"evenodd\" d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\" clip-rule=\"evenodd\"/></svg>';\n case 'info':\n return '<svg viewBox=\"0 0 20 20\" fill=\"#3b82f6\"><path fill-rule=\"evenodd\" d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\" clip-rule=\"evenodd\"/></svg>';\n case 'loading':\n return '<div class=\"Toastify__spinner\"></div>';\n default:\n return '';\n }\n }\n\n getAnimationNames(transition, position) {\n const isLeft = position.includes('left');\n const isCenter = position.includes('center');\n\n switch (transition) {\n case 'slide':\n return {\n enter: isLeft ? 'Toastify__slideInLeft 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards' : 'Toastify__slideInRight 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards',\n exit: isLeft ? 'Toastify__slideOutLeft 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards' : 'Toastify__slideOutRight 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards'\n };\n case 'zoom':\n return {\n enter: 'Toastify__zoomIn 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards',\n exit: 'Toastify__zoomOut 0.25s cubic-bezier(0.16, 1, 0.3, 1) forwards'\n };\n case 'flip':\n return {\n enter: 'Toastify__flipIn 0.35s ease forwards',\n exit: 'Toastify__flipOut 0.3s ease forwards'\n };\n case 'bounce':\n default:\n if (isCenter) {\n return {\n enter: 'Toastify__bounceInDown 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards',\n exit: 'Toastify__bounceOutUp 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards'\n };\n }\n return {\n enter: isLeft ? 'Toastify__bounceInLeft 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards' : 'Toastify__bounceInRight 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards',\n exit: isLeft ? 'Toastify__bounceOutLeft 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards' : 'Toastify__bounceOutRight 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards'\n };\n }\n }\n\n show(type = 'default', message, options = {}) {\n if (typeof document === 'undefined') return 0;\n this.init();\n\n const id = options.toastId || ++this.counter;\n if (this.notifications.has(id)) {\n this.update(id, { ...options, message, type });\n return id;\n }\n\n const config = { ...this.config, ...options };\n const position = config.position || this.config.position;\n const container = this.getContainer(position);\n\n if (!container) return id;\n\n // Waiting queue limit\n if (config.limit && container.children.length >= config.limit) {\n const firstChild = container.firstElementChild;\n const oldestId = firstChild ? Number(firstChild.getAttribute('data-toast-id')) : null;\n if (oldestId) {\n this.dismiss(oldestId);\n }\n }\n\n const toast = this.createToast(id, type, message, config, position);\n\n if (config.newestOnTop) {\n container.insertBefore(toast, container.firstChild);\n } else {\n container.appendChild(toast);\n }\n\n const entry = {\n id,\n toast,\n type,\n message,\n config,\n position,\n timer: null,\n remainingTime: config.autoClose,\n startTime: Date.now(),\n isPaused: false\n };\n\n this.notifications.set(id, entry);\n\n if (config.autoClose !== false) {\n this.setupAutoClose(entry);\n }\n\n if (config.sound) {\n this.playChime(type);\n }\n\n if (typeof config.onOpen === 'function') {\n config.onOpen(id);\n }\n\n return id;\n }\n\n createToast(id, type, message, config, position) {\n const effectiveTheme = this.getEffectiveTheme(config.theme);\n const transition = config.transition || this.config.transition;\n const animations = this.getAnimationNames(transition, position);\n\n const toast = document.createElement('div');\n toast.className = `notification-toast toastify-all-toast omnitoast-toast ${type} Toastify__toast Toastify__toast--${type} Toastify__toast--theme-${effectiveTheme} ${config.className || ''}`.trim();\n toast.setAttribute('data-toast-id', id);\n toast.setAttribute('role', type === 'error' ? 'alert' : 'status');\n toast.style.animation = animations.enter;\n\n if (config.style && typeof config.style === 'object') {\n Object.assign(toast.style, config.style);\n }\n\n const body = document.createElement('div');\n body.className = `Toastify__toast-body ${config.bodyClassName || ''}`.trim();\n if (config.bodyStyle) Object.assign(body.style, config.bodyStyle);\n\n if (config.icon !== false) {\n const iconWrapper = document.createElement('div');\n iconWrapper.className = 'Toastify__toast-icon';\n if (typeof config.icon === 'string') {\n iconWrapper.innerHTML = config.icon;\n } else if (config.icon instanceof Node) {\n iconWrapper.appendChild(config.icon);\n } else {\n iconWrapper.innerHTML = this.getDefaultIcon(type);\n }\n body.appendChild(iconWrapper);\n }\n\n const textWrapper = document.createElement('div');\n textWrapper.className = 'omnitoast-text-container';\n\n if (config.title) {\n const titleEl = document.createElement('div');\n titleEl.className = 'omnitoast-title';\n titleEl.textContent = config.title;\n textWrapper.appendChild(titleEl);\n }\n\n const contentEl = document.createElement('div');\n contentEl.className = 'omnitoast-content';\n\n if (message instanceof Node) {\n contentEl.appendChild(message);\n } else if (typeof message === 'string') {\n contentEl.textContent = message;\n } else {\n contentEl.textContent = String(message);\n }\n textWrapper.appendChild(contentEl);\n\n if (config.action && config.action.label) {\n const actionBtn = document.createElement('button');\n actionBtn.type = 'button';\n actionBtn.className = 'Toastify__action-btn';\n actionBtn.textContent = config.action.label;\n actionBtn.onclick = (e) => {\n e.stopPropagation();\n if (typeof config.action.onClick === 'function') {\n config.action.onClick(id);\n }\n if (config.action.autoDismiss !== false) {\n this.dismiss(id);\n }\n };\n textWrapper.appendChild(actionBtn);\n }\n\n body.appendChild(textWrapper);\n toast.appendChild(body);\n\n if (config.closeButton !== false) {\n const closeBtn = document.createElement('button');\n closeBtn.type = 'button';\n closeBtn.className = 'Toastify__close-button';\n closeBtn.setAttribute('aria-label', 'Close');\n closeBtn.innerHTML = '&times;';\n closeBtn.onclick = (e) => {\n e.stopPropagation();\n this.dismiss(id);\n };\n toast.appendChild(closeBtn);\n }\n\n if (!config.hideProgressBar && config.autoClose !== false) {\n const progress = document.createElement('div');\n progress.className = `Toastify__progress-bar Toastify__progress-bar--animated Toastify__progress-bar--${type} ${config.progressClassName || ''}`.trim();\n progress.style.animationDuration = `${config.autoClose}ms`;\n if (config.progressStyle) Object.assign(progress.style, config.progressStyle);\n toast.appendChild(progress);\n }\n\n if (config.closeOnClick !== false) {\n toast.style.cursor = 'pointer';\n toast.onclick = (e) => {\n if (e.target.tagName !== 'BUTTON') {\n this.dismiss(id);\n }\n };\n }\n\n if (config.draggable !== false) {\n this.makeDraggable(toast, id, config);\n }\n\n if (config.pauseOnHover !== false) {\n this.setupHoverPause(toast, id);\n }\n\n return toast;\n }\n\n setupAutoClose(entry) {\n const delay = entry.remainingTime;\n entry.startTime = Date.now();\n entry.timer = setTimeout(() => {\n this.dismiss(entry.id);\n }, delay);\n }\n\n setupHoverPause(toast, id) {\n toast.addEventListener('mouseenter', () => {\n this.pauseToast(id);\n });\n\n toast.addEventListener('mouseleave', () => {\n this.resumeToast(id);\n });\n }\n\n pauseToast(id) {\n const entry = this.notifications.get(id);\n if (!entry || entry.isPaused || !entry.timer) return;\n\n clearTimeout(entry.timer);\n entry.timer = null;\n entry.isPaused = true;\n\n const elapsed = Date.now() - entry.startTime;\n entry.remainingTime = Math.max(0, entry.remainingTime - elapsed);\n\n const progress = entry.toast.querySelector('.Toastify__progress-bar');\n if (progress) {\n progress.style.animationPlayState = 'paused';\n }\n }\n\n resumeToast(id) {\n const entry = this.notifications.get(id);\n if (!entry || !entry.isPaused || entry.remainingTime <= 0) return;\n\n entry.isPaused = false;\n const progress = entry.toast.querySelector('.Toastify__progress-bar');\n if (progress) {\n progress.style.animationPlayState = 'running';\n }\n\n this.setupAutoClose(entry);\n }\n\n pauseAll() {\n this.notifications.forEach((_, id) => this.pauseToast(id));\n }\n\n resumeAll() {\n this.notifications.forEach((_, id) => this.resumeToast(id));\n }\n\n makeDraggable(toast, id, config) {\n let startX = null;\n let currentX = null;\n\n const handleStart = (e) => {\n startX = e.type === 'mousedown' ? e.clientX : (e.touches && e.touches[0] ? e.touches[0].clientX : null);\n currentX = startX;\n toast.style.transition = 'none';\n };\n\n const handleMove = (e) => {\n if (startX === null) return;\n currentX = e.type === 'mousemove' ? e.clientX : (e.touches && e.touches[0] ? e.touches[0].clientX : null);\n if (currentX === null) return;\n const deltaX = currentX - startX;\n toast.style.transform = `translate3d(${deltaX}px, 0, 0)`;\n toast.style.opacity = `${1 - Math.abs(deltaX) / (toast.offsetWidth * 1.5)}`;\n };\n\n const handleEnd = () => {\n if (startX === null || currentX === null) return;\n const deltaX = currentX - startX;\n toast.style.transition = 'all 0.25s ease';\n\n const threshold = (toast.offsetWidth * (config.draggablePercent || 80)) / 100;\n if (Math.abs(deltaX) > threshold) {\n this.dismiss(id);\n } else {\n toast.style.transform = 'translate3d(0, 0, 0)';\n toast.style.opacity = '1';\n }\n\n startX = null;\n currentX = null;\n };\n\n toast.addEventListener('mousedown', handleStart);\n toast.addEventListener('touchstart', handleStart, { passive: true });\n window.addEventListener('mousemove', handleMove);\n window.addEventListener('touchmove', handleMove, { passive: true });\n window.addEventListener('mouseup', handleEnd);\n window.addEventListener('touchend', handleEnd);\n }\n\n update(id, newState = {}) {\n const entry = this.notifications.get(id);\n if (!entry) return;\n\n const { toast } = entry;\n const content = toast.querySelector('.omnitoast-content') || toast.querySelector('.Toastify__toast-body');\n const iconWrapper = toast.querySelector('.Toastify__toast-icon');\n\n if (newState.render) {\n newState.message = newState.render;\n }\n\n if (newState.message !== undefined && content) {\n content.textContent = '';\n if (newState.message instanceof Node) {\n content.appendChild(newState.message);\n } else {\n content.textContent = String(newState.message);\n }\n entry.message = newState.message;\n }\n\n if (newState.type && newState.type !== entry.type) {\n toast.className = toast.className.replace(entry.type, newState.type);\n toast.className = toast.className.replace(`Toastify__toast--${entry.type}`, `Toastify__toast--${newState.type}`);\n entry.type = newState.type;\n if (iconWrapper) {\n iconWrapper.innerHTML = this.getDefaultIcon(newState.type);\n }\n }\n\n if (newState.autoClose !== undefined) {\n if (entry.timer) clearTimeout(entry.timer);\n if (newState.autoClose !== false) {\n entry.remainingTime = newState.autoClose;\n const progress = toast.querySelector('.Toastify__progress-bar');\n if (progress) {\n progress.style.animationDuration = `${newState.autoClose}ms`;\n }\n this.setupAutoClose(entry);\n }\n }\n }\n\n dismiss(id) {\n if (id === undefined) {\n this.clearAll();\n return;\n }\n\n const entry = this.notifications.get(id);\n if (!entry) return;\n\n const { toast, config, position } = entry;\n if (entry.timer) clearTimeout(entry.timer);\n\n const transition = config.transition || this.config.transition;\n const animations = this.getAnimationNames(transition, position);\n toast.style.animation = animations.exit;\n\n if (typeof config.onClose === 'function') {\n config.onClose(id);\n }\n\n setTimeout(() => {\n if (toast.parentNode) {\n toast.parentNode.removeChild(toast);\n }\n this.notifications.delete(id);\n }, 280);\n }\n\n isActive(id) {\n return this.notifications.has(id);\n }\n\n clearWaitingQueue() {\n this.containers.forEach((container) => {\n const toasts = Array.from(container.children);\n toasts.slice(this.config.limit || 5).forEach((toast) => {\n const id = Number(toast.getAttribute('data-toast-id'));\n if (id) this.dismiss(id);\n });\n });\n }\n\n clearAll() {\n this.notifications.forEach((_, id) => {\n this.dismiss(id);\n });\n this.containers.forEach((container) => {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n }\n });\n this.containers.clear();\n }\n\n promise(promiseOrFn, states = {}, options = {}) {\n const p = typeof promiseOrFn === 'function' ? promiseOrFn() : promiseOrFn;\n const pendingMsg = states.pending || states.loading || 'Loading...';\n const id = this.show('loading', pendingMsg, { ...options, autoClose: false });\n\n return p\n .then((data) => {\n const successMsg = typeof states.success === 'function'\n ? states.success(data)\n : (states.success || 'Success!');\n this.update(id, {\n type: 'success',\n render: successMsg,\n autoClose: options.autoClose !== undefined ? options.autoClose : 5000\n });\n if (options.sound || this.config.sound) {\n this.playChime('success');\n }\n return data;\n })\n .catch((err) => {\n const errorMsg = typeof states.error === 'function'\n ? states.error(err)\n : (states.error || (err && err.message) || 'Error occurred');\n this.update(id, {\n type: 'error',\n render: errorMsg,\n autoClose: options.autoClose !== undefined ? options.autoClose : 5000\n });\n if (options.sound || this.config.sound) {\n this.playChime('error');\n }\n throw err;\n });\n }\n}\n\nexport default NotificationCore;","import NotificationCore from './NotificationCore.js';\n\nclass AlertService {\n constructor() {\n this.core = new NotificationCore();\n }\n\n configure(options) {\n this.core.configure(options);\n }\n\n show(type, message, options) {\n return this.core.show(type, message, options);\n }\n\n success(message, options) {\n return this.core.show('success', message, options);\n }\n\n error(message, options) {\n return this.core.show('error', message, options);\n }\n\n info(message, options) {\n return this.core.show('info', message, options);\n }\n\n warn(message, options) {\n return this.core.show('warning', message, options);\n }\n\n warning(message, options) {\n return this.core.show('warning', message, options);\n }\n\n loading(message, options) {\n return this.core.show('loading', message, { ...options, autoClose: false });\n }\n\n custom(content, options) {\n return this.core.show('custom', content, options);\n }\n\n promise(promiseOrFn, states, options) {\n return this.core.promise(promiseOrFn, states, options);\n }\n\n update(id, newState) {\n this.core.update(id, newState);\n }\n\n dismiss(id) {\n if (id !== undefined) {\n this.core.dismiss(id);\n } else {\n this.core.clearAll();\n }\n }\n\n isActive(id) {\n return this.core.isActive(id);\n }\n\n clearWaitingQueue() {\n this.core.clearWaitingQueue();\n }\n\n clearAll() {\n this.core.clearAll();\n }\n}\n\n// Create singleton instance\nconst alertService = new AlertService();\n\n// Create callable toast function like react-toastify: toast(\"msg\") or toast.success(\"msg\")\nfunction createCallableToast(service) {\n const toast = function (content, options = {}) {\n return service.core.show('default', content, options);\n };\n\n toast.configure = (options) => service.configure(options);\n toast.success = (content, options) => service.success(content, options);\n toast.error = (content, options) => service.error(content, options);\n toast.info = (content, options) => service.info(content, options);\n toast.warning = (content, options) => service.warning(content, options);\n toast.warn = (content, options) => service.warn(content, options);\n toast.loading = (content, options) => service.loading(content, options);\n toast.custom = (content, options) => service.custom(content, options);\n toast.promise = (promiseOrFn, states, options) => service.promise(promiseOrFn, states, options);\n toast.update = (id, newState) => service.update(id, newState);\n toast.dismiss = (id) => service.dismiss(id);\n toast.isActive = (id) => service.isActive(id);\n toast.clearWaitingQueue = () => service.clearWaitingQueue();\n toast.clearAll = () => service.clearAll();\n toast.core = service.core;\n\n return toast;\n}\n\nconst toast = createCallableToast(alertService);\n\nif (typeof window !== 'undefined') {\n window.ToastifyAll = window.ToastifyAll || { toast, alertService, AlertService };\n window.OmniToast = window.OmniToast || window.ToastifyAll;\n}\n\nexport { AlertService, alertService, toast };\nexport default toast;","import React, { createContext, useContext, useEffect } from 'react';\nimport { toast, alertService } from '../core/AlertService.js';\n\nconst ToastContext = createContext(toast);\n\n/**\n * ToastContainer component like react-toastify\n * Can be placed once at the root of the app.\n */\nexport const ToastContainer = (props = {}) => {\n const {\n position,\n autoClose,\n hideProgressBar,\n newestOnTop,\n closeOnClick,\n pauseOnHover,\n pauseOnFocusLoss,\n draggable,\n theme,\n transition,\n limit,\n className,\n style,\n ...rest\n } = props;\n\n useEffect(() => {\n const config = {};\n if (position !== undefined) config.position = position;\n if (autoClose !== undefined) {\n config.autoClose = (autoClose === false || autoClose === 'false')\n ? false\n : (!isNaN(Number(autoClose)) ? Number(autoClose) : autoClose);\n }\n if (hideProgressBar !== undefined) config.hideProgressBar = Boolean(hideProgressBar);\n if (newestOnTop !== undefined) config.newestOnTop = Boolean(newestOnTop);\n if (closeOnClick !== undefined) config.closeOnClick = Boolean(closeOnClick);\n if (pauseOnHover !== undefined) config.pauseOnHover = Boolean(pauseOnHover);\n if (pauseOnFocusLoss !== undefined) config.pauseOnFocusLoss = Boolean(pauseOnFocusLoss);\n if (draggable !== undefined) config.draggable = Boolean(draggable);\n if (theme !== undefined) config.theme = theme;\n if (transition !== undefined) config.transition = transition;\n if (limit !== undefined) config.limit = limit;\n if (className !== undefined) config.className = className;\n if (style !== undefined) config.style = style;\n Object.assign(config, rest);\n\n toast.configure(config);\n }, [\n position,\n autoClose,\n hideProgressBar,\n newestOnTop,\n closeOnClick,\n pauseOnHover,\n pauseOnFocusLoss,\n draggable,\n theme,\n transition,\n limit,\n className,\n style,\n JSON.stringify(rest)\n ]);\n\n return null;\n};\n\n/**\n * NotificationProvider for React Context users\n */\nexport const NotificationProvider = ({ children, options = {} }) => {\n useEffect(() => {\n if (options && Object.keys(options).length > 0) {\n toast.configure(options);\n }\n }, [options]);\n\n return (\n <ToastContext.Provider value={toast}>\n {children}\n </ToastContext.Provider>\n );\n};\n\nexport const useToast = () => {\n const context = useContext(ToastContext);\n return context || toast;\n};\n\nexport { toast, alertService };\nexport default toast;\n"],"names":["NotificationCore","_this","_classCallCheck","notifications","Map","counter","config","position","autoClose","hideProgressBar","closeOnClick","pauseOnHover","pauseOnFocusLoss","draggable","draggablePercent","theme","transition","limit","newestOnTop","closeButton","sound","containers","initialized","isWindowFocused","window","addEventListener","resumeAll","pauseAll","darkQuery","matchMedia","refreshSystemTheme","e","_createClass","key","value","getEffectiveTheme","arguments","length","undefined","matches","document","effectiveTheme","forEach","container","className","concat","configure","options","_objectSpread","init","injectStyles","getContainer","has","existing","get","body","contains","createElement","setAttribute","appendChild","set","playChime","type","AudioContext","webkitAudioContext","ctx","osc","createOscillator","gain","createGain","connect","destination","now","currentTime","setValueAtTime","exponentialRampToValueAtTime","frequency","start","stop","getElementById","style","id","textContent","head","getDefaultIcon","getAnimationNames","isLeft","includes","isCenter","enter","exit","show","message","toastId","update","children","firstChild","firstElementChild","oldestId","Number","getAttribute","dismiss","toast","createToast","insertBefore","entry","timer","remainingTime","startTime","Date","isPaused","setupAutoClose","onOpen","_this2","animations","trim","animation","_typeof","Object","assign","bodyClassName","bodyStyle","icon","iconWrapper","innerHTML","Node","textWrapper","title","titleEl","contentEl","String","action","label","actionBtn","onclick","stopPropagation","onClick","autoDismiss","closeBtn","progress","progressClassName","animationDuration","progressStyle","cursor","target","tagName","makeDraggable","setupHoverPause","_this3","delay","setTimeout","_this4","pauseToast","resumeToast","clearTimeout","elapsed","Math","max","querySelector","animationPlayState","_this5","_","_this6","_this7","startX","currentX","handleStart","clientX","touches","handleMove","deltaX","transform","opacity","abs","offsetWidth","handleEnd","threshold","passive","newState","content","render","replace","_this8","clearAll","onClose","parentNode","removeChild","delete","isActive","clearWaitingQueue","_this9","toasts","Array","from","slice","_this0","clear","promise","promiseOrFn","_this1","states","p","pendingMsg","pending","loading","then","data","successMsg","success","catch","err","errorMsg","error","AlertService","core","info","warn","warning","custom","alertService","createCallableToast","service","ToastifyAll","OmniToast","ToastContext","createContext","ToastContainer","props","rest","_objectWithoutProperties","_excluded","useEffect","isNaN","Boolean","JSON","stringify","NotificationProvider","_ref","_ref$options","keys","_jsx","Provider","useToast","context","useContext"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { ReactNode } from 'react';
2
+ import { NotificationOptions, ToastCallable } from '../types/index';
3
+
4
+ export interface ReactNativeToastOptions extends NotificationOptions {
5
+ useNativeAlertOnIOS?: boolean;
6
+ useNativeToastOnAndroid?: boolean;
7
+ }
8
+
9
+ export interface NotificationProviderProps {
10
+ children: ReactNode;
11
+ options?: ReactNativeToastOptions;
12
+ }
13
+
14
+ export declare const NotificationProvider: React.FC<NotificationProviderProps>;
15
+ export declare const useToast: () => ToastCallable;
16
+ export declare const toast: ToastCallable;
17
+ export default toast;
@@ -0,0 +1,146 @@
1
+ import { useEffect, useContext, createContext } from 'react';
2
+ import { Platform, ToastAndroid, Alert } from 'react-native';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ class ReactNativeNotificationManager {
6
+ constructor() {
7
+ this.listeners = new Set();
8
+ this.notifications = new Map();
9
+ this.counter = 0;
10
+ this.config = {
11
+ autoClose: 3500,
12
+ useNativeAlertOnIOS: true,
13
+ useNativeToastOnAndroid: true
14
+ };
15
+ }
16
+ configure(options = {}) {
17
+ this.config = {
18
+ ...this.config,
19
+ ...options
20
+ };
21
+ }
22
+ addListener(listener) {
23
+ this.listeners.add(listener);
24
+ return () => this.listeners.delete(listener);
25
+ }
26
+ notifyListeners() {
27
+ const list = Array.from(this.notifications.values());
28
+ this.listeners.forEach(listener => listener(list));
29
+ }
30
+ show(type, message, options = {}) {
31
+ const id = ++this.counter;
32
+ const text = typeof message === 'string' ? message : String(message);
33
+ const title = options.title || type.charAt(0).toUpperCase() + type.slice(1);
34
+
35
+ // Use native Android Toast if on Android
36
+ if (Platform && Platform.OS === 'android' && this.config.useNativeToastOnAndroid && typeof ToastAndroid !== 'undefined') {
37
+ try {
38
+ ToastAndroid.show(text, ToastAndroid.SHORT);
39
+ } catch (e) {
40
+ // fallback
41
+ }
42
+ } else if (Platform && Platform.OS === 'ios' && this.config.useNativeAlertOnIOS && typeof Alert !== 'undefined') {
43
+ Alert.alert(title, text);
44
+ }
45
+ const entry = {
46
+ id,
47
+ type,
48
+ message: text,
49
+ title,
50
+ options
51
+ };
52
+ this.notifications.set(id, entry);
53
+ this.notifyListeners();
54
+ const duration = options.autoClose !== undefined ? options.autoClose : this.config.autoClose;
55
+ if (duration !== false) {
56
+ setTimeout(() => {
57
+ this.dismiss(id);
58
+ }, duration);
59
+ }
60
+ return id;
61
+ }
62
+ success(message, options) {
63
+ return this.show('success', message, options);
64
+ }
65
+ error(message, options) {
66
+ return this.show('error', message, options);
67
+ }
68
+ info(message, options) {
69
+ return this.show('info', message, options);
70
+ }
71
+ warn(message, options) {
72
+ return this.show('warning', message, options);
73
+ }
74
+ warning(message, options) {
75
+ return this.show('warning', message, options);
76
+ }
77
+ loading(message, options) {
78
+ return this.show('loading', message, {
79
+ ...options,
80
+ autoClose: false
81
+ });
82
+ }
83
+ promise(promiseOrFn, states = {}, options = {}) {
84
+ const p = typeof promiseOrFn === 'function' ? promiseOrFn() : promiseOrFn;
85
+ const id = this.loading(states.pending || states.loading || 'Loading...', options);
86
+ return p.then(data => {
87
+ const successMsg = typeof states.success === 'function' ? states.success(data) : states.success || 'Success!';
88
+ this.dismiss(id);
89
+ this.success(successMsg, options);
90
+ return data;
91
+ }).catch(err => {
92
+ const errorMsg = typeof states.error === 'function' ? states.error(err) : states.error || err && err.message || 'Error occurred';
93
+ this.dismiss(id);
94
+ this.error(errorMsg, options);
95
+ throw err;
96
+ });
97
+ }
98
+ dismiss(id) {
99
+ if (id !== undefined) {
100
+ this.notifications.delete(id);
101
+ } else {
102
+ this.notifications.clear();
103
+ }
104
+ this.notifyListeners();
105
+ }
106
+ clearAll() {
107
+ this.dismiss();
108
+ }
109
+ }
110
+ const rnManager = new ReactNativeNotificationManager();
111
+ function createRNToast(manager) {
112
+ const toast = function (message, options) {
113
+ return manager.show('default', message, options);
114
+ };
115
+ toast.configure = opts => manager.configure(opts);
116
+ toast.success = (msg, opts) => manager.success(msg, opts);
117
+ toast.error = (msg, opts) => manager.error(msg, opts);
118
+ toast.info = (msg, opts) => manager.info(msg, opts);
119
+ toast.warning = (msg, opts) => manager.warning(msg, opts);
120
+ toast.warn = (msg, opts) => manager.warn(msg, opts);
121
+ toast.loading = (msg, opts) => manager.loading(msg, opts);
122
+ toast.promise = (p, states, opts) => manager.promise(p, states, opts);
123
+ toast.dismiss = id => manager.dismiss(id);
124
+ toast.clearAll = () => manager.clearAll();
125
+ return toast;
126
+ }
127
+ const toast = createRNToast(rnManager);
128
+ const ToastContext = /*#__PURE__*/createContext(toast);
129
+ const NotificationProvider = ({
130
+ children,
131
+ options = {}
132
+ }) => {
133
+ useEffect(() => {
134
+ if (options && Object.keys(options).length > 0) {
135
+ toast.configure(options);
136
+ }
137
+ }, [options]);
138
+ return /*#__PURE__*/jsx(ToastContext.Provider, {
139
+ value: toast,
140
+ children: children
141
+ });
142
+ };
143
+ const useToast = () => useContext(ToastContext) || toast;
144
+
145
+ export { NotificationProvider, toast as default, toast, useToast };
146
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/react-native/index.jsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { Alert, ToastAndroid, Platform } from 'react-native';\n\nclass ReactNativeNotificationManager {\n constructor() {\n this.listeners = new Set();\n this.notifications = new Map();\n this.counter = 0;\n this.config = {\n autoClose: 3500,\n useNativeAlertOnIOS: true,\n useNativeToastOnAndroid: true\n };\n }\n\n configure(options = {}) {\n this.config = { ...this.config, ...options };\n }\n\n addListener(listener) {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n notifyListeners() {\n const list = Array.from(this.notifications.values());\n this.listeners.forEach((listener) => listener(list));\n }\n\n show(type, message, options = {}) {\n const id = ++this.counter;\n const text = typeof message === 'string' ? message : String(message);\n const title = options.title || (type.charAt(0).toUpperCase() + type.slice(1));\n\n // Use native Android Toast if on Android\n if (Platform && Platform.OS === 'android' && this.config.useNativeToastOnAndroid && typeof ToastAndroid !== 'undefined') {\n try {\n ToastAndroid.show(text, ToastAndroid.SHORT);\n } catch (e) {\n // fallback\n }\n } else if (Platform && Platform.OS === 'ios' && this.config.useNativeAlertOnIOS && typeof Alert !== 'undefined') {\n Alert.alert(title, text);\n }\n\n const entry = { id, type, message: text, title, options };\n this.notifications.set(id, entry);\n this.notifyListeners();\n\n const duration = options.autoClose !== undefined ? options.autoClose : this.config.autoClose;\n if (duration !== false) {\n setTimeout(() => {\n this.dismiss(id);\n }, duration);\n }\n\n return id;\n }\n\n success(message, options) { return this.show('success', message, options); }\n error(message, options) { return this.show('error', message, options); }\n info(message, options) { return this.show('info', message, options); }\n warn(message, options) { return this.show('warning', message, options); }\n warning(message, options) { return this.show('warning', message, options); }\n loading(message, options) { return this.show('loading', message, { ...options, autoClose: false }); }\n\n promise(promiseOrFn, states = {}, options = {}) {\n const p = typeof promiseOrFn === 'function' ? promiseOrFn() : promiseOrFn;\n const id = this.loading(states.pending || states.loading || 'Loading...', options);\n\n return p\n .then((data) => {\n const successMsg = typeof states.success === 'function' ? states.success(data) : (states.success || 'Success!');\n this.dismiss(id);\n this.success(successMsg, options);\n return data;\n })\n .catch((err) => {\n const errorMsg = typeof states.error === 'function' ? states.error(err) : (states.error || (err && err.message) || 'Error occurred');\n this.dismiss(id);\n this.error(errorMsg, options);\n throw err;\n });\n }\n\n dismiss(id) {\n if (id !== undefined) {\n this.notifications.delete(id);\n } else {\n this.notifications.clear();\n }\n this.notifyListeners();\n }\n\n clearAll() {\n this.dismiss();\n }\n}\n\nconst rnManager = new ReactNativeNotificationManager();\n\nfunction createRNToast(manager) {\n const toast = function (message, options) {\n return manager.show('default', message, options);\n };\n toast.configure = (opts) => manager.configure(opts);\n toast.success = (msg, opts) => manager.success(msg, opts);\n toast.error = (msg, opts) => manager.error(msg, opts);\n toast.info = (msg, opts) => manager.info(msg, opts);\n toast.warning = (msg, opts) => manager.warning(msg, opts);\n toast.warn = (msg, opts) => manager.warn(msg, opts);\n toast.loading = (msg, opts) => manager.loading(msg, opts);\n toast.promise = (p, states, opts) => manager.promise(p, states, opts);\n toast.dismiss = (id) => manager.dismiss(id);\n toast.clearAll = () => manager.clearAll();\n return toast;\n}\n\nexport const toast = createRNToast(rnManager);\n\nconst ToastContext = createContext(toast);\n\nexport const NotificationProvider = ({ children, options = {} }) => {\n useEffect(() => {\n if (options && Object.keys(options).length > 0) {\n toast.configure(options);\n }\n }, [options]);\n\n return (\n <ToastContext.Provider value={toast}>\n {children}\n </ToastContext.Provider>\n );\n};\n\nexport const useToast = () => useContext(ToastContext) || toast;\n\nexport default toast;"],"names":["ReactNativeNotificationManager","constructor","listeners","Set","notifications","Map","counter","config","autoClose","useNativeAlertOnIOS","useNativeToastOnAndroid","configure","options","addListener","listener","add","delete","notifyListeners","list","Array","from","values","forEach","show","type","message","id","text","String","title","charAt","toUpperCase","slice","Platform","OS","ToastAndroid","SHORT","e","Alert","alert","entry","set","duration","undefined","setTimeout","dismiss","success","error","info","warn","warning","loading","promise","promiseOrFn","states","p","pending","then","data","successMsg","catch","err","errorMsg","clear","clearAll","rnManager","createRNToast","manager","toast","opts","msg","ToastContext","createContext","NotificationProvider","children","useEffect","Object","keys","length","_jsx","Provider","value","useToast","useContext"],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var react = require('react');
6
+ var reactNative = require('react-native');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ class ReactNativeNotificationManager {
10
+ constructor() {
11
+ this.listeners = new Set();
12
+ this.notifications = new Map();
13
+ this.counter = 0;
14
+ this.config = {
15
+ autoClose: 3500,
16
+ useNativeAlertOnIOS: true,
17
+ useNativeToastOnAndroid: true
18
+ };
19
+ }
20
+ configure(options = {}) {
21
+ this.config = {
22
+ ...this.config,
23
+ ...options
24
+ };
25
+ }
26
+ addListener(listener) {
27
+ this.listeners.add(listener);
28
+ return () => this.listeners.delete(listener);
29
+ }
30
+ notifyListeners() {
31
+ const list = Array.from(this.notifications.values());
32
+ this.listeners.forEach(listener => listener(list));
33
+ }
34
+ show(type, message, options = {}) {
35
+ const id = ++this.counter;
36
+ const text = typeof message === 'string' ? message : String(message);
37
+ const title = options.title || type.charAt(0).toUpperCase() + type.slice(1);
38
+
39
+ // Use native Android Toast if on Android
40
+ if (reactNative.Platform && reactNative.Platform.OS === 'android' && this.config.useNativeToastOnAndroid && typeof reactNative.ToastAndroid !== 'undefined') {
41
+ try {
42
+ reactNative.ToastAndroid.show(text, reactNative.ToastAndroid.SHORT);
43
+ } catch (e) {
44
+ // fallback
45
+ }
46
+ } else if (reactNative.Platform && reactNative.Platform.OS === 'ios' && this.config.useNativeAlertOnIOS && typeof reactNative.Alert !== 'undefined') {
47
+ reactNative.Alert.alert(title, text);
48
+ }
49
+ const entry = {
50
+ id,
51
+ type,
52
+ message: text,
53
+ title,
54
+ options
55
+ };
56
+ this.notifications.set(id, entry);
57
+ this.notifyListeners();
58
+ const duration = options.autoClose !== undefined ? options.autoClose : this.config.autoClose;
59
+ if (duration !== false) {
60
+ setTimeout(() => {
61
+ this.dismiss(id);
62
+ }, duration);
63
+ }
64
+ return id;
65
+ }
66
+ success(message, options) {
67
+ return this.show('success', message, options);
68
+ }
69
+ error(message, options) {
70
+ return this.show('error', message, options);
71
+ }
72
+ info(message, options) {
73
+ return this.show('info', message, options);
74
+ }
75
+ warn(message, options) {
76
+ return this.show('warning', message, options);
77
+ }
78
+ warning(message, options) {
79
+ return this.show('warning', message, options);
80
+ }
81
+ loading(message, options) {
82
+ return this.show('loading', message, {
83
+ ...options,
84
+ autoClose: false
85
+ });
86
+ }
87
+ promise(promiseOrFn, states = {}, options = {}) {
88
+ const p = typeof promiseOrFn === 'function' ? promiseOrFn() : promiseOrFn;
89
+ const id = this.loading(states.pending || states.loading || 'Loading...', options);
90
+ return p.then(data => {
91
+ const successMsg = typeof states.success === 'function' ? states.success(data) : states.success || 'Success!';
92
+ this.dismiss(id);
93
+ this.success(successMsg, options);
94
+ return data;
95
+ }).catch(err => {
96
+ const errorMsg = typeof states.error === 'function' ? states.error(err) : states.error || err && err.message || 'Error occurred';
97
+ this.dismiss(id);
98
+ this.error(errorMsg, options);
99
+ throw err;
100
+ });
101
+ }
102
+ dismiss(id) {
103
+ if (id !== undefined) {
104
+ this.notifications.delete(id);
105
+ } else {
106
+ this.notifications.clear();
107
+ }
108
+ this.notifyListeners();
109
+ }
110
+ clearAll() {
111
+ this.dismiss();
112
+ }
113
+ }
114
+ const rnManager = new ReactNativeNotificationManager();
115
+ function createRNToast(manager) {
116
+ const toast = function (message, options) {
117
+ return manager.show('default', message, options);
118
+ };
119
+ toast.configure = opts => manager.configure(opts);
120
+ toast.success = (msg, opts) => manager.success(msg, opts);
121
+ toast.error = (msg, opts) => manager.error(msg, opts);
122
+ toast.info = (msg, opts) => manager.info(msg, opts);
123
+ toast.warning = (msg, opts) => manager.warning(msg, opts);
124
+ toast.warn = (msg, opts) => manager.warn(msg, opts);
125
+ toast.loading = (msg, opts) => manager.loading(msg, opts);
126
+ toast.promise = (p, states, opts) => manager.promise(p, states, opts);
127
+ toast.dismiss = id => manager.dismiss(id);
128
+ toast.clearAll = () => manager.clearAll();
129
+ return toast;
130
+ }
131
+ const toast = createRNToast(rnManager);
132
+ const ToastContext = /*#__PURE__*/react.createContext(toast);
133
+ const NotificationProvider = ({
134
+ children,
135
+ options = {}
136
+ }) => {
137
+ react.useEffect(() => {
138
+ if (options && Object.keys(options).length > 0) {
139
+ toast.configure(options);
140
+ }
141
+ }, [options]);
142
+ return /*#__PURE__*/jsxRuntime.jsx(ToastContext.Provider, {
143
+ value: toast,
144
+ children: children
145
+ });
146
+ };
147
+ const useToast = () => react.useContext(ToastContext) || toast;
148
+
149
+ exports.NotificationProvider = NotificationProvider;
150
+ exports.default = toast;
151
+ exports.toast = toast;
152
+ exports.useToast = useToast;
153
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/react-native/index.jsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState } from 'react';\nimport { Alert, ToastAndroid, Platform } from 'react-native';\n\nclass ReactNativeNotificationManager {\n constructor() {\n this.listeners = new Set();\n this.notifications = new Map();\n this.counter = 0;\n this.config = {\n autoClose: 3500,\n useNativeAlertOnIOS: true,\n useNativeToastOnAndroid: true\n };\n }\n\n configure(options = {}) {\n this.config = { ...this.config, ...options };\n }\n\n addListener(listener) {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n notifyListeners() {\n const list = Array.from(this.notifications.values());\n this.listeners.forEach((listener) => listener(list));\n }\n\n show(type, message, options = {}) {\n const id = ++this.counter;\n const text = typeof message === 'string' ? message : String(message);\n const title = options.title || (type.charAt(0).toUpperCase() + type.slice(1));\n\n // Use native Android Toast if on Android\n if (Platform && Platform.OS === 'android' && this.config.useNativeToastOnAndroid && typeof ToastAndroid !== 'undefined') {\n try {\n ToastAndroid.show(text, ToastAndroid.SHORT);\n } catch (e) {\n // fallback\n }\n } else if (Platform && Platform.OS === 'ios' && this.config.useNativeAlertOnIOS && typeof Alert !== 'undefined') {\n Alert.alert(title, text);\n }\n\n const entry = { id, type, message: text, title, options };\n this.notifications.set(id, entry);\n this.notifyListeners();\n\n const duration = options.autoClose !== undefined ? options.autoClose : this.config.autoClose;\n if (duration !== false) {\n setTimeout(() => {\n this.dismiss(id);\n }, duration);\n }\n\n return id;\n }\n\n success(message, options) { return this.show('success', message, options); }\n error(message, options) { return this.show('error', message, options); }\n info(message, options) { return this.show('info', message, options); }\n warn(message, options) { return this.show('warning', message, options); }\n warning(message, options) { return this.show('warning', message, options); }\n loading(message, options) { return this.show('loading', message, { ...options, autoClose: false }); }\n\n promise(promiseOrFn, states = {}, options = {}) {\n const p = typeof promiseOrFn === 'function' ? promiseOrFn() : promiseOrFn;\n const id = this.loading(states.pending || states.loading || 'Loading...', options);\n\n return p\n .then((data) => {\n const successMsg = typeof states.success === 'function' ? states.success(data) : (states.success || 'Success!');\n this.dismiss(id);\n this.success(successMsg, options);\n return data;\n })\n .catch((err) => {\n const errorMsg = typeof states.error === 'function' ? states.error(err) : (states.error || (err && err.message) || 'Error occurred');\n this.dismiss(id);\n this.error(errorMsg, options);\n throw err;\n });\n }\n\n dismiss(id) {\n if (id !== undefined) {\n this.notifications.delete(id);\n } else {\n this.notifications.clear();\n }\n this.notifyListeners();\n }\n\n clearAll() {\n this.dismiss();\n }\n}\n\nconst rnManager = new ReactNativeNotificationManager();\n\nfunction createRNToast(manager) {\n const toast = function (message, options) {\n return manager.show('default', message, options);\n };\n toast.configure = (opts) => manager.configure(opts);\n toast.success = (msg, opts) => manager.success(msg, opts);\n toast.error = (msg, opts) => manager.error(msg, opts);\n toast.info = (msg, opts) => manager.info(msg, opts);\n toast.warning = (msg, opts) => manager.warning(msg, opts);\n toast.warn = (msg, opts) => manager.warn(msg, opts);\n toast.loading = (msg, opts) => manager.loading(msg, opts);\n toast.promise = (p, states, opts) => manager.promise(p, states, opts);\n toast.dismiss = (id) => manager.dismiss(id);\n toast.clearAll = () => manager.clearAll();\n return toast;\n}\n\nexport const toast = createRNToast(rnManager);\n\nconst ToastContext = createContext(toast);\n\nexport const NotificationProvider = ({ children, options = {} }) => {\n useEffect(() => {\n if (options && Object.keys(options).length > 0) {\n toast.configure(options);\n }\n }, [options]);\n\n return (\n <ToastContext.Provider value={toast}>\n {children}\n </ToastContext.Provider>\n );\n};\n\nexport const useToast = () => useContext(ToastContext) || toast;\n\nexport default toast;"],"names":["ReactNativeNotificationManager","constructor","listeners","Set","notifications","Map","counter","config","autoClose","useNativeAlertOnIOS","useNativeToastOnAndroid","configure","options","addListener","listener","add","delete","notifyListeners","list","Array","from","values","forEach","show","type","message","id","text","String","title","charAt","toUpperCase","slice","Platform","OS","ToastAndroid","SHORT","e","Alert","alert","entry","set","duration","undefined","setTimeout","dismiss","success","error","info","warn","warning","loading","promise","promiseOrFn","states","p","pending","then","data","successMsg","catch","err","errorMsg","clear","clearAll","rnManager","createRNToast","manager","toast","opts","msg","ToastContext","createContext","NotificationProvider","children","useEffect","Object","keys","length","_jsx","Provider","value","useToast","useContext"],"mappings":"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"}