From 09738456080a8925db53b5a23a71c63037e9f390 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 9 Sep 2020 17:10:29 +0200 Subject: [PATCH] fix options type --- packages/core/src/Extension.ts | 14 +++++++++----- packages/core/src/Mark.ts | 14 +++++++++----- packages/core/src/Node.ts | 16 ++++++++++------ 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/packages/core/src/Extension.ts b/packages/core/src/Extension.ts index cf51edca..bb1114ec 100644 --- a/packages/core/src/Extension.ts +++ b/packages/core/src/Extension.ts @@ -60,15 +60,15 @@ type AnyObject = { type NoInfer = [T][T extends any ? 0 : never] -export interface ExtensionCallback { +export interface ExtensionCallback { name: string editor: Editor - options: any + options: Options } -export interface ExtensionExtends { +export interface ExtensionExtends { name: string - options: AnyObject + options: Options commands: (params: Callback) => CommandSpec inputRules: (params: Callback) => any[] pasteRules: (params: Callback) => any[] @@ -78,7 +78,11 @@ export interface ExtensionExtends { plugins: (params: Callback) => Plugin[] } -export default class Extension = ExtensionExtends> { +export default class Extension< + Options = {}, + Callback = ExtensionCallback, + Extends extends ExtensionExtends = ExtensionExtends +> { type = 'extension' config: any = {} configs: { diff --git a/packages/core/src/Mark.ts b/packages/core/src/Mark.ts index dd7cdc15..ccdc2851 100644 --- a/packages/core/src/Mark.ts +++ b/packages/core/src/Mark.ts @@ -2,22 +2,26 @@ import { MarkSpec, MarkType } from 'prosemirror-model' import Extension, { ExtensionCallback, ExtensionExtends } from './Extension' import { Editor } from './Editor' -interface Callback { +interface MarkCallback { name: string editor: Editor - options: any + options: Options type: MarkType } -export interface MarkExtends extends ExtensionExtends { +export interface MarkExtends extends ExtensionExtends { topMark: boolean schema: (params: Callback) => MarkSpec } -export default class Mark extends Extension { +export default class Mark< + Options = {}, + Callback = MarkCallback, + Extends extends MarkExtends = MarkExtends +> extends Extension { type = 'mark' - public schema(value: MarkExtends['schema']) { + public schema(value: Extends['schema']) { this.storeConfig('schema', value, 'overwrite') return this } diff --git a/packages/core/src/Node.ts b/packages/core/src/Node.ts index 8b85e363..19eceedc 100644 --- a/packages/core/src/Node.ts +++ b/packages/core/src/Node.ts @@ -2,27 +2,31 @@ import { NodeSpec, NodeType } from 'prosemirror-model' import Extension, { ExtensionCallback, ExtensionExtends } from './Extension' import { Editor } from './Editor' -interface Callback { +interface NodeCallback { name: string editor: Editor - options: any + options: Options type: NodeType } -export interface NodeExtends extends ExtensionExtends { +export interface NodeExtends extends ExtensionExtends { topNode: boolean schema: (params: Callback) => NodeSpec } -export default class Node extends Extension { +export default class Node< + Options = {}, + Callback = NodeCallback, + Extends extends NodeExtends = NodeExtends +> extends Extension { type = 'node' - public topNode(value: NodeExtends['topNode'] = true) { + public topNode(value: Extends['topNode'] = true) { this.storeConfig('topNode', value, 'overwrite') return this } - public schema(value: NodeExtends['schema']) { + public schema(value: Extends['schema']) { this.storeConfig('schema', value, 'overwrite') return this }