diff --git a/src/config/enableSvelteTracking.ts b/src/config/enableSvelteTracking.ts new file mode 100644 index 00000000..79934507 --- /dev/null +++ b/src/config/enableSvelteTracking.ts @@ -0,0 +1,22 @@ +import { internal } from '@legendapp/state'; +import { configureLegendState } from '@legendapp/state/config'; +import { SvelteMap } from 'svelte/reactivity'; + +export function enableSvelteTracking() { + const { get, set } = internal; + const map = new SvelteMap(); + let version = 0; + + configureLegendState({ + observableFunctions: { + get: (node, options) => { + map.get(node); + return get(node, options); + }, + set: (node, newValue) => { + map.set(node, version++); + set(node, newValue); + }, + }, + }); +}