@bendyline/docblocks-react 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +23 -14
  2. package/dist/AppMenu/AppMenu.d.ts +11 -1
  3. package/dist/AppMenu/AppMenu.d.ts.map +1 -1
  4. package/dist/AppMenu/AppMenu.js +2 -2
  5. package/dist/AppMenu/AppMenu.js.map +1 -1
  6. package/dist/DocBlocksShell/DocBlocksShell.d.ts +23 -3
  7. package/dist/DocBlocksShell/DocBlocksShell.d.ts.map +1 -1
  8. package/dist/DocBlocksShell/DocBlocksShell.js +621 -94
  9. package/dist/DocBlocksShell/DocBlocksShell.js.map +1 -1
  10. package/dist/Export/ExportDialog.d.ts.map +1 -1
  11. package/dist/Export/ExportDialog.js +123 -7
  12. package/dist/Export/ExportDialog.js.map +1 -1
  13. package/dist/Export/ExportToolbarControls.d.ts.map +1 -1
  14. package/dist/Export/ExportToolbarControls.js +108 -17
  15. package/dist/Export/ExportToolbarControls.js.map +1 -1
  16. package/dist/Export/export-options.d.ts +35 -0
  17. package/dist/Export/export-options.d.ts.map +1 -1
  18. package/dist/Export/export-options.js +6 -1
  19. package/dist/Export/export-options.js.map +1 -1
  20. package/dist/Export/run-export.d.ts.map +1 -1
  21. package/dist/Export/run-export.js +185 -97
  22. package/dist/Export/run-export.js.map +1 -1
  23. package/dist/Export/transform-summaries.d.ts +7 -0
  24. package/dist/Export/transform-summaries.d.ts.map +1 -0
  25. package/dist/Export/transform-summaries.js +6 -0
  26. package/dist/Export/transform-summaries.js.map +1 -0
  27. package/dist/FileExplorer/FileExplorer.d.ts.map +1 -1
  28. package/dist/FileExplorer/FileExplorer.js +17 -2
  29. package/dist/FileExplorer/FileExplorer.js.map +1 -1
  30. package/dist/WorkspacePicker/WorkspaceSettingsButton.d.ts +2 -1
  31. package/dist/WorkspacePicker/WorkspaceSettingsButton.d.ts.map +1 -1
  32. package/dist/WorkspacePicker/WorkspaceSettingsButton.js +2 -2
  33. package/dist/WorkspacePicker/WorkspaceSettingsButton.js.map +1 -1
  34. package/dist/WorkspacePicker/WorkspaceSettingsDialog.d.ts +20 -0
  35. package/dist/WorkspacePicker/WorkspaceSettingsDialog.d.ts.map +1 -0
  36. package/dist/WorkspacePicker/WorkspaceSettingsDialog.js +36 -0
  37. package/dist/WorkspacePicker/WorkspaceSettingsDialog.js.map +1 -0
  38. package/dist/hooks/useAutoSave.d.ts +8 -2
  39. package/dist/hooks/useAutoSave.d.ts.map +1 -1
  40. package/dist/hooks/useAutoSave.js +65 -30
  41. package/dist/hooks/useAutoSave.js.map +1 -1
  42. package/dist/monaco-slim.d.ts +19 -0
  43. package/dist/monaco-slim.d.ts.map +1 -0
  44. package/dist/monaco-slim.js +19 -0
  45. package/dist/monaco-slim.js.map +1 -0
  46. package/dist/preferences/versioning.d.ts +27 -0
  47. package/dist/preferences/versioning.d.ts.map +1 -0
  48. package/dist/preferences/versioning.js +62 -0
  49. package/dist/preferences/versioning.js.map +1 -0
  50. package/package.json +14 -10
  51. package/src/AppMenu/AppMenu.tsx +64 -1
  52. package/src/DocBlocksShell/DocBlocksShell.tsx +839 -116
  53. package/src/Export/ExportDialog.tsx +236 -26
  54. package/src/Export/ExportToolbarControls.tsx +151 -21
  55. package/src/Export/export-options.ts +43 -1
  56. package/src/Export/run-export.ts +208 -97
  57. package/src/Export/transform-summaries.ts +14 -0
  58. package/src/FileExplorer/FileExplorer.tsx +31 -9
  59. package/src/WorkspacePicker/WorkspaceSettingsButton.tsx +9 -0
  60. package/src/WorkspacePicker/WorkspaceSettingsDialog.tsx +121 -0
  61. package/src/hooks/useAutoSave.ts +87 -29
  62. package/src/monaco-slim.ts +20 -0
  63. package/src/preferences/versioning.ts +69 -0
  64. package/src/styles/docblocks.css +995 -53
@@ -1 +1 @@
1
- {"version":3,"file":"FileExplorer.js","sourceRoot":"","sources":["../../src/FileExplorer/FileExplorer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileExplorer.js","sourceRoot":"","sources":["../../src/FileExplorer/FileExplorer.tsx"],"names":[],"mappings":"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"}
@@ -2,9 +2,10 @@
2
2
  * WorkspaceSettingsButton — gear icon dropdown for workspace actions.
3
3
  */
4
4
  export interface WorkspaceSettingsButtonProps {
5
+ onSettings: () => void;
5
6
  onRename: () => void;
6
7
  onDownload: () => void;
7
8
  onRemove: () => void;
8
9
  }
9
- export declare function WorkspaceSettingsButton({ onRename, onDownload, onRemove, }: WorkspaceSettingsButtonProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare function WorkspaceSettingsButton({ onSettings, onRename, onDownload, onRemove, }: WorkspaceSettingsButtonProps): import("react/jsx-runtime").JSX.Element;
10
11
  //# sourceMappingURL=WorkspaceSettingsButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceSettingsButton.d.ts","sourceRoot":"","sources":["../../src/WorkspacePicker/WorkspaceSettingsButton.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,uBAAuB,CAAC,EACtC,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,EAAE,4BAA4B,2CA6D9B"}
1
+ {"version":3,"file":"WorkspaceSettingsButton.d.ts","sourceRoot":"","sources":["../../src/WorkspacePicker/WorkspaceSettingsButton.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAKH,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,uBAAuB,CAAC,EACtC,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,GACT,EAAE,4BAA4B,2CAoE9B"}
@@ -4,7 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  */
5
5
  import { useState, useCallback, useRef, useEffect } from 'react';
6
6
  import { WorkspaceIcon } from '../icons.js';
7
- export function WorkspaceSettingsButton({ onRename, onDownload, onRemove, }) {
7
+ export function WorkspaceSettingsButton({ onSettings, onRename, onDownload, onRemove, }) {
8
8
  const [isOpen, setIsOpen] = useState(false);
9
9
  const ref = useRef(null);
10
10
  useEffect(() => {
@@ -22,6 +22,6 @@ export function WorkspaceSettingsButton({ onRename, onDownload, onRemove, }) {
22
22
  setIsOpen(false);
23
23
  action();
24
24
  }, []);
25
- return (_jsxs("div", { ref: ref, className: "db-ws-settings", children: [_jsx("button", { className: "db-ws-settings-btn", onClick: () => setIsOpen(!isOpen), "aria-expanded": isOpen, "aria-haspopup": "true", "aria-label": "Workspace settings", title: "Workspace settings", children: _jsx(WorkspaceIcon, {}) }), isOpen && (_jsxs("div", { className: "db-ws-settings-dropdown", role: "menu", children: [_jsx("button", { className: "db-ws-settings-item", role: "menuitem", onClick: () => handleAction(onRename), children: "Rename workspace" }), _jsx("button", { className: "db-ws-settings-item", role: "menuitem", onClick: () => handleAction(onDownload), children: "Download workspace" }), _jsx("div", { className: "db-ws-settings-divider" }), _jsx("button", { className: "db-ws-settings-item db-ws-settings-item--danger", role: "menuitem", onClick: () => handleAction(onRemove), children: "Remove workspace" })] }))] }));
25
+ return (_jsxs("div", { ref: ref, className: "db-ws-settings", children: [_jsx("button", { className: "db-ws-settings-btn", onClick: () => setIsOpen(!isOpen), "aria-expanded": isOpen, "aria-haspopup": "true", "aria-label": "Workspace settings", title: "Workspace settings", children: _jsx(WorkspaceIcon, {}) }), isOpen && (_jsxs("div", { className: "db-ws-settings-dropdown", role: "menu", children: [_jsx("button", { className: "db-ws-settings-item", role: "menuitem", onClick: () => handleAction(onSettings), children: "Workspace settings\u2026" }), _jsx("button", { className: "db-ws-settings-item", role: "menuitem", onClick: () => handleAction(onRename), children: "Rename workspace" }), _jsx("button", { className: "db-ws-settings-item", role: "menuitem", onClick: () => handleAction(onDownload), children: "Download workspace" }), _jsx("div", { className: "db-ws-settings-divider" }), _jsx("button", { className: "db-ws-settings-item db-ws-settings-item--danger", role: "menuitem", onClick: () => handleAction(onRemove), children: "Remove workspace" })] }))] }));
26
26
  }
27
27
  //# sourceMappingURL=WorkspaceSettingsButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceSettingsButton.js","sourceRoot":"","sources":["../../src/WorkspacePicker/WorkspaceSettingsButton.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQ5C,MAAM,UAAU,uBAAuB,CAAC,EACtC,QAAQ,EACR,UAAU,EACV,QAAQ,GACqB;IAC7B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,SAAS,kBAAkB,CAAC,CAAa;YACvC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,EAAE,CAAC;gBAC3D,SAAS,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC7E,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,MAAkB,EAAE,EAAE;QACtD,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,EAAE,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,gBAAgB,aACvC,iBACE,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,mBAClB,MAAM,mBACP,MAAM,gBACT,oBAAoB,EAC/B,KAAK,EAAC,oBAAoB,YAE1B,KAAC,aAAa,KAAG,GACV,EAER,MAAM,IAAI,CACT,eAAK,SAAS,EAAC,yBAAyB,EAAC,IAAI,EAAC,MAAM,aAClD,iBACE,SAAS,EAAC,qBAAqB,EAC/B,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,iCAG9B,EACT,iBACE,SAAS,EAAC,qBAAqB,EAC/B,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mCAGhC,EACT,cAAK,SAAS,EAAC,wBAAwB,GAAG,EAC1C,iBACE,SAAS,EAAC,iDAAiD,EAC3D,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,iCAG9B,IACL,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"WorkspaceSettingsButton.js","sourceRoot":"","sources":["../../src/WorkspacePicker/WorkspaceSettingsButton.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5C,MAAM,UAAU,uBAAuB,CAAC,EACtC,UAAU,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,GACqB;IAC7B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,SAAS,kBAAkB,CAAC,CAAa;YACvC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAc,CAAC,EAAE,CAAC;gBAC3D,SAAS,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC7E,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,MAAkB,EAAE,EAAE;QACtD,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,EAAE,CAAC;IACX,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,gBAAgB,aACvC,iBACE,SAAS,EAAC,oBAAoB,EAC9B,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,mBAClB,MAAM,mBACP,MAAM,gBACT,oBAAoB,EAC/B,KAAK,EAAC,oBAAoB,YAE1B,KAAC,aAAa,KAAG,GACV,EAER,MAAM,IAAI,CACT,eAAK,SAAS,EAAC,yBAAyB,EAAC,IAAI,EAAC,MAAM,aAClD,iBACE,SAAS,EAAC,qBAAqB,EAC/B,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,yCAGhC,EACT,iBACE,SAAS,EAAC,qBAAqB,EAC/B,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,iCAG9B,EACT,iBACE,SAAS,EAAC,qBAAqB,EAC/B,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,mCAGhC,EACT,cAAK,SAAS,EAAC,wBAAwB,GAAG,EAC1C,iBACE,SAAS,EAAC,iDAAiD,EAC3D,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,iCAG9B,IACL,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * WorkspaceSettingsDialog — per-workspace settings modal.
3
+ *
4
+ * Lets the user override the global versioning preference for a single
5
+ * workspace (or fall back to inheriting it). The override is stored on
6
+ * the WorkspaceDescriptor and persisted via `saveWorkspace`.
7
+ */
8
+ import type { WorkspaceDescriptor } from '@bendyline/docblocks/workspace';
9
+ import { type VersioningPreference } from '../preferences/versioning.js';
10
+ export type WorkspaceVersioningOverride = NonNullable<WorkspaceDescriptor['versioningOverride']>;
11
+ export interface WorkspaceSettingsDialogProps {
12
+ workspace: WorkspaceDescriptor;
13
+ /** Current global versioning preference — used to label "Inherit". */
14
+ globalVersioningPreference: VersioningPreference;
15
+ /** Apply a new override and close the dialog. */
16
+ onChange: (override: WorkspaceVersioningOverride) => void;
17
+ onClose: () => void;
18
+ }
19
+ export declare function WorkspaceSettingsDialog({ workspace, globalVersioningPreference, onChange, onClose, }: WorkspaceSettingsDialogProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=WorkspaceSettingsDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceSettingsDialog.d.ts","sourceRoot":"","sources":["../../src/WorkspacePicker/WorkspaceSettingsDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC,CAAC;AAEjG,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,mBAAmB,CAAC;IAC/B,sEAAsE;IACtE,0BAA0B,EAAE,oBAAoB,CAAC;IACjD,iDAAiD;IACjD,QAAQ,EAAE,CAAC,QAAQ,EAAE,2BAA2B,KAAK,IAAI,CAAC;IAC1D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAQD,wBAAgB,uBAAuB,CAAC,EACtC,SAAS,EACT,0BAA0B,EAC1B,QAAQ,EACR,OAAO,GACR,EAAE,4BAA4B,2CAkF9B"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * WorkspaceSettingsDialog — per-workspace settings modal.
4
+ *
5
+ * Lets the user override the global versioning preference for a single
6
+ * workspace (or fall back to inheriting it). The override is stored on
7
+ * the WorkspaceDescriptor and persisted via `saveWorkspace`.
8
+ */
9
+ import { useCallback, useEffect } from 'react';
10
+ import { isLocalWorkspaceType, resolveVersioningEnabled, } from '../preferences/versioning.js';
11
+ const VERSIONING_LABELS = {
12
+ on: 'on',
13
+ 'browser-only': 'on for browser workspaces, off for local folders',
14
+ off: 'off',
15
+ };
16
+ export function WorkspaceSettingsDialog({ workspace, globalVersioningPreference, onChange, onClose, }) {
17
+ // Treat absent/undefined as 'inherit' for the radio state.
18
+ const current = workspace.versioningOverride ?? 'inherit';
19
+ useEffect(() => {
20
+ const onKey = (e) => {
21
+ if (e.key === 'Escape')
22
+ onClose();
23
+ };
24
+ window.addEventListener('keydown', onKey);
25
+ return () => window.removeEventListener('keydown', onKey);
26
+ }, [onClose]);
27
+ const handleBackdropClick = useCallback((e) => {
28
+ if (e.target === e.currentTarget)
29
+ onClose();
30
+ }, [onClose]);
31
+ const isLocal = isLocalWorkspaceType(workspace.type);
32
+ const inheritedEnabled = resolveVersioningEnabled({ ...workspace, versioningOverride: 'inherit' }, globalVersioningPreference);
33
+ const inheritLabel = `Inherit default — currently ${VERSIONING_LABELS[globalVersioningPreference]} (${inheritedEnabled ? 'on' : 'off'} for this workspace)`;
34
+ return (_jsx("div", { className: "db-dialog-overlay", onClick: handleBackdropClick, children: _jsxs("div", { className: "db-dialog", role: "dialog", "aria-label": "Workspace settings", children: [_jsxs("div", { className: "db-dialog-header", children: [_jsx("h2", { className: "db-dialog-title", children: "Workspace settings" }), _jsx("button", { type: "button", className: "db-dialog-close", onClick: onClose, "aria-label": "Close", children: "\u00D7" })] }), _jsxs("div", { className: "db-dialog-body", children: [_jsxs("p", { className: "db-settings-hint", children: [_jsx("strong", { children: workspace.name }), " \u00B7", ' ', isLocal ? 'Local folder workspace' : 'Browser workspace'] }), _jsxs("fieldset", { className: "db-settings-fieldset", children: [_jsx("legend", { className: "db-settings-legend", children: "Version history" }), _jsxs("p", { className: "db-settings-hint", children: ["Controls whether DocBlocks keeps prior revisions in", ' ', _jsx("code", { children: "<name>_files/.versions/" }), " for documents in this workspace."] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "ws-versioning", value: "inherit", checked: current === 'inherit', onChange: () => onChange('inherit') }), inheritLabel] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "ws-versioning", value: "on", checked: current === 'on', onChange: () => onChange('on') }), "On for this workspace"] }), _jsxs("label", { className: "db-settings-radio", children: [_jsx("input", { type: "radio", name: "ws-versioning", value: "off", checked: current === 'off', onChange: () => onChange('off') }), "Off for this workspace"] })] })] })] }) }));
35
+ }
36
+ //# sourceMappingURL=WorkspaceSettingsDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkspaceSettingsDialog.js","sourceRoot":"","sources":["../../src/WorkspacePicker/WorkspaceSettingsDialog.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,14 @@
2
2
  * useAutoSave — debounced auto-save hook.
3
3
  *
4
4
  * Writes content to the FileSystemProvider after a delay
5
- * whenever the content changes.
5
+ * whenever the content changes. Returns a `flush` function so callers
6
+ * (e.g. an explicit Ctrl/Cmd+S handler) can force an immediate write
7
+ * and await its completion.
6
8
  */
7
9
  import type { FileSystemProvider } from '@bendyline/docblocks/filesystem';
8
- export declare function useAutoSave(provider: FileSystemProvider | null, filePath: string | null, content: string, delayMs?: number): void;
10
+ export interface UseAutoSaveResult {
11
+ /** Cancel any pending debounce and write the current content immediately. */
12
+ flush: () => Promise<void>;
13
+ }
14
+ export declare function useAutoSave(provider: FileSystemProvider | null, filePath: string | null, content: string, delayMs?: number, onSaved?: (filePath: string, content: string) => void): UseAutoSaveResult;
9
15
  //# sourceMappingURL=useAutoSave.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoSave.d.ts","sourceRoot":"","sources":["../../src/hooks/useAutoSave.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,wBAAgB,WAAW,CACzB,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,SAAM,GACZ,IAAI,CA0CN"}
1
+ {"version":3,"file":"useAutoSave.d.ts","sourceRoot":"","sources":["../../src/hooks/useAutoSave.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,6EAA6E;IAC7E,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,SAAM,EACb,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACpD,iBAAiB,CA4FnB"}
@@ -2,47 +2,82 @@
2
2
  * useAutoSave — debounced auto-save hook.
3
3
  *
4
4
  * Writes content to the FileSystemProvider after a delay
5
- * whenever the content changes.
5
+ * whenever the content changes. Returns a `flush` function so callers
6
+ * (e.g. an explicit Ctrl/Cmd+S handler) can force an immediate write
7
+ * and await its completion.
6
8
  */
7
9
  import { useEffect, useRef, useCallback } from 'react';
8
- export function useAutoSave(provider, filePath, content, delayMs = 500) {
10
+ export function useAutoSave(provider, filePath, content, delayMs = 500, onSaved) {
9
11
  const timerRef = useRef(null);
10
- const lastSavedRef = useRef(content);
11
- const save = useCallback(async () => {
12
- if (!provider || !filePath)
13
- return;
14
- if (content === lastSavedRef.current)
15
- return;
16
- lastSavedRef.current = content;
17
- await provider.writeFile(filePath, content);
18
- }, [provider, filePath, content]);
19
- useEffect(() => {
20
- if (!provider || !filePath)
21
- return;
12
+ const contentRef = useRef(content);
13
+ const onSavedRef = useRef(onSaved);
14
+ const targetRef = useRef(null);
15
+ const clearTimer = useCallback(() => {
22
16
  if (timerRef.current) {
23
17
  clearTimeout(timerRef.current);
18
+ timerRef.current = null;
19
+ }
20
+ }, []);
21
+ const flushTarget = useCallback(async (target, nextContent) => {
22
+ if (nextContent === target.lastSaved)
23
+ return;
24
+ const previous = target.lastSaved;
25
+ target.lastSaved = nextContent;
26
+ try {
27
+ await target.provider.writeFile(target.filePath, nextContent);
28
+ onSavedRef.current?.(target.filePath, nextContent);
29
+ }
30
+ catch (err) {
31
+ target.lastSaved = previous;
32
+ throw err;
24
33
  }
25
- timerRef.current = setTimeout(() => {
26
- save();
27
- }, delayMs);
34
+ }, []);
35
+ useEffect(() => {
36
+ onSavedRef.current = onSaved;
37
+ }, [onSaved]);
38
+ useEffect(() => {
39
+ contentRef.current = content;
40
+ }, [content]);
41
+ useEffect(() => {
42
+ clearTimer();
43
+ targetRef.current = provider && filePath ? { provider, filePath, lastSaved: content } : null;
44
+ contentRef.current = content;
28
45
  return () => {
29
- if (timerRef.current) {
30
- clearTimeout(timerRef.current);
46
+ clearTimer();
47
+ const target = targetRef.current;
48
+ if (target) {
49
+ void flushTarget(target, contentRef.current).catch(() => undefined);
31
50
  }
51
+ targetRef.current = null;
32
52
  };
33
- }, [content, delayMs, save, provider, filePath]);
34
- // Flush on unmount
53
+ // `content` is intentionally captured only when the save target changes.
54
+ // Content edits are handled by the debounced effect below.
55
+ // eslint-disable-next-line react-hooks/exhaustive-deps
56
+ }, [provider, filePath, clearTimer, flushTarget]);
35
57
  useEffect(() => {
58
+ const target = targetRef.current;
59
+ if (!target)
60
+ return;
61
+ clearTimer();
62
+ if (content !== target.lastSaved) {
63
+ timerRef.current = setTimeout(() => {
64
+ const currentTarget = targetRef.current;
65
+ if (!currentTarget)
66
+ return;
67
+ void flushTarget(currentTarget, contentRef.current).catch(() => undefined);
68
+ }, delayMs);
69
+ }
36
70
  return () => {
37
- if (timerRef.current) {
38
- clearTimeout(timerRef.current);
39
- }
40
- // Sync save on unmount is best-effort
41
- if (provider && filePath && content !== lastSavedRef.current) {
42
- provider.writeFile(filePath, content);
43
- }
71
+ clearTimer();
44
72
  };
45
- // eslint-disable-next-line react-hooks/exhaustive-deps
46
- }, []);
73
+ }, [content, delayMs, clearTimer, flushTarget]);
74
+ const flush = useCallback(async () => {
75
+ clearTimer();
76
+ const target = targetRef.current;
77
+ if (!target)
78
+ return;
79
+ await flushTarget(target, contentRef.current);
80
+ }, [clearTimer, flushTarget]);
81
+ return { flush };
47
82
  }
48
83
  //# sourceMappingURL=useAutoSave.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAutoSave.js","sourceRoot":"","sources":["../../src/hooks/useAutoSave.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGvD,MAAM,UAAU,WAAW,CACzB,QAAmC,EACnC,QAAuB,EACvB,OAAe,EACf,OAAO,GAAG,GAAG;IAEb,MAAM,QAAQ,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,MAAM,CAAS,OAAO,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO;QACnC,IAAI,OAAO,KAAK,YAAY,CAAC,OAAO;YAAE,OAAO;QAC7C,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,MAAM,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAElC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEnC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,QAAQ,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,IAAI,EAAE,CAAC;QACT,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEjD,mBAAmB;IACnB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YACD,sCAAsC;YACtC,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC7D,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"useAutoSave.js","sourceRoot":"","sources":["../../src/hooks/useAutoSave.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Slim Monaco editor bundle for DocBlocks browser surfaces.
3
+ *
4
+ * Squisq's raw editor lazy-loads `monaco-editor/esm/vs/editor/editor.main.js`
5
+ * so syntax highlighting works in raw mode. Alias both that subpath and the
6
+ * bare `monaco-editor` specifier to this file to keep the lazy chunk focused
7
+ * on markdown plus the languages users most often place in fenced blocks.
8
+ */
9
+ export * from 'monaco-editor/esm/vs/editor/editor.api';
10
+ import 'monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution';
11
+ import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution';
12
+ import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution';
13
+ import 'monaco-editor/esm/vs/basic-languages/html/html.contribution';
14
+ import 'monaco-editor/esm/vs/basic-languages/css/css.contribution';
15
+ import 'monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution';
16
+ import 'monaco-editor/esm/vs/basic-languages/python/python.contribution';
17
+ import 'monaco-editor/esm/vs/basic-languages/shell/shell.contribution';
18
+ import 'monaco-editor/esm/vs/basic-languages/xml/xml.contribution';
19
+ //# sourceMappingURL=monaco-slim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monaco-slim.d.ts","sourceRoot":"","sources":["../src/monaco-slim.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,wCAAwC,CAAC;AAEvD,OAAO,qEAAqE,CAAC;AAC7E,OAAO,yEAAyE,CAAC;AACjF,OAAO,yEAAyE,CAAC;AACjF,OAAO,6DAA6D,CAAC;AACrE,OAAO,2DAA2D,CAAC;AACnE,OAAO,6DAA6D,CAAC;AACrE,OAAO,iEAAiE,CAAC;AACzE,OAAO,+DAA+D,CAAC;AACvE,OAAO,2DAA2D,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Slim Monaco editor bundle for DocBlocks browser surfaces.
3
+ *
4
+ * Squisq's raw editor lazy-loads `monaco-editor/esm/vs/editor/editor.main.js`
5
+ * so syntax highlighting works in raw mode. Alias both that subpath and the
6
+ * bare `monaco-editor` specifier to this file to keep the lazy chunk focused
7
+ * on markdown plus the languages users most often place in fenced blocks.
8
+ */
9
+ export * from 'monaco-editor/esm/vs/editor/editor.api';
10
+ import 'monaco-editor/esm/vs/basic-languages/markdown/markdown.contribution';
11
+ import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution';
12
+ import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution';
13
+ import 'monaco-editor/esm/vs/basic-languages/html/html.contribution';
14
+ import 'monaco-editor/esm/vs/basic-languages/css/css.contribution';
15
+ import 'monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution';
16
+ import 'monaco-editor/esm/vs/basic-languages/python/python.contribution';
17
+ import 'monaco-editor/esm/vs/basic-languages/shell/shell.contribution';
18
+ import 'monaco-editor/esm/vs/basic-languages/xml/xml.contribution';
19
+ //# sourceMappingURL=monaco-slim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monaco-slim.js","sourceRoot":"","sources":["../src/monaco-slim.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,wCAAwC,CAAC;AAEvD,OAAO,qEAAqE,CAAC;AAC7E,OAAO,yEAAyE,CAAC;AACjF,OAAO,yEAAyE,CAAC;AACjF,OAAO,6DAA6D,CAAC;AACrE,OAAO,2DAA2D,CAAC;AACnE,OAAO,6DAA6D,CAAC;AACrE,OAAO,iEAAiE,CAAC;AACzE,OAAO,+DAA+D,CAAC;AACvE,OAAO,2DAA2D,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Versioning preferences — global default + per-workspace resolution.
3
+ *
4
+ * The global preference controls whether DocBlocks writes version
5
+ * snapshots (under `<basename>_files/.versions/`) when editing. The
6
+ * default is `'browser-only'` so local-folder workspaces stay clean by
7
+ * default and only IndexedDB workspaces accumulate version history.
8
+ *
9
+ * Each workspace can override the global default with its own setting
10
+ * stored on the WorkspaceDescriptor. `'inherit'` (or absent) defers to
11
+ * the global preference; `'on'` / `'off'` force the behavior regardless.
12
+ */
13
+ import type { WorkspaceDescriptor } from '@bendyline/docblocks/workspace';
14
+ export type VersioningPreference = 'on' | 'browser-only' | 'off';
15
+ export declare function loadVersioningPreference(): VersioningPreference;
16
+ export declare function saveVersioningPreference(value: VersioningPreference): void;
17
+ /** Whether a workspace type is "local" (writes to a real folder on disk). */
18
+ export declare function isLocalWorkspaceType(type: WorkspaceDescriptor['type']): boolean;
19
+ /**
20
+ * Compute the effective versioning state for a workspace, honoring the
21
+ * per-workspace override first and falling back to the global preference.
22
+ *
23
+ * Returns `false` whenever no workspace is provided so callers can use
24
+ * this directly during initial render before a workspace loads.
25
+ */
26
+ export declare function resolveVersioningEnabled(workspace: WorkspaceDescriptor | null, globalPref: VersioningPreference): boolean;
27
+ //# sourceMappingURL=versioning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/preferences/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,cAAc,GAAG,KAAK,CAAC;AAKjE,wBAAgB,wBAAwB,IAAI,oBAAoB,CAQ/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAM1E;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,OAAO,CAE/E;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,mBAAmB,GAAG,IAAI,EACrC,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAeT"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Versioning preferences — global default + per-workspace resolution.
3
+ *
4
+ * The global preference controls whether DocBlocks writes version
5
+ * snapshots (under `<basename>_files/.versions/`) when editing. The
6
+ * default is `'browser-only'` so local-folder workspaces stay clean by
7
+ * default and only IndexedDB workspaces accumulate version history.
8
+ *
9
+ * Each workspace can override the global default with its own setting
10
+ * stored on the WorkspaceDescriptor. `'inherit'` (or absent) defers to
11
+ * the global preference; `'on'` / `'off'` force the behavior regardless.
12
+ */
13
+ const STORAGE_KEY = 'docblocks:versioningPreference';
14
+ const DEFAULT_PREFERENCE = 'browser-only';
15
+ export function loadVersioningPreference() {
16
+ try {
17
+ const raw = localStorage.getItem(STORAGE_KEY);
18
+ if (raw === 'on' || raw === 'browser-only' || raw === 'off')
19
+ return raw;
20
+ }
21
+ catch {
22
+ // ignore
23
+ }
24
+ return DEFAULT_PREFERENCE;
25
+ }
26
+ export function saveVersioningPreference(value) {
27
+ try {
28
+ localStorage.setItem(STORAGE_KEY, value);
29
+ }
30
+ catch {
31
+ // ignore quota errors
32
+ }
33
+ }
34
+ /** Whether a workspace type is "local" (writes to a real folder on disk). */
35
+ export function isLocalWorkspaceType(type) {
36
+ return type === 'native' || type === 'electron-native';
37
+ }
38
+ /**
39
+ * Compute the effective versioning state for a workspace, honoring the
40
+ * per-workspace override first and falling back to the global preference.
41
+ *
42
+ * Returns `false` whenever no workspace is provided so callers can use
43
+ * this directly during initial render before a workspace loads.
44
+ */
45
+ export function resolveVersioningEnabled(workspace, globalPref) {
46
+ if (!workspace)
47
+ return false;
48
+ const override = workspace.versioningOverride;
49
+ if (override === 'on')
50
+ return true;
51
+ if (override === 'off')
52
+ return false;
53
+ switch (globalPref) {
54
+ case 'on':
55
+ return true;
56
+ case 'off':
57
+ return false;
58
+ case 'browser-only':
59
+ return !isLocalWorkspaceType(workspace.type);
60
+ }
61
+ }
62
+ //# sourceMappingURL=versioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versioning.js","sourceRoot":"","sources":["../../src/preferences/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,WAAW,GAAG,gCAAgC,CAAC;AACrD,MAAM,kBAAkB,GAAyB,cAAc,CAAC;AAEhE,MAAM,UAAU,wBAAwB;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,KAAK;YAAE,OAAO,GAAG,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAA2B;IAClE,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,IAAiC;IACpE,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,iBAAiB,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAqC,EACrC,UAAgC;IAEhC,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,MAAM,QAAQ,GAAG,SAAS,CAAC,kBAAkB,CAAC;IAC9C,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAErC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,IAAI;YACP,OAAO,IAAI,CAAC;QACd,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf,KAAK,cAAc;YACjB,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/docblocks-react",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "React components for DocBlocks — file explorer, workspace picker, and editor shell",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -45,21 +45,25 @@
45
45
  "react-dom": "^18.0.0 || ^19.0.0"
46
46
  },
47
47
  "dependencies": {
48
- "@bendyline/docblocks": "1.1.0",
49
- "@bendyline/squisq": "1.3.0",
50
- "@bendyline/squisq-editor-react": "1.4.0",
51
- "@bendyline/squisq-formats": "1.2.3",
52
- "@bendyline/squisq-react": "1.2.0",
53
- "@bendyline/squisq-video": "1.0.5",
54
- "@bendyline/squisq-video-react": "1.0.5",
55
- "monaco-editor": "0.55.1"
48
+ "@bendyline/docblocks": "1.1.2",
49
+ "@bendyline/squisq": "1.5.1",
50
+ "@bendyline/squisq-editor-react": "1.6.1",
51
+ "@bendyline/squisq-formats": "1.4.1",
52
+ "@bendyline/squisq-react": "1.4.1",
53
+ "@bendyline/squisq-video": "1.2.1",
54
+ "@bendyline/squisq-video-react": "1.2.1",
55
+ "monaco-editor": "0.53.0"
56
56
  },
57
57
  "devDependencies": {
58
+ "@happy-dom/global-registrator": "20.9.0",
58
59
  "@types/react": "18.3.28",
59
60
  "@types/react-dom": "18.3.7",
61
+ "happy-dom": "20.9.0",
62
+ "mocha": "11.3.0",
60
63
  "react": "18.3.1",
61
64
  "react-dom": "18.3.1",
62
65
  "tsup": "8.5.1",
63
- "typescript": "5.9.3"
66
+ "typescript": "5.9.3",
67
+ "vite": "6.4.2"
64
68
  }
65
69
  }
@@ -3,6 +3,7 @@
3
3
  */
4
4
 
5
5
  import { useState, useCallback, useRef, useEffect } from 'react';
6
+ import type { VersioningPreference } from '../preferences/versioning.js';
6
7
 
7
8
  export type ThemePreference = 'auto' | 'light' | 'dark';
8
9
 
@@ -15,6 +16,15 @@ export interface AppMenuProps {
15
16
  themePreference?: ThemePreference;
16
17
  /** Called when the user changes the theme preference. */
17
18
  onThemeChange?: (theme: ThemePreference) => void;
19
+ /** Current global versioning preference. */
20
+ versioningPreference?: VersioningPreference;
21
+ /** Called when the user changes the global versioning preference. */
22
+ onVersioningPreferenceChange?: (pref: VersioningPreference) => void;
23
+ /**
24
+ * Called when the user clicks "Download all workspaces". When omitted,
25
+ * the menu item is hidden.
26
+ */
27
+ onDownloadAllWorkspaces?: () => void | Promise<void>;
18
28
  }
19
29
 
20
30
  export function AppMenu({
@@ -22,6 +32,9 @@ export function AppMenu({
22
32
  logoUrl,
23
33
  themePreference = 'auto',
24
34
  onThemeChange,
35
+ versioningPreference = 'browser-only',
36
+ onVersioningPreferenceChange,
37
+ onDownloadAllWorkspaces,
25
38
  }: AppMenuProps) {
26
39
  const [isOpen, setIsOpen] = useState(false);
27
40
  const [showAbout, setShowAbout] = useState(false);
@@ -72,6 +85,15 @@ export function AppMenu({
72
85
  >
73
86
  Settings
74
87
  </button>
88
+ {onDownloadAllWorkspaces && (
89
+ <button
90
+ className="db-app-menu-item"
91
+ role="menuitem"
92
+ onClick={() => handleAction(() => void onDownloadAllWorkspaces())}
93
+ >
94
+ Download all workspaces
95
+ </button>
96
+ )}
75
97
  <div className="db-app-menu-divider" />
76
98
  <button
77
99
  className="db-app-menu-item"
@@ -136,6 +158,47 @@ export function AppMenu({
136
158
  Dark
137
159
  </label>
138
160
  </fieldset>
161
+
162
+ {onVersioningPreferenceChange && (
163
+ <fieldset className="db-settings-fieldset">
164
+ <legend className="db-settings-legend">Version history</legend>
165
+ <p className="db-settings-hint">
166
+ When on, DocBlocks keeps prior revisions of each document inside a sibling{' '}
167
+ <code>&lt;name&gt;_files/.versions/</code> folder. Individual workspaces can
168
+ override this default in their own settings.
169
+ </p>
170
+ <label className="db-settings-radio">
171
+ <input
172
+ type="radio"
173
+ name="versioning"
174
+ value="on"
175
+ checked={versioningPreference === 'on'}
176
+ onChange={() => onVersioningPreferenceChange('on')}
177
+ />
178
+ On for all workspaces
179
+ </label>
180
+ <label className="db-settings-radio">
181
+ <input
182
+ type="radio"
183
+ name="versioning"
184
+ value="browser-only"
185
+ checked={versioningPreference === 'browser-only'}
186
+ onChange={() => onVersioningPreferenceChange('browser-only')}
187
+ />
188
+ On in browser workspaces, off for local folders
189
+ </label>
190
+ <label className="db-settings-radio">
191
+ <input
192
+ type="radio"
193
+ name="versioning"
194
+ value="off"
195
+ checked={versioningPreference === 'off'}
196
+ onChange={() => onVersioningPreferenceChange('off')}
197
+ />
198
+ Off for all workspaces
199
+ </label>
200
+ </fieldset>
201
+ )}
139
202
  </div>
140
203
  </div>
141
204
  </div>
@@ -167,7 +230,7 @@ export function AppMenu({
167
230
  <p>
168
231
  Built on{' '}
169
232
  <a
170
- href="https://github.com/nicoth-in/squisq"
233
+ href="https://github.com/bendyline/squisq"
171
234
  target="_blank"
172
235
  rel="noopener noreferrer"
173
236
  >