domma-js 0.55.0 → 0.57.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 (116) hide show
  1. package/assets/types/generated/public/assets/flags/africa.d.ts +6 -0
  2. package/assets/types/generated/public/assets/flags/americas.d.ts +6 -0
  3. package/assets/types/generated/public/assets/flags/asia.d.ts +6 -0
  4. package/assets/types/generated/public/assets/flags/europe.d.ts +9 -0
  5. package/assets/types/generated/public/assets/flags/index.d.ts +11 -0
  6. package/assets/types/generated/public/assets/flags/oceania.d.ts +2 -0
  7. package/assets/types/generated/public/assets/icons/buildings.d.ts +6 -0
  8. package/assets/types/generated/public/assets/icons/code.d.ts +2 -0
  9. package/assets/types/generated/public/assets/icons/commerce.d.ts +7 -0
  10. package/assets/types/generated/public/assets/icons/communication.d.ts +7 -0
  11. package/assets/types/generated/public/assets/icons/devices.d.ts +6 -0
  12. package/assets/types/generated/public/assets/icons/emojis.d.ts +6 -0
  13. package/assets/types/generated/public/assets/icons/files.d.ts +7 -0
  14. package/assets/types/generated/public/assets/icons/finance.d.ts +6 -0
  15. package/assets/types/generated/public/assets/icons/forms.d.ts +5 -0
  16. package/assets/types/generated/public/assets/icons/health.d.ts +6 -0
  17. package/assets/types/generated/public/assets/icons/index.d.ts +24 -0
  18. package/assets/types/generated/public/assets/icons/media.d.ts +7 -0
  19. package/assets/types/generated/public/assets/icons/navigation.d.ts +7 -0
  20. package/assets/types/generated/public/assets/icons/seasonal.d.ts +6 -0
  21. package/assets/types/generated/public/assets/icons/social.d.ts +7 -0
  22. package/assets/types/generated/public/assets/icons/sport.d.ts +6 -0
  23. package/assets/types/generated/public/assets/icons/status.d.ts +7 -0
  24. package/assets/types/generated/public/assets/icons/transport.d.ts +7 -0
  25. package/assets/types/generated/public/assets/icons/ui.d.ts +7 -0
  26. package/assets/types/generated/public/assets/icons/weather.d.ts +6 -0
  27. package/assets/types/generated/src/auth.d.ts +424 -0
  28. package/assets/types/generated/src/avatar.d.ts +270 -0
  29. package/assets/types/generated/src/binding-source.d.ts +58 -0
  30. package/assets/types/generated/src/butterfly-drawing.d.ts +2 -0
  31. package/assets/types/generated/src/component-factory.d.ts +150 -0
  32. package/assets/types/generated/src/component.d.ts +162 -0
  33. package/assets/types/generated/src/components/back-to-top.d.ts +150 -0
  34. package/assets/types/generated/src/components/badge.d.ts +208 -0
  35. package/assets/types/generated/src/components/card.d.ts +189 -0
  36. package/assets/types/generated/src/components/command-palette.d.ts +352 -0
  37. package/assets/types/generated/src/components/dropzone.d.ts +342 -0
  38. package/assets/types/generated/src/components/focus-trap.d.ts +238 -0
  39. package/assets/types/generated/src/components/loader.d.ts +133 -0
  40. package/assets/types/generated/src/components/modal.d.ts +341 -0
  41. package/assets/types/generated/src/components/range-slider.d.ts +267 -0
  42. package/assets/types/generated/src/components/shared.d.ts +91 -0
  43. package/assets/types/generated/src/components/split-pane.d.ts +239 -0
  44. package/assets/types/generated/src/components/toast.d.ts +284 -0
  45. package/assets/types/generated/src/components/tooltip.d.ts +200 -0
  46. package/assets/types/generated/src/components/virtual-list.d.ts +340 -0
  47. package/assets/types/generated/src/config.d.ts +193 -0
  48. package/assets/types/generated/src/context-cursor.d.ts +69 -0
  49. package/assets/types/generated/src/context-menu.d.ts +596 -0
  50. package/assets/types/generated/src/dates.d.ts +367 -0
  51. package/assets/types/generated/src/dom.d.ts +1221 -0
  52. package/assets/types/generated/src/effects.d.ts +1281 -0
  53. package/assets/types/generated/src/elements.d.ts +4996 -0
  54. package/assets/types/generated/src/escape.d.ts +5 -0
  55. package/assets/types/generated/src/flags-bundle.d.ts +4 -0
  56. package/assets/types/generated/src/flags.d.ts +338 -0
  57. package/assets/types/generated/src/forms.d.ts +1060 -0
  58. package/assets/types/generated/src/globals.d.ts +45 -0
  59. package/assets/types/generated/src/http.d.ts +131 -0
  60. package/assets/types/generated/src/i18n.d.ts +261 -0
  61. package/assets/types/generated/src/icons.d.ts +213 -0
  62. package/assets/types/generated/src/index.d.ts +249 -0
  63. package/assets/types/generated/src/input-group.d.ts +135 -0
  64. package/assets/types/generated/src/models.d.ts +968 -0
  65. package/assets/types/generated/src/popover.d.ts +412 -0
  66. package/assets/types/generated/src/router.d.ts +344 -0
  67. package/assets/types/generated/src/safe-url.d.ts +10 -0
  68. package/assets/types/generated/src/sanitize.d.ts +97 -0
  69. package/assets/types/generated/src/schema-builder.d.ts +420 -0
  70. package/assets/types/generated/src/skeleton.d.ts +135 -0
  71. package/assets/types/generated/src/smooth-caret.d.ts +61 -0
  72. package/assets/types/generated/src/sortable.d.ts +369 -0
  73. package/assets/types/generated/src/storage.d.ts +93 -0
  74. package/assets/types/generated/src/tables.d.ts +901 -0
  75. package/assets/types/generated/src/theme.d.ts +277 -0
  76. package/assets/types/generated/src/ticker-tape-drawing.d.ts +2 -0
  77. package/assets/types/generated/src/treeview.d.ts +504 -0
  78. package/assets/types/generated/src/utils.d.ts +1667 -0
  79. package/assets/types/generated/src/web-components/base/domma-element.d.ts +134 -0
  80. package/assets/types/generated/src/web-components/index.d.ts +14 -0
  81. package/assets/types/generated/vendor/domma-reactive.d.ts +587 -0
  82. package/assets/types/index.d.ts +104 -216
  83. package/package.json +5 -2
  84. package/public/dist/bundles/domma-complete.css +1084 -14
  85. package/public/dist/bundles/domma-data-focused.css +1084 -14
  86. package/public/dist/bundles/domma-essentials.css +1084 -14
  87. package/public/dist/bundles/domma-full.css +1084 -14
  88. package/public/dist/bundles/domma-minimal.css +8 -8
  89. package/public/dist/domma-flags.esm.js +3 -3
  90. package/public/dist/domma-flags.esm.js.map +1 -1
  91. package/public/dist/domma-flags.min.js +3 -3
  92. package/public/dist/domma-flags.min.js.map +1 -1
  93. package/public/dist/domma-syntax.min.js +3 -3
  94. package/public/dist/domma.css +3 -3
  95. package/public/dist/domma.esm.js +5 -5
  96. package/public/dist/domma.esm.js.map +1 -1
  97. package/public/dist/domma.min.js +5 -5
  98. package/public/dist/domma.min.js.map +1 -1
  99. package/public/dist/elements.css +1073 -3
  100. package/public/dist/grid.css +3 -3
  101. package/public/dist/syntax.css +3 -3
  102. package/public/dist/themes/domma-themes.css +3 -3
  103. package/templates/kickstart/frontend/types/domma.d.ts +2 -1
  104. package/assets/types/config.d.ts +0 -136
  105. package/assets/types/dates.d.ts +0 -209
  106. package/assets/types/dom.d.ts +0 -448
  107. package/assets/types/elements.d.ts +0 -682
  108. package/assets/types/flags.d.ts +0 -130
  109. package/assets/types/http.d.ts +0 -97
  110. package/assets/types/icons.d.ts +0 -147
  111. package/assets/types/models.d.ts +0 -260
  112. package/assets/types/smooth-caret.d.ts +0 -12
  113. package/assets/types/storage.d.ts +0 -93
  114. package/assets/types/tables.d.ts +0 -327
  115. package/assets/types/theme.d.ts +0 -137
  116. package/assets/types/utils.d.ts +0 -675
@@ -0,0 +1,200 @@
1
+ /**
2
+ * E.tooltip: an instance per matched element (an existing one is updated, not doubled).
3
+ * @param {Element[]} elements
4
+ * @param {TooltipOptions} [options]
5
+ * @returns {Tooltip[]}
6
+ */
7
+ export function tooltipsFor(elements: Element[], options?: TooltipOptions): Tooltip[];
8
+ /**
9
+ * Show / hide delays in ms.
10
+ * @typedef {object} TooltipDelay
11
+ * @property {number} [show]
12
+ * @property {number} [hide]
13
+ */
14
+ /**
15
+ * @typedef {object} TooltipOptions
16
+ * @property {string|Node|((target: HTMLElement) => string|Node)} [content] - Tooltip content (falls back to data-tooltip, then title)
17
+ * @property {import('../elements.js').TooltipPosition} [position='top'] - Position relative to element (flips when there is no room)
18
+ * @property {import('../elements.js').TooltipPosition} [placement] - Alias of `position`
19
+ * @property {'hover'|'click'|'focus'|'manual'|(string & {})} [trigger='hover'] - How to trigger; several separated by spaces ('hover focus')
20
+ * @property {number|TooltipDelay} [delay=0] - Show delay in ms, or {show, hide}
21
+ * @property {number} [hideDelay=0] - Hide delay in ms
22
+ * @property {boolean} [animation=true] - Fade in and out
23
+ * @property {number} [offset=8] - Gap in px between target and bubble
24
+ * @property {boolean} [html=false] - String content is HTML (sanitised unless `safe: false`), not text
25
+ * @property {boolean} [safe=true] - Sanitise HTML content
26
+ * @property {boolean} [visible=false] - Show at once
27
+ * @property {string} [className] - Extra classes on the bubble
28
+ * @property {number|string|null} [maxWidth] - Any CSS width; numbers are px
29
+ * @property {((tooltip: TooltipInstance) => void)|null} [onShow] - When the tooltip shows
30
+ * @property {((tooltip: TooltipInstance) => void)|null} [onHide] - When the tooltip hides
31
+ */
32
+ /** @typedef {Tooltip} TooltipInstance */
33
+ export class Tooltip extends Component {
34
+ static defaults: {
35
+ content: string;
36
+ position: string;
37
+ trigger: string;
38
+ delay: number;
39
+ hideDelay: number;
40
+ animation: boolean;
41
+ offset: number;
42
+ html: boolean;
43
+ safe: boolean;
44
+ visible: boolean;
45
+ className: string;
46
+ maxWidth: any;
47
+ onShow: any;
48
+ onHide: any;
49
+ };
50
+ /**
51
+ * Option aliases the old wrapper accepted.
52
+ * @param {TooltipOptions} [options]
53
+ * @returns {TooltipOptions}
54
+ */
55
+ static normalise(options?: TooltipOptions): TooltipOptions;
56
+ /**
57
+ * @param {string|Element} element
58
+ * @param {TooltipOptions} [options]
59
+ */
60
+ constructor(element: string | Element, options?: TooltipOptions);
61
+ _visible: boolean;
62
+ _bubble: HTMLDivElement;
63
+ _timers: {};
64
+ /** Content falls back to data-tooltip / title; a title is held aside so the browser's own does not show too. */
65
+ _takeTitle(): void;
66
+ _title: string;
67
+ _content(): any;
68
+ _bindTrigger(): void;
69
+ _clear(name: any): void;
70
+ _make(): void;
71
+ _write(): void;
72
+ _unmake(): void;
73
+ /** Place the bubble beside the target, flipping to the other side when it would leave the viewport. */
74
+ _place(): void;
75
+ _onScroll: () => void;
76
+ /**
77
+ * Show the tooltip (after `delay`).
78
+ * @returns {this}
79
+ */
80
+ open(): this;
81
+ /**
82
+ * Hide the tooltip (after `hideDelay`, unless `immediate`).
83
+ * @param {{immediate?: boolean}} [opts]
84
+ * @returns {this}
85
+ */
86
+ close(opts?: {
87
+ immediate?: boolean;
88
+ }): this;
89
+ /**
90
+ * Permanent alias of open(), by name.
91
+ * @returns {this}
92
+ */
93
+ show(...args: any[]): this;
94
+ /**
95
+ * Permanent alias of close(), by name.
96
+ * @param {...{immediate?: boolean}} args
97
+ * @returns {this}
98
+ */
99
+ hide(...args: {
100
+ immediate?: boolean;
101
+ }[]): this;
102
+ /**
103
+ * Toggle tooltip visibility.
104
+ * @returns {this}
105
+ */
106
+ toggle(): this;
107
+ /** @returns {boolean} */
108
+ isVisible(): boolean;
109
+ /** @returns {boolean} */
110
+ isOpen(): boolean;
111
+ /**
112
+ * Update tooltip content.
113
+ * @param {TooltipOptions['content']} content
114
+ * @returns {this}
115
+ */
116
+ setContent(content: TooltipOptions["content"]): this;
117
+ /**
118
+ * @param {import('../elements.js').TooltipPosition} position
119
+ * @returns {this}
120
+ */
121
+ setPosition(position: import("../elements.js").TooltipPosition): this;
122
+ /**
123
+ * @param {TooltipOptions} [newOptions]
124
+ * @returns {this}
125
+ */
126
+ setOptions(newOptions?: TooltipOptions): this;
127
+ _applyOptions(): void;
128
+ }
129
+ export default Tooltip;
130
+ /**
131
+ * Show / hide delays in ms.
132
+ */
133
+ export type TooltipDelay = {
134
+ show?: number;
135
+ hide?: number;
136
+ };
137
+ export type TooltipOptions = {
138
+ /**
139
+ * - Tooltip content (falls back to data-tooltip, then title)
140
+ */
141
+ content?: string | Node | ((target: HTMLElement) => string | Node);
142
+ /**
143
+ * - Position relative to element (flips when there is no room)
144
+ */
145
+ position?: import("../elements.js").TooltipPosition;
146
+ /**
147
+ * - Alias of `position`
148
+ */
149
+ placement?: import("../elements.js").TooltipPosition;
150
+ /**
151
+ * - How to trigger; several separated by spaces ('hover focus')
152
+ */
153
+ trigger?: "hover" | "click" | "focus" | "manual" | (string & {});
154
+ /**
155
+ * - Show delay in ms, or {show, hide}
156
+ */
157
+ delay?: number | TooltipDelay;
158
+ /**
159
+ * - Hide delay in ms
160
+ */
161
+ hideDelay?: number;
162
+ /**
163
+ * - Fade in and out
164
+ */
165
+ animation?: boolean;
166
+ /**
167
+ * - Gap in px between target and bubble
168
+ */
169
+ offset?: number;
170
+ /**
171
+ * - String content is HTML (sanitised unless `safe: false`), not text
172
+ */
173
+ html?: boolean;
174
+ /**
175
+ * - Sanitise HTML content
176
+ */
177
+ safe?: boolean;
178
+ /**
179
+ * - Show at once
180
+ */
181
+ visible?: boolean;
182
+ /**
183
+ * - Extra classes on the bubble
184
+ */
185
+ className?: string;
186
+ /**
187
+ * - Any CSS width; numbers are px
188
+ */
189
+ maxWidth?: number | string | null;
190
+ /**
191
+ * - When the tooltip shows
192
+ */
193
+ onShow?: ((tooltip: TooltipInstance) => void) | null;
194
+ /**
195
+ * - When the tooltip hides
196
+ */
197
+ onHide?: ((tooltip: TooltipInstance) => void) | null;
198
+ };
199
+ export type TooltipInstance = Tooltip;
200
+ import Component from '../component.js';
@@ -0,0 +1,340 @@
1
+ /**
2
+ * E.virtualList: one instance per container; calling it again updates the existing one.
3
+ * @param {Element} el
4
+ * @param {VirtualListOptions} [options]
5
+ * @returns {VirtualList}
6
+ */
7
+ export function virtualListFor(el: Element, options?: VirtualListOptions): VirtualList;
8
+ /**
9
+ * First and last index, both inclusive (end is -1 for an empty list).
10
+ * @typedef {object} VirtualListRange
11
+ * @property {number} start - First index, inclusive
12
+ * @property {number} end - Last index, inclusive (-1 for an empty list)
13
+ */
14
+ /**
15
+ * A loading / end / error row: HTML string, a node, or a function returning either.
16
+ * @typedef {string|Node|((error?: unknown) => string|Node|null)|null} VirtualListTemplate
17
+ */
18
+ /**
19
+ * @template [T=any]
20
+ * @typedef {object} VirtualListOptions
21
+ * @property {T[]|null} [items]
22
+ * @property {number} [count] - With getItem, instead of items
23
+ * @property {((index: number) => T)|null} [getItem]
24
+ * @property {number|'auto'} [itemHeight] - px, or 'auto' to measure each row (default 40)
25
+ * @property {number} [estimatedItemHeight] - Height assumed for unmeasured rows in 'auto' mode (default 40)
26
+ * @property {number} [overscan] - Rows rendered beyond each edge (default 4)
27
+ * @property {((item: T, index: number) => string|Node)|null} [render] - A string is HTML (sanitised unless safe: false); an Element goes in as it is
28
+ * @property {boolean} [safe] - false: render() strings are inserted unsanitised (default true)
29
+ * @property {string|((item: T, index: number) => unknown)|null} [keyField] - Property name or function giving each item a stable key (default: the index)
30
+ * @property {string|null} [label] - aria-label for the list
31
+ * @property {string} [rowClass] - Extra class on every row
32
+ * @property {((info: {count: number, page: number}) => Promise<T[]|{items: T[], done?: boolean}>)|null} [loadMore] - Called near the end; resolves to the next items, or {items, done}
33
+ * @property {number} [threshold] - px from the end at which loadMore is called (default 200)
34
+ * @property {VirtualListTemplate} [loadingTemplate]
35
+ * @property {VirtualListTemplate} [endTemplate]
36
+ * @property {VirtualListTemplate} [errorTemplate] - A [data-vlist-retry] element inside it retries
37
+ * @property {((range: VirtualListRange) => void)|null} [onRender]
38
+ * @property {((visible: VirtualListRange) => void)|null} [onScroll]
39
+ * @property {((info: {count: number, page: number}) => void)|null} [onLoadMore]
40
+ * @property {((items: T[]) => void)|null} [onLoaded]
41
+ * @property {(() => void)|null} [onEnd]
42
+ * @property {((error: unknown) => void)|null} [onError]
43
+ * @property {((item: T, index: number, event: MouseEvent|KeyboardEvent) => void)|null} [onItemClick]
44
+ */
45
+ /**
46
+ * @template [T=any]
47
+ * @typedef {VirtualList<T>} VirtualListInstance
48
+ */
49
+ /**
50
+ * @template [T=any]
51
+ */
52
+ export class VirtualList<T = any> extends Component {
53
+ static defaults: {
54
+ items: any;
55
+ count: number;
56
+ getItem: any;
57
+ itemHeight: number;
58
+ estimatedItemHeight: number;
59
+ overscan: number;
60
+ render: any;
61
+ safe: boolean;
62
+ keyField: any;
63
+ label: any;
64
+ loadMore: any;
65
+ threshold: number;
66
+ loadingTemplate: any;
67
+ endTemplate: any;
68
+ errorTemplate: any;
69
+ rowClass: string;
70
+ onRender: any;
71
+ onScroll: any;
72
+ onLoadMore: any;
73
+ onLoaded: any;
74
+ onEnd: any;
75
+ onError: any;
76
+ onItemClick: any;
77
+ };
78
+ /**
79
+ * @param {string|HTMLElement} element - The scrolling container
80
+ * @param {VirtualListOptions<T>} [options]
81
+ */
82
+ constructor(element: string | HTMLElement, options?: VirtualListOptions<T>);
83
+ _id: string;
84
+ _rows: Map<any, any>;
85
+ _rowByEl: WeakMap<object, any>;
86
+ _heights: Map<any, any>;
87
+ _offsets: Float64Array;
88
+ _dirtyFrom: number;
89
+ _active: number;
90
+ _focusWithin: boolean;
91
+ _frame: number;
92
+ _range: {
93
+ start: number;
94
+ end: number;
95
+ };
96
+ _load: {
97
+ busy: boolean;
98
+ done: boolean;
99
+ error: any;
100
+ page: number;
101
+ gen: number;
102
+ };
103
+ _statusHeight: number;
104
+ _setData(items: any, count: any, getItem: any): void;
105
+ _items: any[];
106
+ _count: number;
107
+ _getItem: any;
108
+ /** How many rows there are. */
109
+ get count(): number;
110
+ _itemAt(i: any): any;
111
+ _keyOf(item: any, i: any): any;
112
+ get _fixed(): boolean;
113
+ get _rowHeight(): number;
114
+ get _estimate(): number;
115
+ /** Bring the offset table up to date ('auto' only). Linear from the first change. */
116
+ _syncOffsets(): void;
117
+ _dirty(index: any): void;
118
+ _offset(i: any): number;
119
+ _heightOf(i: any): number;
120
+ _total(): number;
121
+ /** The index of the row covering y (clamped to the list). */
122
+ _indexAt(y: any): number;
123
+ _viewport(): number;
124
+ /**
125
+ * The rows at least partly on screen, first and last index inclusive.
126
+ * @returns {VirtualListRange} end is -1 for an empty list
127
+ */
128
+ getVisibleRange(): VirtualListRange;
129
+ _build(): void;
130
+ _original: DocumentFragment;
131
+ _spacer: HTMLDivElement;
132
+ _list: HTMLDivElement;
133
+ _status: HTMLDivElement;
134
+ _hostObserver: ResizeObserver;
135
+ _rowObserver: ResizeObserver;
136
+ _schedule(): void;
137
+ _onScroll: () => void;
138
+ _makeRow(): HTMLDivElement;
139
+ _fillRow(row: any, item: any, index: any): void;
140
+ /**
141
+ * Render the rows the viewport needs. Synchronous: used by the scroll frame and by
142
+ * every method that changes the data.
143
+ * @param {boolean} [force] - re-render every row's content, not just new ones
144
+ */
145
+ _render(force?: boolean): void;
146
+ /** One placement pass. @returns {{range: boolean, resized: boolean}} */
147
+ _renderPass(force: any): {
148
+ range: boolean;
149
+ resized: boolean;
150
+ };
151
+ _placeStatus(): void;
152
+ _onRowResize(entries: any): void;
153
+ _rowFor(index: any): any;
154
+ /** One tab stop: the active row, or the first row on screen when that is not rendered. */
155
+ _syncTabStop(): void;
156
+ _rowOf(target: any): any;
157
+ _onClick: (e: any) => void;
158
+ _onFocusIn: (e: any) => void;
159
+ _onFocusOut: (e: any) => void;
160
+ _onKey: (e: any) => void;
161
+ /**
162
+ * Make a row the active one, scroll it into view and focus it.
163
+ * @param {number} index
164
+ * @returns {this}
165
+ */
166
+ focusIndex(index: number): this;
167
+ _maybeLoad(): void;
168
+ _loadNext(): void;
169
+ /**
170
+ * Try a failed load again.
171
+ * @returns {this}
172
+ */
173
+ retry(): this;
174
+ /**
175
+ * Whether loadMore has said there is nothing more.
176
+ * @returns {boolean}
177
+ */
178
+ isDone(): boolean;
179
+ _template(kind: any): any;
180
+ _showStatus(kind: any): void;
181
+ /**
182
+ * Replace every item. Resets infinite loading (a new list can load more again).
183
+ * @param {T[]} items
184
+ * @returns {this}
185
+ */
186
+ setItems(items: T[]): this;
187
+ /**
188
+ * Count mode: change how many rows `getItem` serves.
189
+ * @param {number} count
190
+ * @returns {this}
191
+ */
192
+ setCount(count: number): this;
193
+ _resetLoading(): void;
194
+ _materialise(): void;
195
+ _appendItems(items: any): void;
196
+ /**
197
+ * Add items at the end.
198
+ * @param {T[]} items
199
+ * @returns {this}
200
+ */
201
+ append(items: T[]): this;
202
+ /**
203
+ * Add items at the start without moving what is on screen.
204
+ * @param {T[]} items
205
+ * @returns {this}
206
+ */
207
+ prepend(items: T[]): this;
208
+ /**
209
+ * The index of the item with a key, or -1.
210
+ * @param {unknown} key
211
+ * @returns {number}
212
+ */
213
+ indexOfKey(key: unknown): number;
214
+ /**
215
+ * Replace one item. A number is an index; anything else is a key (for numeric keys,
216
+ * pass `list.indexOfKey(key)`).
217
+ * @param {number|unknown} indexOrKey
218
+ * @param {T} item
219
+ * @returns {this}
220
+ */
221
+ update(indexOrKey: number | unknown, item: T): this;
222
+ /**
223
+ * Scroll so a row is in view.
224
+ * @param {number} index
225
+ * @param {{align?: 'start'|'center'|'end'|'auto', smooth?: boolean}} [opts]
226
+ * @returns {this}
227
+ */
228
+ scrollToIndex(index: number, opts?: {
229
+ align?: "start" | "center" | "end" | "auto";
230
+ smooth?: boolean;
231
+ }): this;
232
+ /**
233
+ * Re-render every rendered row (and re-measure them in 'auto' mode), e.g. after
234
+ * the data an item points at has changed.
235
+ * @returns {this}
236
+ */
237
+ refresh(): this;
238
+ /**
239
+ * The rendered range, overscan included.
240
+ * @returns {VirtualListRange}
241
+ */
242
+ getRenderedRange(): VirtualListRange;
243
+ _applyOptions(): void;
244
+ /**
245
+ * Update options at runtime; items / count / getItem replace the data.
246
+ * @param {VirtualListOptions<T>} [newOptions]
247
+ * @returns {this}
248
+ */
249
+ setOptions(newOptions?: VirtualListOptions<T>): this;
250
+ }
251
+ export default VirtualList;
252
+ /**
253
+ * First and last index, both inclusive (end is -1 for an empty list).
254
+ */
255
+ export type VirtualListRange = {
256
+ /**
257
+ * - First index, inclusive
258
+ */
259
+ start: number;
260
+ /**
261
+ * - Last index, inclusive (-1 for an empty list)
262
+ */
263
+ end: number;
264
+ };
265
+ /**
266
+ * A loading / end / error row: HTML string, a node, or a function returning either.
267
+ */
268
+ export type VirtualListTemplate = string | Node | ((error?: unknown) => string | Node | null) | null;
269
+ export type VirtualListOptions<T = any> = {
270
+ items?: T[] | null;
271
+ /**
272
+ * - With getItem, instead of items
273
+ */
274
+ count?: number;
275
+ getItem?: ((index: number) => T) | null;
276
+ /**
277
+ * - px, or 'auto' to measure each row (default 40)
278
+ */
279
+ itemHeight?: number | "auto";
280
+ /**
281
+ * - Height assumed for unmeasured rows in 'auto' mode (default 40)
282
+ */
283
+ estimatedItemHeight?: number;
284
+ /**
285
+ * - Rows rendered beyond each edge (default 4)
286
+ */
287
+ overscan?: number;
288
+ /**
289
+ * - A string is HTML (sanitised unless safe: false); an Element goes in as it is
290
+ */
291
+ render?: ((item: T, index: number) => string | Node) | null;
292
+ /**
293
+ * - false: render() strings are inserted unsanitised (default true)
294
+ */
295
+ safe?: boolean;
296
+ /**
297
+ * - Property name or function giving each item a stable key (default: the index)
298
+ */
299
+ keyField?: string | ((item: T, index: number) => unknown) | null;
300
+ /**
301
+ * - aria-label for the list
302
+ */
303
+ label?: string | null;
304
+ /**
305
+ * - Extra class on every row
306
+ */
307
+ rowClass?: string;
308
+ /**
309
+ * - Called near the end; resolves to the next items, or {items, done}
310
+ */
311
+ loadMore?: ((info: {
312
+ count: number;
313
+ page: number;
314
+ }) => Promise<T[] | {
315
+ items: T[];
316
+ done?: boolean;
317
+ }>) | null;
318
+ /**
319
+ * - px from the end at which loadMore is called (default 200)
320
+ */
321
+ threshold?: number;
322
+ loadingTemplate?: VirtualListTemplate;
323
+ endTemplate?: VirtualListTemplate;
324
+ /**
325
+ * - A [data-vlist-retry] element inside it retries
326
+ */
327
+ errorTemplate?: VirtualListTemplate;
328
+ onRender?: ((range: VirtualListRange) => void) | null;
329
+ onScroll?: ((visible: VirtualListRange) => void) | null;
330
+ onLoadMore?: ((info: {
331
+ count: number;
332
+ page: number;
333
+ }) => void) | null;
334
+ onLoaded?: ((items: T[]) => void) | null;
335
+ onEnd?: (() => void) | null;
336
+ onError?: ((error: unknown) => void) | null;
337
+ onItemClick?: ((item: T, index: number, event: MouseEvent | KeyboardEvent) => void) | null;
338
+ };
339
+ export type VirtualListInstance<T = any> = VirtualList<T>;
340
+ import Component from '../component.js';