{"version":3,"sources":["../src/core/soundRegistry.ts","../src/core/env.ts","../src/react-native/sound.bare.ts","../src/react-native/sound.expo.ts","../src/core/config.ts","../src/core/manager.ts","../src/react-native/notify.ts","../src/react-native/useNotify.ts","../src/react-native/renderer.tsx"],"sourcesContent":["import type { SoundName } from \"./types.js\";\n\n// Default built-in sound mappings\n// Maps logical names → file names in the sounds/ directory\nconst defaultSoundMap: Record<SoundName, string> = {\n  success: \"success.wav\",\n  error: \"error.wav\",\n  warning: \"warning.wav\",\n  message: \"message.wav\",\n  click: \"click.wav\",\n  ringtone: \"ringtone.wav\",\n};\n\nconst customSounds: Record<string, string> = {};\n\nexport function getSoundKey(sound: SoundName | string): string {\n  if (sound in defaultSoundMap) {\n    return defaultSoundMap[sound as SoundName];\n  }\n  if (sound in customSounds) {\n    return customSounds[sound];\n  }\n  // Treat as a direct path/URL\n  return sound;\n}\n\nexport function isBuiltInSound(sound: string): boolean {\n  return sound in defaultSoundMap;\n}\n\nexport function registerSound(name: string, path: string): void {\n  customSounds[name] = path;\n}\n\nexport function getRegisteredSounds(): Record<string, string> {\n  return { ...defaultSoundMap, ...customSounds };\n}\n","const moduleCache: Record<string, unknown | null> = {};\n\nexport function requireOptional<T>(moduleId: string, loader: () => T): T | null {\n  if (moduleId in moduleCache) {\n    return moduleCache[moduleId] as T | null;\n  }\n\n  try {\n    const mod = loader();\n    moduleCache[moduleId] = mod;\n    return mod;\n  } catch (error) {\n    if (isModuleNotFoundError(error, moduleId)) {\n      moduleCache[moduleId] = null;\n      return null;\n    }\n    throw error;\n  }\n}\n\nexport function tryRequireDefault<T>(moduleId: string, loader: () => { default: T } | T): T | null {\n  const mod = tryRequire(moduleId, loader);\n  if (!mod) {\n    return null;\n  }\n\n  return (mod as { default?: T }).default ?? (mod as T);\n}\n\nfunction isModuleNotFoundError(error: unknown, moduleId: string): boolean {\n  if (!error || typeof error !== \"object\") {\n    return false;\n  }\n\n  const err = error as { code?: string; message?: string };\n  if (err.code === \"MODULE_NOT_FOUND\") {\n    return true;\n  }\n\n  if (typeof err.message === \"string\" && err.message.includes(moduleId)) {\n    return true;\n  }\n\n  return false;\n}\n","import type { SoundEngine, SoundName } from \"../core/types.js\";\nimport { getSoundKey, isBuiltInSound } from \"../core/soundRegistry.js\";\nimport { requireOptional } from \"../core/env.js\";\n\n// React Native bare sound engine using react-native-sound\n// Users must install react-native-sound as a peer dependency\n\nlet globalVolume = 0.7;\nlet currentSound: any = null;\n\nexport const bareSoundEngine: SoundEngine = {\n  async play(sound: SoundName | string, volume?: number): Promise<void> {\n    const vol = volume ?? globalVolume;\n    const key = getSoundKey(sound);\n\n    // Stop any currently playing sound\n    this.stop();\n\n    const Sound = requireOptional(\"react-native-sound\", () => require(\"react-native-sound\"));\n    if (!Sound) {\n      return;\n    }\n\n    try {\n      const SoundModule = typeof Sound === \"object\" && Sound !== null && \"default\" in Sound ? (Sound as any).default : Sound;\n      if (typeof SoundModule?.setCategory === \"function\") {\n        SoundModule.setCategory(\"Playback\");\n      }\n\n      return new Promise((resolve, reject) => {\n        // For built-in sounds, load from the package's sounds directory\n        const s = new SoundModule(key, SoundModule.MAIN_BUNDLE, (error: any) => {\n          if (error) {\n            // Silently fail — sound is optional\n            resolve();\n            return;\n          }\n          currentSound = s;\n          s.setVolume(vol);\n          s.play((success: boolean) => {\n            currentSound = null;\n            s.release();\n            resolve();\n          });\n        });\n      });\n    } catch {\n      // react-native-sound failed — silently skip\n      return;\n    }\n  },\n\n  stop(): void {\n    if (currentSound) {\n      currentSound.stop();\n      currentSound.release();\n      currentSound = null;\n    }\n  },\n\n  setVolume(volume: number): void {\n    globalVolume = Math.max(0, Math.min(1, volume));\n  },\n};\n","import type { SoundEngine, SoundName } from \"../core/types.js\";\nimport { getSoundKey, isBuiltInSound } from \"../core/soundRegistry.js\";\nimport { requireOptional } from \"../core/env.js\";\n\n// Expo sound engine using expo-av\n// Users must install expo-av as a peer dependency\n\nlet globalVolume = 0.7;\nlet currentSound: any = null;\n\nexport const expoSoundEngine: SoundEngine = {\n  async play(sound: SoundName | string, volume?: number): Promise<void> {\n    const vol = volume ?? globalVolume;\n    const key = getSoundKey(sound);\n\n    // Stop any currently playing sound\n    this.stop();\n\n    const expoAV = requireOptional(\"expo-av\", () => require(\"expo-av\"));\n    if (!expoAV) {\n      return;\n    }\n\n    try {\n      const { Audio } = expoAV;\n      await Audio.setAudioModeAsync({\n        allowsRecordingIOS: false,\n        playsInSilentModeIOS: true,\n        shouldDuckAndroid: true,\n      });\n\n      // Load the sound file\n      const source =\n        key.startsWith(\"http\") || key.startsWith(\"file\")\n          ? { uri: key }\n          : { uri: key };\n\n      const { sound: playbackObject } = await Audio.Sound.createAsync(source, {\n        shouldPlay: true,\n        volume: vol,\n      });\n\n      currentSound = playbackObject;\n\n      playbackObject.setOnPlaybackStatusUpdate((status: any) => {\n        if (status.didJustFinish) {\n          playbackObject.unloadAsync().catch(() => {});\n          currentSound = null;\n        }\n      });\n    } catch {\n      // expo-av not installed or sound failed — silently skip\n      return;\n    }\n  },\n\n  stop(): void {\n    if (currentSound) {\n      currentSound.stopAsync().catch(() => {});\n      currentSound.unloadAsync().catch(() => {});\n      currentSound = null;\n    }\n  },\n\n  setVolume(volume: number): void {\n    globalVolume = Math.max(0, Math.min(1, volume));\n    if (currentSound) {\n      currentSound.setVolumeAsync(globalVolume).catch(() => {});\n    }\n  },\n\n  async preload(sounds: string[]): Promise<void> {\n    // Preloading strategy: no-op for now\n    // Could be extended to cache Audio.Sound objects\n  },\n};\n","import type { NotifyConfig, ThemeName } from \"./types.js\";\n\nconst DEFAULT_CONFIG: NotifyConfig = {\n  volume: 0.7,\n  enabled: true,\n  duration: 3000,\n  position: \"top-right\",\n  soundEnabled: true,\n  queue: false,\n  maxVisible: 5,\n  theme: \"minimal\",\n};\n\nlet currentConfig: NotifyConfig = { ...DEFAULT_CONFIG };\n\nexport function getConfig(): NotifyConfig {\n  return { ...currentConfig };\n}\n\nexport function setConfig(partial: Partial<NotifyConfig>): void {\n  currentConfig = { ...currentConfig, ...partial };\n}\n\nexport function setTheme(theme: ThemeName): void {\n  currentConfig.theme = theme;\n}\n\nexport function resetConfig(): void {\n  currentConfig = { ...DEFAULT_CONFIG };\n}\n","import type {\n  Notification,\n  NotifyPayload,\n  NotifyEvent,\n  NotifyEventListener,\n  NotifyEventType,\n  SoundEngine,\n  CustomRenderer,\n} from \"./types.js\";\nimport { getConfig } from \"./config.js\";\n\n// ─── ID Generator ──────────────────────────────────────────────\nlet idCounter = 0;\nfunction generateId(): string {\n  return `notify-${Date.now()}-${++idCounter}`;\n}\n\n// ─── State ─────────────────────────────────────────────────────\nlet notifications: Notification[] = [];\nlet soundEngine: SoundEngine | null = null;\nlet customRenderer: CustomRenderer | null = null;\nconst listeners: Set<NotifyEventListener> = new Set();\n\n// ─── Event System ──────────────────────────────────────────────\nexport function subscribe(listener: NotifyEventListener): () => void {\n  listeners.add(listener);\n  return () => listeners.delete(listener);\n}\n\nfunction emit(event: NotifyEvent): void {\n  listeners.forEach((fn) => fn(event));\n}\n\n// ─── Sound Engine ──────────────────────────────────────────────\nexport function setSoundEngine(engine: SoundEngine): void {\n  soundEngine = engine;\n}\n\nexport function getSoundEngine(): SoundEngine | null {\n  return soundEngine;\n}\n\n// ─── Custom Renderer ──────────────────────────────────────────\nexport function setRenderer(renderer: CustomRenderer | null): void {\n  customRenderer = renderer;\n}\n\nexport function getRenderer(): CustomRenderer | null {\n  return customRenderer;\n}\n\n// ─── Notifications State ───────────────────────────────────────\nexport function getNotifications(): Notification[] {\n  return [...notifications];\n}\n\n// ─── Show Notification ─────────────────────────────────────────\nexport function show(payload: NotifyPayload): string {\n  const config = getConfig();\n\n  if (!config.enabled) return \"\";\n\n  const notification: Notification = {\n    id: generateId(),\n    title: payload.title ?? \"\",\n    message: payload.message,\n    type: payload.type ?? \"info\",\n    variant: payload.variant ?? \"toast\",\n    sound: payload.sound ?? \"\",\n    volume: payload.volume ?? config.volume,\n    duration: payload.duration ?? config.duration,\n    position: payload.position ?? config.position,\n    dismissible: payload.dismissible ?? true,\n    vibration: payload.vibration ?? false,\n    createdAt: Date.now(),\n    actions: payload.actions ?? [],\n  };\n\n  // Handle queue vs replace behavior\n  if (config.queue) {\n    notifications.push(notification);\n  } else {\n    // Cap at maxVisible\n    if (notifications.length >= config.maxVisible) {\n      notifications.shift();\n    }\n    notifications.push(notification);\n  }\n\n  // Play sound\n  if (config.soundEnabled && notification.sound && soundEngine) {\n    soundEngine.play(notification.sound, notification.volume).catch(() => {\n      // Silently fail on sound errors\n    });\n  }\n\n  // Emit event\n  emit({ type: \"show\", notification });\n\n  // Auto-dismiss for toasts and alerts\n  if (notification.variant !== \"modal\" && notification.duration > 0) {\n    setTimeout(() => {\n      dismiss(notification.id);\n    }, notification.duration);\n  }\n\n  return notification.id;\n}\n\n// ─── Dismiss ───────────────────────────────────────────────────\nexport function dismiss(id: string): void {\n  const notification = notifications.find((n) => n.id === id);\n  if (!notification) return;\n\n  notifications = notifications.filter((n) => n.id !== id);\n  emit({ type: \"dismiss\", notification });\n}\n\nexport function dismissAll(): void {\n  notifications = [];\n  emit({ type: \"dismiss-all\" });\n}\n","import type { NotifyPayload } from \"../core/types.js\";\nimport { show, dismiss, dismissAll, setSoundEngine } from \"../core/manager.js\";\nimport { setConfig, setTheme, getConfig, resetConfig } from \"../core/config.js\";\nimport { registerSound } from \"../core/soundRegistry.js\";\nimport { requireOptional } from \"../core/env.js\";\n\nfunction loadBareSoundEngine() {\n  const mod = requireOptional(\"./sound.bare.js\", () => require(\"./sound.bare.js\"));\n  if (mod && typeof mod === \"object\" && \"bareSoundEngine\" in mod) {\n    return (mod as { bareSoundEngine: any }).bareSoundEngine;\n  }\n  return null;\n}\n\nfunction loadExpoSoundEngine() {\n  const mod = requireOptional(\"./sound.expo.js\", () => require(\"./sound.expo.js\"));\n  if (mod && typeof mod === \"object\" && \"expoSoundEngine\" in mod) {\n    return (mod as { expoSoundEngine: any }).expoSoundEngine;\n  }\n  return null;\n}\n\nexport function autoDetectSoundEngine(): void {\n  const expoModule = requireOptional(\"expo-av\", () => require(\"expo-av\"));\n  if (expoModule) {\n    const expoEngine = loadExpoSoundEngine();\n    if (expoEngine) {\n      setSoundEngine(expoEngine);\n      return;\n    }\n  }\n\n  const bareModule = requireOptional(\"react-native-sound\", () => require(\"react-native-sound\"));\n  if (bareModule) {\n    const bareEngine = loadBareSoundEngine();\n    if (bareEngine) {\n      setSoundEngine(bareEngine);\n      return;\n    }\n  }\n}\n\nautoDetectSoundEngine();\n\nexport function notify(payload: NotifyPayload): string {\n  const { delay, ...rest } = payload;\n\n  if (delay && delay > 0) {\n    let notificationId = \"\";\n    setTimeout(() => {\n      notificationId = show(rest);\n    }, delay);\n    return notificationId;\n  }\n\n  return show(rest);\n}\n\nexport { dismiss, dismissAll, setConfig, setTheme, getConfig, resetConfig, registerSound };\nexport { setSoundEngine } from \"../core/manager.js\";\n","import { useState, useEffect, useCallback } from \"react\";\nimport type { Notification, NotifyPayload } from \"../core/types.js\";\nimport { subscribe, getNotifications } from \"../core/manager.js\";\nimport { notify } from \"./notify.js\";\n\nexport function useNotify() {\n  const [notifications, setNotifications] = useState<Notification[]>([]);\n\n  useEffect(() => {\n    setNotifications(getNotifications());\n\n    const unsubscribe = subscribe(() => {\n      setNotifications(getNotifications());\n    });\n\n    return unsubscribe;\n  }, []);\n\n  const send = useCallback((payload: NotifyPayload) => {\n    return notify(payload);\n  }, []);\n\n  return { notifications, notify: send };\n}\n","import React, { useEffect, useState, useCallback, useRef } from \"react\";\nimport {\n  View,\n  Text,\n  TouchableOpacity,\n  Modal,\n  Animated,\n  Dimensions,\n  StyleSheet,\n  Platform,\n  Vibration,\n} from \"react-native\";\nimport type { Notification, ThemeName, CustomRenderer } from \"../core/types.js\";\nimport { subscribe, getNotifications, dismiss, getRenderer } from \"../core/manager.js\";\nimport { getConfig } from \"../core/config.js\";\n\nconst { width: SCREEN_WIDTH } = Dimensions.get(\"window\");\n\n// ─── Theme Styles ──────────────────────────────────────────────\nconst THEME_CONFIGS: Record<ThemeName, { borderRadius: number; fontFamily: string }> = {\n  minimal: { borderRadius: 8, fontFamily: Platform.OS === \"ios\" ? \"System\" : \"Roboto\" },\n  soft: { borderRadius: 16, fontFamily: Platform.OS === \"ios\" ? \"System\" : \"Roboto\" },\n  sharp: { borderRadius: 0, fontFamily: Platform.OS === \"ios\" ? \"Courier\" : \"monospace\" },\n};\n\nconst TYPE_COLORS: Record<string, { bg: string; text: string; accent: string }> = {\n  success: { bg: \"#f0fdf4\", text: \"#166534\", accent: \"#22c55e\" },\n  error: { bg: \"#fef2f2\", text: \"#991b1b\", accent: \"#ef4444\" },\n  warning: { bg: \"#fffbeb\", text: \"#92400e\", accent: \"#f59e0b\" },\n  info: { bg: \"#eff6ff\", text: \"#1e40af\", accent: \"#3b82f6\" },\n};\n\nconst TYPE_ICONS: Record<string, string> = {\n  success: \"✓\",\n  error: \"✕\",\n  warning: \"⚠\",\n  info: \"ℹ\",\n};\n\n// ─── Toast Component ───────────────────────────────────────────\nfunction RNToast({\n  notification,\n  theme,\n  onDismiss,\n}: {\n  notification: Notification;\n  theme: ThemeName;\n  onDismiss: () => void;\n}) {\n  const slideAnim = useRef(new Animated.Value(-100)).current;\n  const opacityAnim = useRef(new Animated.Value(0)).current;\n  const themeConfig = THEME_CONFIGS[theme];\n  const colors = TYPE_COLORS[notification.type] || TYPE_COLORS.info;\n  const icon = TYPE_ICONS[notification.type] || TYPE_ICONS.info;\n\n  useEffect(() => {\n    // Handle vibration\n    if (notification.vibration) {\n      Vibration.vibrate(200);\n    }\n\n    Animated.parallel([\n      Animated.spring(slideAnim, {\n        toValue: 0,\n        useNativeDriver: true,\n        tension: 80,\n        friction: 10,\n      }),\n      Animated.timing(opacityAnim, {\n        toValue: 1,\n        duration: 200,\n        useNativeDriver: true,\n      }),\n    ]).start();\n  }, []);\n\n  const handleDismiss = useCallback(() => {\n    Animated.parallel([\n      Animated.timing(slideAnim, {\n        toValue: -100,\n        duration: 200,\n        useNativeDriver: true,\n      }),\n      Animated.timing(opacityAnim, {\n        toValue: 0,\n        duration: 200,\n        useNativeDriver: true,\n      }),\n    ]).start(() => onDismiss());\n  }, [onDismiss]);\n\n  return (\n    <Animated.View\n      style={{\n        transform: [{ translateY: slideAnim }],\n        opacity: opacityAnim,\n        marginHorizontal: 16,\n        marginVertical: 4,\n        padding: 14,\n        backgroundColor: colors.bg,\n        borderRadius: themeConfig.borderRadius,\n        flexDirection: \"row\",\n        alignItems: \"flex-start\",\n        gap: 10,\n        ...Platform.select({\n          ios: { shadowColor: \"#000\", shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.1, shadowRadius: 8 },\n          android: { elevation: 4 },\n        }),\n      }}\n    >\n      {/* Icon */}\n      <View\n        style={{\n          width: 28,\n          height: 28,\n          borderRadius: 14,\n          backgroundColor: colors.accent,\n          alignItems: \"center\",\n          justifyContent: \"center\",\n        }}\n      >\n        <Text style={{ color: \"#fff\", fontSize: 14, fontWeight: \"bold\" }}>{icon}</Text>\n      </View>\n\n      {/* Content */}\n      <View style={{ flex: 1 }}>\n        {notification.title ? (\n          <Text\n            style={{\n              fontWeight: \"600\",\n              fontSize: 15,\n              color: colors.text,\n              fontFamily: themeConfig.fontFamily,\n              marginBottom: 2,\n            }}\n          >\n            {notification.title}\n          </Text>\n        ) : null}\n        <Text\n          style={{\n            fontSize: 13,\n            color: colors.text,\n            opacity: 0.85,\n            fontFamily: themeConfig.fontFamily,\n          }}\n        >\n          {notification.message}\n        </Text>\n      </View>\n\n      {/* Close */}\n      {notification.dismissible && (\n        <TouchableOpacity onPress={handleDismiss} hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}>\n          <Text style={{ fontSize: 18, color: colors.text, opacity: 0.4 }}>×</Text>\n        </TouchableOpacity>\n      )}\n    </Animated.View>\n  );\n}\n\n// ─── Modal Component ───────────────────────────────────────────\nfunction RNModal({\n  notification,\n  theme,\n  onDismiss,\n}: {\n  notification: Notification;\n  theme: ThemeName;\n  onDismiss: () => void;\n}) {\n  const themeConfig = THEME_CONFIGS[theme];\n  const colors = TYPE_COLORS[notification.type] || TYPE_COLORS.info;\n  const icon = TYPE_ICONS[notification.type] || TYPE_ICONS.info;\n\n  return (\n    <Modal transparent animationType=\"fade\" visible>\n      <View\n        style={{\n          flex: 1,\n          backgroundColor: \"rgba(0,0,0,0.5)\",\n          justifyContent: \"center\",\n          alignItems: \"center\",\n          padding: 24,\n        }}\n      >\n        <View\n          style={{\n            backgroundColor: \"#fff\",\n            borderRadius: themeConfig.borderRadius,\n            padding: 24,\n            width: \"100%\",\n            maxWidth: 360,\n            alignItems: \"center\",\n          }}\n        >\n          {/* Icon */}\n          <View\n            style={{\n              width: 52,\n              height: 52,\n              borderRadius: 26,\n              backgroundColor: colors.accent,\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              marginBottom: 16,\n            }}\n          >\n            <Text style={{ color: \"#fff\", fontSize: 22, fontWeight: \"bold\" }}>{icon}</Text>\n          </View>\n\n          {notification.title ? (\n            <Text\n              style={{\n                fontWeight: \"600\",\n                fontSize: 18,\n                color: colors.text,\n                textAlign: \"center\",\n                fontFamily: themeConfig.fontFamily,\n                marginBottom: 8,\n              }}\n            >\n              {notification.title}\n            </Text>\n          ) : null}\n\n          <Text\n            style={{\n              fontSize: 14,\n              color: \"#555\",\n              textAlign: \"center\",\n              fontFamily: themeConfig.fontFamily,\n              marginBottom: 20,\n              lineHeight: 20,\n            }}\n          >\n            {notification.message}\n          </Text>\n\n          {/* Actions */}\n          <View style={{ flexDirection: \"row\", gap: 8 }}>\n            {notification.actions.length > 0 ? (\n              notification.actions.map((action, i) => (\n                <TouchableOpacity\n                  key={i}\n                  onPress={() => {\n                    action.onPress();\n                    onDismiss();\n                  }}\n                  style={{\n                    paddingVertical: 10,\n                    paddingHorizontal: 20,\n                    borderRadius: themeConfig.borderRadius,\n                    backgroundColor:\n                      action.style === \"destructive\"\n                        ? \"#ef4444\"\n                        : action.style === \"cancel\"\n                        ? \"transparent\"\n                        : colors.accent,\n                    borderWidth: action.style === \"cancel\" ? 1 : 0,\n                    borderColor: \"#ddd\",\n                  }}\n                >\n                  <Text\n                    style={{\n                      color: action.style === \"cancel\" ? \"#555\" : \"#fff\",\n                      fontWeight: \"500\",\n                      fontSize: 14,\n                      fontFamily: themeConfig.fontFamily,\n                    }}\n                  >\n                    {action.label}\n                  </Text>\n                </TouchableOpacity>\n              ))\n            ) : (\n              <TouchableOpacity\n                onPress={onDismiss}\n                style={{\n                  paddingVertical: 10,\n                  paddingHorizontal: 28,\n                  borderRadius: themeConfig.borderRadius,\n                  backgroundColor: colors.accent,\n                }}\n              >\n                <Text style={{ color: \"#fff\", fontWeight: \"500\", fontSize: 14, fontFamily: themeConfig.fontFamily }}>\n                  OK\n                </Text>\n              </TouchableOpacity>\n            )}\n          </View>\n        </View>\n      </View>\n    </Modal>\n  );\n}\n\n// ─── Main Renderer ─────────────────────────────────────────────\nexport function NotifyRenderer() {\n  const [notifications, setNotifications] = useState<Notification[]>([]);\n  const config = getConfig();\n  const customRenderer = getRenderer();\n\n  useEffect(() => {\n    setNotifications(getNotifications());\n    const unsubscribe = subscribe(() => {\n      setNotifications(getNotifications());\n    });\n    return unsubscribe;\n  }, []);\n\n  if (notifications.length === 0) return null;\n\n  const toasts = notifications.filter((n) => n.variant === \"toast\" || n.variant === \"alert\");\n  const modals = notifications.filter((n) => n.variant === \"modal\");\n\n  const isTop = config.position.includes(\"top\") || config.position === \"center\";\n\n  return (\n    <>\n      {/* Toast container */}\n      {toasts.length > 0 && (\n        <View\n          style={{\n            position: \"absolute\",\n            top: isTop ? Platform.OS === \"ios\" ? 50 : 30 : undefined,\n            bottom: !isTop ? 30 : undefined,\n            left: 0,\n            right: 0,\n            zIndex: 99999,\n          }}\n          pointerEvents=\"box-none\"\n        >\n          {toasts.map((n) =>\n            customRenderer ? (\n              <View key={n.id}>{customRenderer(n, () => dismiss(n.id))}</View>\n            ) : (\n              <RNToast\n                key={n.id}\n                notification={n}\n                theme={config.theme}\n                onDismiss={() => dismiss(n.id)}\n              />\n            )\n          )}\n        </View>\n      )}\n\n      {/* Modal */}\n      {modals.length > 0 &&\n        (customRenderer ? (\n          customRenderer(modals[0], () => dismiss(modals[0].id))\n        ) : (\n          <RNModal\n            notification={modals[0]}\n            theme={config.theme}\n            onDismiss={() => dismiss(modals[0].id)}\n          />\n        ))}\n    </>\n  );\n}\n"],"mappings":"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","names":["globalVolume","currentSound","notifications","useEffect","useState","useCallback","useEffect","useCallback","notifications","useState","customRenderer"]}