@lexion-rte/core 0.1.1 → 0.1.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @lexion-rte/core
2
2
 
3
+ ## 0.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - Release `0.1.3` with framework-native adapter samples and documentation alignment.
8
+
9
+ - Add runnable sample apps for each adapter package in `apps/*-sample`.
10
+ - Ensure adapter and extension docs use real framework code style (React JSX, Vue SFC, Vue 2 Options API, Angular component lifecycle, Svelte action/component usage, Solid JSX).
11
+ - Update guides and task tracking to reflect the full adapter sample matrix and framework-accurate examples.
12
+
13
+ ## 0.1.2
14
+
15
+ ### Patch Changes
16
+
17
+ - Refresh package metadata links and expand package-level README documentation.
18
+
3
19
  ## 0.1.1
4
20
 
5
21
  ### Patch Changes
package/README.md CHANGED
@@ -1,18 +1,31 @@
1
1
  # @lexion-rte/core
2
2
 
3
- Headless editor runtime for Lexion.
3
+ Headless editor runtime for the Lexion platform.
4
4
 
5
- ## What It Is
5
+ ## Overview
6
6
 
7
- `@lexion-rte/core` provides the editor state, command execution, extension lifecycle, and JSON document APIs.
7
+ `@lexion-rte/core` provides:
8
+
9
+ - editor state and schema management
10
+ - command registration/execution
11
+ - extension lifecycle hooks (`onCreate`, `onDestroy`)
12
+ - JSON document input/output
13
+
14
+ This package does not render UI by itself. Pair it with `@lexion-rte/extensions` and optionally an adapter package.
8
15
 
9
16
  ## Install
10
17
 
18
+ ```bash
19
+ pnpm add @lexion-rte/core
20
+ ```
21
+
22
+ Typical pairing:
23
+
11
24
  ```bash
12
25
  pnpm add @lexion-rte/core @lexion-rte/extensions
13
26
  ```
14
27
 
15
- ## Usage
28
+ ## Quick Start
16
29
 
17
30
  ```ts
18
31
  import { LexionEditor } from "@lexion-rte/core";
@@ -23,7 +36,77 @@ const editor = new LexionEditor({
23
36
  });
24
37
 
25
38
  editor.execute(starterKitCommandNames.toggleBold);
26
- const json = editor.getJSON();
27
- console.log(json.type);
39
+ console.log(editor.getJSON());
28
40
  ```
29
41
 
42
+ ## Editor Options
43
+
44
+ `LexionEditor` accepts:
45
+
46
+ - `schema?: Schema`
47
+ - `doc?: JSONDocument`
48
+ - `extensions?: LexionExtension[]`
49
+ - `plugins?: LexionPlugin[]` (alias for extensions)
50
+ - `commands?: CommandMap`
51
+
52
+ ## Core API
53
+
54
+ Main instance members:
55
+
56
+ - `schema`
57
+ - `state`
58
+ - `doc`
59
+ - `getJSON()`
60
+ - `setJSON(document)`
61
+ - `dispatchTransaction(transaction)`
62
+ - `execute(command, ...args)`
63
+ - `registerCommand(name, handler)`
64
+ - `unregisterCommand(name)`
65
+ - `use(extension)`
66
+ - `removePlugin(key)`
67
+ - `destroy()`
68
+
69
+ ## Custom Command Example
70
+
71
+ ```ts
72
+ import { LexionEditor } from "@lexion-rte/core";
73
+ import { starterKitExtension } from "@lexion-rte/extensions";
74
+
75
+ const editor = new LexionEditor({ extensions: [starterKitExtension] });
76
+
77
+ editor.registerCommand("insertTimestamp", ({ state, dispatch }) => {
78
+ const { from, to } = state.selection;
79
+ dispatch(state.tr.insertText(new Date().toISOString(), from, to));
80
+ return true;
81
+ });
82
+
83
+ editor.execute("insertTimestamp");
84
+ ```
85
+
86
+ ## Extension Lifecycle Example
87
+
88
+ ```ts
89
+ import type { LexionExtension } from "@lexion-rte/core";
90
+
91
+ const auditExtension: LexionExtension = {
92
+ key: "audit",
93
+ onCreate: ({ editor }) => {
94
+ console.log("created", editor.getJSON());
95
+ },
96
+ onDestroy: () => {
97
+ console.log("destroyed");
98
+ }
99
+ };
100
+ ```
101
+
102
+ ## Error Behavior
103
+
104
+ - Executing an unknown command throws `Unknown command: <name>`.
105
+ - Using an editor after `destroy()` throws an error.
106
+ - Registering duplicate command names throws.
107
+
108
+ ## Related Packages
109
+
110
+ - `@lexion-rte/extensions` for starter-kit, AI, and collaboration features
111
+ - `@lexion-rte/tools` for HTML/text conversions
112
+ - adapter packages (`web`, `react`, `vue`, etc.) for UI integration
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,KAAK,EACV,cAAc,EAGd,YAAY,EACZ,YAAY,IAAI,oBAAoB,EACpC,mBAAmB,EACnB,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAa,YAAW,oBAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IACxE,OAAO,CAAC,SAAS,CAAU;gBAER,OAAO,GAAE,mBAAwB;IAmBpD,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED,IAAW,GAAG,IAAI,eAAe,CAEhC;IAEM,OAAO,IAAI,YAAY;IAIvB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMrC,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAKnD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO;IAmB9D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAQ5D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,GAAG,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAOrC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmB/B,OAAO,IAAI,IAAI;IAgBtB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,gBAAgB;CAKzB"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,KAAK,EACV,cAAc,EAGd,YAAY,EACZ,YAAY,IAAI,oBAAoB,EACpC,mBAAmB,EACnB,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAa,YAAW,oBAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IACxE,OAAO,CAAC,SAAS,CAAU;gBAER,OAAO,GAAE,mBAAwB;IAmBpD,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED,IAAW,GAAG,IAAI,eAAe,CAEhC;IAEM,OAAO,IAAI,YAAY;IAIvB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMrC,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAKnD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO;IAmB9D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAQ5D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,GAAG,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAmBrC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmB/B,OAAO,IAAI,IAAI;IAgBtB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,gBAAgB;CAKzB"}
package/dist/editor.js CHANGED
@@ -73,9 +73,21 @@ export class LexionEditor {
73
73
  }
74
74
  use(extension) {
75
75
  this.assertNotDestroyed();
76
+ const previousState = this._state;
76
77
  this.addExtension(extension);
77
- this._state = this.createState(this._state.doc);
78
- this.runExtensionOnCreate([extension]);
78
+ try {
79
+ this._state = this.createState(this._state.doc);
80
+ this.runExtensionOnCreate([extension]);
81
+ }
82
+ catch (error) {
83
+ for (const commandName of this.extensionCommandsByKey.get(extension.key) ?? []) {
84
+ this.commandMap.delete(commandName);
85
+ }
86
+ this.extensionCommandsByKey.delete(extension.key);
87
+ this.extensionsByKey.delete(extension.key);
88
+ this._state = previousState;
89
+ throw error;
90
+ }
79
91
  }
80
92
  removePlugin(key) {
81
93
  this.assertNotDestroyed();
@@ -154,15 +166,16 @@ export class LexionEditor {
154
166
  if (this.extensionsByKey.has(extension.key)) {
155
167
  throw new Error(`Extension already registered: ${extension.key}`);
156
168
  }
157
- this.extensionsByKey.set(extension.key, extension);
158
- const commandNames = [];
159
169
  const extensionCommands = extension.commands?.({ schema: this._schema }) ?? {};
160
- for (const [name, handler] of Object.entries(extensionCommands)) {
170
+ const commandNames = Object.keys(extensionCommands);
171
+ for (const name of commandNames) {
161
172
  if (this.commandMap.has(name)) {
162
173
  throw new Error(`Command already registered: ${name}`);
163
174
  }
175
+ }
176
+ this.extensionsByKey.set(extension.key, extension);
177
+ for (const [name, handler] of Object.entries(extensionCommands)) {
164
178
  this.commandMap.set(name, handler);
165
- commandNames.push(name);
166
179
  }
167
180
  this.extensionCommandsByKey.set(extension.key, commandNames);
168
181
  }
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lexion-rte/core",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Headless core runtime for the Lexion editor platform.",
5
5
  "private": false,
6
6
  "type": "module",
package/src/editor.ts CHANGED
@@ -102,9 +102,21 @@ export class LexionEditor implements LexionEditorContract {
102
102
 
103
103
  public use(extension: LexionExtension): void {
104
104
  this.assertNotDestroyed();
105
+ const previousState = this._state;
105
106
  this.addExtension(extension);
106
- this._state = this.createState(this._state.doc);
107
- this.runExtensionOnCreate([extension]);
107
+
108
+ try {
109
+ this._state = this.createState(this._state.doc);
110
+ this.runExtensionOnCreate([extension]);
111
+ } catch (error) {
112
+ for (const commandName of this.extensionCommandsByKey.get(extension.key) ?? []) {
113
+ this.commandMap.delete(commandName);
114
+ }
115
+ this.extensionCommandsByKey.delete(extension.key);
116
+ this.extensionsByKey.delete(extension.key);
117
+ this._state = previousState;
118
+ throw error;
119
+ }
108
120
  }
109
121
 
110
122
  public removePlugin(key: string): void {
@@ -206,16 +218,19 @@ export class LexionEditor implements LexionEditorContract {
206
218
  throw new Error(`Extension already registered: ${extension.key}`);
207
219
  }
208
220
 
209
- this.extensionsByKey.set(extension.key, extension);
210
- const commandNames: string[] = [];
211
221
  const extensionCommands = extension.commands?.({ schema: this._schema }) ?? {};
222
+ const commandNames = Object.keys(extensionCommands);
212
223
 
213
- for (const [name, handler] of Object.entries(extensionCommands)) {
224
+ for (const name of commandNames) {
214
225
  if (this.commandMap.has(name)) {
215
226
  throw new Error(`Command already registered: ${name}`);
216
227
  }
228
+ }
229
+
230
+ this.extensionsByKey.set(extension.key, extension);
231
+
232
+ for (const [name, handler] of Object.entries(extensionCommands)) {
217
233
  this.commandMap.set(name, handler);
218
- commandNames.push(name);
219
234
  }
220
235
 
221
236
  this.extensionCommandsByKey.set(extension.key, commandNames);
package/src/editor.d.ts DELETED
@@ -1,33 +0,0 @@
1
- import { Node as ProseMirrorNode, type Schema } from "prosemirror-model";
2
- import { EditorState, type Transaction } from "prosemirror-state";
3
- import type { CommandHandler, JSONDocument, LexionEditor as LexionEditorContract, LexionEditorOptions, LexionExtension } from "./types.js";
4
- export declare class LexionEditor implements LexionEditorContract {
5
- private readonly _schema;
6
- private _state;
7
- private readonly commandMap;
8
- private readonly extensionsByKey;
9
- private readonly extensionCommandsByKey;
10
- private destroyed;
11
- constructor(options?: LexionEditorOptions);
12
- get schema(): Schema;
13
- get state(): EditorState;
14
- get doc(): ProseMirrorNode;
15
- getJSON(): JSONDocument;
16
- setJSON(document: JSONDocument): void;
17
- dispatchTransaction(transaction: Transaction): void;
18
- execute(command: string, ...args: readonly unknown[]): boolean;
19
- registerCommand(name: string, command: CommandHandler): void;
20
- unregisterCommand(name: string): void;
21
- use(extension: LexionExtension): void;
22
- removePlugin(key: string): void;
23
- destroy(): void;
24
- private assertNotDestroyed;
25
- private resolveSchema;
26
- private parseDocument;
27
- private createState;
28
- private addExtension;
29
- private createPluginLifecycleContext;
30
- private runExtensionOnCreate;
31
- private registerCommands;
32
- }
33
- //# sourceMappingURL=editor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,KAAK,EACV,cAAc,EAGd,YAAY,EACZ,YAAY,IAAI,oBAAoB,EACpC,mBAAmB,EACnB,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAa,YAAW,oBAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IACxE,OAAO,CAAC,SAAS,CAAU;gBAER,OAAO,GAAE,mBAAwB;IAmBpD,IAAW,MAAM,IAAI,MAAM,CAE1B;IAED,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED,IAAW,GAAG,IAAI,eAAe,CAEhC;IAEM,OAAO,IAAI,YAAY;IAIvB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMrC,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAKnD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO;IAmB9D,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAQ5D,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKrC,GAAG,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAOrC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmB/B,OAAO,IAAI,IAAI;IAgBtB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,gBAAgB;CAKzB"}
package/src/editor.js DELETED
@@ -1,187 +0,0 @@
1
- import { Node as ProseMirrorNode } from "prosemirror-model";
2
- import { EditorState } from "prosemirror-state";
3
- import { coreSchema } from "./schema.js";
4
- export class LexionEditor {
5
- _schema;
6
- _state;
7
- commandMap;
8
- extensionsByKey;
9
- extensionCommandsByKey;
10
- destroyed;
11
- constructor(options = {}) {
12
- const optionsExtensions = options.extensions ?? options.plugins ?? [];
13
- this._schema = this.resolveSchema(options.schema, optionsExtensions);
14
- this.commandMap = new Map();
15
- this.extensionsByKey = new Map();
16
- this.extensionCommandsByKey = new Map();
17
- this.destroyed = false;
18
- this.registerCommands(options.commands ?? {});
19
- for (const extension of optionsExtensions) {
20
- this.addExtension(extension);
21
- }
22
- const initialDoc = options.doc ? this.parseDocument(options.doc) : undefined;
23
- this._state = this.createState(initialDoc);
24
- this.runExtensionOnCreate();
25
- }
26
- get schema() {
27
- return this._schema;
28
- }
29
- get state() {
30
- return this._state;
31
- }
32
- get doc() {
33
- return this._state.doc;
34
- }
35
- getJSON() {
36
- return this._state.doc.toJSON();
37
- }
38
- setJSON(document) {
39
- this.assertNotDestroyed();
40
- const nextDocument = this.parseDocument(document);
41
- this._state = this.createState(nextDocument);
42
- }
43
- dispatchTransaction(transaction) {
44
- this.assertNotDestroyed();
45
- this._state = this._state.apply(transaction);
46
- }
47
- execute(command, ...args) {
48
- this.assertNotDestroyed();
49
- const handler = this.commandMap.get(command);
50
- if (!handler) {
51
- throw new Error(`Unknown command: ${command}`);
52
- }
53
- const context = {
54
- editor: this,
55
- schema: this._schema,
56
- state: this._state,
57
- dispatch: (transaction) => {
58
- this.dispatchTransaction(transaction);
59
- }
60
- };
61
- return handler(context, ...args);
62
- }
63
- registerCommand(name, command) {
64
- this.assertNotDestroyed();
65
- if (this.commandMap.has(name)) {
66
- throw new Error(`Command already registered: ${name}`);
67
- }
68
- this.commandMap.set(name, command);
69
- }
70
- unregisterCommand(name) {
71
- this.assertNotDestroyed();
72
- this.commandMap.delete(name);
73
- }
74
- use(extension) {
75
- this.assertNotDestroyed();
76
- this.addExtension(extension);
77
- this._state = this.createState(this._state.doc);
78
- this.runExtensionOnCreate([extension]);
79
- }
80
- removePlugin(key) {
81
- this.assertNotDestroyed();
82
- const extension = this.extensionsByKey.get(key);
83
- if (!extension) {
84
- return;
85
- }
86
- const lifecycleContext = this.createPluginLifecycleContext();
87
- extension.onDestroy?.(lifecycleContext);
88
- for (const commandName of this.extensionCommandsByKey.get(key) ?? []) {
89
- this.commandMap.delete(commandName);
90
- }
91
- this.extensionCommandsByKey.delete(key);
92
- this.extensionsByKey.delete(key);
93
- this._state = this.createState(this._state.doc);
94
- }
95
- destroy() {
96
- if (this.destroyed) {
97
- return;
98
- }
99
- const lifecycleContext = this.createPluginLifecycleContext();
100
- for (const extension of [...this.extensionsByKey.values()].reverse()) {
101
- extension.onDestroy?.(lifecycleContext);
102
- }
103
- this.commandMap.clear();
104
- this.extensionCommandsByKey.clear();
105
- this.extensionsByKey.clear();
106
- this.destroyed = true;
107
- }
108
- assertNotDestroyed() {
109
- if (this.destroyed) {
110
- throw new Error("LexionEditor instance has been destroyed");
111
- }
112
- }
113
- resolveSchema(explicitSchema, extensions) {
114
- if (explicitSchema) {
115
- return explicitSchema;
116
- }
117
- const schemaCandidates = [];
118
- for (const extension of extensions) {
119
- if (!extension.schema) {
120
- continue;
121
- }
122
- const schema = typeof extension.schema === "function" ? extension.schema() : extension.schema;
123
- schemaCandidates.push(schema);
124
- }
125
- if (schemaCandidates.length > 1) {
126
- throw new Error("Only one schema provider extension is supported per editor instance");
127
- }
128
- return schemaCandidates[0] ?? coreSchema;
129
- }
130
- parseDocument(document) {
131
- return ProseMirrorNode.fromJSON(this._schema, document);
132
- }
133
- createState(document) {
134
- const pluginContext = { schema: this._schema };
135
- const plugins = [];
136
- for (const extension of this.extensionsByKey.values()) {
137
- for (const prosemirrorPlugin of extension.prosemirrorPlugins?.(pluginContext) ?? []) {
138
- plugins.push(prosemirrorPlugin);
139
- }
140
- }
141
- const config = document
142
- ? {
143
- schema: this._schema,
144
- doc: document,
145
- plugins
146
- }
147
- : {
148
- schema: this._schema,
149
- plugins
150
- };
151
- return EditorState.create(config);
152
- }
153
- addExtension(extension) {
154
- if (this.extensionsByKey.has(extension.key)) {
155
- throw new Error(`Extension already registered: ${extension.key}`);
156
- }
157
- this.extensionsByKey.set(extension.key, extension);
158
- const commandNames = [];
159
- const extensionCommands = extension.commands?.({ schema: this._schema }) ?? {};
160
- for (const [name, handler] of Object.entries(extensionCommands)) {
161
- if (this.commandMap.has(name)) {
162
- throw new Error(`Command already registered: ${name}`);
163
- }
164
- this.commandMap.set(name, handler);
165
- commandNames.push(name);
166
- }
167
- this.extensionCommandsByKey.set(extension.key, commandNames);
168
- }
169
- createPluginLifecycleContext() {
170
- return {
171
- editor: this,
172
- schema: this._schema
173
- };
174
- }
175
- runExtensionOnCreate(extensions) {
176
- const lifecycleContext = this.createPluginLifecycleContext();
177
- for (const extension of extensions ?? this.extensionsByKey.values()) {
178
- extension.onCreate?.(lifecycleContext);
179
- }
180
- }
181
- registerCommands(commands) {
182
- for (const [name, command] of Object.entries(commands)) {
183
- this.registerCommand(name, command);
184
- }
185
- }
186
- }
187
- //# sourceMappingURL=editor.js.map
package/src/editor.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,eAAe,EAAe,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAiC,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAazC,MAAM,OAAO,YAAY;IACN,OAAO,CAAS;IACzB,MAAM,CAAc;IACX,UAAU,CAA8B;IACxC,eAAe,CAA+B;IAC9C,sBAAsB,CAAiC;IAChE,SAAS,CAAU;IAE3B,YAAmB,UAA+B,EAAE;QAClD,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,sBAAsB,GAAG,IAAI,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAE9C,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;IACzB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAkB,CAAC;IAClD,CAAC;IAEM,OAAO,CAAC,QAAsB;QACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAEM,mBAAmB,CAAC,WAAwB;QACjD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,GAAG,IAAwB;QACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAyB;YACpC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,QAAQ,EAAE,CAAC,WAAwB,EAAQ,EAAE;gBAC3C,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;SACF,CAAC;QAEF,OAAO,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IAEM,eAAe,CAAC,IAAY,EAAE,OAAuB;QAC1D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAEM,iBAAiB,CAAC,IAAY;QACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEM,GAAG,CAAC,SAA0B;QACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACzC,CAAC;IAEM,YAAY,CAAC,GAAW;QAC7B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC7D,SAAS,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAExC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACrE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC7D,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACrE,SAAS,CAAC,SAAS,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAEO,aAAa,CACnB,cAAkC,EAClC,UAAsC;QAEtC,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GACV,OAAO,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;YACjF,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QAED,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;IAC3C,CAAC;IAEO,aAAa,CAAC,QAAsB;QAC1C,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAA8C,CAAC,CAAC;IAChG,CAAC;IAEO,WAAW,CAAC,QAA0B;QAC5C,MAAM,aAAa,GAAyB,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACrE,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YACtD,KAAK,MAAM,iBAAiB,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;gBACpF,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ;YACrB,CAAC,CAAC;gBACE,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,GAAG,EAAE,QAAQ;gBACb,OAAO;aACR;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,IAAI,CAAC,OAAO;gBACpB,OAAO;aACR,CAAC;QAEN,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,YAAY,CAAC,SAA0B;QAC7C,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;QAE/E,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAChE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;IAEO,4BAA4B;QAClC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,UAAuC;QAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAC7D,KAAK,MAAM,SAAS,IAAI,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YACpE,SAAS,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,QAAoB;QAC3C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF"}
package/src/index.d.ts DELETED
@@ -1,4 +0,0 @@
1
- export { LexionEditor } from "./editor.js";
2
- export { createCoreSchema, coreSchema } from "./schema.js";
3
- export type { CommandHandler, CommandMap, EditorCommandContext, JSONDocument, JSONArray, JSONObject, JSONPrimitive, JSONValue, LexionEditorOptions, LexionExtension, LexionPlugin, PluginFactoryContext, PluginLifecycleContext } from "./types.js";
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC3D,YAAY,EACV,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC"}
package/src/index.js DELETED
@@ -1,3 +0,0 @@
1
- export { LexionEditor } from "./editor.js";
2
- export { createCoreSchema, coreSchema } from "./schema.js";
3
- //# sourceMappingURL=index.js.map
package/src/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
package/src/schema.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { Schema } from "prosemirror-model";
2
- export declare const createCoreSchema: () => Schema;
3
- export declare const coreSchema: Schema<any, any>;
4
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgC,MAAM,mBAAmB,CAAC;AA8BzE,eAAO,MAAM,gBAAgB,QAAO,MAIhC,CAAC;AAEL,eAAO,MAAM,UAAU,kBAAqB,CAAC"}
package/src/schema.js DELETED
@@ -1,33 +0,0 @@
1
- import { Schema } from "prosemirror-model";
2
- const coreNodeSpecs = {
3
- doc: {
4
- content: "block+"
5
- },
6
- paragraph: {
7
- group: "block",
8
- content: "inline*",
9
- parseDOM: [{ tag: "p" }],
10
- toDOM() {
11
- return ["p", 0];
12
- }
13
- },
14
- text: {
15
- group: "inline"
16
- },
17
- hard_break: {
18
- inline: true,
19
- group: "inline",
20
- selectable: false,
21
- parseDOM: [{ tag: "br" }],
22
- toDOM() {
23
- return ["br"];
24
- }
25
- }
26
- };
27
- const coreMarkSpecs = {};
28
- export const createCoreSchema = () => new Schema({
29
- nodes: coreNodeSpecs,
30
- marks: coreMarkSpecs
31
- });
32
- export const coreSchema = createCoreSchema();
33
- //# sourceMappingURL=schema.js.map
package/src/schema.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAgC,MAAM,mBAAmB,CAAC;AAEzE,MAAM,aAAa,GAA6B;IAC9C,GAAG,EAAE;QACH,OAAO,EAAE,QAAQ;KAClB;IACD,SAAS,EAAE;QACT,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACxB,KAAK;YACH,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClB,CAAC;KACF;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,QAAQ;KAChB;IACD,UAAU,EAAE;QACV,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QACzB,KAAK;YACH,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;KACF;CACF,CAAC;AAEF,MAAM,aAAa,GAA6B,EAAE,CAAC;AAEnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAW,EAAE,CAC3C,IAAI,MAAM,CAAC;IACT,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,aAAa;CACrB,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC"}
package/src/types.d.ts DELETED
@@ -1,54 +0,0 @@
1
- import type { Node as ProseMirrorNode, Schema } from "prosemirror-model";
2
- import type { Plugin, EditorState, Transaction } from "prosemirror-state";
3
- export type JSONPrimitive = string | number | boolean | null;
4
- export type JSONValue = JSONPrimitive | JSONObject | JSONArray;
5
- export interface JSONObject {
6
- readonly [key: string]: JSONValue;
7
- }
8
- export type JSONArray = readonly JSONValue[];
9
- export type JSONDocument = JSONObject;
10
- export interface LexionEditorOptions {
11
- readonly schema?: Schema;
12
- readonly doc?: JSONDocument;
13
- readonly extensions?: readonly LexionExtension[];
14
- readonly plugins?: readonly LexionPlugin[];
15
- readonly commands?: CommandMap;
16
- }
17
- export interface PluginFactoryContext {
18
- readonly schema: Schema;
19
- }
20
- export interface PluginLifecycleContext extends PluginFactoryContext {
21
- readonly editor: LexionEditor;
22
- }
23
- export interface EditorCommandContext {
24
- readonly editor: LexionEditor;
25
- readonly schema: Schema;
26
- readonly state: EditorState;
27
- readonly dispatch: (transaction: Transaction) => void;
28
- }
29
- export type CommandHandler = (context: EditorCommandContext, ...args: readonly unknown[]) => boolean;
30
- export type CommandMap = Readonly<Record<string, CommandHandler>>;
31
- export interface LexionExtension {
32
- readonly key: string;
33
- readonly schema?: Schema | (() => Schema);
34
- readonly prosemirrorPlugins?: (context: PluginFactoryContext) => readonly Plugin[];
35
- readonly commands?: (context: PluginFactoryContext) => CommandMap;
36
- readonly onCreate?: (context: PluginLifecycleContext) => void;
37
- readonly onDestroy?: (context: PluginLifecycleContext) => void;
38
- }
39
- export type LexionPlugin = LexionExtension;
40
- export interface LexionEditor {
41
- readonly schema: Schema;
42
- readonly state: EditorState;
43
- readonly doc: ProseMirrorNode;
44
- getJSON: () => JSONDocument;
45
- setJSON: (document: JSONDocument) => void;
46
- dispatchTransaction: (transaction: Transaction) => void;
47
- execute: (command: string, ...args: readonly unknown[]) => boolean;
48
- registerCommand: (name: string, command: CommandHandler) => void;
49
- unregisterCommand: (name: string) => void;
50
- use: (extension: LexionExtension) => void;
51
- removePlugin: (key: string) => void;
52
- destroy: () => void;
53
- }
54
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
package/src/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/src/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":""}