@termaxjs/editor-core 0.1.1
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/LICENSE +201 -0
- package/README.md +274 -0
- package/dist/buffer/PieceTable.d.ts +31 -0
- package/dist/buffer/PieceTable.d.ts.map +1 -0
- package/dist/buffer/PieceTable.js +365 -0
- package/dist/buffer/PieceTable.js.map +1 -0
- package/dist/buffer/TerminalBuffer.d.ts +45 -0
- package/dist/buffer/TerminalBuffer.d.ts.map +1 -0
- package/dist/buffer/TerminalBuffer.js +166 -0
- package/dist/buffer/TerminalBuffer.js.map +1 -0
- package/dist/collab/AwarenessState.d.ts +30 -0
- package/dist/collab/AwarenessState.d.ts.map +1 -0
- package/dist/collab/AwarenessState.js +76 -0
- package/dist/collab/AwarenessState.js.map +1 -0
- package/dist/collab/CollabProvider.d.ts +45 -0
- package/dist/collab/CollabProvider.d.ts.map +1 -0
- package/dist/collab/CollabProvider.js +153 -0
- package/dist/collab/CollabProvider.js.map +1 -0
- package/dist/coordinates.d.ts +132 -0
- package/dist/coordinates.d.ts.map +1 -0
- package/dist/coordinates.js +651 -0
- package/dist/coordinates.js.map +1 -0
- package/dist/decoration/Decoration.d.ts +36 -0
- package/dist/decoration/Decoration.d.ts.map +1 -0
- package/dist/decoration/Decoration.js +34 -0
- package/dist/decoration/Decoration.js.map +1 -0
- package/dist/decoration/DecorationSet.d.ts +16 -0
- package/dist/decoration/DecorationSet.d.ts.map +1 -0
- package/dist/decoration/DecorationSet.js +54 -0
- package/dist/decoration/DecorationSet.js.map +1 -0
- package/dist/diff/diff.d.ts +27 -0
- package/dist/diff/diff.d.ts.map +1 -0
- package/dist/diff/diff.js +219 -0
- package/dist/diff/diff.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/HeightMap.d.ts +35 -0
- package/dist/layout/HeightMap.d.ts.map +1 -0
- package/dist/layout/HeightMap.js +95 -0
- package/dist/layout/HeightMap.js.map +1 -0
- package/dist/layout/softWrap.d.ts +23 -0
- package/dist/layout/softWrap.d.ts.map +1 -0
- package/dist/layout/softWrap.js +67 -0
- package/dist/layout/softWrap.js.map +1 -0
- package/dist/state/Annotation.d.ts +22 -0
- package/dist/state/Annotation.d.ts.map +1 -0
- package/dist/state/Annotation.js +38 -0
- package/dist/state/Annotation.js.map +1 -0
- package/dist/state/ChangeSet.d.ts +27 -0
- package/dist/state/ChangeSet.d.ts.map +1 -0
- package/dist/state/ChangeSet.js +162 -0
- package/dist/state/ChangeSet.js.map +1 -0
- package/dist/state/EditorState.d.ts +25 -0
- package/dist/state/EditorState.d.ts.map +1 -0
- package/dist/state/EditorState.js +110 -0
- package/dist/state/EditorState.js.map +1 -0
- package/dist/state/Extension.d.ts +16 -0
- package/dist/state/Extension.d.ts.map +1 -0
- package/dist/state/Extension.js +12 -0
- package/dist/state/Extension.js.map +1 -0
- package/dist/state/Facet.d.ts +13 -0
- package/dist/state/Facet.d.ts.map +1 -0
- package/dist/state/Facet.js +22 -0
- package/dist/state/Facet.js.map +1 -0
- package/dist/state/Keymap.d.ts +22 -0
- package/dist/state/Keymap.d.ts.map +1 -0
- package/dist/state/Keymap.js +10 -0
- package/dist/state/Keymap.js.map +1 -0
- package/dist/state/MultiCursorPaste.d.ts +14 -0
- package/dist/state/MultiCursorPaste.d.ts.map +1 -0
- package/dist/state/MultiCursorPaste.js +18 -0
- package/dist/state/MultiCursorPaste.js.map +1 -0
- package/dist/state/RectangularSelection.d.ts +12 -0
- package/dist/state/RectangularSelection.d.ts.map +1 -0
- package/dist/state/RectangularSelection.js +27 -0
- package/dist/state/RectangularSelection.js.map +1 -0
- package/dist/state/StateField.d.ts +18 -0
- package/dist/state/StateField.d.ts.map +1 -0
- package/dist/state/StateField.js +29 -0
- package/dist/state/StateField.js.map +1 -0
- package/dist/state/Transaction.d.ts +22 -0
- package/dist/state/Transaction.d.ts.map +1 -0
- package/dist/state/Transaction.js +23 -0
- package/dist/state/Transaction.js.map +1 -0
- package/dist/types.d.ts +161 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export function flattenExtensions(extension, target = []) {
|
|
2
|
+
if (Array.isArray(extension)) {
|
|
3
|
+
for (const ext of extension) {
|
|
4
|
+
flattenExtensions(ext, target);
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
else if (extension && typeof extension === "object") {
|
|
8
|
+
target.push(extension);
|
|
9
|
+
}
|
|
10
|
+
return target;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=Extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Extension.js","sourceRoot":"","sources":["../../src/state/Extension.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,iBAAiB,CAC/B,SAAoB,EACpB,SAA8D,EAAE;IAEhE,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Extension } from "./Extension.js";
|
|
2
|
+
export interface FacetConfig<Input, Output> {
|
|
3
|
+
combine: (values: Input[]) => Output;
|
|
4
|
+
static?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class Facet<Input, Output> {
|
|
7
|
+
readonly combine: (inputs: Input[]) => Output;
|
|
8
|
+
readonly isStatic: boolean;
|
|
9
|
+
private constructor();
|
|
10
|
+
static define<Input, Output = Input[]>(config?: Partial<FacetConfig<Input, Output>>): Facet<Input, Output>;
|
|
11
|
+
of(value: Input): Extension;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=Facet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Facet.d.ts","sourceRoot":"","sources":["../../src/state/Facet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,gBAAgB,CAAC;AAE/D,MAAM,WAAW,WAAW,CAAC,KAAK,EAAE,MAAM;IACxC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,KAAK,CAAC,KAAK,EAAE,MAAM;IAC9B,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,MAAM,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,OAAO;IAKP,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,EACnC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GAC3C,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC;IAOvB,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS;CAQ5B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export class Facet {
|
|
2
|
+
combine;
|
|
3
|
+
isStatic;
|
|
4
|
+
constructor(combine, isStatic = false) {
|
|
5
|
+
this.combine = combine;
|
|
6
|
+
this.isStatic = isStatic;
|
|
7
|
+
}
|
|
8
|
+
static define(config) {
|
|
9
|
+
const combine = config?.combine ||
|
|
10
|
+
((inputs) => inputs);
|
|
11
|
+
return new Facet(combine, !!config?.static);
|
|
12
|
+
}
|
|
13
|
+
of(value) {
|
|
14
|
+
const provider = {
|
|
15
|
+
type: "facet",
|
|
16
|
+
facet: this,
|
|
17
|
+
value,
|
|
18
|
+
};
|
|
19
|
+
return provider;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=Facet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Facet.js","sourceRoot":"","sources":["../../src/state/Facet.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,KAAK;IACP,OAAO,CAA8B;IACrC,QAAQ,CAAU;IAE3B,YAAoB,OAAoC,EAAE,QAAQ,GAAG,KAAK;QACxE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,MAAM,CACX,MAA4C;QAE5C,MAAM,OAAO,GACX,MAAM,EAAE,OAAO;YACd,CAAC,CAAC,MAAe,EAAE,EAAE,CAAC,MAA2B,CAAiC,CAAC;QACtF,OAAO,IAAI,KAAK,CAAgB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,EAAE,CAAC,KAAY;QACb,MAAM,QAAQ,GAAyB;YACrC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI;YACX,KAAK;SACN,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Facet } from "./Facet.js";
|
|
2
|
+
import type { Extension } from "./Extension.js";
|
|
3
|
+
import type { EditorState } from "./EditorState.js";
|
|
4
|
+
import type { Transaction } from "./Transaction.js";
|
|
5
|
+
export interface CommandTarget {
|
|
6
|
+
state: EditorState;
|
|
7
|
+
dispatch?: (tr: Transaction) => void;
|
|
8
|
+
}
|
|
9
|
+
export type Command = (target: CommandTarget) => boolean;
|
|
10
|
+
export interface KeyBinding {
|
|
11
|
+
key?: string;
|
|
12
|
+
mac?: string;
|
|
13
|
+
win?: string;
|
|
14
|
+
linux?: string;
|
|
15
|
+
run: Command;
|
|
16
|
+
preventDefault?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare const keymapFacet: Facet<KeyBinding[], KeyBinding[]>;
|
|
19
|
+
export declare const keymap: {
|
|
20
|
+
of(bindings: KeyBinding[]): Extension;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=Keymap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Keymap.d.ts","sourceRoot":"","sources":["../../src/state/Keymap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,mCAEtB,CAAC;AAEH,eAAO,MAAM,MAAM;iBACJ,UAAU,EAAE,GAAG,SAAS;CAGtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Keymap.js","sourceRoot":"","sources":["../../src/state/Keymap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAqBnC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAA6B;IAClE,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,CAAC,QAAsB;QACvB,OAAO,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Selection } from "../types.js";
|
|
2
|
+
export interface MultiCursorPasteResult {
|
|
3
|
+
/**
|
|
4
|
+
* String to insert at cursor index i.
|
|
5
|
+
*/
|
|
6
|
+
insertions: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Distributes clipboard text across multiple active cursors.
|
|
10
|
+
* If the clipboard text has N lines (split by newline) and there are N cursors,
|
|
11
|
+
* each cursor receives its corresponding line. Otherwise, the full text is pasted at all cursors.
|
|
12
|
+
*/
|
|
13
|
+
export declare function distributeMultiCursorPaste(clipboardText: string, selections: Selection[]): MultiCursorPasteResult;
|
|
14
|
+
//# sourceMappingURL=MultiCursorPaste.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiCursorPaste.d.ts","sourceRoot":"","sources":["../../src/state/MultiCursorPaste.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,SAAS,EAAE,GACtB,sBAAsB,CAcxB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Distributes clipboard text across multiple active cursors.
|
|
3
|
+
* If the clipboard text has N lines (split by newline) and there are N cursors,
|
|
4
|
+
* each cursor receives its corresponding line. Otherwise, the full text is pasted at all cursors.
|
|
5
|
+
*/
|
|
6
|
+
export function distributeMultiCursorPaste(clipboardText, selections) {
|
|
7
|
+
if (selections.length <= 1) {
|
|
8
|
+
return { insertions: [clipboardText] };
|
|
9
|
+
}
|
|
10
|
+
// Normalize newlines and split
|
|
11
|
+
const lines = clipboardText.replace(/\r\n/g, "\n").split("\n");
|
|
12
|
+
if (lines.length === selections.length) {
|
|
13
|
+
return { insertions: [...lines] };
|
|
14
|
+
}
|
|
15
|
+
// Otherwise broadcast full clipboard text to each selection
|
|
16
|
+
return { insertions: selections.map(() => clipboardText) };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=MultiCursorPaste.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiCursorPaste.js","sourceRoot":"","sources":["../../src/state/MultiCursorPaste.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,aAAqB,EACrB,UAAuB;IAEvB,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;IACzC,CAAC;IAED,+BAA+B;IAC/B,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/D,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,EAAE,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,4DAA4D;IAC5D,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Selection } from "../types.js";
|
|
2
|
+
import type { PieceTable } from "../buffer/PieceTable.js";
|
|
3
|
+
export interface BoxCoordinate {
|
|
4
|
+
line: number;
|
|
5
|
+
column: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Generates an array of Selection ranges for a 2D rectangular box selection.
|
|
9
|
+
* Spans from `start` coordinate to `end` coordinate across all intermediate lines.
|
|
10
|
+
*/
|
|
11
|
+
export declare function computeRectangularSelection(doc: PieceTable, start: BoxCoordinate, end: BoxCoordinate): Selection[];
|
|
12
|
+
//# sourceMappingURL=RectangularSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RectangularSelection.d.ts","sourceRoot":"","sources":["../../src/state/RectangularSelection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,aAAa,GACjB,SAAS,EAAE,CA4Bb"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates an array of Selection ranges for a 2D rectangular box selection.
|
|
3
|
+
* Spans from `start` coordinate to `end` coordinate across all intermediate lines.
|
|
4
|
+
*/
|
|
5
|
+
export function computeRectangularSelection(doc, start, end) {
|
|
6
|
+
const minLine = Math.min(start.line, end.line);
|
|
7
|
+
const maxLine = Math.max(start.line, end.line);
|
|
8
|
+
const minCol = Math.min(start.column, end.column);
|
|
9
|
+
const maxCol = Math.max(start.column, end.column);
|
|
10
|
+
const isReversed = start.line > end.line || (start.line === end.line && start.column > end.column);
|
|
11
|
+
const totalLines = doc.lineCount;
|
|
12
|
+
const clampedMinLine = Math.max(0, Math.min(minLine, totalLines - 1));
|
|
13
|
+
const clampedMaxLine = Math.max(0, Math.min(maxLine, totalLines - 1));
|
|
14
|
+
const selections = [];
|
|
15
|
+
for (let line = clampedMinLine; line <= clampedMaxLine; line++) {
|
|
16
|
+
const lineText = doc.getLine(line);
|
|
17
|
+
const lineLen = lineText.length;
|
|
18
|
+
const anchorCol = isReversed ? Math.min(maxCol, lineLen) : Math.min(minCol, lineLen);
|
|
19
|
+
const headCol = isReversed ? Math.min(minCol, lineLen) : Math.min(maxCol, lineLen);
|
|
20
|
+
selections.push({
|
|
21
|
+
anchor: { line, column: anchorCol },
|
|
22
|
+
head: { line, column: headCol },
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return selections;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=RectangularSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RectangularSelection.js","sourceRoot":"","sources":["../../src/state/RectangularSelection.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAe,EACf,KAAoB,EACpB,GAAkB;IAElB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,UAAU,GACd,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAElF,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC;IACjC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IAEtE,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,IAAI,IAAI,GAAG,cAAc,EAAE,IAAI,IAAI,cAAc,EAAE,IAAI,EAAE,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;QAEhC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEnF,UAAU,CAAC,IAAI,CAAC;YACd,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;YACnC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { EditorState } from "./EditorState.js";
|
|
2
|
+
import type { Transaction } from "./Transaction.js";
|
|
3
|
+
import type { Extension } from "./Extension.js";
|
|
4
|
+
export interface StateFieldConfig<Value> {
|
|
5
|
+
create: (state: EditorState) => Value;
|
|
6
|
+
update: (value: Value, transaction: Transaction) => Value;
|
|
7
|
+
compare?: (a: Value, b: Value) => boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare class StateField<Value> {
|
|
10
|
+
readonly create: (state: EditorState) => Value;
|
|
11
|
+
readonly update: (value: Value, transaction: Transaction) => Value;
|
|
12
|
+
readonly compare?: (a: Value, b: Value) => boolean;
|
|
13
|
+
private constructor();
|
|
14
|
+
static define<Value>(config: StateFieldConfig<Value>): StateField<Value>;
|
|
15
|
+
init(create: (state: EditorState) => Value): Extension;
|
|
16
|
+
get extension(): Extension;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=StateField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateField.d.ts","sourceRoot":"","sources":["../../src/state/StateField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAC;AAEpE,MAAM,WAAW,gBAAgB,CAAC,KAAK;IACrC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,KAAK,CAAC;IACtC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,KAAK,KAAK,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC;CAC3C;AAED,qBAAa,UAAU,CAAC,KAAK;IAC3B,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,KAAK,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,KAAK,KAAK,CAAC;IACnE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC;IAEnD,OAAO;IAMP,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;IAIxE,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,KAAK,GAAG,SAAS;IAStD,IAAI,SAAS,IAAI,SAAS,CAMzB;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export class StateField {
|
|
2
|
+
create;
|
|
3
|
+
update;
|
|
4
|
+
compare;
|
|
5
|
+
constructor(config) {
|
|
6
|
+
this.create = config.create;
|
|
7
|
+
this.update = config.update;
|
|
8
|
+
this.compare = config.compare;
|
|
9
|
+
}
|
|
10
|
+
static define(config) {
|
|
11
|
+
return new StateField(config);
|
|
12
|
+
}
|
|
13
|
+
init(create) {
|
|
14
|
+
const provider = {
|
|
15
|
+
type: "stateField",
|
|
16
|
+
field: this,
|
|
17
|
+
init: create,
|
|
18
|
+
};
|
|
19
|
+
return provider;
|
|
20
|
+
}
|
|
21
|
+
get extension() {
|
|
22
|
+
const provider = {
|
|
23
|
+
type: "stateField",
|
|
24
|
+
field: this,
|
|
25
|
+
};
|
|
26
|
+
return provider;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=StateField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateField.js","sourceRoot":"","sources":["../../src/state/StateField.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,UAAU;IACZ,MAAM,CAAgC;IACtC,MAAM,CAAoD;IAC1D,OAAO,CAAmC;IAEnD,YAAoB,MAA+B;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,MAAM,CAAQ,MAA+B;QAClD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,MAAqC;QACxC,MAAM,QAAQ,GAA8B;YAC1C,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,MAAM;SACb,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS;QACX,MAAM,QAAQ,GAA8B;YAC1C,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,IAAI;SACZ,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { EditorState } from "./EditorState.js";
|
|
2
|
+
import type { ChangeSet, ChangeSpec } from "./ChangeSet.js";
|
|
3
|
+
import type { Annotation, AnnotationType, StateEffect } from "./Annotation.js";
|
|
4
|
+
import type { Selection } from "../types.js";
|
|
5
|
+
export interface TransactionSpec {
|
|
6
|
+
changes?: ChangeSpec | ChangeSpec[] | ChangeSet;
|
|
7
|
+
selection?: Selection | Selection[];
|
|
8
|
+
annotations?: Annotation<any> | Annotation<any>[];
|
|
9
|
+
effects?: StateEffect<any> | StateEffect<any>[];
|
|
10
|
+
}
|
|
11
|
+
export declare class Transaction {
|
|
12
|
+
readonly startState: EditorState;
|
|
13
|
+
readonly changes: ChangeSet;
|
|
14
|
+
readonly selection?: Selection[];
|
|
15
|
+
readonly annotations: ReadonlyMap<AnnotationType<any>, any>;
|
|
16
|
+
readonly effects: ReadonlyArray<StateEffect<any>>;
|
|
17
|
+
readonly state: EditorState;
|
|
18
|
+
constructor(startState: EditorState, changes: ChangeSet, selection: Selection[] | undefined, annotations: Map<AnnotationType<any>, any>, effects: StateEffect<any>[], computeNextState: (tr: Transaction) => EditorState);
|
|
19
|
+
get docChanged(): boolean;
|
|
20
|
+
annotation<T>(type: AnnotationType<T>): T | undefined;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=Transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../src/state/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;IAClD,OAAO,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;CACjD;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;gBAG1B,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,SAAS,EAAE,GAAG,SAAS,EAClC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAC1C,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,EAC3B,gBAAgB,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,WAAW;IAUpD,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;CAGtD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export class Transaction {
|
|
2
|
+
startState;
|
|
3
|
+
changes;
|
|
4
|
+
selection;
|
|
5
|
+
annotations;
|
|
6
|
+
effects;
|
|
7
|
+
state;
|
|
8
|
+
constructor(startState, changes, selection, annotations, effects, computeNextState) {
|
|
9
|
+
this.startState = startState;
|
|
10
|
+
this.changes = changes;
|
|
11
|
+
this.selection = selection;
|
|
12
|
+
this.annotations = annotations;
|
|
13
|
+
this.effects = effects;
|
|
14
|
+
this.state = computeNextState(this);
|
|
15
|
+
}
|
|
16
|
+
get docChanged() {
|
|
17
|
+
return !this.changes.empty;
|
|
18
|
+
}
|
|
19
|
+
annotation(type) {
|
|
20
|
+
return this.annotations.get(type);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=Transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Transaction.js","sourceRoot":"","sources":["../../src/state/Transaction.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,WAAW;IACb,UAAU,CAAc;IACxB,OAAO,CAAY;IACnB,SAAS,CAAe;IACxB,WAAW,CAAwC;IACnD,OAAO,CAAkC;IACzC,KAAK,CAAc;IAE5B,YACE,UAAuB,EACvB,OAAkB,EAClB,SAAkC,EAClC,WAA0C,EAC1C,OAA2B,EAC3B,gBAAkD;QAElD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED,UAAU,CAAI,IAAuB;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;CACF"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
export interface Position {
|
|
2
|
+
line: number;
|
|
3
|
+
column: number;
|
|
4
|
+
}
|
|
5
|
+
export interface Range {
|
|
6
|
+
start: Position;
|
|
7
|
+
end: Position;
|
|
8
|
+
}
|
|
9
|
+
export interface Selection {
|
|
10
|
+
anchor: Position;
|
|
11
|
+
head: Position;
|
|
12
|
+
}
|
|
13
|
+
export interface TextChange {
|
|
14
|
+
from: number;
|
|
15
|
+
to: number;
|
|
16
|
+
insert: string;
|
|
17
|
+
}
|
|
18
|
+
export interface BufferSnapshot {
|
|
19
|
+
id: string;
|
|
20
|
+
totalLines: number;
|
|
21
|
+
totalChars: number;
|
|
22
|
+
totalBytes: number;
|
|
23
|
+
isLargeFile: boolean;
|
|
24
|
+
encoding: string;
|
|
25
|
+
}
|
|
26
|
+
export interface LineToken {
|
|
27
|
+
text: string;
|
|
28
|
+
scope: string;
|
|
29
|
+
color?: string;
|
|
30
|
+
style?: "normal" | "italic" | "bold";
|
|
31
|
+
}
|
|
32
|
+
export interface SyntaxToken {
|
|
33
|
+
from: number;
|
|
34
|
+
to: number;
|
|
35
|
+
scope: string;
|
|
36
|
+
}
|
|
37
|
+
export interface GhostText {
|
|
38
|
+
text: string;
|
|
39
|
+
position: Position;
|
|
40
|
+
}
|
|
41
|
+
export interface CodeAction {
|
|
42
|
+
title: string;
|
|
43
|
+
kind?: string;
|
|
44
|
+
isPreferred?: boolean;
|
|
45
|
+
changes?: TextChange[];
|
|
46
|
+
}
|
|
47
|
+
export interface Diagnostic {
|
|
48
|
+
range: Range;
|
|
49
|
+
severity: "error" | "warning" | "info" | "hint";
|
|
50
|
+
message: string;
|
|
51
|
+
source?: string;
|
|
52
|
+
code?: string | number;
|
|
53
|
+
tags?: ("unnecessary" | "deprecated")[];
|
|
54
|
+
actions?: CodeAction[];
|
|
55
|
+
}
|
|
56
|
+
export interface ParameterInformation {
|
|
57
|
+
label: string | [number, number];
|
|
58
|
+
documentation?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface SignatureInformation {
|
|
61
|
+
label: string;
|
|
62
|
+
documentation?: string;
|
|
63
|
+
parameters: ParameterInformation[];
|
|
64
|
+
activeParameter?: number;
|
|
65
|
+
}
|
|
66
|
+
export interface SignatureHelp {
|
|
67
|
+
signatures: SignatureInformation[];
|
|
68
|
+
activeSignature: number;
|
|
69
|
+
activeParameter: number;
|
|
70
|
+
}
|
|
71
|
+
export interface DiffChunk {
|
|
72
|
+
type: "add" | "delete" | "modify" | "equal";
|
|
73
|
+
origStart: number;
|
|
74
|
+
origCount: number;
|
|
75
|
+
modStart: number;
|
|
76
|
+
modCount: number;
|
|
77
|
+
originalLines: string[];
|
|
78
|
+
modifiedLines: string[];
|
|
79
|
+
charChanges?: Array<{
|
|
80
|
+
origCol: number;
|
|
81
|
+
origLen: number;
|
|
82
|
+
modCol: number;
|
|
83
|
+
modLen: number;
|
|
84
|
+
}>;
|
|
85
|
+
}
|
|
86
|
+
export interface DiffResult {
|
|
87
|
+
chunks: DiffChunk[];
|
|
88
|
+
additions: number;
|
|
89
|
+
deletions: number;
|
|
90
|
+
}
|
|
91
|
+
export interface FoldRange {
|
|
92
|
+
startLine: number;
|
|
93
|
+
endLine: number;
|
|
94
|
+
}
|
|
95
|
+
export interface CompletionItem {
|
|
96
|
+
label: string;
|
|
97
|
+
kind?: "keyword" | "function" | "variable" | "class" | "interface" | "property" | "snippet" | "text";
|
|
98
|
+
detail?: string;
|
|
99
|
+
documentation?: string;
|
|
100
|
+
insertText?: string;
|
|
101
|
+
}
|
|
102
|
+
export interface EditorTheme {
|
|
103
|
+
name: string;
|
|
104
|
+
background: string;
|
|
105
|
+
foreground: string;
|
|
106
|
+
lineHighlight?: string;
|
|
107
|
+
activeLine?: string;
|
|
108
|
+
lineNumber?: string;
|
|
109
|
+
lineNumberActive?: string;
|
|
110
|
+
caret?: string;
|
|
111
|
+
cursor?: string;
|
|
112
|
+
selection?: string;
|
|
113
|
+
border?: string;
|
|
114
|
+
gutterBackground?: string;
|
|
115
|
+
gutterForeground?: string;
|
|
116
|
+
gutterActiveForeground?: string;
|
|
117
|
+
foldIconColor?: string;
|
|
118
|
+
indentGuide?: string;
|
|
119
|
+
indentGuideActive?: string;
|
|
120
|
+
tokens?: Record<string, string>;
|
|
121
|
+
syntax?: Record<string, string>;
|
|
122
|
+
}
|
|
123
|
+
export interface ViewportState {
|
|
124
|
+
scrollTop: number;
|
|
125
|
+
scrollLeft: number;
|
|
126
|
+
viewportWidth: number;
|
|
127
|
+
viewportHeight: number;
|
|
128
|
+
startLine: number;
|
|
129
|
+
endLine: number;
|
|
130
|
+
lineHeight: number;
|
|
131
|
+
charWidth: number;
|
|
132
|
+
}
|
|
133
|
+
export interface IEditorHostAdapter {
|
|
134
|
+
openBuffer(id: string, content: string, isFile?: boolean): Promise<BufferSnapshot>;
|
|
135
|
+
closeBuffer(id: string): Promise<void>;
|
|
136
|
+
getLines(id: string, startLine: number, count: number): Promise<string[]>;
|
|
137
|
+
/**
|
|
138
|
+
* Offsets are UTF-16 code units (JS `string.length` / `slice` indexing),
|
|
139
|
+
* matching what the React tier computes. The Rust tier converts them to
|
|
140
|
+
* char indices at its boundary (`RopeBuffer::utf16_range_to_char_range`),
|
|
141
|
+
* so astral characters (emoji, CJK extensions) stay in sync across tiers.
|
|
142
|
+
*/
|
|
143
|
+
applyEdit(id: string, charOffset: number, deleteLen: number, insertText: string): Promise<void>;
|
|
144
|
+
undo(id: string): Promise<boolean>;
|
|
145
|
+
redo(id: string): Promise<boolean>;
|
|
146
|
+
getContent(id: string): Promise<string>;
|
|
147
|
+
saveBuffer?(id: string, targetPath: string): Promise<void>;
|
|
148
|
+
}
|
|
149
|
+
export interface ILanguageAdapter {
|
|
150
|
+
tokenize(language: string, lines: string[], startLine?: number): Promise<Map<number, LineToken[]>> | Map<number, LineToken[]>;
|
|
151
|
+
getFoldRanges?(language: string, totalLines: number, getLine: (line: number) => string): Promise<FoldRange[]> | FoldRange[];
|
|
152
|
+
getDiagnostics?(language: string, content: string, filePath?: string): Promise<Diagnostic[]>;
|
|
153
|
+
formatDocument?(language: string, content: string): Promise<string>;
|
|
154
|
+
provideCompletionItems?(language: string, position: Position, prefix: string): Promise<CompletionItem[]>;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Default undo depth shared by every tier. The Rust side mirrors this value
|
|
158
|
+
* via `DEFAULT_UNDO_DEPTH` in `termax-editor-core`; keep the two in sync.
|
|
159
|
+
*/
|
|
160
|
+
export declare const DEFAULT_UNDO_DEPTH = 50;
|
|
161
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAoMA;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@termaxjs/editor-core",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Headless core data structures, models, and coordinate math for TermaxEditor",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"type": "module",
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"typescript": "^5.7.2",
|
|
18
|
+
"vitest": "^3.0.5"
|
|
19
|
+
},
|
|
20
|
+
"license": "Apache-2.0",
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"LICENSE",
|
|
24
|
+
"README.md"
|
|
25
|
+
],
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"scripts": {
|
|
30
|
+
"build": "tsc",
|
|
31
|
+
"check-types": "tsc --noEmit",
|
|
32
|
+
"test": "vitest run --passWithNoTests",
|
|
33
|
+
"bench": "vitest bench --run",
|
|
34
|
+
"bench:core": "node benchmarks/runner.mjs",
|
|
35
|
+
"bench:terminal": "node benchmarks/terminal_streaming.bench.mjs",
|
|
36
|
+
"bench:buffer": "node benchmarks/piece_table.bench.mjs"
|
|
37
|
+
}
|
|
38
|
+
}
|