@lemoncat7/dsh-knowledge 2.2.9 → 2.2.13-next.12

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 (77) hide show
  1. package/README.md +3 -3
  2. package/docs/architecture.md +6 -2
  3. package/lib/api.d.ts.map +1 -1
  4. package/lib/api.js +42 -0
  5. package/lib/api.js.map +1 -1
  6. package/lib/client.js +22 -22
  7. package/lib/client.js.map +2 -2
  8. package/lib/domain.d.ts +15 -0
  9. package/lib/domain.d.ts.map +1 -1
  10. package/lib/domain.js.map +1 -1
  11. package/lib/local-provider.d.ts +11 -2
  12. package/lib/local-provider.d.ts.map +1 -1
  13. package/lib/local-provider.js +71 -0
  14. package/lib/local-provider.js.map +1 -1
  15. package/lib/management-proxy.js +1 -1
  16. package/lib/management-proxy.js.map +1 -1
  17. package/lib/notes/domain.d.ts +10 -0
  18. package/lib/notes/domain.d.ts.map +1 -1
  19. package/lib/notes/domain.js.map +1 -1
  20. package/lib/notes/store.d.ts +15 -1
  21. package/lib/notes/store.d.ts.map +1 -1
  22. package/lib/notes/store.js +277 -28
  23. package/lib/notes/store.js.map +1 -1
  24. package/lib/provider.d.ts +10 -2
  25. package/lib/provider.d.ts.map +1 -1
  26. package/lib/remote-provider.d.ts +10 -2
  27. package/lib/remote-provider.d.ts.map +1 -1
  28. package/lib/remote-provider.js +27 -0
  29. package/lib/remote-provider.js.map +1 -1
  30. package/lib/theme-bridge.js +7 -7
  31. package/lib/theme-bridge.js.map +1 -1
  32. package/lib/tool-authorization.js +11 -16
  33. package/lib/tool-authorization.js.map +1 -1
  34. package/lib/web-note-editor-chrome.d.ts +17 -0
  35. package/lib/web-note-editor-chrome.d.ts.map +1 -0
  36. package/lib/web-note-editor-chrome.js +38 -0
  37. package/lib/web-note-editor-chrome.js.map +1 -0
  38. package/lib/web-note-editor-find.d.ts +17 -0
  39. package/lib/web-note-editor-find.d.ts.map +1 -0
  40. package/lib/web-note-editor-find.js +225 -0
  41. package/lib/web-note-editor-find.js.map +1 -0
  42. package/lib/web-note-editor-outline.d.ts +15 -0
  43. package/lib/web-note-editor-outline.d.ts.map +1 -0
  44. package/lib/web-note-editor-outline.js +169 -0
  45. package/lib/web-note-editor-outline.js.map +1 -0
  46. package/lib/web-note-editor-search.d.ts +30 -0
  47. package/lib/web-note-editor-search.d.ts.map +1 -0
  48. package/lib/web-note-editor-search.js +143 -0
  49. package/lib/web-note-editor-search.js.map +1 -0
  50. package/lib/web-note-editor-selection.d.ts +15 -0
  51. package/lib/web-note-editor-selection.d.ts.map +1 -0
  52. package/lib/web-note-editor-selection.js +255 -0
  53. package/lib/web-note-editor-selection.js.map +1 -0
  54. package/lib/web-note-editor.d.ts +7 -0
  55. package/lib/web-note-editor.d.ts.map +1 -1
  56. package/lib/web-note-editor.js +36 -6
  57. package/lib/web-note-editor.js.map +1 -1
  58. package/lib/web-note-history.d.ts +28 -0
  59. package/lib/web-note-history.d.ts.map +1 -0
  60. package/lib/web-note-history.js +163 -0
  61. package/lib/web-note-history.js.map +1 -0
  62. package/lib/web-workspace-effects.d.ts.map +1 -1
  63. package/lib/web-workspace-effects.js +1 -2
  64. package/lib/web-workspace-effects.js.map +1 -1
  65. package/lib/web.d.ts.map +1 -1
  66. package/lib/web.js +4 -0
  67. package/lib/web.js.map +1 -1
  68. package/package.json +1 -1
  69. package/web/api-client.js +94 -0
  70. package/web/app.js +344 -235
  71. package/web/host-theme.js +63 -0
  72. package/web/index.html +1 -0
  73. package/web/note-editor.js +70 -70
  74. package/web/note-history.js +1 -0
  75. package/web/styles.css +374 -154
  76. package/web/ui-primitives.js +77 -0
  77. package/web/workspace-effects.js +1 -1
@@ -0,0 +1,255 @@
1
+ function control(label, ariaLabel, onClick) {
2
+ const button = document.createElement('button');
3
+ button.type = 'button';
4
+ button.className = 'notes-selection-control';
5
+ button.textContent = label;
6
+ button.setAttribute('aria-label', ariaLabel);
7
+ button.addEventListener('pointerdown', event => event.preventDefault());
8
+ button.addEventListener('click', onClick);
9
+ return button;
10
+ }
11
+ function safeLink(value) {
12
+ const href = value.trim();
13
+ if (!href)
14
+ return '';
15
+ if (/^(https?:\/\/|mailto:|\/|#)/i.test(href))
16
+ return href;
17
+ if (/^[\w.-]+\.[a-z]{2,}(?:[/?#].*)?$/i.test(href))
18
+ return `https://${href}`;
19
+ return null;
20
+ }
21
+ export function createNoteSelectionMenu(options) {
22
+ const { editor, frame, scrollHost } = options;
23
+ const menu = document.createElement('div');
24
+ menu.className = 'notes-selection-menu';
25
+ menu.setAttribute('role', 'toolbar');
26
+ menu.setAttribute('aria-label', '所选文字格式');
27
+ menu.hidden = true;
28
+ const primary = document.createElement('div');
29
+ primary.className = 'notes-selection-primary';
30
+ const blockToggle = control('正文', '更改段落格式', () => {
31
+ const expanded = blockToggle.getAttribute('aria-expanded') !== 'true';
32
+ blockToggle.setAttribute('aria-expanded', String(expanded));
33
+ blockMenu.hidden = !expanded;
34
+ linkForm.hidden = true;
35
+ positionMenu();
36
+ });
37
+ blockToggle.classList.add('notes-selection-block-toggle');
38
+ blockToggle.setAttribute('aria-haspopup', 'menu');
39
+ blockToggle.setAttribute('aria-expanded', 'false');
40
+ const markActions = [
41
+ { label: 'B', active: () => editor.isActive('bold'), run: () => { editor.chain().focus().toggleBold().run(); } },
42
+ { label: 'I', active: () => editor.isActive('italic'), run: () => { editor.chain().focus().toggleItalic().run(); } },
43
+ { label: 'U', active: () => editor.isActive('underline'), run: () => { editor.chain().focus().toggleUnderline().run(); } },
44
+ { label: 'S', active: () => editor.isActive('strike'), run: () => { editor.chain().focus().toggleStrike().run(); } },
45
+ { label: '</>', active: () => editor.isActive('code'), run: () => { editor.chain().focus().toggleCode().run(); } },
46
+ ];
47
+ const markLabels = ['加粗', '斜体', '下划线', '删除线', '行内代码'];
48
+ const markButtons = markActions.map((action, index) => {
49
+ const button = control(action.label, markLabels[index] ?? action.label, () => {
50
+ action.run();
51
+ refreshActiveStates();
52
+ });
53
+ button.classList.add('notes-selection-mark');
54
+ return button;
55
+ });
56
+ const linkToggle = control('链接', '添加或编辑链接', () => {
57
+ blockMenu.hidden = true;
58
+ blockToggle.setAttribute('aria-expanded', 'false');
59
+ linkForm.hidden = false;
60
+ const href = editor.getAttributes('link').href;
61
+ linkInput.value = typeof href === 'string' ? href : '';
62
+ linkError.textContent = '';
63
+ positionMenu();
64
+ window.requestAnimationFrame(() => { linkInput.focus(); linkInput.select(); });
65
+ });
66
+ const copyButton = control('复制', '复制所选文字', () => {
67
+ const { from, to } = editor.state.selection;
68
+ const text = editor.state.doc.textBetween(from, to, ' ');
69
+ void navigator.clipboard?.writeText(text).catch(() => { });
70
+ });
71
+ primary.append(blockToggle, ...markButtons, linkToggle, copyButton);
72
+ const blockMenu = document.createElement('div');
73
+ blockMenu.className = 'notes-selection-block-menu';
74
+ blockMenu.setAttribute('role', 'menu');
75
+ blockMenu.hidden = true;
76
+ const blockActions = [
77
+ { label: '正文', active: () => editor.isActive('paragraph'), run: () => { editor.chain().focus().setParagraph().run(); } },
78
+ { label: '标题 1', active: () => editor.isActive('heading', { level: 1 }), run: () => { editor.chain().focus().toggleHeading({ level: 1 }).run(); } },
79
+ { label: '标题 2', active: () => editor.isActive('heading', { level: 2 }), run: () => { editor.chain().focus().toggleHeading({ level: 2 }).run(); } },
80
+ { label: '标题 3', active: () => editor.isActive('heading', { level: 3 }), run: () => { editor.chain().focus().toggleHeading({ level: 3 }).run(); } },
81
+ { label: '项目符号', active: () => editor.isActive('bulletList'), run: () => { editor.chain().focus().toggleBulletList().run(); } },
82
+ { label: '编号列表', active: () => editor.isActive('orderedList'), run: () => { editor.chain().focus().toggleOrderedList().run(); } },
83
+ { label: '引用', active: () => editor.isActive('blockquote'), run: () => { editor.chain().focus().toggleBlockquote().run(); } },
84
+ { label: '代码块', active: () => editor.isActive('codeBlock'), run: () => { editor.chain().focus().toggleCodeBlock().run(); } },
85
+ ];
86
+ const blockButtons = blockActions.map(action => {
87
+ const button = control(action.label, action.label, () => {
88
+ action.run();
89
+ blockMenu.hidden = true;
90
+ blockToggle.setAttribute('aria-expanded', 'false');
91
+ refreshActiveStates();
92
+ schedulePosition();
93
+ });
94
+ button.setAttribute('role', 'menuitemradio');
95
+ blockMenu.append(button);
96
+ return button;
97
+ });
98
+ const linkForm = document.createElement('form');
99
+ linkForm.className = 'notes-selection-link-form';
100
+ linkForm.hidden = true;
101
+ const linkInput = document.createElement('input');
102
+ linkInput.type = 'text';
103
+ linkInput.inputMode = 'url';
104
+ linkInput.className = 'notes-selection-link-input';
105
+ linkInput.placeholder = 'https://example.com';
106
+ linkInput.setAttribute('aria-label', '链接地址');
107
+ linkInput.autocomplete = 'off';
108
+ const applyLink = control('应用', '应用链接', () => submitLink());
109
+ const removeLink = control('移除', '移除链接', () => {
110
+ editor.chain().focus().extendMarkRange('link').unsetLink().run();
111
+ linkForm.hidden = true;
112
+ refreshActiveStates();
113
+ });
114
+ const linkError = document.createElement('span');
115
+ linkError.className = 'notes-selection-link-error';
116
+ linkError.setAttribute('role', 'alert');
117
+ linkForm.append(linkInput, applyLink, removeLink, linkError);
118
+ linkForm.addEventListener('submit', event => {
119
+ event.preventDefault();
120
+ submitLink();
121
+ });
122
+ menu.append(primary, blockMenu, linkForm);
123
+ frame.append(menu);
124
+ let positionFrame;
125
+ let scrollTimer;
126
+ function currentBlockLabel() {
127
+ if (editor.isActive('heading', { level: 1 }))
128
+ return '标题 1';
129
+ if (editor.isActive('heading', { level: 2 }))
130
+ return '标题 2';
131
+ if (editor.isActive('heading', { level: 3 }))
132
+ return '标题 3';
133
+ if (editor.isActive('bulletList'))
134
+ return '项目符号';
135
+ if (editor.isActive('orderedList'))
136
+ return '编号列表';
137
+ if (editor.isActive('blockquote'))
138
+ return '引用';
139
+ if (editor.isActive('codeBlock'))
140
+ return '代码块';
141
+ return '正文';
142
+ }
143
+ function refreshActiveStates() {
144
+ blockToggle.textContent = currentBlockLabel();
145
+ markButtons.forEach((button, index) => button.setAttribute('aria-pressed', String(markActions[index]?.active() ?? false)));
146
+ blockButtons.forEach((button, index) => button.setAttribute('aria-checked', String(blockActions[index]?.active() ?? false)));
147
+ linkToggle.setAttribute('aria-pressed', String(editor.isActive('link')));
148
+ }
149
+ function submitLink() {
150
+ const href = safeLink(linkInput.value);
151
+ if (href === null) {
152
+ linkError.textContent = '请输入有效的网页或邮件地址。';
153
+ linkInput.focus();
154
+ return;
155
+ }
156
+ if (href)
157
+ editor.chain().focus().extendMarkRange('link').setLink({ href }).run();
158
+ else
159
+ editor.chain().focus().extendMarkRange('link').unsetLink().run();
160
+ linkError.textContent = '';
161
+ linkForm.hidden = true;
162
+ refreshActiveStates();
163
+ }
164
+ function shouldShow() {
165
+ if (editor.isDestroyed || options.findIsOpen())
166
+ return false;
167
+ const { from, to, empty } = editor.state.selection;
168
+ if (empty || !editor.isFocused)
169
+ return false;
170
+ return Boolean(editor.state.doc.textBetween(from, to, ' ').trim());
171
+ }
172
+ function positionMenu() {
173
+ positionFrame = undefined;
174
+ if (menu.hidden || editor.isDestroyed)
175
+ return;
176
+ if (window.matchMedia('(max-width: 760px)').matches) {
177
+ menu.dataset.placement = 'bottom';
178
+ menu.style.left = 'max(8px, env(safe-area-inset-left))';
179
+ menu.style.right = 'max(8px, env(safe-area-inset-right))';
180
+ menu.style.bottom = 'max(8px, env(safe-area-inset-bottom))';
181
+ menu.style.top = 'auto';
182
+ return;
183
+ }
184
+ menu.style.right = '';
185
+ menu.style.bottom = '';
186
+ const { from, to } = editor.state.selection;
187
+ const start = editor.view.coordsAtPos(from);
188
+ const end = editor.view.coordsAtPos(to);
189
+ const rect = menu.getBoundingClientRect();
190
+ const margin = 8;
191
+ const center = (Math.min(start.left, end.left) + Math.max(start.right, end.right)) / 2;
192
+ const left = Math.max(margin, Math.min(window.innerWidth - rect.width - margin, center - rect.width / 2));
193
+ let top = Math.min(start.top, end.top) - rect.height - 9;
194
+ menu.dataset.placement = 'top';
195
+ if (top < margin) {
196
+ top = Math.max(start.bottom, end.bottom) + 9;
197
+ menu.dataset.placement = 'bottom';
198
+ }
199
+ menu.style.left = `${Math.round(left)}px`;
200
+ menu.style.top = `${Math.round(top)}px`;
201
+ }
202
+ function schedulePosition() {
203
+ if (positionFrame !== undefined)
204
+ window.cancelAnimationFrame(positionFrame);
205
+ positionFrame = window.requestAnimationFrame(positionMenu);
206
+ }
207
+ function refresh() {
208
+ if (!shouldShow()) {
209
+ hide();
210
+ return;
211
+ }
212
+ menu.hidden = false;
213
+ refreshActiveStates();
214
+ schedulePosition();
215
+ }
216
+ function hide() {
217
+ menu.hidden = true;
218
+ blockMenu.hidden = true;
219
+ linkForm.hidden = true;
220
+ blockToggle.setAttribute('aria-expanded', 'false');
221
+ linkError.textContent = '';
222
+ }
223
+ function onScroll() {
224
+ hide();
225
+ if (scrollTimer !== undefined)
226
+ window.clearTimeout(scrollTimer);
227
+ scrollTimer = window.setTimeout(refresh, 90);
228
+ }
229
+ function onOutsidePointer(event) {
230
+ if (!menu.hidden && !menu.contains(event.target) && !editor.view.dom.contains(event.target))
231
+ hide();
232
+ }
233
+ editor.on('selectionUpdate', refresh);
234
+ editor.on('transaction', refresh);
235
+ scrollHost.addEventListener('scroll', onScroll, { passive: true });
236
+ window.addEventListener('resize', schedulePosition, { passive: true });
237
+ document.addEventListener('pointerdown', onOutsidePointer);
238
+ return {
239
+ refresh,
240
+ hide,
241
+ destroy: () => {
242
+ editor.off('selectionUpdate', refresh);
243
+ editor.off('transaction', refresh);
244
+ scrollHost.removeEventListener('scroll', onScroll);
245
+ window.removeEventListener('resize', schedulePosition);
246
+ document.removeEventListener('pointerdown', onOutsidePointer);
247
+ if (positionFrame !== undefined)
248
+ window.cancelAnimationFrame(positionFrame);
249
+ if (scrollTimer !== undefined)
250
+ window.clearTimeout(scrollTimer);
251
+ menu.remove();
252
+ },
253
+ };
254
+ }
255
+ //# sourceMappingURL=web-note-editor-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-note-editor-selection.js","sourceRoot":"","sources":["../src/web-note-editor-selection.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  import { type JSONContent } from '@tiptap/core';
2
2
  export interface MarkdownEditorOptions {
3
3
  host: HTMLElement;
4
+ frame?: HTMLElement;
5
+ scrollHost?: HTMLElement;
6
+ outlineHost?: HTMLElement;
7
+ findButton?: HTMLButtonElement | null;
8
+ outlineButton?: HTMLButtonElement | null;
4
9
  markdown: string;
5
10
  label: string;
6
11
  onChange(markdown: string): void;
@@ -10,6 +15,8 @@ export interface MarkdownEditorHandle {
10
15
  getMarkdown(): string;
11
16
  focus(): void;
12
17
  insertMarkdown(markdown: string): void;
18
+ openFind(): void;
19
+ toggleOutline(): void;
13
20
  destroy(): void;
14
21
  }
15
22
  export interface PlainTextEditorOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"web-note-editor.d.ts","sourceRoot":"","sources":["../src/web-note-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAYvD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,MAAM,IAAI,IAAI,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,IAAI,MAAM,CAAA;IACrB,KAAK,IAAI,IAAI,CAAA;IACb,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,IAAI,IAAI,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,IAAI,IAAI,CAAA;IACb,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA8CzF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAgC5F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAQ7D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAInE"}
1
+ {"version":3,"file":"web-note-editor.d.ts","sourceRoot":"","sources":["../src/web-note-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAcvD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAA;IACjB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,UAAU,CAAC,EAAE,WAAW,CAAA;IACxB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,UAAU,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACrC,aAAa,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,MAAM,IAAI,IAAI,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,IAAI,MAAM,CAAA;IACrB,KAAK,IAAI,IAAI,CAAA;IACb,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,IAAI,IAAI,CAAA;IAChB,aAAa,IAAI,IAAI,CAAA;IACrB,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,IAAI,IAAI,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,IAAI,IAAI,CAAA;IACb,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA2EzF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAgC5F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAQ7D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAInE"}
@@ -6,9 +6,11 @@ import { TableKit } from '@tiptap/extension-table';
6
6
  import TaskItem from '@tiptap/extension-task-item';
7
7
  import TaskList from '@tiptap/extension-task-list';
8
8
  import Text from '@tiptap/extension-text';
9
- import { UndoRedo } from '@tiptap/extensions';
9
+ import { Placeholder, UndoRedo } from '@tiptap/extensions';
10
10
  import { Markdown } from '@tiptap/markdown';
11
11
  import StarterKit from '@tiptap/starter-kit';
12
+ import { createNoteEditorChrome } from './web-note-editor-chrome.js';
13
+ import { NoteSearch } from './web-note-editor-search.js';
12
14
  /**
13
15
  * Mount a Markdown-native rich text editor into the notes workspace.
14
16
  *
@@ -17,6 +19,7 @@ import StarterKit from '@tiptap/starter-kit';
17
19
  * independent from the surrounding vanilla DOM renderer.
18
20
  */
19
21
  export function createMarkdownEditor(options) {
22
+ let chrome;
20
23
  const editor = new Editor({
21
24
  element: options.host,
22
25
  content: options.markdown,
@@ -30,6 +33,8 @@ export function createMarkdownEditor(options) {
30
33
  },
31
34
  }),
32
35
  Markdown,
36
+ NoteSearch,
37
+ Placeholder.configure({ placeholder: '输入正文,或使用 Markdown 快捷语法…' }),
33
38
  Image.configure({ allowBase64: false, inline: false }),
34
39
  TableKit.configure({ table: { resizable: false } }),
35
40
  TaskList,
@@ -44,15 +49,34 @@ export function createMarkdownEditor(options) {
44
49
  spellcheck: 'false',
45
50
  },
46
51
  handleKeyDown: (_view, event) => {
47
- if (!(event.metaKey || event.ctrlKey) || event.key.toLocaleLowerCase() !== 's')
52
+ if (!(event.metaKey || event.ctrlKey))
48
53
  return false;
49
- event.preventDefault();
50
- options.onSave();
51
- return true;
54
+ const key = event.key.toLocaleLowerCase();
55
+ if (key === 's') {
56
+ event.preventDefault();
57
+ options.onSave();
58
+ return true;
59
+ }
60
+ if (key === 'f') {
61
+ event.preventDefault();
62
+ chrome?.openFind();
63
+ return true;
64
+ }
65
+ return false;
52
66
  },
53
67
  },
54
68
  onUpdate: ({ editor: current }) => options.onChange(current.getMarkdown()),
55
69
  });
70
+ if (options.frame && options.scrollHost && options.outlineHost) {
71
+ chrome = createNoteEditorChrome({
72
+ editor,
73
+ frame: options.frame,
74
+ scrollHost: options.scrollHost,
75
+ outlineHost: options.outlineHost,
76
+ ...(options.findButton !== undefined ? { findButton: options.findButton } : {}),
77
+ ...(options.outlineButton !== undefined ? { outlineButton: options.outlineButton } : {}),
78
+ });
79
+ }
56
80
  return {
57
81
  getMarkdown: () => editor.getMarkdown(),
58
82
  focus: () => editor.commands.focus(),
@@ -60,7 +84,13 @@ export function createMarkdownEditor(options) {
60
84
  editor.commands.insertContent(markdown, { contentType: 'markdown' });
61
85
  editor.commands.focus();
62
86
  },
63
- destroy: () => editor.destroy(),
87
+ openFind: () => chrome?.openFind(),
88
+ toggleOutline: () => chrome?.toggleOutline(),
89
+ destroy: () => {
90
+ chrome?.destroy();
91
+ chrome = undefined;
92
+ editor.destroy();
93
+ },
64
94
  };
65
95
  }
66
96
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"web-note-editor.js","sourceRoot":"","sources":["../src/web-note-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-note-editor.js","sourceRoot":"","sources":["../src/web-note-editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export interface NoteHistoryItem {
2
+ noteId: string;
3
+ version: number;
4
+ name: string;
5
+ mediaType: string | null;
6
+ size: number;
7
+ sha256: string;
8
+ createdAt: string;
9
+ }
10
+ interface NoteHistoryViewOptions {
11
+ versions: NoteHistoryItem[];
12
+ currentVersion: number;
13
+ currentContent: string;
14
+ loadContent(version: NoteHistoryItem, signal: AbortSignal): Promise<string>;
15
+ renderPreview(content: string): HTMLElement;
16
+ renderDiff(historical: string, current: string): HTMLElement;
17
+ formatDate(value: string): string;
18
+ formatBytes(value: number): string;
19
+ onRestore(version: NoteHistoryItem, content: string): Promise<void>;
20
+ onError(error: unknown): void;
21
+ }
22
+ export interface NoteHistoryView {
23
+ element: HTMLElement;
24
+ destroy(): void;
25
+ }
26
+ export declare function createNoteHistoryView(options: NoteHistoryViewOptions): NoteHistoryView;
27
+ export {};
28
+ //# sourceMappingURL=web-note-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-note-history.d.ts","sourceRoot":"","sources":["../src/web-note-history.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,eAAe,EAAE,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3E,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAA;IAC3C,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAAA;IAC5D,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAClC,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnE,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,IAAI,IAAI,CAAA;CAChB;AAWD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CA+JtF"}
@@ -0,0 +1,163 @@
1
+ const CONTENT_CACHE_LIMIT = 4;
2
+ function node(tag, className = '', text = '') {
3
+ const element = document.createElement(tag);
4
+ if (className)
5
+ element.className = className;
6
+ if (text)
7
+ element.textContent = text;
8
+ return element;
9
+ }
10
+ export function createNoteHistoryView(options) {
11
+ const root = node('div', 'note-history-workspace');
12
+ let mode = 'preview';
13
+ let selected = options.versions[0];
14
+ let selectedContent = '';
15
+ let contentLoaded = false;
16
+ let request = 0;
17
+ let controller;
18
+ let destroyed = false;
19
+ const cache = new Map();
20
+ const timeline = node('nav', 'note-history-timeline');
21
+ timeline.setAttribute('aria-label', '页面历史版本');
22
+ const timelineHeading = node('div', 'note-history-timeline-heading');
23
+ timelineHeading.append(node('strong', '', '保存记录'), node('span', '', `最近 ${options.versions.length} 个版本`));
24
+ const versionList = node('div', 'note-history-version-list');
25
+ timeline.append(timelineHeading, versionList);
26
+ const detail = node('section', 'note-history-detail');
27
+ detail.setAttribute('aria-live', 'polite');
28
+ const detailHeader = node('header', 'note-history-detail-header');
29
+ const detailCopy = node('div', 'note-history-detail-copy');
30
+ const detailTitle = node('strong');
31
+ const detailMeta = node('span');
32
+ detailCopy.append(detailTitle, detailMeta);
33
+ const detailActions = node('div', 'note-history-detail-actions');
34
+ const previewButton = modeButton('内容预览', 'preview');
35
+ const diffButton = modeButton('与当前比较', 'diff');
36
+ const restoreButton = node('button', 'button primary small', '恢复为新版本');
37
+ restoreButton.type = 'button';
38
+ detailActions.append(previewButton, diffButton, restoreButton);
39
+ detailHeader.append(detailCopy, detailActions);
40
+ const content = node('div', 'note-history-content');
41
+ detail.append(detailHeader, content);
42
+ root.append(timeline, detail);
43
+ function modeButton(label, value) {
44
+ const button = node('button', 'note-history-mode', label);
45
+ button.type = 'button';
46
+ button.dataset.mode = value;
47
+ button.setAttribute('aria-pressed', String(mode === value));
48
+ button.addEventListener('click', () => {
49
+ mode = value;
50
+ syncMode();
51
+ renderSelectedContent();
52
+ });
53
+ return button;
54
+ }
55
+ function syncMode() {
56
+ previewButton.setAttribute('aria-pressed', String(mode === 'preview'));
57
+ diffButton.setAttribute('aria-pressed', String(mode === 'diff'));
58
+ }
59
+ function putCache(version, value) {
60
+ cache.delete(version);
61
+ cache.set(version, value);
62
+ while (cache.size > CONTENT_CACHE_LIMIT) {
63
+ const oldest = cache.keys().next().value;
64
+ if (oldest === undefined)
65
+ break;
66
+ cache.delete(oldest);
67
+ }
68
+ }
69
+ function syncVersionButtons() {
70
+ for (const button of versionList.querySelectorAll('[data-note-version]')) {
71
+ const active = Number(button.dataset.noteVersion) === selected?.version;
72
+ button.setAttribute('aria-current', active ? 'true' : 'false');
73
+ }
74
+ }
75
+ function syncDetailHeader() {
76
+ if (!selected)
77
+ return;
78
+ const current = selected.version === options.currentVersion;
79
+ detailTitle.textContent = `版本 ${selected.version}${current ? ' · 当前' : ''}`;
80
+ detailMeta.textContent = `${options.formatDate(selected.createdAt)} · ${options.formatBytes(selected.size)}`;
81
+ const sameContent = contentLoaded && selectedContent === options.currentContent;
82
+ restoreButton.disabled = current || !contentLoaded || sameContent;
83
+ restoreButton.textContent = current ? '当前版本' : sameContent ? '内容相同' : '恢复为新版本';
84
+ }
85
+ function renderSelectedContent() {
86
+ if (!contentLoaded) {
87
+ content.replaceChildren(node('div', 'note-history-loading', '正在读取版本内容…'));
88
+ return;
89
+ }
90
+ content.replaceChildren(mode === 'preview'
91
+ ? options.renderPreview(selectedContent)
92
+ : options.renderDiff(selectedContent, options.currentContent));
93
+ }
94
+ async function selectVersion(version) {
95
+ selected = version;
96
+ selectedContent = '';
97
+ contentLoaded = false;
98
+ syncVersionButtons();
99
+ syncDetailHeader();
100
+ renderSelectedContent();
101
+ const currentRequest = ++request;
102
+ controller?.abort();
103
+ controller = new AbortController();
104
+ try {
105
+ const cached = cache.get(version.version);
106
+ const loaded = cached ?? await options.loadContent(version, controller.signal);
107
+ if (destroyed || currentRequest !== request)
108
+ return;
109
+ selectedContent = loaded;
110
+ contentLoaded = true;
111
+ putCache(version.version, loaded);
112
+ syncDetailHeader();
113
+ renderSelectedContent();
114
+ }
115
+ catch (error) {
116
+ if (destroyed || currentRequest !== request || (error instanceof DOMException && error.name === 'AbortError'))
117
+ return;
118
+ content.replaceChildren(node('div', 'note-history-error', '无法读取这个历史版本。'));
119
+ options.onError(error);
120
+ }
121
+ }
122
+ for (const version of options.versions) {
123
+ const current = version.version === options.currentVersion;
124
+ const button = node('button', 'note-history-version');
125
+ button.type = 'button';
126
+ button.dataset.noteVersion = String(version.version);
127
+ button.append(node('strong', '', `版本 ${version.version}${current ? ' · 当前' : ''}`), node('span', '', options.formatDate(version.createdAt)), node('small', '', options.formatBytes(version.size)));
128
+ button.addEventListener('click', () => { void selectVersion(version); });
129
+ versionList.append(button);
130
+ }
131
+ restoreButton.addEventListener('click', async () => {
132
+ if (!selected || !contentLoaded || restoreButton.disabled)
133
+ return;
134
+ restoreButton.disabled = true;
135
+ restoreButton.setAttribute('aria-busy', 'true');
136
+ restoreButton.textContent = '正在恢复…';
137
+ try {
138
+ await options.onRestore(selected, selectedContent);
139
+ }
140
+ catch (error) {
141
+ if (!destroyed) {
142
+ restoreButton.disabled = false;
143
+ restoreButton.removeAttribute('aria-busy');
144
+ syncDetailHeader();
145
+ options.onError(error);
146
+ }
147
+ }
148
+ });
149
+ if (selected)
150
+ void selectVersion(selected);
151
+ else
152
+ content.replaceChildren(node('div', 'note-history-error', '还没有可查看的保存记录。'));
153
+ return {
154
+ element: root,
155
+ destroy: () => {
156
+ destroyed = true;
157
+ request += 1;
158
+ controller?.abort();
159
+ cache.clear();
160
+ },
161
+ };
162
+ }
163
+ //# sourceMappingURL=web-note-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-note-history.js","sourceRoot":"","sources":["../src/web-note-history.ts"],"names":[],"mappings":"AA4BA,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAE7B,SAAS,IAAI,CAAwC,GAAM,EAAE,SAAS,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE;IACpF,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAI,SAAS;QAAE,OAAO,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5C,IAAI,IAAI;QAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;IACpC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;IAClD,IAAI,IAAI,GAAuB,SAAS,CAAA;IACxC,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,eAAe,GAAG,EAAE,CAAA;IACxB,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,UAAuC,CAAA;IAC3C,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAA;IACrD,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAA;IACpE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,MAAM,CAAC,CAAC,CAAA;IACzG,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAA;IAC5D,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;IAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAA;IACrD,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAA;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAA;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IAC/B,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAA;IAChE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACnD,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,CAAC,CAAA;IACtE,aAAa,CAAC,IAAI,GAAG,QAAQ,CAAA;IAC7B,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IAC9D,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACnD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE7B,SAAS,UAAU,CAAC,KAAa,EAAE,KAAyB;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAA;QACzD,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAA;QACtB,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAA;QAC3B,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAA;QAC3D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACpC,IAAI,GAAG,KAAK,CAAA;YACZ,QAAQ,EAAE,CAAA;YACV,qBAAqB,EAAE,CAAA;QACzB,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,SAAS,QAAQ;QACf,aAAa,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAA;QACtE,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,SAAS,QAAQ,CAAC,OAAe,EAAE,KAAa;QAC9C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACrB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QACzB,OAAO,KAAK,CAAC,IAAI,GAAG,mBAAmB,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAA2B,CAAA;YAC9D,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAK;YAC/B,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,SAAS,kBAAkB;QACzB,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,gBAAgB,CAAoB,qBAAqB,CAAC,EAAE,CAAC;YAC5F,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,QAAQ,EAAE,OAAO,CAAA;YACvE,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IAED,SAAS,gBAAgB;QACvB,IAAI,CAAC,QAAQ;YAAE,OAAM;QACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,KAAK,OAAO,CAAC,cAAc,CAAA;QAC3D,WAAW,CAAC,WAAW,GAAG,MAAM,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;QAC3E,UAAU,CAAC,WAAW,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAA;QAC5G,MAAM,WAAW,GAAG,aAAa,IAAI,eAAe,KAAK,OAAO,CAAC,cAAc,CAAA;QAC/E,aAAa,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,aAAa,IAAI,WAAW,CAAA;QACjE,aAAa,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;IAChF,CAAC;IAED,SAAS,qBAAqB;QAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,sBAAsB,EAAE,WAAW,CAAC,CAAC,CAAA;YACzE,OAAM;QACR,CAAC;QACD,OAAO,CAAC,eAAe,CAAC,IAAI,KAAK,SAAS;YACxC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;YACxC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,OAAwB;QACnD,QAAQ,GAAG,OAAO,CAAA;QAClB,eAAe,GAAG,EAAE,CAAA;QACpB,aAAa,GAAG,KAAK,CAAA;QACrB,kBAAkB,EAAE,CAAA;QACpB,gBAAgB,EAAE,CAAA;QAClB,qBAAqB,EAAE,CAAA;QACvB,MAAM,cAAc,GAAG,EAAE,OAAO,CAAA;QAChC,UAAU,EAAE,KAAK,EAAE,CAAA;QACnB,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;YAC9E,IAAI,SAAS,IAAI,cAAc,KAAK,OAAO;gBAAE,OAAM;YACnD,eAAe,GAAG,MAAM,CAAA;YACxB,aAAa,GAAG,IAAI,CAAA;YACpB,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACjC,gBAAgB,EAAE,CAAA;YAClB,qBAAqB,EAAE,CAAA;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,IAAI,cAAc,KAAK,OAAO,IAAI,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;gBAAE,OAAM;YACrH,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,cAAc,CAAA;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAA;QACrD,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAA;QACtB,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,CACX,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EACpE,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EACvD,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACrD,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QACvE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;IAED,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACjD,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,QAAQ;YAAE,OAAM;QACjE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAA;QAC7B,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QAC/C,aAAa,CAAC,WAAW,GAAG,OAAO,CAAA;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAA;gBAC9B,aAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;gBAC1C,gBAAgB,EAAE,CAAA;gBAClB,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ;QAAE,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAA;;QACrC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAA;IAE/E,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,GAAG,EAAE;YACZ,SAAS,GAAG,IAAI,CAAA;YAChB,OAAO,IAAI,CAAC,CAAA;YACZ,UAAU,EAAE,KAAK,EAAE,CAAA;YACnB,KAAK,CAAC,KAAK,EAAE,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"web-workspace-effects.d.ts","sourceRoot":"","sources":["../src/web-workspace-effects.ts"],"names":[],"mappings":"AAwDA,UAAU,mBAAmB;IAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,OAAO,IAAI,IAAI,CAAA;CAChB;AAQD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;KAC1C;CACF;AAiRD,iBAAS,OAAO,CAAC,IAAI,GAAE,UAAqB,GAAG,IAAI,CAOlD;AAED,iBAAS,OAAO,IAAI,IAAI,CA0BvB;AAKD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"web-workspace-effects.d.ts","sourceRoot":"","sources":["../src/web-workspace-effects.ts"],"names":[],"mappings":"AAuDA,UAAU,mBAAmB;IAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,OAAO,IAAI,IAAI,CAAA;CAChB;AAQD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;KAC1C;CACF;AAiRD,iBAAS,OAAO,CAAC,IAAI,GAAE,UAAqB,GAAG,IAAI,CAOlD;AAED,iBAAS,OAAO,IAAI,IAAI,CA0BvB;AAKD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA"}