MCPcopy
hub / github.com/tldraw/tldraw / ValueNode

Class ValueNode

packages/store/src/lib/ImmutableMap.ts:791–835  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

789}
790
791class ValueNode<K, V> {
792 constructor(
793 public ownerID: OwnerID,
794 public keyHash: number | undefined,
795 public entry: [K, V]
796 ) {}
797
798 get(shift: number, keyHash: number, key: K, notSetValue?: V) {
799 return Object.is(key, this.entry[0]) ? this.entry[1] : notSetValue
800 }
801
802 update(
803 ownerID: OwnerID,
804 shift: number,
805 keyHash: number | undefined,
806 key: K,
807 value: V,
808 didChangeSize?: Ref,
809 didAlter?: Ref
810 ) {
811 const removed = value === NOT_SET
812 const keyMatch = Object.is(key, this.entry[0])
813 if (keyMatch ? value === this.entry[1] : removed) {
814 return this
815 }
816
817 SetRef(didAlter)
818
819 if (removed) {
820 SetRef(didChangeSize)
821 return // undefined
822 }
823
824 if (keyMatch) {
825 if (ownerID && ownerID === this.ownerID) {
826 this.entry[1] = value
827 return this
828 }
829 return new ValueNode(ownerID, this.keyHash, [key, value])
830 }
831
832 SetRef(didChangeSize)
833 return mergeIntoNode(this, ownerID, shift, hash(key), [key, value])
834 }
835}
836
837// #pragma Iterators
838

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…