@thomasfosterau/effect-richtext 0.0.0 → 0.1.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 +48 -0
- package/README.md +117 -1
- package/dist/_virtual/_rolldown/runtime.js +12 -0
- package/dist/commands/commands.d.ts +323 -0
- package/dist/commands/commands.js +722 -0
- package/dist/commands/internal.js +43 -0
- package/dist/commands/keymaps.d.ts +46 -0
- package/dist/commands/keymaps.js +64 -0
- package/dist/commands.d.ts +3 -0
- package/dist/commands.js +3 -0
- package/dist/compat/commands.d.ts +250 -0
- package/dist/compat/commands.js +275 -0
- package/dist/compat/internal/core.d.ts +20 -0
- package/dist/compat/internal/core.js +148 -0
- package/dist/compat/internal/props.js +82 -0
- package/dist/compat/keymap.d.ts +21 -0
- package/dist/compat/keymap.js +38 -0
- package/dist/compat/model.d.ts +893 -0
- package/dist/compat/model.js +1212 -0
- package/dist/compat/orderedmap.d.ts +74 -0
- package/dist/compat/orderedmap.js +124 -0
- package/dist/compat/schema-basic.d.ts +38 -0
- package/dist/compat/schema-basic.js +238 -0
- package/dist/compat/schema-list.d.ts +81 -0
- package/dist/compat/schema-list.js +156 -0
- package/dist/compat/state.d.ts +415 -0
- package/dist/compat/state.js +689 -0
- package/dist/compat/test-builder.d.ts +98 -0
- package/dist/compat/test-builder.js +197 -0
- package/dist/compat/transform.d.ts +458 -0
- package/dist/compat/transform.js +803 -0
- package/dist/compat/view.d.ts +411 -0
- package/dist/compat/view.js +409 -0
- package/dist/dropcursor.d.ts +46 -0
- package/dist/dropcursor.js +176 -0
- package/dist/extensions/defaults.d.ts +716 -0
- package/dist/extensions/defaults.js +209 -0
- package/dist/extensions/editor.d.ts +246 -0
- package/dist/extensions/editor.js +271 -0
- package/dist/extensions/extension.d.ts +375 -0
- package/dist/extensions/extension.js +233 -0
- package/dist/extensions.d.ts +4 -0
- package/dist/extensions.js +4 -0
- package/dist/gapcursor.d.ts +66 -0
- package/dist/gapcursor.js +273 -0
- package/dist/history.d.ts +178 -0
- package/dist/history.js +412 -0
- package/dist/html.d.ts +158 -0
- package/dist/html.js +164 -0
- package/dist/inputrules.d.ts +271 -0
- package/dist/inputrules.js +321 -0
- package/dist/internal/attempt.js +15 -0
- package/dist/internal/json.js +29 -0
- package/dist/keymap/keymap.d.ts +130 -0
- package/dist/keymap/keymap.js +159 -0
- package/dist/keymap.d.ts +2 -0
- package/dist/keymap.js +1 -0
- package/dist/markdown/errors.d.ts +23 -0
- package/dist/markdown/errors.js +26 -0
- package/dist/markdown/from_markdown.d.ts +185 -0
- package/dist/markdown/from_markdown.js +266 -0
- package/dist/markdown/schema.d.ts +522 -0
- package/dist/markdown/schema.js +292 -0
- package/dist/markdown/to_markdown.d.ts +251 -0
- package/dist/markdown/to_markdown.js +413 -0
- package/dist/markdown.d.ts +5 -0
- package/dist/markdown.js +5 -0
- package/dist/model/attrsCodec.js +48 -0
- package/dist/model/comparedeep.js +17 -0
- package/dist/model/content.d.ts +232 -0
- package/dist/model/content.js +630 -0
- package/dist/model/diff.js +66 -0
- package/dist/model/dom.d.ts +3 -0
- package/dist/model/errors.d.ts +90 -0
- package/dist/model/errors.js +76 -0
- package/dist/model/fragment.d.ts +131 -0
- package/dist/model/fragment.js +262 -0
- package/dist/model/from_dom.d.ts +299 -0
- package/dist/model/from_dom.js +618 -0
- package/dist/model/json.d.ts +37 -0
- package/dist/model/json.js +126 -0
- package/dist/model/mark.d.ts +73 -0
- package/dist/model/mark.js +121 -0
- package/dist/model/node.d.ts +267 -0
- package/dist/model/node.js +434 -0
- package/dist/model/replace.d.ts +78 -0
- package/dist/model/replace.js +207 -0
- package/dist/model/resolvedpos.d.ts +196 -0
- package/dist/model/resolvedpos.js +305 -0
- package/dist/model/schema.d.ts +740 -0
- package/dist/model/schema.js +451 -0
- package/dist/model/to_dom.d.ts +169 -0
- package/dist/model/to_dom.js +238 -0
- package/dist/model.d.ts +12 -0
- package/dist/model.js +12 -0
- package/dist/placeholder.d.ts +53 -0
- package/dist/placeholder.js +79 -0
- package/dist/reactive/observer.d.ts +54 -0
- package/dist/reactive/observer.js +61 -0
- package/dist/reactive/selectors.d.ts +22 -0
- package/dist/reactive/selectors.js +61 -0
- package/dist/reactive/stateref.d.ts +72 -0
- package/dist/reactive/stateref.js +71 -0
- package/dist/reactive/streams.d.ts +83 -0
- package/dist/reactive/streams.js +85 -0
- package/dist/reactive.d.ts +16 -0
- package/dist/reactive.js +26 -0
- package/dist/schema-basic.d.ts +448 -0
- package/dist/schema-basic.js +269 -0
- package/dist/schema-list/commands.d.ts +66 -0
- package/dist/schema-list/commands.js +203 -0
- package/dist/schema-list.d.ts +92 -0
- package/dist/schema-list.js +100 -0
- package/dist/state/errors.d.ts +39 -0
- package/dist/state/errors.js +32 -0
- package/dist/state/plugin.d.ts +232 -0
- package/dist/state/plugin.js +82 -0
- package/dist/state/selection.d.ts +297 -0
- package/dist/state/selection.js +486 -0
- package/dist/state/state.d.ts +212 -0
- package/dist/state/state.js +489 -0
- package/dist/state/transaction.d.ts +145 -0
- package/dist/state/transaction.js +195 -0
- package/dist/state.d.ts +6 -0
- package/dist/state.js +6 -0
- package/dist/test-builder.d.ts +3582 -0
- package/dist/test-builder.js +239 -0
- package/dist/transform/attr_step.d.ts +60 -0
- package/dist/transform/attr_step.js +105 -0
- package/dist/transform/errors.d.ts +50 -0
- package/dist/transform/errors.js +35 -0
- package/dist/transform/map.d.ts +182 -0
- package/dist/transform/map.js +280 -0
- package/dist/transform/mark.js +98 -0
- package/dist/transform/mark_set_step.js +69 -0
- package/dist/transform/mark_step.d.ts +113 -0
- package/dist/transform/mark_step.js +225 -0
- package/dist/transform/replace.d.ts +18 -0
- package/dist/transform/replace.js +381 -0
- package/dist/transform/replace_step.d.ts +109 -0
- package/dist/transform/replace_step.js +175 -0
- package/dist/transform/step.d.ts +157 -0
- package/dist/transform/step.js +168 -0
- package/dist/transform/structure.d.ts +89 -0
- package/dist/transform/structure.js +350 -0
- package/dist/transform/transform.d.ts +248 -0
- package/dist/transform/transform.js +373 -0
- package/dist/transform.d.ts +10 -0
- package/dist/transform.js +10 -0
- package/dist/view/browser.js +39 -0
- package/dist/view/capturekeys.js +282 -0
- package/dist/view/clipboard.d.ts +8 -0
- package/dist/view/clipboard.js +245 -0
- package/dist/view/decoration.d.ts +339 -0
- package/dist/view/decoration.js +566 -0
- package/dist/view/dom.d.ts +18 -0
- package/dist/view/dom.js +140 -0
- package/dist/view/domchange.js +295 -0
- package/dist/view/domcoords.d.ts +22 -0
- package/dist/view/domcoords.js +448 -0
- package/dist/view/domobserver.d.ts +47 -0
- package/dist/view/domobserver.js +328 -0
- package/dist/view/errors.d.ts +18 -0
- package/dist/view/errors.js +21 -0
- package/dist/view/input.d.ts +58 -0
- package/dist/view/input.js +704 -0
- package/dist/view/selection.js +198 -0
- package/dist/view/view.d.ts +699 -0
- package/dist/view/view.js +623 -0
- package/dist/view/viewdesc.d.ts +236 -0
- package/dist/view/viewdesc.js +1205 -0
- package/dist/view-css.d.ts +43 -0
- package/dist/view-css.js +124 -0
- package/dist/view.d.ts +6 -0
- package/dist/view.js +4 -0
- package/package.json +200 -4
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Attrs, MarkSpec, Node, NodeSpec, Schema } from "./model.js";
|
|
2
|
+
import { OrderedMap } from "./orderedmap.js";
|
|
3
|
+
type Tags = {
|
|
4
|
+
[tag: string]: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* A child argument of a builder.
|
|
8
|
+
*
|
|
9
|
+
* @since 0.1.0
|
|
10
|
+
* @category models
|
|
11
|
+
*/
|
|
12
|
+
export type ChildSpec = string | Node | {
|
|
13
|
+
flat: ReadonlyArray<Node>;
|
|
14
|
+
tag: Tags;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* A node builder.
|
|
18
|
+
*
|
|
19
|
+
* @since 0.1.0
|
|
20
|
+
* @category models
|
|
21
|
+
*/
|
|
22
|
+
export type NodeBuilder = (attrsOrFirstChild?: Attrs | ChildSpec, ...children: Array<ChildSpec>) => Node & {
|
|
23
|
+
tag: Tags;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* A mark builder.
|
|
27
|
+
*
|
|
28
|
+
* @since 0.1.0
|
|
29
|
+
* @category models
|
|
30
|
+
*/
|
|
31
|
+
export type MarkBuilder = (attrsOrFirstChild?: Attrs | ChildSpec, ...children: Array<ChildSpec>) => ChildSpec;
|
|
32
|
+
type Builders<S extends Schema> = {
|
|
33
|
+
schema: S;
|
|
34
|
+
} & { [key in keyof S["nodes"]]: NodeBuilder; } & { [key in keyof S["marks"]]: MarkBuilder; } & {
|
|
35
|
+
[name: string]: NodeBuilder | MarkBuilder;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Create a set of builder functions for the given schema.
|
|
39
|
+
*
|
|
40
|
+
* @since 0.1.0
|
|
41
|
+
* @category constructors
|
|
42
|
+
*/
|
|
43
|
+
export declare function builders<Nodes extends string = any, Marks extends string = any>(schema: Schema<Nodes, Marks>, names?: {
|
|
44
|
+
[name: string]: Attrs;
|
|
45
|
+
}): Builders<Schema<Nodes, Marks>>;
|
|
46
|
+
/**
|
|
47
|
+
* The test schema: the basic schema plus list nodes.
|
|
48
|
+
*
|
|
49
|
+
* @since 0.1.0
|
|
50
|
+
* @category schemas
|
|
51
|
+
*/
|
|
52
|
+
export declare const schema: Schema<keyof OrderedMap<NodeSpec>, keyof OrderedMap<MarkSpec>>;
|
|
53
|
+
/**
|
|
54
|
+
* Compare two values with their `eq` method.
|
|
55
|
+
*
|
|
56
|
+
* @since 0.1.0
|
|
57
|
+
* @category utils
|
|
58
|
+
*/
|
|
59
|
+
export declare function eq<T extends {
|
|
60
|
+
eq(other: T): boolean;
|
|
61
|
+
}>(a: T, b: T): boolean;
|
|
62
|
+
/** @since 0.1.0 */
|
|
63
|
+
export declare const doc: NodeBuilder;
|
|
64
|
+
/** @since 0.1.0 */
|
|
65
|
+
export declare const p: NodeBuilder;
|
|
66
|
+
/** @since 0.1.0 */
|
|
67
|
+
export declare const code_block: NodeBuilder;
|
|
68
|
+
/** @since 0.1.0 */
|
|
69
|
+
export declare const pre: NodeBuilder;
|
|
70
|
+
/** @since 0.1.0 */
|
|
71
|
+
export declare const h1: NodeBuilder;
|
|
72
|
+
/** @since 0.1.0 */
|
|
73
|
+
export declare const h2: NodeBuilder;
|
|
74
|
+
/** @since 0.1.0 */
|
|
75
|
+
export declare const h3: NodeBuilder;
|
|
76
|
+
/** @since 0.1.0 */
|
|
77
|
+
export declare const li: NodeBuilder;
|
|
78
|
+
/** @since 0.1.0 */
|
|
79
|
+
export declare const ul: NodeBuilder;
|
|
80
|
+
/** @since 0.1.0 */
|
|
81
|
+
export declare const ol: NodeBuilder;
|
|
82
|
+
/** @since 0.1.0 */
|
|
83
|
+
export declare const img: NodeBuilder;
|
|
84
|
+
/** @since 0.1.0 */
|
|
85
|
+
export declare const hr: NodeBuilder;
|
|
86
|
+
/** @since 0.1.0 */
|
|
87
|
+
export declare const br: NodeBuilder;
|
|
88
|
+
/** @since 0.1.0 */
|
|
89
|
+
export declare const blockquote: NodeBuilder;
|
|
90
|
+
/** @since 0.1.0 */
|
|
91
|
+
export declare const a: MarkBuilder;
|
|
92
|
+
/** @since 0.1.0 */
|
|
93
|
+
export declare const em: MarkBuilder;
|
|
94
|
+
/** @since 0.1.0 */
|
|
95
|
+
export declare const strong: MarkBuilder;
|
|
96
|
+
/** @since 0.1.0 */
|
|
97
|
+
export declare const code: MarkBuilder;
|
|
98
|
+
export {};
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { Node, Schema } from "./model.js";
|
|
2
|
+
import { schema as schema$1 } from "./schema-basic.js";
|
|
3
|
+
import { addListNodes } from "./schema-list.js";
|
|
4
|
+
// src/compat/test-builder.ts
|
|
5
|
+
/**
|
|
6
|
+
* A `prosemirror-test-builder`-compatible module, built on the compat
|
|
7
|
+
* facades: helpers for building documents in tests, with `<tag>`
|
|
8
|
+
* position markers.
|
|
9
|
+
*
|
|
10
|
+
* Ported from prosemirror-test-builder (MIT, Marijn Haverbeke and others).
|
|
11
|
+
*
|
|
12
|
+
* @since 0.1.0
|
|
13
|
+
*/
|
|
14
|
+
const noTag = Node.prototype.tag = Object.create(null);
|
|
15
|
+
function flatten(schema, children, f) {
|
|
16
|
+
const result = [];
|
|
17
|
+
let pos = 0, tag = noTag;
|
|
18
|
+
for (let i = 0; i < children.length; i++) {
|
|
19
|
+
const child = children[i];
|
|
20
|
+
if (typeof child == "string") {
|
|
21
|
+
const re = /<(\w+)>/g;
|
|
22
|
+
let m, at = 0, out = "";
|
|
23
|
+
while (m = re.exec(child)) {
|
|
24
|
+
out += child.slice(at, m.index);
|
|
25
|
+
pos += m.index - at;
|
|
26
|
+
at = m.index + m[0].length;
|
|
27
|
+
if (tag == noTag) tag = Object.create(null);
|
|
28
|
+
tag[m[1]] = pos;
|
|
29
|
+
}
|
|
30
|
+
out += child.slice(at);
|
|
31
|
+
pos += child.length - at;
|
|
32
|
+
if (out) result.push(f(schema.text(out)));
|
|
33
|
+
} else {
|
|
34
|
+
if (child.tag && child.tag != Node.prototype.tag) {
|
|
35
|
+
if (tag == noTag) tag = Object.create(null);
|
|
36
|
+
for (const id in child.tag) tag[id] = child.tag[id] + (child.flat || child.isText ? 0 : 1) + pos;
|
|
37
|
+
}
|
|
38
|
+
if (child.flat) for (let j = 0; j < child.flat.length; j++) {
|
|
39
|
+
const node = f(child.flat[j]);
|
|
40
|
+
pos += node.nodeSize;
|
|
41
|
+
result.push(node);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const node = f(child);
|
|
45
|
+
pos += node.nodeSize;
|
|
46
|
+
result.push(node);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
nodes: result,
|
|
52
|
+
tag
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function id(x) {
|
|
56
|
+
return x;
|
|
57
|
+
}
|
|
58
|
+
function takeAttrs(attrs, args) {
|
|
59
|
+
const a0 = args[0];
|
|
60
|
+
if (!args.length || a0 && (typeof a0 == "string" || a0 instanceof Node || a0.flat)) return attrs;
|
|
61
|
+
args.shift();
|
|
62
|
+
if (!attrs) return a0;
|
|
63
|
+
if (!a0) return attrs;
|
|
64
|
+
const result = {};
|
|
65
|
+
for (const prop in attrs) result[prop] = attrs[prop];
|
|
66
|
+
for (const prop in a0) result[prop] = a0[prop];
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
function block(type, attrs = null) {
|
|
70
|
+
const result = function(...args) {
|
|
71
|
+
const myAttrs = takeAttrs(attrs, args);
|
|
72
|
+
const { nodes, tag } = flatten(type.schema, args, id);
|
|
73
|
+
const node = type.create(myAttrs, nodes);
|
|
74
|
+
if (tag != noTag) node.tag = tag;
|
|
75
|
+
return node;
|
|
76
|
+
};
|
|
77
|
+
if (type.isLeaf) try {
|
|
78
|
+
result.flat = [type.create(attrs)];
|
|
79
|
+
} catch {}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
function mark(type, attrs) {
|
|
83
|
+
return function(...args) {
|
|
84
|
+
const mark = type.create(takeAttrs(attrs, args));
|
|
85
|
+
const { nodes, tag } = flatten(type.schema, args, (n) => {
|
|
86
|
+
const newMarks = mark.addToSet(n.marks);
|
|
87
|
+
return newMarks.length > n.marks.length ? n.mark(newMarks) : n;
|
|
88
|
+
});
|
|
89
|
+
return {
|
|
90
|
+
flat: nodes,
|
|
91
|
+
tag
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create a set of builder functions for the given schema.
|
|
97
|
+
*
|
|
98
|
+
* @since 0.1.0
|
|
99
|
+
* @category constructors
|
|
100
|
+
*/
|
|
101
|
+
function builders(schema, names) {
|
|
102
|
+
const result = { schema };
|
|
103
|
+
for (const name in schema.nodes) result[name] = block(schema.nodes[name], {});
|
|
104
|
+
for (const name in schema.marks) result[name] = mark(schema.marks[name], {});
|
|
105
|
+
if (names) for (const name in names) {
|
|
106
|
+
const value = names[name], typeName = value.nodeType || value.markType || name;
|
|
107
|
+
let type;
|
|
108
|
+
if (type = schema.nodes[typeName]) result[name] = block(type, value);
|
|
109
|
+
else if (type = schema.marks[typeName]) result[name] = mark(type, value);
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The test schema: the basic schema plus list nodes.
|
|
115
|
+
*
|
|
116
|
+
* @since 0.1.0
|
|
117
|
+
* @category schemas
|
|
118
|
+
*/
|
|
119
|
+
const schema = new Schema({
|
|
120
|
+
nodes: addListNodes(schema$1.spec.nodes, "paragraph block*", "block"),
|
|
121
|
+
marks: schema$1.spec.marks
|
|
122
|
+
});
|
|
123
|
+
const b = builders(schema, {
|
|
124
|
+
p: { nodeType: "paragraph" },
|
|
125
|
+
pre: { nodeType: "code_block" },
|
|
126
|
+
h1: {
|
|
127
|
+
nodeType: "heading",
|
|
128
|
+
level: 1
|
|
129
|
+
},
|
|
130
|
+
h2: {
|
|
131
|
+
nodeType: "heading",
|
|
132
|
+
level: 2
|
|
133
|
+
},
|
|
134
|
+
h3: {
|
|
135
|
+
nodeType: "heading",
|
|
136
|
+
level: 3
|
|
137
|
+
},
|
|
138
|
+
li: { nodeType: "list_item" },
|
|
139
|
+
ul: { nodeType: "bullet_list" },
|
|
140
|
+
ol: { nodeType: "ordered_list" },
|
|
141
|
+
br: { nodeType: "hard_break" },
|
|
142
|
+
img: {
|
|
143
|
+
nodeType: "image",
|
|
144
|
+
src: "img.png"
|
|
145
|
+
},
|
|
146
|
+
hr: { nodeType: "horizontal_rule" },
|
|
147
|
+
a: {
|
|
148
|
+
markType: "link",
|
|
149
|
+
href: "foo"
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
/**
|
|
153
|
+
* Compare two values with their `eq` method.
|
|
154
|
+
*
|
|
155
|
+
* @since 0.1.0
|
|
156
|
+
* @category utils
|
|
157
|
+
*/
|
|
158
|
+
function eq(a, b) {
|
|
159
|
+
return a.eq(b);
|
|
160
|
+
}
|
|
161
|
+
/** @since 0.1.0 */
|
|
162
|
+
const doc = b.doc;
|
|
163
|
+
/** @since 0.1.0 */
|
|
164
|
+
const p = b.p;
|
|
165
|
+
/** @since 0.1.0 */
|
|
166
|
+
const code_block = b.code_block;
|
|
167
|
+
/** @since 0.1.0 */
|
|
168
|
+
const pre = b.pre;
|
|
169
|
+
/** @since 0.1.0 */
|
|
170
|
+
const h1 = b.h1;
|
|
171
|
+
/** @since 0.1.0 */
|
|
172
|
+
const h2 = b.h2;
|
|
173
|
+
/** @since 0.1.0 */
|
|
174
|
+
const h3 = b.h3;
|
|
175
|
+
/** @since 0.1.0 */
|
|
176
|
+
const li = b.li;
|
|
177
|
+
/** @since 0.1.0 */
|
|
178
|
+
const ul = b.ul;
|
|
179
|
+
/** @since 0.1.0 */
|
|
180
|
+
const ol = b.ol;
|
|
181
|
+
/** @since 0.1.0 */
|
|
182
|
+
const img = b.img;
|
|
183
|
+
/** @since 0.1.0 */
|
|
184
|
+
const hr = b.hr;
|
|
185
|
+
/** @since 0.1.0 */
|
|
186
|
+
const br = b.br;
|
|
187
|
+
/** @since 0.1.0 */
|
|
188
|
+
const blockquote = b.blockquote;
|
|
189
|
+
/** @since 0.1.0 */
|
|
190
|
+
const a = b.a;
|
|
191
|
+
/** @since 0.1.0 */
|
|
192
|
+
const em = b.em;
|
|
193
|
+
/** @since 0.1.0 */
|
|
194
|
+
const strong = b.strong;
|
|
195
|
+
/** @since 0.1.0 */
|
|
196
|
+
const code = b.code;
|
|
197
|
+
export { a, blockquote, br, builders, code, code_block, doc, em, eq, h1, h2, h3, hr, img, li, ol, p, pre, schema, strong, ul };
|