@medway-ui/notes-core 0.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.
Files changed (57) hide show
  1. package/README.md +127 -0
  2. package/dist/document/normalize.d.ts +61 -0
  3. package/dist/document/normalize.d.ts.map +1 -0
  4. package/dist/document/normalize.js +373 -0
  5. package/dist/document/normalize.js.map +1 -0
  6. package/dist/document/types.d.ts +47 -0
  7. package/dist/document/types.d.ts.map +1 -0
  8. package/dist/document/types.js +9 -0
  9. package/dist/document/types.js.map +1 -0
  10. package/dist/editor/handle.d.ts +28 -0
  11. package/dist/editor/handle.d.ts.map +1 -0
  12. package/dist/editor/handle.js +34 -0
  13. package/dist/editor/handle.js.map +1 -0
  14. package/dist/editor/slashCommands.d.ts +21 -0
  15. package/dist/editor/slashCommands.d.ts.map +1 -0
  16. package/dist/editor/slashCommands.js +98 -0
  17. package/dist/editor/slashCommands.js.map +1 -0
  18. package/dist/editor/vocabulary.d.ts +110 -0
  19. package/dist/editor/vocabulary.d.ts.map +1 -0
  20. package/dist/editor/vocabulary.js +11 -0
  21. package/dist/editor/vocabulary.js.map +1 -0
  22. package/dist/index.d.ts +15 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +11 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/schema/contract.d.ts +14 -0
  27. package/dist/schema/contract.d.ts.map +1 -0
  28. package/dist/schema/contract.js +51 -0
  29. package/dist/schema/contract.js.map +1 -0
  30. package/dist/schema/extensions.d.ts +23 -0
  31. package/dist/schema/extensions.d.ts.map +1 -0
  32. package/dist/schema/extensions.js +81 -0
  33. package/dist/schema/extensions.js.map +1 -0
  34. package/dist/schema/image.d.ts +14 -0
  35. package/dist/schema/image.d.ts.map +1 -0
  36. package/dist/schema/image.js +28 -0
  37. package/dist/schema/image.js.map +1 -0
  38. package/dist/schema/index.d.ts +17 -0
  39. package/dist/schema/index.d.ts.map +1 -0
  40. package/dist/schema/index.js +18 -0
  41. package/dist/schema/index.js.map +1 -0
  42. package/dist/schema/slashCommand.d.ts +19 -0
  43. package/dist/schema/slashCommand.d.ts.map +1 -0
  44. package/dist/schema/slashCommand.js +146 -0
  45. package/dist/schema/slashCommand.js.map +1 -0
  46. package/package.json +134 -0
  47. package/src/document/normalize.ts +456 -0
  48. package/src/document/types.ts +74 -0
  49. package/src/editor/handle.ts +65 -0
  50. package/src/editor/slashCommands.ts +120 -0
  51. package/src/editor/vocabulary.ts +126 -0
  52. package/src/index.ts +52 -0
  53. package/src/schema/contract.ts +76 -0
  54. package/src/schema/extensions.ts +120 -0
  55. package/src/schema/image.ts +44 -0
  56. package/src/schema/index.ts +29 -0
  57. package/src/schema/slashCommand.ts +181 -0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * `@medway-ui/notes-core/schema` — the Tiptap half, behind its own subpath so
3
+ * that importing the document model never pulls Tiptap in.
4
+ *
5
+ * `Editor`, `generateHTML` and `generateJSON` are re-exported to guarantee a
6
+ * single ProseMirror copy, and must always be passed the exact array
7
+ * `buildExtensions()` returns.
8
+ */
9
+ export { Editor, generateHTML, generateJSON } from '@tiptap/core';
10
+ export { buildExtensions } from './extensions.js';
11
+ // Re-exported so hosts can build custom extension lists, and — less obviously
12
+ // — so `./image`'s `declare module '@tiptap/core'` augmentation (the
13
+ // `setImage` command) ships: `buildExtensions`'s signature never mentions
14
+ // `Image`, so declaration emission would otherwise drop the import.
15
+ export { Image } from './image.js';
16
+ export { createSlashCommand } from './slashCommand.js';
17
+ export { MARK_TYPES, NODE_TYPES, assertSchemaContract, } from './contract.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIlE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,8EAA8E;AAC9E,qEAAqE;AACrE,0EAA0E;AAC1E,oEAAoE;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EACL,UAAU,EACV,UAAU,EACV,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { Extension, type Editor } from '@tiptap/core';
2
+ import type { SlashCommandId, SlashMenuState } from '../editor/vocabulary.js';
3
+ export type SlashCommandController = {
4
+ /** Add this to the extension list — see `buildExtensions`. */
5
+ extension: Extension;
6
+ /** Runs the command the host picked, if the menu is still open. */
7
+ run: (commandId: SlashCommandId) => boolean;
8
+ dismiss: (editor: Editor) => void;
9
+ /** Re-publishes the caret position, e.g. after the document scrolls. */
10
+ refreshCaret: () => void;
11
+ };
12
+ /**
13
+ * The `/` menu's detection half: owns only *when* `/` is active, *what* was
14
+ * typed, *where* the caret is, and the range to replace. The host draws the
15
+ * menu and answers with `run`, which removes the typed `/query` in the same
16
+ * transaction as the command it applies.
17
+ */
18
+ export declare const createSlashCommand: (onChange: (state: SlashMenuState) => void) => SlashCommandController;
19
+ //# sourceMappingURL=slashCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slashCommand.d.ts","sourceRoot":"","sources":["../../src/schema/slashCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,MAAM,EAAc,MAAM,cAAc,CAAC;AAOlE,OAAO,KAAK,EAEV,cAAc,EACd,cAAc,EACf,MAAM,yBAAyB,CAAC;AA2EjC,MAAM,MAAM,sBAAsB,GAAG;IACnC,8DAA8D;IAC9D,SAAS,EAAE,SAAS,CAAC;IACrB,mEAAmE;IACnE,GAAG,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,OAAO,CAAC;IAC5C,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,wEAAwE;IACxE,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,KACxC,sBA4EF,CAAC"}
@@ -0,0 +1,146 @@
1
+ import { Extension } from '@tiptap/core';
2
+ import { PluginKey } from '@tiptap/pm/state';
3
+ import Suggestion, { exitSuggestion, } from '@tiptap/suggestion';
4
+ import { filterSlashCommands } from '../editor/slashCommands.js';
5
+ const SlashPluginKey = new PluginKey('medwaySlashCommand');
6
+ const EMPTY = {
7
+ active: false,
8
+ query: '',
9
+ commandIds: [],
10
+ caret: null,
11
+ };
12
+ const toCaretRect = (props) => {
13
+ const rect = props.clientRect?.() ?? props.decorationNode?.getBoundingClientRect();
14
+ if (!rect)
15
+ return null;
16
+ return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };
17
+ };
18
+ const applyCommand = (editor, range, id) => {
19
+ // Deleting the typed range and applying the block happen in one chain so a
20
+ // single undo takes the student back to the text they typed.
21
+ const chain = editor.chain().focus().deleteRange(range);
22
+ switch (id) {
23
+ case 'paragraph':
24
+ chain.setParagraph().run();
25
+ return;
26
+ case 'heading1':
27
+ chain.setNode('heading', { level: 1 }).run();
28
+ return;
29
+ case 'heading2':
30
+ chain.setNode('heading', { level: 2 }).run();
31
+ return;
32
+ case 'heading3':
33
+ chain.setNode('heading', { level: 3 }).run();
34
+ return;
35
+ case 'bulletList':
36
+ chain.toggleBulletList().run();
37
+ return;
38
+ case 'orderedList':
39
+ chain.toggleOrderedList().run();
40
+ return;
41
+ case 'taskList':
42
+ chain.toggleTaskList().run();
43
+ return;
44
+ case 'blockquote':
45
+ chain.setBlockquote().run();
46
+ return;
47
+ case 'codeBlock':
48
+ chain.setCodeBlock().run();
49
+ return;
50
+ case 'horizontalRule':
51
+ chain.setHorizontalRule().run();
52
+ return;
53
+ case 'image':
54
+ // Only clears the typed `/query`: picking and uploading a file is host
55
+ // UI (`NoteEditor`'s `onImageUpload`), which inserts the node itself.
56
+ chain.run();
57
+ return;
58
+ default: {
59
+ // Exhaustiveness check: a new `SlashCommandId` without a case above stops
60
+ // this file compiling. Still a runtime no-op rather than a throw — `id`
61
+ // crosses the WebView bridge, so an out-of-contract value should degrade
62
+ // gracefully instead of crashing the editor.
63
+ const _exhaustive = id;
64
+ void _exhaustive;
65
+ chain.run();
66
+ }
67
+ }
68
+ };
69
+ /**
70
+ * The `/` menu's detection half: owns only *when* `/` is active, *what* was
71
+ * typed, *where* the caret is, and the range to replace. The host draws the
72
+ * menu and answers with `run`, which removes the typed `/query` in the same
73
+ * transaction as the command it applies.
74
+ */
75
+ export const createSlashCommand = (onChange) => {
76
+ let active = null;
77
+ const publish = (props) => {
78
+ if (!props) {
79
+ onChange(EMPTY);
80
+ return;
81
+ }
82
+ onChange({
83
+ active: true,
84
+ query: props.query,
85
+ commandIds: props.items,
86
+ caret: toCaretRect(props),
87
+ });
88
+ };
89
+ const extension = Extension.create({
90
+ name: 'medwaySlashCommand',
91
+ addProseMirrorPlugins() {
92
+ return [
93
+ Suggestion({
94
+ editor: this.editor,
95
+ pluginKey: SlashPluginKey,
96
+ char: '/',
97
+ decorationClass: 'medway-slash',
98
+ // A `/` inside a code block is code, not a command.
99
+ allow: ({ state, range }) => state.doc.resolve(range.from).parent.type.name !== 'codeBlock',
100
+ items: ({ query }) => filterSlashCommands(query),
101
+ command: ({ editor, range, props }) => applyCommand(editor, range, props),
102
+ render: () => ({
103
+ onStart: (props) => {
104
+ active = props;
105
+ publish(props);
106
+ },
107
+ onUpdate: (props) => {
108
+ active = props;
109
+ publish(props);
110
+ },
111
+ onExit: () => {
112
+ active = null;
113
+ publish(null);
114
+ },
115
+ onKeyDown: ({ event }) => {
116
+ if (event.key !== 'Escape')
117
+ return false;
118
+ active = null;
119
+ publish(null);
120
+ return true;
121
+ },
122
+ }),
123
+ }),
124
+ ];
125
+ },
126
+ });
127
+ return {
128
+ extension,
129
+ run: (commandId) => {
130
+ if (!active || !active.items.includes(commandId))
131
+ return false;
132
+ active.command(commandId);
133
+ return true;
134
+ },
135
+ dismiss: (editor) => {
136
+ if (!active)
137
+ return;
138
+ exitSuggestion(editor.view, SlashPluginKey);
139
+ },
140
+ refreshCaret: () => {
141
+ if (active)
142
+ publish(active);
143
+ },
144
+ };
145
+ };
146
+ //# sourceMappingURL=slashCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slashCommand.js","sourceRoot":"","sources":["../../src/schema/slashCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA2B,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,UAAU,EAAE,EACjB,cAAc,GAEf,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAI3D,MAAM,KAAK,GAAmB;IAC5B,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,EAAE;IACT,UAAU,EAAE,EAAE;IACd,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAiB,EAA0B,EAAE;IAChE,MAAM,IAAI,GACR,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC/E,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,KAAY,EAAE,EAAkB,EAAE,EAAE;IACxE,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAExD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,WAAW;YACd,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO;QACT,KAAK,UAAU;YACb,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7C,OAAO;QACT,KAAK,UAAU;YACb,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7C,OAAO;QACT,KAAK,UAAU;YACb,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7C,OAAO;QACT,KAAK,YAAY;YACf,KAAK,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,CAAC;YAC/B,OAAO;QACT,KAAK,aAAa;YAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC;YAChC,OAAO;QACT,KAAK,UAAU;YACb,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC;YAC7B,OAAO;QACT,KAAK,YAAY;YACf,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,CAAC;YAC5B,OAAO;QACT,KAAK,WAAW;YACd,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO;QACT,KAAK,gBAAgB;YACnB,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,CAAC;YAChC,OAAO;QACT,KAAK,OAAO;YACV,uEAAuE;YACvE,sEAAsE;YACtE,KAAK,CAAC,GAAG,EAAE,CAAC;YACZ,OAAO;QACT,OAAO,CAAC,CAAC,CAAC;YACR,0EAA0E;YAC1E,wEAAwE;YACxE,yEAAyE;YACzE,6CAA6C;YAC7C,MAAM,WAAW,GAAU,EAAE,CAAC;YAC9B,KAAK,WAAW,CAAC;YACjB,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAYF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,QAAyC,EACjB,EAAE;IAC1B,IAAI,MAAM,GAAsB,IAAI,CAAC;IAErC,MAAM,OAAO,GAAG,CAAC,KAAwB,EAAE,EAAE;QAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,QAAQ,CAAC;YACP,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;QACjC,IAAI,EAAE,oBAAoB;QAE1B,qBAAqB;YACnB,OAAO;gBACL,UAAU,CAAiC;oBACzC,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,SAAS,EAAE,cAAc;oBACzB,IAAI,EAAE,GAAG;oBACT,eAAe,EAAE,cAAc;oBAC/B,oDAAoD;oBACpD,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAC1B,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW;oBAChE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC;oBAChD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CACpC,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;oBACpC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;wBACb,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;4BACjB,MAAM,GAAG,KAAK,CAAC;4BACf,OAAO,CAAC,KAAK,CAAC,CAAC;wBACjB,CAAC;wBACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;4BAClB,MAAM,GAAG,KAAK,CAAC;4BACf,OAAO,CAAC,KAAK,CAAC,CAAC;wBACjB,CAAC;wBACD,MAAM,EAAE,GAAG,EAAE;4BACX,MAAM,GAAG,IAAI,CAAC;4BACd,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChB,CAAC;wBACD,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;4BACvB,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ;gCAAE,OAAO,KAAK,CAAC;4BAEzC,MAAM,GAAG,IAAI,CAAC;4BACd,OAAO,CAAC,IAAI,CAAC,CAAC;4BACd,OAAO,IAAI,CAAC;wBACd,CAAC;qBACF,CAAC;iBACH,CAAC;aACH,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;QACT,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE;YACjB,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAAE,OAAO,KAAK,CAAC;YAE/D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;YAClB,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9C,CAAC;QACD,YAAY,EAAE,GAAG,EAAE;YACjB,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,134 @@
1
+ {
2
+ "name": "@medway-ui/notes-core",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "description": "Modelo de documento, schema Tiptap e vocabulário do editor de anotações — compartilhado entre o app mobile e a web.",
6
+ "license": "MIT",
7
+ "sideEffects": false,
8
+ "type": "module",
9
+ "main": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "./schema": {
17
+ "types": "./dist/schema/index.d.ts",
18
+ "default": "./dist/schema/index.js"
19
+ },
20
+ "./package.json": "./package.json"
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "src",
25
+ "README.md"
26
+ ],
27
+ "scripts": {
28
+ "build": "tsc -p tsconfig.build.json",
29
+ "typecheck": "tsc -p tsconfig.json --noEmit",
30
+ "prepublishOnly": "npm run build"
31
+ },
32
+ "peerDependencies": {
33
+ "@tiptap/core": "^3.6.5",
34
+ "@tiptap/extension-blockquote": "^3.6.5",
35
+ "@tiptap/extension-bold": "^3.6.5",
36
+ "@tiptap/extension-code": "^3.6.5",
37
+ "@tiptap/extension-code-block": "^3.6.5",
38
+ "@tiptap/extension-document": "^3.6.5",
39
+ "@tiptap/extension-hard-break": "^3.6.5",
40
+ "@tiptap/extension-heading": "^3.6.5",
41
+ "@tiptap/extension-horizontal-rule": "^3.6.5",
42
+ "@tiptap/extension-italic": "^3.6.5",
43
+ "@tiptap/extension-link": "^3.6.5",
44
+ "@tiptap/extension-list": "^3.6.5",
45
+ "@tiptap/extension-paragraph": "^3.6.5",
46
+ "@tiptap/extension-strike": "^3.6.5",
47
+ "@tiptap/extension-text": "^3.6.5",
48
+ "@tiptap/extension-underline": "^3.6.5",
49
+ "@tiptap/extensions": "^3.6.5",
50
+ "@tiptap/pm": "^3.6.5",
51
+ "@tiptap/suggestion": "^3.6.5"
52
+ },
53
+ "peerDependenciesMeta": {
54
+ "@tiptap/core": {
55
+ "optional": true
56
+ },
57
+ "@tiptap/extension-blockquote": {
58
+ "optional": true
59
+ },
60
+ "@tiptap/extension-bold": {
61
+ "optional": true
62
+ },
63
+ "@tiptap/extension-code": {
64
+ "optional": true
65
+ },
66
+ "@tiptap/extension-code-block": {
67
+ "optional": true
68
+ },
69
+ "@tiptap/extension-document": {
70
+ "optional": true
71
+ },
72
+ "@tiptap/extension-hard-break": {
73
+ "optional": true
74
+ },
75
+ "@tiptap/extension-heading": {
76
+ "optional": true
77
+ },
78
+ "@tiptap/extension-horizontal-rule": {
79
+ "optional": true
80
+ },
81
+ "@tiptap/extension-italic": {
82
+ "optional": true
83
+ },
84
+ "@tiptap/extension-link": {
85
+ "optional": true
86
+ },
87
+ "@tiptap/extension-list": {
88
+ "optional": true
89
+ },
90
+ "@tiptap/extension-paragraph": {
91
+ "optional": true
92
+ },
93
+ "@tiptap/extension-strike": {
94
+ "optional": true
95
+ },
96
+ "@tiptap/extension-text": {
97
+ "optional": true
98
+ },
99
+ "@tiptap/extension-underline": {
100
+ "optional": true
101
+ },
102
+ "@tiptap/extensions": {
103
+ "optional": true
104
+ },
105
+ "@tiptap/pm": {
106
+ "optional": true
107
+ },
108
+ "@tiptap/suggestion": {
109
+ "optional": true
110
+ }
111
+ },
112
+ "devDependencies": {
113
+ "@tiptap/core": "^3.6.5",
114
+ "@tiptap/extension-blockquote": "^3.6.5",
115
+ "@tiptap/extension-bold": "^3.6.5",
116
+ "@tiptap/extension-code": "^3.6.5",
117
+ "@tiptap/extension-code-block": "^3.6.5",
118
+ "@tiptap/extension-document": "^3.6.5",
119
+ "@tiptap/extension-hard-break": "^3.6.5",
120
+ "@tiptap/extension-heading": "^3.6.5",
121
+ "@tiptap/extension-horizontal-rule": "^3.6.5",
122
+ "@tiptap/extension-italic": "^3.6.5",
123
+ "@tiptap/extension-link": "^3.6.5",
124
+ "@tiptap/extension-list": "^3.6.5",
125
+ "@tiptap/extension-paragraph": "^3.6.5",
126
+ "@tiptap/extension-strike": "^3.6.5",
127
+ "@tiptap/extension-text": "^3.6.5",
128
+ "@tiptap/extension-underline": "^3.6.5",
129
+ "@tiptap/extensions": "^3.6.5",
130
+ "@tiptap/pm": "^3.6.5",
131
+ "@tiptap/suggestion": "^3.6.5",
132
+ "typescript": "~5.8.3"
133
+ }
134
+ }