UNPKG

one

Version:

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

1 lines • 3.34 kB
{"version":3,"file":"syncStore.js","names":[],"sources":["esm/platform/syncStore.js"],"sourcesContent":["import { getNativeSyncFactory } from \"./syncNative\";\nconst SYNC_STATE_ID_KEY = \"__one_sync_state_id__\";\nconst SYNC_STATE_BRAND = \"__one_sync_state__\";\nfunction isSyncState(value) {\n if (value == null || typeof value !== \"object\") return false;\n const obj = value;\n return obj[SYNC_STATE_BRAND] === true && typeof obj[SYNC_STATE_ID_KEY] === \"number\" && obj[SYNC_STATE_ID_KEY] !== 0;\n}\nfunction getSyncStateId(state) {\n if (!state) return void 0;\n return state[SYNC_STATE_ID_KEY];\n}\nconst PUBLISH_NATIVE = /* @__PURE__ */ Symbol(\"publishNative\");\nfunction publishNativeSyncState(state) {\n ;\n state?.[PUBLISH_NATIVE]();\n}\nfunction createSyncState(initial) {\n const host = getNativeSyncFactory().create(initial);\n let onChange = null;\n const listeners = /* @__PURE__ */ new Set();\n let published = host.get();\n const publish = (next) => {\n if (Object.is(published, next)) return;\n published = next;\n for (const listener of [...listeners]) listener(next);\n };\n const state = {\n get value() {\n return host.get();\n },\n set value(next) {\n state.set(next);\n },\n get() {\n return host.get();\n },\n set(next) {\n if (!Object.is(host.get(), next)) host.set(next);\n publish(next);\n },\n get onChange() {\n return onChange;\n },\n set onChange(next) {\n onChange = next ?? null;\n host.setOnChange(onChange);\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n release() {\n listeners.clear();\n onChange = null;\n host.release();\n },\n getSnapshot() {\n return host.get();\n },\n [SYNC_STATE_BRAND]: true,\n [SYNC_STATE_ID_KEY]: host.id,\n [PUBLISH_NATIVE]: () => publish(host.get())\n };\n return state;\n}\nexport {\n SYNC_STATE_BRAND,\n SYNC_STATE_ID_KEY,\n createSyncState,\n getSyncStateId,\n isSyncState,\n publishNativeSyncState\n};\n//# sourceMappingURL=syncStore.js.map\n"],"mappings":";;;AACA,MAAM,oBAAoB;AAC1B,MAAM,mBAAmB;AACzB,SAAS,YAAY,OAAO;CAC1B,IAAI,SAAS,QAAQ,OAAO,UAAU,UAAU,OAAO;CACvD,MAAM,MAAM;CACZ,OAAO,8BAA0B,QAAQ,OAAO,iCAA2B,YAAY,iCAA2B;AACpH;AACA,SAAS,eAAe,OAAO;CAC7B,IAAI,CAAC,OAAO,OAAO,KAAK;CACxB,OAAO,MAAM;AACf;AACA,MAAM,iBAAiC,uBAAO,eAAe;AAC7D,SAAS,uBAAuB,OAAO;CACrC;CACA,QAAQ,eAAe,CAAC;AAC1B;AACA,SAAS,gBAAgB,SAAS;CAChC,MAAM,OAAO,qBAAqB,CAAC,CAAC,OAAO,OAAO;CAClD,IAAI,WAAW;CACf,MAAM,4BAA4B,IAAI,IAAI;CAC1C,IAAI,YAAY,KAAK,IAAI;CACzB,MAAM,WAAW,SAAS;EACxB,IAAI,OAAO,GAAG,WAAW,IAAI,GAAG;EAChC,YAAY;EACZ,KAAK,MAAM,YAAY,CAAC,GAAG,SAAS,GAAG,SAAS,IAAI;CACtD;CACA,MAAM,QAAQ;EACZ,IAAI,QAAQ;GACV,OAAO,KAAK,IAAI;EAClB;EACA,IAAI,MAAM,MAAM;GACd,MAAM,IAAI,IAAI;EAChB;EACA,MAAM;GACJ,OAAO,KAAK,IAAI;EAClB;EACA,IAAI,MAAM;GACR,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI;GAC/C,QAAQ,IAAI;EACd;EACA,IAAI,WAAW;GACb,OAAO;EACT;EACA,IAAI,SAAS,MAAM;GACjB,WAAW,QAAQ;GACnB,KAAK,YAAY,QAAQ;EAC3B;EACA,UAAU,UAAU;GAClB,UAAU,IAAI,QAAQ;GACtB,aAAa;IACX,UAAU,OAAO,QAAQ;GAC3B;EACF;EACA,UAAU;GACR,UAAU,MAAM;GAChB,WAAW;GACX,KAAK,QAAQ;EACf;EACA,cAAc;GACZ,OAAO,KAAK,IAAI;EAClB;GACC,mBAAmB;GACnB,oBAAoB,KAAK;GACzB,uBAAuB,QAAQ,KAAK,IAAI,CAAC;CAC5C;CACA,OAAO;AACT"}