@harborclient/sdk 1.3.3 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,6 +3,15 @@ import { RESIZABLE_SYNC_EVENT } from './applyResizableSizes.js';
3
3
  export { applyResizableSizes, RESIZABLE_SYNC_EVENT } from './applyResizableSizes.js';
4
4
  /** Id of the shared stylesheet injected during resize drags. */
5
5
  const RESIZING_STYLE_ID = 'hc-resizable-drag-styles';
6
+ /**
7
+ * Fraction of the remaining target gap closed per animation frame during drag.
8
+ * Lower values feel heavier; higher values track the pointer more closely.
9
+ */
10
+ const RESIZE_DRAG_LERP = 0.22;
11
+ /**
12
+ * Stop the drag lerp loop when within this many pixels of the pointer target.
13
+ */
14
+ const RESIZE_DRAG_SNAP_EPSILON = 0.5;
6
15
  /**
7
16
  * Injects shared CSS that neutralizes webviews/iframes and shows the resize cursor during drags.
8
17
  * Electron webviews paint above normal DOM, so pointer-events must be disabled on the webview itself.
@@ -45,6 +54,17 @@ function setResizingState(axis) {
45
54
  function clearResizingState() {
46
55
  delete document.body.dataset.hcResizing;
47
56
  }
57
+ /**
58
+ * Returns whether the user prefers reduced motion.
59
+ *
60
+ * @returns True when the OS requests minimized animation.
61
+ */
62
+ function prefersReducedMotion() {
63
+ if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {
64
+ return false;
65
+ }
66
+ return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
67
+ }
48
68
  /**
49
69
  * Loads a persisted size from localStorage.
50
70
  *
@@ -79,15 +99,17 @@ function persistSize(storageKey, size) {
79
99
  }
80
100
  /**
81
101
  * Clamps a size between min and optional max bounds.
102
+ *
103
+ * @param size - Candidate size in pixels.
104
+ * @param minSize - Minimum allowed size.
105
+ * @param getMaxSize - Optional dynamic max getter.
106
+ * @returns Size clamped to [minSize, max].
82
107
  */
83
108
  function clampSize(size, minSize, getMaxSize) {
84
109
  const rawMax = getMaxSize?.() ?? Number.POSITIVE_INFINITY;
85
110
  const maxSize = Math.max(minSize, rawMax);
86
111
  return Math.min(maxSize, Math.max(minSize, size));
87
112
  }
88
- /**
89
- * Tracks resizable panel size with pointer drag and optional persistence.
90
- */
91
113
  /**
92
114
  * Persists a committed resize size via localStorage and/or a caller callback.
93
115
  *
@@ -101,6 +123,12 @@ function commitSize(storageKey, onPersist, size) {
101
123
  }
102
124
  onPersist?.(size);
103
125
  }
126
+ /**
127
+ * Tracks resizable panel size with pointer drag and optional persistence.
128
+ *
129
+ * During drag, pointer movement sets a target size; the displayed size eases
130
+ * toward that target each frame unless the user prefers reduced motion.
131
+ */
104
132
  export function useResizable({ axis, direction, defaultSize, minSize, getMaxSize, storageKey, onPersist }) {
105
133
  const [size, setSizeState] = useState(() => {
106
134
  const initial = storageKey ? loadStoredSize(storageKey, defaultSize) : defaultSize;
@@ -111,12 +139,60 @@ export function useResizable({ axis, direction, defaultSize, minSize, getMaxSize
111
139
  const startPosRef = useRef(0);
112
140
  const startSizeRef = useRef(defaultSize);
113
141
  const sizeRef = useRef(size);
142
+ const targetSizeRef = useRef(size);
143
+ const rafIdRef = useRef(null);
144
+ const minSizeRef = useRef(minSize);
145
+ const getMaxSizeRef = useRef(getMaxSize);
114
146
  /**
115
147
  * Keeps a ref in sync with state so drag handlers read the latest size.
116
148
  */
117
149
  useEffect(() => {
118
150
  sizeRef.current = size;
119
151
  }, [size]);
152
+ /**
153
+ * Keeps bound refs current so the lerp loop does not close over stale values.
154
+ */
155
+ useEffect(() => {
156
+ minSizeRef.current = minSize;
157
+ getMaxSizeRef.current = getMaxSize;
158
+ }, [getMaxSize, minSize]);
159
+ /**
160
+ * Cancels any in-flight drag lerp animation frame.
161
+ */
162
+ const stopResizeLerp = useCallback(() => {
163
+ if (rafIdRef.current != null) {
164
+ cancelAnimationFrame(rafIdRef.current);
165
+ rafIdRef.current = null;
166
+ }
167
+ }, []);
168
+ /**
169
+ * Eases displayed size toward the pointer target while a drag is active.
170
+ */
171
+ const runResizeLerpStep = useCallback(() => {
172
+ rafIdRef.current = null;
173
+ if (!resizingRef.current) {
174
+ return;
175
+ }
176
+ const current = sizeRef.current;
177
+ const target = targetSizeRef.current;
178
+ const gap = target - current;
179
+ if (Math.abs(gap) <= RESIZE_DRAG_SNAP_EPSILON) {
180
+ setSizeState(target);
181
+ return;
182
+ }
183
+ const nextSize = clampSize(current + gap * RESIZE_DRAG_LERP, minSizeRef.current, getMaxSizeRef.current);
184
+ setSizeState(nextSize);
185
+ rafIdRef.current = requestAnimationFrame(runResizeLerpStep);
186
+ }, []);
187
+ /**
188
+ * Starts the drag lerp loop when it is not already scheduled.
189
+ */
190
+ const startResizeLerp = useCallback(() => {
191
+ if (rafIdRef.current != null) {
192
+ return;
193
+ }
194
+ rafIdRef.current = requestAnimationFrame(runResizeLerpStep);
195
+ }, [runResizeLerpStep]);
120
196
  /**
121
197
  * Re-reads this panel's localStorage size when a workspace (or other caller)
122
198
  * applies sizes externally via {@link applyResizableSizes}.
@@ -153,22 +229,30 @@ export function useResizable({ axis, direction, defaultSize, minSize, getMaxSize
153
229
  }, [getMaxSize, size]);
154
230
  /**
155
231
  * Updates panel size with min/max clamping applied.
232
+ *
233
+ * @param nextSize - Desired size in pixels before clamping.
156
234
  */
157
235
  const setSize = useCallback((nextSize) => {
158
236
  setSizeState(clampSize(nextSize, minSize, getMaxSize));
159
237
  }, [getMaxSize, minSize]);
160
238
  /**
161
239
  * Captures pointer position and current size when a resize drag begins.
240
+ *
241
+ * @param event - React mouse event from the resize handle.
162
242
  */
163
243
  const onResizeStart = useCallback((event) => {
164
244
  event.preventDefault();
245
+ stopResizeLerp();
165
246
  resizingRef.current = true;
166
247
  startPosRef.current = axis === 'x' ? event.clientX : event.clientY;
167
248
  startSizeRef.current = sizeRef.current;
249
+ targetSizeRef.current = sizeRef.current;
168
250
  setResizingState(axis);
169
- }, [axis]);
251
+ }, [axis, stopResizeLerp]);
170
252
  /**
171
253
  * Nudges panel size from arrow keys using the same axis/direction math as drag.
254
+ *
255
+ * @param event - React keyboard event from the focused resize handle.
172
256
  */
173
257
  const onKeyboardResize = useCallback((event) => {
174
258
  if (event.key === 'Enter' || event.key === ' ') {
@@ -201,7 +285,7 @@ export function useResizable({ axis, direction, defaultSize, minSize, getMaxSize
201
285
  */
202
286
  useEffect(() => {
203
287
  /**
204
- * Updates size from pointer movement while a resize drag is active.
288
+ * Updates the pointer target (and eases toward it) while a resize drag is active.
205
289
  *
206
290
  * @param event - Window mousemove event.
207
291
  */
@@ -211,17 +295,25 @@ export function useResizable({ axis, direction, defaultSize, minSize, getMaxSize
211
295
  const currentPos = axis === 'x' ? event.clientX : event.clientY;
212
296
  const delta = (currentPos - startPosRef.current) * direction;
213
297
  const nextSize = clampSize(startSizeRef.current + delta, minSize, getMaxSize);
214
- setSizeState(nextSize);
298
+ targetSizeRef.current = nextSize;
299
+ if (prefersReducedMotion()) {
300
+ setSizeState(nextSize);
301
+ return;
302
+ }
303
+ startResizeLerp();
215
304
  };
216
305
  /**
217
- * Ends the resize drag and commits the final size when configured.
306
+ * Ends the resize drag, snaps to the pointer target, and commits the size.
218
307
  */
219
308
  const handleMouseUp = () => {
220
309
  if (!resizingRef.current)
221
310
  return;
222
311
  resizingRef.current = false;
312
+ stopResizeLerp();
223
313
  clearResizingState();
224
- commitSize(storageKey, onPersist, sizeRef.current);
314
+ const snapped = clampSize(targetSizeRef.current, minSize, getMaxSize);
315
+ setSizeState(snapped);
316
+ commitSize(storageKey, onPersist, snapped);
225
317
  };
226
318
  window.addEventListener('mousemove', handleMouseMove);
227
319
  window.addEventListener('mouseup', handleMouseUp);
@@ -235,17 +327,27 @@ export function useResizable({ axis, direction, defaultSize, minSize, getMaxSize
235
327
  window.removeEventListener('mousemove', handleMouseMove);
236
328
  window.removeEventListener('mouseup', handleMouseUp);
237
329
  };
238
- }, [axis, direction, getMaxSize, minSize, onPersist, storageKey]);
330
+ }, [
331
+ axis,
332
+ direction,
333
+ getMaxSize,
334
+ minSize,
335
+ onPersist,
336
+ startResizeLerp,
337
+ stopResizeLerp,
338
+ storageKey
339
+ ]);
239
340
  /**
240
- * Clears the document resize marker when the hook unmounts mid-drag.
341
+ * Clears the document resize marker and any lerp loop when the hook unmounts mid-drag.
241
342
  */
242
343
  useEffect(() => {
243
344
  return () => {
345
+ stopResizeLerp();
244
346
  if (resizingRef.current) {
245
347
  resizingRef.current = false;
246
348
  clearResizingState();
247
349
  }
248
350
  };
249
- }, []);
351
+ }, [stopResizeLerp]);
250
352
  return { size, minSize, maxSize, setSize, onResizeStart, onKeyboardResize };
251
353
  }
@@ -0,0 +1,42 @@
1
+ import type { JSX } from 'react';
2
+ interface Props {
3
+ /**
4
+ * Catalog setting id (e.g. `general.verifySsl`), used for the accessible name
5
+ * and as context for copy/reset actions.
6
+ */
7
+ settingId: string;
8
+ /**
9
+ * True when the field value differs from its factory default. Keeps the gear
10
+ * visible and enables Reset Setting.
11
+ */
12
+ isModified: boolean;
13
+ /**
14
+ * Resets the setting to its factory default.
15
+ */
16
+ onReset: () => void;
17
+ /**
18
+ * Copies the setting id to the clipboard.
19
+ */
20
+ onCopyId: () => void;
21
+ /**
22
+ * When set, adds a "Copy Setting as JSON" menu item.
23
+ */
24
+ onCopyJson?: () => void;
25
+ /**
26
+ * When set, adds a "Copy Deep Link" menu item for the `#setting-…` hash.
27
+ */
28
+ onCopyDeepLink?: () => void;
29
+ }
30
+ /**
31
+ * Gear button and dropdown for a single settings field: reset to default and
32
+ * copy helpers. Hidden until the parent `group/setting-field` is hovered or
33
+ * focused; always visible when the field is modified or the menu is open.
34
+ *
35
+ * Place inside a container with the `group/setting-field` Tailwind class so
36
+ * hover/focus reveal works.
37
+ *
38
+ * @param props - Setting id, modified flag, and action handlers.
39
+ */
40
+ export declare function SettingFieldActions({ settingId, isModified, onReset, onCopyId, onCopyJson, onCopyDeepLink }: Props): JSX.Element;
41
+ export {};
42
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SettingFieldActions/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAiC,MAAM,OAAO,CAAC;AAIhE,UAAU,KAAK;IACb;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,cAAc,EACf,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAyErB"}
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx } from "@harborclient/sdk/jsx-runtime";
2
+ import { faGear } from '@fortawesome/free-solid-svg-icons';
3
+ import { useMemo, useState } from '@harborclient/sdk/react';
4
+ import { RowActionsMenu } from '../RowActionsMenu/index.js';
5
+ import { cn } from '../utils.js';
6
+ /**
7
+ * Gear button and dropdown for a single settings field: reset to default and
8
+ * copy helpers. Hidden until the parent `group/setting-field` is hovered or
9
+ * focused; always visible when the field is modified or the menu is open.
10
+ *
11
+ * Place inside a container with the `group/setting-field` Tailwind class so
12
+ * hover/focus reveal works.
13
+ *
14
+ * @param props - Setting id, modified flag, and action handlers.
15
+ */
16
+ export function SettingFieldActions({ settingId, isModified, onReset, onCopyId, onCopyJson, onCopyDeepLink }) {
17
+ const [openMenuId, setOpenMenuId] = useState(null);
18
+ const menuId = `setting-actions-${settingId}`;
19
+ const isOpen = openMenuId === menuId;
20
+ /**
21
+ * Menu groups for reset and copy actions. Reset is disabled when the value
22
+ * matches the factory default.
23
+ */
24
+ const groups = useMemo(() => {
25
+ const copyItems = [
26
+ {
27
+ label: 'Copy Setting ID',
28
+ onSelect: onCopyId
29
+ }
30
+ ];
31
+ if (onCopyJson != null) {
32
+ copyItems.push({
33
+ label: 'Copy Setting as JSON',
34
+ onSelect: onCopyJson
35
+ });
36
+ }
37
+ if (onCopyDeepLink != null) {
38
+ copyItems.push({
39
+ label: 'Copy Deep Link',
40
+ onSelect: onCopyDeepLink
41
+ });
42
+ }
43
+ return [
44
+ [
45
+ {
46
+ label: 'Reset Setting',
47
+ disabled: !isModified,
48
+ onSelect: onReset
49
+ }
50
+ ],
51
+ copyItems
52
+ ];
53
+ }, [isModified, onCopyDeepLink, onCopyId, onCopyJson, onReset]);
54
+ /**
55
+ * Prevents the gear click from toggling a wrapping checkbox label.
56
+ *
57
+ * @param event - Native click on the actions wrapper.
58
+ */
59
+ const handleWrapperClick = (event) => {
60
+ event.stopPropagation();
61
+ };
62
+ const alwaysVisible = isModified || isOpen;
63
+ return (_jsx("div", { className: cn('hc-setting-field-actions shrink-0', alwaysVisible
64
+ ? 'opacity-100'
65
+ : 'opacity-0 group-focus-within/setting-field:opacity-100 group-hover/setting-field:opacity-100 focus-within:opacity-100'), onClick: handleWrapperClick, children: _jsx(RowActionsMenu, { menuId: menuId, openMenuId: openMenuId, onOpenChange: setOpenMenuId, triggerIcon: faGear, triggerAriaLabel: `Setting actions for ${settingId}`, triggerTitle: "Setting actions", groups: groups }) }));
66
+ }
@@ -61,10 +61,14 @@ interface Props {
61
61
  * HTML element for the row container. Use `li` inside {@link SidebarListbox}.
62
62
  */
63
63
  as?: 'div' | 'li';
64
+ /**
65
+ * Additional class names merged onto the row container.
66
+ */
67
+ className?: string;
64
68
  }
65
69
  /**
66
70
  * Renders a request or run history entry row in the Collections sidebar History section.
67
71
  */
68
- export declare function SidebarHistoryItem({ method, name, isRun, status, statusText, statusDotVisible, methodColors, runIcon, selected, title, ariaLabel, onContextMenu, onClick, actions, as }: Props): JSX.Element;
72
+ export declare function SidebarHistoryItem({ method, name, isRun, status, statusText, statusDotVisible, methodColors, runIcon, selected, title, ariaLabel, onContextMenu, onClick, actions, as, className }: Props): JSX.Element;
69
73
  export {};
70
74
  //# sourceMappingURL=SidebarHistoryItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarHistoryItem.d.ts","sourceRoot":"","sources":["../../../src/components/SidebarItem/SidebarHistoryItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOxD,UAAU,KAAK;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEzD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEnD;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,IAAI,EACJ,KAAa,EACb,MAAM,EACN,UAAU,EACV,gBAAuB,EACvB,YAAmB,EACnB,OAAO,EACP,QAAgB,EAChB,KAAK,EACL,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,EACP,EAAS,EACV,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAyCrB"}
1
+ {"version":3,"file":"SidebarHistoryItem.d.ts","sourceRoot":"","sources":["../../../src/components/SidebarItem/SidebarHistoryItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOxD,UAAU,KAAK;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEzD;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEnD;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,IAAI,EACJ,KAAa,EACb,MAAM,EACN,UAAU,EACV,gBAAuB,EACvB,YAAmB,EACnB,OAAO,EACP,QAAgB,EAChB,KAAK,EACL,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,EACP,EAAS,EACT,SAAS,EACV,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA0CrB"}
@@ -7,12 +7,12 @@ import { SIDEBAR_ITEM_BUTTON_CLASS, statusDotClass } from './sidebarItemClasses.
7
7
  /**
8
8
  * Renders a request or run history entry row in the Collections sidebar History section.
9
9
  */
10
- export function SidebarHistoryItem({ method, name, isRun = false, status, statusText, statusDotVisible = true, methodColors = true, runIcon, selected = false, title, ariaLabel, onContextMenu, onClick, actions, as = 'li' }) {
10
+ export function SidebarHistoryItem({ method, name, isRun = false, status, statusText, statusDotVisible = true, methodColors = true, runIcon, selected = false, title, ariaLabel, onContextMenu, onClick, actions, as = 'li', className }) {
11
11
  const useListboxOption = as === 'li';
12
12
  const optionAriaLabel = !isRun && status != null && statusText != null
13
13
  ? `${ariaLabel}, responded ${status} ${statusText}`
14
14
  : ariaLabel;
15
- return (_jsx(SidebarItem, { selected: selected, onContextMenu: onContextMenu, actions: actions, as: as, listboxOption: useListboxOption
15
+ return (_jsx(SidebarItem, { selected: selected, onContextMenu: onContextMenu, actions: actions, as: as, className: className, listboxOption: useListboxOption
16
16
  ? {
17
17
  ariaLabel: optionAriaLabel,
18
18
  onClick
@@ -73,9 +73,11 @@ export { ResourceList, ResourceListRow, ResourceListPrimary, ResourceListEmptyIt
73
73
  export { RoundButton } from './RoundButton/index.js';
74
74
  export { RowActionsMenu } from './RowActionsMenu/index.js';
75
75
  export type { MenuItem } from './RowActionsMenu/index.js';
76
+ export { AnchorMenuPanel } from './AnchorMenuPanel/index.js';
76
77
  export { buildReorderMenuGroup } from './rowActionsMenuHelpers.js';
77
78
  export { SettingIdLabel } from './SettingIdLabel/index.js';
78
79
  export type { Props as SettingIdLabelProps } from './SettingIdLabel/index.js';
80
+ export { SettingFieldActions } from './SettingFieldActions/index.js';
79
81
  export { SettingSectionHeading } from './SettingSectionHeading/index.js';
80
82
  export type { Props as SettingSectionHeadingProps } from './SettingSectionHeading/index.js';
81
83
  export { SortButton } from './SortButton/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
@@ -54,8 +54,10 @@ export { DEFAULT_HEIGHT, MIN_HEIGHT, footerPanelClassName, footerPanelCloseButto
54
54
  export { ResourceList, ResourceListRow, ResourceListPrimary, ResourceListEmptyItem } from './ResourceList/index.js';
55
55
  export { RoundButton } from './RoundButton/index.js';
56
56
  export { RowActionsMenu } from './RowActionsMenu/index.js';
57
+ export { AnchorMenuPanel } from './AnchorMenuPanel/index.js';
57
58
  export { buildReorderMenuGroup } from './rowActionsMenuHelpers.js';
58
59
  export { SettingIdLabel } from './SettingIdLabel/index.js';
60
+ export { SettingFieldActions } from './SettingFieldActions/index.js';
59
61
  export { SettingSectionHeading } from './SettingSectionHeading/index.js';
60
62
  export { SortButton } from './SortButton/index.js';
61
63
  export { SortButtonIcon } from './SortButton/SortButtonIcon.js';
@@ -358,6 +358,17 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
358
358
  }
359
359
  };
360
360
 
361
+ /**
362
+ * Reads `replaces` from a sidebar panel manifest entry (manifest-authoritative).
363
+ *
364
+ * @param {string} contributionId - Raw contribution id.
365
+ * @returns {'collections'|undefined}
366
+ */
367
+ const getSidebarPanelReplaces = (contributionId) => {
368
+ const entry = manifest.contributes?.sidebarPanels?.find((panel) => panel.id === contributionId);
369
+ return entry?.replaces === 'collections' ? 'collections' : undefined;
370
+ };
371
+
361
372
  /**
362
373
  * Asserts that a menu command is declared in manifest.contributes.menus.
363
374
  *
@@ -583,6 +594,7 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
583
594
  if (!canRegisterUi()) {
584
595
  return noopDisposable();
585
596
  }
597
+ const replaces = getSidebarPanelReplaces(panel.id);
586
598
  return registerUiContribution(
587
599
  'sidebarPanels',
588
600
  panel.id,
@@ -591,7 +603,8 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
591
603
  title: panel.title,
592
604
  icon: panel.icon,
593
605
  order: panel.order,
594
- contributionId: panel.id
606
+ contributionId: panel.id,
607
+ ...(replaces ? { replaces } : {})
595
608
  },
596
609
  panel.Component
597
610
  );
@@ -865,6 +878,43 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
865
878
  assertUi();
866
879
  await bridgeInvoke('host.loadRequest', { requestId });
867
880
  },
881
+ loadDocument: async (documentId) => {
882
+ assertUi();
883
+ await bridgeInvoke('host.loadDocument', { documentId });
884
+ },
885
+ openCollectionSettings: async (collectionId) => {
886
+ assertUi();
887
+ await bridgeInvoke('host.openCollectionSettings', { collectionId });
888
+ },
889
+ openCollectionRunner: async (collectionId) => {
890
+ assertUi();
891
+ await bridgeInvoke('host.openCollectionRunner', { collectionId });
892
+ },
893
+ openShareModal: async (collectionId) => {
894
+ assertUi();
895
+ await bridgeInvoke('host.openShareModal', { collectionId });
896
+ },
897
+ showEntityContextMenu: async (input) => {
898
+ assertUi();
899
+ await bridgeInvoke('host.showEntityContextMenu', input);
900
+ },
901
+ getSidebarSelection: async () => {
902
+ assertUi();
903
+ return bridgeInvoke('host.getSidebarSelection');
904
+ },
905
+ setSidebarSelection: async (selection) => {
906
+ assertUi();
907
+ await bridgeInvoke('host.setSidebarSelection', { selection });
908
+ },
909
+ onSidebarSelectionChanged: (listener) => {
910
+ assertUi();
911
+ const unsubscribe = bridgeOn('sidebar.selection.changed', listener);
912
+ return track({
913
+ dispose: () => {
914
+ unsubscribe();
915
+ }
916
+ });
917
+ },
868
918
  sendRequest: async () => {
869
919
  assertUi();
870
920
  await bridgeInvoke('host.sendRequest');
@@ -881,6 +931,119 @@ export function createBridgedPluginContext({ pluginId, mode, contributionId, rea
881
931
  assertUi();
882
932
  return bridgeInvoke('host.createCollection', { payload });
883
933
  },
934
+ updateCollection: async (input) => {
935
+ assertUi();
936
+ return bridgeInvoke('host.updateCollection', input);
937
+ },
938
+ deleteCollection: async (collectionId) => {
939
+ assertUi();
940
+ await bridgeInvoke('host.deleteCollection', { collectionId });
941
+ },
942
+ reorderCollections: async (orderedIds) => {
943
+ assertUi();
944
+ await bridgeInvoke('host.reorderCollections', { orderedIds });
945
+ },
946
+ setCollectionArchived: async (input) => {
947
+ assertUi();
948
+ await bridgeInvoke('host.setCollectionArchived', input);
949
+ },
950
+ duplicateCollection: async (collectionId) => {
951
+ assertUi();
952
+ return bridgeInvoke('host.duplicateCollection', { collectionId });
953
+ },
954
+ createFolder: async (input) => {
955
+ assertUi();
956
+ return bridgeInvoke('host.createFolder', input);
957
+ },
958
+ renameFolder: async (input) => {
959
+ assertUi();
960
+ return bridgeInvoke('host.renameFolder', input);
961
+ },
962
+ deleteFolder: async (input) => {
963
+ assertUi();
964
+ await bridgeInvoke('host.deleteFolder', input);
965
+ },
966
+ moveFolder: async (input) => {
967
+ assertUi();
968
+ return bridgeInvoke('host.moveFolder', input);
969
+ },
970
+ reorderFolders: async (input) => {
971
+ assertUi();
972
+ await bridgeInvoke('host.reorderFolders', input);
973
+ },
974
+ createRequest: async (input) => {
975
+ assertUi();
976
+ return bridgeInvoke('host.createRequest', input);
977
+ },
978
+ deleteRequest: async (requestId) => {
979
+ assertUi();
980
+ await bridgeInvoke('host.deleteRequest', { requestId });
981
+ },
982
+ duplicateRequest: async (requestId) => {
983
+ assertUi();
984
+ return bridgeInvoke('host.duplicateRequest', { requestId });
985
+ },
986
+ moveRequest: async (input) => {
987
+ assertUi();
988
+ await bridgeInvoke('host.moveRequest', input);
989
+ },
990
+ reorderRequests: async (input) => {
991
+ assertUi();
992
+ await bridgeInvoke('host.reorderRequests', input);
993
+ },
994
+ createDocument: async (input) => {
995
+ assertUi();
996
+ return bridgeInvoke('host.createDocument', input);
997
+ },
998
+ renameDocument: async (input) => {
999
+ assertUi();
1000
+ return bridgeInvoke('host.renameDocument', input);
1001
+ },
1002
+ deleteDocument: async (input) => {
1003
+ assertUi();
1004
+ await bridgeInvoke('host.deleteDocument', input);
1005
+ },
1006
+ moveDocument: async (input) => {
1007
+ assertUi();
1008
+ await bridgeInvoke('host.moveDocument', input);
1009
+ },
1010
+ reorderDocuments: async (input) => {
1011
+ assertUi();
1012
+ await bridgeInvoke('host.reorderDocuments', input);
1013
+ },
1014
+ reorderContainerItems: async (input) => {
1015
+ assertUi();
1016
+ await bridgeInvoke('host.reorderContainerItems', input);
1017
+ },
1018
+ listCollections: async (options) => {
1019
+ assertUi();
1020
+ return bridgeInvoke('host.listCollections', { options });
1021
+ },
1022
+ listFolders: async (collectionId) => {
1023
+ assertUi();
1024
+ return bridgeInvoke('host.listFolders', { collectionId });
1025
+ },
1026
+ listRequests: async (collectionId) => {
1027
+ assertUi();
1028
+ return bridgeInvoke('host.listRequests', { collectionId });
1029
+ },
1030
+ listDocuments: async (collectionId) => {
1031
+ assertUi();
1032
+ return bridgeInvoke('host.listDocuments', { collectionId });
1033
+ },
1034
+ listLibraryTree: async (options) => {
1035
+ assertUi();
1036
+ return bridgeInvoke('host.listLibraryTree', { options });
1037
+ },
1038
+ onLibraryChanged: (listener) => {
1039
+ assertUi();
1040
+ const unsubscribe = bridgeOn('library.changed', listener);
1041
+ return track({
1042
+ dispose: () => {
1043
+ unsubscribe();
1044
+ }
1045
+ });
1046
+ },
884
1047
  listCollectionRequests: async (collectionId, folderId) => {
885
1048
  assertUi();
886
1049
  return bridgeInvoke('host.listCollectionRequests', { collectionId, folderId });
@@ -1029,7 +1192,8 @@ export function mountContributionView({
1029
1192
  'responseTabs',
1030
1193
  'collectionSettingsTabs',
1031
1194
  'modals',
1032
- 'mainViews'
1195
+ 'mainViews',
1196
+ 'sidebarPanels'
1033
1197
  ]);
1034
1198
 
1035
1199
  if (FILL_SURFACE_KINDS.has(kind) && slot === 'content') {