@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,51 @@
|
|
|
1
|
+
import { resolve } from '../model/position.js';
|
|
2
|
+
import { Selection } from './selection.js';
|
|
3
|
+
/**
|
|
4
|
+
* NodeSelection — selects a single non-text node at `anchor`.
|
|
5
|
+
* The selection range is [anchor, anchor + node.nodeSize).
|
|
6
|
+
*/
|
|
7
|
+
export class NodeSelection extends Selection {
|
|
8
|
+
node;
|
|
9
|
+
constructor(doc, anchor) {
|
|
10
|
+
const rp = resolve(doc, anchor);
|
|
11
|
+
const parent = rp.parent;
|
|
12
|
+
let offset = 0;
|
|
13
|
+
let found = null;
|
|
14
|
+
for (let i = 0; i < parent.content.childCount; i++) {
|
|
15
|
+
if (offset === rp.parentOffset) {
|
|
16
|
+
const child = parent.content.child(i);
|
|
17
|
+
if (child.isText) {
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
found = child;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
offset += parent.content.child(i).nodeSize;
|
|
24
|
+
}
|
|
25
|
+
if (!found) {
|
|
26
|
+
throw new Error(`NodeSelection: position ${anchor} is not a node boundary or points to a text leaf`);
|
|
27
|
+
}
|
|
28
|
+
super(anchor, anchor + found.nodeSize);
|
|
29
|
+
this.node = found;
|
|
30
|
+
}
|
|
31
|
+
get type() { return 'node'; }
|
|
32
|
+
map(doc, mapping) {
|
|
33
|
+
const newAnchor = mapping.map(this.anchor, 1);
|
|
34
|
+
try {
|
|
35
|
+
return new NodeSelection(doc, newAnchor);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Fallback when the node is gone after mapping: callers usually replace with TextSelection.
|
|
39
|
+
// For v0.1 we surface this as the same kind anchored at the mapped position; consumers
|
|
40
|
+
// can detect by re-resolving.
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
toJSON() {
|
|
45
|
+
return { type: 'node', anchor: this.anchor, head: this.head };
|
|
46
|
+
}
|
|
47
|
+
static fromJSON(doc, json) {
|
|
48
|
+
return new NodeSelection(doc, json.anchor);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=node-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-selection.js","sourceRoot":"","sources":["../../src/state/node-selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAE9C,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAA;AAE9D;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,SAAS;IACjC,IAAI,CAAQ;IAErB,YAAY,GAAW,EAAE,MAAc;QACrC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;QACxB,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,IAAI,KAAK,GAAkB,IAAI,CAAA;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,IAAI,MAAM,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAW,CAAA;gBAC/C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAK;gBACP,CAAC;gBACD,KAAK,GAAG,KAAK,CAAA;gBACb,MAAK;YACP,CAAC;YACD,MAAM,IAAK,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAY,CAAC,QAAQ,CAAA;QACxD,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,kDAAkD,CAAC,CAAA;QACtG,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;IACnB,CAAC;IAED,IAAa,IAAI,KAAa,OAAO,MAAM,CAAA,CAAC,CAAC;IAEpC,GAAG,CAAC,GAAW,EAAE,OAAgB;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC7C,IAAI,CAAC;YACH,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,4FAA4F;YAC5F,uFAAuF;YACvF,8BAA8B;YAC9B,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAEQ,MAAM;QACb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;IAC/D,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,IAAmB;QAC9C,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { DxNode } from '../model/node.js';
|
|
2
|
+
import type { Mapping } from '../transform/mapping.js';
|
|
3
|
+
export interface SelectionJSON {
|
|
4
|
+
readonly type: string;
|
|
5
|
+
readonly anchor: number;
|
|
6
|
+
readonly head: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Selection — abstract immutable cursor/range.
|
|
10
|
+
*
|
|
11
|
+
* Anchor/head are absolute positions in the current document.
|
|
12
|
+
* `from` is min(anchor, head); `to` is max. `empty` means anchor === head (a cursor).
|
|
13
|
+
*
|
|
14
|
+
* Subclasses (TextSelection, NodeSelection, AllSelection) extend with type-specific
|
|
15
|
+
* invariants and `map` behavior.
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class Selection {
|
|
18
|
+
readonly anchor: number;
|
|
19
|
+
readonly head: number;
|
|
20
|
+
constructor(anchor: number, head: number);
|
|
21
|
+
abstract get type(): string;
|
|
22
|
+
get from(): number;
|
|
23
|
+
get to(): number;
|
|
24
|
+
get empty(): boolean;
|
|
25
|
+
eq(other: Selection): boolean;
|
|
26
|
+
abstract map(doc: DxNode, mapping: Mapping): Selection;
|
|
27
|
+
abstract toJSON(): SelectionJSON;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../src/state/selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED;;;;;;;;GAQG;AACH,8BAAsB,SAAS;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAArC,MAAM,EAAE,MAAM,EAAW,IAAI,EAAE,MAAM;IAE1D,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAA;IAE3B,IAAI,IAAI,IAAI,MAAM,CAA4C;IAC9D,IAAI,EAAE,IAAI,MAAM,CAA4C;IAC5D,IAAI,KAAK,IAAI,OAAO,CAAqC;IAEzD,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAI7B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS;IACtD,QAAQ,CAAC,MAAM,IAAI,aAAa;CACjC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selection — abstract immutable cursor/range.
|
|
3
|
+
*
|
|
4
|
+
* Anchor/head are absolute positions in the current document.
|
|
5
|
+
* `from` is min(anchor, head); `to` is max. `empty` means anchor === head (a cursor).
|
|
6
|
+
*
|
|
7
|
+
* Subclasses (TextSelection, NodeSelection, AllSelection) extend with type-specific
|
|
8
|
+
* invariants and `map` behavior.
|
|
9
|
+
*/
|
|
10
|
+
export class Selection {
|
|
11
|
+
anchor;
|
|
12
|
+
head;
|
|
13
|
+
constructor(anchor, head) {
|
|
14
|
+
this.anchor = anchor;
|
|
15
|
+
this.head = head;
|
|
16
|
+
}
|
|
17
|
+
get from() { return Math.min(this.anchor, this.head); }
|
|
18
|
+
get to() { return Math.max(this.anchor, this.head); }
|
|
19
|
+
get empty() { return this.anchor === this.head; }
|
|
20
|
+
eq(other) {
|
|
21
|
+
return this.type === other.type && this.anchor === other.anchor && this.head === other.head;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../src/state/selection.ts"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AACH,MAAM,OAAgB,SAAS;IACR;IAAyB;IAA9C,YAAqB,MAAc,EAAW,IAAY;QAArC,WAAM,GAAN,MAAM,CAAQ;QAAW,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAI9D,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;IAC9D,IAAI,EAAE,KAAa,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAc,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAA,CAAC,CAAC;IAEzD,EAAE,CAAC,KAAgB;QACjB,OAAO,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAA;IAC7F,CAAC;CAIF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { DxNode } from '../model/node.js';
|
|
2
|
+
import type { Mapping } from '../transform/mapping.js';
|
|
3
|
+
import { Selection, type SelectionJSON } from './selection.js';
|
|
4
|
+
export declare class TextSelection extends Selection {
|
|
5
|
+
get type(): string;
|
|
6
|
+
map(_doc: DxNode, mapping: Mapping): Selection;
|
|
7
|
+
toJSON(): SelectionJSON;
|
|
8
|
+
static fromJSON(json: SelectionJSON): TextSelection;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=text-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-selection.d.ts","sourceRoot":"","sources":["../../src/state/text-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9D,qBAAa,aAAc,SAAQ,SAAS;IAC1C,IAAa,IAAI,IAAI,MAAM,CAAkB;IAEpC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS;IAgB9C,MAAM,IAAI,aAAa;IAIhC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa;CAGpD"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Selection } from './selection.js';
|
|
2
|
+
export class TextSelection extends Selection {
|
|
3
|
+
get type() { return 'text'; }
|
|
4
|
+
map(_doc, mapping) {
|
|
5
|
+
// When the selection is a cursor (collapsed), map both endpoints with the
|
|
6
|
+
// same bias so the cursor stays a cursor. Bias = +1 (associate-right) so
|
|
7
|
+
// the caret lands AFTER inserted content at its position — what users
|
|
8
|
+
// expect when typing.
|
|
9
|
+
// When the selection is a range, map endpoints with opposite biases so
|
|
10
|
+
// text inserted at either boundary doesn't get swallowed into the range.
|
|
11
|
+
if (this.anchor === this.head) {
|
|
12
|
+
const pos = mapping.map(this.anchor, 1);
|
|
13
|
+
return new TextSelection(pos, pos);
|
|
14
|
+
}
|
|
15
|
+
const anchor = mapping.map(this.anchor, -1);
|
|
16
|
+
const head = mapping.map(this.head, 1);
|
|
17
|
+
return new TextSelection(anchor, head);
|
|
18
|
+
}
|
|
19
|
+
toJSON() {
|
|
20
|
+
return { type: 'text', anchor: this.anchor, head: this.head };
|
|
21
|
+
}
|
|
22
|
+
static fromJSON(json) {
|
|
23
|
+
return new TextSelection(json.anchor, json.head);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=text-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-selection.js","sourceRoot":"","sources":["../../src/state/text-selection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAsB,MAAM,gBAAgB,CAAA;AAE9D,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C,IAAa,IAAI,KAAa,OAAO,MAAM,CAAA,CAAC,CAAC;IAEpC,GAAG,CAAC,IAAY,EAAE,OAAgB;QACzC,0EAA0E;QAC1E,yEAAyE;QACzE,sEAAsE;QACtE,sBAAsB;QACtB,uEAAuE;QACvE,yEAAyE;QACzE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACvC,OAAO,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACpC,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACtC,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAEQ,MAAM;QACb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;IAC/D,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAmB;QACjC,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IAClD,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DxNode } from '../model/node.js';
|
|
2
|
+
import type { Schema } from '../model/schema.js';
|
|
3
|
+
import type { Mapping } from './mapping.js';
|
|
4
|
+
import { Step, type StepJSON, type StepResult } from './step.js';
|
|
5
|
+
export declare class AttrStep extends Step {
|
|
6
|
+
readonly pos: number;
|
|
7
|
+
readonly attr: string;
|
|
8
|
+
readonly value: unknown;
|
|
9
|
+
constructor(pos: number, attr: string, value: unknown);
|
|
10
|
+
apply(doc: DxNode): StepResult;
|
|
11
|
+
invert(doc: DxNode): Step;
|
|
12
|
+
map(mapping: Mapping): Step | null;
|
|
13
|
+
toJSON(): StepJSON;
|
|
14
|
+
static fromJSON(_schema: Schema, data: Readonly<Record<string, unknown>>): AttrStep;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=attr-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attr-step.d.ts","sourceRoot":"","sources":["../../src/transform/attr-step.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAgB,MAAM,WAAW,CAAA;AAE9E,qBAAa,QAAS,SAAQ,IAAI;IAE9B,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO;gBAFd,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO;IAKzB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAoC9B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAezB,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IAKlC,MAAM,IAAI,QAAQ;IAOlB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,QAAQ;CAGpF"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Fragment } from '../model/fragment.js';
|
|
2
|
+
import { DxNode } from '../model/node.js';
|
|
3
|
+
import { resolve } from '../model/position.js';
|
|
4
|
+
import { Step, registerStep } from './step.js';
|
|
5
|
+
export class AttrStep extends Step {
|
|
6
|
+
pos;
|
|
7
|
+
attr;
|
|
8
|
+
value;
|
|
9
|
+
constructor(pos, attr, value) {
|
|
10
|
+
super();
|
|
11
|
+
this.pos = pos;
|
|
12
|
+
this.attr = attr;
|
|
13
|
+
this.value = value;
|
|
14
|
+
}
|
|
15
|
+
apply(doc) {
|
|
16
|
+
try {
|
|
17
|
+
const rp = resolve(doc, this.pos);
|
|
18
|
+
// The node whose [open] sits at `pos` is the child of rp.parent at index rp.index(rp.depth + 1)
|
|
19
|
+
// when descent stopped at the boundary. For depth 0 case, that's the first child after pos.
|
|
20
|
+
// We find the child by walking parent.content with offsets.
|
|
21
|
+
const parent = rp.parent;
|
|
22
|
+
let offset = 0;
|
|
23
|
+
let childIndex = -1;
|
|
24
|
+
for (let i = 0; i < parent.content.childCount; i++) {
|
|
25
|
+
if (offset === rp.parentOffset) {
|
|
26
|
+
childIndex = i;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
offset += parent.content.child(i).nodeSize;
|
|
30
|
+
}
|
|
31
|
+
if (childIndex < 0) {
|
|
32
|
+
return { ok: false, failed: `AttrStep: position ${this.pos} is not at a node boundary` };
|
|
33
|
+
}
|
|
34
|
+
const target = parent.content.child(childIndex);
|
|
35
|
+
const newAttrs = Object.freeze({ ...target.attrs, [this.attr]: this.value });
|
|
36
|
+
const newTarget = new DxNode(target.type, newAttrs, target.content, target.marks);
|
|
37
|
+
const newChildren = [...parent.content.children];
|
|
38
|
+
newChildren[childIndex] = newTarget;
|
|
39
|
+
const newParent = parent.copy(Fragment.from(newChildren));
|
|
40
|
+
const newDoc = rebuildAncestors(doc, rp, newParent);
|
|
41
|
+
return {
|
|
42
|
+
ok: true,
|
|
43
|
+
doc: newDoc,
|
|
44
|
+
mapRange: { start: this.pos, oldLen: 0, newLen: 0 },
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
return { ok: false, failed: err.message };
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
invert(doc) {
|
|
52
|
+
const rp = resolve(doc, this.pos);
|
|
53
|
+
let offset = 0;
|
|
54
|
+
let target = null;
|
|
55
|
+
for (let i = 0; i < rp.parent.content.childCount; i++) {
|
|
56
|
+
if (offset === rp.parentOffset) {
|
|
57
|
+
target = rp.parent.content.child(i);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
offset += rp.parent.content.child(i).nodeSize;
|
|
61
|
+
}
|
|
62
|
+
if (!target)
|
|
63
|
+
throw new Error(`AttrStep.invert: target node not found at pos ${this.pos}`);
|
|
64
|
+
return new AttrStep(this.pos, this.attr, target.attrs[this.attr]);
|
|
65
|
+
}
|
|
66
|
+
map(mapping) {
|
|
67
|
+
const newPos = mapping.map(this.pos, -1);
|
|
68
|
+
return new AttrStep(newPos, this.attr, this.value);
|
|
69
|
+
}
|
|
70
|
+
toJSON() {
|
|
71
|
+
return {
|
|
72
|
+
kind: 'attr',
|
|
73
|
+
data: { pos: this.pos, attr: this.attr, value: this.value },
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
static fromJSON(_schema, data) {
|
|
77
|
+
return new AttrStep(data.pos, data.attr, data.value);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Rebuild the doc tree with `newAncestor` replacing the node at `rp.depth`.
|
|
82
|
+
* Walks outward, replacing each ancestor's affected child index until we
|
|
83
|
+
* reach the root. v0.3b: now supports any depth so attribute changes inside
|
|
84
|
+
* table cells (depth 3+) work.
|
|
85
|
+
*/
|
|
86
|
+
function rebuildAncestors(_doc, rp, newAncestor) {
|
|
87
|
+
let current = newAncestor;
|
|
88
|
+
for (let d = rp.depth; d >= 1; d--) {
|
|
89
|
+
const parent = rp.node(d - 1);
|
|
90
|
+
const idx = rp.index(d);
|
|
91
|
+
const newChildren = [...parent.content.children];
|
|
92
|
+
newChildren[idx] = current;
|
|
93
|
+
current = parent.copy(Fragment.from(newChildren));
|
|
94
|
+
}
|
|
95
|
+
return rp.depth === 0 ? newAncestor : current;
|
|
96
|
+
}
|
|
97
|
+
registerStep('attr', AttrStep);
|
|
98
|
+
//# sourceMappingURL=attr-step.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attr-step.js","sourceRoot":"","sources":["../../src/transform/attr-step.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Mapping, type MapRange } from './mapping.js';
|
|
2
|
+
export { Step, stepFromJSON, registerStep, type StepJSON, type StepResult } from './step.js';
|
|
3
|
+
export { ReplaceStep } from './replace-step.js';
|
|
4
|
+
export { ReplaceAroundStep } from './replace-around-step.js';
|
|
5
|
+
export { AddMarkStep, RemoveMarkStep } from './mark-step.js';
|
|
6
|
+
export { AttrStep } from './attr-step.js';
|
|
7
|
+
export { SetPageMetaStep } from './set-page-meta-step.js';
|
|
8
|
+
export { Transaction, type TransactionJSON } from './transaction.js';
|
|
9
|
+
export { replace } from './replace.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAA;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Mapping } from './mapping.js';
|
|
2
|
+
export { Step, stepFromJSON, registerStep } from './step.js';
|
|
3
|
+
export { ReplaceStep } from './replace-step.js';
|
|
4
|
+
export { ReplaceAroundStep } from './replace-around-step.js';
|
|
5
|
+
export { AddMarkStep, RemoveMarkStep } from './mark-step.js';
|
|
6
|
+
export { AttrStep } from './attr-step.js';
|
|
7
|
+
export { SetPageMetaStep } from './set-page-meta-step.js';
|
|
8
|
+
export { Transaction } from './transaction.js';
|
|
9
|
+
export { replace } from './replace.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAkC,MAAM,WAAW,CAAA;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAwB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single transformation range in OLD document coordinates.
|
|
3
|
+
* `start` — old position at which the range begins
|
|
4
|
+
* `oldLen` — number of old positions consumed by the range
|
|
5
|
+
* `newLen` — number of new positions produced by the range
|
|
6
|
+
*
|
|
7
|
+
* (start, oldLen, newLen) = (5, 3, 7) means "old [5, 8) becomes new [5, 12)".
|
|
8
|
+
*/
|
|
9
|
+
export interface MapRange {
|
|
10
|
+
readonly start: number;
|
|
11
|
+
readonly oldLen: number;
|
|
12
|
+
readonly newLen: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Mapping: a sequence of MapRanges in increasing `start` order.
|
|
16
|
+
* Forward `map(pos, bias)` translates old positions to new positions.
|
|
17
|
+
* `bias = -1`: positions on a boundary stick to the previous content.
|
|
18
|
+
* `bias = 1`: positions on a boundary stick to the following content.
|
|
19
|
+
*/
|
|
20
|
+
export declare class Mapping {
|
|
21
|
+
readonly ranges: ReadonlyArray<MapRange>;
|
|
22
|
+
static readonly empty: Mapping;
|
|
23
|
+
constructor(ranges: ReadonlyArray<MapRange>);
|
|
24
|
+
map(pos: number, bias?: -1 | 1): number;
|
|
25
|
+
append(range: MapRange): Mapping;
|
|
26
|
+
/**
|
|
27
|
+
* Compose another mapping after this one. The result maps OLD positions
|
|
28
|
+
* (this mapping's domain) through both transformations.
|
|
29
|
+
* v0.1 returns a Mapping whose ranges are the concatenation of `this.ranges`
|
|
30
|
+
* with the new ranges shifted into the post-`this` coordinate space.
|
|
31
|
+
*/
|
|
32
|
+
compose(other: Mapping): Mapping;
|
|
33
|
+
/**
|
|
34
|
+
* Build the inverse mapping such that for all old positions p,
|
|
35
|
+
* `this.invert().map(this.map(p)) === p` (modulo bias-on-boundary semantics).
|
|
36
|
+
*/
|
|
37
|
+
invert(): Mapping;
|
|
38
|
+
/**
|
|
39
|
+
* Internal helper used by `compose`: translate a NEW position back to OLD coords.
|
|
40
|
+
* Symmetric to `map` with bias = -1.
|
|
41
|
+
*/
|
|
42
|
+
private invertPos;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/transform/mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED;;;;;GAKG;AACH,qBAAa,OAAO;IAGN,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC;IAFpD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAkB;gBAE3B,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC;IAEpD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,CAAC,CAAC,GAAG,CAAK,GAAG,MAAM;IA4B1C,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIhC;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAWhC;;;OAGG;IACH,MAAM,IAAI,OAAO;IAcjB;;;OAGG;IACH,OAAO,CAAC,SAAS;CAalB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mapping: a sequence of MapRanges in increasing `start` order.
|
|
3
|
+
* Forward `map(pos, bias)` translates old positions to new positions.
|
|
4
|
+
* `bias = -1`: positions on a boundary stick to the previous content.
|
|
5
|
+
* `bias = 1`: positions on a boundary stick to the following content.
|
|
6
|
+
*/
|
|
7
|
+
export class Mapping {
|
|
8
|
+
ranges;
|
|
9
|
+
static empty = new Mapping([]);
|
|
10
|
+
constructor(ranges) {
|
|
11
|
+
this.ranges = ranges;
|
|
12
|
+
}
|
|
13
|
+
map(pos, bias = 1) {
|
|
14
|
+
let delta = 0;
|
|
15
|
+
for (const r of this.ranges) {
|
|
16
|
+
if (pos < r.start)
|
|
17
|
+
break;
|
|
18
|
+
const oldEnd = r.start + r.oldLen;
|
|
19
|
+
if (pos > oldEnd) {
|
|
20
|
+
delta += r.newLen - r.oldLen;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
// pos is inside this range
|
|
24
|
+
if (pos === r.start) {
|
|
25
|
+
if (bias < 0)
|
|
26
|
+
return pos + delta;
|
|
27
|
+
// bias > 0: for a pure insertion (oldLen === 0) the position sticks to the right
|
|
28
|
+
// of the inserted content; for a replacement (oldLen > 0) it stays at the
|
|
29
|
+
// boundary before the deleted span.
|
|
30
|
+
if (r.oldLen === 0)
|
|
31
|
+
return pos + delta + r.newLen;
|
|
32
|
+
return pos + delta;
|
|
33
|
+
}
|
|
34
|
+
if (pos === oldEnd) {
|
|
35
|
+
if (bias < 0)
|
|
36
|
+
return r.start + delta + r.newLen;
|
|
37
|
+
return r.start + delta + r.newLen;
|
|
38
|
+
}
|
|
39
|
+
// Strictly inside the old span: collapse to the range end.
|
|
40
|
+
return r.start + delta + r.newLen;
|
|
41
|
+
}
|
|
42
|
+
return pos + delta;
|
|
43
|
+
}
|
|
44
|
+
append(range) {
|
|
45
|
+
return new Mapping([...this.ranges, range]);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Compose another mapping after this one. The result maps OLD positions
|
|
49
|
+
* (this mapping's domain) through both transformations.
|
|
50
|
+
* v0.1 returns a Mapping whose ranges are the concatenation of `this.ranges`
|
|
51
|
+
* with the new ranges shifted into the post-`this` coordinate space.
|
|
52
|
+
*/
|
|
53
|
+
compose(other) {
|
|
54
|
+
if (other.ranges.length === 0)
|
|
55
|
+
return this;
|
|
56
|
+
if (this.ranges.length === 0)
|
|
57
|
+
return other;
|
|
58
|
+
const shifted = other.ranges.map((r) => ({
|
|
59
|
+
start: this.invertPos(r.start),
|
|
60
|
+
oldLen: r.oldLen,
|
|
61
|
+
newLen: r.newLen,
|
|
62
|
+
}));
|
|
63
|
+
return new Mapping([...this.ranges, ...shifted]);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Build the inverse mapping such that for all old positions p,
|
|
67
|
+
* `this.invert().map(this.map(p)) === p` (modulo bias-on-boundary semantics).
|
|
68
|
+
*/
|
|
69
|
+
invert() {
|
|
70
|
+
let delta = 0;
|
|
71
|
+
const out = [];
|
|
72
|
+
for (const r of this.ranges) {
|
|
73
|
+
out.push({
|
|
74
|
+
start: r.start + delta,
|
|
75
|
+
oldLen: r.newLen,
|
|
76
|
+
newLen: r.oldLen,
|
|
77
|
+
});
|
|
78
|
+
delta += r.newLen - r.oldLen;
|
|
79
|
+
}
|
|
80
|
+
return new Mapping(out);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Internal helper used by `compose`: translate a NEW position back to OLD coords.
|
|
84
|
+
* Symmetric to `map` with bias = -1.
|
|
85
|
+
*/
|
|
86
|
+
invertPos(newPos) {
|
|
87
|
+
let delta = 0;
|
|
88
|
+
for (const r of this.ranges) {
|
|
89
|
+
const newStart = r.start + delta;
|
|
90
|
+
const newEnd = newStart + r.newLen;
|
|
91
|
+
if (newPos < newStart)
|
|
92
|
+
break;
|
|
93
|
+
if (newPos <= newEnd) {
|
|
94
|
+
return r.start;
|
|
95
|
+
}
|
|
96
|
+
delta += r.newLen - r.oldLen;
|
|
97
|
+
}
|
|
98
|
+
return newPos - delta;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/transform/mapping.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,MAAM,OAAO,OAAO;IAGG;IAFrB,MAAM,CAAU,KAAK,GAAY,IAAI,OAAO,CAAC,EAAE,CAAC,CAAA;IAEhD,YAAqB,MAA+B;QAA/B,WAAM,GAAN,MAAM,CAAyB;IAAG,CAAC;IAExD,GAAG,CAAC,GAAW,EAAE,OAAe,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,GAAG,GAAG,CAAC,CAAC,KAAK;gBAAE,MAAK;YACxB,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAA;YACjC,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC;gBACjB,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;gBAC5B,SAAQ;YACV,CAAC;YACD,2BAA2B;YAC3B,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;gBACpB,IAAI,IAAI,GAAG,CAAC;oBAAE,OAAO,GAAG,GAAG,KAAK,CAAA;gBAChC,iFAAiF;gBACjF,0EAA0E;gBAC1E,oCAAoC;gBACpC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,MAAM,CAAA;gBACjD,OAAO,GAAG,GAAG,KAAK,CAAA;YACpB,CAAC;YACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,IAAI,IAAI,GAAG,CAAC;oBAAE,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,MAAM,CAAA;gBAC/C,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,MAAM,CAAA;YACnC,CAAC;YACD,2DAA2D;YAC3D,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,MAAM,CAAA;QACnC,CAAC;QACD,OAAO,GAAG,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,KAAe;QACpB,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;IAC7C,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,KAAc;QACpB,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAC1C,MAAM,OAAO,GAAe,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;YAC9B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC,CAAA;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,MAAM,GAAG,GAAe,EAAE,CAAA;QAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC;gBACP,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK;gBACtB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAA;YACF,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;QAC9B,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA;IACzB,CAAC;IAED;;;OAGG;IACK,SAAS,CAAC,MAAc;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YAChC,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAA;YAClC,IAAI,MAAM,GAAG,QAAQ;gBAAE,MAAK;YAC5B,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;gBACrB,OAAO,CAAC,CAAC,KAAK,CAAA;YAChB,CAAC;YACD,KAAK,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;QAC9B,CAAC;QACD,OAAO,MAAM,GAAG,KAAK,CAAA;IACvB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Mark } from '../model/mark.js';
|
|
2
|
+
import { DxNode } from '../model/node.js';
|
|
3
|
+
import type { Schema } from '../model/schema.js';
|
|
4
|
+
import type { Mapping } from './mapping.js';
|
|
5
|
+
import { Step, type StepJSON, type StepResult } from './step.js';
|
|
6
|
+
declare abstract class MarkStep extends Step {
|
|
7
|
+
readonly from: number;
|
|
8
|
+
readonly to: number;
|
|
9
|
+
readonly mark: Mark;
|
|
10
|
+
constructor(from: number, to: number, mark: Mark);
|
|
11
|
+
apply(doc: DxNode): StepResult;
|
|
12
|
+
map(mapping: Mapping): Step | null;
|
|
13
|
+
toJSON(): StepJSON;
|
|
14
|
+
abstract get kind(): 'addMark' | 'removeMark';
|
|
15
|
+
}
|
|
16
|
+
export declare class AddMarkStep extends MarkStep {
|
|
17
|
+
get kind(): 'addMark';
|
|
18
|
+
invert(_doc: DxNode): Step;
|
|
19
|
+
static fromJSON(schema: Schema, data: Readonly<Record<string, unknown>>): AddMarkStep;
|
|
20
|
+
}
|
|
21
|
+
export declare class RemoveMarkStep extends MarkStep {
|
|
22
|
+
get kind(): 'removeMark';
|
|
23
|
+
invert(_doc: DxNode): Step;
|
|
24
|
+
static fromJSON(schema: Schema, data: Readonly<Record<string, unknown>>): RemoveMarkStep;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=mark-step.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-step.d.ts","sourceRoot":"","sources":["../../src/transform/mark-step.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAgB,MAAM,WAAW,CAAA;AAE9E,uBAAe,QAAS,SAAQ,IAAI;IAEhC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,QAAQ,CAAC,IAAI,EAAE,IAAI;gBAFV,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,IAAI;IAMrB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAa9B,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI;IASlC,MAAM,IAAI,QAAQ;IAOlB,QAAQ,KAAK,IAAI,IAAI,SAAS,GAAG,YAAY,CAAA;CAC9C;AAED,qBAAa,WAAY,SAAQ,QAAQ;IACvC,IAAa,IAAI,IAAI,SAAS,CAAqB;IAC1C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,WAAW;CAOtF;AAED,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,IAAa,IAAI,IAAI,YAAY,CAAwB;IAChD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,cAAc;CAOzF"}
|