@warkypublic/svelix 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,10 @@ import { resolveRowHeight } from "./VTree.utils.js";
4
4
  const { rows, rowHeight, autoMeasure = false, height, indent, overscan, focusedIndex, selectedId, selectedNodeId, selectedItemIds = [], loadingRoot, loadingMessage, emptyMessage, multiple = false, selectionMode = "modifier", iconField, icon, classes, showRowSeparator = true, hoverEffect = true, getNodeLabel, getNodeDescription, treeDataSnapshot, leftSection, rightSection, onselectrow, oncheckboxselect, onrowdoubleclick, onrowcontext, onviewportcontext, ontogglerow, onrowlongpress, onrowhover, onrowhoverend, longPressDelay, longPressMoveTolerance, ontreekeydown } = $props();
5
5
  let viewportRef = $state(null);
6
6
  let virtualizerInstance = $state(null);
7
+ // The virtualizer emits the same instance reference as its row count changes.
8
+ // Store its derived render values separately so Svelte updates the scroll area.
9
+ let virtualItems = $state([]);
10
+ let totalSize = $state(0);
7
11
  function toCssSize(value) {
8
12
  return typeof value === "number" ? `${value}px` : value;
9
13
  }
@@ -20,6 +24,8 @@ function measure(node) {
20
24
  $effect(() => {
21
25
  if (!viewportRef) {
22
26
  virtualizerInstance = null;
27
+ virtualItems = [];
28
+ totalSize = 0;
23
29
  return;
24
30
  }
25
31
  const virtualizer = createVirtualizer({
@@ -30,6 +36,8 @@ $effect(() => {
30
36
  });
31
37
  return virtualizer.subscribe((instance) => {
32
38
  virtualizerInstance = instance;
39
+ virtualItems = instance.getVirtualItems();
40
+ totalSize = instance.getTotalSize();
33
41
  });
34
42
  });
35
43
  $effect(() => {
@@ -41,8 +49,6 @@ $effect(() => {
41
49
  getScrollElement: () => viewportRef
42
50
  });
43
51
  });
44
- const virtualItems = $derived(virtualizerInstance?.getVirtualItems() ?? []);
45
- const totalSize = $derived(virtualizerInstance?.getTotalSize() ?? 0);
46
52
  </script>
47
53
 
48
54
  <div class="card overflow-auto border border-surface-300-700 bg-surface-50-950 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500" bind:this={viewportRef} style={`height: ${toCssSize(height)};`} onkeydown={(event) => ontreekeydown?.(event)} oncontextmenu={(event) => onviewportcontext?.(event)} tabindex="0" role="tree" aria-label="Virtual tree">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warkypublic/svelix",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "Svelte 5 component library with Skeleton UI and Tailwind CSS",
5
5
  "license": "Apache-2.0",
6
6
  "exports": {