@sciflow/editor-start 0.0.1-beta
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/README.md +130 -0
- package/dist/bundle/sciflow-editor.css +1 -0
- package/dist/bundle/sciflow-editor.js +18739 -0
- package/dist/demo/demo.js +56 -0
- package/dist/demo/index.html +169 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/lib/citation-drop.d.ts +25 -0
- package/dist/lib/citation-drop.d.ts.map +1 -0
- package/dist/lib/citation-drop.js +53 -0
- package/dist/lib/citation-source-adapter.d.ts +56 -0
- package/dist/lib/citation-source-adapter.d.ts.map +1 -0
- package/dist/lib/citation-source-adapter.js +126 -0
- package/dist/lib/editor-element.d.ts +256 -0
- package/dist/lib/editor-element.d.ts.map +1 -0
- package/dist/lib/editor-element.js +681 -0
- package/dist/lib/format-bar.d.ts +98 -0
- package/dist/lib/format-bar.d.ts.map +1 -0
- package/dist/lib/format-bar.js +401 -0
- package/dist/lib/outline.d.ts +94 -0
- package/dist/lib/outline.d.ts.map +1 -0
- package/dist/lib/outline.js +491 -0
- package/dist/lib/reference-list.d.ts +58 -0
- package/dist/lib/reference-list.d.ts.map +1 -0
- package/dist/lib/reference-list.js +160 -0
- package/dist/lib/selection-editor.d.ts +94 -0
- package/dist/lib/selection-editor.d.ts.map +1 -0
- package/dist/lib/selection-editor.js +467 -0
- package/dist/lib/theme.d.ts +8 -0
- package/dist/lib/theme.d.ts.map +1 -0
- package/dist/lib/theme.js +72 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/package.json +104 -0
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module editor-element
|
|
3
|
+
*
|
|
4
|
+
* Developer overview:
|
|
5
|
+
* --------------------
|
|
6
|
+
* `SciFlowEditorElement` is the reference web component that embeds the
|
|
7
|
+
* SciFlow editor runtime. The implementation illustrates how to:
|
|
8
|
+
*
|
|
9
|
+
* - bootstrap `@sciflow/editor-core` inside an arbitrary host UI
|
|
10
|
+
* - bridge external state (props/attributes) into the ProseMirror document
|
|
11
|
+
* - expose the command runner and view handles for surrounding widgets
|
|
12
|
+
* - surface lifecycle events so other controls can observe the editor
|
|
13
|
+
*
|
|
14
|
+
* When porting the editor to another framework (React, Vue, Svelte, …) follow
|
|
15
|
+
* the same high-level flow:
|
|
16
|
+
*
|
|
17
|
+
* 1. Create an `Editor` instance with your feature set.
|
|
18
|
+
* 2. Mount it into a DOM container supplied by your framework.
|
|
19
|
+
* 3. Subscribe to `onDoc`, `onSelection`, and other hooks you care about.
|
|
20
|
+
* 4. Re-dispatch the updates (events, signals, stores).
|
|
21
|
+
* 5. Dispose of everything when the host view unmounts.
|
|
22
|
+
*
|
|
23
|
+
* The rest of this file is heavily documented to map those steps to concrete
|
|
24
|
+
* code. Treat it as a cookbook for your own integration.
|
|
25
|
+
*/
|
|
26
|
+
import { LitElement } from 'lit';
|
|
27
|
+
import type { PropertyValues } from 'lit';
|
|
28
|
+
import type { Node as ProsemirrorNode, ResolvedPos } from 'prosemirror-model';
|
|
29
|
+
import type { PluginKey } from 'prosemirror-state';
|
|
30
|
+
import { Editor, type CommandRunner, type Feature, type Operation, type SciFlowDocJSON, type SnapshotFile, type SnapshotReference, type SelectionJSON, type Version } from '@sciflow/editor-core';
|
|
31
|
+
/**
|
|
32
|
+
* Detail payload emitted with the `editor-change` event.
|
|
33
|
+
* Consumers receive both the latest document snapshot and the batch of
|
|
34
|
+
* operations that produced it. Framework ports can mirror this contract.
|
|
35
|
+
*/
|
|
36
|
+
export interface SciFlowEditorChangeDetail {
|
|
37
|
+
readonly doc: SciFlowDocJSON;
|
|
38
|
+
readonly operations: Operation[];
|
|
39
|
+
readonly files: SnapshotFile[];
|
|
40
|
+
readonly references: SnapshotReference[];
|
|
41
|
+
}
|
|
42
|
+
type ExternalDocUpdate = {
|
|
43
|
+
doc: SciFlowDocJSON;
|
|
44
|
+
selection?: SelectionJSON;
|
|
45
|
+
version?: Version;
|
|
46
|
+
files?: SnapshotFile[];
|
|
47
|
+
references?: SnapshotReference[];
|
|
48
|
+
};
|
|
49
|
+
type DocInput = SciFlowDocJSON | ExternalDocUpdate | null;
|
|
50
|
+
export type ShadowStyleInput = string | string[] | CSSStyleSheet | CSSStyleSheet[] | null;
|
|
51
|
+
export interface PositionAPI {
|
|
52
|
+
coordsAtPos(pos: number): {
|
|
53
|
+
top: number;
|
|
54
|
+
left: number;
|
|
55
|
+
bottom: number;
|
|
56
|
+
right: number;
|
|
57
|
+
} | null;
|
|
58
|
+
resolve(pos: number): ResolvedPos | null;
|
|
59
|
+
}
|
|
60
|
+
export interface PluginAPI {
|
|
61
|
+
getState<T>(key: PluginKey<T>): T | null;
|
|
62
|
+
dispatchMeta(key: PluginKey, meta: any): boolean;
|
|
63
|
+
}
|
|
64
|
+
export interface DomAPI {
|
|
65
|
+
getBoundingRect(): DOMRect | null;
|
|
66
|
+
dispatchEvent(event: CustomEvent): boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Custom element that owns a SciFlow editor instance.
|
|
70
|
+
*
|
|
71
|
+
* Responsibilities:
|
|
72
|
+
* - translate properties (`doc`, `initialContent`) into an editor snapshot
|
|
73
|
+
* - manage the underlying ProseMirror view lifecycle
|
|
74
|
+
* - publish high-level change events for host applications
|
|
75
|
+
* - expose convenience getters (`commands`, `editorView`) for toolbars
|
|
76
|
+
*
|
|
77
|
+
* The element intentionally keeps all side effects inside class methods so it
|
|
78
|
+
* can be reproduced in other UI frameworks with the same sequencing.
|
|
79
|
+
*/
|
|
80
|
+
export declare class SciFlowEditorElement extends LitElement {
|
|
81
|
+
/**
|
|
82
|
+
* Initial ProseMirror document to render.
|
|
83
|
+
* Provide a `@sciflow/schema-prosemirror` node instance.
|
|
84
|
+
*/
|
|
85
|
+
initialContent: ProsemirrorNode | null;
|
|
86
|
+
/**
|
|
87
|
+
* JSON representation of a document to render.
|
|
88
|
+
* Provide a `SciFlowDocJSON` value, typically sourced from persistence.
|
|
89
|
+
*/
|
|
90
|
+
doc: DocInput;
|
|
91
|
+
/**
|
|
92
|
+
* Optional list of editor features to load. When not provided, defaults to
|
|
93
|
+
* the bundled demo feature set (figures, citations, mark formatting, headings).
|
|
94
|
+
*/
|
|
95
|
+
features: Feature[] | null;
|
|
96
|
+
/**
|
|
97
|
+
* Optional CSS injected into the shadow root after the built-in styles.
|
|
98
|
+
* Can be set declaratively via property binding or imperatively via setShadowStyles().
|
|
99
|
+
*
|
|
100
|
+
* Note: Direct property assignment applies styles asynchronously via Lit's lifecycle.
|
|
101
|
+
* For immediate application (e.g., dynamic decorations), use setShadowStyles() instead.
|
|
102
|
+
*/
|
|
103
|
+
private _shadowStyles;
|
|
104
|
+
private _shadowStylesAppliedExternally;
|
|
105
|
+
get shadowStyles(): ShadowStyleInput;
|
|
106
|
+
set shadowStyles(styles: ShadowStyleInput);
|
|
107
|
+
/** Heading text rendered in the introductory document. */
|
|
108
|
+
headingText: string;
|
|
109
|
+
/** Paragraph text used when no initial content is provided. */
|
|
110
|
+
placeholder: string;
|
|
111
|
+
private view;
|
|
112
|
+
private editor?;
|
|
113
|
+
private docUnsub?;
|
|
114
|
+
private selectionUnsub?;
|
|
115
|
+
private validationUnsub?;
|
|
116
|
+
private pendingOps;
|
|
117
|
+
private pendingOpsFromTransform;
|
|
118
|
+
private initialSelection?;
|
|
119
|
+
private suppressFeatureUpdate;
|
|
120
|
+
private deferInitializationForDoc;
|
|
121
|
+
private shadowStyleElements;
|
|
122
|
+
private themeUnsub?;
|
|
123
|
+
private themeStyleElements;
|
|
124
|
+
/** Access the underlying ProseMirror view instance. */
|
|
125
|
+
get editorView(): ReturnType<Editor['getView']> | null;
|
|
126
|
+
/** Access SciFlow command helpers bound to the current editor view. */
|
|
127
|
+
get commands(): CommandRunner | null;
|
|
128
|
+
/** Get read-only access to the document structure for traversal. */
|
|
129
|
+
get document(): ProsemirrorNode | null;
|
|
130
|
+
/** Get position utilities for coordinate mapping. */
|
|
131
|
+
get positions(): {
|
|
132
|
+
coordsAtPos: (pos: number) => {
|
|
133
|
+
top: number;
|
|
134
|
+
left: number;
|
|
135
|
+
bottom: number;
|
|
136
|
+
right: number;
|
|
137
|
+
} | null;
|
|
138
|
+
resolve: (pos: number) => ResolvedPos | null;
|
|
139
|
+
};
|
|
140
|
+
/** Get plugin management utilities. */
|
|
141
|
+
get plugins(): {
|
|
142
|
+
getState: <T>(key: PluginKey<T>) => NonNullable<T> | null;
|
|
143
|
+
dispatchMeta: (key: PluginKey, meta: any) => boolean;
|
|
144
|
+
};
|
|
145
|
+
/** Get editor DOM utilities. */
|
|
146
|
+
get dom(): {
|
|
147
|
+
getBoundingRect: () => DOMRect | null;
|
|
148
|
+
dispatchEvent: (event: CustomEvent) => boolean;
|
|
149
|
+
};
|
|
150
|
+
static styles: import("lit").CSSResult;
|
|
151
|
+
protected render(): import("lit-html").TemplateResult<1>;
|
|
152
|
+
/** Lit lifecycle hook: start the editor once the DOM container exists. */
|
|
153
|
+
protected firstUpdated(): Promise<void>;
|
|
154
|
+
connectedCallback(): void;
|
|
155
|
+
/**
|
|
156
|
+
* React to property changes coming from the host application.
|
|
157
|
+
* When `doc` changes we push the new snapshot into the running editor.
|
|
158
|
+
*/
|
|
159
|
+
protected updated(changedProperties: PropertyValues<this>): void;
|
|
160
|
+
/**
|
|
161
|
+
* Cleanly dispose the editor when the element leaves the DOM.
|
|
162
|
+
* Other frameworks should execute the same logic in their unmount hook.
|
|
163
|
+
*/
|
|
164
|
+
disconnectedCallback(): void;
|
|
165
|
+
/**
|
|
166
|
+
* Public helper to update the feature list and reconfigure the editor.
|
|
167
|
+
* Consumers (including the demo) can call this to immediately apply changes.
|
|
168
|
+
*/
|
|
169
|
+
configureFeatures(features: Feature[]): Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* Bootstrap the SciFlow editor inside this component's shadow DOM.
|
|
172
|
+
* Resolves a mount point, creates the editor instance, and wires listeners.
|
|
173
|
+
*/
|
|
174
|
+
private getDefaultFeatures;
|
|
175
|
+
private getActiveFeatures;
|
|
176
|
+
private shouldDeferInitialization;
|
|
177
|
+
private initializeView;
|
|
178
|
+
/** Apply the `doc` attribute to the running editor instance. */
|
|
179
|
+
private applyDocUpdate;
|
|
180
|
+
/**
|
|
181
|
+
* Minimal in-memory sync strategy used for the demo element.
|
|
182
|
+
* Reimplementations typically swap this out for their persistence layer.
|
|
183
|
+
*/
|
|
184
|
+
private createLocalSync;
|
|
185
|
+
private isExternalDocUpdate;
|
|
186
|
+
private extractDocFromInput;
|
|
187
|
+
private buildSyncUpdate;
|
|
188
|
+
/**
|
|
189
|
+
* Determine which document should be loaded on startup.
|
|
190
|
+
* Preference order: externally supplied JSON, provided PM node, fallback.
|
|
191
|
+
*/
|
|
192
|
+
private resolveInitialDoc;
|
|
193
|
+
/**
|
|
194
|
+
* Build the bundled demonstration document (heading + paragraph + figure).
|
|
195
|
+
* Feel free to replace this when embedding in your own product.
|
|
196
|
+
*/
|
|
197
|
+
private createDefaultDoc;
|
|
198
|
+
/**
|
|
199
|
+
* Safely convert SciFlow document JSON back into a ProseMirror node.
|
|
200
|
+
* Falls back to the default document when parsing fails.
|
|
201
|
+
*/
|
|
202
|
+
private docFromJSON;
|
|
203
|
+
/**
|
|
204
|
+
* Remove or fix malformed nodes before handing JSON to the schema parser.
|
|
205
|
+
* - Drops empty xref/link nodes (no content).
|
|
206
|
+
* - Drops xref/link nodes that target missing ids.
|
|
207
|
+
* This avoids ProseMirror widget creation paths that receive undefined DOM.
|
|
208
|
+
*/
|
|
209
|
+
private sanitizeDocJSON;
|
|
210
|
+
/**
|
|
211
|
+
* Emit a high-level `editor-change` event with the new document snapshot.
|
|
212
|
+
* Applications can listen and update their stores or routing state.
|
|
213
|
+
*/
|
|
214
|
+
private dispatchEditorChange;
|
|
215
|
+
/**
|
|
216
|
+
* Emit `editor-selection-change` whenever the cursor or selection updates.
|
|
217
|
+
* Handy for co-ordinating ancillary UI like reference or outline panels.
|
|
218
|
+
*/
|
|
219
|
+
private dispatchSelectionChange;
|
|
220
|
+
/** Notify listeners that the editor has mounted and is ready for input. */
|
|
221
|
+
private dispatchEditorReady;
|
|
222
|
+
/**
|
|
223
|
+
* Tear down subscriptions and dispose the editor instance.
|
|
224
|
+
* Called automatically when the element disconnects.
|
|
225
|
+
*/
|
|
226
|
+
private reinitializeEditor;
|
|
227
|
+
/**
|
|
228
|
+
* Convenience method to immediately apply shadow root styles.
|
|
229
|
+
* Recommended for dynamic style injection after editor initialization.
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* // Add styles for ProseMirror decorations dynamically
|
|
234
|
+
* editor.setShadowStyles([`
|
|
235
|
+
* .my-annotation {
|
|
236
|
+
* background: rgba(255, 200, 0, 0.3);
|
|
237
|
+
* border-bottom: 2px solid orange;
|
|
238
|
+
* }
|
|
239
|
+
* `]);
|
|
240
|
+
* ```
|
|
241
|
+
*/
|
|
242
|
+
setShadowStyles(styles: ShadowStyleInput): void;
|
|
243
|
+
private destroyEditor;
|
|
244
|
+
private capturePendingOps;
|
|
245
|
+
private applyShadowStyles;
|
|
246
|
+
private normalizeShadowStyles;
|
|
247
|
+
private extractCssFromSheet;
|
|
248
|
+
private debugTestLog;
|
|
249
|
+
}
|
|
250
|
+
declare global {
|
|
251
|
+
interface HTMLElementTagNameMap {
|
|
252
|
+
'sciflow-editor': SciFlowEditorElement;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
export {};
|
|
256
|
+
//# sourceMappingURL=editor-element.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor-element.d.ts","sourceRoot":"","sources":["../../src/lib/editor-element.ts"],"names":[],"mappings":"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"}
|