@verdant-web/tiptap 2.0.0 → 2.1.1
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.
- package/dist/esm/__browserTests__/react.test.js +65 -3
- package/dist/esm/__browserTests__/react.test.js.map +1 -1
- package/dist/esm/extensions/NodeId.d.ts +2 -0
- package/dist/esm/extensions/NodeId.js +66 -0
- package/dist/esm/extensions/NodeId.js.map +1 -0
- package/dist/esm/{plugins.d.ts → extensions/Verdant.d.ts} +0 -1
- package/dist/esm/{plugins.js → extensions/Verdant.js} +2 -75
- package/dist/esm/extensions/Verdant.js.map +1 -0
- package/dist/esm/extensions/VerdantMedia.d.ts +30 -0
- package/dist/esm/extensions/VerdantMedia.js +261 -0
- package/dist/esm/extensions/VerdantMedia.js.map +1 -0
- package/dist/esm/fields.d.ts +1 -0
- package/dist/esm/fields.js +5 -0
- package/dist/esm/fields.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react.d.ts +4 -2
- package/dist/esm/react.js +12 -4
- package/dist/esm/react.js.map +1 -1
- package/package.json +3 -2
- package/src/__browserTests__/fixtures/cat.jpg +0 -0
- package/src/__browserTests__/fixtures/cat.m4a +0 -0
- package/src/__browserTests__/fixtures/cat.mp4 +0 -0
- package/src/__browserTests__/react.test.tsx +105 -4
- package/src/extensions/NodeId.ts +67 -0
- package/src/{plugins.ts → extensions/Verdant.ts} +1 -80
- package/src/extensions/VerdantMedia.ts +299 -0
- package/src/fields.ts +6 -0
- package/src/index.ts +3 -1
- package/src/react.ts +22 -9
- package/dist/esm/plugins.js.map +0 -1
|
@@ -8,7 +8,7 @@ import { userEvent } from '@vitest/browser/context';
|
|
|
8
8
|
import { Suspense } from 'react';
|
|
9
9
|
import { afterAll, beforeAll, expect, it } from 'vitest';
|
|
10
10
|
import { render } from 'vitest-browser-react';
|
|
11
|
-
import { createTipTapFieldSchema } from '../fields.js';
|
|
11
|
+
import { createTipTapFieldSchema, createTipTapFileMapSchema, } from '../fields.js';
|
|
12
12
|
import { useSyncedEditor } from '../react.js';
|
|
13
13
|
const testSchema = schema({
|
|
14
14
|
version: 1,
|
|
@@ -25,6 +25,7 @@ const testSchema = schema({
|
|
|
25
25
|
content: [],
|
|
26
26
|
},
|
|
27
27
|
}),
|
|
28
|
+
files: createTipTapFileMapSchema(),
|
|
28
29
|
},
|
|
29
30
|
}),
|
|
30
31
|
},
|
|
@@ -299,7 +300,6 @@ it('should initialize from an existing document', async () => {
|
|
|
299
300
|
const screen = await renderWithProvider(_jsx(TipTapTest, {}));
|
|
300
301
|
await expect.element(screen.getByTestId('editor')).toBeVisible();
|
|
301
302
|
const editor = screen.getByTestId('editor').getByRole('textbox');
|
|
302
|
-
await expect.element(editor).toHaveTextContent('');
|
|
303
303
|
await expect.element(editor).toHaveTextContent('Hello, world!');
|
|
304
304
|
});
|
|
305
305
|
function testLog(...args) {
|
|
@@ -339,7 +339,6 @@ it('should withstand multiple edits, undo, and redo consistently', async () => {
|
|
|
339
339
|
const screen = await renderWithProvider(_jsx(TipTapTest, {}));
|
|
340
340
|
await expect.element(screen.getByTestId('editor')).toBeVisible();
|
|
341
341
|
const editor = screen.getByTestId('editor').getByRole('textbox');
|
|
342
|
-
await expect.element(editor).toHaveTextContent('');
|
|
343
342
|
await expect.element(editor).toHaveTextContent('Hello, world!');
|
|
344
343
|
await userEvent.type(editor, '[pageDown]');
|
|
345
344
|
await userEvent.type(editor, '\nLine 2!');
|
|
@@ -369,4 +368,67 @@ it('should withstand multiple edits, undo, and redo consistently', async () => {
|
|
|
369
368
|
.element(editor)
|
|
370
369
|
.toHaveTextContent(/^Hello, world!Line 2!Line 3!$/);
|
|
371
370
|
});
|
|
371
|
+
it('should support media nodes', async () => {
|
|
372
|
+
const testPost = await client.posts.put({});
|
|
373
|
+
// reset history
|
|
374
|
+
await client.entities.flushAllBatches();
|
|
375
|
+
client.undoHistory.clear();
|
|
376
|
+
const user = userEvent.setup();
|
|
377
|
+
const TipTapTest = () => {
|
|
378
|
+
const editor = useSyncedEditor(testPost, 'requiredBody', {
|
|
379
|
+
editorOptions: {
|
|
380
|
+
extensions: [StarterKit.configure({ history: false })],
|
|
381
|
+
},
|
|
382
|
+
files: testPost.get('files'),
|
|
383
|
+
});
|
|
384
|
+
const insertMedia = async (ev) => {
|
|
385
|
+
var _a;
|
|
386
|
+
const file = (_a = ev.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
387
|
+
if (!file)
|
|
388
|
+
return;
|
|
389
|
+
editor === null || editor === void 0 ? void 0 : editor.chain().insertMedia(file).run();
|
|
390
|
+
};
|
|
391
|
+
return (_jsxs("div", { children: [_jsx("input", { type: "file", onChange: insertMedia, "data-testid": "insert-media" }), _jsx("div", { children: "Text editor:" }), _jsx(EditorContent, { style: {
|
|
392
|
+
width: 500,
|
|
393
|
+
height: 300,
|
|
394
|
+
}, editor: editor, id: "#editor", "data-testid": "editor" })] }));
|
|
395
|
+
};
|
|
396
|
+
// load the image fixture to a file
|
|
397
|
+
const imageRes = await fetch('/cat.jpg', { method: 'GET' });
|
|
398
|
+
const imageBlob = await imageRes.blob();
|
|
399
|
+
const screen = await renderWithProvider(_jsx(TipTapTest, {}));
|
|
400
|
+
await expect.element(screen.getByTestId('editor')).toBeVisible();
|
|
401
|
+
const editor = screen.getByTestId('editor').getByRole('textbox');
|
|
402
|
+
await expect.element(editor).toHaveTextContent('');
|
|
403
|
+
// send keystrokes to the editor
|
|
404
|
+
await user.type(editor, 'Hello, world!');
|
|
405
|
+
await expect.element(editor).toHaveTextContent('Hello, world!');
|
|
406
|
+
// simulate paste of an image
|
|
407
|
+
// load the image into the clipboard
|
|
408
|
+
await user.upload(screen.getByTestId('insert-media'), new File([imageBlob], 'cat.jpg', { type: 'image/jpeg' }));
|
|
409
|
+
// the image should be visible in the editor
|
|
410
|
+
await expect.element(screen.getByRole('img')).toBeVisible();
|
|
411
|
+
const audioRes = await fetch('/cat.m4a', { method: 'GET' });
|
|
412
|
+
const audioBlob = await audioRes.blob();
|
|
413
|
+
await user.upload(screen.getByTestId('insert-media'), new File([audioBlob], 'cat.m4a', { type: 'audio/m4a' }));
|
|
414
|
+
// the audio should be visible in the editor
|
|
415
|
+
const audio = screen.container.querySelector('audio');
|
|
416
|
+
expect(audio).not.toBe(null);
|
|
417
|
+
await expect.element(audio).toBeVisible();
|
|
418
|
+
const videoRes = await fetch('/cat.mp4', { method: 'GET' });
|
|
419
|
+
const videoBlob = await videoRes.blob();
|
|
420
|
+
await user.upload(screen.getByTestId('insert-media'), new File([videoBlob], 'cat.mp4', { type: 'video/mp4' }));
|
|
421
|
+
// the video should be visible in the editor
|
|
422
|
+
const video = screen.container.querySelector('video');
|
|
423
|
+
expect(video).not.toBe(null);
|
|
424
|
+
await expect.element(video).toBeVisible();
|
|
425
|
+
const files = testPost.get('files');
|
|
426
|
+
expect(files.values().length).toBe(3);
|
|
427
|
+
// delete all media nodes; the files should also be removed from Verdant.
|
|
428
|
+
await user.keyboard('{Delete}{Delete}{Delete}');
|
|
429
|
+
await expect
|
|
430
|
+
.element(screen.getByTestId('editor'))
|
|
431
|
+
.toHaveTextContent('Hello, world!');
|
|
432
|
+
expect(files.values().length).toBe(0);
|
|
433
|
+
});
|
|
372
434
|
//# sourceMappingURL=react.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.test.js","sourceRoot":"","sources":["../../../src/__browserTests__/react.test.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react.test.js","sourceRoot":"","sources":["../../../src/__browserTests__/react.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Extension } from '@tiptap/core';
|
|
2
|
+
import { Plugin, PluginKey } from '@tiptap/pm/state';
|
|
3
|
+
import { id } from '@verdant-web/store';
|
|
4
|
+
const NodeIdPlugin = new Plugin({
|
|
5
|
+
key: new PluginKey('node-ids'),
|
|
6
|
+
appendTransaction: (_, oldState, newState) => {
|
|
7
|
+
// no changes
|
|
8
|
+
if (newState.doc === oldState.doc)
|
|
9
|
+
return;
|
|
10
|
+
const tr = newState.tr;
|
|
11
|
+
// force replacement of any duplicates, too
|
|
12
|
+
const usedIds = new Set();
|
|
13
|
+
newState.doc.descendants((node, pos) => {
|
|
14
|
+
var _a;
|
|
15
|
+
if (!node.isText &&
|
|
16
|
+
(!node.attrs.id || usedIds.has(node.attrs.id)) &&
|
|
17
|
+
node !== newState.doc) {
|
|
18
|
+
const nodeId = id();
|
|
19
|
+
try {
|
|
20
|
+
tr.setNodeMarkup(pos, null, Object.assign(Object.assign({}, node.attrs), { id: nodeId }));
|
|
21
|
+
usedIds.add(nodeId);
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
console.error('Error assigning node ID', err);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else if ((_a = node.attrs) === null || _a === void 0 ? void 0 : _a.id) {
|
|
28
|
+
usedIds.add(node.attrs.id);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return tr;
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
export const NodeIdExtension = Extension.create({
|
|
35
|
+
name: 'nodeId',
|
|
36
|
+
addProseMirrorPlugins() {
|
|
37
|
+
return [NodeIdPlugin];
|
|
38
|
+
},
|
|
39
|
+
addOptions() {
|
|
40
|
+
return {
|
|
41
|
+
types: [],
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
addGlobalAttributes() {
|
|
45
|
+
return [
|
|
46
|
+
{
|
|
47
|
+
types: this.options.types,
|
|
48
|
+
attributes: {
|
|
49
|
+
id: {
|
|
50
|
+
default: null,
|
|
51
|
+
keepOnSplit: false,
|
|
52
|
+
parseHTML: (element) => element.getAttribute('data-id'),
|
|
53
|
+
renderHTML: (attributes) => {
|
|
54
|
+
if (!attributes.id)
|
|
55
|
+
return {};
|
|
56
|
+
return {
|
|
57
|
+
'data-id': attributes.id,
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=NodeId.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeId.js","sourceRoot":"","sources":["../../../src/extensions/NodeId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAExC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC;IAC/B,GAAG,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC;IAC9B,iBAAiB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;QAC5C,aAAa;QACb,IAAI,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;YAAE,OAAO;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;QACvB,2CAA2C;QAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;;YACtC,IACC,CAAC,IAAI,CAAC,MAAM;gBACZ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9C,IAAI,KAAK,QAAQ,CAAC,GAAG,EACpB,CAAC;gBACF,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACJ,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,kCACtB,IAAI,CAAC,KAAK,KACb,EAAE,EAAE,MAAM,IACT,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;iBAAM,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,EAAE,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACF,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,QAAQ;IACd,qBAAqB;QACpB,OAAO,CAAC,YAAY,CAAC,CAAC;IACvB,CAAC;IACD,UAAU;QACT,OAAO;YACN,KAAK,EAAE,EAAE;SACT,CAAC;IACH,CAAC;IACD,mBAAmB;QAClB,OAAO;YACN;gBACC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,UAAU,EAAE;oBACX,EAAE,EAAE;wBACH,OAAO,EAAE,IAAI;wBACb,WAAW,EAAE,KAAK;wBAClB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC;wBACvD,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE;4BAC1B,IAAI,CAAC,UAAU,CAAC,EAAE;gCAAE,OAAO,EAAE,CAAC;4BAC9B,OAAO;gCACN,SAAS,EAAE,UAAU,CAAC,EAAE;6BACxB,CAAC;wBACH,CAAC;qBACD;iBACD;aACD;SACD,CAAC;IACH,CAAC;CACD,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Extension } from '@tiptap/core';
|
|
2
2
|
import { AnyEntity } from '@verdant-web/store';
|
|
3
|
-
export declare const NodeIdExtension: Extension<any, any>;
|
|
4
3
|
export declare const verdantIdAttribute = "data-verdant-oid";
|
|
5
4
|
export interface VerdantExtensionOptions {
|
|
6
5
|
parent: AnyEntity<any, any, any>;
|
|
@@ -1,69 +1,6 @@
|
|
|
1
1
|
import { Extension } from '@tiptap/core';
|
|
2
|
-
import { Plugin, PluginKey } from '@tiptap/pm/state';
|
|
3
2
|
import { assignOid, cloneDeep, maybeGetOid } from '@verdant-web/common';
|
|
4
|
-
import { getEntityClient
|
|
5
|
-
const NodeIdPlugin = new Plugin({
|
|
6
|
-
key: new PluginKey('node-ids'),
|
|
7
|
-
appendTransaction: (_, oldState, newState) => {
|
|
8
|
-
// no changes
|
|
9
|
-
if (newState.doc === oldState.doc)
|
|
10
|
-
return;
|
|
11
|
-
const tr = newState.tr;
|
|
12
|
-
// force replacement of any duplicates, too
|
|
13
|
-
const usedIds = new Set();
|
|
14
|
-
newState.doc.descendants((node, pos) => {
|
|
15
|
-
var _a;
|
|
16
|
-
if (!node.isText &&
|
|
17
|
-
(!node.attrs.id || usedIds.has(node.attrs.id)) &&
|
|
18
|
-
node !== newState.doc) {
|
|
19
|
-
const nodeId = id();
|
|
20
|
-
try {
|
|
21
|
-
tr.setNodeMarkup(pos, null, Object.assign(Object.assign({}, node.attrs), { id: nodeId }));
|
|
22
|
-
usedIds.add(nodeId);
|
|
23
|
-
}
|
|
24
|
-
catch (err) {
|
|
25
|
-
console.error('Error assigning node ID', err);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
else if ((_a = node.attrs) === null || _a === void 0 ? void 0 : _a.id) {
|
|
29
|
-
usedIds.add(node.attrs.id);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
return tr;
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
export const NodeIdExtension = Extension.create({
|
|
36
|
-
name: 'nodeId',
|
|
37
|
-
addProseMirrorPlugins() {
|
|
38
|
-
return [NodeIdPlugin];
|
|
39
|
-
},
|
|
40
|
-
addOptions() {
|
|
41
|
-
return {
|
|
42
|
-
types: [],
|
|
43
|
-
};
|
|
44
|
-
},
|
|
45
|
-
addGlobalAttributes() {
|
|
46
|
-
return [
|
|
47
|
-
{
|
|
48
|
-
types: this.options.types,
|
|
49
|
-
attributes: {
|
|
50
|
-
id: {
|
|
51
|
-
default: null,
|
|
52
|
-
keepOnSplit: false,
|
|
53
|
-
parseHTML: (element) => element.getAttribute('data-id'),
|
|
54
|
-
renderHTML: (attributes) => {
|
|
55
|
-
if (!attributes.id)
|
|
56
|
-
return {};
|
|
57
|
-
return {
|
|
58
|
-
'data-id': attributes.id,
|
|
59
|
-
};
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
];
|
|
65
|
-
},
|
|
66
|
-
});
|
|
3
|
+
import { getEntityClient } from '@verdant-web/store';
|
|
67
4
|
export const verdantIdAttribute = 'data-verdant-oid';
|
|
68
5
|
export const VerdantExtension = Extension.create({
|
|
69
6
|
name: 'verdant',
|
|
@@ -256,14 +193,4 @@ function addOidAttrs(doc) {
|
|
|
256
193
|
doc.content.forEach(addOidAttrs);
|
|
257
194
|
}
|
|
258
195
|
}
|
|
259
|
-
|
|
260
|
-
if (obj && typeof obj === 'object') {
|
|
261
|
-
const oid = maybeGetOid(obj);
|
|
262
|
-
if (oid)
|
|
263
|
-
console.log(oid, obj);
|
|
264
|
-
for (const key in obj) {
|
|
265
|
-
printAllOids(obj[key]);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
//# sourceMappingURL=plugins.js.map
|
|
196
|
+
//# sourceMappingURL=Verdant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Verdant.js","sourceRoot":"","sources":["../../../src/extensions/Verdant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Node } from '@tiptap/core';
|
|
2
|
+
import { EntityFile, EntityFileSnapshot, ObjectEntity } from '@verdant-web/store';
|
|
3
|
+
export type VerdantMediaFileMap = ObjectEntity<Record<string, File>, Record<string, EntityFile | undefined>, Record<string, EntityFileSnapshot>>;
|
|
4
|
+
export interface VerdantMediaExtensionOptions {
|
|
5
|
+
fileMap: VerdantMediaFileMap;
|
|
6
|
+
}
|
|
7
|
+
declare module '@tiptap/core' {
|
|
8
|
+
interface Commands<ReturnType> {
|
|
9
|
+
verdantMedia: {
|
|
10
|
+
/**
|
|
11
|
+
* Add a file to the editor content.
|
|
12
|
+
* @param file The file to add.
|
|
13
|
+
* @example
|
|
14
|
+
* editor
|
|
15
|
+
* .commands
|
|
16
|
+
* .insertMedia({ src: 'https://tiptap.dev/logo.png', alt: 'tiptap', title: 'tiptap logo' })
|
|
17
|
+
*/
|
|
18
|
+
insertMedia: (file: File) => ReturnType;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export declare const VerdantMediaExtension: Node<VerdantMediaExtensionOptions, any>;
|
|
23
|
+
export declare function createVerdantMediaExtension(fileMap: VerdantMediaFileMap): Node<VerdantMediaExtensionOptions, any>;
|
|
24
|
+
/**
|
|
25
|
+
* Preloads all files provided in the file map field. Use of this
|
|
26
|
+
* is highly recommended, if not required, when rendering a document
|
|
27
|
+
* to HTML. TipTap will not wait for files to load, so if they are
|
|
28
|
+
* not preloaded they will be blank in the rendered version.
|
|
29
|
+
*/
|
|
30
|
+
export declare function preloadMedia(files: VerdantMediaFileMap): Promise<void>;
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { mergeAttributes, Node } from '@tiptap/core';
|
|
2
|
+
import { id, } from '@verdant-web/store';
|
|
3
|
+
const fileIdAttribute = 'data-verdant-file';
|
|
4
|
+
export const VerdantMediaExtension = Node.create({
|
|
5
|
+
name: 'verdant-media',
|
|
6
|
+
group: 'block',
|
|
7
|
+
draggable: true,
|
|
8
|
+
addOptions() {
|
|
9
|
+
return {
|
|
10
|
+
fileMap: null,
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
addAttributes() {
|
|
14
|
+
return {
|
|
15
|
+
[fileIdAttribute]: {
|
|
16
|
+
default: null,
|
|
17
|
+
},
|
|
18
|
+
alt: {
|
|
19
|
+
default: null,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
parseHTML() {
|
|
24
|
+
return [
|
|
25
|
+
{
|
|
26
|
+
tag: `[${fileIdAttribute}]`,
|
|
27
|
+
getAttrs: (element) => {
|
|
28
|
+
const fileId = element.getAttribute(fileIdAttribute);
|
|
29
|
+
return {
|
|
30
|
+
[fileIdAttribute]: fileId,
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
},
|
|
36
|
+
renderHTML(props) {
|
|
37
|
+
const fileId = props.node.attrs[fileIdAttribute];
|
|
38
|
+
if (!fileId) {
|
|
39
|
+
return ['div', props.HTMLAttributes, 'Missing file'];
|
|
40
|
+
}
|
|
41
|
+
const file = this.options.fileMap.get(fileId);
|
|
42
|
+
if (!file) {
|
|
43
|
+
return ['div', props.HTMLAttributes, 'Missing file'];
|
|
44
|
+
}
|
|
45
|
+
if (file.loading) {
|
|
46
|
+
// this means the user didn't preload files before rendering...
|
|
47
|
+
return [
|
|
48
|
+
'div',
|
|
49
|
+
props.HTMLAttributes,
|
|
50
|
+
'Loading file. This file was not preloaded before rendering the document.',
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
const type = file.type;
|
|
54
|
+
if (type === null || type === void 0 ? void 0 : type.startsWith('image/')) {
|
|
55
|
+
return ['img', mergeAttributes({ src: file.url }, props.HTMLAttributes)];
|
|
56
|
+
}
|
|
57
|
+
else if (type === null || type === void 0 ? void 0 : type.startsWith('video/')) {
|
|
58
|
+
return [
|
|
59
|
+
'video',
|
|
60
|
+
mergeAttributes({ src: file.url }, props.HTMLAttributes),
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
else if (type === null || type === void 0 ? void 0 : type.startsWith('audio/')) {
|
|
64
|
+
return [
|
|
65
|
+
'audio',
|
|
66
|
+
mergeAttributes({ src: file.url }, props.HTMLAttributes),
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
// TODO: render file download
|
|
71
|
+
return ['div', props.HTMLAttributes, 'Unsupported file type'];
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
onBeforeCreate() {
|
|
75
|
+
this.editor.on('paste', (event) => {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
const files = Array.from((_b = (_a = event.event.clipboardData) === null || _a === void 0 ? void 0 : _a.files) !== null && _b !== void 0 ? _b : []);
|
|
78
|
+
if (files.length === 0) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
for (const file of files) {
|
|
82
|
+
this.editor.chain().insertMedia(file).run();
|
|
83
|
+
}
|
|
84
|
+
event.event.preventDefault();
|
|
85
|
+
});
|
|
86
|
+
this.editor.on('drop', (event) => {
|
|
87
|
+
var _a, _b;
|
|
88
|
+
const files = Array.from((_b = (_a = event.event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files) !== null && _b !== void 0 ? _b : []);
|
|
89
|
+
if (files.length === 0) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
for (const file of files) {
|
|
93
|
+
this.editor.chain().insertMedia(file).run();
|
|
94
|
+
}
|
|
95
|
+
event.event.preventDefault();
|
|
96
|
+
});
|
|
97
|
+
this.editor.on('update', ({ transaction }) => {
|
|
98
|
+
const fileIds = new Set();
|
|
99
|
+
transaction.doc.forEach((node) => {
|
|
100
|
+
if (node.attrs[fileIdAttribute]) {
|
|
101
|
+
fileIds.add(node.attrs[fileIdAttribute]);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
transaction.before.forEach((node) => {
|
|
105
|
+
const fileId = node.attrs[fileIdAttribute];
|
|
106
|
+
if (fileId && !fileIds.has(fileId)) {
|
|
107
|
+
// the file was removed from the document
|
|
108
|
+
this.options.fileMap.delete(fileId);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
addCommands() {
|
|
114
|
+
return {
|
|
115
|
+
insertMedia: (file) => ({ commands }) => {
|
|
116
|
+
const fileId = id();
|
|
117
|
+
this.options.fileMap.set(fileId, file);
|
|
118
|
+
return commands.insertContent({
|
|
119
|
+
type: this.name,
|
|
120
|
+
attrs: {
|
|
121
|
+
[fileIdAttribute]: fileId,
|
|
122
|
+
},
|
|
123
|
+
}, {
|
|
124
|
+
updateSelection: false,
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
},
|
|
129
|
+
addNodeView() {
|
|
130
|
+
return ({ node, HTMLAttributes, extension }) => {
|
|
131
|
+
// create a root div to house all content
|
|
132
|
+
const root = document.createElement('div');
|
|
133
|
+
// we don't want users editing this content
|
|
134
|
+
root.setAttribute('contenteditable', 'false');
|
|
135
|
+
// attach any existing attributes if they are not null
|
|
136
|
+
Object.entries(HTMLAttributes).forEach(([key, value]) => {
|
|
137
|
+
if (value !== null) {
|
|
138
|
+
root.setAttribute(key, value);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
// get the file ID from attrs
|
|
142
|
+
const fileId = node.attrs[fileIdAttribute];
|
|
143
|
+
if (!fileId) {
|
|
144
|
+
root.textContent = 'Missing file';
|
|
145
|
+
return {
|
|
146
|
+
dom: root,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// look up the file in the file map
|
|
150
|
+
// NOTE: for convenience/typing, "this" is used
|
|
151
|
+
// here, but in a userland node view you'd use `extension`.
|
|
152
|
+
const file = this.options.fileMap.get(fileId);
|
|
153
|
+
// this is a helper function to reconstruct the DOM
|
|
154
|
+
// whenever the file changes
|
|
155
|
+
function updateRootContent() {
|
|
156
|
+
// clear the DOM
|
|
157
|
+
root.innerHTML = '';
|
|
158
|
+
if (file) {
|
|
159
|
+
// minimal loading state
|
|
160
|
+
if (file.loading) {
|
|
161
|
+
root.textContent = 'Loading...';
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
// minimal error state
|
|
165
|
+
if (file.failed) {
|
|
166
|
+
root.textContent = 'Failed to load file';
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
// it's unlikely we get here without a url
|
|
170
|
+
// but just in case
|
|
171
|
+
const url = file.url;
|
|
172
|
+
if (!url) {
|
|
173
|
+
root.textContent = 'Failed to load file';
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
// based on the file type, we try to render
|
|
177
|
+
// a useful DOM representation
|
|
178
|
+
const type = file.type;
|
|
179
|
+
if (type === null || type === void 0 ? void 0 : type.startsWith('image/')) {
|
|
180
|
+
const img = document.createElement('img');
|
|
181
|
+
img.src = file.url;
|
|
182
|
+
root.appendChild(img);
|
|
183
|
+
}
|
|
184
|
+
else if (type === null || type === void 0 ? void 0 : type.startsWith('video/')) {
|
|
185
|
+
const video = document.createElement('video');
|
|
186
|
+
video.src = file.url;
|
|
187
|
+
video.controls = true;
|
|
188
|
+
root.appendChild(video);
|
|
189
|
+
}
|
|
190
|
+
else if (type === null || type === void 0 ? void 0 : type.startsWith('audio/')) {
|
|
191
|
+
const audio = document.createElement('audio');
|
|
192
|
+
audio.src = file.url;
|
|
193
|
+
audio.controls = true;
|
|
194
|
+
root.appendChild(audio);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
const a = document.createElement('a');
|
|
198
|
+
a.href = file.url;
|
|
199
|
+
a.textContent = 'Download';
|
|
200
|
+
root.appendChild(a);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// if the file is not in the file map, we subscribe to changes
|
|
205
|
+
// to its key in the map, and update the DOM when it changes.
|
|
206
|
+
if (!file) {
|
|
207
|
+
const unsub = this.options.fileMap.subscribeToField(fileId, 'change', (file) => {
|
|
208
|
+
if (!file)
|
|
209
|
+
return;
|
|
210
|
+
// we can unsub after the first change, all further
|
|
211
|
+
// changes can be monitored on the file itself.
|
|
212
|
+
unsub();
|
|
213
|
+
file.subscribe('change', updateRootContent);
|
|
214
|
+
updateRootContent();
|
|
215
|
+
});
|
|
216
|
+
root.textContent = 'Missing file';
|
|
217
|
+
return {
|
|
218
|
+
dom: root,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
// otherwise, we go ahead and render whatever we have, and
|
|
223
|
+
// subscribe to future changes on the file for further
|
|
224
|
+
// updates.
|
|
225
|
+
updateRootContent();
|
|
226
|
+
file.subscribe('change', updateRootContent);
|
|
227
|
+
return {
|
|
228
|
+
dom: root,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
export function createVerdantMediaExtension(fileMap) {
|
|
235
|
+
return VerdantMediaExtension.configure({ fileMap });
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Preloads all files provided in the file map field. Use of this
|
|
239
|
+
* is highly recommended, if not required, when rendering a document
|
|
240
|
+
* to HTML. TipTap will not wait for files to load, so if they are
|
|
241
|
+
* not preloaded they will be blank in the rendered version.
|
|
242
|
+
*/
|
|
243
|
+
export async function preloadMedia(files) {
|
|
244
|
+
await Promise.all(Array.from(files.values()).map((file) => {
|
|
245
|
+
if (!file)
|
|
246
|
+
return Promise.resolve();
|
|
247
|
+
// since files immediately begin loading on access,
|
|
248
|
+
// we just wait for the file to finish loading
|
|
249
|
+
if (!file.loading)
|
|
250
|
+
return Promise.resolve();
|
|
251
|
+
return new Promise((resolve) => {
|
|
252
|
+
const unsub = file.subscribe('change', () => {
|
|
253
|
+
if (!file.loading) {
|
|
254
|
+
unsub();
|
|
255
|
+
resolve();
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
}));
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=VerdantMedia.js.map
|