@harborclient/sdk 1.7.3 → 1.7.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CodeEditor/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/CodeEditor/index.tsx"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ import { createSlashCommandHighlighter } from './slashCommandHighlighter.js';
27
27
  import { createSyntaxHighlightedPlaceholder } from './syntaxHighlightedPlaceholder.js';
28
28
  import { createJavascriptSyntaxLinter, createJsonSyntaxLinter } from './syntaxLinters.js';
29
29
  import { getCodeEditorThemeExtension } from './themes.js';
30
+ import { resolveVariableSelectionTooltipAction } from './variableSelectionTooltipAction.js';
30
31
  export { CODE_EDITOR_THEME_OPTIONS } from './themes.js';
31
32
  /**
32
33
  * Clamps selection offsets to the current document length.
@@ -217,15 +218,35 @@ function setContentDescribedBy(content, getValidationDescribedBy, tooltipId) {
217
218
  }
218
219
  /**
219
220
  * Shows a keyboard-driven tooltip when the caret moves inside a {{variable}} token.
221
+ *
222
+ * Pointer caret placement is ignored so mouse users rely on {@link variableTooltip}
223
+ * (CodeMirror hoverTooltip), which dismisses when the pointer leaves. Opening the
224
+ * React popup on click left it stuck when the field was only a single variable.
225
+ *
226
+ * @param tooltipId - DOM id applied to the React tooltip for aria-describedby.
227
+ * @param onTooltipChange - Updates React selection-tooltip state.
228
+ * @param getValidationDescribedBy - Host validation describedby ids.
229
+ * @param isOpen - Whether the React selection tooltip is currently visible.
220
230
  */
221
- function variableSelectionTooltip(tooltipId, onTooltipChange, getValidationDescribedBy) {
231
+ function variableSelectionTooltip(tooltipId, onTooltipChange, getValidationDescribedBy, isOpen) {
222
232
  return EditorView.updateListener.of((update) => {
223
233
  if (!update.selectionSet && !update.docChanged)
224
234
  return;
225
235
  const content = update.view.dom.querySelector('.cm-content');
226
236
  const pos = update.state.selection.main.head;
227
237
  const match = findVariableAtPos(update.state.doc, pos);
228
- if (!match) {
238
+ const pointerSelect = update.transactions.some((tr) => tr.isUserEvent('select.pointer'));
239
+ const action = resolveVariableSelectionTooltipAction({
240
+ hasMatch: match != null,
241
+ selectionSet: update.selectionSet,
242
+ docChanged: update.docChanged,
243
+ pointerSelect,
244
+ isOpen: isOpen()
245
+ });
246
+ if (action === 'ignore') {
247
+ return;
248
+ }
249
+ if (action === 'hide' || !match) {
229
250
  onTooltipChange(null);
230
251
  setContentDescribedBy(content, getValidationDescribedBy);
231
252
  return;
@@ -354,7 +375,7 @@ function buildCoreExtensions(options) {
354
375
  }
355
376
  }
356
377
  if (options.hasVariables) {
357
- next.push(variableHighlighter, variableTooltip(options.getVariables, options.getOnEditVariable), variableSelectionTooltip(options.tooltipId, options.onSelectionTooltipChange, options.getValidationDescribedBy), variableTooltipEscapeHandler(options.isSelectionTooltipOpen, options.onDismissSelectionTooltip, options.getValidationDescribedBy));
378
+ next.push(variableHighlighter, variableTooltip(options.getVariables, options.getOnEditVariable), variableSelectionTooltip(options.tooltipId, options.onSelectionTooltipChange, options.getValidationDescribedBy, options.isSelectionTooltipOpen), variableTooltipEscapeHandler(options.isSelectionTooltipOpen, options.onDismissSelectionTooltip, options.getValidationDescribedBy));
358
379
  }
359
380
  if (options.hasSelectionActions) {
360
381
  next.push(...createSelectionActionToolbarExtensions(options.onSelectionActionToolbarChange, () => options.hasSelectionActions, options.isSelectionActionToolbarOpen, options.onDismissSelectionActionToolbar));
@@ -1025,9 +1046,17 @@ export function CodeEditor({ value, onChange, language = 'text', readOnly = fals
1025
1046
  ...(height ? { height: '100%' } : {}),
1026
1047
  basicSetup,
1027
1048
  onCreateEditor: stableOnCreateEditor
1028
- }), selectionTooltip && selectionTooltipContent && variables ? (_jsxs("div", { id: tooltipId, role: "tooltip", className: "hc-code-editor-tooltip pointer-events-auto fixed z-50 flex max-w-sm -translate-x-1/2 -translate-y-full flex-col gap-1.5 rounded-lg border border-separator bg-surface px-3 py-2 text-text shadow-md", style: { top: selectionTooltip.top - 4, left: selectionTooltip.left }, children: [_jsx(VariableTooltipValue, { value: selectionTooltipContent.text, variableKey: selectionTooltip.key, muted: selectionTooltipContent.muted }), onEditVariable ? (_jsx(Button, { variant: "secondary", className: "hc-code-editor-tooltip-edit self-start", "aria-label": `Edit value for ${selectionTooltip.key}`, onMouseDown: (event) => {
1029
- event.preventDefault();
1030
- onEditVariable(selectionTooltip.key);
1031
- setSelectionTooltip(null);
1032
- }, children: "Edit value" })) : null] })) : null, selectionActionToolbarNode ? portalToBody(selectionActionToolbarNode) : null] }));
1049
+ }), selectionTooltip && selectionTooltipContent && variables
1050
+ ? portalToBody(_jsxs("div", { id: tooltipId, role: "tooltip", className: "hc-code-editor-tooltip pointer-events-auto fixed z-50 flex max-w-sm -translate-x-1/2 -translate-y-full flex-col gap-1.5 rounded-lg border border-separator bg-surface px-3 py-2 text-text shadow-md", style: {
1051
+ position: 'fixed',
1052
+ top: selectionTooltip.top - 4,
1053
+ left: selectionTooltip.left
1054
+ }, children: [_jsx(VariableTooltipValue, { value: selectionTooltipContent.text, variableKey: selectionTooltip.key, muted: selectionTooltipContent.muted, onClose: () => {
1055
+ setSelectionTooltip(null);
1056
+ } }), onEditVariable ? (_jsx(Button, { variant: "secondary", className: "hc-code-editor-tooltip-edit self-start", "aria-label": `Edit value for ${selectionTooltip.key}`, onMouseDown: (event) => {
1057
+ event.preventDefault();
1058
+ onEditVariable(selectionTooltip.key);
1059
+ setSelectionTooltip(null);
1060
+ }, children: "Edit value" })) : null] }))
1061
+ : null, selectionActionToolbarNode ? portalToBody(selectionActionToolbarNode) : null] }));
1033
1062
  }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Action for the keyboard-driven {{variable}} selection tooltip.
3
+ *
4
+ * - `show` — open or reposition the React tooltip
5
+ * - `hide` — dismiss it
6
+ * - `ignore` — leave the current open/closed state unchanged
7
+ */
8
+ export type VariableSelectionTooltipAction = 'show' | 'hide' | 'ignore';
9
+ /**
10
+ * Decides whether a CodeMirror update should open, hide, or leave alone the
11
+ * caret-driven variable tooltip.
12
+ *
13
+ * Pointer caret placement must not open this sticky React popup — mouse users
14
+ * already get CodeMirror's hover tooltip, which dismisses on leave. Opening on
15
+ * click left the popup stuck whenever the whole field was a single `{{variable}}`
16
+ * (caret never left the token). Keyboard selection still opens it; document
17
+ * edits only reposition an already-open tooltip so typing after a click does
18
+ * not re-stick it.
19
+ *
20
+ * @param options.hasMatch - Whether the caret is inside a {{variable}} token.
21
+ * @param options.selectionSet - Whether the update changed the selection.
22
+ * @param options.docChanged - Whether the update changed the document.
23
+ * @param options.pointerSelect - Whether any transaction was a pointer select.
24
+ * @param options.isOpen - Whether the React selection tooltip is currently open.
25
+ * @returns Whether to show, hide, or ignore the tooltip for this update.
26
+ */
27
+ export declare function resolveVariableSelectionTooltipAction(options: {
28
+ hasMatch: boolean;
29
+ selectionSet: boolean;
30
+ docChanged: boolean;
31
+ pointerSelect: boolean;
32
+ isOpen: boolean;
33
+ }): VariableSelectionTooltipAction;
34
+ //# sourceMappingURL=variableSelectionTooltipAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variableSelectionTooltipAction.d.ts","sourceRoot":"","sources":["../../../src/components/CodeEditor/variableSelectionTooltipAction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,8BAA8B,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAExE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qCAAqC,CAAC,OAAO,EAAE;IAC7D,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,8BAA8B,CAkBjC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Decides whether a CodeMirror update should open, hide, or leave alone the
3
+ * caret-driven variable tooltip.
4
+ *
5
+ * Pointer caret placement must not open this sticky React popup — mouse users
6
+ * already get CodeMirror's hover tooltip, which dismisses on leave. Opening on
7
+ * click left the popup stuck whenever the whole field was a single `{{variable}}`
8
+ * (caret never left the token). Keyboard selection still opens it; document
9
+ * edits only reposition an already-open tooltip so typing after a click does
10
+ * not re-stick it.
11
+ *
12
+ * @param options.hasMatch - Whether the caret is inside a {{variable}} token.
13
+ * @param options.selectionSet - Whether the update changed the selection.
14
+ * @param options.docChanged - Whether the update changed the document.
15
+ * @param options.pointerSelect - Whether any transaction was a pointer select.
16
+ * @param options.isOpen - Whether the React selection tooltip is currently open.
17
+ * @returns Whether to show, hide, or ignore the tooltip for this update.
18
+ */
19
+ export function resolveVariableSelectionTooltipAction(options) {
20
+ if (!options.hasMatch) {
21
+ return 'hide';
22
+ }
23
+ if (options.pointerSelect) {
24
+ return 'hide';
25
+ }
26
+ if (options.selectionSet) {
27
+ return 'show';
28
+ }
29
+ if (options.docChanged) {
30
+ return options.isOpen ? 'show' : 'ignore';
31
+ }
32
+ return 'ignore';
33
+ }
@@ -62,10 +62,6 @@ interface Props {
62
62
  * Called when the folder name area is activated.
63
63
  */
64
64
  onNameClick: () => void;
65
- /**
66
- * Called when the folder name area is double-clicked.
67
- */
68
- onNameDoubleClick?: () => void;
69
65
  /**
70
66
  * Called when Enter is pressed on the folder name area.
71
67
  */
@@ -91,6 +87,6 @@ interface Props {
91
87
  *
92
88
  * Wrap folder trees in {@link SidebarTree} and pass `as="li"` for valid tree semantics.
93
89
  */
94
- export declare function SidebarFolderItem({ name, expanded, childrenId, level, setSize, posInSet, ariaLabel, markerDot, dropHighlighted, selected, sortable, onContextMenu, onToggleExpand, onNameClick, onNameDoubleClick, onNameEnter, actions, expandIcon, collapseIcon, as }: Props): JSX.Element;
90
+ export declare function SidebarFolderItem({ name, expanded, childrenId, level, setSize, posInSet, ariaLabel, markerDot, dropHighlighted, selected, sortable, onContextMenu, onToggleExpand, onNameClick, onNameEnter, actions, expandIcon, collapseIcon, as }: Props): JSX.Element;
95
91
  export {};
96
92
  //# sourceMappingURL=SidebarFolderItem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarFolderItem.d.ts","sourceRoot":"","sources":["../../../src/components/SidebarItem/SidebarFolderItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAiB,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAe,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAS/E,UAAU,KAAK;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,yBAAyB,CAAC;IAEpC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEzD;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE/B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,cAAc,CAAC;IAC3B,YAAY,EAAE,cAAc,CAAC;IAE7B;;OAEG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,EACT,eAAuB,EACvB,QAAgB,EAChB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,EAAS,EACV,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CA2ErB"}
1
+ {"version":3,"file":"SidebarFolderItem.d.ts","sourceRoot":"","sources":["../../../src/components/SidebarItem/SidebarFolderItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,GAAG,EAAiB,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvE,OAAO,EAAe,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAS/E,UAAU,KAAK;IACb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;QAClC,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,QAAQ,EAAE,yBAAyB,CAAC;IAEpC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEzD;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,cAAc,CAAC;IAC3B,YAAY,EAAE,cAAc,CAAC;IAE7B;;OAEG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,EACT,eAAuB,EACvB,QAAgB,EAChB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,EAAS,EACV,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAgFrB"}
@@ -11,7 +11,7 @@ import { stopSortableDragPointerDown } from './stopSortableDragPointerDown.js';
11
11
  *
12
12
  * Wrap folder trees in {@link SidebarTree} and pass `as="li"` for valid tree semantics.
13
13
  */
14
- export function SidebarFolderItem({ name, expanded, childrenId, level, setSize, posInSet, ariaLabel, markerDot, dropHighlighted = false, selected = false, sortable, onContextMenu, onToggleExpand, onNameClick, onNameDoubleClick, onNameEnter, actions, expandIcon, collapseIcon, as = 'li' }) {
14
+ export function SidebarFolderItem({ name, expanded, childrenId, level, setSize, posInSet, ariaLabel, markerDot, dropHighlighted = false, selected = false, sortable, onContextMenu, onToggleExpand, onNameClick, onNameEnter, actions, expandIcon, collapseIcon, as = 'li' }) {
15
15
  const useTreeItem = as === 'li';
16
16
  /**
17
17
  * Opens folder settings when Enter is pressed on the name area.
@@ -33,8 +33,13 @@ export function SidebarFolderItem({ name, expanded, childrenId, level, setSize,
33
33
  level,
34
34
  setSize,
35
35
  posInSet,
36
- onClick: () => onNameClick(),
37
- onDoubleClick: onNameDoubleClick != null ? () => onNameDoubleClick() : undefined,
36
+ onClick: (event) => {
37
+ // Ignore the second click of a double-click.
38
+ if (event.detail > 1) {
39
+ return;
40
+ }
41
+ onNameClick();
42
+ },
38
43
  onKeyDown: onNameEnter != null ? handleNameKeyDown : undefined
39
44
  }
40
45
  : undefined, children: [_jsx("button", { type: "button", className: SIDEBAR_CHEVRON_BUTTON_CLASS, onClick: (event) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@harborclient/sdk",
3
- "version": "1.7.3",
3
+ "version": "1.7.4",
4
4
  "description": "TypeScript SDK for HarborClient development.",
5
5
  "keywords": [
6
6
  "harborclient",