UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

67 lines (64 loc) • 1.72 kB
import { getNativeSyncFactory } from "./syncNative.native.js"; var SYNC_STATE_ID_KEY = "__one_sync_state_id__"; var SYNC_STATE_BRAND = "__one_sync_state__"; function isSyncState(value) { if (value == null || typeof value !== "object") return false; var obj = value; return obj["__one_sync_state__"] === true && typeof obj["__one_sync_state_id__"] === "number" && obj["__one_sync_state_id__"] !== 0; } function getSyncStateId(state) { if (!state) return void 0; return state[SYNC_STATE_ID_KEY]; } function createSyncState(initial) { var host = getNativeSyncFactory().create(initial); var onChange = null; var listeners = /* @__PURE__ */ new Set(); var published = host.get(); var state = { get value() { return host.get(); }, set value(next) { state.set(next); }, get() { return host.get(); }, set(next) { if (!Object.is(host.get(), next)) host.set(next); if (Object.is(published, next)) return; published = next; for (var _i = 0, _iter = [...listeners]; _i < _iter.length; _i++) { var listener = _iter[_i]; listener(next); } }, get onChange() { return onChange; }, set onChange(next) { onChange = next !== null && next !== void 0 ? next : null; host.setOnChange(onChange); }, subscribe(listener) { listeners.add(listener); return function() { listeners.delete(listener); }; }, release() { listeners.clear(); onChange = null; host.release(); }, getSnapshot() { return host.get(); }, [SYNC_STATE_BRAND]: true, [SYNC_STATE_ID_KEY]: host.id }; return state; } export { SYNC_STATE_BRAND, SYNC_STATE_ID_KEY, createSyncState, getSyncStateId, isSyncState }; //# sourceMappingURL=syncStore.native.js.map