{
  "version": 3,
  "sources": ["../src/main.ts", "../src/lib/use-context.ts", "../src/lib/logger.ts", "../src/lib/use-signal.ts", "../src/lib/use-trigger.ts"],
  "sourcesContent": ["import { packageTracer } from '@alwatr/package-tracer';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\nexport { useContext } from './lib/use-context.js';\nexport { useSignal } from './lib/use-signal.js';\nexport { useTrigger } from './lib/use-trigger.js';\n", "import { useSyncExternalStore, useCallback } from 'react';\n\nimport { logger } from './logger.js';\n\nimport type { AlwatrContext, SubscribeOptions } from '@alwatr/flux';\n\n/**\n * React hook for subscribing to an Alwatr context and managing its state.\n *\n *\n * @param contextInstance - The Alwatr context instance to subscribe to\n * @param defaultValue - Default value to use when context is undefined\n * @param options - Optional subscription options\n *\n * @returns The current context state\n *\n * @example\n * ```tsx\n * // Create a context\n * const userContext = new AlwatrContext<User>('user');\n *\n * // Use the context in a component\n * function UserProfile() {\n *   const defaultUser = { name: 'Guest', id: 0 };\n *   const user = useContext(userContext, defaultUser);\n *\n *   return (\n *     <div>\n *       <h1>Welcome {user.name}!</h1>\n *     </div>\n *   );\n * }\n *\n * // With subscription options\n * function UserWithOptions() {\n *   const user = useContext(\n *     userContext,\n *     defaultUser,\n *     { once: true } // Subscription options\n *   );\n *\n *   return <div>{user.name}</div>;\n * }\n * ```\n */\nexport function useContext<T extends DictionaryOpt>(contextInstance: AlwatrContext<T>, defaultValue: T, options?: SubscribeOptions): T {\n  logger.logMethodArgs?.('useContext', { contextInstance, defaultValue });\n\n  const subscribe = useCallback(\n    (onStoreChange: () => void) => {\n      const { unsubscribe } = contextInstance.subscribe(onStoreChange, options);\n      return unsubscribe;\n    },\n    [ contextInstance, options ],\n  );\n\n  const getSnapshot = useCallback(() => contextInstance.getValue() ?? defaultValue, [ contextInstance, defaultValue ]);\n\n  const getServerSnapshot = useCallback(() => defaultValue, [ defaultValue ]);\n\n  return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n", "import { createLogger } from '@alwatr/logger';\nimport { platformInfo } from '@alwatr/platform-info';\n\nexport const logger = createLogger('flux-hook');\n\nif (platformInfo.isNode) {\n  logger.logMethod = undefined;\n  logger.logMethodArgs = undefined;\n  logger.logFileModule = undefined;\n  logger.logProperty = undefined;\n  logger.logOther = undefined;\n  logger.incident = undefined;\n  logger.logStep = undefined;\n  logger.logMethodFull = undefined;\n  logger.time = undefined;\n  logger.timeEnd = undefined;\n}\n", "import { useSyncExternalStore, useCallback, useRef } from 'react';\n\nimport { logger } from './logger.js';\n\nimport type { AlwatrSignal, SubscribeOptions } from '@alwatr/flux';\n\n/**\n * React hook for subscribing to an Alwatr signal and managing its state.\n *\n *\n * @param signalInstance - The Alwatr signal instance to subscribe to\n * @param defaultValue - Default value to use when signal hasn't emitted yet\n * @param options - Optional subscription options\n *\n * @returns The current signal state\n *\n * @example\n * ```tsx\n * // Create a signal\n * const notificationSignal = new AlwatrSignal<Notification>('notification');\n *\n * // Basic usage\n * function NotificationBell() {\n *   const defaultNotification = { message: '', count: 0 };\n *   const notification = useSignal(notificationSignal, defaultNotification);\n *\n *   return (\n *     <div>\n *       {notification.count > 0 && (\n *         <span>{notification.message}</span>\n *       )}\n *     </div>\n *   );\n * }\n *\n * // Advanced usage with options\n * function ConditionalNotification() {\n *   const notification = useSignal(\n *     notificationSignal,\n *     defaultNotification,\n *     { once: true } // Only receive first notification\n *   );\n *\n *   return <div>{notification.message}</div>;\n * }\n * ```\n */\nexport function useSignal<T extends DictionaryOpt>(signalInstance: AlwatrSignal<T>, defaultValue: T, options?: SubscribeOptions): T {\n  logger.logMethodArgs?.('useSignal', { signalInstance, defaultValue });\n\n  const latestValueRef = useRef<T>(defaultValue);\n\n  const subscribe = useCallback(\n    (onStoreChange: () => void) => {\n      const { unsubscribe } = signalInstance.subscribe((newValue: T) => {\n        latestValueRef.current = newValue;\n        onStoreChange();\n      }, options);\n      return unsubscribe;\n    },\n    [ signalInstance, options ],\n  );\n\n  const getSnapshot = useCallback(() => latestValueRef.current, []);\n\n  const getServerSnapshot = useCallback(() => defaultValue, [ defaultValue ]);\n\n  return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n", "import { useEffect } from 'react';\n\nimport { logger } from './logger.js';\n\nimport type { AlwatrTrigger, SubscribeOptions } from '@alwatr/flux';\n\n/**\n * React hook for subscribing to an Alwatr trigger and executing callbacks.\n *\n * @param triggerInstance - The Alwatr trigger instance to subscribe to\n * @param callback - Function to execute when trigger fires\n * @param options - Optional subscription options\n *\n * @example\n * ```tsx\n * // Create a trigger\n * const refreshTrigger = new AlwatrTrigger('refresh');\n *\n * // Basic usage\n * function DataList() {\n *   const [data, setData] = useState([]);\n *\n *     useTrigger(refreshTrigger, useCallback(() => {\n    fetchData().then(setData);\n  }, []));\n *\n *   return <div>{data.map(item => <Item key={item.id} {...item} />)}</div>;\n * }\n *\n * // With subscription options\n * function ConditionalRefresh() {\n *   useTrigger(\n *     refreshTrigger,\n *     () => console.log('Refreshed!'),\n *     { once: true } // Only trigger once\n *   );\n * }\n * ```\n */\nexport function useTrigger(triggerInstance: AlwatrTrigger, callback: () => void, options?: SubscribeOptions): void {\n  logger.logMethodArgs?.('useTrigger', { triggerInstance, callback });\n\n  useEffect(() => {\n    const { unsubscribe } = triggerInstance.subscribe(callback, options);\n\n    return unsubscribe;\n  }, [ triggerInstance, callback, options ]);\n}\n"],
  "mappings": ";;AAAA,OAAS,kBAAqB,yBCA9B,OAAS,qBAAsB,gBAAmB,QCAlD,OAAS,iBAAoB,iBAC7B,OAAS,iBAAoB,wBAEtB,IAAM,OAAS,aAAa,WAAW,EAE9C,GAAI,aAAa,OAAQ,CACvB,OAAO,UAAY,OACnB,OAAO,cAAgB,OACvB,OAAO,cAAgB,OACvB,OAAO,YAAc,OACrB,OAAO,SAAW,OAClB,OAAO,SAAW,OAClB,OAAO,QAAU,OACjB,OAAO,cAAgB,OACvB,OAAO,KAAO,OACd,OAAO,QAAU,MACnB,CD6BO,SAAS,WAAoC,gBAAmC,aAAiB,QAA+B,CACrI,OAAO,gBAAgB,aAAc,CAAE,gBAAiB,YAAa,CAAC,EAEtE,MAAM,UAAY,YACf,eAA8B,CAC7B,KAAM,CAAE,WAAY,EAAI,gBAAgB,UAAU,cAAe,OAAO,EACxE,OAAO,WACT,EACA,CAAE,gBAAiB,OAAQ,CAC7B,EAEA,MAAM,YAAc,YAAY,IAAM,gBAAgB,SAAS,GAAK,aAAc,CAAE,gBAAiB,YAAa,CAAC,EAEnH,MAAM,kBAAoB,YAAY,IAAM,aAAc,CAAE,YAAa,CAAC,EAE1E,OAAO,qBAAqB,UAAW,YAAa,iBAAiB,CACvE,CE7DA,OAAS,wBAAAA,sBAAsB,eAAAC,aAAa,WAAc,QA+CnD,SAAS,UAAmC,eAAiC,aAAiB,QAA+B,CAClI,OAAO,gBAAgB,YAAa,CAAE,eAAgB,YAAa,CAAC,EAEpE,MAAM,eAAiB,OAAU,YAAY,EAE7C,MAAM,UAAYC,aACf,eAA8B,CAC7B,KAAM,CAAE,WAAY,EAAI,eAAe,UAAW,UAAgB,CAChE,eAAe,QAAU,SACzB,cAAc,CAChB,EAAG,OAAO,EACV,OAAO,WACT,EACA,CAAE,eAAgB,OAAQ,CAC5B,EAEA,MAAM,YAAcA,aAAY,IAAM,eAAe,QAAS,CAAC,CAAC,EAEhE,MAAM,kBAAoBA,aAAY,IAAM,aAAc,CAAE,YAAa,CAAC,EAE1E,OAAOC,sBAAqB,UAAW,YAAa,iBAAiB,CACvE,CCpEA,OAAS,cAAiB,QAuCnB,SAAS,WAAW,gBAAgC,SAAsB,QAAkC,CACjH,OAAO,gBAAgB,aAAc,CAAE,gBAAiB,QAAS,CAAC,EAElE,UAAU,IAAM,CACd,KAAM,CAAE,WAAY,EAAI,gBAAgB,UAAU,SAAU,OAAO,EAEnE,OAAO,WACT,EAAG,CAAE,gBAAiB,SAAU,OAAQ,CAAC,CAC3C,CJ7CA,aAAc,cAAc,IAAI,mBAAkB,OAAmB",
  "names": ["useSyncExternalStore", "useCallback", "useCallback", "useSyncExternalStore"]
}
