From 72efd765ebcc00d4fb51a16266a3d669c0a4cab0 Mon Sep 17 00:00:00 2001 From: Forest Hughes <129426794+fchughes@users.noreply.github.com> Date: Fri, 1 Mar 2024 13:50:22 -0800 Subject: [PATCH] Update array.ts Update Array proxy "set" method to support indexed assignment. Changes were motivated by need to support binding svelte synced array stores to editable fields. --- packages/core/src/array.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/core/src/array.ts b/packages/core/src/array.ts index 14b820f..9859342 100644 --- a/packages/core/src/array.ts +++ b/packages/core/src/array.ts @@ -172,8 +172,19 @@ export function crdtArray(initializer: T[], arr = new Y.Array()) { if (typeof p !== "number") { throw new Error(); } - // TODO map.set(p, smartValue(value)); - throw new Error("array assignment is not implemented / supported"); + + if (arr.doc) { + arr.doc.transact(() => { + arr.delete(p, 1); + arr.insert(p, [value]); + }); + } else { + arr.delete(p, 1); + arr.insert(p, [value]); + } + return true; + // // TODO map.set(p, smartValue(value)); + // throw new Error("array assignment is not implemented / supported"); }, get: (target, pArg, receiver) => { const p = propertyToNumber(pArg);