UNPKG

@tldraw/store

Version:

tldraw infinite canvas SDK (store).

8 lines (7 loc) 1.85 kB
{ "version": 3, "sources": ["../../src/lib/setUtils.ts"], "sourcesContent": ["import { CollectionDiff } from './Store'\n\n/**\n * Combine multiple sets into a single set containing only the common elements of all sets.\n *\n * @param sets - The sets to combine.\n */\nexport function intersectSets<T>(sets: Set<T>[]) {\n\tif (sets.length === 0) return new Set<T>()\n\tconst first = sets[0]\n\tconst rest = sets.slice(1)\n\tconst result = new Set<T>()\n\n\tfor (const val of first) {\n\t\tif (rest.every((set) => set.has(val))) {\n\t\t\tresult.add(val)\n\t\t}\n\t}\n\n\treturn result\n}\n\n/**\n * Calculates a diff between two sets.\n *\n * @param prev - The previous set\n * @param next - The next set\n */\nexport function diffSets<T>(prev: Set<T>, next: Set<T>): CollectionDiff<T> | undefined {\n\tconst result: CollectionDiff<T> = {}\n\n\tfor (const val of next) {\n\t\tif (!prev.has(val)) {\n\t\t\tresult.added ??= new Set()\n\t\t\tresult.added.add(val)\n\t\t}\n\t}\n\n\tfor (const val of prev) {\n\t\tif (!next.has(val)) {\n\t\t\tresult.removed ??= new Set()\n\t\t\tresult.removed.add(val)\n\t\t}\n\t}\n\n\treturn result.added || result.removed ? result : undefined\n}\n"], "mappings": "AAOO,SAAS,cAAiB,MAAgB;AAChD,MAAI,KAAK,WAAW,EAAG,QAAO,oBAAI,IAAO;AACzC,QAAM,QAAQ,KAAK,CAAC;AACpB,QAAM,OAAO,KAAK,MAAM,CAAC;AACzB,QAAM,SAAS,oBAAI,IAAO;AAE1B,aAAW,OAAO,OAAO;AACxB,QAAI,KAAK,MAAM,CAAC,QAAQ,IAAI,IAAI,GAAG,CAAC,GAAG;AACtC,aAAO,IAAI,GAAG;AAAA,IACf;AAAA,EACD;AAEA,SAAO;AACR;AAQO,SAAS,SAAY,MAAc,MAA6C;AACtF,QAAM,SAA4B,CAAC;AAEnC,aAAW,OAAO,MAAM;AACvB,QAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AACnB,aAAO,UAAU,oBAAI,IAAI;AACzB,aAAO,MAAM,IAAI,GAAG;AAAA,IACrB;AAAA,EACD;AAEA,aAAW,OAAO,MAAM;AACvB,QAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AACnB,aAAO,YAAY,oBAAI,IAAI;AAC3B,aAAO,QAAQ,IAAI,GAAG;AAAA,IACvB;AAAA,EACD;AAEA,SAAO,OAAO,SAAS,OAAO,UAAU,SAAS;AAClD;", "names": [] }