@dbcdk/react-components 0.0.197 → 0.0.198

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 (55) hide show
  1. package/dist/components/json-viewer/JsonViewer.module.css +52 -0
  2. package/dist/components/json-viewer/JsonViewerShell.cjs +147 -143
  3. package/dist/components/json-viewer/JsonViewerShell.js +149 -145
  4. package/dist/components/line-viewer/LineViewer.cjs +15 -10
  5. package/dist/components/line-viewer/LineViewer.d.ts +1 -1
  6. package/dist/components/line-viewer/LineViewer.js +15 -10
  7. package/dist/components/line-viewer/LineViewer.module.css +58 -3
  8. package/dist/components/page-layout/PageLayout.module.css +1 -1
  9. package/dist/components/scroll-fade/ScrollFade.cjs +42 -0
  10. package/dist/components/scroll-fade/ScrollFade.d.ts +18 -0
  11. package/dist/components/scroll-fade/ScrollFade.js +36 -0
  12. package/dist/components/scroll-fade/ScrollFade.module.css +71 -0
  13. package/dist/components/search-box/SearchBox.cjs +39 -35
  14. package/dist/components/search-box/SearchBox.d.ts +2 -0
  15. package/dist/components/search-box/SearchBox.js +39 -35
  16. package/dist/components/table/Table.cjs +52 -23
  17. package/dist/components/table/Table.d.ts +1 -1
  18. package/dist/components/table/Table.js +53 -24
  19. package/dist/components/table/Table.module.css +4 -0
  20. package/dist/components/table/Table.types.d.ts +27 -0
  21. package/dist/components/table/TanstackTable.cjs +64 -64
  22. package/dist/components/table/TanstackTable.js +67 -67
  23. package/dist/components/table/columnLayout.utils.cjs +146 -0
  24. package/dist/components/table/columnLayout.utils.d.ts +44 -0
  25. package/dist/components/table/columnLayout.utils.js +141 -0
  26. package/dist/components/table/components/TableHeader.cjs +3 -1
  27. package/dist/components/table/components/TableHeader.d.ts +2 -1
  28. package/dist/components/table/components/TableHeader.js +3 -1
  29. package/dist/components/table/components/TableHeaderCell.cjs +29 -19
  30. package/dist/components/table/components/TableHeaderCell.d.ts +2 -1
  31. package/dist/components/table/components/TableHeaderCell.js +29 -19
  32. package/dist/components/table/hooks/useElementWidth.cjs +40 -0
  33. package/dist/components/table/hooks/useElementWidth.d.ts +7 -0
  34. package/dist/components/table/hooks/useElementWidth.js +38 -0
  35. package/dist/components/table/table.utils.cjs +24 -2
  36. package/dist/components/table/table.utils.d.ts +40 -2
  37. package/dist/components/table/table.utils.js +20 -2
  38. package/dist/components/table/tanstackTable.utils.cjs +33 -97
  39. package/dist/components/table/tanstackTable.utils.d.ts +24 -8
  40. package/dist/components/table/tanstackTable.utils.js +34 -99
  41. package/dist/components/xml-viewer/XmlViewer.cjs +15 -10
  42. package/dist/components/xml-viewer/XmlViewer.d.ts +1 -1
  43. package/dist/components/xml-viewer/XmlViewer.js +15 -10
  44. package/dist/components/xml-viewer/XmlViewer.module.css +58 -3
  45. package/dist/hooks/useScrollOverflow.cjs +71 -0
  46. package/dist/hooks/useScrollOverflow.d.ts +23 -0
  47. package/dist/hooks/useScrollOverflow.js +69 -0
  48. package/dist/hooks/useTableSettings.cjs +2 -1
  49. package/dist/hooks/useTableSettings.d.ts +1 -0
  50. package/dist/hooks/useTableSettings.js +2 -1
  51. package/dist/index.css +1 -0
  52. package/dist/utils/refs.utils.cjs +13 -0
  53. package/dist/utils/refs.utils.d.ts +7 -0
  54. package/dist/utils/refs.utils.js +11 -0
  55. package/package.json +1 -1
@@ -3,6 +3,7 @@
3
3
  --json-pane-border: color-mix(in oklab, var(--color-fg-inverse) 12%, transparent);
4
4
  --json-pane-border-strong: color-mix(in oklab, var(--color-fg-inverse) 18%, transparent);
5
5
  --json-pane-text: var(--color-fg-inverse);
6
+ --scroll-fade-color: var(--json-pane-bg);
6
7
  --json-pane-muted: color-mix(in oklab, var(--color-fg-inverse) 64%, transparent);
7
8
  --json-pane-subtle: color-mix(in oklab, var(--color-fg-inverse) 44%, transparent);
8
9
  --json-pane-hover: color-mix(in oklab, var(--color-fg-inverse) 8%, transparent);
@@ -165,6 +166,57 @@
165
166
  font-size: inherit;
166
167
  }
167
168
 
169
+ .borderless .rawPane {
170
+ padding: 0;
171
+ }
172
+
173
+ /* Raw view: zero-height sticky row so the settings button takes no vertical space. */
174
+ .floatingToolbar {
175
+ position: sticky;
176
+ top: var(--spacing-xs);
177
+ z-index: 1;
178
+ display: flex;
179
+ justify-content: flex-end;
180
+ flex: none;
181
+ height: 0;
182
+ /* Cancel the viewer's flex gap so this row adds no spacing. */
183
+ margin-block-end: calc(-1 * var(--spacing-xs));
184
+ }
185
+
186
+ .floatingButton {
187
+ display: block;
188
+ border-radius: var(--border-radius-default);
189
+ /* Opaque so scrolled text doesn't show through once it's stuck. */
190
+ background: var(--json-pane-bg);
191
+ }
192
+
193
+ .floatingSpacer {
194
+ float: right;
195
+ visibility: hidden;
196
+ margin-block-start: calc(-1 * var(--spacing-xs));
197
+ margin-inline: var(--spacing-xs) calc(-1 * var(--spacing-xs));
198
+ line-height: normal;
199
+ white-space: normal;
200
+ }
201
+
202
+ .borderless .floatingSpacer {
203
+ margin: 0 0 0 var(--spacing-xs);
204
+ }
205
+
206
+ /* While the pane scrolls vertically, keep the button clear of its scrollbar
207
+ (overlay scrollbars take no space, so nothing else moves it). */
208
+ .viewer:has([data-scrollable-y='true']) .floatingButton {
209
+ margin-inline-end: var(--spacing-md);
210
+ }
211
+
212
+ .viewer:has([data-scrollable-y='true']) .floatingSpacer {
213
+ margin-inline-end: calc(var(--spacing-md) - var(--spacing-xs));
214
+ }
215
+
216
+ .viewer.borderless:has([data-scrollable-y='true']) .floatingSpacer {
217
+ margin-inline-end: var(--spacing-md);
218
+ }
219
+
168
220
  .deleted,
169
221
  .deleted * {
170
222
  color: var(--color-status-error);
@@ -5,6 +5,7 @@ var jsxRuntime = require('react/jsx-runtime');
5
5
  var lucideReact = require('lucide-react');
6
6
  var Menu = require('../../components/menu/Menu');
7
7
  var Popover = require('../../components/popover/Popover');
8
+ var ScrollFade = require('../../components/scroll-fade/ScrollFade');
8
9
  var styles = require('./JsonViewer.module.css');
9
10
  var Button = require('../button/Button');
10
11
  var Icon = require('../icon/Icon');
@@ -42,164 +43,167 @@ function JsonViewerShell({
42
43
  handleExpandAll,
43
44
  handleCollapseAll
44
45
  } = state;
45
- return /* @__PURE__ */ jsxRuntime.jsxs(
46
- "section",
46
+ const surface = currentAppearance === "dark" ? "inverse" : void 0;
47
+ const showMetaRow = Boolean(helperText) || viewMode === "tree" && Boolean(normalizedQuery);
48
+ const settingsMenu = /* @__PURE__ */ jsxRuntime.jsx(
49
+ Popover.Popover,
47
50
  {
48
- className: [styles__default.default.viewer, borderless ? styles__default.default.borderless : "", className].filter(Boolean).join(" "),
49
- "data-appearance": currentAppearance,
50
- children: [
51
- /* @__PURE__ */ jsxRuntime.jsxs(
52
- "div",
51
+ matchTriggerWidth: false,
52
+ minWidth: "200px",
53
+ trigger: (toggle, _icon, isOpen) => /* @__PURE__ */ jsxRuntime.jsx(
54
+ Button.Button,
55
+ {
56
+ variant: "inline",
57
+ "aria-label": "Flere handlinger",
58
+ "aria-haspopup": "menu",
59
+ "aria-expanded": isOpen ? true : false,
60
+ onClick: toggle,
61
+ children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { customIcon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings2, { "aria-hidden": "true" }) })
62
+ }
63
+ ),
64
+ children: (close) => /* @__PURE__ */ jsxRuntime.jsxs(Menu.Menu, { children: [
65
+ /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { disabled: viewMode === "raw" || Boolean(normalizedQuery), children: /* @__PURE__ */ jsxRuntime.jsxs(
66
+ "button",
53
67
  {
54
- className: styles__default.default.toolbar,
55
- "data-surface": currentAppearance === "dark" ? "inverse" : void 0,
68
+ type: "button",
69
+ onClick: () => {
70
+ handleExpandAll();
71
+ close();
72
+ },
56
73
  children: [
57
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.toolbarTop, children: [
58
- viewMode === "tree" ? /* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: inputId, className: styles__default.default.searchField, children: [
59
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: styles__default.default.searchIcon, "aria-hidden": "true" }),
60
- /* @__PURE__ */ jsxRuntime.jsx(
61
- "input",
62
- {
63
- id: inputId,
64
- type: "search",
65
- value: queryInput,
66
- onChange: (event) => setQueryInput(event.target.value),
67
- placeholder: searchPlaceholder,
68
- className: styles__default.default.searchInput
69
- }
70
- ),
71
- queryInput ? /* @__PURE__ */ jsxRuntime.jsx(
72
- "button",
73
- {
74
- type: "button",
75
- className: styles__default.default.clearButton,
76
- "aria-label": "Ryd s\xF8gning",
77
- onClick: () => {
78
- setQueryInput("");
79
- setQuery("");
80
- },
81
- children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { "aria-hidden": "true" })
82
- }
83
- ) : null
84
- ] }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
85
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.actions, children: /* @__PURE__ */ jsxRuntime.jsx(
86
- Popover.Popover,
87
- {
88
- matchTriggerWidth: false,
89
- minWidth: "200px",
90
- trigger: (toggle, _icon, isOpen) => /* @__PURE__ */ jsxRuntime.jsx(
91
- Button.Button,
92
- {
93
- variant: "inline",
94
- "aria-label": "Flere handlinger",
95
- "aria-haspopup": "menu",
96
- "aria-expanded": isOpen ? true : false,
97
- onClick: toggle,
98
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { customIcon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings2, { "aria-hidden": "true" }) })
99
- }
100
- ),
101
- children: (close) => /* @__PURE__ */ jsxRuntime.jsxs(Menu.Menu, { children: [
102
- /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { disabled: viewMode === "raw" || Boolean(normalizedQuery), children: /* @__PURE__ */ jsxRuntime.jsxs(
103
- "button",
104
- {
105
- type: "button",
106
- onClick: () => {
107
- handleExpandAll();
108
- close();
109
- },
110
- children: [
111
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowDown, { "aria-hidden": "true" }),
112
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Fold alle ud" })
113
- ]
114
- }
115
- ) }),
116
- /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { disabled: viewMode === "raw" || Boolean(normalizedQuery), children: /* @__PURE__ */ jsxRuntime.jsxs(
117
- "button",
118
- {
119
- type: "button",
120
- onClick: () => {
121
- handleCollapseAll();
122
- close();
123
- },
124
- children: [
125
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { "aria-hidden": "true" }),
126
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Fold alle sammen" })
127
- ]
128
- }
129
- ) }),
130
- /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Separator, {}),
131
- /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
132
- "button",
133
- {
134
- type: "button",
135
- onClick: () => {
136
- setViewMode((mode) => mode === "raw" ? "tree" : "raw");
137
- close();
138
- },
139
- children: [
140
- viewMode === "raw" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ListTree, { "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Braces, { "aria-hidden": "true" }),
141
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: viewMode === "raw" ? "Vis tr\xE6" : "Vis raw" })
142
- ]
143
- }
144
- ) }),
145
- /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
146
- "button",
147
- {
148
- type: "button",
149
- onClick: () => {
150
- handleToggleAppearance();
151
- close();
152
- },
153
- children: [
154
- currentAppearance === "dark" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sun, { "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Moon, { "aria-hidden": "true" }),
155
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: currentAppearance === "dark" ? "Lys visning" : "M\xF8rk visning" })
156
- ]
157
- }
158
- ) }),
159
- /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Separator, {}),
160
- /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
161
- "button",
162
- {
163
- type: "button",
164
- onClick: () => {
165
- handleCopyAll();
166
- close();
167
- },
168
- children: [
169
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClipboardCopy, { "aria-hidden": "true" }),
170
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Kopi\xE9r JSON" })
171
- ]
172
- }
173
- ) })
174
- ] })
175
- }
176
- ) })
177
- ] }),
178
- helperText || viewMode === "tree" && normalizedQuery ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.metaRow, children: [
179
- helperText ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.helperText, children: helperText }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
180
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.statusText, children: viewMode === "tree" && normalizedQuery ? `${matches.size} matchende node${matches.size === 1 ? "" : "r"}` : "" })
181
- ] }) : null
74
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowDown, { "aria-hidden": "true" }),
75
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Fold alle ud" })
182
76
  ]
183
77
  }
184
- ),
185
- viewMode === "raw" ? /* @__PURE__ */ jsxRuntime.jsx(
186
- "pre",
78
+ ) }),
79
+ /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { disabled: viewMode === "raw" || Boolean(normalizedQuery), children: /* @__PURE__ */ jsxRuntime.jsxs(
80
+ "button",
187
81
  {
188
- className: [styles__default.default.rawPane, deleted ? styles__default.default.deleted : ""].filter(Boolean).join(" "),
189
- style: maxHeight !== void 0 ? { maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight } : void 0,
190
- children: rawJson
82
+ type: "button",
83
+ onClick: () => {
84
+ handleCollapseAll();
85
+ close();
86
+ },
87
+ children: [
88
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { "aria-hidden": "true" }),
89
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Fold alle sammen" })
90
+ ]
191
91
  }
192
- ) : /* @__PURE__ */ jsxRuntime.jsx(
92
+ ) }),
93
+ /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Separator, {}),
94
+ /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
95
+ "button",
96
+ {
97
+ type: "button",
98
+ onClick: () => {
99
+ setViewMode((mode) => mode === "raw" ? "tree" : "raw");
100
+ close();
101
+ },
102
+ children: [
103
+ viewMode === "raw" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ListTree, { "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Braces, { "aria-hidden": "true" }),
104
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: viewMode === "raw" ? "Vis tr\xE6" : "Vis raw" })
105
+ ]
106
+ }
107
+ ) }),
108
+ /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
109
+ "button",
110
+ {
111
+ type: "button",
112
+ onClick: () => {
113
+ handleToggleAppearance();
114
+ close();
115
+ },
116
+ children: [
117
+ currentAppearance === "dark" ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sun, { "aria-hidden": "true" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Moon, { "aria-hidden": "true" }),
118
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: currentAppearance === "dark" ? "Lys visning" : "M\xF8rk visning" })
119
+ ]
120
+ }
121
+ ) }),
122
+ /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Separator, {}),
123
+ /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { children: /* @__PURE__ */ jsxRuntime.jsxs(
124
+ "button",
125
+ {
126
+ type: "button",
127
+ onClick: () => {
128
+ handleCopyAll();
129
+ close();
130
+ },
131
+ children: [
132
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClipboardCopy, { "aria-hidden": "true" }),
133
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Kopi\xE9r JSON" })
134
+ ]
135
+ }
136
+ ) })
137
+ ] })
138
+ }
139
+ );
140
+ return /* @__PURE__ */ jsxRuntime.jsxs(
141
+ "section",
142
+ {
143
+ className: [styles__default.default.viewer, borderless ? styles__default.default.borderless : "", className].filter(Boolean).join(" "),
144
+ "data-appearance": currentAppearance,
145
+ children: [
146
+ viewMode === "tree" || showMetaRow ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.toolbar, "data-surface": surface, children: [
147
+ viewMode === "tree" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.toolbarTop, children: [
148
+ /* @__PURE__ */ jsxRuntime.jsxs("label", { htmlFor: inputId, className: styles__default.default.searchField, children: [
149
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: styles__default.default.searchIcon, "aria-hidden": "true" }),
150
+ /* @__PURE__ */ jsxRuntime.jsx(
151
+ "input",
152
+ {
153
+ id: inputId,
154
+ type: "search",
155
+ value: queryInput,
156
+ onChange: (event) => setQueryInput(event.target.value),
157
+ placeholder: searchPlaceholder,
158
+ className: styles__default.default.searchInput
159
+ }
160
+ ),
161
+ queryInput ? /* @__PURE__ */ jsxRuntime.jsx(
162
+ "button",
163
+ {
164
+ type: "button",
165
+ className: styles__default.default.clearButton,
166
+ "aria-label": "Ryd s\xF8gning",
167
+ onClick: () => {
168
+ setQueryInput("");
169
+ setQuery("");
170
+ },
171
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { "aria-hidden": "true" })
172
+ }
173
+ ) : null
174
+ ] }),
175
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.actions, children: settingsMenu })
176
+ ] }) : null,
177
+ showMetaRow ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.metaRow, children: [
178
+ helperText ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.helperText, children: helperText }) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
179
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.statusText, children: viewMode === "tree" && normalizedQuery ? `${matches.size} matchende node${matches.size === 1 ? "" : "r"}` : "" })
180
+ ] }) : null
181
+ ] }) : null,
182
+ viewMode === "raw" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
183
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.floatingToolbar, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.floatingButton, "data-surface": surface, children: settingsMenu }) }),
184
+ /* @__PURE__ */ jsxRuntime.jsx(ScrollFade.ScrollFade, { children: (scrollRef) => /* @__PURE__ */ jsxRuntime.jsxs(
185
+ "pre",
186
+ {
187
+ ref: scrollRef,
188
+ className: [styles__default.default.rawPane, deleted ? styles__default.default.deleted : ""].filter(Boolean).join(" "),
189
+ style: maxHeight !== void 0 ? { maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight } : void 0,
190
+ children: [
191
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.floatingSpacer, "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { variant: "inline", tabIndex: -1, children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { customIcon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings2, {}) }) }) }),
192
+ rawJson
193
+ ]
194
+ }
195
+ ) })
196
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(ScrollFade.ScrollFade, { scrollRef: treePaneRef, children: (scrollRef) => /* @__PURE__ */ jsxRuntime.jsx(
193
197
  "div",
194
198
  {
195
199
  className: [styles__default.default.treePane, deleted ? styles__default.default.deleted : ""].filter(Boolean).join(" "),
196
200
  role: "tree",
197
201
  "aria-label": "JSON-visning",
198
- ref: treePaneRef,
202
+ ref: scrollRef,
199
203
  style: maxHeight !== void 0 ? { maxHeight: typeof maxHeight === "number" ? `${maxHeight}px` : maxHeight } : void 0,
200
204
  children: hasResults ? children : /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.emptyState, children: emptySearchText })
201
205
  }
202
- )
206
+ ) })
203
207
  ]
204
208
  }
205
209
  );