@thomasfosterau/effect-richtext 0.0.0-stage → 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.
Files changed (176) hide show
  1. package/LICENSE +48 -0
  2. package/README.md +118 -2
  3. package/dist/_virtual/_rolldown/runtime.js +12 -0
  4. package/dist/commands/commands.d.ts +323 -0
  5. package/dist/commands/commands.js +722 -0
  6. package/dist/commands/internal.js +43 -0
  7. package/dist/commands/keymaps.d.ts +46 -0
  8. package/dist/commands/keymaps.js +64 -0
  9. package/dist/commands.d.ts +3 -0
  10. package/dist/commands.js +3 -0
  11. package/dist/compat/commands.d.ts +250 -0
  12. package/dist/compat/commands.js +275 -0
  13. package/dist/compat/internal/core.d.ts +20 -0
  14. package/dist/compat/internal/core.js +148 -0
  15. package/dist/compat/internal/props.js +82 -0
  16. package/dist/compat/keymap.d.ts +21 -0
  17. package/dist/compat/keymap.js +38 -0
  18. package/dist/compat/model.d.ts +893 -0
  19. package/dist/compat/model.js +1212 -0
  20. package/dist/compat/orderedmap.d.ts +74 -0
  21. package/dist/compat/orderedmap.js +124 -0
  22. package/dist/compat/schema-basic.d.ts +38 -0
  23. package/dist/compat/schema-basic.js +238 -0
  24. package/dist/compat/schema-list.d.ts +81 -0
  25. package/dist/compat/schema-list.js +156 -0
  26. package/dist/compat/state.d.ts +415 -0
  27. package/dist/compat/state.js +689 -0
  28. package/dist/compat/test-builder.d.ts +98 -0
  29. package/dist/compat/test-builder.js +197 -0
  30. package/dist/compat/transform.d.ts +458 -0
  31. package/dist/compat/transform.js +803 -0
  32. package/dist/compat/view.d.ts +411 -0
  33. package/dist/compat/view.js +409 -0
  34. package/dist/dropcursor.d.ts +46 -0
  35. package/dist/dropcursor.js +176 -0
  36. package/dist/extensions/defaults.d.ts +716 -0
  37. package/dist/extensions/defaults.js +209 -0
  38. package/dist/extensions/editor.d.ts +246 -0
  39. package/dist/extensions/editor.js +271 -0
  40. package/dist/extensions/extension.d.ts +375 -0
  41. package/dist/extensions/extension.js +233 -0
  42. package/dist/extensions.d.ts +4 -0
  43. package/dist/extensions.js +4 -0
  44. package/dist/gapcursor.d.ts +66 -0
  45. package/dist/gapcursor.js +273 -0
  46. package/dist/history.d.ts +178 -0
  47. package/dist/history.js +412 -0
  48. package/dist/html.d.ts +158 -0
  49. package/dist/html.js +164 -0
  50. package/dist/inputrules.d.ts +271 -0
  51. package/dist/inputrules.js +321 -0
  52. package/dist/internal/attempt.js +15 -0
  53. package/dist/internal/json.js +29 -0
  54. package/dist/keymap/keymap.d.ts +130 -0
  55. package/dist/keymap/keymap.js +159 -0
  56. package/dist/keymap.d.ts +2 -0
  57. package/dist/keymap.js +1 -0
  58. package/dist/markdown/errors.d.ts +23 -0
  59. package/dist/markdown/errors.js +26 -0
  60. package/dist/markdown/from_markdown.d.ts +185 -0
  61. package/dist/markdown/from_markdown.js +266 -0
  62. package/dist/markdown/schema.d.ts +522 -0
  63. package/dist/markdown/schema.js +292 -0
  64. package/dist/markdown/to_markdown.d.ts +251 -0
  65. package/dist/markdown/to_markdown.js +413 -0
  66. package/dist/markdown.d.ts +5 -0
  67. package/dist/markdown.js +5 -0
  68. package/dist/model/attrsCodec.js +48 -0
  69. package/dist/model/comparedeep.js +17 -0
  70. package/dist/model/content.d.ts +232 -0
  71. package/dist/model/content.js +630 -0
  72. package/dist/model/diff.js +66 -0
  73. package/dist/model/dom.d.ts +3 -0
  74. package/dist/model/errors.d.ts +90 -0
  75. package/dist/model/errors.js +76 -0
  76. package/dist/model/fragment.d.ts +131 -0
  77. package/dist/model/fragment.js +262 -0
  78. package/dist/model/from_dom.d.ts +299 -0
  79. package/dist/model/from_dom.js +618 -0
  80. package/dist/model/json.d.ts +37 -0
  81. package/dist/model/json.js +126 -0
  82. package/dist/model/mark.d.ts +73 -0
  83. package/dist/model/mark.js +121 -0
  84. package/dist/model/node.d.ts +267 -0
  85. package/dist/model/node.js +434 -0
  86. package/dist/model/replace.d.ts +78 -0
  87. package/dist/model/replace.js +207 -0
  88. package/dist/model/resolvedpos.d.ts +196 -0
  89. package/dist/model/resolvedpos.js +305 -0
  90. package/dist/model/schema.d.ts +740 -0
  91. package/dist/model/schema.js +451 -0
  92. package/dist/model/to_dom.d.ts +169 -0
  93. package/dist/model/to_dom.js +238 -0
  94. package/dist/model.d.ts +12 -0
  95. package/dist/model.js +12 -0
  96. package/dist/placeholder.d.ts +53 -0
  97. package/dist/placeholder.js +79 -0
  98. package/dist/reactive/observer.d.ts +54 -0
  99. package/dist/reactive/observer.js +61 -0
  100. package/dist/reactive/selectors.d.ts +22 -0
  101. package/dist/reactive/selectors.js +61 -0
  102. package/dist/reactive/stateref.d.ts +72 -0
  103. package/dist/reactive/stateref.js +71 -0
  104. package/dist/reactive/streams.d.ts +83 -0
  105. package/dist/reactive/streams.js +85 -0
  106. package/dist/reactive.d.ts +16 -0
  107. package/dist/reactive.js +26 -0
  108. package/dist/schema-basic.d.ts +448 -0
  109. package/dist/schema-basic.js +269 -0
  110. package/dist/schema-list/commands.d.ts +66 -0
  111. package/dist/schema-list/commands.js +203 -0
  112. package/dist/schema-list.d.ts +92 -0
  113. package/dist/schema-list.js +100 -0
  114. package/dist/state/errors.d.ts +39 -0
  115. package/dist/state/errors.js +32 -0
  116. package/dist/state/plugin.d.ts +232 -0
  117. package/dist/state/plugin.js +82 -0
  118. package/dist/state/selection.d.ts +297 -0
  119. package/dist/state/selection.js +486 -0
  120. package/dist/state/state.d.ts +212 -0
  121. package/dist/state/state.js +489 -0
  122. package/dist/state/transaction.d.ts +145 -0
  123. package/dist/state/transaction.js +195 -0
  124. package/dist/state.d.ts +6 -0
  125. package/dist/state.js +6 -0
  126. package/dist/test-builder.d.ts +3582 -0
  127. package/dist/test-builder.js +239 -0
  128. package/dist/transform/attr_step.d.ts +60 -0
  129. package/dist/transform/attr_step.js +105 -0
  130. package/dist/transform/errors.d.ts +50 -0
  131. package/dist/transform/errors.js +35 -0
  132. package/dist/transform/map.d.ts +182 -0
  133. package/dist/transform/map.js +280 -0
  134. package/dist/transform/mark.js +98 -0
  135. package/dist/transform/mark_set_step.js +69 -0
  136. package/dist/transform/mark_step.d.ts +113 -0
  137. package/dist/transform/mark_step.js +225 -0
  138. package/dist/transform/replace.d.ts +18 -0
  139. package/dist/transform/replace.js +381 -0
  140. package/dist/transform/replace_step.d.ts +109 -0
  141. package/dist/transform/replace_step.js +175 -0
  142. package/dist/transform/step.d.ts +157 -0
  143. package/dist/transform/step.js +168 -0
  144. package/dist/transform/structure.d.ts +89 -0
  145. package/dist/transform/structure.js +350 -0
  146. package/dist/transform/transform.d.ts +248 -0
  147. package/dist/transform/transform.js +373 -0
  148. package/dist/transform.d.ts +10 -0
  149. package/dist/transform.js +10 -0
  150. package/dist/view/browser.js +39 -0
  151. package/dist/view/capturekeys.js +282 -0
  152. package/dist/view/clipboard.d.ts +8 -0
  153. package/dist/view/clipboard.js +245 -0
  154. package/dist/view/decoration.d.ts +339 -0
  155. package/dist/view/decoration.js +566 -0
  156. package/dist/view/dom.d.ts +18 -0
  157. package/dist/view/dom.js +140 -0
  158. package/dist/view/domchange.js +295 -0
  159. package/dist/view/domcoords.d.ts +22 -0
  160. package/dist/view/domcoords.js +448 -0
  161. package/dist/view/domobserver.d.ts +47 -0
  162. package/dist/view/domobserver.js +328 -0
  163. package/dist/view/errors.d.ts +18 -0
  164. package/dist/view/errors.js +21 -0
  165. package/dist/view/input.d.ts +58 -0
  166. package/dist/view/input.js +704 -0
  167. package/dist/view/selection.js +198 -0
  168. package/dist/view/view.d.ts +699 -0
  169. package/dist/view/view.js +623 -0
  170. package/dist/view/viewdesc.d.ts +236 -0
  171. package/dist/view/viewdesc.js +1205 -0
  172. package/dist/view-css.d.ts +43 -0
  173. package/dist/view-css.js +124 -0
  174. package/dist/view.d.ts +6 -0
  175. package/dist/view.js +4 -0
  176. package/package.json +206 -3
@@ -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 };