{"ast":null,"code":"\"use strict\";\n\nimport * as React from 'react';\nimport useLatestCallback from 'use-latest-callback';\nimport { deepFreeze } from \"./deepFreeze.js\";\nvar createStore = function createStore(getInitialState) {\n  var listeners = [];\n  var initialized = false;\n  var state;\n  var getState = function getState() {\n    if (initialized) {\n      return state;\n    }\n    initialized = true;\n    state = deepFreeze(getInitialState());\n    return state;\n  };\n  var isBatching = false;\n  var didUpdate = false;\n  var setState = function setState(newState) {\n    state = deepFreeze(newState);\n    didUpdate = true;\n    if (!isBatching) {\n      listeners.forEach(function (listener) {\n        return listener();\n      });\n    }\n  };\n  var subscribe = function subscribe(callback) {\n    listeners.push(callback);\n    return function () {\n      var index = listeners.indexOf(callback);\n      if (index > -1) {\n        listeners.splice(index, 1);\n      }\n    };\n  };\n  var batchUpdates = function batchUpdates(callback) {\n    isBatching = true;\n    callback();\n    isBatching = false;\n    if (didUpdate) {\n      didUpdate = false;\n      listeners.forEach(function (listener) {\n        return listener();\n      });\n    }\n  };\n  return {\n    getState: getState,\n    setState: setState,\n    batchUpdates: batchUpdates,\n    subscribe: subscribe\n  };\n};\nexport function useSyncState(getInitialState) {\n  var store = React.useRef(createStore(getInitialState)).current;\n  var state = React.useSyncExternalStore(store.subscribe, store.getState, store.getState);\n  React.useDebugValue(state);\n  var pendingUpdatesRef = React.useRef([]);\n  var scheduleUpdate = useLatestCallback(function (callback) {\n    pendingUpdatesRef.current.push(callback);\n  });\n  var flushUpdates = useLatestCallback(function () {\n    var pendingUpdates = pendingUpdatesRef.current;\n    pendingUpdatesRef.current = [];\n    if (pendingUpdates.length !== 0) {\n      store.batchUpdates(function () {\n        for (var update of pendingUpdates) {\n          update();\n        }\n      });\n    }\n  });\n  return {\n    state: state,\n    getState: store.getState,\n    setState: store.setState,\n    scheduleUpdate: scheduleUpdate,\n    flushUpdates: 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":{},"sourceType":"module","externalDependencies":[]}