@tanstack/lit-virtual
Version:
Headless UI for virtualizing scrollable elements in Lit
1 lines • 3.94 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../src/index.ts"],"sourcesContent":["import {\n Virtualizer,\n elementScroll,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll,\n} from '@tanstack/virtual-core'\nimport type { ReactiveController, ReactiveControllerHost } from 'lit'\nimport type { PartialKeys, VirtualizerOptions } from '@tanstack/virtual-core'\n\nclass VirtualizerControllerBase<\n TScrollElement extends Element | Window,\n TItemElement extends Element,\n> implements ReactiveController\n{\n host: ReactiveControllerHost\n\n private readonly virtualizer: Virtualizer<TScrollElement, TItemElement>\n\n private cleanup: () => void = () => {}\n\n constructor(\n host: ReactiveControllerHost,\n options: VirtualizerOptions<TScrollElement, TItemElement>,\n ) {\n ;(this.host = host).addController(this)\n\n const resolvedOptions: VirtualizerOptions<TScrollElement, TItemElement> = {\n ...options,\n onChange: (instance, sync) => {\n this.host.updateComplete.then(() => this.host.requestUpdate())\n options.onChange?.(instance, sync)\n },\n }\n this.virtualizer = new Virtualizer(resolvedOptions)\n }\n\n public getVirtualizer() {\n return this.virtualizer\n }\n\n async hostConnected() {\n this.cleanup = this.virtualizer._didMount()\n }\n\n hostUpdated() {\n this.virtualizer._willUpdate()\n }\n\n hostDisconnected() {\n this.cleanup()\n }\n}\n\nexport class VirtualizerController<\n TScrollElement extends Element,\n TItemElement extends Element,\n> extends VirtualizerControllerBase<TScrollElement, TItemElement> {\n constructor(\n host: ReactiveControllerHost,\n options: PartialKeys<\n VirtualizerOptions<TScrollElement, TItemElement>,\n 'observeElementRect' | 'observeElementOffset' | 'scrollToFn'\n >,\n ) {\n super(host, {\n observeElementRect: observeElementRect,\n observeElementOffset: observeElementOffset,\n scrollToFn: elementScroll,\n ...options,\n })\n }\n}\n\nexport class WindowVirtualizerController<\n TItemElement extends Element,\n> extends VirtualizerControllerBase<Window, TItemElement> {\n constructor(\n host: ReactiveControllerHost,\n options: PartialKeys<\n VirtualizerOptions<Window, TItemElement>,\n | 'getScrollElement'\n | 'observeElementRect'\n | 'observeElementOffset'\n | 'scrollToFn'\n >,\n ) {\n super(host, {\n getScrollElement: () => (typeof document !== 'undefined' ? window : null),\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () =>\n typeof document !== 'undefined' ? window.scrollY : 0,\n ...options,\n })\n }\n}\n"],"names":["Virtualizer","observeElementRect","observeElementOffset","elementScroll","observeWindowRect","observeWindowOffset","windowScroll"],"mappings":";;;AAYA,MAAM,0BAIN;AAAA,EAOE,YACE,MACA,SACA;AALF,SAAQ,UAAsB,MAAM;AAAA,IAAC;AAMlC,KAAC,KAAK,OAAO,MAAM,cAAc,IAAI;AAEtC,UAAM,kBAAoE;AAAA,MACxE,GAAG;AAAA,MACH,UAAU,CAAC,UAAU,SAAS;;AAC5B,aAAK,KAAK,eAAe,KAAK,MAAM,KAAK,KAAK,eAAe;AACrD,sBAAA,aAAA,iCAAW,UAAU;AAAA,MAAI;AAAA,IAErC;AACK,SAAA,cAAc,IAAIA,YAAA,YAAY,eAAe;AAAA,EAAA;AAAA,EAG7C,iBAAiB;AACtB,WAAO,KAAK;AAAA,EAAA;AAAA,EAGd,MAAM,gBAAgB;AACf,SAAA,UAAU,KAAK,YAAY,UAAU;AAAA,EAAA;AAAA,EAG5C,cAAc;AACZ,SAAK,YAAY,YAAY;AAAA,EAAA;AAAA,EAG/B,mBAAmB;AACjB,SAAK,QAAQ;AAAA,EAAA;AAEjB;AAEO,MAAM,8BAGH,0BAAwD;AAAA,EAChE,YACE,MACA,SAIA;AACA,UAAM,MAAM;AAAA,MAAA,oBACVC,YAAA;AAAA,MAAA,sBACAC,YAAA;AAAA,MACA,YAAYC,YAAA;AAAA,MACZ,GAAG;AAAA,IAAA,CACJ;AAAA,EAAA;AAEL;AAEO,MAAM,oCAEH,0BAAgD;AAAA,EACxD,YACE,MACA,SAOA;AACA,UAAM,MAAM;AAAA,MACV,kBAAkB,MAAO,OAAO,aAAa,cAAc,SAAS;AAAA,MACpE,oBAAoBC,YAAA;AAAA,MACpB,sBAAsBC,YAAA;AAAA,MACtB,YAAYC,YAAA;AAAA,MACZ,eAAe,MACb,OAAO,aAAa,cAAc,OAAO,UAAU;AAAA,MACrD,GAAG;AAAA,IAAA,CACJ;AAAA,EAAA;AAEL;;;"}