MCPcopy Create free account
hub / github.com/ef4/memory-scroll / modify

Method modify

src/modifiers/memory-scroll.ts:34–60  ·  view source on GitHub ↗
(
    element: Element,
    _: ArgsFor<Signature>['positional'],
    { key }: ArgsFor<Signature>['named'],
  )

Source from the content-addressed store, hash-verified

32 }
33
34 modify(
35 element: Element,
36 _: ArgsFor<Signature>['positional'],
37 { key }: ArgsFor<Signature>['named'],
38 ) {
39 if (!this.#element) {
40 this.#element = this.scrollingElement(element);
41 let handler = () => {
42 this.#remember(this.#lastKey);
43 };
44 let eventElement = this.eventElement(element);
45 eventElement.addEventListener('scroll', handler);
46 registerDestructor(this, () => {
47 eventElement.removeEventListener('scroll', handler);
48 });
49 }
50 if (!key) {
51 throw new Error(
52 'You must provide a key to memoryScroll like {{memoryScroll key="my-awesome-pane"}}.',
53 );
54 }
55 if (key !== this.#lastKey) {
56 this.#remember(this.#lastKey);
57 this.#lastKey = key;
58 this.#restore(key);
59 }
60 }
61 #remember(key: string | number | undefined) {
62 if (key && this.#element) {
63 let position = this.#element.scrollTop;

Callers

nothing calls this directly

Calls 4

scrollingElementMethod · 0.95
eventElementMethod · 0.95
#rememberMethod · 0.95
#restoreMethod · 0.95

Tested by

no test coverage detected