@verdant-web/tiptap 2.0.0 → 2.1.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.
@@ -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,2 @@
1
+ import { Extension } from '@tiptap/core';
2
+ export declare const NodeIdExtension: Extension<any, any>;
@@ -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, id, } from '@verdant-web/store';
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
- function printAllOids(obj) {
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 | null>, 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