@altinn/altinn-components 0.68.1 → 0.68.2

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 (207) hide show
  1. package/dist/{ToolbarSearch-CpAUv-Lw.js → ToolbarSearch-B7BeGXrJ.js} +2 -2
  2. package/dist/components/AccessAreaListItem/AccessAreaListItem.js +23 -24
  3. package/dist/components/AccessPackageListItem/AccessPackageListItem.js +2 -2
  4. package/dist/components/Account/AccountList.js +2 -2
  5. package/dist/components/Account/AccountListItem.js +2 -2
  6. package/dist/components/Account/AccountListItemControls.js +2 -2
  7. package/dist/components/Account/AccountListItemDetails.js +2 -2
  8. package/dist/components/Account/AccountListVirtual.js +3 -3
  9. package/dist/components/Account/AccountMenu.js +2 -2
  10. package/dist/components/Account/AccountNotificationSettings.js +2 -2
  11. package/dist/components/Account/AccountOrganization.js +2 -2
  12. package/dist/components/AccountSelector/AccountSelector.js +2 -2
  13. package/dist/components/ActivityLog/ActivityLog.js +2 -2
  14. package/dist/components/ActivityLog/ActivityLogItem.js +2 -2
  15. package/dist/components/ActivityLog/ActivityLogSegment.js +2 -2
  16. package/dist/components/Alert/Alert.js +2 -2
  17. package/dist/components/Article/Article.js +2 -2
  18. package/dist/components/Article/ArticleContact.js +2 -2
  19. package/dist/components/Article/ArticleHeader.js +2 -2
  20. package/dist/components/Attachment/AttachmentLink.js +1 -1
  21. package/dist/components/AuthEvidence/AuthEvidence.js +2 -2
  22. package/dist/components/AuthEvidence/AuthEvidenceItem.js +2 -2
  23. package/dist/components/AuthEvidence/AuthEvidenceOwner.js +2 -2
  24. package/dist/components/AuthEvidence/AuthEvidenceParent.js +2 -2
  25. package/dist/components/AuthEvidence/AuthEvidenceService.js +2 -2
  26. package/dist/components/Badge/Badge.js +2 -2
  27. package/dist/components/Badge/index.js +1 -1
  28. package/dist/components/Banner/Banner.js +2 -2
  29. package/dist/components/Bookmarks/BookmarkModal.js +2 -2
  30. package/dist/components/Bookmarks/BookmarkSettingsItem.js +2 -2
  31. package/dist/components/Bookmarks/BookmarkSettingsItemLabel.js +2 -2
  32. package/dist/components/Bookmarks/BookmarkSettingsList.js +2 -2
  33. package/dist/components/Breadcrumbs/Breadcrumbs.js +2 -2
  34. package/dist/components/Bulk/BulkHeader.js +2 -2
  35. package/dist/components/Button/Button.js +1 -1
  36. package/dist/components/Button/ButtonIcon.js +2 -2
  37. package/dist/components/Button/ComboButton.js +2 -2
  38. package/dist/components/Button/FloatingActionButton.js +2 -2
  39. package/dist/components/Button/IconButton.js +2 -2
  40. package/dist/components/Byline/Byline.js +2 -2
  41. package/dist/components/Byline/index.js +1 -1
  42. package/dist/components/ContextMenu/ContextMenu.js +2 -2
  43. package/dist/components/Dashboard/DashboardCard.js +2 -2
  44. package/dist/components/Dashboard/DashboardHeader.js +2 -2
  45. package/dist/components/Datepicker/Datepicker.js +1 -1
  46. package/dist/components/Datepicker/DatepickerHeader.js +2 -2
  47. package/dist/components/Datepicker/DatepickerTable.js +2 -2
  48. package/dist/components/Dialog/Dialog.js +2 -2
  49. package/dist/components/Dialog/DialogActions.js +2 -2
  50. package/dist/components/Dialog/DialogActivityLog.js +2 -2
  51. package/dist/components/Dialog/DialogAttachments.js +2 -2
  52. package/dist/components/Dialog/DialogBody.js +2 -2
  53. package/dist/components/Dialog/DialogByline.js +2 -2
  54. package/dist/components/Dialog/DialogContact.js +2 -2
  55. package/dist/components/Dialog/DialogHeader.js +2 -2
  56. package/dist/components/Dialog/DialogHistory.js +2 -2
  57. package/dist/components/Dialog/DialogHistoryItem.js +2 -2
  58. package/dist/components/Dialog/DialogHistorySegment.js +2 -2
  59. package/dist/components/Dialog/DialogLayout.js +2 -2
  60. package/dist/components/Dialog/DialogList.js +2 -2
  61. package/dist/components/Dialog/DialogListItem.js +2 -2
  62. package/dist/components/Dialog/DialogMetadata.js +2 -2
  63. package/dist/components/Dialog/DialogSection.js +2 -2
  64. package/dist/components/Dialog/DialogSeenBy.js +2 -2
  65. package/dist/components/Dialog/DialogSelect.js +2 -2
  66. package/dist/components/Dialog/DialogStatus.js +2 -2
  67. package/dist/components/Dialog/DialogTabs.js +2 -2
  68. package/dist/components/Dialog/SeenByLog.js +2 -2
  69. package/dist/components/Dialog/SeenByLogButton.js +2 -2
  70. package/dist/components/Dialog/SeenByLogItem.js +2 -2
  71. package/dist/components/Dialog/index.js +1 -1
  72. package/dist/components/Dropdown/DrawerButton.js +2 -2
  73. package/dist/components/Dropdown/DrawerHeader.js +2 -2
  74. package/dist/components/Dropdown/Dropdown.js +2 -2
  75. package/dist/components/Dropdown/DropdownBase.js +2 -2
  76. package/dist/components/Dropdown/FloatingDropdown.js +2 -2
  77. package/dist/components/Dropdown/index.js +1 -1
  78. package/dist/components/DsComponents/index.js +2 -2
  79. package/dist/components/Forms/Checkbox.js +2 -2
  80. package/dist/components/Forms/CheckboxOptions.js +2 -2
  81. package/dist/components/Forms/Field.js +1 -1
  82. package/dist/components/Forms/FieldBase.js +2 -2
  83. package/dist/components/Forms/Fieldset.js +1 -1
  84. package/dist/components/Forms/FieldsetBase.js +2 -2
  85. package/dist/components/Forms/Input.js +1 -1
  86. package/dist/components/Forms/Label.js +1 -1
  87. package/dist/components/Forms/Legend.js +1 -1
  88. package/dist/components/Forms/Radio.js +2 -2
  89. package/dist/components/Forms/RadioOptions.js +2 -2
  90. package/dist/components/Forms/SearchField.js +2 -2
  91. package/dist/components/Forms/Select.js +1 -1
  92. package/dist/components/Forms/SelectField.js +2 -2
  93. package/dist/components/Forms/Switch.js +2 -2
  94. package/dist/components/Forms/SwitchOptions.js +2 -2
  95. package/dist/components/Forms/TextField.js +2 -2
  96. package/dist/components/Forms/TextFieldDropdown.js +2 -2
  97. package/dist/components/Forms/Textarea.js +1 -1
  98. package/dist/components/Forms/TextareaField.js +2 -2
  99. package/dist/components/Forms/index.js +1 -1
  100. package/dist/components/GlobalHeader/GlobalAccountButton.js +2 -2
  101. package/dist/components/GlobalHeader/GlobalHeader.js +2 -2
  102. package/dist/components/GlobalHeader/GlobalMenuButton.js +2 -2
  103. package/dist/components/GlobalHeader/HeaderDrawer.js +2 -2
  104. package/dist/components/GlobalHeader/HeaderDropdown.js +2 -2
  105. package/dist/components/GlobalHeader/HeaderLogo.js +2 -2
  106. package/dist/components/GlobalMenu/GlobalMenu.js +2 -2
  107. package/dist/components/GlobalMenu/LocaleSwitcher.js +2 -2
  108. package/dist/components/GlobalMenu/LogoutButton.js +2 -2
  109. package/dist/components/Icon/Icon.js +2 -2
  110. package/dist/components/Icon/index.js +1 -1
  111. package/dist/components/Inbox/InboxPage.js +2 -2
  112. package/dist/components/InboxSearch/InboxSearch.js +2 -2
  113. package/dist/components/Item/ItemLabel.js +1 -1
  114. package/dist/components/Item/ItemMedia.js +2 -2
  115. package/dist/components/Item/ItemSelect.js +2 -2
  116. package/dist/components/Item/index.js +1 -1
  117. package/dist/components/Layout/Layout.js +2 -2
  118. package/dist/components/List/List.js +2 -2
  119. package/dist/components/List/ListBase.js +2 -2
  120. package/dist/components/List/ListItemHeader.js +2 -2
  121. package/dist/components/List/ListItemIcon.js +2 -2
  122. package/dist/components/List/ListItemLabel.js +2 -2
  123. package/dist/components/Menu/Menu.js +1 -1
  124. package/dist/components/Menu/MenuItem.js +2 -2
  125. package/dist/components/Menu/MenuItems.js +2 -2
  126. package/dist/components/Menu/MenuListSearch.js +2 -2
  127. package/dist/components/Menu/MenuOption.js +1 -1
  128. package/dist/components/Menu/TabMenu.js +2 -2
  129. package/dist/components/Menu/VirtualizedMenuItems.js +3 -3
  130. package/dist/components/Menu/index.js +1 -1
  131. package/dist/components/Menu/useMenuSearch.js +1 -1
  132. package/dist/components/Menu/useMenuVirtualization.js +52 -3
  133. package/dist/components/Metadata/MetaItem.js +1 -1
  134. package/dist/components/Metadata/MetaItemIcon.js +2 -2
  135. package/dist/components/Metadata/MetaTimestamp.js +1 -1
  136. package/dist/components/Metadata/Metadata.js +2 -2
  137. package/dist/components/Metadata/index.js +1 -1
  138. package/dist/components/Modal/Modal.js +2 -2
  139. package/dist/components/Modal/ModalBase.js +2 -2
  140. package/dist/components/Modal/ModalHeader.js +2 -2
  141. package/dist/components/Modal/ModalIcon.js +2 -2
  142. package/dist/components/Notifications/NotificationItem.js +2 -2
  143. package/dist/components/Notifications/NotificationItemBase.js +2 -2
  144. package/dist/components/Notifications/NotificationItemControls.js +2 -2
  145. package/dist/components/Notifications/NotificationItemIcon.js +2 -2
  146. package/dist/components/Page/AccordionSection.js +2 -2
  147. package/dist/components/Page/ContactButtons.js +2 -2
  148. package/dist/components/Page/ContactSection.js +2 -2
  149. package/dist/components/Page/PageDetails.js +1 -1
  150. package/dist/components/Page/PageMenu.js +2 -2
  151. package/dist/components/Page/PageNav.js +2 -2
  152. package/dist/components/Page/Section.js +2 -2
  153. package/dist/components/Pagination/Pagination.js +2 -2
  154. package/dist/components/ResourceListItem/ResourceListItem.js +2 -2
  155. package/dist/components/RootProvider/RootProvider.js +2 -2
  156. package/dist/components/RootProvider/index.js +1 -1
  157. package/dist/components/Search/SearchItem.js +2 -2
  158. package/dist/components/Searchbar/Autocomplete.js +2 -2
  159. package/dist/components/Searchbar/AutocompleteItem.js +2 -2
  160. package/dist/components/Searchbar/Searchbar.js +2 -2
  161. package/dist/components/Searchbar/SearchbarField.js +2 -2
  162. package/dist/components/Settings/SettingsItem.js +2 -2
  163. package/dist/components/Settings/SettingsItemBase.js +2 -2
  164. package/dist/components/Settings/SettingsList.js +2 -2
  165. package/dist/components/Settings/SettingsListVirtual.js +3 -3
  166. package/dist/components/Settings/SettingsModal.js +2 -2
  167. package/dist/components/Settings/SettingsSection.js +2 -2
  168. package/dist/components/Settings/UsedByLog.js +2 -2
  169. package/dist/components/Settings/UsedByLogItem.js +2 -2
  170. package/dist/components/SkipLink/SkipLink.js +1 -1
  171. package/dist/components/Snackbar/SnackbarItem.js +2 -2
  172. package/dist/components/Timeline/Timeline.js +2 -2
  173. package/dist/components/Timeline/TimelineActivity.js +2 -2
  174. package/dist/components/Timeline/TimelineBase.js +2 -2
  175. package/dist/components/Timeline/TimelineFooter.js +2 -2
  176. package/dist/components/Timeline/TimelineHeader.js +2 -2
  177. package/dist/components/Timeline/TimelineIcon.js +2 -2
  178. package/dist/components/Timeline/TimelineSection.js +2 -2
  179. package/dist/components/Timeline/TimelineSegment.js +2 -2
  180. package/dist/components/Toolbar/DatepickerFilter.js +2 -2
  181. package/dist/components/Toolbar/SelectDateFilter.js +2 -2
  182. package/dist/components/Toolbar/Toolbar.js +1 -1
  183. package/dist/components/Toolbar/ToolbarFilter.js +2 -2
  184. package/dist/components/Toolbar/ToolbarFilterAddMenu.js +2 -2
  185. package/dist/components/Toolbar/ToolbarFilterButton.js +2 -2
  186. package/dist/components/Toolbar/ToolbarFilterMenu.js +2 -2
  187. package/dist/components/Toolbar/ToolbarMenu.js +2 -2
  188. package/dist/components/Toolbar/ToolbarSearch.js +2 -2
  189. package/dist/components/Toolbar/index.js +1 -1
  190. package/dist/components/Tooltip/Tooltip.js +1 -1
  191. package/dist/components/Transmission/Transmission.js +2 -2
  192. package/dist/components/Transmission/TransmissionList.js +2 -2
  193. package/dist/components/Transmission/TransmissionType.js +2 -2
  194. package/dist/components/Typography/Heading.js +2 -2
  195. package/dist/components/Typography/Link.js +1 -1
  196. package/dist/components/Typography/index.js +1 -1
  197. package/dist/components/UserListItem/UserListItem.js +2 -2
  198. package/dist/components/index.js +3 -3
  199. package/dist/hooks/useAccountSelector.js +2 -2
  200. package/dist/index-Bk81X-kr.js +913 -0
  201. package/dist/index.js +3 -3
  202. package/dist/tooltip-Caqi75cv.js +5522 -0
  203. package/dist/types/lib/components/Menu/useMenuVirtualization.d.ts +1 -1
  204. package/dist/{use-pagination-BBfRRN5_.js → use-pagination-Bi9sgBmS.js} +1 -1
  205. package/package.json +2 -2
  206. package/dist/tooltip-Ct39-719.js +0 -6303
  207. package/dist/useMenuVirtualization-DpvWCsyD.js +0 -598
@@ -1,598 +0,0 @@
1
- "use client";
2
- import * as E from "react";
3
- import { useState as C, useLayoutEffect as T, useMemo as _ } from "react";
4
- import { flushSync as R } from "react-dom";
5
- function v(r, l, e) {
6
- let s = e.initialDeps ?? [], t;
7
- function i() {
8
- var n, o, h, c;
9
- let a;
10
- e.key && ((n = e.debug) != null && n.call(e)) && (a = Date.now());
11
- const u = r();
12
- if (!(u.length !== s.length || u.some((g, m) => s[m] !== g)))
13
- return t;
14
- s = u;
15
- let d;
16
- if (e.key && ((o = e.debug) != null && o.call(e)) && (d = Date.now()), t = l(...u), e.key && ((h = e.debug) != null && h.call(e))) {
17
- const g = Math.round((Date.now() - a) * 100) / 100, m = Math.round((Date.now() - d) * 100) / 100, x = m / 16, b = (p, I) => {
18
- for (p = String(p); p.length < I; )
19
- p = " " + p;
20
- return p;
21
- };
22
- console.info(
23
- `%c⏱ ${b(m, 5)} /${b(g, 5)} ms`,
24
- `
25
- font-size: .6rem;
26
- font-weight: bold;
27
- color: hsl(${Math.max(
28
- 0,
29
- Math.min(120 - 120 * x, 120)
30
- )}deg 100% 31%);`,
31
- e?.key
32
- );
33
- }
34
- return (c = e?.onChange) == null || c.call(e, t), t;
35
- }
36
- return i.updateDeps = (n) => {
37
- s = n;
38
- }, i;
39
- }
40
- function y(r, l) {
41
- if (r === void 0)
42
- throw new Error("Unexpected undefined");
43
- return r;
44
- }
45
- const D = (r, l) => Math.abs(r - l) <= 1, A = (r, l, e) => {
46
- let s;
47
- return function(...t) {
48
- r.clearTimeout(s), s = r.setTimeout(() => l.apply(this, t), e);
49
- };
50
- }, M = (r) => {
51
- const { offsetWidth: l, offsetHeight: e } = r;
52
- return { width: l, height: e };
53
- }, F = (r) => r, k = (r) => {
54
- const l = Math.max(r.startIndex - r.overscan, 0), e = Math.min(r.endIndex + r.overscan, r.count - 1), s = [];
55
- for (let t = l; t <= e; t++)
56
- s.push(t);
57
- return s;
58
- }, N = (r, l) => {
59
- const e = r.scrollElement;
60
- if (!e)
61
- return;
62
- const s = r.targetWindow;
63
- if (!s)
64
- return;
65
- const t = (n) => {
66
- const { width: o, height: h } = n;
67
- l({ width: Math.round(o), height: Math.round(h) });
68
- };
69
- if (t(M(e)), !s.ResizeObserver)
70
- return () => {
71
- };
72
- const i = new s.ResizeObserver((n) => {
73
- const o = () => {
74
- const h = n[0];
75
- if (h?.borderBoxSize) {
76
- const c = h.borderBoxSize[0];
77
- if (c) {
78
- t({ width: c.inlineSize, height: c.blockSize });
79
- return;
80
- }
81
- }
82
- t(M(e));
83
- };
84
- r.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(o) : o();
85
- });
86
- return i.observe(e, { box: "border-box" }), () => {
87
- i.unobserve(e);
88
- };
89
- }, S = {
90
- passive: !0
91
- }, w = typeof window > "u" ? !0 : "onscrollend" in window, W = (r, l) => {
92
- const e = r.scrollElement;
93
- if (!e)
94
- return;
95
- const s = r.targetWindow;
96
- if (!s)
97
- return;
98
- let t = 0;
99
- const i = r.options.useScrollendEvent && w ? () => {
100
- } : A(
101
- s,
102
- () => {
103
- l(t, !1);
104
- },
105
- r.options.isScrollingResetDelay
106
- ), n = (a) => () => {
107
- const { horizontal: u, isRtl: f } = r.options;
108
- t = u ? e.scrollLeft * (f && -1 || 1) : e.scrollTop, i(), l(t, a);
109
- }, o = n(!0), h = n(!1);
110
- h(), e.addEventListener("scroll", o, S);
111
- const c = r.options.useScrollendEvent && w;
112
- return c && e.addEventListener("scrollend", h, S), () => {
113
- e.removeEventListener("scroll", o), c && e.removeEventListener("scrollend", h);
114
- };
115
- }, V = (r, l, e) => {
116
- if (l?.borderBoxSize) {
117
- const s = l.borderBoxSize[0];
118
- if (s)
119
- return Math.round(
120
- s[e.options.horizontal ? "inlineSize" : "blockSize"]
121
- );
122
- }
123
- return r[e.options.horizontal ? "offsetWidth" : "offsetHeight"];
124
- }, L = (r, {
125
- adjustments: l = 0,
126
- behavior: e
127
- }, s) => {
128
- var t, i;
129
- const n = r + l;
130
- (i = (t = s.scrollElement) == null ? void 0 : t.scrollTo) == null || i.call(t, {
131
- [s.options.horizontal ? "left" : "top"]: n,
132
- behavior: e
133
- });
134
- };
135
- class P {
136
- constructor(l) {
137
- this.unsubs = [], this.scrollElement = null, this.targetWindow = null, this.isScrolling = !1, this.scrollToIndexTimeoutId = null, this.measurementsCache = [], this.itemSizeCache = /* @__PURE__ */ new Map(), this.pendingMeasuredCacheIndexes = [], this.scrollRect = null, this.scrollOffset = null, this.scrollDirection = null, this.scrollAdjustments = 0, this.elementsCache = /* @__PURE__ */ new Map(), this.observer = /* @__PURE__ */ (() => {
138
- let e = null;
139
- const s = () => e || (!this.targetWindow || !this.targetWindow.ResizeObserver ? null : e = new this.targetWindow.ResizeObserver((t) => {
140
- t.forEach((i) => {
141
- const n = () => {
142
- this._measureElement(i.target, i);
143
- };
144
- this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(n) : n();
145
- });
146
- }));
147
- return {
148
- disconnect: () => {
149
- var t;
150
- (t = s()) == null || t.disconnect(), e = null;
151
- },
152
- observe: (t) => {
153
- var i;
154
- return (i = s()) == null ? void 0 : i.observe(t, { box: "border-box" });
155
- },
156
- unobserve: (t) => {
157
- var i;
158
- return (i = s()) == null ? void 0 : i.unobserve(t);
159
- }
160
- };
161
- })(), this.range = null, this.setOptions = (e) => {
162
- Object.entries(e).forEach(([s, t]) => {
163
- typeof t > "u" && delete e[s];
164
- }), this.options = {
165
- debug: !1,
166
- initialOffset: 0,
167
- overscan: 1,
168
- paddingStart: 0,
169
- paddingEnd: 0,
170
- scrollPaddingStart: 0,
171
- scrollPaddingEnd: 0,
172
- horizontal: !1,
173
- getItemKey: F,
174
- rangeExtractor: k,
175
- onChange: () => {
176
- },
177
- measureElement: V,
178
- initialRect: { width: 0, height: 0 },
179
- scrollMargin: 0,
180
- gap: 0,
181
- indexAttribute: "data-index",
182
- initialMeasurementsCache: [],
183
- lanes: 1,
184
- isScrollingResetDelay: 150,
185
- enabled: !0,
186
- isRtl: !1,
187
- useScrollendEvent: !1,
188
- useAnimationFrameWithResizeObserver: !1,
189
- ...e
190
- };
191
- }, this.notify = (e) => {
192
- var s, t;
193
- (t = (s = this.options).onChange) == null || t.call(s, this, e);
194
- }, this.maybeNotify = v(
195
- () => (this.calculateRange(), [
196
- this.isScrolling,
197
- this.range ? this.range.startIndex : null,
198
- this.range ? this.range.endIndex : null
199
- ]),
200
- (e) => {
201
- this.notify(e);
202
- },
203
- {
204
- key: process.env.NODE_ENV !== "production" && "maybeNotify",
205
- debug: () => this.options.debug,
206
- initialDeps: [
207
- this.isScrolling,
208
- this.range ? this.range.startIndex : null,
209
- this.range ? this.range.endIndex : null
210
- ]
211
- }
212
- ), this.cleanup = () => {
213
- this.unsubs.filter(Boolean).forEach((e) => e()), this.unsubs = [], this.observer.disconnect(), this.scrollElement = null, this.targetWindow = null;
214
- }, this._didMount = () => () => {
215
- this.cleanup();
216
- }, this._willUpdate = () => {
217
- var e;
218
- const s = this.options.enabled ? this.options.getScrollElement() : null;
219
- if (this.scrollElement !== s) {
220
- if (this.cleanup(), !s) {
221
- this.maybeNotify();
222
- return;
223
- }
224
- this.scrollElement = s, this.scrollElement && "ownerDocument" in this.scrollElement ? this.targetWindow = this.scrollElement.ownerDocument.defaultView : this.targetWindow = ((e = this.scrollElement) == null ? void 0 : e.window) ?? null, this.elementsCache.forEach((t) => {
225
- this.observer.observe(t);
226
- }), this._scrollToOffset(this.getScrollOffset(), {
227
- adjustments: void 0,
228
- behavior: void 0
229
- }), this.unsubs.push(
230
- this.options.observeElementRect(this, (t) => {
231
- this.scrollRect = t, this.maybeNotify();
232
- })
233
- ), this.unsubs.push(
234
- this.options.observeElementOffset(this, (t, i) => {
235
- this.scrollAdjustments = 0, this.scrollDirection = i ? this.getScrollOffset() < t ? "forward" : "backward" : null, this.scrollOffset = t, this.isScrolling = i, this.maybeNotify();
236
- })
237
- );
238
- }
239
- }, this.getSize = () => this.options.enabled ? (this.scrollRect = this.scrollRect ?? this.options.initialRect, this.scrollRect[this.options.horizontal ? "width" : "height"]) : (this.scrollRect = null, 0), this.getScrollOffset = () => this.options.enabled ? (this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset == "function" ? this.options.initialOffset() : this.options.initialOffset), this.scrollOffset) : (this.scrollOffset = null, 0), this.getFurthestMeasurement = (e, s) => {
240
- const t = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
241
- for (let n = s - 1; n >= 0; n--) {
242
- const o = e[n];
243
- if (t.has(o.lane))
244
- continue;
245
- const h = i.get(
246
- o.lane
247
- );
248
- if (h == null || o.end > h.end ? i.set(o.lane, o) : o.end < h.end && t.set(o.lane, !0), t.size === this.options.lanes)
249
- break;
250
- }
251
- return i.size === this.options.lanes ? Array.from(i.values()).sort((n, o) => n.end === o.end ? n.index - o.index : n.end - o.end)[0] : void 0;
252
- }, this.getMeasurementOptions = v(
253
- () => [
254
- this.options.count,
255
- this.options.paddingStart,
256
- this.options.scrollMargin,
257
- this.options.getItemKey,
258
- this.options.enabled
259
- ],
260
- (e, s, t, i, n) => (this.pendingMeasuredCacheIndexes = [], {
261
- count: e,
262
- paddingStart: s,
263
- scrollMargin: t,
264
- getItemKey: i,
265
- enabled: n
266
- }),
267
- {
268
- key: !1
269
- }
270
- ), this.getMeasurements = v(
271
- () => [this.getMeasurementOptions(), this.itemSizeCache],
272
- ({ count: e, paddingStart: s, scrollMargin: t, getItemKey: i, enabled: n }, o) => {
273
- if (!n)
274
- return this.measurementsCache = [], this.itemSizeCache.clear(), [];
275
- this.measurementsCache.length === 0 && (this.measurementsCache = this.options.initialMeasurementsCache, this.measurementsCache.forEach((a) => {
276
- this.itemSizeCache.set(a.key, a.size);
277
- }));
278
- const h = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
279
- this.pendingMeasuredCacheIndexes = [];
280
- const c = this.measurementsCache.slice(0, h);
281
- for (let a = h; a < e; a++) {
282
- const u = i(a), f = this.options.lanes === 1 ? c[a - 1] : this.getFurthestMeasurement(c, a), d = f ? f.end + this.options.gap : s + t, g = o.get(u), m = typeof g == "number" ? g : this.options.estimateSize(a), x = d + m, b = f ? f.lane : a % this.options.lanes;
283
- c[a] = {
284
- index: a,
285
- start: d,
286
- size: m,
287
- end: x,
288
- key: u,
289
- lane: b
290
- };
291
- }
292
- return this.measurementsCache = c, c;
293
- },
294
- {
295
- key: process.env.NODE_ENV !== "production" && "getMeasurements",
296
- debug: () => this.options.debug
297
- }
298
- ), this.calculateRange = v(
299
- () => [
300
- this.getMeasurements(),
301
- this.getSize(),
302
- this.getScrollOffset(),
303
- this.options.lanes
304
- ],
305
- (e, s, t, i) => this.range = e.length > 0 && s > 0 ? j({
306
- measurements: e,
307
- outerSize: s,
308
- scrollOffset: t,
309
- lanes: i
310
- }) : null,
311
- {
312
- key: process.env.NODE_ENV !== "production" && "calculateRange",
313
- debug: () => this.options.debug
314
- }
315
- ), this.getVirtualIndexes = v(
316
- () => {
317
- let e = null, s = null;
318
- const t = this.calculateRange();
319
- return t && (e = t.startIndex, s = t.endIndex), this.maybeNotify.updateDeps([this.isScrolling, e, s]), [
320
- this.options.rangeExtractor,
321
- this.options.overscan,
322
- this.options.count,
323
- e,
324
- s
325
- ];
326
- },
327
- (e, s, t, i, n) => i === null || n === null ? [] : e({
328
- startIndex: i,
329
- endIndex: n,
330
- overscan: s,
331
- count: t
332
- }),
333
- {
334
- key: process.env.NODE_ENV !== "production" && "getVirtualIndexes",
335
- debug: () => this.options.debug
336
- }
337
- ), this.indexFromElement = (e) => {
338
- const s = this.options.indexAttribute, t = e.getAttribute(s);
339
- return t ? parseInt(t, 10) : (console.warn(
340
- `Missing attribute name '${s}={index}' on measured element.`
341
- ), -1);
342
- }, this._measureElement = (e, s) => {
343
- const t = this.indexFromElement(e), i = this.measurementsCache[t];
344
- if (!i)
345
- return;
346
- const n = i.key, o = this.elementsCache.get(n);
347
- o !== e && (o && this.observer.unobserve(o), this.observer.observe(e), this.elementsCache.set(n, e)), e.isConnected && this.resizeItem(t, this.options.measureElement(e, s, this));
348
- }, this.resizeItem = (e, s) => {
349
- const t = this.measurementsCache[e];
350
- if (!t)
351
- return;
352
- const i = this.itemSizeCache.get(t.key) ?? t.size, n = s - i;
353
- n !== 0 && ((this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(t, n, this) : t.start < this.getScrollOffset() + this.scrollAdjustments) && (process.env.NODE_ENV !== "production" && this.options.debug && console.info("correction", n), this._scrollToOffset(this.getScrollOffset(), {
354
- adjustments: this.scrollAdjustments += n,
355
- behavior: void 0
356
- })), this.pendingMeasuredCacheIndexes.push(t.index), this.itemSizeCache = new Map(this.itemSizeCache.set(t.key, s)), this.notify(!1));
357
- }, this.measureElement = (e) => {
358
- if (!e) {
359
- this.elementsCache.forEach((s, t) => {
360
- s.isConnected || (this.observer.unobserve(s), this.elementsCache.delete(t));
361
- });
362
- return;
363
- }
364
- this._measureElement(e, void 0);
365
- }, this.getVirtualItems = v(
366
- () => [this.getVirtualIndexes(), this.getMeasurements()],
367
- (e, s) => {
368
- const t = [];
369
- for (let i = 0, n = e.length; i < n; i++) {
370
- const o = e[i], h = s[o];
371
- t.push(h);
372
- }
373
- return t;
374
- },
375
- {
376
- key: process.env.NODE_ENV !== "production" && "getVirtualItems",
377
- debug: () => this.options.debug
378
- }
379
- ), this.getVirtualItemForOffset = (e) => {
380
- const s = this.getMeasurements();
381
- if (s.length !== 0)
382
- return y(
383
- s[O(
384
- 0,
385
- s.length - 1,
386
- (t) => y(s[t]).start,
387
- e
388
- )]
389
- );
390
- }, this.getOffsetForAlignment = (e, s, t = 0) => {
391
- const i = this.getSize(), n = this.getScrollOffset();
392
- s === "auto" && (s = e >= n + i ? "end" : "start"), s === "center" ? e += (t - i) / 2 : s === "end" && (e -= i);
393
- const o = this.getTotalSize() - i;
394
- return Math.max(Math.min(o, e), 0);
395
- }, this.getOffsetForIndex = (e, s = "auto") => {
396
- e = Math.max(0, Math.min(e, this.options.count - 1));
397
- const t = this.measurementsCache[e];
398
- if (!t)
399
- return;
400
- const i = this.getSize(), n = this.getScrollOffset();
401
- if (s === "auto")
402
- if (t.end >= n + i - this.options.scrollPaddingEnd)
403
- s = "end";
404
- else if (t.start <= n + this.options.scrollPaddingStart)
405
- s = "start";
406
- else
407
- return [n, s];
408
- const o = s === "end" ? t.end + this.options.scrollPaddingEnd : t.start - this.options.scrollPaddingStart;
409
- return [
410
- this.getOffsetForAlignment(o, s, t.size),
411
- s
412
- ];
413
- }, this.isDynamicMode = () => this.elementsCache.size > 0, this.cancelScrollToIndex = () => {
414
- this.scrollToIndexTimeoutId !== null && this.targetWindow && (this.targetWindow.clearTimeout(this.scrollToIndexTimeoutId), this.scrollToIndexTimeoutId = null);
415
- }, this.scrollToOffset = (e, { align: s = "start", behavior: t } = {}) => {
416
- this.cancelScrollToIndex(), t === "smooth" && this.isDynamicMode() && console.warn(
417
- "The `smooth` scroll behavior is not fully supported with dynamic size."
418
- ), this._scrollToOffset(this.getOffsetForAlignment(e, s), {
419
- adjustments: void 0,
420
- behavior: t
421
- });
422
- }, this.scrollToIndex = (e, { align: s = "auto", behavior: t } = {}) => {
423
- e = Math.max(0, Math.min(e, this.options.count - 1)), this.cancelScrollToIndex(), t === "smooth" && this.isDynamicMode() && console.warn(
424
- "The `smooth` scroll behavior is not fully supported with dynamic size."
425
- );
426
- const i = this.getOffsetForIndex(e, s);
427
- if (!i) return;
428
- const [n, o] = i;
429
- this._scrollToOffset(n, { adjustments: void 0, behavior: t }), t !== "smooth" && this.isDynamicMode() && this.targetWindow && (this.scrollToIndexTimeoutId = this.targetWindow.setTimeout(() => {
430
- if (this.scrollToIndexTimeoutId = null, this.elementsCache.has(
431
- this.options.getItemKey(e)
432
- )) {
433
- const c = this.getOffsetForIndex(e, o);
434
- if (!c) return;
435
- const [a] = c, u = this.getScrollOffset();
436
- D(a, u) || this.scrollToIndex(e, { align: o, behavior: t });
437
- } else
438
- this.scrollToIndex(e, { align: o, behavior: t });
439
- }));
440
- }, this.scrollBy = (e, { behavior: s } = {}) => {
441
- this.cancelScrollToIndex(), s === "smooth" && this.isDynamicMode() && console.warn(
442
- "The `smooth` scroll behavior is not fully supported with dynamic size."
443
- ), this._scrollToOffset(this.getScrollOffset() + e, {
444
- adjustments: void 0,
445
- behavior: s
446
- });
447
- }, this.getTotalSize = () => {
448
- var e;
449
- const s = this.getMeasurements();
450
- let t;
451
- if (s.length === 0)
452
- t = this.options.paddingStart;
453
- else if (this.options.lanes === 1)
454
- t = ((e = s[s.length - 1]) == null ? void 0 : e.end) ?? 0;
455
- else {
456
- const i = Array(this.options.lanes).fill(null);
457
- let n = s.length - 1;
458
- for (; n >= 0 && i.some((o) => o === null); ) {
459
- const o = s[n];
460
- i[o.lane] === null && (i[o.lane] = o.end), n--;
461
- }
462
- t = Math.max(...i.filter((o) => o !== null));
463
- }
464
- return Math.max(
465
- t - this.options.scrollMargin + this.options.paddingEnd,
466
- 0
467
- );
468
- }, this._scrollToOffset = (e, {
469
- adjustments: s,
470
- behavior: t
471
- }) => {
472
- this.options.scrollToFn(e, { behavior: t, adjustments: s }, this);
473
- }, this.measure = () => {
474
- this.itemSizeCache = /* @__PURE__ */ new Map(), this.notify(!1);
475
- }, this.setOptions(l);
476
- }
477
- }
478
- const O = (r, l, e, s) => {
479
- for (; r <= l; ) {
480
- const t = (r + l) / 2 | 0, i = e(t);
481
- if (i < s)
482
- r = t + 1;
483
- else if (i > s)
484
- l = t - 1;
485
- else
486
- return t;
487
- }
488
- return r > 0 ? r - 1 : 0;
489
- };
490
- function j({
491
- measurements: r,
492
- outerSize: l,
493
- scrollOffset: e,
494
- lanes: s
495
- }) {
496
- const t = r.length - 1, i = (h) => r[h].start;
497
- if (r.length <= s)
498
- return {
499
- startIndex: 0,
500
- endIndex: t
501
- };
502
- let n = O(
503
- 0,
504
- t,
505
- i,
506
- e
507
- ), o = n;
508
- if (s === 1)
509
- for (; o < t && r[o].end < e + l; )
510
- o++;
511
- else if (s > 1) {
512
- const h = Array(s).fill(0);
513
- for (; o < t && h.some((a) => a < e + l); ) {
514
- const a = r[o];
515
- h[a.lane] = a.end, o++;
516
- }
517
- const c = Array(s).fill(e + l);
518
- for (; n >= 0 && c.some((a) => a >= e); ) {
519
- const a = r[n];
520
- c[a.lane] = a.start, n--;
521
- }
522
- n = Math.max(0, n - n % s), o = Math.min(t, o + (s - 1 - o % s));
523
- }
524
- return { startIndex: n, endIndex: o };
525
- }
526
- const z = typeof document < "u" ? E.useLayoutEffect : E.useEffect;
527
- function B(r) {
528
- const l = E.useReducer(() => ({}), {})[1], e = {
529
- ...r,
530
- onChange: (t, i) => {
531
- var n;
532
- i ? R(l) : l(), (n = r.onChange) == null || n.call(r, t, i);
533
- }
534
- }, [s] = E.useState(
535
- () => new P(e)
536
- );
537
- return s.setOptions(e), z(() => s._didMount(), []), z(() => s._willUpdate()), s;
538
- }
539
- function H(r) {
540
- return B({
541
- observeElementRect: N,
542
- observeElementOffset: W,
543
- scrollToFn: L,
544
- ...r
545
- });
546
- }
547
- const U = ({
548
- menu: r,
549
- scrollRef: l
550
- }) => {
551
- const [e, s] = C(400);
552
- T(() => {
553
- const n = l.current;
554
- if (!n) return;
555
- const o = () => {
556
- const c = n.getBoundingClientRect().top || 0, a = Math.max(300, window.innerHeight - c - 8);
557
- s((u) => u === a ? u : a);
558
- };
559
- o(), window.addEventListener("resize", o);
560
- const h = new ResizeObserver(() => o());
561
- return h.observe(document.body), () => {
562
- window.removeEventListener("resize", o), h.disconnect();
563
- };
564
- }, [l]);
565
- const t = _(() => r.flatMap((n, o) => {
566
- const h = n?.items?.filter((d) => !d.props?.hidden) || [], c = n?.props || {}, { title: a, hidden: u = !1, divider: f = !0 } = c;
567
- return u ? [] : h.length === 0 && !a ? [] : [
568
- ...o > 0 && f ? [{ type: "divider" }] : [],
569
- ...a ? [{ type: "header", title: a }] : [],
570
- ...h.map((d) => ({
571
- type: "item",
572
- itemProps: d.props || {},
573
- active: d.active
574
- }))
575
- ];
576
- }), [r]), i = H({
577
- count: t.length,
578
- getScrollElement: () => l.current,
579
- useAnimationFrameWithResizeObserver: !0,
580
- estimateSize: (n) => {
581
- switch (t[n]?.type) {
582
- case "divider":
583
- return 9;
584
- case "header":
585
- return 36;
586
- default:
587
- return 44;
588
- }
589
- },
590
- gap: 0,
591
- paddingEnd: -8
592
- });
593
- return { flatMenu: t, virtualizer: i, scrollMaxHeight: e };
594
- };
595
- export {
596
- H as a,
597
- U as u
598
- };