@lapis-notes/bases 0.1.0

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.
Files changed (155) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE.md +8 -0
  3. package/README.md +20 -0
  4. package/dist/bases-plugin.d.ts +10 -0
  5. package/dist/bases-plugin.js +118 -0
  6. package/dist/bases-view/app-database-query-source.d.ts +30 -0
  7. package/dist/bases-view/app-database-query-source.js +248 -0
  8. package/dist/bases-view/bases.svelte.d.ts +569 -0
  9. package/dist/bases-view/bases.svelte.js +910 -0
  10. package/dist/bases-view/card-view/components/card-placeholder.svelte +68 -0
  11. package/dist/bases-view/card-view/components/card-placeholder.svelte.d.ts +7 -0
  12. package/dist/bases-view/card-view/components/card.svelte +289 -0
  13. package/dist/bases-view/card-view/components/card.svelte.d.ts +7 -0
  14. package/dist/bases-view/card-view/index.d.ts +11 -0
  15. package/dist/bases-view/card-view/index.js +55 -0
  16. package/dist/bases-view/cell-editor-options.d.ts +2 -0
  17. package/dist/bases-view/cell-editor-options.js +26 -0
  18. package/dist/bases-view/cell-editor.svelte +206 -0
  19. package/dist/bases-view/cell-editor.svelte.d.ts +12 -0
  20. package/dist/bases-view/cell.svelte +132 -0
  21. package/dist/bases-view/cell.svelte.d.ts +16 -0
  22. package/dist/bases-view/column-definition.d.ts +22 -0
  23. package/dist/bases-view/column-definition.js +149 -0
  24. package/dist/bases-view/columns.d.ts +15 -0
  25. package/dist/bases-view/columns.js +103 -0
  26. package/dist/bases-view/components/Tag.svelte +14 -0
  27. package/dist/bases-view/components/Tag.svelte.d.ts +8 -0
  28. package/dist/bases-view/components/autocomplete.svelte +45 -0
  29. package/dist/bases-view/components/autocomplete.svelte.d.ts +17 -0
  30. package/dist/bases-view/components/card-image.svelte +121 -0
  31. package/dist/bases-view/components/card-image.svelte.d.ts +11 -0
  32. package/dist/bases-view/components/column-visibility.svelte +388 -0
  33. package/dist/bases-view/components/column-visibility.svelte.d.ts +13 -0
  34. package/dist/bases-view/components/datetime.svelte +35 -0
  35. package/dist/bases-view/components/datetime.svelte.d.ts +7 -0
  36. package/dist/bases-view/components/file.svelte +31 -0
  37. package/dist/bases-view/components/file.svelte.d.ts +8 -0
  38. package/dist/bases-view/components/filters/filter-editor.svelte +102 -0
  39. package/dist/bases-view/components/filters/filter-editor.svelte.d.ts +10 -0
  40. package/dist/bases-view/components/filters/filter-group.svelte +142 -0
  41. package/dist/bases-view/components/filters/filter-group.svelte.d.ts +11 -0
  42. package/dist/bases-view/components/filters/filter-properties.svelte +77 -0
  43. package/dist/bases-view/components/filters/filter-properties.svelte.d.ts +8 -0
  44. package/dist/bases-view/components/filters/filter-root.svelte +112 -0
  45. package/dist/bases-view/components/filters/filter-root.svelte.d.ts +12 -0
  46. package/dist/bases-view/components/filters/filter-row.svelte +351 -0
  47. package/dist/bases-view/components/filters/filter-row.svelte.d.ts +11 -0
  48. package/dist/bases-view/components/group/group-root.svelte +120 -0
  49. package/dist/bases-view/components/group/group-root.svelte.d.ts +8 -0
  50. package/dist/bases-view/components/limit.svelte +100 -0
  51. package/dist/bases-view/components/limit.svelte.d.ts +12 -0
  52. package/dist/bases-view/components/query-editor.svelte +230 -0
  53. package/dist/bases-view/components/query-editor.svelte.d.ts +15 -0
  54. package/dist/bases-view/components/sort/sort-direction-labels.d.ts +9 -0
  55. package/dist/bases-view/components/sort/sort-direction-labels.js +25 -0
  56. package/dist/bases-view/components/sort/sort-root.svelte +239 -0
  57. package/dist/bases-view/components/sort/sort-root.svelte.d.ts +11 -0
  58. package/dist/bases-view/components/sort/sort-row.svelte +190 -0
  59. package/dist/bases-view/components/sort/sort-row.svelte.d.ts +15 -0
  60. package/dist/bases-view/components/summary-strip.svelte +56 -0
  61. package/dist/bases-view/components/summary-strip.svelte.d.ts +8 -0
  62. package/dist/bases-view/components/tag-chip.svelte +47 -0
  63. package/dist/bases-view/components/tag-chip.svelte.d.ts +12 -0
  64. package/dist/bases-view/components/views.svelte +178 -0
  65. package/dist/bases-view/components/views.svelte.d.ts +12 -0
  66. package/dist/bases-view/data-table-adapter/data-table.svelte.d.ts +45 -0
  67. package/dist/bases-view/data-table-adapter/data-table.svelte.js +112 -0
  68. package/dist/bases-view/data-table-adapter/flex-render.svelte +43 -0
  69. package/dist/bases-view/data-table-adapter/flex-render.svelte.d.ts +30 -0
  70. package/dist/bases-view/data-table-adapter/index.d.ts +3 -0
  71. package/dist/bases-view/data-table-adapter/index.js +3 -0
  72. package/dist/bases-view/data-table-adapter/render-helpers.d.ts +101 -0
  73. package/dist/bases-view/data-table-adapter/render-helpers.js +110 -0
  74. package/dist/bases-view/db.d.ts +31 -0
  75. package/dist/bases-view/db.js +174 -0
  76. package/dist/bases-view/document-core.d.ts +2 -0
  77. package/dist/bases-view/document-core.js +166 -0
  78. package/dist/bases-view/export-core.d.ts +4 -0
  79. package/dist/bases-view/export-core.js +31 -0
  80. package/dist/bases-view/file-fields-core.d.ts +31 -0
  81. package/dist/bases-view/file-fields-core.js +114 -0
  82. package/dist/bases-view/filter-parser.d.ts +27 -0
  83. package/dist/bases-view/filter-parser.js +315 -0
  84. package/dist/bases-view/functions-core.d.ts +66 -0
  85. package/dist/bases-view/functions-core.js +265 -0
  86. package/dist/bases-view/functions.d.ts +5 -0
  87. package/dist/bases-view/functions.js +107 -0
  88. package/dist/bases-view/fuzzy-search.d.ts +6 -0
  89. package/dist/bases-view/fuzzy-search.js +15 -0
  90. package/dist/bases-view/hooks/useResizeObserver.svelte.d.ts +7 -0
  91. package/dist/bases-view/hooks/useResizeObserver.svelte.js +26 -0
  92. package/dist/bases-view/index.d.ts +66 -0
  93. package/dist/bases-view/index.js +231 -0
  94. package/dist/bases-view/list-view/index.d.ts +10 -0
  95. package/dist/bases-view/list-view/index.js +17 -0
  96. package/dist/bases-view/list-view/list.svelte +156 -0
  97. package/dist/bases-view/list-view/list.svelte.d.ts +7 -0
  98. package/dist/bases-view/map-view/index.d.ts +10 -0
  99. package/dist/bases-view/map-view/index.js +17 -0
  100. package/dist/bases-view/map-view/view.svelte +28 -0
  101. package/dist/bases-view/map-view/view.svelte.d.ts +7 -0
  102. package/dist/bases-view/metadata-invalidation-core.d.ts +34 -0
  103. package/dist/bases-view/metadata-invalidation-core.js +162 -0
  104. package/dist/bases-view/metadata-type-info.d.ts +7 -0
  105. package/dist/bases-view/metadata-type-info.js +10 -0
  106. package/dist/bases-view/models.d.ts +90 -0
  107. package/dist/bases-view/models.js +133 -0
  108. package/dist/bases-view/query-result-core.d.ts +8 -0
  109. package/dist/bases-view/query-result-core.js +16 -0
  110. package/dist/bases-view/resource-url.d.ts +2 -0
  111. package/dist/bases-view/resource-url.js +21 -0
  112. package/dist/bases-view/search-core.d.ts +9 -0
  113. package/dist/bases-view/search-core.js +20 -0
  114. package/dist/bases-view/summary-core.d.ts +7 -0
  115. package/dist/bases-view/summary-core.js +17 -0
  116. package/dist/bases-view/table-view/components/div-table.svelte +464 -0
  117. package/dist/bases-view/table-view/components/div-table.svelte.d.ts +32 -0
  118. package/dist/bases-view/table-view/components/dnd-style.d.ts +3 -0
  119. package/dist/bases-view/table-view/components/dnd-style.js +6 -0
  120. package/dist/bases-view/table-view/components/sort-header.svelte +48 -0
  121. package/dist/bases-view/table-view/components/sort-header.svelte.d.ts +11 -0
  122. package/dist/bases-view/table-view/components/table-column-tracks.d.ts +14 -0
  123. package/dist/bases-view/table-view/components/table-column-tracks.js +27 -0
  124. package/dist/bases-view/table-view/components/table-header.svelte +146 -0
  125. package/dist/bases-view/table-view/components/table-header.svelte.d.ts +10 -0
  126. package/dist/bases-view/table-view/components/table-placeholder.svelte +46 -0
  127. package/dist/bases-view/table-view/components/table-placeholder.svelte.d.ts +30 -0
  128. package/dist/bases-view/table-view/components/table-virtualizer-core.d.ts +13 -0
  129. package/dist/bases-view/table-view/components/table-virtualizer-core.js +12 -0
  130. package/dist/bases-view/table-view/components/table.svelte +997 -0
  131. package/dist/bases-view/table-view/components/table.svelte.d.ts +32 -0
  132. package/dist/bases-view/table-view/index.svelte.d.ts +10 -0
  133. package/dist/bases-view/table-view/index.svelte.js +30 -0
  134. package/dist/bases-view/unknown-view/index.d.ts +10 -0
  135. package/dist/bases-view/unknown-view/index.js +19 -0
  136. package/dist/bases-view/unknown-view/view.svelte +11 -0
  137. package/dist/bases-view/unknown-view/view.svelte.d.ts +6 -0
  138. package/dist/bases-view/view-header.svelte +142 -0
  139. package/dist/bases-view/view-header.svelte.d.ts +28 -0
  140. package/dist/bases-view/view-registration-inventory.d.ts +22 -0
  141. package/dist/bases-view/view-registration-inventory.js +7 -0
  142. package/dist/bases-view/view-settings.svelte +350 -0
  143. package/dist/bases-view/view-settings.svelte.d.ts +9 -0
  144. package/dist/bases-view/view.svelte +192 -0
  145. package/dist/bases-view/view.svelte.d.ts +15 -0
  146. package/dist/bases-view-surface.svelte +31 -0
  147. package/dist/bases-view-surface.svelte.d.ts +14 -0
  148. package/dist/index.d.ts +10 -0
  149. package/dist/index.js +8 -0
  150. package/dist/serialized-write-queue.d.ts +10 -0
  151. package/dist/serialized-write-queue.js +36 -0
  152. package/dist/styles.css +2164 -0
  153. package/manifest.json +33 -0
  154. package/package.json +90 -0
  155. package/styles.css +1 -0
@@ -0,0 +1,146 @@
1
+ <script lang="ts">
2
+ import type { Header } from "@tanstack/table-core";
3
+ import { createSortable } from "@dnd-kit/svelte/sortable";
4
+ import GripVertical from "@lucide/svelte/icons/grip-vertical";
5
+ import { Button } from "@lapismd/design-core/shadcn/button";
6
+ import { styleObjectToString } from "./dnd-style";
7
+ import { cn } from "@lapis-notes/api";
8
+ import { Icon } from "@lapis-notes/api/icon";
9
+ import ArrowUpDownIcon from "@lucide/svelte/icons/arrow-up-down";
10
+ import ArrowDown from "@lucide/svelte/icons/chevron-down";
11
+ import ArrowUp from "@lucide/svelte/icons/chevron-up";
12
+
13
+ let {
14
+ header,
15
+ icon = "lucide-info",
16
+ text,
17
+ width = header.getSize(),
18
+ }: {
19
+ header: Header<any, unknown>;
20
+ icon?: string;
21
+ text?: string;
22
+ width?: number;
23
+ } = $props();
24
+ let label = $derived(
25
+ text ?? header.column.columnDef.meta?.displayName?.toString() ?? header.id,
26
+ );
27
+ let direction = $derived(header.column.getIsSorted());
28
+ let isActive = $state(false);
29
+
30
+ const sortable = createSortable({
31
+ get id() {
32
+ return header.column.id;
33
+ },
34
+ get index() {
35
+ return header.index;
36
+ },
37
+ type: "bases-table-column",
38
+ accept: "bases-table-column",
39
+ get data() {
40
+ return {
41
+ type: "bases-table-column",
42
+ id: header.column.id,
43
+ index: header.index,
44
+ };
45
+ },
46
+ });
47
+
48
+ let style = $derived(
49
+ styleObjectToString({
50
+ opacity: sortable.isDragging ? 0.8 : 1,
51
+ position: "relative",
52
+ transition: "transform 0.2s ease-in-out",
53
+ "--ui-bases-table-cell-radius-active": 0,
54
+ "--ui-bases-table-cell-shadow-active":
55
+ "calc(var(--ui-bases-table-column-border-width) * -1) 0 0 var(--table-border-color)",
56
+ whiteSpace: "nowrap",
57
+ flex: `0 0 ${width}px`,
58
+ width: `${width}px`,
59
+ "z-index": sortable.isDragging ? 1 : 0,
60
+ }),
61
+ );
62
+ </script>
63
+
64
+ <div
65
+ {@attach sortable.attach}
66
+ {style}
67
+ data-column-id={header.id}
68
+ class={cn(
69
+ "bases-td group/header bases-style-z-1000-9e4878 bases-style-justify-between-8ef226 bases-style-overflow-hidden-2cd02d bases-style-px-0-5a270a bases-style-text-nowrap-621d3b bases-style-overflow-ellipsis-5b2ef5 bases-style-transition-colors-ceb69a",
70
+ isActive ? "bases-style-bg-accent-interactive-30-0c9f68" : "bases-style-hover-bg-border-2e3f11",
71
+ )}
72
+ onfocusin={() => {
73
+ isActive = true;
74
+ }}
75
+ onfocusout={(event) => {
76
+ const currentTarget = event.currentTarget;
77
+ const relatedTarget = event.relatedTarget;
78
+
79
+ if (
80
+ currentTarget instanceof HTMLElement &&
81
+ relatedTarget instanceof Node &&
82
+ currentTarget.contains(relatedTarget)
83
+ ) {
84
+ return;
85
+ }
86
+
87
+ isActive = false;
88
+ }}
89
+ >
90
+ <div class="relative bases-style-flex-60fbb7 bases-style-h-full-668b21 bases-style-w-full-6da6a3 bases-style-items-center-3960ff bases-style-justify-between-8ef226 bases-style-gap-1-44ee8b">
91
+ <div class="bases-style-w-full-6da6a3 bases-style-pr-10-b70031">
92
+ {#if !header.isPlaceholder}
93
+ <Button
94
+ class="bases-style-flex-60fbb7 bases-style-h-full-668b21 bases-style-w-full-6da6a3 bases-style-justify-between-8ef226 bases-style-rounded-none-0c5e91 bases-style-p-2-7660b4 bases-style-pr-0-5431db bases-style-hover-bg-transparent-de520d bases-style-focus-visible-border-transparent-917fe2 bases-style-focus-visible-bg-transparent-23dcc5 bases-style-focus-visible-shadow-none-1697ce bases-style-focus-visible-ring-0-464a99 bases-style-focus-visible-ring-transparent-4358b1 bases-style-focus-visible-ring-offset-0-63ff32"
95
+ variant="ghost"
96
+ onclick={header.column.getToggleSortingHandler()}
97
+ >
98
+ <span class="bases-style-flex-60fbb7 bases-style-items-center-3960ff" data-tooltip={label}>
99
+ <Icon name={[icon, "lucide-info"]} class="bases-style-mr-1-618162" />
100
+ <span class="shrink bases-style-overflow-x-hidden-e271e6 bases-style-text-ellipsis-6e2e11">{label}</span>
101
+ </span>
102
+ </Button>
103
+ {/if}
104
+ </div>
105
+ <div class="absolute bases-style-top-0-216740 bases-style-right-0-d8cdca bases-style-flex-60fbb7 bases-style-h-full-668b21 bases-style-items-center-3960ff bases-style-bg-transparent-7f19cd">
106
+ <Button
107
+ variant="ghost"
108
+ data-grab-handle=""
109
+ aria-label={`Sort ${label}`}
110
+ class="bases-style-px-0-5a270a bases-style-hover-bg-transparent-de520d bases-style-focus-visible-border-transparent-917fe2 bases-style-focus-visible-bg-transparent-23dcc5 bases-style-focus-visible-shadow-none-1697ce bases-style-focus-visible-ring-0-464a99 bases-style-focus-visible-ring-transparent-4358b1 bases-style-focus-visible-ring-offset-0-63ff32"
111
+ size="xs"
112
+ onclick={header.column.getToggleSortingHandler()}
113
+ >
114
+ {#if direction === "asc"}
115
+ <ArrowUp class="" />
116
+ {:else if direction === "desc"}
117
+ <ArrowDown class="" />
118
+ {:else}
119
+ <ArrowUpDownIcon class="" />
120
+ {/if}
121
+ </Button>
122
+ <Button
123
+ {@attach sortable.attachHandle}
124
+ variant="ghost"
125
+ data-grab-handle=""
126
+ aria-label={`Reorder ${label} column`}
127
+ class="bases-style-px-0-5a270a bases-style-hover-bg-transparent-de520d bases-style-focus-visible-border-transparent-917fe2 bases-style-focus-visible-bg-transparent-23dcc5 bases-style-focus-visible-shadow-none-1697ce bases-style-focus-visible-ring-0-464a99 bases-style-focus-visible-ring-transparent-4358b1 bases-style-focus-visible-ring-offset-0-63ff32"
128
+ size="xs"
129
+ >
130
+ <GripVertical />
131
+ </Button>
132
+ <div
133
+ role="button"
134
+ aria-label={`Resize ${label} column`}
135
+ tabindex="-1"
136
+ ondblclick={() => header.column.resetSize()}
137
+ onmousedown={header.getResizeHandler()}
138
+ ontouchstart={header.getResizeHandler()}
139
+ class={cn(
140
+ "bases-style-bg-accent-interactive-8255bb absolute bases-style-top-0-216740 bases-style-right-0-d8cdca bases-style-h-full-668b21 bases-style-w-1-0b0057 bases-style-cursor-col-resize-1ee417 touch-none bases-style-opacity-0-706549 bases-style-select-none-7f6912 bases-style-hover-opacity-100-5da1d5",
141
+ header.column.getIsResizing() && "bases-style-opacity-100-3972e9",
142
+ )}
143
+ ></div>
144
+ </div>
145
+ </div>
146
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { Header } from "@tanstack/table-core";
2
+ type $$ComponentProps = {
3
+ header: Header<any, unknown>;
4
+ icon?: string;
5
+ text?: string;
6
+ width?: number;
7
+ };
8
+ declare const TableHeader: import("svelte").Component<$$ComponentProps, {}, "">;
9
+ type TableHeader = ReturnType<typeof TableHeader>;
10
+ export default TableHeader;
@@ -0,0 +1,46 @@
1
+ <script lang="ts" generics="TData">
2
+ import { type Table as TanstackTable } from "@tanstack/table-core";
3
+ import * as Table from "@lapismd/design-core/shadcn/table";
4
+ import TableHeader from "./table-header.svelte";
5
+ import type { BasesView } from "../../bases.svelte";
6
+
7
+ type DataTableProps<TData> = {
8
+ view: BasesView;
9
+ table: TanstackTable<TData>;
10
+ };
11
+
12
+ let { table, view = $bindable() }: DataTableProps<TData> = $props();
13
+
14
+ let colSpan = $derived(
15
+ table.getAllColumns().filter((it) => it.getIsVisible()).length,
16
+ );
17
+ </script>
18
+
19
+ <div
20
+ class="bases-style-h-full-668b21 bases-style-w-full-6da6a3 bases-style-flex-grow-95a3df bases-style-overflow-auto-73fc3f bases-style-pb-16-db15dd"
21
+ style="scrollbar-gutter: stable; transform: translate3d(0,0,0)"
22
+ data-layout="table"
23
+ >
24
+ <div
25
+ class="relative bases-style-pb-100px-03c580"
26
+ >
27
+ <Table.Root class="bases-style-overflow-visible-5b5e83 contain-layout">
28
+ <Table.Header class="bases-style-bg-secondary-ba939e sticky bases-style-top-0-216740 bases-style-z-100-db5a36">
29
+ <Table.Row class="bases-style-th-td-last-border-r-0-7a1990">
30
+ {#each table.getFlatHeaders() as header (header.id)}
31
+ <TableHeader {header} width={header.column.getSize()} />
32
+ {/each}
33
+ </Table.Row>
34
+ </Table.Header>
35
+ <Table.Body>
36
+ <Table.Row class="bases-style-border-b-65fdba">
37
+ <Table.Cell colspan={colSpan} class="bases-style-h-24-9678c6 bases-style-border-b-65fdba bases-style-text-center-ca6bf6">
38
+ <div class="bases-style-flex-60fbb7 bases-style-w-full-6da6a3 bases-style-items-center-3960ff bases-style-justify-center-86843c">
39
+ <div class="loader"></div>
40
+ </div>
41
+ </Table.Cell>
42
+ </Table.Row>
43
+ </Table.Body>
44
+ </Table.Root>
45
+ </div>
46
+ </div>
@@ -0,0 +1,30 @@
1
+ import { type Table as TanstackTable } from "@tanstack/table-core";
2
+ import type { BasesView } from "../../bases.svelte";
3
+ type DataTableProps<TData> = {
4
+ view: BasesView;
5
+ table: TanstackTable<TData>;
6
+ };
7
+ declare function $$render<TData>(): {
8
+ props: DataTableProps<TData>;
9
+ exports: {};
10
+ bindings: "view";
11
+ slots: {};
12
+ events: {};
13
+ };
14
+ declare class __sveltets_Render<TData> {
15
+ props(): ReturnType<typeof $$render<TData>>['props'];
16
+ events(): ReturnType<typeof $$render<TData>>['events'];
17
+ slots(): ReturnType<typeof $$render<TData>>['slots'];
18
+ bindings(): "view";
19
+ exports(): {};
20
+ }
21
+ interface $$IsomorphicComponent {
22
+ new <TData>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<TData>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<TData>['props']>, ReturnType<__sveltets_Render<TData>['events']>, ReturnType<__sveltets_Render<TData>['slots']>> & {
23
+ $$bindings?: ReturnType<__sveltets_Render<TData>['bindings']>;
24
+ } & ReturnType<__sveltets_Render<TData>['exports']>;
25
+ <TData>(internal: unknown, props: ReturnType<__sveltets_Render<TData>['props']> & {}): ReturnType<__sveltets_Render<TData>['exports']>;
26
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
27
+ }
28
+ declare const TablePlaceholder: $$IsomorphicComponent;
29
+ type TablePlaceholder<TData> = InstanceType<typeof TablePlaceholder<TData>>;
30
+ export default TablePlaceholder;
@@ -0,0 +1,13 @@
1
+ type VirtualRowLike = {
2
+ index: number;
3
+ };
4
+ type KeyedDisplayItem = {
5
+ key: string;
6
+ };
7
+ export type VisibleVirtualRow<TItem extends KeyedDisplayItem> = {
8
+ virtualRow: VirtualRowLike;
9
+ item: TItem;
10
+ };
11
+ export declare function resolveVisibleVirtualRows<TItem extends KeyedDisplayItem>(virtualRows: VirtualRowLike[], displayItems: TItem[]): Array<VisibleVirtualRow<TItem>>;
12
+ export declare function resolveVirtualTotalSize(displayItemCount: number, totalSize: number): number;
13
+ export {};
@@ -0,0 +1,12 @@
1
+ export function resolveVisibleVirtualRows(virtualRows, displayItems) {
2
+ if (!displayItems.length) {
3
+ return [];
4
+ }
5
+ return virtualRows.flatMap((virtualRow) => {
6
+ const item = displayItems[virtualRow.index];
7
+ return item ? [{ virtualRow, item }] : [];
8
+ });
9
+ }
10
+ export function resolveVirtualTotalSize(displayItemCount, totalSize) {
11
+ return displayItemCount ? totalSize : 0;
12
+ }