@actuate-media/cms-admin 0.12.0 → 0.13.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 (157) hide show
  1. package/dist/__tests__/components/comment-mark.test.d.ts +2 -0
  2. package/dist/__tests__/components/comment-mark.test.d.ts.map +1 -0
  3. package/dist/__tests__/components/comment-mark.test.js +89 -0
  4. package/dist/__tests__/components/comment-mark.test.js.map +1 -0
  5. package/dist/__tests__/components/comment-side-panel.test.d.ts +2 -0
  6. package/dist/__tests__/components/comment-side-panel.test.d.ts.map +1 -0
  7. package/dist/__tests__/components/comment-side-panel.test.js +291 -0
  8. package/dist/__tests__/components/comment-side-panel.test.js.map +1 -0
  9. package/dist/__tests__/components/notification-bell.test.d.ts +2 -0
  10. package/dist/__tests__/components/notification-bell.test.d.ts.map +1 -0
  11. package/dist/__tests__/components/notification-bell.test.js +346 -0
  12. package/dist/__tests__/components/notification-bell.test.js.map +1 -0
  13. package/dist/__tests__/components/offline-status.test.d.ts +2 -0
  14. package/dist/__tests__/components/offline-status.test.d.ts.map +1 -0
  15. package/dist/__tests__/components/offline-status.test.js +56 -0
  16. package/dist/__tests__/components/offline-status.test.js.map +1 -0
  17. package/dist/__tests__/components/presence-chips-helpers.test.d.ts +2 -0
  18. package/dist/__tests__/components/presence-chips-helpers.test.d.ts.map +1 -0
  19. package/dist/__tests__/components/presence-chips-helpers.test.js +35 -0
  20. package/dist/__tests__/components/presence-chips-helpers.test.js.map +1 -0
  21. package/dist/__tests__/lib/active-editor.test.d.ts +2 -0
  22. package/dist/__tests__/lib/active-editor.test.d.ts.map +1 -0
  23. package/dist/__tests__/lib/active-editor.test.js +57 -0
  24. package/dist/__tests__/lib/active-editor.test.js.map +1 -0
  25. package/dist/__tests__/lib/coauthor-client.test.d.ts +2 -0
  26. package/dist/__tests__/lib/coauthor-client.test.d.ts.map +1 -0
  27. package/dist/__tests__/lib/coauthor-client.test.js +173 -0
  28. package/dist/__tests__/lib/coauthor-client.test.js.map +1 -0
  29. package/dist/__tests__/lib/collaboration-provider.test.d.ts +2 -0
  30. package/dist/__tests__/lib/collaboration-provider.test.d.ts.map +1 -0
  31. package/dist/__tests__/lib/collaboration-provider.test.js +335 -0
  32. package/dist/__tests__/lib/collaboration-provider.test.js.map +1 -0
  33. package/dist/__tests__/lib/comment-anchor.test.d.ts +2 -0
  34. package/dist/__tests__/lib/comment-anchor.test.d.ts.map +1 -0
  35. package/dist/__tests__/lib/comment-anchor.test.js +173 -0
  36. package/dist/__tests__/lib/comment-anchor.test.js.map +1 -0
  37. package/dist/__tests__/lib/comments-client.test.d.ts +2 -0
  38. package/dist/__tests__/lib/comments-client.test.d.ts.map +1 -0
  39. package/dist/__tests__/lib/comments-client.test.js +202 -0
  40. package/dist/__tests__/lib/comments-client.test.js.map +1 -0
  41. package/dist/__tests__/lib/notifications-client.test.d.ts +2 -0
  42. package/dist/__tests__/lib/notifications-client.test.d.ts.map +1 -0
  43. package/dist/__tests__/lib/notifications-client.test.js +283 -0
  44. package/dist/__tests__/lib/notifications-client.test.js.map +1 -0
  45. package/dist/__tests__/lib/slash-command.test.d.ts +2 -0
  46. package/dist/__tests__/lib/slash-command.test.d.ts.map +1 -0
  47. package/dist/__tests__/lib/slash-command.test.js +123 -0
  48. package/dist/__tests__/lib/slash-command.test.js.map +1 -0
  49. package/dist/actuate-admin.css +1 -1
  50. package/dist/components/AICoauthorBubbleMenu.d.ts +18 -0
  51. package/dist/components/AICoauthorBubbleMenu.d.ts.map +1 -0
  52. package/dist/components/AICoauthorBubbleMenu.js +113 -0
  53. package/dist/components/AICoauthorBubbleMenu.js.map +1 -0
  54. package/dist/components/CoauthorResultPopover.d.ts +28 -0
  55. package/dist/components/CoauthorResultPopover.d.ts.map +1 -0
  56. package/dist/components/CoauthorResultPopover.js +42 -0
  57. package/dist/components/CoauthorResultPopover.js.map +1 -0
  58. package/dist/components/CommandPalette.d.ts +1 -1
  59. package/dist/components/CommandPalette.d.ts.map +1 -1
  60. package/dist/components/CommandPalette.js +138 -40
  61. package/dist/components/CommandPalette.js.map +1 -1
  62. package/dist/components/CommentMark.d.ts +54 -0
  63. package/dist/components/CommentMark.d.ts.map +1 -0
  64. package/dist/components/CommentMark.js +104 -0
  65. package/dist/components/CommentMark.js.map +1 -0
  66. package/dist/components/CommentSidePanel.d.ts +86 -0
  67. package/dist/components/CommentSidePanel.d.ts.map +1 -0
  68. package/dist/components/CommentSidePanel.js +165 -0
  69. package/dist/components/CommentSidePanel.js.map +1 -0
  70. package/dist/components/LivePreview.d.ts.map +1 -1
  71. package/dist/components/LivePreview.js +80 -16
  72. package/dist/components/LivePreview.js.map +1 -1
  73. package/dist/components/NotificationBell.d.ts +66 -0
  74. package/dist/components/NotificationBell.d.ts.map +1 -0
  75. package/dist/components/NotificationBell.js +142 -0
  76. package/dist/components/NotificationBell.js.map +1 -0
  77. package/dist/components/OfflineStatus.d.ts +39 -0
  78. package/dist/components/OfflineStatus.d.ts.map +1 -0
  79. package/dist/components/OfflineStatus.js +47 -0
  80. package/dist/components/OfflineStatus.js.map +1 -0
  81. package/dist/components/PresenceChips.d.ts +31 -0
  82. package/dist/components/PresenceChips.d.ts.map +1 -0
  83. package/dist/components/PresenceChips.js +58 -0
  84. package/dist/components/PresenceChips.js.map +1 -0
  85. package/dist/components/TipTapEditor.d.ts +61 -1
  86. package/dist/components/TipTapEditor.d.ts.map +1 -1
  87. package/dist/components/TipTapEditor.js +211 -8
  88. package/dist/components/TipTapEditor.js.map +1 -1
  89. package/dist/components/ui/Badge.d.ts +1 -1
  90. package/dist/index.d.ts +8 -0
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +4 -0
  93. package/dist/index.js.map +1 -1
  94. package/dist/lib/active-editor.d.ts +6 -0
  95. package/dist/lib/active-editor.d.ts.map +1 -0
  96. package/dist/lib/active-editor.js +35 -0
  97. package/dist/lib/active-editor.js.map +1 -0
  98. package/dist/lib/api.d.ts +8 -0
  99. package/dist/lib/api.d.ts.map +1 -1
  100. package/dist/lib/api.js +10 -0
  101. package/dist/lib/api.js.map +1 -1
  102. package/dist/lib/coauthor-client.d.ts +72 -0
  103. package/dist/lib/coauthor-client.d.ts.map +1 -0
  104. package/dist/lib/coauthor-client.js +98 -0
  105. package/dist/lib/coauthor-client.js.map +1 -0
  106. package/dist/lib/collaboration-provider.d.ts +142 -0
  107. package/dist/lib/collaboration-provider.d.ts.map +1 -0
  108. package/dist/lib/collaboration-provider.js +168 -0
  109. package/dist/lib/collaboration-provider.js.map +1 -0
  110. package/dist/lib/comment-anchor.d.ts +86 -0
  111. package/dist/lib/comment-anchor.d.ts.map +1 -0
  112. package/dist/lib/comment-anchor.js +139 -0
  113. package/dist/lib/comment-anchor.js.map +1 -0
  114. package/dist/lib/comments-client.d.ts +106 -0
  115. package/dist/lib/comments-client.d.ts.map +1 -0
  116. package/dist/lib/comments-client.js +138 -0
  117. package/dist/lib/comments-client.js.map +1 -0
  118. package/dist/lib/notifications-client.d.ts +121 -0
  119. package/dist/lib/notifications-client.d.ts.map +1 -0
  120. package/dist/lib/notifications-client.js +173 -0
  121. package/dist/lib/notifications-client.js.map +1 -0
  122. package/dist/lib/slash-command.d.ts +39 -0
  123. package/dist/lib/slash-command.d.ts.map +1 -0
  124. package/dist/lib/slash-command.js +50 -0
  125. package/dist/lib/slash-command.js.map +1 -0
  126. package/package.json +12 -3
  127. package/src/__tests__/components/comment-mark.test.ts +99 -0
  128. package/src/__tests__/components/comment-side-panel.test.tsx +343 -0
  129. package/src/__tests__/components/notification-bell.test.tsx +379 -0
  130. package/src/__tests__/components/offline-status.test.tsx +66 -0
  131. package/src/__tests__/components/presence-chips-helpers.test.ts +44 -0
  132. package/src/__tests__/lib/active-editor.test.ts +70 -0
  133. package/src/__tests__/lib/coauthor-client.test.ts +213 -0
  134. package/src/__tests__/lib/collaboration-provider.test.ts +425 -0
  135. package/src/__tests__/lib/comment-anchor.test.ts +188 -0
  136. package/src/__tests__/lib/comments-client.test.ts +239 -0
  137. package/src/__tests__/lib/notifications-client.test.ts +339 -0
  138. package/src/__tests__/lib/slash-command.test.ts +146 -0
  139. package/src/components/AICoauthorBubbleMenu.tsx +187 -0
  140. package/src/components/CoauthorResultPopover.tsx +193 -0
  141. package/src/components/CommandPalette.tsx +397 -209
  142. package/src/components/CommentMark.ts +138 -0
  143. package/src/components/CommentSidePanel.tsx +521 -0
  144. package/src/components/LivePreview.tsx +117 -11
  145. package/src/components/NotificationBell.tsx +314 -0
  146. package/src/components/OfflineStatus.tsx +90 -0
  147. package/src/components/PresenceChips.tsx +150 -0
  148. package/src/components/TipTapEditor.tsx +310 -12
  149. package/src/index.ts +20 -0
  150. package/src/lib/active-editor.ts +39 -0
  151. package/src/lib/api.ts +11 -0
  152. package/src/lib/coauthor-client.ts +160 -0
  153. package/src/lib/collaboration-provider.ts +306 -0
  154. package/src/lib/comment-anchor.ts +179 -0
  155. package/src/lib/comments-client.ts +208 -0
  156. package/src/lib/notifications-client.ts +292 -0
  157. package/src/lib/slash-command.ts +67 -0
@@ -0,0 +1,42 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef } from 'react';
4
+ import { Check, Copy, Loader2, Sparkles, X } from 'lucide-react';
5
+ import { coauthorActionLabel } from '../lib/coauthor-client.js';
6
+ /**
7
+ * Universal AI-result panel rendered by both the TipTap bubble menu and the
8
+ * Cmd+K slash-command palette. Shows a before/after diff plus three actions:
9
+ *
10
+ * - Apply (write the result back to the active target)
11
+ * - Copy (copy the result to the clipboard)
12
+ * - Discard (close without changing anything)
13
+ *
14
+ * The popover takes the same `{ open, loading, action, before, after, error }`
15
+ * state shape regardless of caller so the UX stays identical across surfaces.
16
+ */
17
+ export function CoauthorResultPopover({ open, loading, action, before, after, error, changes, applyLabel, onApply, onCopy, onDiscard, }) {
18
+ const dialogRef = useRef(null);
19
+ useEffect(() => {
20
+ if (!open)
21
+ return;
22
+ const onKey = (e) => {
23
+ if (e.key === 'Escape') {
24
+ e.preventDefault();
25
+ onDiscard();
26
+ }
27
+ };
28
+ document.addEventListener('keydown', onKey);
29
+ return () => document.removeEventListener('keydown', onKey);
30
+ }, [open, onDiscard]);
31
+ useEffect(() => {
32
+ if (!open)
33
+ return;
34
+ dialogRef.current?.focus();
35
+ }, [open]);
36
+ if (!open)
37
+ return null;
38
+ const applyDisabled = loading || !!error || after.length === 0;
39
+ const copyDisabled = loading || !!error || after.length === 0;
40
+ return (_jsx("div", { className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 px-4", role: "presentation", onClick: onDiscard, children: _jsxs("div", { ref: dialogRef, role: "dialog", "aria-modal": "true", "aria-label": `AI ${coauthorActionLabel(action)} result`, tabIndex: -1, onClick: (e) => e.stopPropagation(), className: "w-full max-w-2xl rounded-lg bg-white shadow-2xl outline-none", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-gray-200 px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm font-semibold text-gray-900", children: [_jsx(Sparkles, { className: "h-4 w-4 text-blue-600", "aria-hidden": true }), _jsxs("span", { children: ["AI ", coauthorActionLabel(action)] }), loading && (_jsx(Loader2, { className: "ml-1 h-4 w-4 animate-spin text-gray-400", "aria-label": "Loading" }))] }), _jsx("button", { type: "button", onClick: onDiscard, className: "rounded p-1 text-gray-400 hover:bg-gray-100 hover:text-gray-600", "aria-label": "Close", children: _jsx(X, { className: "h-4 w-4" }) })] }), _jsxs("div", { className: "grid grid-cols-2 gap-4 p-4", children: [_jsxs("section", { "aria-labelledby": "coauthor-before", children: [_jsx("h3", { id: "coauthor-before", className: "mb-2 text-xs font-medium tracking-wide text-gray-500 uppercase", children: "Before" }), _jsx("pre", { className: "max-h-72 overflow-auto rounded border border-gray-200 bg-gray-50 p-3 text-sm whitespace-pre-wrap text-gray-700", children: before })] }), _jsxs("section", { "aria-labelledby": "coauthor-after", children: [_jsx("h3", { id: "coauthor-after", className: "mb-2 text-xs font-medium tracking-wide text-gray-500 uppercase", children: "After" }), loading ? (_jsx("div", { className: "flex h-72 items-center justify-center rounded border border-dashed border-gray-200 bg-gray-50 text-sm text-gray-400", role: "status", children: "Thinking\u2026" })) : error ? (_jsx("div", { className: "flex h-72 items-center justify-center rounded border border-dashed border-red-200 bg-red-50 p-3 text-sm text-red-600", children: error })) : (_jsx("pre", { className: "max-h-72 overflow-auto rounded border border-blue-200 bg-blue-50 p-3 text-sm whitespace-pre-wrap text-gray-900", children: after }))] })] }), changes && changes.length > 0 && !loading && !error && (_jsxs("div", { className: "border-t border-gray-200 px-4 py-3", children: [_jsxs("h3", { className: "mb-2 text-xs font-medium tracking-wide text-gray-500 uppercase", children: ["Changes (", changes.length, ")"] }), _jsx("ul", { className: "max-h-32 space-y-1 overflow-auto text-xs", children: changes.map((change, i) => (_jsxs("li", { className: "flex items-start gap-2 rounded bg-gray-50 px-2 py-1", children: [_jsx("span", { className: "text-red-600 line-through", children: change.original }), _jsx("span", { className: "text-gray-400", children: "\u2192" }), _jsx("span", { className: "text-green-700", children: change.corrected }), change.reason && (_jsx("span", { className: "ml-auto text-gray-500 italic", children: change.reason }))] }, i))) })] })), _jsxs("div", { className: "flex items-center justify-end gap-2 border-t border-gray-200 bg-gray-50 px-4 py-3", children: [_jsxs("button", { type: "button", onClick: onDiscard, className: "rounded-md border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700 hover:bg-gray-50", children: [_jsx(X, { className: "mr-1.5 inline h-3.5 w-3.5", "aria-hidden": true }), "Discard"] }), _jsxs("button", { type: "button", onClick: onCopy, disabled: copyDisabled, className: "rounded-md border border-gray-200 bg-white px-3 py-1.5 text-sm text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50", children: [_jsx(Copy, { className: "mr-1.5 inline h-3.5 w-3.5", "aria-hidden": true }), "Copy"] }), _jsxs("button", { type: "button", onClick: onApply, disabled: applyDisabled, className: "rounded-md bg-blue-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-blue-700 disabled:cursor-not-allowed disabled:opacity-50", children: [_jsx(Check, { className: "mr-1.5 inline h-3.5 w-3.5", "aria-hidden": true }), applyLabel ?? 'Apply'] })] })] }) }));
41
+ }
42
+ //# sourceMappingURL=CoauthorResultPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoauthorResultPopover.js","sourceRoot":"","sources":["../../src/components/CoauthorResultPopover.tsx"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ export interface CommandPaletteProps {
3
3
  onOpenChange: (open: boolean) => void;
4
4
  onNavigate: (path: string) => void;
5
5
  }
6
- export declare function CommandPalette({ open, onOpenChange, onNavigate }: CommandPaletteProps): import("react/jsx-runtime").JSX.Element | null;
6
+ export declare function CommandPalette({ open, onOpenChange, onNavigate }: CommandPaletteProps): import("react/jsx-runtime").JSX.Element;
7
7
  //# sourceMappingURL=CommandPalette.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"AA6FA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,mBAAmB,kDA4SrF"}
1
+ {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"AAmJA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,mBAAmB,2CAkbrF"}
@@ -1,9 +1,14 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { useCallback, useEffect, useRef, useState } from 'react';
4
4
  import { Command } from 'cmdk';
5
- import { Search, FileText, File, Image, Settings, LayoutDashboard, Plus, Users, ArrowRightLeft, ClipboardList, Upload, BarChart3, Clock, } from 'lucide-react';
5
+ import { Search, FileText, File, Image, Settings, LayoutDashboard, Plus, Users, ArrowRightLeft, ClipboardList, Upload, BarChart3, Clock, Maximize2, Minimize2, Sparkles, SpellCheck, Wand2, } from 'lucide-react';
6
+ import { toast } from 'sonner';
6
7
  import { cmsApi } from '../lib/api.js';
8
+ import { coauthorActionDescription, coauthorActionLabel, coauthorText, } from '../lib/coauthor-client.js';
9
+ import { isAiSlashCommandInput, orderedAiActions, parseAiSlashCommand, } from '../lib/slash-command.js';
10
+ import { getActiveEditor } from '../lib/active-editor.js';
11
+ import { CoauthorResultPopover } from './CoauthorResultPopover.js';
7
12
  const RECENT_ITEMS_KEY = 'actuate-recent-items';
8
13
  const MAX_RECENT_ITEMS = 5;
9
14
  function loadRecentItems() {
@@ -32,6 +37,25 @@ const staticActions = [
32
37
  { id: 'action-view-seo', label: 'View SEO', icon: BarChart3, action: '/seo' },
33
38
  { id: 'action-open-settings', label: 'Open settings', icon: Settings, action: '/settings' },
34
39
  ];
40
+ const AI_ACTION_ICONS = {
41
+ rewrite: Wand2,
42
+ expand: Maximize2,
43
+ compress: Minimize2,
44
+ proofread: SpellCheck,
45
+ };
46
+ const INITIAL_AI_RESULT = {
47
+ open: false,
48
+ loading: false,
49
+ action: 'rewrite',
50
+ before: '',
51
+ after: '',
52
+ target: null,
53
+ };
54
+ function truncatePreview(text, max = 60) {
55
+ if (text.length <= max)
56
+ return text;
57
+ return `${text.slice(0, max - 1)}…`;
58
+ }
35
59
  const navigationCommands = [
36
60
  { id: 'nav-dashboard', label: 'Dashboard', icon: LayoutDashboard, action: '/' },
37
61
  { id: 'nav-posts', label: 'Posts', icon: FileText, action: '/posts' },
@@ -49,6 +73,7 @@ export function CommandPalette({ open, onOpenChange, onNavigate }) {
49
73
  const [users, setUsers] = useState([]);
50
74
  const [recentItems, setRecentItems] = useState([]);
51
75
  const [loading, setLoading] = useState(false);
76
+ const [aiResult, setAiResult] = useState(INITIAL_AI_RESULT);
52
77
  const debounceRef = useRef(undefined);
53
78
  useEffect(() => {
54
79
  const down = (e) => {
@@ -93,7 +118,7 @@ export function CommandPalette({ open, onOpenChange, onNavigate }) {
93
118
  useEffect(() => {
94
119
  if (debounceRef.current)
95
120
  clearTimeout(debounceRef.current);
96
- if (!search.trim()) {
121
+ if (!search.trim() || isAiSlashCommandInput(search)) {
97
122
  setDocuments([]);
98
123
  setMedia([]);
99
124
  setUsers([]);
@@ -113,44 +138,117 @@ export function CommandPalette({ open, onOpenChange, onNavigate }) {
113
138
  onOpenChange(false);
114
139
  setSearch('');
115
140
  };
116
- if (!open)
117
- return null;
141
+ const runSlashAction = useCallback(async (action, text) => {
142
+ if (!text.trim()) {
143
+ toast.message(`Provide text after the command: /ai ${action} <your text>`);
144
+ return;
145
+ }
146
+ const target = getActiveEditor();
147
+ onOpenChange(false);
148
+ setSearch('');
149
+ setAiResult({
150
+ open: true,
151
+ loading: true,
152
+ action,
153
+ before: text,
154
+ after: '',
155
+ target,
156
+ });
157
+ const outcome = await coauthorText(action, text);
158
+ if (!outcome.ok) {
159
+ setAiResult((prev) => ({ ...prev, loading: false, error: outcome.error }));
160
+ toast.error(outcome.error);
161
+ return;
162
+ }
163
+ setAiResult((prev) => ({
164
+ ...prev,
165
+ loading: false,
166
+ after: outcome.result.text,
167
+ changes: outcome.result.changes,
168
+ error: undefined,
169
+ }));
170
+ }, [onOpenChange]);
171
+ const handleAiApply = useCallback(() => {
172
+ const { target, after, action } = aiResult;
173
+ if (!target) {
174
+ void navigator.clipboard
175
+ ?.writeText(after)
176
+ .then(() => toast.success('Copied to clipboard.'))
177
+ .catch(() => toast.error('Clipboard unavailable — copy manually.'));
178
+ setAiResult(INITIAL_AI_RESULT);
179
+ return;
180
+ }
181
+ const { from, to, empty } = target.state.selection;
182
+ const chain = target.chain().focus();
183
+ if (!empty) {
184
+ chain.insertContentAt({ from, to }, after).run();
185
+ }
186
+ else {
187
+ chain.insertContent(after).run();
188
+ }
189
+ toast.success(`${coauthorActionLabel(action)} applied.`);
190
+ setAiResult(INITIAL_AI_RESULT);
191
+ }, [aiResult]);
192
+ const handleAiCopy = useCallback(async () => {
193
+ try {
194
+ await navigator.clipboard.writeText(aiResult.after);
195
+ toast.success('Copied to clipboard.');
196
+ }
197
+ catch {
198
+ toast.error('Clipboard unavailable — copy manually.');
199
+ }
200
+ }, [aiResult.after]);
201
+ const handleAiDiscard = useCallback(() => {
202
+ setAiResult(INITIAL_AI_RESULT);
203
+ }, []);
118
204
  const hasQuery = search.trim().length > 0;
119
205
  const hasResults = documents.length > 0 || media.length > 0 || users.length > 0;
120
- return (_jsx("div", { className: "fixed inset-0 z-50 flex items-start justify-center bg-black/50 px-4 pt-[20vh]", onClick: () => {
121
- onOpenChange(false);
122
- setSearch('');
123
- }, role: "presentation", children: _jsx("div", { role: "dialog", "aria-modal": "true", className: "w-full max-w-2xl", onClick: (e) => e.stopPropagation(), children: _jsxs(Command, { className: "w-full overflow-hidden rounded-lg bg-white shadow-2xl", onKeyDown: (e) => {
124
- if (e.key === 'Escape') {
125
- onOpenChange(false);
126
- setSearch('');
127
- }
128
- }, shouldFilter: !hasQuery, children: [_jsxs("div", { className: "flex items-center border-b border-gray-200 px-4", children: [_jsx(Search, { className: "mr-3 h-5 w-5 shrink-0 text-gray-400" }), _jsx(Command.Input, { value: search, onValueChange: setSearch, placeholder: "Search or jump to...", className: "w-full bg-transparent py-4 text-base placeholder:text-gray-400 focus:outline-none" }), loading && (_jsx("div", { className: "mr-2 h-4 w-4 shrink-0 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600" })), _jsx("kbd", { className: "hidden shrink-0 rounded bg-gray-100 px-2 py-1 font-mono text-xs text-gray-600 sm:inline-block", children: "ESC" })] }), _jsxs(Command.List, { className: "max-h-[400px] overflow-y-auto p-2", children: [_jsx(Command.Empty, { className: "py-6 text-center text-sm text-gray-500", children: loading ? 'Searching...' : 'No results found.' }), !hasQuery && recentItems.length > 0 && (_jsxs(Command.Group, { heading: "Recent", className: "px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "RECENT" }), recentItems.map((item) => (_jsxs(Command.Item, { value: `recent ${item.label}`, onSelect: () => handleSelect(item.path, item), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Clock, { className: "h-4 w-4 text-gray-400" }), _jsx("span", { children: item.label }), _jsx("span", { className: "ml-auto text-xs text-gray-400 capitalize", children: item.type })] }, `recent-${item.id}`)))] })), hasQuery && documents.length > 0 && (_jsxs(Command.Group, { heading: "Documents", className: "px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "DOCUMENTS" }), documents.map((doc) => (_jsxs(Command.Item, { value: doc.title ?? doc.slug ?? doc.id, onSelect: () => handleSelect(`/collections/${doc.collection}/${doc.id}`, {
129
- id: `doc-${doc.id}`,
130
- label: doc.title ?? doc.slug ?? doc.id,
131
- path: `/collections/${doc.collection}/${doc.id}`,
132
- type: 'document',
133
- }), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(FileText, { className: "h-4 w-4 text-gray-500" }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "truncate", children: doc.title ?? doc.slug ?? doc.id }), _jsxs("span", { className: "text-xs text-gray-400", children: [doc.collection, " \u00B7 ", doc.status] })] })] }, `doc-${doc.id}`)))] })), hasQuery && media.length > 0 && (_jsxs(Command.Group, { heading: "Media", className: "mt-1 px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "MEDIA" }), media.map((m) => (_jsxs(Command.Item, { value: m.filename, onSelect: () => handleSelect(`/media?selected=${m.id}`, {
134
- id: `media-${m.id}`,
135
- label: m.filename,
136
- path: `/media?selected=${m.id}`,
137
- type: 'media',
138
- }), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Image, { className: "h-4 w-4 text-gray-500" }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "truncate", children: m.filename }), _jsx("span", { className: "text-xs text-gray-400", children: m.mimeType })] })] }, `media-${m.id}`)))] })), hasQuery && users.length > 0 && (_jsxs(Command.Group, { heading: "Users", className: "mt-1 px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "USERS" }), users.map((u) => (_jsxs(Command.Item, { value: `${u.name} ${u.email}`, onSelect: () => handleSelect(`/users?selected=${u.id}`, {
139
- id: `user-${u.id}`,
140
- label: u.name,
141
- path: `/users?selected=${u.id}`,
142
- type: 'user',
143
- }), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Users, { className: "h-4 w-4 text-gray-500" }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "truncate", children: u.name }), _jsxs("span", { className: "text-xs text-gray-400", children: [u.email, " \u00B7 ", u.role] })] })] }, `user-${u.id}`)))] })), (!hasQuery || !hasResults) && (_jsxs(Command.Group, { heading: "Navigation", className: "px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "NAVIGATION" }), navigationCommands.map((cmd) => {
144
- const Icon = cmd.icon;
145
- return (_jsxs(Command.Item, { value: cmd.label, onSelect: () => handleSelect(cmd.action), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Icon, { className: "h-4 w-4 text-gray-500" }), _jsx("span", { children: cmd.label })] }, cmd.id));
146
- })] })), _jsxs(Command.Group, { heading: "Actions", className: "mt-2 px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "ACTIONS" }), staticActions.map((cmd) => {
147
- const Icon = cmd.icon;
148
- return (_jsxs(Command.Item, { value: cmd.label, onSelect: () => handleSelect(cmd.action, {
149
- id: cmd.id,
150
- label: cmd.label,
151
- path: cmd.action,
152
- type: 'action',
153
- }), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Icon, { className: "h-4 w-4 text-gray-500" }), _jsx("span", { children: cmd.label })] }, cmd.id));
154
- })] })] }), _jsx("div", { className: "flex items-center justify-between border-t border-gray-200 bg-gray-50 px-4 py-3 text-xs text-gray-500", children: _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("kbd", { className: "rounded border border-gray-300 bg-white px-1.5 py-0.5 text-[10px]", children: "\u2191" }), _jsx("kbd", { className: "rounded border border-gray-300 bg-white px-1.5 py-0.5 text-[10px]", children: "\u2193" }), "to navigate"] }), _jsxs("span", { className: "flex items-center gap-1", children: [_jsx("kbd", { className: "rounded border border-gray-300 bg-white px-1.5 py-0.5 text-[10px]", children: "\u21B5" }), "to select"] })] }) })] }) }) }));
206
+ const isAiMode = isAiSlashCommandInput(search);
207
+ const aiCommand = parseAiSlashCommand(search);
208
+ const aiPayload = aiCommand?.text ?? '';
209
+ const aiActions = orderedAiActions(search);
210
+ const popover = (_jsx(CoauthorResultPopover, { open: aiResult.open, loading: aiResult.loading, action: aiResult.action, before: aiResult.before, after: aiResult.after, error: aiResult.error, changes: aiResult.changes, applyLabel: aiResult.target ? 'Apply to editor' : 'Copy to clipboard', onApply: handleAiApply, onCopy: handleAiCopy, onDiscard: handleAiDiscard }));
211
+ if (!open)
212
+ return popover;
213
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-50 flex items-start justify-center bg-black/50 px-4 pt-[20vh]", onClick: () => {
214
+ onOpenChange(false);
215
+ setSearch('');
216
+ }, role: "presentation", children: _jsx("div", { role: "dialog", "aria-modal": "true", className: "w-full max-w-2xl", onClick: (e) => e.stopPropagation(), children: _jsxs(Command, { className: "w-full overflow-hidden rounded-lg bg-white shadow-2xl", onKeyDown: (e) => {
217
+ if (e.key === 'Escape') {
218
+ onOpenChange(false);
219
+ setSearch('');
220
+ }
221
+ }, shouldFilter: !hasQuery, children: [_jsxs("div", { className: "flex items-center border-b border-gray-200 px-4", children: [_jsx(Search, { className: "mr-3 h-5 w-5 shrink-0 text-gray-400" }), _jsx(Command.Input, { value: search, onValueChange: setSearch, placeholder: "Search, jump to, or type /ai to use the AI co-author\u2026", className: "w-full bg-transparent py-4 text-base placeholder:text-gray-400 focus:outline-none" }), loading && (_jsx("div", { className: "mr-2 h-4 w-4 shrink-0 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600" })), _jsx("kbd", { className: "hidden shrink-0 rounded bg-gray-100 px-2 py-1 font-mono text-xs text-gray-600 sm:inline-block", children: "ESC" })] }), _jsxs(Command.List, { className: "max-h-[400px] overflow-y-auto p-2", children: [_jsx(Command.Empty, { className: "py-6 text-center text-sm text-gray-500", children: loading ? 'Searching...' : 'No results found.' }), isAiMode && (_jsxs(Command.Group, { heading: "AI co-author", className: "px-2 py-2", children: [_jsxs("div", { className: "mb-2 flex items-center gap-1 text-xs font-medium text-gray-500", children: [_jsx(Sparkles, { className: "h-3 w-3", "aria-hidden": true }), " AI CO-AUTHOR"] }), aiActions.map((action) => {
222
+ const Icon = AI_ACTION_ICONS[action];
223
+ const isExactMatch = aiCommand?.action === action;
224
+ const previewable = isExactMatch && aiPayload.length > 0;
225
+ return (_jsxs(Command.Item, { value: `ai ${action}`, onSelect: () => runSlashAction(action, aiPayload), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Icon, { className: "h-4 w-4 text-blue-600" }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsxs("span", { className: "font-medium", children: [coauthorActionLabel(action), previewable && (_jsxs("span", { className: "ml-1 font-normal text-gray-500", children: ["\u201C", truncatePreview(aiPayload), "\u201D"] }))] }), _jsx("span", { className: "text-xs text-gray-400", children: coauthorActionDescription(action) })] }), _jsxs("kbd", { className: "ml-auto rounded bg-gray-100 px-1.5 py-0.5 font-mono text-[10px] text-gray-500", children: ["/ai ", action] })] }, `ai-${action}`));
226
+ })] })), !isAiMode && !hasQuery && recentItems.length > 0 && (_jsxs(Command.Group, { heading: "Recent", className: "px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "RECENT" }), recentItems.map((item) => (_jsxs(Command.Item, { value: `recent ${item.label}`, onSelect: () => handleSelect(item.path, item), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Clock, { className: "h-4 w-4 text-gray-400" }), _jsx("span", { children: item.label }), _jsx("span", { className: "ml-auto text-xs text-gray-400 capitalize", children: item.type })] }, `recent-${item.id}`)))] })), !isAiMode && hasQuery && documents.length > 0 && (_jsxs(Command.Group, { heading: "Documents", className: "px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "DOCUMENTS" }), documents.map((doc) => (_jsxs(Command.Item, { value: doc.title ?? doc.slug ?? doc.id, onSelect: () => handleSelect(`/collections/${doc.collection}/${doc.id}`, {
227
+ id: `doc-${doc.id}`,
228
+ label: doc.title ?? doc.slug ?? doc.id,
229
+ path: `/collections/${doc.collection}/${doc.id}`,
230
+ type: 'document',
231
+ }), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(FileText, { className: "h-4 w-4 text-gray-500" }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "truncate", children: doc.title ?? doc.slug ?? doc.id }), _jsxs("span", { className: "text-xs text-gray-400", children: [doc.collection, " \u00B7 ", doc.status] })] })] }, `doc-${doc.id}`)))] })), !isAiMode && hasQuery && media.length > 0 && (_jsxs(Command.Group, { heading: "Media", className: "mt-1 px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "MEDIA" }), media.map((m) => (_jsxs(Command.Item, { value: m.filename, onSelect: () => handleSelect(`/media?selected=${m.id}`, {
232
+ id: `media-${m.id}`,
233
+ label: m.filename,
234
+ path: `/media?selected=${m.id}`,
235
+ type: 'media',
236
+ }), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Image, { className: "h-4 w-4 text-gray-500" }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "truncate", children: m.filename }), _jsx("span", { className: "text-xs text-gray-400", children: m.mimeType })] })] }, `media-${m.id}`)))] })), !isAiMode && hasQuery && users.length > 0 && (_jsxs(Command.Group, { heading: "Users", className: "mt-1 px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "USERS" }), users.map((u) => (_jsxs(Command.Item, { value: `${u.name} ${u.email}`, onSelect: () => handleSelect(`/users?selected=${u.id}`, {
237
+ id: `user-${u.id}`,
238
+ label: u.name,
239
+ path: `/users?selected=${u.id}`,
240
+ type: 'user',
241
+ }), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Users, { className: "h-4 w-4 text-gray-500" }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "truncate", children: u.name }), _jsxs("span", { className: "text-xs text-gray-400", children: [u.email, " \u00B7 ", u.role] })] })] }, `user-${u.id}`)))] })), !isAiMode && (!hasQuery || !hasResults) && (_jsxs(Command.Group, { heading: "Navigation", className: "px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "NAVIGATION" }), navigationCommands.map((cmd) => {
242
+ const Icon = cmd.icon;
243
+ return (_jsxs(Command.Item, { value: cmd.label, onSelect: () => handleSelect(cmd.action), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Icon, { className: "h-4 w-4 text-gray-500" }), _jsx("span", { children: cmd.label })] }, cmd.id));
244
+ })] })), !isAiMode && (_jsxs(Command.Group, { heading: "Actions", className: "mt-2 px-2 py-2", children: [_jsx("div", { className: "mb-2 text-xs font-medium text-gray-500", children: "ACTIONS" }), staticActions.map((cmd) => {
245
+ const Icon = cmd.icon;
246
+ return (_jsxs(Command.Item, { value: cmd.label, onSelect: () => handleSelect(cmd.action, {
247
+ id: cmd.id,
248
+ label: cmd.label,
249
+ path: cmd.action,
250
+ type: 'action',
251
+ }), className: "flex cursor-pointer items-center gap-3 rounded-lg px-3 py-2 hover:bg-gray-100 data-[selected=true]:bg-gray-100", children: [_jsx(Icon, { className: "h-4 w-4 text-gray-500" }), _jsx("span", { children: cmd.label })] }, cmd.id));
252
+ })] }))] }), _jsx("div", { className: "flex items-center justify-between border-t border-gray-200 bg-gray-50 px-4 py-3 text-xs text-gray-500", children: _jsxs("div", { className: "flex items-center gap-4", children: [_jsxs("span", { className: "flex items-center gap-1", children: [_jsx("kbd", { className: "rounded border border-gray-300 bg-white px-1.5 py-0.5 text-[10px]", children: "\u2191" }), _jsx("kbd", { className: "rounded border border-gray-300 bg-white px-1.5 py-0.5 text-[10px]", children: "\u2193" }), "to navigate"] }), _jsxs("span", { className: "flex items-center gap-1", children: [_jsx("kbd", { className: "rounded border border-gray-300 bg-white px-1.5 py-0.5 text-[10px]", children: "\u21B5" }), "to select"] })] }) })] }) }) }), popover] }));
155
253
  }
156
254
  //# sourceMappingURL=CommandPalette.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../src/components/CommandPalette.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * TipTap inline mark that tags a text range with a `commentId`. The mark
3
+ * is the glue between the comment side panel and the editor — selecting
4
+ * a range, creating a comment, and then re-painting the highlight when
5
+ * the comment list updates all flow through this extension.
6
+ *
7
+ * Storage shape: a single attribute, `commentId`, that mirrors the row
8
+ * id returned by the slice-4 REST API. The mark also stamps a
9
+ * `data-comment-id` attribute on its rendered span and a CSS class so
10
+ * the panel can style it (yellow band for active, dotted underline for
11
+ * resolved, faded for detached anchors).
12
+ *
13
+ * We deliberately use a TipTap Mark (vs. a ProseMirror decoration) so
14
+ * the comment anchor is *persisted* in the document HTML and round-trips
15
+ * through the autosave path. Decorations would be simpler but they're
16
+ * presentational only — they disappear on next render unless re-painted
17
+ * from scratch, which would defeat slice 5's main job (keeping anchors
18
+ * stable under collaborative edits).
19
+ */
20
+ import { Mark } from '@tiptap/core';
21
+ export interface CommentMarkOptions {
22
+ /** Extra HTML attributes attached to every rendered comment span. */
23
+ HTMLAttributes: Record<string, unknown>;
24
+ /**
25
+ * Base CSS class. Defaults to `actuate-comment`; the side panel adds
26
+ * `actuate-comment--resolved` / `actuate-comment--detached` modifiers
27
+ * on top of this when it paints state-aware highlights.
28
+ */
29
+ className: string;
30
+ }
31
+ declare module '@tiptap/core' {
32
+ interface Commands<ReturnType> {
33
+ comment: {
34
+ /** Mark the current selection with a comment id. */
35
+ setComment: (attrs: {
36
+ commentId: string;
37
+ }) => ReturnType;
38
+ /** Update the commentId on the active comment mark. */
39
+ updateComment: (attrs: {
40
+ commentId: string;
41
+ }) => ReturnType;
42
+ /** Remove all comment marks from the current selection. */
43
+ unsetComment: () => ReturnType;
44
+ };
45
+ }
46
+ }
47
+ export declare const CommentMark: Mark<CommentMarkOptions, any>;
48
+ /**
49
+ * CSS the editor styles include to render the comment highlights. The
50
+ * `TipTapEditor` injects this so consumers don't need to import a CSS
51
+ * file separately.
52
+ */
53
+ export declare const COMMENT_MARK_STYLES = "\n.actuate-comment {\n background-color: rgba(250, 204, 21, 0.25);\n border-bottom: 2px solid rgba(202, 138, 4, 0.65);\n cursor: pointer;\n}\n.actuate-comment:hover {\n background-color: rgba(250, 204, 21, 0.4);\n}\n.actuate-comment--resolved {\n background-color: transparent;\n border-bottom: 1px dotted rgba(107, 114, 128, 0.6);\n}\n.actuate-comment--active {\n background-color: rgba(250, 204, 21, 0.55);\n outline: 2px solid rgba(202, 138, 4, 0.9);\n outline-offset: -1px;\n}\n";
54
+ //# sourceMappingURL=CommentMark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentMark.d.ts","sourceRoot":"","sources":["../../src/components/CommentMark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAEpD,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,OAAO,EAAE;YACP,oDAAoD;YACpD,UAAU,EAAE,CAAC,KAAK,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAA;aAAE,KAAK,UAAU,CAAA;YACxD,uDAAuD;YACvD,aAAa,EAAE,CAAC,KAAK,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAA;aAAE,KAAK,UAAU,CAAA;YAC3D,2DAA2D;YAC3D,YAAY,EAAE,MAAM,UAAU,CAAA;SAC/B,CAAA;KACF;CACF;AAED,eAAO,MAAM,WAAW,+BAkEtB,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,gfAkB/B,CAAA"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * TipTap inline mark that tags a text range with a `commentId`. The mark
3
+ * is the glue between the comment side panel and the editor — selecting
4
+ * a range, creating a comment, and then re-painting the highlight when
5
+ * the comment list updates all flow through this extension.
6
+ *
7
+ * Storage shape: a single attribute, `commentId`, that mirrors the row
8
+ * id returned by the slice-4 REST API. The mark also stamps a
9
+ * `data-comment-id` attribute on its rendered span and a CSS class so
10
+ * the panel can style it (yellow band for active, dotted underline for
11
+ * resolved, faded for detached anchors).
12
+ *
13
+ * We deliberately use a TipTap Mark (vs. a ProseMirror decoration) so
14
+ * the comment anchor is *persisted* in the document HTML and round-trips
15
+ * through the autosave path. Decorations would be simpler but they're
16
+ * presentational only — they disappear on next render unless re-painted
17
+ * from scratch, which would defeat slice 5's main job (keeping anchors
18
+ * stable under collaborative edits).
19
+ */
20
+ import { Mark, mergeAttributes } from '@tiptap/core';
21
+ export const CommentMark = Mark.create({
22
+ name: 'comment',
23
+ // Inline mark; we never want it on block-level nodes.
24
+ inclusive: false,
25
+ spanning: false,
26
+ // Allow the mark to be split when text is inserted at its boundaries —
27
+ // otherwise replies/edits in the middle of a comment would silently
28
+ // expand its scope.
29
+ excludes: '',
30
+ addOptions() {
31
+ return {
32
+ HTMLAttributes: {},
33
+ className: 'actuate-comment',
34
+ };
35
+ },
36
+ addAttributes() {
37
+ return {
38
+ commentId: {
39
+ default: null,
40
+ parseHTML: (element) => element.getAttribute('data-comment-id'),
41
+ renderHTML: (attributes) => {
42
+ if (!attributes.commentId)
43
+ return {};
44
+ return { 'data-comment-id': attributes.commentId };
45
+ },
46
+ },
47
+ };
48
+ },
49
+ parseHTML() {
50
+ return [{ tag: 'span[data-comment-id]' }];
51
+ },
52
+ renderHTML({ HTMLAttributes }) {
53
+ const opts = this.options;
54
+ return [
55
+ 'span',
56
+ mergeAttributes(opts.HTMLAttributes, HTMLAttributes, {
57
+ class: opts.className,
58
+ }),
59
+ 0,
60
+ ];
61
+ },
62
+ addCommands() {
63
+ return {
64
+ setComment: (attrs) => ({ commands }) => {
65
+ if (!attrs?.commentId)
66
+ return false;
67
+ return commands.setMark(this.name, attrs);
68
+ },
69
+ updateComment: (attrs) => ({ commands }) => {
70
+ if (!attrs?.commentId)
71
+ return false;
72
+ return commands.updateAttributes(this.name, attrs);
73
+ },
74
+ unsetComment: () => ({ commands }) => {
75
+ return commands.unsetMark(this.name);
76
+ },
77
+ };
78
+ },
79
+ });
80
+ /**
81
+ * CSS the editor styles include to render the comment highlights. The
82
+ * `TipTapEditor` injects this so consumers don't need to import a CSS
83
+ * file separately.
84
+ */
85
+ export const COMMENT_MARK_STYLES = `
86
+ .actuate-comment {
87
+ background-color: rgba(250, 204, 21, 0.25);
88
+ border-bottom: 2px solid rgba(202, 138, 4, 0.65);
89
+ cursor: pointer;
90
+ }
91
+ .actuate-comment:hover {
92
+ background-color: rgba(250, 204, 21, 0.4);
93
+ }
94
+ .actuate-comment--resolved {
95
+ background-color: transparent;
96
+ border-bottom: 1px dotted rgba(107, 114, 128, 0.6);
97
+ }
98
+ .actuate-comment--active {
99
+ background-color: rgba(250, 204, 21, 0.55);
100
+ outline: 2px solid rgba(202, 138, 4, 0.9);
101
+ outline-offset: -1px;
102
+ }
103
+ `;
104
+ //# sourceMappingURL=CommentMark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommentMark.js","sourceRoot":"","sources":["../../src/components/CommentMark.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AA0BpD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAqB;IACzD,IAAI,EAAE,SAAS;IACf,sDAAsD;IACtD,SAAS,EAAE,KAAK;IAChB,QAAQ,EAAE,KAAK;IACf,uEAAuE;IACvE,oEAAoE;IACpE,oBAAoB;IACpB,QAAQ,EAAE,EAAE;IAEZ,UAAU;QACR,OAAO;YACL,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,iBAAiB;SAC7B,CAAA;IACH,CAAC;IAED,aAAa;QACX,OAAO;YACL,SAAS,EAAE;gBACT,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,iBAAiB,CAAC;gBAC/D,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE;oBACzB,IAAI,CAAC,UAAU,CAAC,SAAS;wBAAE,OAAO,EAAE,CAAA;oBACpC,OAAO,EAAE,iBAAiB,EAAE,UAAU,CAAC,SAAmB,EAAE,CAAA;gBAC9D,CAAC;aACF;SACF,CAAA;IACH,CAAC;IAED,SAAS;QACP,OAAO,CAAC,EAAE,GAAG,EAAE,uBAAuB,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAA;QACzB,OAAO;YACL,MAAM;YACN,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE;gBACnD,KAAK,EAAE,IAAI,CAAC,SAAS;aACtB,CAAC;YACF,CAAC;SACF,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO;YACL,UAAU,EACR,CAAC,KAAK,EAAE,EAAE,CACV,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACf,IAAI,CAAC,KAAK,EAAE,SAAS;oBAAE,OAAO,KAAK,CAAA;gBACnC,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC3C,CAAC;YACH,aAAa,EACX,CAAC,KAAK,EAAE,EAAE,CACV,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACf,IAAI,CAAC,KAAK,EAAE,SAAS;oBAAE,OAAO,KAAK,CAAA;gBACnC,OAAO,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACpD,CAAC;YACH,YAAY,EACV,GAAG,EAAE,CACL,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACf,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtC,CAAC;SACJ,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;CAkBlC,CAAA"}