UNPKG

one

Version:

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

96 lines (93 loc) • 2.72 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var syncStore_exports = {}; __export(syncStore_exports, { SYNC_STATE_BRAND: () => SYNC_STATE_BRAND, SYNC_STATE_ID_KEY: () => SYNC_STATE_ID_KEY, createSyncState: () => createSyncState, getSyncStateId: () => getSyncStateId, isSyncState: () => isSyncState }); module.exports = __toCommonJS(syncStore_exports); var import_syncNative = require("./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[SYNC_STATE_BRAND] === true && typeof obj[SYNC_STATE_ID_KEY] === "number" && obj[SYNC_STATE_ID_KEY] !== 0; } function getSyncStateId(state) { if (!state) return void 0; return state[SYNC_STATE_ID_KEY]; } function createSyncState(initial) { var host = (0, import_syncNative.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; } //# sourceMappingURL=syncStore.native.js.map