@coldsmirk/inkstone-codemirror 0.8.3 → 0.10.0

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/dist/index.d.cts DELETED
@@ -1,554 +0,0 @@
1
- import { Extension, StateField } from "@codemirror/state";
2
- import { EditorView } from "@codemirror/view";
3
- import { LanguageSupport } from "@codemirror/language";
4
-
5
- //#region src/context.d.ts
6
- /**
7
- * A node in the context shape. `ref` is a lazy pointer into {@link IrSchema.defs} (deref at use).
8
- */
9
- type IrType = {
10
- readonly kind: "object";
11
- readonly fields: Readonly<Record<string, IrField>>;
12
- } | {
13
- readonly kind: "array";
14
- readonly element: IrType;
15
- } | {
16
- readonly kind: "enum";
17
- readonly values: ReadonlyArray<string | number | boolean>;
18
- } | {
19
- readonly kind: "string" | "number" | "boolean" | "null" | "any";
20
- } | {
21
- readonly kind: "ref";
22
- readonly name: string;
23
- };
24
- /**
25
- * A named member of an object type. `nullable` / `required` are display metadata, not gates.
26
- */
27
- interface IrField {
28
- readonly type: IrType;
29
- readonly required: boolean;
30
- readonly nullable: boolean;
31
- readonly doc?: string;
32
- }
33
- /**
34
- * A normalized context: a root shape plus a definition table backing `ref` nodes (and cycles).
35
- */
36
- interface IrSchema {
37
- readonly root: IrType;
38
- readonly defs: Readonly<Record<string, IrType>>;
39
- }
40
- /**
41
- * A resolved member, offered as one completion.
42
- */
43
- interface Member {
44
- readonly name: string;
45
- readonly type: IrType;
46
- readonly required: boolean;
47
- readonly nullable: boolean;
48
- readonly doc?: string;
49
- }
50
- /**
51
- * How a caller hands inkstone a context: a JSON Schema, or a representative sample value to infer
52
- * the shape from. Pass a *stable* reference (memoize/hoist it) — in React a new identity each
53
- * render re-normalizes and re-dispatches.
54
- */
55
- type EditorContext = {
56
- readonly schema: unknown;
57
- } | {
58
- readonly sample: unknown;
59
- };
60
- /**
61
- * Reactively set (or clear) the render-context schema an editor completes against. Dispatch this
62
- * effect — `setMinijinjaContext.of(normalizeContext(...))`, or `.of(null)` to turn it off — to
63
- * update completion without recreating the editor, matching the create-once discipline used
64
- * throughout the toolkit. Defined here (not with the MiniJinja grammar) so it and the field stay
65
- * in the always-loaded chunk, leaving the grammar lazily code-split.
66
- */
67
- declare const setMinijinjaContext: import("@codemirror/state").StateEffectType<IrSchema | null>;
68
- /**
69
- * Holds the normalized render-context schema that variable / member completion reads. Seed it with
70
- * `minijinja({ context })`, or drive it at runtime with {@link setMinijinjaContext}. `null` (the
71
- * default) means no context — variable completion stays off and only tags / filters / tests /
72
- * globals are offered.
73
- */
74
- declare const minijinjaContextField: StateField<IrSchema | null>;
75
- /**
76
- * Normalize either input form to the internal {@link IrSchema}.
77
- */
78
- declare function normalizeContext(input: EditorContext): IrSchema;
79
- /**
80
- * Members reachable at `path` — `[]` yields the top-level context variables (plus any `scope`
81
- * bindings), a non-empty path walks member access (`["user", "address"]` → the fields of
82
- * `user.address`). The first segment may resolve against a `scope` binding (a `{% for %}` target,
83
- * macro parameter, …) before falling back to the root.
84
- */
85
- declare function resolveMembers(ir: IrSchema, path: readonly string[], scope?: ReadonlyMap<string, IrType>): Member[];
86
- /**
87
- * The type at a declared property path, or null if the path leaves the walkable shape.
88
- */
89
- declare function typeAtPath(ir: IrSchema, path: readonly string[]): IrType | null;
90
- //#endregion
91
- //#region src/controlled-host.d.ts
92
- interface ControlledEditorOptions {
93
- /**
94
- * The element the editor mounts into.
95
- */
96
- parent: HTMLElement;
97
- /**
98
- * Initial document text.
99
- */
100
- doc: string;
101
- /**
102
- * Called with the full document after every user edit. Not called for
103
- * {@link ControlledEditorHost.setValue} reconciliations.
104
- */
105
- onChange: (value: string) => void;
106
- /**
107
- * Static extensions, fixed for the editor's lifetime.
108
- */
109
- extensions?: Extension[];
110
- /**
111
- * Extensions that change at runtime (theme, language config …), swapped in place via
112
- * {@link ControlledEditorHost.reconfigure} without rebuilding the editor.
113
- */
114
- dynamicExtensions?: Extension[];
115
- }
116
- /**
117
- * A controlled CodeMirror 6 host — the create-once plumbing every framework wrapper repeats:
118
- *
119
- * - **External value reconcile.** {@link setValue} diffs the incoming value against the live
120
- * document and dispatches a minimal replace, so a store-driven update never resets the caret
121
- * and never echoes back through `onChange`.
122
- * - **In-place reconfiguration.** `dynamicExtensions` live in a {@link Compartment};
123
- * {@link reconfigure} swaps them (light/dark theme, language options) without rebuilding
124
- * the editor and losing its state.
125
- *
126
- * Framework-agnostic: a React wrapper calls `setValue` from a value effect and `reconfigure`
127
- * from a theme effect (see `@coldsmirk/inkstone-react`); any other framework does the same
128
- * from its own reactivity.
129
- */
130
- declare class ControlledEditorHost {
131
- private readonly compartment;
132
- private silent;
133
- readonly view: EditorView;
134
- constructor({
135
- parent,
136
- doc,
137
- onChange,
138
- extensions,
139
- dynamicExtensions
140
- }: ControlledEditorOptions);
141
- /**
142
- * Reconcile an externally-changed value into the live document without resetting the caret.
143
- * No-op when the document already matches; the write never re-enters `onChange`.
144
- */
145
- setValue(value: string): void;
146
- /**
147
- * Swap the dynamic extensions (theme, language configuration) in place.
148
- */
149
- reconfigure(dynamicExtensions: Extension[]): void;
150
- destroy(): void;
151
- }
152
- //#endregion
153
- //#region src/extensions.d.ts
154
- /**
155
- * Simplified-Chinese strings for the search / goto-line panels, as an opt-in extension —
156
- * inkstone's defaults are English, so pass this through `extensions` to localize the panel
157
- * (`search` must be on for the panel to exist at all).
158
- */
159
- declare const searchPhrasesZhCn: Extension;
160
- interface DocumentExtensionsOptions {
161
- /**
162
- * Placeholder text shown while the document is empty.
163
- */
164
- placeholder?: string;
165
- /**
166
- * Soft-wrap long lines instead of scrolling horizontally.
167
- *
168
- * @default false
169
- */
170
- lineWrapping?: boolean;
171
- /**
172
- * Show the line-number gutter.
173
- *
174
- * @default false
175
- */
176
- showLineNumbers?: boolean;
177
- /**
178
- * Enable code folding — adds the fold gutter and fold keymap. Fold points come from the
179
- * language, so this stays inert until a language is set.
180
- *
181
- * @default false
182
- */
183
- folding?: boolean;
184
- /**
185
- * Turn native browser spell-check on. CodeMirror itself keeps it off (`spellcheck="false"`
186
- * on the content element), which is right for code — red squiggles under identifiers help
187
- * nobody. Enable it for prose-grade documents (prompt templates, messages).
188
- *
189
- * @default false
190
- */
191
- spellcheck?: boolean;
192
- /**
193
- * Enable in-editor search: the standard search keymap (Ctrl/Cmd-F opens the panel, F3 /
194
- * Ctrl/Cmd-G cycle matches, Ctrl/Cmd-D selects the next occurrence, Alt-G jumps to a line)
195
- * plus selection-match highlighting. The panel speaks CodeMirror's stock English; add
196
- * {@link searchPhrasesZhCn} to `extensions` for Simplified Chinese.
197
- *
198
- * @default false
199
- */
200
- search?: boolean;
201
- }
202
- /**
203
- * The standard extension bundle for a document-grade editor — line numbers, history,
204
- * selection drawing, active-line highlight, auto-indent, bracket matching/closing,
205
- * completion UI, and the merged default keymap. This is the assembly every hand-built
206
- * CodeMirror host repeats; language support and theming stay with the caller.
207
- */
208
- declare function documentExtensions({
209
- placeholder,
210
- lineWrapping,
211
- showLineNumbers,
212
- folding,
213
- spellcheck,
214
- search
215
- }?: DocumentExtensionsOptions): Extension[];
216
- //#endregion
217
- //#region src/languages.d.ts
218
- /**
219
- * Resolves a language grammar. Every loader is a distinct dynamic `import()`, so a bundler
220
- * emits one chunk per language and only the selected grammar is fetched at runtime — the
221
- * whole catalog is never loaded at once.
222
- */
223
- type LanguageLoader = () => Promise<Extension>;
224
- /**
225
- * Language id → lazy loader. Two tiers back the catalog: the official `@codemirror/lang-*`
226
- * (Lezer) parsers where upstream ships one, and the full `@codemirror/legacy-modes` catalog
227
- * for every language upstream never wrote a Lezer grammar for — where a language exists in
228
- * both, the Lezer parser wins. Ids follow Monaco's spelling where they overlap, but the two
229
- * editors expose independent language types — {@link CodeMirrorLanguage} is exactly this set.
230
- */
231
- declare const loaders: {
232
- javascript: () => Promise<{
233
- extension: Extension;
234
- } | readonly Extension[] | LanguageSupport>;
235
- typescript: () => Promise<{
236
- extension: Extension;
237
- } | readonly Extension[] | LanguageSupport>;
238
- jsx: () => Promise<{
239
- extension: Extension;
240
- } | readonly Extension[] | LanguageSupport>;
241
- tsx: () => Promise<{
242
- extension: Extension;
243
- } | readonly Extension[] | LanguageSupport>;
244
- json: () => Promise<{
245
- extension: Extension;
246
- } | readonly Extension[] | LanguageSupport>;
247
- html: () => Promise<{
248
- extension: Extension;
249
- } | readonly Extension[] | LanguageSupport>;
250
- css: () => Promise<{
251
- extension: Extension;
252
- } | readonly Extension[] | LanguageSupport>;
253
- scss: () => Promise<{
254
- extension: Extension;
255
- } | readonly Extension[] | LanguageSupport>;
256
- sass: () => Promise<{
257
- extension: Extension;
258
- } | readonly Extension[] | LanguageSupport>;
259
- less: () => Promise<{
260
- extension: Extension;
261
- } | readonly Extension[] | LanguageSupport>;
262
- python: () => Promise<{
263
- extension: Extension;
264
- } | readonly Extension[] | LanguageSupport>;
265
- java: () => Promise<{
266
- extension: Extension;
267
- } | readonly Extension[] | LanguageSupport>;
268
- markdown: () => Promise<{
269
- extension: Extension;
270
- } | readonly Extension[] | LanguageSupport>;
271
- xml: () => Promise<{
272
- extension: Extension;
273
- } | readonly Extension[] | LanguageSupport>;
274
- rust: () => Promise<{
275
- extension: Extension;
276
- } | readonly Extension[] | LanguageSupport>;
277
- php: () => Promise<{
278
- extension: Extension;
279
- } | readonly Extension[] | LanguageSupport>;
280
- yaml: () => Promise<{
281
- extension: Extension;
282
- } | readonly Extension[] | LanguageSupport>;
283
- go: () => Promise<{
284
- extension: Extension;
285
- } | readonly Extension[] | LanguageSupport>;
286
- cpp: () => Promise<{
287
- extension: Extension;
288
- } | readonly Extension[] | LanguageSupport>;
289
- c: () => Promise<{
290
- extension: Extension;
291
- } | readonly Extension[] | LanguageSupport>;
292
- vue: () => Promise<{
293
- extension: Extension;
294
- } | readonly Extension[] | LanguageSupport>;
295
- angular: () => Promise<{
296
- extension: Extension;
297
- } | readonly Extension[] | LanguageSupport>;
298
- liquid: () => Promise<{
299
- extension: Extension;
300
- } | readonly Extension[] | LanguageSupport>;
301
- wast: () => Promise<{
302
- extension: Extension;
303
- } | readonly Extension[] | LanguageSupport>;
304
- lezer: () => Promise<{
305
- extension: Extension;
306
- } | readonly Extension[] | LanguageSupport>;
307
- sql: () => Promise<{
308
- extension: Extension;
309
- } | readonly Extension[] | LanguageSupport>;
310
- mysql: () => Promise<{
311
- extension: Extension;
312
- } | readonly Extension[] | LanguageSupport>;
313
- pgsql: () => Promise<{
314
- extension: Extension;
315
- } | readonly Extension[] | LanguageSupport>;
316
- sqlite: () => Promise<{
317
- extension: Extension;
318
- } | readonly Extension[] | LanguageSupport>;
319
- mssql: () => Promise<{
320
- extension: Extension;
321
- } | readonly Extension[] | LanguageSupport>;
322
- mariadb: () => Promise<{
323
- extension: Extension;
324
- } | readonly Extension[] | LanguageSupport>;
325
- plsql: () => Promise<{
326
- extension: Extension;
327
- } | readonly Extension[] | LanguageSupport>;
328
- cassandra: () => Promise<{
329
- extension: Extension;
330
- } | readonly Extension[] | LanguageSupport>;
331
- apl: LanguageLoader;
332
- asciiarmor: LanguageLoader;
333
- asn1: LanguageLoader;
334
- asterisk: LanguageLoader;
335
- brainfuck: LanguageLoader;
336
- ceylon: LanguageLoader;
337
- clojure: LanguageLoader;
338
- cmake: LanguageLoader;
339
- cobol: LanguageLoader;
340
- coffeescript: LanguageLoader;
341
- commonlisp: LanguageLoader;
342
- crystal: LanguageLoader;
343
- csharp: LanguageLoader;
344
- cypher: LanguageLoader;
345
- cython: LanguageLoader;
346
- d: LanguageLoader;
347
- dart: LanguageLoader;
348
- diff: LanguageLoader;
349
- dockerfile: LanguageLoader;
350
- dtd: LanguageLoader;
351
- dylan: LanguageLoader;
352
- ebnf: LanguageLoader;
353
- ecl: LanguageLoader;
354
- eiffel: LanguageLoader;
355
- elm: LanguageLoader;
356
- env: LanguageLoader;
357
- erlang: LanguageLoader;
358
- esper: LanguageLoader;
359
- ez80: LanguageLoader;
360
- factor: LanguageLoader;
361
- fcl: LanguageLoader;
362
- forth: LanguageLoader;
363
- fortran: LanguageLoader;
364
- fsharp: LanguageLoader;
365
- gas: LanguageLoader;
366
- "gas-arm": LanguageLoader;
367
- gherkin: LanguageLoader;
368
- gpsql: LanguageLoader;
369
- gql: LanguageLoader;
370
- groovy: LanguageLoader;
371
- gss: LanguageLoader;
372
- haskell: LanguageLoader;
373
- haxe: LanguageLoader;
374
- hive: LanguageLoader;
375
- http: LanguageLoader;
376
- hxml: LanguageLoader;
377
- idl: LanguageLoader;
378
- ini: LanguageLoader;
379
- julia: LanguageLoader;
380
- kotlin: LanguageLoader;
381
- livescript: LanguageLoader;
382
- lua: LanguageLoader;
383
- mathematica: LanguageLoader;
384
- mbox: LanguageLoader;
385
- mirc: LanguageLoader;
386
- modelica: LanguageLoader;
387
- mscgen: LanguageLoader;
388
- msgenny: LanguageLoader;
389
- mumps: LanguageLoader;
390
- nesc: LanguageLoader;
391
- nginx: LanguageLoader;
392
- nsis: LanguageLoader;
393
- ntriples: LanguageLoader;
394
- "objective-c": LanguageLoader;
395
- "objective-cpp": LanguageLoader;
396
- ocaml: LanguageLoader;
397
- octave: LanguageLoader;
398
- oz: LanguageLoader;
399
- pascal: LanguageLoader;
400
- pegjs: LanguageLoader;
401
- perl: LanguageLoader;
402
- pig: LanguageLoader;
403
- powershell: LanguageLoader;
404
- properties: LanguageLoader;
405
- protobuf: LanguageLoader;
406
- pug: LanguageLoader;
407
- puppet: LanguageLoader;
408
- q: LanguageLoader;
409
- r: LanguageLoader;
410
- "rpm-changes": LanguageLoader;
411
- "rpm-spec": LanguageLoader;
412
- ruby: LanguageLoader;
413
- sas: LanguageLoader;
414
- scala: LanguageLoader;
415
- scheme: LanguageLoader;
416
- shader: LanguageLoader;
417
- shell: LanguageLoader;
418
- sieve: LanguageLoader;
419
- smalltalk: LanguageLoader;
420
- sml: LanguageLoader;
421
- solr: LanguageLoader;
422
- sparksql: LanguageLoader;
423
- sparql: LanguageLoader;
424
- spreadsheet: LanguageLoader;
425
- squirrel: LanguageLoader;
426
- stex: LanguageLoader;
427
- "stex-math": LanguageLoader;
428
- stylus: LanguageLoader;
429
- swift: LanguageLoader;
430
- tcl: LanguageLoader;
431
- textile: LanguageLoader;
432
- tiddlywiki: LanguageLoader;
433
- tiki: LanguageLoader;
434
- tlv: LanguageLoader;
435
- toml: LanguageLoader;
436
- troff: LanguageLoader;
437
- ttcn: LanguageLoader;
438
- "ttcn-cfg": LanguageLoader;
439
- turtle: LanguageLoader;
440
- vb: LanguageLoader;
441
- vbscript: LanguageLoader;
442
- "vbscript-asp": LanguageLoader;
443
- velocity: LanguageLoader;
444
- verilog: LanguageLoader;
445
- vhdl: LanguageLoader;
446
- webidl: LanguageLoader;
447
- xquery: LanguageLoader;
448
- xu: LanguageLoader;
449
- yacas: LanguageLoader;
450
- z80: LanguageLoader;
451
- minijinja: () => Promise<{
452
- extension: Extension;
453
- } | readonly Extension[] | LanguageSupport>;
454
- "minijinja-html": () => Promise<{
455
- extension: Extension;
456
- } | readonly Extension[] | LanguageSupport>;
457
- "minijinja-xml": () => Promise<{
458
- extension: Extension;
459
- } | readonly Extension[] | LanguageSupport>;
460
- "minijinja-json": () => Promise<{
461
- extension: Extension;
462
- } | readonly Extension[] | LanguageSupport>;
463
- "minijinja-yaml": () => Promise<{
464
- extension: Extension;
465
- } | readonly Extension[] | LanguageSupport>;
466
- "minijinja-css": () => Promise<{
467
- extension: Extension;
468
- } | readonly Extension[] | LanguageSupport>;
469
- "minijinja-scss": () => Promise<{
470
- extension: Extension;
471
- } | readonly Extension[] | LanguageSupport>;
472
- "minijinja-sass": () => Promise<{
473
- extension: Extension;
474
- } | readonly Extension[] | LanguageSupport>;
475
- "minijinja-less": () => Promise<{
476
- extension: Extension;
477
- } | readonly Extension[] | LanguageSupport>;
478
- "minijinja-markdown": () => Promise<{
479
- extension: Extension;
480
- } | readonly Extension[] | LanguageSupport>;
481
- "minijinja-sql": () => Promise<{
482
- extension: Extension;
483
- } | readonly Extension[] | LanguageSupport>;
484
- "minijinja-mysql": () => Promise<{
485
- extension: Extension;
486
- } | readonly Extension[] | LanguageSupport>;
487
- "minijinja-pgsql": () => Promise<{
488
- extension: Extension;
489
- } | readonly Extension[] | LanguageSupport>;
490
- "minijinja-sqlite": () => Promise<{
491
- extension: Extension;
492
- } | readonly Extension[] | LanguageSupport>;
493
- "minijinja-mssql": () => Promise<{
494
- extension: Extension;
495
- } | readonly Extension[] | LanguageSupport>;
496
- "minijinja-mariadb": () => Promise<{
497
- extension: Extension;
498
- } | readonly Extension[] | LanguageSupport>;
499
- "minijinja-plsql": () => Promise<{
500
- extension: Extension;
501
- } | readonly Extension[] | LanguageSupport>;
502
- "minijinja-cassandra": () => Promise<{
503
- extension: Extension;
504
- } | readonly Extension[] | LanguageSupport>;
505
- "minijinja-hive": () => Promise<{
506
- extension: Extension;
507
- } | readonly Extension[] | LanguageSupport>;
508
- "minijinja-sparksql": () => Promise<{
509
- extension: Extension;
510
- } | readonly Extension[] | LanguageSupport>;
511
- "minijinja-gql": () => Promise<{
512
- extension: Extension;
513
- } | readonly Extension[] | LanguageSupport>;
514
- "minijinja-gpsql": () => Promise<{
515
- extension: Extension;
516
- } | readonly Extension[] | LanguageSupport>;
517
- "minijinja-esper": () => Promise<{
518
- extension: Extension;
519
- } | readonly Extension[] | LanguageSupport>;
520
- "minijinja-toml": () => Promise<{
521
- extension: Extension;
522
- } | readonly Extension[] | LanguageSupport>;
523
- "minijinja-ini": () => Promise<{
524
- extension: Extension;
525
- } | readonly Extension[] | LanguageSupport>;
526
- "minijinja-env": () => Promise<{
527
- extension: Extension;
528
- } | readonly Extension[] | LanguageSupport>;
529
- "minijinja-shell": () => Promise<{
530
- extension: Extension;
531
- } | readonly Extension[] | LanguageSupport>;
532
- "minijinja-dockerfile": () => Promise<{
533
- extension: Extension;
534
- } | readonly Extension[] | LanguageSupport>;
535
- "minijinja-nginx": () => Promise<{
536
- extension: Extension;
537
- } | readonly Extension[] | LanguageSupport>;
538
- };
539
- /**
540
- * The language ids `<CodeMirrorEditor>` supports — exactly the keys of the loader registry.
541
- */
542
- type CodeMirrorLanguage = keyof typeof loaders;
543
- /**
544
- * Every supported language id, sorted.
545
- */
546
- declare const codeMirrorLanguages: readonly CodeMirrorLanguage[];
547
- /**
548
- * Lazily resolve a supported language id to a CodeMirror language {@link Extension}. Each
549
- * language is a separate dynamic import, so the consumer's bundler code-splits it and only
550
- * the requested grammar is fetched — the whole catalog is never loaded at once.
551
- */
552
- declare function loadLanguage(language: CodeMirrorLanguage): Promise<Extension>;
553
- //#endregion
554
- export { type CodeMirrorLanguage, ControlledEditorHost, type ControlledEditorOptions, type DocumentExtensionsOptions, type EditorContext, type IrField, type IrSchema, type IrType, type Member, codeMirrorLanguages, documentExtensions, loadLanguage, minijinjaContextField, normalizeContext, resolveMembers, searchPhrasesZhCn, setMinijinjaContext, typeAtPath };