{"version":3,"file":"syncNativeState.js","names":[],"sources":["esm/platform/syncNativeState.js"],"sourcesContent":["import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { createSyncState, isSyncState } from \"./syncStore\";\nfunction useNativeState(initial) {\n  const ref = useRef(null);\n  if (ref.current === null) {\n    ref.current = createSyncState(initial);\n  }\n  const state = ref.current;\n  useSyncExternalStore(state.subscribe, state.getSnapshot, state.getSnapshot);\n  return state;\n}\nfunction syncHandleOf(value) {\n  return isSyncState(value) ? value : null;\n}\nfunction useSyncValue(value) {\n  const handle = syncHandleOf(value);\n  const subscribe = useCallback(\n    (notify) => handle ? handle.subscribe(notify) : () => {\n    },\n    [handle]\n  );\n  const getSnapshot = useCallback(\n    () => handle ? handle.getSnapshot() : value,\n    [handle, value]\n  );\n  return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n}\nexport {\n  syncHandleOf,\n  useNativeState,\n  useSyncValue\n};\n//# sourceMappingURL=syncNativeState.js.map\n"],"mappings":";;;;AAEA,SAAS,eAAe,SAAS;CAC/B,MAAM,MAAM,OAAO,IAAI;CACvB,IAAI,IAAI,YAAY,MAAM;EACxB,IAAI,UAAU,gBAAgB,OAAO;CACvC;CACA,MAAM,QAAQ,IAAI;CAClB,qBAAqB,MAAM,WAAW,MAAM,aAAa,MAAM,WAAW;CAC1E,OAAO;AACT;AACA,SAAS,aAAa,OAAO;CAC3B,OAAO,YAAY,KAAK,IAAI,QAAQ;AACtC;AACA,SAAS,aAAa,OAAO;CAC3B,MAAM,SAAS,aAAa,KAAK;CACjC,MAAM,YAAY,aACf,WAAW,SAAS,OAAO,UAAU,MAAM,UAAU,CACtD,GACA,CAAC,MAAM,CACT;CACA,MAAM,cAAc,kBACZ,SAAS,OAAO,YAAY,IAAI,OACtC,CAAC,QAAQ,KAAK,CAChB;CACA,OAAO,qBAAqB,WAAW,aAAa,WAAW;AACjE"}