{"ast":null,"code":"\"use strict\";\n\nimport * as React from 'react';\nimport useLatestCallback from 'use-latest-callback';\nimport { deepFreeze } from \"./deepFreeze.js\";\nconst createStore = getInitialState => {\n  const listeners = [];\n  let initialized = false;\n  let state;\n  const getState = () => {\n    if (initialized) {\n      return state;\n    }\n    initialized = true;\n    state = deepFreeze(getInitialState());\n    return state;\n  };\n  let isBatching = false;\n  let didUpdate = false;\n  const setState = newState => {\n    state = deepFreeze(newState);\n    didUpdate = true;\n    if (!isBatching) {\n      listeners.forEach(listener => listener());\n    }\n  };\n  const subscribe = callback => {\n    listeners.push(callback);\n    return () => {\n      const index = listeners.indexOf(callback);\n      if (index > -1) {\n        listeners.splice(index, 1);\n      }\n    };\n  };\n  const batchUpdates = callback => {\n    isBatching = true;\n    callback();\n    isBatching = false;\n    if (didUpdate) {\n      didUpdate = false;\n      listeners.forEach(listener => listener());\n    }\n  };\n  return {\n    getState,\n    setState,\n    batchUpdates,\n    subscribe\n  };\n};\nexport function useSyncState(getInitialState) {\n  const store = React.useRef(createStore(getInitialState)).current;\n  const state = React.useSyncExternalStore(store.subscribe, store.getState, store.getState);\n  React.useDebugValue(state);\n  const pendingUpdatesRef = React.useRef([]);\n  const scheduleUpdate = useLatestCallback(callback => {\n    pendingUpdatesRef.current.push(callback);\n  });\n  const flushUpdates = useLatestCallback(() => {\n    const pendingUpdates = pendingUpdatesRef.current;\n    pendingUpdatesRef.current = [];\n    if (pendingUpdates.length !== 0) {\n      store.batchUpdates(() => {\n        for (const update of pendingUpdates) {\n          update();\n        }\n      });\n    }\n  });\n  return {\n    state,\n    getState: store.getState,\n    setState: store.setState,\n    scheduleUpdate,\n    flushUpdates\n  };\n}","map":{"version":3,"names":["React","useLatestCallback","deepFreeze","createStore","getInitialState","listeners","initialized","state","getState","isBatching","didUpdate","setState","newState","forEach","listener","subscribe","callback","push","index","indexOf","splice","batchUpdates","useSyncState","store","useRef","current","useSyncExternalStore","useDebugValue","pendingUpdatesRef","scheduleUpdate","flushUpdates","pendingUpdates","length","update"],"sources":["/Users/pmouli/Documents/GitHub.nosync/boots-strapper/mobile/node_modules/@react-navigation/core/src/useSyncState.tsx"],"sourcesContent":["import * as React from 'react';\nimport useLatestCallback from 'use-latest-callback';\n\nimport { deepFreeze } from './deepFreeze';\n\nconst createStore = <T,>(getInitialState: () => T) => {\n  const listeners: (() => void)[] = [];\n\n  let initialized = false;\n  let state: T;\n\n  const getState = () => {\n    if (initialized) {\n      return state;\n    }\n\n    initialized = true;\n    state = deepFreeze(getInitialState());\n\n    return state;\n  };\n\n  let isBatching = false;\n  let didUpdate = false;\n\n  const setState = (newState: T) => {\n    state = deepFreeze(newState);\n    didUpdate = true;\n\n    if (!isBatching) {\n      listeners.forEach((listener) => listener());\n    }\n  };\n\n  const subscribe = (callback: () => void) => {\n    listeners.push(callback);\n\n    return () => {\n      const index = listeners.indexOf(callback);\n\n      if (index > -1) {\n        listeners.splice(index, 1);\n      }\n    };\n  };\n\n  const batchUpdates = (callback: () => void) => {\n    isBatching = true;\n    callback();\n    isBatching = false;\n\n    if (didUpdate) {\n      didUpdate = false;\n      listeners.forEach((listener) => listener());\n    }\n  };\n\n  return {\n    getState,\n    setState,\n    batchUpdates,\n    subscribe,\n  };\n};\n\nexport function useSyncState<T>(getInitialState: () => T) {\n  const store = React.useRef(createStore(getInitialState)).current;\n\n  const state = React.useSyncExternalStore(\n    store.subscribe,\n    store.getState,\n    store.getState\n  );\n\n  React.useDebugValue(state);\n\n  const pendingUpdatesRef = React.useRef<(() => void)[]>([]);\n\n  const scheduleUpdate = useLatestCallback((callback: () => void) => {\n    pendingUpdatesRef.current.push(callback);\n  });\n\n  const flushUpdates = useLatestCallback(() => {\n    const pendingUpdates = pendingUpdatesRef.current;\n\n    pendingUpdatesRef.current = [];\n\n    if (pendingUpdates.length !== 0) {\n      store.batchUpdates(() => {\n        // Flush all the pending updates\n        for (const update of pendingUpdates) {\n          update();\n        }\n      });\n    }\n  });\n\n  return {\n    state,\n    getState: store.getState,\n    setState: store.setState,\n    scheduleUpdate,\n    flushUpdates,\n  } as const;\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{"hasCjsExports":false},"sourceType":"module","externalDependencies":[]}