UNPKG

react-toast-kit

Version:

A modern, accessible toast notification system for React applications with automatic CSS injection

1 lines 79.8 kB
{"version":3,"sources":["../src/ToastPortal.tsx","../src/ToastProvider.tsx","../src/useToast.ts","../src/index.ts"],"names":["useEffect","useState","memo","useRef","useCallback","useMemo","React","findHighestZIndex","cachedZIndex","lastCheck","CACHE_DURATION","now","highestZ","elements","i","element","style","zIndex","classList","elementZIndex","error","DEVICE_BREAKPOINTS","TOAST_WIDTHS","SVGIcon","svgString","className","memoizedSVG","jsx","AccessibilityAnnouncer","toasts","announcement","setAnnouncement","announcementRef","lastToastIdRef","latestToast","text","useSwipeGesture","enabled","onSwipe","threshold","touchStartX","touchStartY","isSwiping","handleTouchStart","e","touch","handleTouchMove","deltaX","deltaY","handleTouchEnd","ToastItem","toast","onDismiss","onPause","onResume","animation","position","toastTheme","defaultStyle","toastRef","handleDismiss","handlePause","handleResume","handleProgressComplete","swipeGesture","handleRippleEffect","toastElement","rect","x","y","ripple","variantClasses","isDark","styleClass","styleAttributes","animationVariants","animationType","toastPosition","isTop","isBottom","isLeft","isRight","isCenter","initial","exit","additionalClasses","classes","visualStyle","iconColor","progressBarClasses","baseClass","emojiComponent","iconString","motion","jsxs","ToastContainer","positionStyle","defaultAnimation","containerClassName","AnimatePresence","ToastPortal","topOffset","bottomOffset","leftOffset","rightOffset","enableAccessibleAnnouncements","suppressHydrationWarning","isMounted","setIsMounted","portalElement","setPortalElement","screenWidth","setScreenWidth","deviceType","setDeviceType","removeToast","pauseToast","resumeToast","effectiveTheme","updateEffectiveTheme","useToastStore","darkModeQuery","handleThemeChange","handleResize","width","newDeviceType","div","resizeTimer","throttledResize","toastsWithValidPositions","toastsByPosition","acc","getToastWidth","getPositionStyle","toastWidth","baseStyle","safeWidth","currentTheme","portalContent","Fragment","positionToasts","createPortal","ToastPortal_default","createContext","useContext","ToastProviderContext","ToastProvider","children","theme","maxToasts","defaultDuration","defaultDismissible","defaultPauseOnHover","defaultDismissOnClick","defaultProgressBarStyle","defaultProgressBarColor","defaultProgressBarPosition","defaultProgressBarThickness","defaultProgressAnimation","defaultFloating","defaultRippleEffect","defaultSwipeToDismiss","defaultPriority","defaultStagger","enableDevMode","enableDevTools","globalClassName","globalStyle","initialized","setInitialized","setTheme","setMaxToasts","contextValue","shouldShowDevTools","ToastDevTools","useToastProvider","context","useToast","plugins","addToast","updateToast","clearAllToasts","registerPlugin","unregisterPlugin","stats","total","byVariant","byPosition","getToastById","id","hasToasts","cssInjected","injectCSS","cssContent","progressStylesContent","existingToastLibs","lib","__require"],"mappings":"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","file":"index.cjs","sourcesContent":["import * as React from 'react';\nimport { createPortal } from 'react-dom';\nimport { useToastStore } from './toast';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport type { Toast, ToastPosition, ToastAnimation, ToastStyle } from './toast';\nimport type { TargetAndTransition } from 'framer-motion';\n\nconst { useEffect, useState, memo, useRef, useCallback, useMemo } = React;\n\n/**\n * Finds the highest z-index in use in the document with caching\n */\nconst findHighestZIndex = (() => {\n let cachedZIndex: number | null = null;\n let lastCheck = 0;\n const CACHE_DURATION = 5000; // 5 seconds\n\n return (): number => {\n const now = Date.now();\n\n if (cachedZIndex !== null && (now - lastCheck) < CACHE_DURATION) {\n return cachedZIndex;\n }\n\n let highestZ = 99998; // Bắt đầu từ số cao hơn để đảm bảo luôn trên cùng\n\n if (typeof window === 'undefined') return highestZ;\n\n try {\n const elements = document.getElementsByTagName('*');\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n const style = window.getComputedStyle(element);\n const zIndex = parseInt(style.zIndex, 10);\n \n // Kiểm tra cả z-index và các class dialog/modal phổ biến\n if (zIndex && zIndex > highestZ) {\n highestZ = zIndex;\n }\n \n // Kiểm tra các class dialog/modal phổ biến và đặt z-index cao hơn\n const classList = element.classList;\n if (classList.contains('rpt-dialog') || \n classList.contains('modal') || \n classList.contains('dialog') ||\n classList.contains('overlay') ||\n element.tagName === 'DIALOG') {\n const elementZIndex = parseInt(style.zIndex, 10) || 1000;\n if (elementZIndex > highestZ) {\n highestZ = elementZIndex;\n }\n }\n }\n } catch (error) {\n console.warn('React Toast Kit: Failed to find highest z-index', error);\n }\n\n // Đảm bảo toast luôn có z-index cao nhất + 1000\n cachedZIndex = Math.max(highestZ + 1000, 99999);\n lastCheck = now;\n return cachedZIndex;\n };\n})();\n\ninterface ToastPortalProps {\n containerClassName?: string;\n topOffset?: number;\n bottomOffset?: number;\n leftOffset?: number;\n rightOffset?: number;\n defaultAnimation?: ToastAnimation;\n defaultStyle?: ToastStyle;\n enableAccessibleAnnouncements?: boolean;\n suppressHydrationWarning?: boolean;\n}\n\n// Device breakpoints with enhanced detection\nconst DEVICE_BREAKPOINTS = {\n mobile: 640,\n tablet: 1024,\n};\n\nconst TOAST_WIDTHS = {\n mobile: 320,\n tablet: 360,\n desktop: 380,\n};\n\n// Enhanced SVG Icon component with better performance\nconst SVGIcon = memo(({\n svgString,\n className = ''\n}: {\n svgString: string;\n className?: string;\n}) => {\n const memoizedSVG = useMemo(() => ({ __html: svgString }), [svgString]);\n\n return (\n <div\n className={className}\n dangerouslySetInnerHTML={memoizedSVG}\n />\n );\n});\nSVGIcon.displayName = 'SVGIcon';\n\n// Accessibility announcer component\nconst AccessibilityAnnouncer = memo(({ toasts }: { toasts: Toast[] }) => {\n const [announcement, setAnnouncement] = useState<string>('');\n const announcementRef = useRef<string>('');\n const lastToastIdRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (toasts.length === 0) return;\n \n // Get the most recent toast\n const latestToast = toasts[0];\n \n // Skip if it's the same toast being announced\n if (latestToast.id === lastToastIdRef.current) return;\n \n // Create the announcement text\n let text = '';\n \n if (latestToast.variant) {\n text += `${latestToast.variant} notification: `;\n }\n \n if (latestToast.title) {\n text += latestToast.title;\n if (latestToast.description) {\n text += '. ';\n }\n }\n \n if (latestToast.description) {\n text += latestToast.description;\n }\n \n // Only announce if different from the last announcement\n if (text && text !== announcementRef.current) {\n announcementRef.current = text;\n lastToastIdRef.current = latestToast.id;\n setAnnouncement(text);\n \n // Clear announcement after a delay for screen readers to process\n setTimeout(() => {\n setAnnouncement('');\n }, 1000);\n }\n }, [toasts]);\n\n if (!announcement) return null;\n \n return (\n <div \n aria-live=\"polite\"\n aria-atomic=\"true\" \n className=\"sr-only\"\n role=\"status\"\n >\n {announcement}\n </div>\n );\n});\nAccessibilityAnnouncer.displayName = 'AccessibilityAnnouncer';\n\n// Hook for swipe gesture detection\nconst useSwipeGesture = (\n enabled: boolean,\n onSwipe: () => void,\n threshold: number = 100\n) => {\n const touchStartX = useRef<number>(0);\n const touchStartY = useRef<number>(0);\n const isSwiping = useRef<boolean>(false);\n\n const handleTouchStart = useCallback((e: React.TouchEvent) => {\n if (!enabled) return;\n\n const touch = e.touches[0];\n touchStartX.current = touch.clientX;\n touchStartY.current = touch.clientY;\n isSwiping.current = false;\n }, [enabled]);\n\n const handleTouchMove = useCallback((e: React.TouchEvent) => {\n if (!enabled) return;\n\n const touch = e.touches[0];\n const deltaX = Math.abs(touch.clientX - touchStartX.current);\n const deltaY = Math.abs(touch.clientY - touchStartY.current);\n\n // Start swiping if horizontal movement is greater than vertical\n if (deltaX > deltaY && deltaX > 10) {\n isSwiping.current = true;\n e.preventDefault(); // Prevent scrolling\n }\n }, [enabled]);\n\n const handleTouchEnd = useCallback((e: React.TouchEvent) => {\n if (!enabled || !isSwiping.current) return;\n\n const touch = e.changedTouches[0];\n const deltaX = Math.abs(touch.clientX - touchStartX.current);\n\n if (deltaX > threshold) {\n onSwipe();\n }\n\n isSwiping.current = false;\n }, [enabled, onSwipe, threshold]);\n\n return {\n handleTouchStart,\n handleTouchMove,\n handleTouchEnd,\n };\n};\n\n// Enhanced ToastItem component with better memoization\nconst ToastItem = memo(({\n toast,\n onDismiss,\n onPause,\n onResume,\n animation,\n position,\n toastTheme,\n defaultStyle\n}: {\n toast: Toast;\n onDismiss: (id: string) => void;\n onPause: (id: string) => void;\n onResume: (id: string) => void;\n animation: ToastAnimation;\n position: ToastPosition;\n toastTheme: 'light' | 'dark';\n defaultStyle: ToastStyle;\n}) => {\n const toastRef = useRef<HTMLDivElement>(null);\n\n // Memoize handlers to prevent unnecessary re-renders\n const handleDismiss = useCallback(() => {\n onDismiss(toast.id);\n }, [onDismiss, toast.id]);\n\n const handlePause = useCallback(() => {\n if (toast.pauseOnHover) onPause(toast.id);\n }, [onPause, toast.id, toast.pauseOnHover]);\n\n const handleResume = useCallback(() => {\n onResume(toast.id);\n }, [onResume, toast.id]);\n\n // Handler for progress animation completion\n const handleProgressComplete = useCallback(() => {\n if (toast.duration > 0) {\n handleDismiss();\n }\n }, [handleDismiss, toast.duration]);\n\n // Swipe gesture handlers\n const swipeGesture = useSwipeGesture(\n toast.swipeToDismiss || false,\n handleDismiss\n );\n\n // Enhanced ripple effect with better performance\n const handleRippleEffect = useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n if (toast.rippleEffect && toastRef.current) {\n const toastElement = toastRef.current;\n const rect = toastElement.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n // Create ripple element\n const ripple = document.createElement('div');\n ripple.className = 'toast-ripple-element';\n ripple.style.left = `${x}px`;\n ripple.style.top = `${y}px`;\n\n toastElement.appendChild(ripple);\n\n // Use requestAnimationFrame for better performance\n requestAnimationFrame(() => {\n setTimeout(() => {\n if (toastElement.contains(ripple)) {\n toastElement.removeChild(ripple);\n }\n }, 700);\n });\n }\n\n if (toast.dismissOnClick) {\n handleDismiss();\n }\n }, [toast.rippleEffect, toast.dismissOnClick, handleDismiss]);\n\n // Memoize variant classes\n const variantClasses = useMemo(() => {\n const isDark = toastTheme === 'dark';\n \n // Use the visualStyle from toast or default\n const styleClass = toast.visualStyle || defaultStyle;\n \n // Create additional style attributes\n const styleAttributes: Record<string, string> = {};\n \n // Customize gradient colors based on variant if using gradient style\n if (styleClass === 'gradient') {\n switch (toast.variant) {\n case 'success':\n styleAttributes['--toast-gradient-from'] = isDark ? 'rgba(5, 95, 70, 0.9)' : 'rgba(16, 185, 129, 0.8)';\n styleAttributes['--toast-gradient-to'] = isDark ? 'rgba(4, 120, 87, 0.8)' : 'rgba(5, 150, 105, 0.7)';\n break;\n case 'error':\n styleAttributes['--toast-gradient-from'] = isDark ? 'rgba(153, 27, 27, 0.9)' : 'rgba(239, 68, 68, 0.8)';\n styleAttributes['--toast-gradient-to'] = isDark ? 'rgba(185, 28, 28, 0.8)' : 'rgba(220, 38, 38, 0.7)';\n break;\n case 'warning':\n styleAttributes['--toast-gradient-from'] = isDark ? 'rgba(146, 64, 14, 0.9)' : 'rgba(245, 158, 11, 0.8)';\n styleAttributes['--toast-gradient-to'] = isDark ? 'rgba(180, 83, 9, 0.8)' : 'rgba(217, 119, 6, 0.7)';\n break;\n case 'info':\n styleAttributes['--toast-gradient-from'] = isDark ? 'rgba(30, 64, 175, 0.9)' : 'rgba(59, 130, 246, 0.8)';\n styleAttributes['--toast-gradient-to'] = isDark ? 'rgba(29, 78, 216, 0.8)' : 'rgba(37, 99, 235, 0.7)';\n break;\n default:\n styleAttributes['--toast-gradient-from'] = isDark ? 'rgba(55, 65, 81, 0.9)' : 'rgba(229, 231, 235, 0.8)';\n styleAttributes['--toast-gradient-to'] = isDark ? 'rgba(75, 85, 99, 0.8)' : 'rgba(209, 213, 219, 0.7)';\n }\n }\n\n // Return the style attributes for use in the component render\n return styleAttributes;\n }, [toast.variant, toastTheme, toast.visualStyle, defaultStyle]);\n\n // Memoize animation variants with proper typing\n const animationVariants = useMemo(() => {\n // Use custom animation if provided and properly typed\n if (toast.customAnimation) {\n return {\n initial: toast.customAnimation.initial as TargetAndTransition,\n animate: toast.customAnimation.animate as TargetAndTransition,\n exit: toast.customAnimation.exit as TargetAndTransition\n };\n }\n\n const animationType = toast.animation || animation;\n const toastPosition = toast.position || position;\n const isTop = toastPosition.startsWith('top');\n const isBottom = toastPosition.startsWith('bottom');\n const isLeft = toastPosition.endsWith('left');\n const isRight = toastPosition.endsWith('right');\n const isCenter = toastPosition.endsWith('center');\n\n if (animationType === 'none') {\n return {\n initial: { opacity: 1 },\n animate: { opacity: 1 },\n exit: { opacity: 1 }\n };\n }\n\n if (animationType === 'fade') {\n return {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n exit: { opacity: 0 }\n };\n }\n\n if (animationType === 'bounce') {\n const initial: TargetAndTransition = { opacity: 0, scale: 0.9 };\n if (isTop) Object.assign(initial, { y: -80 });\n else if (isBottom) Object.assign(initial, { y: 80 });\n else if (isLeft) Object.assign(initial, { x: -80 });\n else if (isRight) Object.assign(initial, { x: 80 });\n\n return {\n initial,\n animate: {\n opacity: 1,\n y: 0,\n x: 0,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 350,\n damping: 25\n }\n },\n exit: {\n opacity: 0,\n scale: 0.9,\n transition: { duration: 0.2 }\n }\n };\n }\n\n if (animationType === 'flip') {\n return {\n initial: {\n opacity: 0,\n rotateX: 90,\n perspective: 400\n },\n animate: {\n opacity: 1,\n rotateX: 0,\n perspective: 400,\n transition: {\n type: 'spring',\n stiffness: 300,\n damping: 25\n }\n },\n exit: {\n opacity: 0,\n rotateX: 90,\n perspective: 400,\n transition: { duration: 0.3 }\n }\n };\n }\n\n if (animationType === 'zoom') {\n return {\n initial: { opacity: 0, scale: 0.5 },\n animate: {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring',\n stiffness: 400,\n damping: 30\n }\n },\n exit: {\n opacity: 0,\n scale: 0.5,\n transition: { duration: 0.2 }\n }\n };\n }\n\n // Default slide animation\n const initial: TargetAndTransition = { opacity: 0 };\n const exit: TargetAndTransition = { opacity: 0 };\n\n if (isTop) {\n Object.assign(initial, { y: -20 });\n Object.assign(exit, { y: -20 });\n } else if (isBottom) {\n Object.assign(initial, { y: 20 });\n Object.assign(exit, { y: 20 });\n } else if (isLeft) {\n Object.assign(initial, { x: -20 });\n Object.assign(exit, { x: -20 });\n } else if (isRight) {\n Object.assign(initial, { x: 20 });\n Object.assign(exit, { x: 20 });\n } else if (isCenter) {\n if (isTop) {\n Object.assign(initial, { y: -20 });\n Object.assign(exit, { y: -20 });\n } else {\n Object.assign(initial, { y: 20 });\n Object.assign(exit, { y: 20 });\n }\n }\n\n return {\n initial,\n animate: { opacity: 1, y: 0, x: 0 },\n exit\n };\n }, [toast.customAnimation, toast.animation, animation, toast.position, position]);\n\n // Memoize additional classes\n const additionalClasses = useMemo(() => {\n const classes: string[] = [];\n\n if (toast.floating) classes.push('react-toast-floating');\n if (toast.rippleEffect) classes.push('toast-ripple');\n\n const visualStyle = toast.visualStyle || defaultStyle;\n if (visualStyle === 'glass' || visualStyle === 'gradient') {\n classes.push('toast-soft-shadow');\n }\n\n return classes.join(' ');\n }, [toast.floating, toast.rippleEffect, toast.visualStyle, defaultStyle]);\n\n // Memoize icon color\n const iconColor = useMemo(() => {\n if (toast.variant === 'custom') return '';\n\n if (!toast.variant || toast.variant === 'default') {\n return toastTheme === 'dark' ? 'text-gray-300' : 'text-gray-500';\n }\n\n return 'text-white';\n }, [toast.variant, toastTheme]);\n\n // Memoize progress bar classes\n const progressBarClasses = useMemo(() => {\n const baseClass = 'react-toast-progress';\n \n // Return the style class based on the progress bar style\n if (toast.progressBarStyle) {\n return `${baseClass} ${toast.progressBarStyle}`;\n }\n\n if (toast.variant === 'custom') return `${baseClass} bg-white/20`;\n\n if (!toast.variant || toast.variant === 'default') {\n return toastTheme === 'dark'\n ? `${baseClass} bg-gray-600`\n : `${baseClass} bg-gray-300`;\n }\n\n return `${baseClass} bg-white/30`;\n }, [toast.progressBarStyle, toast.variant, toastTheme]);\n\n // Memoize emoji component\n const emojiComponent = useMemo(() => {\n if (!toast.emoji) return null;\n\n return (\n <div className=\"flex-shrink-0 mr-3 toast-emoji\">\n {toast.emoji}\n </div>\n );\n }, [toast.emoji]);\n\n // Get icon string with proper typing\n const iconString = toast.iconString;\n\n return (\n <motion.div\n key={toast.id}\n className=\"react-toast-item w-full\"\n initial={animationVariants.initial}\n animate={animationVariants.animate}\n exit={animationVariants.exit}\n transition={{\n duration: toast.updating ? 0.1 : 0.2\n }}\n layout\n >\n <div\n ref={toastRef}\n role={toast.variant === 'error' ? 'alert' : 'status'}\n aria-live={toast.variant === 'error' ? 'assertive' : 'polite'}\n className={`relative overflow-hidden shadow-lg rounded-lg react-toast w-full ${toast.className || ''} ${additionalClasses}`}\n style={{...(toast.style || {}), ...variantClasses}}\n onMouseEnter={handlePause}\n onMouseLeave={handleResume}\n onClick={handleRippleEffect}\n onTouchStart={swipeGesture.handleTouchStart}\n onTouchMove={swipeGesture.handleTouchMove}\n onTouchEnd={swipeGesture.handleTouchEnd}\n data-variant={toast.variant}\n data-theme={toastTheme}\n data-style={toast.visualStyle || defaultStyle}\n data-progress-position={toast.progressBarPosition || 'bottom'}\n data-testid={`toast-${toast.id}`}\n tabIndex={0}\n >\n {/* Progress indicator for timed toasts */}\n {toast.duration > 0 && (\n <div className={progressBarClasses}>\n <motion.div\n initial={{ width: '100%' }}\n animate={{ width: '0%' }}\n transition={{\n duration: toast.duration / 1000,\n ease: toast.progressAnimation || 'linear',\n }}\n onAnimationComplete={handleProgressComplete}\n className=\"react-toast-progress-fill\"\n style={{\n backgroundColor: toast.progressBarColor || undefined,\n height: toast.progressBarThickness ? `${toast.progressBarThickness}px` : undefined,\n [toast.progressBarPosition === 'left' || toast.progressBarPosition === 'right' ? 'width' : 'height']: \n toast.progressBarThickness ? `${toast.progressBarThickness}px` : undefined,\n }}\n />\n </div>\n )}\n \n <div className=\"p-4 toast-content\">\n {toast.variant === 'custom' && toast.com