@doxi/core 0.11.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/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/collab/port.d.ts +46 -0
- package/dist/collab/port.d.ts.map +1 -0
- package/dist/collab/port.js +11 -0
- package/dist/collab/port.js.map +1 -0
- package/dist/commands/block-commands.d.ts +62 -0
- package/dist/commands/block-commands.d.ts.map +1 -0
- package/dist/commands/block-commands.js +208 -0
- package/dist/commands/block-commands.js.map +1 -0
- package/dist/commands/command.d.ts +13 -0
- package/dist/commands/command.d.ts.map +1 -0
- package/dist/commands/command.js +13 -0
- package/dist/commands/command.js.map +1 -0
- package/dist/commands/edit-commands.d.ts +5 -0
- package/dist/commands/edit-commands.d.ts.map +1 -0
- package/dist/commands/edit-commands.js +147 -0
- package/dist/commands/edit-commands.js.map +1 -0
- package/dist/commands/image-commands.d.ts +31 -0
- package/dist/commands/image-commands.d.ts.map +1 -0
- package/dist/commands/image-commands.js +130 -0
- package/dist/commands/image-commands.js.map +1 -0
- package/dist/commands/index.d.ts +11 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +11 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/keymap.d.ts +34 -0
- package/dist/commands/keymap.d.ts.map +1 -0
- package/dist/commands/keymap.js +84 -0
- package/dist/commands/keymap.js.map +1 -0
- package/dist/commands/link-commands.d.ts +54 -0
- package/dist/commands/link-commands.d.ts.map +1 -0
- package/dist/commands/link-commands.js +151 -0
- package/dist/commands/link-commands.js.map +1 -0
- package/dist/commands/list-commands.d.ts +42 -0
- package/dist/commands/list-commands.d.ts.map +1 -0
- package/dist/commands/list-commands.js +316 -0
- package/dist/commands/list-commands.js.map +1 -0
- package/dist/commands/mark-commands.d.ts +53 -0
- package/dist/commands/mark-commands.d.ts.map +1 -0
- package/dist/commands/mark-commands.js +181 -0
- package/dist/commands/mark-commands.js.map +1 -0
- package/dist/commands/selection-commands.d.ts +3 -0
- package/dist/commands/selection-commands.d.ts.map +1 -0
- package/dist/commands/selection-commands.js +11 -0
- package/dist/commands/selection-commands.js.map +1 -0
- package/dist/commands/table-commands.d.ts +109 -0
- package/dist/commands/table-commands.d.ts.map +1 -0
- package/dist/commands/table-commands.js +884 -0
- package/dist/commands/table-commands.js.map +1 -0
- package/dist/history/history.d.ts +40 -0
- package/dist/history/history.d.ts.map +1 -0
- package/dist/history/history.js +139 -0
- package/dist/history/history.js.map +1 -0
- package/dist/history/index.d.ts +2 -0
- package/dist/history/index.d.ts.map +1 -0
- package/dist/history/index.js +2 -0
- package/dist/history/index.js.map +1 -0
- package/dist/html/index.d.ts +3 -0
- package/dist/html/index.d.ts.map +1 -0
- package/dist/html/index.js +3 -0
- package/dist/html/index.js.map +1 -0
- package/dist/html/parse.d.ts +4 -0
- package/dist/html/parse.d.ts.map +1 -0
- package/dist/html/parse.js +0 -0
- package/dist/html/parse.js.map +1 -0
- package/dist/html/serialize.d.ts +4 -0
- package/dist/html/serialize.d.ts.map +1 -0
- package/dist/html/serialize.js +75 -0
- package/dist/html/serialize.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/layout/index.d.ts +6 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +6 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/layout-engine.d.ts +20 -0
- package/dist/layout/layout-engine.d.ts.map +1 -0
- package/dist/layout/layout-engine.js +198 -0
- package/dist/layout/layout-engine.js.map +1 -0
- package/dist/layout/measure.d.ts +9 -0
- package/dist/layout/measure.d.ts.map +1 -0
- package/dist/layout/measure.js +37 -0
- package/dist/layout/measure.js.map +1 -0
- package/dist/layout/split-paragraph.d.ts +28 -0
- package/dist/layout/split-paragraph.d.ts.map +1 -0
- package/dist/layout/split-paragraph.js +122 -0
- package/dist/layout/split-paragraph.js.map +1 -0
- package/dist/layout/split-table.d.ts +46 -0
- package/dist/layout/split-table.d.ts.map +1 -0
- package/dist/layout/split-table.js +84 -0
- package/dist/layout/split-table.js.map +1 -0
- package/dist/layout/types.d.ts +73 -0
- package/dist/layout/types.d.ts.map +1 -0
- package/dist/layout/types.js +36 -0
- package/dist/layout/types.js.map +1 -0
- package/dist/layout/widow-orphan.d.ts +15 -0
- package/dist/layout/widow-orphan.d.ts.map +1 -0
- package/dist/layout/widow-orphan.js +14 -0
- package/dist/layout/widow-orphan.js.map +1 -0
- package/dist/model/content-expr.d.ts +32 -0
- package/dist/model/content-expr.d.ts.map +1 -0
- package/dist/model/content-expr.js +106 -0
- package/dist/model/content-expr.js.map +1 -0
- package/dist/model/fragment.d.ts +17 -0
- package/dist/model/fragment.d.ts.map +1 -0
- package/dist/model/fragment.js +44 -0
- package/dist/model/fragment.js.map +1 -0
- package/dist/model/index.d.ts +10 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +10 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/mark.d.ts +35 -0
- package/dist/model/mark.d.ts.map +1 -0
- package/dist/model/mark.js +89 -0
- package/dist/model/mark.js.map +1 -0
- package/dist/model/node-type.d.ts +36 -0
- package/dist/model/node-type.d.ts.map +1 -0
- package/dist/model/node-type.js +14 -0
- package/dist/model/node-type.js.map +1 -0
- package/dist/model/node.d.ts +36 -0
- package/dist/model/node.d.ts.map +1 -0
- package/dist/model/node.js +192 -0
- package/dist/model/node.js.map +1 -0
- package/dist/model/position.d.ts +66 -0
- package/dist/model/position.d.ts.map +1 -0
- package/dist/model/position.js +158 -0
- package/dist/model/position.js.map +1 -0
- package/dist/model/schema.d.ts +28 -0
- package/dist/model/schema.d.ts.map +1 -0
- package/dist/model/schema.js +195 -0
- package/dist/model/schema.js.map +1 -0
- package/dist/model/slice.d.ts +26 -0
- package/dist/model/slice.d.ts.map +1 -0
- package/dist/model/slice.js +56 -0
- package/dist/model/slice.js.map +1 -0
- package/dist/model/table-grid.d.ts +71 -0
- package/dist/model/table-grid.d.ts.map +1 -0
- package/dist/model/table-grid.js +130 -0
- package/dist/model/table-grid.js.map +1 -0
- package/dist/plugin/index.d.ts +3 -0
- package/dist/plugin/index.d.ts.map +1 -0
- package/dist/plugin/index.js +3 -0
- package/dist/plugin/index.js.map +1 -0
- package/dist/plugin/plugin-key.d.ts +13 -0
- package/dist/plugin/plugin-key.d.ts.map +1 -0
- package/dist/plugin/plugin-key.js +13 -0
- package/dist/plugin/plugin-key.js.map +1 -0
- package/dist/plugin/plugin-state.d.ts +2 -0
- package/dist/plugin/plugin-state.d.ts.map +1 -0
- package/dist/plugin/plugin-state.js +3 -0
- package/dist/plugin/plugin-state.js.map +1 -0
- package/dist/plugin/plugin.d.ts +39 -0
- package/dist/plugin/plugin.d.ts.map +1 -0
- package/dist/plugin/plugin.js +10 -0
- package/dist/plugin/plugin.js.map +1 -0
- package/dist/schema/default.d.ts +163 -0
- package/dist/schema/default.d.ts.map +1 -0
- package/dist/schema/default.js +94 -0
- package/dist/schema/default.js.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/serialize/index.d.ts +2 -0
- package/dist/serialize/index.d.ts.map +1 -0
- package/dist/serialize/index.js +2 -0
- package/dist/serialize/index.js.map +1 -0
- package/dist/serialize/json.d.ts +15 -0
- package/dist/serialize/json.d.ts.map +1 -0
- package/dist/serialize/json.js +23 -0
- package/dist/serialize/json.js.map +1 -0
- package/dist/state/all-selection.d.ts +11 -0
- package/dist/state/all-selection.d.ts.map +1 -0
- package/dist/state/all-selection.js +17 -0
- package/dist/state/all-selection.js.map +1 -0
- package/dist/state/cell-selection.d.ts +30 -0
- package/dist/state/cell-selection.d.ts.map +1 -0
- package/dist/state/cell-selection.js +38 -0
- package/dist/state/cell-selection.js.map +1 -0
- package/dist/state/editor-state.d.ts +46 -0
- package/dist/state/editor-state.d.ts.map +1 -0
- package/dist/state/editor-state.js +211 -0
- package/dist/state/editor-state.js.map +1 -0
- package/dist/state/index.d.ts +7 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +7 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/node-selection.d.ts +16 -0
- package/dist/state/node-selection.d.ts.map +1 -0
- package/dist/state/node-selection.js +51 -0
- package/dist/state/node-selection.js.map +1 -0
- package/dist/state/selection.d.ts +29 -0
- package/dist/state/selection.d.ts.map +1 -0
- package/dist/state/selection.js +24 -0
- package/dist/state/selection.js.map +1 -0
- package/dist/state/text-selection.d.ts +10 -0
- package/dist/state/text-selection.d.ts.map +1 -0
- package/dist/state/text-selection.js +26 -0
- package/dist/state/text-selection.js.map +1 -0
- package/dist/transform/attr-step.d.ts +16 -0
- package/dist/transform/attr-step.d.ts.map +1 -0
- package/dist/transform/attr-step.js +98 -0
- package/dist/transform/attr-step.js.map +1 -0
- package/dist/transform/index.d.ts +10 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/index.js +10 -0
- package/dist/transform/index.js.map +1 -0
- package/dist/transform/mapping.d.ts +44 -0
- package/dist/transform/mapping.d.ts.map +1 -0
- package/dist/transform/mapping.js +101 -0
- package/dist/transform/mapping.js.map +1 -0
- package/dist/transform/mark-step.d.ts +27 -0
- package/dist/transform/mark-step.d.ts.map +1 -0
- package/dist/transform/mark-step.js +146 -0
- package/dist/transform/mark-step.js.map +1 -0
- package/dist/transform/replace-around-step.d.ts +35 -0
- package/dist/transform/replace-around-step.d.ts.map +1 -0
- package/dist/transform/replace-around-step.js +144 -0
- package/dist/transform/replace-around-step.js.map +1 -0
- package/dist/transform/replace-step.d.ts +17 -0
- package/dist/transform/replace-step.d.ts.map +1 -0
- package/dist/transform/replace-step.js +72 -0
- package/dist/transform/replace-step.js.map +1 -0
- package/dist/transform/replace.d.ts +18 -0
- package/dist/transform/replace.d.ts.map +1 -0
- package/dist/transform/replace.js +132 -0
- package/dist/transform/replace.js.map +1 -0
- package/dist/transform/set-page-meta-step.d.ts +42 -0
- package/dist/transform/set-page-meta-step.d.ts.map +1 -0
- package/dist/transform/set-page-meta-step.js +75 -0
- package/dist/transform/set-page-meta-step.js.map +1 -0
- package/dist/transform/step.d.ts +34 -0
- package/dist/transform/step.d.ts.map +1 -0
- package/dist/transform/step.js +23 -0
- package/dist/transform/step.js.map +1 -0
- package/dist/transform/transaction.d.ts +20 -0
- package/dist/transform/transaction.d.ts.map +1 -0
- package/dist/transform/transaction.js +38 -0
- package/dist/transform/transaction.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/view/cell-drag.d.ts +33 -0
- package/dist/view/cell-drag.d.ts.map +1 -0
- package/dist/view/cell-drag.js +177 -0
- package/dist/view/cell-drag.js.map +1 -0
- package/dist/view/clipboard.d.ts +5 -0
- package/dist/view/clipboard.d.ts.map +1 -0
- package/dist/view/clipboard.js +97 -0
- package/dist/view/clipboard.js.map +1 -0
- package/dist/view/default-renderer.d.ts +3 -0
- package/dist/view/default-renderer.d.ts.map +1 -0
- package/dist/view/default-renderer.js +142 -0
- package/dist/view/default-renderer.js.map +1 -0
- package/dist/view/dom-spec.d.ts +11 -0
- package/dist/view/dom-spec.d.ts.map +1 -0
- package/dist/view/dom-spec.js +32 -0
- package/dist/view/dom-spec.js.map +1 -0
- package/dist/view/editor-view.d.ts +55 -0
- package/dist/view/editor-view.d.ts.map +1 -0
- package/dist/view/editor-view.js +143 -0
- package/dist/view/editor-view.js.map +1 -0
- package/dist/view/image-resize.d.ts +37 -0
- package/dist/view/image-resize.d.ts.map +1 -0
- package/dist/view/image-resize.js +191 -0
- package/dist/view/image-resize.js.map +1 -0
- package/dist/view/index.d.ts +15 -0
- package/dist/view/index.d.ts.map +1 -0
- package/dist/view/index.js +15 -0
- package/dist/view/index.js.map +1 -0
- package/dist/view/input-pipeline.d.ts +24 -0
- package/dist/view/input-pipeline.d.ts.map +1 -0
- package/dist/view/input-pipeline.js +226 -0
- package/dist/view/input-pipeline.js.map +1 -0
- package/dist/view/mutation-observer.d.ts +17 -0
- package/dist/view/mutation-observer.d.ts.map +1 -0
- package/dist/view/mutation-observer.js +62 -0
- package/dist/view/mutation-observer.js.map +1 -0
- package/dist/view/page-slots.d.ts +56 -0
- package/dist/view/page-slots.d.ts.map +1 -0
- package/dist/view/page-slots.js +230 -0
- package/dist/view/page-slots.js.map +1 -0
- package/dist/view/paginator.d.ts +17 -0
- package/dist/view/paginator.d.ts.map +1 -0
- package/dist/view/paginator.js +93 -0
- package/dist/view/paginator.js.map +1 -0
- package/dist/view/print.d.ts +42 -0
- package/dist/view/print.d.ts.map +1 -0
- package/dist/view/print.js +70 -0
- package/dist/view/print.js.map +1 -0
- package/dist/view/reconcile.d.ts +16 -0
- package/dist/view/reconcile.d.ts.map +1 -0
- package/dist/view/reconcile.js +158 -0
- package/dist/view/reconcile.js.map +1 -0
- package/dist/view/renderer.d.ts +31 -0
- package/dist/view/renderer.d.ts.map +1 -0
- package/dist/view/renderer.js +89 -0
- package/dist/view/renderer.js.map +1 -0
- package/dist/view/selection-sync.d.ts +35 -0
- package/dist/view/selection-sync.d.ts.map +1 -0
- package/dist/view/selection-sync.js +324 -0
- package/dist/view/selection-sync.js.map +1 -0
- package/dist/view/table-resize.d.ts +41 -0
- package/dist/view/table-resize.d.ts.map +1 -0
- package/dist/view/table-resize.js +216 -0
- package/dist/view/table-resize.js.map +1 -0
- package/package.json +93 -0
- package/styles/base.css +269 -0
- package/styles/dark.css +36 -0
- package/styles/light.css +13 -0
- package/styles/page.css +93 -0
- package/styles/print-a4.css +87 -0
- package/styles/print.css +88 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/model/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Fragment } from './fragment.js';
|
|
2
|
+
import { DxNode, type NodeJSON } from './node.js';
|
|
3
|
+
import type { Schema } from './schema.js';
|
|
4
|
+
export interface SliceJSON {
|
|
5
|
+
content: NodeJSON[];
|
|
6
|
+
openStart: number;
|
|
7
|
+
openEnd: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class Slice {
|
|
10
|
+
readonly content: Fragment;
|
|
11
|
+
readonly openStart: number;
|
|
12
|
+
readonly openEnd: number;
|
|
13
|
+
static readonly empty: Slice;
|
|
14
|
+
constructor(content: Fragment, openStart: number, openEnd: number);
|
|
15
|
+
/** Total token size of the slice. openStart/openEnd subtract boundary tokens that aren't really there. */
|
|
16
|
+
get size(): number;
|
|
17
|
+
toJSON(): SliceJSON;
|
|
18
|
+
static fromJSON(schema: Schema, json: SliceJSON): Slice;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Extracts a slice of `root` between absolute positions `from` and `to`.
|
|
22
|
+
* v0.1 implementation: only supports same-depth slices (sufficient for inline paste/cut).
|
|
23
|
+
* Deeper structural slicing arrives in Track B alongside ReplaceStep.
|
|
24
|
+
*/
|
|
25
|
+
export declare function sliceBetween(root: DxNode, from: number, to: number): Slice;
|
|
26
|
+
//# sourceMappingURL=slice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice.d.ts","sourceRoot":"","sources":["../../src/model/slice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,QAAQ,EAAE,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,KAAK;IAId,QAAQ,CAAC,OAAO,EAAE,QAAQ;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM;IAL1B,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAkC;gBAG5C,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM;IAG1B,0GAA0G;IAC1G,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,MAAM,IAAI,SAAS;IAQnB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK;CAQxD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAe1E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Fragment } from './fragment.js';
|
|
2
|
+
import { DxNode } from './node.js';
|
|
3
|
+
import { resolve } from './position.js';
|
|
4
|
+
export class Slice {
|
|
5
|
+
content;
|
|
6
|
+
openStart;
|
|
7
|
+
openEnd;
|
|
8
|
+
static empty = new Slice(Fragment.empty, 0, 0);
|
|
9
|
+
constructor(content, openStart, openEnd) {
|
|
10
|
+
this.content = content;
|
|
11
|
+
this.openStart = openStart;
|
|
12
|
+
this.openEnd = openEnd;
|
|
13
|
+
}
|
|
14
|
+
/** Total token size of the slice. openStart/openEnd subtract boundary tokens that aren't really there. */
|
|
15
|
+
get size() {
|
|
16
|
+
return this.content.size - this.openStart - this.openEnd;
|
|
17
|
+
}
|
|
18
|
+
toJSON() {
|
|
19
|
+
return {
|
|
20
|
+
content: this.content.children.map((c) => c.toJSON()),
|
|
21
|
+
openStart: this.openStart,
|
|
22
|
+
openEnd: this.openEnd,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
static fromJSON(schema, json) {
|
|
26
|
+
const types = {};
|
|
27
|
+
for (const name of Object.keys(schema.nodes)) {
|
|
28
|
+
types[name] = schema.nodes[name];
|
|
29
|
+
}
|
|
30
|
+
const children = json.content.map((c) => DxNode.fromJSON(types, c));
|
|
31
|
+
return new Slice(Fragment.from(children), json.openStart, json.openEnd);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Extracts a slice of `root` between absolute positions `from` and `to`.
|
|
36
|
+
* v0.1 implementation: only supports same-depth slices (sufficient for inline paste/cut).
|
|
37
|
+
* Deeper structural slicing arrives in Track B alongside ReplaceStep.
|
|
38
|
+
*/
|
|
39
|
+
export function sliceBetween(root, from, to) {
|
|
40
|
+
if (from === to)
|
|
41
|
+
return Slice.empty;
|
|
42
|
+
if (from > to)
|
|
43
|
+
throw new RangeError('sliceBetween: from must be <= to');
|
|
44
|
+
const rFrom = resolve(root, from);
|
|
45
|
+
const rTo = resolve(root, to);
|
|
46
|
+
if (rFrom.depth !== rTo.depth) {
|
|
47
|
+
throw new Error('sliceBetween: v0.1 supports same-depth slices only (Track B will lift this)');
|
|
48
|
+
}
|
|
49
|
+
const depth = rFrom.depth;
|
|
50
|
+
const parent = rFrom.parent;
|
|
51
|
+
const a = rFrom.parentOffset;
|
|
52
|
+
const b = rTo.parentOffset;
|
|
53
|
+
const cut = parent.cut(a, b);
|
|
54
|
+
return new Slice(cut.content, depth, depth);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=slice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../src/model/slice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAA;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AASvC,MAAM,OAAO,KAAK;IAIL;IACA;IACA;IALX,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAEvD,YACW,OAAiB,EACjB,SAAiB,EACjB,OAAe;QAFf,YAAO,GAAP,OAAO,CAAU;QACjB,cAAS,GAAT,SAAS,CAAQ;QACjB,YAAO,GAAP,OAAO,CAAQ;IACvB,CAAC;IAEJ,0GAA0G;IAC1G,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAA;IAC1D,CAAC;IAED,MAAM;QACJ,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAY,CAAC,MAAM,EAAE,CAAC;YACjE,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAA;IACH,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,IAAe;QAC7C,MAAM,KAAK,GAA6B,EAAE,CAAA;QAC1C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,GAAI,MAAM,CAAC,KAAkC,CAAC,IAAI,CAAE,CAAA;QACjE,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QACnE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACzE,CAAC;;AAGH;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,EAAU;IACjE,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC,KAAK,CAAA;IACnC,IAAI,IAAI,GAAG,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAAA;IAEvE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC7B,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;IAChG,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;IACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAA;IAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAA;IAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5B,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAC7C,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { DxNode } from './node.js';
|
|
2
|
+
/**
|
|
3
|
+
* tableGrid — build a logical grid view of a `table` node, accounting for
|
|
4
|
+
* `colspan` and `rowspan` on each cell.
|
|
5
|
+
*
|
|
6
|
+
* The grid is logical: every (row, col) coordinate is mapped to a single
|
|
7
|
+
* master cell. Spanned coordinates resolve to the same master.
|
|
8
|
+
*
|
|
9
|
+
* Used by CellSelection-aware commands (merge, split, per-cell ops) and by
|
|
10
|
+
* column-resize math when spans are present.
|
|
11
|
+
*/
|
|
12
|
+
export interface TableGridCell {
|
|
13
|
+
readonly node: DxNode;
|
|
14
|
+
/** Absolute model position of this cell's [open] token in the doc. */
|
|
15
|
+
readonly pos: number;
|
|
16
|
+
/** Logical row index (0-based) of the cell's MASTER (top-left) slot. */
|
|
17
|
+
readonly row: number;
|
|
18
|
+
/** Logical column index (0-based) of the cell's MASTER (top-left) slot. */
|
|
19
|
+
readonly col: number;
|
|
20
|
+
readonly rowspan: number;
|
|
21
|
+
readonly colspan: number;
|
|
22
|
+
}
|
|
23
|
+
export interface TableGrid {
|
|
24
|
+
readonly rows: number;
|
|
25
|
+
readonly cols: number;
|
|
26
|
+
/** All distinct cells in document order. */
|
|
27
|
+
readonly cells: ReadonlyArray<TableGridCell>;
|
|
28
|
+
/**
|
|
29
|
+
* Returns the cell occupying (row, col) — for spanned cells, this is the
|
|
30
|
+
* MASTER cell. Returns null when (row, col) is out of range.
|
|
31
|
+
*/
|
|
32
|
+
cellAt(row: number, col: number): TableGridCell | null;
|
|
33
|
+
/**
|
|
34
|
+
* Returns the model positions of every distinct cell whose master lies
|
|
35
|
+
* within the rectangle `[r0..r1] x [c0..c1]` (inclusive). Used by
|
|
36
|
+
* CellSelection-aware operations to enumerate the selected cells.
|
|
37
|
+
*
|
|
38
|
+
* Cells whose masters sit OUTSIDE the rectangle but whose spans intrude
|
|
39
|
+
* into it are NOT included by this helper. Track A is expected to widen
|
|
40
|
+
* the rect first (see notes in cell-selection.ts) before calling.
|
|
41
|
+
*/
|
|
42
|
+
cellPositionsInRect(r0: number, r1: number, c0: number, c1: number): number[];
|
|
43
|
+
/** Find a cell by its master position. Returns null if not present. */
|
|
44
|
+
byPos(pos: number): TableGridCell | null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build a logical grid from a `table` node. `tableStart` is the absolute
|
|
48
|
+
* model position of the table's [open] token. Cell positions emitted by the
|
|
49
|
+
* grid are absolute model positions of each cell's [open] token.
|
|
50
|
+
*
|
|
51
|
+
* Algorithm — top-to-bottom row walk + free-column scan:
|
|
52
|
+
* - Maintain a 2D `occupied[row][col]` matrix.
|
|
53
|
+
* - For each row r, walk that row's child cells in document order. For
|
|
54
|
+
* each cell, find the next free column c (scanning left-to-right). Plant
|
|
55
|
+
* the master cell at (r, c) and mark every slot in the rowspan x colspan
|
|
56
|
+
* rectangle as occupied by that master's index.
|
|
57
|
+
* - This handles colspans (cells skip over their own slots in the same
|
|
58
|
+
* row) and rowspans (subsequent rows pre-skip the occupied slots).
|
|
59
|
+
*
|
|
60
|
+
* Why this approach: it mirrors how spans are stored in HTML (per-row child
|
|
61
|
+
* lists, masters live in the row where they begin) and matches how
|
|
62
|
+
* ProseMirror's table grid is computed. It is O(rows x cols) time and
|
|
63
|
+
* O(rows x cols) space, which is fine for any realistic table.
|
|
64
|
+
*
|
|
65
|
+
* If the input is malformed (e.g. spans that would overflow `cols`), we
|
|
66
|
+
* widen `cols` greedily as new masters force the issue. This keeps the
|
|
67
|
+
* function total — callers can decide whether to consider the result
|
|
68
|
+
* pathological.
|
|
69
|
+
*/
|
|
70
|
+
export declare function tableGrid(table: DxNode, tableStart: number): TableGrid;
|
|
71
|
+
//# sourceMappingURL=table-grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-grid.d.ts","sourceRoot":"","sources":["../../src/model/table-grid.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,wEAAwE;IACxE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IAC5C;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAA;IACtD;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC7E,uEAAuE;IACvE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAA;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,CAsGtE"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a logical grid from a `table` node. `tableStart` is the absolute
|
|
3
|
+
* model position of the table's [open] token. Cell positions emitted by the
|
|
4
|
+
* grid are absolute model positions of each cell's [open] token.
|
|
5
|
+
*
|
|
6
|
+
* Algorithm — top-to-bottom row walk + free-column scan:
|
|
7
|
+
* - Maintain a 2D `occupied[row][col]` matrix.
|
|
8
|
+
* - For each row r, walk that row's child cells in document order. For
|
|
9
|
+
* each cell, find the next free column c (scanning left-to-right). Plant
|
|
10
|
+
* the master cell at (r, c) and mark every slot in the rowspan x colspan
|
|
11
|
+
* rectangle as occupied by that master's index.
|
|
12
|
+
* - This handles colspans (cells skip over their own slots in the same
|
|
13
|
+
* row) and rowspans (subsequent rows pre-skip the occupied slots).
|
|
14
|
+
*
|
|
15
|
+
* Why this approach: it mirrors how spans are stored in HTML (per-row child
|
|
16
|
+
* lists, masters live in the row where they begin) and matches how
|
|
17
|
+
* ProseMirror's table grid is computed. It is O(rows x cols) time and
|
|
18
|
+
* O(rows x cols) space, which is fine for any realistic table.
|
|
19
|
+
*
|
|
20
|
+
* If the input is malformed (e.g. spans that would overflow `cols`), we
|
|
21
|
+
* widen `cols` greedily as new masters force the issue. This keeps the
|
|
22
|
+
* function total — callers can decide whether to consider the result
|
|
23
|
+
* pathological.
|
|
24
|
+
*/
|
|
25
|
+
export function tableGrid(table, tableStart) {
|
|
26
|
+
const rowCount = table.content.childCount;
|
|
27
|
+
const cells = [];
|
|
28
|
+
// 2D occupancy map storing the index into `cells` of the master that
|
|
29
|
+
// covers each slot. `-1` means free. We size lazily — each row pushes a
|
|
30
|
+
// fresh array sized to the current `cols`, then we may expand `cols` when
|
|
31
|
+
// a master forces a wider grid.
|
|
32
|
+
const occupied = [];
|
|
33
|
+
let cols = 0;
|
|
34
|
+
const ensureCols = (n) => {
|
|
35
|
+
if (n <= cols)
|
|
36
|
+
return;
|
|
37
|
+
for (const row of occupied) {
|
|
38
|
+
while (row.length < n)
|
|
39
|
+
row.push(-1);
|
|
40
|
+
}
|
|
41
|
+
cols = n;
|
|
42
|
+
};
|
|
43
|
+
// tableStart points at table[open]; first row[open] = tableStart + 1.
|
|
44
|
+
let rowOpenPos = tableStart + 1;
|
|
45
|
+
for (let r = 0; r < rowCount; r++) {
|
|
46
|
+
const row = table.content.child(r);
|
|
47
|
+
// Make sure the occupancy matrix has a row for this index.
|
|
48
|
+
if (occupied.length <= r) {
|
|
49
|
+
occupied.push(new Array(cols).fill(-1));
|
|
50
|
+
}
|
|
51
|
+
// row[open] sits at rowOpenPos; first cell[open] sits at rowOpenPos + 1.
|
|
52
|
+
let cellOpenPos = rowOpenPos + 1;
|
|
53
|
+
let scanCol = 0;
|
|
54
|
+
for (let cIdx = 0; cIdx < row.content.childCount; cIdx++) {
|
|
55
|
+
const cell = row.content.child(cIdx);
|
|
56
|
+
const colspan = Math.max(1, cell.attrs.colspan ?? 1);
|
|
57
|
+
const rowspan = Math.max(1, cell.attrs.rowspan ?? 1);
|
|
58
|
+
// Find the next free column in row r.
|
|
59
|
+
const rowOcc = occupied[r];
|
|
60
|
+
while (scanCol < cols && rowOcc[scanCol] !== -1)
|
|
61
|
+
scanCol++;
|
|
62
|
+
const masterCol = scanCol;
|
|
63
|
+
const masterRow = r;
|
|
64
|
+
// Grow cols if this master extends past the current width.
|
|
65
|
+
ensureCols(masterCol + colspan);
|
|
66
|
+
// Ensure occupancy rows exist down to masterRow + rowspan - 1.
|
|
67
|
+
while (occupied.length < masterRow + rowspan) {
|
|
68
|
+
occupied.push(new Array(cols).fill(-1));
|
|
69
|
+
}
|
|
70
|
+
const masterIdx = cells.length;
|
|
71
|
+
cells.push({
|
|
72
|
+
node: cell,
|
|
73
|
+
pos: cellOpenPos,
|
|
74
|
+
row: masterRow,
|
|
75
|
+
col: masterCol,
|
|
76
|
+
rowspan,
|
|
77
|
+
colspan,
|
|
78
|
+
});
|
|
79
|
+
// Mark occupancy across rowspan x colspan.
|
|
80
|
+
for (let dr = 0; dr < rowspan; dr++) {
|
|
81
|
+
const occRow = occupied[masterRow + dr];
|
|
82
|
+
for (let dc = 0; dc < colspan; dc++) {
|
|
83
|
+
occRow[masterCol + dc] = masterIdx;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Advance scanCol past the just-planted master and beyond any
|
|
87
|
+
// pre-occupied slots that follow.
|
|
88
|
+
scanCol = masterCol + colspan;
|
|
89
|
+
cellOpenPos += cell.nodeSize;
|
|
90
|
+
}
|
|
91
|
+
rowOpenPos += row.nodeSize;
|
|
92
|
+
}
|
|
93
|
+
// Final logical row count = max(occupied.length, rowCount).
|
|
94
|
+
const rows = Math.max(occupied.length, rowCount);
|
|
95
|
+
// Pad any row arrays that are shorter than `cols` (only happens if we
|
|
96
|
+
// grew cols after adding the row).
|
|
97
|
+
for (const row of occupied) {
|
|
98
|
+
while (row.length < cols)
|
|
99
|
+
row.push(-1);
|
|
100
|
+
}
|
|
101
|
+
const byPosMap = new Map();
|
|
102
|
+
for (const c of cells)
|
|
103
|
+
byPosMap.set(c.pos, c);
|
|
104
|
+
return {
|
|
105
|
+
rows,
|
|
106
|
+
cols,
|
|
107
|
+
cells,
|
|
108
|
+
cellAt(row, col) {
|
|
109
|
+
if (row < 0 || row >= occupied.length || col < 0 || col >= cols)
|
|
110
|
+
return null;
|
|
111
|
+
const idx = occupied[row][col];
|
|
112
|
+
if (idx === undefined || idx === -1)
|
|
113
|
+
return null;
|
|
114
|
+
return cells[idx] ?? null;
|
|
115
|
+
},
|
|
116
|
+
cellPositionsInRect(r0, r1, c0, c1) {
|
|
117
|
+
const out = [];
|
|
118
|
+
for (const c of cells) {
|
|
119
|
+
if (c.row >= r0 && c.row <= r1 && c.col >= c0 && c.col <= c1) {
|
|
120
|
+
out.push(c.pos);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return out;
|
|
124
|
+
},
|
|
125
|
+
byPos(pos) {
|
|
126
|
+
return byPosMap.get(pos) ?? null;
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=table-grid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-grid.js","sourceRoot":"","sources":["../../src/model/table-grid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AACxH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAsF,MAAM,aAAa,CAAA;AACxH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed identity for retrieving a plugin's state from an EditorState.
|
|
3
|
+
*
|
|
4
|
+
* Two PluginKeys with the same `name` are distinct identities — the `name` is
|
|
5
|
+
* purely for debugging.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PluginKey<T = unknown> {
|
|
8
|
+
readonly name: string;
|
|
9
|
+
constructor(name?: string);
|
|
10
|
+
/** Phantom marker to keep T inferred. Never accessed at runtime. */
|
|
11
|
+
readonly _t: T;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=plugin-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-key.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin-key.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,SAAS,CAAC,CAAC,GAAG,OAAO;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,GAAE,MAAiB;IAC5C,oEAAoE;IACpE,SAAiB,EAAE,EAAE,CAAC,CAAA;CACvB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed identity for retrieving a plugin's state from an EditorState.
|
|
3
|
+
*
|
|
4
|
+
* Two PluginKeys with the same `name` are distinct identities — the `name` is
|
|
5
|
+
* purely for debugging.
|
|
6
|
+
*/
|
|
7
|
+
export class PluginKey {
|
|
8
|
+
name;
|
|
9
|
+
constructor(name = 'plugin') {
|
|
10
|
+
this.name = name;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=plugin-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-key.js","sourceRoot":"","sources":["../../src/plugin/plugin-key.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,SAAS;IACC;IAArB,YAAqB,OAAe,QAAQ;QAAvB,SAAI,GAAJ,IAAI,CAAmB;IAAG,CAAC;CAGjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-state.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-state.js","sourceRoot":"","sources":["../../src/plugin/plugin-state.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EAAE,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Transaction } from '../transform/transaction.js';
|
|
2
|
+
import type { PluginKey } from './plugin-key.js';
|
|
3
|
+
export interface PluginEditorStateView {
|
|
4
|
+
readonly doc: import('../model/node.js').DxNode;
|
|
5
|
+
readonly selection: import('../state/selection.js').Selection;
|
|
6
|
+
}
|
|
7
|
+
export interface PluginStateSpec<T> {
|
|
8
|
+
/** Compute the initial state value when a fresh EditorState is created. */
|
|
9
|
+
init(config: PluginInitConfig, state: PluginEditorStateView): T;
|
|
10
|
+
/** Compute the new state value when a transaction is applied. */
|
|
11
|
+
apply(tx: Transaction, value: T, oldState: PluginEditorStateView, newState: PluginEditorStateView): T;
|
|
12
|
+
/** Optional JSON encoders. If absent, the field is not serialized. */
|
|
13
|
+
toJSON?(value: T): unknown;
|
|
14
|
+
fromJSON?(config: PluginInitConfig, json: unknown, state: PluginEditorStateView): T;
|
|
15
|
+
}
|
|
16
|
+
export interface PluginInitConfig {
|
|
17
|
+
readonly schema: import('../model/schema.js').Schema;
|
|
18
|
+
readonly doc?: import('../model/node.js').DxNode;
|
|
19
|
+
readonly selection?: import('../state/selection.js').Selection;
|
|
20
|
+
}
|
|
21
|
+
export interface PluginViewProps {
|
|
22
|
+
/** Placeholder for Phase 5 — view-layer event handlers, decorations, nodeViews. */
|
|
23
|
+
readonly [k: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface PluginSpec<T> {
|
|
26
|
+
readonly key: PluginKey<T>;
|
|
27
|
+
readonly state?: PluginStateSpec<T>;
|
|
28
|
+
/** Veto a transaction. Returning false drops the transaction; default is true. */
|
|
29
|
+
filterTransaction?(tx: Transaction, state: PluginEditorStateView): boolean;
|
|
30
|
+
/** React to a batch of transactions; may return a new transaction to apply. */
|
|
31
|
+
appendTransaction?(transactions: ReadonlyArray<Transaction>, oldState: PluginEditorStateView, newState: PluginEditorStateView): Transaction | null;
|
|
32
|
+
readonly props?: PluginViewProps;
|
|
33
|
+
}
|
|
34
|
+
export declare class Plugin<T = unknown> {
|
|
35
|
+
readonly spec: PluginSpec<T>;
|
|
36
|
+
constructor(spec: PluginSpec<T>);
|
|
37
|
+
get key(): PluginKey<T>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAIhD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,OAAO,kBAAkB,EAAE,MAAM,CAAA;IAC/C,QAAQ,CAAC,SAAS,EAAE,OAAO,uBAAuB,EAAE,SAAS,CAAA;CAC9D;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,2EAA2E;IAC3E,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,qBAAqB,GAAG,CAAC,CAAA;IAC/D,iEAAiE;IACjE,KAAK,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB,GAAG,CAAC,CAAA;IACrG,sEAAsE;IACtE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAA;IAC1B,QAAQ,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,GAAG,CAAC,CAAA;CACpF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,MAAM,CAAA;IACpD,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,kBAAkB,EAAE,MAAM,CAAA;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,uBAAuB,EAAE,SAAS,CAAA;CAC/D;AAED,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,QAAQ,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAC9B;AAED,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;IACnC,kFAAkF;IAClF,iBAAiB,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAA;IAC1E,+EAA+E;IAC/E,iBAAiB,CAAC,CAChB,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,EACxC,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,qBAAqB,GAC9B,WAAW,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;CACjC;AAED,qBAAa,MAAM,CAAC,CAAC,GAAG,OAAO;IACjB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;gBAAnB,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IACxC,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAEtB;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin/plugin.ts"],"names":[],"mappings":"AA6CA,MAAM,OAAO,MAAM;IACI;IAArB,YAAqB,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAC5C,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { Schema } from '../model/schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Default Doxiva v0.1 schema.
|
|
4
|
+
*
|
|
5
|
+
* Block nodes: doc, paragraph, heading (level 1-6), blockquote, list (ordered),
|
|
6
|
+
* list_item, hr. Tables arrive in v0.3.
|
|
7
|
+
*
|
|
8
|
+
* Inline nodes: text, image (atomic). Hard breaks are deferred to a later patch
|
|
9
|
+
* (no v0.1 keymap binds Shift+Enter yet).
|
|
10
|
+
*
|
|
11
|
+
* Marks: bold, italic, underline, link (href), color (value), font_size (px),
|
|
12
|
+
* font_family (name).
|
|
13
|
+
*/
|
|
14
|
+
export declare const defaultSchema: Schema<{
|
|
15
|
+
doc: {
|
|
16
|
+
content: string;
|
|
17
|
+
};
|
|
18
|
+
paragraph: {
|
|
19
|
+
content: string;
|
|
20
|
+
group: string;
|
|
21
|
+
attrs: {
|
|
22
|
+
align: {
|
|
23
|
+
default: null;
|
|
24
|
+
};
|
|
25
|
+
lineHeight: {
|
|
26
|
+
default: null;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
heading: {
|
|
31
|
+
content: string;
|
|
32
|
+
group: string;
|
|
33
|
+
attrs: {
|
|
34
|
+
level: {
|
|
35
|
+
default: number;
|
|
36
|
+
};
|
|
37
|
+
align: {
|
|
38
|
+
default: null;
|
|
39
|
+
};
|
|
40
|
+
lineHeight: {
|
|
41
|
+
default: null;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
blockquote: {
|
|
46
|
+
content: string;
|
|
47
|
+
group: string;
|
|
48
|
+
};
|
|
49
|
+
list: {
|
|
50
|
+
content: string;
|
|
51
|
+
group: string;
|
|
52
|
+
attrs: {
|
|
53
|
+
ordered: {
|
|
54
|
+
default: boolean;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
list_item: {
|
|
59
|
+
content: string;
|
|
60
|
+
};
|
|
61
|
+
hr: {
|
|
62
|
+
group: string;
|
|
63
|
+
isAtom: true;
|
|
64
|
+
};
|
|
65
|
+
page_break: {
|
|
66
|
+
group: string;
|
|
67
|
+
isAtom: true;
|
|
68
|
+
};
|
|
69
|
+
table: {
|
|
70
|
+
content: string;
|
|
71
|
+
group: string;
|
|
72
|
+
isolating: true;
|
|
73
|
+
};
|
|
74
|
+
table_row: {
|
|
75
|
+
content: string;
|
|
76
|
+
isolating: true;
|
|
77
|
+
attrs: {
|
|
78
|
+
header: {
|
|
79
|
+
default: boolean;
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
table_cell: {
|
|
84
|
+
content: string;
|
|
85
|
+
isolating: true;
|
|
86
|
+
attrs: {
|
|
87
|
+
widthPx: {
|
|
88
|
+
default: null;
|
|
89
|
+
};
|
|
90
|
+
background: {
|
|
91
|
+
default: null;
|
|
92
|
+
};
|
|
93
|
+
colspan: {
|
|
94
|
+
default: number;
|
|
95
|
+
};
|
|
96
|
+
rowspan: {
|
|
97
|
+
default: number;
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
text: {
|
|
102
|
+
group: string;
|
|
103
|
+
inline: true;
|
|
104
|
+
isText: true;
|
|
105
|
+
};
|
|
106
|
+
image: {
|
|
107
|
+
group: string;
|
|
108
|
+
inline: true;
|
|
109
|
+
isAtom: true;
|
|
110
|
+
attrs: {
|
|
111
|
+
src: {};
|
|
112
|
+
alt: {
|
|
113
|
+
default: string;
|
|
114
|
+
};
|
|
115
|
+
widthPx: {
|
|
116
|
+
default: null;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
page_var: {
|
|
121
|
+
group: string;
|
|
122
|
+
inline: true;
|
|
123
|
+
isAtom: true;
|
|
124
|
+
attrs: {
|
|
125
|
+
kind: {};
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
}, {
|
|
129
|
+
bold: {};
|
|
130
|
+
italic: {};
|
|
131
|
+
underline: {};
|
|
132
|
+
link: {
|
|
133
|
+
attrs: {
|
|
134
|
+
href: {
|
|
135
|
+
default: string;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
excludes: string;
|
|
139
|
+
};
|
|
140
|
+
color: {
|
|
141
|
+
attrs: {
|
|
142
|
+
value: {
|
|
143
|
+
default: string;
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
font_size: {
|
|
148
|
+
attrs: {
|
|
149
|
+
px: {
|
|
150
|
+
default: number;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
font_family: {
|
|
155
|
+
attrs: {
|
|
156
|
+
name: {
|
|
157
|
+
default: string;
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
}>;
|
|
162
|
+
export type DefaultSchema = typeof defaultSchema;
|
|
163
|
+
//# sourceMappingURL=default.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/schema/default.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+ExB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAA"}
|