@wildwinter/app-shell 0.39.0 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/dist/about.css +5 -5
  2. package/dist/about.css.map +1 -1
  3. package/dist/anchored.css +5 -5
  4. package/dist/anchored.css.map +1 -1
  5. package/dist/chunk-DS4XXAZS.js +56 -0
  6. package/dist/chunk-DS4XXAZS.js.map +1 -0
  7. package/dist/{chunk-K2AOLQW4.js → chunk-EHR2KBZC.js} +3 -3
  8. package/dist/{chunk-K2AOLQW4.js.map → chunk-EHR2KBZC.js.map} +1 -1
  9. package/dist/{chunk-S4KWQLYN.js → chunk-OPZPFOPS.js} +4 -4
  10. package/dist/{chunk-S4KWQLYN.js.map → chunk-OPZPFOPS.js.map} +1 -1
  11. package/dist/{chunk-L5HOBEKL.js → chunk-R3NXPHRZ.js} +3 -3
  12. package/dist/{chunk-L5HOBEKL.js.map → chunk-R3NXPHRZ.js.map} +1 -1
  13. package/dist/{chunk-KGAMP5LW.js → chunk-SDOKZTAR.js} +3 -3
  14. package/dist/{chunk-KGAMP5LW.js.map → chunk-SDOKZTAR.js.map} +1 -1
  15. package/dist/{chunk-C6UVQYKI.js → chunk-SEWJLUOD.js} +3 -3
  16. package/dist/{chunk-C6UVQYKI.js.map → chunk-SEWJLUOD.js.map} +1 -1
  17. package/dist/{chunk-XZYZXY7I.js → chunk-UG2P777F.js} +36 -3
  18. package/dist/chunk-UG2P777F.js.map +1 -0
  19. package/dist/{chunk-2NMVIM54.js → chunk-YRFJLJUH.js} +3 -3
  20. package/dist/{chunk-2NMVIM54.js.map → chunk-YRFJLJUH.js.map} +1 -1
  21. package/dist/chunk-YWMSQFXX.js +146 -0
  22. package/dist/chunk-YWMSQFXX.js.map +1 -0
  23. package/dist/comments.css +11 -11
  24. package/dist/comments.css.map +1 -1
  25. package/dist/confirm.css +2 -2
  26. package/dist/confirm.css.map +1 -1
  27. package/dist/context-menu.cjs.map +1 -1
  28. package/dist/context-menu.css +1 -1
  29. package/dist/context-menu.css.map +1 -1
  30. package/dist/context-menu.js +2 -2
  31. package/dist/controls.css +70 -11
  32. package/dist/controls.css.map +1 -1
  33. package/dist/dialog.cjs.map +1 -1
  34. package/dist/dialog.css +3 -2
  35. package/dist/dialog.css.map +1 -1
  36. package/dist/dialog.js +2 -2
  37. package/dist/identity.css +2 -2
  38. package/dist/identity.css.map +1 -1
  39. package/dist/index.cjs +257 -13
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.d.cts +39 -6
  42. package/dist/index.d.ts +39 -6
  43. package/dist/index.js +17 -13
  44. package/dist/index.js.map +1 -1
  45. package/dist/job.css +1 -1
  46. package/dist/job.css.map +1 -1
  47. package/dist/keys.cjs +155 -0
  48. package/dist/keys.cjs.map +1 -0
  49. package/dist/keys.css +41 -0
  50. package/dist/keys.css.map +1 -0
  51. package/dist/keys.d.cts +57 -0
  52. package/dist/keys.d.ts +57 -0
  53. package/dist/keys.js +3 -0
  54. package/dist/keys.js.map +1 -0
  55. package/dist/link-status.cjs.map +1 -1
  56. package/dist/link-status.css +8 -8
  57. package/dist/link-status.css.map +1 -1
  58. package/dist/link-status.js +2 -2
  59. package/dist/notes-editor.css +7 -7
  60. package/dist/notes-editor.css.map +1 -1
  61. package/dist/pane-shell.css +7 -2
  62. package/dist/pane-shell.css.map +1 -1
  63. package/dist/problems.cjs +61 -0
  64. package/dist/problems.cjs.map +1 -0
  65. package/dist/problems.d.cts +57 -0
  66. package/dist/problems.d.ts +57 -0
  67. package/dist/problems.js +3 -0
  68. package/dist/problems.js.map +1 -0
  69. package/dist/property-list.cjs.map +1 -1
  70. package/dist/property-list.js +2 -2
  71. package/dist/save.css +1 -1
  72. package/dist/save.css.map +1 -1
  73. package/dist/settings.css +13 -13
  74. package/dist/settings.css.map +1 -1
  75. package/dist/stale.css +1 -1
  76. package/dist/stale.css.map +1 -1
  77. package/dist/stepper.css +13 -4
  78. package/dist/stepper.css.map +1 -1
  79. package/dist/toast.css +5 -5
  80. package/dist/toast.css.map +1 -1
  81. package/dist/tokens.css +2 -1
  82. package/dist/tokens.css.map +1 -1
  83. package/dist/tool-window.css +3 -2
  84. package/dist/tool-window.css.map +1 -1
  85. package/dist/tooltip.css +3 -3
  86. package/dist/tooltip.css.map +1 -1
  87. package/dist/updater-view.cjs.map +1 -1
  88. package/dist/updater-view.js +3 -3
  89. package/dist/updater.css +5 -5
  90. package/dist/updater.css.map +1 -1
  91. package/dist/vc.css +1 -1
  92. package/dist/vc.css.map +1 -1
  93. package/dist/welcome.cjs.map +1 -1
  94. package/dist/welcome.css +21 -21
  95. package/dist/welcome.css.map +1 -1
  96. package/dist/welcome.js +2 -2
  97. package/package.json +15 -1
  98. package/dist/chunk-XZYZXY7I.js.map +0 -1
package/dist/index.d.cts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { EDIT_MENU, FILE_MENU, GO_MENU, MenuLabel, PANE_MENU, PLAY_MENU, PUBLISH_MENU, REVIEW_MENU, VIEW_MENU } from './menu.cjs';
2
+ export { HintBarItem, KeyHintOptions, KeyPlatform, hintBar, isKeyCombo, keyHint, keyLabel, keyLegends, keyPlatform, setKeyPlatform, tipWithKey } from './keys.cjs';
3
+ export { ProblemCopy, ProblemCopyEntry, ProblemCopyTable, ProblemLike, defaultProblemCopy, describeProblem, problemLine, problemName } from './problems.cjs';
2
4
  export { D as DefaultControlOptions, a as DupGuard, P as PROPERTY_TYPES, b as PropertyDeclLike, c as PropertyListHandle, d as PropertyListOptions, e as PropertyListType, S as SettingsDialog, f as SettingsDialogOptions, g as SettingsSection, h as SettingsSectionHandle, i as defaultControl, j as dupGuard, k as expandableRow, l as focusNewRow, m as mountPropertyList, n as mountSettingsDialog, r as revealRow, o as revealRowWhenReady } from './property-list-D3VZCJzi.cjs';
3
5
  export { DialogFrame, DialogFrameOptions, dialogFrame } from './dialog.cjs';
4
6
  export { Floating, FloatingOptions, createFloating } from './floating.cjs';
@@ -254,6 +256,29 @@ declare function stageChips(holder: {
254
256
  * var(--accent)` pair is the family's look).
255
257
  */
256
258
  declare function wireReorder(el: HTMLElement, id: string, axis: "x" | "y", onMove: (id: string, before: boolean, targetId: string) => void): void;
259
+ /**
260
+ * A metadata line: `parts` as spans in a flex row, separated by a drawn
261
+ * 3px disc (a `::before` on every part after the first, in controls.css),
262
+ * so `metaLine(["6 runs", "200 max steps", "seed 4"])` is what
263
+ * "6 runs · 200 max steps · seed 4" used to be, without the typed dot.
264
+ * Empty, null and undefined parts are skipped, so a caller can pass an
265
+ * optional segment without branching.
266
+ */
267
+ declare function metaLine(parts: (string | Node | null | undefined)[]): HTMLElement;
268
+ interface Crumb {
269
+ label: string;
270
+ /** Makes the crumb a button. Ignored on the last crumb, which is where the
271
+ * reader already is. */
272
+ onClick?: (event: MouseEvent) => void;
273
+ }
274
+ /**
275
+ * A breadcrumb trail: each crumb a span, or a button when it carries
276
+ * `onClick` and is not the last, with `iconNode("forward", 12)` drawn between
277
+ * them. `breadcrumb(["Box", "Deck", "Card"])` is what "Box › Deck › Card"
278
+ * used to be; the chevrons are the family's own drawing, not a symbol-font
279
+ * character.
280
+ */
281
+ declare function breadcrumb(parts: (string | Crumb)[]): HTMLElement;
257
282
 
258
283
  /** Curated colour slots; must match the `--char-*` set defined per theme. */
259
284
  declare const PALETTE_SIZE = 12;
@@ -276,7 +301,10 @@ interface PaneSideConfig {
276
301
  resizable?: boolean;
277
302
  /** Noun for the toggle's tooltip/aria, e.g. "navigator" / "inspector". */
278
303
  label?: string;
279
- /** Shortcut hint appended to the tooltip, e.g. "Cmd+1". */
304
+ /** The key that toggles the pane, bracketed after the tooltip. A combo in
305
+ * the portable spelling ("Mod+1") is drawn for the platform through
306
+ * `tipWithKey`: "(⌘1)" on a Mac, "(Ctrl+1)" elsewhere. Anything else is a
307
+ * literal and goes in verbatim, as it always has ("Cmd+1" stays "Cmd+1"). */
280
308
  shortcutHint?: string;
281
309
  /** false = the pane is not offered at all: no toggle, togglePane ignored,
282
310
  * forced closed whatever the remembered state says. For a slot a host has
@@ -298,8 +326,9 @@ interface PaneShellOptions {
298
326
  onChange?: (state: PaneShellState) => void;
299
327
  /** The toggle's rollover for a side in a given state. Default: "Show
300
328
  * navigator" / "Hide navigator" from the side's `label`, with the
301
- * `shortcutHint` in brackets. Written as `data-tip` (the themed tooltip)
302
- * and as the accessible name; never as `title`. */
329
+ * `shortcutHint` in brackets (platform-true when it is a combo). Written as
330
+ * `data-tip` (the themed tooltip) and as the accessible name; never as
331
+ * `title`. */
303
332
  tipFor?: (side: PaneSide, open: boolean) => string;
304
333
  /** An extra class per side, toggled on the `.panes` grid whenever that side
305
334
  * is collapsed, beside the shell's own `no-nav` / `no-inspector`. For an
@@ -1031,8 +1060,12 @@ interface StepperItem {
1031
1060
  /** An extra class on the kind chip, so an app can colour its own kinds
1032
1061
  * (Storyletter's `sev-error`, and `done` for a resolved thread). */
1033
1062
  kindClass?: string;
1034
- /** Where it is, in the app's own address. Set in the mono face. */
1035
- where?: string;
1063
+ /** Where it is. A string is the app's own address, set in the mono face; a
1064
+ * Node is a made element, a `breadcrumb(["Box", "Deck", "Card"])` say,
1065
+ * drawn as it is. Give the bar plain crumbs: the whole entry is already
1066
+ * the button that goes there, so a crumb with its own click has nowhere
1067
+ * else to take you. */
1068
+ where?: string | Node;
1036
1069
  /** The entry itself, in one line. Overflow is clipped, not wrapped: the bar
1037
1070
  * is one row high and stays that way however long the sentence is. */
1038
1071
  text: string;
@@ -1118,4 +1151,4 @@ declare function historyNav(onBack: () => void, onForward: () => void): {
1118
1151
  set(canBack: boolean, canForward: boolean): void;
1119
1152
  };
1120
1153
 
1121
- export { type AboutOptions, type AnchoredPanel, type AnchoredPanelOptions, type Child, type Comment, type CommentMessage, type CommentsOptions, type ConfirmOptions, type DocLine, type ElProps, type FollowButton, type FollowButtonOptions, type GameIdEditorOptions, ICON_NAMES, ICON_SIZE, type IconName, type IconSvgName, type Identity, type IdentityOptions, type JobBeginOptions, type JobProgressOptions, type JobProgressView, type NavHistory, type NavHistoryOptions, type Notes, type NotesEditorOptions, PALETTE, PALETTE_SIZE, PROPERTY_NAME_HINT, type PaneShell, type PaneShellOptions, type PaneShellState, type PaneSide, type PaneSideConfig, type PinButton, type PinButtonOptions, type PropertyRefOptions, RESERVED_PROPERTY_NAMES, type SaveController, type SaveControllerOptions, type SaveIndicator, type SaveStatus, type ShardVc, type StaleBarOptions, type StepperBarOptions, type StepperItem, type StepperTone, type TipRect, type ToastKind, type ToastOptions, type ToolWindowHeadOptions, type TooltipOptions, type VcBadge, type VcMap, askIdentity, bindPropertyName, bindPropertyRef, closeAnchoredPanel, closeWithExit, colourFor, colourIndex, confirmDialog, createNavHistory, createSaveController, dismissToast, el, firstIllegalPropertyName, foldVc, followButton, gameIdify, hideTip, historyNav, icon, iconBtn, iconHtml, iconNameOfGlyph, iconNode, iconSvg, initTooltips, isCaseOnlyPropertyName, isIconName, isValidGameId, isValidPropertyName, labelled, lockControls, lockNotice, mountJobProgress, mountPaneShell, moveItem, openAnchoredPanel, openComments, openGameIdEditor, openNotesEditor, paintVcBadges, pinButton, placeAnchored, propertyNameProblem, propertyNameify, propertyRefProblem, renderStepperBar, revalidatePropertyRefs, saveIndicator, showAbout, stageChips, staleBar, tagChips, tipAt, tipBold, toast, toolWindowHead, vcBadgeFor, wireReorder };
1154
+ export { type AboutOptions, type AnchoredPanel, type AnchoredPanelOptions, type Child, type Comment, type CommentMessage, type CommentsOptions, type ConfirmOptions, type Crumb, type DocLine, type ElProps, type FollowButton, type FollowButtonOptions, type GameIdEditorOptions, ICON_NAMES, ICON_SIZE, type IconName, type IconSvgName, type Identity, type IdentityOptions, type JobBeginOptions, type JobProgressOptions, type JobProgressView, type NavHistory, type NavHistoryOptions, type Notes, type NotesEditorOptions, PALETTE, PALETTE_SIZE, PROPERTY_NAME_HINT, type PaneShell, type PaneShellOptions, type PaneShellState, type PaneSide, type PaneSideConfig, type PinButton, type PinButtonOptions, type PropertyRefOptions, RESERVED_PROPERTY_NAMES, type SaveController, type SaveControllerOptions, type SaveIndicator, type SaveStatus, type ShardVc, type StaleBarOptions, type StepperBarOptions, type StepperItem, type StepperTone, type TipRect, type ToastKind, type ToastOptions, type ToolWindowHeadOptions, type TooltipOptions, type VcBadge, type VcMap, askIdentity, bindPropertyName, bindPropertyRef, breadcrumb, closeAnchoredPanel, closeWithExit, colourFor, colourIndex, confirmDialog, createNavHistory, createSaveController, dismissToast, el, firstIllegalPropertyName, foldVc, followButton, gameIdify, hideTip, historyNav, icon, iconBtn, iconHtml, iconNameOfGlyph, iconNode, iconSvg, initTooltips, isCaseOnlyPropertyName, isIconName, isValidGameId, isValidPropertyName, labelled, lockControls, lockNotice, metaLine, mountJobProgress, mountPaneShell, moveItem, openAnchoredPanel, openComments, openGameIdEditor, openNotesEditor, paintVcBadges, pinButton, placeAnchored, propertyNameProblem, propertyNameify, propertyRefProblem, renderStepperBar, revalidatePropertyRefs, saveIndicator, showAbout, stageChips, staleBar, tagChips, tipAt, tipBold, toast, toolWindowHead, vcBadgeFor, wireReorder };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { EDIT_MENU, FILE_MENU, GO_MENU, MenuLabel, PANE_MENU, PLAY_MENU, PUBLISH_MENU, REVIEW_MENU, VIEW_MENU } from './menu.js';
2
+ export { HintBarItem, KeyHintOptions, KeyPlatform, hintBar, isKeyCombo, keyHint, keyLabel, keyLegends, keyPlatform, setKeyPlatform, tipWithKey } from './keys.js';
3
+ export { ProblemCopy, ProblemCopyEntry, ProblemCopyTable, ProblemLike, defaultProblemCopy, describeProblem, problemLine, problemName } from './problems.js';
2
4
  export { D as DefaultControlOptions, a as DupGuard, P as PROPERTY_TYPES, b as PropertyDeclLike, c as PropertyListHandle, d as PropertyListOptions, e as PropertyListType, S as SettingsDialog, f as SettingsDialogOptions, g as SettingsSection, h as SettingsSectionHandle, i as defaultControl, j as dupGuard, k as expandableRow, l as focusNewRow, m as mountPropertyList, n as mountSettingsDialog, r as revealRow, o as revealRowWhenReady } from './property-list-D3VZCJzi.js';
3
5
  export { DialogFrame, DialogFrameOptions, dialogFrame } from './dialog.js';
4
6
  export { Floating, FloatingOptions, createFloating } from './floating.js';
@@ -254,6 +256,29 @@ declare function stageChips(holder: {
254
256
  * var(--accent)` pair is the family's look).
255
257
  */
256
258
  declare function wireReorder(el: HTMLElement, id: string, axis: "x" | "y", onMove: (id: string, before: boolean, targetId: string) => void): void;
259
+ /**
260
+ * A metadata line: `parts` as spans in a flex row, separated by a drawn
261
+ * 3px disc (a `::before` on every part after the first, in controls.css),
262
+ * so `metaLine(["6 runs", "200 max steps", "seed 4"])` is what
263
+ * "6 runs · 200 max steps · seed 4" used to be, without the typed dot.
264
+ * Empty, null and undefined parts are skipped, so a caller can pass an
265
+ * optional segment without branching.
266
+ */
267
+ declare function metaLine(parts: (string | Node | null | undefined)[]): HTMLElement;
268
+ interface Crumb {
269
+ label: string;
270
+ /** Makes the crumb a button. Ignored on the last crumb, which is where the
271
+ * reader already is. */
272
+ onClick?: (event: MouseEvent) => void;
273
+ }
274
+ /**
275
+ * A breadcrumb trail: each crumb a span, or a button when it carries
276
+ * `onClick` and is not the last, with `iconNode("forward", 12)` drawn between
277
+ * them. `breadcrumb(["Box", "Deck", "Card"])` is what "Box › Deck › Card"
278
+ * used to be; the chevrons are the family's own drawing, not a symbol-font
279
+ * character.
280
+ */
281
+ declare function breadcrumb(parts: (string | Crumb)[]): HTMLElement;
257
282
 
258
283
  /** Curated colour slots; must match the `--char-*` set defined per theme. */
259
284
  declare const PALETTE_SIZE = 12;
@@ -276,7 +301,10 @@ interface PaneSideConfig {
276
301
  resizable?: boolean;
277
302
  /** Noun for the toggle's tooltip/aria, e.g. "navigator" / "inspector". */
278
303
  label?: string;
279
- /** Shortcut hint appended to the tooltip, e.g. "Cmd+1". */
304
+ /** The key that toggles the pane, bracketed after the tooltip. A combo in
305
+ * the portable spelling ("Mod+1") is drawn for the platform through
306
+ * `tipWithKey`: "(⌘1)" on a Mac, "(Ctrl+1)" elsewhere. Anything else is a
307
+ * literal and goes in verbatim, as it always has ("Cmd+1" stays "Cmd+1"). */
280
308
  shortcutHint?: string;
281
309
  /** false = the pane is not offered at all: no toggle, togglePane ignored,
282
310
  * forced closed whatever the remembered state says. For a slot a host has
@@ -298,8 +326,9 @@ interface PaneShellOptions {
298
326
  onChange?: (state: PaneShellState) => void;
299
327
  /** The toggle's rollover for a side in a given state. Default: "Show
300
328
  * navigator" / "Hide navigator" from the side's `label`, with the
301
- * `shortcutHint` in brackets. Written as `data-tip` (the themed tooltip)
302
- * and as the accessible name; never as `title`. */
329
+ * `shortcutHint` in brackets (platform-true when it is a combo). Written as
330
+ * `data-tip` (the themed tooltip) and as the accessible name; never as
331
+ * `title`. */
303
332
  tipFor?: (side: PaneSide, open: boolean) => string;
304
333
  /** An extra class per side, toggled on the `.panes` grid whenever that side
305
334
  * is collapsed, beside the shell's own `no-nav` / `no-inspector`. For an
@@ -1031,8 +1060,12 @@ interface StepperItem {
1031
1060
  /** An extra class on the kind chip, so an app can colour its own kinds
1032
1061
  * (Storyletter's `sev-error`, and `done` for a resolved thread). */
1033
1062
  kindClass?: string;
1034
- /** Where it is, in the app's own address. Set in the mono face. */
1035
- where?: string;
1063
+ /** Where it is. A string is the app's own address, set in the mono face; a
1064
+ * Node is a made element, a `breadcrumb(["Box", "Deck", "Card"])` say,
1065
+ * drawn as it is. Give the bar plain crumbs: the whole entry is already
1066
+ * the button that goes there, so a crumb with its own click has nowhere
1067
+ * else to take you. */
1068
+ where?: string | Node;
1036
1069
  /** The entry itself, in one line. Overflow is clipped, not wrapped: the bar
1037
1070
  * is one row high and stays that way however long the sentence is. */
1038
1071
  text: string;
@@ -1118,4 +1151,4 @@ declare function historyNav(onBack: () => void, onForward: () => void): {
1118
1151
  set(canBack: boolean, canForward: boolean): void;
1119
1152
  };
1120
1153
 
1121
- export { type AboutOptions, type AnchoredPanel, type AnchoredPanelOptions, type Child, type Comment, type CommentMessage, type CommentsOptions, type ConfirmOptions, type DocLine, type ElProps, type FollowButton, type FollowButtonOptions, type GameIdEditorOptions, ICON_NAMES, ICON_SIZE, type IconName, type IconSvgName, type Identity, type IdentityOptions, type JobBeginOptions, type JobProgressOptions, type JobProgressView, type NavHistory, type NavHistoryOptions, type Notes, type NotesEditorOptions, PALETTE, PALETTE_SIZE, PROPERTY_NAME_HINT, type PaneShell, type PaneShellOptions, type PaneShellState, type PaneSide, type PaneSideConfig, type PinButton, type PinButtonOptions, type PropertyRefOptions, RESERVED_PROPERTY_NAMES, type SaveController, type SaveControllerOptions, type SaveIndicator, type SaveStatus, type ShardVc, type StaleBarOptions, type StepperBarOptions, type StepperItem, type StepperTone, type TipRect, type ToastKind, type ToastOptions, type ToolWindowHeadOptions, type TooltipOptions, type VcBadge, type VcMap, askIdentity, bindPropertyName, bindPropertyRef, closeAnchoredPanel, closeWithExit, colourFor, colourIndex, confirmDialog, createNavHistory, createSaveController, dismissToast, el, firstIllegalPropertyName, foldVc, followButton, gameIdify, hideTip, historyNav, icon, iconBtn, iconHtml, iconNameOfGlyph, iconNode, iconSvg, initTooltips, isCaseOnlyPropertyName, isIconName, isValidGameId, isValidPropertyName, labelled, lockControls, lockNotice, mountJobProgress, mountPaneShell, moveItem, openAnchoredPanel, openComments, openGameIdEditor, openNotesEditor, paintVcBadges, pinButton, placeAnchored, propertyNameProblem, propertyNameify, propertyRefProblem, renderStepperBar, revalidatePropertyRefs, saveIndicator, showAbout, stageChips, staleBar, tagChips, tipAt, tipBold, toast, toolWindowHead, vcBadgeFor, wireReorder };
1154
+ export { type AboutOptions, type AnchoredPanel, type AnchoredPanelOptions, type Child, type Comment, type CommentMessage, type CommentsOptions, type ConfirmOptions, type Crumb, type DocLine, type ElProps, type FollowButton, type FollowButtonOptions, type GameIdEditorOptions, ICON_NAMES, ICON_SIZE, type IconName, type IconSvgName, type Identity, type IdentityOptions, type JobBeginOptions, type JobProgressOptions, type JobProgressView, type NavHistory, type NavHistoryOptions, type Notes, type NotesEditorOptions, PALETTE, PALETTE_SIZE, PROPERTY_NAME_HINT, type PaneShell, type PaneShellOptions, type PaneShellState, type PaneSide, type PaneSideConfig, type PinButton, type PinButtonOptions, type PropertyRefOptions, RESERVED_PROPERTY_NAMES, type SaveController, type SaveControllerOptions, type SaveIndicator, type SaveStatus, type ShardVc, type StaleBarOptions, type StepperBarOptions, type StepperItem, type StepperTone, type TipRect, type ToastKind, type ToastOptions, type ToolWindowHeadOptions, type TooltipOptions, type VcBadge, type VcMap, askIdentity, bindPropertyName, bindPropertyRef, breadcrumb, closeAnchoredPanel, closeWithExit, colourFor, colourIndex, confirmDialog, createNavHistory, createSaveController, dismissToast, el, firstIllegalPropertyName, foldVc, followButton, gameIdify, hideTip, historyNav, icon, iconBtn, iconHtml, iconNameOfGlyph, iconNode, iconSvg, initTooltips, isCaseOnlyPropertyName, isIconName, isValidGameId, isValidPropertyName, labelled, lockControls, lockNotice, metaLine, mountJobProgress, mountPaneShell, moveItem, openAnchoredPanel, openComments, openGameIdEditor, openNotesEditor, paintVcBadges, pinButton, placeAnchored, propertyNameProblem, propertyNameify, propertyRefProblem, renderStepperBar, revalidatePropertyRefs, saveIndicator, showAbout, stageChips, staleBar, tagChips, tipAt, tipBold, toast, toolWindowHead, vcBadgeFor, wireReorder };
package/dist/index.js CHANGED
@@ -1,17 +1,20 @@
1
- export { mountWelcome } from './chunk-C6UVQYKI.js';
2
- export { feedUpdaterDownloadProgress, showUpdaterDialog } from './chunk-S4KWQLYN.js';
3
- export { linkAddress, linkStatusClass, linkStatusTip, mountLinkStatus } from './chunk-KGAMP5LW.js';
1
+ export { mountWelcome } from './chunk-SEWJLUOD.js';
2
+ export { feedUpdaterDownloadProgress, showUpdaterDialog } from './chunk-OPZPFOPS.js';
3
+ import { isKeyCombo, tipWithKey } from './chunk-YWMSQFXX.js';
4
+ export { hintBar, isKeyCombo, keyHint, keyLabel, keyLegends, keyPlatform, setKeyPlatform, tipWithKey } from './chunk-YWMSQFXX.js';
5
+ export { linkAddress, linkStatusClass, linkStatusTip, mountLinkStatus } from './chunk-SDOKZTAR.js';
4
6
  import { isEditableTarget } from './chunk-P6WLAEKZ.js';
5
7
  export { copyWithFeedback, debounce, formatCount, isEditableTarget, plural, relativeTime } from './chunk-P6WLAEKZ.js';
6
8
  export { EDIT_MENU, FILE_MENU, GO_MENU, PANE_MENU, PLAY_MENU, PUBLISH_MENU, REVIEW_MENU, VIEW_MENU } from './chunk-2ECJUTSX.js';
7
- export { PROPERTY_NAME_HINT, PROPERTY_TYPES, RESERVED_PROPERTY_NAMES, bindPropertyName, bindPropertyRef, defaultControl, dupGuard, expandableRow, firstIllegalPropertyName, focusNewRow, isCaseOnlyPropertyName, isValidPropertyName, mountPropertyList, mountSettingsDialog, propertyNameProblem, propertyNameify, propertyRefProblem, revalidatePropertyRefs, revealRow, revealRowWhenReady } from './chunk-L5HOBEKL.js';
8
- import { dialogFrame } from './chunk-2NMVIM54.js';
9
- export { dialogFrame } from './chunk-2NMVIM54.js';
9
+ export { defaultProblemCopy, describeProblem, problemLine, problemName } from './chunk-DS4XXAZS.js';
10
+ export { PROPERTY_NAME_HINT, PROPERTY_TYPES, RESERVED_PROPERTY_NAMES, bindPropertyName, bindPropertyRef, defaultControl, dupGuard, expandableRow, firstIllegalPropertyName, focusNewRow, isCaseOnlyPropertyName, isValidPropertyName, mountPropertyList, mountSettingsDialog, propertyNameProblem, propertyNameify, propertyRefProblem, revalidatePropertyRefs, revealRow, revealRowWhenReady } from './chunk-R3NXPHRZ.js';
11
+ import { dialogFrame } from './chunk-YRFJLJUH.js';
12
+ export { dialogFrame } from './chunk-YRFJLJUH.js';
10
13
  export { createFloating } from './chunk-P4G4ERG6.js';
11
14
  export { JOB_PROGRESS } from './chunk-MDGOIT3O.js';
12
- export { openContextMenu, openPopover } from './chunk-K2AOLQW4.js';
13
- import { ensureTooltipHost, el, iconNode, labelled, icon } from './chunk-XZYZXY7I.js';
14
- export { ICON_NAMES, ICON_SIZE, el, hideTip, icon, iconBtn, iconHtml, iconNameOfGlyph, iconNode, iconSvg, initTooltips, isIconName, labelled, moveItem, stageChips, tagChips, tipAt, tipBold, wireReorder } from './chunk-XZYZXY7I.js';
15
+ export { openContextMenu, openPopover } from './chunk-EHR2KBZC.js';
16
+ import { ensureTooltipHost, el, iconNode, labelled, icon } from './chunk-UG2P777F.js';
17
+ export { ICON_NAMES, ICON_SIZE, breadcrumb, el, hideTip, icon, iconBtn, iconHtml, iconNameOfGlyph, iconNode, iconSvg, initTooltips, isIconName, labelled, metaLine, moveItem, stageChips, tagChips, tipAt, tipBold, wireReorder } from './chunk-UG2P777F.js';
15
18
  import { closeWithExit } from './chunk-IU7EY6BI.js';
16
19
  export { closeWithExit } from './chunk-IU7EY6BI.js';
17
20
 
@@ -80,9 +83,10 @@ function mountPaneShell(host, opts) {
80
83
  if (!offered("nav")) navToggle.remove();
81
84
  if (!offered("inspector")) inspToggle.remove();
82
85
  const defaultTip = (side, isOpen) => {
83
- const noun = cfg[side].label ?? side;
84
- const hint = cfg[side].shortcutHint ? ` (${cfg[side].shortcutHint})` : "";
85
- return `${isOpen ? "Hide" : "Show"} ${noun}${hint}`;
86
+ const text = `${isOpen ? "Hide" : "Show"} ${cfg[side].label ?? side}`;
87
+ const hint = cfg[side].shortcutHint;
88
+ if (!hint) return text;
89
+ return isKeyCombo(hint) ? tipWithKey(text, hint) : `${text} (${hint})`;
86
90
  };
87
91
  const tipFor = opts.tipFor ?? defaultTip;
88
92
  function applyToggleGlyph(side, button) {
@@ -1169,7 +1173,7 @@ function renderStepperBar(host, opts) {
1169
1173
  "button",
1170
1174
  { className: "stepbar-cur", tip: opts.tips?.go ?? "Go to this", onClick: () => opts.onGo(index) },
1171
1175
  item.kind === void 0 ? null : el("span", { className: `stepbar-cat${item.kindClass ? ` ${item.kindClass}` : ""}`, text: item.kind }),
1172
- item.where === void 0 ? null : el("span", { className: "stepbar-where", text: item.where }),
1176
+ item.where === void 0 ? null : typeof item.where === "string" ? el("span", { className: "stepbar-where", text: item.where }) : el("span", "stepbar-where", item.where),
1173
1177
  el("span", { className: "stepbar-msg", text: item.text })
1174
1178
  ),
1175
1179
  ...actions,