@vscode/markdown-editor 0.0.2-6 → 0.0.2-60
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 +26 -0
- package/dist/_observables/observableInternal/index.d.ts +1 -1
- package/dist/_observables/observableInternal/logging/consoleObservableLogger.d.ts +1 -1
- package/dist/_observables/observableInternal/logging/debugger/devToolsLogger.d.ts +1 -1
- package/dist/_observables/observableInternal/logging/logging.d.ts +1 -1
- package/dist/_observables/observableInternal/reactions/{autorun.d.ts → createEffect.d.ts} +11 -3
- package/dist/commands.d.ts +65 -0
- package/dist/commands.js +159 -0
- package/dist/commands.js.map +1 -0
- package/dist/config-BGeaJqWk.js +286 -0
- package/dist/config-BGeaJqWk.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +1459 -104
- package/dist/index.js +6070 -2000
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.css +1 -0
- package/dist/observables.js +45 -43
- package/dist/observables.js.map +1 -1
- package/dist/{runOnChange-C00UIwqQ.js → runOnChange-e7FtCqOQ.js} +115 -111
- package/dist/runOnChange-e7FtCqOQ.js.map +1 -0
- package/dist/stringEdit-CVDbCUBY.js +215 -0
- package/dist/stringEdit-CVDbCUBY.js.map +1 -0
- package/dist/web-editors.d.ts +282 -0
- package/dist/web-editors.js +6471 -0
- package/dist/web-editors.js.map +1 -0
- package/package.json +60 -13
- package/src/contrib/comments/commentInput.css +150 -0
- package/src/contrib/comments/comments.css +129 -0
- package/src/contrib/commentsVscode/vscodeCommentWidgetV2.css +171 -0
- package/src/contrib/find/find.css +347 -0
- package/src/view/editor.css +505 -20
- package/src/view/themes/default.css +13 -4
- package/src/view/themes/github.css +16 -13
- package/src/view/themes/vscode-default.css +397 -0
- package/src/view/themes/vscode-github.css +393 -0
- package/dist/runOnChange-C00UIwqQ.js.map +0 -1
- /package/dist/_observables/observableInternal/reactions/{autorunImpl.d.ts → createEffectImpl.d.ts} +0 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { ContentType } from '@vscode/web-editors';
|
|
2
|
+
import { IDisposable } from './_observables/index';
|
|
3
|
+
|
|
4
|
+
export declare interface CodeBlockEditorProviderDefinition {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly selector: CodeBlockEditorSelector;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export declare type CodeBlockEditorProviderSelection<T> = {
|
|
10
|
+
readonly kind: 'match';
|
|
11
|
+
readonly provider: T;
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'ambiguous';
|
|
14
|
+
readonly providers: readonly T[];
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export declare type CodeBlockEditorSelector = {
|
|
18
|
+
readonly language: string;
|
|
19
|
+
} | {
|
|
20
|
+
readonly languagePrefix: string;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A live editor embedded in place of a fenced code block's *rendered* form.
|
|
25
|
+
*
|
|
26
|
+
* This is the internal seam between the block view and a concrete embedded
|
|
27
|
+
* editor (e.g. an `<iframe>` speaking the web-editor protocol). The block view
|
|
28
|
+
* only speaks string edits: it pushes the block's content down via
|
|
29
|
+
* {@link setContent} and receives the editor's own changes back through
|
|
30
|
+
* {@link onEdit} (set by the block view on each (re)construction, so it always
|
|
31
|
+
* routes to the current AST node). The concrete implementation owns its DOM,
|
|
32
|
+
* transport, and lifecycle.
|
|
33
|
+
*
|
|
34
|
+
* A single instance is adopted across re-renders (like the highlighter session)
|
|
35
|
+
* so the underlying editor keeps its state across edits — see
|
|
36
|
+
* {@link CodeBlockViewNode}.
|
|
37
|
+
*/
|
|
38
|
+
declare interface IEmbeddedCodeEditor {
|
|
39
|
+
/** The element mounted as the block's rendered form. */
|
|
40
|
+
readonly element: HTMLElement;
|
|
41
|
+
/**
|
|
42
|
+
* Document → editor. The block's content changed (from any source). Must be
|
|
43
|
+
* idempotent: pushing the content the editor already holds is a no-op, which
|
|
44
|
+
* is how edits the editor itself originated are prevented from echoing back.
|
|
45
|
+
*/
|
|
46
|
+
setContent(content: string): void;
|
|
47
|
+
/** Update whether the embedded editor may change its content. */
|
|
48
|
+
setReadOnly?(readOnly: boolean): void;
|
|
49
|
+
/**
|
|
50
|
+
* Optional synchronous height (px) to reserve for `content` *before* the
|
|
51
|
+
* editor has laid out. Return `undefined` to let the editor size itself
|
|
52
|
+
* (the implementation may report its real height later). Lets a registration
|
|
53
|
+
* avoid a layout jump when it can cheaply estimate the size from content.
|
|
54
|
+
*/
|
|
55
|
+
estimateHeight?(content: string): number | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Editor → document. Set by the block view on every (re)construction to
|
|
58
|
+
* route the editor's own edits, expressed in the block's *content*
|
|
59
|
+
* coordinates, to the current AST node.
|
|
60
|
+
*/
|
|
61
|
+
onEdit?: (edit: StringEdit) => void;
|
|
62
|
+
dispose(): void;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Creates an {@link IEmbeddedCodeEditor} for a fenced block, or opts out. */
|
|
66
|
+
declare interface IEmbeddedCodeEditorFactory {
|
|
67
|
+
/**
|
|
68
|
+
* Return an editor for a fenced block, or `undefined` to fall
|
|
69
|
+
* back to the default (highlighting / {@link BlockViewOptions.renderCustomCodeBlock}).
|
|
70
|
+
*/
|
|
71
|
+
create(language: string, infoString: string, initialContent: string): IEmbeddedCodeEditor | undefined;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export declare interface IframeEmbeddedEditorProvider extends CodeBlockEditorProviderDefinition {
|
|
75
|
+
readonly resolve: (infoString: string) => Promise<ResolvedIframeEmbeddedEditor | undefined>;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export declare type IframeEmbeddedEditorProviderSelector = CodeBlockEditorSelector;
|
|
79
|
+
|
|
80
|
+
declare interface IframeSandboxOptions {
|
|
81
|
+
readonly forms?: boolean;
|
|
82
|
+
readonly downloads?: boolean;
|
|
83
|
+
readonly pointerLock?: boolean;
|
|
84
|
+
readonly clipboardWrite?: boolean;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
declare class OffsetRange {
|
|
88
|
+
readonly start: number;
|
|
89
|
+
readonly endExclusive: number;
|
|
90
|
+
static fromTo(start: number, endExclusive: number): OffsetRange;
|
|
91
|
+
static ofLength(length: number): OffsetRange;
|
|
92
|
+
static ofStartAndLength(start: number, length: number): OffsetRange;
|
|
93
|
+
static emptyAt(offset: number): OffsetRange;
|
|
94
|
+
constructor(start: number, endExclusive: number);
|
|
95
|
+
get isEmpty(): boolean;
|
|
96
|
+
get length(): number;
|
|
97
|
+
delta(offset: number): OffsetRange;
|
|
98
|
+
deltaStart(offset: number): OffsetRange;
|
|
99
|
+
deltaEnd(offset: number): OffsetRange;
|
|
100
|
+
contains(offset: number): boolean;
|
|
101
|
+
containsRange(other: OffsetRange): boolean;
|
|
102
|
+
intersects(other: OffsetRange): boolean;
|
|
103
|
+
intersectsOrTouches(other: OffsetRange): boolean;
|
|
104
|
+
intersect(other: OffsetRange): OffsetRange | undefined;
|
|
105
|
+
join(other: OffsetRange): OffsetRange;
|
|
106
|
+
isBefore(other: OffsetRange): boolean;
|
|
107
|
+
isAfter(other: OffsetRange): boolean;
|
|
108
|
+
substring(str: string): string;
|
|
109
|
+
slice<T>(arr: readonly T[]): T[];
|
|
110
|
+
equals(other: OffsetRange): boolean;
|
|
111
|
+
toString(): string;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
declare class PhysicalIframe implements IDisposable {
|
|
115
|
+
private readonly _descriptor;
|
|
116
|
+
private readonly _frameRoot;
|
|
117
|
+
private readonly _scriptNonce;
|
|
118
|
+
private readonly _themeCss;
|
|
119
|
+
readonly iframe: HTMLIFrameElement;
|
|
120
|
+
editor: VirtualizedIframeEmbeddedEditor | undefined;
|
|
121
|
+
readonly pool: PhysicalIframePool;
|
|
122
|
+
private _host;
|
|
123
|
+
private _transport;
|
|
124
|
+
private _pendingEditor;
|
|
125
|
+
private _disposed;
|
|
126
|
+
private readonly _onWindowMessage;
|
|
127
|
+
constructor(pool: PhysicalIframePool, _descriptor: ResolvedIframeEmbeddedEditor, frameLayer: HTMLElement, _frameRoot: HTMLElement, _scriptNonce: string | undefined, _themeCss: string | (() => string) | undefined);
|
|
128
|
+
bind(editor: VirtualizedIframeEmbeddedEditor): void;
|
|
129
|
+
unbind(): void;
|
|
130
|
+
layout(editor: VirtualizedIframeEmbeddedEditor): void;
|
|
131
|
+
dispose(): void;
|
|
132
|
+
private _setup;
|
|
133
|
+
private _getThemeCss;
|
|
134
|
+
private _postTheme;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
declare class PhysicalIframePool implements IDisposable {
|
|
138
|
+
private readonly _frameLayer;
|
|
139
|
+
private readonly _frameRoot;
|
|
140
|
+
private readonly _scriptNonce;
|
|
141
|
+
private readonly _themeCss;
|
|
142
|
+
readonly descriptor: ResolvedIframeEmbeddedEditor;
|
|
143
|
+
private readonly _frames;
|
|
144
|
+
constructor(descriptor: ResolvedIframeEmbeddedEditor, _frameLayer: HTMLElement, _frameRoot: HTMLElement, _scriptNonce: string | undefined, _themeCss: string | (() => string) | undefined);
|
|
145
|
+
get leasedFrames(): number;
|
|
146
|
+
get idleFrames(): number;
|
|
147
|
+
acquire(editor: VirtualizedIframeEmbeddedEditor): void;
|
|
148
|
+
release(editor: VirtualizedIframeEmbeddedEditor): void;
|
|
149
|
+
park(iframe: HTMLIFrameElement): void;
|
|
150
|
+
dispose(): void;
|
|
151
|
+
layout(): void;
|
|
152
|
+
private _createFrame;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export declare interface ResolvedIframeEmbeddedEditor {
|
|
156
|
+
readonly html: string;
|
|
157
|
+
readonly contentType?: ContentType;
|
|
158
|
+
readonly initialHeight?: number;
|
|
159
|
+
readonly sandbox?: IframeSandboxOptions;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export declare type ResolvedIframeEmbeddedEditorSandbox = IframeSandboxOptions;
|
|
163
|
+
|
|
164
|
+
export declare function selectCodeBlockEditorProvider<T extends CodeBlockEditorProviderDefinition>(providers: readonly T[], language: string): CodeBlockEditorProviderSelection<T> | undefined;
|
|
165
|
+
|
|
166
|
+
declare class StringEdit {
|
|
167
|
+
static readonly empty: StringEdit;
|
|
168
|
+
static single(replacement: StringReplacement): StringEdit;
|
|
169
|
+
static replace(range: OffsetRange, text: string): StringEdit;
|
|
170
|
+
static insert(offset: number, text: string): StringEdit;
|
|
171
|
+
static delete(range: OffsetRange): StringEdit;
|
|
172
|
+
readonly replacements: readonly StringReplacement[];
|
|
173
|
+
constructor(replacements: readonly StringReplacement[]);
|
|
174
|
+
get isEmpty(): boolean;
|
|
175
|
+
apply(base: string): string;
|
|
176
|
+
inverse(original: string): StringEdit;
|
|
177
|
+
equals(other: StringEdit): boolean;
|
|
178
|
+
mapOffset(offset: number): number;
|
|
179
|
+
toString(): string;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
declare class StringReplacement {
|
|
183
|
+
readonly replaceRange: OffsetRange;
|
|
184
|
+
readonly newText: string;
|
|
185
|
+
static insert(offset: number, text: string): StringReplacement;
|
|
186
|
+
static replace(range: OffsetRange, text: string): StringReplacement;
|
|
187
|
+
static delete(range: OffsetRange): StringReplacement;
|
|
188
|
+
constructor(replaceRange: OffsetRange, newText: string);
|
|
189
|
+
get isEmpty(): boolean;
|
|
190
|
+
equals(other: StringReplacement): boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Narrows this replacement to the span that actually changes, by trimming
|
|
193
|
+
* the prefix and suffix it shares with the text it replaces in `source`.
|
|
194
|
+
*/
|
|
195
|
+
removeCommonSuffixPrefix(source: string): StringReplacement;
|
|
196
|
+
toString(): string;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
declare class VirtualizedIframeEmbeddedEditor implements IEmbeddedCodeEditor {
|
|
200
|
+
private readonly _factory;
|
|
201
|
+
readonly provider: IframeEmbeddedEditorProvider;
|
|
202
|
+
readonly element: HTMLElement;
|
|
203
|
+
onEdit?: (edit: StringEdit) => void;
|
|
204
|
+
readonly estimateHeight: () => number;
|
|
205
|
+
frame: PhysicalIframe | undefined;
|
|
206
|
+
disposed: boolean;
|
|
207
|
+
visible: boolean;
|
|
208
|
+
readonly infoString: string;
|
|
209
|
+
private readonly _frameHost;
|
|
210
|
+
private _content;
|
|
211
|
+
private _readOnly;
|
|
212
|
+
private _pool;
|
|
213
|
+
private _resolved;
|
|
214
|
+
constructor(_factory: VirtualizedIframeEmbeddedEditorFactory, provider: IframeEmbeddedEditorProvider, infoString: string, initialContent: string, initialHeight: number, generation: number);
|
|
215
|
+
setContent(content: string): void;
|
|
216
|
+
setReadOnly(readOnly: boolean): void;
|
|
217
|
+
setVisible(visible: boolean): void;
|
|
218
|
+
resolve(pool: PhysicalIframePool | undefined): void;
|
|
219
|
+
invalidate(): void;
|
|
220
|
+
bindFrame(frame: PhysicalIframe): void;
|
|
221
|
+
unbindFrame(height: number): void;
|
|
222
|
+
applyGuestText(text: string): void;
|
|
223
|
+
applyHeight(height: number): void;
|
|
224
|
+
observeLayout(observer: ResizeObserver): void;
|
|
225
|
+
hasFocus(): boolean;
|
|
226
|
+
get content(): string;
|
|
227
|
+
get readOnly(): boolean;
|
|
228
|
+
get frameHost(): HTMLElement;
|
|
229
|
+
dispose(): void;
|
|
230
|
+
private _renderFallback;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export declare interface VirtualizedIframeEmbeddedEditorDiagnostics {
|
|
234
|
+
readonly logicalEditors: number;
|
|
235
|
+
readonly leasedFrames: number;
|
|
236
|
+
readonly idleFrames: number;
|
|
237
|
+
readonly descriptorCacheEntries: number;
|
|
238
|
+
readonly descriptorCacheHits: number;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export declare class VirtualizedIframeEmbeddedEditorFactory implements IEmbeddedCodeEditorFactory, IDisposable {
|
|
242
|
+
private readonly _options;
|
|
243
|
+
private readonly _frameLayer;
|
|
244
|
+
private _frameRoot;
|
|
245
|
+
private _restoreFrameRootPosition;
|
|
246
|
+
private _layoutObserver;
|
|
247
|
+
private _layoutFrame;
|
|
248
|
+
private readonly _observer;
|
|
249
|
+
private readonly _logicalEditors;
|
|
250
|
+
private readonly _pools;
|
|
251
|
+
private readonly _descriptorCache;
|
|
252
|
+
private readonly _rejectedProviders;
|
|
253
|
+
private _providers;
|
|
254
|
+
private _generation;
|
|
255
|
+
private _descriptorCacheHits;
|
|
256
|
+
private _disposed;
|
|
257
|
+
constructor(_options: VirtualizedIframeEmbeddedEditorOptions);
|
|
258
|
+
updateProviders(providers: readonly IframeEmbeddedEditorProvider[]): void;
|
|
259
|
+
get diagnostics(): VirtualizedIframeEmbeddedEditorDiagnostics;
|
|
260
|
+
create(language: string, infoString: string, initialContent: string): IEmbeddedCodeEditor | undefined;
|
|
261
|
+
dispose(): void;
|
|
262
|
+
remove(editor: VirtualizedIframeEmbeddedEditor): void;
|
|
263
|
+
resolve(editor: VirtualizedIframeEmbeddedEditor, generation: number): Promise<void>;
|
|
264
|
+
private _rejectEditor;
|
|
265
|
+
private _ensureFrameRoot;
|
|
266
|
+
private _setFrameRoot;
|
|
267
|
+
private readonly _scheduleLayout;
|
|
268
|
+
private _disposePools;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export declare interface VirtualizedIframeEmbeddedEditorOptions {
|
|
272
|
+
readonly providers: readonly IframeEmbeddedEditorProvider[];
|
|
273
|
+
readonly root?: Element | Document | null;
|
|
274
|
+
readonly frameRoot?: HTMLElement;
|
|
275
|
+
readonly scriptNonce?: string;
|
|
276
|
+
readonly themeCss?: string | (() => string);
|
|
277
|
+
readonly defaultHeight?: number;
|
|
278
|
+
readonly onAmbiguous?: (language: string, providers: readonly CodeBlockEditorProviderDefinition[]) => void;
|
|
279
|
+
readonly onDidChange?: () => void;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
export { }
|