@tiptap/core 2.7.2 → 2.7.3

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.
@@ -1,5 +1,6 @@
1
1
  import { Schema } from '@tiptap/pm/model';
2
2
  import { Plugin } from '@tiptap/pm/state';
3
+ import { NodeViewConstructor } from '@tiptap/pm/view';
3
4
  import type { Editor } from './Editor.js';
4
5
  import { Extensions, RawCommands } from './types.js';
5
6
  export declare class ExtensionManager {
@@ -46,7 +47,7 @@ export declare class ExtensionManager {
46
47
  * Get all node views from the extensions.
47
48
  * @returns An object with all node views where the key is the node name and the value is the node view function
48
49
  */
49
- get nodeViews(): any;
50
+ get nodeViews(): Record<string, NodeViewConstructor>;
50
51
  /**
51
52
  * Go through all extensions, create extension storages & setup marks
52
53
  * & bind editor event listener.
@@ -189,18 +189,15 @@ export type ValuesOf<T> = T[keyof T];
189
189
  export type KeysWithTypeOf<T, Type> = {
190
190
  [P in keyof T]: T[P] extends Type ? P : never;
191
191
  }[keyof T];
192
- export type Simplify<T> = {
193
- [KeyType in keyof T]: T[KeyType];
194
- } & {};
195
192
  export type DecorationWithType = Decoration & {
196
193
  type: NodeType;
197
194
  };
198
- export type NodeViewProps = Simplify<Omit<NodeViewRendererProps, 'decorations'> & {
195
+ export interface NodeViewProps extends NodeViewRendererProps {
199
196
  decorations: readonly DecorationWithType[];
200
197
  selected: boolean;
201
198
  updateAttributes: (attributes: Record<string, any>) => void;
202
199
  deleteNode: () => void;
203
- }>;
200
+ }
204
201
  export interface NodeViewRendererOptions {
205
202
  stopEvent: ((props: {
206
203
  event: Event;
@@ -213,7 +210,7 @@ export interface NodeViewRendererOptions {
213
210
  }) => boolean) | null;
214
211
  contentDOMElementTag: string;
215
212
  }
216
- export type NodeViewRendererProps = {
213
+ export interface NodeViewRendererProps {
217
214
  node: Parameters<NodeViewConstructor>[0];
218
215
  view: Parameters<NodeViewConstructor>[1];
219
216
  getPos: () => number;
@@ -222,7 +219,7 @@ export type NodeViewRendererProps = {
222
219
  editor: Editor;
223
220
  extension: Node;
224
221
  HTMLAttributes: Record<string, any>;
225
- };
222
+ }
226
223
  export type NodeViewRenderer = (props: NodeViewRendererProps) => NodeView;
227
224
  export type AnyCommands = Record<string, (...args: any[]) => Command>;
228
225
  export type UnionCommands<T = Command> = UnionToIntersection<ValuesOf<Pick<Commands<T>, KeysWithTypeOf<Commands<T>, {}>>>>;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tiptap/core",
3
3
  "description": "headless rich text editor",
4
- "version": "2.7.2",
4
+ "version": "2.7.3",
5
5
  "homepage": "https://tiptap.dev",
6
6
  "keywords": [
7
7
  "tiptap",
@@ -32,7 +32,7 @@
32
32
  "dist"
33
33
  ],
34
34
  "devDependencies": {
35
- "@tiptap/pm": "^2.7.2"
35
+ "@tiptap/pm": "^2.7.3"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@tiptap/pm": "^2.7.0"
@@ -260,7 +260,7 @@ export class ExtensionManager {
260
260
  * Get all node views from the extensions.
261
261
  * @returns An object with all node views where the key is the node name and the value is the node view function
262
262
  */
263
- get nodeViews() {
263
+ get nodeViews(): Record<string, NodeViewConstructor> {
264
264
  const { editor } = this
265
265
  const { nodeExtensions } = splitExtensions(this.extensions)
266
266
 
@@ -8,6 +8,9 @@ export function getRenderedAttributes(
8
8
  extensionAttributes: ExtensionAttribute[],
9
9
  ): Record<string, any> {
10
10
  return extensionAttributes
11
+ .filter(
12
+ attribute => attribute.type === nodeOrMark.type.name,
13
+ )
11
14
  .filter(item => item.attribute.rendered)
12
15
  .map(item => {
13
16
  if (!item.attribute.renderHTML) {
package/src/types.ts CHANGED
@@ -101,7 +101,19 @@ export interface EditorOptions {
101
101
  *
102
102
  * @default true
103
103
  */
104
- enableCoreExtensions?: boolean | Partial<Record<'editable' | 'clipboardTextSerializer' | 'commands' | 'focusEvents' | 'keymap' | 'tabindex', false>>;
104
+ enableCoreExtensions?:
105
+ | boolean
106
+ | Partial<
107
+ Record<
108
+ | 'editable'
109
+ | 'clipboardTextSerializer'
110
+ | 'commands'
111
+ | 'focusEvents'
112
+ | 'keymap'
113
+ | 'tabindex',
114
+ false
115
+ >
116
+ >;
105
117
  /**
106
118
  * If `true`, the editor will check the content for errors on initialization.
107
119
  * Emitting the `contentError` event if the content is invalid.
@@ -122,8 +134,8 @@ export interface EditorOptions {
122
134
  onFocus: (props: EditorEvents['focus']) => void;
123
135
  onBlur: (props: EditorEvents['blur']) => void;
124
136
  onDestroy: (props: EditorEvents['destroy']) => void;
125
- onPaste: (e: ClipboardEvent, slice: Slice) => void
126
- onDrop: (e: DragEvent, slice: Slice, moved: boolean) => void
137
+ onPaste: (e: ClipboardEvent, slice: Slice) => void;
138
+ onDrop: (e: DragEvent, slice: Slice, moved: boolean) => void;
127
139
  }
128
140
 
129
141
  export type HTMLContent = string;
@@ -208,21 +220,17 @@ export type ValuesOf<T> = T[keyof T];
208
220
 
209
221
  export type KeysWithTypeOf<T, Type> = { [P in keyof T]: T[P] extends Type ? P : never }[keyof T];
210
222
 
211
- export type Simplify<T> = { [KeyType in keyof T]: T[KeyType] } & {};
212
-
213
223
  export type DecorationWithType = Decoration & {
214
224
  type: NodeType;
215
225
  };
216
226
 
217
- export type NodeViewProps = Simplify<
218
- Omit<NodeViewRendererProps, 'decorations'> & {
219
- // TODO this type is not technically correct, but it's the best we can do for now since prosemirror doesn't expose the type of decorations
220
- decorations: readonly DecorationWithType[];
221
- selected: boolean;
222
- updateAttributes: (attributes: Record<string, any>) => void;
223
- deleteNode: () => void;
224
- }
225
- >;
227
+ export interface NodeViewProps extends NodeViewRendererProps {
228
+ // TODO this type is not technically correct, but it's the best we can do for now since prosemirror doesn't expose the type of decorations
229
+ decorations: readonly DecorationWithType[];
230
+ selected: boolean;
231
+ updateAttributes: (attributes: Record<string, any>) => void;
232
+ deleteNode: () => void;
233
+ }
226
234
 
227
235
  export interface NodeViewRendererOptions {
228
236
  stopEvent: ((props: { event: Event }) => boolean) | null;
@@ -232,7 +240,7 @@ export interface NodeViewRendererOptions {
232
240
  contentDOMElementTag: string;
233
241
  }
234
242
 
235
- export type NodeViewRendererProps = {
243
+ export interface NodeViewRendererProps {
236
244
  // pass-through from prosemirror
237
245
  node: Parameters<NodeViewConstructor>[0];
238
246
  view: Parameters<NodeViewConstructor>[1];
@@ -243,7 +251,7 @@ export type NodeViewRendererProps = {
243
251
  editor: Editor;
244
252
  extension: Node;
245
253
  HTMLAttributes: Record<string, any>;
246
- };
254
+ }
247
255
 
248
256
  export type NodeViewRenderer = (props: NodeViewRendererProps) => NodeView;
249
257